From gerrit-no-reply at lists.osmocom.org Sun Apr 1 08:41:56 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Sun, 1 Apr 2018 08:41:56 +0000 Subject: osmo-ttcn3-hacks[master]: improve documentation of templates used in GGSN_Tests In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7598 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I3bfc21a5ba74e0505457e4874f93501ad7c68b7b Gerrit-PatchSet: 1 Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Owner: Stefan Sperling Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Pau Espin Pedrol Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Sun Apr 1 08:42:01 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Sun, 1 Apr 2018 08:42:01 +0000 Subject: [MERGED] osmo-ttcn3-hacks[master]: improve documentation of templates used in GGSN_Tests In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: improve documentation of templates used in GGSN_Tests ...................................................................... improve documentation of templates used in GGSN_Tests Various improvements to the comments documenting packet templates used in GGSN_Tests: fix IPv4 vs. IPv6 confusion, clearly indicate whether templates are used for sending or for receiving/matching packets, and add a missing comment. Found while studying code to prepare for issue OS#2519. Change-Id: I3bfc21a5ba74e0505457e4874f93501ad7c68b7b Related: OS#2519 --- M ggsn_tests/GGSN_Tests.ttcn 1 file changed, 8 insertions(+), 7 deletions(-) Approvals: Pau Espin Pedrol: Looks good to me, but someone else must approve Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/ggsn_tests/GGSN_Tests.ttcn b/ggsn_tests/GGSN_Tests.ttcn index f320c20..2b7de96 100644 --- a/ggsn_tests/GGSN_Tests.ttcn +++ b/ggsn_tests/GGSN_Tests.ttcn @@ -227,7 +227,7 @@ /* IPv6 neighbor solicitation fe80::2 -> ff02::1:ff00:2 from 02:88:b5:1f:25:59 */ const octetstring c_neigh_solicit:= '6000000000203afffe800000000000000000000000000002ff0200000000000000000001ff00000287009f9600000000fe80000000000000000000000000000201010288b51f2559'O; - /* template for an ICMPv6 echo request */ + /* template for sending an ICMPv4 echo request */ template PDU_ICMP ts_ICMPv4_ERQ := { echo := { type_field := 8, @@ -239,7 +239,7 @@ } } - /* template for an ICMPv6 echo request */ + /* template for receiving/matching an ICMPv4 echo request */ template PDU_ICMP tr_ICMPv4_ERQ := { echo := { type_field := 8, @@ -251,7 +251,7 @@ } } - /* template for an ICMPv4 echo reply */ + /* template for receiving/matching an ICMPv4 echo reply */ template PDU_ICMP tr_ICMPv4_ERP(template octetstring data := *) := { echo_reply := { type_field := 0, @@ -312,7 +312,7 @@ } } - /* template for an ICMPv6 echo request */ + /* template for sending an ICMPv6 echo request */ template PDU_ICMPv6 ts_ICMPv6_ERQ := { echoRequest := { typeField := 128, @@ -324,7 +324,7 @@ } } - /* template for an ICMPv6 router solicitation */ + /* template for sending an ICMPv6 router solicitation */ template PDU_ICMPv6 ts_ICMPv6_RS := { routerSolicitation := { typeField := 133, @@ -336,7 +336,7 @@ } } - /* template for an ICMPv6 router advertisement */ + /* template for sending an ICMPv6 router advertisement */ template PDU_ICMPv6 ts_ICMPv6_RA(OCT16 prefix, INT1 prefix_len) := { routerAdvertisement := { typeField := 134, @@ -355,6 +355,7 @@ } } + /* template for sending an ICMPv6 neighbor solicitation */ template PDU_ICMPv6 ts_ICMPv6_NS(OCT16 target_addr) := { neighborSolicitation := { typeField := 135, @@ -414,7 +415,7 @@ } } - /* template for an ICMPv6 echo request */ + /* template for receiving/matching an ICMPv6 echo request */ template PDU_ICMPv6 tr_ICMPv6_ERQ := { echoRequest := { typeField := 128, -- To view, visit https://gerrit.osmocom.org/7598 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: I3bfc21a5ba74e0505457e4874f93501ad7c68b7b Gerrit-PatchSet: 2 Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Owner: Stefan Sperling Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Pau Espin Pedrol From gerrit-no-reply at lists.osmocom.org Sun Apr 1 10:17:01 2018 From: gerrit-no-reply at lists.osmocom.org (Stefan Sperling) Date: Sun, 1 Apr 2018 10:17:01 +0000 Subject: osmo-ttcn3-hacks[master]: support ccache to speed up ttcn3 test compilation In-Reply-To: References: Message-ID: Patch Set 1: I agree on all suggestions, except one: Posix specifies that sed supports more than one input file: http://pubs.opengroup.org/onlinepubs/9699919799/utilities/sed.html Both the GNU sed and OpenBSD sed implementations support multiple input files. Passing each file to sed individually would probably slow down the 'make compile' step unnecessarily. -- To view, visit https://gerrit.osmocom.org/7601 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Ibb538f602206535c06980f88191c1dabe3c4cd82 Gerrit-PatchSet: 1 Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Owner: Stefan Sperling Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Neels Hofmeyr Gerrit-Reviewer: Stefan Sperling Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Sun Apr 1 10:21:19 2018 From: gerrit-no-reply at lists.osmocom.org (Stefan Sperling) Date: Sun, 1 Apr 2018 10:21:19 +0000 Subject: osmo-ttcn3-hacks[master]: support ccache to speed up ttcn3 test compilation In-Reply-To: References: Message-ID: Patch Set 1: Oh bummer, just noticed that since the -i option isn't specified in Posix, brining up Posix doesn't actually help my argument much :) However, both GNU and OpenBSD implement 'sed -i' in the same way when mulitple files are passed (all input files are modified in the same way). It does not seem unreasonable to rely on this behaviour. -- To view, visit https://gerrit.osmocom.org/7601 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Ibb538f602206535c06980f88191c1dabe3c4cd82 Gerrit-PatchSet: 1 Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Owner: Stefan Sperling Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Neels Hofmeyr Gerrit-Reviewer: Stefan Sperling Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Sun Apr 1 10:41:34 2018 From: gerrit-no-reply at lists.osmocom.org (Stefan Sperling) Date: Sun, 1 Apr 2018 10:41:34 +0000 Subject: [PATCH] osmo-ttcn3-hacks[master]: support ccache to speed up ttcn3 test compilation In-Reply-To: References: Message-ID: Hello Neels Hofmeyr, Jenkins Builder, I'd like you to reexamine a change. Please visit https://gerrit.osmocom.org/7601 to look at the new patch set (#2). support ccache to speed up ttcn3 test compilation If ccache exists in PATH, use it to cache compiled C++ object files. Rebuilding the test suite from scratch with a populated cache is an order of magnitude faster than doing an initial build. In my case, compile time for BSC_Tests goes down from 3 minutes and 12 seconds to just 3 seconds, after 'make clean'. There is a small downside: We need to tweak the generated C++ files to prevent cache misses due to timestemps inserted into the code by ttcn3_compiler. This is done by regen-makefile.sh if ccache is used. This mechanism could break in case the output of ttcn3_makefilegen changes. However, the only consequence would be a slow build due to cache misses. Another thing to note is that builds using objects from ccache will contain timestamp strings from the build which populated the cache. ccache provides a way to repopulate the cache if needed though (set CCACHE_RECACHE=1 in the environment). These tradeoffs seem acceptable to me since in return we can achieve much faster turnaround, both during local test development and during test runs on jenkins. Change-Id: Ibb538f602206535c06980f88191c1dabe3c4cd82 --- M regen-makefile.sh A strip-datetime-comments.sed 2 files changed, 63 insertions(+), 1 deletion(-) git pull ssh://gerrit.osmocom.org:29418/osmo-ttcn3-hacks refs/changes/01/7601/2 diff --git a/regen-makefile.sh b/regen-makefile.sh index 57eebff..2d09e63 100755 --- a/regen-makefile.sh +++ b/regen-makefile.sh @@ -12,7 +12,22 @@ test -x "$(which ttcn3_makefilegen 2>/dev/null)" || { echo "ERROR: ttcn3_makefilegen not in PATH"; exit 1; } -ttcn3_makefilegen -p -l -f $* +# Enable ccache if it can be found in path. +# This speeds up repeated builds of the TTCN3 tests by an order of magnitude +# since most of the generated C++ source files don't change very often. +# Roughly, for an initial build which takes N minutes, a complete rebuild +# after 'make clean' will only take N seconds with ccache. +# Note that ccache cannot cache compilation of .o files to .so files, so do +# not pass the -l option to ttcn3_makefilegen if ccache is used. The time +# savings promised by the -l option are dwarfed by use of ccache anyway. +if which ccache 2>/dev/null; then + USE_CCACHE=1 + MAKEFILEGEN_FLAGS="-p -f" +else + MAKEFILEGEN_FLAGS="-p -l -f" +fi + +ttcn3_makefilegen $MAKEFILEGEN_FLAGS $* sed -i -e 's/# TTCN3_DIR = /TTCN3_DIR = \/usr/' Makefile sed -i -e 's/LDFLAGS = /LDFLAGS = -L \/usr\/lib\/titan /' Makefile #sed -i -e 's/TTCN3_LIB = ttcn3-parallel/TTCN3_LIB = ttcn3/' Makefile @@ -32,3 +47,11 @@ sed -i -e 's/TTCN3_DIR = $/TTCN3_DIR = \/usr/' Makefile fi sed -i -e 's/\/bin\/compiler/\/bin\/ttcn3_compiler/' Makefile + +if [ -n "$USE_CCACHE" ]; then + # enable ccache + sed -i -e 's/^CXX = g++ $/CXX = env CCACHE_SLOPPINESS=time_macros ccache g++/' Makefile + # The Makefile must tweak generated C++ files during the 'make compile' step. + # See the strip-datetime-comments sed script for details. + sed -i -f ../strip-datetime-comments.sed Makefile +fi diff --git a/strip-datetime-comments.sed b/strip-datetime-comments.sed new file mode 100644 index 0000000..217dedc --- /dev/null +++ b/strip-datetime-comments.sed @@ -0,0 +1,39 @@ +#!/usr/bin/sed +# This sed script edits a Makefile generated by ttcn3_makefilegen. +# We insert a sed command into the 'compile:' target in order to +# remove timestamp comments from generated C++ files. + +# The ttcn3_compiler will generate C++ comments with a timestamp, such as: +# // for Stefan Sperling (stsp at fintan) on Sat Mar 31 14:34:30 2018 +# We must remove such comments since they cause cache misses with ccache. +# +# A related problem is the use of __DATE__ and __TIME__ in generated C++ code, +# which can be worked around by setting "CCACHE_SLOPPINESS=time_macros". This +# workaround implies that we must get our cache hits from ccache's "direct" +# cache, since ccache's "preprocessor" caching method won't work. +# +# FIXME: This should really be addressed in ttcn3_compiler itself! +# It should provide an option to suppress use of timestamps in generated code. + +# The generated Makefile's compile target looks like this: +# +# compile: $(TTCN3_MODULES) $(PREPROCESSED_TTCN3_MODULES) $(ASN1_MODULES) +# $(TTCN3_DIR)/bin/ttcn3_compiler $(COMPILER_FLAGS) \ +# $(TTCN3_MODULES) $(PREPROCESSED_TTCN3_MODULES) $(ASN1_MODULES) - $? +# touch $@ +# +# Before the final 'touch $@' step, we now insert a `sed` command that strips +# offending C++ comments from the generated code. + +# match the line in the generated Makefile which starts with 'compile:' +/^compile:/ { + # go to the next line + n; + # go to the next line + n; + # go to the next line + n; + # on this line, try to match 'touch $@', and if there is a match preprend a + # sed command which deletes the offending comments from generated C++ files: + s!touch $@!sed -i -e '/\\/\\/ for .* on .*/d' $(GENERATED_HEADERS) $(GENERATED_SOURCES) \&\& &! +} -- To view, visit https://gerrit.osmocom.org/7601 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newpatchset Gerrit-Change-Id: Ibb538f602206535c06980f88191c1dabe3c4cd82 Gerrit-PatchSet: 2 Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Owner: Stefan Sperling Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Neels Hofmeyr Gerrit-Reviewer: Stefan Sperling From gerrit-no-reply at lists.osmocom.org Sun Apr 1 10:42:50 2018 From: gerrit-no-reply at lists.osmocom.org (Stefan Sperling) Date: Sun, 1 Apr 2018 10:42:50 +0000 Subject: osmo-ttcn3-hacks[master]: support ccache to speed up ttcn3 test compilation In-Reply-To: References: Message-ID: Patch Set 1: > Uploaded patch set 2. I chose to add a separate sed script instead of another shell script. Either way, the process used here should be easier to understand now. -- To view, visit https://gerrit.osmocom.org/7601 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Ibb538f602206535c06980f88191c1dabe3c4cd82 Gerrit-PatchSet: 1 Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Owner: Stefan Sperling Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Neels Hofmeyr Gerrit-Reviewer: Stefan Sperling Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Sun Apr 1 10:43:22 2018 From: gerrit-no-reply at lists.osmocom.org (Stefan Sperling) Date: Sun, 1 Apr 2018 10:43:22 +0000 Subject: [PATCH] osmo-ttcn3-hacks[master]: support ccache to speed up ttcn3 test compilation In-Reply-To: References: Message-ID: Hello Neels Hofmeyr, Jenkins Builder, I'd like you to reexamine a change. Please visit https://gerrit.osmocom.org/7601 to look at the new patch set (#3). support ccache to speed up ttcn3 test compilation If ccache exists in PATH, use it to cache compiled C++ object files. Rebuilding the test suite from scratch with a populated cache is an order of magnitude faster than doing an initial build. In my case, compile time for BSC_Tests goes down from 3 minutes and 12 seconds to just 3 seconds, after 'make clean'. There is a small downside: We need to tweak the generated C++ files to prevent cache misses due to timestamps inserted into the code by ttcn3_compiler. This is done by regen-makefile.sh if ccache is used. This mechanism could break in case the output of ttcn3_makefilegen changes. However, the only consequence would be a slow build due to cache misses. Another thing to note is that builds using objects from ccache will contain timestamp strings from the build which populated the cache. ccache provides a way to repopulate the cache if needed though (set CCACHE_RECACHE=1 in the environment). These tradeoffs seem acceptable to me since in return we can achieve much faster turnaround, both during local test development and during test runs on jenkins. Change-Id: Ibb538f602206535c06980f88191c1dabe3c4cd82 --- M regen-makefile.sh A strip-datetime-comments.sed 2 files changed, 63 insertions(+), 1 deletion(-) git pull ssh://gerrit.osmocom.org:29418/osmo-ttcn3-hacks refs/changes/01/7601/3 diff --git a/regen-makefile.sh b/regen-makefile.sh index 57eebff..2d09e63 100755 --- a/regen-makefile.sh +++ b/regen-makefile.sh @@ -12,7 +12,22 @@ test -x "$(which ttcn3_makefilegen 2>/dev/null)" || { echo "ERROR: ttcn3_makefilegen not in PATH"; exit 1; } -ttcn3_makefilegen -p -l -f $* +# Enable ccache if it can be found in path. +# This speeds up repeated builds of the TTCN3 tests by an order of magnitude +# since most of the generated C++ source files don't change very often. +# Roughly, for an initial build which takes N minutes, a complete rebuild +# after 'make clean' will only take N seconds with ccache. +# Note that ccache cannot cache compilation of .o files to .so files, so do +# not pass the -l option to ttcn3_makefilegen if ccache is used. The time +# savings promised by the -l option are dwarfed by use of ccache anyway. +if which ccache 2>/dev/null; then + USE_CCACHE=1 + MAKEFILEGEN_FLAGS="-p -f" +else + MAKEFILEGEN_FLAGS="-p -l -f" +fi + +ttcn3_makefilegen $MAKEFILEGEN_FLAGS $* sed -i -e 's/# TTCN3_DIR = /TTCN3_DIR = \/usr/' Makefile sed -i -e 's/LDFLAGS = /LDFLAGS = -L \/usr\/lib\/titan /' Makefile #sed -i -e 's/TTCN3_LIB = ttcn3-parallel/TTCN3_LIB = ttcn3/' Makefile @@ -32,3 +47,11 @@ sed -i -e 's/TTCN3_DIR = $/TTCN3_DIR = \/usr/' Makefile fi sed -i -e 's/\/bin\/compiler/\/bin\/ttcn3_compiler/' Makefile + +if [ -n "$USE_CCACHE" ]; then + # enable ccache + sed -i -e 's/^CXX = g++ $/CXX = env CCACHE_SLOPPINESS=time_macros ccache g++/' Makefile + # The Makefile must tweak generated C++ files during the 'make compile' step. + # See the strip-datetime-comments sed script for details. + sed -i -f ../strip-datetime-comments.sed Makefile +fi diff --git a/strip-datetime-comments.sed b/strip-datetime-comments.sed new file mode 100644 index 0000000..217dedc --- /dev/null +++ b/strip-datetime-comments.sed @@ -0,0 +1,39 @@ +#!/usr/bin/sed +# This sed script edits a Makefile generated by ttcn3_makefilegen. +# We insert a sed command into the 'compile:' target in order to +# remove timestamp comments from generated C++ files. + +# The ttcn3_compiler will generate C++ comments with a timestamp, such as: +# // for Stefan Sperling (stsp at fintan) on Sat Mar 31 14:34:30 2018 +# We must remove such comments since they cause cache misses with ccache. +# +# A related problem is the use of __DATE__ and __TIME__ in generated C++ code, +# which can be worked around by setting "CCACHE_SLOPPINESS=time_macros". This +# workaround implies that we must get our cache hits from ccache's "direct" +# cache, since ccache's "preprocessor" caching method won't work. +# +# FIXME: This should really be addressed in ttcn3_compiler itself! +# It should provide an option to suppress use of timestamps in generated code. + +# The generated Makefile's compile target looks like this: +# +# compile: $(TTCN3_MODULES) $(PREPROCESSED_TTCN3_MODULES) $(ASN1_MODULES) +# $(TTCN3_DIR)/bin/ttcn3_compiler $(COMPILER_FLAGS) \ +# $(TTCN3_MODULES) $(PREPROCESSED_TTCN3_MODULES) $(ASN1_MODULES) - $? +# touch $@ +# +# Before the final 'touch $@' step, we now insert a `sed` command that strips +# offending C++ comments from the generated code. + +# match the line in the generated Makefile which starts with 'compile:' +/^compile:/ { + # go to the next line + n; + # go to the next line + n; + # go to the next line + n; + # on this line, try to match 'touch $@', and if there is a match preprend a + # sed command which deletes the offending comments from generated C++ files: + s!touch $@!sed -i -e '/\\/\\/ for .* on .*/d' $(GENERATED_HEADERS) $(GENERATED_SOURCES) \&\& &! +} -- To view, visit https://gerrit.osmocom.org/7601 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newpatchset Gerrit-Change-Id: Ibb538f602206535c06980f88191c1dabe3c4cd82 Gerrit-PatchSet: 3 Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Owner: Stefan Sperling Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Neels Hofmeyr Gerrit-Reviewer: Stefan Sperling From gerrit-no-reply at lists.osmocom.org Sun Apr 1 11:06:03 2018 From: gerrit-no-reply at lists.osmocom.org (Stefan Sperling) Date: Sun, 1 Apr 2018 11:06:03 +0000 Subject: [PATCH] osmo-ttcn3-hacks[master]: support ccache to speed up ttcn3 test compilation In-Reply-To: References: Message-ID: Hello Neels Hofmeyr, Jenkins Builder, I'd like you to reexamine a change. Please visit https://gerrit.osmocom.org/7601 to look at the new patch set (#4). support ccache to speed up ttcn3 test compilation If ccache exists in PATH, use it to cache compiled C++ object files. Rebuilding the test suite from scratch with a populated cache is an order of magnitude faster than doing an initial build. In my case, compile time for BSC_Tests goes down from 3 minutes and 12 seconds to just 3 seconds, after 'make clean'. There is a small downside: We need to tweak the generated C++ files to prevent cache misses due to timestamps inserted into the code by ttcn3_compiler. This is done by regen-makefile.sh if ccache is used. This mechanism could break in case the output of ttcn3_makefilegen changes. However, the only consequence would be a slow build due to cache misses. Another thing to note is that builds using objects from ccache will contain timestamp strings from the build which populated the cache. ccache provides a way to repopulate the cache if needed though (set CCACHE_RECACHE=1 in the environment). These tradeoffs seem acceptable to me since in return we can achieve much faster turnaround, both during local test development and during test runs on jenkins. Change-Id: Ibb538f602206535c06980f88191c1dabe3c4cd82 --- M regen-makefile.sh A strip-datetime-comments.sed 2 files changed, 69 insertions(+), 1 deletion(-) git pull ssh://gerrit.osmocom.org:29418/osmo-ttcn3-hacks refs/changes/01/7601/4 diff --git a/regen-makefile.sh b/regen-makefile.sh index 57eebff..2d09e63 100755 --- a/regen-makefile.sh +++ b/regen-makefile.sh @@ -12,7 +12,22 @@ test -x "$(which ttcn3_makefilegen 2>/dev/null)" || { echo "ERROR: ttcn3_makefilegen not in PATH"; exit 1; } -ttcn3_makefilegen -p -l -f $* +# Enable ccache if it can be found in path. +# This speeds up repeated builds of the TTCN3 tests by an order of magnitude +# since most of the generated C++ source files don't change very often. +# Roughly, for an initial build which takes N minutes, a complete rebuild +# after 'make clean' will only take N seconds with ccache. +# Note that ccache cannot cache compilation of .o files to .so files, so do +# not pass the -l option to ttcn3_makefilegen if ccache is used. The time +# savings promised by the -l option are dwarfed by use of ccache anyway. +if which ccache 2>/dev/null; then + USE_CCACHE=1 + MAKEFILEGEN_FLAGS="-p -f" +else + MAKEFILEGEN_FLAGS="-p -l -f" +fi + +ttcn3_makefilegen $MAKEFILEGEN_FLAGS $* sed -i -e 's/# TTCN3_DIR = /TTCN3_DIR = \/usr/' Makefile sed -i -e 's/LDFLAGS = /LDFLAGS = -L \/usr\/lib\/titan /' Makefile #sed -i -e 's/TTCN3_LIB = ttcn3-parallel/TTCN3_LIB = ttcn3/' Makefile @@ -32,3 +47,11 @@ sed -i -e 's/TTCN3_DIR = $/TTCN3_DIR = \/usr/' Makefile fi sed -i -e 's/\/bin\/compiler/\/bin\/ttcn3_compiler/' Makefile + +if [ -n "$USE_CCACHE" ]; then + # enable ccache + sed -i -e 's/^CXX = g++ $/CXX = env CCACHE_SLOPPINESS=time_macros ccache g++/' Makefile + # The Makefile must tweak generated C++ files during the 'make compile' step. + # See the strip-datetime-comments sed script for details. + sed -i -f ../strip-datetime-comments.sed Makefile +fi diff --git a/strip-datetime-comments.sed b/strip-datetime-comments.sed new file mode 100644 index 0000000..8089b8e --- /dev/null +++ b/strip-datetime-comments.sed @@ -0,0 +1,45 @@ +#!/usr/bin/sed +# (C) 2018 by sysmocom s.f.m.c. GmbH +# Author: Stefan Sperling +# All rights reserved. +# Released under the terms of GNU General Public License, Version 2 or +# (at your option) any later version. + +# This sed script edits a Makefile generated by ttcn3_makefilegen. +# We insert a sed command into the 'compile:' target in order to +# remove timestamp comments from generated C++ files. + +# The ttcn3_compiler will generate C++ comments with a timestamp, such as: +# // for Stefan Sperling (stsp at fintan) on Sat Mar 31 14:34:30 2018 +# We must remove such comments since they cause cache misses with ccache. +# +# A related problem is the use of __DATE__ and __TIME__ in generated C++ code, +# which can be worked around by setting "CCACHE_SLOPPINESS=time_macros". This +# workaround implies that we must get our cache hits from ccache's "direct" +# cache, since ccache's "preprocessor" caching method won't work. +# +# FIXME: This should really be addressed in ttcn3_compiler itself! +# It should provide an option to suppress use of timestamps in generated code. + +# The generated Makefile's compile target looks like this: +# +# compile: $(TTCN3_MODULES) $(PREPROCESSED_TTCN3_MODULES) $(ASN1_MODULES) +# $(TTCN3_DIR)/bin/ttcn3_compiler $(COMPILER_FLAGS) \ +# $(TTCN3_MODULES) $(PREPROCESSED_TTCN3_MODULES) $(ASN1_MODULES) - $? +# touch $@ +# +# Before the final 'touch $@' step, we now insert a `sed` command that strips +# offending C++ comments from the generated code. + +# match the line in the generated Makefile which starts with 'compile:' +/^compile:/ { + # go to the next line + n; + # go to the next line + n; + # go to the next line + n; + # on this line, try to match 'touch $@', and if there is a match preprend a + # sed command which deletes the offending comments from generated C++ files: + s!touch $@!sed -i -e '/\\/\\/ for .* on .*/d' $(GENERATED_HEADERS) $(GENERATED_SOURCES) \&\& &! +} -- To view, visit https://gerrit.osmocom.org/7601 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newpatchset Gerrit-Change-Id: Ibb538f602206535c06980f88191c1dabe3c4cd82 Gerrit-PatchSet: 4 Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Owner: Stefan Sperling Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Neels Hofmeyr Gerrit-Reviewer: Stefan Sperling From gerrit-no-reply at lists.osmocom.org Sun Apr 1 14:06:14 2018 From: gerrit-no-reply at lists.osmocom.org (Neels Hofmeyr) Date: Sun, 1 Apr 2018 14:06:14 +0000 Subject: osmo-ttcn3-hacks[master]: support ccache to speed up ttcn3 test compilation In-Reply-To: References: Message-ID: Patch Set 4: Code-Review+1 (1 comment) I'd +2 but let's give others a chance to comment https://gerrit.osmocom.org/#/c/7601/4/regen-makefile.sh File regen-makefile.sh: Line 51: if [ -n "$USE_CCACHE" ]; then (if I set my env to 'USE_CCACHE=0' then this still evaluates true. slightly nicer would be 'if [ "x$USE_CCACHE" = "x1" ]') -- To view, visit https://gerrit.osmocom.org/7601 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Ibb538f602206535c06980f88191c1dabe3c4cd82 Gerrit-PatchSet: 4 Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Owner: Stefan Sperling Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Neels Hofmeyr Gerrit-Reviewer: Stefan Sperling Gerrit-HasComments: Yes From gerrit-no-reply at lists.osmocom.org Sun Apr 1 14:07:36 2018 From: gerrit-no-reply at lists.osmocom.org (Neels Hofmeyr) Date: Sun, 1 Apr 2018 14:07:36 +0000 Subject: [PATCH] osmo-mgw[master]: use osmo_init_logging2() with proper talloc ctx Message-ID: Review at https://gerrit.osmocom.org/7602 use osmo_init_logging2() with proper talloc ctx Change-Id: I3e2a9aef5242efdf11a64536f79099a6e9cec53f --- M src/osmo-bsc_mgcp/mgcp_main.c M src/osmo-mgw/mgw_main.c M tests/legacy_mgcp/mgcp_test.c M tests/legacy_mgcp/mgcp_transcoding_test.c M tests/mgcp/mgcp_test.c M tests/mgcp_client/mgcp_client_test.c 6 files changed, 11 insertions(+), 8 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-mgw refs/changes/02/7602/1 diff --git a/src/osmo-bsc_mgcp/mgcp_main.c b/src/osmo-bsc_mgcp/mgcp_main.c index 91f9074..edb19a6 100644 --- a/src/osmo-bsc_mgcp/mgcp_main.c +++ b/src/osmo-bsc_mgcp/mgcp_main.c @@ -244,7 +244,7 @@ msgb_talloc_ctx_init(tall_bsc_ctx, 0); osmo_init_ignore_signals(); - osmo_init_logging(&log_info); + osmo_init_logging2(tall_bsc_ctx, &log_info); cfg = mgcp_config_alloc(); if (!cfg) diff --git a/src/osmo-mgw/mgw_main.c b/src/osmo-mgw/mgw_main.c index 7762032..de094c1 100644 --- a/src/osmo-mgw/mgw_main.c +++ b/src/osmo-mgw/mgw_main.c @@ -262,7 +262,7 @@ msgb_talloc_ctx_init(tall_bsc_ctx, 0); osmo_init_ignore_signals(); - osmo_init_logging(&log_info); + osmo_init_logging2(tall_bsc_ctx, &log_info); cfg = mgcp_config_alloc(); if (!cfg) diff --git a/tests/legacy_mgcp/mgcp_test.c b/tests/legacy_mgcp/mgcp_test.c index 1a4513e..39400d4 100644 --- a/tests/legacy_mgcp/mgcp_test.c +++ b/tests/legacy_mgcp/mgcp_test.c @@ -1214,8 +1214,9 @@ int main(int argc, char **argv) { - void *msgb_ctx = msgb_talloc_ctx_init(NULL, 0); - osmo_init_logging(&log_info); + void *ctx = talloc_named_const(NULL, 0, "mgcp_test"); + void *msgb_ctx = msgb_talloc_ctx_init(ctx, 0); + osmo_init_logging2(ctx, &log_info); test_strline(); test_values(); diff --git a/tests/legacy_mgcp/mgcp_transcoding_test.c b/tests/legacy_mgcp/mgcp_transcoding_test.c index 61de25f..d3f94c7 100644 --- a/tests/legacy_mgcp/mgcp_transcoding_test.c +++ b/tests/legacy_mgcp/mgcp_transcoding_test.c @@ -588,7 +588,8 @@ int main(int argc, char **argv) { int rc; - osmo_init_logging(&log_info); + void *ctx = talloc_named_const(NULL, 0, "mgcp_transcoding_test"); + osmo_init_logging2(ctx, &log_info); printf("=== Transcoding Good Cases ===\n"); diff --git a/tests/mgcp/mgcp_test.c b/tests/mgcp/mgcp_test.c index e1e6290..f6c421a 100644 --- a/tests/mgcp/mgcp_test.c +++ b/tests/mgcp/mgcp_test.c @@ -1467,8 +1467,9 @@ int main(int argc, char **argv) { - void *msgb_ctx = msgb_talloc_ctx_init(NULL, 0); - osmo_init_logging(&log_info); + void *ctx = talloc_named_const(NULL, 0, "mgcp_test"); + void *msgb_ctx = msgb_talloc_ctx_init(ctx, 0); + osmo_init_logging2(ctx, &log_info); test_strline(); test_values(); diff --git a/tests/mgcp_client/mgcp_client_test.c b/tests/mgcp_client/mgcp_client_test.c index 19b55e2..007b90c 100644 --- a/tests/mgcp_client/mgcp_client_test.c +++ b/tests/mgcp_client/mgcp_client_test.c @@ -389,7 +389,7 @@ { ctx = talloc_named_const(NULL, 1, "mgcp_client_test"); msgb_talloc_ctx_init(ctx, 0); - osmo_init_logging(&log_info); + osmo_init_logging2(ctx, &log_info); log_set_print_filename(osmo_stderr_target, 0); log_set_print_timestamp(osmo_stderr_target, 0); log_set_use_color(osmo_stderr_target, 0); -- To view, visit https://gerrit.osmocom.org/7602 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I3e2a9aef5242efdf11a64536f79099a6e9cec53f Gerrit-PatchSet: 1 Gerrit-Project: osmo-mgw Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr From gerrit-no-reply at lists.osmocom.org Sun Apr 1 15:06:14 2018 From: gerrit-no-reply at lists.osmocom.org (Neels Hofmeyr) Date: Sun, 1 Apr 2018 15:06:14 +0000 Subject: [PATCH] osmo-bts[master]: use osmo_init_logging2() with proper talloc ctx Message-ID: Review at https://gerrit.osmocom.org/7603 use osmo_init_logging2() with proper talloc ctx Completely drop bts_log_init(), call osmo_init_logging2() directly instead: all callers of bts_log_init() passed NULL as category string, so all it ever did was call osmo_init_logging(). The bts_log_info is already declared in the .h. Here and there also define a proper talloc root context instead of using NULL. Change-Id: Ic049f77bef74123b95350bcae182a468e0086b9c --- M doc/startup.txt M include/osmo-bts/logging.h M src/common/logging.c M src/common/main.c M src/osmo-bts-litecell15/misc/lc15bts_mgr.c M src/osmo-bts-omldummy/main.c M src/osmo-bts-sysmo/l1_fwd_main.c M src/osmo-bts-sysmo/misc/sysmobts_mgr.c M tests/agch/agch_test.c M tests/cipher/cipher_test.c M tests/handover/handover_test.c M tests/meas/meas_test.c M tests/misc/misc_test.c M tests/paging/paging_test.c M tests/tx_power/tx_power_test.c 15 files changed, 21 insertions(+), 40 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-bts refs/changes/03/7603/1 diff --git a/doc/startup.txt b/doc/startup.txt index cc64375..50766e4 100644 --- a/doc/startup.txt +++ b/doc/startup.txt @@ -6,7 +6,7 @@ |=== | bts-specific | main() | | common | bts_main() | initialization of talloc contexts -| common | bts_log_init() | initialization of logging +| common | osmo_init_logging2() | initialization of logging | common | handle_options() | common option parsing | bts-specific | bts_model_handle_options() | model-specific option parsing | common | gsm_bts_alloc() | allocation of BTS/TRX/TS data structures diff --git a/include/osmo-bts/logging.h b/include/osmo-bts/logging.h index 68f379c..852c383 100644 --- a/include/osmo-bts/logging.h +++ b/include/osmo-bts/logging.h @@ -25,8 +25,6 @@ extern const struct log_info bts_log_info; -int bts_log_init(const char *category_mask); - /* LOGP with gsm_time prefix */ #define LOGPGT(ss, lvl, gt, fmt, args...) \ LOGP(ss, lvl, "%s " fmt, osmo_dump_gsmtime(gt), ## args) diff --git a/src/common/logging.c b/src/common/logging.c index a4d30e6..3315a01 100644 --- a/src/common/logging.c +++ b/src/common/logging.c @@ -148,13 +148,3 @@ .cat = bts_log_info_cat, .num_cat = ARRAY_SIZE(bts_log_info_cat), }; - -int bts_log_init(const char *category_mask) -{ - osmo_init_logging(&bts_log_info); - - if (category_mask) - log_parse_category_mask(osmo_stderr_target, category_mask); - - return 0; -} diff --git a/src/common/main.c b/src/common/main.c index 0f6f529..9121a2a 100644 --- a/src/common/main.c +++ b/src/common/main.c @@ -239,7 +239,7 @@ msgb_talloc_ctx_init(tall_bts_ctx, 100*1024); bts_vty_info.tall_ctx = tall_bts_ctx; - bts_log_init(NULL); + osmo_init_logging2(tall_bts_ctx, &bts_log_info); vty_init(&bts_vty_info); ctrl_vty_init(tall_bts_ctx); rate_ctr_init(tall_bts_ctx); diff --git a/src/osmo-bts-litecell15/misc/lc15bts_mgr.c b/src/osmo-bts-litecell15/misc/lc15bts_mgr.c index 7886a5e..dbdcc9f 100644 --- a/src/osmo-bts-litecell15/misc/lc15bts_mgr.c +++ b/src/osmo-bts-litecell15/misc/lc15bts_mgr.c @@ -281,12 +281,6 @@ .num_cat = ARRAY_SIZE(mgr_log_info_cat), }; -static int mgr_log_init(void) -{ - osmo_init_logging(&mgr_log_info); - return 0; -} - int main(int argc, char **argv) { int rc; @@ -294,7 +288,7 @@ tall_mgr_ctx = talloc_named_const(NULL, 1, "bts manager"); msgb_talloc_ctx_init(tall_mgr_ctx, 0); - mgr_log_init(); + osmo_init_logging2(tall_mgr_ctx, &mgr_log_info); osmo_init_ignore_signals(); signal(SIGINT, &signal_handler); diff --git a/src/osmo-bts-omldummy/main.c b/src/osmo-bts-omldummy/main.c index 39f2ac2..ef94553 100644 --- a/src/osmo-bts-omldummy/main.c +++ b/src/osmo-bts-omldummy/main.c @@ -19,7 +19,7 @@ tall_bts_ctx = talloc_named_const(NULL, 1, "OsmoBTS context"); msgb_talloc_ctx_init(tall_bts_ctx, 10*1024); - bts_log_init(NULL); + osmo_init_logging2(tall_bts_ctx, &bts_log_info); bts = gsm_bts_alloc(tall_bts_ctx, 0); if (!bts) diff --git a/src/osmo-bts-sysmo/l1_fwd_main.c b/src/osmo-bts-sysmo/l1_fwd_main.c index 92d2ea4..4268629 100644 --- a/src/osmo-bts-sysmo/l1_fwd_main.c +++ b/src/osmo-bts-sysmo/l1_fwd_main.c @@ -169,11 +169,12 @@ struct l1fwd_hdl *l1fh; struct femtol1_hdl *fl1h; int rc, i; + void *ctx = talloc_named_const(NULL, 0, "l1_fwd"); printf("sizeof(GsmL1_Prim_t) = %zu\n", sizeof(GsmL1_Prim_t)); printf("sizeof(SuperFemto_Prim_t) = %zu\n", sizeof(SuperFemto_Prim_t)); - bts_log_init(NULL); + osmo_init_logging2(ctx, bts_log_info); /* * hack and prevent that two l1fwd-proxy/sysmobts run at the same @@ -187,7 +188,7 @@ } /* allocate new femtol1_handle */ - fl1h = talloc_zero(NULL, struct femtol1_hdl); + fl1h = talloc_zero(ctx, struct femtol1_hdl); INIT_LLIST_HEAD(&fl1h->wlc_list); /* open the actual hardware transport */ @@ -198,7 +199,7 @@ } /* create our fwd handle */ - l1fh = talloc_zero(NULL, struct l1fwd_hdl); + l1fh = talloc_zero(ctx, struct l1fwd_hdl); l1fh->fl1h = fl1h; fl1h->priv = l1fh; diff --git a/src/osmo-bts-sysmo/misc/sysmobts_mgr.c b/src/osmo-bts-sysmo/misc/sysmobts_mgr.c index 17a6d89..a008073 100644 --- a/src/osmo-bts-sysmo/misc/sysmobts_mgr.c +++ b/src/osmo-bts-sysmo/misc/sysmobts_mgr.c @@ -245,12 +245,6 @@ .num_cat = ARRAY_SIZE(mgr_log_info_cat), }; -static int mgr_log_init(void) -{ - osmo_init_logging(&mgr_log_info); - return 0; -} - int main(int argc, char **argv) { int rc; @@ -261,7 +255,7 @@ srand(time(NULL)); - mgr_log_init(); + osmo_init_logging2(tall_mgr_ctx, &mgr_log_info); if (classify_bts() != 0) exit(2); diff --git a/tests/agch/agch_test.c b/tests/agch/agch_test.c index 6efbc24..ab59ebf 100644 --- a/tests/agch/agch_test.c +++ b/tests/agch/agch_test.c @@ -222,7 +222,7 @@ tall_bts_ctx = talloc_named_const(NULL, 1, "OsmoBTS context"); msgb_talloc_ctx_init(tall_bts_ctx, 0); - bts_log_init(NULL); + osmo_init_logging2(tall_bts_ctx, &bts_log_info); bts = gsm_bts_alloc(tall_bts_ctx, 0); if (bts_init(bts) < 0) { diff --git a/tests/cipher/cipher_test.c b/tests/cipher/cipher_test.c index 5e2bdc0..a7343c0 100644 --- a/tests/cipher/cipher_test.c +++ b/tests/cipher/cipher_test.c @@ -68,7 +68,7 @@ tall_bts_ctx = talloc_named_const(NULL, 1, "OsmoBTS context"); msgb_talloc_ctx_init(tall_bts_ctx, 0); - bts_log_init(NULL); + osmo_init_logging2(tall_bts_ctx, &bts_log_info); bts = gsm_bts_alloc(tall_bts_ctx, 0); if (bts_init(bts) < 0) { diff --git a/tests/handover/handover_test.c b/tests/handover/handover_test.c index 1c0a4da..c7bd8f8 100644 --- a/tests/handover/handover_test.c +++ b/tests/handover/handover_test.c @@ -67,7 +67,7 @@ tall_bts_ctx = talloc_named_const(NULL, 1, "OsmoBTS context"); msgb_talloc_ctx_init(tall_bts_ctx, 0); - bts_log_init(NULL); + osmo_init_logging2(tall_bts_ctx, &bts_log_info); osmo_stderr_target->categories[DHO].loglevel = LOGL_DEBUG; bts = gsm_bts_alloc(tall_bts_ctx, 0); diff --git a/tests/meas/meas_test.c b/tests/meas/meas_test.c index a283c47..cbc673f 100644 --- a/tests/meas/meas_test.c +++ b/tests/meas/meas_test.c @@ -69,7 +69,7 @@ tall_bts_ctx = talloc_named_const(NULL, 1, "OsmoBTS context"); msgb_talloc_ctx_init(tall_bts_ctx, 0); - bts_log_init(NULL); + osmo_init_logging2(tall_bts_ctx, &bts_log_info); osmo_stderr_target->categories[DMEAS].loglevel = LOGL_DEBUG; bts = gsm_bts_alloc(tall_bts_ctx, 0); diff --git a/tests/misc/misc_test.c b/tests/misc/misc_test.c index e454235..fd091a1 100644 --- a/tests/misc/misc_test.c +++ b/tests/misc/misc_test.c @@ -29,6 +29,8 @@ #include #include +void *ctx = NULL; + static const uint8_t ipa_rsl_connect[] = { 0x00, 0x1c, 0xff, 0x10, 0x80, 0x00, 0x0a, 0x0d, 0x63, 0x6f, 0x6d, 0x2e, 0x69, 0x70, 0x61, 0x63, @@ -161,7 +163,7 @@ { struct gsm_bts *bts; - bts = gsm_bts_alloc(NULL, 0); + bts = gsm_bts_alloc(ctx, 0); gsm_bts_set_feature(bts, BTS_FEAT_SPEECH_F_V1); gsm_bts_set_feature(bts, BTS_FEAT_SPEECH_H_V1); @@ -184,7 +186,9 @@ int main(int argc, char **argv) { - bts_log_init(NULL); + ctx = talloc_named_const(NULL, 0, "misc_test"); + + osmo_init_logging2(ctx, bts_log_info); test_sacch_get(); test_msg_utils_ipa(); diff --git a/tests/paging/paging_test.c b/tests/paging/paging_test.c index f4f0934..bf28661 100644 --- a/tests/paging/paging_test.c +++ b/tests/paging/paging_test.c @@ -114,7 +114,7 @@ tall_bts_ctx = talloc_named_const(NULL, 1, "OsmoBTS context"); msgb_talloc_ctx_init(tall_bts_ctx, 0); - bts_log_init(NULL); + osmo_init_logging2(tall_bts_ctx, &bts_log_info); bts = gsm_bts_alloc(tall_bts_ctx, 0); if (bts_init(bts) < 0) { diff --git a/tests/tx_power/tx_power_test.c b/tests/tx_power/tx_power_test.c index a47d186..ad3f68c 100644 --- a/tests/tx_power/tx_power_test.c +++ b/tests/tx_power/tx_power_test.c @@ -211,7 +211,7 @@ tall_bts_ctx = talloc_named_const(NULL, 1, "OsmoBTS context"); msgb_talloc_ctx_init(tall_bts_ctx, 0); - bts_log_init(NULL); + osmo_init_logging2(tall_bts_ctx, &bts_log_info); osmo_stderr_target->categories[DL1C].loglevel = LOGL_DEBUG; log_set_print_filename(osmo_stderr_target, 0); -- To view, visit https://gerrit.osmocom.org/7603 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Ic049f77bef74123b95350bcae182a468e0086b9c Gerrit-PatchSet: 1 Gerrit-Project: osmo-bts Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr From gerrit-no-reply at lists.osmocom.org Sun Apr 1 15:06:28 2018 From: gerrit-no-reply at lists.osmocom.org (Neels Hofmeyr) Date: Sun, 1 Apr 2018 15:06:28 +0000 Subject: [PATCH] osmo-pcu[master]: use osmo_init_logging2() with proper talloc ctx Message-ID: Review at https://gerrit.osmocom.org/7604 use osmo_init_logging2() with proper talloc ctx There is a duality of initialization: early_init() in bts.cpp wants to init logging even before static instances get initialized. Make sure that tall_pcu_ctx is initialized during early_init() as well. There is a build context that does not seem to include bts.cpp (osmo-pcu-remote), so to be sure, init tall_pcu_ctx as NULL and both in early_init() as well as pcu_main.cpp, init both tall_pcu_ctx and logging if it is still NULL. Change-Id: I2199b62d0270bd35dec2283e8f5b364b7c63915b --- M src/bts.cpp M src/pcu_main.cpp M tests/alloc/AllocTest.cpp M tests/alloc/MslotTest.cpp M tests/bitcomp/BitcompTest.cpp M tests/codel/codel_test.c M tests/edge/EdgeTest.cpp M tests/emu/pcu_emu.cpp M tests/fn/FnTest.cpp M tests/llc/LlcTest.cpp M tests/ms/MsTest.cpp M tests/rlcmac/RLCMACTest.cpp M tests/tbf/TbfTest.cpp M tests/types/TypesTest.cpp 14 files changed, 28 insertions(+), 22 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-pcu refs/changes/04/7604/1 diff --git a/src/bts.cpp b/src/bts.cpp index 47607df..b6d0d0c 100644 --- a/src/bts.cpp +++ b/src/bts.cpp @@ -59,7 +59,10 @@ * require logging already to be initialized. */ __attribute__((constructor)) static void early_init(void) { - osmo_init_logging(&gprs_log_info); + if (!tall_pcu_ctx) { + tall_pcu_ctx = talloc_named_const(NULL, 1, "Osmo-PCU context"); + osmo_init_logging2(tall_pcu_ctx, &gprs_log_info); + } } } diff --git a/src/pcu_main.cpp b/src/pcu_main.cpp index 84ade6f..5b1b1be 100644 --- a/src/pcu_main.cpp +++ b/src/pcu_main.cpp @@ -56,7 +56,7 @@ static int config_given = 0; static char *config_file = strdup("osmo-pcu.cfg"); extern struct vty_app_info pcu_vty_info; -void *tall_pcu_ctx; +void *tall_pcu_ctx = NULL; extern void *bv_tall_ctx; static int quit = 0; static int rt_prio = -1; @@ -181,9 +181,13 @@ struct gprs_rlcmac_bts *bts; int rc; - tall_pcu_ctx = talloc_named_const(NULL, 1, "Osmo-PCU context"); - if (!tall_pcu_ctx) - return -ENOMEM; + /* tall_pcu_ctx may already have been initialized in bts.cpp during early_init(). */ + if (!tall_pcu_ctx) { + tall_pcu_ctx = talloc_named_const(NULL, 1, "Osmo-PCU context"); + if (!tall_pcu_ctx) + return -ENOMEM; + osmo_init_logging2(tall_pcu_ctx, &gprs_log_info); + } bts = bts_main_data(); bts->fc_interval = 1; @@ -259,7 +263,6 @@ msgb_talloc_ctx_init(tall_pcu_ctx, 0); - osmo_init_logging(&gprs_log_info); osmo_stats_init(tall_pcu_ctx); rate_ctr_init(tall_pcu_ctx); gprs_ns_set_log_ss(DNS); diff --git a/tests/alloc/AllocTest.cpp b/tests/alloc/AllocTest.cpp index 9f6e6c4..64d6a50 100644 --- a/tests/alloc/AllocTest.cpp +++ b/tests/alloc/AllocTest.cpp @@ -797,7 +797,7 @@ abort(); msgb_talloc_ctx_init(tall_pcu_ctx, 0); - osmo_init_logging(&gprs_log_info); + osmo_init_logging2(tall_pcu_ctx, &gprs_log_info); log_set_use_color(osmo_stderr_target, 0); log_set_print_filename(osmo_stderr_target, 0); if (getenv("LOGL_DEBUG")) diff --git a/tests/alloc/MslotTest.cpp b/tests/alloc/MslotTest.cpp index ebe04ca..8910e52 100644 --- a/tests/alloc/MslotTest.cpp +++ b/tests/alloc/MslotTest.cpp @@ -155,7 +155,7 @@ msgb_talloc_ctx_init(tall_pcu_ctx, 0); - osmo_init_logging(&gprs_log_info); + osmo_init_logging2(tall_pcu_ctx, &gprs_log_info); log_set_use_color(osmo_stderr_target, 0); log_set_print_filename(osmo_stderr_target, 0); log_set_log_level(osmo_stderr_target, LOGL_DEBUG); diff --git a/tests/bitcomp/BitcompTest.cpp b/tests/bitcomp/BitcompTest.cpp index 8dd4534..98bb2cc 100644 --- a/tests/bitcomp/BitcompTest.cpp +++ b/tests/bitcomp/BitcompTest.cpp @@ -188,15 +188,15 @@ int main(int argc, char **argv) { - osmo_init_logging(&gprs_log_info); - log_set_use_color(osmo_stderr_target, 0); - log_set_print_filename(osmo_stderr_target, 0); - log_parse_category_mask(osmo_stderr_target, "DRLCMACUL,1"); - tall_pcu_ctx = talloc_named_const(NULL, 1, "moiji-mobile bitcompTest context"); if (!tall_pcu_ctx) abort(); + osmo_init_logging2(tall_pcu_ctx, &gprs_log_info); + log_set_use_color(osmo_stderr_target, 0); + log_set_print_filename(osmo_stderr_target, 0); + log_parse_category_mask(osmo_stderr_target, "DRLCMACUL,1"); + test_EPDAN_decode_tree(); if (getenv("TALLOC_REPORT_FULL")) diff --git a/tests/codel/codel_test.c b/tests/codel/codel_test.c index 91bad13..2ce2429 100644 --- a/tests/codel/codel_test.c +++ b/tests/codel/codel_test.c @@ -134,7 +134,7 @@ int main(int argc, char **argv) { - osmo_init_logging(&info); + osmo_init_logging2(NULL, &info); log_set_use_color(osmo_stderr_target, 0); log_set_print_filename(osmo_stderr_target, 0); log_set_log_level(osmo_stderr_target, LOGL_INFO); diff --git a/tests/edge/EdgeTest.cpp b/tests/edge/EdgeTest.cpp index cd80c05..98ca206 100644 --- a/tests/edge/EdgeTest.cpp +++ b/tests/edge/EdgeTest.cpp @@ -1402,7 +1402,7 @@ abort(); msgb_talloc_ctx_init(tall_pcu_ctx, 0); - osmo_init_logging(&gprs_log_info); + osmo_init_logging2(tall_pcu_ctx, &gprs_log_info); log_set_use_color(osmo_stderr_target, 0); log_set_print_filename(osmo_stderr_target, 0); diff --git a/tests/emu/pcu_emu.cpp b/tests/emu/pcu_emu.cpp index 4cc37f3..354a328 100644 --- a/tests/emu/pcu_emu.cpp +++ b/tests/emu/pcu_emu.cpp @@ -112,7 +112,7 @@ abort(); msgb_talloc_ctx_init(tall_pcu_ctx, 0); - osmo_init_logging(&gprs_log_info); + osmo_init_logging2(tall_pcu_ctx, &gprs_log_info); vty_init(&pcu_vty_info); pcu_vty_init(&gprs_log_info); diff --git a/tests/fn/FnTest.cpp b/tests/fn/FnTest.cpp index 1e3ff11..35249f5 100644 --- a/tests/fn/FnTest.cpp +++ b/tests/fn/FnTest.cpp @@ -149,7 +149,7 @@ abort(); msgb_talloc_ctx_init(tall_pcu_ctx, 0); - osmo_init_logging(&gprs_log_info); + osmo_init_logging2(tall_pcu_ctx, &gprs_log_info); log_set_use_color(osmo_stderr_target, 0); log_set_print_filename(osmo_stderr_target, 0); log_set_log_level(osmo_stderr_target, LOGL_DEBUG); diff --git a/tests/llc/LlcTest.cpp b/tests/llc/LlcTest.cpp index eb693f5..3083644 100644 --- a/tests/llc/LlcTest.cpp +++ b/tests/llc/LlcTest.cpp @@ -225,7 +225,7 @@ abort(); msgb_talloc_ctx_init(tall_pcu_ctx, 0); - osmo_init_logging(&gprs_log_info); + osmo_init_logging2(tall_pcu_ctx, &gprs_log_info); log_set_use_color(osmo_stderr_target, 0); log_set_print_filename(osmo_stderr_target, 0); log_set_log_level(osmo_stderr_target, LOGL_INFO); diff --git a/tests/ms/MsTest.cpp b/tests/ms/MsTest.cpp index 4601504..728daf6 100644 --- a/tests/ms/MsTest.cpp +++ b/tests/ms/MsTest.cpp @@ -524,7 +524,7 @@ abort(); msgb_talloc_ctx_init(tall_pcu_ctx, 0); - osmo_init_logging(&gprs_log_info); + osmo_init_logging2(tall_pcu_ctx, &gprs_log_info); log_set_use_color(osmo_stderr_target, 0); log_set_print_filename(osmo_stderr_target, 0); log_set_log_level(osmo_stderr_target, LOGL_INFO); diff --git a/tests/rlcmac/RLCMACTest.cpp b/tests/rlcmac/RLCMACTest.cpp index 9155809..3de4fac 100644 --- a/tests/rlcmac/RLCMACTest.cpp +++ b/tests/rlcmac/RLCMACTest.cpp @@ -230,7 +230,7 @@ int main(int argc, char *argv[]) { void *ctx = talloc_named_const(NULL, 1, "RLCMACTest"); - osmo_init_logging(&gprs_log_info); + osmo_init_logging2(ctx, &gprs_log_info); //printSizeofRLCMAC(); testRlcMacDownlink(ctx); diff --git a/tests/tbf/TbfTest.cpp b/tests/tbf/TbfTest.cpp index 662708a..dfed79e 100644 --- a/tests/tbf/TbfTest.cpp +++ b/tests/tbf/TbfTest.cpp @@ -3233,7 +3233,7 @@ abort(); msgb_talloc_ctx_init(tall_pcu_ctx, 0); - osmo_init_logging(&gprs_log_info); + osmo_init_logging2(tall_pcu_ctx, &gprs_log_info); log_set_use_color(osmo_stderr_target, 0); log_set_print_filename(osmo_stderr_target, 0); bssgp_set_log_ss(DBSSGP); diff --git a/tests/types/TypesTest.cpp b/tests/types/TypesTest.cpp index 3a43897..1bc911f 100644 --- a/tests/types/TypesTest.cpp +++ b/tests/types/TypesTest.cpp @@ -487,7 +487,7 @@ abort(); msgb_talloc_ctx_init(tall_pcu_ctx, 0); - osmo_init_logging(&gprs_log_info); + osmo_init_logging2(tall_pcu_ctx, &gprs_log_info); log_set_use_color(osmo_stderr_target, 0); log_set_print_filename(osmo_stderr_target, 0); -- To view, visit https://gerrit.osmocom.org/7604 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I2199b62d0270bd35dec2283e8f5b364b7c63915b Gerrit-PatchSet: 1 Gerrit-Project: osmo-pcu Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr From gerrit-no-reply at lists.osmocom.org Sun Apr 1 20:18:39 2018 From: gerrit-no-reply at lists.osmocom.org (Vadim Yanitskiy) Date: Sun, 1 Apr 2018 20:18:39 +0000 Subject: libosmocore[master]: GSUP: add USSD encoding / decoding support In-Reply-To: References: Message-ID: Patch Set 1: (1 comment) https://gerrit.osmocom.org/#/c/7600/1/include/osmocom/gsm/gsup.h File include/osmocom/gsm/gsup.h: Line 85: OSMO_GSUP_USSD_IE = 0x29, During OsmoMSC code writing, I understood that we probably also need another IE - OSMO_GSUP_USSD_SID_IE, that would carry a session id. -- To view, visit https://gerrit.osmocom.org/7600 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Ie17a78043a35fffbdd59e80fd2b2da39cce5e532 Gerrit-PatchSet: 1 Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Owner: Vadim Yanitskiy Gerrit-Reviewer: Alexander Chemeris Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Vadim Yanitskiy Gerrit-HasComments: Yes From gerrit-no-reply at lists.osmocom.org Sun Apr 1 21:48:13 2018 From: gerrit-no-reply at lists.osmocom.org (Vadim Yanitskiy) Date: Sun, 1 Apr 2018 21:48:13 +0000 Subject: [PATCH] libosmocore[master]: GSUP: add USSD encoding / decoding support In-Reply-To: References: Message-ID: Hello Jenkins Builder, I'd like you to reexamine a change. Please visit https://gerrit.osmocom.org/7600 to look at the new patch set (#2). GSUP: add USSD encoding / decoding support In order to be able to transfer USSD messages via GSUP, this change introduces the new message types OSMO_GSUP_MSGT_USSD_*, and a few new information elements: - OSMO_GSUP_USSD_SID_IE, - OSMO_GSUP_USSD_PAYLOAD_IE. The 'osmo_gsup_message' structure was extended with a few new fields, which carry the L3 bytes of USSD payload, its length, and unique USSD session ID. Change-Id: Ie17a78043a35fffbdd59e80fd2b2da39cce5e532 Related: OS#1597 --- M include/osmocom/gsm/gsup.h M src/gsm/gsup.c M tests/gsup/gsup_test.c M tests/gsup/gsup_test.err M tests/gsup/gsup_test.ok 5 files changed, 105 insertions(+), 1 deletion(-) git pull ssh://gerrit.osmocom.org:29418/libosmocore refs/changes/00/7600/2 diff --git a/include/osmocom/gsm/gsup.h b/include/osmocom/gsm/gsup.h index 1a8a3b2..7b7e0ef 100644 --- a/include/osmocom/gsm/gsup.h +++ b/include/osmocom/gsm/gsup.h @@ -81,6 +81,9 @@ OSMO_GSUP_AUTS_IE = 0x26, OSMO_GSUP_RES_IE = 0x27, OSMO_GSUP_CN_DOMAIN_IE = 0x28, + /* USSD support */ + OSMO_GSUP_USSD_SID_IE = 0x29, + OSMO_GSUP_USSD_PAYLOAD_IE = 0x30, }; /*! GSUP message type */ @@ -110,6 +113,10 @@ OSMO_GSUP_MSGT_LOCATION_CANCEL_REQUEST = 0b00011100, OSMO_GSUP_MSGT_LOCATION_CANCEL_ERROR = 0b00011101, OSMO_GSUP_MSGT_LOCATION_CANCEL_RESULT = 0b00011110, + + OSMO_GSUP_MSGT_USSD_REQUEST = 0b00100000, + OSMO_GSUP_MSGT_USSD_ERROR = 0b00100001, + OSMO_GSUP_MSGT_USSD_RESULT = 0b00100010, }; #define OSMO_GSUP_IS_MSGT_REQUEST(msgt) (((msgt) & 0b00000011) == 0b00) @@ -175,6 +182,9 @@ enum osmo_gsup_cn_domain cn_domain; const uint8_t *pdp_charg_enc; size_t pdp_charg_enc_len; + const uint8_t *ussd_payload; + size_t ussd_payload_len; + uint32_t ussd_sid; }; int osmo_gsup_decode(const uint8_t *data, size_t data_len, diff --git a/src/gsm/gsup.c b/src/gsm/gsup.c index b6ac56d..d43af9b 100644 --- a/src/gsm/gsup.c +++ b/src/gsm/gsup.c @@ -29,6 +29,7 @@ #include #include +#include /*! \addtogroup gsup * @{ @@ -62,6 +63,10 @@ OSMO_VALUE_STRING(OSMO_GSUP_MSGT_LOCATION_CANCEL_REQUEST), OSMO_VALUE_STRING(OSMO_GSUP_MSGT_LOCATION_CANCEL_ERROR), OSMO_VALUE_STRING(OSMO_GSUP_MSGT_LOCATION_CANCEL_RESULT), + + OSMO_VALUE_STRING(OSMO_GSUP_MSGT_USSD_REQUEST), + OSMO_VALUE_STRING(OSMO_GSUP_MSGT_USSD_ERROR), + OSMO_VALUE_STRING(OSMO_GSUP_MSGT_USSD_RESULT), { 0, NULL } }; @@ -261,6 +266,7 @@ /* specific parts */ while (data_len > 0) { + uint32_t *ussd_sid; enum osmo_gsup_iei iei; struct osmo_gsup_pdp_info pdp_info; struct osmo_auth_vector auth_info; @@ -385,6 +391,16 @@ gsup_msg->pdp_charg_enc_len = value_len; break; + case OSMO_GSUP_USSD_SID_IE: + ussd_sid = (uint32_t *) value; + gsup_msg->ussd_sid = ntohl(*ussd_sid); + break; + + case OSMO_GSUP_USSD_PAYLOAD_IE: + gsup_msg->ussd_payload = value; + gsup_msg->ussd_payload_len = value_len; + break; + default: LOGP(DLGSUP, LOGL_NOTICE, "GSUP IE type %d unknown\n", iei); @@ -483,6 +499,7 @@ int idx; uint8_t bcd_buf[GSM48_MI_SIZE] = {0}; size_t bcd_len; + uint32_t ussd_sid; /* generic part */ if(!gsup_msg->message_type) @@ -564,6 +581,17 @@ gsup_msg->pdp_charg_enc_len, gsup_msg->pdp_charg_enc); } + if (gsup_msg->ussd_sid) { + ussd_sid = htonl(gsup_msg->ussd_sid); + msgb_tlv_put(msg, OSMO_GSUP_USSD_SID_IE, + sizeof(gsup_msg->ussd_sid), (uint8_t *) &ussd_sid); + } + + if (gsup_msg->ussd_payload) { + msgb_tlv_put(msg, OSMO_GSUP_USSD_PAYLOAD_IE, + gsup_msg->ussd_payload_len, gsup_msg->ussd_payload); + } + return 0; } diff --git a/tests/gsup/gsup_test.c b/tests/gsup/gsup_test.c index b55f1d9..437b07f 100644 --- a/tests/gsup/gsup_test.c +++ b/tests/gsup/gsup_test.c @@ -171,6 +171,56 @@ 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, }; + static const uint8_t send_ussd_req[] = { + 0x20, + TEST_IMSI_IE, + /* USSD_SID_IE */ + 0x29, 0x04, 0xde, 0xad, 0xbe, 0xef, + /* USSD_PAYLOAD_IE */ + 0x30, 0x19, + /** + * Protocol Discriminator: Non call related SS messages + * Message Type: Register (0x3b), SQN: 1 + */ + 0x0b, 0x7b, 0x1c, 0x15, 0xa1, 0x13, 0x02, 0x01, + 0x05, 0x02, 0x01, 0x3b, + /** + * Coding: GSM 7 bit default alphabet + * Language: Language unspecified (15) + */ + 0x30, 0x0b, 0x04, 0x01, 0x0f, + /** + * USSD String: *#100# + */ + 0x04, 0x06, 0xaa, 0x51, 0x0c, 0x06, 0x1b, 0x01, + }; + + static const uint8_t send_ussd_res[] = { + 0x22, + TEST_IMSI_IE, + /* USSD_SID_IE */ + 0x29, 0x04, 0xde, 0xad, 0xbe, 0xef, + /* USSD_PAYLOAD_IE */ + 0x30, 0x2b, + /** + * Protocol Discriminator: Non call related SS messages + * Message Type: Release Complete (0x2a), SQN: 0 + */ + 0x8b, 0x2a, 0x1c, 0x27, 0xa2, 0x25, 0x02, 0x01, + 0x05, 0x30, 0x20, 0x02, 0x01, 0x3b, + /** + * Coding: GSM 7 bit default alphabet + * Language: Language unspecified (15) + */ + 0x30, 0x1b, 0x04, 0x01, 0x0f, + /** + * USSD String: Your extension is 01393 + */ + 0x04, 0x16, 0xd9, 0x77, 0x5d, 0x0e, 0x2a, 0xe3, + 0xe9, 0x65, 0xf7, 0x3c, 0xfd, 0x76, 0x83, 0xd2, + 0x73, 0x10, 0x2c, 0x36, 0xcb, 0xcd, 0x1a, 0x0d, + }; + static const struct test { char *name; const uint8_t *data; @@ -204,6 +254,8 @@ send_auth_info_res_umts, sizeof(send_auth_info_res_umts)}, {"Send Authentication Info Request with AUTS and RAND (UMTS)", send_auth_info_req_auts, sizeof(send_auth_info_req_auts)}, + {"USSD Request", send_ussd_req, sizeof(send_ussd_req)}, + {"USSD Result", send_ussd_res, sizeof(send_ussd_res)}, }; printf("Test GSUP message decoding/encoding\n"); @@ -267,7 +319,7 @@ osmo_hexdump(t->data + j, ie_end - j)); OSMO_ASSERT(j <= ie_end - 2); - OSMO_ASSERT(t->data[j+0] <= OSMO_GSUP_CN_DOMAIN_IE); + OSMO_ASSERT(t->data[j+0] <= OSMO_GSUP_USSD_PAYLOAD_IE); OSMO_ASSERT(t->data[j+1] <= ie_end - j - 2); ie_end = j; diff --git a/tests/gsup/gsup_test.err b/tests/gsup/gsup_test.err index 05c64fe..eb4ca0d 100644 --- a/tests/gsup/gsup_test.err +++ b/tests/gsup/gsup_test.err @@ -40,6 +40,12 @@ generated message: 08 01 08 21 43 65 87 09 21 43 f5 26 0e 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 20 10 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f 10 original message: 08 01 08 21 43 65 87 09 21 43 f5 26 0e 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 20 10 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f 10 IMSI: 123456789012345 + generated message: 20 01 08 21 43 65 87 09 21 43 f5 29 04 de ad be ef 30 19 0b 7b 1c 15 a1 13 02 01 05 02 01 3b 30 0b 04 01 0f 04 06 aa 51 0c 06 1b 01 + original message: 20 01 08 21 43 65 87 09 21 43 f5 29 04 de ad be ef 30 19 0b 7b 1c 15 a1 13 02 01 05 02 01 3b 30 0b 04 01 0f 04 06 aa 51 0c 06 1b 01 + IMSI: 123456789012345 + generated message: 22 01 08 21 43 65 87 09 21 43 f5 29 04 de ad be ef 30 2b 8b 2a 1c 27 a2 25 02 01 05 30 20 02 01 3b 30 1b 04 01 0f 04 16 d9 77 5d 0e 2a e3 e9 65 f7 3c fd 76 83 d2 73 10 2c 36 cb cd 1a 0d + original message: 22 01 08 21 43 65 87 09 21 43 f5 29 04 de ad be ef 30 2b 8b 2a 1c 27 a2 25 02 01 05 30 20 02 01 3b 30 1b 04 01 0f 04 16 d9 77 5d 0e 2a e3 e9 65 f7 3c fd 76 83 d2 73 10 2c 36 cb cd 1a 0d + IMSI: 123456789012345 message 0: tested 11 truncations, 11 parse failures message 1: tested 14 truncations, 13 parse failures message 2: tested 83 truncations, 81 parse failures @@ -54,6 +60,8 @@ message 11: tested 13 truncations, 12 parse failures message 12: tested 211 truncations, 209 parse failures message 13: tested 45 truncations, 43 parse failures + message 14: tested 44 truncations, 42 parse failures + message 15: tested 62 truncations, 60 parse failures DLGSUP Stopping DLGSUP logging message 0: tested 2816 modifications, 510 parse failures message 1: tested 3584 modifications, 768 parse failures @@ -69,3 +77,5 @@ message 11: tested 3328 modifications, 767 parse failures message 12: tested 54016 modifications, 4622 parse failures message 13: tested 11520 modifications, 1026 parse failures + message 14: tested 11264 modifications, 1007 parse failures + message 15: tested 15872 modifications, 1006 parse failures diff --git a/tests/gsup/gsup_test.ok b/tests/gsup/gsup_test.ok index 49a85ba..5c45ab0 100644 --- a/tests/gsup/gsup_test.ok +++ b/tests/gsup/gsup_test.ok @@ -27,4 +27,8 @@ Send Authentication Info Result with IK, CK, AUTN and RES (UMTS) OK Testing Send Authentication Info Request with AUTS and RAND (UMTS) Send Authentication Info Request with AUTS and RAND (UMTS) OK + Testing USSD Request + USSD Request OK + Testing USSD Result + USSD Result OK Done. -- To view, visit https://gerrit.osmocom.org/7600 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newpatchset Gerrit-Change-Id: Ie17a78043a35fffbdd59e80fd2b2da39cce5e532 Gerrit-PatchSet: 2 Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Owner: Vadim Yanitskiy Gerrit-Reviewer: Alexander Chemeris Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Vadim Yanitskiy From gerrit-no-reply at lists.osmocom.org Mon Apr 2 07:35:50 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Mon, 2 Apr 2018 07:35:50 +0000 Subject: osmo-mgw[master]: use osmo_init_logging2() with proper talloc ctx In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7602 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I3e2a9aef5242efdf11a64536f79099a6e9cec53f Gerrit-PatchSet: 1 Gerrit-Project: osmo-mgw Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Mon Apr 2 07:35:55 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Mon, 2 Apr 2018 07:35:55 +0000 Subject: osmo-pcu[master]: use osmo_init_logging2() with proper talloc ctx In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7604 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I2199b62d0270bd35dec2283e8f5b364b7c63915b Gerrit-PatchSet: 1 Gerrit-Project: osmo-pcu Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Mon Apr 2 07:36:31 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Mon, 2 Apr 2018 07:36:31 +0000 Subject: osmo-msc[master]: use osmo_init_logging2() with proper talloc ctx In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7599 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Iae07ae60230c7bab28e52b5df97fa3844778158e Gerrit-PatchSet: 1 Gerrit-Project: osmo-msc Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Mon Apr 2 09:49:41 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Mon, 2 Apr 2018 09:49:41 +0000 Subject: libosmocore[master]: GSUP: add USSD encoding / decoding support In-Reply-To: References: Message-ID: Patch Set 2: I would like to merge this once we have patches that actually use it. Feel free to keep it in a 'ussd' branch of libosmocore meanwhile. The main point is that until we have code using it, it might not be clear if we need further information elements for "MAP like" USSD support. -- To view, visit https://gerrit.osmocom.org/7600 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Ie17a78043a35fffbdd59e80fd2b2da39cce5e532 Gerrit-PatchSet: 2 Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Owner: Vadim Yanitskiy Gerrit-Reviewer: Alexander Chemeris Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Vadim Yanitskiy Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Mon Apr 2 09:51:10 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Mon, 2 Apr 2018 09:51:10 +0000 Subject: osmo-ttcn3-hacks[master]: support ccache to speed up ttcn3 test compilation In-Reply-To: References: Message-ID: Patch Set 4: I think for this kind of change it would be worth discussing it in the eclipse titan forum. Maybe they have some less intrusive/hackish ideas about how to use ccache with TITAN? If there are no flags yet to disable the timestamps, maybe the related discussin will prompt them to add this to future TITAN releases. -- To view, visit https://gerrit.osmocom.org/7601 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Ibb538f602206535c06980f88191c1dabe3c4cd82 Gerrit-PatchSet: 4 Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Owner: Stefan Sperling Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Neels Hofmeyr Gerrit-Reviewer: Stefan Sperling Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Mon Apr 2 09:55:20 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Mon, 2 Apr 2018 09:55:20 +0000 Subject: osmo-bts[master]: osmo-bts-sysmo eeprom.c Restore ability to read/write EEPROM In-Reply-To: References: Message-ID: Patch Set 2: > Can you provide me with a test scenario to test that it works fine? > Which steps are you following? I'm sorry but I never used this > feature consciously before, so I don't event know what to expect or > how to test it. The EEPROM contains calibration data, and it is read on each and every sysmoBTS at the time you start omso-bts-sysmo. So if our current master fails to read the EEPROM calibration data, this should be noticable on any device, each time you start osmo-bts-sysmo @keith: I agree that this is for sysmocom to fix. It would have been sufficient to file a bug report and let us take over at that point. Sorry for exhausting your time. -- To view, visit https://gerrit.osmocom.org/7572 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Iaa7318387ad7bb248c261b1f428019244039e7d2 Gerrit-PatchSet: 2 Gerrit-Project: osmo-bts Gerrit-Branch: master Gerrit-Owner: Keith Whyte Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Keith Whyte Gerrit-Reviewer: Pau Espin Pedrol Gerrit-Reviewer: Vadim Yanitskiy Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Mon Apr 2 09:56:03 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Mon, 2 Apr 2018 09:56:03 +0000 Subject: osmo-ci[master]: ansible: osmocom-jenkins-slave: don't install recommend pack... In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7590 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I6859b8180916a8e172d32030da06ba6fa27d5c45 Gerrit-PatchSet: 1 Gerrit-Project: osmo-ci Gerrit-Branch: master Gerrit-Owner: lynxis lazus Gerrit-Reviewer: Harald Welte Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Mon Apr 2 09:56:14 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Mon, 2 Apr 2018 09:56:14 +0000 Subject: osmo-ci[master]: ansible: hosts: add build2-deb8build-ansible build2-deb9buil... In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7591 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Iede01ab10f0a9582b3a3a9a3ebbbc684b94a3c0a Gerrit-PatchSet: 1 Gerrit-Project: osmo-ci Gerrit-Branch: master Gerrit-Owner: lynxis lazus Gerrit-Reviewer: Harald Welte Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Mon Apr 2 09:56:34 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Mon, 2 Apr 2018 09:56:34 +0000 Subject: osmo-ci[master]: ansible: hosts: use inventory with ansible_host to have more... In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7592 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I0888e9b66cd1077dcdada97fb5ee2d56def516e3 Gerrit-PatchSet: 1 Gerrit-Project: osmo-ci Gerrit-Branch: master Gerrit-Owner: lynxis lazus Gerrit-Reviewer: Harald Welte Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Mon Apr 2 09:56:49 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Mon, 2 Apr 2018 09:56:49 +0000 Subject: osmo-ci[master]: ansible: create a new group coverity-slaves to choose the ta... In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7593 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I8b09ca50db938c5c7087a74e5d2575412a916ff6 Gerrit-PatchSet: 1 Gerrit-Project: osmo-ci Gerrit-Branch: master Gerrit-Owner: lynxis lazus Gerrit-Reviewer: Harald Welte Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Mon Apr 2 09:57:01 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Mon, 2 Apr 2018 09:57:01 +0000 Subject: osmo-ci[master]: ansible: hosts: add host2-deb8build-ansible host2-deb9build-... In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7594 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: If0a21f24483b2c1c6ea56e366c5858eee50f17e1 Gerrit-PatchSet: 1 Gerrit-Project: osmo-ci Gerrit-Branch: master Gerrit-Owner: lynxis lazus Gerrit-Reviewer: Harald Welte Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Mon Apr 2 09:57:30 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Mon, 2 Apr 2018 09:57:30 +0000 Subject: osmo-ci[master]: jobs/update-osmo*: add new nodes to the update jobs In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7595 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Ib103b3343d582f7a78f0c4cec00c94078a078584 Gerrit-PatchSet: 1 Gerrit-Project: osmo-ci Gerrit-Branch: master Gerrit-Owner: lynxis lazus Gerrit-Reviewer: Harald Welte Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Mon Apr 2 09:57:41 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Mon, 2 Apr 2018 09:57:41 +0000 Subject: osmo-ci[master]: ansible: install eclipse-titan In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7596 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I354271b7c573484b7f538a5a4bb29753a950d5f9 Gerrit-PatchSet: 1 Gerrit-Project: osmo-ci Gerrit-Branch: master Gerrit-Owner: lynxis lazus Gerrit-Reviewer: Harald Welte Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Mon Apr 2 09:57:57 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Mon, 2 Apr 2018 09:57:57 +0000 Subject: osmo-ci[master]: ansible jenkins-slave: only setup ttcn3_slave on debian stretch In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7597 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Iaf043008890da94098986468e1fd3d9578810206 Gerrit-PatchSet: 1 Gerrit-Project: osmo-ci Gerrit-Branch: master Gerrit-Owner: lynxis lazus Gerrit-Reviewer: Harald Welte Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Mon Apr 2 10:02:52 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Mon, 2 Apr 2018 10:02:52 +0000 Subject: osmo-bts[master]: osmo-bts-trx: perform error concealment for FR frames In-Reply-To: References: Message-ID: Patch Set 12: (3 comments) https://gerrit.osmocom.org/#/c/5214/12/include/osmo-bts/gsm_data_shared.h File include/osmo-bts/gsm_data_shared.h: Line 322: struct osmo_ecu_fr_state ecu_fr_state; so this is for full-rate. What about we later add something about EFR or AMR? In this case we add another member, and we occupy the memory for both FR and those other codecs. I think what we should do here is add union { struct osmo_ecu_fr_state fr; } ecu_state; this way it's clean and extensible with future implementations, without then having to update all the FR code with different naming to access the state. https://gerrit.osmocom.org/#/c/5214/12/src/osmo-bts-trx/scheduler_trx.c File src/osmo-bts-trx/scheduler_trx.c: Line 1084: rc = osmo_ecu_fr_conceal(&lchan->ecu_fr_state, tch_data); why not right away create an osmo_ecu_conceal() function, which is called from above this switch(tch_mode) statement, and then dispatch to the FR specific code inside that function? This way it's easier to later add other codec implementations. Line 1118: if (!bfi_flag && tch_mode == GSM48_CMODE_SPEECH_V1) same here. I'd recommend to just check for "if (!bfi_flag)" here, call an osmo_ecu_reset(&lchan->ecu_state, tch_data) and let that function dispatch it to the codec-specific routine. -- To view, visit https://gerrit.osmocom.org/5214 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Iae9e69a9578ae305bca42f834694af96a29084e6 Gerrit-PatchSet: 12 Gerrit-Project: osmo-bts Gerrit-Branch: master Gerrit-Owner: dexter Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Neels Hofmeyr Gerrit-Reviewer: Vadim Yanitskiy Gerrit-Reviewer: dexter Gerrit-HasComments: Yes From gerrit-no-reply at lists.osmocom.org Mon Apr 2 10:11:09 2018 From: gerrit-no-reply at lists.osmocom.org (Keith Whyte) Date: Mon, 2 Apr 2018 10:11:09 +0000 Subject: osmo-bts[master]: osmo-bts-sysmo eeprom.c Restore ability to read/write EEPROM In-Reply-To: References: Message-ID: Patch Set 2: > > Can you provide me with a test scenario to test that it works > fine? I did think that maybe the best way to help would be to add a test for it, but are you automatically testing osmo-bts-sysmo on real hardware? If not i don't know how. Otherwise, does the good/bad outputs i pasted in the ticket help? > > > > @keith: I agree that this is for sysmocom to fix. It would have > been sufficient to file a bug report and let us take over at that My mistake for not drawing enough attention to the bug report when I pushed the first patch set... > Sorry for exhausting your time. I wouldn't quite put it like that. I was physically exhausted the other night, with a sore eye, Time.. well I know we all put time in here, just maybe it takes me a LOT longer to figure stuff out than an experienced programmer so therefore I say not efficient use of time. -- To view, visit https://gerrit.osmocom.org/7572 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Iaa7318387ad7bb248c261b1f428019244039e7d2 Gerrit-PatchSet: 2 Gerrit-Project: osmo-bts Gerrit-Branch: master Gerrit-Owner: Keith Whyte Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Keith Whyte Gerrit-Reviewer: Pau Espin Pedrol Gerrit-Reviewer: Vadim Yanitskiy Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Mon Apr 2 13:49:37 2018 From: gerrit-no-reply at lists.osmocom.org (Holger Freyther) Date: Mon, 2 Apr 2018 13:49:37 +0000 Subject: osmo-gsm-tester[master]: ms: Create a cumulative distribution function class In-Reply-To: References: Message-ID: Patch Set 3: (2 comments) > (2 comments) > I'm not sure I overlook the bigger picture, but do go ahead. Which size of the frame do we want? For simulation we want different models of when a subscriber comes into a serving a area. * Everything at once * Linear over time * Slow start, bulk, trailing end In real-life osmo-bts can ramp up power slowly. E.g. to catch few subscribers in the beginning and then more and more. I thought the concept of a cumulative distribution function (CDF) let's us model this the easiest way (by emulating visibility with starting the osmocom-bb later) https://gerrit.osmocom.org/#/c/6230/3/src/osmo_ms_driver/__init__.py File src/osmo_ms_driver/__init__.py: Line 5: # Authors: D. Lazlo Sitzer > Also, frankly, this is just a list of authors, the copyright is two lines f Accurate point but I didn't write any of the lines and just cp'ed that file. But let's not lose any time on this one? We should talk about how I copied it without updating "update_version.sh" and not providing any _version.py ;) https://gerrit.osmocom.org/#/c/6230/3/src/osmo_ms_driver/cdf.py File src/osmo_ms_driver/cdf.py: Line 29: y-axis we have the percentage (from 0.0 to 1.0) of how many > technically from 0..1 would not be a percentage as the word implies the 0.. Your point is the von Neumann statement that floating point is for people that can't move the comma/dot? But I think it is common for probability and percentage to range from 0.0 to 1.0? s/percentage/value? Better? -- To view, visit https://gerrit.osmocom.org/6230 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I9e3064f4c3c4c7af5d3491f850090516e541f4d3 Gerrit-PatchSet: 3 Gerrit-Project: osmo-gsm-tester Gerrit-Branch: master Gerrit-Owner: Holger Freyther Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Holger Freyther Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Neels Hofmeyr Gerrit-Reviewer: Pau Espin Pedrol Gerrit-Reviewer: Vadim Yanitskiy Gerrit-HasComments: Yes From gerrit-no-reply at lists.osmocom.org Mon Apr 2 14:19:06 2018 From: gerrit-no-reply at lists.osmocom.org (Vadim Yanitskiy) Date: Mon, 2 Apr 2018 14:19:06 +0000 Subject: libosmocore[master]: GSUP: add USSD encoding / decoding support In-Reply-To: References: Message-ID: Patch Set 2: > I would like to merge this once we have patches that actually use it. Sure, patches for OsmoMSC are WIP, coming soon. -- To view, visit https://gerrit.osmocom.org/7600 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Ie17a78043a35fffbdd59e80fd2b2da39cce5e532 Gerrit-PatchSet: 2 Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Owner: Vadim Yanitskiy Gerrit-Reviewer: Alexander Chemeris Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Vadim Yanitskiy Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Mon Apr 2 16:21:07 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Mon, 2 Apr 2018 16:21:07 +0000 Subject: [PATCH] osmo-ttcn3-hacks[master]: L1CTL_Types: dl_info is part of TRAFFIC_CONF, not just TRAFF... Message-ID: Review at https://gerrit.osmocom.org/7605 L1CTL_Types: dl_info is part of TRAFFIC_CONF, not just TRAFFIC_IND Change-Id: I575b981d6ea59702927bbb2a2ae24b2e8652cc5d --- M library/L1CTL_Types.ttcn 1 file changed, 2 insertions(+), 1 deletion(-) git pull ssh://gerrit.osmocom.org:29418/osmo-ttcn3-hacks refs/changes/05/7605/1 diff --git a/library/L1CTL_Types.ttcn b/library/L1CTL_Types.ttcn index d883a22..7403099 100644 --- a/library/L1CTL_Types.ttcn +++ b/library/L1CTL_Types.ttcn @@ -175,7 +175,8 @@ header.msg_type = L1CTL_RACH_CONF, header.msg_type = L1CTL_DATA_IND, header.msg_type = L1CTL_DATA_CONF, - header.msg_type = L1CTL_TRAFFIC_IND)" + header.msg_type = L1CTL_TRAFFIC_IND, + header.msg_type = L1CTL_TRAFFIC_CONF)" variant (payload) "CROSSTAG(fbsb_conf, header.msg_type = L1CTL_FBSB_CONF; ccch_mode_conf, header.msg_type = L1CTL_CCCH_MODE_CONF; tch_mode_conf, header.msg_type = L1CTL_TCH_MODE_CONF; -- To view, visit https://gerrit.osmocom.org/7605 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I575b981d6ea59702927bbb2a2ae24b2e8652cc5d Gerrit-PatchSet: 1 Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Owner: Harald Welte From gerrit-no-reply at lists.osmocom.org Mon Apr 2 16:21:08 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Mon, 2 Apr 2018 16:21:08 +0000 Subject: [PATCH] osmo-ttcn3-hacks[master]: L1CTL_PortType: Remove some logging, make it less chatty Message-ID: Review at https://gerrit.osmocom.org/7606 L1CTL_PortType: Remove some logging, make it less chatty Change-Id: I9e9160f53480713c9551a185478a6b58fa02a709 --- M library/L1CTL_PortType.ttcn 1 file changed, 0 insertions(+), 2 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-ttcn3-hacks refs/changes/06/7606/1 diff --git a/library/L1CTL_PortType.ttcn b/library/L1CTL_PortType.ttcn index 231ebe3..77b2494 100644 --- a/library/L1CTL_PortType.ttcn +++ b/library/L1CTL_PortType.ttcn @@ -25,11 +25,9 @@ var integer stream_len := lengthof(stream); var integer len; if (stream_len < 2) { - log("getMsgLen(", stream, ",", args, ")=-1"); return -1; } len := 2 + oct2int(substr(stream, 0, 2)); - log("getMsgLen(", stream, ",", args, ")=", len); return len; } -- To view, visit https://gerrit.osmocom.org/7606 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I9e9160f53480713c9551a185478a6b58fa02a709 Gerrit-PatchSet: 1 Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Owner: Harald Welte From gerrit-no-reply at lists.osmocom.org Mon Apr 2 16:21:08 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Mon, 2 Apr 2018 16:21:08 +0000 Subject: [PATCH] osmo-ttcn3-hacks[master]: RTP_Emulation: Fix RTCP handling Message-ID: Review at https://gerrit.osmocom.org/7607 RTP_Emulation: Fix RTCP handling Change-Id: I58e1d993921fadc457d7cd0348d4c9c2171b5748 --- M library/RTP_Emulation.ttcn 1 file changed, 2 insertions(+), 2 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-ttcn3-hacks refs/changes/07/7607/1 diff --git a/library/RTP_Emulation.ttcn b/library/RTP_Emulation.ttcn index 0bf5cbd..a3a0509 100644 --- a/library/RTP_Emulation.ttcn +++ b/library/RTP_Emulation.ttcn @@ -266,7 +266,7 @@ g_local_port, {udp:={}}); g_rtp_conn_id := res.connId; tr_rtp.connId := g_rtp_conn_id; - res := RTP_CodecPort_CtrlFunct.f_IPL4_listen(RTP, g_local_host, + res := RTP_CodecPort_CtrlFunct.f_IPL4_listen(RTCP, g_local_host, g_local_port+1, {udp:={}}); g_rtcp_conn_id := res.connId; tr_rtcp.connId := g_rtcp_conn_id; @@ -339,7 +339,7 @@ [g_rx_enabled==false] RTP.receive(tr_rtp) { g_stats_rtp.num_pkts_rx_err_disabled := g_stats_rtp.num_pkts_rx_err_disabled+1; } - [g_rx_enabled==false] RTCP.receive(tr_rtp) { + [g_rx_enabled==false] RTCP.receive(tr_rtcp) { g_stats_rtcp.num_pkts_rx_err_disabled := g_stats_rtcp.num_pkts_rx_err_disabled+1; } -- To view, visit https://gerrit.osmocom.org/7607 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I58e1d993921fadc457d7cd0348d4c9c2171b5748 Gerrit-PatchSet: 1 Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Owner: Harald Welte From gerrit-no-reply at lists.osmocom.org Mon Apr 2 16:21:08 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Mon, 2 Apr 2018 16:21:08 +0000 Subject: [PATCH] osmo-ttcn3-hacks[master]: bts: new f_rsl_transceive_ret(): like f_rsl_transceive() wit... Message-ID: Review at https://gerrit.osmocom.org/7608 bts: new f_rsl_transceive_ret(): like f_rsl_transceive() with return value Change-Id: I0cdc6b87566b9d101ecb12a77eac18a50689e088 --- M bts/BTS_Tests.ttcn 1 file changed, 13 insertions(+), 4 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-ttcn3-hacks refs/changes/08/7608/1 diff --git a/bts/BTS_Tests.ttcn b/bts/BTS_Tests.ttcn index ecb5497..b68e99b 100644 --- a/bts/BTS_Tests.ttcn +++ b/bts/BTS_Tests.ttcn @@ -393,14 +393,15 @@ fn.apply(id); } -function f_rsl_transceive(template RSL_Message tx, template RSL_Message exp_rx, charstring id, - boolean ignore_other := false) -runs on ConnHdlr { +function f_rsl_transceive_ret(template RSL_Message tx, template RSL_Message exp_rx, charstring id, + boolean ignore_other := false) +runs on ConnHdlr return RSL_Message { + var RSL_Message rx; timer T := 3.0; RSL.send(tx); T.start; alt { - [] RSL.receive(exp_rx) { + [] RSL.receive(exp_rx) -> value rx { T.stop; setverdict(pass); } @@ -413,9 +414,17 @@ [not ignore_other] as_l1_dcch(); [not ignore_other] RSL.receive { setverdict(fail, "Unexpected RSL message received"); + self.stop; } [ignore_other] RSL.receive { repeat; } } + return rx; +} + +function f_rsl_transceive(template RSL_Message tx, template RSL_Message exp_rx, charstring id, + boolean ignore_other := false) +runs on ConnHdlr { + var RSL_Message rx := f_rsl_transceive_ret(tx, exp_rx, id, ignore_other); } function f_rsl_chan_act(RSL_IE_ChannelMode mode) runs on ConnHdlr { -- To view, visit https://gerrit.osmocom.org/7608 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I0cdc6b87566b9d101ecb12a77eac18a50689e088 Gerrit-PatchSet: 1 Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Owner: Harald Welte From gerrit-no-reply at lists.osmocom.org Mon Apr 2 19:00:26 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Mon, 2 Apr 2018 19:00:26 +0000 Subject: osmo-ttcn3-hacks[master]: L1CTL_Types: dl_info is part of TRAFFIC_CONF, not just TRAFF... In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7605 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I575b981d6ea59702927bbb2a2ae24b2e8652cc5d Gerrit-PatchSet: 1 Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Owner: Harald Welte Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Mon Apr 2 19:00:52 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Mon, 2 Apr 2018 19:00:52 +0000 Subject: osmo-ttcn3-hacks[master]: L1CTL_PortType: Remove some logging, make it less chatty In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7606 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I9e9160f53480713c9551a185478a6b58fa02a709 Gerrit-PatchSet: 1 Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Owner: Harald Welte Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Mon Apr 2 19:01:06 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Mon, 2 Apr 2018 19:01:06 +0000 Subject: osmo-ttcn3-hacks[master]: RTP_Emulation: Fix RTCP handling In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7607 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I58e1d993921fadc457d7cd0348d4c9c2171b5748 Gerrit-PatchSet: 1 Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Owner: Harald Welte Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Mon Apr 2 19:01:21 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Mon, 2 Apr 2018 19:01:21 +0000 Subject: osmo-ttcn3-hacks[master]: bts: new f_rsl_transceive_ret(): like f_rsl_transceive() wit... In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7608 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I0cdc6b87566b9d101ecb12a77eac18a50689e088 Gerrit-PatchSet: 1 Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Owner: Harald Welte Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Mon Apr 2 19:01:24 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Mon, 2 Apr 2018 19:01:24 +0000 Subject: [MERGED] osmo-ttcn3-hacks[master]: bts: new f_rsl_transceive_ret(): like f_rsl_transceive() wit... In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: bts: new f_rsl_transceive_ret(): like f_rsl_transceive() with return value ...................................................................... bts: new f_rsl_transceive_ret(): like f_rsl_transceive() with return value Change-Id: I0cdc6b87566b9d101ecb12a77eac18a50689e088 --- M bts/BTS_Tests.ttcn 1 file changed, 13 insertions(+), 4 deletions(-) Approvals: Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/bts/BTS_Tests.ttcn b/bts/BTS_Tests.ttcn index ecb5497..b68e99b 100644 --- a/bts/BTS_Tests.ttcn +++ b/bts/BTS_Tests.ttcn @@ -393,14 +393,15 @@ fn.apply(id); } -function f_rsl_transceive(template RSL_Message tx, template RSL_Message exp_rx, charstring id, - boolean ignore_other := false) -runs on ConnHdlr { +function f_rsl_transceive_ret(template RSL_Message tx, template RSL_Message exp_rx, charstring id, + boolean ignore_other := false) +runs on ConnHdlr return RSL_Message { + var RSL_Message rx; timer T := 3.0; RSL.send(tx); T.start; alt { - [] RSL.receive(exp_rx) { + [] RSL.receive(exp_rx) -> value rx { T.stop; setverdict(pass); } @@ -413,9 +414,17 @@ [not ignore_other] as_l1_dcch(); [not ignore_other] RSL.receive { setverdict(fail, "Unexpected RSL message received"); + self.stop; } [ignore_other] RSL.receive { repeat; } } + return rx; +} + +function f_rsl_transceive(template RSL_Message tx, template RSL_Message exp_rx, charstring id, + boolean ignore_other := false) +runs on ConnHdlr { + var RSL_Message rx := f_rsl_transceive_ret(tx, exp_rx, id, ignore_other); } function f_rsl_chan_act(RSL_IE_ChannelMode mode) runs on ConnHdlr { -- To view, visit https://gerrit.osmocom.org/7608 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: I0cdc6b87566b9d101ecb12a77eac18a50689e088 Gerrit-PatchSet: 1 Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Owner: Harald Welte Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder From gerrit-no-reply at lists.osmocom.org Mon Apr 2 19:01:25 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Mon, 2 Apr 2018 19:01:25 +0000 Subject: [MERGED] osmo-ttcn3-hacks[master]: RTP_Emulation: Fix RTCP handling In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: RTP_Emulation: Fix RTCP handling ...................................................................... RTP_Emulation: Fix RTCP handling Change-Id: I58e1d993921fadc457d7cd0348d4c9c2171b5748 --- M library/RTP_Emulation.ttcn 1 file changed, 2 insertions(+), 2 deletions(-) Approvals: Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/library/RTP_Emulation.ttcn b/library/RTP_Emulation.ttcn index 0bf5cbd..a3a0509 100644 --- a/library/RTP_Emulation.ttcn +++ b/library/RTP_Emulation.ttcn @@ -266,7 +266,7 @@ g_local_port, {udp:={}}); g_rtp_conn_id := res.connId; tr_rtp.connId := g_rtp_conn_id; - res := RTP_CodecPort_CtrlFunct.f_IPL4_listen(RTP, g_local_host, + res := RTP_CodecPort_CtrlFunct.f_IPL4_listen(RTCP, g_local_host, g_local_port+1, {udp:={}}); g_rtcp_conn_id := res.connId; tr_rtcp.connId := g_rtcp_conn_id; @@ -339,7 +339,7 @@ [g_rx_enabled==false] RTP.receive(tr_rtp) { g_stats_rtp.num_pkts_rx_err_disabled := g_stats_rtp.num_pkts_rx_err_disabled+1; } - [g_rx_enabled==false] RTCP.receive(tr_rtp) { + [g_rx_enabled==false] RTCP.receive(tr_rtcp) { g_stats_rtcp.num_pkts_rx_err_disabled := g_stats_rtcp.num_pkts_rx_err_disabled+1; } -- To view, visit https://gerrit.osmocom.org/7607 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: I58e1d993921fadc457d7cd0348d4c9c2171b5748 Gerrit-PatchSet: 1 Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Owner: Harald Welte Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder From gerrit-no-reply at lists.osmocom.org Mon Apr 2 19:01:25 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Mon, 2 Apr 2018 19:01:25 +0000 Subject: [MERGED] osmo-ttcn3-hacks[master]: L1CTL_PortType: Remove some logging, make it less chatty In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: L1CTL_PortType: Remove some logging, make it less chatty ...................................................................... L1CTL_PortType: Remove some logging, make it less chatty Change-Id: I9e9160f53480713c9551a185478a6b58fa02a709 --- M library/L1CTL_PortType.ttcn 1 file changed, 0 insertions(+), 2 deletions(-) Approvals: Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/library/L1CTL_PortType.ttcn b/library/L1CTL_PortType.ttcn index 231ebe3..77b2494 100644 --- a/library/L1CTL_PortType.ttcn +++ b/library/L1CTL_PortType.ttcn @@ -25,11 +25,9 @@ var integer stream_len := lengthof(stream); var integer len; if (stream_len < 2) { - log("getMsgLen(", stream, ",", args, ")=-1"); return -1; } len := 2 + oct2int(substr(stream, 0, 2)); - log("getMsgLen(", stream, ",", args, ")=", len); return len; } -- To view, visit https://gerrit.osmocom.org/7606 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: I9e9160f53480713c9551a185478a6b58fa02a709 Gerrit-PatchSet: 1 Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Owner: Harald Welte Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder From gerrit-no-reply at lists.osmocom.org Mon Apr 2 19:01:25 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Mon, 2 Apr 2018 19:01:25 +0000 Subject: [MERGED] osmo-ttcn3-hacks[master]: L1CTL_Types: dl_info is part of TRAFFIC_CONF, not just TRAFF... In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: L1CTL_Types: dl_info is part of TRAFFIC_CONF, not just TRAFFIC_IND ...................................................................... L1CTL_Types: dl_info is part of TRAFFIC_CONF, not just TRAFFIC_IND Change-Id: I575b981d6ea59702927bbb2a2ae24b2e8652cc5d --- M library/L1CTL_Types.ttcn 1 file changed, 2 insertions(+), 1 deletion(-) Approvals: Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/library/L1CTL_Types.ttcn b/library/L1CTL_Types.ttcn index d883a22..7403099 100644 --- a/library/L1CTL_Types.ttcn +++ b/library/L1CTL_Types.ttcn @@ -175,7 +175,8 @@ header.msg_type = L1CTL_RACH_CONF, header.msg_type = L1CTL_DATA_IND, header.msg_type = L1CTL_DATA_CONF, - header.msg_type = L1CTL_TRAFFIC_IND)" + header.msg_type = L1CTL_TRAFFIC_IND, + header.msg_type = L1CTL_TRAFFIC_CONF)" variant (payload) "CROSSTAG(fbsb_conf, header.msg_type = L1CTL_FBSB_CONF; ccch_mode_conf, header.msg_type = L1CTL_CCCH_MODE_CONF; tch_mode_conf, header.msg_type = L1CTL_TCH_MODE_CONF; -- To view, visit https://gerrit.osmocom.org/7605 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: I575b981d6ea59702927bbb2a2ae24b2e8652cc5d Gerrit-PatchSet: 1 Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Owner: Harald Welte Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder From gerrit-no-reply at lists.osmocom.org Mon Apr 2 19:28:17 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Mon, 2 Apr 2018 19:28:17 +0000 Subject: osmo-ci[master]: jobs/master: optimize trigger chain In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7580 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Iea2cf25b3872045778f11a985a1c417f37067cd9 Gerrit-PatchSet: 1 Gerrit-Project: osmo-ci Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr Gerrit-Reviewer: Harald Welte Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Mon Apr 2 19:28:57 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Mon, 2 Apr 2018 19:28:57 +0000 Subject: osmo-ci[master]: scripts: osmo-deps.sh: Allow building against tags In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7589 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Ica50080c8b3e20686fe6f47a2b61718ef4a66d95 Gerrit-PatchSet: 1 Gerrit-Project: osmo-ci Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Harald Welte Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Mon Apr 2 19:29:36 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Mon, 2 Apr 2018 19:29:36 +0000 Subject: osmo-hlr[master]: more robust usage of osmo_timer API for osmo-hlr luop timer In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7587 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I1a7596675b2d94217895f0f3d3f67b86ef123c2e Gerrit-PatchSet: 1 Gerrit-Project: osmo-hlr Gerrit-Branch: master Gerrit-Owner: Stefan Sperling Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Mon Apr 2 19:30:53 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Mon, 2 Apr 2018 19:30:53 +0000 Subject: openbsc[master]: Migrate from OpenSSL to osmo_get_rand_id() In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7588 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I81ebd55c7c90a436c5f2090e6790d78b773d2c92 Gerrit-PatchSet: 1 Gerrit-Project: openbsc Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Vadim Yanitskiy Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Mon Apr 2 19:30:58 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Mon, 2 Apr 2018 19:30:58 +0000 Subject: [MERGED] openbsc[master]: Migrate from OpenSSL to osmo_get_rand_id() In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: Migrate from OpenSSL to osmo_get_rand_id() ...................................................................... Migrate from OpenSSL to osmo_get_rand_id() Drop OpenSSL/libcrypto dependency, use osmo_get_rand_id() instead. Backport osmo-msc 753c15de2f00e24f76ac9b01a20e1e2ff0f86ce2 = I71cd631704a4dc155c6c752fee2a42cd6e2fa336 " Migrate from OpenSSL to osmo_get_rand_id() This avoids potential licensing incompatibility and makes integration of Debian packaging patches easier. " Apply similar changes in bsc-nat, mm_auth_test etc. Tested manually with osmo-nitb and sysmoBTS, and verified that Authentication Requests send heterogenous RAND tokens. Related: OS#1694 Change-Id: I81ebd55c7c90a436c5f2090e6790d78b773d2c92 --- M debian/control M openbsc/configure.ac M openbsc/src/libmsc/Makefile.am M openbsc/src/libmsc/auth.c M openbsc/src/libmsc/db.c M openbsc/src/osmo-bsc_nat/bsc_nat.c M openbsc/tests/db/Makefile.am M openbsc/tests/mm_auth/mm_auth_test.c 8 files changed, 13 insertions(+), 19 deletions(-) Approvals: Vadim Yanitskiy: Looks good to me, but someone else must approve Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/debian/control b/debian/control index e31d0c4..76b7d2a 100644 --- a/debian/control +++ b/debian/control @@ -14,7 +14,6 @@ libosmo-netif-dev, libdbd-sqlite3, libpcap-dev, - libssl-dev, libsmpp34-dev Standards-Version: 3.9.8 Vcs-Git: git://bs11-abis.gnumonks.org/openbsc.git diff --git a/openbsc/configure.ac b/openbsc/configure.ac index a0df05f..7183fda 100644 --- a/openbsc/configure.ac +++ b/openbsc/configure.ac @@ -46,7 +46,6 @@ PKG_CHECK_MODULES(LIBOSMOABIS, libosmoabis >= 0.2.0) PKG_CHECK_MODULES(LIBOSMOGB, libosmogb >= 0.6.4) PKG_CHECK_MODULES(LIBOSMONETIF, libosmo-netif >= 0.0.1) -PKG_CHECK_MODULES(LIBCRYPTO, libcrypto >= 0.9.5) # Enabke/disable the NAT? AC_ARG_ENABLE([nat], [AS_HELP_STRING([--enable-nat], [Build the BSC NAT. Requires SCCP])], diff --git a/openbsc/src/libmsc/Makefile.am b/openbsc/src/libmsc/Makefile.am index c219a35..f746f82 100644 --- a/openbsc/src/libmsc/Makefile.am +++ b/openbsc/src/libmsc/Makefile.am @@ -10,7 +10,6 @@ $(LIBOSMOVTY_CFLAGS) \ $(LIBOSMOABIS_CFLAGS) \ $(COVERAGE_CFLAGS) \ - $(LIBCRYPTO_CFLAGS) \ $(LIBSMPP34_CFLAGS) \ $(NULL) diff --git a/openbsc/src/libmsc/auth.c b/openbsc/src/libmsc/auth.c index 8c8af11..85477a3 100644 --- a/openbsc/src/libmsc/auth.c +++ b/openbsc/src/libmsc/auth.c @@ -29,8 +29,6 @@ #include #include -#include - #include const struct value_string auth_action_names[] = { @@ -141,8 +139,10 @@ } atuple->use_count = 1; - if (RAND_bytes(atuple->vec.rand, sizeof(atuple->vec.rand)) != 1) { - LOGP(DMM, LOGL_NOTICE, "RAND_bytes failed, can't generate new auth tuple\n"); + rc = osmo_get_rand_id(atuple->vec.rand, sizeof(atuple->vec.rand)); + if (rc < 0) { + LOGP(DMM, LOGL_NOTICE, "osmo_get_rand_id failed, can't generate new auth tuple: %s\n", + strerror(-rc)); return AUTH_ERROR; } diff --git a/openbsc/src/libmsc/db.c b/openbsc/src/libmsc/db.c index 15e7fd4..0b61b4f 100644 --- a/openbsc/src/libmsc/db.c +++ b/openbsc/src/libmsc/db.c @@ -41,8 +41,6 @@ #include #include -#include - /* Semi-Private-Interface (SPI) for the subscriber code */ void subscr_direct_free(struct gsm_subscriber *subscr); @@ -1378,8 +1376,9 @@ char *tmsi_quoted; for (;;) { - if (RAND_bytes((uint8_t *) &subscriber->tmsi, sizeof(subscriber->tmsi)) != 1) { - LOGP(DDB, LOGL_ERROR, "RAND_bytes failed\n"); + int rc = osmo_get_rand_id((uint8_t *) &subscriber->tmsi, sizeof(subscriber->tmsi)); + if (rc < 0) { + LOGP(DDB, LOGL_ERROR, "osmo_get_rand_id() failed: %s\n", strerror(-rc)); return 1; } if (subscriber->tmsi == GSM_RESERVED_TMSI) @@ -1458,8 +1457,9 @@ uint32_t try; for (;;) { - if (RAND_bytes((uint8_t *) &try, sizeof(try)) != 1) { - LOGP(DDB, LOGL_ERROR, "RAND_bytes failed\n"); + int rc = osmo_get_rand_id((uint8_t *) &try, sizeof(try)); + if (rc < 0) { + LOGP(DDB, LOGL_ERROR, "osmo_get_rand_id() failed: %s\n", strerror(-rc)); return 1; } if (!try) /* 0 is an invalid token */ diff --git a/openbsc/src/osmo-bsc_nat/bsc_nat.c b/openbsc/src/osmo-bsc_nat/bsc_nat.c index daa066d..f83abe1 100644 --- a/openbsc/src/osmo-bsc_nat/bsc_nat.c +++ b/openbsc/src/osmo-bsc_nat/bsc_nat.c @@ -74,8 +74,6 @@ #include -#include - #include "../../bscconfig.h" #define SCCP_CLOSE_TIME 20 @@ -221,7 +219,7 @@ buf = v_put(buf, 0x23); mrand = bsc->last_rand; - if (RAND_bytes(mrand, 16) != 1) + if (osmo_get_rand_id(mrand, 16) < 0) goto failed_random; memcpy(buf, mrand, 16); @@ -232,7 +230,7 @@ failed_random: /* the timeout will trigger and close this connection */ - LOGP(DNAT, LOGL_ERROR, "Failed to read from urandom.\n"); + LOGP(DNAT, LOGL_ERROR, "osmo_get_rand_id() failed.\n"); return; } diff --git a/openbsc/tests/db/Makefile.am b/openbsc/tests/db/Makefile.am index 0eed5cd..7099645 100644 --- a/openbsc/tests/db/Makefile.am +++ b/openbsc/tests/db/Makefile.am @@ -43,6 +43,5 @@ $(LIBOSMOGSM_LIBS) \ $(LIBSMPP34_LIBS) \ $(LIBOSMOVTY_LIBS) \ - $(LIBCRYPTO_LIBS) \ -ldbi \ $(NULL) diff --git a/openbsc/tests/mm_auth/mm_auth_test.c b/openbsc/tests/mm_auth/mm_auth_test.c index b8777a8..ebd122f 100644 --- a/openbsc/tests/mm_auth/mm_auth_test.c +++ b/openbsc/tests/mm_auth/mm_auth_test.c @@ -121,7 +121,7 @@ } /* override libssl RAND_bytes() to get testable crypto results */ -int RAND_bytes(uint8_t *rand, int len) +int osmo_get_rand_id(uint8_t *rand, size_t len) { memset(rand, 23, len); return 1; -- To view, visit https://gerrit.osmocom.org/7588 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: I81ebd55c7c90a436c5f2090e6790d78b773d2c92 Gerrit-PatchSet: 1 Gerrit-Project: openbsc Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Vadim Yanitskiy From gerrit-no-reply at lists.osmocom.org Mon Apr 2 19:31:34 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Mon, 2 Apr 2018 19:31:34 +0000 Subject: osmo-bsc[master]: ctx cleanup: use non-NULL talloc ctx for osmo_init_logging2() In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7565 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I970c6f8a0e36a8b63e42349dbc92baff649e5cef Gerrit-PatchSet: 1 Gerrit-Project: osmo-bsc Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Mon Apr 2 19:31:40 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Mon, 2 Apr 2018 19:31:40 +0000 Subject: [MERGED] osmo-bsc[master]: ctx cleanup: use non-NULL talloc ctx for osmo_init_logging2() In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: ctx cleanup: use non-NULL talloc ctx for osmo_init_logging2() ...................................................................... ctx cleanup: use non-NULL talloc ctx for osmo_init_logging2() Fix various sanitizer complaints about memory leaks using a sanitizer build with gcc (Debian 7.3.0-12) 7.3.0. Also fix deprecation warnings on osmo_init_logging(). Depends: I216837780e9405fdaec8059c63d10699c695b360 (libosmocore) Change-Id: I970c6f8a0e36a8b63e42349dbc92baff649e5cef --- M src/ipaccess/ipaccess-config.c M src/ipaccess/ipaccess-proxy.c M src/osmo-bsc/osmo_bsc_main.c M src/utils/bs11_config.c M tests/abis/abis_test.c M tests/bsc/bsc_test.c M tests/channel/channel_test.c M tests/gsm0408/gsm0408_test.c M tests/handover/handover_test.c M tests/nanobts_omlattr/nanobts_omlattr_test.c M tests/subscr/bsc_subscr_test.c 11 files changed, 41 insertions(+), 19 deletions(-) Approvals: Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/src/ipaccess/ipaccess-config.c b/src/ipaccess/ipaccess-config.c index 45cab8f..2236063 100644 --- a/src/ipaccess/ipaccess-config.c +++ b/src/ipaccess/ipaccess-config.c @@ -900,7 +900,7 @@ tall_ctx_config = talloc_named_const(NULL, 0, "ipaccess-config"); msgb_talloc_ctx_init(tall_ctx_config, 0); - osmo_init_logging(&log_info); + osmo_init_logging2(tall_ctx_config, &log_info); bts_model_nanobts_init(); printf("ipaccess-config (C) 2009-2010 by Harald Welte and others\n"); diff --git a/src/ipaccess/ipaccess-proxy.c b/src/ipaccess/ipaccess-proxy.c index 6a3af28..aa5e7b4 100644 --- a/src/ipaccess/ipaccess-proxy.c +++ b/src/ipaccess/ipaccess-proxy.c @@ -1228,7 +1228,7 @@ tall_bsc_ctx = talloc_named_const(NULL, 1, "ipaccess-proxy"); msgb_talloc_ctx_init(tall_bsc_ctx, 0); - osmo_init_logging(&log_info); + osmo_init_logging2(tall_bsc_ctx, &log_info); log_parse_category_mask(osmo_stderr_target, "DLINP:DLMI"); handle_options(argc, argv); diff --git a/src/osmo-bsc/osmo_bsc_main.c b/src/osmo-bsc/osmo_bsc_main.c index 27c5640..89d0d02 100644 --- a/src/osmo-bsc/osmo_bsc_main.c +++ b/src/osmo-bsc/osmo_bsc_main.c @@ -414,7 +414,7 @@ tall_tqe_ctx = talloc_named_const(tall_bsc_ctx, 0, "subch_txq_entry"); tall_ctr_ctx = talloc_named_const(tall_bsc_ctx, 0, "counter"); - osmo_init_logging(&log_info); + osmo_init_logging2(tall_bsc_ctx, &log_info); osmo_stats_init(tall_bsc_ctx); /* Allocate global gsm_network struct */ diff --git a/src/utils/bs11_config.c b/src/utils/bs11_config.c index e7c8336..8d4de01 100644 --- a/src/utils/bs11_config.c +++ b/src/utils/bs11_config.c @@ -911,7 +911,7 @@ tall_fle_ctx = talloc_named_const(tall_bs11cfg_ctx, 0, "bs11_file_list_entry"); msgb_talloc_ctx_init(tall_bs11cfg_ctx, 0); - osmo_init_logging(&log_info); + osmo_init_logging2(tall_bs11cfg_ctx, &log_info); handle_options(argc, argv); bts_model_bs11_init(); diff --git a/tests/abis/abis_test.c b/tests/abis/abis_test.c index 7deb0f0..faf9ea5 100644 --- a/tests/abis/abis_test.c +++ b/tests/abis/abis_test.c @@ -175,7 +175,7 @@ int main(int argc, char **argv) { - osmo_init_logging(&log_info); + osmo_init_logging2(NULL, &log_info); test_sw_selection(); test_abis_nm_ipaccess_cgi(); diff --git a/tests/bsc/bsc_test.c b/tests/bsc/bsc_test.c index 744b9e1..106b08b 100644 --- a/tests/bsc/bsc_test.c +++ b/tests/bsc/bsc_test.c @@ -39,6 +39,8 @@ #include #include +void *ctx = NULL; + enum test { TEST_SCAN_TO_BTS, TEST_SCAN_TO_MSC, @@ -122,7 +124,7 @@ { int i; - struct gsm_network *net = bsc_network_init(NULL); + struct gsm_network *net = bsc_network_init(ctx); struct gsm_bts *bts = gsm_bts_alloc(net, 0); struct bsc_msc_data *msc; struct gsm_subscriber_connection *conn; @@ -227,12 +229,14 @@ int main(int argc, char **argv) { - msgb_talloc_ctx_init(NULL, 0); - osmo_init_logging(&log_info); + ctx = talloc_named_const(NULL, 0, "bsc-test"); + msgb_talloc_ctx_init(ctx, 0); + osmo_init_logging2(ctx, &log_info); test_scan(); printf("Testing execution completed.\n"); + talloc_free(ctx); return 0; } diff --git a/tests/channel/channel_test.c b/tests/channel/channel_test.c index 78db1d4..e8f6cd9 100644 --- a/tests/channel/channel_test.c +++ b/tests/channel/channel_test.c @@ -98,7 +98,7 @@ int main(int argc, char **argv) { - osmo_init_logging(&log_info); + osmo_init_logging2(NULL, &log_info); test_dyn_ts_subslots(); test_bts_debug_print(); diff --git a/tests/gsm0408/gsm0408_test.c b/tests/gsm0408/gsm0408_test.c index 67840f0..a934806 100644 --- a/tests/gsm0408/gsm0408_test.c +++ b/tests/gsm0408/gsm0408_test.c @@ -812,7 +812,9 @@ { struct gsm_network *net; - osmo_init_logging(&log_info); + tall_bsc_ctx = talloc_named_const(NULL, 0, "gsm0408_test"); + + osmo_init_logging2(tall_bsc_ctx, &log_info); log_set_log_level(osmo_stderr_target, LOGL_INFO); net = bsc_network_init(tall_bsc_ctx); diff --git a/tests/handover/handover_test.c b/tests/handover/handover_test.c index 280861c..ab32a29 100644 --- a/tests/handover/handover_test.c +++ b/tests/handover/handover_test.c @@ -43,6 +43,8 @@ #include #include +void *ctx; + struct gsm_network *bsc_gsmnet; /* override, requires '-Wl,--wrap=mgcp_conn_modify'. @@ -213,7 +215,7 @@ bts->codec.hr = 1; bts->codec.amr = 1; - rsl_link = talloc_zero(0, struct e1inp_sign_link); + rsl_link = talloc_zero(ctx, struct e1inp_sign_link); rsl_link->trx = bts->c0; bts->c0->rsl_link = rsl_link; @@ -1350,6 +1352,9 @@ int test_case_i; int last_test_i; + ctx = talloc_named_const(NULL, 0, "handover_test"); + msgb_talloc_ctx_init(ctx, 0); + test_case_i = argc > 1? atoi(argv[1]) : -1; last_test_i = ARRAY_SIZE(test_cases) - 1; @@ -1362,14 +1367,14 @@ return EXIT_FAILURE; } - osmo_init_logging(&log_info); + osmo_init_logging2(ctx, &log_info); log_set_print_category(osmo_stderr_target, 1); log_set_print_category_hex(osmo_stderr_target, 0); log_set_print_filename2(osmo_stderr_target, LOG_FILENAME_BASENAME); /* Create a dummy network */ - bsc_gsmnet = bsc_network_init(NULL); + bsc_gsmnet = bsc_network_init(ctx); if (!bsc_gsmnet) exit(1); @@ -1676,6 +1681,7 @@ fprintf(stderr, "--------------------\n"); + talloc_free(ctx); return EXIT_SUCCESS; } diff --git a/tests/nanobts_omlattr/nanobts_omlattr_test.c b/tests/nanobts_omlattr/nanobts_omlattr_test.c index 663594c..8e8626d 100644 --- a/tests/nanobts_omlattr/nanobts_omlattr_test.c +++ b/tests/nanobts_omlattr/nanobts_omlattr_test.c @@ -199,10 +199,10 @@ struct gsm_network *net; struct gsm_bts_trx *trx; - osmo_init_logging(&log_info); - log_set_log_level(osmo_stderr_target, LOGL_INFO); - ctx = talloc_named_const(NULL, 0, "ctx"); + + osmo_init_logging2(ctx, &log_info); + log_set_log_level(osmo_stderr_target, LOGL_INFO); /* Allocate environmental structs (bts, net, trx) */ net = talloc_zero(ctx, struct gsm_network); @@ -282,7 +282,16 @@ talloc_free(net); talloc_free(trx); talloc_report_full(ctx, stderr); - OSMO_ASSERT(talloc_total_blocks(ctx) == 1); + /* Expecting something like: + * full talloc report on 'ctx' (total 813 bytes in 6 blocks) + * logging contains 813 bytes in 5 blocks (ref 0) 0x60b0000000a0 + * struct log_target contains 196 bytes in 2 blocks (ref 0) 0x6110000000a0 + * struct log_category contains 36 bytes in 1 blocks (ref 0) 0x60d0000003e0 + * struct log_info contains 616 bytes in 2 blocks (ref 0) 0x60d000000310 + * struct log_info_cat contains 576 bytes in 1 blocks (ref 0) 0x6170000000e0 + * That's the root ctx + 5x logging: */ + OSMO_ASSERT(talloc_total_blocks(ctx) == 6); + talloc_free(ctx); return 0; } diff --git a/tests/subscr/bsc_subscr_test.c b/tests/subscr/bsc_subscr_test.c index d15c114..3c94b86 100644 --- a/tests/subscr/bsc_subscr_test.c +++ b/tests/subscr/bsc_subscr_test.c @@ -125,14 +125,15 @@ int main() { + void *ctx = talloc_named_const(NULL, 0, "bsc_subscr_test"); printf("Testing BSC subscriber core code.\n"); - osmo_init_logging(&log_info); + osmo_init_logging2(ctx, &log_info); log_set_print_filename(osmo_stderr_target, 0); log_set_print_timestamp(osmo_stderr_target, 0); log_set_use_color(osmo_stderr_target, 0); log_set_print_category(osmo_stderr_target, 1); - bsc_subscribers = talloc_zero(NULL, struct llist_head); + bsc_subscribers = talloc_zero(ctx, struct llist_head); INIT_LLIST_HEAD(bsc_subscribers); test_bsc_subscr(); -- To view, visit https://gerrit.osmocom.org/7565 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: I970c6f8a0e36a8b63e42349dbc92baff649e5cef Gerrit-PatchSet: 1 Gerrit-Project: osmo-bsc Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder From gerrit-no-reply at lists.osmocom.org Mon Apr 2 19:33:04 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Mon, 2 Apr 2018 19:33:04 +0000 Subject: osmo-bsc[master]: cosmetic: Add fixme note for OS#3112 In-Reply-To: References: Message-ID: Patch Set 2: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7507 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I0c3ffb567aff08014f8fb96928077afb8c2f229c Gerrit-PatchSet: 2 Gerrit-Project: osmo-bsc Gerrit-Branch: master Gerrit-Owner: dexter Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Mon Apr 2 19:33:11 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Mon, 2 Apr 2018 19:33:11 +0000 Subject: [MERGED] osmo-bsc[master]: cosmetic: Add fixme note for OS#3112 In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: cosmetic: Add fixme note for OS#3112 ...................................................................... cosmetic: Add fixme note for OS#3112 Change-Id: I0c3ffb567aff08014f8fb96928077afb8c2f229c --- M src/osmo-bsc/osmo_bsc_msc.c 1 file changed, 5 insertions(+), 0 deletions(-) Approvals: Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/src/osmo-bsc/osmo_bsc_msc.c b/src/osmo-bsc/osmo_bsc_msc.c index 2178d1d..e9309ea 100644 --- a/src/osmo-bsc/osmo_bsc_msc.c +++ b/src/osmo-bsc/osmo_bsc_msc.c @@ -48,6 +48,11 @@ return -1; } + /* FIXME: This is a leftover from the old architecture that used + * sccp-lite with osmocom specific authentication. Since we now + * changed to AoIP the connected status and the authentication + * status is managed differently. However osmo_bsc_filter.c still + * needs the flags to be set to one. See also: OS#3112 */ data->msc_con->is_connected = 1; data->msc_con->is_authenticated = 1; -- To view, visit https://gerrit.osmocom.org/7507 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: I0c3ffb567aff08014f8fb96928077afb8c2f229c Gerrit-PatchSet: 3 Gerrit-Project: osmo-bsc Gerrit-Branch: master Gerrit-Owner: dexter Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder From gerrit-no-reply at lists.osmocom.org Mon Apr 2 19:33:11 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Mon, 2 Apr 2018 19:33:11 +0000 Subject: [MERGED] osmo-bsc[master]: cosmetic: remove dead code In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: cosmetic: remove dead code ...................................................................... cosmetic: remove dead code There is a lot of dead code in osmo_bsc_msc.c that used to handle the IPA multiplexed SSCP lite A interface. - remove portions of the dead code - remove IPA Ping related VTY commands Change-Id: I5cf3fec31cc774c902f3cfe6d16fb85ef301694a --- M doc/examples/osmo-bsc/osmo-bsc.cfg M include/osmocom/bsc/bsc_msc_data.h M src/osmo-bsc/osmo_bsc_api.c M src/osmo-bsc/osmo_bsc_msc.c M src/osmo-bsc/osmo_bsc_vty.c M tests/vty_test_runner.py 6 files changed, 0 insertions(+), 634 deletions(-) Approvals: Neels Hofmeyr: Looks good to me, approved Jenkins Builder: Verified diff --git a/doc/examples/osmo-bsc/osmo-bsc.cfg b/doc/examples/osmo-bsc/osmo-bsc.cfg index 2d759ca..2a41d84 100644 --- a/doc/examples/osmo-bsc/osmo-bsc.cfg +++ b/doc/examples/osmo-bsc/osmo-bsc.cfg @@ -78,10 +78,6 @@ phys_chan_config TCH/F hopping enabled 0 msc 0 - ip.access rtp-base 4000 - timeout-ping 20 - timeout-pong 5 - no timeout-ping advanced no bsc-welcome-text no bsc-msc-lost-text no bsc-grace-text diff --git a/include/osmocom/bsc/bsc_msc_data.h b/include/osmocom/bsc/bsc_msc_data.h index a04e632..bedf412 100644 --- a/include/osmocom/bsc/bsc_msc_data.h +++ b/include/osmocom/bsc/bsc_msc_data.h @@ -73,11 +73,6 @@ /* Connection data */ - int ping_timeout; - int pong_timeout; - struct osmo_timer_list ping_timer; - struct osmo_timer_list pong_timer; - int advanced_ping; struct bsc_msc_connection *msc_con; struct osmo_plmn_id core_plmn; int core_lac; @@ -158,8 +153,6 @@ int osmo_bsc_msc_init(struct bsc_msc_data *msc); int osmo_bsc_sccp_init(struct gsm_network *gsmnet); -int msc_queue_write(struct bsc_msc_connection *conn, struct msgb *msg, int proto); -int msc_queue_write_with_ping(struct bsc_msc_connection *, struct msgb *msg, int proto); int osmo_bsc_audio_init(struct gsm_network *network); diff --git a/src/osmo-bsc/osmo_bsc_api.c b/src/osmo-bsc/osmo_bsc_api.c index b80eb58..239bb54 100644 --- a/src/osmo-bsc/osmo_bsc_api.c +++ b/src/osmo-bsc/osmo_bsc_api.c @@ -237,18 +237,8 @@ { int con_type, rc, lu_cause; char *imsi = NULL; - struct timeval tv; struct msgb *resp; enum bsc_con ret; - int send_ping = msc->advanced_ping; - - /* Advanced ping/pong handling */ - if (osmo_timer_pending(&msc->pong_timer)) - send_ping = 0; - if (msc->ping_timeout <= 0) - send_ping = 0; - if (send_ping && osmo_timer_remaining(&msc->ping_timer, NULL, &tv) == -1) - send_ping = 0; /* Check the filter */ rc = bsc_filter_initial(msc->network->bsc_data, msc, conn, msg, diff --git a/src/osmo-bsc/osmo_bsc_msc.c b/src/osmo-bsc/osmo_bsc_msc.c index e0c7556..2178d1d 100644 --- a/src/osmo-bsc/osmo_bsc_msc.c +++ b/src/osmo-bsc/osmo_bsc_msc.c @@ -40,515 +40,19 @@ #include #include -#if 0 -static void initialize_if_needed(struct bsc_msc_connection *conn); -static void send_lacs(struct gsm_network *net, struct bsc_msc_connection *conn); -static void send_id_get_response(struct bsc_msc_data *data, int fd, struct msgb *inp); -static void send_ping(struct bsc_msc_data *data); -static void schedule_ping_pong(struct bsc_msc_data *data); - -/* - * MGCP forwarding code - */ - -#endif -static int mgcp_do_read(struct osmo_fd *fd) -{ - struct bsc_msc_data *data = (struct bsc_msc_data *) fd->data; - struct msgb *mgcp; - int ret; - - mgcp = msgb_alloc_headroom(4096, 128, "mgcp_from_gw"); - if (!mgcp) { - LOGP(DMGCP, LOGL_ERROR, "Failed to allocate MGCP message.\n"); - return -1; - } - - ret = read(fd->fd, mgcp->data, 4096 - 128); - if (ret <= 0) { - LOGP(DMGCP, LOGL_ERROR, "Failed to read: %d/%s\n", errno, strerror(errno)); - msgb_free(mgcp); - return -1; - } else if (ret > 4096 - 128) { - LOGP(DMGCP, LOGL_ERROR, "Too much data: %d\n", ret); - msgb_free(mgcp); - return -1; - } - - mgcp->l2h = msgb_put(mgcp, ret); - msc_queue_write(data->msc_con, mgcp, IPAC_PROTO_MGCP_OLD); - return 0; -} - -static int mgcp_do_write(struct osmo_fd *fd, struct msgb *msg) -{ - int ret; - - LOGP(DMGCP, LOGL_DEBUG, "Sending msg to MGCP GW size: %u\n", msg->len); - - ret = write(fd->fd, msg->data, msg->len); - if (ret != msg->len) - LOGP(DMGCP, LOGL_ERROR, "Failed to forward message to MGCP GW (%s).\n", strerror(errno)); - - return ret; -} - -#if 0 -static void mgcp_forward(struct bsc_msc_data *data, struct msgb *msg) -{ - struct msgb *mgcp; - - if (msgb_l2len(msg) > 4096) { - LOGP(DMGCP, LOGL_ERROR, "Can not forward too big message.\n"); - return; - } - - mgcp = msgb_alloc(4096, "mgcp_to_gw"); - if (!mgcp) { - LOGP(DMGCP, LOGL_ERROR, "Failed to send message.\n"); - return; - } - - msgb_put(mgcp, msgb_l2len(msg)); - memcpy(mgcp->data, msg->l2h, mgcp->len); - if (osmo_wqueue_enqueue(&data->mgcp_agent, mgcp) != 0) { - LOGP(DMGCP, LOGL_FATAL, "Could not queue message to MGCP GW.\n"); - msgb_free(mgcp); - } -} -#endif - -static int mgcp_create_port(struct bsc_msc_data *data) -{ - int on; - struct sockaddr_in addr; - - data->mgcp_agent.bfd.fd = socket(AF_INET, SOCK_DGRAM, 0); - if (data->mgcp_agent.bfd.fd < 0) { - LOGP(DMGCP, LOGL_FATAL, "Failed to create UDP socket errno: %d\n", errno); - return -1; - } - - on = 1; - setsockopt(data->mgcp_agent.bfd.fd, SOL_SOCKET, SO_REUSEADDR, &on, sizeof(on)); - - /* try to bind the socket */ - memset(&addr, 0, sizeof(addr)); - addr.sin_family = AF_INET; - addr.sin_addr.s_addr = htonl(INADDR_LOOPBACK); - addr.sin_port = 0; - - if (bind(data->mgcp_agent.bfd.fd, (struct sockaddr *) &addr, sizeof(addr)) < 0) { - LOGP(DMGCP, LOGL_FATAL, "Failed to bind to any port.\n"); - close(data->mgcp_agent.bfd.fd); - data->mgcp_agent.bfd.fd = -1; - return -1; - } - - /* connect to the remote */ - addr.sin_port = htons(2427); - if (connect(data->mgcp_agent.bfd.fd, (struct sockaddr *) & addr, sizeof(addr)) < 0) { - LOGP(DMGCP, LOGL_FATAL, "Failed to connect to local MGCP GW. %s\n", strerror(errno)); - close(data->mgcp_agent.bfd.fd); - data->mgcp_agent.bfd.fd = -1; - return -1; - } - - osmo_wqueue_init(&data->mgcp_agent, 10); - data->mgcp_agent.bfd.when = BSC_FD_READ; - data->mgcp_agent.bfd.data = data; - data->mgcp_agent.read_cb = mgcp_do_read; - data->mgcp_agent.write_cb = mgcp_do_write; - - if (osmo_fd_register(&data->mgcp_agent.bfd) != 0) { - LOGP(DMGCP, LOGL_FATAL, "Failed to register BFD\n"); - close(data->mgcp_agent.bfd.fd); - data->mgcp_agent.bfd.fd = -1; - return -1; - } - - return 0; -} - - -/* - * Send data to the network - */ -int msc_queue_write(struct bsc_msc_connection *conn, struct msgb *msg, int proto) -{ - ipa_prepend_header(msg, proto); - if (osmo_wqueue_enqueue(&conn->write_queue, msg) != 0) { - LOGP(DMSC, LOGL_FATAL, "Failed to queue IPA/%d\n", proto); - msgb_free(msg); - return -1; - } - - return 0; -} - -#if 0 -int msc_queue_write_with_ping(struct bsc_msc_connection *conn, - struct msgb *msg, int proto) -{ - struct bsc_msc_data *data; - uint8_t val; - - /* prepend the header */ - ipa_prepend_header(msg, proto); - if (osmo_wqueue_enqueue(&conn->write_queue, msg) != 0) { - LOGP(DMSC, LOGL_FATAL, "Failed to queue IPA/%d\n", proto); - msgb_free(msg); - return -1; - } - - /* add the ping as the other message */ - val = IPAC_MSGT_PING; - msgb_l16tv_put(msg, 1, IPAC_PROTO_IPACCESS, &val); - - data = (struct bsc_msc_data *) conn->write_queue.bfd.data; - schedule_ping_pong(data); - return 0; -} - -static int msc_alink_do_write(struct osmo_fd *fd, struct msgb *msg) -{ - int ret; - - LOGP(DMSC, LOGL_DEBUG, "Sending SCCP to MSC: %u\n", msgb_l2len(msg)); - LOGP(DLMI, LOGL_DEBUG, "MSC TX %s\n", osmo_hexdump(msg->data, msg->len)); - - ret = write(fd->fd, msg->data, msg->len); - if (ret < msg->len) - perror("MSC: Failed to send SCCP"); - - return ret; -} - -static void handle_ctrl(struct bsc_msc_data *msc, struct msgb *msg) -{ - int ret; - struct ctrl_cmd *cmd; - - cmd = ctrl_cmd_parse(msc->msc_con, msg); - if (!cmd) { - LOGP(DMSC, LOGL_ERROR, "Failed to parse control message.\n"); - cmd = talloc_zero(msc->msc_con, struct ctrl_cmd); - if (!cmd) { - LOGP(DMSC, LOGL_ERROR, "OOM!\n"); - return; - } - cmd->type = CTRL_TYPE_ERROR; - cmd->id = "err"; - cmd->reply = "Failed to parse control message."; - - ctrl_cmd_send(&msc->msc_con->write_queue, cmd); - talloc_free(cmd); - - return; - } - - ret = ctrl_cmd_handle(msc->network->ctrl, cmd, msc->network); - if (ret != CTRL_CMD_HANDLED) - ctrl_cmd_send(&msc->msc_con->write_queue, cmd); - talloc_free(cmd); -} - -static void osmo_ext_handle(struct bsc_msc_data *msc, struct msgb *msg) -{ - struct ipaccess_head *hh; - struct ipaccess_head_ext *hh_ext; - - hh = (struct ipaccess_head *) msg->data; - hh_ext = (struct ipaccess_head_ext *) hh->data; - if (msg->len < sizeof(*hh) + sizeof(*hh_ext)) { - LOGP(DMSC, LOGL_ERROR, "Packet too short for extended header.\n"); - return; - } - - msg->l2h = hh_ext->data; - if (hh_ext->proto == IPAC_PROTO_EXT_MGCP) - mgcp_forward(msc, msg); - else if (hh_ext->proto == IPAC_PROTO_EXT_LAC) - send_lacs(msc->network, msc->msc_con); - else if (hh_ext->proto == IPAC_PROTO_EXT_CTRL) - handle_ctrl(msc, msg); -} - -static int ipaccess_a_fd_cb(struct osmo_fd *bfd) -{ - struct msgb *msg = NULL; - struct ipaccess_head *hh; - struct bsc_msc_data *data = (struct bsc_msc_data *) bfd->data; - int ret; - - ret = ipa_msg_recv_buffered(bfd->fd, &msg, &data->msc_con->pending_msg); - if (ret <= 0) { - if (ret == -EAGAIN) - return 0; - if (ret == 0) { - LOGP(DMSC, LOGL_ERROR, "The connection to the MSC was lost.\n"); - bsc_msc_lost(data->msc_con); - return -1; - } - - LOGP(DMSC, LOGL_ERROR, "Failed to parse ip access message: %d\n", ret); - return -1; - } - - LOGP(DLMI, LOGL_DEBUG, "From MSC: %s proto: %d\n", osmo_hexdump(msg->data, msg->len), msg->l2h[0]); - - /* handle base message handling */ - hh = (struct ipaccess_head *) msg->data; - - /* initialize the networking. This includes sending a GSM08.08 message */ - msg->cb[0] = (unsigned long) data; - if (hh->proto == IPAC_PROTO_IPACCESS) { - ipa_ccm_rcvmsg_base(msg, bfd); - if (msg->l2h[0] == IPAC_MSGT_ID_ACK) - initialize_if_needed(data->msc_con); - else if (msg->l2h[0] == IPAC_MSGT_ID_GET) { - send_id_get_response(data, bfd->fd, msg); - } else if (msg->l2h[0] == IPAC_MSGT_PONG) { - osmo_timer_del(&data->pong_timer); - } - } else if (hh->proto == IPAC_PROTO_SCCP) { - sccp_system_incoming_ctx(msg, data->msc_con); - } else if (hh->proto == IPAC_PROTO_MGCP_OLD) { - mgcp_forward(data, msg); - } else if (hh->proto == IPAC_PROTO_OSMO) { - osmo_ext_handle(data, msg); - } - - msgb_free(msg); - return 0; -} - -static void send_ping(struct bsc_msc_data *data) -{ - struct msgb *msg; - - msg = msgb_alloc_headroom(4096, 128, "ping"); - if (!msg) { - LOGP(DMSC, LOGL_ERROR, "Failed to create PING.\n"); - return; - } - - msg->l2h = msgb_put(msg, 1); - msg->l2h[0] = IPAC_MSGT_PING; - - msc_queue_write(data->msc_con, msg, IPAC_PROTO_IPACCESS); -} - -static void schedule_ping_pong(struct bsc_msc_data *data) -{ - /* send another ping in 20 seconds */ - osmo_timer_schedule(&data->ping_timer, data->ping_timeout, 0); - - /* also start a pong timer */ - osmo_timer_schedule(&data->pong_timer, data->pong_timeout, 0); -} - -static void msc_ping_timeout_cb(void *_data) -{ - struct bsc_msc_data *data = (struct bsc_msc_data *) _data; - if (data->ping_timeout <= 0) - return; - - send_ping(data); - schedule_ping_pong(data); -} - -static void msc_pong_timeout_cb(void *_data) -{ -// struct bsc_msc_data *data = (struct bsc_msc_data *) _data; - - LOGP(DMSC, LOGL_ERROR, "MSC didn't answer PING. Closing connection.\n"); -// bsc_msc_lost(data->msc_con); -} - -static void msc_connection_connected(struct bsc_msc_connection *con) -{ - struct msc_signal_data sig; - struct bsc_msc_data *data; - int ret, on; - on = 1; -// ret = setsockopt(con->write_queue.bfd.fd, IPPROTO_TCP, TCP_NODELAY, &on, sizeof(on)); -// if (ret != 0) -// LOGP(DMSC, LOGL_ERROR, "Failed to set TCP_NODELAY: %s\n", strerror(errno)); - -// data = (struct bsc_msc_data *) con->write_queue.bfd.data; -// msc_ping_timeout_cb(data); - - sig.data = data; - osmo_signal_dispatch(SS_MSC, S_MSC_CONNECTED, &sig); -} - -/* - * The connection to the MSC was lost and we will need to free all - * resources and then attempt to reconnect. - */ -static void msc_connection_was_lost(struct bsc_msc_connection *msc) -{ -// struct msc_signal_data sig; -// struct bsc_msc_data *data; - - LOGP(DMSC, LOGL_ERROR, "Lost MSC connection. Freing stuff.\n"); - -// data = (struct bsc_msc_data *) msc->write_queue.bfd.data; -// osmo_timer_del(&data->ping_timer); -// osmo_timer_del(&data->pong_timer); -// -// sig.data = data; -// osmo_signal_dispatch(SS_MSC, S_MSC_LOST, &sig); - - msc->is_authenticated = 0; -// bsc_msc_schedule_connect(msc); -} - -static void send_lacs(struct gsm_network *net, struct bsc_msc_connection *conn) -{ - struct ipac_ext_lac_cmd *lac; - struct gsm_bts *bts; - struct msgb *msg; - int lacs = 0; - - if (llist_empty(&net->bts_list)) { - LOGP(DMSC, LOGL_ERROR, "No BTSs configured. Not sending LACs.\n"); - return; - } - - msg = msgb_alloc_headroom(4096, 128, "LAC Command"); - if (!msg) { - LOGP(DMSC, LOGL_ERROR, "Failed to create the LAC command.\n"); - return; - } - - lac = (struct ipac_ext_lac_cmd *) msgb_put(msg, sizeof(*lac)); - lac->add_remove = 1; - - llist_for_each_entry(bts, &net->bts_list, list) { - if (lacs++ == 0) - lac->lac = htons(bts->location_area_code); - else - msgb_put_u16(msg, htons(bts->location_area_code)); - } - - lac->nr_extra_lacs = lacs - 1; - ipa_prepend_header_ext(msg, IPAC_PROTO_EXT_LAC); - msc_queue_write(conn, msg, IPAC_PROTO_OSMO); -} - -static void initialize_if_needed(struct bsc_msc_connection *conn) -{ - struct msgb *msg; - - if (!conn->is_authenticated) { - /* send a gsm 08.08 reset message from here */ - msg = gsm0808_create_reset(); - if (!msg) { - LOGP(DMSC, LOGL_ERROR, "Failed to create the reset message.\n"); - return; - } - - sccp_write(msg, &sccp_ssn_bssap, &sccp_ssn_bssap, 0, conn); - msgb_free(msg); - conn->is_authenticated = 1; - } -} - -static int answer_challenge(struct bsc_msc_data *data, struct msgb *inp, struct osmo_auth_vector *vec) -{ - int ret; - struct tlv_parsed tvp; - const uint8_t *mrand; - uint8_t mrand_len; - struct osmo_sub_auth_data auth = { - .type = OSMO_AUTH_TYPE_GSM, - .algo = OSMO_AUTH_ALG_MILENAGE, - }; - - ret = ipa_ccm_idtag_parse_off(&tvp, - inp->l2h + 1, - msgb_l2len(inp) - 1, 1); - if (ret < 0) { - LOGP(DMSC, LOGL_ERROR, "ignoring IPA response " - "message with malformed TLVs: %s\n", osmo_hexdump(inp->l2h + 1, - msgb_l2len(inp) - 1)); - return 0; - } - - mrand = TLVP_VAL(&tvp, 0x23); - mrand_len = TLVP_LEN(&tvp, 0x23); - if (mrand_len != 16) { - LOGP(DMSC, LOGL_ERROR, - "RAND is not 16 bytes. Was %d\n", - mrand_len); - return 0; - } - - /* copy the key */ - memcpy(auth.u.umts.opc, data->bsc_key, 16); - memcpy(auth.u.umts.k, data->bsc_key, 16); - memset(auth.u.umts.amf, 0, 2); - auth.u.umts.sqn = 0; - - /* generate the result */ - memset(vec, 0, sizeof(*vec)); - osmo_auth_gen_vec(vec, &auth, mrand); - return 1; -} - - -static void send_id_get_response(struct bsc_msc_data *data, int fd, struct msgb *inp) -{ - struct msc_signal_data sig; - struct msgb *msg; - struct osmo_auth_vector vec; - int valid = 0; - - if (data->bsc_key_present) - valid = answer_challenge(data, inp, &vec); - - msg = bsc_msc_id_get_resp(valid, data->bsc_token, - vec.res, valid ? vec.res_len : 0); - if (!msg) - return; - msc_queue_write(data->msc_con, msg, IPAC_PROTO_IPACCESS); - - sig.data = data; - osmo_signal_dispatch(SS_MSC, S_MSC_AUTHENTICATED, &sig); -} - -#endif - int osmo_bsc_msc_init(struct bsc_msc_data *data) { - if (mgcp_create_port(data) != 0) - return -1; - data->msc_con = bsc_msc_create(data, &data->dests); if (!data->msc_con) { LOGP(DMSC, LOGL_ERROR, "Creating the MSC network connection failed.\n"); return -1; } -// osmo_timer_setup(&data->ping_timer, msc_ping_timeout_cb, data); -// osmo_timer_setup(&data->pong_timer, msc_pong_timeout_cb, data); - - data->msc_con->write_queue.bfd.data = data; -// data->msc_con->connection_loss = msc_connection_was_lost; -// data->msc_con->connected = msc_connection_connected; -// data->msc_con->write_queue.read_cb = ipaccess_a_fd_cb; -// data->msc_con->write_queue.write_cb = msc_alink_do_write; -// bsc_msc_connect(data->msc_con); - data->msc_con->is_connected = 1; data->msc_con->is_authenticated = 1; - return 0; } - struct bsc_msc_data *osmo_msc_data_find(struct gsm_network *net, int nr) { @@ -579,8 +83,6 @@ msc_data->network = net; INIT_LLIST_HEAD(&msc_data->dests); - msc_data->ping_timeout = 20; - msc_data->pong_timeout = 5; msc_data->core_plmn = (struct osmo_plmn_id){ .mcc = GSM_MCC_MNC_INVALID, .mnc = GSM_MCC_MNC_INVALID, diff --git a/src/osmo-bsc/osmo_bsc_vty.c b/src/osmo-bsc/osmo_bsc_vty.c index 3455d01..7968e21 100644 --- a/src/osmo-bsc/osmo_bsc_vty.c +++ b/src/osmo-bsc/osmo_bsc_vty.c @@ -122,17 +122,6 @@ msc->core_ci, VTY_NEWLINE); vty_out(vty, " ip.access rtp-base %d%s", msc->rtp_base, VTY_NEWLINE); - if (msc->ping_timeout == -1) - vty_out(vty, " no timeout-ping%s", VTY_NEWLINE); - else { - vty_out(vty, " timeout-ping %d%s", msc->ping_timeout, VTY_NEWLINE); - vty_out(vty, " timeout-pong %d%s", msc->pong_timeout, VTY_NEWLINE); - if (msc->advanced_ping) - vty_out(vty, " timeout-ping advanced%s", VTY_NEWLINE); - else - vty_out(vty, " no timeout-ping advanced%s", VTY_NEWLINE); - } - if (msc->ussd_welcome_txt) vty_out(vty, " bsc-welcome-text %s%s", msc->ussd_welcome_txt, VTY_NEWLINE); else @@ -393,64 +382,6 @@ talloc_free(dest); } - return CMD_SUCCESS; -} - -DEFUN(cfg_net_msc_no_ping_time, - cfg_net_msc_no_ping_time_cmd, - "no timeout-ping", - NO_STR "Disable the ping/pong handling on A-link\n") -{ - struct bsc_msc_data *data = bsc_msc_data(vty); - data->ping_timeout = -1; - return CMD_SUCCESS; -} - -DEFUN(cfg_net_msc_ping_time, - cfg_net_msc_ping_time_cmd, - "timeout-ping <1-2147483647>", - "Set the PING interval, negative for not sending PING\n" - "Timeout in seconds\n") -{ - struct bsc_msc_data *data = bsc_msc_data(vty); - data->ping_timeout = atoi(argv[0]); - return CMD_SUCCESS; -} - -DEFUN(cfg_net_msc_pong_time, - cfg_net_msc_pong_time_cmd, - "timeout-pong <1-2147483647>", - "Set the time to wait for a PONG\n" "Timeout in seconds\n") -{ - struct bsc_msc_data *data = bsc_msc_data(vty); - data->pong_timeout = atoi(argv[0]); - return CMD_SUCCESS; -} - -DEFUN(cfg_net_msc_advanced_ping, - cfg_net_msc_advanced_ping_cmd, - "timeout-ping advanced", - "Ping timeout handling\nEnable advanced mode during SCCP\n") -{ - struct bsc_msc_data *data = bsc_msc_data(vty); - - if (data->ping_timeout == -1) { - vty_out(vty, "%%ping handling is disabled. Enable it first.%s", - VTY_NEWLINE); - return CMD_WARNING; - } - - data->advanced_ping = 1; - return CMD_SUCCESS; -} - -DEFUN(cfg_no_net_msc_advanced_ping, - cfg_no_net_msc_advanced_ping_cmd, - "no timeout-ping advanced", - NO_STR "Ping timeout handling\nEnable advanced mode during SCCP\n") -{ - struct bsc_msc_data *data = bsc_msc_data(vty); - data->advanced_ping = 0; return CMD_SUCCESS; } @@ -980,11 +911,6 @@ install_element(MSC_NODE, &cfg_net_bsc_codec_list_cmd); install_element(MSC_NODE, &cfg_net_msc_dest_cmd); install_element(MSC_NODE, &cfg_net_msc_no_dest_cmd); - install_element(MSC_NODE, &cfg_net_msc_no_ping_time_cmd); - install_element(MSC_NODE, &cfg_net_msc_ping_time_cmd); - install_element(MSC_NODE, &cfg_net_msc_pong_time_cmd); - install_element(MSC_NODE, &cfg_net_msc_advanced_ping_cmd); - install_element(MSC_NODE, &cfg_no_net_msc_advanced_ping_cmd); install_element(MSC_NODE, &cfg_net_msc_welcome_ussd_cmd); install_element(MSC_NODE, &cfg_net_msc_no_welcome_ussd_cmd); install_element(MSC_NODE, &cfg_net_msc_lost_ussd_cmd); diff --git a/tests/vty_test_runner.py b/tests/vty_test_runner.py index 387ea70..3b73ce7 100755 --- a/tests/vty_test_runner.py +++ b/tests/vty_test_runner.py @@ -234,47 +234,6 @@ res = self.vty.command("show network") self.assert_(res.startswith('BSC is on Country Code') >= 0) - def testPingPongConfiguration(self): - self.vty.enable() - self.vty.verify("configure terminal", ['']) - self.vty.verify("msc 0", ['']) - - self.vty.verify("timeout-ping 12", ['']) - self.vty.verify("timeout-pong 14", ['']) - res = self.vty.command("show running-config") - self.assert_(res.find(" timeout-ping 12") > 0) - self.assert_(res.find(" timeout-pong 14") > 0) - self.assert_(res.find(" no timeout-ping advanced") > 0) - - self.vty.verify("timeout-ping advanced", ['']) - res = self.vty.command("show running-config") - self.assert_(res.find(" timeout-ping 12") > 0) - self.assert_(res.find(" timeout-pong 14") > 0) - self.assert_(res.find(" timeout-ping advanced") > 0) - - self.vty.verify("no timeout-ping advanced", ['']) - res = self.vty.command("show running-config") - self.assert_(res.find(" timeout-ping 12") > 0) - self.assert_(res.find(" timeout-pong 14") > 0) - self.assert_(res.find(" no timeout-ping advanced") > 0) - - self.vty.verify("no timeout-ping", ['']) - res = self.vty.command("show running-config") - self.assertEquals(res.find(" timeout-ping 12"), -1) - self.assertEquals(res.find(" timeout-pong 14"), -1) - self.assertEquals(res.find(" no timeout-ping advanced"), -1) - self.assert_(res.find(" no timeout-ping") > 0) - - self.vty.verify("timeout-ping advanced", ['%ping handling is disabled. Enable it first.']) - - # And back to enabling it - self.vty.verify("timeout-ping 12", ['']) - self.vty.verify("timeout-pong 14", ['']) - res = self.vty.command("show running-config") - self.assert_(res.find(" timeout-ping 12") > 0) - self.assert_(res.find(" timeout-pong 14") > 0) - self.assert_(res.find(" timeout-ping advanced") > 0) - def testMscDataCoreLACCI(self): self.vty.enable() res = self.vty.command("show running-config") -- To view, visit https://gerrit.osmocom.org/7428 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: I5cf3fec31cc774c902f3cfe6d16fb85ef301694a Gerrit-PatchSet: 4 Gerrit-Project: osmo-bsc Gerrit-Branch: master Gerrit-Owner: dexter Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Neels Hofmeyr From gerrit-no-reply at lists.osmocom.org Mon Apr 2 19:35:10 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Mon, 2 Apr 2018 19:35:10 +0000 Subject: osmo-ci[master]: ansible: Add docbook5-xml to jenkins build slaves In-Reply-To: References: Message-ID: Patch Set 1: Verified+1 -- To view, visit https://gerrit.osmocom.org/7342 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Ic0a33a87a61c9cdd1ca60a023bbf2920d04fefcd Gerrit-PatchSet: 1 Gerrit-Project: osmo-ci Gerrit-Branch: master Gerrit-Owner: Harald Welte Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: lynxis lazus Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Mon Apr 2 19:35:13 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Mon, 2 Apr 2018 19:35:13 +0000 Subject: [MERGED] osmo-ci[master]: ansible: Add docbook5-xml to jenkins build slaves In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: ansible: Add docbook5-xml to jenkins build slaves ...................................................................... ansible: Add docbook5-xml to jenkins build slaves Change-Id: Ic0a33a87a61c9cdd1ca60a023bbf2920d04fefcd Related: OS#3072 --- M ansible/roles/osmocom-jenkins-slave/tasks/main.yml 1 file changed, 1 insertion(+), 0 deletions(-) Approvals: lynxis lazus: Looks good to me, but someone else must approve Harald Welte: Looks good to me, approved; Verified diff --git a/ansible/roles/osmocom-jenkins-slave/tasks/main.yml b/ansible/roles/osmocom-jenkins-slave/tasks/main.yml index 5e4472a..9e8b0b0 100644 --- a/ansible/roles/osmocom-jenkins-slave/tasks/main.yml +++ b/ansible/roles/osmocom-jenkins-slave/tasks/main.yml @@ -48,6 +48,7 @@ cache_valid_time: 3600 update_cache: yes with_items: + - docbook5-xml - libboost-dev - libc-ares-dev - libdbd-sqlite3 -- To view, visit https://gerrit.osmocom.org/7342 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: Ic0a33a87a61c9cdd1ca60a023bbf2920d04fefcd Gerrit-PatchSet: 2 Gerrit-Project: osmo-ci Gerrit-Branch: master Gerrit-Owner: Harald Welte Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: lynxis lazus From gerrit-no-reply at lists.osmocom.org Mon Apr 2 19:35:34 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Mon, 2 Apr 2018 19:35:34 +0000 Subject: osmo-ci[master]: scripts: osmo-deps.sh: Allow building against tags In-Reply-To: References: Message-ID: Patch Set 1: Verified+1 -- To view, visit https://gerrit.osmocom.org/7589 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Ica50080c8b3e20686fe6f47a2b61718ef4a66d95 Gerrit-PatchSet: 1 Gerrit-Project: osmo-ci Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Pau Espin Pedrol Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Mon Apr 2 19:35:36 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Mon, 2 Apr 2018 19:35:36 +0000 Subject: [MERGED] osmo-ci[master]: scripts: osmo-deps.sh: Allow building against tags In-Reply-To: References: Message-ID: Pau Espin Pedrol has submitted this change and it was merged. Change subject: scripts: osmo-deps.sh: Allow building against tags ...................................................................... scripts: osmo-deps.sh: Allow building against tags In case we provide a tag, origin/$tag doesn't resolve correctly, we must use $tag. Same happens probably if we want to build against a specific commit hash. Change-Id: Ica50080c8b3e20686fe6f47a2b61718ef4a66d95 --- M scripts/osmo-deps.sh 1 file changed, 6 insertions(+), 1 deletion(-) Approvals: Pau Espin Pedrol: Verified Harald Welte: Looks good to me, approved diff --git a/scripts/osmo-deps.sh b/scripts/osmo-deps.sh index a4afec5..5a7dcc2 100755 --- a/scripts/osmo-deps.sh +++ b/scripts/osmo-deps.sh @@ -1,7 +1,12 @@ #!/bin/sh set -ex project="$1" -branch="origin/${2:-master}" +branch="${2:-master}" +# If ref is really a branch, we want to track the remote one: +if [ "x$(git branch -a | grep -c "remotes/origin/$branch\$")" != "x0" ]; then + branch="origin/$branch" +fi + if ! test -d "$project"; then -- To view, visit https://gerrit.osmocom.org/7589 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: Ica50080c8b3e20686fe6f47a2b61718ef4a66d95 Gerrit-PatchSet: 2 Gerrit-Project: osmo-ci Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Pau Espin Pedrol From gerrit-no-reply at lists.osmocom.org Mon Apr 2 19:35:41 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Mon, 2 Apr 2018 19:35:41 +0000 Subject: osmo-bsc[master]: doc/examples: use NECI = 1 by default In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7304 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I564cac73e610d71df5ab244e04d08dd2c5ff2324 Gerrit-PatchSet: 1 Gerrit-Project: osmo-bsc Gerrit-Branch: master Gerrit-Owner: Vadim Yanitskiy Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Pau Espin Pedrol Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Mon Apr 2 19:35:44 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Mon, 2 Apr 2018 19:35:44 +0000 Subject: [MERGED] osmo-bsc[master]: doc/examples: use NECI = 1 by default In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: doc/examples: use NECI = 1 by default ...................................................................... doc/examples: use NECI = 1 by default Every setup should run with NECI = 1. NECI = 0 is an ancient legacy setting. Change-Id: I564cac73e610d71df5ab244e04d08dd2c5ff2324 --- M doc/examples/osmo-bsc/osmo-bsc.cfg M doc/examples/osmo-bsc/osmo-bsc_custom-sccp.cfg 2 files changed, 2 insertions(+), 2 deletions(-) Approvals: Pau Espin Pedrol: Looks good to me, but someone else must approve Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/doc/examples/osmo-bsc/osmo-bsc.cfg b/doc/examples/osmo-bsc/osmo-bsc.cfg index 2a41d84..a5ff1ea 100644 --- a/doc/examples/osmo-bsc/osmo-bsc.cfg +++ b/doc/examples/osmo-bsc/osmo-bsc.cfg @@ -7,7 +7,7 @@ network country code 1 mobile network code 1 encryption a5 0 - neci 0 + neci 1 paging any use tch 0 handover 0 handover algorithm 1 diff --git a/doc/examples/osmo-bsc/osmo-bsc_custom-sccp.cfg b/doc/examples/osmo-bsc/osmo-bsc_custom-sccp.cfg index b0087a7..0666be3 100644 --- a/doc/examples/osmo-bsc/osmo-bsc_custom-sccp.cfg +++ b/doc/examples/osmo-bsc/osmo-bsc_custom-sccp.cfg @@ -6,7 +6,7 @@ network country code 1 mobile network code 1 encryption a5 0 - neci 0 + neci 1 paging any use tch 0 handover 0 handover algorithm 1 -- To view, visit https://gerrit.osmocom.org/7304 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: I564cac73e610d71df5ab244e04d08dd2c5ff2324 Gerrit-PatchSet: 2 Gerrit-Project: osmo-bsc Gerrit-Branch: master Gerrit-Owner: Vadim Yanitskiy Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Pau Espin Pedrol From gerrit-no-reply at lists.osmocom.org Mon Apr 2 19:54:27 2018 From: gerrit-no-reply at lists.osmocom.org (Vadim Yanitskiy) Date: Mon, 2 Apr 2018 19:54:27 +0000 Subject: osmocom-bb[fixeria/trx]: trxcon/scheduler: fix Measurement Reporting on SACCH In-Reply-To: References: Message-ID: Patch Set 1: I am about to finish a new modified version of this change. ASAP I clean-up the source code, I'll upload. -- To view, visit https://gerrit.osmocom.org/7470 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: If1b8dc74ced746d6270676fdde75fcda32f91a3d Gerrit-PatchSet: 1 Gerrit-Project: osmocom-bb Gerrit-Branch: fixeria/trx Gerrit-Owner: Vadim Yanitskiy Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Vadim Yanitskiy Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Mon Apr 2 22:39:39 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Mon, 2 Apr 2018 22:39:39 +0000 Subject: [PATCH] osmo-gsm-tester[master]: templates: osmo-bsc: Remove no longer available cfgs Message-ID: Review at https://gerrit.osmocom.org/7609 templates: osmo-bsc: Remove no longer available cfgs osmo-bsc c74a5616bf1c77ac40ddd92f4927dca7a1b45bc8 removed these cfg options as they are dead code. Change-Id: I2fb63d31d5d7424b48ed2cfc694d09db072db485 --- M src/osmo_gsm_tester/templates/osmo-bsc.cfg.tmpl 1 file changed, 0 insertions(+), 3 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-gsm-tester refs/changes/09/7609/1 diff --git a/src/osmo_gsm_tester/templates/osmo-bsc.cfg.tmpl b/src/osmo_gsm_tester/templates/osmo-bsc.cfg.tmpl index 56ebe5a..71b44cf 100644 --- a/src/osmo_gsm_tester/templates/osmo-bsc.cfg.tmpl +++ b/src/osmo_gsm_tester/templates/osmo-bsc.cfg.tmpl @@ -106,9 +106,6 @@ mgw remote-ip ${mgw.ip_address.addr} mgw remote-port 2427 mgw endpoint-range 1 31 - timeout-ping 1800 - timeout-ping advanced - timeout-pong 60 codec-list hr3 dest 151.80.237.229 5000 184 amr-config 12_2k forbidden -- To view, visit https://gerrit.osmocom.org/7609 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I2fb63d31d5d7424b48ed2cfc694d09db072db485 Gerrit-PatchSet: 1 Gerrit-Project: osmo-gsm-tester Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol From gerrit-no-reply at lists.osmocom.org Tue Apr 3 00:10:26 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Tue, 3 Apr 2018 00:10:26 +0000 Subject: osmo-gsm-tester[master]: templates: osmo-bsc: Remove no longer available cfgs In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7609 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I2fb63d31d5d7424b48ed2cfc694d09db072db485 Gerrit-PatchSet: 1 Gerrit-Project: osmo-gsm-tester Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Pau Espin Pedrol Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Tue Apr 3 00:10:30 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Tue, 3 Apr 2018 00:10:30 +0000 Subject: [MERGED] osmo-gsm-tester[master]: templates: osmo-bsc: Remove no longer available cfgs In-Reply-To: References: Message-ID: Pau Espin Pedrol has submitted this change and it was merged. Change subject: templates: osmo-bsc: Remove no longer available cfgs ...................................................................... templates: osmo-bsc: Remove no longer available cfgs osmo-bsc c74a5616bf1c77ac40ddd92f4927dca7a1b45bc8 removed these cfg options as they are dead code. Change-Id: I2fb63d31d5d7424b48ed2cfc694d09db072db485 --- M src/osmo_gsm_tester/templates/osmo-bsc.cfg.tmpl 1 file changed, 0 insertions(+), 3 deletions(-) Approvals: Pau Espin Pedrol: Looks good to me, approved Jenkins Builder: Verified diff --git a/src/osmo_gsm_tester/templates/osmo-bsc.cfg.tmpl b/src/osmo_gsm_tester/templates/osmo-bsc.cfg.tmpl index 56ebe5a..71b44cf 100644 --- a/src/osmo_gsm_tester/templates/osmo-bsc.cfg.tmpl +++ b/src/osmo_gsm_tester/templates/osmo-bsc.cfg.tmpl @@ -106,9 +106,6 @@ mgw remote-ip ${mgw.ip_address.addr} mgw remote-port 2427 mgw endpoint-range 1 31 - timeout-ping 1800 - timeout-ping advanced - timeout-pong 60 codec-list hr3 dest 151.80.237.229 5000 184 amr-config 12_2k forbidden -- To view, visit https://gerrit.osmocom.org/7609 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: I2fb63d31d5d7424b48ed2cfc694d09db072db485 Gerrit-PatchSet: 1 Gerrit-Project: osmo-gsm-tester Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Pau Espin Pedrol From gerrit-no-reply at lists.osmocom.org Tue Apr 3 00:13:56 2018 From: gerrit-no-reply at lists.osmocom.org (Neels Hofmeyr) Date: Tue, 3 Apr 2018 00:13:56 +0000 Subject: [PATCH] osmo-msc[master]: drop some dead definitions (gsm_data.h, gsup_client.c) Message-ID: Review at https://gerrit.osmocom.org/7610 drop some dead definitions (gsm_data.h, gsup_client.c) Change-Id: Icad01d0ad8fa68293160bc56543b9c3dcafc50bb --- M include/osmocom/msc/gsm_data.h M src/libgsupclient/gsup_client.c 2 files changed, 0 insertions(+), 5 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-msc refs/changes/10/7610/1 diff --git a/include/osmocom/msc/gsm_data.h b/include/osmocom/msc/gsm_data.h index f61a6cf..1e5d567 100644 --- a/include/osmocom/msc/gsm_data.h +++ b/include/osmocom/msc/gsm_data.h @@ -359,9 +359,6 @@ char text[SMS_TEXT_SIZE]; }; -extern void *tall_bsc_ctx; -extern int ipacc_rtp_direct; - struct gsm_subscriber_connection *msc_subscr_con_allocate(struct gsm_network *network); void msc_subscr_con_free(struct gsm_subscriber_connection *conn); diff --git a/src/libgsupclient/gsup_client.c b/src/libgsupclient/gsup_client.c index 9051b31..1f395ee 100644 --- a/src/libgsupclient/gsup_client.c +++ b/src/libgsupclient/gsup_client.c @@ -33,8 +33,6 @@ #include #include -extern void *tall_bsc_ctx; - static void start_test_procedure(struct gsup_client *gsupc); static void gsup_client_send_ping(struct gsup_client *gsupc) -- To view, visit https://gerrit.osmocom.org/7610 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Icad01d0ad8fa68293160bc56543b9c3dcafc50bb Gerrit-PatchSet: 1 Gerrit-Project: osmo-msc Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr From gerrit-no-reply at lists.osmocom.org Tue Apr 3 00:13:56 2018 From: gerrit-no-reply at lists.osmocom.org (Neels Hofmeyr) Date: Tue, 3 Apr 2018 00:13:56 +0000 Subject: [PATCH] osmo-msc[master]: test_reject_concurrency: missing assert Message-ID: Review at https://gerrit.osmocom.org/7611 test_reject_concurrency: missing assert I broke this test during dev and saw the failure being noticed only in the next test when DTAP is expected again. Verify success right there, instead. Change-Id: Ifdde3a6fa5835203c34c40db77761f2e90c0d5ff --- M tests/msc_vlr/msc_vlr_test_reject_concurrency.c M tests/msc_vlr/msc_vlr_test_reject_concurrency.err 2 files changed, 2 insertions(+), 0 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-msc refs/changes/11/7611/1 diff --git a/tests/msc_vlr/msc_vlr_test_reject_concurrency.c b/tests/msc_vlr/msc_vlr_test_reject_concurrency.c index b6f6558..08fc9e7 100644 --- a/tests/msc_vlr/msc_vlr_test_reject_concurrency.c +++ b/tests/msc_vlr/msc_vlr_test_reject_concurrency.c @@ -219,6 +219,7 @@ ms_sends_msg("05247803305886089910070000006402"); VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d"); VERBOSE_ASSERT(cm_service_result_sent, == RES_NONE, "%d"); + VERBOSE_ASSERT(dtap_tx_confirmed, == true, "%d"); EXPECT_CONN_COUNT(1); BTW("The first LU can still complete"); diff --git a/tests/msc_vlr/msc_vlr_test_reject_concurrency.err b/tests/msc_vlr/msc_vlr_test_reject_concurrency.err index a045e67..c58d099 100644 --- a/tests/msc_vlr/msc_vlr_test_reject_concurrency.err +++ b/tests/msc_vlr/msc_vlr_test_reject_concurrency.err @@ -333,6 +333,7 @@ DREF IMSI:901700000004620: MSC conn use - dtap == 1 (0x4) lu_result_sent == 0 cm_service_result_sent == 0 + dtap_tx_confirmed == 1 llist_count(&net->subscr_conns) == 1 --- - The first LU can still complete -- To view, visit https://gerrit.osmocom.org/7611 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Ifdde3a6fa5835203c34c40db77761f2e90c0d5ff Gerrit-PatchSet: 1 Gerrit-Project: osmo-msc Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr From gerrit-no-reply at lists.osmocom.org Tue Apr 3 00:13:56 2018 From: gerrit-no-reply at lists.osmocom.org (Neels Hofmeyr) Date: Tue, 3 Apr 2018 00:13:56 +0000 Subject: [PATCH] osmo-msc[master]: cosmetic: rx_bssmap: read message type once into local var Message-ID: Review at https://gerrit.osmocom.org/7612 cosmetic: rx_bssmap: read message type once into local var Instead of referencing msg->l3h[0] all the time, use local variable msg_type. Related: OS#3122 Change-Id: If70c9fa00edd462d3470bded6eb2c6521e4d9234 --- M src/libmsc/a_iface_bssap.c 1 file changed, 6 insertions(+), 4 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-msc refs/changes/12/7612/1 diff --git a/src/libmsc/a_iface_bssap.c b/src/libmsc/a_iface_bssap.c index 3c1bcc8..743814c 100644 --- a/src/libmsc/a_iface_bssap.c +++ b/src/libmsc/a_iface_bssap.c @@ -554,11 +554,13 @@ struct gsm_subscriber_connection *conn; struct tlv_parsed tp; int rc; + uint8_t msg_type; if (msgb_l3len(msg) < 1) { LOGP(DBSSAP, LOGL_NOTICE, "Error: No data received -- discarding message!\n"); return -1; } + msg_type = msg->l3h[0]; rc = tlv_parse(&tp, gsm0808_att_tlvdef(), msg->l3h + 1, msgb_l3len(msg) - 1, 0, 0); if (rc < 0) { @@ -568,7 +570,7 @@ } /* Only message types allowed without a 'conn' */ - switch (msg->l3h[0]) { + switch (msg_type) { case BSS_MAP_MSG_COMPLETE_LAYER_3: return bssmap_rx_l3_compl(scu, a_conn_info, msg, &tp); case BSS_MAP_MSG_CLEAR_COMPLETE: @@ -583,9 +585,9 @@ return -EINVAL; } - LOGPCONN(conn, LOGL_DEBUG, "Rx BSSMAP DT1 %s\n", gsm0808_bssmap_name(msg->l3h[0])); + LOGPCONN(conn, LOGL_DEBUG, "Rx BSSMAP DT1 %s\n", gsm0808_bssmap_name(msg_type)); - switch (msg->l3h[0]) { + switch (msg_type) { case BSS_MAP_MSG_CLEAR_RQST: return bssmap_rx_clear_rqst(conn, msg, &tp); case BSS_MAP_MSG_CLASSMARK_UPDATE: @@ -601,7 +603,7 @@ case BSS_MAP_MSG_ASSIGMENT_COMPLETE: return bssmap_rx_ass_compl(conn, msg, &tp); default: - LOGPCONN(conn, LOGL_ERROR, "Unimplemented msg type: %s\n", gsm0808_bssmap_name(msg->l3h[0])); + LOGPCONN(conn, LOGL_ERROR, "Unimplemented msg type: %s\n", gsm0808_bssmap_name(msg_type)); return -EINVAL; } -- To view, visit https://gerrit.osmocom.org/7612 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: If70c9fa00edd462d3470bded6eb2c6521e4d9234 Gerrit-PatchSet: 1 Gerrit-Project: osmo-msc Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr From gerrit-no-reply at lists.osmocom.org Tue Apr 3 00:13:56 2018 From: gerrit-no-reply at lists.osmocom.org (Neels Hofmeyr) Date: Tue, 3 Apr 2018 00:13:56 +0000 Subject: [PATCH] osmo-msc[master]: cosmetic: rename gsm_subscriber_connection->conn_fsm to ->fi Message-ID: Review at https://gerrit.osmocom.org/7613 cosmetic: rename gsm_subscriber_connection->conn_fsm to ->fi Match osmo-bsc's naming of the subscriber connection's FSM instance; 'conn->fi' makes more sense anyway than 'conn->conn_fsm'. BTW, an upcoming commit will do away with the legacy from libbsc/libmsc duality and firmly glue the conn allocation to the fi. Related: OS#3122 Change-Id: If442f2ba78d9722b1065ec30c9a13f372b6a8caa --- M include/osmocom/msc/gsm_data.h M src/libmsc/gsm_04_08.c M src/libmsc/msc_vty.c M src/libmsc/osmo_msc.c M src/libmsc/subscr_conn.c M src/libmsc/transaction.c M tests/msc_vlr/msc_vlr_test_authen_reuse.c M tests/msc_vlr/msc_vlr_test_call.c M tests/msc_vlr/msc_vlr_test_gsm_authen.c M tests/msc_vlr/msc_vlr_test_gsm_ciph.c M tests/msc_vlr/msc_vlr_test_ms_timeout.c M tests/msc_vlr/msc_vlr_test_no_authen.c M tests/msc_vlr/msc_vlr_test_reject_concurrency.c M tests/msc_vlr/msc_vlr_test_rest.c M tests/msc_vlr/msc_vlr_test_umts_authen.c 15 files changed, 54 insertions(+), 53 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-msc refs/changes/13/7613/1 diff --git a/include/osmocom/msc/gsm_data.h b/include/osmocom/msc/gsm_data.h index 1e5d567..df15eea 100644 --- a/include/osmocom/msc/gsm_data.h +++ b/include/osmocom/msc/gsm_data.h @@ -75,6 +75,9 @@ /* global linked list of subscriber_connections */ struct llist_head entry; + /* FSM instance to control the subscriber connection's permissions and lifetime. */ + struct osmo_fsm_inst *fi; + /* usage count. If this drops to zero, we start the release * towards A/Iu */ uint32_t use_count; @@ -91,8 +94,6 @@ uint8_t expire_timer_stopped; /* SMS helpers for libmsc */ uint8_t next_rp_ref; - - struct osmo_fsm_inst *conn_fsm; /* Are we part of a special "silent" call */ int silent_call; diff --git a/src/libmsc/gsm_04_08.c b/src/libmsc/gsm_04_08.c index 105bd1f..1bb6fa7 100644 --- a/src/libmsc/gsm_04_08.c +++ b/src/libmsc/gsm_04_08.c @@ -393,7 +393,7 @@ DEBUGP(DMM, "LU/new-LAC: %u/%u\n", old_lai.lac, new_lai.lac); is_utran = (conn->via_ran == RAN_UTRAN_IU); - lu_fsm = vlr_loc_update(conn->conn_fsm, + lu_fsm = vlr_loc_update(conn->fi, SUBSCR_CONN_E_ACCEPTED, SUBSCR_CONN_E_CN_CLOSE, (void*)&conn_from_lu, @@ -759,7 +759,7 @@ memcpy(conn->classmark.classmark2, classmark2, classmark2_len); conn->classmark.classmark2_len = classmark2_len; - if (conn->conn_fsm) { + if (conn->fi) { if (msc_subscr_conn_is_accepted(conn)) return cm_serv_reuse_conn(conn, mi-1); LOGP(DMM, LOGL_ERROR, "%s: connection already in use\n", @@ -776,7 +776,7 @@ } is_utran = (conn->via_ran == RAN_UTRAN_IU); - vlr_proc_acc_req(conn->conn_fsm, + vlr_proc_acc_req(conn->fi, SUBSCR_CONN_E_ACCEPTED, SUBSCR_CONN_E_CN_CLOSE, (void*)&conn_from_cm_service_req, @@ -1181,7 +1181,7 @@ conn->classmark.classmark2_len = *classmark2_lv; is_utran = (conn->via_ran == RAN_UTRAN_IU); - vlr_proc_acc_req(conn->conn_fsm, + vlr_proc_acc_req(conn->fi, SUBSCR_CONN_E_ACCEPTED, SUBSCR_CONN_E_CN_CLOSE, (void*)&conn_from_paging_resp, diff --git a/src/libmsc/msc_vty.c b/src/libmsc/msc_vty.c index b96f6cd..33613e9 100644 --- a/src/libmsc/msc_vty.c +++ b/src/libmsc/msc_vty.c @@ -481,7 +481,7 @@ conn->use_tokens, conn->received_cm_service_request ? 'C' : '-', conn->encr.alg_id, - conn->conn_fsm ? osmo_fsm_inst_state_name(conn->conn_fsm) : "-", + conn->fi ? osmo_fsm_inst_state_name(conn->fi) : "-", VTY_NEWLINE); } diff --git a/src/libmsc/osmo_msc.c b/src/libmsc/osmo_msc.c index 62a7e8a..34f705c 100644 --- a/src/libmsc/osmo_msc.c +++ b/src/libmsc/osmo_msc.c @@ -88,16 +88,16 @@ { if (!conn) return; - if (!conn->conn_fsm) + if (!conn->fi) return; - if (!(conn->conn_fsm->state == SUBSCR_CONN_S_ACCEPTED - || conn->conn_fsm->state == SUBSCR_CONN_S_COMMUNICATING)) { + if (!(conn->fi->state == SUBSCR_CONN_S_ACCEPTED + || conn->fi->state == SUBSCR_CONN_S_COMMUNICATING)) { DEBUGP(DMM, "%s: %s: conn still being established (%s)\n", vlr_subscr_name(conn->vsub), __func__, - osmo_fsm_inst_state_name(conn->conn_fsm)); + osmo_fsm_inst_state_name(conn->fi)); return; } - osmo_fsm_inst_dispatch(conn->conn_fsm, SUBSCR_CONN_E_RELEASE_WHEN_UNUSED, NULL); + osmo_fsm_inst_dispatch(conn->fi, SUBSCR_CONN_E_RELEASE_WHEN_UNUSED, NULL); } /* receive a Level 3 Complete message and return MSC_CONN_ACCEPT or @@ -110,7 +110,7 @@ subscr_conn_release_when_unused(conn); - /* If this should be kept, the conn->conn_fsm has placed a use_count */ + /* If this should be kept, the conn->fi has placed a use_count */ msc_subscr_conn_put(conn, MSC_CONN_USE_COMPL_L3); /* Always return acceptance, because even if the conn was not accepted, @@ -268,11 +268,11 @@ DEBUGP(DRLL, "Freeing subscriber connection" " with NULL subscriber\n"); - if (!conn->conn_fsm) + if (!conn->fi) return; - osmo_fsm_inst_term(conn->conn_fsm, - (conn->conn_fsm->state == SUBSCR_CONN_S_RELEASED) + osmo_fsm_inst_term(conn->fi, + (conn->fi->state == SUBSCR_CONN_S_RELEASED) ? OSMO_FSM_TERM_REGULAR : OSMO_FSM_TERM_ERROR, NULL); @@ -322,8 +322,8 @@ } } -/* If the conn->conn_fsm is still present, dispatch SUBSCR_CONN_E_CN_CLOSE - * event to gracefully terminate the connection. If the conn_fsm is already +/* If the conn->fi is still present, dispatch SUBSCR_CONN_E_CN_CLOSE + * event to gracefully terminate the connection. If the fi is already * cleared, call msc_subscr_conn_release_all() to take release actions. * \param cause a GSM_CAUSE_* constant, e.g. GSM_CAUSE_AUTH_FAILED. */ @@ -338,22 +338,22 @@ vlr_subscr_name(conn->vsub), cause); return; } - if (!conn->conn_fsm) { + if (!conn->fi) { DEBUGP(DMM, "msc_subscr_conn_close(vsub=%s, cause=%u): no conn fsm," " releasing directly without release event.\n", vlr_subscr_name(conn->vsub), cause); - /* In case of an IMSI Detach, we don't have conn_fsm. Release + /* In case of an IMSI Detach, we don't have fi. Release * anyway to ensure a timely Iu Release / BSSMAP Clear. */ msc_subscr_conn_release_all(conn, cause); return; } - if (conn->conn_fsm->state == SUBSCR_CONN_S_RELEASED) { + if (conn->fi->state == SUBSCR_CONN_S_RELEASED) { DEBUGP(DMM, "msc_subscr_conn_close(vsub=%s, cause=%u):" " conn fsm already releasing, ignore.\n", vlr_subscr_name(conn->vsub), cause); return; } - osmo_fsm_inst_dispatch(conn->conn_fsm, SUBSCR_CONN_E_CN_CLOSE, &cause); + osmo_fsm_inst_dispatch(conn->fi, SUBSCR_CONN_E_CN_CLOSE, &cause); } /* increment the ref-count. Needs to be called by every user */ diff --git a/src/libmsc/subscr_conn.c b/src/libmsc/subscr_conn.c index ca93a03..248c463 100644 --- a/src/libmsc/subscr_conn.c +++ b/src/libmsc/subscr_conn.c @@ -225,7 +225,7 @@ if (!conn) return; - conn->conn_fsm = NULL; + conn->fi = NULL; msc_subscr_conn_close(conn, cause); msc_subscr_conn_put(conn, MSC_CONN_USE_FSM); } @@ -329,7 +329,7 @@ struct osmo_fsm_inst *fi; OSMO_ASSERT(conn); - if (conn->conn_fsm) { + if (conn->fi) { LOGP(DMM, LOGL_ERROR, "%s: Error: connection already in use\n", id); return -EINVAL; @@ -349,8 +349,8 @@ "%s: Failed to allocate subscr conn master FSM\n", id); return -ENOMEM; } - conn->conn_fsm = fi; - osmo_fsm_inst_dispatch(conn->conn_fsm, SUBSCR_CONN_E_START, NULL); + conn->fi = fi; + osmo_fsm_inst_dispatch(conn->fi, SUBSCR_CONN_E_START, NULL); return 0; } @@ -360,10 +360,10 @@ return false; if (!conn->vsub) return false; - if (!conn->conn_fsm) + if (!conn->fi) return false; - if (!(conn->conn_fsm->state == SUBSCR_CONN_S_ACCEPTED - || conn->conn_fsm->state == SUBSCR_CONN_S_COMMUNICATING)) + if (!(conn->fi->state == SUBSCR_CONN_S_ACCEPTED + || conn->fi->state == SUBSCR_CONN_S_COMMUNICATING)) return false; return true; } @@ -374,8 +374,8 @@ /* This function is called to indicate that *some* communication is happening with the phone. * Late in the process, that may be a Release Confirm and the FSM and conn are already in * teardown. No need to signal SUBSCR_CONN_E_COMMUNICATING then. */ - if (conn->conn_fsm) - osmo_fsm_inst_dispatch(conn->conn_fsm, SUBSCR_CONN_E_COMMUNICATING, NULL); + if (conn->fi) + osmo_fsm_inst_dispatch(conn->fi, SUBSCR_CONN_E_COMMUNICATING, NULL); } void msc_subscr_conn_init(void) diff --git a/src/libmsc/transaction.c b/src/libmsc/transaction.c index 4a3b064..5b033dc 100644 --- a/src/libmsc/transaction.c +++ b/src/libmsc/transaction.c @@ -158,8 +158,8 @@ trans->conn = NULL; talloc_free(trans); - /* trans_free() should always happen while the conn_fsm is still around. */ - OSMO_ASSERT(conn->conn_fsm); + /* trans_free() should always happen while the fi is still around. */ + OSMO_ASSERT(conn->fi); /* Possibly this was the last transaction used by this conn. */ subscr_conn_release_when_unused(conn); diff --git a/tests/msc_vlr/msc_vlr_test_authen_reuse.c b/tests/msc_vlr/msc_vlr_test_authen_reuse.c index 6fd1e66..c9a9d09 100644 --- a/tests/msc_vlr/msc_vlr_test_authen_reuse.c +++ b/tests/msc_vlr/msc_vlr_test_authen_reuse.c @@ -166,7 +166,7 @@ "03575886" /* classmark 2 */ "089910070000106005" /* IMSI */); OSMO_ASSERT(g_conn); - OSMO_ASSERT(g_conn->conn_fsm); + OSMO_ASSERT(g_conn->fi); OSMO_ASSERT(g_conn->vsub); VERBOSE_ASSERT(cm_service_result_sent, == RES_NONE, "%d"); VERBOSE_ASSERT(auth_request_sent, == true, "%d"); @@ -217,7 +217,7 @@ "03575886" /* classmark 2 */ "089910070000106005" /* IMSI */); OSMO_ASSERT(g_conn); - OSMO_ASSERT(g_conn->conn_fsm); + OSMO_ASSERT(g_conn->fi); OSMO_ASSERT(g_conn->vsub); VERBOSE_ASSERT(cm_service_result_sent, == RES_NONE, "%d"); VERBOSE_ASSERT(auth_request_sent, == false, "%d"); diff --git a/tests/msc_vlr/msc_vlr_test_call.c b/tests/msc_vlr/msc_vlr_test_call.c index 7f97c35..6359865 100644 --- a/tests/msc_vlr/msc_vlr_test_call.c +++ b/tests/msc_vlr/msc_vlr_test_call.c @@ -172,7 +172,7 @@ "03575886" /* classmark 2 */ "089910070000106005" /* IMSI */); OSMO_ASSERT(g_conn); - OSMO_ASSERT(g_conn->conn_fsm); + OSMO_ASSERT(g_conn->fi); OSMO_ASSERT(g_conn->vsub); VERBOSE_ASSERT(cm_service_result_sent, == RES_NONE, "%d"); VERBOSE_ASSERT(auth_request_sent, == true, "%d"); @@ -355,7 +355,7 @@ "03575886" /* classmark 2 */ "089910070000106005" /* IMSI */); OSMO_ASSERT(g_conn); - OSMO_ASSERT(g_conn->conn_fsm); + OSMO_ASSERT(g_conn->fi); OSMO_ASSERT(g_conn->vsub); VERBOSE_ASSERT(cm_service_result_sent, == RES_NONE, "%d"); VERBOSE_ASSERT(auth_request_sent, == true, "%d"); @@ -434,7 +434,7 @@ "03575886" /* classmark 2 */ "089910070000106005" /* IMSI */); OSMO_ASSERT(g_conn); - OSMO_ASSERT(g_conn->conn_fsm); + OSMO_ASSERT(g_conn->fi); OSMO_ASSERT(g_conn->vsub); VERBOSE_ASSERT(cm_service_result_sent, == RES_NONE, "%d"); VERBOSE_ASSERT(auth_request_sent, == true, "%d"); diff --git a/tests/msc_vlr/msc_vlr_test_gsm_authen.c b/tests/msc_vlr/msc_vlr_test_gsm_authen.c index dda84f6..5176306 100644 --- a/tests/msc_vlr/msc_vlr_test_gsm_authen.c +++ b/tests/msc_vlr/msc_vlr_test_gsm_authen.c @@ -99,7 +99,7 @@ cm_service_result_sent = RES_NONE; ms_sends_msg("05247803305886089910070000006402"); OSMO_ASSERT(g_conn); - OSMO_ASSERT(g_conn->conn_fsm); + OSMO_ASSERT(g_conn->fi); OSMO_ASSERT(g_conn->vsub); VERBOSE_ASSERT(cm_service_result_sent, == RES_NONE, "%d"); VERBOSE_ASSERT(auth_request_sent, == true, "%d"); @@ -316,7 +316,7 @@ cm_service_result_sent = RES_NONE; ms_sends_msg("05247803305886" "05f4" "03020100"); OSMO_ASSERT(g_conn); - OSMO_ASSERT(g_conn->conn_fsm); + OSMO_ASSERT(g_conn->fi); OSMO_ASSERT(g_conn->vsub); VERBOSE_ASSERT(cm_service_result_sent, == RES_NONE, "%d"); VERBOSE_ASSERT(auth_request_sent, == true, "%d"); @@ -804,7 +804,7 @@ "03305886" /* classmark 2: GSM phase 2 */ "089910070000106005" /* IMSI */); OSMO_ASSERT(g_conn); - OSMO_ASSERT(g_conn->conn_fsm); + OSMO_ASSERT(g_conn->fi); OSMO_ASSERT(g_conn->vsub); VERBOSE_ASSERT(cm_service_result_sent, == RES_NONE, "%d"); VERBOSE_ASSERT(auth_request_sent, == true, "%d"); diff --git a/tests/msc_vlr/msc_vlr_test_gsm_ciph.c b/tests/msc_vlr/msc_vlr_test_gsm_ciph.c index d8ea6ba..8a05b3f 100644 --- a/tests/msc_vlr/msc_vlr_test_gsm_ciph.c +++ b/tests/msc_vlr/msc_vlr_test_gsm_ciph.c @@ -101,7 +101,7 @@ auth_request_expect_rand = "12aca96fb4ffdea5c985cbafa9b6e18b"; ms_sends_msg("05247803305886089910070000006402"); OSMO_ASSERT(g_conn); - OSMO_ASSERT(g_conn->conn_fsm); + OSMO_ASSERT(g_conn->fi); OSMO_ASSERT(g_conn->vsub); VERBOSE_ASSERT(auth_request_sent, == true, "%d"); VERBOSE_ASSERT(cm_service_result_sent, == RES_NONE, "%d"); @@ -340,7 +340,7 @@ auth_request_expect_autn = NULL; ms_sends_msg("05247803305886" "05f4" "03020100"); OSMO_ASSERT(g_conn); - OSMO_ASSERT(g_conn->conn_fsm); + OSMO_ASSERT(g_conn->fi); OSMO_ASSERT(g_conn->vsub); VERBOSE_ASSERT(auth_request_sent, == true, "%d"); VERBOSE_ASSERT(cm_service_result_sent, == RES_NONE, "%d"); @@ -934,7 +934,7 @@ "03575886" /* classmark 2 */ "089910070000106005" /* IMSI */); OSMO_ASSERT(g_conn); - OSMO_ASSERT(g_conn->conn_fsm); + OSMO_ASSERT(g_conn->fi); OSMO_ASSERT(g_conn->vsub); VERBOSE_ASSERT(cm_service_result_sent, == RES_NONE, "%d"); VERBOSE_ASSERT(auth_request_sent, == true, "%d"); diff --git a/tests/msc_vlr/msc_vlr_test_ms_timeout.c b/tests/msc_vlr/msc_vlr_test_ms_timeout.c index c81f5b5..a36027c 100644 --- a/tests/msc_vlr/msc_vlr_test_ms_timeout.c +++ b/tests/msc_vlr/msc_vlr_test_ms_timeout.c @@ -148,7 +148,7 @@ cm_service_result_sent = RES_NONE; ms_sends_msg("05247803305886089910070000006402"); OSMO_ASSERT(g_conn); - OSMO_ASSERT(g_conn->conn_fsm); + OSMO_ASSERT(g_conn->fi); OSMO_ASSERT(g_conn->vsub); VERBOSE_ASSERT(cm_service_result_sent, == RES_NONE, "%d"); VERBOSE_ASSERT(auth_request_sent, == true, "%d"); diff --git a/tests/msc_vlr/msc_vlr_test_no_authen.c b/tests/msc_vlr/msc_vlr_test_no_authen.c index 59c5603..b20f9d7 100644 --- a/tests/msc_vlr/msc_vlr_test_no_authen.c +++ b/tests/msc_vlr/msc_vlr_test_no_authen.c @@ -65,7 +65,7 @@ cm_service_result_sent = RES_NONE; ms_sends_msg("05247803305886089910070000006402"); OSMO_ASSERT(g_conn); - OSMO_ASSERT(g_conn->conn_fsm); + OSMO_ASSERT(g_conn->fi); OSMO_ASSERT(g_conn->vsub); VERBOSE_ASSERT(cm_service_result_sent, == RES_ACCEPT, "%d"); EXPECT_ACCEPTED(true); @@ -227,7 +227,7 @@ cm_service_result_sent = RES_NONE; ms_sends_msg("05247803305886" "05f4" "03020100"); OSMO_ASSERT(g_conn); - OSMO_ASSERT(g_conn->conn_fsm); + OSMO_ASSERT(g_conn->fi); OSMO_ASSERT(g_conn->vsub); VERBOSE_ASSERT(cm_service_result_sent, == RES_ACCEPT, "%d"); EXPECT_ACCEPTED(true); diff --git a/tests/msc_vlr/msc_vlr_test_reject_concurrency.c b/tests/msc_vlr/msc_vlr_test_reject_concurrency.c index 08fc9e7..ceab109 100644 --- a/tests/msc_vlr/msc_vlr_test_reject_concurrency.c +++ b/tests/msc_vlr/msc_vlr_test_reject_concurrency.c @@ -109,7 +109,7 @@ cm_service_result_sent = RES_NONE; ms_sends_msg("05247803305886089910070000006402"); OSMO_ASSERT(g_conn); - OSMO_ASSERT(g_conn->conn_fsm); + OSMO_ASSERT(g_conn->fi); OSMO_ASSERT(g_conn->vsub); VERBOSE_ASSERT(cm_service_result_sent, == RES_ACCEPT, "%d"); EXPECT_ACCEPTED(true); diff --git a/tests/msc_vlr/msc_vlr_test_rest.c b/tests/msc_vlr/msc_vlr_test_rest.c index 1a403c3..3f843f0 100644 --- a/tests/msc_vlr/msc_vlr_test_rest.c +++ b/tests/msc_vlr/msc_vlr_test_rest.c @@ -36,8 +36,8 @@ btw("conn_fsm present, in state NEW"); OSMO_ASSERT(msc_create_conn_fsm(g_conn, "test") == 0); - OSMO_ASSERT(g_conn->conn_fsm); - OSMO_ASSERT(g_conn->conn_fsm->state == SUBSCR_CONN_S_NEW); + OSMO_ASSERT(g_conn->fi); + OSMO_ASSERT(g_conn->fi->state == SUBSCR_CONN_S_NEW); EXPECT_ACCEPTED(false); thwart_rx_non_initial_requests(); @@ -48,13 +48,13 @@ OSMO_ASSERT(g_conn->vsub); /* mark as silent call so it sticks around */ g_conn->silent_call = 1; - osmo_fsm_inst_state_chg(g_conn->conn_fsm, SUBSCR_CONN_S_ACCEPTED, 0, 0); + osmo_fsm_inst_state_chg(g_conn->fi, SUBSCR_CONN_S_ACCEPTED, 0, 0); EXPECT_CONN_COUNT(1); EXPECT_ACCEPTED(true); btw("CLOSE event marks conn_fsm as released and frees the conn"); expect_bssap_clear(); - osmo_fsm_inst_dispatch(g_conn->conn_fsm, SUBSCR_CONN_E_CN_CLOSE, NULL); + osmo_fsm_inst_dispatch(g_conn->fi, SUBSCR_CONN_E_CN_CLOSE, NULL); VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); EXPECT_CONN_COUNT(0); diff --git a/tests/msc_vlr/msc_vlr_test_umts_authen.c b/tests/msc_vlr/msc_vlr_test_umts_authen.c index b5a55fc..7b410df 100644 --- a/tests/msc_vlr/msc_vlr_test_umts_authen.c +++ b/tests/msc_vlr/msc_vlr_test_umts_authen.c @@ -196,7 +196,7 @@ "03575886" /* classmark 2 */ "089910070000106005" /* IMSI */); OSMO_ASSERT(g_conn); - OSMO_ASSERT(g_conn->conn_fsm); + OSMO_ASSERT(g_conn->fi); OSMO_ASSERT(g_conn->vsub); VERBOSE_ASSERT(cm_service_result_sent, == RES_NONE, "%d"); VERBOSE_ASSERT(auth_request_sent, == true, "%d"); -- To view, visit https://gerrit.osmocom.org/7613 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: If442f2ba78d9722b1065ec30c9a13f372b6a8caa Gerrit-PatchSet: 1 Gerrit-Project: osmo-msc Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr From gerrit-no-reply at lists.osmocom.org Tue Apr 3 00:13:57 2018 From: gerrit-no-reply at lists.osmocom.org (Neels Hofmeyr) Date: Tue, 3 Apr 2018 00:13:57 +0000 Subject: [PATCH] osmo-msc[master]: cosmetic: rename subscr_conn_from to complete_layer3_type Message-ID: Review at https://gerrit.osmocom.org/7614 cosmetic: rename subscr_conn_from to complete_layer3_type 'subscr_conn_from' could mean anything: from what, RAN type? BSS identifier? MM action? Clearly name it as the Complete Layer 3 kind it represents. Related: OS#3122 Change-Id: I6263a80e6db01c2ca48df6c58b05e2fd19347057 --- M include/osmocom/msc/osmo_msc.h M src/libmsc/gsm_04_08.c M src/libmsc/subscr_conn.c 3 files changed, 11 insertions(+), 11 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-msc refs/changes/14/7614/1 diff --git a/include/osmocom/msc/osmo_msc.h b/include/osmocom/msc/osmo_msc.h index 6fe529e..d838e89 100644 --- a/include/osmocom/msc/osmo_msc.h +++ b/include/osmocom/msc/osmo_msc.h @@ -36,17 +36,17 @@ SUBSCR_CONN_S_RELEASED, }; -enum subscr_conn_from { +enum complete_layer3_type { SUBSCR_CONN_FROM_INVALID, SUBSCR_CONN_FROM_LU, SUBSCR_CONN_FROM_CM_SERVICE_REQ, SUBSCR_CONN_FROM_PAGING_RESP, }; -extern const struct value_string subscr_conn_from_names[]; -static inline const char *subscr_conn_from_name(enum subscr_conn_from val) +extern const struct value_string complete_layer3_type_names[]; +static inline const char *complete_layer3_type_name(enum complete_layer3_type val) { - return get_value_string(subscr_conn_from_names, val); + return get_value_string(complete_layer3_type_names, val); } enum msc_compl_l3_rc { diff --git a/src/libmsc/gsm_04_08.c b/src/libmsc/gsm_04_08.c index 1bb6fa7..4624e90 100644 --- a/src/libmsc/gsm_04_08.c +++ b/src/libmsc/gsm_04_08.c @@ -317,7 +317,7 @@ * Keep this function non-static for direct invocation by unit tests. */ int mm_rx_loc_upd_req(struct gsm_subscriber_connection *conn, struct msgb *msg) { - static const enum subscr_conn_from conn_from_lu = SUBSCR_CONN_FROM_LU; + static const enum complete_layer3_type conn_from_lu = SUBSCR_CONN_FROM_LU; struct gsm_network *net = conn->network; struct gsm48_hdr *gh = msgb_l3(msg); struct gsm48_loc_upd_req *lu; @@ -687,7 +687,7 @@ */ int gsm48_rx_mm_serv_req(struct gsm_subscriber_connection *conn, struct msgb *msg) { - static const enum subscr_conn_from conn_from_cm_service_req = + static const enum complete_layer3_type conn_from_cm_service_req = SUBSCR_CONN_FROM_CM_SERVICE_REQ; struct gsm_network *net = conn->network; uint8_t mi_type; @@ -1144,7 +1144,7 @@ /* Receive a PAGING RESPONSE message from the MS */ static int gsm48_rx_rr_pag_resp(struct gsm_subscriber_connection *conn, struct msgb *msg) { - static const enum subscr_conn_from conn_from_paging_resp = + static const enum complete_layer3_type conn_from_paging_resp = SUBSCR_CONN_FROM_PAGING_RESP; struct gsm_network *net = conn->network; struct gsm48_hdr *gh = msgb_l3(msg); diff --git a/src/libmsc/subscr_conn.c b/src/libmsc/subscr_conn.c index 248c463..526ad92 100644 --- a/src/libmsc/subscr_conn.c +++ b/src/libmsc/subscr_conn.c @@ -46,7 +46,7 @@ { 0, NULL } }; -const struct value_string subscr_conn_from_names[] = { +const struct value_string complete_layer3_type_names[] = { OSMO_VALUE_STRING(SUBSCR_CONN_FROM_INVALID), OSMO_VALUE_STRING(SUBSCR_CONN_FROM_LU), OSMO_VALUE_STRING(SUBSCR_CONN_FROM_CM_SERVICE_REQ), @@ -70,12 +70,12 @@ void subscr_conn_fsm_new(struct osmo_fsm_inst *fi, uint32_t event, void *data) { struct gsm_subscriber_connection *conn = fi->priv; - enum subscr_conn_from from = SUBSCR_CONN_FROM_INVALID; + enum complete_layer3_type from = SUBSCR_CONN_FROM_INVALID; bool success; if (data) { - from = *(enum subscr_conn_from*)data; - LOGPFSM(fi, "%s\n", subscr_conn_from_name(from)); + from = *(enum complete_layer3_type*)data; + LOGPFSM(fi, "%s\n", complete_layer3_type_name(from)); } /* If accepted, transition the state, all other cases mean failure. */ -- To view, visit https://gerrit.osmocom.org/7614 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I6263a80e6db01c2ca48df6c58b05e2fd19347057 Gerrit-PatchSet: 1 Gerrit-Project: osmo-msc Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr From gerrit-no-reply at lists.osmocom.org Tue Apr 3 00:13:57 2018 From: gerrit-no-reply at lists.osmocom.org (Neels Hofmeyr) Date: Tue, 3 Apr 2018 00:13:57 +0000 Subject: [PATCH] osmo-msc[master]: subscr_conn: store complete_layer3_type in conn, not FSM eve... Message-ID: Review at https://gerrit.osmocom.org/7615 subscr_conn: store complete_layer3_type in conn, not FSM event arg Instead of jumping through hoops to pass the Complete Layer 3 operation that created this conn via FSM event dispatch parameters, put it right in the gsm_subscriber_connection struct, where it always belonged. Move definition of the enum complete_layer3_type to gsm_data.h, where gsm_subscriber_connection is defined. Introduce msc_subscr_conn_update_id() to set the complete_layer3_type of the conn as soon as a Complete Layer 3 message is received. In msc_subscr_conn_update_id(), already include an mi_string argument to prepare for an upcoming patch where the FSM will be allocated much earlier when the Mobile Identity is not known yet, and we'll also update the fi->id here. The odd logging change in the msc_vlr_tests output uncovers a wrong use of the osmo_fsm_inst_dispatch() data argument for SUBSCR_CONN_E_CN_CLOSE events: if a child FSM signals unsuccessful result, instead of the failure cause, it passed the complete_layer3_type, as requested upon FSM allocation, which was then misinterpreted as a failure cause. Now a child FSM failure will pass NULL instead, while other SUBSCR_CONN_E_CN_CLOSE events may still pass a valid cause value. Related: OS#3122 Change-Id: Iae30dd57a8861c4eaaf56999f872d4e635ba97fb --- M include/osmocom/msc/gsm_data.h M include/osmocom/msc/osmo_msc.h M src/libmsc/gsm_04_08.c M src/libmsc/subscr_conn.c M tests/msc_vlr/msc_vlr_test_authen_reuse.err M tests/msc_vlr/msc_vlr_test_call.err M tests/msc_vlr/msc_vlr_test_gsm_authen.err M tests/msc_vlr/msc_vlr_test_gsm_ciph.err M tests/msc_vlr/msc_vlr_test_hlr_reject.err M tests/msc_vlr/msc_vlr_test_hlr_timeout.err M tests/msc_vlr/msc_vlr_test_ms_timeout.err M tests/msc_vlr/msc_vlr_test_no_authen.err M tests/msc_vlr/msc_vlr_test_reject_concurrency.err M tests/msc_vlr/msc_vlr_test_rest.err M tests/msc_vlr/msc_vlr_test_umts_authen.err 15 files changed, 163 insertions(+), 182 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-msc refs/changes/15/7615/1 diff --git a/include/osmocom/msc/gsm_data.h b/include/osmocom/msc/gsm_data.h index df15eea..29abd5d 100644 --- a/include/osmocom/msc/gsm_data.h +++ b/include/osmocom/msc/gsm_data.h @@ -70,6 +70,19 @@ INTEGRITY_PROTECTION_IK_CK = 2, }; +enum complete_layer3_type { + COMPLETE_LAYER3_NONE, + COMPLETE_LAYER3_LU, + COMPLETE_LAYER3_CM_SERVICE_REQ, + COMPLETE_LAYER3_PAGING_RESP, +}; + +extern const struct value_string complete_layer3_type_names[]; +static inline const char *complete_layer3_type_name(enum complete_layer3_type val) +{ + return get_value_string(complete_layer3_type_names, val); +} + /* active radio connection of a mobile subscriber */ struct gsm_subscriber_connection { /* global linked list of subscriber_connections */ @@ -77,6 +90,7 @@ /* FSM instance to control the subscriber connection's permissions and lifetime. */ struct osmo_fsm_inst *fi; + enum complete_layer3_type complete_layer3_type; /* usage count. If this drops to zero, we start the release * towards A/Iu */ diff --git a/include/osmocom/msc/osmo_msc.h b/include/osmocom/msc/osmo_msc.h index d838e89..fb525e0 100644 --- a/include/osmocom/msc/osmo_msc.h +++ b/include/osmocom/msc/osmo_msc.h @@ -36,24 +36,13 @@ SUBSCR_CONN_S_RELEASED, }; -enum complete_layer3_type { - SUBSCR_CONN_FROM_INVALID, - SUBSCR_CONN_FROM_LU, - SUBSCR_CONN_FROM_CM_SERVICE_REQ, - SUBSCR_CONN_FROM_PAGING_RESP, -}; - -extern const struct value_string complete_layer3_type_names[]; -static inline const char *complete_layer3_type_name(enum complete_layer3_type val) -{ - return get_value_string(complete_layer3_type_names, val); -} - enum msc_compl_l3_rc { MSC_CONN_ACCEPT = 0, MSC_CONN_REJECT = 1, }; +void msc_subscr_conn_update_id(struct gsm_subscriber_connection *conn, + enum complete_layer3_type from, const char *id); char *msc_subscr_conn_get_conn_id(struct gsm_subscriber_connection *conn); int msc_create_conn_fsm(struct gsm_subscriber_connection *conn, const char *id); diff --git a/src/libmsc/gsm_04_08.c b/src/libmsc/gsm_04_08.c index 4624e90..a90ff17 100644 --- a/src/libmsc/gsm_04_08.c +++ b/src/libmsc/gsm_04_08.c @@ -317,7 +317,6 @@ * Keep this function non-static for direct invocation by unit tests. */ int mm_rx_loc_upd_req(struct gsm_subscriber_connection *conn, struct msgb *msg) { - static const enum complete_layer3_type conn_from_lu = SUBSCR_CONN_FROM_LU; struct gsm_network *net = conn->network; struct gsm48_hdr *gh = msgb_l3(msg); struct gsm48_loc_upd_req *lu; @@ -341,6 +340,8 @@ if (rc) /* logging already happened in msc_create_conn_fsm() */ return rc; + + msc_subscr_conn_update_id(conn, COMPLETE_LAYER3_LU, mi_string); conn->classmark.classmark1 = lu->classmark1; conn->classmark.classmark1_set = true; @@ -394,9 +395,7 @@ is_utran = (conn->via_ran == RAN_UTRAN_IU); lu_fsm = vlr_loc_update(conn->fi, - SUBSCR_CONN_E_ACCEPTED, - SUBSCR_CONN_E_CN_CLOSE, - (void*)&conn_from_lu, + SUBSCR_CONN_E_ACCEPTED, SUBSCR_CONN_E_CN_CLOSE, NULL, net->vlr, conn, vlr_lu_type, tmsi, imsi, &old_lai, &new_lai, is_utran || conn->network->authentication_required, @@ -671,6 +670,7 @@ DEBUGP(DMM, "%s: re-using already accepted connection\n", vlr_subscr_name(conn->vsub)); conn->received_cm_service_request = true; + msc_subscr_conn_update_id(conn, conn->complete_layer3_type, mi_string); return conn->network->vlr->ops.tx_cm_serv_acc(conn); } @@ -687,8 +687,6 @@ */ int gsm48_rx_mm_serv_req(struct gsm_subscriber_connection *conn, struct msgb *msg) { - static const enum complete_layer3_type conn_from_cm_service_req = - SUBSCR_CONN_FROM_CM_SERVICE_REQ; struct gsm_network *net = conn->network; uint8_t mi_type; char mi_string[GSM48_MI_SIZE]; @@ -774,12 +772,11 @@ /* logging already happened in msc_create_conn_fsm() */ return rc; } + msc_subscr_conn_update_id(conn, COMPLETE_LAYER3_CM_SERVICE_REQ, mi_string); is_utran = (conn->via_ran == RAN_UTRAN_IU); vlr_proc_acc_req(conn->fi, - SUBSCR_CONN_E_ACCEPTED, - SUBSCR_CONN_E_CN_CLOSE, - (void*)&conn_from_cm_service_req, + SUBSCR_CONN_E_ACCEPTED, SUBSCR_CONN_E_CN_CLOSE, NULL, net->vlr, conn, VLR_PR_ARQ_T_CM_SERV_REQ, mi-1, &lai, is_utran || conn->network->authentication_required, @@ -1144,8 +1141,6 @@ /* Receive a PAGING RESPONSE message from the MS */ static int gsm48_rx_rr_pag_resp(struct gsm_subscriber_connection *conn, struct msgb *msg) { - static const enum complete_layer3_type conn_from_paging_resp = - SUBSCR_CONN_FROM_PAGING_RESP; struct gsm_network *net = conn->network; struct gsm48_hdr *gh = msgb_l3(msg); struct gsm48_pag_resp *resp; @@ -1176,15 +1171,14 @@ if (rc) /* logging already happened in msc_create_conn_fsm() */ return rc; + msc_subscr_conn_update_id(conn, COMPLETE_LAYER3_PAGING_RESP, mi_string); memcpy(conn->classmark.classmark2, classmark2_lv+1, *classmark2_lv); conn->classmark.classmark2_len = *classmark2_lv; is_utran = (conn->via_ran == RAN_UTRAN_IU); vlr_proc_acc_req(conn->fi, - SUBSCR_CONN_E_ACCEPTED, - SUBSCR_CONN_E_CN_CLOSE, - (void*)&conn_from_paging_resp, + SUBSCR_CONN_E_ACCEPTED, SUBSCR_CONN_E_CN_CLOSE, NULL, net->vlr, conn, VLR_PR_ARQ_T_PAGING_RESP, mi_lv, &lai, is_utran || conn->network->authentication_required, diff --git a/src/libmsc/subscr_conn.c b/src/libmsc/subscr_conn.c index 526ad92..fc89a66 100644 --- a/src/libmsc/subscr_conn.c +++ b/src/libmsc/subscr_conn.c @@ -46,14 +46,6 @@ { 0, NULL } }; -const struct value_string complete_layer3_type_names[] = { - OSMO_VALUE_STRING(SUBSCR_CONN_FROM_INVALID), - OSMO_VALUE_STRING(SUBSCR_CONN_FROM_LU), - OSMO_VALUE_STRING(SUBSCR_CONN_FROM_CM_SERVICE_REQ), - OSMO_VALUE_STRING(SUBSCR_CONN_FROM_PAGING_RESP), - { 0, NULL } -}; - static void paging_event(struct gsm_subscriber_connection *conn, enum gsm_paging_event pe) { @@ -70,13 +62,7 @@ void subscr_conn_fsm_new(struct osmo_fsm_inst *fi, uint32_t event, void *data) { struct gsm_subscriber_connection *conn = fi->priv; - enum complete_layer3_type from = SUBSCR_CONN_FROM_INVALID; bool success; - - if (data) { - from = *(enum complete_layer3_type*)data; - LOGPFSM(fi, "%s\n", complete_layer3_type_name(from)); - } /* If accepted, transition the state, all other cases mean failure. */ switch (event) { @@ -103,13 +89,13 @@ success = (fi->state == SUBSCR_CONN_S_ACCEPTED); - if (from == SUBSCR_CONN_FROM_LU) + if (conn->complete_layer3_type == COMPLETE_LAYER3_LU) rate_ctr_inc(&conn->network->msc_ctrs->ctr[ success ? MSC_CTR_LOC_UPDATE_COMPLETED : MSC_CTR_LOC_UPDATE_FAILED]); /* signal paging success or failure in case this was a paging */ - if (from == SUBSCR_CONN_FROM_PAGING_RESP) + if (conn->complete_layer3_type == COMPLETE_LAYER3_PAGING_RESP) paging_event(conn, success ? GSM_PAGING_SUCCEEDED : GSM_PAGING_EXPIRED); @@ -125,7 +111,7 @@ return; } - if (from == SUBSCR_CONN_FROM_CM_SERVICE_REQ) { + if (conn->complete_layer3_type == COMPLETE_LAYER3_CM_SERVICE_REQ) { conn->received_cm_service_request = true; LOGPFSML(fi, LOGL_DEBUG, "received_cm_service_request = true\n"); } @@ -382,3 +368,19 @@ { osmo_fsm_register(&subscr_conn_fsm); } + +const struct value_string complete_layer3_type_names[] = { + { COMPLETE_LAYER3_NONE, "NONE" }, + { COMPLETE_LAYER3_LU, "LU" }, + { COMPLETE_LAYER3_CM_SERVICE_REQ, "CM_SERVICE_REQ" }, + { COMPLETE_LAYER3_PAGING_RESP, "PAGING_RESP" }, + { 0, NULL } +}; + +void msc_subscr_conn_update_id(struct gsm_subscriber_connection *conn, + enum complete_layer3_type from, const char *id) +{ + conn->complete_layer3_type = from; + osmo_fsm_inst_update_id(conn->fi, id); + LOGPFSML(conn->fi, LOGL_DEBUG, "Updated ID from %s\n", complete_layer3_type_name(from)); +} diff --git a/tests/msc_vlr/msc_vlr_test_authen_reuse.err b/tests/msc_vlr/msc_vlr_test_authen_reuse.err index 4f8432a..e96fce8 100644 --- a/tests/msc_vlr/msc_vlr_test_authen_reuse.err +++ b/tests/msc_vlr/msc_vlr_test_authen_reuse.err @@ -11,6 +11,7 @@ DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Updated ID from LU DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000010650 type=NORMAL DMM LU/new-LAC: 0/23 DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_IDLE}: Allocated @@ -156,7 +157,6 @@ DVLR lu_compl_vlr_fsm(901700000010650){LU_COMPL_VLR_S_DONE}: Deallocated DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_RELEASE_WHEN_UNUSED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: subscr_conn_fsm_release_when_unused: releasing conn @@ -194,6 +194,7 @@ DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Updated ID from CM_SERVICE_REQ DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: Allocated DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: is child of Subscr_Conn(901700000010650) DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: rev=R99 net=GERAN Auth (no Ciph) @@ -243,7 +244,6 @@ DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED - sending CM Service Accept for MSISDN:42342 DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_CM_SERVICE_REQ DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: received_cm_service_request = true DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_RELEASE_WHEN_UNUSED @@ -301,6 +301,7 @@ DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Updated ID from CM_SERVICE_REQ DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: Allocated DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: is child of Subscr_Conn(901700000010650) DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: rev=R99 net=GERAN Auth (no Ciph) @@ -364,7 +365,6 @@ DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED - sending CM Service Accept for MSISDN:42342 DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_CM_SERVICE_REQ DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: received_cm_service_request = true DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_RELEASE_WHEN_UNUSED @@ -439,6 +439,7 @@ DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Updated ID from LU DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000010650 type=NORMAL DMM LU/new-LAC: 0/23 DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_IDLE}: Allocated @@ -596,7 +597,6 @@ DVLR lu_compl_vlr_fsm(901700000010650){LU_COMPL_VLR_S_DONE}: Deallocated DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_RELEASE_WHEN_UNUSED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: subscr_conn_fsm_release_when_unused: releasing conn @@ -634,6 +634,7 @@ DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Updated ID from CM_SERVICE_REQ DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: Allocated DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: is child of Subscr_Conn(901700000010650) DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: rev=R99 net=UTRAN Auth+Ciph @@ -696,7 +697,6 @@ DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_WAIT_CIPH}: state_chg to PR_ARQ_S_DONE DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_CM_SERVICE_REQ DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: received_cm_service_request = true DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_RELEASE_WHEN_UNUSED @@ -751,6 +751,7 @@ DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Updated ID from CM_SERVICE_REQ DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: Allocated DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: is child of Subscr_Conn(901700000010650) DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: rev=R99 net=UTRAN Auth+Ciph @@ -827,7 +828,6 @@ DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_WAIT_CIPH}: state_chg to PR_ARQ_S_DONE DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_CM_SERVICE_REQ DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: received_cm_service_request = true DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_RELEASE_WHEN_UNUSED @@ -899,6 +899,7 @@ DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Updated ID from LU DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000010650 type=NORMAL DMM LU/new-LAC: 0/23 DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_IDLE}: Allocated @@ -1044,7 +1045,6 @@ DVLR lu_compl_vlr_fsm(901700000010650){LU_COMPL_VLR_S_DONE}: Deallocated DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_RELEASE_WHEN_UNUSED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: subscr_conn_fsm_release_when_unused: releasing conn @@ -1082,6 +1082,7 @@ DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Updated ID from CM_SERVICE_REQ DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: Allocated DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: is child of Subscr_Conn(901700000010650) DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: rev=R99 net=GERAN Auth (no Ciph) @@ -1131,7 +1132,6 @@ DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED - sending CM Service Accept for MSISDN:42342 DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_CM_SERVICE_REQ DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: received_cm_service_request = true DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_RELEASE_WHEN_UNUSED @@ -1189,6 +1189,7 @@ DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Updated ID from CM_SERVICE_REQ DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: Allocated DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: is child of Subscr_Conn(901700000010650) DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: rev=R99 net=GERAN Auth (no Ciph) @@ -1238,7 +1239,6 @@ DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED - sending CM Service Accept for MSISDN:42342 DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_CM_SERVICE_REQ DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: received_cm_service_request = true DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_RELEASE_WHEN_UNUSED @@ -1296,6 +1296,7 @@ DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Updated ID from CM_SERVICE_REQ DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: Allocated DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: is child of Subscr_Conn(901700000010650) DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: rev=R99 net=GERAN Auth (no Ciph) @@ -1345,7 +1346,6 @@ DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED - sending CM Service Accept for MSISDN:42342 DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_CM_SERVICE_REQ DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: received_cm_service_request = true DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_RELEASE_WHEN_UNUSED @@ -1420,6 +1420,7 @@ DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Updated ID from LU DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000010650 type=NORMAL DMM LU/new-LAC: 0/23 DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_IDLE}: Allocated @@ -1577,7 +1578,6 @@ DVLR lu_compl_vlr_fsm(901700000010650){LU_COMPL_VLR_S_DONE}: Deallocated DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_RELEASE_WHEN_UNUSED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: subscr_conn_fsm_release_when_unused: releasing conn @@ -1615,6 +1615,7 @@ DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Updated ID from CM_SERVICE_REQ DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: Allocated DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: is child of Subscr_Conn(901700000010650) DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: rev=R99 net=UTRAN Auth+Ciph @@ -1677,7 +1678,6 @@ DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_WAIT_CIPH}: state_chg to PR_ARQ_S_DONE DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_CM_SERVICE_REQ DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: received_cm_service_request = true DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_RELEASE_WHEN_UNUSED @@ -1732,6 +1732,7 @@ DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Updated ID from CM_SERVICE_REQ DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: Allocated DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: is child of Subscr_Conn(901700000010650) DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: rev=R99 net=UTRAN Auth+Ciph @@ -1794,7 +1795,6 @@ DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_WAIT_CIPH}: state_chg to PR_ARQ_S_DONE DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_CM_SERVICE_REQ DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: received_cm_service_request = true DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_RELEASE_WHEN_UNUSED @@ -1849,6 +1849,7 @@ DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Updated ID from CM_SERVICE_REQ DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: Allocated DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: is child of Subscr_Conn(901700000010650) DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: rev=R99 net=UTRAN Auth+Ciph @@ -1911,7 +1912,6 @@ DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_WAIT_CIPH}: state_chg to PR_ARQ_S_DONE DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_CM_SERVICE_REQ DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: received_cm_service_request = true DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_RELEASE_WHEN_UNUSED @@ -1983,6 +1983,7 @@ DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Updated ID from LU DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000010650 type=NORMAL DMM LU/new-LAC: 0/23 DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_IDLE}: Allocated @@ -2128,7 +2129,6 @@ DVLR lu_compl_vlr_fsm(901700000010650){LU_COMPL_VLR_S_DONE}: Deallocated DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_RELEASE_WHEN_UNUSED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: subscr_conn_fsm_release_when_unused: releasing conn @@ -2166,6 +2166,7 @@ DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Updated ID from CM_SERVICE_REQ DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: Allocated DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: is child of Subscr_Conn(901700000010650) DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: rev=R99 net=GERAN Auth (no Ciph) @@ -2229,7 +2230,6 @@ DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED - sending CM Service Accept for MSISDN:42342 DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_CM_SERVICE_REQ DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: received_cm_service_request = true DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_RELEASE_WHEN_UNUSED @@ -2304,6 +2304,7 @@ DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Updated ID from LU DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000010650 type=NORMAL DMM LU/new-LAC: 0/23 DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_IDLE}: Allocated @@ -2461,7 +2462,6 @@ DVLR lu_compl_vlr_fsm(901700000010650){LU_COMPL_VLR_S_DONE}: Deallocated DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_RELEASE_WHEN_UNUSED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: subscr_conn_fsm_release_when_unused: releasing conn @@ -2499,6 +2499,7 @@ DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Updated ID from CM_SERVICE_REQ DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: Allocated DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: is child of Subscr_Conn(901700000010650) DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: rev=R99 net=UTRAN Auth+Ciph @@ -2575,7 +2576,6 @@ DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_WAIT_CIPH}: state_chg to PR_ARQ_S_DONE DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_CM_SERVICE_REQ DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: received_cm_service_request = true DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_RELEASE_WHEN_UNUSED diff --git a/tests/msc_vlr/msc_vlr_test_call.err b/tests/msc_vlr/msc_vlr_test_call.err index 1a21c6b..281f418 100644 --- a/tests/msc_vlr/msc_vlr_test_call.err +++ b/tests/msc_vlr/msc_vlr_test_call.err @@ -12,6 +12,7 @@ DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Updated ID from LU DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000010650 type=NORMAL DMM LU/new-LAC: 23/23 DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_IDLE}: Allocated @@ -153,7 +154,6 @@ DVLR lu_compl_vlr_fsm(901700000010650){LU_COMPL_VLR_S_DONE}: Deallocated DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_RELEASE_WHEN_UNUSED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: subscr_conn_fsm_release_when_unused: releasing conn @@ -191,6 +191,7 @@ DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Updated ID from CM_SERVICE_REQ DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: Allocated DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: is child of Subscr_Conn(901700000010650) DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: rev=R99 net=UTRAN Auth+Ciph @@ -255,7 +256,6 @@ DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_WAIT_CIPH}: state_chg to PR_ARQ_S_DONE DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_CM_SERVICE_REQ DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: received_cm_service_request = true DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_RELEASE_WHEN_UNUSED @@ -386,6 +386,7 @@ DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Updated ID from LU DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000010650 type=NORMAL DMM LU/new-LAC: 23/23 DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_IDLE}: Allocated @@ -527,7 +528,6 @@ DVLR lu_compl_vlr_fsm(901700000010650){LU_COMPL_VLR_S_DONE}: Deallocated DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_RELEASE_WHEN_UNUSED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: subscr_conn_fsm_release_when_unused: releasing conn @@ -577,6 +577,7 @@ DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Updated ID from PAGING_RESP DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: Allocated DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: is child of Subscr_Conn(901700000010650) DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: rev=R99 net=UTRAN Auth+Ciph @@ -637,7 +638,6 @@ DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_WAIT_CIPH}: state_chg to PR_ARQ_S_DONE DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_PAGING_RESP DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED DPAG Paging success for MSISDN:42342 (event=0) DPAG Calling paging cbfn. @@ -768,6 +768,7 @@ DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Updated ID from LU DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000010650 type=NORMAL DMM LU/new-LAC: 23/23 DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_IDLE}: Allocated @@ -909,7 +910,6 @@ DVLR lu_compl_vlr_fsm(901700000010650){LU_COMPL_VLR_S_DONE}: Deallocated DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_RELEASE_WHEN_UNUSED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: subscr_conn_fsm_release_when_unused: releasing conn @@ -947,6 +947,7 @@ DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Updated ID from CM_SERVICE_REQ DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: Allocated DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: is child of Subscr_Conn(901700000010650) DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: rev=R99 net=UTRAN Auth+Ciph @@ -1011,7 +1012,6 @@ DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_WAIT_CIPH}: state_chg to PR_ARQ_S_DONE DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_CM_SERVICE_REQ DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: received_cm_service_request = true DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_RELEASE_WHEN_UNUSED @@ -1104,6 +1104,7 @@ DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Updated ID from LU DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000010650 type=NORMAL DMM LU/new-LAC: 23/23 DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_IDLE}: Allocated @@ -1245,7 +1246,6 @@ DVLR lu_compl_vlr_fsm(901700000010650){LU_COMPL_VLR_S_DONE}: Deallocated DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_RELEASE_WHEN_UNUSED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: subscr_conn_fsm_release_when_unused: releasing conn @@ -1283,6 +1283,7 @@ DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Updated ID from CM_SERVICE_REQ DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: Allocated DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: is child of Subscr_Conn(901700000010650) DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: rev=R99 net=UTRAN Auth+Ciph @@ -1347,7 +1348,6 @@ DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_WAIT_CIPH}: state_chg to PR_ARQ_S_DONE DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_CM_SERVICE_REQ DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: received_cm_service_request = true DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_RELEASE_WHEN_UNUSED diff --git a/tests/msc_vlr/msc_vlr_test_gsm_authen.err b/tests/msc_vlr/msc_vlr_test_gsm_authen.err index ff9f869..35bda27 100644 --- a/tests/msc_vlr/msc_vlr_test_gsm_authen.err +++ b/tests/msc_vlr/msc_vlr_test_gsm_authen.err @@ -11,6 +11,7 @@ DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Updated ID from LU DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000004620 type=IMSI ATTACH DMM LU/new-LAC: 1/23 DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Allocated @@ -142,7 +143,6 @@ DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Deallocated DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_RELEASE_WHEN_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: subscr_conn_fsm_release_when_unused: releasing conn @@ -177,6 +177,7 @@ DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Updated ID from CM_SERVICE_REQ DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: Allocated DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: is child of Subscr_Conn(901700000004620) DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: rev=GSM net=GERAN Auth (no Ciph) @@ -236,7 +237,6 @@ DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED - sending CM Service Accept for MSISDN:46071 DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_CM_SERVICE_REQ DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: received_cm_service_request = true DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_RELEASE_WHEN_UNUSED @@ -305,6 +305,7 @@ DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Updated ID from PAGING_RESP DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: Allocated DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: is child of Subscr_Conn(901700000004620) DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: rev=GSM net=GERAN Auth (no Ciph) @@ -362,7 +363,6 @@ DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_WAIT_AUTH}: state_chg to PR_ARQ_S_DONE DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_PAGING_RESP DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED DPAG Paging success for MSISDN:46071 (event=0) DPAG Calling paging cbfn. @@ -460,6 +460,7 @@ DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Updated ID from LU DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000004620 type=IMSI ATTACH DMM LU/new-LAC: 1/23 DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Allocated @@ -622,7 +623,6 @@ DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Deallocated DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_RELEASE_WHEN_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: subscr_conn_fsm_release_when_unused: releasing conn @@ -662,6 +662,7 @@ DMM Subscr_Conn(50462976){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(50462976){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(50462976){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(50462976){SUBSCR_CONN_S_NEW}: Updated ID from CM_SERVICE_REQ DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_INIT}: Allocated DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_INIT}: is child of Subscr_Conn(50462976) DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_INIT}: rev=GSM net=GERAN Auth (no Ciph) @@ -721,7 +722,6 @@ DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED - sending CM Service Accept for MSISDN:46071 DMM Subscr_Conn(50462976){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(50462976){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_CM_SERVICE_REQ DMM Subscr_Conn(50462976){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED DMM Subscr_Conn(50462976){SUBSCR_CONN_S_ACCEPTED}: received_cm_service_request = true DMM Subscr_Conn(50462976){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_RELEASE_WHEN_UNUSED @@ -790,6 +790,7 @@ DMM Subscr_Conn(50462976){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(50462976){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(50462976){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(50462976){SUBSCR_CONN_S_NEW}: Updated ID from PAGING_RESP DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_INIT}: Allocated DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_INIT}: is child of Subscr_Conn(50462976) DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_INIT}: rev=GSM net=GERAN Auth (no Ciph) @@ -847,7 +848,6 @@ DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_WAIT_AUTH}: state_chg to PR_ARQ_S_DONE DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED DMM Subscr_Conn(50462976){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(50462976){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_PAGING_RESP DMM Subscr_Conn(50462976){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED DPAG Paging success for MSISDN:46071 (event=0) DPAG Calling paging cbfn. @@ -923,6 +923,7 @@ DMM Subscr_Conn(50462976){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(50462976){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(50462976){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(50462976){SUBSCR_CONN_S_NEW}: Updated ID from LU DMM LOCATION UPDATING REQUEST: MI(TMSI)=50462976 type=IMSI ATTACH DMM LU/new-LAC: 1/23 DVLR vlr_lu_fsm(50462976){VLR_ULA_S_IDLE}: Allocated @@ -1051,7 +1052,6 @@ DVLR lu_compl_vlr_fsm(50462976){LU_COMPL_VLR_S_DONE}: Deallocated DVLR vlr_lu_fsm(50462976){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE DMM Subscr_Conn(50462976){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(50462976){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU DMM Subscr_Conn(50462976){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED DMM Subscr_Conn(50462976){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_RELEASE_WHEN_UNUSED DMM Subscr_Conn(50462976){SUBSCR_CONN_S_ACCEPTED}: subscr_conn_fsm_release_when_unused: releasing conn @@ -1113,6 +1113,7 @@ DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Updated ID from LU DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000004620 type=IMSI ATTACH DMM LU/new-LAC: 1/23 DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Allocated @@ -1273,7 +1274,6 @@ DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Deallocated DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_RELEASE_WHEN_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: subscr_conn_fsm_release_when_unused: releasing conn @@ -1333,6 +1333,7 @@ DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Updated ID from LU DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000004620 type=IMSI ATTACH DMM LU/new-LAC: 1/23 DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Allocated @@ -1524,7 +1525,6 @@ DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Deallocated DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_RELEASE_WHEN_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: subscr_conn_fsm_release_when_unused: releasing conn @@ -1584,6 +1584,7 @@ DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Updated ID from LU DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000010650 type=NORMAL DMM LU/new-LAC: 0/23 DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_IDLE}: Allocated @@ -1696,7 +1697,6 @@ DVLR lu_compl_vlr_fsm(901700000010650){LU_COMPL_VLR_S_DONE}: Deallocated DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_RELEASE_WHEN_UNUSED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: subscr_conn_fsm_release_when_unused: releasing conn @@ -1731,6 +1731,7 @@ DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Updated ID from CM_SERVICE_REQ DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: Allocated DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: is child of Subscr_Conn(901700000010650) DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: rev=GSM net=GERAN Auth (no Ciph) @@ -1790,7 +1791,6 @@ DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED - sending CM Service Accept for MSISDN:42342 DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_CM_SERVICE_REQ DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: received_cm_service_request = true DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_RELEASE_WHEN_UNUSED @@ -1859,6 +1859,7 @@ DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Updated ID from PAGING_RESP DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: Allocated DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: is child of Subscr_Conn(901700000010650) DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: rev=GSM net=GERAN Auth (no Ciph) @@ -1916,7 +1917,6 @@ DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_WAIT_AUTH}: state_chg to PR_ARQ_S_DONE DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_PAGING_RESP DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED DPAG Paging success for MSISDN:42342 (event=0) DPAG Calling paging cbfn. @@ -2015,6 +2015,7 @@ DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Updated ID from LU DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000004620 type=IMSI ATTACH DMM LU/new-LAC: 1/23 DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Allocated @@ -2093,8 +2094,6 @@ - sending LU Reject for IMSI:901700000004620, cause 3 DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_AUTH}: state_chg to VLR_ULA_S_DONE DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_CN_CLOSE -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Close event, cause 1 DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT) diff --git a/tests/msc_vlr/msc_vlr_test_gsm_ciph.err b/tests/msc_vlr/msc_vlr_test_gsm_ciph.err index b75ecc2..632f13e 100644 --- a/tests/msc_vlr/msc_vlr_test_gsm_ciph.err +++ b/tests/msc_vlr/msc_vlr_test_gsm_ciph.err @@ -11,6 +11,7 @@ DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Updated ID from LU DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000004620 type=IMSI ATTACH DMM LU/new-LAC: 1/23 DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Allocated @@ -146,7 +147,6 @@ DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Deallocated DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_RELEASE_WHEN_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: subscr_conn_fsm_release_when_unused: releasing conn @@ -181,6 +181,7 @@ DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Updated ID from CM_SERVICE_REQ DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: Allocated DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: is child of Subscr_Conn(901700000004620) DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: rev=GSM net=GERAN Auth+Ciph @@ -265,7 +266,6 @@ DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_WAIT_CIPH}: state_chg to PR_ARQ_S_DONE DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_CM_SERVICE_REQ DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: received_cm_service_request = true DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_RELEASE_WHEN_UNUSED @@ -331,6 +331,7 @@ DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Updated ID from PAGING_RESP DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: Allocated DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: is child of Subscr_Conn(901700000004620) DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: rev=GSM net=GERAN Auth+Ciph @@ -413,7 +414,6 @@ DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_WAIT_CIPH}: state_chg to PR_ARQ_S_DONE DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_PAGING_RESP DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED DPAG Paging success for MSISDN:46071 (event=0) DPAG Calling paging cbfn. @@ -508,6 +508,7 @@ DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Updated ID from LU DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000004620 type=IMSI ATTACH DMM LU/new-LAC: 1/23 DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Allocated @@ -675,7 +676,6 @@ DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Deallocated DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_RELEASE_WHEN_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: subscr_conn_fsm_release_when_unused: releasing conn @@ -715,6 +715,7 @@ DMM Subscr_Conn(50462976){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(50462976){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(50462976){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(50462976){SUBSCR_CONN_S_NEW}: Updated ID from CM_SERVICE_REQ DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_INIT}: Allocated DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_INIT}: is child of Subscr_Conn(50462976) DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_INIT}: rev=GSM net=GERAN Auth+Ciph @@ -799,7 +800,6 @@ DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_WAIT_CIPH}: state_chg to PR_ARQ_S_DONE DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED DMM Subscr_Conn(50462976){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(50462976){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_CM_SERVICE_REQ DMM Subscr_Conn(50462976){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED DMM Subscr_Conn(50462976){SUBSCR_CONN_S_ACCEPTED}: received_cm_service_request = true DMM Subscr_Conn(50462976){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_RELEASE_WHEN_UNUSED @@ -865,6 +865,7 @@ DMM Subscr_Conn(50462976){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(50462976){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(50462976){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(50462976){SUBSCR_CONN_S_NEW}: Updated ID from PAGING_RESP DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_INIT}: Allocated DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_INIT}: is child of Subscr_Conn(50462976) DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_INIT}: rev=GSM net=GERAN Auth+Ciph @@ -947,7 +948,6 @@ DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_WAIT_CIPH}: state_chg to PR_ARQ_S_DONE DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED DMM Subscr_Conn(50462976){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(50462976){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_PAGING_RESP DMM Subscr_Conn(50462976){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED DPAG Paging success for MSISDN:46071 (event=0) DPAG Calling paging cbfn. @@ -1042,6 +1042,7 @@ DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Updated ID from LU DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000004620 type=IMSI ATTACH DMM LU/new-LAC: 1/23 DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Allocated @@ -1206,7 +1207,6 @@ DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Deallocated DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_RELEASE_WHEN_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: subscr_conn_fsm_release_when_unused: releasing conn @@ -1266,6 +1266,7 @@ DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Updated ID from LU DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000004620 type=IMSI ATTACH DMM LU/new-LAC: 1/23 DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Allocated @@ -1422,7 +1423,6 @@ DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Deallocated DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_RELEASE_WHEN_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: subscr_conn_fsm_release_when_unused: releasing conn @@ -1479,6 +1479,7 @@ DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Updated ID from LU DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000004620 type=IMSI ATTACH DMM LU/new-LAC: 1/23 DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Allocated @@ -1674,7 +1675,6 @@ DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Deallocated DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_RELEASE_WHEN_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: subscr_conn_fsm_release_when_unused: releasing conn @@ -1734,6 +1734,7 @@ DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Updated ID from LU DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000010650 type=NORMAL DMM LU/new-LAC: 0/23 DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_IDLE}: Allocated @@ -1858,7 +1859,6 @@ DVLR lu_compl_vlr_fsm(901700000010650){LU_COMPL_VLR_S_DONE}: Deallocated DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_RELEASE_WHEN_UNUSED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: subscr_conn_fsm_release_when_unused: releasing conn @@ -1893,6 +1893,7 @@ DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Updated ID from CM_SERVICE_REQ DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: Allocated DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: is child of Subscr_Conn(901700000010650) DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: rev=R99 net=GERAN Auth+Ciph @@ -1967,7 +1968,6 @@ DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_WAIT_CIPH}: state_chg to PR_ARQ_S_DONE DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_CM_SERVICE_REQ DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: received_cm_service_request = true DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_RELEASE_WHEN_UNUSED @@ -2033,6 +2033,7 @@ DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Updated ID from PAGING_RESP DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: Allocated DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: is child of Subscr_Conn(901700000010650) DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: rev=R99 net=GERAN Auth+Ciph @@ -2105,7 +2106,6 @@ DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_WAIT_CIPH}: state_chg to PR_ARQ_S_DONE DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_PAGING_RESP DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED DPAG Paging success for MSISDN:42342 (event=0) DPAG Calling paging cbfn. @@ -2200,6 +2200,7 @@ DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Updated ID from LU DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000004620 type=IMSI ATTACH DMM LU/new-LAC: 1/23 DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Allocated @@ -2263,8 +2264,6 @@ - sending LU Reject for IMSI:901700000004620, cause 17 DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_AUTH}: state_chg to VLR_ULA_S_DONE DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_CN_CLOSE -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Close event, cause 1 DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT) diff --git a/tests/msc_vlr/msc_vlr_test_hlr_reject.err b/tests/msc_vlr/msc_vlr_test_hlr_reject.err index 8a7f90d..18dc7f1 100644 --- a/tests/msc_vlr/msc_vlr_test_hlr_reject.err +++ b/tests/msc_vlr/msc_vlr_test_hlr_reject.err @@ -11,6 +11,7 @@ DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Updated ID from LU DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000004620 type=IMSI ATTACH DMM LU/new-LAC: 1/23 DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Allocated @@ -49,8 +50,6 @@ - sending LU Reject for IMSI:901700000004620, cause 2 DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_AUTH}: state_chg to VLR_ULA_S_DONE DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_CN_CLOSE -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Close event, cause 1 DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT) @@ -87,6 +86,7 @@ DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Updated ID from LU DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000004620 type=IMSI ATTACH DMM LU/new-LAC: 1/23 DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Allocated @@ -125,8 +125,6 @@ - sending LU Reject for IMSI:901700000004620, cause 17 DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_AUTH}: state_chg to VLR_ULA_S_DONE DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_CN_CLOSE -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Close event, cause 1 DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT) @@ -165,6 +163,7 @@ DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Updated ID from LU DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000004620 type=IMSI ATTACH DMM LU/new-LAC: 1/23 DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Allocated @@ -277,7 +276,6 @@ DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Deallocated DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_RELEASE_WHEN_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: subscr_conn_fsm_release_when_unused: releasing conn @@ -317,6 +315,7 @@ DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Updated ID from LU DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000004620 type=IMSI ATTACH DMM LU/new-LAC: 1/23 DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Allocated @@ -426,7 +425,6 @@ DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Deallocated DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_RELEASE_WHEN_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: subscr_conn_fsm_release_when_unused: releasing conn @@ -468,6 +466,7 @@ DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Updated ID from LU DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000004620 type=IMSI ATTACH DMM LU/new-LAC: 1/23 DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Allocated @@ -580,7 +579,6 @@ DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Deallocated DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_RELEASE_WHEN_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: subscr_conn_fsm_release_when_unused: releasing conn @@ -620,6 +618,7 @@ DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Updated ID from LU DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000004620 type=IMSI ATTACH DMM LU/new-LAC: 1/23 DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Allocated @@ -656,8 +655,6 @@ - sending LU Reject for MSISDN:46071, cause 17 DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_AUTH}: state_chg to VLR_ULA_S_DONE DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_CN_CLOSE -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Close event, cause 1 DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT) @@ -696,6 +693,7 @@ DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Updated ID from LU DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000004620 type=IMSI ATTACH DMM LU/new-LAC: 1/23 DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Allocated @@ -808,7 +806,6 @@ DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Deallocated DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_RELEASE_WHEN_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: subscr_conn_fsm_release_when_unused: releasing conn @@ -849,6 +846,7 @@ DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Updated ID from LU DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000004620 type=IMSI ATTACH DMM LU/new-LAC: 1/23 DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Allocated @@ -885,8 +883,6 @@ - sending LU Reject for MSISDN:46071, cause 2 DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_AUTH}: state_chg to VLR_ULA_S_DONE DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_CN_CLOSE -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Close event, cause 1 DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT) @@ -923,6 +919,7 @@ DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Updated ID from LU DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000004620 type=IMSI ATTACH DMM LU/new-LAC: 1/23 DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Allocated @@ -960,8 +957,6 @@ - sending LU Reject for IMSI:901700000004620, cause 17 DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_AUTH}: state_chg to VLR_ULA_S_DONE DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_CN_CLOSE -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Close event, cause 1 DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT) @@ -998,6 +993,7 @@ DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Updated ID from LU DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000004620 type=IMSI ATTACH DMM LU/new-LAC: 1/23 DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Allocated @@ -1039,8 +1035,6 @@ - sending LU Reject for IMSI:901700000004620, cause 2 DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_HLR_UPD}: state_chg to VLR_ULA_S_DONE DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_CN_CLOSE -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Close event, cause 1 DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT) @@ -1076,6 +1070,7 @@ DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Updated ID from LU DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000004620 type=IMSI ATTACH DMM LU/new-LAC: 1/23 DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Allocated @@ -1137,7 +1132,6 @@ DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Deallocated DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_RELEASE_WHEN_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: subscr_conn_fsm_release_when_unused: releasing conn diff --git a/tests/msc_vlr/msc_vlr_test_hlr_timeout.err b/tests/msc_vlr/msc_vlr_test_hlr_timeout.err index 9409e26..dffbf71 100644 --- a/tests/msc_vlr/msc_vlr_test_hlr_timeout.err +++ b/tests/msc_vlr/msc_vlr_test_hlr_timeout.err @@ -12,6 +12,7 @@ DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Updated ID from LU DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000004620 type=IMSI ATTACH DMM LU/new-LAC: 1/23 DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Allocated @@ -54,8 +55,6 @@ - sending LU Reject for IMSI:901700000004620, cause 22 DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_AUTH}: state_chg to VLR_ULA_S_DONE DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_CN_CLOSE -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Close event, cause 1 DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT) @@ -96,6 +95,7 @@ DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Updated ID from LU DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000004620 type=IMSI ATTACH DMM LU/new-LAC: 1/23 DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Allocated @@ -157,8 +157,6 @@ - sending LU Reject for MSISDN:46071, cause 22 DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_HLR_UPD}: state_chg to VLR_ULA_S_DONE DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_CN_CLOSE -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Close event, cause 1 DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT) diff --git a/tests/msc_vlr/msc_vlr_test_ms_timeout.err b/tests/msc_vlr/msc_vlr_test_ms_timeout.err index c5ffcf5..fc4e489 100644 --- a/tests/msc_vlr/msc_vlr_test_ms_timeout.err +++ b/tests/msc_vlr/msc_vlr_test_ms_timeout.err @@ -12,6 +12,7 @@ DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Updated ID from LU DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000004620 type=IMSI ATTACH DMM LU/new-LAC: 1/23 DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Allocated @@ -74,8 +75,6 @@ - sending LU Reject for IMSI:901700000004620, cause 22 DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_AUTH}: state_chg to VLR_ULA_S_DONE DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_CN_CLOSE -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Close event, cause 1 DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT) @@ -116,6 +115,7 @@ DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Updated ID from LU DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000004620 type=IMSI ATTACH DMM LU/new-LAC: 1/23 DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Allocated @@ -228,7 +228,6 @@ DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Deallocated DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_RELEASE_WHEN_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: subscr_conn_fsm_release_when_unused: releasing conn @@ -263,6 +262,7 @@ DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Updated ID from CM_SERVICE_REQ DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: Allocated DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: is child of Subscr_Conn(901700000004620) DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: rev=GSM net=GERAN Auth (no Ciph) @@ -311,8 +311,6 @@ DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_TIMEOUT - sending CM Service Reject for MSISDN:46071, result VLR_PR_ARQ_RES_TIMEOUT DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_CN_CLOSE -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_CM_SERVICE_REQ -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Close event, cause 2 DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT) @@ -352,6 +350,7 @@ DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Updated ID from LU DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000004620 type=IMSI ATTACH DMM LU/new-LAC: 1/23 DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Allocated @@ -424,7 +423,6 @@ DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Deallocated DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_RELEASE_WHEN_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: subscr_conn_fsm_release_when_unused: releasing conn diff --git a/tests/msc_vlr/msc_vlr_test_no_authen.err b/tests/msc_vlr/msc_vlr_test_no_authen.err index 2d139be..be2d537 100644 --- a/tests/msc_vlr/msc_vlr_test_no_authen.err +++ b/tests/msc_vlr/msc_vlr_test_no_authen.err @@ -11,6 +11,7 @@ DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Updated ID from LU DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000004620 type=IMSI ATTACH DMM LU/new-LAC: 1/23 DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Allocated @@ -95,7 +96,6 @@ DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Deallocated DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_RELEASE_WHEN_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: subscr_conn_fsm_release_when_unused: releasing conn @@ -130,6 +130,7 @@ DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Updated ID from CM_SERVICE_REQ DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: Allocated DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: is child of Subscr_Conn(901700000004620) DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: rev=GSM net=GERAN (no Auth) @@ -148,7 +149,6 @@ DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED - sending CM Service Accept for MSISDN:46071 DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_CM_SERVICE_REQ DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: received_cm_service_request = true DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_RELEASE_WHEN_UNUSED @@ -220,6 +220,7 @@ DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Updated ID from PAGING_RESP DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: Allocated DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: is child of Subscr_Conn(901700000004620) DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: rev=GSM net=GERAN (no Auth) @@ -237,7 +238,6 @@ DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: state_chg to PR_ARQ_S_DONE DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_PAGING_RESP DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED DPAG Paging success for MSISDN:46071 (event=0) DPAG Calling paging cbfn. @@ -336,6 +336,7 @@ DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Updated ID from LU DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000004620 type=IMSI ATTACH DMM LU/new-LAC: 1/23 DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Allocated @@ -451,7 +452,6 @@ DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Deallocated DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_RELEASE_WHEN_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: subscr_conn_fsm_release_when_unused: releasing conn @@ -491,6 +491,7 @@ DMM Subscr_Conn(50462976){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(50462976){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(50462976){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(50462976){SUBSCR_CONN_S_NEW}: Updated ID from CM_SERVICE_REQ DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_INIT}: Allocated DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_INIT}: is child of Subscr_Conn(50462976) DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_INIT}: rev=GSM net=GERAN (no Auth) @@ -509,7 +510,6 @@ DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED - sending CM Service Accept for MSISDN:46071 DMM Subscr_Conn(50462976){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(50462976){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_CM_SERVICE_REQ DMM Subscr_Conn(50462976){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED DMM Subscr_Conn(50462976){SUBSCR_CONN_S_ACCEPTED}: received_cm_service_request = true DMM Subscr_Conn(50462976){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_RELEASE_WHEN_UNUSED @@ -580,6 +580,7 @@ DMM Subscr_Conn(50462976){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(50462976){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(50462976){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(50462976){SUBSCR_CONN_S_NEW}: Updated ID from PAGING_RESP DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_INIT}: Allocated DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_INIT}: is child of Subscr_Conn(50462976) DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_INIT}: rev=GSM net=GERAN (no Auth) @@ -597,7 +598,6 @@ DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_INIT}: state_chg to PR_ARQ_S_DONE DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED DMM Subscr_Conn(50462976){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(50462976){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_PAGING_RESP DMM Subscr_Conn(50462976){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED DPAG Paging success for MSISDN:46071 (event=0) DPAG Calling paging cbfn. @@ -674,6 +674,7 @@ DMM Subscr_Conn(50462976){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(50462976){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(50462976){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(50462976){SUBSCR_CONN_S_NEW}: Updated ID from LU DMM LOCATION UPDATING REQUEST: MI(TMSI)=50462976 type=IMSI ATTACH DMM LU/new-LAC: 1/23 DVLR vlr_lu_fsm(50462976){VLR_ULA_S_IDLE}: Allocated @@ -786,7 +787,6 @@ DVLR lu_compl_vlr_fsm(50462976){LU_COMPL_VLR_S_DONE}: Deallocated DVLR vlr_lu_fsm(50462976){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE DMM Subscr_Conn(50462976){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(50462976){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU DMM Subscr_Conn(50462976){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED DMM Subscr_Conn(50462976){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_RELEASE_WHEN_UNUSED DMM Subscr_Conn(50462976){SUBSCR_CONN_S_ACCEPTED}: subscr_conn_fsm_release_when_unused: releasing conn @@ -848,6 +848,7 @@ DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Updated ID from LU DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000004620 type=IMSI ATTACH DMM LU/new-LAC: 1/23 DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Allocated @@ -961,7 +962,6 @@ DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Deallocated DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_RELEASE_WHEN_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: subscr_conn_fsm_release_when_unused: releasing conn @@ -1021,6 +1021,7 @@ DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Updated ID from LU DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000004620 type=IMSI ATTACH DMM LU/new-LAC: 1/23 DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Allocated @@ -1158,7 +1159,6 @@ DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Deallocated DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_RELEASE_WHEN_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: subscr_conn_fsm_release_when_unused: releasing conn @@ -1219,6 +1219,7 @@ DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Updated ID from LU DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000004620 type=IMSI ATTACH DMM LU/new-LAC: 1/23 DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Allocated @@ -1320,7 +1321,6 @@ DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Deallocated DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_RELEASE_WHEN_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: subscr_conn_fsm_release_when_unused: releasing conn @@ -1377,6 +1377,7 @@ DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Updated ID from LU DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000004620 type=IMSI ATTACH DMM LU/new-LAC: 1/23 DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Allocated @@ -1507,7 +1508,6 @@ DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Deallocated DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_RELEASE_WHEN_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: subscr_conn_fsm_release_when_unused: releasing conn @@ -1567,6 +1567,7 @@ DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Updated ID from LU DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000004620 type=IMSI ATTACH DMM LU/new-LAC: 1/23 DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Allocated @@ -1699,7 +1700,6 @@ DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Deallocated DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_RELEASE_WHEN_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: subscr_conn_fsm_release_when_unused: releasing conn @@ -1732,6 +1732,7 @@ DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Updated ID from LU DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000004620 type=IMSI ATTACH DMM LU/new-LAC: 1/23 DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Allocated @@ -1861,7 +1862,6 @@ DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Deallocated DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_RELEASE_WHEN_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: subscr_conn_fsm_release_when_unused: releasing conn @@ -1923,6 +1923,7 @@ DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Updated ID from LU DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000004620 type=IMSI ATTACH DMM LU/new-LAC: 1/23 DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Allocated @@ -2077,7 +2078,6 @@ DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Deallocated DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_RELEASE_WHEN_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: subscr_conn_fsm_release_when_unused: releasing conn diff --git a/tests/msc_vlr/msc_vlr_test_reject_concurrency.err b/tests/msc_vlr/msc_vlr_test_reject_concurrency.err index c58d099..bd7b47c 100644 --- a/tests/msc_vlr/msc_vlr_test_reject_concurrency.err +++ b/tests/msc_vlr/msc_vlr_test_reject_concurrency.err @@ -11,6 +11,7 @@ DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Updated ID from LU DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000004620 type=IMSI ATTACH DMM LU/new-LAC: 1/23 DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Allocated @@ -46,6 +47,7 @@ DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Updated ID from LU DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000004620 type=IMSI ATTACH DMM LU/new-LAC: 1/23 DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Allocated @@ -57,8 +59,6 @@ - sending LU Reject for unknown, cause 22 DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_DONE DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_CN_CLOSE -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Close event, cause 1 DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT) @@ -127,7 +127,6 @@ DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Deallocated DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_RELEASE_WHEN_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: subscr_conn_fsm_release_when_unused: releasing conn @@ -167,6 +166,7 @@ DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Updated ID from LU DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000004620 type=IMSI ATTACH DMM LU/new-LAC: 1/23 DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Allocated @@ -252,7 +252,6 @@ DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Deallocated DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_RELEASE_WHEN_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: subscr_conn_fsm_release_when_unused: releasing conn @@ -292,6 +291,7 @@ DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Updated ID from LU DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000004620 type=IMSI ATTACH DMM LU/new-LAC: 1/23 DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Allocated @@ -384,7 +384,6 @@ DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Deallocated DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_RELEASE_WHEN_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: subscr_conn_fsm_release_when_unused: releasing conn @@ -424,6 +423,7 @@ DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Updated ID from LU DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000004620 type=IMSI ATTACH DMM LU/new-LAC: 1/23 DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Allocated @@ -510,7 +510,6 @@ DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Deallocated DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_RELEASE_WHEN_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: subscr_conn_fsm_release_when_unused: releasing conn @@ -552,6 +551,7 @@ DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Updated ID from LU DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000004620 type=IMSI ATTACH DMM LU/new-LAC: 1/23 DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Allocated @@ -625,7 +625,6 @@ DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Deallocated DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_RELEASE_WHEN_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: subscr_conn_fsm_release_when_unused: releasing conn @@ -660,6 +659,7 @@ DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Updated ID from CM_SERVICE_REQ DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: Allocated DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: is child of Subscr_Conn(901700000004620) DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: rev=GSM net=GERAN (no Auth) @@ -678,7 +678,6 @@ DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED - sending CM Service Accept for MSISDN:46071 DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_CM_SERVICE_REQ DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: received_cm_service_request = true DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_RELEASE_WHEN_UNUSED @@ -745,6 +744,7 @@ DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Updated ID from LU DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000004620 type=IMSI ATTACH DMM LU/new-LAC: 1/23 DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Allocated @@ -818,7 +818,6 @@ DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Deallocated DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_RELEASE_WHEN_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: subscr_conn_fsm_release_when_unused: releasing conn @@ -853,6 +852,7 @@ DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Updated ID from CM_SERVICE_REQ DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: Allocated DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: is child of Subscr_Conn(901700000004620) DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: rev=GSM net=GERAN (no Auth) @@ -871,7 +871,6 @@ DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED - sending CM Service Accept for MSISDN:46071 DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_CM_SERVICE_REQ DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: received_cm_service_request = true DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_RELEASE_WHEN_UNUSED @@ -888,6 +887,7 @@ DRLL Dispatching 04.08 message GSM48_MT_MM_CM_SERV_REQ (0x5:0x24) DMM <- CM SERVICE REQUEST serv_type=0x08 MI(IMSI)=901700000004620 DMM MSISDN:46071: re-using already accepted connection +DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Updated ID from CM_SERVICE_REQ - sending CM Service Accept for MSISDN:46071 DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_RELEASE_WHEN_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: subscr_conn_fsm_release_when_unused: still awaiting first request after a CM Service Request @@ -940,6 +940,7 @@ DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Updated ID from LU DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000004620 type=IMSI ATTACH DMM LU/new-LAC: 1/23 DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Allocated @@ -1013,7 +1014,6 @@ DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Deallocated DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_RELEASE_WHEN_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: subscr_conn_fsm_release_when_unused: releasing conn @@ -1048,6 +1048,7 @@ DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Updated ID from CM_SERVICE_REQ DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: Allocated DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: is child of Subscr_Conn(901700000004620) DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: rev=GSM net=GERAN (no Auth) @@ -1066,7 +1067,6 @@ DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED - sending CM Service Accept for MSISDN:46071 DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_CM_SERVICE_REQ DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: received_cm_service_request = true DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_RELEASE_WHEN_UNUSED @@ -1141,6 +1141,7 @@ DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Updated ID from LU DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000004620 type=IMSI ATTACH DMM LU/new-LAC: 1/23 DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Allocated @@ -1214,7 +1215,6 @@ DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Deallocated DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_RELEASE_WHEN_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: subscr_conn_fsm_release_when_unused: releasing conn @@ -1261,6 +1261,7 @@ DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Updated ID from PAGING_RESP DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: Allocated DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: is child of Subscr_Conn(901700000004620) DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: rev=GSM net=GERAN (no Auth) @@ -1278,7 +1279,6 @@ DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: state_chg to PR_ARQ_S_DONE DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_PAGING_RESP DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED DPAG Paging success for MSISDN:46071 (event=0) DPAG Calling paging cbfn. @@ -1369,6 +1369,7 @@ DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Updated ID from LU DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000004620 type=IMSI ATTACH DMM LU/new-LAC: 1/23 DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Allocated @@ -1442,7 +1443,6 @@ DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Deallocated DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_RELEASE_WHEN_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: subscr_conn_fsm_release_when_unused: releasing conn @@ -1489,6 +1489,7 @@ DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Updated ID from PAGING_RESP DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: Allocated DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: is child of Subscr_Conn(901700000004620) DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: rev=GSM net=GERAN (no Auth) @@ -1506,7 +1507,6 @@ DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: state_chg to PR_ARQ_S_DONE DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_PAGING_RESP DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED DPAG Paging success for MSISDN:46071 (event=0) DPAG Calling paging cbfn. @@ -1534,6 +1534,7 @@ DRLL Dispatching 04.08 message GSM48_MT_MM_CM_SERV_REQ (0x5:0x24) DMM <- CM SERVICE REQUEST serv_type=0x08 MI(IMSI)=901700000004620 DMM MSISDN:46071: re-using already accepted connection +DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Updated ID from PAGING_RESP - sending CM Service Accept for MSISDN:46071 DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_RELEASE_WHEN_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: subscr_conn_fsm_release_when_unused: still awaiting first request after a CM Service Request @@ -1616,6 +1617,7 @@ DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Updated ID from LU DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000004620 type=IMSI ATTACH DMM LU/new-LAC: 1/23 DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Allocated @@ -1689,7 +1691,6 @@ DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Deallocated DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_RELEASE_WHEN_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: subscr_conn_fsm_release_when_unused: releasing conn @@ -1736,6 +1737,7 @@ DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Updated ID from PAGING_RESP DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: Allocated DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: is child of Subscr_Conn(901700000004620) DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: rev=GSM net=GERAN (no Auth) @@ -1753,7 +1755,6 @@ DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: state_chg to PR_ARQ_S_DONE DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_PAGING_RESP DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED DPAG Paging success for MSISDN:46071 (event=0) DPAG Calling paging cbfn. diff --git a/tests/msc_vlr/msc_vlr_test_rest.err b/tests/msc_vlr/msc_vlr_test_rest.err index 274f4b8..5d5e1ec 100644 --- a/tests/msc_vlr/msc_vlr_test_rest.err +++ b/tests/msc_vlr/msc_vlr_test_rest.err @@ -56,6 +56,7 @@ DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Updated ID from CM_SERVICE_REQ DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: Allocated DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: is child of Subscr_Conn(901700000004620) DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: rev=GSM net=GERAN (no Auth) @@ -65,8 +66,6 @@ DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_UNIDENT_SUBSCR - sending CM Service Reject for unknown, result VLR_PR_ARQ_RES_UNIDENT_SUBSCR DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_CN_CLOSE -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_CM_SERVICE_REQ -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Close event, cause 2 DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT) @@ -98,6 +97,7 @@ DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Updated ID from LU DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000004620 type=IMSI ATTACH DMM LU/new-LAC: 1/23 DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Allocated @@ -182,7 +182,6 @@ DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Deallocated DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_RELEASE_WHEN_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: subscr_conn_fsm_release_when_unused: releasing conn @@ -217,6 +216,7 @@ DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Updated ID from LU DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000004620 type=IMSI ATTACH DMM LU/new-LAC: 1/23 DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Allocated @@ -298,7 +298,6 @@ DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Deallocated DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_RELEASE_WHEN_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: subscr_conn_fsm_release_when_unused: releasing conn @@ -355,6 +354,7 @@ DMM Subscr_Conn(591536962){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(591536962){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(591536962){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(591536962){SUBSCR_CONN_S_NEW}: Updated ID from LU DMM LOCATION UPDATING REQUEST: MI(TMSI)=591536962 type=IMSI ATTACH DMM LU/new-LAC: 1/23 DVLR vlr_lu_fsm(591536962){VLR_ULA_S_IDLE}: Allocated @@ -464,7 +464,6 @@ DVLR lu_compl_vlr_fsm(591536962){LU_COMPL_VLR_S_DONE}: Deallocated DVLR vlr_lu_fsm(591536962){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE DMM Subscr_Conn(591536962){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(591536962){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU DMM Subscr_Conn(591536962){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED DMM Subscr_Conn(591536962){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_RELEASE_WHEN_UNUSED DMM Subscr_Conn(591536962){SUBSCR_CONN_S_ACCEPTED}: subscr_conn_fsm_release_when_unused: releasing conn diff --git a/tests/msc_vlr/msc_vlr_test_umts_authen.err b/tests/msc_vlr/msc_vlr_test_umts_authen.err index e6cb9a3..ddfbb11 100644 --- a/tests/msc_vlr/msc_vlr_test_umts_authen.err +++ b/tests/msc_vlr/msc_vlr_test_umts_authen.err @@ -11,6 +11,7 @@ DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Updated ID from LU DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000010650 type=NORMAL DMM LU/new-LAC: 0/23 DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_IDLE}: Allocated @@ -156,7 +157,6 @@ DVLR lu_compl_vlr_fsm(901700000010650){LU_COMPL_VLR_S_DONE}: Deallocated DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_RELEASE_WHEN_UNUSED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: subscr_conn_fsm_release_when_unused: releasing conn @@ -189,6 +189,7 @@ DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Updated ID from CM_SERVICE_REQ DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: Allocated DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: is child of Subscr_Conn(901700000010650) DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: rev=R99 net=GERAN Auth (no Ciph) @@ -249,7 +250,6 @@ DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED - sending CM Service Accept for MSISDN:42342 DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_CM_SERVICE_REQ DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: received_cm_service_request = true DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_RELEASE_WHEN_UNUSED @@ -318,6 +318,7 @@ DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Updated ID from PAGING_RESP DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: Allocated DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: is child of Subscr_Conn(901700000010650) DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: rev=R99 net=GERAN Auth (no Ciph) @@ -376,7 +377,6 @@ DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_WAIT_AUTH}: state_chg to PR_ARQ_S_DONE DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_PAGING_RESP DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED DPAG Paging success for MSISDN:42342 (event=0) DPAG Calling paging cbfn. @@ -474,6 +474,7 @@ DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Updated ID from LU DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000010650 type=NORMAL DMM LU/new-LAC: 0/23 DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_IDLE}: Allocated @@ -631,7 +632,6 @@ DVLR lu_compl_vlr_fsm(901700000010650){LU_COMPL_VLR_S_DONE}: Deallocated DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_RELEASE_WHEN_UNUSED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: subscr_conn_fsm_release_when_unused: releasing conn @@ -664,6 +664,7 @@ DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Updated ID from CM_SERVICE_REQ DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: Allocated DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: is child of Subscr_Conn(901700000010650) DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: rev=R99 net=UTRAN Auth+Ciph @@ -737,7 +738,6 @@ DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_WAIT_CIPH}: state_chg to PR_ARQ_S_DONE DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_CM_SERVICE_REQ DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: received_cm_service_request = true DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_RELEASE_WHEN_UNUSED @@ -803,6 +803,7 @@ DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Updated ID from PAGING_RESP DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: Allocated DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: is child of Subscr_Conn(901700000010650) DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: rev=R99 net=UTRAN Auth+Ciph @@ -875,7 +876,6 @@ DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_WAIT_CIPH}: state_chg to PR_ARQ_S_DONE DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_PAGING_RESP DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED DPAG Paging success for MSISDN:42342 (event=0) DPAG Calling paging cbfn. @@ -969,6 +969,7 @@ DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Updated ID from LU DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000010650 type=NORMAL DMM LU/new-LAC: 0/23 DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_IDLE}: Allocated @@ -1144,7 +1145,6 @@ DVLR lu_compl_vlr_fsm(901700000010650){LU_COMPL_VLR_S_DONE}: Deallocated DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_RELEASE_WHEN_UNUSED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: subscr_conn_fsm_release_when_unused: releasing conn @@ -1182,6 +1182,7 @@ DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Updated ID from LU DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000010650 type=NORMAL DMM LU/new-LAC: 0/23 DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_IDLE}: Allocated @@ -1369,7 +1370,6 @@ DVLR lu_compl_vlr_fsm(901700000010650){LU_COMPL_VLR_S_DONE}: Deallocated DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_RELEASE_WHEN_UNUSED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: subscr_conn_fsm_release_when_unused: releasing conn @@ -1407,6 +1407,7 @@ DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Updated ID from LU DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000010650 type=NORMAL DMM LU/new-LAC: 0/23 DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_IDLE}: Allocated @@ -1465,8 +1466,6 @@ - sending LU Reject for IMSI:901700000010650, cause 3 DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_WAIT_AUTH}: state_chg to VLR_ULA_S_DONE DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_CN_CLOSE -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Close event, cause 1 DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT) @@ -1501,6 +1500,7 @@ DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Updated ID from LU DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000010650 type=NORMAL DMM LU/new-LAC: 0/23 DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_IDLE}: Allocated @@ -1559,8 +1559,6 @@ - sending LU Reject for IMSI:901700000010650, cause 3 DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_WAIT_AUTH}: state_chg to VLR_ULA_S_DONE DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_CN_CLOSE -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Close event, cause 1 DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT) @@ -1595,6 +1593,7 @@ DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Updated ID from LU DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000010650 type=NORMAL DMM LU/new-LAC: 0/23 DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_IDLE}: Allocated @@ -1653,8 +1652,6 @@ - sending LU Reject for IMSI:901700000010650, cause 3 DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_WAIT_AUTH}: state_chg to VLR_ULA_S_DONE DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_CN_CLOSE -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Close event, cause 1 DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT) @@ -1689,6 +1686,7 @@ DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Updated ID from LU DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000010650 type=NORMAL DMM LU/new-LAC: 0/23 DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_IDLE}: Allocated @@ -1747,8 +1745,6 @@ - sending LU Reject for IMSI:901700000010650, cause 3 DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_WAIT_AUTH}: state_chg to VLR_ULA_S_DONE DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_CN_CLOSE -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Close event, cause 1 DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT) @@ -1783,6 +1779,7 @@ DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Updated ID from LU DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000010650 type=NORMAL DMM LU/new-LAC: 0/23 DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_IDLE}: Allocated @@ -1841,8 +1838,6 @@ - sending LU Reject for IMSI:901700000010650, cause 3 DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_WAIT_AUTH}: state_chg to VLR_ULA_S_DONE DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_CN_CLOSE -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Close event, cause 1 DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT) @@ -1877,6 +1872,7 @@ DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Updated ID from LU DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000010650 type=NORMAL DMM LU/new-LAC: 0/23 DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_IDLE}: Allocated @@ -1935,8 +1931,6 @@ - sending LU Reject for IMSI:901700000010650, cause 3 DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_WAIT_AUTH}: state_chg to VLR_ULA_S_DONE DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_CN_CLOSE -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Close event, cause 1 DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT) -- To view, visit https://gerrit.osmocom.org/7615 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Iae30dd57a8861c4eaaf56999f872d4e635ba97fb Gerrit-PatchSet: 1 Gerrit-Project: osmo-msc Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr From gerrit-no-reply at lists.osmocom.org Tue Apr 3 00:13:57 2018 From: gerrit-no-reply at lists.osmocom.org (Neels Hofmeyr) Date: Tue, 3 Apr 2018 00:13:57 +0000 Subject: [PATCH] osmo-msc[master]: unify allocation of gsm_subscriber_connection Message-ID: Review at https://gerrit.osmocom.org/7616 unify allocation of gsm_subscriber_connection The current msc_subscr_con_allocate() was in fact only used by msc_vlr_tests, while both a_iface_bssap.c and iucs.c did their own duplicate code of allocating the gsm_subscriber_connection struct. Unify. Drop the old msc_subscr_con_allocate(), instead add msc_subscr_conn_alloc(). The new function also takes via_ran and lac arguments directly. The conn allocation will soon be closely tied to the subscr_conn_fsm instance allocation, so place the new function definition alongside the other subscr_conn_fsm API, and match its naming ("conn"). Related: OS#3122 Change-Id: Ia57b42a149a43f9c370b1310e2e1f512183993ea --- M include/osmocom/msc/gsm_data.h M include/osmocom/msc/osmo_msc.h M src/libmsc/a_iface_bssap.c M src/libmsc/iucs.c M tests/msc_vlr/msc_vlr_test_rest.c M tests/msc_vlr/msc_vlr_tests.c 6 files changed, 7 insertions(+), 17 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-msc refs/changes/16/7616/1 diff --git a/include/osmocom/msc/gsm_data.h b/include/osmocom/msc/gsm_data.h index 29abd5d..f3e1b94 100644 --- a/include/osmocom/msc/gsm_data.h +++ b/include/osmocom/msc/gsm_data.h @@ -374,7 +374,6 @@ char text[SMS_TEXT_SIZE]; }; -struct gsm_subscriber_connection *msc_subscr_con_allocate(struct gsm_network *network); void msc_subscr_con_free(struct gsm_subscriber_connection *conn); /* control interface handling */ diff --git a/include/osmocom/msc/osmo_msc.h b/include/osmocom/msc/osmo_msc.h index fb525e0..1334138 100644 --- a/include/osmocom/msc/osmo_msc.h +++ b/include/osmocom/msc/osmo_msc.h @@ -41,6 +41,9 @@ MSC_CONN_REJECT = 1, }; +struct gsm_subscriber_connection *msc_subscr_conn_alloc(struct gsm_network *network, + enum ran_type via_ran, uint16_t lac); + void msc_subscr_conn_update_id(struct gsm_subscriber_connection *conn, enum complete_layer3_type from, const char *id); char *msc_subscr_conn_get_conn_id(struct gsm_subscriber_connection *conn); diff --git a/src/libmsc/a_iface_bssap.c b/src/libmsc/a_iface_bssap.c index 743814c..1665e23 100644 --- a/src/libmsc/a_iface_bssap.c +++ b/src/libmsc/a_iface_bssap.c @@ -54,13 +54,9 @@ LOGP(DMSC, LOGL_DEBUG, "Allocating A-Interface subscriber conn: lac %i, conn_id %i\n", lac, conn_id); - conn = talloc_zero(network, struct gsm_subscriber_connection); + conn = msc_subscr_conn_alloc(network, RAN_GERAN_A, lac); if (!conn) return NULL; - - conn->network = network; - conn->via_ran = RAN_GERAN_A; - conn->lac = lac; conn->a.conn_id = conn_id; conn->a.scu = scu; @@ -69,7 +65,6 @@ * identify later which BSC is responsible for this subscriber connection */ memcpy(&conn->a.bsc_addr, &a_conn_info->bsc->bsc_addr, sizeof(conn->a.bsc_addr)); - llist_add_tail(&conn->entry, &network->subscr_conns); LOGPCONN(conn, LOGL_DEBUG, "A-Interface subscriber connection successfully allocated!\n"); return conn; } diff --git a/src/libmsc/iucs.c b/src/libmsc/iucs.c index d6da1f7..a3092f8 100644 --- a/src/libmsc/iucs.c +++ b/src/libmsc/iucs.c @@ -57,17 +57,12 @@ DEBUGP(DIUCS, "Allocating IuCS subscriber conn: lac %d, conn_id %" PRIx32 "\n", lac, ue->conn_id); - conn = talloc_zero(network, struct gsm_subscriber_connection); + conn = msc_subscr_conn_alloc(network, RAN_UTRAN_IU, lac); if (!conn) return NULL; - conn->network = network; - conn->via_ran = RAN_UTRAN_IU; conn->iu.ue_ctx = ue; conn->iu.ue_ctx->rab_assign_addr_enc = network->iu.rab_assign_addr_enc; - conn->lac = lac; - - llist_add_tail(&conn->entry, &network->subscr_conns); return conn; } diff --git a/tests/msc_vlr/msc_vlr_test_rest.c b/tests/msc_vlr/msc_vlr_test_rest.c index 3f843f0..7fd7bae 100644 --- a/tests/msc_vlr/msc_vlr_test_rest.c +++ b/tests/msc_vlr/msc_vlr_test_rest.c @@ -31,7 +31,7 @@ EXPECT_ACCEPTED(false); btw("freshly allocated conn"); - g_conn = msc_subscr_con_allocate(net); + g_conn = msc_subscr_conn_alloc(net, RAN_GERAN_A, 123); EXPECT_ACCEPTED(false); btw("conn_fsm present, in state NEW"); diff --git a/tests/msc_vlr/msc_vlr_tests.c b/tests/msc_vlr/msc_vlr_tests.c index 523f74f..7c54057 100644 --- a/tests/msc_vlr/msc_vlr_tests.c +++ b/tests/msc_vlr/msc_vlr_tests.c @@ -191,9 +191,7 @@ struct gsm_subscriber_connection *conn_new(void) { struct gsm_subscriber_connection *conn; - conn = msc_subscr_con_allocate(net); - conn->via_ran = rx_from_ran; - conn->lac = 23; + conn = msc_subscr_conn_alloc(net, rx_from_ran, 23); if (conn->via_ran == RAN_UTRAN_IU) { struct ranap_ue_conn_ctx *ue_ctx = talloc_zero(conn, struct ranap_ue_conn_ctx); *ue_ctx = (struct ranap_ue_conn_ctx){ -- To view, visit https://gerrit.osmocom.org/7616 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Ia57b42a149a43f9c370b1310e2e1f512183993ea Gerrit-PatchSet: 1 Gerrit-Project: osmo-msc Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr From gerrit-no-reply at lists.osmocom.org Tue Apr 3 08:20:27 2018 From: gerrit-no-reply at lists.osmocom.org (Stefan Sperling) Date: Tue, 3 Apr 2018 08:20:27 +0000 Subject: osmo-ttcn3-hacks[master]: support ccache to speed up ttcn3 test compilation In-Reply-To: References: Message-ID: Patch Set 4: > I think for this kind of change it would be worth discussing it in > the eclipse titan forum. Maybe they have some less > intrusive/hackish ideas about how to use ccache with TITAN? If > there are no flags yet to disable the timestamps, maybe the related > discussin will prompt them to add this to future TITAN releases. Indeed. As noted in the patch itself, I believe we would need an upstream solution in the long term if we decided to adopt use of ccache. This patch set is not intended as a permanent solution. It is a proof of concept which allows us to evaluate advantages ccache puts on our table, before investing time with getting upstream involved. I think we should at least investigate how ccache affects our jenkins builds jobs before talking to upstream. That should show whether additional effort would be well spent. I invested a signifcant amount time (4 hours) to figure out why ccache wasn't working out of the box. This patch set saves other people the trouble of trying to get it to work. -- To view, visit https://gerrit.osmocom.org/7601 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Ibb538f602206535c06980f88191c1dabe3c4cd82 Gerrit-PatchSet: 4 Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Owner: Stefan Sperling Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Neels Hofmeyr Gerrit-Reviewer: Stefan Sperling Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Tue Apr 3 09:30:06 2018 From: gerrit-no-reply at lists.osmocom.org (Vadim Yanitskiy) Date: Tue, 3 Apr 2018 09:30:06 +0000 Subject: osmo-msc[master]: use osmo_init_logging2() with proper talloc ctx In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+1 -- To view, visit https://gerrit.osmocom.org/7599 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Iae07ae60230c7bab28e52b5df97fa3844778158e Gerrit-PatchSet: 1 Gerrit-Project: osmo-msc Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Vadim Yanitskiy Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Tue Apr 3 09:30:26 2018 From: gerrit-no-reply at lists.osmocom.org (Vadim Yanitskiy) Date: Tue, 3 Apr 2018 09:30:26 +0000 Subject: osmo-msc[master]: drop some dead definitions (gsm_data.h, gsup_client.c) In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+1 -- To view, visit https://gerrit.osmocom.org/7610 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Icad01d0ad8fa68293160bc56543b9c3dcafc50bb Gerrit-PatchSet: 1 Gerrit-Project: osmo-msc Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Vadim Yanitskiy Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Tue Apr 3 09:31:07 2018 From: gerrit-no-reply at lists.osmocom.org (Vadim Yanitskiy) Date: Tue, 3 Apr 2018 09:31:07 +0000 Subject: osmo-msc[master]: test_reject_concurrency: missing assert In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+1 -- To view, visit https://gerrit.osmocom.org/7611 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Ifdde3a6fa5835203c34c40db77761f2e90c0d5ff Gerrit-PatchSet: 1 Gerrit-Project: osmo-msc Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Vadim Yanitskiy Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Tue Apr 3 09:31:23 2018 From: gerrit-no-reply at lists.osmocom.org (Keith Whyte) Date: Tue, 3 Apr 2018 09:31:23 +0000 Subject: [PATCH] osmo-bts[master]: osmo-bts-sysmo eeprom.c Restore ability to read/write EEPROM In-Reply-To: References: Message-ID: Hello Vadim Yanitskiy, Pau Espin Pedrol, Jenkins Builder, I'd like you to reexamine a change. Please visit https://gerrit.osmocom.org/7572 to look at the new patch set (#3). osmo-bts-sysmo eeprom.c Restore ability to read/write EEPROM This commit restores ability to read write to the SuperFemto EEPROM. Use offsetof() instead of casts to pointers when calculating the address to pass to eeprom_read() and eeprom_write() Fixes: 7cf144b27d75fadfb4ec65019985bb10660a066a Change-Id: Iaa7318387ad7bb248c261b1f428019244039e7d2 --- M src/osmo-bts-sysmo/eeprom.c 1 file changed, 7 insertions(+), 6 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-bts refs/changes/72/7572/3 diff --git a/src/osmo-bts-sysmo/eeprom.c b/src/osmo-bts-sysmo/eeprom.c old mode 100644 new mode 100755 index a7f3d77..472b78e --- a/src/osmo-bts-sysmo/eeprom.c +++ b/src/osmo-bts-sysmo/eeprom.c @@ -59,6 +59,7 @@ #include #include #include +#include #include #include "eeprom.h" @@ -495,7 +496,7 @@ case EEPROM_HDR_V2: { // Get a copy of the EEPROM section - err = eeprom_read( EEPROM_CFG_START_ADDR + ((uint32_t*)&ee.cfg.v1.sysInfo - (uint32_t*)&ee), sizeof(ee.cfg.v1.sysInfo), (char *)&ee.cfg.v1.sysInfo ); + err = eeprom_read( EEPROM_CFG_START_ADDR + offsetof(eeprom_Cfg_t, cfg.v1.sysInfo), sizeof(ee.cfg.v1.sysInfo), (char *)&ee.cfg.v1.sysInfo ); if ( err != sizeof(ee.cfg.v1.sysInfo) ) { PERROR( "Error while reading the EEPROM content (%d)\n", err ); @@ -602,7 +603,7 @@ ee.cfg.v1.sysInfo.u16Crc = eeprom_crc( (uint8_t *)&ee.cfg.v1.sysInfo.u32Time, sizeof(ee.cfg.v1.sysInfo) - 2 * sizeof(uint16_t) ); // Write it to the EEPROM - err = eeprom_write( EEPROM_CFG_START_ADDR + ((uint32_t*)&ee.cfg.v1.sysInfo - (uint32_t*)&ee), sizeof(ee.cfg.v1.sysInfo), (const char *) &ee.cfg.v1.sysInfo ); + err = eeprom_write( EEPROM_CFG_START_ADDR + offsetof(eeprom_Cfg_t, cfg.v1.sysInfo), sizeof(ee.cfg.v1.sysInfo), (const char *) &ee.cfg.v1.sysInfo ); if ( err != sizeof(ee.cfg.v1.sysInfo) ) { PERROR( "Error while writing to the EEPROM (%d)\n", err ); @@ -660,7 +661,7 @@ case EEPROM_HDR_V2: { // Get a copy of the EEPROM section - err = eeprom_read( EEPROM_CFG_START_ADDR + ((uint32_t*)&ee.cfg.v1.rfClk - (uint32_t*)&ee), sizeof(ee.cfg.v1.rfClk), (char *)&ee.cfg.v1.rfClk ); + err = eeprom_read( EEPROM_CFG_START_ADDR + offsetof(eeprom_Cfg_t, cfg.v1.rfClk), sizeof(ee.cfg.v1.rfClk), (char *)&ee.cfg.v1.rfClk ); if ( err != sizeof(ee.cfg.v1.rfClk) ) { PERROR( "Error while reading the EEPROM content (%d)\n", err ); @@ -755,7 +756,7 @@ ee.cfg.v1.rfClk.u16Crc = eeprom_crc( (uint8_t *)&ee.cfg.v1.rfClk.u32Time, sizeof(ee.cfg.v1.rfClk) - 2 * sizeof(uint16_t) ); // Write it to the EEPROM - err = eeprom_write( EEPROM_CFG_START_ADDR + ((uint32_t*)&ee.cfg.v1.rfClk - (uint32_t*)&ee), sizeof(ee.cfg.v1.rfClk), (const char *) &ee.cfg.v1.rfClk ); + err = eeprom_write( EEPROM_CFG_START_ADDR + offsetof(eeprom_Cfg_t, cfg.v1.rfClk), sizeof(ee.cfg.v1.rfClk), (const char *) &ee.cfg.v1.rfClk ); if ( err != sizeof(ee.cfg.v1.rfClk) ) { PERROR( "Error while writing to the EEPROM (%d)\n", err ); @@ -1099,7 +1100,7 @@ pCfgTxCal->u16Crc = eeprom_crc( (uint8_t *)&pCfgTxCal->u32Time, size - 2 * sizeof(uint16_t) ); // Write it to the EEPROM - err = eeprom_write( EEPROM_CFG_START_ADDR + ((uint32_t*)pCfgTxCal - (uint32_t*)&ee), size, (const char *)pCfgTxCal ); + err = eeprom_write( EEPROM_CFG_START_ADDR + ((uint8_t*)pCfgTxCal - (uint8_t*)&ee), size, (const char *)pCfgTxCal ); if ( err != size ) { PERROR( "Error while writing to the EEPROM (%d)\n", err ); @@ -1592,7 +1593,7 @@ pCfgRxCal->u16Crc = eeprom_crc( (uint8_t *)&pCfgRxCal->u32Time, size - 2 * sizeof(uint16_t) ); // Write it to the EEPROM - err = eeprom_write( EEPROM_CFG_START_ADDR + ((uint32_t*)pCfgRxCal - (uint32_t*)&ee), size, (const char *)pCfgRxCal ); + err = eeprom_write( EEPROM_CFG_START_ADDR + ((uint8_t*)pCfgRxCal - (uint8_t*)&ee), size, (const char *)pCfgRxCal ); if ( err != size ) { PERROR( "Error while writing to the EEPROM (%d)\n", err ); -- To view, visit https://gerrit.osmocom.org/7572 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newpatchset Gerrit-Change-Id: Iaa7318387ad7bb248c261b1f428019244039e7d2 Gerrit-PatchSet: 3 Gerrit-Project: osmo-bts Gerrit-Branch: master Gerrit-Owner: Keith Whyte Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Keith Whyte Gerrit-Reviewer: Pau Espin Pedrol Gerrit-Reviewer: Vadim Yanitskiy From gerrit-no-reply at lists.osmocom.org Tue Apr 3 09:31:39 2018 From: gerrit-no-reply at lists.osmocom.org (Vadim Yanitskiy) Date: Tue, 3 Apr 2018 09:31:39 +0000 Subject: osmo-msc[master]: cosmetic: rx_bssmap: read message type once into local var In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+1 -- To view, visit https://gerrit.osmocom.org/7612 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: If70c9fa00edd462d3470bded6eb2c6521e4d9234 Gerrit-PatchSet: 1 Gerrit-Project: osmo-msc Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Vadim Yanitskiy Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Tue Apr 3 09:33:32 2018 From: gerrit-no-reply at lists.osmocom.org (Vadim Yanitskiy) Date: Tue, 3 Apr 2018 09:33:32 +0000 Subject: osmo-msc[master]: cosmetic: rename gsm_subscriber_connection->conn_fsm to ->fi In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+1 -- To view, visit https://gerrit.osmocom.org/7613 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: If442f2ba78d9722b1065ec30c9a13f372b6a8caa Gerrit-PatchSet: 1 Gerrit-Project: osmo-msc Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Vadim Yanitskiy Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Tue Apr 3 09:34:17 2018 From: gerrit-no-reply at lists.osmocom.org (Vadim Yanitskiy) Date: Tue, 3 Apr 2018 09:34:17 +0000 Subject: osmo-msc[master]: cosmetic: rename subscr_conn_from to complete_layer3_type In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+1 -- To view, visit https://gerrit.osmocom.org/7614 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I6263a80e6db01c2ca48df6c58b05e2fd19347057 Gerrit-PatchSet: 1 Gerrit-Project: osmo-msc Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Vadim Yanitskiy Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Tue Apr 3 09:35:58 2018 From: gerrit-no-reply at lists.osmocom.org (Keith Whyte) Date: Tue, 3 Apr 2018 09:35:58 +0000 Subject: [PATCH] osmo-bts[master]: osmo-bts-sysmo eeprom.c Restore ability to read/write EEPROM In-Reply-To: References: Message-ID: Hello Vadim Yanitskiy, Pau Espin Pedrol, Jenkins Builder, I'd like you to reexamine a change. Please visit https://gerrit.osmocom.org/7572 to look at the new patch set (#4). osmo-bts-sysmo eeprom.c Restore ability to read/write EEPROM This commit restores ability to read write to the SuperFemto EEPROM. Use offsetof() instead of casts to pointers when calculating the address to pass to eeprom_read() and eeprom_write() Fixes: 7cf144b27d75fadfb4ec65019985bb10660a066a Change-Id: Iaa7318387ad7bb248c261b1f428019244039e7d2 --- M src/osmo-bts-sysmo/eeprom.c 1 file changed, 7 insertions(+), 6 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-bts refs/changes/72/7572/4 diff --git a/src/osmo-bts-sysmo/eeprom.c b/src/osmo-bts-sysmo/eeprom.c index a7f3d77..472b78e 100644 --- a/src/osmo-bts-sysmo/eeprom.c +++ b/src/osmo-bts-sysmo/eeprom.c @@ -59,6 +59,7 @@ #include #include #include +#include #include #include "eeprom.h" @@ -495,7 +496,7 @@ case EEPROM_HDR_V2: { // Get a copy of the EEPROM section - err = eeprom_read( EEPROM_CFG_START_ADDR + ((uint32_t*)&ee.cfg.v1.sysInfo - (uint32_t*)&ee), sizeof(ee.cfg.v1.sysInfo), (char *)&ee.cfg.v1.sysInfo ); + err = eeprom_read( EEPROM_CFG_START_ADDR + offsetof(eeprom_Cfg_t, cfg.v1.sysInfo), sizeof(ee.cfg.v1.sysInfo), (char *)&ee.cfg.v1.sysInfo ); if ( err != sizeof(ee.cfg.v1.sysInfo) ) { PERROR( "Error while reading the EEPROM content (%d)\n", err ); @@ -602,7 +603,7 @@ ee.cfg.v1.sysInfo.u16Crc = eeprom_crc( (uint8_t *)&ee.cfg.v1.sysInfo.u32Time, sizeof(ee.cfg.v1.sysInfo) - 2 * sizeof(uint16_t) ); // Write it to the EEPROM - err = eeprom_write( EEPROM_CFG_START_ADDR + ((uint32_t*)&ee.cfg.v1.sysInfo - (uint32_t*)&ee), sizeof(ee.cfg.v1.sysInfo), (const char *) &ee.cfg.v1.sysInfo ); + err = eeprom_write( EEPROM_CFG_START_ADDR + offsetof(eeprom_Cfg_t, cfg.v1.sysInfo), sizeof(ee.cfg.v1.sysInfo), (const char *) &ee.cfg.v1.sysInfo ); if ( err != sizeof(ee.cfg.v1.sysInfo) ) { PERROR( "Error while writing to the EEPROM (%d)\n", err ); @@ -660,7 +661,7 @@ case EEPROM_HDR_V2: { // Get a copy of the EEPROM section - err = eeprom_read( EEPROM_CFG_START_ADDR + ((uint32_t*)&ee.cfg.v1.rfClk - (uint32_t*)&ee), sizeof(ee.cfg.v1.rfClk), (char *)&ee.cfg.v1.rfClk ); + err = eeprom_read( EEPROM_CFG_START_ADDR + offsetof(eeprom_Cfg_t, cfg.v1.rfClk), sizeof(ee.cfg.v1.rfClk), (char *)&ee.cfg.v1.rfClk ); if ( err != sizeof(ee.cfg.v1.rfClk) ) { PERROR( "Error while reading the EEPROM content (%d)\n", err ); @@ -755,7 +756,7 @@ ee.cfg.v1.rfClk.u16Crc = eeprom_crc( (uint8_t *)&ee.cfg.v1.rfClk.u32Time, sizeof(ee.cfg.v1.rfClk) - 2 * sizeof(uint16_t) ); // Write it to the EEPROM - err = eeprom_write( EEPROM_CFG_START_ADDR + ((uint32_t*)&ee.cfg.v1.rfClk - (uint32_t*)&ee), sizeof(ee.cfg.v1.rfClk), (const char *) &ee.cfg.v1.rfClk ); + err = eeprom_write( EEPROM_CFG_START_ADDR + offsetof(eeprom_Cfg_t, cfg.v1.rfClk), sizeof(ee.cfg.v1.rfClk), (const char *) &ee.cfg.v1.rfClk ); if ( err != sizeof(ee.cfg.v1.rfClk) ) { PERROR( "Error while writing to the EEPROM (%d)\n", err ); @@ -1099,7 +1100,7 @@ pCfgTxCal->u16Crc = eeprom_crc( (uint8_t *)&pCfgTxCal->u32Time, size - 2 * sizeof(uint16_t) ); // Write it to the EEPROM - err = eeprom_write( EEPROM_CFG_START_ADDR + ((uint32_t*)pCfgTxCal - (uint32_t*)&ee), size, (const char *)pCfgTxCal ); + err = eeprom_write( EEPROM_CFG_START_ADDR + ((uint8_t*)pCfgTxCal - (uint8_t*)&ee), size, (const char *)pCfgTxCal ); if ( err != size ) { PERROR( "Error while writing to the EEPROM (%d)\n", err ); @@ -1592,7 +1593,7 @@ pCfgRxCal->u16Crc = eeprom_crc( (uint8_t *)&pCfgRxCal->u32Time, size - 2 * sizeof(uint16_t) ); // Write it to the EEPROM - err = eeprom_write( EEPROM_CFG_START_ADDR + ((uint32_t*)pCfgRxCal - (uint32_t*)&ee), size, (const char *)pCfgRxCal ); + err = eeprom_write( EEPROM_CFG_START_ADDR + ((uint8_t*)pCfgRxCal - (uint8_t*)&ee), size, (const char *)pCfgRxCal ); if ( err != size ) { PERROR( "Error while writing to the EEPROM (%d)\n", err ); -- To view, visit https://gerrit.osmocom.org/7572 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newpatchset Gerrit-Change-Id: Iaa7318387ad7bb248c261b1f428019244039e7d2 Gerrit-PatchSet: 4 Gerrit-Project: osmo-bts Gerrit-Branch: master Gerrit-Owner: Keith Whyte Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Keith Whyte Gerrit-Reviewer: Pau Espin Pedrol Gerrit-Reviewer: Vadim Yanitskiy From gerrit-no-reply at lists.osmocom.org Tue Apr 3 09:36:27 2018 From: gerrit-no-reply at lists.osmocom.org (Keith Whyte) Date: Tue, 3 Apr 2018 09:36:27 +0000 Subject: osmo-bts[master]: osmo-bts-sysmo eeprom.c Restore ability to read/write EEPROM In-Reply-To: References: Message-ID: Patch Set 4: (1 comment) > Uploaded patch set 4. Permissions error, sorry. https://gerrit.osmocom.org/#/c/7572/3/src/osmo-bts-sysmo/eeprom.c File src/osmo-bts-sysmo/eeprom.c: Line 1103: err = eeprom_write( EEPROM_CFG_START_ADDR + ((uint8_t*)pCfgTxCal - (uint8_t*)&ee), size, (const char *)pCfgTxCal ); This line and line 1596 are only compile tested. I'm concerned that this is corrected, otherwise, don't we run the risk of writing to the wrong address in the EEPROM as long as master stands as is? -- To view, visit https://gerrit.osmocom.org/7572 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Iaa7318387ad7bb248c261b1f428019244039e7d2 Gerrit-PatchSet: 4 Gerrit-Project: osmo-bts Gerrit-Branch: master Gerrit-Owner: Keith Whyte Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Keith Whyte Gerrit-Reviewer: Pau Espin Pedrol Gerrit-Reviewer: Vadim Yanitskiy Gerrit-HasComments: Yes From gerrit-no-reply at lists.osmocom.org Tue Apr 3 09:39:50 2018 From: gerrit-no-reply at lists.osmocom.org (Keith Whyte) Date: Tue, 3 Apr 2018 09:39:50 +0000 Subject: osmo-bts[master]: osmo-bts-sysmo eeprom.c Restore ability to read/write EEPROM In-Reply-To: References: Message-ID: Patch Set 4: (1 comment) https://gerrit.osmocom.org/#/c/7572/4/src/osmo-bts-sysmo/eeprom.c File src/osmo-bts-sysmo/eeprom.c: Line 1103: err = eeprom_write( EEPROM_CFG_START_ADDR + ((uint8_t*)pCfgTxCal - (uint8_t*)&ee), size, (const char *)pCfgTxCal ); This line and line 1596 are only compile tested. I'm concerned that this is corrected, otherwise, don't we run the risk of writing to the wrong address in the EEPROM as long as master stands as is? -- To view, visit https://gerrit.osmocom.org/7572 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Iaa7318387ad7bb248c261b1f428019244039e7d2 Gerrit-PatchSet: 4 Gerrit-Project: osmo-bts Gerrit-Branch: master Gerrit-Owner: Keith Whyte Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Keith Whyte Gerrit-Reviewer: Pau Espin Pedrol Gerrit-Reviewer: Vadim Yanitskiy Gerrit-HasComments: Yes From gerrit-no-reply at lists.osmocom.org Tue Apr 3 09:46:54 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Tue, 3 Apr 2018 09:46:54 +0000 Subject: osmo-bts[master]: osmo-bts-sysmo eeprom.c Restore ability to read/write EEPROM In-Reply-To: References: Message-ID: Patch Set 4: (1 comment) https://gerrit.osmocom.org/#/c/7572/4/src/osmo-bts-sysmo/eeprom.c File src/osmo-bts-sysmo/eeprom.c: Line 1103: err = eeprom_write( EEPROM_CFG_START_ADDR + ((uint8_t*)pCfgTxCal - (uint8_t*)&ee), size, (const char *)pCfgTxCal ); > This line and line 1596 are only compile tested. I guess we can use offsetof here too. -- To view, visit https://gerrit.osmocom.org/7572 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Iaa7318387ad7bb248c261b1f428019244039e7d2 Gerrit-PatchSet: 4 Gerrit-Project: osmo-bts Gerrit-Branch: master Gerrit-Owner: Keith Whyte Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Keith Whyte Gerrit-Reviewer: Pau Espin Pedrol Gerrit-Reviewer: Vadim Yanitskiy Gerrit-HasComments: Yes From gerrit-no-reply at lists.osmocom.org Tue Apr 3 09:54:52 2018 From: gerrit-no-reply at lists.osmocom.org (Stefan Sperling) Date: Tue, 3 Apr 2018 09:54:52 +0000 Subject: [PATCH] osmo-ttcn3-hacks[master]: support ccache to speed up ttcn3 test compilation In-Reply-To: References: Message-ID: Hello Neels Hofmeyr, Jenkins Builder, I'd like you to reexamine a change. Please visit https://gerrit.osmocom.org/7601 to look at the new patch set (#5). support ccache to speed up ttcn3 test compilation By default, if ccache is found in PATH when regen-makefile.sh runs, use cached compiled C++ object files during the build (or populate the cache in case an object is not cached yet). Objects are cached in ccache's default cache directory (~/.ccache) unless overriden by the CCACHE_DIR environment variable. The USE_CCACHE environment variable overrides auto-detection in regen-makefile.sh and disables (USE_CCACHE=0) or enables (USE_CCACHE=1) use of ccache. Rebuilding the test suite from scratch with a populated cache is an order of magnitude faster than doing an initial build. In my case, compile time for BSC_Tests goes down from 3 minutes and 12 seconds to just 3 seconds, after 'make clean'. There is a small downside: We need to tweak the generated C++ files to prevent cache misses due to timestamps inserted into the code by ttcn3_compiler. This is done during 'make compile' if ccache is used. This mechanism could break in case the output of ttcn3_makefilegen changes. However, the only consequence would be a slow build due to cache misses. In the long term, an upstream solution built into eclipse titan (e.g. an option to disable time stamps in generated files) would be diserable. Another thing to note is that builds using objects from ccache will contain timestamp strings from the build which populated the cache. ccache provides a way to repopulate the cache if needed (set CCACHE_RECACHE=1 in the environment). These tradeoffs seem acceptable to me since in return we can achieve much faster turnaround, both during local test development and during test builds on jenkins. Change-Id: Ibb538f602206535c06980f88191c1dabe3c4cd82 --- M regen-makefile.sh A strip-datetime-comments.sed 2 files changed, 69 insertions(+), 1 deletion(-) git pull ssh://gerrit.osmocom.org:29418/osmo-ttcn3-hacks refs/changes/01/7601/5 diff --git a/regen-makefile.sh b/regen-makefile.sh index 57eebff..7805ca8 100755 --- a/regen-makefile.sh +++ b/regen-makefile.sh @@ -12,7 +12,22 @@ test -x "$(which ttcn3_makefilegen 2>/dev/null)" || { echo "ERROR: ttcn3_makefilegen not in PATH"; exit 1; } -ttcn3_makefilegen -p -l -f $* +# Enable ccache if it can be found in path. +# This speeds up repeated builds of the TTCN3 tests by an order of magnitude +# since most of the generated C++ source files don't change very often. +# Roughly, for an initial build which takes N minutes, a complete rebuild +# after 'make clean' will only take N seconds with ccache. +# Note that ccache cannot cache compilation of .o files to .so files, so do +# not pass the -l option to ttcn3_makefilegen if ccache is used. The time +# savings promised by the -l option are dwarfed by use of ccache anyway. +if [ -z "$USE_CCACHE" ] && which ccache 2>/dev/null; then + USE_CCACHE=1 + MAKEFILEGEN_FLAGS="-p -f" +else + MAKEFILEGEN_FLAGS="-p -l -f" +fi + +ttcn3_makefilegen $MAKEFILEGEN_FLAGS $* sed -i -e 's/# TTCN3_DIR = /TTCN3_DIR = \/usr/' Makefile sed -i -e 's/LDFLAGS = /LDFLAGS = -L \/usr\/lib\/titan /' Makefile #sed -i -e 's/TTCN3_LIB = ttcn3-parallel/TTCN3_LIB = ttcn3/' Makefile @@ -32,3 +47,11 @@ sed -i -e 's/TTCN3_DIR = $/TTCN3_DIR = \/usr/' Makefile fi sed -i -e 's/\/bin\/compiler/\/bin\/ttcn3_compiler/' Makefile + +if [ "x$USE_CCACHE" = "x1" ]; then + # enable ccache + sed -i -e 's/^CXX = g++ $/CXX = env CCACHE_SLOPPINESS=time_macros ccache g++/' Makefile + # The Makefile must tweak generated C++ files during the 'make compile' step. + # See the strip-datetime-comments sed script for details. + sed -i -f ../strip-datetime-comments.sed Makefile +fi diff --git a/strip-datetime-comments.sed b/strip-datetime-comments.sed new file mode 100644 index 0000000..8089b8e --- /dev/null +++ b/strip-datetime-comments.sed @@ -0,0 +1,45 @@ +#!/usr/bin/sed +# (C) 2018 by sysmocom s.f.m.c. GmbH +# Author: Stefan Sperling +# All rights reserved. +# Released under the terms of GNU General Public License, Version 2 or +# (at your option) any later version. + +# This sed script edits a Makefile generated by ttcn3_makefilegen. +# We insert a sed command into the 'compile:' target in order to +# remove timestamp comments from generated C++ files. + +# The ttcn3_compiler will generate C++ comments with a timestamp, such as: +# // for Stefan Sperling (stsp at fintan) on Sat Mar 31 14:34:30 2018 +# We must remove such comments since they cause cache misses with ccache. +# +# A related problem is the use of __DATE__ and __TIME__ in generated C++ code, +# which can be worked around by setting "CCACHE_SLOPPINESS=time_macros". This +# workaround implies that we must get our cache hits from ccache's "direct" +# cache, since ccache's "preprocessor" caching method won't work. +# +# FIXME: This should really be addressed in ttcn3_compiler itself! +# It should provide an option to suppress use of timestamps in generated code. + +# The generated Makefile's compile target looks like this: +# +# compile: $(TTCN3_MODULES) $(PREPROCESSED_TTCN3_MODULES) $(ASN1_MODULES) +# $(TTCN3_DIR)/bin/ttcn3_compiler $(COMPILER_FLAGS) \ +# $(TTCN3_MODULES) $(PREPROCESSED_TTCN3_MODULES) $(ASN1_MODULES) - $? +# touch $@ +# +# Before the final 'touch $@' step, we now insert a `sed` command that strips +# offending C++ comments from the generated code. + +# match the line in the generated Makefile which starts with 'compile:' +/^compile:/ { + # go to the next line + n; + # go to the next line + n; + # go to the next line + n; + # on this line, try to match 'touch $@', and if there is a match preprend a + # sed command which deletes the offending comments from generated C++ files: + s!touch $@!sed -i -e '/\\/\\/ for .* on .*/d' $(GENERATED_HEADERS) $(GENERATED_SOURCES) \&\& &! +} -- To view, visit https://gerrit.osmocom.org/7601 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newpatchset Gerrit-Change-Id: Ibb538f602206535c06980f88191c1dabe3c4cd82 Gerrit-PatchSet: 5 Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Owner: Stefan Sperling Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Neels Hofmeyr Gerrit-Reviewer: Stefan Sperling From gerrit-no-reply at lists.osmocom.org Tue Apr 3 09:55:40 2018 From: gerrit-no-reply at lists.osmocom.org (Stefan Sperling) Date: Tue, 3 Apr 2018 09:55:40 +0000 Subject: osmo-ttcn3-hacks[master]: support ccache to speed up ttcn3 test compilation In-Reply-To: References: Message-ID: Patch Set 4: (1 comment) https://gerrit.osmocom.org/#/c/7601/4/regen-makefile.sh File regen-makefile.sh: Line 51: if [ -n "$USE_CCACHE" ]; then > (if I set my env to 'USE_CCACHE=0' then this still evaluates true. slightly Agreed. Fixed in current patch set. -- To view, visit https://gerrit.osmocom.org/7601 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Ibb538f602206535c06980f88191c1dabe3c4cd82 Gerrit-PatchSet: 4 Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Owner: Stefan Sperling Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Neels Hofmeyr Gerrit-Reviewer: Stefan Sperling Gerrit-HasComments: Yes From gerrit-no-reply at lists.osmocom.org Tue Apr 3 11:59:33 2018 From: gerrit-no-reply at lists.osmocom.org (Stefan Sperling) Date: Tue, 3 Apr 2018 11:59:33 +0000 Subject: osmo-ttcn3-hacks[master]: support ccache to speed up ttcn3 test compilation In-Reply-To: References: Message-ID: Patch Set 5: Unfortunately this change breaks test execution. It seems the test runtimes relies compilation with shared objects, which has to be disabled for ccache to work (regen-makefile.sh changes the flags passed to ttcn3_makefilegen). Running GGSN tests compiled with ccache, I see the error "Static runtime cannot load plugins" MC at fintan: New HC connected from fintan [172.18.2.200]. fintan: Linux 4.13.0-38-generic on x86_64. cmtc MC at fintan: Downloading configuration file to all HCs. Fatal error during logging: Static runtime cannot load plugins Exiting. ttcn3_start: error: Something went wrong... Error: Receiving of data failed on HC connection from fintan [172.18.2.200]. Error: There is no HC connection after processing the configuration file. Error during initialization. Cannot create MTC. -- To view, visit https://gerrit.osmocom.org/7601 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Ibb538f602206535c06980f88191c1dabe3c4cd82 Gerrit-PatchSet: 5 Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Owner: Stefan Sperling Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Neels Hofmeyr Gerrit-Reviewer: Stefan Sperling Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Tue Apr 3 12:18:36 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Tue, 3 Apr 2018 12:18:36 +0000 Subject: osmo-bts[master]: osmo-bts-sysmo eeprom.c Restore ability to read/write EEPROM In-Reply-To: References: Message-ID: Patch Set 4: Code-Review+1 Forget my last comment, no need to use offsetof on the other case as it makes the code more difficult to follow (since we use a pointer set to a different offset depending on the band). So +1 here, we can merge it. -- To view, visit https://gerrit.osmocom.org/7572 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Iaa7318387ad7bb248c261b1f428019244039e7d2 Gerrit-PatchSet: 4 Gerrit-Project: osmo-bts Gerrit-Branch: master Gerrit-Owner: Keith Whyte Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Keith Whyte Gerrit-Reviewer: Pau Espin Pedrol Gerrit-Reviewer: Vadim Yanitskiy Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Tue Apr 3 12:56:02 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Tue, 3 Apr 2018 12:56:02 +0000 Subject: osmo-bts[master]: osmo-bts-sysmo eeprom.c Restore ability to read/write EEPROM In-Reply-To: References: Message-ID: Patch Set 4: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7572 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Iaa7318387ad7bb248c261b1f428019244039e7d2 Gerrit-PatchSet: 4 Gerrit-Project: osmo-bts Gerrit-Branch: master Gerrit-Owner: Keith Whyte Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Keith Whyte Gerrit-Reviewer: Pau Espin Pedrol Gerrit-Reviewer: Vadim Yanitskiy Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Tue Apr 3 12:56:05 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Tue, 3 Apr 2018 12:56:05 +0000 Subject: [MERGED] osmo-bts[master]: osmo-bts-sysmo eeprom.c Restore ability to read/write EEPROM In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: osmo-bts-sysmo eeprom.c Restore ability to read/write EEPROM ...................................................................... osmo-bts-sysmo eeprom.c Restore ability to read/write EEPROM This commit restores ability to read write to the SuperFemto EEPROM. Use offsetof() instead of casts to pointers when calculating the address to pass to eeprom_read() and eeprom_write() Fixes: 7cf144b27d75fadfb4ec65019985bb10660a066a Change-Id: Iaa7318387ad7bb248c261b1f428019244039e7d2 --- M src/osmo-bts-sysmo/eeprom.c 1 file changed, 7 insertions(+), 6 deletions(-) Approvals: Pau Espin Pedrol: Looks good to me, but someone else must approve Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/src/osmo-bts-sysmo/eeprom.c b/src/osmo-bts-sysmo/eeprom.c index a7f3d77..472b78e 100644 --- a/src/osmo-bts-sysmo/eeprom.c +++ b/src/osmo-bts-sysmo/eeprom.c @@ -59,6 +59,7 @@ #include #include #include +#include #include #include "eeprom.h" @@ -495,7 +496,7 @@ case EEPROM_HDR_V2: { // Get a copy of the EEPROM section - err = eeprom_read( EEPROM_CFG_START_ADDR + ((uint32_t*)&ee.cfg.v1.sysInfo - (uint32_t*)&ee), sizeof(ee.cfg.v1.sysInfo), (char *)&ee.cfg.v1.sysInfo ); + err = eeprom_read( EEPROM_CFG_START_ADDR + offsetof(eeprom_Cfg_t, cfg.v1.sysInfo), sizeof(ee.cfg.v1.sysInfo), (char *)&ee.cfg.v1.sysInfo ); if ( err != sizeof(ee.cfg.v1.sysInfo) ) { PERROR( "Error while reading the EEPROM content (%d)\n", err ); @@ -602,7 +603,7 @@ ee.cfg.v1.sysInfo.u16Crc = eeprom_crc( (uint8_t *)&ee.cfg.v1.sysInfo.u32Time, sizeof(ee.cfg.v1.sysInfo) - 2 * sizeof(uint16_t) ); // Write it to the EEPROM - err = eeprom_write( EEPROM_CFG_START_ADDR + ((uint32_t*)&ee.cfg.v1.sysInfo - (uint32_t*)&ee), sizeof(ee.cfg.v1.sysInfo), (const char *) &ee.cfg.v1.sysInfo ); + err = eeprom_write( EEPROM_CFG_START_ADDR + offsetof(eeprom_Cfg_t, cfg.v1.sysInfo), sizeof(ee.cfg.v1.sysInfo), (const char *) &ee.cfg.v1.sysInfo ); if ( err != sizeof(ee.cfg.v1.sysInfo) ) { PERROR( "Error while writing to the EEPROM (%d)\n", err ); @@ -660,7 +661,7 @@ case EEPROM_HDR_V2: { // Get a copy of the EEPROM section - err = eeprom_read( EEPROM_CFG_START_ADDR + ((uint32_t*)&ee.cfg.v1.rfClk - (uint32_t*)&ee), sizeof(ee.cfg.v1.rfClk), (char *)&ee.cfg.v1.rfClk ); + err = eeprom_read( EEPROM_CFG_START_ADDR + offsetof(eeprom_Cfg_t, cfg.v1.rfClk), sizeof(ee.cfg.v1.rfClk), (char *)&ee.cfg.v1.rfClk ); if ( err != sizeof(ee.cfg.v1.rfClk) ) { PERROR( "Error while reading the EEPROM content (%d)\n", err ); @@ -755,7 +756,7 @@ ee.cfg.v1.rfClk.u16Crc = eeprom_crc( (uint8_t *)&ee.cfg.v1.rfClk.u32Time, sizeof(ee.cfg.v1.rfClk) - 2 * sizeof(uint16_t) ); // Write it to the EEPROM - err = eeprom_write( EEPROM_CFG_START_ADDR + ((uint32_t*)&ee.cfg.v1.rfClk - (uint32_t*)&ee), sizeof(ee.cfg.v1.rfClk), (const char *) &ee.cfg.v1.rfClk ); + err = eeprom_write( EEPROM_CFG_START_ADDR + offsetof(eeprom_Cfg_t, cfg.v1.rfClk), sizeof(ee.cfg.v1.rfClk), (const char *) &ee.cfg.v1.rfClk ); if ( err != sizeof(ee.cfg.v1.rfClk) ) { PERROR( "Error while writing to the EEPROM (%d)\n", err ); @@ -1099,7 +1100,7 @@ pCfgTxCal->u16Crc = eeprom_crc( (uint8_t *)&pCfgTxCal->u32Time, size - 2 * sizeof(uint16_t) ); // Write it to the EEPROM - err = eeprom_write( EEPROM_CFG_START_ADDR + ((uint32_t*)pCfgTxCal - (uint32_t*)&ee), size, (const char *)pCfgTxCal ); + err = eeprom_write( EEPROM_CFG_START_ADDR + ((uint8_t*)pCfgTxCal - (uint8_t*)&ee), size, (const char *)pCfgTxCal ); if ( err != size ) { PERROR( "Error while writing to the EEPROM (%d)\n", err ); @@ -1592,7 +1593,7 @@ pCfgRxCal->u16Crc = eeprom_crc( (uint8_t *)&pCfgRxCal->u32Time, size - 2 * sizeof(uint16_t) ); // Write it to the EEPROM - err = eeprom_write( EEPROM_CFG_START_ADDR + ((uint32_t*)pCfgRxCal - (uint32_t*)&ee), size, (const char *)pCfgRxCal ); + err = eeprom_write( EEPROM_CFG_START_ADDR + ((uint8_t*)pCfgRxCal - (uint8_t*)&ee), size, (const char *)pCfgRxCal ); if ( err != size ) { PERROR( "Error while writing to the EEPROM (%d)\n", err ); -- To view, visit https://gerrit.osmocom.org/7572 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: Iaa7318387ad7bb248c261b1f428019244039e7d2 Gerrit-PatchSet: 4 Gerrit-Project: osmo-bts Gerrit-Branch: master Gerrit-Owner: Keith Whyte Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Keith Whyte Gerrit-Reviewer: Pau Espin Pedrol Gerrit-Reviewer: Vadim Yanitskiy From gerrit-no-reply at lists.osmocom.org Tue Apr 3 12:56:32 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Tue, 3 Apr 2018 12:56:32 +0000 Subject: osmo-msc[master]: drop some dead definitions (gsm_data.h, gsup_client.c) In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7610 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Icad01d0ad8fa68293160bc56543b9c3dcafc50bb Gerrit-PatchSet: 1 Gerrit-Project: osmo-msc Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Vadim Yanitskiy Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Tue Apr 3 12:56:47 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Tue, 3 Apr 2018 12:56:47 +0000 Subject: osmo-msc[master]: test_reject_concurrency: missing assert In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7611 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Ifdde3a6fa5835203c34c40db77761f2e90c0d5ff Gerrit-PatchSet: 1 Gerrit-Project: osmo-msc Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Vadim Yanitskiy Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Tue Apr 3 12:57:08 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Tue, 3 Apr 2018 12:57:08 +0000 Subject: osmo-msc[master]: cosmetic: rx_bssmap: read message type once into local var In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7612 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: If70c9fa00edd462d3470bded6eb2c6521e4d9234 Gerrit-PatchSet: 1 Gerrit-Project: osmo-msc Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Vadim Yanitskiy Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Tue Apr 3 12:57:42 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Tue, 3 Apr 2018 12:57:42 +0000 Subject: osmo-msc[master]: cosmetic: rename gsm_subscriber_connection->conn_fsm to ->fi In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7613 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: If442f2ba78d9722b1065ec30c9a13f372b6a8caa Gerrit-PatchSet: 1 Gerrit-Project: osmo-msc Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Vadim Yanitskiy Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Tue Apr 3 12:58:36 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Tue, 3 Apr 2018 12:58:36 +0000 Subject: osmo-msc[master]: cosmetic: rename subscr_conn_from to complete_layer3_type In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7614 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I6263a80e6db01c2ca48df6c58b05e2fd19347057 Gerrit-PatchSet: 1 Gerrit-Project: osmo-msc Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Vadim Yanitskiy Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Tue Apr 3 12:59:08 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Tue, 3 Apr 2018 12:59:08 +0000 Subject: osmo-msc[master]: subscr_conn: store complete_layer3_type in conn, not FSM eve... In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7615 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Iae30dd57a8861c4eaaf56999f872d4e635ba97fb Gerrit-PatchSet: 1 Gerrit-Project: osmo-msc Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Tue Apr 3 13:00:19 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Tue, 3 Apr 2018 13:00:19 +0000 Subject: osmo-msc[master]: unify allocation of gsm_subscriber_connection In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+1 -- To view, visit https://gerrit.osmocom.org/7616 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Ia57b42a149a43f9c370b1310e2e1f512183993ea Gerrit-PatchSet: 1 Gerrit-Project: osmo-msc Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Tue Apr 3 13:00:54 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Tue, 3 Apr 2018 13:00:54 +0000 Subject: osmo-ttcn3-hacks[master]: support ccache to speed up ttcn3 test compilation In-Reply-To: References: Message-ID: Patch Set 5: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7601 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Ibb538f602206535c06980f88191c1dabe3c4cd82 Gerrit-PatchSet: 5 Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Owner: Stefan Sperling Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Neels Hofmeyr Gerrit-Reviewer: Stefan Sperling Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Tue Apr 3 14:04:45 2018 From: gerrit-no-reply at lists.osmocom.org (Stefan Sperling) Date: Tue, 3 Apr 2018 14:04:45 +0000 Subject: [PATCH] osmo-ttcn3-hacks[master]: document the purpose of IP addresses used by GGSN tests Message-ID: Review at https://gerrit.osmocom.org/7617 document the purpose of IP addresses used by GGSN tests The purpose of the various IP addresses used by our GGSN tests is not immediately clear. Add documentation based on the current status quo. Change-Id: I079efcff3dab09d71330625f5b661cd81e42bf38 --- M ggsn_tests/GGSN_Tests.ttcn 1 file changed, 19 insertions(+), 0 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-ttcn3-hacks refs/changes/17/7617/1 diff --git a/ggsn_tests/GGSN_Tests.ttcn b/ggsn_tests/GGSN_Tests.ttcn index 2b7de96..b620777 100644 --- a/ggsn_tests/GGSN_Tests.ttcn +++ b/ggsn_tests/GGSN_Tests.ttcn @@ -20,16 +20,35 @@ const integer GTP1U_PORT := 2152; modulepar { + /* Default IP addresses. May be overridden by GGSN_Tests configuration files. */ + + /* The SGSN simulated by TTCN3 will bind to these addresses for GTP control and GTP user planes. */ charstring m_bind_ip_gtpc := "127.23.42.1"; charstring m_bind_ip_gtpu := "127.23.42.1"; + /* Adddresses the GGSN which is being tested is listening on for SGSN connections. */ charstring m_ggsn_ip_gtpc := "127.0.0.6"; charstring m_ggsn_ip_gtpu := "127.0.0.6"; + /* + * Our tests expect to see these DNS servers in 'Create PDP context responses' sent by the GGSN. + * These addresses must therefore match 'ip[v6] dns' options configured in osmo-ggsn.conf. + * + * These addresses are not expected to serve actual DNS requests. However, tests may expect to be + * able to ping these addresses (currently, IPv4 addresses must respond with an ICMP 'echo reply', + * and IPv6 addresses may respond with either ICMPv6 'echo reply' or 'destination unreachable'). + */ charstring m_ggsn_ip4_dns1 := "192.168.100.1" charstring m_ggsn_ip4_dns2 := "8.8.8.8" charstring m_ggsn_ip6_dns1 := "2001:4860:4860::8888" charstring m_ggsn_ip6_dns2 := "2001:4860:4860::8844" + + /* + * Additional address ranges are defined in osmo-ggsn.conf from which addresses are assigned + * to MS "behind" the simulated SGSN. These addresses appear on tun devices used by osmo-ggsn. + * The tests expect to be able to send ping packets between any two simulated MS within the same + * address range. This requires IP forwarding to be enabled on the corresponding tun interfaces. + */ } type set PdpContext { -- To view, visit https://gerrit.osmocom.org/7617 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I079efcff3dab09d71330625f5b661cd81e42bf38 Gerrit-PatchSet: 1 Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Owner: Stefan Sperling From gerrit-no-reply at lists.osmocom.org Tue Apr 3 14:07:39 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Tue, 3 Apr 2018 14:07:39 +0000 Subject: osmo-ttcn3-hacks[master]: document the purpose of IP addresses used by GGSN tests In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+1 -- To view, visit https://gerrit.osmocom.org/7617 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I079efcff3dab09d71330625f5b661cd81e42bf38 Gerrit-PatchSet: 1 Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Owner: Stefan Sperling Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Pau Espin Pedrol Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Tue Apr 3 14:12:08 2018 From: gerrit-no-reply at lists.osmocom.org (Stefan Sperling) Date: Tue, 3 Apr 2018 14:12:08 +0000 Subject: [ABANDON] osmo-ttcn3-hacks[master]: support ccache to speed up ttcn3 test compilation In-Reply-To: References: Message-ID: Stefan Sperling has abandoned this change. Change subject: support ccache to speed up ttcn3 test compilation ...................................................................... Abandoned Abandoning for now because it breaks tests at runtime (plugin loading fails due to static runtime). -- To view, visit https://gerrit.osmocom.org/7601 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: abandon Gerrit-Change-Id: Ibb538f602206535c06980f88191c1dabe3c4cd82 Gerrit-PatchSet: 5 Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Owner: Stefan Sperling Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Neels Hofmeyr Gerrit-Reviewer: Stefan Sperling From gerrit-no-reply at lists.osmocom.org Tue Apr 3 14:19:45 2018 From: gerrit-no-reply at lists.osmocom.org (Stefan Sperling) Date: Tue, 3 Apr 2018 14:19:45 +0000 Subject: [PATCH] osmo-ttcn3-hacks[master]: document the purpose of IP addresses used by GGSN tests In-Reply-To: References: Message-ID: Hello Pau Espin Pedrol, Jenkins Builder, I'd like you to reexamine a change. Please visit https://gerrit.osmocom.org/7617 to look at the new patch set (#2). document the purpose of IP addresses used by GGSN tests The purpose of the various IP addresses used by our GGSN tests is not immediately clear. Add documentation based on the current status quo. Change-Id: I079efcff3dab09d71330625f5b661cd81e42bf38 --- M ggsn_tests/GGSN_Tests.ttcn 1 file changed, 19 insertions(+), 0 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-ttcn3-hacks refs/changes/17/7617/2 diff --git a/ggsn_tests/GGSN_Tests.ttcn b/ggsn_tests/GGSN_Tests.ttcn index 2b7de96..1469062 100644 --- a/ggsn_tests/GGSN_Tests.ttcn +++ b/ggsn_tests/GGSN_Tests.ttcn @@ -20,16 +20,35 @@ const integer GTP1U_PORT := 2152; modulepar { + /* Default IP addresses. May be overridden by GGSN_Tests configuration files. */ + + /* The SGSN simulated by TTCN3 will bind to these addresses for GTP control and GTP user planes. */ charstring m_bind_ip_gtpc := "127.23.42.1"; charstring m_bind_ip_gtpu := "127.23.42.1"; + /* Addresses the GGSN which is being tested is listening on for SGSN connections. */ charstring m_ggsn_ip_gtpc := "127.0.0.6"; charstring m_ggsn_ip_gtpu := "127.0.0.6"; + /* + * Our tests expect to see these DNS servers in 'Create PDP context responses' sent by the GGSN. + * These addresses must therefore match 'ip[v6] dns' options configured in osmo-ggsn.conf. + * + * These addresses are not expected to serve actual DNS requests. However, tests may expect to be + * able to ping these addresses (currently, IPv4 addresses must respond with an ICMP 'echo reply', + * and IPv6 addresses may respond with either ICMPv6 'echo reply' or 'destination unreachable'). + */ charstring m_ggsn_ip4_dns1 := "192.168.100.1" charstring m_ggsn_ip4_dns2 := "8.8.8.8" charstring m_ggsn_ip6_dns1 := "2001:4860:4860::8888" charstring m_ggsn_ip6_dns2 := "2001:4860:4860::8844" + + /* + * Additional address ranges are defined in osmo-ggsn.conf from which addresses are assigned + * to MS "behind" the simulated SGSN. These addresses appear on tun devices used by osmo-ggsn. + * The tests expect to be able to send ping packets between any two simulated MS within the same + * address range. This requires IP forwarding to be enabled on the corresponding tun interfaces. + */ } type set PdpContext { -- To view, visit https://gerrit.osmocom.org/7617 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newpatchset Gerrit-Change-Id: I079efcff3dab09d71330625f5b661cd81e42bf38 Gerrit-PatchSet: 2 Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Owner: Stefan Sperling Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Pau Espin Pedrol From gerrit-no-reply at lists.osmocom.org Tue Apr 3 14:26:20 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Tue, 3 Apr 2018 14:26:20 +0000 Subject: osmo-ttcn3-hacks[master]: document the purpose of IP addresses used by GGSN tests In-Reply-To: References: Message-ID: Patch Set 2: Code-Review+1 -- To view, visit https://gerrit.osmocom.org/7617 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I079efcff3dab09d71330625f5b661cd81e42bf38 Gerrit-PatchSet: 2 Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Owner: Stefan Sperling Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Pau Espin Pedrol Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Tue Apr 3 15:28:26 2018 From: gerrit-no-reply at lists.osmocom.org (Neels Hofmeyr) Date: Tue, 3 Apr 2018 15:28:26 +0000 Subject: [PATCH] libosmocore[master]: ctrl: fix deferred commands (and hence fix osmo-bts-sysmo 'c... Message-ID: Review at https://gerrit.osmocom.org/7618 ctrl: fix deferred commands (and hence fix osmo-bts-sysmo 'clock-info' cmd) The CTRL interface has a ctrl_cmd_def_* API that allows deferring a CTRL command reply until later. However, the command handling currently fails to acknowledge this and deallocates the struct ctrl_cmd anyway. Fix: in struct ctrl_cmd, add a defer pointer to be populated by ctrl_cmd_def_make(). A cmd thus marked as deferred is not deallocated at the end of command handling. This fix needs no change in calling code. (Another idea was to return a different code than CTRL_CMD_HANDLED when the command is to be deferred, but that would require adjusting each user of ctrl_cmd_def_make(). The implicit marking is safer and easier.) One symptom of the breakage is that osmo-bts-sysmo crashes when asked to report a trx's clock-info, which is aggravated by the fact that the sysmobts-mgr does ask osmo-bts-sysmo for a clock-info. The crash appears since Id583b413f8b8bd16e5cf92a8a9e8663903646381 -- it looked like just fixing an obvious memory leak, which it did as shown by the unit test, but deferred ctrl commands actually relied on that leak. Both fixed now. Related: OS#3120 Change-Id: I24232be7dcf7be79f4def91ddc8b8f8005b56318 --- M include/osmocom/ctrl/control_cmd.h M src/ctrl/control_cmd.c M src/ctrl/control_if.c 3 files changed, 11 insertions(+), 0 deletions(-) git pull ssh://gerrit.osmocom.org:29418/libosmocore refs/changes/18/7618/1 diff --git a/include/osmocom/ctrl/control_cmd.h b/include/osmocom/ctrl/control_cmd.h index 865b006..a5df753 100644 --- a/include/osmocom/ctrl/control_cmd.h +++ b/include/osmocom/ctrl/control_cmd.h @@ -56,6 +56,8 @@ struct llist_head def_cmds; }; +struct ctrl_cmd_def; + struct ctrl_cmd { struct ctrl_connection *ccon; enum ctrl_type type; @@ -64,6 +66,7 @@ char *variable; char *value; char *reply; + struct ctrl_cmd_def *defer; }; #define ctrl_cmd_reply_printf(cmd, fmt, args ...) \ diff --git a/src/ctrl/control_cmd.c b/src/ctrl/control_cmd.c index c747e84..fb0cd2b 100644 --- a/src/ctrl/control_cmd.c +++ b/src/ctrl/control_cmd.c @@ -566,6 +566,7 @@ cd = talloc_zero(ctx, struct ctrl_cmd_def); + cmd->defer = cd; cd->cmd = cmd; cd->data = data; diff --git a/src/ctrl/control_if.c b/src/ctrl/control_if.c index 07de0d4..df8abbc 100644 --- a/src/ctrl/control_if.c +++ b/src/ctrl/control_if.c @@ -401,6 +401,13 @@ if (cmd->type != CTRL_TYPE_ERROR) { cmd->ccon = ccon; if (ctrl_cmd_handle(ctrl, cmd, ctrl->data) == CTRL_CMD_HANDLED) { + + if (cmd->defer) { + /* The command is still stored as ctrl_cmd_def.cmd, in the def_cmds list. + * Just leave hanging for deferred handling. Reply will happen later. */ + return 0; + } + /* On CTRL_CMD_HANDLED, no reply needs to be sent back. */ talloc_free(cmd); cmd = NULL; -- To view, visit https://gerrit.osmocom.org/7618 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I24232be7dcf7be79f4def91ddc8b8f8005b56318 Gerrit-PatchSet: 1 Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr From gerrit-no-reply at lists.osmocom.org Tue Apr 3 15:28:27 2018 From: gerrit-no-reply at lists.osmocom.org (Neels Hofmeyr) Date: Tue, 3 Apr 2018 15:28:27 +0000 Subject: [PATCH] libosmocore[master]: cosmetic: flatten ctrl_handle_msg() Message-ID: Review at https://gerrit.osmocom.org/7619 cosmetic: flatten ctrl_handle_msg() Change-Id: I3a711f5c974b7f56e27b333d390d1a706fb57007 --- M src/ctrl/control_if.c 1 file changed, 19 insertions(+), 17 deletions(-) git pull ssh://gerrit.osmocom.org:29418/libosmocore refs/changes/19/7619/1 diff --git a/src/ctrl/control_if.c b/src/ctrl/control_if.c index df8abbc..cc613ee 100644 --- a/src/ctrl/control_if.c +++ b/src/ctrl/control_if.c @@ -365,6 +365,7 @@ struct ctrl_cmd *cmd; struct ipaccess_head *iph; struct ipaccess_head_ext *iph_ext; + int result; if (msg->len < sizeof(*iph) + sizeof(*iph_ext)) { LOGP(DLCTRL, LOGL_ERROR, "The message is too short.\n"); @@ -398,28 +399,29 @@ cmd->reply = "Command parser error."; } - if (cmd->type != CTRL_TYPE_ERROR) { - cmd->ccon = ccon; - if (ctrl_cmd_handle(ctrl, cmd, ctrl->data) == CTRL_CMD_HANDLED) { + /* In case of error, reply with the error message right away. */ + if (cmd->type == CTRL_TYPE_ERROR) + goto send_reply; - if (cmd->defer) { - /* The command is still stored as ctrl_cmd_def.cmd, in the def_cmds list. - * Just leave hanging for deferred handling. Reply will happen later. */ - return 0; - } + cmd->ccon = ccon; + result = ctrl_cmd_handle(ctrl, cmd, ctrl->data); - /* On CTRL_CMD_HANDLED, no reply needs to be sent back. */ - talloc_free(cmd); - cmd = NULL; - } + + if (cmd->defer) { + /* The command is still stored as ctrl_cmd_def.cmd, in the def_cmds list. + * Just leave hanging for deferred handling. Reply will happen later. */ + return 0; } - if (cmd) { - /* There is a reply or error that should be reported back to the sender. */ - ctrl_cmd_send(&ccon->write_queue, cmd); - talloc_free(cmd); - } + /* On CTRL_CMD_HANDLED, no reply needs to be sent back. */ + if (result == CTRL_CMD_HANDLED) + goto just_free; +send_reply: + /* There is a reply or error that should be reported back to the sender. */ + ctrl_cmd_send(&ccon->write_queue, cmd); +just_free: + talloc_free(cmd); return 0; } -- To view, visit https://gerrit.osmocom.org/7619 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I3a711f5c974b7f56e27b333d390d1a706fb57007 Gerrit-PatchSet: 1 Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr From gerrit-no-reply at lists.osmocom.org Tue Apr 3 17:30:29 2018 From: gerrit-no-reply at lists.osmocom.org (Neels Hofmeyr) Date: Tue, 3 Apr 2018 17:30:29 +0000 Subject: [PATCH] osmo-ttcn3-hacks[master]: summary logger WIP Message-ID: Review at https://gerrit.osmocom.org/7620 summary logger WIP Change-Id: Icf464430ebb2729b40dc872945d0c311191a671c --- M Common.cfg A libsummarylogger/Makefile A libsummarylogger/Makefile.cfg A libsummarylogger/Makefile.genrules A libsummarylogger/SummaryLogger.cc A libsummarylogger/SummaryLogger.hh 6 files changed, 1,004 insertions(+), 1 deletion(-) git pull ssh://gerrit.osmocom.org:29418/osmo-ttcn3-hacks refs/changes/20/7620/1 diff --git a/Common.cfg b/Common.cfg index bf0a752..d6decbb 100644 --- a/Common.cfg +++ b/Common.cfg @@ -10,7 +10,8 @@ AppendFile := Yes; SourceInfoFormat := Single; LogSourceInfo := Yes; -LoggerPlugins := { JUnitLogger := "libjunitlogger2" } +LoggerPlugins := { JUnitLogger := "libjunitlogger2", + SummaryLogger := "libsummarylogger" } FileMask := LOG_ALL | TTCN_DEBUG | TTCN_MATCHING | DEBUG_ENCDEC; ConsoleMask := ERROR | WARNING | TESTCASE | USER; diff --git a/libsummarylogger/Makefile b/libsummarylogger/Makefile new file mode 100644 index 0000000..ef64c5d --- /dev/null +++ b/libsummarylogger/Makefile @@ -0,0 +1,100 @@ +############################################################################## +# Copyright (c) 2018 sysmocom - s.f.m.c. GmbH +# All rights reserved. This program and the accompanying materials +# are made available under the terms of the Eclipse Public License v1.0 +# which accompanies this distribution, and is available at +# http://www.eclipse.org/legal/epl-v10.html +# +# Contributors: +# Neels Hofmeyr +# +############################################################################## +# Makefile for the SummaryLogger plugin. Unfortunately, we'll need four different +# libraries for each plugin... Plugin version information must be +# synchronized with the code. + +TOP := . +include Makefile.cfg + +LIB_DIR := /usr/lib/titan +INCLUDE_DIR := /usr/include/titan + +MAJOR := 0 +MINOR := 0 + +SOURCES := SummaryLogger.cc +STATIC_SOURCES := ${SOURCES} +HEADERS := $(SOURCES:.cc=.hh) +OBJECTS := $(SOURCES:.cc=.o) +OBJECTS_RT2 := $(addprefix FT/,$(OBJECTS)) + +SHARED_LIB := libsummarylogger.so +SHARED_LIB_RT2 := libsummarylogger-rt2.so +SHARED_LIB_PARALLEL := libsummarylogger-parallel.so +SHARED_LIB_PARALLEL_RT2 := libsummarylogger-parallel-rt2.so + +CPPFLAGS += -I$(INCLUDE_DIR) + +CXXFLAGS += -I$(INCLUDE_DIR) -DLINUX + +LDFLAGS_ORIG := $(LDFLAGS) +LDFLAGS += -g -L/usr/lib/titan -Wl,-soname,$(SHARED_LIB).$(MAJOR) -o $(SHARED_LIB).$(MAJOR).$(MINOR) +LDFLAGS_RT2 += $(LDFLAGS_ORIG) -g -L$(LIB_DIR) -Wl,-soname,$(SHARED_LIB_RT2).$(MAJOR) -o $(SHARED_LIB_RT2).$(MAJOR).$(MINOR) +LDFLAGS_PARALLEL += $(LDFLAGS_ORIG) -g -L$(LIB_DIR) -Wl,-soname,$(SHARED_LIB_PARALLEL).$(MAJOR) -o $(SHARED_LIB_PARALLEL).$(MAJOR).$(MINOR) +LDFLAGS_PARALLEL_RT2 += $(LDFLAGS_ORIG) -g -L$(LIB_DIR) -Wl,-soname,$(SHARED_LIB_PARALLEL_RT2).$(MAJOR) -o $(SHARED_LIB_PARALLEL_RT2).$(MAJOR).$(MINOR) + +LIBS := -lttcn3-dynamic +LIBS_RT2 := -lttcn3-rt2-dynamic +LIBS_PARALLEL := -lttcn3-parallel-dynamic +LIBS_PARALLEL_RT2 := -lttcn3-rt2-parallel-dynamic + +TARGETS := $(SHARED_LIB) $(SHARED_LIB_PARALLEL) $(SHARED_LIB_RT2) $(SHARED_LIB_PARALLEL_RT2) +# .so with .major appended: +TARGETS_MAJOR := $(addsuffix .$(MAJOR), $(TARGETS)) +# .so with .major.minor appended: +TARGETS_MAJOR_MINOR := $(addsuffix .$(MINOR), $(TARGETS_MAJOR)) + +# OBJECTS_RT2, TARGETS_MAJOR and TARGETS_MAJOR_MINOR are non-standard make variables, +# not taken into account by "clean" in Makefile.genrules +# Delete them as "miscellaneous" files. +TOBECLEANED := $(OBJECTS_RT2) $(TARGETS_MAJOR) $(TARGETS_MAJOR_MINOR) + +all run: $(TARGETS) + +$(SHARED_LIB): $(OBJECTS) + $(CXX) $(CPPFLAGS) $(CXXFLAGS) $(LDFLAGS) $? $(LIBS) -shared + ln -sf $@.$(MAJOR).$(MINOR) $@.$(MAJOR) + ln -sf $@.$(MAJOR) $@ + +$(SHARED_LIB_RT2): $(OBJECTS_RT2) + $(CXX) $(CPPFLAGS_RT2) $(CXXFLAGS) $(LDFLAGS_RT2) $? $(LIBS_RT2) -shared + ln -sf $@.$(MAJOR).$(MINOR) $@.$(MAJOR) + ln -sf $@.$(MAJOR) $@ + +$(SHARED_LIB_PARALLEL): $(OBJECTS) + $(CXX) $(CPPFLAGS) $(CXXFLAGS) $(LDFLAGS_PARALLEL) $? $(LIBS_PARALLEL) -shared + ln -sf $@.$(MAJOR).$(MINOR) $@.$(MAJOR) + ln -sf $@.$(MAJOR) $@ + +$(SHARED_LIB_PARALLEL_RT2): $(OBJECTS_RT2) + $(CXX) $(CPPFLAGS_RT2) $(CXXFLAGS) $(LDFLAGS_PARALLEL_RT2) $? $(LIBS_PARALLEL_RT2) -shared + ln -sf $@.$(MAJOR).$(MINOR) $@.$(MAJOR) + ln -sf $@.$(MAJOR) $@ + +$(OBJECTS): $(SOURCES) $(HEADERS) + $(CXX) $(CPPFLAGS) $(CXXFLAGS) -c $? + +# The `-o $@' stuff is necessary, otherwise the result will be put into the +# current directory. +$(OBJECTS_RT2): $(SOURCES) + mkdir -p FT + $(CXX) $(CPPFLAGS_RT2) $(CXXFLAGS) -c $? -o $@ + +dep: + @echo Doing nothing... + +install: $(SHARED_LIB) $(SHARED_LIB_RT2) $(SHARED_LIB_PARALLEL) $(SHARED_LIB_PARALLEL_RT2) + mkdir -p $(LIB_DIR) + cp $(SHARED_LIB)* $(SHARED_LIB_RT2)* $(SHARED_LIB_PARALLEL)* $(SHARED_LIB_PARALLEL_RT2)* $(LIB_DIR) + +include Makefile.genrules diff --git a/libsummarylogger/Makefile.cfg b/libsummarylogger/Makefile.cfg new file mode 100644 index 0000000..4b5d15f --- /dev/null +++ b/libsummarylogger/Makefile.cfg @@ -0,0 +1,406 @@ +############################################################################### +# Copyright (c) 2000-2017 Ericsson Telecom AB +# All rights reserved. This program and the accompanying materials +# are made available under the terms of the Eclipse Public License v1.0 +# which accompanies this distribution, and is available at +# http://www.eclipse.org/legal/epl-v10.html +# +# Contributors: +# Baji, Laszlo +# Balasko, Jeno +# Baranyi, Botond +# Beres, Szabolcs +# Delic, Adam +# Feher, Csaba +# Forstner, Matyas +# Kovacs, Ferenc +# Kremer, Peter +# Lovassy, Arpad +# Ormandi, Matyas +# Pandi, Krisztian +# Raduly, Csaba +# Szabados, Kristof +# Szabo, Janos Zoltan ? initial implementation +# Szalai, Endre +# Zalanyi, Balazs Andor +# +############################################################################### +ifndef TOP +$(error please define TOP) +endif + +# Configurations for the Free Open Source Software version, if available +ifneq ($(wildcard $(TOP)/MakefileFOSS.cfg), ) + include $(TOP)/MakefileFOSS.cfg +else + # Set whether licensing is enabled: (yes or no) + LICENSING := yes + + # Set whether to send usage statistics: (yes or no) + USAGE_STATS := yes +endif + +# Define SRCDIR to the root of Titan sources to enable out-of-tree build +#SRCDIR := ${HOME}/workspace/TTCNv3 + +# Set these variables to fit your system: + +# The target directory where the Test Executor will be installed to: +TTCN3_DIR := /usr/lib/titan + +# New installed files are run from make install, so they are added to the PATH +PATH := ${PATH}:${TTCN3_DIR}/bin + +# Set it to 'yes' for developing or 'no' for release. +DEBUG := no + +# Set it to 'yes' to generate coverage data (requires DEBUG=yes) +COVERAGE := no + +# Set it to 'yes' to enable extra features for the debugger UI in single mode +# (this requires an extra library when linking the generated code). +# Set it to 'no' to use a simplified debugger UI. +ADVANCED_DEBUGGER_UI := no + +# Your platform. Allowed values: SOLARIS, SOLARIS8, LINUX, FREEBSD, +# WIN32. Decided automagically if not defined (recommended). +# PLATFORM := + +# Uncomment the following for "native" Win32 +#MINGW := -DMINGW -mno-cygwin + +# Utility for building lexical analyzers (tokenizers): +FLEX := flex + +# Utility for building parsers: +BISON := bison + +# The C compiler used for building: +CC := gcc + +# The C++ compiler used for building: +CXX := g++ + +# generate userguide at install ('make release' always generates it) +GEN_PDF := no + +# Set whether to build the CLI for MC: (yes or no) +CLI := yes + +# set whether to build the JNI native library: (yes or no) +JNI := yes + +# Build the LTTng-UST logger plugin +LTTNGUSTLOGGER := no + +# Path of the Java Developement Kit installation +# (must be at least version 1.5.0_10) +JDKDIR := /usr/lib/jvm/default-java + +# Path of OpenSSL installation: (always required) +OPENSSL_DIR := default + +# Location of libxml2 +XMLDIR := default + +# Flags for the C(++) preprocessor: +# Prevent a warning about yyinput being defined but not used +CPPFLAGS += -DYY_NO_INPUT + +# Flags shared between C and C++ +COMPILERFLAGS := -Wall + +# 'Hardcore' settings +# Unlikely to work for GCC below 4.x +#COMPILERFLAGS += -Werror -pedantic -W -Wno-unused-parameter -O1 + +# Flags for the C compiler. +# std=gnu9x shuts up warnings about long long and variadic macros +CCFLAGS += $(COMPILERFLAGS) -std=gnu9x + +# Flags for the C++ compiler: +CXXFLAGS += $(COMPILERFLAGS) -Wno-long-long + +# The command for maintaining static libraries: +AR := ar + +# The command for building the shared libraries: +# It shall be set to either "$(CXX) -G" or "$(CXX) -shared" depending +# on the linker you use. +LD = $(CXX) -shared + +# Flags for linking binary executables (e.g. for profiling): +LDFLAGS += $(MINGW) + +# The command for removing symbol table from the executables: +STRIP := strip + +# Flags for flex: +FLEXFLAGS := -B -s -Cr + +# Flags for bison: +BISONFLAGS := -d + +# Override common settings with personal preferences if needed +-include $(TOP)/Makefile.personal + +## ## ## ## ## Variables below are automatically set ## ## ## ## ## + +ifeq ($(DEBUG), yes) + CPPFLAGS += -DMEMORY_DEBUG -DFATAL_DEBUG +else + CPPFLAGS += -DNDEBUG +endif + +# MingW flags need to be passed to the preprocessor during ctags configure +CPPFLAGS += $(MINGW) + +ifeq ($(DEBUG), yes) + CCFLAGS += -g + CCFLAGS += -Wshadow -Wpointer-arith -Wcast-qual -Wcast-align \ + -Wstrict-prototypes +else +ifeq ($(COVERAGE), yes) + CCFLAGS += -O0 +else + CCFLAGS += -O2 +endif +endif + +# Only the default Cygwin compiler can be used for Mingw. +# Its version is 3.4.4, too low. +ifndef MINGW +# Only GCC 4.x understands -Wno-variadic-macros, comment out for lower versions +#CXXFLAGS += -Wno-variadic-macros +endif + +ifeq ($(DEBUG), yes) + CXXFLAGS += -g + CXXFLAGS += -Wshadow -Wpointer-arith -Wcast-qual -Wcast-align +else +ifeq ($(COVERAGE), yes) + CXXFLAGS += -O0 +else + CXXFLAGS += -O2 +endif +endif + +# Flags for the C/C++ compilers to generate dependency list (-M or -MM +# for gcc or clang, -xM or -xM1 for Sun C compiler). + +ifneq ($(filter gcc% clang%, $(notdir $(CC))),) +CCDEPFLAG := -MM +CXXDEPFLAG := -MM +else +# Let's hope it's the Sun compiler +CCDEPFLAG := -xM1 +CXXDEPFLAG := -xM1 +endif + +ifeq ($(DEBUG), yes) + LDFLAGS += -g +endif + + +ifeq ($(DEBUG), yes) + FLEXFLAGS += -b -p +# FLEXFLAGS += -d +else +# Comment out the line below if flex version 2.5.4[a] is used. +# This version does not support optimized tables together with yylineno. + FLEXFLAGS += -Cfe +endif + + +ifeq ($(DEBUG), yes) + BISONFLAGS += -t -v +endif + +ifeq ($(COVERAGE), yes) + CPPFLAGS += -DCOVERAGE_BUILD + COMPILERFLAGS += -fprofile-arcs -ftest-coverage + LDFLAGS += -fprofile-arcs -ftest-coverage -lgcov +endif + +ifeq ($(ADVANCED_DEBUGGER_UI), yes) + CPPFLAGS += -DADVANCED_DEBUGGER_UI +endif + +# Directory which contains the code for POSIX regular expression handling. +# It is needed on platforms where the system's libc does not support POSIX +# regexps. This is the case for Mingw. +ifdef MINGW +# If your platform isn't Mingw but lacks POSIX regular expressions, +# comment out the ifdef/endif +REGEX_DIR := /mnt/TTCN/Tools/CPP/regex-glibc-2.5.1 +endif + +# Warning! Never set the above directories to /usr. +# If your OpenSSL, Qt is installed under /usr you'd better set +# these variables to a fake (non-existent) directory. If this is the case, +# gcc will find the required headers and libs anyway, but -I/usr/include +# might confuse it. + +# This is especially true on Windows with Mingw installed as a Cygwin package. +# -mno-cygwin alters the include serach path to find the Mingw headers. +# Passing -I/usr/include would cause the Mingw compiler to read the Cygwin +# headers, and the compilation will fail. + +# The path name where the LaTeX binaries can be found. (optional) +# If this variable is not defined the User Documentation will not be built +# or installed. +TEXPATH := /usr/local/teTeX2.0.2/bin/sparc-sun-solaris2.8 + + +########################################################################### +# You don't have to alter anything below this line. + +# Setting PLATFORM automagically if it is not defined. +ifndef PLATFORM +PLATFORM1 := $(shell uname -s) +PLATFORM2 := $(shell uname -r) +PLATFORM3 := $(shell uname -m) +ifeq ($(PLATFORM1), SunOS) + ifneq ($(PLATFORM2), 5.6) + PLATFORM := SOLARIS8 + PLATSUFFIX = -sol8 + else + PLATFORM := SOLARIS + PLATSUFFIX = -sol6 + endif # 5.8 +endif # SunOS +ifeq ($(PLATFORM1), Linux) + PLATFORM := LINUX + PLATSUFFIX = -linux +endif # Linux +ifeq ($(PLATFORM1), FreeBSD) + PLATFORM := FREEBSD +endif # FreeBSD +ifeq ($(findstring CYGWIN, $(PLATFORM1)), CYGWIN) + PLATFORM := WIN32 + PLATSUFFIX = -cygwin +endif # CYGWIN +endif # ifndef PLATFORM +ifndef PLATFORM + PLATFORM := $(error PLEASE CHECK THE PLATFORM SETTINGS) +endif # ifndef PLATFORM + +# Derived variables, which you should never change. + +ifdef MINGW + +# Target directory for binaries: +BINDIR := $(TTCN3_DIR)/programs +# Target directory for manual pages: +MANDIR := $(TTCN3_DIR)/manuals +# Target directory for other files (nedit/xemacs additions, etc.) +ETCDIR := $(TTCN3_DIR) + +else + +# Target directory for binaries: +BINDIR := $(TTCN3_DIR)/bin +# Target directory for manual pages: +MANDIR := $(TTCN3_DIR)/man +# Target directory for other files (nedit/xemacs additions, etc.) +ETCDIR := $(TTCN3_DIR)/etc + +endif + +# Target directory for header files: +INCDIR := $(TTCN3_DIR)/include +# Target directory for libraries: +LIBDIR := $(TTCN3_DIR)/lib +# Target directory for html help pages: +HELPDIR := $(TTCN3_DIR)/help +# Target directory for the documentation: +DOCDIR := $(TTCN3_DIR)/doc +# Target directory for the demo "Hello World!" +DEMODIR := $(TTCN3_DIR)/demo + +CPPFLAGS += -D$(PLATFORM) + +ifeq ($(LICENSING), yes) + CPPFLAGS += -DLICENSE + LICENSE_LIBS = -L$(OPENSSL_DIR)/lib -lcrypto +else + LICENSE_LIBS := +endif + +ifeq ($(USAGE_STATS), yes) + CPPFLAGS += -DUSAGE_STATS +endif + +# Windows/Cygwin specific settings +ifeq ($(PLATFORM), WIN32) + EXESUFFIX := .exe + LDFLAGS += -Wl,--enable-auto-import,--enable-runtime-pseudo-reloc + + ifdef MINGW + MINGW_LIBS := -lgdi32 + endif +else + EXESUFFIX := + + ifdef MINGW + $(error MingW not supported on $(PLATFORM)) + endif + + CCFLAGS += -fPIC + CXXFLAGS += -fPIC + LDFLAGS += -fPIC +endif + +# Try to use -isystem for Qt headers (this is a GCC feature). +# This avoids the myriads of warnings issued for the Qt headers. +ifneq (,$(findstring SOLARIS,$(PLATFORM))) +# Avoid using it on Solaris, because +# -isystem puts an implicit "extern C" around every system header, +# which causes compilation of Qt headers to fail miserably :-( +# (this could be fixed by recompiling GCC) + INCLUDEQT := -I +else +# Not Solaris + INCLUDEQT := -isystem +endif + +# Setting EPOLL usage - It is Linux specific +ifeq ($(PLATFORM), LINUX) + CPPFLAGS += -DUSE_EPOLL +endif + +ifdef ALPINE_LINUX + CPPFLAGS += -DALPINE_LINUX +endif + +#not useful in compiler2/asn1, for example +#REL_DIR := $(notdir $(CURDIR)) + +export ABS_TOP := $(abspath $(TOP))/ +ifeq "$(ABS_TOP)" "/" +# abspath only from GNU make 3.81, here's a replacement +ABS_TOP := $(shell cd $(TOP); pwd)/ +endif + +ifdef SRCDIR + +REL_DIR := $(subst $(ABS_TOP),,$(CURDIR)) + +ABS_SRC := $(SRCDIR)/$(REL_DIR) + +CPPFLAGS += -I. -I$(ABS_SRC) + +SRC_TOP := $(SRCDIR) + +else + +ABS_SRC := $(abspath $(CURDIR)) +ifeq "$(ABS_SRC)" "" +ABS_SRC := $(shell cd $(CURDIR); pwd) +endif + +SRC_TOP := $(TOP) + +endif + + diff --git a/libsummarylogger/Makefile.genrules b/libsummarylogger/Makefile.genrules new file mode 100644 index 0000000..f52054b --- /dev/null +++ b/libsummarylogger/Makefile.genrules @@ -0,0 +1,174 @@ +############################################################################# +# Copyright (c) 2000-2017 Ericsson Telecom AB +# All rights reserved. This program and the accompanying materials +# are made available under the terms of the Eclipse Public License v1.0 +# which accompanies this distribution, and is available at +# http://www.eclipse.org/legal/epl-v10.html +# +# Contributors: +# Balasko, Jeno +# Baranyi, Botond +# Forstner, Matyas +# Kovacs, Ferenc +# Pandi, Krisztian +# Raduly, Csaba +# Szabo, Janos Zoltan ? initial implementation +# +############################################################################## +# General stuff (to be included at the end of makefiles). The +# following variables are used: DEPFILES, SUBDIRS... + +tags: $(SOURCES) +ifdef SUBDIRS + @for i in $(SUBDIRS) ; do \ + (cd $$i && $(MAKE) tags) || exit 1; \ + done +endif + etags --members *.hh *.h *.c *.cc + +dep: +ifdef SUBDIRS + @for i in $(SUBDIRS) ; do \ + (cd $$i && $(MAKE) dep) || exit 1; \ + done +endif +ifdef DEPFILES + $(MAKE) $(DEPFILES) +endif + +clean: +ifdef SUBDIRS + @for i in $(SUBDIRS) ; do \ + (cd $$i && $(MAKE) clean) || exit 1; \ + done +endif + $(RM) $(TARGETS) $(OBJECTS) $(TOBECLEANED) + +distclean: +ifdef SUBDIRS + @for i in $(SUBDIRS) ; do \ + (cd $$i && $(MAKE) distclean) || exit 1; \ + done +endif + $(RM) $(TARGETS) $(OBJECTS) $(TOBECLEANED) \ + $(GENERATED_HEADERS) $(GENERATED_SOURCES) \ + $(GENERATED_OTHERS) \ + $(DEPFILES) TAGS *.gcno *.gcda + +# This target allows us to "make ../clean" +../% $(foreach dir, $(SUBDIRS), $(dir)/%): + cd $(dir $@) && $(MAKE) $(notdir $@) + +# General rules to compile C(++) files. +# +# These macros implement "silent" rules during building. +# Define the V make variable or environment variable to a nonzero value to get +# the exact call to the compiler: e.g. make V=1 +# +# Define the VD variable to get the exact (verbose) action while +# generating dependencies. +# +NULL := +SPACE := ${NULL} ${NULL} + +DEF_V := 0 +DEF_VD:= 0 + +V_CC_0 = @echo " (CC) " $<;$(SPACE) +V_CXX_0 = @echo " (C++) " $<;$(SPACE) +V_DEP_0 = @echo " (dep) " $<;$(SPACE) + +V_CC_ = $(V_CC_$(DEF_V)) +V_CXX_ = $(V_CXX_$(DEF_V)) +V_DEP_ = $(V_DEP_$(DEF_VD)) + +V_CC = $(V_CC_$(V)) +V_CXX = $(V_CXX_$(V)) +V_DEP = $(V_DEP_$(VD)) + +%.o: %.c + $(V_CC)$(CC) -c $(CPPFLAGS) $(CCFLAGS) $< -o $@ + +# Special rule for building profmerge files +%.profmerge.o: %.cc + $(V_CXX)$(CXX) -c -DPROF_MERGE $(CPPFLAGS) $(CXXFLAGS) $< -o $@ + +%.o: %.cc + $(V_CXX)$(CXX) -c $(CPPFLAGS) $(CXXFLAGS) $< -o $@ + +# Preprocess C/C++ files +%.i: %.c + $(CC) -E $(CPPFLAGS) $(CCFLAGS) \ + $< > $@ + +%.ii: %.cc + $(CXX) -E $(CPPFLAGS) $(CXXFLAGS) \ + $< > $@ + +# General rules to create the dependency file. + +%.d: %.c + $(V_DEP)set -e; $(CC) $(CCDEPFLAG) $(CPPFLAGS) $< \ + | sed 's,\($*\)\.o[ :]*,\1.o $@ : ,g' > $@; \ + [ -s $@ ] || rm -f $@ + +%.d: %.cc + $(V_DEP)set -e; $(CXX) $(CXXDEPFLAG) $(CPPFLAGS) $< \ + | sed 's,\($*\)\.o[ :]*,\1.o $@ : ,g' > $@; \ + [ -s $@ ] || rm -f $@ + +ifdef DEPFILES + ifndef MAKECMDGOALS + DEPFILES_NEEDED := yes + else + DEPFILES_NEEDED := $(filter-out clean distclean, $(MAKECMDGOALS)) + endif + ifdef DEPFILES_NEEDED + DEPFILES_INCLUDE := $(filter-out $(MAKECMDGOALS), $(DEPFILES)) + ifdef DEPFILES_INCLUDE + ifeq (,$(findstring n,$(MAKEFLAGS))) + # -n was *not* given to make + -include $(DEPFILES_INCLUDE) + endif + endif + endif +endif + +# Building PDFs from man pages (for MinGW) +%.pdf: %.1 + man2pdf ./$< $@ +# The "./" prefix is important, it tells man that the input is a filename, +# so it shouldn't search through MANPATH. + +# List of fake targets: +.PHONY: all install tags dep clean distclean + +# Disable all built-in suffix rules of make +.SUFFIXES: + +# Do not delete generated headers while building .d files +# (.PRECIOUS would also keep them if make is killed) +.SECONDARY: $(GENERATED_HEADERS) + +ifdef SRCDIR + +REQUIRED_MAKE_VERSION = 3.81 +# 3.80 is known not to work; 3.82 does work +REAL_MAKE_VERSION = $(firstword $(MAKE_VERSION)) +EARLIER_MAKE_VERSION = $(firstword $(sort $(REAL_MAKE_VERSION) $(REQUIRED_MAKE_VERSION))) +ifeq "$(REQUIRED_MAKE_VERSION)" "$(EARLIER_MAKE_VERSION)" + +# Declare a search path for every source. +# "vpath %.cc $(ABS_SRC)" would lump in generated .cc files, +# potentially picking up generated files laying around in the source dir +# instead of generating them in the build dir. +$(foreach src, $(STATIC_SOURCES) $(ORIGINATORS), $(eval vpath $(src) $(ABS_SRC))) + +else + +# alas, make 3.80 can't cope with the "foreach/eval vpath" above +#$(warning no OOBE with make $(MAKE_VERSION)) + +endif + +endif diff --git a/libsummarylogger/SummaryLogger.cc b/libsummarylogger/SummaryLogger.cc new file mode 100644 index 0000000..9cadb55 --- /dev/null +++ b/libsummarylogger/SummaryLogger.cc @@ -0,0 +1,226 @@ +/****************************************************************************** + * Copyright (c) 2018 sysmocom - s.f.m.c. GmbH + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Neels Hofmeyr + * + ******************************************************************************/ +#include "SummaryLogger.hh" + +#include +#include + +#include + +extern "C" { + ILoggerPlugin *create_plugin() { return new SummaryLogger(); } + void destroy_plugin(ILoggerPlugin *plugin) { delete plugin; } +} + + +TestCase::TestCase() +{ + reset(); +} + +void TestCase::reset() +{ + verdict = Unbound; + expected_verdict = Skipped; + tc_name = ""; + module_name = ""; +} + +TestSuite::~TestSuite() +{ + for (TestCases::const_iterator it = testcases.begin(); it != testcases.end(); ++it) { + delete (*it); + } +} + +SummaryLogger::SummaryLogger() + : filename_stem_(NULL), testsuite_name_(mcopystr("Titan")), out_filename_(NULL), file_stream_(NULL) +{ + major_version_ = 1; + minor_version_ = 0; + name_ = mcopystr("SummaryLogger"); + help_ = mcopystr("SummaryLogger writes a brief summary, keeping track of expected-to-fail items"); +} + +SummaryLogger::~SummaryLogger() +{ + close_file(); + + Free(name_); + Free(help_); + Free(out_filename_); + Free(testsuite_name_); + Free(filename_stem_); + name_ = help_ = out_filename_ = filename_stem_ = NULL; + file_stream_ = NULL; +} + +void SummaryLogger::init(const char *) +{ + fprintf(stderr, "Initializing `%s' (v%u.%u): %s\n", name_, major_version_, minor_version_, help_); +} + +void SummaryLogger::fini() +{ +} + +void SummaryLogger::set_parameter(const char *parameter_name, const char *parameter_value) +{ + if (!strcmp("filename_stem", parameter_name)) { + if (filename_stem_ != NULL) + Free(filename_stem_); + filename_stem_ = mcopystr(parameter_value); + } else if (!strcmp("testsuite_name", parameter_name)) { + if (filename_stem_ != NULL) + Free(testsuite_name_); + testsuite_name_ = mcopystr(parameter_value); + } else { + fprintf(stderr, "Unsupported parameter: `%s' with value: `%s'\n", + parameter_name, parameter_value); + } +} + +void SummaryLogger::open_file(bool is_first) { + if (is_first) { + if (filename_stem_ == NULL) { + filename_stem_ = mcopystr("summary"); + } + } + + if (file_stream_ != NULL) + return; + + if (!TTCN_Runtime::is_single() && !TTCN_Runtime::is_mtc()) + return; // don't bother, only MTC has testcases + + out_filename_ = mprintf("%s-%lu.log", filename_stem_, (unsigned long)getpid()); + + file_stream_ = fopen(out_filename_, "w"); + if (!file_stream_) { + fprintf(stderr, "%s was unable to open log file `%s', reinitialization " + "may help\n", plugin_name(), out_filename_); + return; + } + + is_configured_ = true; + testsuite.ts_name = testsuite_name_; +} + +void SummaryLogger::close_file() { + if (file_stream_ != NULL) { + testsuite.write(file_stream_); + fclose(file_stream_); + file_stream_ = NULL; + } + if (out_filename_) { + Free(out_filename_); + out_filename_ = NULL; + } +} + +void SummaryLogger::log(const TitanLoggerApi::TitanLogEvent& event, + bool /*log_buffered*/, bool /*separate_file*/, + bool /*use_emergency_mask*/) +{ + if (file_stream_ == NULL) return; + + const TitanLoggerApi::LogEventType_choice& choice = event.logEvent().choice(); + + switch (choice.get_selection()) { + case TitanLoggerApi::LogEventType_choice::ALT_testcaseOp: + { + const TitanLoggerApi::TestcaseEvent_choice& tcev = choice.testcaseOp().choice(); + + switch (tcev.get_selection()) { + case TitanLoggerApi::TestcaseEvent_choice::ALT_testcaseStarted: + testcase.tc_name = tcev.testcaseStarted().testcase__name(); + // remember the start time + testcase.verdict = TestCase::Unbound; + break; + + case TitanLoggerApi::TestcaseEvent_choice::ALT_testcaseFinished: + { + const TitanLoggerApi::TestcaseType& tct = tcev.testcaseFinished(); + testcase.module_name = tct.name().module__name(); + + testcase.setTCVerdict(event); + testsuite.addTestCase(testcase); + testcase.reset(); + break; + } + + case TitanLoggerApi::TestcaseEvent_choice::UNBOUND_VALUE: + testcase.verdict = TestCase::Unbound; + break; + } + + break; + } + + default: + break; + } + + fflush(file_stream_); +} + +void TestCase::writeTestCase(FILE* file_stream_) const{ + fprintf(file_stream_, "%s.%s: %s\n", module_name.data(), tc_name.data(), verdict); + fflush(file_stream_); +} + +void TestSuite::addTestCase(const TestCase& testcase) { + testcases.push_back(new TestCase(testcase)); + all++; + + if (testcase.verdict == TestCase::Fail) failed++; + else if (testcase.verdict == TestCase::Skipped) skipped++; + else if (testcase.verdict == TestCase::Error) error++; + else if (testcase.verdict == TestCase::Inconc) inconc++; +} + +void TestSuite::write(FILE* file_stream_) { + for (TestCases::const_iterator it = testcases.begin(); it != testcases.end(); ++it) { + (*it)->writeTestCase(file_stream_); + } + fflush(file_stream_); +} + +void TestCase::setTCVerdict(const TitanLoggerApi::TitanLogEvent& event){ + TitanLoggerApi::Verdict tc_verdict = event.logEvent().choice().testcaseOp().choice().testcaseFinished().verdict(); + switch (tc_verdict) { + case TitanLoggerApi::Verdict::UNBOUND_VALUE: + case TitanLoggerApi::Verdict::UNKNOWN_VALUE: + verdict = TestCase::Unbound; + break; + + case TitanLoggerApi::Verdict::v0none: + verdict = TestCase::Skipped; + break; + + case TitanLoggerApi::Verdict::v1pass: + verdict = TestCase::Pass; + break; + + case TitanLoggerApi::Verdict::v2inconc: + verdict = TestCase::Inconc; + break; + + case TitanLoggerApi::Verdict::v3fail: + verdict = TestCase::Fail; + break; + + case TitanLoggerApi::Verdict::v4error: + verdict = TestCase::Error; + break; + } +} diff --git a/libsummarylogger/SummaryLogger.hh b/libsummarylogger/SummaryLogger.hh new file mode 100644 index 0000000..c1631e8 --- /dev/null +++ b/libsummarylogger/SummaryLogger.hh @@ -0,0 +1,96 @@ +/****************************************************************************** + * Copyright (c) 2018 sysmocom - s.f.m.c. GmbH + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Neels Hofmeyr + * + ******************************************************************************/ +#ifndef SummaryLogger_HH2 +#define SummaryLogger_HH2 + +namespace TitanLoggerApi { class TitanLogEvent; } + +#ifndef TITAN_RUNTIME_2 +#include "RT1/TitanLoggerApi.hh" +#else +#include "RT2/TitanLoggerApi.hh" +#endif + +#include "ILoggerPlugin.hh" +#include +#include +#include + +struct TestCase { + static constexpr const char* Pass = "pass"; + static constexpr const char* Inconc = "INCONCLUSIVE"; + static constexpr const char* Fail = "FAIL"; + static constexpr const char* Error = "ERROR"; + static constexpr const char* Unbound = "UNBOUND"; + static constexpr const char* Skipped = "skipped"; + + const char *expected_verdict; + const char *verdict; + std::string tc_name; + std::string module_name; + + TestCase(); + + void writeTestCase(FILE* file_stream_) const; + void setTCVerdict(const TitanLoggerApi::TitanLogEvent& event); + void reset(); +}; + + +struct TestSuite { + typedef std::vector TestCases; + + std::string ts_name; + int all; + int skipped; + int failed; + int error; + int inconc; + TestCases testcases; + + TestSuite():ts_name(""), all(0), skipped(0), failed(0), error(0), inconc(0) {} + ~TestSuite(); + + void addTestCase(const TestCase& element); + void write(FILE* file_stream_); +}; + +class SummaryLogger: public ILoggerPlugin +{ + public: + SummaryLogger(); + virtual ~SummaryLogger(); + inline bool is_static() { return false; } + void init(const char *options = 0); + void fini(); + + void log(const TitanLoggerApi::TitanLogEvent& event, bool log_buffered, + bool separate_file, bool use_emergency_mask); + void set_parameter(const char *parameter_name, const char *parameter_value); + + virtual void open_file(bool is_first); + virtual void close_file(); + + private: + // parameters + char *filename_stem_; + char *testsuite_name_; + // working values + char *out_filename_; + char *expect_filename_; + TestSuite testsuite; + TestCase testcase; + + FILE *file_stream_; +}; + +#endif // SummaryLogger_HH2 -- To view, visit https://gerrit.osmocom.org/7620 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Icf464430ebb2729b40dc872945d0c311191a671c Gerrit-PatchSet: 1 Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr From gerrit-no-reply at lists.osmocom.org Tue Apr 3 17:30:30 2018 From: gerrit-no-reply at lists.osmocom.org (Neels Hofmeyr) Date: Tue, 3 Apr 2018 17:30:30 +0000 Subject: [PATCH] osmo-ttcn3-hacks[master]: bts: enable CTRL interface tests Message-ID: Review at https://gerrit.osmocom.org/7621 bts: enable CTRL interface tests Start and stop the CTRL interface and provide CTRL bind interface config modulepars. Possibly everyones' local setups may need modification to allow the ttcn3-bts-tests to reach osmo-bts-trx's CTRL port. WARNING: This commit has to be merged "at the same time" as I1ec86b157ebd46bf622a0ca51eba225f15c99fbb or the jenkins ttcn3-bts-tests will fail. a) if we want to set a modulepar mp_ctrl_ip here, it needs to be added to osmo-ttcn3-hacks. b) if we have the f_ipa_ctrl_start() in osmo-ttcn3-hacks, we need to configure the proper IP and bind interface here, or all tests will fail because f_ipa_ctrl_start() cannot connect. Change-Id: I502b4891e6720ae2fb251c03542f707880a6f728 --- M bts/BTS_Tests.ttcn 1 file changed, 5 insertions(+), 0 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-ttcn3-hacks refs/changes/21/7621/1 diff --git a/bts/BTS_Tests.ttcn b/bts/BTS_Tests.ttcn index b68e99b..4a4ced5 100644 --- a/bts/BTS_Tests.ttcn +++ b/bts/BTS_Tests.ttcn @@ -11,6 +11,7 @@ import from L1CTL_Types all; import from LAPDm_Types all; import from Osmocom_CTRL_Adapter all; +import from Osmocom_CTRL_Functions all; import from RSL_Types all; import from IPA_Types all; @@ -50,6 +51,8 @@ charstring mp_pcu_socket := PCU_SOCK_DEFAULT; integer mp_tolerance_rxqual := 1; integer mp_tolerance_rxlev := 3; + charstring mp_ctrl_ip := "127.0.0.1"; + integer mp_ctrl_port := 4238; } type record of RslChannelNr ChannelNrs; @@ -285,6 +288,7 @@ RSL_CCHAN.receive(ASP_IPA_Event:{up_down := ASP_IPA_EVENT_UP}); f_sleep(0.5); /* workaround for OS#3000 */ f_init_vty(id); + f_ipa_ctrl_start(mp_ctrl_ip, mp_ctrl_port); /* Send SI3 to the BTS, it is needed for various computations */ f_rsl_bcch_fill(RSL_SYSTEM_INFO_3, ts_SI3_default); @@ -306,6 +310,7 @@ /* shut down all "externally interfaced" components first to avoid unclean shutdown */ vc_IPA.stop; vc_RSL.stop; + f_ipa_ctrl_stop(); } /* Attach L1CTL to master test_CT (classic tests, non-handler mode) */ -- To view, visit https://gerrit.osmocom.org/7621 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I502b4891e6720ae2fb251c03542f707880a6f728 Gerrit-PatchSet: 1 Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr From gerrit-no-reply at lists.osmocom.org Tue Apr 3 17:30:47 2018 From: gerrit-no-reply at lists.osmocom.org (Neels Hofmeyr) Date: Tue, 3 Apr 2018 17:30:47 +0000 Subject: [PATCH] docker-playground[master]: ttcn3-bts-test: properly configure CTRL interface Message-ID: Review at https://gerrit.osmocom.org/7622 ttcn3-bts-test: properly configure CTRL interface osmo-ttcn3-hacks adds configuration of the CTRL interface in I502b4891e6720ae2fb251c03542f707880a6f728. We need proper IP addresses here for the f_ipa_ctrl_start() to work. WARNING: This commit has to be merged "at the same time" as I502b4891e6720ae2fb251c03542f707880a6f728 or the jenkins ttcn3-bts-tests will fail. a) if we want to set a modulepar mp_ctrl_ip here, it needs to be added to osmo-ttcn3-hacks. b) if we have the f_ipa_ctrl_start() in osmo-ttcn3-hacks, we need to configure the proper IP and bind interface here, or all tests will fail because f_ipa_ctrl_start() cannot connect. Change-Id: I1ec86b157ebd46bf622a0ca51eba225f15c99fbb --- M ttcn3-bts-test/BTS_Tests.cfg M ttcn3-bts-test/osmo-bts.cfg 2 files changed, 3 insertions(+), 0 deletions(-) git pull ssh://gerrit.osmocom.org:29418/docker-playground refs/changes/22/7622/1 diff --git a/ttcn3-bts-test/BTS_Tests.cfg b/ttcn3-bts-test/BTS_Tests.cfg index 423525d..2f5d752 100644 --- a/ttcn3-bts-test/BTS_Tests.cfg +++ b/ttcn3-bts-test/BTS_Tests.cfg @@ -12,6 +12,7 @@ BTS_Tests.mp_bb_trxc_ip := "172.18.9.21" BTS_Tests.mp_pcu_socket := "/data/unix/pcu_sock" L1CTL_PortType.m_l1ctl_sock_path := "/data/unix/osmocom_l2" +BTS_Tests.mp_ctrl_ip := "172.18.9.20" [MAIN_CONTROLLER] diff --git a/ttcn3-bts-test/osmo-bts.cfg b/ttcn3-bts-test/osmo-bts.cfg index 036f719..ae809fd 100644 --- a/ttcn3-bts-test/osmo-bts.cfg +++ b/ttcn3-bts-test/osmo-bts.cfg @@ -79,3 +79,5 @@ power-ramp step-interval 1 ms-power-control dsp phy 0 instance 0 +ctrl + bind 0.0.0.0 -- To view, visit https://gerrit.osmocom.org/7622 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I1ec86b157ebd46bf622a0ca51eba225f15c99fbb Gerrit-PatchSet: 1 Gerrit-Project: docker-playground Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr From gerrit-no-reply at lists.osmocom.org Tue Apr 3 17:31:51 2018 From: gerrit-no-reply at lists.osmocom.org (Neels Hofmeyr) Date: Tue, 3 Apr 2018 17:31:51 +0000 Subject: [ABANDON] osmo-ttcn3-hacks[master]: summary logger WIP In-Reply-To: References: Message-ID: Neels Hofmeyr has abandoned this change. Change subject: summary logger WIP ...................................................................... Abandoned pushed by accident -- To view, visit https://gerrit.osmocom.org/7620 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: abandon Gerrit-Change-Id: Icf464430ebb2729b40dc872945d0c311191a671c Gerrit-PatchSet: 1 Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr Gerrit-Reviewer: Jenkins Builder From gerrit-no-reply at lists.osmocom.org Tue Apr 3 17:45:17 2018 From: gerrit-no-reply at lists.osmocom.org (Stefan Sperling) Date: Tue, 3 Apr 2018 17:45:17 +0000 Subject: [PATCH] osmo-ttcn3-hacks[master]: test GGSN support for optional GTP-U sequence numbers Message-ID: Review at https://gerrit.osmocom.org/7623 test GGSN support for optional GTP-U sequence numbers Add VTY functionality to GGSN tests, and use the VTY to enable/disable GTP-U Tx sequence numbers in the running osmo-ggsn. The GTPU packet template is tweaked to make sequence numbers optional. A template created with its sequence number set to zero will result in a packet without a sequence number, i.e. the 'sequence number present' bit in the packet header is cleared, and the sequence number field is omitted from the packet. Re-use the existing TC_pdp4_clients_interact() test for testing the behaviour of osmo-ggsn. This test is now run twice, once with and once without GTP-U Tx sequence numbers. Verify that packets relayed by osmo-ggsn match its "g-pdu tx-sequence-numbers" configuration setting. Change-Id: I1dc299407c61b1c865035add44067b8ab89001b3 Related: OS#2519 --- M ggsn_tests/GGSN_Tests.default M ggsn_tests/GGSN_Tests.ttcn M ggsn_tests/gen_links.sh M ggsn_tests/regen_makefile.sh M library/GTP_Templates.ttcn 5 files changed, 109 insertions(+), 13 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-ttcn3-hacks refs/changes/23/7623/1 diff --git a/ggsn_tests/GGSN_Tests.default b/ggsn_tests/GGSN_Tests.default index 2d57f89..ff0cd97 100644 --- a/ggsn_tests/GGSN_Tests.default +++ b/ggsn_tests/GGSN_Tests.default @@ -1,6 +1,14 @@ [LOGGING] [TESTPORT_PARAMETERS] +*.GGSNVTY.CTRL_MODE := "client" +*.GGSNVTY.CTRL_HOSTNAME := "127.0.0.1" +*.GGSNVTY.CTRL_PORTNUM := "4260" +*.GGSNVTY.CTRL_LOGIN_SKIPPED := "yes" +*.GGSNVTY.CTRL_DETECT_SERVER_DISCONNECTED := "yes" +*.GGSNVTY.CTRL_READMODE := "buffered" +*.GGSNVTY.CTRL_CLIENT_CLEANUP_LINEFEED := "yes" +*.GGSNVTY.PROMPT1 := "OsmoGGSN> " [MODULE_PARAMETERS] GGSN_Tests.m_bind_ip_gtpc := "127.0.42.1" @@ -11,5 +19,6 @@ GGSN_Tests.m_ggsn_ip4_dns2 := "8.8.8.8" GGSN_Tests.m_ggsn_ip6_dns1 := "2001:4860:4860::8888" GGSN_Tests.m_ggsn_ip6_dns2 := "2001:4860:4860::8844" +Osmocom_VTY_Functions.mp_prompt_prefix := "OsmoGGSN"; [EXECUTE] diff --git a/ggsn_tests/GGSN_Tests.ttcn b/ggsn_tests/GGSN_Tests.ttcn index 2b7de96..70a9e29 100644 --- a/ggsn_tests/GGSN_Tests.ttcn +++ b/ggsn_tests/GGSN_Tests.ttcn @@ -14,6 +14,8 @@ import from ICMP_Types all; import from ICMPv6_Types all; import from Native_Functions all; + import from Osmocom_VTY_Functions all; + import from TELNETasp_PortType all; const integer GTP0_PORT := 3386; const integer GTP1C_PORT := 2123; @@ -70,6 +72,42 @@ var uint16_t g_c_seq_nr; /* next to-be-sent GTP-U sequence number */ var uint16_t g_d_seq_nr; + + port TELNETasp_PT GGSNVTY; + var boolean use_gptu_txseq := true; + } + + private function f_init_vty() runs on GT_CT { + map(self:GGSNVTY, system:GGSNVTY); + f_vty_set_prompts(GGSNVTY); + f_vty_transceive(GGSNVTY, "enable"); + } + + private function f_vty_set_gpdu_txseq(boolean enable) runs on GT_CT { + f_vty_enter_config(GGSNVTY); + f_vty_transceive(GGSNVTY, "ggsn ggsn0"); + f_vty_transceive(GGSNVTY, "apn internet"); + if (enable) { + f_vty_transceive(GGSNVTY, "g-pdu tx-sequence-numbers"); + } else { + f_vty_transceive(GGSNVTY, "no g-pdu tx-sequence-numbers"); + } + f_vty_transceive(GGSNVTY, "end"); + } + + private function f_verify_gtpu_txseq(in PDU_GTPU gtpu, in boolean expect_gptu_txseq) return boolean { + if (expect_gptu_txseq) { + if (gtpu.s_bit != '1'B) { + log("GTPU sequence number expected but not present") + return false; + } + } else { + if (gtpu.s_bit != '0'B) { + log("GTPU sequence number not expected but present") + return false; + } + } + return true; } function f_init() runs on GT_CT { @@ -94,6 +132,9 @@ g_restart_ctr := f_rnd_octstring(1); g_c_seq_nr := f_rnd_int(65535); g_d_seq_nr := f_rnd_int(65535); + + f_init_vty(); + f_vty_set_gpdu_txseq(use_gptu_txseq); } /* Altstep implementing responses to any incoming echo requests */ @@ -148,8 +189,15 @@ /* send GTP-U for a given context and increment sequence number */ function f_send_gtpu(inout PdpContext ctx, in octetstring data) runs on GT_CT { - GTPU.send(ts_GTP1U_GPDU(g_peer_u, g_d_seq_nr, ctx.teid_remote, data)); - g_d_seq_nr := g_d_seq_nr + 1; + if (use_gptu_txseq) { + /* Sequence number zero is special: It disables use of sequence numbers. */ + do { + g_d_seq_nr := g_d_seq_nr + 1; + } while (g_d_seq_nr == 0); + GTPU.send(ts_GTP1U_GPDU(g_peer_u, g_d_seq_nr, ctx.teid_remote, data)); + } else { + GTPU.send(ts_GTP1U_GPDU(g_peer_u, 0, ctx.teid_remote, data)); + } } /* send a PDP context activation */ @@ -539,6 +587,9 @@ T_default.start; alt { [] GTPU.receive(tr_GTPU_GPDU(g_peer_u, ?)) -> value ud { + if (f_verify_gtpu_txseq(ud.gtpu, use_gptu_txseq) == false) { + setverdict(fail); + } var octetstring gpdu := ud.gtpu.gtpu_IEs.g_PDU_IEs.data; var IPv4_packet ip4 := f_IPv4_dec(gpdu); if (ip4.header.ver != 4) { @@ -571,6 +622,9 @@ T_default.start; alt { [] GTPU.receive(tr_GTPU_GPDU(g_peer_u, ?)) -> value ud { + if (f_verify_gtpu_txseq(ud.gtpu, use_gptu_txseq) == false) { + setverdict(fail); + } var octetstring gpdu := ud.gtpu.gtpu_IEs.g_PDU_IEs.data; var IPv6_packet ip6 := f_IPv6_dec(gpdu); if (ip6.header.ver != 6 or ip6.header.nexthead != 58) { @@ -821,8 +875,8 @@ f_pdp_ctx_del(ctx, '1'B); } - /* Validate if different clients (pdp ctx) can reach one another through GGSN. */ - testcase TC_pdp4_clients_interact() runs on GT_CT { + /* Helper function for tests below. */ + function f_pdp4_clients_interact() runs on GT_CT { f_init(); var PdpContext ctxA := valueof(t_DefinePDP(f_rnd_imsi('26242'H), '1234'O, c_ApnInternet, valueof(t_EuaIPv4Dyn))); var PdpContext ctxB := valueof(t_DefinePDP(f_rnd_imsi('26242'H), '1234'O, c_ApnInternet, valueof(t_EuaIPv4Dyn))); @@ -834,6 +888,18 @@ f_wait_icmp4_echo_request(ctxB); f_pdp_ctx_del(ctxA, '1'B); + } + + /* Validate if different clients (pdp ctx) can reach one another through GGSN. */ + testcase TC_pdp4_clients_interact_with_txseq() runs on GT_CT { + use_gptu_txseq := true; + f_pdp4_clients_interact(); + } + + /* Validate if different clients (pdp ctx) can reach one another through GGSN (without Tx sequence number). */ + testcase TC_pdp4_clients_interact_without_txseq() runs on GT_CT { + use_gptu_txseq := false; + f_pdp4_clients_interact(); } testcase TC_echo_req_resp() runs on GT_CT { @@ -853,7 +919,8 @@ execute(TC_pdp4_act_deact_ipcp()); execute(TC_pdp4_act_deact_pcodns()); execute(TC_pdp4_act_deact_gtpu_access()); - execute(TC_pdp4_clients_interact()); + execute(TC_pdp4_clients_interact_with_txseq()); + execute(TC_pdp4_clients_interact_without_txseq()); execute(TC_pdp6_act_deact()); execute(TC_pdp6_act_deact_pcodns()); diff --git a/ggsn_tests/gen_links.sh b/ggsn_tests/gen_links.sh index 6ef52e1..4e012ae 100755 --- a/ggsn_tests/gen_links.sh +++ b/ggsn_tests/gen_links.sh @@ -40,9 +40,14 @@ FILES="GTPC_EncDec.cc GTPC_Types.ttcn GTPU_EncDec.cc GTPU_Types.ttcn" gen_links $DIR $FILES +DIR=$BASEDIR/titan.TestPorts.TELNETasp/src +FILES="TELNETasp_PT.cc TELNETasp_PT.hh TELNETasp_PortType.ttcn" +gen_links $DIR $FILES + DIR=../library FILES="General_Types.ttcn GSM_Types.ttcn Osmocom_Types.ttcn Native_Functions.ttcn Native_FunctionDefs.cc IPCP_Types.ttcn " FILES+="GTP_CodecPort.ttcn GTP_CodecPort_CtrlFunct.ttcn GTP_CodecPort_CtrlFunctDef.cc GTP_Templates.ttcn " +FILES+="Osmocom_VTY_Functions.ttcn " gen_links $DIR $FILES ignore_pp_results diff --git a/ggsn_tests/regen_makefile.sh b/ggsn_tests/regen_makefile.sh index 2fc74f7..6db1a3d 100755 --- a/ggsn_tests/regen_makefile.sh +++ b/ggsn_tests/regen_makefile.sh @@ -1,5 +1,5 @@ #!/bin/sh -FILES="*.ttcn IPL4asp_PT.cc IPL4asp_discovery.cc TCCConversion.cc TCCInterface.cc GTPC_EncDec.cc GTPU_EncDec.cc GTP_CodecPort_CtrlFunctDef.cc ICMPv6_EncDec.cc IP_EncDec.cc Native_FunctionDefs.cc UDP_EncDec.cc ICMP_EncDec.cc" +FILES="*.ttcn IPL4asp_PT.cc IPL4asp_discovery.cc TCCConversion.cc TCCInterface.cc GTPC_EncDec.cc GTPU_EncDec.cc GTP_CodecPort_CtrlFunctDef.cc ICMPv6_EncDec.cc IP_EncDec.cc Native_FunctionDefs.cc UDP_EncDec.cc ICMP_EncDec.cc TELNETasp_PT.cc" ../regen-makefile.sh GGSN_Tests.ttcn $FILES diff --git a/library/GTP_Templates.ttcn b/library/GTP_Templates.ttcn index d8a43c2..082faf9 100644 --- a/library/GTP_Templates.ttcn +++ b/library/GTP_Templates.ttcn @@ -545,6 +545,26 @@ gtpu_IEs := ies } + function f_GTPU_s_bit(in uint16_t seq) return BIT1 { + if (seq == 0) { + return '0'B; + } + return '1'B; + } + + function f_GTPU_opt_part(in uint16_t seq) return template (omit) GTPU_Header_optional_part { + if (seq == 0) { + return omit; + } + var GTPU_Header_optional_part ret := { + sequenceNumber := int2oct(seq, 2), + npduNumber := '00'O, + nextExtHeader := '00'O, + gTPU_extensionHeader_List := omit + }; + return ret; + } + /* generalized GTP-U send template */ template PDU_GTPU ts_GTP1U_PDU(OCT1 msg_type, uint16_t seq, OCT4 teid, GTPU_IEs ies) := { /* N-PDU Number flag (PN): the GTP-U header contains a meaningful N-PDU Number field if the PN @@ -553,7 +573,7 @@ /* If the Sequence Number flag (S) is set to '1' the sequence number field is present and * meaningful otherwise it is set to '0'. For GTP-U messages Echo Request, Echo Response, * Error Indication and Supported Extension Headers Notification, the S flag shall be set to '1'. */ - s_bit := '1'B, /* we assume the encoder overwrites this if an optional part is given */ + s_bit := f_GTPU_s_bit(seq), /* a sequence number of 0 means the caller provided none */ /* Extension header presence */ e_bit := '0'B, spare := '0'B, @@ -564,12 +584,7 @@ messageType := msg_type, lengthf := 0, /* we assume encoder overwrites this */ teid := teid, - opt_part := { - sequenceNumber := int2oct(seq, 2), - npduNumber := '00'O, - nextExtHeader := '00'O, - gTPU_extensionHeader_List := omit - }, + opt_part := f_GTPU_opt_part(seq), gtpu_IEs := ies } -- To view, visit https://gerrit.osmocom.org/7623 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I1dc299407c61b1c865035add44067b8ab89001b3 Gerrit-PatchSet: 1 Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Owner: Stefan Sperling From gerrit-no-reply at lists.osmocom.org Tue Apr 3 22:27:44 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Tue, 3 Apr 2018 22:27:44 +0000 Subject: osmo-ttcn3-hacks[master]: test GGSN support for optional GTP-U sequence numbers In-Reply-To: References: Message-ID: Patch Set 1: (2 comments) https://gerrit.osmocom.org/#/c/7623/1/ggsn_tests/GGSN_Tests.ttcn File ggsn_tests/GGSN_Tests.ttcn: Line 196: } while (g_d_seq_nr == 0); All this way of differentiating looks tricky. What about if we want to test wraparound of seq numbers? it's not possible as 0 will be skipped. Or is it expected as per specs that seq=0 when it's not used? Line 902: f_pdp4_clients_interact(); Aren't you modifying the default value used for use_gptu_txseq here and thus changing how test behave depending on order? Probably should should save the old value and restore it after the test. -- To view, visit https://gerrit.osmocom.org/7623 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I1dc299407c61b1c865035add44067b8ab89001b3 Gerrit-PatchSet: 1 Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Owner: Stefan Sperling Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Pau Espin Pedrol Gerrit-HasComments: Yes From gerrit-no-reply at lists.osmocom.org Wed Apr 4 03:53:46 2018 From: gerrit-no-reply at lists.osmocom.org (Vadim Yanitskiy) Date: Wed, 4 Apr 2018 03:53:46 +0000 Subject: libosmocore[master]: GSUP: add USSD encoding / decoding support In-Reply-To: References: Message-ID: Patch Set 2: Code-Review-1 Incorrect approach. To be modified soon. -- To view, visit https://gerrit.osmocom.org/7600 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Ie17a78043a35fffbdd59e80fd2b2da39cce5e532 Gerrit-PatchSet: 2 Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Owner: Vadim Yanitskiy Gerrit-Reviewer: Alexander Chemeris Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Vadim Yanitskiy Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Wed Apr 4 03:58:54 2018 From: gerrit-no-reply at lists.osmocom.org (Vadim Yanitskiy) Date: Wed, 4 Apr 2018 03:58:54 +0000 Subject: [PATCH] libosmocore[master]: gsm0480: document the 'ss_request' structure Message-ID: Review at https://gerrit.osmocom.org/7624 gsm0480: document the 'ss_request' structure Change-Id: I22144dd759e0c1bb1965574b7ddd676606e5d6b7 --- M include/osmocom/gsm/gsm0480.h 1 file changed, 31 insertions(+), 0 deletions(-) git pull ssh://gerrit.osmocom.org:29418/libosmocore refs/changes/24/7624/1 diff --git a/include/osmocom/gsm/gsm0480.h b/include/osmocom/gsm/gsm0480.h index 0dfd868..05c26df 100644 --- a/include/osmocom/gsm/gsm0480.h +++ b/include/osmocom/gsm/gsm0480.h @@ -40,11 +40,42 @@ int gsm0480_decode_ussd_request(const struct gsm48_hdr *hdr, uint16_t len, struct ussd_request *request) OSMO_DEPRECATED("Use gsm0480_decode_ss_request() instead"); +/** + * This structure represents some meaningful parts of + * a decoded and/or to be encoded GSM 04.80 message. + */ struct ss_request { + /** + * GSM TS 04.80, section 3.6.4 "Operation code" + * See GSM0480_OP_CODE_* for possible values. + */ uint8_t opcode; + /** + * GSM TS 04.80, section 4.4.3.9 "ss-Code" + * The ss-Code identifier refers to the code which identify + * a supplementary service or a group of supplementary services. + */ uint8_t ss_code; + + /** + * A rudiment of deprecated 'ussd_request' structure. + * Represents the data of either an INVOKE, either + * a RETURN_RESULT component, encoded as ASCII in + * case if DCS is 0x0f (i.e. decoded by the code + * itself), otherwise raw bytes 'as is'. + */ uint8_t ussd_text[GSM0480_USSD_OCTET_STRING_LEN]; + + /** + * GSM TS 04.80, section 3.3 "Transaction identifier" + * See GSM TS 04.07, section 11.2.3 for details. + */ uint8_t transaction_id; + /** + * GSM TS 04.80, section 3.6.3 "Component ID tag" + * The term Component ID refers to the Invoke ID or + * the Linked ID. + */ uint8_t invoke_id; }; -- To view, visit https://gerrit.osmocom.org/7624 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I22144dd759e0c1bb1965574b7ddd676606e5d6b7 Gerrit-PatchSet: 1 Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Owner: Vadim Yanitskiy From gerrit-no-reply at lists.osmocom.org Wed Apr 4 03:58:56 2018 From: gerrit-no-reply at lists.osmocom.org (Vadim Yanitskiy) Date: Wed, 4 Apr 2018 03:58:56 +0000 Subject: [PATCH] libosmocore[master]: gsm0480: copy the raw USSD data, its DCS and length Message-ID: Review at https://gerrit.osmocom.org/7625 gsm0480: copy the raw USSD data, its DCS and length As it was already documented before, the 'ss_request' struct has a rudiment of deprecated 'ussd_request' struct - the 'ussd_text' field. It represents the data either of an INVOKE component, either of a RETURN_RESULT component, encoded as ASCII in case if DCS is 0x0f (i.e. decoded by the code itself), otherwise raw bytes 'as is'. Previously, there was no possibility to distinguish between ASCII and raw bytes with different DCS. Moreover, the payload decoding is not desired in some cases. Let's introduce the new fields, which will carry the raw unmodified payload, its length and DCS (Data Coding Scheme). Change-Id: Ia193d175021e145bb3b131290231f307dbefc64a --- M include/osmocom/gsm/gsm0480.h M src/gsm/gsm0480.c 2 files changed, 29 insertions(+), 9 deletions(-) git pull ssh://gerrit.osmocom.org:29418/libosmocore refs/changes/25/7625/1 diff --git a/include/osmocom/gsm/gsm0480.h b/include/osmocom/gsm/gsm0480.h index 05c26df..b0b6aa2 100644 --- a/include/osmocom/gsm/gsm0480.h +++ b/include/osmocom/gsm/gsm0480.h @@ -67,6 +67,18 @@ uint8_t ussd_text[GSM0480_USSD_OCTET_STRING_LEN]; /** + * Represents the data of either an INVOKE, either + * a RETURN_RESULT component 'as is'. Useful when + * decoding is not supported or not desired. + * + * Shall be always followed by its length (in bytes) + * and DCS (Data Coding Scheme). + */ + uint8_t ussd_data[GSM0480_USSD_OCTET_STRING_LEN]; + uint8_t ussd_data_len; /* Length in bytes */ + uint8_t ussd_data_dcs; /* Data Coding Scheme */ + + /** * GSM TS 04.80, section 3.3 "Transaction identifier" * See GSM TS 04.07, section 11.2.3 for details. */ diff --git a/src/gsm/gsm0480.c b/src/gsm/gsm0480.c index 0072812..38082b3 100644 --- a/src/gsm/gsm0480.c +++ b/src/gsm/gsm0480.c @@ -557,6 +557,11 @@ memcpy(req->ussd_text, uss_req_data + 2, num_chars); + /* Copy the data 'as is' */ + memcpy(req->ussd_data, uss_req_data + 2, num_chars); + req->ussd_data_len = num_chars; + req->ussd_data_dcs = 0x00; + return 1; } @@ -580,6 +585,17 @@ /* Get DCS (Data Coding Scheme) */ dcs = uss_req_data[4]; + /* Get the amount of bytes */ + num_chars = uss_req_data[6]; + + /* Prevent a mobile-originated buffer-overrun! */ + if (num_chars > GSM0480_USSD_OCTET_STRING_LEN) + num_chars = GSM0480_USSD_OCTET_STRING_LEN; + + /* Copy the data 'as is' */ + memcpy(req->ussd_data, uss_req_data + 7, num_chars); + req->ussd_data_len = num_chars; + req->ussd_data_dcs = dcs; /** * According to GSM 04.08, 4.4.2 "ASN.1 data types": @@ -588,7 +604,7 @@ */ if (dcs == 0x0F) { /* Calculate the amount of 7-bit characters */ - num_chars = (uss_req_data[6] * 8) / 7; + num_chars = (num_chars * 8) / 7; /* Prevent a mobile-originated buffer-overrun! */ if (num_chars > GSM0480_USSD_7BIT_STRING_LEN) @@ -599,15 +615,7 @@ return 1; } else { - /* Get the amount of 8-bit characters */ - num_chars = uss_req_data[6]; - - /* Prevent a mobile-originated buffer-overrun! */ - if (num_chars > GSM0480_USSD_OCTET_STRING_LEN) - num_chars = GSM0480_USSD_OCTET_STRING_LEN; - memcpy(req->ussd_text, &(uss_req_data[7]), num_chars); - return 1; } -- To view, visit https://gerrit.osmocom.org/7625 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Ia193d175021e145bb3b131290231f307dbefc64a Gerrit-PatchSet: 1 Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Owner: Vadim Yanitskiy From gerrit-no-reply at lists.osmocom.org Wed Apr 4 07:54:55 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Wed, 4 Apr 2018 07:54:55 +0000 Subject: libosmocore[master]: gsm0480: copy the raw USSD data, its DCS and length In-Reply-To: References: Message-ID: Patch Set 1: (2 comments) https://gerrit.osmocom.org/#/c/7625/1/include/osmocom/gsm/gsm0480.h File include/osmocom/gsm/gsm0480.h: Line 77: uint8_t ussd_data[GSM0480_USSD_OCTET_STRING_LEN]; why do we have the new fields in addition to the old fields? Can a single message contain both text and data? Wouldn't a union between those two make sense? Or do you think it's usefule to have the raw data and the decoded text (if any) in parallel in this structure? https://gerrit.osmocom.org/#/c/7625/1/src/gsm/gsm0480.c File src/gsm/gsm0480.c: Line 593: num_chars = GSM0480_USSD_OCTET_STRING_LEN; I'm not sure silent truncation is a good idea. This should IMHO at least lead to some kind of warning in the logs, if not an outright reject of the message. What are your thoughts? -- To view, visit https://gerrit.osmocom.org/7625 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Ia193d175021e145bb3b131290231f307dbefc64a Gerrit-PatchSet: 1 Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Owner: Vadim Yanitskiy Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-HasComments: Yes From gerrit-no-reply at lists.osmocom.org Wed Apr 4 07:55:25 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Wed, 4 Apr 2018 07:55:25 +0000 Subject: libosmocore[master]: gsm0480: document the 'ss_request' structure In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7624 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I22144dd759e0c1bb1965574b7ddd676606e5d6b7 Gerrit-PatchSet: 1 Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Owner: Vadim Yanitskiy Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Wed Apr 4 08:03:42 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Wed, 4 Apr 2018 08:03:42 +0000 Subject: osmo-ttcn3-hacks[master]: test GGSN support for optional GTP-U sequence numbers In-Reply-To: References: Message-ID: Patch Set 1: (10 comments) https://gerrit.osmocom.org/#/c/7623/1/ggsn_tests/GGSN_Tests.ttcn File ggsn_tests/GGSN_Tests.ttcn: Line 196: } while (g_d_seq_nr == 0); > All this way of differentiating looks tricky. What about if we want to test I agree. The more "TTCN-3-esque" solution would probably be to pass "omit" (i.e. a "template (omit) uint16_t") into the ts_GTP1U_GPDU,... Line 199: GTPU.send(ts_GTP1U_GPDU(g_peer_u, 0, ctx.teid_remote, data)); so you would pass omit instead of 0 here Line 902: f_pdp4_clients_interact(); > Aren't you modifying the default value used for use_gptu_txseq here and thu the entire test component is re-created for every test. Thus, the default initializers from the 'type component GT_CT' are applied before entering each test case. No need for restoring anything explicitly. https://gerrit.osmocom.org/#/c/7623/1/library/GTP_Templates.ttcn File library/GTP_Templates.ttcn: Line 548: function f_GTPU_s_bit(in uint16_t seq) return BIT1 { have "template (omit) uint16_t seq" here Line 549: if (seq == 0) { have "if (istemplatekind(seq, "omit"))" here Line 555: function f_GTPU_opt_part(in uint16_t seq) return template (omit) GTPU_Header_optional_part { same as above Line 556: if (seq == 0) { same as above Line 560: sequenceNumber := int2oct(seq, 2), valueof(seq) if you turn it into a template Line 569: template PDU_GTPU ts_GTP1U_PDU(OCT1 msg_type, uint16_t seq, OCT4 teid, GTPU_IEs ies) := { "template (omit) uint16_t seq" Line 576: s_bit := f_GTPU_s_bit(seq), /* a sequence number of 0 means the caller provided none */ as you remove the comment "e assume the encoder overwrites this if an optional part is given": Can you confirm that the encoder is not automatically filling in s_bit depending on whether an optional part is present or not? -- To view, visit https://gerrit.osmocom.org/7623 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I1dc299407c61b1c865035add44067b8ab89001b3 Gerrit-PatchSet: 1 Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Owner: Stefan Sperling Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Pau Espin Pedrol Gerrit-HasComments: Yes From gerrit-no-reply at lists.osmocom.org Wed Apr 4 08:04:44 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Wed, 4 Apr 2018 08:04:44 +0000 Subject: docker-playground[master]: ttcn3-bts-test: properly configure CTRL interface In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7622 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I1ec86b157ebd46bf622a0ca51eba225f15c99fbb Gerrit-PatchSet: 1 Gerrit-Project: docker-playground Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr Gerrit-Reviewer: Harald Welte Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Wed Apr 4 08:04:47 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Wed, 4 Apr 2018 08:04:47 +0000 Subject: osmo-ttcn3-hacks[master]: bts: enable CTRL interface tests In-Reply-To: References: Message-ID: Patch Set 2: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7621 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I502b4891e6720ae2fb251c03542f707880a6f728 Gerrit-PatchSet: 2 Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Wed Apr 4 08:04:51 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Wed, 4 Apr 2018 08:04:51 +0000 Subject: [MERGED] osmo-ttcn3-hacks[master]: bts: enable CTRL interface tests In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: bts: enable CTRL interface tests ...................................................................... bts: enable CTRL interface tests Start and stop the CTRL interface and provide CTRL bind interface config modulepars. Possibly everyones' local setups may need modification to allow the ttcn3-bts-tests to reach osmo-bts-trx's CTRL port. WARNING: This commit has to be merged "at the same time" as I1ec86b157ebd46bf622a0ca51eba225f15c99fbb or the jenkins ttcn3-bts-tests will fail. a) if we want to set a modulepar mp_ctrl_ip here, it needs to be added to osmo-ttcn3-hacks. b) if we have the f_ipa_ctrl_start() in osmo-ttcn3-hacks, we need to configure the proper IP and bind interface here, or all tests will fail because f_ipa_ctrl_start() cannot connect. Change-Id: I502b4891e6720ae2fb251c03542f707880a6f728 --- M bts/BTS_Tests.ttcn 1 file changed, 5 insertions(+), 0 deletions(-) Approvals: Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/bts/BTS_Tests.ttcn b/bts/BTS_Tests.ttcn index b68e99b..4a4ced5 100644 --- a/bts/BTS_Tests.ttcn +++ b/bts/BTS_Tests.ttcn @@ -11,6 +11,7 @@ import from L1CTL_Types all; import from LAPDm_Types all; import from Osmocom_CTRL_Adapter all; +import from Osmocom_CTRL_Functions all; import from RSL_Types all; import from IPA_Types all; @@ -50,6 +51,8 @@ charstring mp_pcu_socket := PCU_SOCK_DEFAULT; integer mp_tolerance_rxqual := 1; integer mp_tolerance_rxlev := 3; + charstring mp_ctrl_ip := "127.0.0.1"; + integer mp_ctrl_port := 4238; } type record of RslChannelNr ChannelNrs; @@ -285,6 +288,7 @@ RSL_CCHAN.receive(ASP_IPA_Event:{up_down := ASP_IPA_EVENT_UP}); f_sleep(0.5); /* workaround for OS#3000 */ f_init_vty(id); + f_ipa_ctrl_start(mp_ctrl_ip, mp_ctrl_port); /* Send SI3 to the BTS, it is needed for various computations */ f_rsl_bcch_fill(RSL_SYSTEM_INFO_3, ts_SI3_default); @@ -306,6 +310,7 @@ /* shut down all "externally interfaced" components first to avoid unclean shutdown */ vc_IPA.stop; vc_RSL.stop; + f_ipa_ctrl_stop(); } /* Attach L1CTL to master test_CT (classic tests, non-handler mode) */ -- To view, visit https://gerrit.osmocom.org/7621 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: I502b4891e6720ae2fb251c03542f707880a6f728 Gerrit-PatchSet: 2 Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder From gerrit-no-reply at lists.osmocom.org Wed Apr 4 08:04:54 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Wed, 4 Apr 2018 08:04:54 +0000 Subject: docker-playground[master]: ttcn3-bts-test: properly configure CTRL interface In-Reply-To: References: Message-ID: Patch Set 1: Verified+1 -- To view, visit https://gerrit.osmocom.org/7622 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I1ec86b157ebd46bf622a0ca51eba225f15c99fbb Gerrit-PatchSet: 1 Gerrit-Project: docker-playground Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr Gerrit-Reviewer: Harald Welte Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Wed Apr 4 08:04:56 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Wed, 4 Apr 2018 08:04:56 +0000 Subject: [MERGED] docker-playground[master]: ttcn3-bts-test: properly configure CTRL interface In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: ttcn3-bts-test: properly configure CTRL interface ...................................................................... ttcn3-bts-test: properly configure CTRL interface osmo-ttcn3-hacks adds configuration of the CTRL interface in I502b4891e6720ae2fb251c03542f707880a6f728. We need proper IP addresses here for the f_ipa_ctrl_start() to work. WARNING: This commit has to be merged "at the same time" as I502b4891e6720ae2fb251c03542f707880a6f728 or the jenkins ttcn3-bts-tests will fail. a) if we want to set a modulepar mp_ctrl_ip here, it needs to be added to osmo-ttcn3-hacks. b) if we have the f_ipa_ctrl_start() in osmo-ttcn3-hacks, we need to configure the proper IP and bind interface here, or all tests will fail because f_ipa_ctrl_start() cannot connect. Change-Id: I1ec86b157ebd46bf622a0ca51eba225f15c99fbb --- M ttcn3-bts-test/BTS_Tests.cfg M ttcn3-bts-test/osmo-bts.cfg 2 files changed, 3 insertions(+), 0 deletions(-) Approvals: Harald Welte: Looks good to me, approved; Verified diff --git a/ttcn3-bts-test/BTS_Tests.cfg b/ttcn3-bts-test/BTS_Tests.cfg index 423525d..2f5d752 100644 --- a/ttcn3-bts-test/BTS_Tests.cfg +++ b/ttcn3-bts-test/BTS_Tests.cfg @@ -12,6 +12,7 @@ BTS_Tests.mp_bb_trxc_ip := "172.18.9.21" BTS_Tests.mp_pcu_socket := "/data/unix/pcu_sock" L1CTL_PortType.m_l1ctl_sock_path := "/data/unix/osmocom_l2" +BTS_Tests.mp_ctrl_ip := "172.18.9.20" [MAIN_CONTROLLER] diff --git a/ttcn3-bts-test/osmo-bts.cfg b/ttcn3-bts-test/osmo-bts.cfg index 036f719..ae809fd 100644 --- a/ttcn3-bts-test/osmo-bts.cfg +++ b/ttcn3-bts-test/osmo-bts.cfg @@ -79,3 +79,5 @@ power-ramp step-interval 1 ms-power-control dsp phy 0 instance 0 +ctrl + bind 0.0.0.0 -- To view, visit https://gerrit.osmocom.org/7622 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: I1ec86b157ebd46bf622a0ca51eba225f15c99fbb Gerrit-PatchSet: 1 Gerrit-Project: docker-playground Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr Gerrit-Reviewer: Harald Welte From gerrit-no-reply at lists.osmocom.org Wed Apr 4 08:06:24 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Wed, 4 Apr 2018 08:06:24 +0000 Subject: libosmocore[master]: ctrl: fix deferred commands (and hence fix osmo-bts-sysmo 'c... In-Reply-To: References: Message-ID: Patch Set 1: (1 comment) https://gerrit.osmocom.org/#/c/7618/1/include/osmocom/ctrl/control_cmd.h File include/osmocom/ctrl/control_cmd.h: Line 69: struct ctrl_cmd_def *defer; doesn't this constitute an ABI change and hence require an entry in TOOO-RELEASE? -- To view, visit https://gerrit.osmocom.org/7618 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I24232be7dcf7be79f4def91ddc8b8f8005b56318 Gerrit-PatchSet: 1 Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-HasComments: Yes From gerrit-no-reply at lists.osmocom.org Wed Apr 4 08:06:49 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Wed, 4 Apr 2018 08:06:49 +0000 Subject: libosmocore[master]: cosmetic: flatten ctrl_handle_msg() In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7619 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I3a711f5c974b7f56e27b333d390d1a706fb57007 Gerrit-PatchSet: 1 Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Wed Apr 4 08:07:24 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Wed, 4 Apr 2018 08:07:24 +0000 Subject: osmo-ttcn3-hacks[master]: document the purpose of IP addresses used by GGSN tests In-Reply-To: References: Message-ID: Patch Set 2: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7617 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I079efcff3dab09d71330625f5b661cd81e42bf38 Gerrit-PatchSet: 2 Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Owner: Stefan Sperling Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Pau Espin Pedrol Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Wed Apr 4 08:07:25 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Wed, 4 Apr 2018 08:07:25 +0000 Subject: [MERGED] osmo-ttcn3-hacks[master]: document the purpose of IP addresses used by GGSN tests In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: document the purpose of IP addresses used by GGSN tests ...................................................................... document the purpose of IP addresses used by GGSN tests The purpose of the various IP addresses used by our GGSN tests is not immediately clear. Add documentation based on the current status quo. Change-Id: I079efcff3dab09d71330625f5b661cd81e42bf38 --- M ggsn_tests/GGSN_Tests.ttcn 1 file changed, 19 insertions(+), 0 deletions(-) Approvals: Pau Espin Pedrol: Looks good to me, but someone else must approve Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/ggsn_tests/GGSN_Tests.ttcn b/ggsn_tests/GGSN_Tests.ttcn index 2b7de96..1469062 100644 --- a/ggsn_tests/GGSN_Tests.ttcn +++ b/ggsn_tests/GGSN_Tests.ttcn @@ -20,16 +20,35 @@ const integer GTP1U_PORT := 2152; modulepar { + /* Default IP addresses. May be overridden by GGSN_Tests configuration files. */ + + /* The SGSN simulated by TTCN3 will bind to these addresses for GTP control and GTP user planes. */ charstring m_bind_ip_gtpc := "127.23.42.1"; charstring m_bind_ip_gtpu := "127.23.42.1"; + /* Addresses the GGSN which is being tested is listening on for SGSN connections. */ charstring m_ggsn_ip_gtpc := "127.0.0.6"; charstring m_ggsn_ip_gtpu := "127.0.0.6"; + /* + * Our tests expect to see these DNS servers in 'Create PDP context responses' sent by the GGSN. + * These addresses must therefore match 'ip[v6] dns' options configured in osmo-ggsn.conf. + * + * These addresses are not expected to serve actual DNS requests. However, tests may expect to be + * able to ping these addresses (currently, IPv4 addresses must respond with an ICMP 'echo reply', + * and IPv6 addresses may respond with either ICMPv6 'echo reply' or 'destination unreachable'). + */ charstring m_ggsn_ip4_dns1 := "192.168.100.1" charstring m_ggsn_ip4_dns2 := "8.8.8.8" charstring m_ggsn_ip6_dns1 := "2001:4860:4860::8888" charstring m_ggsn_ip6_dns2 := "2001:4860:4860::8844" + + /* + * Additional address ranges are defined in osmo-ggsn.conf from which addresses are assigned + * to MS "behind" the simulated SGSN. These addresses appear on tun devices used by osmo-ggsn. + * The tests expect to be able to send ping packets between any two simulated MS within the same + * address range. This requires IP forwarding to be enabled on the corresponding tun interfaces. + */ } type set PdpContext { -- To view, visit https://gerrit.osmocom.org/7617 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: I079efcff3dab09d71330625f5b661cd81e42bf38 Gerrit-PatchSet: 3 Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Owner: Stefan Sperling Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Pau Espin Pedrol From gerrit-no-reply at lists.osmocom.org Wed Apr 4 11:30:32 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Wed, 4 Apr 2018 11:30:32 +0000 Subject: [PATCH] osmo-gsm-tester[master]: nanobts: Attempt at fixing race condition using ipaccess-con... Message-ID: Review at https://gerrit.osmocom.org/7626 nanobts: Attempt at fixing race condition using ipaccess-config after power up It seems there's a period of time in between the nanoBTS starts announcing itself and it can actually be managed by the BSC (ipaccess-config in this case). If ipaccess-config is called quickly after nanoBTS it first announced, its TCP conn will be rejected with a TCO RST, and ipaccess-config will fail. Let's see if waiting a few seconds is enough to have this working more reliably. Change-Id: Iec8adb2cd13d808a6ca1843dc95b81bd1a97d1c0 --- M src/osmo_gsm_tester/bts_nanobts.py 1 file changed, 5 insertions(+), 2 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-gsm-tester refs/changes/26/7626/1 diff --git a/src/osmo_gsm_tester/bts_nanobts.py b/src/osmo_gsm_tester/bts_nanobts.py index 9599022..6350c56 100644 --- a/src/osmo_gsm_tester/bts_nanobts.py +++ b/src/osmo_gsm_tester/bts_nanobts.py @@ -197,7 +197,7 @@ env = { 'LD_LIBRARY_PATH': util.prepend_library_path(lib) } self.proc = process.Process(self.name(), self.run_dir, - (ipfind_path, '-b', self.bind_ip), + (ipfind_path, '-i', '1', '-b', self.bind_ip), env=env) self.suite_run.remember_to_stop(self.proc) self.proc.launch() @@ -229,7 +229,10 @@ def wait_bts_ready(self, ipaddr): MainLoop.wait(self, self.bts_ready, ipaddr) - + # There's a period of time after boot in which nanobts answers to + # abisip-find but tcp RSTs ipacces-config conns. Let's wait in here a + # bit more time to avoid failing after stating the BTS is ready. + MainLoop.sleep(self, 2) class IpAccessConfig(log.Origin): suite_run = None -- To view, visit https://gerrit.osmocom.org/7626 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Iec8adb2cd13d808a6ca1843dc95b81bd1a97d1c0 Gerrit-PatchSet: 1 Gerrit-Project: osmo-gsm-tester Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol From gerrit-no-reply at lists.osmocom.org Wed Apr 4 12:08:24 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Wed, 4 Apr 2018 12:08:24 +0000 Subject: osmo-gsm-tester[master]: event_loop: Use glib as mainloop impl and move modem to use ... In-Reply-To: References: Message-ID: Patch Set 2: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7559 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I8c3bc44bbe443703077110cdc67207e9cbb43767 Gerrit-PatchSet: 2 Gerrit-Project: osmo-gsm-tester Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Pau Espin Pedrol Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Wed Apr 4 12:08:26 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Wed, 4 Apr 2018 12:08:26 +0000 Subject: osmo-gsm-tester[master]: Drop event_loop global functions and import MainLoop In-Reply-To: References: Message-ID: Patch Set 2: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7560 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Ifa1940cd00138ebc72fbcfd45a0e28246f7a5ed9 Gerrit-PatchSet: 2 Gerrit-Project: osmo-gsm-tester Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Pau Espin Pedrol Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Wed Apr 4 12:08:28 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Wed, 4 Apr 2018 12:08:28 +0000 Subject: osmo-gsm-tester[master]: nanobts: Attempt at fixing race condition using ipaccess-con... In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7626 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Iec8adb2cd13d808a6ca1843dc95b81bd1a97d1c0 Gerrit-PatchSet: 1 Gerrit-Project: osmo-gsm-tester Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Pau Espin Pedrol Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Wed Apr 4 12:09:17 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Wed, 4 Apr 2018 12:09:17 +0000 Subject: osmo-gsm-tester[master]: nanobts: Attempt at fixing race condition using ipaccess-con... In-Reply-To: References: Message-ID: Patch Set 1: Tested running several times in prod and no conn rejected from nanobts. Merging. -- To view, visit https://gerrit.osmocom.org/7626 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Iec8adb2cd13d808a6ca1843dc95b81bd1a97d1c0 Gerrit-PatchSet: 1 Gerrit-Project: osmo-gsm-tester Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Pau Espin Pedrol Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Wed Apr 4 12:09:20 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Wed, 4 Apr 2018 12:09:20 +0000 Subject: [MERGED] osmo-gsm-tester[master]: nanobts: Attempt at fixing race condition using ipaccess-con... In-Reply-To: References: Message-ID: Pau Espin Pedrol has submitted this change and it was merged. Change subject: nanobts: Attempt at fixing race condition using ipaccess-config after power up ...................................................................... nanobts: Attempt at fixing race condition using ipaccess-config after power up It seems there's a period of time in between the nanoBTS starts announcing itself and it can actually be managed by the BSC (ipaccess-config in this case). If ipaccess-config is called quickly after nanoBTS it first announced, its TCP conn will be rejected with a TCO RST, and ipaccess-config will fail. Let's see if waiting a few seconds is enough to have this working more reliably. Change-Id: Iec8adb2cd13d808a6ca1843dc95b81bd1a97d1c0 --- M src/osmo_gsm_tester/bts_nanobts.py 1 file changed, 5 insertions(+), 2 deletions(-) Approvals: Pau Espin Pedrol: Looks good to me, approved Jenkins Builder: Verified diff --git a/src/osmo_gsm_tester/bts_nanobts.py b/src/osmo_gsm_tester/bts_nanobts.py index 9599022..6350c56 100644 --- a/src/osmo_gsm_tester/bts_nanobts.py +++ b/src/osmo_gsm_tester/bts_nanobts.py @@ -197,7 +197,7 @@ env = { 'LD_LIBRARY_PATH': util.prepend_library_path(lib) } self.proc = process.Process(self.name(), self.run_dir, - (ipfind_path, '-b', self.bind_ip), + (ipfind_path, '-i', '1', '-b', self.bind_ip), env=env) self.suite_run.remember_to_stop(self.proc) self.proc.launch() @@ -229,7 +229,10 @@ def wait_bts_ready(self, ipaddr): MainLoop.wait(self, self.bts_ready, ipaddr) - + # There's a period of time after boot in which nanobts answers to + # abisip-find but tcp RSTs ipacces-config conns. Let's wait in here a + # bit more time to avoid failing after stating the BTS is ready. + MainLoop.sleep(self, 2) class IpAccessConfig(log.Origin): suite_run = None -- To view, visit https://gerrit.osmocom.org/7626 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: Iec8adb2cd13d808a6ca1843dc95b81bd1a97d1c0 Gerrit-PatchSet: 1 Gerrit-Project: osmo-gsm-tester Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Pau Espin Pedrol From gerrit-no-reply at lists.osmocom.org Wed Apr 4 12:09:20 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Wed, 4 Apr 2018 12:09:20 +0000 Subject: [MERGED] osmo-gsm-tester[master]: Drop event_loop global functions and import MainLoop In-Reply-To: References: Message-ID: Pau Espin Pedrol has submitted this change and it was merged. Change subject: Drop event_loop global functions and import MainLoop ...................................................................... Drop event_loop global functions and import MainLoop Take the chance to identify and drop modules importing event_loop but not using it. Change-Id: Ifa1940cd00138ebc72fbcfd45a0e28246f7a5ed9 --- M src/osmo_gsm_tester/bts.py M src/osmo_gsm_tester/bts_nanobts.py M src/osmo_gsm_tester/bts_octphy.py M src/osmo_gsm_tester/bts_osmo.py M src/osmo_gsm_tester/bts_osmotrx.py M src/osmo_gsm_tester/esme.py M src/osmo_gsm_tester/event_loop.py M src/osmo_gsm_tester/modem.py M src/osmo_gsm_tester/pcu_osmo.py M src/osmo_gsm_tester/pcu_sysmo.py M src/osmo_gsm_tester/powersupply.py M src/osmo_gsm_tester/powersupply_sispm.py M src/osmo_gsm_tester/process.py M src/osmo_gsm_tester/suite.py M src/osmo_gsm_tester/test.py 15 files changed, 53 insertions(+), 72 deletions(-) Approvals: Pau Espin Pedrol: Looks good to me, approved Jenkins Builder: Verified diff --git a/src/osmo_gsm_tester/bts.py b/src/osmo_gsm_tester/bts.py index 289b697..02e5df7 100644 --- a/src/osmo_gsm_tester/bts.py +++ b/src/osmo_gsm_tester/bts.py @@ -21,7 +21,7 @@ import pprint import tempfile from abc import ABCMeta, abstractmethod -from . import log, config, util, template, process, event_loop, pcu_osmo +from . import log, config, util, template, process, pcu_osmo class Bts(log.Origin, metaclass=ABCMeta): suite_run = None diff --git a/src/osmo_gsm_tester/bts_nanobts.py b/src/osmo_gsm_tester/bts_nanobts.py index 1d4a14a..9599022 100644 --- a/src/osmo_gsm_tester/bts_nanobts.py +++ b/src/osmo_gsm_tester/bts_nanobts.py @@ -22,8 +22,9 @@ import tempfile import re from abc import ABCMeta, abstractmethod -from . import log, config, util, template, process, event_loop, pcap_recorder, bts, pcu +from . import log, config, util, template, process, pcap_recorder, bts, pcu from . import powersupply +from .event_loop import MainLoop class NanoBts(bts.Bts): @@ -130,7 +131,7 @@ # Let some time for BTS to restart. It takes much more than 20 secs, and # this way we make sure we don't catch responses in abisip-find prior to # BTS restarting. - event_loop.sleep(self, 20) + MainLoop.sleep(self, 20) self.log('Starting to connect to', self.bsc) ipfind = AbisIpFind(self.suite_run, self.run_dir, local_bind_ip, 'postconf') @@ -139,7 +140,7 @@ self.log('nanoBTS configured and running') ipfind.stop() - event_loop.wait(self, self.bsc.bts_is_connected, self, timeout=600) + MainLoop.wait(self, self.bsc.bts_is_connected, self, timeout=600) self.log('nanoBTS connected to BSC') #According to roh, it can be configured to use a static IP in a permanent way: @@ -227,7 +228,7 @@ return self.get_line_by_ip(ipaddr) is not None def wait_bts_ready(self, ipaddr): - event_loop.wait(self, self.bts_ready, ipaddr) + MainLoop.wait(self, self.bts_ready, ipaddr) class IpAccessConfig(log.Origin): @@ -265,7 +266,7 @@ self.env = { 'LD_LIBRARY_PATH': util.prepend_library_path(lib) } self.proc = self.launch_process(IpAccessConfig.BIN_IPACCESS_CONFIG, *args) try: - event_loop.wait(self, self.proc.terminated) + MainLoop.wait(self, self.proc.terminated) except Exception as e: self.proc.terminate() raise e diff --git a/src/osmo_gsm_tester/bts_octphy.py b/src/osmo_gsm_tester/bts_octphy.py index f5fa90b..f48afcc 100644 --- a/src/osmo_gsm_tester/bts_octphy.py +++ b/src/osmo_gsm_tester/bts_octphy.py @@ -20,7 +20,7 @@ import os import pprint import tempfile -from . import log, config, util, template, process, event_loop, pcu_osmo, bts_osmo +from . import log, config, util, template, process, pcu_osmo, bts_osmo class OsmoBtsOctphy(bts_osmo.OsmoBtsMainUnit): diff --git a/src/osmo_gsm_tester/bts_osmo.py b/src/osmo_gsm_tester/bts_osmo.py index 60b9695..be87b9d 100644 --- a/src/osmo_gsm_tester/bts_osmo.py +++ b/src/osmo_gsm_tester/bts_osmo.py @@ -21,7 +21,7 @@ import pprint import tempfile from abc import ABCMeta, abstractmethod -from . import log, config, util, template, process, event_loop, bts, pcu_osmo +from . import log, config, util, template, process, bts, pcu_osmo class OsmoBts(bts.Bts, metaclass=ABCMeta): proc_bts = None diff --git a/src/osmo_gsm_tester/bts_osmotrx.py b/src/osmo_gsm_tester/bts_osmotrx.py index ba7258e..bdfb97c 100644 --- a/src/osmo_gsm_tester/bts_osmotrx.py +++ b/src/osmo_gsm_tester/bts_osmotrx.py @@ -20,7 +20,8 @@ import os import pprint import tempfile -from . import log, config, util, template, process, event_loop, pcu_osmo, bts_osmo +from . import log, config, util, template, process, pcu_osmo, bts_osmo +from .event_loop import MainLoop class OsmoBtsTrx(bts_osmo.OsmoBtsMainUnit): ############## @@ -125,7 +126,7 @@ self.trx = OsmoTrx(self.suite_run, self.conf, self.trx_remote_ip(), self.remote_addr()) self.trx.start() self.log('Waiting for osmo-trx to start up...') - event_loop.wait(self, self.trx.trx_ready) + MainLoop.wait(self, self.trx.trx_ready) self.inst = util.Dir(os.path.abspath(self.suite_run.trial.get_inst('osmo-bts'))) lib = self.inst.child('lib') diff --git a/src/osmo_gsm_tester/esme.py b/src/osmo_gsm_tester/esme.py index 63a1ded..78421f6 100644 --- a/src/osmo_gsm_tester/esme.py +++ b/src/osmo_gsm_tester/esme.py @@ -23,7 +23,8 @@ import smpplib.consts import smpplib.exceptions -from . import log, util, event_loop, sms +from . import log, util, sms +from .event_loop import MainLoop # if you want to know what's happening inside python-smpplib #import logging @@ -82,14 +83,14 @@ def start_listening(self): self.listening = True - event_loop.register_poll_func(self.poll) + MainLoop.register_poll_func(self.poll) def stop_listening(self): if not self.listening: return self.listening = False # Empty the queue before processing the unbind + disconnect PDUs - event_loop.unregister_poll_func(self.poll) + MainLoop.unregister_poll_func(self.poll) self.poll() def connect(self): @@ -176,7 +177,7 @@ umref, self.pdus_pending = self.sms_send(sms_obj, mode, receipt) self.dbg('pdus_pending:', self.pdus_pending) self.client.set_message_sent_handler(self._process_pdus_pending) - event_loop.wait(self, lambda: len(self.pdus_pending) == 0, timeout=10) + MainLoop.wait(self, lambda: len(self.pdus_pending) == 0, timeout=10) return umref finally: self.client.set_message_sent_handler(old_func) diff --git a/src/osmo_gsm_tester/event_loop.py b/src/osmo_gsm_tester/event_loop.py index 068eca9..a9683dd 100644 --- a/src/osmo_gsm_tester/event_loop.py +++ b/src/osmo_gsm_tester/event_loop.py @@ -112,35 +112,7 @@ self.wait_no_raise(log_obj, lambda: False, [], {}, timeout=seconds, timestep=seconds) -evloop = EventLoop() - -def register_poll_func(func): - global evloop - evloop.register_poll_func(func) - -def unregister_poll_func(func): - global evloop - evloop.unregister_poll_func(func) - -def poll(): - global evloop - evloop.poll() - -def wait_no_raise(log_obj, condition, condition_args, condition_kwargs, timeout, timestep): - global evloop - evloop.wait_no_raise(log_obj, condition, condition_args, condition_kwargs, timeout, timestep) - -def wait(log_obj, condition, *condition_args, timeout=300, timestep=1, **condition_kwargs): - global evloop - evloop.wait(log_obj, condition, *condition_args, timeout=timeout, timestep=timestep, **condition_kwargs) - -def sleep(log_obj, seconds): - global evloop - evloop.sleep(log_obj, seconds) - -def defer(handler, *args, **kwargs): - global evloop - evloop.defer(handler, *args, **kwargs) +MainLoop = EventLoop() # vim: expandtab tabstop=4 shiftwidth=4 diff --git a/src/osmo_gsm_tester/modem.py b/src/osmo_gsm_tester/modem.py index 8d41935..2f742ea 100644 --- a/src/osmo_gsm_tester/modem.py +++ b/src/osmo_gsm_tester/modem.py @@ -17,7 +17,8 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see . -from . import log, util, event_loop, sms +from . import log, util, sms +from .event_loop import MainLoop from pydbus import SystemBus, Variant import time @@ -54,7 +55,7 @@ self.subscription_id = dbus_iface.connect(self.receive_signal) def receive_signal(self, *args, **kwargs): - event_loop.defer(self.handler, *args, **kwargs) + MainLoop.defer(self.handler, *args, **kwargs) def dbus_connect(dbus_iface, handler): '''This function shall be used instead of directly connecting DBus signals. @@ -296,13 +297,13 @@ def set_bool(self, name, bool_val, iface=I_MODEM): # to make sure any pending signals are received before we send out more DBus requests - event_loop.poll() + MainLoop.poll() val = bool(bool_val) self.log('Setting', name, val) self.interface(iface).SetProperty(name, Variant('b', val)) - event_loop.wait(self, self.property_is, name, bool_val) + MainLoop.wait(self, self.property_is, name, bool_val) def set_powered(self, powered=True): self.set_bool('Powered', powered) @@ -410,10 +411,10 @@ if not self.is_powered(): self.set_powered() # wait for SimManager iface to appear after we power on - event_loop.wait(self, self.dbus.has_interface, I_SIMMGR, timeout=10) + MainLoop.wait(self, self.dbus.has_interface, I_SIMMGR, timeout=10) simmgr = self.dbus.interface(I_SIMMGR) # If properties are requested quickly, it may happen that Sim property is still not there. - event_loop.wait(self, lambda: simmgr.GetProperties().get('SubscriberIdentity', None) is not None, timeout=10) + MainLoop.wait(self, lambda: simmgr.GetProperties().get('SubscriberIdentity', None) is not None, timeout=10) props = simmgr.GetProperties() self.dbg('got SIM properties', props) self._imsi = props.get('SubscriberIdentity', None) @@ -473,8 +474,8 @@ # waiting for that. Make it async and try to register when the scan is # finished. register_func = self.scan_cb_register_automatic if mcc_mnc is None else self.scan_cb_register - result_handler = lambda obj, result, user_data: event_loop.defer(register_func, result, user_data) - error_handler = lambda obj, e, user_data: event_loop.defer(self.scan_cb_error_handler, e, mcc_mnc) + result_handler = lambda obj, result, user_data: MainLoop.defer(register_func, result, user_data) + error_handler = lambda obj, e, user_data: MainLoop.defer(self.scan_cb_error_handler, e, mcc_mnc) dbus_async_call(netreg, netreg.Scan, timeout=30, cancellable=self.cancellable, result_handler=result_handler, error_handler=error_handler, user_data=mcc_mnc) @@ -539,7 +540,7 @@ self.cancellable.cancel() # Cancel op is applied as a signal coming from glib mainloop, so we # need to run it and wait for the callbacks to handle cancellations. - event_loop.poll() + MainLoop.poll() # once it has been triggered, create a new one for next operation: self.cancellable = Gio.Cancellable.new() @@ -550,20 +551,20 @@ self.set_powered(False) req_ifaces = self._required_ifaces() for iface in req_ifaces: - event_loop.wait(self, lambda: not self.dbus.has_interface(iface), timeout=10) + MainLoop.wait(self, lambda: not self.dbus.has_interface(iface), timeout=10) def power_cycle(self): 'Power the modem and put it online, power cycle it if it was already on' req_ifaces = self._required_ifaces() if self.is_powered(): self.dbg('Power cycling') - event_loop.sleep(self, 1.0) # workaround for ofono bug OS#3064 + MainLoop.sleep(self, 1.0) # workaround for ofono bug OS#3064 self.power_off() else: self.dbg('Powering on') self.set_powered() self.set_online() - event_loop.wait(self, self.dbus.has_interface, *req_ifaces, timeout=10) + MainLoop.wait(self, self.dbus.has_interface, *req_ifaces, timeout=10) def connect(self, mcc_mnc=None): 'Connect to MCC+MNC' @@ -616,7 +617,7 @@ # Activate can only be called after we are attached ctx.SetProperty('Active', Variant('b', True)) - event_loop.wait(self, lambda: ctx.GetProperties()['Active'] == True) + MainLoop.wait(self, lambda: ctx.GetProperties()['Active'] == True) self.log('context activated', path=ctx_path, apn=apn, user=user, properties=ctx.GetProperties()) return ctx_path @@ -624,7 +625,7 @@ self.dbg('deactivate_context', path=ctx_id) ctx = systembus_get(ctx_id) ctx.SetProperty('Active', Variant('b', False)) - event_loop.wait(self, lambda: ctx.GetProperties()['Active'] == False) + MainLoop.wait(self, lambda: ctx.GetProperties()['Active'] == False) self.dbg('deactivate_context active=false, removing', path=ctx_id) connmgr = self.dbus.interface(I_CONNMGR) connmgr.RemoveContext(ctx_id) @@ -689,7 +690,7 @@ else: caller_msisdn = str(caller_msisdn_or_modem) self.dbg('Waiting for incoming call from:', caller_msisdn) - event_loop.wait(self, lambda: self._find_call_msisdn_state(caller_msisdn, 'incoming') is not None, timeout=timeout) + MainLoop.wait(self, lambda: self._find_call_msisdn_state(caller_msisdn, 'incoming') is not None, timeout=timeout) return self._find_call_msisdn_state(caller_msisdn, 'incoming') def call_answer(self, call_id): diff --git a/src/osmo_gsm_tester/pcu_osmo.py b/src/osmo_gsm_tester/pcu_osmo.py index deaeb80..6ab97de 100644 --- a/src/osmo_gsm_tester/pcu_osmo.py +++ b/src/osmo_gsm_tester/pcu_osmo.py @@ -20,7 +20,7 @@ import os import pprint import tempfile -from . import log, config, util, template, process, event_loop, pcu +from . import log, config, util, template, process, pcu class OsmoPcu(pcu.Pcu): inst = None diff --git a/src/osmo_gsm_tester/pcu_sysmo.py b/src/osmo_gsm_tester/pcu_sysmo.py index fd1b272..675de50 100644 --- a/src/osmo_gsm_tester/pcu_sysmo.py +++ b/src/osmo_gsm_tester/pcu_sysmo.py @@ -19,7 +19,7 @@ import os import pprint -from . import log, config, util, template, process, event_loop +from . import log, config, util, template, process class OsmoPcuSysmo(log.Origin): suite_run = None diff --git a/src/osmo_gsm_tester/powersupply.py b/src/osmo_gsm_tester/powersupply.py index 8d52157..86fc010 100644 --- a/src/osmo_gsm_tester/powersupply.py +++ b/src/osmo_gsm_tester/powersupply.py @@ -18,7 +18,8 @@ # along with this program. If not, see . from abc import ABCMeta, abstractmethod -from . import log, event_loop +from . import log +from .event_loop import MainLoop class PowerSupply(log.Origin, metaclass=ABCMeta): @@ -46,7 +47,7 @@ def power_cycle(self, sleep=0): """Turns off the device, waits N.N seconds, then turn on the device.""" self.power_set(False) - event_loop.sleep(self, sleep) + MainLoop.sleep(self, sleep) self.power_set(True) diff --git a/src/osmo_gsm_tester/powersupply_sispm.py b/src/osmo_gsm_tester/powersupply_sispm.py index 91604b4..b35592f 100644 --- a/src/osmo_gsm_tester/powersupply_sispm.py +++ b/src/osmo_gsm_tester/powersupply_sispm.py @@ -20,7 +20,8 @@ import sispm from usb.core import USBError -from . import log, event_loop +from . import log +from .event_loop import MainLoop from .powersupply import PowerSupply class PowerSupplySispm(PowerSupply): @@ -50,7 +51,7 @@ except USBError as e: if e.errno == 16 or e.errno==110: self.log('skip usb error, retry', repr(e)) - event_loop.sleep(self, 0.1) + MainLoop.sleep(self, 0.1) continue raise e diff --git a/src/osmo_gsm_tester/process.py b/src/osmo_gsm_tester/process.py index 4c55fe9..8ae6a55 100644 --- a/src/osmo_gsm_tester/process.py +++ b/src/osmo_gsm_tester/process.py @@ -23,7 +23,8 @@ import signal from datetime import datetime -from . import log, event_loop +from . import log +from .event_loop import MainLoop from .util import Dir class Process(log.Origin): @@ -204,7 +205,7 @@ return self.result is not None def wait(self, timeout=300): - event_loop.wait(self, self.terminated, timeout=timeout) + MainLoop.wait(self, self.terminated, timeout=timeout) class RemoteProcess(Process): diff --git a/src/osmo_gsm_tester/suite.py b/src/osmo_gsm_tester/suite.py index 106994e..a7f91c5 100644 --- a/src/osmo_gsm_tester/suite.py +++ b/src/osmo_gsm_tester/suite.py @@ -21,7 +21,8 @@ import sys import time import pprint -from . import config, log, template, util, resource, schema, event_loop, test +from . import config, log, template, util, resource, schema, test +from .event_loop import MainLoop from . import osmo_nitb, osmo_hlr, osmo_mgcpgw, osmo_mgw, osmo_msc, osmo_bsc, osmo_stp, osmo_ggsn, osmo_sgsn, modem, esme class Timeout(Exception): @@ -150,7 +151,7 @@ try: log.large_separator(self.trial.name(), self.name(), sublevel=2) self.mark_start() - event_loop.register_poll_func(self.poll) + MainLoop.register_poll_func(self.poll) if not self.reserved_resources: self.reserve_resources() for t in self.tests: @@ -175,7 +176,7 @@ self.stop_processes() self.objects_cleanup() self.free_resources() - event_loop.unregister_poll_func(self.poll) + MainLoop.unregister_poll_func(self.poll) self.duration = time.time() - self.start_timestamp passed, skipped, failed = self.count_test_results() @@ -344,7 +345,7 @@ sys.__stdout__.write(msg) sys.__stdout__.write('\n') sys.__stdout__.flush() - entered = util.input_polling('> ', event_loop.poll) + entered = util.input_polling('> ', MainLoop.poll) self.log('prompt entered:', repr(entered)) return entered diff --git a/src/osmo_gsm_tester/test.py b/src/osmo_gsm_tester/test.py index 82b290f..59d503c 100644 --- a/src/osmo_gsm_tester/test.py +++ b/src/osmo_gsm_tester/test.py @@ -54,8 +54,9 @@ log.large_separator(self.suite_run.trial.name(), self.suite_run.name(), self.name(), sublevel=3) self.status = Test.UNKNOWN self.start_timestamp = time.time() - from . import suite, event_loop, sms - testenv.setup(self.suite_run, self, suite, event_loop, sms) + from . import suite, sms + from .event_loop import MainLoop + testenv.setup(self.suite_run, self, suite, MainLoop, sms) with self.redirect_stdout(): util.run_python_file('%s.%s' % (self.suite_run.definition.name(), self.basename), self.path) -- To view, visit https://gerrit.osmocom.org/7560 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: Ifa1940cd00138ebc72fbcfd45a0e28246f7a5ed9 Gerrit-PatchSet: 2 Gerrit-Project: osmo-gsm-tester Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Pau Espin Pedrol From gerrit-no-reply at lists.osmocom.org Wed Apr 4 12:09:21 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Wed, 4 Apr 2018 12:09:21 +0000 Subject: [MERGED] osmo-gsm-tester[master]: event_loop: Use glib as mainloop impl and move modem to use ... In-Reply-To: References: Message-ID: Pau Espin Pedrol has submitted this change and it was merged. Change subject: event_loop: Use glib as mainloop impl and move modem to use event_loop ...................................................................... event_loop: Use glib as mainloop impl and move modem to use event_loop Several benefits: - We can add APIs to poll on fds in the future (for smpp socket for instance) instead of using busy polling. - During wait(), we now block in the glib mainloop instead of sleeping 0.1 secs and not handling events during that time. - We remove glib mainloop specific bits from modem.py Change-Id: I8c3bc44bbe443703077110cdc67207e9cbb43767 --- M src/osmo_gsm_tester/event_loop.py M src/osmo_gsm_tester/modem.py 2 files changed, 115 insertions(+), 54 deletions(-) Approvals: Pau Espin Pedrol: Looks good to me, approved Jenkins Builder: Verified diff --git a/src/osmo_gsm_tester/event_loop.py b/src/osmo_gsm_tester/event_loop.py index ebe6afb..068eca9 100644 --- a/src/osmo_gsm_tester/event_loop.py +++ b/src/osmo_gsm_tester/event_loop.py @@ -18,48 +18,129 @@ # along with this program. If not, see . import time +from gi.repository import GLib, GObject + from . import log -poll_funcs = [] +class DeferredHandling: + defer_queue = [] + + def handle_queue(self): + while DeferredHandling.defer_queue: + handler, args, kwargs = self.defer_queue.pop(0) + handler(*args, **kwargs) + + def defer(self, handler, *args, **kwargs): + self.defer_queue.append((handler, args, kwargs)) + +class WaitRequest: + timeout_ack = False + condition_ack = False + + def __init__(self, condition, condition_args, condition_kwargs, timeout, timestep): + self.timeout_started = time.time() + self.timeout = timeout + self.condition = condition + self.condition_args = condition_args + self.condition_kwargs = condition_kwargs + + def condition_check(self): + #print("_wait_condition_check") + waited = time.time() - self.timeout_started + if self.condition(*self.condition_args, **self.condition_kwargs): + self.condition_ack = True + elif waited > self.timeout: + self.timeout_ack = True + +class EventLoop: + poll_funcs = [] + gloop = None + gctx = None + deferred_handling = None + + def __init__(self): + self.gloop = GLib.MainLoop() + self.gctx = self.gloop.get_context() + self.deferred_handling = DeferredHandling() + + def _trigger_cb_func(self, user_data): + self.defer(user_data) + return True #to retrigger the timeout + + def defer(self, handler, *args, **kwargs): + self.deferred_handling.defer(handler, *args, **kwargs) + + def register_poll_func(self, func, timestep=1): + id = GObject.timeout_add(timestep*1000, self._trigger_cb_func, func) # in 1/1000th of a sec + self.poll_funcs.append((func, id)) + + def unregister_poll_func(self, func): + for pair in self.poll_funcs: + f, id = pair + if f == func: + GObject.source_remove(id) + self.poll_funcs.remove(pair) + return + + def poll(self, may_block=False): + self.gctx.iteration(may_block) + self.deferred_handling.handle_queue() + + def wait_no_raise(self, log_obj, condition, condition_args, condition_kwargs, timeout, timestep): + if not timeout or timeout < 0: + self = log_obj + raise log.Error('wait() *must* time out at some point.', timeout=timeout) + if timestep < 0.1: + timestep = 0.1 + + wait_req = WaitRequest(condition, condition_args, condition_kwargs, timeout, timestep) + wait_id = GObject.timeout_add(timestep*1000, self._trigger_cb_func, wait_req.condition_check) + while True: + self.poll(may_block=True) + if wait_req.condition_ack or wait_req.timeout_ack: + GObject.source_remove(wait_id) + success = wait_req.condition_ack + return success + + def wait(self, log_obj, condition, *condition_args, timeout=300, timestep=1, **condition_kwargs): + if not self.wait_no_raise(log_obj, condition, condition_args, condition_kwargs, timeout, timestep): + log.ctx(log_obj) + raise log.Error('Wait timeout') + + def sleep(self, log_obj, seconds): + assert seconds > 0. + self.wait_no_raise(log_obj, lambda: False, [], {}, timeout=seconds, timestep=seconds) + + +evloop = EventLoop() def register_poll_func(func): - global poll_funcs - poll_funcs.append(func) + global evloop + evloop.register_poll_func(func) def unregister_poll_func(func): - global poll_funcs - poll_funcs.remove(func) + global evloop + evloop.unregister_poll_func(func) def poll(): - global poll_funcs - for func in poll_funcs: - func() + global evloop + evloop.poll() def wait_no_raise(log_obj, condition, condition_args, condition_kwargs, timeout, timestep): - if not timeout or timeout < 0: - self = log_obj - raise log.Error('wait() *must* time out at some point.', timeout=timeout) - if timestep < 0.1: - timestep = 0.1 - - started = time.time() - while True: - poll() - if condition(*condition_args, **condition_kwargs): - return True - waited = time.time() - started - if waited > timeout: - return False - time.sleep(timestep) + global evloop + evloop.wait_no_raise(log_obj, condition, condition_args, condition_kwargs, timeout, timestep) def wait(log_obj, condition, *condition_args, timeout=300, timestep=1, **condition_kwargs): - if not wait_no_raise(log_obj, condition, condition_args, condition_kwargs, timeout, timestep): - log.ctx(log_obj) - raise log.Error('Wait timeout') + global evloop + evloop.wait(log_obj, condition, *condition_args, timeout=timeout, timestep=timestep, **condition_kwargs) def sleep(log_obj, seconds): - assert seconds > 0. - wait_no_raise(log_obj, lambda: False, [], {}, timeout=seconds, timestep=min(seconds, 1)) + global evloop + evloop.sleep(log_obj, seconds) + +def defer(handler, *args, **kwargs): + global evloop + evloop.defer(handler, *args, **kwargs) # vim: expandtab tabstop=4 shiftwidth=4 diff --git a/src/osmo_gsm_tester/modem.py b/src/osmo_gsm_tester/modem.py index f50a291..8d41935 100644 --- a/src/osmo_gsm_tester/modem.py +++ b/src/osmo_gsm_tester/modem.py @@ -30,8 +30,6 @@ Gio = get_introspection_module('Gio') from gi.repository import GLib -glib_main_loop = GLib.MainLoop() -glib_main_ctx = glib_main_loop.get_context() bus = SystemBus() I_MODEM = 'org.ofono.Modem' @@ -49,24 +47,14 @@ NETREG_MAX_REGISTER_ATTEMPTS = 3 -class DeferredHandling: - defer_queue = [] +class DeferredDBus: def __init__(self, dbus_iface, handler): self.handler = handler self.subscription_id = dbus_iface.connect(self.receive_signal) def receive_signal(self, *args, **kwargs): - DeferredHandling.defer_queue.append((self.handler, args, kwargs)) - - @staticmethod - def handle_queue(): - while DeferredHandling.defer_queue: - handler, args, kwargs = DeferredHandling.defer_queue.pop(0) - handler(*args, **kwargs) - -def defer(handler, *args, **kwargs): - DeferredHandling.defer_queue.append((handler, args, kwargs)) + event_loop.defer(self.handler, *args, **kwargs) def dbus_connect(dbus_iface, handler): '''This function shall be used instead of directly connecting DBus signals. @@ -75,15 +63,7 @@ so that a signal handler is invoked only after the DBus polling is through by enlisting signals that should be handled in the DeferredHandling.defer_queue.''' - return DeferredHandling(dbus_iface, handler).subscription_id - -def poll_glib(): - global glib_main_ctx - while glib_main_ctx.pending(): - glib_main_ctx.iteration() - DeferredHandling.handle_queue() - -event_loop.register_poll_func(poll_glib) + return DeferredDBus(dbus_iface, handler).subscription_id def systembus_get(path): global bus @@ -493,8 +473,8 @@ # waiting for that. Make it async and try to register when the scan is # finished. register_func = self.scan_cb_register_automatic if mcc_mnc is None else self.scan_cb_register - result_handler = lambda obj, result, user_data: defer(register_func, result, user_data) - error_handler = lambda obj, e, user_data: defer(self.scan_cb_error_handler, e, mcc_mnc) + result_handler = lambda obj, result, user_data: event_loop.defer(register_func, result, user_data) + error_handler = lambda obj, e, user_data: event_loop.defer(self.scan_cb_error_handler, e, mcc_mnc) dbus_async_call(netreg, netreg.Scan, timeout=30, cancellable=self.cancellable, result_handler=result_handler, error_handler=error_handler, user_data=mcc_mnc) @@ -559,7 +539,7 @@ self.cancellable.cancel() # Cancel op is applied as a signal coming from glib mainloop, so we # need to run it and wait for the callbacks to handle cancellations. - poll_glib() + event_loop.poll() # once it has been triggered, create a new one for next operation: self.cancellable = Gio.Cancellable.new() -- To view, visit https://gerrit.osmocom.org/7559 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: I8c3bc44bbe443703077110cdc67207e9cbb43767 Gerrit-PatchSet: 2 Gerrit-Project: osmo-gsm-tester Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Pau Espin Pedrol From gerrit-no-reply at lists.osmocom.org Wed Apr 4 12:11:01 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Wed, 4 Apr 2018 12:11:01 +0000 Subject: osmocom-bb[fixeria/trx]: trxcon/l1ctl.c: hexdump content of unhandled messages In-Reply-To: References: Message-ID: Patch Set 4: ping. This and previous commit have been here with a +1 for 2 weeks now. Is there something preventing to +2 and merge them? -- To view, visit https://gerrit.osmocom.org/7414 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Iec8fc6d49d1e35fe101960dd969de559e37a6a75 Gerrit-PatchSet: 4 Gerrit-Project: osmocom-bb Gerrit-Branch: fixeria/trx Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Pau Espin Pedrol Gerrit-Reviewer: Vadim Yanitskiy Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Wed Apr 4 12:12:53 2018 From: gerrit-no-reply at lists.osmocom.org (Vadim Yanitskiy) Date: Wed, 4 Apr 2018 12:12:53 +0000 Subject: libosmocore[master]: gsm0480: copy the raw USSD data, its DCS and length In-Reply-To: References: Message-ID: Patch Set 1: (2 comments) https://gerrit.osmocom.org/#/c/7625/1/include/osmocom/gsm/gsm0480.h File include/osmocom/gsm/gsm0480.h: Line 77: uint8_t ussd_data[GSM0480_USSD_OCTET_STRING_LEN]; > why do we have the new fields in addition to the old fields? Can a single > why do we have the new fields in addition to the old fields? It's described in the commit message. My use case is: when an USSD message is transfered via MAP / GSUP, it *shall* contain DCS (see 7.6.4.36, 3GPP TS 09.02). The length is also important to have, because you cannot apply 'strlen' to raw coded bytes. > Can a single message contain both text and data? Unlike a call related SS-message, it can't (see 2.2.6.2, 3GPP TS 04.10). As documented, this structure *represents* the content of a GSM 04.80 message, so it would contain the data in both original (ussd_data) and decoded (ussd_text) representations. > It's useful to have the raw data and the decoded text > (if any) in parallel in this structure? Exactly! ;) I could remove the old field, but this would break the API. Let's keep it for compatibility. https://gerrit.osmocom.org/#/c/7625/1/src/gsm/gsm0480.c File src/gsm/gsm0480.c: Line 593: num_chars = GSM0480_USSD_OCTET_STRING_LEN; > I'm not sure silent truncation is a good idea. This should IMHO at least l Agree with you. Probably, would be better to print a error and then reject the message. But, this is unrelated to this change and was introduced before. > What are your thoughts? Let's do this in a separate change. -- To view, visit https://gerrit.osmocom.org/7625 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Ia193d175021e145bb3b131290231f307dbefc64a Gerrit-PatchSet: 1 Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Owner: Vadim Yanitskiy Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Vadim Yanitskiy Gerrit-HasComments: Yes From gerrit-no-reply at lists.osmocom.org Wed Apr 4 12:16:01 2018 From: gerrit-no-reply at lists.osmocom.org (Neels Hofmeyr) Date: Wed, 4 Apr 2018 12:16:01 +0000 Subject: [PATCH] libosmocore[master]: fsm: id: properly set name in case of NULL id Message-ID: Review at https://gerrit.osmocom.org/7627 fsm: id: properly set name in case of NULL id Since alloc relies on osmo_fsm_inst_update_id() to set the name, never skip that. In osmo_fsm_inst_alloc(), we allow passing a NULL id, and in osmo_fsm_inst_update_id(), we set the name without id if id is NULL. Change-Id: I6d6b09a811b82770818f19b189a57d9fc4a8133b --- M src/fsm.c 1 file changed, 3 insertions(+), 5 deletions(-) git pull ssh://gerrit.osmocom.org:29418/libosmocore refs/changes/27/7627/1 diff --git a/src/fsm.c b/src/fsm.c index c5256da..0c943d4 100644 --- a/src/fsm.c +++ b/src/fsm.c @@ -258,11 +258,9 @@ fi->log_level = log_level; osmo_timer_setup(&fi->timer, fsm_tmr_cb, fi); - if (id) { - if (osmo_fsm_inst_update_id(fi, id) < 0) { - talloc_free(fi); - return NULL; - } + if (osmo_fsm_inst_update_id(fi, id) < 0) { + talloc_free(fi); + return NULL; } INIT_LLIST_HEAD(&fi->proc.children); -- To view, visit https://gerrit.osmocom.org/7627 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I6d6b09a811b82770818f19b189a57d9fc4a8133b Gerrit-PatchSet: 1 Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr From gerrit-no-reply at lists.osmocom.org Wed Apr 4 12:16:01 2018 From: gerrit-no-reply at lists.osmocom.org (Neels Hofmeyr) Date: Wed, 4 Apr 2018 12:16:01 +0000 Subject: [PATCH] libosmocore[master]: fsm: collapse an empty id to a NULL id, adjust api doc Message-ID: Review at https://gerrit.osmocom.org/7628 fsm: collapse an empty id to a NULL id, adjust api doc If the FSM instance id were passed as empty string, we would print "()" in the instance name. Instead, evaluate an empty id just like a NULL id. Describe that properly in the API docs. Change-Id: I9fa6e13ec1c2ab204b6229f4e3fa5f2c0d53a2ba --- M src/fsm.c 1 file changed, 5 insertions(+), 2 deletions(-) git pull ssh://gerrit.osmocom.org:29418/libosmocore refs/changes/28/7628/1 diff --git a/src/fsm.c b/src/fsm.c index 0c943d4..56bb3d0 100644 --- a/src/fsm.c +++ b/src/fsm.c @@ -201,11 +201,14 @@ /*! Change id of the FSM instance * \param[in] fi FSM instance - * \param[in] id new ID + * \param[in] id new ID, or NULL/empty to clear the ID. * \returns 0 if the ID was updated, otherwise -EINVAL */ int osmo_fsm_inst_update_id(struct osmo_fsm_inst *fi, const char *id) { + if (id && !*id) + id = NULL; + if (id) { if (!osmo_identifier_valid(id)) { LOGP(DLGLOBAL, LOGL_ERROR, "Attempting to allocate FSM instance of type '%s'" @@ -245,7 +248,7 @@ * \param[in] ctx talloc context from which to allocate memory * \param[in] priv private data reference store in fsm instance * \param[in] log_level The log level for events of this FSM - * \param[in] id The name/ID of the FSM instance + * \param[in] id The name/ID of the FSM instance, or NULL/empty to use no ID. * \returns newly-allocated, initialized and registered FSM instance */ struct osmo_fsm_inst *osmo_fsm_inst_alloc(struct osmo_fsm *fsm, void *ctx, void *priv, -- To view, visit https://gerrit.osmocom.org/7628 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I9fa6e13ec1c2ab204b6229f4e3fa5f2c0d53a2ba Gerrit-PatchSet: 1 Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr From gerrit-no-reply at lists.osmocom.org Wed Apr 4 12:16:01 2018 From: gerrit-no-reply at lists.osmocom.org (Neels Hofmeyr) Date: Wed, 4 Apr 2018 12:16:01 +0000 Subject: [PATCH] libosmocore[master]: add osmo_fsm_inst_update_id_f() Message-ID: Review at https://gerrit.osmocom.org/7629 add osmo_fsm_inst_update_id_f() In the osmo-msc, I would like to set the subscr conn FSM identifier by a string format, to include the type of Complete Layer 3 that is taking place. I could each time talloc a string and free it again. This API is more convenient. >From osmo_fsm_inst_update_id(), call osmo_fsm_inst_update_id_f() with "%s" (or pass NULL). Put the name updating into separate static update_name() function to clarify. Change-Id: I76743a7642f2449fd33350691ac8ebbf4400371d --- M include/osmocom/core/fsm.h M src/fsm.c 2 files changed, 52 insertions(+), 27 deletions(-) git pull ssh://gerrit.osmocom.org:29418/libosmocore refs/changes/29/7629/1 diff --git a/include/osmocom/core/fsm.h b/include/osmocom/core/fsm.h index 2c2a996..174396a 100644 --- a/include/osmocom/core/fsm.h +++ b/include/osmocom/core/fsm.h @@ -159,6 +159,7 @@ void osmo_fsm_inst_free(struct osmo_fsm_inst *fi); int osmo_fsm_inst_update_id(struct osmo_fsm_inst *fi, const char *id); +int osmo_fsm_inst_update_id_f(struct osmo_fsm_inst *fi, const char *fmt, ...); const char *osmo_fsm_event_name(struct osmo_fsm *fsm, uint32_t event); const char *osmo_fsm_inst_name(struct osmo_fsm_inst *fi); diff --git a/src/fsm.c b/src/fsm.c index 56bb3d0..4b0a3a8 100644 --- a/src/fsm.c +++ b/src/fsm.c @@ -206,40 +206,64 @@ */ int osmo_fsm_inst_update_id(struct osmo_fsm_inst *fi, const char *id) { - if (id && !*id) - id = NULL; + if (!id || !*id) + return osmo_fsm_inst_update_id_f(fi, NULL); + else + return osmo_fsm_inst_update_id_f(fi, "%s", id); +} - if (id) { - if (!osmo_identifier_valid(id)) { - LOGP(DLGLOBAL, LOGL_ERROR, "Attempting to allocate FSM instance of type '%s'" - " with illegal identifier '%s'\n", fi->fsm->name, id); +static void update_name(struct osmo_fsm_inst *fi) +{ + if (fi->name) + talloc_free((char*)fi->name); + + if (!fsm_log_addr) { + if (fi->id) + fi->name = talloc_asprintf(fi, "%s(%s)", fi->fsm->name, fi->id); + else + fi->name = talloc_asprintf(fi, "%s", fi->fsm->name); + } else { + if (fi->id) + fi->name = talloc_asprintf(fi, "%s(%s)[%p]", fi->fsm->name, fi->id, fi); + else + fi->name = talloc_asprintf(fi, "%s[%p]", fi->fsm->name, fi); + } +} + +/*! Change id of the FSM instance using a string format. + * \param[in] fi FSM instance. + * \param[in] fmt format string to compose new ID. + * \param[in] ... variable argument list for format string. + * \returns 0 if the ID was updated, otherwise -EINVAL. + */ +int osmo_fsm_inst_update_id_f(struct osmo_fsm_inst *fi, const char *fmt, ...) +{ + char *id = NULL; + + if (fmt) { + va_list ap; + + va_start(ap, fmt); + id = talloc_vasprintf(fi, fmt, ap); + va_end(ap); + + if (!*id) { + talloc_free(id); + id = NULL; + } else if (!osmo_identifier_valid(id)) { + LOGP(DLGLOBAL, LOGL_ERROR, + "Attempting to set illegal id for FSM instance of type '%s': '%s'\n", + fi->fsm->name, id); + talloc_free(id); return -EINVAL; } - osmo_talloc_replace_string(fi, (char **)&fi->id, id); - - if (fi->name) - talloc_free((void*)fi->name); - - if (!fsm_log_addr) { - fi->name = talloc_asprintf(fi, "%s(%s)", fi->fsm->name, id); - } else { - fi->name = talloc_asprintf(fi, "%s(%s)[%p]", fi->fsm->name, id, fi); - } - - return 0; } if (fi->id) - talloc_free((void*)fi->id); - fi->id = NULL; - if (fi->name) - talloc_free((void*)fi->name); + talloc_free((char*)fi->id); + fi->id = id; - if (!fsm_log_addr) { - fi->name = talloc_asprintf(fi, "%s", fi->fsm->name); - } else { - fi->name = talloc_asprintf(fi, "%s[%p]", fi->fsm->name, fi); - } + update_name(fi); return 0; } -- To view, visit https://gerrit.osmocom.org/7629 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I76743a7642f2449fd33350691ac8ebbf4400371d Gerrit-PatchSet: 1 Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr From gerrit-no-reply at lists.osmocom.org Wed Apr 4 12:16:47 2018 From: gerrit-no-reply at lists.osmocom.org (Neels Hofmeyr) Date: Wed, 4 Apr 2018 12:16:47 +0000 Subject: libosmocore[master]: add osmo_fsm_inst_update_id_f() In-Reply-To: References: Message-ID: Patch Set 1: I'm not sure if this is just code bloat or worth the API real estate. What do you guys think? -- To view, visit https://gerrit.osmocom.org/7629 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I76743a7642f2449fd33350691ac8ebbf4400371d Gerrit-PatchSet: 1 Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr Gerrit-Reviewer: Neels Hofmeyr Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Wed Apr 4 12:32:34 2018 From: gerrit-no-reply at lists.osmocom.org (Vadim Yanitskiy) Date: Wed, 4 Apr 2018 12:32:34 +0000 Subject: [PATCH] libosmocore[master]: gsm0480: drop messages with incorrect data length Message-ID: Review at https://gerrit.osmocom.org/7630 gsm0480: drop messages with incorrect data length If either an INVOKE, either a RETURN_RESULT component has the data with incorrect length (see Annex A, 3GPP TS 04.80), the whole message is probably incorrect. Let's drop such messages instead of silent truncation. Change-Id: I2a169b0b84aa26ea2521edd55ff005c27ae6d808 --- M src/gsm/gsm0480.c 1 file changed, 12 insertions(+), 9 deletions(-) git pull ssh://gerrit.osmocom.org:29418/libosmocore refs/changes/30/7630/1 diff --git a/src/gsm/gsm0480.c b/src/gsm/gsm0480.c index 38082b3..dd58249 100644 --- a/src/gsm/gsm0480.c +++ b/src/gsm/gsm0480.c @@ -552,8 +552,12 @@ if (num_chars > length - 2) return 0; - if (num_chars > GSM0480_USSD_OCTET_STRING_LEN) - num_chars = GSM0480_USSD_OCTET_STRING_LEN; + /* Drop messages with incorrect length */ + if (num_chars > GSM0480_USSD_OCTET_STRING_LEN) { + LOGP(0, LOGL_ERROR, "Incorrect USS_DATA data length=%u, " + "dropping message", num_chars); + return 0; + } memcpy(req->ussd_text, uss_req_data + 2, num_chars); @@ -588,9 +592,12 @@ /* Get the amount of bytes */ num_chars = uss_req_data[6]; - /* Prevent a mobile-originated buffer-overrun! */ - if (num_chars > GSM0480_USSD_OCTET_STRING_LEN) - num_chars = GSM0480_USSD_OCTET_STRING_LEN; + /* Drop messages with incorrect length */ + if (num_chars > GSM0480_USSD_OCTET_STRING_LEN) { + LOGP(0, LOGL_ERROR, "Incorrect USS_REQ data length=%u, " + "dropping message", num_chars); + return 0; + } /* Copy the data 'as is' */ memcpy(req->ussd_data, uss_req_data + 7, num_chars); @@ -605,10 +612,6 @@ if (dcs == 0x0F) { /* Calculate the amount of 7-bit characters */ num_chars = (num_chars * 8) / 7; - - /* Prevent a mobile-originated buffer-overrun! */ - if (num_chars > GSM0480_USSD_7BIT_STRING_LEN) - num_chars = GSM0480_USSD_7BIT_STRING_LEN; gsm_7bit_decode_n_ussd((char *)req->ussd_text, sizeof(req->ussd_text), &(uss_req_data[7]), num_chars); -- To view, visit https://gerrit.osmocom.org/7630 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I2a169b0b84aa26ea2521edd55ff005c27ae6d808 Gerrit-PatchSet: 1 Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Owner: Vadim Yanitskiy From gerrit-no-reply at lists.osmocom.org Wed Apr 4 12:32:34 2018 From: gerrit-no-reply at lists.osmocom.org (Vadim Yanitskiy) Date: Wed, 4 Apr 2018 12:32:34 +0000 Subject: [PATCH] libosmocore[master]: gsm0480: fix: don't overwrite the data of RELEASE_COMPLETE Message-ID: Review at https://gerrit.osmocom.org/7631 gsm0480: fix: don't overwrite the data of RELEASE_COMPLETE According to the 3GPP TS 04.80, table 2.5 'Release complete', a RELEASE_COMPLETE message may containg optional FACILITY element. Meanwhile, the 0xff byte is used to indicate that there is no decoded message (legacy field). Let's avoid overwriting of a decoded message. Change-Id: I0c85292222749a48ca0c4b2e93f4fa2d61468c18 --- M src/gsm/gsm0480.c 1 file changed, 6 insertions(+), 2 deletions(-) git pull ssh://gerrit.osmocom.org:29418/libosmocore refs/changes/31/7631/1 diff --git a/src/gsm/gsm0480.c b/src/gsm/gsm0480.c index dd58249..ef02307 100644 --- a/src/gsm/gsm0480.c +++ b/src/gsm/gsm0480.c @@ -296,11 +296,15 @@ case GSM0480_MTYPE_RELEASE_COMPLETE: LOGP(0, LOGL_DEBUG, "SS Release Complete\n"); + /** + * Indicates that there is no decoded message. + * To be overwriten by the message otherwise. + */ + req->ussd_text[0] = 0xFF; + /* Parse optional Cause and/or Facility data */ if (len >= 2) rc &= parse_ss_info_elements(&hdr->data[0], len, req); - - req->ussd_text[0] = 0xFF; break; case GSM0480_MTYPE_REGISTER: rc &= parse_ss_info_elements(&hdr->data[0], len, req); -- To view, visit https://gerrit.osmocom.org/7631 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I0c85292222749a48ca0c4b2e93f4fa2d61468c18 Gerrit-PatchSet: 1 Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Owner: Vadim Yanitskiy From gerrit-no-reply at lists.osmocom.org Wed Apr 4 12:54:08 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Wed, 4 Apr 2018 12:54:08 +0000 Subject: libosmocore[master]: gsm0480: copy the raw USSD data, its DCS and length In-Reply-To: References: Message-ID: Patch Set 1: NeedsmTODO-RELEASE as it breaks ABI -- To view, visit https://gerrit.osmocom.org/7625 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Ia193d175021e145bb3b131290231f307dbefc64a Gerrit-PatchSet: 1 Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Owner: Vadim Yanitskiy Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Vadim Yanitskiy Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Wed Apr 4 12:55:04 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Wed, 4 Apr 2018 12:55:04 +0000 Subject: libosmocore[master]: gsm0480: drop messages with incorrect data length In-Reply-To: References: Message-ID: Patch Set 1: Pleased use a proper logging subsystem - if nothing else applies, DLGLOBAL -- To view, visit https://gerrit.osmocom.org/7630 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I2a169b0b84aa26ea2521edd55ff005c27ae6d808 Gerrit-PatchSet: 1 Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Owner: Vadim Yanitskiy Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Wed Apr 4 12:57:23 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Wed, 4 Apr 2018 12:57:23 +0000 Subject: libosmocore[master]: add osmo_fsm_inst_update_id_f() In-Reply-To: References: Message-ID: Patch Set 1: Fine with me, but should have unit test coverage, including check for no memleak? -- To view, visit https://gerrit.osmocom.org/7629 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I76743a7642f2449fd33350691ac8ebbf4400371d Gerrit-PatchSet: 1 Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Neels Hofmeyr Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Wed Apr 4 12:58:03 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Wed, 4 Apr 2018 12:58:03 +0000 Subject: libosmocore[master]: fsm: id: properly set name in case of NULL id In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7627 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I6d6b09a811b82770818f19b189a57d9fc4a8133b Gerrit-PatchSet: 1 Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Wed Apr 4 12:58:18 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Wed, 4 Apr 2018 12:58:18 +0000 Subject: libosmocore[master]: fsm: id: properly set name in case of NULL id In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+1 Unit test? -- To view, visit https://gerrit.osmocom.org/7627 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I6d6b09a811b82770818f19b189a57d9fc4a8133b Gerrit-PatchSet: 1 Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Wed Apr 4 12:58:48 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Wed, 4 Apr 2018 12:58:48 +0000 Subject: libosmocore[master]: fsm: collapse an empty id to a NULL id, adjust api doc In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+1 Unit Test -- To view, visit https://gerrit.osmocom.org/7628 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I9fa6e13ec1c2ab204b6229f4e3fa5f2c0d53a2ba Gerrit-PatchSet: 1 Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Wed Apr 4 13:24:19 2018 From: gerrit-no-reply at lists.osmocom.org (Vadim Yanitskiy) Date: Wed, 4 Apr 2018 13:24:19 +0000 Subject: [PATCH] libosmocore[master]: gsm0480: copy the raw USSD data, its DCS and length In-Reply-To: References: Message-ID: Hello Jenkins Builder, I'd like you to reexamine a change. Please visit https://gerrit.osmocom.org/7625 to look at the new patch set (#2). gsm0480: copy the raw USSD data, its DCS and length As it was already documented before, the 'ss_request' struct has a rudiment of deprecated 'ussd_request' struct - the 'ussd_text' field. It represents the data either of an INVOKE component, either of a RETURN_RESULT component, encoded as ASCII in case if DCS is 0x0f (i.e. decoded by the code itself), otherwise raw bytes 'as is'. Previously, there was no possibility to distinguish between ASCII and raw bytes with different DCS. Moreover, the payload decoding is not desired in some cases. Let's introduce the new fields, which will carry the raw unmodified payload, its length and DCS (Data Coding Scheme). Change-Id: Ia193d175021e145bb3b131290231f307dbefc64a --- M TODO-RELEASE M include/osmocom/gsm/gsm0480.h M src/gsm/gsm0480.c 3 files changed, 32 insertions(+), 10 deletions(-) git pull ssh://gerrit.osmocom.org:29418/libosmocore refs/changes/25/7625/2 diff --git a/TODO-RELEASE b/TODO-RELEASE index 928b18d..16496d6 100644 --- a/TODO-RELEASE +++ b/TODO-RELEASE @@ -10,4 +10,6 @@ core msgb_queue_free() add inline func to msgb.h coding gsm0503_rach_ext-encode() add func to gsm0503_coding.h codec ecu.c / ecu.h implement ECU for FR (Error Concealment Unit) -fsm fsmc / fsm.h added callback for graceful exit => ABI changed \ No newline at end of file +fsm fsmc / fsm.h added callback for graceful exit => ABI changed +gsm gsm0480.c / gsm0480.h the 'ss_request' struct extended with ussd_data, + ussd_data_len, and ussd_data_dcs => ABI changed diff --git a/include/osmocom/gsm/gsm0480.h b/include/osmocom/gsm/gsm0480.h index 05c26df..b0b6aa2 100644 --- a/include/osmocom/gsm/gsm0480.h +++ b/include/osmocom/gsm/gsm0480.h @@ -67,6 +67,18 @@ uint8_t ussd_text[GSM0480_USSD_OCTET_STRING_LEN]; /** + * Represents the data of either an INVOKE, either + * a RETURN_RESULT component 'as is'. Useful when + * decoding is not supported or not desired. + * + * Shall be always followed by its length (in bytes) + * and DCS (Data Coding Scheme). + */ + uint8_t ussd_data[GSM0480_USSD_OCTET_STRING_LEN]; + uint8_t ussd_data_len; /* Length in bytes */ + uint8_t ussd_data_dcs; /* Data Coding Scheme */ + + /** * GSM TS 04.80, section 3.3 "Transaction identifier" * See GSM TS 04.07, section 11.2.3 for details. */ diff --git a/src/gsm/gsm0480.c b/src/gsm/gsm0480.c index 0072812..38082b3 100644 --- a/src/gsm/gsm0480.c +++ b/src/gsm/gsm0480.c @@ -557,6 +557,11 @@ memcpy(req->ussd_text, uss_req_data + 2, num_chars); + /* Copy the data 'as is' */ + memcpy(req->ussd_data, uss_req_data + 2, num_chars); + req->ussd_data_len = num_chars; + req->ussd_data_dcs = 0x00; + return 1; } @@ -580,6 +585,17 @@ /* Get DCS (Data Coding Scheme) */ dcs = uss_req_data[4]; + /* Get the amount of bytes */ + num_chars = uss_req_data[6]; + + /* Prevent a mobile-originated buffer-overrun! */ + if (num_chars > GSM0480_USSD_OCTET_STRING_LEN) + num_chars = GSM0480_USSD_OCTET_STRING_LEN; + + /* Copy the data 'as is' */ + memcpy(req->ussd_data, uss_req_data + 7, num_chars); + req->ussd_data_len = num_chars; + req->ussd_data_dcs = dcs; /** * According to GSM 04.08, 4.4.2 "ASN.1 data types": @@ -588,7 +604,7 @@ */ if (dcs == 0x0F) { /* Calculate the amount of 7-bit characters */ - num_chars = (uss_req_data[6] * 8) / 7; + num_chars = (num_chars * 8) / 7; /* Prevent a mobile-originated buffer-overrun! */ if (num_chars > GSM0480_USSD_7BIT_STRING_LEN) @@ -599,15 +615,7 @@ return 1; } else { - /* Get the amount of 8-bit characters */ - num_chars = uss_req_data[6]; - - /* Prevent a mobile-originated buffer-overrun! */ - if (num_chars > GSM0480_USSD_OCTET_STRING_LEN) - num_chars = GSM0480_USSD_OCTET_STRING_LEN; - memcpy(req->ussd_text, &(uss_req_data[7]), num_chars); - return 1; } -- To view, visit https://gerrit.osmocom.org/7625 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newpatchset Gerrit-Change-Id: Ia193d175021e145bb3b131290231f307dbefc64a Gerrit-PatchSet: 2 Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Owner: Vadim Yanitskiy Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Vadim Yanitskiy From gerrit-no-reply at lists.osmocom.org Wed Apr 4 13:24:19 2018 From: gerrit-no-reply at lists.osmocom.org (Vadim Yanitskiy) Date: Wed, 4 Apr 2018 13:24:19 +0000 Subject: [PATCH] libosmocore[master]: gsm0480: drop messages with incorrect data length In-Reply-To: References: Message-ID: Hello Jenkins Builder, I'd like you to reexamine a change. Please visit https://gerrit.osmocom.org/7630 to look at the new patch set (#2). gsm0480: drop messages with incorrect data length If either an INVOKE, either a RETURN_RESULT component has the data with incorrect length (see Annex A, 3GPP TS 04.80), the whole message is probably incorrect. Let's drop such messages instead of silent truncation. Change-Id: I2a169b0b84aa26ea2521edd55ff005c27ae6d808 --- M src/gsm/gsm0480.c 1 file changed, 12 insertions(+), 9 deletions(-) git pull ssh://gerrit.osmocom.org:29418/libosmocore refs/changes/30/7630/2 diff --git a/src/gsm/gsm0480.c b/src/gsm/gsm0480.c index 38082b3..636f267 100644 --- a/src/gsm/gsm0480.c +++ b/src/gsm/gsm0480.c @@ -552,8 +552,12 @@ if (num_chars > length - 2) return 0; - if (num_chars > GSM0480_USSD_OCTET_STRING_LEN) - num_chars = GSM0480_USSD_OCTET_STRING_LEN; + /* Drop messages with incorrect length */ + if (num_chars > GSM0480_USSD_OCTET_STRING_LEN) { + LOGP(DLGLOBAL, LOGL_ERROR, "Incorrect USS_DATA data length=%u, " + "dropping message", num_chars); + return 0; + } memcpy(req->ussd_text, uss_req_data + 2, num_chars); @@ -588,9 +592,12 @@ /* Get the amount of bytes */ num_chars = uss_req_data[6]; - /* Prevent a mobile-originated buffer-overrun! */ - if (num_chars > GSM0480_USSD_OCTET_STRING_LEN) - num_chars = GSM0480_USSD_OCTET_STRING_LEN; + /* Drop messages with incorrect length */ + if (num_chars > GSM0480_USSD_OCTET_STRING_LEN) { + LOGP(DLGLOBAL, LOGL_ERROR, "Incorrect USS_REQ data length=%u, " + "dropping message", num_chars); + return 0; + } /* Copy the data 'as is' */ memcpy(req->ussd_data, uss_req_data + 7, num_chars); @@ -605,10 +612,6 @@ if (dcs == 0x0F) { /* Calculate the amount of 7-bit characters */ num_chars = (num_chars * 8) / 7; - - /* Prevent a mobile-originated buffer-overrun! */ - if (num_chars > GSM0480_USSD_7BIT_STRING_LEN) - num_chars = GSM0480_USSD_7BIT_STRING_LEN; gsm_7bit_decode_n_ussd((char *)req->ussd_text, sizeof(req->ussd_text), &(uss_req_data[7]), num_chars); -- To view, visit https://gerrit.osmocom.org/7630 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newpatchset Gerrit-Change-Id: I2a169b0b84aa26ea2521edd55ff005c27ae6d808 Gerrit-PatchSet: 2 Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Owner: Vadim Yanitskiy Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder From gerrit-no-reply at lists.osmocom.org Wed Apr 4 13:25:28 2018 From: gerrit-no-reply at lists.osmocom.org (Vadim Yanitskiy) Date: Wed, 4 Apr 2018 13:25:28 +0000 Subject: libosmocore[master]: gsm0480: drop messages with incorrect data length In-Reply-To: References: Message-ID: Patch Set 1: > Pleased use a proper logging subsystem - if nothing else applies, > DLGLOBAL Done. Probably, we would need to also change the logging target for the whole GSM 04.80 code. -- To view, visit https://gerrit.osmocom.org/7630 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I2a169b0b84aa26ea2521edd55ff005c27ae6d808 Gerrit-PatchSet: 1 Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Owner: Vadim Yanitskiy Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Vadim Yanitskiy Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Wed Apr 4 13:25:49 2018 From: gerrit-no-reply at lists.osmocom.org (Vadim Yanitskiy) Date: Wed, 4 Apr 2018 13:25:49 +0000 Subject: libosmocore[master]: gsm0480: copy the raw USSD data, its DCS and length In-Reply-To: References: Message-ID: Patch Set 2: > NeedsmTODO-RELEASE as it breaks ABI Done. -- To view, visit https://gerrit.osmocom.org/7625 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Ia193d175021e145bb3b131290231f307dbefc64a Gerrit-PatchSet: 2 Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Owner: Vadim Yanitskiy Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Vadim Yanitskiy Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Wed Apr 4 13:27:04 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Wed, 4 Apr 2018 13:27:04 +0000 Subject: osmocom-bb[fixeria/trx]: trxcon/l1ctl.c: hexdump content of unhandled messages In-Reply-To: References: Message-ID: Patch Set 4: (1 comment) https://gerrit.osmocom.org/#/c/7414/4/src/host/trxcon/l1ctl.c File src/host/trxcon/l1ctl.c: Line 797: LOGP(DL1C, LOGL_ERROR, "Unknown MSG type %u: %s\n", l1h->msg_type, don't we have a value_string for this? -- To view, visit https://gerrit.osmocom.org/7414 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Iec8fc6d49d1e35fe101960dd969de559e37a6a75 Gerrit-PatchSet: 4 Gerrit-Project: osmocom-bb Gerrit-Branch: fixeria/trx Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Pau Espin Pedrol Gerrit-Reviewer: Vadim Yanitskiy Gerrit-HasComments: Yes From gerrit-no-reply at lists.osmocom.org Wed Apr 4 13:45:14 2018 From: gerrit-no-reply at lists.osmocom.org (Vadim Yanitskiy) Date: Wed, 4 Apr 2018 13:45:14 +0000 Subject: osmocom-bb[fixeria/trx]: trxcon/l1ctl.c: hexdump content of unhandled messages In-Reply-To: References: Message-ID: Patch Set 4: (1 comment) https://gerrit.osmocom.org/#/c/7414/4/src/host/trxcon/l1ctl.c File src/host/trxcon/l1ctl.c: Line 797: LOGP(DL1C, LOGL_ERROR, "Unknown MSG type %u: %s\n", l1h->msg_type, > don't we have a value_string for this? Not yet. There is: http://git.osmocom.org/osmocom-bb/tree/src/host/virt_phy/src/logging.c#n28 which I think a bit out of sync with the current enum. We can actualize and share it somehow. -- To view, visit https://gerrit.osmocom.org/7414 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Iec8fc6d49d1e35fe101960dd969de559e37a6a75 Gerrit-PatchSet: 4 Gerrit-Project: osmocom-bb Gerrit-Branch: fixeria/trx Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Pau Espin Pedrol Gerrit-Reviewer: Vadim Yanitskiy Gerrit-HasComments: Yes From gerrit-no-reply at lists.osmocom.org Wed Apr 4 14:36:05 2018 From: gerrit-no-reply at lists.osmocom.org (Holger Freyther) Date: Wed, 4 Apr 2018 14:36:05 +0000 Subject: [PATCH] osmo-gsm-tester[master]: ms: Create a cumulative distribution function class In-Reply-To: References: Message-ID: Hello Pau Espin Pedrol, Neels Hofmeyr, Harald Welte, Jenkins Builder, I'd like you to reexamine a change. Please visit https://gerrit.osmocom.org/6230 to look at the new patch set (#8). ms: Create a cumulative distribution function class We are using the CDF to decide which percentage of the jobs should be running at a given point. The x-axis is time and the y-axis the percentage of how many jobs should be running. There are three functions to do this. The first one is a constant which would result in everything being started right now, one to start them linearly and the last (formula from Qt/3rdparty) to first accelerate and decelerate slowly. Change-Id: I9e3064f4c3c4c7af5d3491f850090516e541f4d3 --- A selftest/cdf_test.ok A selftest/cdf_test.py A src/osmo_ms_driver/__init__.py A src/osmo_ms_driver/cdf.py 4 files changed, 259 insertions(+), 0 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-gsm-tester refs/changes/30/6230/8 diff --git a/selftest/cdf_test.ok b/selftest/cdf_test.ok new file mode 100644 index 0000000..aa753e4 --- /dev/null +++ b/selftest/cdf_test.ok @@ -0,0 +1,57 @@ +Testing the immediate CDF +Done True +1 1.0 False +Testing linear with duration +Done False +0.0 0.0 True +Done False +0.2 0.2 True +Done False +0.4 0.4 True +Done False +0.6 0.6 True +Done False +0.8 0.8 True +Done True +1.0 1.0 True +Testing linear with duration scaled +Done False +0.0 0.0 True +0.0 0.0 True +Done False +0.2 0.2 True +200 200 True +Done False +0.4 0.4 True +400 400 True +Done False +0.6 0.6 True +600 600 True +Done False +0.8 0.8 True +800 800 True +Done True +1.0 1.0 True +100 100 True +Testing in_out +0.5 0.5 True +0.87 0.87 True +0.9 0.9 True +0.95 0.95 True +1.0 1.0 True +Testing ease In and Out +Done False +0.0 0.0 True +0.0 0.0 True +Done False +5.0 5.0 True +0.1 0.1 True +Done False +10.0 10.0 True +0.5 0.5 True +Done False +15.0 15.0 True +0.8 0.8 True +Done True +20.0 20 True +1.0 1.0 True diff --git a/selftest/cdf_test.py b/selftest/cdf_test.py new file mode 100755 index 0000000..8d837c1 --- /dev/null +++ b/selftest/cdf_test.py @@ -0,0 +1,75 @@ +#!/usr/bin/env python3 + +import _prep + +from osmo_ms_driver import cdf +from datetime import timedelta + +def print_fuzzy_compare(want, expe, len=3): + want_str = str(want)[0:len] + expe_str = str(expe)[0:len] + print(want_str, expe_str, want_str == expe_str) + + +def check_steps(a, steps, fun): + print("Done", a.is_done()) + for step in steps: + # Verify we can step + + # Compare and step once + fun(a, step) + if a.is_done(): + break + a.step_once() + print("Done", a.is_done()) + +def compare_value(a, step): + print_fuzzy_compare(a.current_value(), step) + +def compare_scaled_value(a, val): + (step, scale) = val + print_fuzzy_compare(a.current_value(), step) + print_fuzzy_compare(a.current_scaled_value(), scale) + +def compare_x_value(a, val): + (x, step) = val + print(a._x, x, x == a._x) + print_fuzzy_compare(a.current_value(), step) + +def testImmediate(): + print("Testing the immediate CDF") + a = cdf.immediate() + print("Done", a.is_done()) + print_fuzzy_compare(a.current_value(), 1.0) + + +def testLinearWithDuration(): + print("Testing linear with duration") + a = cdf.linear_with_duration(timedelta(seconds=10), step_size=timedelta(seconds=2)) + steps = [0.0, 0.2, 0.4, 0.6, 0.8, 1.0] + check_steps(a, steps, compare_value) + + print("Testing linear with duration scaled") + a = cdf.linear_with_duration(timedelta(seconds=10), step_size=timedelta(seconds=2)) + a.set_target(1000) + steps = [(0.0, 0.0), (0.2, 200), (0.4, 400), (0.6, 600), (0.8, 800), (1.0, 10000)] + check_steps(a, steps, compare_scaled_value) + +def testInOut(): + print("Testing in_out") + print_fuzzy_compare(cdf._in_out(0.5), 0.5, 3) + print_fuzzy_compare(cdf._in_out(0.75), 0.875, 4) + print_fuzzy_compare(cdf._in_out(0.8), 0.92, 3) + print_fuzzy_compare(cdf._in_out(0.85), 0.955, 4) + print_fuzzy_compare(cdf._in_out(1.0), 1.0, 3) + +def testEaseInOutDuration(): + print("Testing ease In and Out") + a = cdf.ease_in_out_duration(duration=timedelta(seconds=20), step_size=timedelta(seconds=5)) + steps = [(0.0, 0.0), (5.0, 0.125), (10.0, 0.5), (15.0, 0.875), (20, 1.0)] + check_steps(a, steps, compare_x_value) + +testImmediate() +testLinearWithDuration() +testInOut() +testEaseInOutDuration() diff --git a/src/osmo_ms_driver/__init__.py b/src/osmo_ms_driver/__init__.py new file mode 100644 index 0000000..0c7b4b9 --- /dev/null +++ b/src/osmo_ms_driver/__init__.py @@ -0,0 +1,22 @@ +# osmo_ms_driver: automated cellular network tests +# +# Copyright (C) 2018 by sysmocom - s.f.m.c. GmbH +# +# Authors: Holger Hans Peter Freyther +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +from osmo_gsm_tester import __version__ + +# vim: expandtab tabstop=4 shiftwidth=4 diff --git a/src/osmo_ms_driver/cdf.py b/src/osmo_ms_driver/cdf.py new file mode 100644 index 0000000..781349b --- /dev/null +++ b/src/osmo_ms_driver/cdf.py @@ -0,0 +1,105 @@ +# osmo_ms_driver: A cumululative distribution function class. +# Help to start processes over time. +# +# Copyright (C) 2018 by Holger Hans Peter Freyther +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + + +from datetime import timedelta + +class DistributionFunctionHandler(object): + """ + The goal is to start n "mobile" processes. We like to see some + conflicts (RACH bursts being ignored) but starting n processes + at the same time is not a realistic model. + We use the concept of cumulative distribution function here. On + the x-axis we have time (maybe in steps of 10ms) and on the + y-axis we have the percentage (from 0.0 to 1.0) of how many + processes should run at the given time. + """ + + def __init__(self, step, duration, fun): + self._step = step + self._fun = fun + self._x = 0.0 + self._y = self._fun(self._x) + self._target = 1.0 + self._duration = duration + + def step_size(self): + return self._step + + def set_target(self, scale): + """ + Scale the percentage to the target value.. + """ + self._target = scale + + def is_done(self): + return self._y >= 1.0 + + def current_value(self): + return self._y + + def current_scaled_value(self): + return self._y * self._target + + def step_once(self): + self._x = self._x + self._step.total_seconds() + self._y = self._fun(self._x) + + def duration(self): + return self._duration + + +def immediate(step_size=timedelta(milliseconds=20)): + """ + Reaches 100% at the first step. + """ + duration = timedelta(seconds=0) + return DistributionFunctionHandler(step_size, duration, lambda x: 1) + +def linear_with_slope(slope, duration, step_size=timedelta(milliseconds=20)): + """ + Use the slope and step size you want + """ + return DistributionFunctionHandler(step_size, duration, lambda x: slope*x) + +def linear_with_duration(duration, step_size=timedelta(milliseconds=20)): + """ + Linear progression that reaches 100% after duration.total_seconds() + """ + slope = 1.0/duration.total_seconds() + return linear_with_slope(slope, duration, step_size) + +def _in_out(x): + """ + Internal in/out function inspired by Qt + """ + assert x <= 1.0 + # Needs to be between 0..1 and increase first + if x < 0.5: + return (x*x) * 2 + # deaccelerate now. in_out(0.5) == 0.5, in_out(1.0) == 1.0 + x = x * 2 - 1 + return -0.5 * (x*(x-2)- 1) + +def ease_in_out_duration(duration, step_size=timedelta(milliseconds=20)): + """ + Example invocation + """ + scale = 1.0/duration.total_seconds() + return DistributionFunctionHandler(step_size, duration, + lambda x: _in_out(x*scale)) -- To view, visit https://gerrit.osmocom.org/6230 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newpatchset Gerrit-Change-Id: I9e3064f4c3c4c7af5d3491f850090516e541f4d3 Gerrit-PatchSet: 8 Gerrit-Project: osmo-gsm-tester Gerrit-Branch: master Gerrit-Owner: Holger Freyther Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Holger Freyther Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Neels Hofmeyr Gerrit-Reviewer: Pau Espin Pedrol Gerrit-Reviewer: Vadim Yanitskiy From jenkins at lists.osmocom.org Wed Apr 4 15:10:06 2018 From: jenkins at lists.osmocom.org (jenkins at lists.osmocom.org) Date: Wed, 4 Apr 2018 15:10:06 +0000 (UTC) Subject: =?UTF-8?Q?Build_failed_in_Jenkins:_master-asn1c_=C2=BB_a1=3Ddefaul?= =?UTF-8?Q?t,a2=3Ddefault,a3=3Ddefault,osmocom-master-debian9_#77?= In-Reply-To: <981253031.250.1522768206353.JavaMail.jenkins@jenkins.osmocom.org> References: <981253031.250.1522768206353.JavaMail.jenkins@jenkins.osmocom.org> Message-ID: <867567398.17.1522854606573.JavaMail.jenkins@jenkins.osmocom.org> See ------------------------------------------ [...truncated 3.76 KB...] checking build system type... x86_64-unknown-linux-gnu checking host system type... x86_64-unknown-linux-gnu checking target system type... x86_64-unknown-linux-gnu checking for a BSD-compatible install... /usr/bin/install -c checking whether build environment is sane... yes checking for gawk... gawk checking whether make sets $(MAKE)... yes checking whether to enable maintainer-specific portions of Makefiles... no checking for style of include used by make... GNU checking for gcc... gcc checking for C compiler default output file name... a.out checking whether the C compiler works... yes checking whether we are cross compiling... no checking for suffix of executables... checking for suffix of object files... o checking whether we are using the GNU C compiler... yes checking whether gcc accepts -g... yes checking for gcc option to accept ISO C89... none needed checking dependency style of gcc... gcc3 checking for a sed that does not truncate output... /bin/sed checking for grep that handles long lines and -e... /bin/grep checking for egrep... /bin/grep -E checking for ld used by gcc... /usr/bin/ld checking if the linker (/usr/bin/ld) is GNU ld... yes checking for /usr/bin/ld option to reload object files... -r checking for BSD-compatible nm... /usr/bin/nm -B checking whether ln -s works... yes checking how to recognise dependent libraries... pass_all checking how to run the C preprocessor... gcc -E checking for ANSI C header files... yes checking for sys/types.h... yes checking for sys/stat.h... yes checking for stdlib.h... yes checking for string.h... yes checking for memory.h... yes checking for strings.h... yes checking for inttypes.h... yes checking for stdint.h... yes checking for unistd.h... yes checking dlfcn.h usability... yes checking dlfcn.h presence... yes checking for dlfcn.h... yes checking for g++... g++ checking whether we are using the GNU C++ compiler... yes checking whether g++ accepts -g... yes checking dependency style of g++... gcc3 checking how to run the C++ preprocessor... g++ -E checking for g77... no checking for f77... no checking for xlf... no checking for frt... no checking for pgf77... no checking for cf77... no checking for fort77... no checking for fl32... no checking for af77... no checking for f90... no checking for xlf90... no checking for pgf90... no checking for pghpf... no checking for epcf90... no checking for gfortran... no checking for g95... no checking for f95... no checking for fort... no checking for xlf95... no checking for ifort... no checking for ifc... no checking for efc... no checking for pgf95... no checking for lf95... no checking for ftn... no checking whether we are using the GNU Fortran 77 compiler... no checking whether accepts -g... no checking the maximum length of command line arguments... 32768 checking command to parse /usr/bin/nm -B output from gcc object... ok checking for objdir... .libs checking for ar... ar checking for ranlib... ranlib checking for strip... strip checking if gcc supports -fno-rtti -fno-exceptions... no checking for gcc option to produce PIC... -fPIC checking if gcc PIC flag -fPIC works... yes checking if gcc static flag -static works... yes checking if gcc supports -c -o file.o... yes checking whether the gcc linker (/usr/bin/ld -m elf_x86_64) supports shared libraries... yes checking whether -lc should be explicitly linked in... no checking dynamic linker characteristics... GNU/Linux ld.so checking how to hardcode library paths into programs... immediate checking whether stripping libraries is possible... yes checking if libtool supports shared libraries... yes checking whether to build shared libraries... yes checking whether to build static libraries... yes configure: creating libtool appending configuration tag "CXX" to libtool checking for ld used by g++... /usr/bin/ld -m elf_x86_64 checking if the linker (/usr/bin/ld -m elf_x86_64) is GNU ld... yes checking whether the g++ linker (/usr/bin/ld -m elf_x86_64) supports shared libraries... yes checking for g++ option to produce PIC... -fPIC checking if g++ PIC flag -fPIC works... yes checking if g++ static flag -static works... yes checking if g++ supports -c -o file.o... yes checking whether the g++ linker (/usr/bin/ld -m elf_x86_64) supports shared libraries... yes checking dynamic linker characteristics... GNU/Linux ld.so checking how to hardcode library paths into programs... immediate appending configuration tag "F77" to libtool checking for autoconf... /usr/bin/autoconf checking for autoheader... /usr/bin/autoheader checking for gcc... (cached) gcc checking whether we are using the GNU C compiler... (cached) yes checking whether gcc accepts -g... (cached) yes checking for gcc option to accept ISO C89... (cached) none needed checking dependency style of gcc... (cached) gcc3 checking how to run the C preprocessor... gcc -E checking for a BSD-compatible install... /usr/bin/install -c checking whether ln -s works... yes checking whether make sets $(MAKE)... (cached) yes checking for bison... bison -y checking for flex... flex checking for yywrap in -lfl... yes checking lex output file root... lex.yy checking whether yytext is a pointer... yes checking for ar... /usr/bin/ar checking for ANSI C header files... (cached) yes checking sys/param.h usability... yes checking sys/param.h presence... yes checking for sys/param.h... yes checking whether byte ordering is bigendian... no checking for off_t... yes checking for size_t... yes checking whether struct tm is in sys/time.h or time.h... time.h checking for intmax_t... yes checking for library containing getopt... none required checking for strtoimax... yes checking for strtoll... yes checking for mergesort... no checking for mkstemps... yes configure: creating ./config.status config.status: creating skeletons/standard-modules/Makefile config.status: creating skeletons/tests/Makefile config.status: creating libasn1compiler/Makefile config.status: creating libasn1parser/Makefile config.status: creating libasn1print/Makefile config.status: creating asn1c/webcgi/Makefile config.status: creating asn1c/tests/Makefile config.status: creating libasn1fix/Makefile config.status: creating skeletons/Makefile config.status: creating examples/Makefile config.status: creating tests/Makefile config.status: creating asn1c/Makefile config.status: creating doc/Makefile config.status: creating asn1c.spec config.status: creating Makefile config.status: creating config.h config.status: executing depfiles commands + make -j 8 make all-recursive make[1]: Entering directory ' Making all in libasn1parser make[2]: Entering directory ' if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1parser.lo -MD -MP -MF ".deps/asn1parser.Tpo" -c -o asn1parser.lo asn1parser.c; \ then mv -f ".deps/asn1parser.Tpo" ".deps/asn1parser.Plo"; else rm -f ".deps/asn1parser.Tpo"; exit 1; fi bison -y -p asn1p_ -d asn1p_y.y if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_l.lo -MD -MP -MF ".deps/asn1p_l.Tpo" -c -o asn1p_l.lo asn1p_l.c; \ then mv -f ".deps/asn1p_l.Tpo" ".deps/asn1p_l.Plo"; else rm -f ".deps/asn1p_l.Tpo"; exit 1; fi if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_module.lo -MD -MP -MF ".deps/asn1p_module.Tpo" -c -o asn1p_module.lo asn1p_module.c; \ then mv -f ".deps/asn1p_module.Tpo" ".deps/asn1p_module.Plo"; else rm -f ".deps/asn1p_module.Tpo"; exit 1; fi if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_oid.lo -MD -MP -MF ".deps/asn1p_oid.Tpo" -c -o asn1p_oid.lo asn1p_oid.c; \ then mv -f ".deps/asn1p_oid.Tpo" ".deps/asn1p_oid.Plo"; else rm -f ".deps/asn1p_oid.Tpo"; exit 1; fi if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_value.lo -MD -MP -MF ".deps/asn1p_value.Tpo" -c -o asn1p_value.lo asn1p_value.c; \ then mv -f ".deps/asn1p_value.Tpo" ".deps/asn1p_value.Plo"; else rm -f ".deps/asn1p_value.Tpo"; exit 1; fi if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_expr.lo -MD -MP -MF ".deps/asn1p_expr.Tpo" -c -o asn1p_expr.lo asn1p_expr.c; \ then mv -f ".deps/asn1p_expr.Tpo" ".deps/asn1p_expr.Plo"; else rm -f ".deps/asn1p_expr.Tpo"; exit 1; fi if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_xports.lo -MD -MP -MF ".deps/asn1p_xports.Tpo" -c -o asn1p_xports.lo asn1p_xports.c; \ then mv -f ".deps/asn1p_xports.Tpo" ".deps/asn1p_xports.Plo"; else rm -f ".deps/asn1p_xports.Tpo"; exit 1; fi asn1p_y.y: warning: 2 shift/reduce conflicts [-Wconflicts-sr] mkdir .libs mkdir .libs mkdir: cannot create directory '.libs': File exists gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_expr.lo -MD -MP -MF .deps/asn1p_expr.Tpo -c asn1p_expr.c -fPIC -DPIC -o .libs/asn1p_expr.o gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_oid.lo -MD -MP -MF .deps/asn1p_oid.Tpo -c asn1p_oid.c -fPIC -DPIC -o .libs/asn1p_oid.o gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1parser.lo -MD -MP -MF .deps/asn1parser.Tpo -c asn1parser.c -fPIC -DPIC -o .libs/asn1parser.o gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_module.lo -MD -MP -MF .deps/asn1p_module.Tpo -c asn1p_module.c -fPIC -DPIC -o .libs/asn1p_module.o gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_value.lo -MD -MP -MF .deps/asn1p_value.Tpo -c asn1p_value.c -fPIC -DPIC -o .libs/asn1p_value.o gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_l.lo -MD -MP -MF .deps/asn1p_l.Tpo -c asn1p_l.c -fPIC -DPIC -o .libs/asn1p_l.o gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_xports.lo -MD -MP -MF .deps/asn1p_xports.Tpo -c asn1p_xports.c -fPIC -DPIC -o .libs/asn1p_xports.o gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_module.lo -MD -MP -MF .deps/asn1p_module.Tpo -c asn1p_module.c -o asn1p_module.o >/dev/null 2>&1 gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_xports.lo -MD -MP -MF .deps/asn1p_xports.Tpo -c asn1p_xports.c -o asn1p_xports.o >/dev/null 2>&1 gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_oid.lo -MD -MP -MF .deps/asn1p_oid.Tpo -c asn1p_oid.c -o asn1p_oid.o >/dev/null 2>&1 gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1parser.lo -MD -MP -MF .deps/asn1parser.Tpo -c asn1parser.c -o asn1parser.o >/dev/null 2>&1 asn1p_l.c:3521:12: warning: 'input' defined but not used [-Wunused-function] static int input() ^~~~~ gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_value.lo -MD -MP -MF .deps/asn1p_value.Tpo -c asn1p_value.c -o asn1p_value.o >/dev/null 2>&1 if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_constr.lo -MD -MP -MF ".deps/asn1p_constr.Tpo" -c -o asn1p_constr.lo asn1p_constr.c; \ then mv -f ".deps/asn1p_constr.Tpo" ".deps/asn1p_constr.Plo"; else rm -f ".deps/asn1p_constr.Tpo"; exit 1; fi gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_expr.lo -MD -MP -MF .deps/asn1p_expr.Tpo -c asn1p_expr.c -o asn1p_expr.o >/dev/null 2>&1 if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_param.lo -MD -MP -MF ".deps/asn1p_param.Tpo" -c -o asn1p_param.lo asn1p_param.c; \ then mv -f ".deps/asn1p_param.Tpo" ".deps/asn1p_param.Plo"; else rm -f ".deps/asn1p_param.Tpo"; exit 1; fi if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_class.lo -MD -MP -MF ".deps/asn1p_class.Tpo" -c -o asn1p_class.lo asn1p_class.c; \ then mv -f ".deps/asn1p_class.Tpo" ".deps/asn1p_class.Plo"; else rm -f ".deps/asn1p_class.Tpo"; exit 1; fi if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_ref.lo -MD -MP -MF ".deps/asn1p_ref.Tpo" -c -o asn1p_ref.lo asn1p_ref.c; \ then mv -f ".deps/asn1p_ref.Tpo" ".deps/asn1p_ref.Plo"; else rm -f ".deps/asn1p_ref.Tpo"; exit 1; fi gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_constr.lo -MD -MP -MF .deps/asn1p_constr.Tpo -c asn1p_constr.c -fPIC -DPIC -o .libs/asn1p_constr.o gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_param.lo -MD -MP -MF .deps/asn1p_param.Tpo -c asn1p_param.c -fPIC -DPIC -o .libs/asn1p_param.o gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_class.lo -MD -MP -MF .deps/asn1p_class.Tpo -c asn1p_class.c -fPIC -DPIC -o .libs/asn1p_class.o gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_ref.lo -MD -MP -MF .deps/asn1p_ref.Tpo -c asn1p_ref.c -fPIC -DPIC -o .libs/asn1p_ref.o if test -f y.tab.h; then \ to=`echo "asn1p_y_H" | sed \ -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/' \ -e 's/[^ABCDEFGHIJKLMNOPQRSTUVWXYZ]/_/g'`; \ sed -e "/^#/!b" -e "s/Y_TAB_H/$to/g" -e "s|y\.tab\.h|asn1p_y.h|" \ y.tab.h >asn1p_y.ht; \ rm -f y.tab.h; \ if cmp -s asn1p_y.ht asn1p_y.h; then \ rm -f asn1p_y.ht ;\ else \ mv asn1p_y.ht asn1p_y.h; \ fi; \ fi if test -f y.output; then \ mv y.output asn1p_y.output; \ fi sed '/^#/ s|y\.tab\.c|asn1p_y.c|' y.tab.c >asn1p_y.ct && mv asn1p_y.ct asn1p_y.c rm -f y.tab.c if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_y.lo -MD -MP -MF ".deps/asn1p_y.Tpo" -c -o asn1p_y.lo asn1p_y.c; \ then mv -f ".deps/asn1p_y.Tpo" ".deps/asn1p_y.Plo"; else rm -f ".deps/asn1p_y.Tpo"; exit 1; fi gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_param.lo -MD -MP -MF .deps/asn1p_param.Tpo -c asn1p_param.c -o asn1p_param.o >/dev/null 2>&1 gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_constr.lo -MD -MP -MF .deps/asn1p_constr.Tpo -c asn1p_constr.c -o asn1p_constr.o >/dev/null 2>&1 gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_ref.lo -MD -MP -MF .deps/asn1p_ref.Tpo -c asn1p_ref.c -o asn1p_ref.o >/dev/null 2>&1 gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_class.lo -MD -MP -MF .deps/asn1p_class.Tpo -c asn1p_class.c -o asn1p_class.o >/dev/null 2>&1 gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_y.lo -MD -MP -MF .deps/asn1p_y.Tpo -c asn1p_y.c -fPIC -DPIC -o .libs/asn1p_y.o asn1p_y.y: In function 'asn1p_parse': asn1p_y.y:357:13: error: 'param' undeclared (first use in this function) *(void **)param = $1; ^~~~~ asn1p_y.y:357:13: note: each undeclared identifier is reported only once for each function it appears in gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_l.lo -MD -MP -MF .deps/asn1p_l.Tpo -c asn1p_l.c -o asn1p_l.o >/dev/null 2>&1 Makefile:299: recipe for target 'asn1p_y.lo' failed make[2]: *** [asn1p_y.lo] Error 1 make[2]: *** Waiting for unfinished jobs.... make[2]: Leaving directory ' Makefile:302: recipe for target 'all-recursive' failed make[1]: *** [all-recursive] Error 1 make[1]: Leaving directory ' Makefile:212: recipe for target 'all' failed make: *** [all] Error 2 Build step 'Execute shell' marked build as failure [WARNINGS]Skipping publisher since build result is FAILURE From gerrit-no-reply at lists.osmocom.org Wed Apr 4 15:53:17 2018 From: gerrit-no-reply at lists.osmocom.org (Neels Hofmeyr) Date: Wed, 4 Apr 2018 15:53:17 +0000 Subject: [PATCH] osmo-bts[master]: use osmo_init_logging2() with proper talloc ctx In-Reply-To: References: Message-ID: Hello Jenkins Builder, I'd like you to reexamine a change. Please visit https://gerrit.osmocom.org/7603 to look at the new patch set (#2). use osmo_init_logging2() with proper talloc ctx Completely drop bts_log_init(), call osmo_init_logging2() directly instead: all callers of bts_log_init() passed NULL as category string, so all it ever did was call osmo_init_logging(). The bts_log_info is already declared in the .h. Here and there also define a proper talloc root context instead of using NULL. Change-Id: Ic049f77bef74123b95350bcae182a468e0086b9c --- M doc/startup.txt M include/osmo-bts/logging.h M src/common/logging.c M src/common/main.c M src/osmo-bts-litecell15/misc/lc15bts_mgr.c M src/osmo-bts-omldummy/main.c M src/osmo-bts-sysmo/l1_fwd_main.c M src/osmo-bts-sysmo/misc/sysmobts_mgr.c M tests/agch/agch_test.c M tests/cipher/cipher_test.c M tests/handover/handover_test.c M tests/meas/meas_test.c M tests/misc/misc_test.c M tests/paging/paging_test.c M tests/tx_power/tx_power_test.c 15 files changed, 22 insertions(+), 40 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-bts refs/changes/03/7603/2 diff --git a/doc/startup.txt b/doc/startup.txt index cc64375..50766e4 100644 --- a/doc/startup.txt +++ b/doc/startup.txt @@ -6,7 +6,7 @@ |=== | bts-specific | main() | | common | bts_main() | initialization of talloc contexts -| common | bts_log_init() | initialization of logging +| common | osmo_init_logging2() | initialization of logging | common | handle_options() | common option parsing | bts-specific | bts_model_handle_options() | model-specific option parsing | common | gsm_bts_alloc() | allocation of BTS/TRX/TS data structures diff --git a/include/osmo-bts/logging.h b/include/osmo-bts/logging.h index 68f379c..852c383 100644 --- a/include/osmo-bts/logging.h +++ b/include/osmo-bts/logging.h @@ -25,8 +25,6 @@ extern const struct log_info bts_log_info; -int bts_log_init(const char *category_mask); - /* LOGP with gsm_time prefix */ #define LOGPGT(ss, lvl, gt, fmt, args...) \ LOGP(ss, lvl, "%s " fmt, osmo_dump_gsmtime(gt), ## args) diff --git a/src/common/logging.c b/src/common/logging.c index a4d30e6..3315a01 100644 --- a/src/common/logging.c +++ b/src/common/logging.c @@ -148,13 +148,3 @@ .cat = bts_log_info_cat, .num_cat = ARRAY_SIZE(bts_log_info_cat), }; - -int bts_log_init(const char *category_mask) -{ - osmo_init_logging(&bts_log_info); - - if (category_mask) - log_parse_category_mask(osmo_stderr_target, category_mask); - - return 0; -} diff --git a/src/common/main.c b/src/common/main.c index 0f6f529..9121a2a 100644 --- a/src/common/main.c +++ b/src/common/main.c @@ -239,7 +239,7 @@ msgb_talloc_ctx_init(tall_bts_ctx, 100*1024); bts_vty_info.tall_ctx = tall_bts_ctx; - bts_log_init(NULL); + osmo_init_logging2(tall_bts_ctx, &bts_log_info); vty_init(&bts_vty_info); ctrl_vty_init(tall_bts_ctx); rate_ctr_init(tall_bts_ctx); diff --git a/src/osmo-bts-litecell15/misc/lc15bts_mgr.c b/src/osmo-bts-litecell15/misc/lc15bts_mgr.c index 7886a5e..dbdcc9f 100644 --- a/src/osmo-bts-litecell15/misc/lc15bts_mgr.c +++ b/src/osmo-bts-litecell15/misc/lc15bts_mgr.c @@ -281,12 +281,6 @@ .num_cat = ARRAY_SIZE(mgr_log_info_cat), }; -static int mgr_log_init(void) -{ - osmo_init_logging(&mgr_log_info); - return 0; -} - int main(int argc, char **argv) { int rc; @@ -294,7 +288,7 @@ tall_mgr_ctx = talloc_named_const(NULL, 1, "bts manager"); msgb_talloc_ctx_init(tall_mgr_ctx, 0); - mgr_log_init(); + osmo_init_logging2(tall_mgr_ctx, &mgr_log_info); osmo_init_ignore_signals(); signal(SIGINT, &signal_handler); diff --git a/src/osmo-bts-omldummy/main.c b/src/osmo-bts-omldummy/main.c index 39f2ac2..ef94553 100644 --- a/src/osmo-bts-omldummy/main.c +++ b/src/osmo-bts-omldummy/main.c @@ -19,7 +19,7 @@ tall_bts_ctx = talloc_named_const(NULL, 1, "OsmoBTS context"); msgb_talloc_ctx_init(tall_bts_ctx, 10*1024); - bts_log_init(NULL); + osmo_init_logging2(tall_bts_ctx, &bts_log_info); bts = gsm_bts_alloc(tall_bts_ctx, 0); if (!bts) diff --git a/src/osmo-bts-sysmo/l1_fwd_main.c b/src/osmo-bts-sysmo/l1_fwd_main.c index 92d2ea4..4268629 100644 --- a/src/osmo-bts-sysmo/l1_fwd_main.c +++ b/src/osmo-bts-sysmo/l1_fwd_main.c @@ -169,11 +169,12 @@ struct l1fwd_hdl *l1fh; struct femtol1_hdl *fl1h; int rc, i; + void *ctx = talloc_named_const(NULL, 0, "l1_fwd"); printf("sizeof(GsmL1_Prim_t) = %zu\n", sizeof(GsmL1_Prim_t)); printf("sizeof(SuperFemto_Prim_t) = %zu\n", sizeof(SuperFemto_Prim_t)); - bts_log_init(NULL); + osmo_init_logging2(ctx, bts_log_info); /* * hack and prevent that two l1fwd-proxy/sysmobts run at the same @@ -187,7 +188,7 @@ } /* allocate new femtol1_handle */ - fl1h = talloc_zero(NULL, struct femtol1_hdl); + fl1h = talloc_zero(ctx, struct femtol1_hdl); INIT_LLIST_HEAD(&fl1h->wlc_list); /* open the actual hardware transport */ @@ -198,7 +199,7 @@ } /* create our fwd handle */ - l1fh = talloc_zero(NULL, struct l1fwd_hdl); + l1fh = talloc_zero(ctx, struct l1fwd_hdl); l1fh->fl1h = fl1h; fl1h->priv = l1fh; diff --git a/src/osmo-bts-sysmo/misc/sysmobts_mgr.c b/src/osmo-bts-sysmo/misc/sysmobts_mgr.c index 17a6d89..a008073 100644 --- a/src/osmo-bts-sysmo/misc/sysmobts_mgr.c +++ b/src/osmo-bts-sysmo/misc/sysmobts_mgr.c @@ -245,12 +245,6 @@ .num_cat = ARRAY_SIZE(mgr_log_info_cat), }; -static int mgr_log_init(void) -{ - osmo_init_logging(&mgr_log_info); - return 0; -} - int main(int argc, char **argv) { int rc; @@ -261,7 +255,7 @@ srand(time(NULL)); - mgr_log_init(); + osmo_init_logging2(tall_mgr_ctx, &mgr_log_info); if (classify_bts() != 0) exit(2); diff --git a/tests/agch/agch_test.c b/tests/agch/agch_test.c index 6efbc24..ab59ebf 100644 --- a/tests/agch/agch_test.c +++ b/tests/agch/agch_test.c @@ -222,7 +222,7 @@ tall_bts_ctx = talloc_named_const(NULL, 1, "OsmoBTS context"); msgb_talloc_ctx_init(tall_bts_ctx, 0); - bts_log_init(NULL); + osmo_init_logging2(tall_bts_ctx, &bts_log_info); bts = gsm_bts_alloc(tall_bts_ctx, 0); if (bts_init(bts) < 0) { diff --git a/tests/cipher/cipher_test.c b/tests/cipher/cipher_test.c index 5e2bdc0..a7343c0 100644 --- a/tests/cipher/cipher_test.c +++ b/tests/cipher/cipher_test.c @@ -68,7 +68,7 @@ tall_bts_ctx = talloc_named_const(NULL, 1, "OsmoBTS context"); msgb_talloc_ctx_init(tall_bts_ctx, 0); - bts_log_init(NULL); + osmo_init_logging2(tall_bts_ctx, &bts_log_info); bts = gsm_bts_alloc(tall_bts_ctx, 0); if (bts_init(bts) < 0) { diff --git a/tests/handover/handover_test.c b/tests/handover/handover_test.c index 1c0a4da..c7bd8f8 100644 --- a/tests/handover/handover_test.c +++ b/tests/handover/handover_test.c @@ -67,7 +67,7 @@ tall_bts_ctx = talloc_named_const(NULL, 1, "OsmoBTS context"); msgb_talloc_ctx_init(tall_bts_ctx, 0); - bts_log_init(NULL); + osmo_init_logging2(tall_bts_ctx, &bts_log_info); osmo_stderr_target->categories[DHO].loglevel = LOGL_DEBUG; bts = gsm_bts_alloc(tall_bts_ctx, 0); diff --git a/tests/meas/meas_test.c b/tests/meas/meas_test.c index a283c47..cbc673f 100644 --- a/tests/meas/meas_test.c +++ b/tests/meas/meas_test.c @@ -69,7 +69,7 @@ tall_bts_ctx = talloc_named_const(NULL, 1, "OsmoBTS context"); msgb_talloc_ctx_init(tall_bts_ctx, 0); - bts_log_init(NULL); + osmo_init_logging2(tall_bts_ctx, &bts_log_info); osmo_stderr_target->categories[DMEAS].loglevel = LOGL_DEBUG; bts = gsm_bts_alloc(tall_bts_ctx, 0); diff --git a/tests/misc/misc_test.c b/tests/misc/misc_test.c index e454235..c4d3a59 100644 --- a/tests/misc/misc_test.c +++ b/tests/misc/misc_test.c @@ -24,10 +24,13 @@ #include #include +#include #include #include #include + +void *ctx = NULL; static const uint8_t ipa_rsl_connect[] = { 0x00, 0x1c, 0xff, 0x10, 0x80, 0x00, 0x0a, 0x0d, @@ -161,7 +164,7 @@ { struct gsm_bts *bts; - bts = gsm_bts_alloc(NULL, 0); + bts = gsm_bts_alloc(ctx, 0); gsm_bts_set_feature(bts, BTS_FEAT_SPEECH_F_V1); gsm_bts_set_feature(bts, BTS_FEAT_SPEECH_H_V1); @@ -184,7 +187,9 @@ int main(int argc, char **argv) { - bts_log_init(NULL); + ctx = talloc_named_const(NULL, 0, "misc_test"); + + osmo_init_logging2(ctx, &bts_log_info); test_sacch_get(); test_msg_utils_ipa(); diff --git a/tests/paging/paging_test.c b/tests/paging/paging_test.c index f4f0934..bf28661 100644 --- a/tests/paging/paging_test.c +++ b/tests/paging/paging_test.c @@ -114,7 +114,7 @@ tall_bts_ctx = talloc_named_const(NULL, 1, "OsmoBTS context"); msgb_talloc_ctx_init(tall_bts_ctx, 0); - bts_log_init(NULL); + osmo_init_logging2(tall_bts_ctx, &bts_log_info); bts = gsm_bts_alloc(tall_bts_ctx, 0); if (bts_init(bts) < 0) { diff --git a/tests/tx_power/tx_power_test.c b/tests/tx_power/tx_power_test.c index a47d186..ad3f68c 100644 --- a/tests/tx_power/tx_power_test.c +++ b/tests/tx_power/tx_power_test.c @@ -211,7 +211,7 @@ tall_bts_ctx = talloc_named_const(NULL, 1, "OsmoBTS context"); msgb_talloc_ctx_init(tall_bts_ctx, 0); - bts_log_init(NULL); + osmo_init_logging2(tall_bts_ctx, &bts_log_info); osmo_stderr_target->categories[DL1C].loglevel = LOGL_DEBUG; log_set_print_filename(osmo_stderr_target, 0); -- To view, visit https://gerrit.osmocom.org/7603 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newpatchset Gerrit-Change-Id: Ic049f77bef74123b95350bcae182a468e0086b9c Gerrit-PatchSet: 2 Gerrit-Project: osmo-bts Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr Gerrit-Reviewer: Jenkins Builder From gerrit-no-reply at lists.osmocom.org Wed Apr 4 15:54:40 2018 From: gerrit-no-reply at lists.osmocom.org (Neels Hofmeyr) Date: Wed, 4 Apr 2018 15:54:40 +0000 Subject: [PATCH] osmo-bts[master]: use osmo_init_logging2() with proper talloc ctx In-Reply-To: References: Message-ID: Hello Jenkins Builder, I'd like you to reexamine a change. Please visit https://gerrit.osmocom.org/7603 to look at the new patch set (#3). use osmo_init_logging2() with proper talloc ctx Completely drop bts_log_init(), call osmo_init_logging2() directly instead: all callers of bts_log_init() passed NULL as category string, so all it ever did was call osmo_init_logging(). The bts_log_info is already declared in the .h. Here and there also define a proper talloc root context instead of using NULL. Change-Id: Ic049f77bef74123b95350bcae182a468e0086b9c --- M doc/startup.txt M include/osmo-bts/logging.h M src/common/logging.c M src/common/main.c M src/osmo-bts-litecell15/misc/lc15bts_mgr.c M src/osmo-bts-omldummy/main.c M src/osmo-bts-sysmo/l1_fwd_main.c M src/osmo-bts-sysmo/misc/sysmobts_mgr.c M tests/agch/agch_test.c M tests/cipher/cipher_test.c M tests/handover/handover_test.c M tests/meas/meas_test.c M tests/misc/misc_test.c M tests/paging/paging_test.c M tests/tx_power/tx_power_test.c 15 files changed, 23 insertions(+), 40 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-bts refs/changes/03/7603/3 diff --git a/doc/startup.txt b/doc/startup.txt index cc64375..50766e4 100644 --- a/doc/startup.txt +++ b/doc/startup.txt @@ -6,7 +6,7 @@ |=== | bts-specific | main() | | common | bts_main() | initialization of talloc contexts -| common | bts_log_init() | initialization of logging +| common | osmo_init_logging2() | initialization of logging | common | handle_options() | common option parsing | bts-specific | bts_model_handle_options() | model-specific option parsing | common | gsm_bts_alloc() | allocation of BTS/TRX/TS data structures diff --git a/include/osmo-bts/logging.h b/include/osmo-bts/logging.h index 68f379c..852c383 100644 --- a/include/osmo-bts/logging.h +++ b/include/osmo-bts/logging.h @@ -25,8 +25,6 @@ extern const struct log_info bts_log_info; -int bts_log_init(const char *category_mask); - /* LOGP with gsm_time prefix */ #define LOGPGT(ss, lvl, gt, fmt, args...) \ LOGP(ss, lvl, "%s " fmt, osmo_dump_gsmtime(gt), ## args) diff --git a/src/common/logging.c b/src/common/logging.c index a4d30e6..3315a01 100644 --- a/src/common/logging.c +++ b/src/common/logging.c @@ -148,13 +148,3 @@ .cat = bts_log_info_cat, .num_cat = ARRAY_SIZE(bts_log_info_cat), }; - -int bts_log_init(const char *category_mask) -{ - osmo_init_logging(&bts_log_info); - - if (category_mask) - log_parse_category_mask(osmo_stderr_target, category_mask); - - return 0; -} diff --git a/src/common/main.c b/src/common/main.c index 0f6f529..9121a2a 100644 --- a/src/common/main.c +++ b/src/common/main.c @@ -239,7 +239,7 @@ msgb_talloc_ctx_init(tall_bts_ctx, 100*1024); bts_vty_info.tall_ctx = tall_bts_ctx; - bts_log_init(NULL); + osmo_init_logging2(tall_bts_ctx, &bts_log_info); vty_init(&bts_vty_info); ctrl_vty_init(tall_bts_ctx); rate_ctr_init(tall_bts_ctx); diff --git a/src/osmo-bts-litecell15/misc/lc15bts_mgr.c b/src/osmo-bts-litecell15/misc/lc15bts_mgr.c index 7886a5e..dbdcc9f 100644 --- a/src/osmo-bts-litecell15/misc/lc15bts_mgr.c +++ b/src/osmo-bts-litecell15/misc/lc15bts_mgr.c @@ -281,12 +281,6 @@ .num_cat = ARRAY_SIZE(mgr_log_info_cat), }; -static int mgr_log_init(void) -{ - osmo_init_logging(&mgr_log_info); - return 0; -} - int main(int argc, char **argv) { int rc; @@ -294,7 +288,7 @@ tall_mgr_ctx = talloc_named_const(NULL, 1, "bts manager"); msgb_talloc_ctx_init(tall_mgr_ctx, 0); - mgr_log_init(); + osmo_init_logging2(tall_mgr_ctx, &mgr_log_info); osmo_init_ignore_signals(); signal(SIGINT, &signal_handler); diff --git a/src/osmo-bts-omldummy/main.c b/src/osmo-bts-omldummy/main.c index 39f2ac2..ef94553 100644 --- a/src/osmo-bts-omldummy/main.c +++ b/src/osmo-bts-omldummy/main.c @@ -19,7 +19,7 @@ tall_bts_ctx = talloc_named_const(NULL, 1, "OsmoBTS context"); msgb_talloc_ctx_init(tall_bts_ctx, 10*1024); - bts_log_init(NULL); + osmo_init_logging2(tall_bts_ctx, &bts_log_info); bts = gsm_bts_alloc(tall_bts_ctx, 0); if (!bts) diff --git a/src/osmo-bts-sysmo/l1_fwd_main.c b/src/osmo-bts-sysmo/l1_fwd_main.c index 92d2ea4..bc9fc21 100644 --- a/src/osmo-bts-sysmo/l1_fwd_main.c +++ b/src/osmo-bts-sysmo/l1_fwd_main.c @@ -37,6 +37,7 @@ #include #include #include +#include #include #include @@ -169,11 +170,12 @@ struct l1fwd_hdl *l1fh; struct femtol1_hdl *fl1h; int rc, i; + void *ctx = talloc_named_const(NULL, 0, "l1_fwd"); printf("sizeof(GsmL1_Prim_t) = %zu\n", sizeof(GsmL1_Prim_t)); printf("sizeof(SuperFemto_Prim_t) = %zu\n", sizeof(SuperFemto_Prim_t)); - bts_log_init(NULL); + osmo_init_logging2(ctx, &bts_log_info); /* * hack and prevent that two l1fwd-proxy/sysmobts run at the same @@ -187,7 +189,7 @@ } /* allocate new femtol1_handle */ - fl1h = talloc_zero(NULL, struct femtol1_hdl); + fl1h = talloc_zero(ctx, struct femtol1_hdl); INIT_LLIST_HEAD(&fl1h->wlc_list); /* open the actual hardware transport */ @@ -198,7 +200,7 @@ } /* create our fwd handle */ - l1fh = talloc_zero(NULL, struct l1fwd_hdl); + l1fh = talloc_zero(ctx, struct l1fwd_hdl); l1fh->fl1h = fl1h; fl1h->priv = l1fh; diff --git a/src/osmo-bts-sysmo/misc/sysmobts_mgr.c b/src/osmo-bts-sysmo/misc/sysmobts_mgr.c index 17a6d89..a008073 100644 --- a/src/osmo-bts-sysmo/misc/sysmobts_mgr.c +++ b/src/osmo-bts-sysmo/misc/sysmobts_mgr.c @@ -245,12 +245,6 @@ .num_cat = ARRAY_SIZE(mgr_log_info_cat), }; -static int mgr_log_init(void) -{ - osmo_init_logging(&mgr_log_info); - return 0; -} - int main(int argc, char **argv) { int rc; @@ -261,7 +255,7 @@ srand(time(NULL)); - mgr_log_init(); + osmo_init_logging2(tall_mgr_ctx, &mgr_log_info); if (classify_bts() != 0) exit(2); diff --git a/tests/agch/agch_test.c b/tests/agch/agch_test.c index 6efbc24..ab59ebf 100644 --- a/tests/agch/agch_test.c +++ b/tests/agch/agch_test.c @@ -222,7 +222,7 @@ tall_bts_ctx = talloc_named_const(NULL, 1, "OsmoBTS context"); msgb_talloc_ctx_init(tall_bts_ctx, 0); - bts_log_init(NULL); + osmo_init_logging2(tall_bts_ctx, &bts_log_info); bts = gsm_bts_alloc(tall_bts_ctx, 0); if (bts_init(bts) < 0) { diff --git a/tests/cipher/cipher_test.c b/tests/cipher/cipher_test.c index 5e2bdc0..a7343c0 100644 --- a/tests/cipher/cipher_test.c +++ b/tests/cipher/cipher_test.c @@ -68,7 +68,7 @@ tall_bts_ctx = talloc_named_const(NULL, 1, "OsmoBTS context"); msgb_talloc_ctx_init(tall_bts_ctx, 0); - bts_log_init(NULL); + osmo_init_logging2(tall_bts_ctx, &bts_log_info); bts = gsm_bts_alloc(tall_bts_ctx, 0); if (bts_init(bts) < 0) { diff --git a/tests/handover/handover_test.c b/tests/handover/handover_test.c index 1c0a4da..c7bd8f8 100644 --- a/tests/handover/handover_test.c +++ b/tests/handover/handover_test.c @@ -67,7 +67,7 @@ tall_bts_ctx = talloc_named_const(NULL, 1, "OsmoBTS context"); msgb_talloc_ctx_init(tall_bts_ctx, 0); - bts_log_init(NULL); + osmo_init_logging2(tall_bts_ctx, &bts_log_info); osmo_stderr_target->categories[DHO].loglevel = LOGL_DEBUG; bts = gsm_bts_alloc(tall_bts_ctx, 0); diff --git a/tests/meas/meas_test.c b/tests/meas/meas_test.c index a283c47..cbc673f 100644 --- a/tests/meas/meas_test.c +++ b/tests/meas/meas_test.c @@ -69,7 +69,7 @@ tall_bts_ctx = talloc_named_const(NULL, 1, "OsmoBTS context"); msgb_talloc_ctx_init(tall_bts_ctx, 0); - bts_log_init(NULL); + osmo_init_logging2(tall_bts_ctx, &bts_log_info); osmo_stderr_target->categories[DMEAS].loglevel = LOGL_DEBUG; bts = gsm_bts_alloc(tall_bts_ctx, 0); diff --git a/tests/misc/misc_test.c b/tests/misc/misc_test.c index e454235..c4d3a59 100644 --- a/tests/misc/misc_test.c +++ b/tests/misc/misc_test.c @@ -24,10 +24,13 @@ #include #include +#include #include #include #include + +void *ctx = NULL; static const uint8_t ipa_rsl_connect[] = { 0x00, 0x1c, 0xff, 0x10, 0x80, 0x00, 0x0a, 0x0d, @@ -161,7 +164,7 @@ { struct gsm_bts *bts; - bts = gsm_bts_alloc(NULL, 0); + bts = gsm_bts_alloc(ctx, 0); gsm_bts_set_feature(bts, BTS_FEAT_SPEECH_F_V1); gsm_bts_set_feature(bts, BTS_FEAT_SPEECH_H_V1); @@ -184,7 +187,9 @@ int main(int argc, char **argv) { - bts_log_init(NULL); + ctx = talloc_named_const(NULL, 0, "misc_test"); + + osmo_init_logging2(ctx, &bts_log_info); test_sacch_get(); test_msg_utils_ipa(); diff --git a/tests/paging/paging_test.c b/tests/paging/paging_test.c index f4f0934..bf28661 100644 --- a/tests/paging/paging_test.c +++ b/tests/paging/paging_test.c @@ -114,7 +114,7 @@ tall_bts_ctx = talloc_named_const(NULL, 1, "OsmoBTS context"); msgb_talloc_ctx_init(tall_bts_ctx, 0); - bts_log_init(NULL); + osmo_init_logging2(tall_bts_ctx, &bts_log_info); bts = gsm_bts_alloc(tall_bts_ctx, 0); if (bts_init(bts) < 0) { diff --git a/tests/tx_power/tx_power_test.c b/tests/tx_power/tx_power_test.c index a47d186..ad3f68c 100644 --- a/tests/tx_power/tx_power_test.c +++ b/tests/tx_power/tx_power_test.c @@ -211,7 +211,7 @@ tall_bts_ctx = talloc_named_const(NULL, 1, "OsmoBTS context"); msgb_talloc_ctx_init(tall_bts_ctx, 0); - bts_log_init(NULL); + osmo_init_logging2(tall_bts_ctx, &bts_log_info); osmo_stderr_target->categories[DL1C].loglevel = LOGL_DEBUG; log_set_print_filename(osmo_stderr_target, 0); -- To view, visit https://gerrit.osmocom.org/7603 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newpatchset Gerrit-Change-Id: Ic049f77bef74123b95350bcae182a468e0086b9c Gerrit-PatchSet: 3 Gerrit-Project: osmo-bts Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr Gerrit-Reviewer: Jenkins Builder From gerrit-no-reply at lists.osmocom.org Wed Apr 4 16:45:51 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Wed, 4 Apr 2018 16:45:51 +0000 Subject: [PATCH] osmo-bts[master]: fox chan_nr_is_dchan() for RSL_CHAN_OSMO_PDCH Message-ID: Review at https://gerrit.osmocom.org/7632 fox chan_nr_is_dchan() for RSL_CHAN_OSMO_PDCH When writing chan_nr_is_dchan() in Change-Id: I43a78bec63aeb36dd67043d237b27fe880209349, I apparently only looked at TS 48.058 without considering the osmocom extension to it for PDCH activation. The result is complete breakage for "osmocom style dynamic PDCH" support. This patch fixes the mistake by making the compare more specific. Change-Id: I18e0774fdd48966bc95261e715f798464b8b681f Related: OS#3131, OS#1853 --- M src/common/rsl.c 1 file changed, 2 insertions(+), 2 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-bts refs/changes/32/7632/1 diff --git a/src/common/rsl.c b/src/common/rsl.c index 5f3c17e..6120e0e 100644 --- a/src/common/rsl.c +++ b/src/common/rsl.c @@ -140,8 +140,8 @@ /* Is this channel number for a dedicated channel (true) or not (false) */ static bool chan_nr_is_dchan(uint8_t chan_nr) { - /* See TS 48.058 9.3.1 */ - if (chan_nr & 0x80) + /* See TS 48.058 9.3.1 + Osmocom extension for RSL_CHAN_OSMO_PDCH */ + if ((chan_nr & 0xc0) == 0x80) return false; else return true; -- To view, visit https://gerrit.osmocom.org/7632 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I18e0774fdd48966bc95261e715f798464b8b681f Gerrit-PatchSet: 1 Gerrit-Project: osmo-bts Gerrit-Branch: master Gerrit-Owner: Harald Welte From gerrit-no-reply at lists.osmocom.org Wed Apr 4 16:48:46 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Wed, 4 Apr 2018 16:48:46 +0000 Subject: osmo-bts[master]: use osmo_init_logging2() with proper talloc ctx In-Reply-To: References: Message-ID: Patch Set 3: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7603 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Ic049f77bef74123b95350bcae182a468e0086b9c Gerrit-PatchSet: 3 Gerrit-Project: osmo-bts Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Wed Apr 4 16:48:49 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Wed, 4 Apr 2018 16:48:49 +0000 Subject: [MERGED] osmo-bts[master]: use osmo_init_logging2() with proper talloc ctx In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: use osmo_init_logging2() with proper talloc ctx ...................................................................... use osmo_init_logging2() with proper talloc ctx Completely drop bts_log_init(), call osmo_init_logging2() directly instead: all callers of bts_log_init() passed NULL as category string, so all it ever did was call osmo_init_logging(). The bts_log_info is already declared in the .h. Here and there also define a proper talloc root context instead of using NULL. Change-Id: Ic049f77bef74123b95350bcae182a468e0086b9c --- M doc/startup.txt M include/osmo-bts/logging.h M src/common/logging.c M src/common/main.c M src/osmo-bts-litecell15/misc/lc15bts_mgr.c M src/osmo-bts-omldummy/main.c M src/osmo-bts-sysmo/l1_fwd_main.c M src/osmo-bts-sysmo/misc/sysmobts_mgr.c M tests/agch/agch_test.c M tests/cipher/cipher_test.c M tests/handover/handover_test.c M tests/meas/meas_test.c M tests/misc/misc_test.c M tests/paging/paging_test.c M tests/tx_power/tx_power_test.c 15 files changed, 23 insertions(+), 40 deletions(-) Approvals: Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/doc/startup.txt b/doc/startup.txt index cc64375..50766e4 100644 --- a/doc/startup.txt +++ b/doc/startup.txt @@ -6,7 +6,7 @@ |=== | bts-specific | main() | | common | bts_main() | initialization of talloc contexts -| common | bts_log_init() | initialization of logging +| common | osmo_init_logging2() | initialization of logging | common | handle_options() | common option parsing | bts-specific | bts_model_handle_options() | model-specific option parsing | common | gsm_bts_alloc() | allocation of BTS/TRX/TS data structures diff --git a/include/osmo-bts/logging.h b/include/osmo-bts/logging.h index 68f379c..852c383 100644 --- a/include/osmo-bts/logging.h +++ b/include/osmo-bts/logging.h @@ -25,8 +25,6 @@ extern const struct log_info bts_log_info; -int bts_log_init(const char *category_mask); - /* LOGP with gsm_time prefix */ #define LOGPGT(ss, lvl, gt, fmt, args...) \ LOGP(ss, lvl, "%s " fmt, osmo_dump_gsmtime(gt), ## args) diff --git a/src/common/logging.c b/src/common/logging.c index a4d30e6..3315a01 100644 --- a/src/common/logging.c +++ b/src/common/logging.c @@ -148,13 +148,3 @@ .cat = bts_log_info_cat, .num_cat = ARRAY_SIZE(bts_log_info_cat), }; - -int bts_log_init(const char *category_mask) -{ - osmo_init_logging(&bts_log_info); - - if (category_mask) - log_parse_category_mask(osmo_stderr_target, category_mask); - - return 0; -} diff --git a/src/common/main.c b/src/common/main.c index 0f6f529..9121a2a 100644 --- a/src/common/main.c +++ b/src/common/main.c @@ -239,7 +239,7 @@ msgb_talloc_ctx_init(tall_bts_ctx, 100*1024); bts_vty_info.tall_ctx = tall_bts_ctx; - bts_log_init(NULL); + osmo_init_logging2(tall_bts_ctx, &bts_log_info); vty_init(&bts_vty_info); ctrl_vty_init(tall_bts_ctx); rate_ctr_init(tall_bts_ctx); diff --git a/src/osmo-bts-litecell15/misc/lc15bts_mgr.c b/src/osmo-bts-litecell15/misc/lc15bts_mgr.c index 7886a5e..dbdcc9f 100644 --- a/src/osmo-bts-litecell15/misc/lc15bts_mgr.c +++ b/src/osmo-bts-litecell15/misc/lc15bts_mgr.c @@ -281,12 +281,6 @@ .num_cat = ARRAY_SIZE(mgr_log_info_cat), }; -static int mgr_log_init(void) -{ - osmo_init_logging(&mgr_log_info); - return 0; -} - int main(int argc, char **argv) { int rc; @@ -294,7 +288,7 @@ tall_mgr_ctx = talloc_named_const(NULL, 1, "bts manager"); msgb_talloc_ctx_init(tall_mgr_ctx, 0); - mgr_log_init(); + osmo_init_logging2(tall_mgr_ctx, &mgr_log_info); osmo_init_ignore_signals(); signal(SIGINT, &signal_handler); diff --git a/src/osmo-bts-omldummy/main.c b/src/osmo-bts-omldummy/main.c index 39f2ac2..ef94553 100644 --- a/src/osmo-bts-omldummy/main.c +++ b/src/osmo-bts-omldummy/main.c @@ -19,7 +19,7 @@ tall_bts_ctx = talloc_named_const(NULL, 1, "OsmoBTS context"); msgb_talloc_ctx_init(tall_bts_ctx, 10*1024); - bts_log_init(NULL); + osmo_init_logging2(tall_bts_ctx, &bts_log_info); bts = gsm_bts_alloc(tall_bts_ctx, 0); if (!bts) diff --git a/src/osmo-bts-sysmo/l1_fwd_main.c b/src/osmo-bts-sysmo/l1_fwd_main.c index 92d2ea4..bc9fc21 100644 --- a/src/osmo-bts-sysmo/l1_fwd_main.c +++ b/src/osmo-bts-sysmo/l1_fwd_main.c @@ -37,6 +37,7 @@ #include #include #include +#include #include #include @@ -169,11 +170,12 @@ struct l1fwd_hdl *l1fh; struct femtol1_hdl *fl1h; int rc, i; + void *ctx = talloc_named_const(NULL, 0, "l1_fwd"); printf("sizeof(GsmL1_Prim_t) = %zu\n", sizeof(GsmL1_Prim_t)); printf("sizeof(SuperFemto_Prim_t) = %zu\n", sizeof(SuperFemto_Prim_t)); - bts_log_init(NULL); + osmo_init_logging2(ctx, &bts_log_info); /* * hack and prevent that two l1fwd-proxy/sysmobts run at the same @@ -187,7 +189,7 @@ } /* allocate new femtol1_handle */ - fl1h = talloc_zero(NULL, struct femtol1_hdl); + fl1h = talloc_zero(ctx, struct femtol1_hdl); INIT_LLIST_HEAD(&fl1h->wlc_list); /* open the actual hardware transport */ @@ -198,7 +200,7 @@ } /* create our fwd handle */ - l1fh = talloc_zero(NULL, struct l1fwd_hdl); + l1fh = talloc_zero(ctx, struct l1fwd_hdl); l1fh->fl1h = fl1h; fl1h->priv = l1fh; diff --git a/src/osmo-bts-sysmo/misc/sysmobts_mgr.c b/src/osmo-bts-sysmo/misc/sysmobts_mgr.c index 17a6d89..a008073 100644 --- a/src/osmo-bts-sysmo/misc/sysmobts_mgr.c +++ b/src/osmo-bts-sysmo/misc/sysmobts_mgr.c @@ -245,12 +245,6 @@ .num_cat = ARRAY_SIZE(mgr_log_info_cat), }; -static int mgr_log_init(void) -{ - osmo_init_logging(&mgr_log_info); - return 0; -} - int main(int argc, char **argv) { int rc; @@ -261,7 +255,7 @@ srand(time(NULL)); - mgr_log_init(); + osmo_init_logging2(tall_mgr_ctx, &mgr_log_info); if (classify_bts() != 0) exit(2); diff --git a/tests/agch/agch_test.c b/tests/agch/agch_test.c index 6efbc24..ab59ebf 100644 --- a/tests/agch/agch_test.c +++ b/tests/agch/agch_test.c @@ -222,7 +222,7 @@ tall_bts_ctx = talloc_named_const(NULL, 1, "OsmoBTS context"); msgb_talloc_ctx_init(tall_bts_ctx, 0); - bts_log_init(NULL); + osmo_init_logging2(tall_bts_ctx, &bts_log_info); bts = gsm_bts_alloc(tall_bts_ctx, 0); if (bts_init(bts) < 0) { diff --git a/tests/cipher/cipher_test.c b/tests/cipher/cipher_test.c index 5e2bdc0..a7343c0 100644 --- a/tests/cipher/cipher_test.c +++ b/tests/cipher/cipher_test.c @@ -68,7 +68,7 @@ tall_bts_ctx = talloc_named_const(NULL, 1, "OsmoBTS context"); msgb_talloc_ctx_init(tall_bts_ctx, 0); - bts_log_init(NULL); + osmo_init_logging2(tall_bts_ctx, &bts_log_info); bts = gsm_bts_alloc(tall_bts_ctx, 0); if (bts_init(bts) < 0) { diff --git a/tests/handover/handover_test.c b/tests/handover/handover_test.c index 1c0a4da..c7bd8f8 100644 --- a/tests/handover/handover_test.c +++ b/tests/handover/handover_test.c @@ -67,7 +67,7 @@ tall_bts_ctx = talloc_named_const(NULL, 1, "OsmoBTS context"); msgb_talloc_ctx_init(tall_bts_ctx, 0); - bts_log_init(NULL); + osmo_init_logging2(tall_bts_ctx, &bts_log_info); osmo_stderr_target->categories[DHO].loglevel = LOGL_DEBUG; bts = gsm_bts_alloc(tall_bts_ctx, 0); diff --git a/tests/meas/meas_test.c b/tests/meas/meas_test.c index a283c47..cbc673f 100644 --- a/tests/meas/meas_test.c +++ b/tests/meas/meas_test.c @@ -69,7 +69,7 @@ tall_bts_ctx = talloc_named_const(NULL, 1, "OsmoBTS context"); msgb_talloc_ctx_init(tall_bts_ctx, 0); - bts_log_init(NULL); + osmo_init_logging2(tall_bts_ctx, &bts_log_info); osmo_stderr_target->categories[DMEAS].loglevel = LOGL_DEBUG; bts = gsm_bts_alloc(tall_bts_ctx, 0); diff --git a/tests/misc/misc_test.c b/tests/misc/misc_test.c index e454235..c4d3a59 100644 --- a/tests/misc/misc_test.c +++ b/tests/misc/misc_test.c @@ -24,10 +24,13 @@ #include #include +#include #include #include #include + +void *ctx = NULL; static const uint8_t ipa_rsl_connect[] = { 0x00, 0x1c, 0xff, 0x10, 0x80, 0x00, 0x0a, 0x0d, @@ -161,7 +164,7 @@ { struct gsm_bts *bts; - bts = gsm_bts_alloc(NULL, 0); + bts = gsm_bts_alloc(ctx, 0); gsm_bts_set_feature(bts, BTS_FEAT_SPEECH_F_V1); gsm_bts_set_feature(bts, BTS_FEAT_SPEECH_H_V1); @@ -184,7 +187,9 @@ int main(int argc, char **argv) { - bts_log_init(NULL); + ctx = talloc_named_const(NULL, 0, "misc_test"); + + osmo_init_logging2(ctx, &bts_log_info); test_sacch_get(); test_msg_utils_ipa(); diff --git a/tests/paging/paging_test.c b/tests/paging/paging_test.c index f4f0934..bf28661 100644 --- a/tests/paging/paging_test.c +++ b/tests/paging/paging_test.c @@ -114,7 +114,7 @@ tall_bts_ctx = talloc_named_const(NULL, 1, "OsmoBTS context"); msgb_talloc_ctx_init(tall_bts_ctx, 0); - bts_log_init(NULL); + osmo_init_logging2(tall_bts_ctx, &bts_log_info); bts = gsm_bts_alloc(tall_bts_ctx, 0); if (bts_init(bts) < 0) { diff --git a/tests/tx_power/tx_power_test.c b/tests/tx_power/tx_power_test.c index a47d186..ad3f68c 100644 --- a/tests/tx_power/tx_power_test.c +++ b/tests/tx_power/tx_power_test.c @@ -211,7 +211,7 @@ tall_bts_ctx = talloc_named_const(NULL, 1, "OsmoBTS context"); msgb_talloc_ctx_init(tall_bts_ctx, 0); - bts_log_init(NULL); + osmo_init_logging2(tall_bts_ctx, &bts_log_info); osmo_stderr_target->categories[DL1C].loglevel = LOGL_DEBUG; log_set_print_filename(osmo_stderr_target, 0); -- To view, visit https://gerrit.osmocom.org/7603 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: Ic049f77bef74123b95350bcae182a468e0086b9c Gerrit-PatchSet: 3 Gerrit-Project: osmo-bts Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder From gerrit-no-reply at lists.osmocom.org Wed Apr 4 16:49:18 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Wed, 4 Apr 2018 16:49:18 +0000 Subject: osmocom-bb[fixeria/trx]: trxcon/l1ctl.c: hexdump content of unhandled messages In-Reply-To: References: Message-ID: Patch Set 4: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7414 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Iec8fc6d49d1e35fe101960dd969de559e37a6a75 Gerrit-PatchSet: 4 Gerrit-Project: osmocom-bb Gerrit-Branch: fixeria/trx Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Pau Espin Pedrol Gerrit-Reviewer: Vadim Yanitskiy Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Wed Apr 4 16:52:17 2018 From: gerrit-no-reply at lists.osmocom.org (Neels Hofmeyr) Date: Wed, 4 Apr 2018 16:52:17 +0000 Subject: osmo-bts[master]: fox chan_nr_is_dchan() for RSL_CHAN_OSMO_PDCH In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7632 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I18e0774fdd48966bc95261e715f798464b8b681f Gerrit-PatchSet: 1 Gerrit-Project: osmo-bts Gerrit-Branch: master Gerrit-Owner: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Neels Hofmeyr Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Wed Apr 4 16:52:38 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Wed, 4 Apr 2018 16:52:38 +0000 Subject: osmocom-bb[fixeria/trx]: trx_toolkit: Add cmdline arg to set bind addr In-Reply-To: References: Message-ID: Patch Set 3: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7410 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I7be18fef40967fb7551f4115f22cbbd9cdb0840d Gerrit-PatchSet: 3 Gerrit-Project: osmocom-bb Gerrit-Branch: fixeria/trx Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Pau Espin Pedrol Gerrit-Reviewer: Vadim Yanitskiy Gerrit-Reviewer: fixeria Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Wed Apr 4 16:53:10 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Wed, 4 Apr 2018 16:53:10 +0000 Subject: libosmocore[master]: gsm0480: copy the raw USSD data, its DCS and length In-Reply-To: References: Message-ID: Patch Set 2: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7625 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Ia193d175021e145bb3b131290231f307dbefc64a Gerrit-PatchSet: 2 Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Owner: Vadim Yanitskiy Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Vadim Yanitskiy Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Wed Apr 4 16:53:41 2018 From: gerrit-no-reply at lists.osmocom.org (Neels Hofmeyr) Date: Wed, 4 Apr 2018 16:53:41 +0000 Subject: osmo-ci[master]: jobs/master: optimize trigger chain In-Reply-To: References: Message-ID: Patch Set 2: Verified+1 -- To view, visit https://gerrit.osmocom.org/7580 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Iea2cf25b3872045778f11a985a1c417f37067cd9 Gerrit-PatchSet: 2 Gerrit-Project: osmo-ci Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Neels Hofmeyr Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Wed Apr 4 16:53:43 2018 From: gerrit-no-reply at lists.osmocom.org (Neels Hofmeyr) Date: Wed, 4 Apr 2018 16:53:43 +0000 Subject: [MERGED] osmo-ci[master]: jobs/master: optimize trigger chain In-Reply-To: References: Message-ID: Neels Hofmeyr has submitted this change and it was merged. Change subject: jobs/master: optimize trigger chain ...................................................................... jobs/master: optimize trigger chain Avoid as many multiple triggers as still ensure all dependent projects are rebuilt correctly. Keep the full trigger list as comment, and illustrate in a comment at libosmocore how the chain is intended to work. Change-Id: Iea2cf25b3872045778f11a985a1c417f37067cd9 --- M jobs/master-builds.yml 1 file changed, 75 insertions(+), 12 deletions(-) Approvals: Neels Hofmeyr: Verified Harald Welte: Looks good to me, approved diff --git a/jobs/master-builds.yml b/jobs/master-builds.yml index 029ffa2..79ce8c2 100644 --- a/jobs/master-builds.yml +++ b/jobs/master-builds.yml @@ -33,15 +33,24 @@ osmocom:amd64 /build/contrib/jenkins.sh - libasn1c: - trigger: master-osmo-iuh, master-osmo-msc + # Full triggers would be: + # trigger: master-osmo-iuh, master-osmo-msc + # Optimized: + # osmo-iuh triggers osmo-msc + trigger: master-osmo-iuh - libgtpnl: trigger: master-osmo-ggsn, openggsn - libosmo-abis: + # Full triggers would be: + # trigger: > + # master-libosmo-netif, master-osmo-bsc, master-osmo-bts, master-osmo-hlr, + # master-osmo-msc, master-osmo-sgsn, master-openbsc + # Optimized: + # (see comment at libosmocore) trigger: > - master-libosmo-netif, master-osmo-bsc, master-osmo-bts, master-osmo-hlr, - master-osmo-msc, master-osmo-sgsn, master-openbsc + master-libosmo-netif, master-osmo-bts - libosmo-dsp: cmd: > @@ -53,25 +62,73 @@ trigger: master-osmo-gmr - libosmo-netif: + # Full triggers would be: + # trigger: > + # master-libosmo-sccp, master-openbsc, mastere-osmo-hlr, master-osmo-iuh, + # master-osmo-mgw, master-osmo-msc, master-osmo-sgsn + # Optimized: + # (see comment at libosmocore) trigger: > - master-libosmo-sccp, master-openbsc, mastere-osmo-hlr, master-osmo-iuh, - master-osmo-mgw, master-osmo-msc, master-osmo-sgsn + master-libosmo-sccp, + master-osmo-hlr, + master-osmo-mgw, + master-osmo-sgsn - libosmo-sccp: + # Full triggers would be: + # trigger: > + # master-openbsc, master-osmo-bsc, master-osmo-iuh, master-osmo-msc, master-osmo-sgsn + # Optimized: + # (see comment at libosmocore) trigger: > - master-openbsc, master-osmo-bsc, master-osmo-iuh, master-osmo-msc, master-osmo-sgsn + master-openbsc, + master-osmo-bsc, + master-osmo-iuh, + master-osmo-msc, + master-osmo-sgsn - libosmocore: a1_name: arch a1: !!python/tuple [arm-none-eabi, amd64] combination_filter: '!(arch=="arm-none-eabi" && label=="FreeBSD_amd64")' cmd: './contrib/jenkins_arch.sh "$arch"' + # Full triggers would be: + # trigger: > + # master-libosmo-abis, master-libosmo-netif, master-libosmo-sccp, master-openbsc, + # master-osmo-bsc, master-osmo-bts, master-osmo-ggsn, master-osmo-gmr, master-osmo-hlr, + # master-osmo-iuh, master-osmo-mgw, master-osmo-msc, master-osmo-pcap, master-osmo-pcu, + # master-osmo-sgsn, master-osmo-sip-connector, master-osmo-tetra, + # master-osmocom-bb, SIMtrace, xgoldmon + # Optimized: + # libosmocore + # -> master-libosmo-abis + # -> master-libosmo-netif + # -> master-libosmo-sccp + # -> master-openbsc + # -> master-osmo-bsc + # -> master-osmo-iuh + # -> master-osmo-msc + # -> master-osmo-sgsn + # -> master-osmo-msc + # -> master-osmo-sgsn + # -> master-osmo-hlr + # -> master-osmo-mgw + # -> master-osmo-sgsn + # -> master-osmo-bts + # -> master-osmo-ggsn + # -> master-osmo-sgsn + # [...] trigger: > - master-libosmo-abis, master-libosmo-netif, master-libosmo-sccp, master-openbsc, - master-osmo-bsc, master-osmo-bts, master-osmo-ggsn, master-osmo-gmr, master-osmo-hlr, - master-osmo-iuh, master-osmo-mgw, master-osmo-msc, master-osmo-pcap, master-osmo-pcu, - master-osmo-sgsn, master-osmo-sip-connector, master-osmo-tetra, - master-osmocom-bb, SIMtrace, xgoldmon + master-libosmo-abis, + master-osmo-ggsn, + master-osmo-gmr, + master-osmo-pcap, + master-osmo-pcu, + master-osmo-sip-connector, + master-osmo-tetra, + master-osmocom-bb, + SIMtrace, + xgoldmon - libsmpp34: trigger: master-osmo-msc, master-openbsc @@ -157,7 +214,13 @@ - osmo-hlr - osmo-iuh: - trigger: master-osmo-msc, master-osmo-sgsn + # Full triggers would be: + # trigger: master-osmo-msc, master-osmo-sgsn + # Optimized: + # (see comment at libosmocore) + trigger: > + master-osmo-msc, + master-osmo-sgsn - osmo-mgw: a1_name: MGCP -- To view, visit https://gerrit.osmocom.org/7580 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: Iea2cf25b3872045778f11a985a1c417f37067cd9 Gerrit-PatchSet: 2 Gerrit-Project: osmo-ci Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Neels Hofmeyr From gerrit-no-reply at lists.osmocom.org Wed Apr 4 16:53:54 2018 From: gerrit-no-reply at lists.osmocom.org (Neels Hofmeyr) Date: Wed, 4 Apr 2018 16:53:54 +0000 Subject: [MERGED] osmo-msc[master]: use osmo_init_logging2() with proper talloc ctx In-Reply-To: References: Message-ID: Neels Hofmeyr has submitted this change and it was merged. Change subject: use osmo_init_logging2() with proper talloc ctx ...................................................................... use osmo_init_logging2() with proper talloc ctx Since the logging allocations now also show up in the root context report, some tests need adjusted talloc checks. In msc_vlr_tests, also output the number of talloc blocks before tests are started to show that the number didn't change after the tests. Change-Id: Iae07ae60230c7bab28e52b5df97fa3844778158e --- M src/libgsupclient/gsup_test_client.c M src/osmo-msc/msc_main.c M src/utils/smpp_mirror.c M tests/msc_vlr/msc_vlr_test_authen_reuse.err M tests/msc_vlr/msc_vlr_test_call.err M tests/msc_vlr/msc_vlr_test_gsm_authen.err M tests/msc_vlr/msc_vlr_test_gsm_ciph.err M tests/msc_vlr/msc_vlr_test_hlr_reject.err M tests/msc_vlr/msc_vlr_test_hlr_timeout.err M tests/msc_vlr/msc_vlr_test_ms_timeout.err M tests/msc_vlr/msc_vlr_test_no_authen.err M tests/msc_vlr/msc_vlr_test_reject_concurrency.err M tests/msc_vlr/msc_vlr_test_rest.err M tests/msc_vlr/msc_vlr_test_umts_authen.err M tests/msc_vlr/msc_vlr_tests.c M tests/smpp/smpp_test.c M tests/sms_queue/sms_queue_test.c 17 files changed, 150 insertions(+), 102 deletions(-) Approvals: Vadim Yanitskiy: Looks good to me, but someone else must approve Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/src/libgsupclient/gsup_test_client.c b/src/libgsupclient/gsup_test_client.c index 03ba68e..0ebcd4a 100644 --- a/src/libgsupclient/gsup_test_client.c +++ b/src/libgsupclient/gsup_test_client.c @@ -289,10 +289,11 @@ unsigned long long i; char *server_host = "127.0.0.1"; uint16_t server_port = OSMO_GSUP_PORT; + void *ctx = talloc_named_const(NULL, 0, "gsup_test_client"); - osmo_init_logging(&gsup_test_client_log_info); + osmo_init_logging2(ctx, &gsup_test_client_log_info); - g_gc = gsup_client_create(NULL, "GSUPTEST", server_host, server_port, + g_gc = gsup_client_create(ctx, "GSUPTEST", server_host, server_port, gsupc_read_cb, NULL); diff --git a/src/osmo-msc/msc_main.c b/src/osmo-msc/msc_main.c index 2b1a8c7..85a8fe1 100644 --- a/src/osmo-msc/msc_main.c +++ b/src/osmo-msc/msc_main.c @@ -531,7 +531,7 @@ tall_call_ctx = talloc_named_const(tall_msc_ctx, 0, "gsm_call"); tall_trans_ctx = talloc_named_const(tall_msc_ctx, 0, "transaction"); - osmo_init_logging(&log_info); + osmo_init_logging2(tall_msc_ctx, &log_info); osmo_stats_init(tall_msc_ctx); /* For --version, vty_init() must be called before handling options */ diff --git a/src/utils/smpp_mirror.c b/src/utils/smpp_mirror.c index fa509df..3053553 100644 --- a/src/utils/smpp_mirror.c +++ b/src/utils/smpp_mirror.c @@ -343,12 +343,13 @@ char *host = "localhost"; int port = 0; int rc; + void *ctx = talloc_named_const(NULL, 0, "smpp_mirror"); - msgb_talloc_ctx_init(NULL, 0); + msgb_talloc_ctx_init(ctx, 0); memset(&esme, 0, sizeof(esme)); - osmo_init_logging(&log_info); + osmo_init_logging2(ctx, &log_info); snprintf((char *) esme.system_id, sizeof(esme.system_id), "mirror"); snprintf((char *) esme.password, sizeof(esme.password), "mirror"); diff --git a/tests/msc_vlr/msc_vlr_test_authen_reuse.err b/tests/msc_vlr/msc_vlr_test_authen_reuse.err index cda2bda..4f8432a 100644 --- a/tests/msc_vlr/msc_vlr_test_authen_reuse.err +++ b/tests/msc_vlr/msc_vlr_test_authen_reuse.err @@ -1,3 +1,6 @@ +full talloc report on 'msgb' (total 0 bytes in 1 blocks) +talloc_total_blocks(tall_bsc_ctx) == 12 + ===== test_auth_use_twice_geran - Location Update request causes a GSUP Send Auth Info request to HLR MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST @@ -424,7 +427,7 @@ ===== test_auth_use_twice_geran: SUCCESS full talloc report on 'msgb' (total 0 bytes in 1 blocks) -talloc_total_blocks(tall_bsc_ctx) == 7 +talloc_total_blocks(tall_bsc_ctx) == 12 ===== test_auth_use_twice_utran - Location Update request causes a GSUP Send Auth Info request to HLR @@ -884,7 +887,7 @@ ===== test_auth_use_twice_utran: SUCCESS full talloc report on 'msgb' (total 0 bytes in 1 blocks) -talloc_total_blocks(tall_bsc_ctx) == 7 +talloc_total_blocks(tall_bsc_ctx) == 12 ===== test_auth_use_infinitely_geran - Location Update request causes a GSUP Send Auth Info request to HLR @@ -1405,7 +1408,7 @@ ===== test_auth_use_infinitely_geran: SUCCESS full talloc report on 'msgb' (total 0 bytes in 1 blocks) -talloc_total_blocks(tall_bsc_ctx) == 7 +talloc_total_blocks(tall_bsc_ctx) == 12 ===== test_auth_use_infinitely_utran - Location Update request causes a GSUP Send Auth Info request to HLR @@ -1968,7 +1971,7 @@ ===== test_auth_use_infinitely_utran: SUCCESS full talloc report on 'msgb' (total 0 bytes in 1 blocks) -talloc_total_blocks(tall_bsc_ctx) == 7 +talloc_total_blocks(tall_bsc_ctx) == 12 ===== test_no_auth_reuse_geran - Location Update request causes a GSUP Send Auth Info request to HLR @@ -2289,7 +2292,7 @@ ===== test_no_auth_reuse_geran: SUCCESS full talloc report on 'msgb' (total 0 bytes in 1 blocks) -talloc_total_blocks(tall_bsc_ctx) == 7 +talloc_total_blocks(tall_bsc_ctx) == 12 ===== test_no_auth_reuse_utran - Location Update request causes a GSUP Send Auth Info request to HLR @@ -2632,8 +2635,8 @@ ===== test_no_auth_reuse_utran: SUCCESS full talloc report on 'msgb' (total 0 bytes in 1 blocks) -talloc_total_blocks(tall_bsc_ctx) == 7 +talloc_total_blocks(tall_bsc_ctx) == 12 full talloc report on 'msgb' (total 0 bytes in 1 blocks) -talloc_total_blocks(tall_bsc_ctx) == 7 +talloc_total_blocks(tall_bsc_ctx) == 12 diff --git a/tests/msc_vlr/msc_vlr_test_call.err b/tests/msc_vlr/msc_vlr_test_call.err index 425762d..1a21c6b 100644 --- a/tests/msc_vlr/msc_vlr_test_call.err +++ b/tests/msc_vlr/msc_vlr_test_call.err @@ -1,3 +1,6 @@ +full talloc report on 'msgb' (total 0 bytes in 1 blocks) +talloc_total_blocks(tall_bsc_ctx) == 12 + ===== test_call_mo - Total time passed: 0.000000 s - Location Update request causes a GSUP Send Auth Info request to HLR @@ -370,7 +373,7 @@ ===== test_call_mo: SUCCESS full talloc report on 'msgb' (total 0 bytes in 1 blocks) -talloc_total_blocks(tall_bsc_ctx) == 7 +talloc_total_blocks(tall_bsc_ctx) == 12 ===== test_call_mt - Total time passed: 0.000000 s @@ -752,7 +755,7 @@ ===== test_call_mt: SUCCESS full talloc report on 'msgb' (total 0 bytes in 1 blocks) -talloc_total_blocks(tall_bsc_ctx) == 7 +talloc_total_blocks(tall_bsc_ctx) == 12 ===== test_call_mo_to_unknown - Total time passed: 0.000000 s @@ -1088,7 +1091,7 @@ ===== test_call_mo_to_unknown: SUCCESS full talloc report on 'msgb' (total 0 bytes in 1 blocks) -talloc_total_blocks(tall_bsc_ctx) == 7 +talloc_total_blocks(tall_bsc_ctx) == 12 ===== test_call_mo_to_unknown_timeout - Total time passed: 0.000000 s @@ -1422,8 +1425,8 @@ ===== test_call_mo_to_unknown_timeout: SUCCESS full talloc report on 'msgb' (total 0 bytes in 1 blocks) -talloc_total_blocks(tall_bsc_ctx) == 7 +talloc_total_blocks(tall_bsc_ctx) == 12 full talloc report on 'msgb' (total 0 bytes in 1 blocks) -talloc_total_blocks(tall_bsc_ctx) == 7 +talloc_total_blocks(tall_bsc_ctx) == 12 diff --git a/tests/msc_vlr/msc_vlr_test_gsm_authen.err b/tests/msc_vlr/msc_vlr_test_gsm_authen.err index c996f3f..ff9f869 100644 --- a/tests/msc_vlr/msc_vlr_test_gsm_authen.err +++ b/tests/msc_vlr/msc_vlr_test_gsm_authen.err @@ -1,3 +1,6 @@ +full talloc report on 'msgb' (total 0 bytes in 1 blocks) +talloc_total_blocks(tall_bsc_ctx) == 12 + ===== test_gsm_authen - Location Update request causes a GSUP Send Auth Info request to HLR MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST @@ -445,7 +448,7 @@ ===== test_gsm_authen: SUCCESS full talloc report on 'msgb' (total 0 bytes in 1 blocks) -talloc_total_blocks(tall_bsc_ctx) == 7 +talloc_total_blocks(tall_bsc_ctx) == 12 ===== test_gsm_authen_tmsi - Location Update request causes a GSUP Send Auth Info request to HLR @@ -1098,7 +1101,7 @@ ===== test_gsm_authen_tmsi: SUCCESS full talloc report on 'msgb' (total 0 bytes in 1 blocks) -talloc_total_blocks(tall_bsc_ctx) == 7 +talloc_total_blocks(tall_bsc_ctx) == 12 ===== test_gsm_authen_imei - Location Update request causes a GSUP Send Auth Info request to HLR @@ -1318,7 +1321,7 @@ ===== test_gsm_authen_imei: SUCCESS full talloc report on 'msgb' (total 0 bytes in 1 blocks) -talloc_total_blocks(tall_bsc_ctx) == 7 +talloc_total_blocks(tall_bsc_ctx) == 12 ===== test_gsm_authen_tmsi_imei - Location Update request causes a GSUP Send Auth Info request to HLR @@ -1569,7 +1572,7 @@ ===== test_gsm_authen_tmsi_imei: SUCCESS full talloc report on 'msgb' (total 0 bytes in 1 blocks) -talloc_total_blocks(tall_bsc_ctx) == 7 +talloc_total_blocks(tall_bsc_ctx) == 12 ===== test_gsm_milenage_authen - Location Update request causes a GSUP Send Auth Info request to HLR @@ -1999,7 +2002,7 @@ ===== test_gsm_milenage_authen: SUCCESS full talloc report on 'msgb' (total 0 bytes in 1 blocks) -talloc_total_blocks(tall_bsc_ctx) == 7 +talloc_total_blocks(tall_bsc_ctx) == 12 ===== test_wrong_sres_length - Total time passed: 0.000000 s @@ -2113,8 +2116,8 @@ ===== test_wrong_sres_length: SUCCESS full talloc report on 'msgb' (total 0 bytes in 1 blocks) -talloc_total_blocks(tall_bsc_ctx) == 7 +talloc_total_blocks(tall_bsc_ctx) == 12 full talloc report on 'msgb' (total 0 bytes in 1 blocks) -talloc_total_blocks(tall_bsc_ctx) == 7 +talloc_total_blocks(tall_bsc_ctx) == 12 diff --git a/tests/msc_vlr/msc_vlr_test_gsm_ciph.err b/tests/msc_vlr/msc_vlr_test_gsm_ciph.err index 2d60ae9..b75ecc2 100644 --- a/tests/msc_vlr/msc_vlr_test_gsm_ciph.err +++ b/tests/msc_vlr/msc_vlr_test_gsm_ciph.err @@ -1,3 +1,6 @@ +full talloc report on 'msgb' (total 0 bytes in 1 blocks) +talloc_total_blocks(tall_bsc_ctx) == 12 + ===== test_ciph - Location Update request causes a GSUP Send Auth Info request to HLR MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST @@ -493,7 +496,7 @@ ===== test_ciph: SUCCESS full talloc report on 'msgb' (total 0 bytes in 1 blocks) -talloc_total_blocks(tall_bsc_ctx) == 7 +talloc_total_blocks(tall_bsc_ctx) == 12 ===== test_ciph_tmsi - Location Update request causes a GSUP Send Auth Info request to HLR @@ -1027,7 +1030,7 @@ ===== test_ciph_tmsi: SUCCESS full talloc report on 'msgb' (total 0 bytes in 1 blocks) -talloc_total_blocks(tall_bsc_ctx) == 7 +talloc_total_blocks(tall_bsc_ctx) == 12 ===== test_ciph_imei - Location Update request causes a GSUP Send Auth Info request to HLR @@ -1251,7 +1254,7 @@ ===== test_ciph_imei: SUCCESS full talloc report on 'msgb' (total 0 bytes in 1 blocks) -talloc_total_blocks(tall_bsc_ctx) == 7 +talloc_total_blocks(tall_bsc_ctx) == 12 ===== test_ciph_imeisv - Location Update request causes a GSUP Send Auth Info request to HLR @@ -1464,7 +1467,7 @@ ===== test_ciph_imeisv: SUCCESS full talloc report on 'msgb' (total 0 bytes in 1 blocks) -talloc_total_blocks(tall_bsc_ctx) == 7 +talloc_total_blocks(tall_bsc_ctx) == 12 ===== test_ciph_tmsi_imei - Location Update request causes a GSUP Send Auth Info request to HLR @@ -1719,7 +1722,7 @@ ===== test_ciph_tmsi_imei: SUCCESS full talloc report on 'msgb' (total 0 bytes in 1 blocks) -talloc_total_blocks(tall_bsc_ctx) == 7 +talloc_total_blocks(tall_bsc_ctx) == 12 ===== test_gsm_ciph_in_umts_env - Location Update request causes a GSUP Send Auth Info request to HLR @@ -2185,7 +2188,7 @@ ===== test_gsm_ciph_in_umts_env: SUCCESS full talloc report on 'msgb' (total 0 bytes in 1 blocks) -talloc_total_blocks(tall_bsc_ctx) == 7 +talloc_total_blocks(tall_bsc_ctx) == 12 ===== test_a5_3_not_supported - Location Update request causes a GSUP Send Auth Info request to HLR @@ -2283,8 +2286,8 @@ ===== test_a5_3_not_supported: SUCCESS full talloc report on 'msgb' (total 0 bytes in 1 blocks) -talloc_total_blocks(tall_bsc_ctx) == 7 +talloc_total_blocks(tall_bsc_ctx) == 12 full talloc report on 'msgb' (total 0 bytes in 1 blocks) -talloc_total_blocks(tall_bsc_ctx) == 7 +talloc_total_blocks(tall_bsc_ctx) == 12 diff --git a/tests/msc_vlr/msc_vlr_test_hlr_reject.err b/tests/msc_vlr/msc_vlr_test_hlr_reject.err index 5af4e64..8a7f90d 100644 --- a/tests/msc_vlr/msc_vlr_test_hlr_reject.err +++ b/tests/msc_vlr/msc_vlr_test_hlr_reject.err @@ -1,3 +1,6 @@ +full talloc report on 'msgb' (total 0 bytes in 1 blocks) +talloc_total_blocks(tall_bsc_ctx) == 12 + ===== test_hlr_rej_auth_info_unknown_imsi - Location Update request causes a GSUP Send Auth Info request to HLR MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST @@ -72,7 +75,7 @@ ===== test_hlr_rej_auth_info_unknown_imsi: SUCCESS full talloc report on 'msgb' (total 0 bytes in 1 blocks) -talloc_total_blocks(tall_bsc_ctx) == 7 +talloc_total_blocks(tall_bsc_ctx) == 12 ===== test_hlr_rej_auth_info_net_fail - Location Update request causes a GSUP Send Auth Info request to HLR @@ -148,7 +151,7 @@ ===== test_hlr_rej_auth_info_net_fail: SUCCESS full talloc report on 'msgb' (total 0 bytes in 1 blocks) -talloc_total_blocks(tall_bsc_ctx) == 7 +talloc_total_blocks(tall_bsc_ctx) == 12 ===== test_hlr_rej_auth_info_net_fail_reuse_tuples --- @@ -451,7 +454,7 @@ ===== test_hlr_rej_auth_info_net_fail_reuse_tuples: SUCCESS full talloc report on 'msgb' (total 0 bytes in 1 blocks) -talloc_total_blocks(tall_bsc_ctx) == 7 +talloc_total_blocks(tall_bsc_ctx) == 12 ===== test_hlr_rej_auth_info_net_fail_no_reuse_tuples --- @@ -679,7 +682,7 @@ ===== test_hlr_rej_auth_info_net_fail_no_reuse_tuples: SUCCESS full talloc report on 'msgb' (total 0 bytes in 1 blocks) -talloc_total_blocks(tall_bsc_ctx) == 7 +talloc_total_blocks(tall_bsc_ctx) == 12 ===== test_hlr_rej_auth_info_unkown_imsi_no_reuse_tuples --- @@ -908,7 +911,7 @@ ===== test_hlr_rej_auth_info_unkown_imsi_no_reuse_tuples: SUCCESS full talloc report on 'msgb' (total 0 bytes in 1 blocks) -talloc_total_blocks(tall_bsc_ctx) == 7 +talloc_total_blocks(tall_bsc_ctx) == 12 ===== test_hlr_acc_but_no_auth_tuples - Location Update request causes a GSUP Send Auth Info request to HLR @@ -983,7 +986,7 @@ ===== test_hlr_acc_but_no_auth_tuples: SUCCESS full talloc report on 'msgb' (total 0 bytes in 1 blocks) -talloc_total_blocks(tall_bsc_ctx) == 7 +talloc_total_blocks(tall_bsc_ctx) == 12 ===== test_hlr_rej_lu - Location Update request causes a GSUP LU request to HLR @@ -1061,7 +1064,7 @@ ===== test_hlr_rej_lu: SUCCESS full talloc report on 'msgb' (total 0 bytes in 1 blocks) -talloc_total_blocks(tall_bsc_ctx) == 7 +talloc_total_blocks(tall_bsc_ctx) == 12 ===== test_hlr_no_insert_data - Location Update request causes a GSUP LU request to HLR @@ -1162,8 +1165,8 @@ ===== test_hlr_no_insert_data: SUCCESS full talloc report on 'msgb' (total 0 bytes in 1 blocks) -talloc_total_blocks(tall_bsc_ctx) == 7 +talloc_total_blocks(tall_bsc_ctx) == 12 full talloc report on 'msgb' (total 0 bytes in 1 blocks) -talloc_total_blocks(tall_bsc_ctx) == 7 +talloc_total_blocks(tall_bsc_ctx) == 12 diff --git a/tests/msc_vlr/msc_vlr_test_hlr_timeout.err b/tests/msc_vlr/msc_vlr_test_hlr_timeout.err index 4d1a99f..9409e26 100644 --- a/tests/msc_vlr/msc_vlr_test_hlr_timeout.err +++ b/tests/msc_vlr/msc_vlr_test_hlr_timeout.err @@ -1,3 +1,6 @@ +full talloc report on 'msgb' (total 0 bytes in 1 blocks) +talloc_total_blocks(tall_bsc_ctx) == 12 + ===== test_hlr_timeout_lu_auth_info - Total time passed: 0.000000 s - Location Update request causes a GSUP Send Auth Info request to HLR @@ -80,7 +83,7 @@ ===== test_hlr_timeout_lu_auth_info: SUCCESS full talloc report on 'msgb' (total 0 bytes in 1 blocks) -talloc_total_blocks(tall_bsc_ctx) == 7 +talloc_total_blocks(tall_bsc_ctx) == 12 ===== test_hlr_timeout_lu_upd_loc_result - Total time passed: 0.000000 s @@ -183,8 +186,8 @@ ===== test_hlr_timeout_lu_upd_loc_result: SUCCESS full talloc report on 'msgb' (total 0 bytes in 1 blocks) -talloc_total_blocks(tall_bsc_ctx) == 7 +talloc_total_blocks(tall_bsc_ctx) == 12 full talloc report on 'msgb' (total 0 bytes in 1 blocks) -talloc_total_blocks(tall_bsc_ctx) == 7 +talloc_total_blocks(tall_bsc_ctx) == 12 diff --git a/tests/msc_vlr/msc_vlr_test_ms_timeout.err b/tests/msc_vlr/msc_vlr_test_ms_timeout.err index c9259a8..c5ffcf5 100644 --- a/tests/msc_vlr/msc_vlr_test_ms_timeout.err +++ b/tests/msc_vlr/msc_vlr_test_ms_timeout.err @@ -1,3 +1,6 @@ +full talloc report on 'msgb' (total 0 bytes in 1 blocks) +talloc_total_blocks(tall_bsc_ctx) == 12 + ===== test_ms_timeout_lu_auth_resp - Total time passed: 0.000000 s - Location Update request causes a GSUP Send Auth Info request to HLR @@ -100,7 +103,7 @@ ===== test_ms_timeout_lu_auth_resp: SUCCESS full talloc report on 'msgb' (total 0 bytes in 1 blocks) -talloc_total_blocks(tall_bsc_ctx) == 7 +talloc_total_blocks(tall_bsc_ctx) == 12 ===== test_ms_timeout_cm_auth_resp - Total time passed: 0.000000 s @@ -336,7 +339,7 @@ ===== test_ms_timeout_cm_auth_resp: SUCCESS full talloc report on 'msgb' (total 0 bytes in 1 blocks) -talloc_total_blocks(tall_bsc_ctx) == 7 +talloc_total_blocks(tall_bsc_ctx) == 12 ===== test_ms_timeout_paging - Total time passed: 0.000000 s @@ -519,8 +522,8 @@ ===== test_ms_timeout_paging: SUCCESS full talloc report on 'msgb' (total 0 bytes in 1 blocks) -talloc_total_blocks(tall_bsc_ctx) == 7 +talloc_total_blocks(tall_bsc_ctx) == 12 full talloc report on 'msgb' (total 0 bytes in 1 blocks) -talloc_total_blocks(tall_bsc_ctx) == 7 +talloc_total_blocks(tall_bsc_ctx) == 12 diff --git a/tests/msc_vlr/msc_vlr_test_no_authen.err b/tests/msc_vlr/msc_vlr_test_no_authen.err index cf34f62..2d139be 100644 --- a/tests/msc_vlr/msc_vlr_test_no_authen.err +++ b/tests/msc_vlr/msc_vlr_test_no_authen.err @@ -1,3 +1,6 @@ +full talloc report on 'msgb' (total 0 bytes in 1 blocks) +talloc_total_blocks(tall_bsc_ctx) == 12 + ===== test_no_authen - Location Update request causes a GSUP LU request to HLR MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST @@ -321,7 +324,7 @@ ===== test_no_authen: SUCCESS full talloc report on 'msgb' (total 0 bytes in 1 blocks) -talloc_total_blocks(tall_bsc_ctx) == 7 +talloc_total_blocks(tall_bsc_ctx) == 12 ===== test_no_authen_tmsi - Location Update request causes a GSUP LU request to HLR @@ -833,7 +836,7 @@ ===== test_no_authen_tmsi: SUCCESS full talloc report on 'msgb' (total 0 bytes in 1 blocks) -talloc_total_blocks(tall_bsc_ctx) == 7 +talloc_total_blocks(tall_bsc_ctx) == 12 ===== test_no_authen_imei - Location Update request causes a GSUP LU request to HLR @@ -1006,7 +1009,7 @@ ===== test_no_authen_imei: SUCCESS full talloc report on 'msgb' (total 0 bytes in 1 blocks) -talloc_total_blocks(tall_bsc_ctx) == 7 +talloc_total_blocks(tall_bsc_ctx) == 12 ===== test_no_authen_tmsi_imei - Location Update request causes a GSUP LU request to HLR @@ -1204,7 +1207,7 @@ ===== test_no_authen_tmsi_imei: SUCCESS full talloc report on 'msgb' (total 0 bytes in 1 blocks) -talloc_total_blocks(tall_bsc_ctx) == 7 +talloc_total_blocks(tall_bsc_ctx) == 12 ===== test_no_authen_imeisv - Location Update request causes an IMEISV ID request back to the MS @@ -1362,7 +1365,7 @@ ===== test_no_authen_imeisv: SUCCESS full talloc report on 'msgb' (total 0 bytes in 1 blocks) -talloc_total_blocks(tall_bsc_ctx) == 7 +talloc_total_blocks(tall_bsc_ctx) == 12 ===== test_no_authen_imeisv_imei - Location Update request causes an IMEISV ID request back to the MS @@ -1552,7 +1555,7 @@ ===== test_no_authen_imeisv_imei: SUCCESS full talloc report on 'msgb' (total 0 bytes in 1 blocks) -talloc_total_blocks(tall_bsc_ctx) == 7 +talloc_total_blocks(tall_bsc_ctx) == 12 ===== test_no_authen_imeisv_tmsi - Location Update request causes an IMEISV ID request back to the MS @@ -1908,7 +1911,7 @@ ===== test_no_authen_imeisv_tmsi: SUCCESS full talloc report on 'msgb' (total 0 bytes in 1 blocks) -talloc_total_blocks(tall_bsc_ctx) == 7 +talloc_total_blocks(tall_bsc_ctx) == 12 ===== test_no_authen_imeisv_tmsi_imei - Location Update request causes an IMEISV ID request back to the MS @@ -2124,8 +2127,8 @@ ===== test_no_authen_imeisv_tmsi_imei: SUCCESS full talloc report on 'msgb' (total 0 bytes in 1 blocks) -talloc_total_blocks(tall_bsc_ctx) == 7 +talloc_total_blocks(tall_bsc_ctx) == 12 full talloc report on 'msgb' (total 0 bytes in 1 blocks) -talloc_total_blocks(tall_bsc_ctx) == 7 +talloc_total_blocks(tall_bsc_ctx) == 12 diff --git a/tests/msc_vlr/msc_vlr_test_reject_concurrency.err b/tests/msc_vlr/msc_vlr_test_reject_concurrency.err index e963ba6..a045e67 100644 --- a/tests/msc_vlr/msc_vlr_test_reject_concurrency.err +++ b/tests/msc_vlr/msc_vlr_test_reject_concurrency.err @@ -1,3 +1,6 @@ +full talloc report on 'msgb' (total 0 bytes in 1 blocks) +talloc_total_blocks(tall_bsc_ctx) == 12 + ===== test_reject_2nd_conn - Location Update Request on one connection MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST @@ -152,7 +155,7 @@ ===== test_reject_2nd_conn: SUCCESS full talloc report on 'msgb' (total 0 bytes in 1 blocks) -talloc_total_blocks(tall_bsc_ctx) == 7 +talloc_total_blocks(tall_bsc_ctx) == 12 ===== test_reject_lu_during_lu - Location Update Request @@ -277,7 +280,7 @@ ===== test_reject_lu_during_lu: SUCCESS full talloc report on 'msgb' (total 0 bytes in 1 blocks) -talloc_total_blocks(tall_bsc_ctx) == 7 +talloc_total_blocks(tall_bsc_ctx) == 12 ===== test_reject_cm_during_lu - Location Update Request @@ -408,7 +411,7 @@ ===== test_reject_cm_during_lu: SUCCESS full talloc report on 'msgb' (total 0 bytes in 1 blocks) -talloc_total_blocks(tall_bsc_ctx) == 7 +talloc_total_blocks(tall_bsc_ctx) == 12 ===== test_reject_paging_resp_during_lu - Location Update Request @@ -534,7 +537,7 @@ ===== test_reject_paging_resp_during_lu: SUCCESS full talloc report on 'msgb' (total 0 bytes in 1 blocks) -talloc_total_blocks(tall_bsc_ctx) == 7 +talloc_total_blocks(tall_bsc_ctx) == 12 ===== test_reject_lu_during_cm --- @@ -727,7 +730,7 @@ ===== test_reject_lu_during_cm: SUCCESS full talloc report on 'msgb' (total 0 bytes in 1 blocks) -talloc_total_blocks(tall_bsc_ctx) == 7 +talloc_total_blocks(tall_bsc_ctx) == 12 ===== test_reject_cm_during_cm --- @@ -922,7 +925,7 @@ ===== test_reject_cm_during_cm: SUCCESS full talloc report on 'msgb' (total 0 bytes in 1 blocks) -talloc_total_blocks(tall_bsc_ctx) == 7 +talloc_total_blocks(tall_bsc_ctx) == 12 ===== test_reject_paging_resp_during_cm --- @@ -1123,7 +1126,7 @@ ===== test_reject_paging_resp_during_cm: SUCCESS full talloc report on 'msgb' (total 0 bytes in 1 blocks) -talloc_total_blocks(tall_bsc_ctx) == 7 +talloc_total_blocks(tall_bsc_ctx) == 12 ===== test_reject_lu_during_paging_resp --- @@ -1351,7 +1354,7 @@ ===== test_reject_lu_during_paging_resp: SUCCESS full talloc report on 'msgb' (total 0 bytes in 1 blocks) -talloc_total_blocks(tall_bsc_ctx) == 7 +talloc_total_blocks(tall_bsc_ctx) == 12 ===== test_accept_cm_during_paging_resp --- @@ -1598,7 +1601,7 @@ ===== test_accept_cm_during_paging_resp: SUCCESS full talloc report on 'msgb' (total 0 bytes in 1 blocks) -talloc_total_blocks(tall_bsc_ctx) == 7 +talloc_total_blocks(tall_bsc_ctx) == 12 ===== test_reject_paging_resp_during_paging_resp --- @@ -1825,8 +1828,8 @@ ===== test_reject_paging_resp_during_paging_resp: SUCCESS full talloc report on 'msgb' (total 0 bytes in 1 blocks) -talloc_total_blocks(tall_bsc_ctx) == 7 +talloc_total_blocks(tall_bsc_ctx) == 12 full talloc report on 'msgb' (total 0 bytes in 1 blocks) -talloc_total_blocks(tall_bsc_ctx) == 7 +talloc_total_blocks(tall_bsc_ctx) == 12 diff --git a/tests/msc_vlr/msc_vlr_test_rest.err b/tests/msc_vlr/msc_vlr_test_rest.err index 73a3692..274f4b8 100644 --- a/tests/msc_vlr/msc_vlr_test_rest.err +++ b/tests/msc_vlr/msc_vlr_test_rest.err @@ -1,3 +1,6 @@ +full talloc report on 'msgb' (total 0 bytes in 1 blocks) +talloc_total_blocks(tall_bsc_ctx) == 12 + ===== test_early_stage - NULL conn msc_subscr_conn_is_accepted() == false @@ -40,7 +43,7 @@ ===== test_early_stage: SUCCESS full talloc report on 'msgb' (total 0 bytes in 1 blocks) -talloc_total_blocks(tall_bsc_ctx) == 7 +talloc_total_blocks(tall_bsc_ctx) == 12 ===== test_cm_service_without_lu - CM Service Request without a prior Location Updating @@ -83,7 +86,7 @@ ===== test_cm_service_without_lu: SUCCESS full talloc report on 'msgb' (total 0 bytes in 1 blocks) -talloc_total_blocks(tall_bsc_ctx) == 7 +talloc_total_blocks(tall_bsc_ctx) == 12 ===== test_two_lu - Location Update request causes a GSUP LU request to HLR @@ -340,7 +343,7 @@ ===== test_two_lu: SUCCESS full talloc report on 'msgb' (total 0 bytes in 1 blocks) -talloc_total_blocks(tall_bsc_ctx) == 7 +talloc_total_blocks(tall_bsc_ctx) == 12 ===== test_lu_unknown_tmsi - Location Update request with unknown TMSI sends ID Request for IMSI @@ -489,8 +492,8 @@ ===== test_lu_unknown_tmsi: SUCCESS full talloc report on 'msgb' (total 0 bytes in 1 blocks) -talloc_total_blocks(tall_bsc_ctx) == 7 +talloc_total_blocks(tall_bsc_ctx) == 12 full talloc report on 'msgb' (total 0 bytes in 1 blocks) -talloc_total_blocks(tall_bsc_ctx) == 7 +talloc_total_blocks(tall_bsc_ctx) == 12 diff --git a/tests/msc_vlr/msc_vlr_test_umts_authen.err b/tests/msc_vlr/msc_vlr_test_umts_authen.err index fa820f7..e6cb9a3 100644 --- a/tests/msc_vlr/msc_vlr_test_umts_authen.err +++ b/tests/msc_vlr/msc_vlr_test_umts_authen.err @@ -1,3 +1,6 @@ +full talloc report on 'msgb' (total 0 bytes in 1 blocks) +talloc_total_blocks(tall_bsc_ctx) == 12 + ===== test_umts_authen_geran - Location Update request causes a GSUP Send Auth Info request to HLR MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST @@ -459,7 +462,7 @@ ===== test_umts_authen_geran: SUCCESS full talloc report on 'msgb' (total 0 bytes in 1 blocks) -talloc_total_blocks(tall_bsc_ctx) == 7 +talloc_total_blocks(tall_bsc_ctx) == 12 ===== test_umts_authen_utran - Location Update request causes a GSUP Send Auth Info request to HLR @@ -954,7 +957,7 @@ ===== test_umts_authen_utran: SUCCESS full talloc report on 'msgb' (total 0 bytes in 1 blocks) -talloc_total_blocks(tall_bsc_ctx) == 7 +talloc_total_blocks(tall_bsc_ctx) == 12 ===== test_umts_authen_resync_geran - Location Update request causes a GSUP Send Auth Info request to HLR @@ -1167,7 +1170,7 @@ ===== test_umts_authen_resync_geran: SUCCESS full talloc report on 'msgb' (total 0 bytes in 1 blocks) -talloc_total_blocks(tall_bsc_ctx) == 7 +talloc_total_blocks(tall_bsc_ctx) == 12 ===== test_umts_authen_resync_utran - Location Update request causes a GSUP Send Auth Info request to HLR @@ -1392,7 +1395,7 @@ ===== test_umts_authen_resync_utran: SUCCESS full talloc report on 'msgb' (total 0 bytes in 1 blocks) -talloc_total_blocks(tall_bsc_ctx) == 7 +talloc_total_blocks(tall_bsc_ctx) == 12 ===== test_umts_authen_too_short_res_geran - Location Update request causes a GSUP Send Auth Info request to HLR @@ -1486,7 +1489,7 @@ ===== test_umts_authen_too_short_res_geran: SUCCESS full talloc report on 'msgb' (total 0 bytes in 1 blocks) -talloc_total_blocks(tall_bsc_ctx) == 7 +talloc_total_blocks(tall_bsc_ctx) == 12 ===== test_umts_authen_too_short_res_utran - Location Update request causes a GSUP Send Auth Info request to HLR @@ -1580,7 +1583,7 @@ ===== test_umts_authen_too_short_res_utran: SUCCESS full talloc report on 'msgb' (total 0 bytes in 1 blocks) -talloc_total_blocks(tall_bsc_ctx) == 7 +talloc_total_blocks(tall_bsc_ctx) == 12 ===== test_umts_authen_too_long_res_geran - Location Update request causes a GSUP Send Auth Info request to HLR @@ -1674,7 +1677,7 @@ ===== test_umts_authen_too_long_res_geran: SUCCESS full talloc report on 'msgb' (total 0 bytes in 1 blocks) -talloc_total_blocks(tall_bsc_ctx) == 7 +talloc_total_blocks(tall_bsc_ctx) == 12 ===== test_umts_authen_too_long_res_utran - Location Update request causes a GSUP Send Auth Info request to HLR @@ -1768,7 +1771,7 @@ ===== test_umts_authen_too_long_res_utran: SUCCESS full talloc report on 'msgb' (total 0 bytes in 1 blocks) -talloc_total_blocks(tall_bsc_ctx) == 7 +talloc_total_blocks(tall_bsc_ctx) == 12 ===== test_umts_authen_only_sres_geran - Location Update request causes a GSUP Send Auth Info request to HLR @@ -1862,7 +1865,7 @@ ===== test_umts_authen_only_sres_geran: SUCCESS full talloc report on 'msgb' (total 0 bytes in 1 blocks) -talloc_total_blocks(tall_bsc_ctx) == 7 +talloc_total_blocks(tall_bsc_ctx) == 12 ===== test_umts_authen_only_sres_utran - Location Update request causes a GSUP Send Auth Info request to HLR @@ -1956,8 +1959,8 @@ ===== test_umts_authen_only_sres_utran: SUCCESS full talloc report on 'msgb' (total 0 bytes in 1 blocks) -talloc_total_blocks(tall_bsc_ctx) == 7 +talloc_total_blocks(tall_bsc_ctx) == 12 full talloc report on 'msgb' (total 0 bytes in 1 blocks) -talloc_total_blocks(tall_bsc_ctx) == 7 +talloc_total_blocks(tall_bsc_ctx) == 12 diff --git a/tests/msc_vlr/msc_vlr_tests.c b/tests/msc_vlr/msc_vlr_tests.c index 709355c..523f74f 100644 --- a/tests/msc_vlr/msc_vlr_tests.c +++ b/tests/msc_vlr/msc_vlr_tests.c @@ -805,23 +805,29 @@ fake_time_passes(0, 0); } -static void check_talloc(void *msgb_ctx, void *msc_vlr_tests_ctx, int expected_blocks) +static void check_talloc(void *msgb_ctx, void *msc_vlr_tests_ctx) { + /* Verifying that the msgb context is empty */ talloc_report_full(msgb_ctx, stderr); /* Expecting these to stick around in msc_vlr_tests_ctx: -full talloc report on 'msgb' (total 0 bytes in 1 blocks) -talloc_total_blocks(msc_vlr_tests_ctx) == 7 -full talloc report on 'subscr_conn_test_ctx' (total 2642 bytes in 8 blocks) - struct gsup_client contains 248 bytes in 1 blocks (ref 0) 0x61300000dee0 - struct gsm_network contains 2023 bytes in 6 blocks (ref 0) 0x61700000fce0 - struct vlr_instance contains 160 bytes in 1 blocks (ref 0) 0x611000009a60 - no_gsup_server contains 15 bytes in 1 blocks (ref 0) 0x60b00000ade0 - ../../../src/libosmocore/src/rate_ctr.c:199 contains 1552 bytes in 1 blocks (ref 0) 0x61b00001eae0 - msgb contains 0 bytes in 1 blocks (ref 0) 0x60800000bf80 - */ + * talloc_total_blocks(tall_bsc_ctx) == 12 + * full talloc report on 'msc_vlr_tests_ctx' (total 3636 bytes in 12 blocks) + * struct gsup_client contains 248 bytes in 1 blocks (ref 0) 0x563a489c05f0 + * struct gsm_network contains 2031 bytes in 4 blocks (ref 0) 0x563a489bfbb0 + * struct vlr_instance contains 168 bytes in 1 blocks (ref 0) 0x563a489c04e0 + * no_gsup_server contains 15 bytes in 1 blocks (ref 0) 0x563a489c0460 + * ../../../src/libosmocore/src/rate_ctr.c:228 contains 1552 bytes in 1 blocks (ref 0) 0x563a489bfd40 + * logging contains 1357 bytes in 5 blocks (ref 0) 0x563a489bf440 + * struct log_target contains 228 bytes in 2 blocks (ref 0) 0x563a489bf9f0 + * struct log_category contains 68 bytes in 1 blocks (ref 0) 0x563a489bfb00 + * struct log_info contains 1128 bytes in 2 blocks (ref 0) 0x563a489bf4b0 + * struct log_info_cat contains 1088 bytes in 1 blocks (ref 0) 0x563a489bf540 + * msgb contains 0 bytes in 1 blocks (ref 0) 0x563a489bf3d0 + * (That's 12 counting the root ctx) + */ fprintf(stderr, "talloc_total_blocks(tall_bsc_ctx) == %zu\n", talloc_total_blocks(msc_vlr_tests_ctx)); - if (talloc_total_blocks(msc_vlr_tests_ctx) != expected_blocks) + if (talloc_total_blocks(msc_vlr_tests_ctx) != 12) talloc_report_full(msc_vlr_tests_ctx, stderr); fprintf(stderr, "\n"); } @@ -882,6 +888,9 @@ static void run_tests(int nr) { int test_nr; + + check_talloc(msgb_ctx, msc_vlr_tests_ctx); + nr--; /* arg's first test is 1, in here it's 0 */ for (test_nr = 0; msc_vlr_tests[test_nr]; test_nr++) { if (nr >= 0 && test_nr != nr) @@ -895,7 +904,7 @@ if (cmdline_opts.verbose) fprintf(stderr, "(test nr %d)\n", test_nr + 1); - check_talloc(msgb_ctx, msc_vlr_tests_ctx, 7); + check_talloc(msgb_ctx, msc_vlr_tests_ctx); } } @@ -928,7 +937,7 @@ msc_vlr_tests_ctx = talloc_named_const(NULL, 0, "msc_vlr_tests_ctx"); msgb_ctx = msgb_talloc_ctx_init(msc_vlr_tests_ctx, 0); - osmo_init_logging(&info); + osmo_init_logging2(msc_vlr_tests_ctx, &info); _log_lines = cmdline_opts.verbose; @@ -969,6 +978,6 @@ printf("Done\n"); - check_talloc(msgb_ctx, msc_vlr_tests_ctx, 7); + check_talloc(msgb_ctx, msc_vlr_tests_ctx); return 0; } diff --git a/tests/smpp/smpp_test.c b/tests/smpp/smpp_test.c index 4a3af49..1abb63b 100644 --- a/tests/smpp/smpp_test.c +++ b/tests/smpp/smpp_test.c @@ -77,7 +77,8 @@ int main(int argc, char **argv) { - osmo_init_logging(&log_info); + void *ctx = talloc_named_const(NULL, 0, "smpp_test"); + osmo_init_logging2(ctx, &log_info); log_set_use_color(osmo_stderr_target, 0); log_set_print_filename(osmo_stderr_target, 0); diff --git a/tests/sms_queue/sms_queue_test.c b/tests/sms_queue/sms_queue_test.c index 641cc5f..6ce0b88 100644 --- a/tests/sms_queue/sms_queue_test.c +++ b/tests/sms_queue/sms_queue_test.c @@ -198,10 +198,12 @@ int main(int argc, char **argv) { void *msgb_ctx; + void *logging_ctx; talloc_ctx = talloc_named_const(NULL, 0, "sms_queue_test"); - msgb_ctx = msgb_talloc_ctx_init(NULL, 0); - osmo_init_logging(&info); + msgb_ctx = msgb_talloc_ctx_init(talloc_ctx, 0); + logging_ctx = talloc_named_const(talloc_ctx, 0, "logging"); + osmo_init_logging2(logging_ctx, &info); OSMO_ASSERT(osmo_stderr_target); log_set_use_color(osmo_stderr_target, 0); @@ -222,6 +224,7 @@ OSMO_ASSERT(talloc_total_blocks(msgb_ctx) == 1); OSMO_ASSERT(talloc_total_size(msgb_ctx) == 0); talloc_free(msgb_ctx); + talloc_free(logging_ctx); if (talloc_total_blocks(talloc_ctx) != 1 || talloc_total_size(talloc_ctx) != 0) -- To view, visit https://gerrit.osmocom.org/7599 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: Iae07ae60230c7bab28e52b5df97fa3844778158e Gerrit-PatchSet: 1 Gerrit-Project: osmo-msc Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Neels Hofmeyr Gerrit-Reviewer: Vadim Yanitskiy From gerrit-no-reply at lists.osmocom.org Wed Apr 4 16:54:05 2018 From: gerrit-no-reply at lists.osmocom.org (Neels Hofmeyr) Date: Wed, 4 Apr 2018 16:54:05 +0000 Subject: [MERGED] osmo-msc[master]: drop some dead definitions (gsm_data.h, gsup_client.c) In-Reply-To: References: Message-ID: Neels Hofmeyr has submitted this change and it was merged. Change subject: drop some dead definitions (gsm_data.h, gsup_client.c) ...................................................................... drop some dead definitions (gsm_data.h, gsup_client.c) Change-Id: Icad01d0ad8fa68293160bc56543b9c3dcafc50bb --- M include/osmocom/msc/gsm_data.h M src/libgsupclient/gsup_client.c 2 files changed, 0 insertions(+), 5 deletions(-) Approvals: Vadim Yanitskiy: Looks good to me, but someone else must approve Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/include/osmocom/msc/gsm_data.h b/include/osmocom/msc/gsm_data.h index f61a6cf..1e5d567 100644 --- a/include/osmocom/msc/gsm_data.h +++ b/include/osmocom/msc/gsm_data.h @@ -359,9 +359,6 @@ char text[SMS_TEXT_SIZE]; }; -extern void *tall_bsc_ctx; -extern int ipacc_rtp_direct; - struct gsm_subscriber_connection *msc_subscr_con_allocate(struct gsm_network *network); void msc_subscr_con_free(struct gsm_subscriber_connection *conn); diff --git a/src/libgsupclient/gsup_client.c b/src/libgsupclient/gsup_client.c index 9051b31..1f395ee 100644 --- a/src/libgsupclient/gsup_client.c +++ b/src/libgsupclient/gsup_client.c @@ -33,8 +33,6 @@ #include #include -extern void *tall_bsc_ctx; - static void start_test_procedure(struct gsup_client *gsupc); static void gsup_client_send_ping(struct gsup_client *gsupc) -- To view, visit https://gerrit.osmocom.org/7610 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: Icad01d0ad8fa68293160bc56543b9c3dcafc50bb Gerrit-PatchSet: 1 Gerrit-Project: osmo-msc Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Neels Hofmeyr Gerrit-Reviewer: Vadim Yanitskiy From gerrit-no-reply at lists.osmocom.org Wed Apr 4 16:54:10 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Wed, 4 Apr 2018 16:54:10 +0000 Subject: libosmocore[master]: gsm0480: drop messages with incorrect data length In-Reply-To: References: Message-ID: Patch Set 2: Code-Review+2 > Probably, we would need to also change the logging > target for the whole GSM 04.80 code. oh ys. I had no idea it's using '0' everywhere, that seems odd. -- To view, visit https://gerrit.osmocom.org/7630 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I2a169b0b84aa26ea2521edd55ff005c27ae6d808 Gerrit-PatchSet: 2 Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Owner: Vadim Yanitskiy Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Vadim Yanitskiy Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Wed Apr 4 16:54:22 2018 From: gerrit-no-reply at lists.osmocom.org (Neels Hofmeyr) Date: Wed, 4 Apr 2018 16:54:22 +0000 Subject: [MERGED] osmo-msc[master]: test_reject_concurrency: missing assert In-Reply-To: References: Message-ID: Neels Hofmeyr has submitted this change and it was merged. Change subject: test_reject_concurrency: missing assert ...................................................................... test_reject_concurrency: missing assert I broke this test during dev and saw the failure being noticed only in the next test when DTAP is expected again. Verify success right there, instead. Change-Id: Ifdde3a6fa5835203c34c40db77761f2e90c0d5ff --- M tests/msc_vlr/msc_vlr_test_reject_concurrency.c M tests/msc_vlr/msc_vlr_test_reject_concurrency.err 2 files changed, 2 insertions(+), 0 deletions(-) Approvals: Vadim Yanitskiy: Looks good to me, but someone else must approve Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/tests/msc_vlr/msc_vlr_test_reject_concurrency.c b/tests/msc_vlr/msc_vlr_test_reject_concurrency.c index b6f6558..08fc9e7 100644 --- a/tests/msc_vlr/msc_vlr_test_reject_concurrency.c +++ b/tests/msc_vlr/msc_vlr_test_reject_concurrency.c @@ -219,6 +219,7 @@ ms_sends_msg("05247803305886089910070000006402"); VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d"); VERBOSE_ASSERT(cm_service_result_sent, == RES_NONE, "%d"); + VERBOSE_ASSERT(dtap_tx_confirmed, == true, "%d"); EXPECT_CONN_COUNT(1); BTW("The first LU can still complete"); diff --git a/tests/msc_vlr/msc_vlr_test_reject_concurrency.err b/tests/msc_vlr/msc_vlr_test_reject_concurrency.err index a045e67..c58d099 100644 --- a/tests/msc_vlr/msc_vlr_test_reject_concurrency.err +++ b/tests/msc_vlr/msc_vlr_test_reject_concurrency.err @@ -333,6 +333,7 @@ DREF IMSI:901700000004620: MSC conn use - dtap == 1 (0x4) lu_result_sent == 0 cm_service_result_sent == 0 + dtap_tx_confirmed == 1 llist_count(&net->subscr_conns) == 1 --- - The first LU can still complete -- To view, visit https://gerrit.osmocom.org/7611 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: Ifdde3a6fa5835203c34c40db77761f2e90c0d5ff Gerrit-PatchSet: 1 Gerrit-Project: osmo-msc Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Neels Hofmeyr Gerrit-Reviewer: Vadim Yanitskiy From gerrit-no-reply at lists.osmocom.org Wed Apr 4 16:54:35 2018 From: gerrit-no-reply at lists.osmocom.org (Neels Hofmeyr) Date: Wed, 4 Apr 2018 16:54:35 +0000 Subject: [MERGED] osmo-msc[master]: cosmetic: rx_bssmap: read message type once into local var In-Reply-To: References: Message-ID: Neels Hofmeyr has submitted this change and it was merged. Change subject: cosmetic: rx_bssmap: read message type once into local var ...................................................................... cosmetic: rx_bssmap: read message type once into local var Instead of referencing msg->l3h[0] all the time, use local variable msg_type. Related: OS#3122 Change-Id: If70c9fa00edd462d3470bded6eb2c6521e4d9234 --- M src/libmsc/a_iface_bssap.c 1 file changed, 6 insertions(+), 4 deletions(-) Approvals: Vadim Yanitskiy: Looks good to me, but someone else must approve Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/src/libmsc/a_iface_bssap.c b/src/libmsc/a_iface_bssap.c index 3c1bcc8..743814c 100644 --- a/src/libmsc/a_iface_bssap.c +++ b/src/libmsc/a_iface_bssap.c @@ -554,11 +554,13 @@ struct gsm_subscriber_connection *conn; struct tlv_parsed tp; int rc; + uint8_t msg_type; if (msgb_l3len(msg) < 1) { LOGP(DBSSAP, LOGL_NOTICE, "Error: No data received -- discarding message!\n"); return -1; } + msg_type = msg->l3h[0]; rc = tlv_parse(&tp, gsm0808_att_tlvdef(), msg->l3h + 1, msgb_l3len(msg) - 1, 0, 0); if (rc < 0) { @@ -568,7 +570,7 @@ } /* Only message types allowed without a 'conn' */ - switch (msg->l3h[0]) { + switch (msg_type) { case BSS_MAP_MSG_COMPLETE_LAYER_3: return bssmap_rx_l3_compl(scu, a_conn_info, msg, &tp); case BSS_MAP_MSG_CLEAR_COMPLETE: @@ -583,9 +585,9 @@ return -EINVAL; } - LOGPCONN(conn, LOGL_DEBUG, "Rx BSSMAP DT1 %s\n", gsm0808_bssmap_name(msg->l3h[0])); + LOGPCONN(conn, LOGL_DEBUG, "Rx BSSMAP DT1 %s\n", gsm0808_bssmap_name(msg_type)); - switch (msg->l3h[0]) { + switch (msg_type) { case BSS_MAP_MSG_CLEAR_RQST: return bssmap_rx_clear_rqst(conn, msg, &tp); case BSS_MAP_MSG_CLASSMARK_UPDATE: @@ -601,7 +603,7 @@ case BSS_MAP_MSG_ASSIGMENT_COMPLETE: return bssmap_rx_ass_compl(conn, msg, &tp); default: - LOGPCONN(conn, LOGL_ERROR, "Unimplemented msg type: %s\n", gsm0808_bssmap_name(msg->l3h[0])); + LOGPCONN(conn, LOGL_ERROR, "Unimplemented msg type: %s\n", gsm0808_bssmap_name(msg_type)); return -EINVAL; } -- To view, visit https://gerrit.osmocom.org/7612 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: If70c9fa00edd462d3470bded6eb2c6521e4d9234 Gerrit-PatchSet: 1 Gerrit-Project: osmo-msc Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Neels Hofmeyr Gerrit-Reviewer: Vadim Yanitskiy From gerrit-no-reply at lists.osmocom.org Wed Apr 4 16:54:55 2018 From: gerrit-no-reply at lists.osmocom.org (Neels Hofmeyr) Date: Wed, 4 Apr 2018 16:54:55 +0000 Subject: [MERGED] osmo-msc[master]: cosmetic: rename gsm_subscriber_connection->conn_fsm to ->fi In-Reply-To: References: Message-ID: Neels Hofmeyr has submitted this change and it was merged. Change subject: cosmetic: rename gsm_subscriber_connection->conn_fsm to ->fi ...................................................................... cosmetic: rename gsm_subscriber_connection->conn_fsm to ->fi Match osmo-bsc's naming of the subscriber connection's FSM instance; 'conn->fi' makes more sense anyway than 'conn->conn_fsm'. BTW, an upcoming commit will do away with the legacy from libbsc/libmsc duality and firmly glue the conn allocation to the fi. Related: OS#3122 Change-Id: If442f2ba78d9722b1065ec30c9a13f372b6a8caa --- M include/osmocom/msc/gsm_data.h M src/libmsc/gsm_04_08.c M src/libmsc/msc_vty.c M src/libmsc/osmo_msc.c M src/libmsc/subscr_conn.c M src/libmsc/transaction.c M tests/msc_vlr/msc_vlr_test_authen_reuse.c M tests/msc_vlr/msc_vlr_test_call.c M tests/msc_vlr/msc_vlr_test_gsm_authen.c M tests/msc_vlr/msc_vlr_test_gsm_ciph.c M tests/msc_vlr/msc_vlr_test_ms_timeout.c M tests/msc_vlr/msc_vlr_test_no_authen.c M tests/msc_vlr/msc_vlr_test_reject_concurrency.c M tests/msc_vlr/msc_vlr_test_rest.c M tests/msc_vlr/msc_vlr_test_umts_authen.c 15 files changed, 54 insertions(+), 53 deletions(-) Approvals: Vadim Yanitskiy: Looks good to me, but someone else must approve Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/include/osmocom/msc/gsm_data.h b/include/osmocom/msc/gsm_data.h index 1e5d567..df15eea 100644 --- a/include/osmocom/msc/gsm_data.h +++ b/include/osmocom/msc/gsm_data.h @@ -75,6 +75,9 @@ /* global linked list of subscriber_connections */ struct llist_head entry; + /* FSM instance to control the subscriber connection's permissions and lifetime. */ + struct osmo_fsm_inst *fi; + /* usage count. If this drops to zero, we start the release * towards A/Iu */ uint32_t use_count; @@ -91,8 +94,6 @@ uint8_t expire_timer_stopped; /* SMS helpers for libmsc */ uint8_t next_rp_ref; - - struct osmo_fsm_inst *conn_fsm; /* Are we part of a special "silent" call */ int silent_call; diff --git a/src/libmsc/gsm_04_08.c b/src/libmsc/gsm_04_08.c index 105bd1f..1bb6fa7 100644 --- a/src/libmsc/gsm_04_08.c +++ b/src/libmsc/gsm_04_08.c @@ -393,7 +393,7 @@ DEBUGP(DMM, "LU/new-LAC: %u/%u\n", old_lai.lac, new_lai.lac); is_utran = (conn->via_ran == RAN_UTRAN_IU); - lu_fsm = vlr_loc_update(conn->conn_fsm, + lu_fsm = vlr_loc_update(conn->fi, SUBSCR_CONN_E_ACCEPTED, SUBSCR_CONN_E_CN_CLOSE, (void*)&conn_from_lu, @@ -759,7 +759,7 @@ memcpy(conn->classmark.classmark2, classmark2, classmark2_len); conn->classmark.classmark2_len = classmark2_len; - if (conn->conn_fsm) { + if (conn->fi) { if (msc_subscr_conn_is_accepted(conn)) return cm_serv_reuse_conn(conn, mi-1); LOGP(DMM, LOGL_ERROR, "%s: connection already in use\n", @@ -776,7 +776,7 @@ } is_utran = (conn->via_ran == RAN_UTRAN_IU); - vlr_proc_acc_req(conn->conn_fsm, + vlr_proc_acc_req(conn->fi, SUBSCR_CONN_E_ACCEPTED, SUBSCR_CONN_E_CN_CLOSE, (void*)&conn_from_cm_service_req, @@ -1181,7 +1181,7 @@ conn->classmark.classmark2_len = *classmark2_lv; is_utran = (conn->via_ran == RAN_UTRAN_IU); - vlr_proc_acc_req(conn->conn_fsm, + vlr_proc_acc_req(conn->fi, SUBSCR_CONN_E_ACCEPTED, SUBSCR_CONN_E_CN_CLOSE, (void*)&conn_from_paging_resp, diff --git a/src/libmsc/msc_vty.c b/src/libmsc/msc_vty.c index b96f6cd..33613e9 100644 --- a/src/libmsc/msc_vty.c +++ b/src/libmsc/msc_vty.c @@ -481,7 +481,7 @@ conn->use_tokens, conn->received_cm_service_request ? 'C' : '-', conn->encr.alg_id, - conn->conn_fsm ? osmo_fsm_inst_state_name(conn->conn_fsm) : "-", + conn->fi ? osmo_fsm_inst_state_name(conn->fi) : "-", VTY_NEWLINE); } diff --git a/src/libmsc/osmo_msc.c b/src/libmsc/osmo_msc.c index 62a7e8a..34f705c 100644 --- a/src/libmsc/osmo_msc.c +++ b/src/libmsc/osmo_msc.c @@ -88,16 +88,16 @@ { if (!conn) return; - if (!conn->conn_fsm) + if (!conn->fi) return; - if (!(conn->conn_fsm->state == SUBSCR_CONN_S_ACCEPTED - || conn->conn_fsm->state == SUBSCR_CONN_S_COMMUNICATING)) { + if (!(conn->fi->state == SUBSCR_CONN_S_ACCEPTED + || conn->fi->state == SUBSCR_CONN_S_COMMUNICATING)) { DEBUGP(DMM, "%s: %s: conn still being established (%s)\n", vlr_subscr_name(conn->vsub), __func__, - osmo_fsm_inst_state_name(conn->conn_fsm)); + osmo_fsm_inst_state_name(conn->fi)); return; } - osmo_fsm_inst_dispatch(conn->conn_fsm, SUBSCR_CONN_E_RELEASE_WHEN_UNUSED, NULL); + osmo_fsm_inst_dispatch(conn->fi, SUBSCR_CONN_E_RELEASE_WHEN_UNUSED, NULL); } /* receive a Level 3 Complete message and return MSC_CONN_ACCEPT or @@ -110,7 +110,7 @@ subscr_conn_release_when_unused(conn); - /* If this should be kept, the conn->conn_fsm has placed a use_count */ + /* If this should be kept, the conn->fi has placed a use_count */ msc_subscr_conn_put(conn, MSC_CONN_USE_COMPL_L3); /* Always return acceptance, because even if the conn was not accepted, @@ -268,11 +268,11 @@ DEBUGP(DRLL, "Freeing subscriber connection" " with NULL subscriber\n"); - if (!conn->conn_fsm) + if (!conn->fi) return; - osmo_fsm_inst_term(conn->conn_fsm, - (conn->conn_fsm->state == SUBSCR_CONN_S_RELEASED) + osmo_fsm_inst_term(conn->fi, + (conn->fi->state == SUBSCR_CONN_S_RELEASED) ? OSMO_FSM_TERM_REGULAR : OSMO_FSM_TERM_ERROR, NULL); @@ -322,8 +322,8 @@ } } -/* If the conn->conn_fsm is still present, dispatch SUBSCR_CONN_E_CN_CLOSE - * event to gracefully terminate the connection. If the conn_fsm is already +/* If the conn->fi is still present, dispatch SUBSCR_CONN_E_CN_CLOSE + * event to gracefully terminate the connection. If the fi is already * cleared, call msc_subscr_conn_release_all() to take release actions. * \param cause a GSM_CAUSE_* constant, e.g. GSM_CAUSE_AUTH_FAILED. */ @@ -338,22 +338,22 @@ vlr_subscr_name(conn->vsub), cause); return; } - if (!conn->conn_fsm) { + if (!conn->fi) { DEBUGP(DMM, "msc_subscr_conn_close(vsub=%s, cause=%u): no conn fsm," " releasing directly without release event.\n", vlr_subscr_name(conn->vsub), cause); - /* In case of an IMSI Detach, we don't have conn_fsm. Release + /* In case of an IMSI Detach, we don't have fi. Release * anyway to ensure a timely Iu Release / BSSMAP Clear. */ msc_subscr_conn_release_all(conn, cause); return; } - if (conn->conn_fsm->state == SUBSCR_CONN_S_RELEASED) { + if (conn->fi->state == SUBSCR_CONN_S_RELEASED) { DEBUGP(DMM, "msc_subscr_conn_close(vsub=%s, cause=%u):" " conn fsm already releasing, ignore.\n", vlr_subscr_name(conn->vsub), cause); return; } - osmo_fsm_inst_dispatch(conn->conn_fsm, SUBSCR_CONN_E_CN_CLOSE, &cause); + osmo_fsm_inst_dispatch(conn->fi, SUBSCR_CONN_E_CN_CLOSE, &cause); } /* increment the ref-count. Needs to be called by every user */ diff --git a/src/libmsc/subscr_conn.c b/src/libmsc/subscr_conn.c index ca93a03..248c463 100644 --- a/src/libmsc/subscr_conn.c +++ b/src/libmsc/subscr_conn.c @@ -225,7 +225,7 @@ if (!conn) return; - conn->conn_fsm = NULL; + conn->fi = NULL; msc_subscr_conn_close(conn, cause); msc_subscr_conn_put(conn, MSC_CONN_USE_FSM); } @@ -329,7 +329,7 @@ struct osmo_fsm_inst *fi; OSMO_ASSERT(conn); - if (conn->conn_fsm) { + if (conn->fi) { LOGP(DMM, LOGL_ERROR, "%s: Error: connection already in use\n", id); return -EINVAL; @@ -349,8 +349,8 @@ "%s: Failed to allocate subscr conn master FSM\n", id); return -ENOMEM; } - conn->conn_fsm = fi; - osmo_fsm_inst_dispatch(conn->conn_fsm, SUBSCR_CONN_E_START, NULL); + conn->fi = fi; + osmo_fsm_inst_dispatch(conn->fi, SUBSCR_CONN_E_START, NULL); return 0; } @@ -360,10 +360,10 @@ return false; if (!conn->vsub) return false; - if (!conn->conn_fsm) + if (!conn->fi) return false; - if (!(conn->conn_fsm->state == SUBSCR_CONN_S_ACCEPTED - || conn->conn_fsm->state == SUBSCR_CONN_S_COMMUNICATING)) + if (!(conn->fi->state == SUBSCR_CONN_S_ACCEPTED + || conn->fi->state == SUBSCR_CONN_S_COMMUNICATING)) return false; return true; } @@ -374,8 +374,8 @@ /* This function is called to indicate that *some* communication is happening with the phone. * Late in the process, that may be a Release Confirm and the FSM and conn are already in * teardown. No need to signal SUBSCR_CONN_E_COMMUNICATING then. */ - if (conn->conn_fsm) - osmo_fsm_inst_dispatch(conn->conn_fsm, SUBSCR_CONN_E_COMMUNICATING, NULL); + if (conn->fi) + osmo_fsm_inst_dispatch(conn->fi, SUBSCR_CONN_E_COMMUNICATING, NULL); } void msc_subscr_conn_init(void) diff --git a/src/libmsc/transaction.c b/src/libmsc/transaction.c index 4a3b064..5b033dc 100644 --- a/src/libmsc/transaction.c +++ b/src/libmsc/transaction.c @@ -158,8 +158,8 @@ trans->conn = NULL; talloc_free(trans); - /* trans_free() should always happen while the conn_fsm is still around. */ - OSMO_ASSERT(conn->conn_fsm); + /* trans_free() should always happen while the fi is still around. */ + OSMO_ASSERT(conn->fi); /* Possibly this was the last transaction used by this conn. */ subscr_conn_release_when_unused(conn); diff --git a/tests/msc_vlr/msc_vlr_test_authen_reuse.c b/tests/msc_vlr/msc_vlr_test_authen_reuse.c index 6fd1e66..c9a9d09 100644 --- a/tests/msc_vlr/msc_vlr_test_authen_reuse.c +++ b/tests/msc_vlr/msc_vlr_test_authen_reuse.c @@ -166,7 +166,7 @@ "03575886" /* classmark 2 */ "089910070000106005" /* IMSI */); OSMO_ASSERT(g_conn); - OSMO_ASSERT(g_conn->conn_fsm); + OSMO_ASSERT(g_conn->fi); OSMO_ASSERT(g_conn->vsub); VERBOSE_ASSERT(cm_service_result_sent, == RES_NONE, "%d"); VERBOSE_ASSERT(auth_request_sent, == true, "%d"); @@ -217,7 +217,7 @@ "03575886" /* classmark 2 */ "089910070000106005" /* IMSI */); OSMO_ASSERT(g_conn); - OSMO_ASSERT(g_conn->conn_fsm); + OSMO_ASSERT(g_conn->fi); OSMO_ASSERT(g_conn->vsub); VERBOSE_ASSERT(cm_service_result_sent, == RES_NONE, "%d"); VERBOSE_ASSERT(auth_request_sent, == false, "%d"); diff --git a/tests/msc_vlr/msc_vlr_test_call.c b/tests/msc_vlr/msc_vlr_test_call.c index 7f97c35..6359865 100644 --- a/tests/msc_vlr/msc_vlr_test_call.c +++ b/tests/msc_vlr/msc_vlr_test_call.c @@ -172,7 +172,7 @@ "03575886" /* classmark 2 */ "089910070000106005" /* IMSI */); OSMO_ASSERT(g_conn); - OSMO_ASSERT(g_conn->conn_fsm); + OSMO_ASSERT(g_conn->fi); OSMO_ASSERT(g_conn->vsub); VERBOSE_ASSERT(cm_service_result_sent, == RES_NONE, "%d"); VERBOSE_ASSERT(auth_request_sent, == true, "%d"); @@ -355,7 +355,7 @@ "03575886" /* classmark 2 */ "089910070000106005" /* IMSI */); OSMO_ASSERT(g_conn); - OSMO_ASSERT(g_conn->conn_fsm); + OSMO_ASSERT(g_conn->fi); OSMO_ASSERT(g_conn->vsub); VERBOSE_ASSERT(cm_service_result_sent, == RES_NONE, "%d"); VERBOSE_ASSERT(auth_request_sent, == true, "%d"); @@ -434,7 +434,7 @@ "03575886" /* classmark 2 */ "089910070000106005" /* IMSI */); OSMO_ASSERT(g_conn); - OSMO_ASSERT(g_conn->conn_fsm); + OSMO_ASSERT(g_conn->fi); OSMO_ASSERT(g_conn->vsub); VERBOSE_ASSERT(cm_service_result_sent, == RES_NONE, "%d"); VERBOSE_ASSERT(auth_request_sent, == true, "%d"); diff --git a/tests/msc_vlr/msc_vlr_test_gsm_authen.c b/tests/msc_vlr/msc_vlr_test_gsm_authen.c index dda84f6..5176306 100644 --- a/tests/msc_vlr/msc_vlr_test_gsm_authen.c +++ b/tests/msc_vlr/msc_vlr_test_gsm_authen.c @@ -99,7 +99,7 @@ cm_service_result_sent = RES_NONE; ms_sends_msg("05247803305886089910070000006402"); OSMO_ASSERT(g_conn); - OSMO_ASSERT(g_conn->conn_fsm); + OSMO_ASSERT(g_conn->fi); OSMO_ASSERT(g_conn->vsub); VERBOSE_ASSERT(cm_service_result_sent, == RES_NONE, "%d"); VERBOSE_ASSERT(auth_request_sent, == true, "%d"); @@ -316,7 +316,7 @@ cm_service_result_sent = RES_NONE; ms_sends_msg("05247803305886" "05f4" "03020100"); OSMO_ASSERT(g_conn); - OSMO_ASSERT(g_conn->conn_fsm); + OSMO_ASSERT(g_conn->fi); OSMO_ASSERT(g_conn->vsub); VERBOSE_ASSERT(cm_service_result_sent, == RES_NONE, "%d"); VERBOSE_ASSERT(auth_request_sent, == true, "%d"); @@ -804,7 +804,7 @@ "03305886" /* classmark 2: GSM phase 2 */ "089910070000106005" /* IMSI */); OSMO_ASSERT(g_conn); - OSMO_ASSERT(g_conn->conn_fsm); + OSMO_ASSERT(g_conn->fi); OSMO_ASSERT(g_conn->vsub); VERBOSE_ASSERT(cm_service_result_sent, == RES_NONE, "%d"); VERBOSE_ASSERT(auth_request_sent, == true, "%d"); diff --git a/tests/msc_vlr/msc_vlr_test_gsm_ciph.c b/tests/msc_vlr/msc_vlr_test_gsm_ciph.c index d8ea6ba..8a05b3f 100644 --- a/tests/msc_vlr/msc_vlr_test_gsm_ciph.c +++ b/tests/msc_vlr/msc_vlr_test_gsm_ciph.c @@ -101,7 +101,7 @@ auth_request_expect_rand = "12aca96fb4ffdea5c985cbafa9b6e18b"; ms_sends_msg("05247803305886089910070000006402"); OSMO_ASSERT(g_conn); - OSMO_ASSERT(g_conn->conn_fsm); + OSMO_ASSERT(g_conn->fi); OSMO_ASSERT(g_conn->vsub); VERBOSE_ASSERT(auth_request_sent, == true, "%d"); VERBOSE_ASSERT(cm_service_result_sent, == RES_NONE, "%d"); @@ -340,7 +340,7 @@ auth_request_expect_autn = NULL; ms_sends_msg("05247803305886" "05f4" "03020100"); OSMO_ASSERT(g_conn); - OSMO_ASSERT(g_conn->conn_fsm); + OSMO_ASSERT(g_conn->fi); OSMO_ASSERT(g_conn->vsub); VERBOSE_ASSERT(auth_request_sent, == true, "%d"); VERBOSE_ASSERT(cm_service_result_sent, == RES_NONE, "%d"); @@ -934,7 +934,7 @@ "03575886" /* classmark 2 */ "089910070000106005" /* IMSI */); OSMO_ASSERT(g_conn); - OSMO_ASSERT(g_conn->conn_fsm); + OSMO_ASSERT(g_conn->fi); OSMO_ASSERT(g_conn->vsub); VERBOSE_ASSERT(cm_service_result_sent, == RES_NONE, "%d"); VERBOSE_ASSERT(auth_request_sent, == true, "%d"); diff --git a/tests/msc_vlr/msc_vlr_test_ms_timeout.c b/tests/msc_vlr/msc_vlr_test_ms_timeout.c index c81f5b5..a36027c 100644 --- a/tests/msc_vlr/msc_vlr_test_ms_timeout.c +++ b/tests/msc_vlr/msc_vlr_test_ms_timeout.c @@ -148,7 +148,7 @@ cm_service_result_sent = RES_NONE; ms_sends_msg("05247803305886089910070000006402"); OSMO_ASSERT(g_conn); - OSMO_ASSERT(g_conn->conn_fsm); + OSMO_ASSERT(g_conn->fi); OSMO_ASSERT(g_conn->vsub); VERBOSE_ASSERT(cm_service_result_sent, == RES_NONE, "%d"); VERBOSE_ASSERT(auth_request_sent, == true, "%d"); diff --git a/tests/msc_vlr/msc_vlr_test_no_authen.c b/tests/msc_vlr/msc_vlr_test_no_authen.c index 59c5603..b20f9d7 100644 --- a/tests/msc_vlr/msc_vlr_test_no_authen.c +++ b/tests/msc_vlr/msc_vlr_test_no_authen.c @@ -65,7 +65,7 @@ cm_service_result_sent = RES_NONE; ms_sends_msg("05247803305886089910070000006402"); OSMO_ASSERT(g_conn); - OSMO_ASSERT(g_conn->conn_fsm); + OSMO_ASSERT(g_conn->fi); OSMO_ASSERT(g_conn->vsub); VERBOSE_ASSERT(cm_service_result_sent, == RES_ACCEPT, "%d"); EXPECT_ACCEPTED(true); @@ -227,7 +227,7 @@ cm_service_result_sent = RES_NONE; ms_sends_msg("05247803305886" "05f4" "03020100"); OSMO_ASSERT(g_conn); - OSMO_ASSERT(g_conn->conn_fsm); + OSMO_ASSERT(g_conn->fi); OSMO_ASSERT(g_conn->vsub); VERBOSE_ASSERT(cm_service_result_sent, == RES_ACCEPT, "%d"); EXPECT_ACCEPTED(true); diff --git a/tests/msc_vlr/msc_vlr_test_reject_concurrency.c b/tests/msc_vlr/msc_vlr_test_reject_concurrency.c index 08fc9e7..ceab109 100644 --- a/tests/msc_vlr/msc_vlr_test_reject_concurrency.c +++ b/tests/msc_vlr/msc_vlr_test_reject_concurrency.c @@ -109,7 +109,7 @@ cm_service_result_sent = RES_NONE; ms_sends_msg("05247803305886089910070000006402"); OSMO_ASSERT(g_conn); - OSMO_ASSERT(g_conn->conn_fsm); + OSMO_ASSERT(g_conn->fi); OSMO_ASSERT(g_conn->vsub); VERBOSE_ASSERT(cm_service_result_sent, == RES_ACCEPT, "%d"); EXPECT_ACCEPTED(true); diff --git a/tests/msc_vlr/msc_vlr_test_rest.c b/tests/msc_vlr/msc_vlr_test_rest.c index 1a403c3..3f843f0 100644 --- a/tests/msc_vlr/msc_vlr_test_rest.c +++ b/tests/msc_vlr/msc_vlr_test_rest.c @@ -36,8 +36,8 @@ btw("conn_fsm present, in state NEW"); OSMO_ASSERT(msc_create_conn_fsm(g_conn, "test") == 0); - OSMO_ASSERT(g_conn->conn_fsm); - OSMO_ASSERT(g_conn->conn_fsm->state == SUBSCR_CONN_S_NEW); + OSMO_ASSERT(g_conn->fi); + OSMO_ASSERT(g_conn->fi->state == SUBSCR_CONN_S_NEW); EXPECT_ACCEPTED(false); thwart_rx_non_initial_requests(); @@ -48,13 +48,13 @@ OSMO_ASSERT(g_conn->vsub); /* mark as silent call so it sticks around */ g_conn->silent_call = 1; - osmo_fsm_inst_state_chg(g_conn->conn_fsm, SUBSCR_CONN_S_ACCEPTED, 0, 0); + osmo_fsm_inst_state_chg(g_conn->fi, SUBSCR_CONN_S_ACCEPTED, 0, 0); EXPECT_CONN_COUNT(1); EXPECT_ACCEPTED(true); btw("CLOSE event marks conn_fsm as released and frees the conn"); expect_bssap_clear(); - osmo_fsm_inst_dispatch(g_conn->conn_fsm, SUBSCR_CONN_E_CN_CLOSE, NULL); + osmo_fsm_inst_dispatch(g_conn->fi, SUBSCR_CONN_E_CN_CLOSE, NULL); VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); EXPECT_CONN_COUNT(0); diff --git a/tests/msc_vlr/msc_vlr_test_umts_authen.c b/tests/msc_vlr/msc_vlr_test_umts_authen.c index b5a55fc..7b410df 100644 --- a/tests/msc_vlr/msc_vlr_test_umts_authen.c +++ b/tests/msc_vlr/msc_vlr_test_umts_authen.c @@ -196,7 +196,7 @@ "03575886" /* classmark 2 */ "089910070000106005" /* IMSI */); OSMO_ASSERT(g_conn); - OSMO_ASSERT(g_conn->conn_fsm); + OSMO_ASSERT(g_conn->fi); OSMO_ASSERT(g_conn->vsub); VERBOSE_ASSERT(cm_service_result_sent, == RES_NONE, "%d"); VERBOSE_ASSERT(auth_request_sent, == true, "%d"); -- To view, visit https://gerrit.osmocom.org/7613 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: If442f2ba78d9722b1065ec30c9a13f372b6a8caa Gerrit-PatchSet: 1 Gerrit-Project: osmo-msc Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Neels Hofmeyr Gerrit-Reviewer: Vadim Yanitskiy From gerrit-no-reply at lists.osmocom.org Wed Apr 4 16:55:15 2018 From: gerrit-no-reply at lists.osmocom.org (Neels Hofmeyr) Date: Wed, 4 Apr 2018 16:55:15 +0000 Subject: [MERGED] osmo-msc[master]: cosmetic: rename subscr_conn_from to complete_layer3_type In-Reply-To: References: Message-ID: Neels Hofmeyr has submitted this change and it was merged. Change subject: cosmetic: rename subscr_conn_from to complete_layer3_type ...................................................................... cosmetic: rename subscr_conn_from to complete_layer3_type 'subscr_conn_from' could mean anything: from what, RAN type? BSS identifier? MM action? Clearly name it as the Complete Layer 3 kind it represents. Related: OS#3122 Change-Id: I6263a80e6db01c2ca48df6c58b05e2fd19347057 --- M include/osmocom/msc/osmo_msc.h M src/libmsc/gsm_04_08.c M src/libmsc/subscr_conn.c 3 files changed, 11 insertions(+), 11 deletions(-) Approvals: Vadim Yanitskiy: Looks good to me, but someone else must approve Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/include/osmocom/msc/osmo_msc.h b/include/osmocom/msc/osmo_msc.h index 6fe529e..d838e89 100644 --- a/include/osmocom/msc/osmo_msc.h +++ b/include/osmocom/msc/osmo_msc.h @@ -36,17 +36,17 @@ SUBSCR_CONN_S_RELEASED, }; -enum subscr_conn_from { +enum complete_layer3_type { SUBSCR_CONN_FROM_INVALID, SUBSCR_CONN_FROM_LU, SUBSCR_CONN_FROM_CM_SERVICE_REQ, SUBSCR_CONN_FROM_PAGING_RESP, }; -extern const struct value_string subscr_conn_from_names[]; -static inline const char *subscr_conn_from_name(enum subscr_conn_from val) +extern const struct value_string complete_layer3_type_names[]; +static inline const char *complete_layer3_type_name(enum complete_layer3_type val) { - return get_value_string(subscr_conn_from_names, val); + return get_value_string(complete_layer3_type_names, val); } enum msc_compl_l3_rc { diff --git a/src/libmsc/gsm_04_08.c b/src/libmsc/gsm_04_08.c index 1bb6fa7..4624e90 100644 --- a/src/libmsc/gsm_04_08.c +++ b/src/libmsc/gsm_04_08.c @@ -317,7 +317,7 @@ * Keep this function non-static for direct invocation by unit tests. */ int mm_rx_loc_upd_req(struct gsm_subscriber_connection *conn, struct msgb *msg) { - static const enum subscr_conn_from conn_from_lu = SUBSCR_CONN_FROM_LU; + static const enum complete_layer3_type conn_from_lu = SUBSCR_CONN_FROM_LU; struct gsm_network *net = conn->network; struct gsm48_hdr *gh = msgb_l3(msg); struct gsm48_loc_upd_req *lu; @@ -687,7 +687,7 @@ */ int gsm48_rx_mm_serv_req(struct gsm_subscriber_connection *conn, struct msgb *msg) { - static const enum subscr_conn_from conn_from_cm_service_req = + static const enum complete_layer3_type conn_from_cm_service_req = SUBSCR_CONN_FROM_CM_SERVICE_REQ; struct gsm_network *net = conn->network; uint8_t mi_type; @@ -1144,7 +1144,7 @@ /* Receive a PAGING RESPONSE message from the MS */ static int gsm48_rx_rr_pag_resp(struct gsm_subscriber_connection *conn, struct msgb *msg) { - static const enum subscr_conn_from conn_from_paging_resp = + static const enum complete_layer3_type conn_from_paging_resp = SUBSCR_CONN_FROM_PAGING_RESP; struct gsm_network *net = conn->network; struct gsm48_hdr *gh = msgb_l3(msg); diff --git a/src/libmsc/subscr_conn.c b/src/libmsc/subscr_conn.c index 248c463..526ad92 100644 --- a/src/libmsc/subscr_conn.c +++ b/src/libmsc/subscr_conn.c @@ -46,7 +46,7 @@ { 0, NULL } }; -const struct value_string subscr_conn_from_names[] = { +const struct value_string complete_layer3_type_names[] = { OSMO_VALUE_STRING(SUBSCR_CONN_FROM_INVALID), OSMO_VALUE_STRING(SUBSCR_CONN_FROM_LU), OSMO_VALUE_STRING(SUBSCR_CONN_FROM_CM_SERVICE_REQ), @@ -70,12 +70,12 @@ void subscr_conn_fsm_new(struct osmo_fsm_inst *fi, uint32_t event, void *data) { struct gsm_subscriber_connection *conn = fi->priv; - enum subscr_conn_from from = SUBSCR_CONN_FROM_INVALID; + enum complete_layer3_type from = SUBSCR_CONN_FROM_INVALID; bool success; if (data) { - from = *(enum subscr_conn_from*)data; - LOGPFSM(fi, "%s\n", subscr_conn_from_name(from)); + from = *(enum complete_layer3_type*)data; + LOGPFSM(fi, "%s\n", complete_layer3_type_name(from)); } /* If accepted, transition the state, all other cases mean failure. */ -- To view, visit https://gerrit.osmocom.org/7614 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: I6263a80e6db01c2ca48df6c58b05e2fd19347057 Gerrit-PatchSet: 1 Gerrit-Project: osmo-msc Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Neels Hofmeyr Gerrit-Reviewer: Vadim Yanitskiy From gerrit-no-reply at lists.osmocom.org Wed Apr 4 16:56:32 2018 From: gerrit-no-reply at lists.osmocom.org (Neels Hofmeyr) Date: Wed, 4 Apr 2018 16:56:32 +0000 Subject: [MERGED] osmo-msc[master]: subscr_conn: store complete_layer3_type in conn, not FSM eve... In-Reply-To: References: Message-ID: Neels Hofmeyr has submitted this change and it was merged. Change subject: subscr_conn: store complete_layer3_type in conn, not FSM event arg ...................................................................... subscr_conn: store complete_layer3_type in conn, not FSM event arg Instead of jumping through hoops to pass the Complete Layer 3 operation that created this conn via FSM event dispatch parameters, put it right in the gsm_subscriber_connection struct, where it always belonged. Move definition of the enum complete_layer3_type to gsm_data.h, where gsm_subscriber_connection is defined. Introduce msc_subscr_conn_update_id() to set the complete_layer3_type of the conn as soon as a Complete Layer 3 message is received. In msc_subscr_conn_update_id(), already include an mi_string argument to prepare for an upcoming patch where the FSM will be allocated much earlier when the Mobile Identity is not known yet, and we'll also update the fi->id here. The odd logging change in the msc_vlr_tests output uncovers a wrong use of the osmo_fsm_inst_dispatch() data argument for SUBSCR_CONN_E_CN_CLOSE events: if a child FSM signals unsuccessful result, instead of the failure cause, it passed the complete_layer3_type, as requested upon FSM allocation, which was then misinterpreted as a failure cause. Now a child FSM failure will pass NULL instead, while other SUBSCR_CONN_E_CN_CLOSE events may still pass a valid cause value. Related: OS#3122 Change-Id: Iae30dd57a8861c4eaaf56999f872d4e635ba97fb --- M include/osmocom/msc/gsm_data.h M include/osmocom/msc/osmo_msc.h M src/libmsc/gsm_04_08.c M src/libmsc/subscr_conn.c M tests/msc_vlr/msc_vlr_test_authen_reuse.err M tests/msc_vlr/msc_vlr_test_call.err M tests/msc_vlr/msc_vlr_test_gsm_authen.err M tests/msc_vlr/msc_vlr_test_gsm_ciph.err M tests/msc_vlr/msc_vlr_test_hlr_reject.err M tests/msc_vlr/msc_vlr_test_hlr_timeout.err M tests/msc_vlr/msc_vlr_test_ms_timeout.err M tests/msc_vlr/msc_vlr_test_no_authen.err M tests/msc_vlr/msc_vlr_test_reject_concurrency.err M tests/msc_vlr/msc_vlr_test_rest.err M tests/msc_vlr/msc_vlr_test_umts_authen.err 15 files changed, 163 insertions(+), 182 deletions(-) Approvals: Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/include/osmocom/msc/gsm_data.h b/include/osmocom/msc/gsm_data.h index df15eea..29abd5d 100644 --- a/include/osmocom/msc/gsm_data.h +++ b/include/osmocom/msc/gsm_data.h @@ -70,6 +70,19 @@ INTEGRITY_PROTECTION_IK_CK = 2, }; +enum complete_layer3_type { + COMPLETE_LAYER3_NONE, + COMPLETE_LAYER3_LU, + COMPLETE_LAYER3_CM_SERVICE_REQ, + COMPLETE_LAYER3_PAGING_RESP, +}; + +extern const struct value_string complete_layer3_type_names[]; +static inline const char *complete_layer3_type_name(enum complete_layer3_type val) +{ + return get_value_string(complete_layer3_type_names, val); +} + /* active radio connection of a mobile subscriber */ struct gsm_subscriber_connection { /* global linked list of subscriber_connections */ @@ -77,6 +90,7 @@ /* FSM instance to control the subscriber connection's permissions and lifetime. */ struct osmo_fsm_inst *fi; + enum complete_layer3_type complete_layer3_type; /* usage count. If this drops to zero, we start the release * towards A/Iu */ diff --git a/include/osmocom/msc/osmo_msc.h b/include/osmocom/msc/osmo_msc.h index d838e89..fb525e0 100644 --- a/include/osmocom/msc/osmo_msc.h +++ b/include/osmocom/msc/osmo_msc.h @@ -36,24 +36,13 @@ SUBSCR_CONN_S_RELEASED, }; -enum complete_layer3_type { - SUBSCR_CONN_FROM_INVALID, - SUBSCR_CONN_FROM_LU, - SUBSCR_CONN_FROM_CM_SERVICE_REQ, - SUBSCR_CONN_FROM_PAGING_RESP, -}; - -extern const struct value_string complete_layer3_type_names[]; -static inline const char *complete_layer3_type_name(enum complete_layer3_type val) -{ - return get_value_string(complete_layer3_type_names, val); -} - enum msc_compl_l3_rc { MSC_CONN_ACCEPT = 0, MSC_CONN_REJECT = 1, }; +void msc_subscr_conn_update_id(struct gsm_subscriber_connection *conn, + enum complete_layer3_type from, const char *id); char *msc_subscr_conn_get_conn_id(struct gsm_subscriber_connection *conn); int msc_create_conn_fsm(struct gsm_subscriber_connection *conn, const char *id); diff --git a/src/libmsc/gsm_04_08.c b/src/libmsc/gsm_04_08.c index 4624e90..a90ff17 100644 --- a/src/libmsc/gsm_04_08.c +++ b/src/libmsc/gsm_04_08.c @@ -317,7 +317,6 @@ * Keep this function non-static for direct invocation by unit tests. */ int mm_rx_loc_upd_req(struct gsm_subscriber_connection *conn, struct msgb *msg) { - static const enum complete_layer3_type conn_from_lu = SUBSCR_CONN_FROM_LU; struct gsm_network *net = conn->network; struct gsm48_hdr *gh = msgb_l3(msg); struct gsm48_loc_upd_req *lu; @@ -341,6 +340,8 @@ if (rc) /* logging already happened in msc_create_conn_fsm() */ return rc; + + msc_subscr_conn_update_id(conn, COMPLETE_LAYER3_LU, mi_string); conn->classmark.classmark1 = lu->classmark1; conn->classmark.classmark1_set = true; @@ -394,9 +395,7 @@ is_utran = (conn->via_ran == RAN_UTRAN_IU); lu_fsm = vlr_loc_update(conn->fi, - SUBSCR_CONN_E_ACCEPTED, - SUBSCR_CONN_E_CN_CLOSE, - (void*)&conn_from_lu, + SUBSCR_CONN_E_ACCEPTED, SUBSCR_CONN_E_CN_CLOSE, NULL, net->vlr, conn, vlr_lu_type, tmsi, imsi, &old_lai, &new_lai, is_utran || conn->network->authentication_required, @@ -671,6 +670,7 @@ DEBUGP(DMM, "%s: re-using already accepted connection\n", vlr_subscr_name(conn->vsub)); conn->received_cm_service_request = true; + msc_subscr_conn_update_id(conn, conn->complete_layer3_type, mi_string); return conn->network->vlr->ops.tx_cm_serv_acc(conn); } @@ -687,8 +687,6 @@ */ int gsm48_rx_mm_serv_req(struct gsm_subscriber_connection *conn, struct msgb *msg) { - static const enum complete_layer3_type conn_from_cm_service_req = - SUBSCR_CONN_FROM_CM_SERVICE_REQ; struct gsm_network *net = conn->network; uint8_t mi_type; char mi_string[GSM48_MI_SIZE]; @@ -774,12 +772,11 @@ /* logging already happened in msc_create_conn_fsm() */ return rc; } + msc_subscr_conn_update_id(conn, COMPLETE_LAYER3_CM_SERVICE_REQ, mi_string); is_utran = (conn->via_ran == RAN_UTRAN_IU); vlr_proc_acc_req(conn->fi, - SUBSCR_CONN_E_ACCEPTED, - SUBSCR_CONN_E_CN_CLOSE, - (void*)&conn_from_cm_service_req, + SUBSCR_CONN_E_ACCEPTED, SUBSCR_CONN_E_CN_CLOSE, NULL, net->vlr, conn, VLR_PR_ARQ_T_CM_SERV_REQ, mi-1, &lai, is_utran || conn->network->authentication_required, @@ -1144,8 +1141,6 @@ /* Receive a PAGING RESPONSE message from the MS */ static int gsm48_rx_rr_pag_resp(struct gsm_subscriber_connection *conn, struct msgb *msg) { - static const enum complete_layer3_type conn_from_paging_resp = - SUBSCR_CONN_FROM_PAGING_RESP; struct gsm_network *net = conn->network; struct gsm48_hdr *gh = msgb_l3(msg); struct gsm48_pag_resp *resp; @@ -1176,15 +1171,14 @@ if (rc) /* logging already happened in msc_create_conn_fsm() */ return rc; + msc_subscr_conn_update_id(conn, COMPLETE_LAYER3_PAGING_RESP, mi_string); memcpy(conn->classmark.classmark2, classmark2_lv+1, *classmark2_lv); conn->classmark.classmark2_len = *classmark2_lv; is_utran = (conn->via_ran == RAN_UTRAN_IU); vlr_proc_acc_req(conn->fi, - SUBSCR_CONN_E_ACCEPTED, - SUBSCR_CONN_E_CN_CLOSE, - (void*)&conn_from_paging_resp, + SUBSCR_CONN_E_ACCEPTED, SUBSCR_CONN_E_CN_CLOSE, NULL, net->vlr, conn, VLR_PR_ARQ_T_PAGING_RESP, mi_lv, &lai, is_utran || conn->network->authentication_required, diff --git a/src/libmsc/subscr_conn.c b/src/libmsc/subscr_conn.c index 526ad92..fc89a66 100644 --- a/src/libmsc/subscr_conn.c +++ b/src/libmsc/subscr_conn.c @@ -46,14 +46,6 @@ { 0, NULL } }; -const struct value_string complete_layer3_type_names[] = { - OSMO_VALUE_STRING(SUBSCR_CONN_FROM_INVALID), - OSMO_VALUE_STRING(SUBSCR_CONN_FROM_LU), - OSMO_VALUE_STRING(SUBSCR_CONN_FROM_CM_SERVICE_REQ), - OSMO_VALUE_STRING(SUBSCR_CONN_FROM_PAGING_RESP), - { 0, NULL } -}; - static void paging_event(struct gsm_subscriber_connection *conn, enum gsm_paging_event pe) { @@ -70,13 +62,7 @@ void subscr_conn_fsm_new(struct osmo_fsm_inst *fi, uint32_t event, void *data) { struct gsm_subscriber_connection *conn = fi->priv; - enum complete_layer3_type from = SUBSCR_CONN_FROM_INVALID; bool success; - - if (data) { - from = *(enum complete_layer3_type*)data; - LOGPFSM(fi, "%s\n", complete_layer3_type_name(from)); - } /* If accepted, transition the state, all other cases mean failure. */ switch (event) { @@ -103,13 +89,13 @@ success = (fi->state == SUBSCR_CONN_S_ACCEPTED); - if (from == SUBSCR_CONN_FROM_LU) + if (conn->complete_layer3_type == COMPLETE_LAYER3_LU) rate_ctr_inc(&conn->network->msc_ctrs->ctr[ success ? MSC_CTR_LOC_UPDATE_COMPLETED : MSC_CTR_LOC_UPDATE_FAILED]); /* signal paging success or failure in case this was a paging */ - if (from == SUBSCR_CONN_FROM_PAGING_RESP) + if (conn->complete_layer3_type == COMPLETE_LAYER3_PAGING_RESP) paging_event(conn, success ? GSM_PAGING_SUCCEEDED : GSM_PAGING_EXPIRED); @@ -125,7 +111,7 @@ return; } - if (from == SUBSCR_CONN_FROM_CM_SERVICE_REQ) { + if (conn->complete_layer3_type == COMPLETE_LAYER3_CM_SERVICE_REQ) { conn->received_cm_service_request = true; LOGPFSML(fi, LOGL_DEBUG, "received_cm_service_request = true\n"); } @@ -382,3 +368,19 @@ { osmo_fsm_register(&subscr_conn_fsm); } + +const struct value_string complete_layer3_type_names[] = { + { COMPLETE_LAYER3_NONE, "NONE" }, + { COMPLETE_LAYER3_LU, "LU" }, + { COMPLETE_LAYER3_CM_SERVICE_REQ, "CM_SERVICE_REQ" }, + { COMPLETE_LAYER3_PAGING_RESP, "PAGING_RESP" }, + { 0, NULL } +}; + +void msc_subscr_conn_update_id(struct gsm_subscriber_connection *conn, + enum complete_layer3_type from, const char *id) +{ + conn->complete_layer3_type = from; + osmo_fsm_inst_update_id(conn->fi, id); + LOGPFSML(conn->fi, LOGL_DEBUG, "Updated ID from %s\n", complete_layer3_type_name(from)); +} diff --git a/tests/msc_vlr/msc_vlr_test_authen_reuse.err b/tests/msc_vlr/msc_vlr_test_authen_reuse.err index 4f8432a..e96fce8 100644 --- a/tests/msc_vlr/msc_vlr_test_authen_reuse.err +++ b/tests/msc_vlr/msc_vlr_test_authen_reuse.err @@ -11,6 +11,7 @@ DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Updated ID from LU DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000010650 type=NORMAL DMM LU/new-LAC: 0/23 DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_IDLE}: Allocated @@ -156,7 +157,6 @@ DVLR lu_compl_vlr_fsm(901700000010650){LU_COMPL_VLR_S_DONE}: Deallocated DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_RELEASE_WHEN_UNUSED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: subscr_conn_fsm_release_when_unused: releasing conn @@ -194,6 +194,7 @@ DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Updated ID from CM_SERVICE_REQ DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: Allocated DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: is child of Subscr_Conn(901700000010650) DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: rev=R99 net=GERAN Auth (no Ciph) @@ -243,7 +244,6 @@ DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED - sending CM Service Accept for MSISDN:42342 DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_CM_SERVICE_REQ DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: received_cm_service_request = true DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_RELEASE_WHEN_UNUSED @@ -301,6 +301,7 @@ DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Updated ID from CM_SERVICE_REQ DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: Allocated DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: is child of Subscr_Conn(901700000010650) DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: rev=R99 net=GERAN Auth (no Ciph) @@ -364,7 +365,6 @@ DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED - sending CM Service Accept for MSISDN:42342 DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_CM_SERVICE_REQ DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: received_cm_service_request = true DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_RELEASE_WHEN_UNUSED @@ -439,6 +439,7 @@ DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Updated ID from LU DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000010650 type=NORMAL DMM LU/new-LAC: 0/23 DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_IDLE}: Allocated @@ -596,7 +597,6 @@ DVLR lu_compl_vlr_fsm(901700000010650){LU_COMPL_VLR_S_DONE}: Deallocated DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_RELEASE_WHEN_UNUSED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: subscr_conn_fsm_release_when_unused: releasing conn @@ -634,6 +634,7 @@ DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Updated ID from CM_SERVICE_REQ DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: Allocated DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: is child of Subscr_Conn(901700000010650) DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: rev=R99 net=UTRAN Auth+Ciph @@ -696,7 +697,6 @@ DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_WAIT_CIPH}: state_chg to PR_ARQ_S_DONE DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_CM_SERVICE_REQ DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: received_cm_service_request = true DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_RELEASE_WHEN_UNUSED @@ -751,6 +751,7 @@ DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Updated ID from CM_SERVICE_REQ DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: Allocated DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: is child of Subscr_Conn(901700000010650) DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: rev=R99 net=UTRAN Auth+Ciph @@ -827,7 +828,6 @@ DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_WAIT_CIPH}: state_chg to PR_ARQ_S_DONE DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_CM_SERVICE_REQ DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: received_cm_service_request = true DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_RELEASE_WHEN_UNUSED @@ -899,6 +899,7 @@ DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Updated ID from LU DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000010650 type=NORMAL DMM LU/new-LAC: 0/23 DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_IDLE}: Allocated @@ -1044,7 +1045,6 @@ DVLR lu_compl_vlr_fsm(901700000010650){LU_COMPL_VLR_S_DONE}: Deallocated DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_RELEASE_WHEN_UNUSED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: subscr_conn_fsm_release_when_unused: releasing conn @@ -1082,6 +1082,7 @@ DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Updated ID from CM_SERVICE_REQ DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: Allocated DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: is child of Subscr_Conn(901700000010650) DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: rev=R99 net=GERAN Auth (no Ciph) @@ -1131,7 +1132,6 @@ DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED - sending CM Service Accept for MSISDN:42342 DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_CM_SERVICE_REQ DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: received_cm_service_request = true DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_RELEASE_WHEN_UNUSED @@ -1189,6 +1189,7 @@ DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Updated ID from CM_SERVICE_REQ DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: Allocated DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: is child of Subscr_Conn(901700000010650) DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: rev=R99 net=GERAN Auth (no Ciph) @@ -1238,7 +1239,6 @@ DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED - sending CM Service Accept for MSISDN:42342 DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_CM_SERVICE_REQ DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: received_cm_service_request = true DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_RELEASE_WHEN_UNUSED @@ -1296,6 +1296,7 @@ DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Updated ID from CM_SERVICE_REQ DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: Allocated DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: is child of Subscr_Conn(901700000010650) DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: rev=R99 net=GERAN Auth (no Ciph) @@ -1345,7 +1346,6 @@ DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED - sending CM Service Accept for MSISDN:42342 DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_CM_SERVICE_REQ DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: received_cm_service_request = true DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_RELEASE_WHEN_UNUSED @@ -1420,6 +1420,7 @@ DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Updated ID from LU DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000010650 type=NORMAL DMM LU/new-LAC: 0/23 DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_IDLE}: Allocated @@ -1577,7 +1578,6 @@ DVLR lu_compl_vlr_fsm(901700000010650){LU_COMPL_VLR_S_DONE}: Deallocated DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_RELEASE_WHEN_UNUSED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: subscr_conn_fsm_release_when_unused: releasing conn @@ -1615,6 +1615,7 @@ DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Updated ID from CM_SERVICE_REQ DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: Allocated DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: is child of Subscr_Conn(901700000010650) DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: rev=R99 net=UTRAN Auth+Ciph @@ -1677,7 +1678,6 @@ DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_WAIT_CIPH}: state_chg to PR_ARQ_S_DONE DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_CM_SERVICE_REQ DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: received_cm_service_request = true DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_RELEASE_WHEN_UNUSED @@ -1732,6 +1732,7 @@ DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Updated ID from CM_SERVICE_REQ DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: Allocated DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: is child of Subscr_Conn(901700000010650) DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: rev=R99 net=UTRAN Auth+Ciph @@ -1794,7 +1795,6 @@ DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_WAIT_CIPH}: state_chg to PR_ARQ_S_DONE DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_CM_SERVICE_REQ DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: received_cm_service_request = true DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_RELEASE_WHEN_UNUSED @@ -1849,6 +1849,7 @@ DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Updated ID from CM_SERVICE_REQ DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: Allocated DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: is child of Subscr_Conn(901700000010650) DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: rev=R99 net=UTRAN Auth+Ciph @@ -1911,7 +1912,6 @@ DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_WAIT_CIPH}: state_chg to PR_ARQ_S_DONE DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_CM_SERVICE_REQ DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: received_cm_service_request = true DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_RELEASE_WHEN_UNUSED @@ -1983,6 +1983,7 @@ DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Updated ID from LU DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000010650 type=NORMAL DMM LU/new-LAC: 0/23 DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_IDLE}: Allocated @@ -2128,7 +2129,6 @@ DVLR lu_compl_vlr_fsm(901700000010650){LU_COMPL_VLR_S_DONE}: Deallocated DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_RELEASE_WHEN_UNUSED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: subscr_conn_fsm_release_when_unused: releasing conn @@ -2166,6 +2166,7 @@ DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Updated ID from CM_SERVICE_REQ DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: Allocated DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: is child of Subscr_Conn(901700000010650) DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: rev=R99 net=GERAN Auth (no Ciph) @@ -2229,7 +2230,6 @@ DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED - sending CM Service Accept for MSISDN:42342 DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_CM_SERVICE_REQ DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: received_cm_service_request = true DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_RELEASE_WHEN_UNUSED @@ -2304,6 +2304,7 @@ DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Updated ID from LU DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000010650 type=NORMAL DMM LU/new-LAC: 0/23 DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_IDLE}: Allocated @@ -2461,7 +2462,6 @@ DVLR lu_compl_vlr_fsm(901700000010650){LU_COMPL_VLR_S_DONE}: Deallocated DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_RELEASE_WHEN_UNUSED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: subscr_conn_fsm_release_when_unused: releasing conn @@ -2499,6 +2499,7 @@ DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Updated ID from CM_SERVICE_REQ DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: Allocated DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: is child of Subscr_Conn(901700000010650) DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: rev=R99 net=UTRAN Auth+Ciph @@ -2575,7 +2576,6 @@ DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_WAIT_CIPH}: state_chg to PR_ARQ_S_DONE DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_CM_SERVICE_REQ DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: received_cm_service_request = true DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_RELEASE_WHEN_UNUSED diff --git a/tests/msc_vlr/msc_vlr_test_call.err b/tests/msc_vlr/msc_vlr_test_call.err index 1a21c6b..281f418 100644 --- a/tests/msc_vlr/msc_vlr_test_call.err +++ b/tests/msc_vlr/msc_vlr_test_call.err @@ -12,6 +12,7 @@ DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Updated ID from LU DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000010650 type=NORMAL DMM LU/new-LAC: 23/23 DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_IDLE}: Allocated @@ -153,7 +154,6 @@ DVLR lu_compl_vlr_fsm(901700000010650){LU_COMPL_VLR_S_DONE}: Deallocated DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_RELEASE_WHEN_UNUSED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: subscr_conn_fsm_release_when_unused: releasing conn @@ -191,6 +191,7 @@ DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Updated ID from CM_SERVICE_REQ DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: Allocated DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: is child of Subscr_Conn(901700000010650) DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: rev=R99 net=UTRAN Auth+Ciph @@ -255,7 +256,6 @@ DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_WAIT_CIPH}: state_chg to PR_ARQ_S_DONE DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_CM_SERVICE_REQ DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: received_cm_service_request = true DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_RELEASE_WHEN_UNUSED @@ -386,6 +386,7 @@ DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Updated ID from LU DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000010650 type=NORMAL DMM LU/new-LAC: 23/23 DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_IDLE}: Allocated @@ -527,7 +528,6 @@ DVLR lu_compl_vlr_fsm(901700000010650){LU_COMPL_VLR_S_DONE}: Deallocated DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_RELEASE_WHEN_UNUSED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: subscr_conn_fsm_release_when_unused: releasing conn @@ -577,6 +577,7 @@ DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Updated ID from PAGING_RESP DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: Allocated DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: is child of Subscr_Conn(901700000010650) DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: rev=R99 net=UTRAN Auth+Ciph @@ -637,7 +638,6 @@ DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_WAIT_CIPH}: state_chg to PR_ARQ_S_DONE DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_PAGING_RESP DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED DPAG Paging success for MSISDN:42342 (event=0) DPAG Calling paging cbfn. @@ -768,6 +768,7 @@ DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Updated ID from LU DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000010650 type=NORMAL DMM LU/new-LAC: 23/23 DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_IDLE}: Allocated @@ -909,7 +910,6 @@ DVLR lu_compl_vlr_fsm(901700000010650){LU_COMPL_VLR_S_DONE}: Deallocated DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_RELEASE_WHEN_UNUSED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: subscr_conn_fsm_release_when_unused: releasing conn @@ -947,6 +947,7 @@ DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Updated ID from CM_SERVICE_REQ DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: Allocated DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: is child of Subscr_Conn(901700000010650) DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: rev=R99 net=UTRAN Auth+Ciph @@ -1011,7 +1012,6 @@ DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_WAIT_CIPH}: state_chg to PR_ARQ_S_DONE DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_CM_SERVICE_REQ DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: received_cm_service_request = true DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_RELEASE_WHEN_UNUSED @@ -1104,6 +1104,7 @@ DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Updated ID from LU DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000010650 type=NORMAL DMM LU/new-LAC: 23/23 DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_IDLE}: Allocated @@ -1245,7 +1246,6 @@ DVLR lu_compl_vlr_fsm(901700000010650){LU_COMPL_VLR_S_DONE}: Deallocated DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_RELEASE_WHEN_UNUSED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: subscr_conn_fsm_release_when_unused: releasing conn @@ -1283,6 +1283,7 @@ DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Updated ID from CM_SERVICE_REQ DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: Allocated DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: is child of Subscr_Conn(901700000010650) DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: rev=R99 net=UTRAN Auth+Ciph @@ -1347,7 +1348,6 @@ DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_WAIT_CIPH}: state_chg to PR_ARQ_S_DONE DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_CM_SERVICE_REQ DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: received_cm_service_request = true DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_RELEASE_WHEN_UNUSED diff --git a/tests/msc_vlr/msc_vlr_test_gsm_authen.err b/tests/msc_vlr/msc_vlr_test_gsm_authen.err index ff9f869..35bda27 100644 --- a/tests/msc_vlr/msc_vlr_test_gsm_authen.err +++ b/tests/msc_vlr/msc_vlr_test_gsm_authen.err @@ -11,6 +11,7 @@ DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Updated ID from LU DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000004620 type=IMSI ATTACH DMM LU/new-LAC: 1/23 DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Allocated @@ -142,7 +143,6 @@ DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Deallocated DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_RELEASE_WHEN_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: subscr_conn_fsm_release_when_unused: releasing conn @@ -177,6 +177,7 @@ DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Updated ID from CM_SERVICE_REQ DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: Allocated DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: is child of Subscr_Conn(901700000004620) DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: rev=GSM net=GERAN Auth (no Ciph) @@ -236,7 +237,6 @@ DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED - sending CM Service Accept for MSISDN:46071 DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_CM_SERVICE_REQ DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: received_cm_service_request = true DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_RELEASE_WHEN_UNUSED @@ -305,6 +305,7 @@ DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Updated ID from PAGING_RESP DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: Allocated DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: is child of Subscr_Conn(901700000004620) DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: rev=GSM net=GERAN Auth (no Ciph) @@ -362,7 +363,6 @@ DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_WAIT_AUTH}: state_chg to PR_ARQ_S_DONE DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_PAGING_RESP DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED DPAG Paging success for MSISDN:46071 (event=0) DPAG Calling paging cbfn. @@ -460,6 +460,7 @@ DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Updated ID from LU DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000004620 type=IMSI ATTACH DMM LU/new-LAC: 1/23 DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Allocated @@ -622,7 +623,6 @@ DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Deallocated DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_RELEASE_WHEN_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: subscr_conn_fsm_release_when_unused: releasing conn @@ -662,6 +662,7 @@ DMM Subscr_Conn(50462976){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(50462976){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(50462976){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(50462976){SUBSCR_CONN_S_NEW}: Updated ID from CM_SERVICE_REQ DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_INIT}: Allocated DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_INIT}: is child of Subscr_Conn(50462976) DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_INIT}: rev=GSM net=GERAN Auth (no Ciph) @@ -721,7 +722,6 @@ DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED - sending CM Service Accept for MSISDN:46071 DMM Subscr_Conn(50462976){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(50462976){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_CM_SERVICE_REQ DMM Subscr_Conn(50462976){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED DMM Subscr_Conn(50462976){SUBSCR_CONN_S_ACCEPTED}: received_cm_service_request = true DMM Subscr_Conn(50462976){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_RELEASE_WHEN_UNUSED @@ -790,6 +790,7 @@ DMM Subscr_Conn(50462976){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(50462976){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(50462976){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(50462976){SUBSCR_CONN_S_NEW}: Updated ID from PAGING_RESP DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_INIT}: Allocated DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_INIT}: is child of Subscr_Conn(50462976) DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_INIT}: rev=GSM net=GERAN Auth (no Ciph) @@ -847,7 +848,6 @@ DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_WAIT_AUTH}: state_chg to PR_ARQ_S_DONE DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED DMM Subscr_Conn(50462976){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(50462976){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_PAGING_RESP DMM Subscr_Conn(50462976){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED DPAG Paging success for MSISDN:46071 (event=0) DPAG Calling paging cbfn. @@ -923,6 +923,7 @@ DMM Subscr_Conn(50462976){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(50462976){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(50462976){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(50462976){SUBSCR_CONN_S_NEW}: Updated ID from LU DMM LOCATION UPDATING REQUEST: MI(TMSI)=50462976 type=IMSI ATTACH DMM LU/new-LAC: 1/23 DVLR vlr_lu_fsm(50462976){VLR_ULA_S_IDLE}: Allocated @@ -1051,7 +1052,6 @@ DVLR lu_compl_vlr_fsm(50462976){LU_COMPL_VLR_S_DONE}: Deallocated DVLR vlr_lu_fsm(50462976){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE DMM Subscr_Conn(50462976){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(50462976){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU DMM Subscr_Conn(50462976){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED DMM Subscr_Conn(50462976){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_RELEASE_WHEN_UNUSED DMM Subscr_Conn(50462976){SUBSCR_CONN_S_ACCEPTED}: subscr_conn_fsm_release_when_unused: releasing conn @@ -1113,6 +1113,7 @@ DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Updated ID from LU DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000004620 type=IMSI ATTACH DMM LU/new-LAC: 1/23 DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Allocated @@ -1273,7 +1274,6 @@ DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Deallocated DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_RELEASE_WHEN_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: subscr_conn_fsm_release_when_unused: releasing conn @@ -1333,6 +1333,7 @@ DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Updated ID from LU DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000004620 type=IMSI ATTACH DMM LU/new-LAC: 1/23 DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Allocated @@ -1524,7 +1525,6 @@ DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Deallocated DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_RELEASE_WHEN_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: subscr_conn_fsm_release_when_unused: releasing conn @@ -1584,6 +1584,7 @@ DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Updated ID from LU DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000010650 type=NORMAL DMM LU/new-LAC: 0/23 DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_IDLE}: Allocated @@ -1696,7 +1697,6 @@ DVLR lu_compl_vlr_fsm(901700000010650){LU_COMPL_VLR_S_DONE}: Deallocated DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_RELEASE_WHEN_UNUSED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: subscr_conn_fsm_release_when_unused: releasing conn @@ -1731,6 +1731,7 @@ DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Updated ID from CM_SERVICE_REQ DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: Allocated DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: is child of Subscr_Conn(901700000010650) DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: rev=GSM net=GERAN Auth (no Ciph) @@ -1790,7 +1791,6 @@ DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED - sending CM Service Accept for MSISDN:42342 DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_CM_SERVICE_REQ DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: received_cm_service_request = true DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_RELEASE_WHEN_UNUSED @@ -1859,6 +1859,7 @@ DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Updated ID from PAGING_RESP DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: Allocated DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: is child of Subscr_Conn(901700000010650) DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: rev=GSM net=GERAN Auth (no Ciph) @@ -1916,7 +1917,6 @@ DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_WAIT_AUTH}: state_chg to PR_ARQ_S_DONE DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_PAGING_RESP DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED DPAG Paging success for MSISDN:42342 (event=0) DPAG Calling paging cbfn. @@ -2015,6 +2015,7 @@ DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Updated ID from LU DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000004620 type=IMSI ATTACH DMM LU/new-LAC: 1/23 DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Allocated @@ -2093,8 +2094,6 @@ - sending LU Reject for IMSI:901700000004620, cause 3 DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_AUTH}: state_chg to VLR_ULA_S_DONE DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_CN_CLOSE -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Close event, cause 1 DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT) diff --git a/tests/msc_vlr/msc_vlr_test_gsm_ciph.err b/tests/msc_vlr/msc_vlr_test_gsm_ciph.err index b75ecc2..632f13e 100644 --- a/tests/msc_vlr/msc_vlr_test_gsm_ciph.err +++ b/tests/msc_vlr/msc_vlr_test_gsm_ciph.err @@ -11,6 +11,7 @@ DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Updated ID from LU DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000004620 type=IMSI ATTACH DMM LU/new-LAC: 1/23 DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Allocated @@ -146,7 +147,6 @@ DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Deallocated DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_RELEASE_WHEN_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: subscr_conn_fsm_release_when_unused: releasing conn @@ -181,6 +181,7 @@ DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Updated ID from CM_SERVICE_REQ DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: Allocated DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: is child of Subscr_Conn(901700000004620) DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: rev=GSM net=GERAN Auth+Ciph @@ -265,7 +266,6 @@ DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_WAIT_CIPH}: state_chg to PR_ARQ_S_DONE DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_CM_SERVICE_REQ DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: received_cm_service_request = true DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_RELEASE_WHEN_UNUSED @@ -331,6 +331,7 @@ DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Updated ID from PAGING_RESP DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: Allocated DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: is child of Subscr_Conn(901700000004620) DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: rev=GSM net=GERAN Auth+Ciph @@ -413,7 +414,6 @@ DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_WAIT_CIPH}: state_chg to PR_ARQ_S_DONE DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_PAGING_RESP DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED DPAG Paging success for MSISDN:46071 (event=0) DPAG Calling paging cbfn. @@ -508,6 +508,7 @@ DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Updated ID from LU DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000004620 type=IMSI ATTACH DMM LU/new-LAC: 1/23 DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Allocated @@ -675,7 +676,6 @@ DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Deallocated DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_RELEASE_WHEN_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: subscr_conn_fsm_release_when_unused: releasing conn @@ -715,6 +715,7 @@ DMM Subscr_Conn(50462976){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(50462976){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(50462976){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(50462976){SUBSCR_CONN_S_NEW}: Updated ID from CM_SERVICE_REQ DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_INIT}: Allocated DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_INIT}: is child of Subscr_Conn(50462976) DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_INIT}: rev=GSM net=GERAN Auth+Ciph @@ -799,7 +800,6 @@ DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_WAIT_CIPH}: state_chg to PR_ARQ_S_DONE DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED DMM Subscr_Conn(50462976){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(50462976){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_CM_SERVICE_REQ DMM Subscr_Conn(50462976){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED DMM Subscr_Conn(50462976){SUBSCR_CONN_S_ACCEPTED}: received_cm_service_request = true DMM Subscr_Conn(50462976){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_RELEASE_WHEN_UNUSED @@ -865,6 +865,7 @@ DMM Subscr_Conn(50462976){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(50462976){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(50462976){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(50462976){SUBSCR_CONN_S_NEW}: Updated ID from PAGING_RESP DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_INIT}: Allocated DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_INIT}: is child of Subscr_Conn(50462976) DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_INIT}: rev=GSM net=GERAN Auth+Ciph @@ -947,7 +948,6 @@ DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_WAIT_CIPH}: state_chg to PR_ARQ_S_DONE DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED DMM Subscr_Conn(50462976){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(50462976){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_PAGING_RESP DMM Subscr_Conn(50462976){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED DPAG Paging success for MSISDN:46071 (event=0) DPAG Calling paging cbfn. @@ -1042,6 +1042,7 @@ DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Updated ID from LU DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000004620 type=IMSI ATTACH DMM LU/new-LAC: 1/23 DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Allocated @@ -1206,7 +1207,6 @@ DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Deallocated DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_RELEASE_WHEN_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: subscr_conn_fsm_release_when_unused: releasing conn @@ -1266,6 +1266,7 @@ DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Updated ID from LU DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000004620 type=IMSI ATTACH DMM LU/new-LAC: 1/23 DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Allocated @@ -1422,7 +1423,6 @@ DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Deallocated DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_RELEASE_WHEN_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: subscr_conn_fsm_release_when_unused: releasing conn @@ -1479,6 +1479,7 @@ DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Updated ID from LU DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000004620 type=IMSI ATTACH DMM LU/new-LAC: 1/23 DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Allocated @@ -1674,7 +1675,6 @@ DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Deallocated DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_RELEASE_WHEN_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: subscr_conn_fsm_release_when_unused: releasing conn @@ -1734,6 +1734,7 @@ DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Updated ID from LU DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000010650 type=NORMAL DMM LU/new-LAC: 0/23 DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_IDLE}: Allocated @@ -1858,7 +1859,6 @@ DVLR lu_compl_vlr_fsm(901700000010650){LU_COMPL_VLR_S_DONE}: Deallocated DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_RELEASE_WHEN_UNUSED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: subscr_conn_fsm_release_when_unused: releasing conn @@ -1893,6 +1893,7 @@ DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Updated ID from CM_SERVICE_REQ DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: Allocated DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: is child of Subscr_Conn(901700000010650) DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: rev=R99 net=GERAN Auth+Ciph @@ -1967,7 +1968,6 @@ DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_WAIT_CIPH}: state_chg to PR_ARQ_S_DONE DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_CM_SERVICE_REQ DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: received_cm_service_request = true DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_RELEASE_WHEN_UNUSED @@ -2033,6 +2033,7 @@ DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Updated ID from PAGING_RESP DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: Allocated DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: is child of Subscr_Conn(901700000010650) DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: rev=R99 net=GERAN Auth+Ciph @@ -2105,7 +2106,6 @@ DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_WAIT_CIPH}: state_chg to PR_ARQ_S_DONE DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_PAGING_RESP DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED DPAG Paging success for MSISDN:42342 (event=0) DPAG Calling paging cbfn. @@ -2200,6 +2200,7 @@ DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Updated ID from LU DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000004620 type=IMSI ATTACH DMM LU/new-LAC: 1/23 DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Allocated @@ -2263,8 +2264,6 @@ - sending LU Reject for IMSI:901700000004620, cause 17 DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_AUTH}: state_chg to VLR_ULA_S_DONE DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_CN_CLOSE -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Close event, cause 1 DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT) diff --git a/tests/msc_vlr/msc_vlr_test_hlr_reject.err b/tests/msc_vlr/msc_vlr_test_hlr_reject.err index 8a7f90d..18dc7f1 100644 --- a/tests/msc_vlr/msc_vlr_test_hlr_reject.err +++ b/tests/msc_vlr/msc_vlr_test_hlr_reject.err @@ -11,6 +11,7 @@ DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Updated ID from LU DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000004620 type=IMSI ATTACH DMM LU/new-LAC: 1/23 DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Allocated @@ -49,8 +50,6 @@ - sending LU Reject for IMSI:901700000004620, cause 2 DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_AUTH}: state_chg to VLR_ULA_S_DONE DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_CN_CLOSE -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Close event, cause 1 DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT) @@ -87,6 +86,7 @@ DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Updated ID from LU DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000004620 type=IMSI ATTACH DMM LU/new-LAC: 1/23 DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Allocated @@ -125,8 +125,6 @@ - sending LU Reject for IMSI:901700000004620, cause 17 DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_AUTH}: state_chg to VLR_ULA_S_DONE DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_CN_CLOSE -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Close event, cause 1 DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT) @@ -165,6 +163,7 @@ DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Updated ID from LU DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000004620 type=IMSI ATTACH DMM LU/new-LAC: 1/23 DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Allocated @@ -277,7 +276,6 @@ DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Deallocated DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_RELEASE_WHEN_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: subscr_conn_fsm_release_when_unused: releasing conn @@ -317,6 +315,7 @@ DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Updated ID from LU DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000004620 type=IMSI ATTACH DMM LU/new-LAC: 1/23 DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Allocated @@ -426,7 +425,6 @@ DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Deallocated DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_RELEASE_WHEN_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: subscr_conn_fsm_release_when_unused: releasing conn @@ -468,6 +466,7 @@ DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Updated ID from LU DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000004620 type=IMSI ATTACH DMM LU/new-LAC: 1/23 DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Allocated @@ -580,7 +579,6 @@ DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Deallocated DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_RELEASE_WHEN_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: subscr_conn_fsm_release_when_unused: releasing conn @@ -620,6 +618,7 @@ DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Updated ID from LU DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000004620 type=IMSI ATTACH DMM LU/new-LAC: 1/23 DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Allocated @@ -656,8 +655,6 @@ - sending LU Reject for MSISDN:46071, cause 17 DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_AUTH}: state_chg to VLR_ULA_S_DONE DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_CN_CLOSE -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Close event, cause 1 DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT) @@ -696,6 +693,7 @@ DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Updated ID from LU DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000004620 type=IMSI ATTACH DMM LU/new-LAC: 1/23 DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Allocated @@ -808,7 +806,6 @@ DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Deallocated DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_RELEASE_WHEN_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: subscr_conn_fsm_release_when_unused: releasing conn @@ -849,6 +846,7 @@ DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Updated ID from LU DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000004620 type=IMSI ATTACH DMM LU/new-LAC: 1/23 DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Allocated @@ -885,8 +883,6 @@ - sending LU Reject for MSISDN:46071, cause 2 DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_AUTH}: state_chg to VLR_ULA_S_DONE DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_CN_CLOSE -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Close event, cause 1 DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT) @@ -923,6 +919,7 @@ DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Updated ID from LU DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000004620 type=IMSI ATTACH DMM LU/new-LAC: 1/23 DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Allocated @@ -960,8 +957,6 @@ - sending LU Reject for IMSI:901700000004620, cause 17 DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_AUTH}: state_chg to VLR_ULA_S_DONE DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_CN_CLOSE -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Close event, cause 1 DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT) @@ -998,6 +993,7 @@ DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Updated ID from LU DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000004620 type=IMSI ATTACH DMM LU/new-LAC: 1/23 DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Allocated @@ -1039,8 +1035,6 @@ - sending LU Reject for IMSI:901700000004620, cause 2 DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_HLR_UPD}: state_chg to VLR_ULA_S_DONE DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_CN_CLOSE -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Close event, cause 1 DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT) @@ -1076,6 +1070,7 @@ DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Updated ID from LU DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000004620 type=IMSI ATTACH DMM LU/new-LAC: 1/23 DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Allocated @@ -1137,7 +1132,6 @@ DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Deallocated DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_RELEASE_WHEN_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: subscr_conn_fsm_release_when_unused: releasing conn diff --git a/tests/msc_vlr/msc_vlr_test_hlr_timeout.err b/tests/msc_vlr/msc_vlr_test_hlr_timeout.err index 9409e26..dffbf71 100644 --- a/tests/msc_vlr/msc_vlr_test_hlr_timeout.err +++ b/tests/msc_vlr/msc_vlr_test_hlr_timeout.err @@ -12,6 +12,7 @@ DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Updated ID from LU DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000004620 type=IMSI ATTACH DMM LU/new-LAC: 1/23 DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Allocated @@ -54,8 +55,6 @@ - sending LU Reject for IMSI:901700000004620, cause 22 DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_AUTH}: state_chg to VLR_ULA_S_DONE DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_CN_CLOSE -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Close event, cause 1 DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT) @@ -96,6 +95,7 @@ DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Updated ID from LU DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000004620 type=IMSI ATTACH DMM LU/new-LAC: 1/23 DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Allocated @@ -157,8 +157,6 @@ - sending LU Reject for MSISDN:46071, cause 22 DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_HLR_UPD}: state_chg to VLR_ULA_S_DONE DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_CN_CLOSE -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Close event, cause 1 DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT) diff --git a/tests/msc_vlr/msc_vlr_test_ms_timeout.err b/tests/msc_vlr/msc_vlr_test_ms_timeout.err index c5ffcf5..fc4e489 100644 --- a/tests/msc_vlr/msc_vlr_test_ms_timeout.err +++ b/tests/msc_vlr/msc_vlr_test_ms_timeout.err @@ -12,6 +12,7 @@ DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Updated ID from LU DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000004620 type=IMSI ATTACH DMM LU/new-LAC: 1/23 DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Allocated @@ -74,8 +75,6 @@ - sending LU Reject for IMSI:901700000004620, cause 22 DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_AUTH}: state_chg to VLR_ULA_S_DONE DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_CN_CLOSE -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Close event, cause 1 DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT) @@ -116,6 +115,7 @@ DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Updated ID from LU DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000004620 type=IMSI ATTACH DMM LU/new-LAC: 1/23 DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Allocated @@ -228,7 +228,6 @@ DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Deallocated DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_RELEASE_WHEN_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: subscr_conn_fsm_release_when_unused: releasing conn @@ -263,6 +262,7 @@ DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Updated ID from CM_SERVICE_REQ DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: Allocated DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: is child of Subscr_Conn(901700000004620) DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: rev=GSM net=GERAN Auth (no Ciph) @@ -311,8 +311,6 @@ DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_TIMEOUT - sending CM Service Reject for MSISDN:46071, result VLR_PR_ARQ_RES_TIMEOUT DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_CN_CLOSE -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_CM_SERVICE_REQ -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Close event, cause 2 DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT) @@ -352,6 +350,7 @@ DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Updated ID from LU DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000004620 type=IMSI ATTACH DMM LU/new-LAC: 1/23 DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Allocated @@ -424,7 +423,6 @@ DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Deallocated DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_RELEASE_WHEN_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: subscr_conn_fsm_release_when_unused: releasing conn diff --git a/tests/msc_vlr/msc_vlr_test_no_authen.err b/tests/msc_vlr/msc_vlr_test_no_authen.err index 2d139be..be2d537 100644 --- a/tests/msc_vlr/msc_vlr_test_no_authen.err +++ b/tests/msc_vlr/msc_vlr_test_no_authen.err @@ -11,6 +11,7 @@ DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Updated ID from LU DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000004620 type=IMSI ATTACH DMM LU/new-LAC: 1/23 DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Allocated @@ -95,7 +96,6 @@ DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Deallocated DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_RELEASE_WHEN_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: subscr_conn_fsm_release_when_unused: releasing conn @@ -130,6 +130,7 @@ DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Updated ID from CM_SERVICE_REQ DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: Allocated DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: is child of Subscr_Conn(901700000004620) DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: rev=GSM net=GERAN (no Auth) @@ -148,7 +149,6 @@ DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED - sending CM Service Accept for MSISDN:46071 DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_CM_SERVICE_REQ DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: received_cm_service_request = true DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_RELEASE_WHEN_UNUSED @@ -220,6 +220,7 @@ DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Updated ID from PAGING_RESP DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: Allocated DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: is child of Subscr_Conn(901700000004620) DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: rev=GSM net=GERAN (no Auth) @@ -237,7 +238,6 @@ DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: state_chg to PR_ARQ_S_DONE DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_PAGING_RESP DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED DPAG Paging success for MSISDN:46071 (event=0) DPAG Calling paging cbfn. @@ -336,6 +336,7 @@ DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Updated ID from LU DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000004620 type=IMSI ATTACH DMM LU/new-LAC: 1/23 DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Allocated @@ -451,7 +452,6 @@ DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Deallocated DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_RELEASE_WHEN_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: subscr_conn_fsm_release_when_unused: releasing conn @@ -491,6 +491,7 @@ DMM Subscr_Conn(50462976){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(50462976){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(50462976){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(50462976){SUBSCR_CONN_S_NEW}: Updated ID from CM_SERVICE_REQ DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_INIT}: Allocated DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_INIT}: is child of Subscr_Conn(50462976) DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_INIT}: rev=GSM net=GERAN (no Auth) @@ -509,7 +510,6 @@ DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED - sending CM Service Accept for MSISDN:46071 DMM Subscr_Conn(50462976){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(50462976){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_CM_SERVICE_REQ DMM Subscr_Conn(50462976){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED DMM Subscr_Conn(50462976){SUBSCR_CONN_S_ACCEPTED}: received_cm_service_request = true DMM Subscr_Conn(50462976){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_RELEASE_WHEN_UNUSED @@ -580,6 +580,7 @@ DMM Subscr_Conn(50462976){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(50462976){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(50462976){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(50462976){SUBSCR_CONN_S_NEW}: Updated ID from PAGING_RESP DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_INIT}: Allocated DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_INIT}: is child of Subscr_Conn(50462976) DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_INIT}: rev=GSM net=GERAN (no Auth) @@ -597,7 +598,6 @@ DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_INIT}: state_chg to PR_ARQ_S_DONE DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED DMM Subscr_Conn(50462976){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(50462976){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_PAGING_RESP DMM Subscr_Conn(50462976){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED DPAG Paging success for MSISDN:46071 (event=0) DPAG Calling paging cbfn. @@ -674,6 +674,7 @@ DMM Subscr_Conn(50462976){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(50462976){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(50462976){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(50462976){SUBSCR_CONN_S_NEW}: Updated ID from LU DMM LOCATION UPDATING REQUEST: MI(TMSI)=50462976 type=IMSI ATTACH DMM LU/new-LAC: 1/23 DVLR vlr_lu_fsm(50462976){VLR_ULA_S_IDLE}: Allocated @@ -786,7 +787,6 @@ DVLR lu_compl_vlr_fsm(50462976){LU_COMPL_VLR_S_DONE}: Deallocated DVLR vlr_lu_fsm(50462976){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE DMM Subscr_Conn(50462976){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(50462976){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU DMM Subscr_Conn(50462976){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED DMM Subscr_Conn(50462976){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_RELEASE_WHEN_UNUSED DMM Subscr_Conn(50462976){SUBSCR_CONN_S_ACCEPTED}: subscr_conn_fsm_release_when_unused: releasing conn @@ -848,6 +848,7 @@ DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Updated ID from LU DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000004620 type=IMSI ATTACH DMM LU/new-LAC: 1/23 DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Allocated @@ -961,7 +962,6 @@ DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Deallocated DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_RELEASE_WHEN_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: subscr_conn_fsm_release_when_unused: releasing conn @@ -1021,6 +1021,7 @@ DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Updated ID from LU DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000004620 type=IMSI ATTACH DMM LU/new-LAC: 1/23 DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Allocated @@ -1158,7 +1159,6 @@ DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Deallocated DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_RELEASE_WHEN_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: subscr_conn_fsm_release_when_unused: releasing conn @@ -1219,6 +1219,7 @@ DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Updated ID from LU DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000004620 type=IMSI ATTACH DMM LU/new-LAC: 1/23 DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Allocated @@ -1320,7 +1321,6 @@ DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Deallocated DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_RELEASE_WHEN_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: subscr_conn_fsm_release_when_unused: releasing conn @@ -1377,6 +1377,7 @@ DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Updated ID from LU DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000004620 type=IMSI ATTACH DMM LU/new-LAC: 1/23 DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Allocated @@ -1507,7 +1508,6 @@ DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Deallocated DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_RELEASE_WHEN_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: subscr_conn_fsm_release_when_unused: releasing conn @@ -1567,6 +1567,7 @@ DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Updated ID from LU DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000004620 type=IMSI ATTACH DMM LU/new-LAC: 1/23 DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Allocated @@ -1699,7 +1700,6 @@ DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Deallocated DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_RELEASE_WHEN_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: subscr_conn_fsm_release_when_unused: releasing conn @@ -1732,6 +1732,7 @@ DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Updated ID from LU DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000004620 type=IMSI ATTACH DMM LU/new-LAC: 1/23 DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Allocated @@ -1861,7 +1862,6 @@ DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Deallocated DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_RELEASE_WHEN_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: subscr_conn_fsm_release_when_unused: releasing conn @@ -1923,6 +1923,7 @@ DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Updated ID from LU DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000004620 type=IMSI ATTACH DMM LU/new-LAC: 1/23 DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Allocated @@ -2077,7 +2078,6 @@ DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Deallocated DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_RELEASE_WHEN_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: subscr_conn_fsm_release_when_unused: releasing conn diff --git a/tests/msc_vlr/msc_vlr_test_reject_concurrency.err b/tests/msc_vlr/msc_vlr_test_reject_concurrency.err index c58d099..bd7b47c 100644 --- a/tests/msc_vlr/msc_vlr_test_reject_concurrency.err +++ b/tests/msc_vlr/msc_vlr_test_reject_concurrency.err @@ -11,6 +11,7 @@ DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Updated ID from LU DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000004620 type=IMSI ATTACH DMM LU/new-LAC: 1/23 DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Allocated @@ -46,6 +47,7 @@ DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Updated ID from LU DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000004620 type=IMSI ATTACH DMM LU/new-LAC: 1/23 DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Allocated @@ -57,8 +59,6 @@ - sending LU Reject for unknown, cause 22 DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_DONE DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_CN_CLOSE -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Close event, cause 1 DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT) @@ -127,7 +127,6 @@ DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Deallocated DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_RELEASE_WHEN_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: subscr_conn_fsm_release_when_unused: releasing conn @@ -167,6 +166,7 @@ DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Updated ID from LU DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000004620 type=IMSI ATTACH DMM LU/new-LAC: 1/23 DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Allocated @@ -252,7 +252,6 @@ DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Deallocated DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_RELEASE_WHEN_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: subscr_conn_fsm_release_when_unused: releasing conn @@ -292,6 +291,7 @@ DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Updated ID from LU DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000004620 type=IMSI ATTACH DMM LU/new-LAC: 1/23 DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Allocated @@ -384,7 +384,6 @@ DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Deallocated DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_RELEASE_WHEN_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: subscr_conn_fsm_release_when_unused: releasing conn @@ -424,6 +423,7 @@ DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Updated ID from LU DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000004620 type=IMSI ATTACH DMM LU/new-LAC: 1/23 DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Allocated @@ -510,7 +510,6 @@ DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Deallocated DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_RELEASE_WHEN_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: subscr_conn_fsm_release_when_unused: releasing conn @@ -552,6 +551,7 @@ DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Updated ID from LU DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000004620 type=IMSI ATTACH DMM LU/new-LAC: 1/23 DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Allocated @@ -625,7 +625,6 @@ DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Deallocated DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_RELEASE_WHEN_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: subscr_conn_fsm_release_when_unused: releasing conn @@ -660,6 +659,7 @@ DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Updated ID from CM_SERVICE_REQ DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: Allocated DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: is child of Subscr_Conn(901700000004620) DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: rev=GSM net=GERAN (no Auth) @@ -678,7 +678,6 @@ DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED - sending CM Service Accept for MSISDN:46071 DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_CM_SERVICE_REQ DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: received_cm_service_request = true DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_RELEASE_WHEN_UNUSED @@ -745,6 +744,7 @@ DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Updated ID from LU DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000004620 type=IMSI ATTACH DMM LU/new-LAC: 1/23 DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Allocated @@ -818,7 +818,6 @@ DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Deallocated DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_RELEASE_WHEN_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: subscr_conn_fsm_release_when_unused: releasing conn @@ -853,6 +852,7 @@ DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Updated ID from CM_SERVICE_REQ DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: Allocated DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: is child of Subscr_Conn(901700000004620) DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: rev=GSM net=GERAN (no Auth) @@ -871,7 +871,6 @@ DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED - sending CM Service Accept for MSISDN:46071 DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_CM_SERVICE_REQ DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: received_cm_service_request = true DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_RELEASE_WHEN_UNUSED @@ -888,6 +887,7 @@ DRLL Dispatching 04.08 message GSM48_MT_MM_CM_SERV_REQ (0x5:0x24) DMM <- CM SERVICE REQUEST serv_type=0x08 MI(IMSI)=901700000004620 DMM MSISDN:46071: re-using already accepted connection +DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Updated ID from CM_SERVICE_REQ - sending CM Service Accept for MSISDN:46071 DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_RELEASE_WHEN_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: subscr_conn_fsm_release_when_unused: still awaiting first request after a CM Service Request @@ -940,6 +940,7 @@ DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Updated ID from LU DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000004620 type=IMSI ATTACH DMM LU/new-LAC: 1/23 DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Allocated @@ -1013,7 +1014,6 @@ DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Deallocated DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_RELEASE_WHEN_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: subscr_conn_fsm_release_when_unused: releasing conn @@ -1048,6 +1048,7 @@ DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Updated ID from CM_SERVICE_REQ DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: Allocated DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: is child of Subscr_Conn(901700000004620) DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: rev=GSM net=GERAN (no Auth) @@ -1066,7 +1067,6 @@ DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED - sending CM Service Accept for MSISDN:46071 DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_CM_SERVICE_REQ DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: received_cm_service_request = true DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_RELEASE_WHEN_UNUSED @@ -1141,6 +1141,7 @@ DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Updated ID from LU DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000004620 type=IMSI ATTACH DMM LU/new-LAC: 1/23 DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Allocated @@ -1214,7 +1215,6 @@ DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Deallocated DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_RELEASE_WHEN_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: subscr_conn_fsm_release_when_unused: releasing conn @@ -1261,6 +1261,7 @@ DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Updated ID from PAGING_RESP DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: Allocated DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: is child of Subscr_Conn(901700000004620) DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: rev=GSM net=GERAN (no Auth) @@ -1278,7 +1279,6 @@ DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: state_chg to PR_ARQ_S_DONE DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_PAGING_RESP DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED DPAG Paging success for MSISDN:46071 (event=0) DPAG Calling paging cbfn. @@ -1369,6 +1369,7 @@ DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Updated ID from LU DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000004620 type=IMSI ATTACH DMM LU/new-LAC: 1/23 DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Allocated @@ -1442,7 +1443,6 @@ DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Deallocated DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_RELEASE_WHEN_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: subscr_conn_fsm_release_when_unused: releasing conn @@ -1489,6 +1489,7 @@ DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Updated ID from PAGING_RESP DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: Allocated DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: is child of Subscr_Conn(901700000004620) DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: rev=GSM net=GERAN (no Auth) @@ -1506,7 +1507,6 @@ DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: state_chg to PR_ARQ_S_DONE DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_PAGING_RESP DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED DPAG Paging success for MSISDN:46071 (event=0) DPAG Calling paging cbfn. @@ -1534,6 +1534,7 @@ DRLL Dispatching 04.08 message GSM48_MT_MM_CM_SERV_REQ (0x5:0x24) DMM <- CM SERVICE REQUEST serv_type=0x08 MI(IMSI)=901700000004620 DMM MSISDN:46071: re-using already accepted connection +DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Updated ID from PAGING_RESP - sending CM Service Accept for MSISDN:46071 DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_RELEASE_WHEN_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: subscr_conn_fsm_release_when_unused: still awaiting first request after a CM Service Request @@ -1616,6 +1617,7 @@ DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Updated ID from LU DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000004620 type=IMSI ATTACH DMM LU/new-LAC: 1/23 DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Allocated @@ -1689,7 +1691,6 @@ DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Deallocated DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_RELEASE_WHEN_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: subscr_conn_fsm_release_when_unused: releasing conn @@ -1736,6 +1737,7 @@ DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Updated ID from PAGING_RESP DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: Allocated DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: is child of Subscr_Conn(901700000004620) DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: rev=GSM net=GERAN (no Auth) @@ -1753,7 +1755,6 @@ DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: state_chg to PR_ARQ_S_DONE DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_PAGING_RESP DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED DPAG Paging success for MSISDN:46071 (event=0) DPAG Calling paging cbfn. diff --git a/tests/msc_vlr/msc_vlr_test_rest.err b/tests/msc_vlr/msc_vlr_test_rest.err index 274f4b8..5d5e1ec 100644 --- a/tests/msc_vlr/msc_vlr_test_rest.err +++ b/tests/msc_vlr/msc_vlr_test_rest.err @@ -56,6 +56,7 @@ DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Updated ID from CM_SERVICE_REQ DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: Allocated DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: is child of Subscr_Conn(901700000004620) DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: rev=GSM net=GERAN (no Auth) @@ -65,8 +66,6 @@ DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_UNIDENT_SUBSCR - sending CM Service Reject for unknown, result VLR_PR_ARQ_RES_UNIDENT_SUBSCR DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_CN_CLOSE -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_CM_SERVICE_REQ -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Close event, cause 2 DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT) @@ -98,6 +97,7 @@ DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Updated ID from LU DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000004620 type=IMSI ATTACH DMM LU/new-LAC: 1/23 DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Allocated @@ -182,7 +182,6 @@ DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Deallocated DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_RELEASE_WHEN_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: subscr_conn_fsm_release_when_unused: releasing conn @@ -217,6 +216,7 @@ DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Updated ID from LU DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000004620 type=IMSI ATTACH DMM LU/new-LAC: 1/23 DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Allocated @@ -298,7 +298,6 @@ DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Deallocated DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_RELEASE_WHEN_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: subscr_conn_fsm_release_when_unused: releasing conn @@ -355,6 +354,7 @@ DMM Subscr_Conn(591536962){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(591536962){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(591536962){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(591536962){SUBSCR_CONN_S_NEW}: Updated ID from LU DMM LOCATION UPDATING REQUEST: MI(TMSI)=591536962 type=IMSI ATTACH DMM LU/new-LAC: 1/23 DVLR vlr_lu_fsm(591536962){VLR_ULA_S_IDLE}: Allocated @@ -464,7 +464,6 @@ DVLR lu_compl_vlr_fsm(591536962){LU_COMPL_VLR_S_DONE}: Deallocated DVLR vlr_lu_fsm(591536962){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE DMM Subscr_Conn(591536962){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(591536962){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU DMM Subscr_Conn(591536962){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED DMM Subscr_Conn(591536962){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_RELEASE_WHEN_UNUSED DMM Subscr_Conn(591536962){SUBSCR_CONN_S_ACCEPTED}: subscr_conn_fsm_release_when_unused: releasing conn diff --git a/tests/msc_vlr/msc_vlr_test_umts_authen.err b/tests/msc_vlr/msc_vlr_test_umts_authen.err index e6cb9a3..ddfbb11 100644 --- a/tests/msc_vlr/msc_vlr_test_umts_authen.err +++ b/tests/msc_vlr/msc_vlr_test_umts_authen.err @@ -11,6 +11,7 @@ DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Updated ID from LU DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000010650 type=NORMAL DMM LU/new-LAC: 0/23 DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_IDLE}: Allocated @@ -156,7 +157,6 @@ DVLR lu_compl_vlr_fsm(901700000010650){LU_COMPL_VLR_S_DONE}: Deallocated DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_RELEASE_WHEN_UNUSED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: subscr_conn_fsm_release_when_unused: releasing conn @@ -189,6 +189,7 @@ DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Updated ID from CM_SERVICE_REQ DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: Allocated DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: is child of Subscr_Conn(901700000010650) DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: rev=R99 net=GERAN Auth (no Ciph) @@ -249,7 +250,6 @@ DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED - sending CM Service Accept for MSISDN:42342 DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_CM_SERVICE_REQ DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: received_cm_service_request = true DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_RELEASE_WHEN_UNUSED @@ -318,6 +318,7 @@ DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Updated ID from PAGING_RESP DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: Allocated DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: is child of Subscr_Conn(901700000010650) DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: rev=R99 net=GERAN Auth (no Ciph) @@ -376,7 +377,6 @@ DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_WAIT_AUTH}: state_chg to PR_ARQ_S_DONE DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_PAGING_RESP DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED DPAG Paging success for MSISDN:42342 (event=0) DPAG Calling paging cbfn. @@ -474,6 +474,7 @@ DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Updated ID from LU DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000010650 type=NORMAL DMM LU/new-LAC: 0/23 DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_IDLE}: Allocated @@ -631,7 +632,6 @@ DVLR lu_compl_vlr_fsm(901700000010650){LU_COMPL_VLR_S_DONE}: Deallocated DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_RELEASE_WHEN_UNUSED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: subscr_conn_fsm_release_when_unused: releasing conn @@ -664,6 +664,7 @@ DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Updated ID from CM_SERVICE_REQ DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: Allocated DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: is child of Subscr_Conn(901700000010650) DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: rev=R99 net=UTRAN Auth+Ciph @@ -737,7 +738,6 @@ DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_WAIT_CIPH}: state_chg to PR_ARQ_S_DONE DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_CM_SERVICE_REQ DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: received_cm_service_request = true DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_RELEASE_WHEN_UNUSED @@ -803,6 +803,7 @@ DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Updated ID from PAGING_RESP DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: Allocated DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: is child of Subscr_Conn(901700000010650) DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: rev=R99 net=UTRAN Auth+Ciph @@ -875,7 +876,6 @@ DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_WAIT_CIPH}: state_chg to PR_ARQ_S_DONE DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_PAGING_RESP DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED DPAG Paging success for MSISDN:42342 (event=0) DPAG Calling paging cbfn. @@ -969,6 +969,7 @@ DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Updated ID from LU DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000010650 type=NORMAL DMM LU/new-LAC: 0/23 DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_IDLE}: Allocated @@ -1144,7 +1145,6 @@ DVLR lu_compl_vlr_fsm(901700000010650){LU_COMPL_VLR_S_DONE}: Deallocated DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_RELEASE_WHEN_UNUSED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: subscr_conn_fsm_release_when_unused: releasing conn @@ -1182,6 +1182,7 @@ DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Updated ID from LU DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000010650 type=NORMAL DMM LU/new-LAC: 0/23 DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_IDLE}: Allocated @@ -1369,7 +1370,6 @@ DVLR lu_compl_vlr_fsm(901700000010650){LU_COMPL_VLR_S_DONE}: Deallocated DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_RELEASE_WHEN_UNUSED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: subscr_conn_fsm_release_when_unused: releasing conn @@ -1407,6 +1407,7 @@ DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Updated ID from LU DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000010650 type=NORMAL DMM LU/new-LAC: 0/23 DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_IDLE}: Allocated @@ -1465,8 +1466,6 @@ - sending LU Reject for IMSI:901700000010650, cause 3 DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_WAIT_AUTH}: state_chg to VLR_ULA_S_DONE DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_CN_CLOSE -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Close event, cause 1 DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT) @@ -1501,6 +1500,7 @@ DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Updated ID from LU DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000010650 type=NORMAL DMM LU/new-LAC: 0/23 DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_IDLE}: Allocated @@ -1559,8 +1559,6 @@ - sending LU Reject for IMSI:901700000010650, cause 3 DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_WAIT_AUTH}: state_chg to VLR_ULA_S_DONE DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_CN_CLOSE -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Close event, cause 1 DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT) @@ -1595,6 +1593,7 @@ DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Updated ID from LU DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000010650 type=NORMAL DMM LU/new-LAC: 0/23 DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_IDLE}: Allocated @@ -1653,8 +1652,6 @@ - sending LU Reject for IMSI:901700000010650, cause 3 DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_WAIT_AUTH}: state_chg to VLR_ULA_S_DONE DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_CN_CLOSE -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Close event, cause 1 DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT) @@ -1689,6 +1686,7 @@ DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Updated ID from LU DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000010650 type=NORMAL DMM LU/new-LAC: 0/23 DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_IDLE}: Allocated @@ -1747,8 +1745,6 @@ - sending LU Reject for IMSI:901700000010650, cause 3 DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_WAIT_AUTH}: state_chg to VLR_ULA_S_DONE DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_CN_CLOSE -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Close event, cause 1 DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT) @@ -1783,6 +1779,7 @@ DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Updated ID from LU DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000010650 type=NORMAL DMM LU/new-LAC: 0/23 DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_IDLE}: Allocated @@ -1841,8 +1838,6 @@ - sending LU Reject for IMSI:901700000010650, cause 3 DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_WAIT_AUTH}: state_chg to VLR_ULA_S_DONE DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_CN_CLOSE -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Close event, cause 1 DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT) @@ -1877,6 +1872,7 @@ DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Allocated DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Updated ID from LU DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000010650 type=NORMAL DMM LU/new-LAC: 0/23 DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_IDLE}: Allocated @@ -1935,8 +1931,6 @@ - sending LU Reject for IMSI:901700000010650, cause 3 DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_WAIT_AUTH}: state_chg to VLR_ULA_S_DONE DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_CN_CLOSE -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Close event, cause 1 DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT) -- To view, visit https://gerrit.osmocom.org/7615 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: Iae30dd57a8861c4eaaf56999f872d4e635ba97fb Gerrit-PatchSet: 1 Gerrit-Project: osmo-msc Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Neels Hofmeyr From gerrit-no-reply at lists.osmocom.org Wed Apr 4 16:56:55 2018 From: gerrit-no-reply at lists.osmocom.org (Neels Hofmeyr) Date: Wed, 4 Apr 2018 16:56:55 +0000 Subject: [MERGED] osmo-mgw[master]: use osmo_init_logging2() with proper talloc ctx In-Reply-To: References: Message-ID: Neels Hofmeyr has submitted this change and it was merged. Change subject: use osmo_init_logging2() with proper talloc ctx ...................................................................... use osmo_init_logging2() with proper talloc ctx Change-Id: I3e2a9aef5242efdf11a64536f79099a6e9cec53f --- M src/osmo-bsc_mgcp/mgcp_main.c M src/osmo-mgw/mgw_main.c M tests/legacy_mgcp/mgcp_test.c M tests/legacy_mgcp/mgcp_transcoding_test.c M tests/mgcp/mgcp_test.c M tests/mgcp_client/mgcp_client_test.c 6 files changed, 11 insertions(+), 8 deletions(-) Approvals: Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/src/osmo-bsc_mgcp/mgcp_main.c b/src/osmo-bsc_mgcp/mgcp_main.c index 91f9074..edb19a6 100644 --- a/src/osmo-bsc_mgcp/mgcp_main.c +++ b/src/osmo-bsc_mgcp/mgcp_main.c @@ -244,7 +244,7 @@ msgb_talloc_ctx_init(tall_bsc_ctx, 0); osmo_init_ignore_signals(); - osmo_init_logging(&log_info); + osmo_init_logging2(tall_bsc_ctx, &log_info); cfg = mgcp_config_alloc(); if (!cfg) diff --git a/src/osmo-mgw/mgw_main.c b/src/osmo-mgw/mgw_main.c index 7762032..de094c1 100644 --- a/src/osmo-mgw/mgw_main.c +++ b/src/osmo-mgw/mgw_main.c @@ -262,7 +262,7 @@ msgb_talloc_ctx_init(tall_bsc_ctx, 0); osmo_init_ignore_signals(); - osmo_init_logging(&log_info); + osmo_init_logging2(tall_bsc_ctx, &log_info); cfg = mgcp_config_alloc(); if (!cfg) diff --git a/tests/legacy_mgcp/mgcp_test.c b/tests/legacy_mgcp/mgcp_test.c index 1a4513e..39400d4 100644 --- a/tests/legacy_mgcp/mgcp_test.c +++ b/tests/legacy_mgcp/mgcp_test.c @@ -1214,8 +1214,9 @@ int main(int argc, char **argv) { - void *msgb_ctx = msgb_talloc_ctx_init(NULL, 0); - osmo_init_logging(&log_info); + void *ctx = talloc_named_const(NULL, 0, "mgcp_test"); + void *msgb_ctx = msgb_talloc_ctx_init(ctx, 0); + osmo_init_logging2(ctx, &log_info); test_strline(); test_values(); diff --git a/tests/legacy_mgcp/mgcp_transcoding_test.c b/tests/legacy_mgcp/mgcp_transcoding_test.c index 61de25f..d3f94c7 100644 --- a/tests/legacy_mgcp/mgcp_transcoding_test.c +++ b/tests/legacy_mgcp/mgcp_transcoding_test.c @@ -588,7 +588,8 @@ int main(int argc, char **argv) { int rc; - osmo_init_logging(&log_info); + void *ctx = talloc_named_const(NULL, 0, "mgcp_transcoding_test"); + osmo_init_logging2(ctx, &log_info); printf("=== Transcoding Good Cases ===\n"); diff --git a/tests/mgcp/mgcp_test.c b/tests/mgcp/mgcp_test.c index e1e6290..f6c421a 100644 --- a/tests/mgcp/mgcp_test.c +++ b/tests/mgcp/mgcp_test.c @@ -1467,8 +1467,9 @@ int main(int argc, char **argv) { - void *msgb_ctx = msgb_talloc_ctx_init(NULL, 0); - osmo_init_logging(&log_info); + void *ctx = talloc_named_const(NULL, 0, "mgcp_test"); + void *msgb_ctx = msgb_talloc_ctx_init(ctx, 0); + osmo_init_logging2(ctx, &log_info); test_strline(); test_values(); diff --git a/tests/mgcp_client/mgcp_client_test.c b/tests/mgcp_client/mgcp_client_test.c index 19b55e2..007b90c 100644 --- a/tests/mgcp_client/mgcp_client_test.c +++ b/tests/mgcp_client/mgcp_client_test.c @@ -389,7 +389,7 @@ { ctx = talloc_named_const(NULL, 1, "mgcp_client_test"); msgb_talloc_ctx_init(ctx, 0); - osmo_init_logging(&log_info); + osmo_init_logging2(ctx, &log_info); log_set_print_filename(osmo_stderr_target, 0); log_set_print_timestamp(osmo_stderr_target, 0); log_set_use_color(osmo_stderr_target, 0); -- To view, visit https://gerrit.osmocom.org/7602 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: I3e2a9aef5242efdf11a64536f79099a6e9cec53f Gerrit-PatchSet: 1 Gerrit-Project: osmo-mgw Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Neels Hofmeyr From gerrit-no-reply at lists.osmocom.org Wed Apr 4 16:57:10 2018 From: gerrit-no-reply at lists.osmocom.org (Neels Hofmeyr) Date: Wed, 4 Apr 2018 16:57:10 +0000 Subject: [MERGED] osmo-pcu[master]: use osmo_init_logging2() with proper talloc ctx In-Reply-To: References: Message-ID: Neels Hofmeyr has submitted this change and it was merged. Change subject: use osmo_init_logging2() with proper talloc ctx ...................................................................... use osmo_init_logging2() with proper talloc ctx There is a duality of initialization: early_init() in bts.cpp wants to init logging even before static instances get initialized. Make sure that tall_pcu_ctx is initialized during early_init() as well. There is a build context that does not seem to include bts.cpp (osmo-pcu-remote), so to be sure, init tall_pcu_ctx as NULL and both in early_init() as well as pcu_main.cpp, init both tall_pcu_ctx and logging if it is still NULL. Change-Id: I2199b62d0270bd35dec2283e8f5b364b7c63915b --- M src/bts.cpp M src/pcu_main.cpp M tests/alloc/AllocTest.cpp M tests/alloc/MslotTest.cpp M tests/bitcomp/BitcompTest.cpp M tests/codel/codel_test.c M tests/edge/EdgeTest.cpp M tests/emu/pcu_emu.cpp M tests/fn/FnTest.cpp M tests/llc/LlcTest.cpp M tests/ms/MsTest.cpp M tests/rlcmac/RLCMACTest.cpp M tests/tbf/TbfTest.cpp M tests/types/TypesTest.cpp 14 files changed, 28 insertions(+), 22 deletions(-) Approvals: Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/src/bts.cpp b/src/bts.cpp index 47607df..b6d0d0c 100644 --- a/src/bts.cpp +++ b/src/bts.cpp @@ -59,7 +59,10 @@ * require logging already to be initialized. */ __attribute__((constructor)) static void early_init(void) { - osmo_init_logging(&gprs_log_info); + if (!tall_pcu_ctx) { + tall_pcu_ctx = talloc_named_const(NULL, 1, "Osmo-PCU context"); + osmo_init_logging2(tall_pcu_ctx, &gprs_log_info); + } } } diff --git a/src/pcu_main.cpp b/src/pcu_main.cpp index 84ade6f..5b1b1be 100644 --- a/src/pcu_main.cpp +++ b/src/pcu_main.cpp @@ -56,7 +56,7 @@ static int config_given = 0; static char *config_file = strdup("osmo-pcu.cfg"); extern struct vty_app_info pcu_vty_info; -void *tall_pcu_ctx; +void *tall_pcu_ctx = NULL; extern void *bv_tall_ctx; static int quit = 0; static int rt_prio = -1; @@ -181,9 +181,13 @@ struct gprs_rlcmac_bts *bts; int rc; - tall_pcu_ctx = talloc_named_const(NULL, 1, "Osmo-PCU context"); - if (!tall_pcu_ctx) - return -ENOMEM; + /* tall_pcu_ctx may already have been initialized in bts.cpp during early_init(). */ + if (!tall_pcu_ctx) { + tall_pcu_ctx = talloc_named_const(NULL, 1, "Osmo-PCU context"); + if (!tall_pcu_ctx) + return -ENOMEM; + osmo_init_logging2(tall_pcu_ctx, &gprs_log_info); + } bts = bts_main_data(); bts->fc_interval = 1; @@ -259,7 +263,6 @@ msgb_talloc_ctx_init(tall_pcu_ctx, 0); - osmo_init_logging(&gprs_log_info); osmo_stats_init(tall_pcu_ctx); rate_ctr_init(tall_pcu_ctx); gprs_ns_set_log_ss(DNS); diff --git a/tests/alloc/AllocTest.cpp b/tests/alloc/AllocTest.cpp index 9f6e6c4..64d6a50 100644 --- a/tests/alloc/AllocTest.cpp +++ b/tests/alloc/AllocTest.cpp @@ -797,7 +797,7 @@ abort(); msgb_talloc_ctx_init(tall_pcu_ctx, 0); - osmo_init_logging(&gprs_log_info); + osmo_init_logging2(tall_pcu_ctx, &gprs_log_info); log_set_use_color(osmo_stderr_target, 0); log_set_print_filename(osmo_stderr_target, 0); if (getenv("LOGL_DEBUG")) diff --git a/tests/alloc/MslotTest.cpp b/tests/alloc/MslotTest.cpp index ebe04ca..8910e52 100644 --- a/tests/alloc/MslotTest.cpp +++ b/tests/alloc/MslotTest.cpp @@ -155,7 +155,7 @@ msgb_talloc_ctx_init(tall_pcu_ctx, 0); - osmo_init_logging(&gprs_log_info); + osmo_init_logging2(tall_pcu_ctx, &gprs_log_info); log_set_use_color(osmo_stderr_target, 0); log_set_print_filename(osmo_stderr_target, 0); log_set_log_level(osmo_stderr_target, LOGL_DEBUG); diff --git a/tests/bitcomp/BitcompTest.cpp b/tests/bitcomp/BitcompTest.cpp index 8dd4534..98bb2cc 100644 --- a/tests/bitcomp/BitcompTest.cpp +++ b/tests/bitcomp/BitcompTest.cpp @@ -188,15 +188,15 @@ int main(int argc, char **argv) { - osmo_init_logging(&gprs_log_info); - log_set_use_color(osmo_stderr_target, 0); - log_set_print_filename(osmo_stderr_target, 0); - log_parse_category_mask(osmo_stderr_target, "DRLCMACUL,1"); - tall_pcu_ctx = talloc_named_const(NULL, 1, "moiji-mobile bitcompTest context"); if (!tall_pcu_ctx) abort(); + osmo_init_logging2(tall_pcu_ctx, &gprs_log_info); + log_set_use_color(osmo_stderr_target, 0); + log_set_print_filename(osmo_stderr_target, 0); + log_parse_category_mask(osmo_stderr_target, "DRLCMACUL,1"); + test_EPDAN_decode_tree(); if (getenv("TALLOC_REPORT_FULL")) diff --git a/tests/codel/codel_test.c b/tests/codel/codel_test.c index 91bad13..2ce2429 100644 --- a/tests/codel/codel_test.c +++ b/tests/codel/codel_test.c @@ -134,7 +134,7 @@ int main(int argc, char **argv) { - osmo_init_logging(&info); + osmo_init_logging2(NULL, &info); log_set_use_color(osmo_stderr_target, 0); log_set_print_filename(osmo_stderr_target, 0); log_set_log_level(osmo_stderr_target, LOGL_INFO); diff --git a/tests/edge/EdgeTest.cpp b/tests/edge/EdgeTest.cpp index cd80c05..98ca206 100644 --- a/tests/edge/EdgeTest.cpp +++ b/tests/edge/EdgeTest.cpp @@ -1402,7 +1402,7 @@ abort(); msgb_talloc_ctx_init(tall_pcu_ctx, 0); - osmo_init_logging(&gprs_log_info); + osmo_init_logging2(tall_pcu_ctx, &gprs_log_info); log_set_use_color(osmo_stderr_target, 0); log_set_print_filename(osmo_stderr_target, 0); diff --git a/tests/emu/pcu_emu.cpp b/tests/emu/pcu_emu.cpp index 4cc37f3..354a328 100644 --- a/tests/emu/pcu_emu.cpp +++ b/tests/emu/pcu_emu.cpp @@ -112,7 +112,7 @@ abort(); msgb_talloc_ctx_init(tall_pcu_ctx, 0); - osmo_init_logging(&gprs_log_info); + osmo_init_logging2(tall_pcu_ctx, &gprs_log_info); vty_init(&pcu_vty_info); pcu_vty_init(&gprs_log_info); diff --git a/tests/fn/FnTest.cpp b/tests/fn/FnTest.cpp index 1e3ff11..35249f5 100644 --- a/tests/fn/FnTest.cpp +++ b/tests/fn/FnTest.cpp @@ -149,7 +149,7 @@ abort(); msgb_talloc_ctx_init(tall_pcu_ctx, 0); - osmo_init_logging(&gprs_log_info); + osmo_init_logging2(tall_pcu_ctx, &gprs_log_info); log_set_use_color(osmo_stderr_target, 0); log_set_print_filename(osmo_stderr_target, 0); log_set_log_level(osmo_stderr_target, LOGL_DEBUG); diff --git a/tests/llc/LlcTest.cpp b/tests/llc/LlcTest.cpp index eb693f5..3083644 100644 --- a/tests/llc/LlcTest.cpp +++ b/tests/llc/LlcTest.cpp @@ -225,7 +225,7 @@ abort(); msgb_talloc_ctx_init(tall_pcu_ctx, 0); - osmo_init_logging(&gprs_log_info); + osmo_init_logging2(tall_pcu_ctx, &gprs_log_info); log_set_use_color(osmo_stderr_target, 0); log_set_print_filename(osmo_stderr_target, 0); log_set_log_level(osmo_stderr_target, LOGL_INFO); diff --git a/tests/ms/MsTest.cpp b/tests/ms/MsTest.cpp index 4601504..728daf6 100644 --- a/tests/ms/MsTest.cpp +++ b/tests/ms/MsTest.cpp @@ -524,7 +524,7 @@ abort(); msgb_talloc_ctx_init(tall_pcu_ctx, 0); - osmo_init_logging(&gprs_log_info); + osmo_init_logging2(tall_pcu_ctx, &gprs_log_info); log_set_use_color(osmo_stderr_target, 0); log_set_print_filename(osmo_stderr_target, 0); log_set_log_level(osmo_stderr_target, LOGL_INFO); diff --git a/tests/rlcmac/RLCMACTest.cpp b/tests/rlcmac/RLCMACTest.cpp index 9155809..3de4fac 100644 --- a/tests/rlcmac/RLCMACTest.cpp +++ b/tests/rlcmac/RLCMACTest.cpp @@ -230,7 +230,7 @@ int main(int argc, char *argv[]) { void *ctx = talloc_named_const(NULL, 1, "RLCMACTest"); - osmo_init_logging(&gprs_log_info); + osmo_init_logging2(ctx, &gprs_log_info); //printSizeofRLCMAC(); testRlcMacDownlink(ctx); diff --git a/tests/tbf/TbfTest.cpp b/tests/tbf/TbfTest.cpp index 662708a..dfed79e 100644 --- a/tests/tbf/TbfTest.cpp +++ b/tests/tbf/TbfTest.cpp @@ -3233,7 +3233,7 @@ abort(); msgb_talloc_ctx_init(tall_pcu_ctx, 0); - osmo_init_logging(&gprs_log_info); + osmo_init_logging2(tall_pcu_ctx, &gprs_log_info); log_set_use_color(osmo_stderr_target, 0); log_set_print_filename(osmo_stderr_target, 0); bssgp_set_log_ss(DBSSGP); diff --git a/tests/types/TypesTest.cpp b/tests/types/TypesTest.cpp index 3a43897..1bc911f 100644 --- a/tests/types/TypesTest.cpp +++ b/tests/types/TypesTest.cpp @@ -487,7 +487,7 @@ abort(); msgb_talloc_ctx_init(tall_pcu_ctx, 0); - osmo_init_logging(&gprs_log_info); + osmo_init_logging2(tall_pcu_ctx, &gprs_log_info); log_set_use_color(osmo_stderr_target, 0); log_set_print_filename(osmo_stderr_target, 0); -- To view, visit https://gerrit.osmocom.org/7604 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: I2199b62d0270bd35dec2283e8f5b364b7c63915b Gerrit-PatchSet: 1 Gerrit-Project: osmo-pcu Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Neels Hofmeyr From gerrit-no-reply at lists.osmocom.org Wed Apr 4 17:07:36 2018 From: gerrit-no-reply at lists.osmocom.org (Neels Hofmeyr) Date: Wed, 4 Apr 2018 17:07:36 +0000 Subject: libosmocore[master]: fsm: id: properly set name in case of NULL id In-Reply-To: References: Message-ID: Patch Set 1: but .. it's so .. obvious..... ... ... ok. -- To view, visit https://gerrit.osmocom.org/7627 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I6d6b09a811b82770818f19b189a57d9fc4a8133b Gerrit-PatchSet: 1 Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Neels Hofmeyr Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Wed Apr 4 17:14:27 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Wed, 4 Apr 2018 17:14:27 +0000 Subject: [MERGED] osmocom-bb[fixeria/trx]: trx_toolkit: Add cmdline arg to set bind addr In-Reply-To: References: Message-ID: Pau Espin Pedrol has submitted this change and it was merged. Change subject: trx_toolkit: Add cmdline arg to set bind addr ...................................................................... trx_toolkit: Add cmdline arg to set bind addr Previous hardcoded default of 0.0.0.0 was inappropiate in some scenarios, as it sets the SRC addr of the packets sent through the socket based on the routing. For instance, if iface IF1 has assigned two IP addresses A and B, A being the first addr of the interface, and osmo-bts-trx is configured with "osmotrx ip local A" and "osmotrx ip remote B", the following happens: CMD POWER OFF src=A:5801 dst=B:5701 RSP POWER OFF src=A:5701 dst=A:5701 <-- A is assigned as src addr. But osmo-bts-trx is waiting for packets from B:5701, and the packet is dropped with ICMP Unreachable. If addr binding is forced in fake_trx to B, then everthing's fine. Let's extend the UDPLink in order to allow manual, but optional setting of bind address, and add a corresponding cmdline argument to all executables. Change-Id: I7be18fef40967fb7551f4115f22cbbd9cdb0840d --- M src/target/trx_toolkit/burst_gen.py M src/target/trx_toolkit/burst_send.py M src/target/trx_toolkit/clck_gen.py M src/target/trx_toolkit/ctrl_cmd.py M src/target/trx_toolkit/ctrl_if_bb.py M src/target/trx_toolkit/ctrl_if_bts.py M src/target/trx_toolkit/fake_trx.py M src/target/trx_toolkit/udp_link.py 8 files changed, 58 insertions(+), 36 deletions(-) Approvals: Vadim Yanitskiy: Looks good to me, but someone else must approve Pau Espin Pedrol: Looks good to me, but someone else must approve Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/src/target/trx_toolkit/burst_gen.py b/src/target/trx_toolkit/burst_gen.py index 4bc036e..d83f137 100755 --- a/src/target/trx_toolkit/burst_gen.py +++ b/src/target/trx_toolkit/burst_gen.py @@ -39,6 +39,7 @@ class Application: # Application variables remote_addr = "127.0.0.1" + bind_addr = "0.0.0.0" base_port = 5700 conn_mode = "TRX" output_file = None @@ -70,11 +71,11 @@ def run(self): # Init DATA interface with TRX or L1 if self.conn_mode == "TRX": - self.data_if = DATAInterface(self.remote_addr, - self.base_port + 2, self.base_port + 102) + self.data_if = DATAInterface(self.remote_addr, self.base_port + 2, + self.bind_addr, self.base_port + 102) elif self.conn_mode == "L1": - self.data_if = DATAInterface(self.remote_addr, - self.base_port + 102, self.base_port + 2) + self.data_if = DATAInterface(self.remote_addr, self.base_port + 102, + self.bind_addr, self.base_port + 2) # Init random burst generator burst_gen = RandBurstGen() @@ -149,6 +150,7 @@ " -o --output-file Write bursts to a capture file\n" \ " -m --conn-mode Send bursts to: TRX (default) / L1\n" \ " -r --remote-addr Set remote address (default %s)\n" \ + " -b --bind-addr Set local address (default %s)\n" \ " -p --base-port Set base port number (default %d)\n\n" s += " Burst generation\n" \ @@ -161,7 +163,7 @@ " --toa Set ToA in symbols (default random)\n" \ " --toa256 Set ToA in 1/256 symbol periods\n" - print(s % (self.remote_addr, self.base_port)) + print(s % (self.remote_addr, self.bind_addr, self.base_port)) if msg is not None: print(msg) @@ -169,12 +171,13 @@ def parse_argv(self): try: opts, args = getopt.getopt(sys.argv[1:], - "o:m:r:p:b:c:f:t:h", + "o:m:r:b:p:b:c:f:t:h", [ "help", "output-file=" "conn-mode=", "remote-addr=", + "bind-addr=", "base-port=", "burst-type=", "burst-count=", @@ -200,6 +203,8 @@ self.conn_mode = v elif o in ("-r", "--remote-addr"): self.remote_addr = v + elif o in ("-b", "--bind-addr"): + self.bind_addr = v elif o in ("-p", "--base-port"): self.base_port = int(v) diff --git a/src/target/trx_toolkit/burst_send.py b/src/target/trx_toolkit/burst_send.py index 7405c90..f6c85ba 100755 --- a/src/target/trx_toolkit/burst_send.py +++ b/src/target/trx_toolkit/burst_send.py @@ -37,6 +37,7 @@ class Application: # Application variables remote_addr = "127.0.0.1" + bind_addr = "0.0.0.0" base_port = 5700 conn_mode = "TRX" @@ -65,12 +66,12 @@ def run(self): # Init DATA interface with TRX or L1 if self.conn_mode == "TRX": - self.data_if = DATAInterface(self.remote_addr, - self.base_port + 2, self.base_port + 102) + self.data_if = DATAInterface(self.remote_addr, self.base_port + 2, + self.bind_addr, self.base_port + 102) l12trx = True elif self.conn_mode == "L1": - self.data_if = DATAInterface(self.remote_addr, - self.base_port + 102, self.base_port + 2) + self.data_if = DATAInterface(self.remote_addr, self.base_port + 102, + self.bind_addr, self.base_port + 2) l12trx = False else: self.print_help("[!] Unknown connection type") @@ -124,6 +125,7 @@ s += " TRX interface specific\n" \ " -m --conn-mode Send bursts to: TRX (default) / L1\n" \ " -r --remote-addr Set remote address (default %s)\n" \ + " -b --bind-addr Set bind address (default %s)\n" \ " -p --base-port Set base port number (default %d)\n\n" s += " Burst source\n" \ @@ -138,7 +140,7 @@ " --frame-num-lt NUM TDMA frame number lower than NUM\n" \ " --frame-num-gt NUM TDMA frame number greater than NUM\n" - print(s % (self.remote_addr, self.base_port)) + print(s % (self.remote_addr, self.bind_addr, self.base_port)) if msg is not None: print(msg) @@ -146,11 +148,12 @@ def parse_argv(self): try: opts, args = getopt.getopt(sys.argv[1:], - "m:r:p:i:h", + "m:r:b:p:i:h", [ "help", "conn-mode=", "remote-addr=", + "bind-addr=", "base-port=", "capture-file=", "msg-skip=", @@ -177,6 +180,8 @@ self.conn_mode = v elif o in ("-r", "--remote-addr"): self.remote_addr = v + elif o in ("-b", "--bind-addr"): + self.bind_addr = v elif o in ("-p", "--base-port"): self.base_port = int(v) diff --git a/src/target/trx_toolkit/clck_gen.py b/src/target/trx_toolkit/clck_gen.py index 4b86c31..b488770 100755 --- a/src/target/trx_toolkit/clck_gen.py +++ b/src/target/trx_toolkit/clck_gen.py @@ -102,7 +102,7 @@ signal.signal(signal.SIGINT, self.sig_handler) def run(self): - self.link = UDPLink("127.0.0.1", 5800, 5700) + self.link = UDPLink("127.0.0.1", 5800, "0.0.0.0", 5700) self.clck = CLCKGen([self.link], ind_period = 51) self.clck.start() diff --git a/src/target/trx_toolkit/ctrl_cmd.py b/src/target/trx_toolkit/ctrl_cmd.py index 0791f85..e56105a 100755 --- a/src/target/trx_toolkit/ctrl_cmd.py +++ b/src/target/trx_toolkit/ctrl_cmd.py @@ -36,6 +36,7 @@ class Application: # Application variables remote_addr = "127.0.0.1" + bind_addr = "0.0.0.0" base_port = 5700 bind_port = 0 fuzzing = False @@ -48,8 +49,8 @@ signal.signal(signal.SIGINT, self.sig_handler) # Init UDP connection - self.ctrl_link = UDPLink(self.remote_addr, - self.base_port + 1, self.bind_port) + self.ctrl_link = UDPLink(self.remote_addr, self.base_port + 1, + self.bind_addr, self.bind_port) # Debug print print("[i] Init CTRL interface (%s)" \ @@ -64,9 +65,10 @@ " -r --remote-addr Set remote address (default %s)\n" \ " -p --base-port Set base port number (default %d)\n" \ " -P --bind-port Set local port number (default: random)\n" \ + " -b --bind-addr Set local address (default %s)\n" \ " -f --fuzzing Send raw payloads (without CMD)\n" \ - print(s % (self.remote_addr, self.base_port)) + print(s % (self.remote_addr, self.base_port, self.bind_addr)) if msg is not None: print(msg) @@ -74,12 +76,13 @@ def parse_argv(self): try: opts, args = getopt.getopt(sys.argv[1:], - "r:p:P:fh", + "r:p:P:b:fh", [ "help", "fuzzing", "base-port=", "bind-port=", + "bind-addr=", "remote-addr=", ]) except getopt.GetoptError as err: @@ -93,6 +96,8 @@ elif o in ("-r", "--remote-addr"): self.remote_addr = v + elif o in ("-b", "--bind-addr"): + self.bind_addr = v elif o in ("-p", "--base-port"): self.base_port = int(v) elif o in ("-P", "--bind-port"): diff --git a/src/target/trx_toolkit/ctrl_if_bb.py b/src/target/trx_toolkit/ctrl_if_bb.py index a1ccd0d..3de14ef 100644 --- a/src/target/trx_toolkit/ctrl_if_bb.py +++ b/src/target/trx_toolkit/ctrl_if_bb.py @@ -32,8 +32,8 @@ tx_freq = None pm = None - def __init__(self, remote_addr, remote_port, bind_port): - CTRLInterface.__init__(self, remote_addr, remote_port, bind_port) + def __init__(self, remote_addr, remote_port, bind_addr, bind_port): + CTRLInterface.__init__(self, remote_addr, remote_port, bind_addr, bind_port) print("[i] Init CTRL interface for BB (%s)" % self.desc_link()) def parse_cmd(self, request): diff --git a/src/target/trx_toolkit/ctrl_if_bts.py b/src/target/trx_toolkit/ctrl_if_bts.py index 231641a..1488617 100644 --- a/src/target/trx_toolkit/ctrl_if_bts.py +++ b/src/target/trx_toolkit/ctrl_if_bts.py @@ -33,8 +33,8 @@ tx_freq = None pm = None - def __init__(self, remote_addr, remote_port, bind_port): - CTRLInterface.__init__(self, remote_addr, remote_port, bind_port) + def __init__(self, remote_addr, remote_port, bind_addr, bind_port): + CTRLInterface.__init__(self, remote_addr, remote_port, bind_addr, bind_port) print("[i] Init CTRL interface for BTS (%s)" % self.desc_link()) def parse_cmd(self, request): diff --git a/src/target/trx_toolkit/fake_trx.py b/src/target/trx_toolkit/fake_trx.py index 1fcd3df..b818b2a 100755 --- a/src/target/trx_toolkit/fake_trx.py +++ b/src/target/trx_toolkit/fake_trx.py @@ -42,6 +42,7 @@ # Application variables bts_addr = "127.0.0.1" bb_addr = "127.0.0.1" + trx_bind_addr = "0.0.0.0" bts_base_port = 5700 bb_base_port = 6700 @@ -60,12 +61,12 @@ def run(self): # Init TRX CTRL interface for BTS - self.bts_ctrl = CTRLInterfaceBTS(self.bts_addr, - self.bts_base_port + 101, self.bts_base_port + 1) + self.bts_ctrl = CTRLInterfaceBTS(self.bts_addr, self.bts_base_port + 101, + self.trx_bind_addr, self.bts_base_port + 1) # Init TRX CTRL interface for BB - self.bb_ctrl = CTRLInterfaceBB(self.bb_addr, - self.bb_base_port + 101, self.bb_base_port + 1) + self.bb_ctrl = CTRLInterfaceBB(self.bb_addr, self.bb_base_port + 101, + self.trx_bind_addr, self.bb_base_port + 1) # Power measurement emulation # Noise: -120 .. -105 @@ -77,10 +78,10 @@ self.bb_ctrl.pm = self.pm # Init DATA links - self.bts_data = UDPLink(self.bts_addr, - self.bts_base_port + 102, self.bts_base_port + 2) - self.bb_data = UDPLink(self.bb_addr, - self.bb_base_port + 102, self.bb_base_port + 2) + self.bts_data = UDPLink(self.bts_addr, self.bts_base_port + 102, + self.trx_bind_addr, self.bts_base_port + 2) + self.bb_data = UDPLink(self.bb_addr, self.bb_base_port + 102, + self.trx_bind_addr, self.bb_base_port + 2) # BTS <-> BB burst forwarding self.burst_fwd = BurstForwarder(self.bts_data, self.bb_data) @@ -94,8 +95,8 @@ self.bb_ctrl.burst_fwd = self.burst_fwd # Provide clock to BTS - self.bts_clck = UDPLink(self.bts_addr, - self.bts_base_port + 100, self.bts_base_port) + self.bts_clck = UDPLink(self.bts_addr, self.bts_base_port + 100, + self.trx_bind_addr, self.bts_base_port) self.clck_gen = CLCKGen([self.bts_clck]) self.bts_ctrl.clck_gen = self.clck_gen @@ -142,7 +143,8 @@ " -R --bts-addr Set BTS remote address (default %s)\n" \ " -r --bb-addr Set BB remote address (default %s)\n" \ " -P --bts-base-port Set BTS base port number (default %d)\n" \ - " -p --bb-base-port Set BB base port number (default %d)\n\n" + " -p --bb-base-port Set BB base port number (default %d)\n" \ + " -b --trx-bind-addr Set TRX bind address (default %s)\n\n" s += " Simulation\n" \ " --rand-dl-rssi Enable DL RSSI randomization\n" \ @@ -151,7 +153,8 @@ " --rand-ul-toa Enable UL ToA randomization\n" print(s % (self.bts_addr, self.bb_addr, - self.bts_base_port, self.bb_base_port)) + self.bts_base_port, self.bb_base_port, + self.trx_bind_addr)) if msg is not None: print(msg) @@ -159,11 +162,12 @@ def parse_argv(self): try: opts, args = getopt.getopt(sys.argv[1:], - "R:r:P:p:h", + "R:r:P:p:b:h", [ "help", "bts-addr=", "bb-addr=", "bts-base-port=", "bb-base-port=", + "trx-bind-addr=", "rand-dl-rssi", "rand-ul-rssi", "rand-dl-toa", "rand-ul-toa", ]) @@ -186,6 +190,9 @@ elif o in ("-p", "--bb-base-port"): self.bb_base_port = int(v) + elif o in ("-b", "--trx-bind-addr"): + self.trx_bind_addr = v + # Message field randomization elif o == "rand-dl-rssi": self.randomize_dl_rssi = True diff --git a/src/target/trx_toolkit/udp_link.py b/src/target/trx_toolkit/udp_link.py index 56d9c37..b378b63 100644 --- a/src/target/trx_toolkit/udp_link.py +++ b/src/target/trx_toolkit/udp_link.py @@ -25,10 +25,10 @@ import socket class UDPLink: - def __init__(self, remote_addr, remote_port, bind_port = 0): + def __init__(self, remote_addr, remote_port, bind_addr = '0.0.0.0', bind_port = 0): self.sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) self.sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) - self.sock.bind(('0.0.0.0', bind_port)) + self.sock.bind((bind_addr, bind_port)) self.sock.setblocking(0) # Save remote info -- To view, visit https://gerrit.osmocom.org/7410 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: I7be18fef40967fb7551f4115f22cbbd9cdb0840d Gerrit-PatchSet: 4 Gerrit-Project: osmocom-bb Gerrit-Branch: fixeria/trx Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Pau Espin Pedrol Gerrit-Reviewer: Vadim Yanitskiy Gerrit-Reviewer: fixeria From gerrit-no-reply at lists.osmocom.org Wed Apr 4 17:14:27 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Wed, 4 Apr 2018 17:14:27 +0000 Subject: [MERGED] osmocom-bb[fixeria/trx]: trxcon/l1ctl.c: hexdump content of unhandled messages In-Reply-To: References: Message-ID: Pau Espin Pedrol has submitted this change and it was merged. Change subject: trxcon/l1ctl.c: hexdump content of unhandled messages ...................................................................... trxcon/l1ctl.c: hexdump content of unhandled messages Change-Id: Iec8fc6d49d1e35fe101960dd969de559e37a6a75 --- M src/host/trxcon/l1ctl.c 1 file changed, 2 insertions(+), 1 deletion(-) Approvals: Vadim Yanitskiy: Looks good to me, but someone else must approve Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/src/host/trxcon/l1ctl.c b/src/host/trxcon/l1ctl.c index a08c460..74400be 100644 --- a/src/host/trxcon/l1ctl.c +++ b/src/host/trxcon/l1ctl.c @@ -794,7 +794,8 @@ case L1CTL_CRYPTO_REQ: return l1ctl_rx_crypto_req(l1l, msg); default: - LOGP(DL1C, LOGL_ERROR, "Unknown MSG: %u\n", l1h->msg_type); + LOGP(DL1C, LOGL_ERROR, "Unknown MSG type %u: %s\n", l1h->msg_type, + osmo_hexdump(msgb_data(msg), msgb_length(msg))); msgb_free(msg); return -EINVAL; } -- To view, visit https://gerrit.osmocom.org/7414 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: Iec8fc6d49d1e35fe101960dd969de559e37a6a75 Gerrit-PatchSet: 5 Gerrit-Project: osmocom-bb Gerrit-Branch: fixeria/trx Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Pau Espin Pedrol Gerrit-Reviewer: Vadim Yanitskiy From gerrit-no-reply at lists.osmocom.org Wed Apr 4 17:20:20 2018 From: gerrit-no-reply at lists.osmocom.org (Neels Hofmeyr) Date: Wed, 4 Apr 2018 17:20:20 +0000 Subject: [PATCH] docker-playground[master]: fix 'make -C subdir': use $(shell pwd) instead of $PWD Message-ID: Review at https://gerrit.osmocom.org/7633 fix 'make -C subdir': use $(shell pwd) instead of $PWD $PWD does not get updated when make steps into a subdir. The pwd output does. So obtain the current dir from shell pwd instead of $PWD. So far, when doing 'make -C osmo-foo-maser', the image's name would be derived from the root dir's basename and all images were tagged as 'docker-playground'. With this fix, 'make -C' from anywhere still tags with the proper name. Change-Id: I1dd0fd1ad89fdee18fdbea851ccc831ad60aeccf --- M make/Makefile 1 file changed, 1 insertion(+), 1 deletion(-) git pull ssh://gerrit.osmocom.org:29418/docker-playground refs/changes/33/7633/1 diff --git a/make/Makefile b/make/Makefile index 14d4c52..45ecb5a 100644 --- a/make/Makefile +++ b/make/Makefile @@ -15,7 +15,7 @@ # REGISTRY_HOST=docker.io USERNAME=$(USER) -NAME=$(shell basename $(PWD)) +NAME=$(shell basename $(shell pwd)) RELEASE_SUPPORT := $(shell dirname $(abspath $(lastword $(MAKEFILE_LIST))))/.make-release-support IMAGE=$(REGISTRY_HOST)/$(USERNAME)/$(NAME) -- To view, visit https://gerrit.osmocom.org/7633 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I1dd0fd1ad89fdee18fdbea851ccc831ad60aeccf Gerrit-PatchSet: 1 Gerrit-Project: docker-playground Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr From gerrit-no-reply at lists.osmocom.org Wed Apr 4 17:34:16 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Wed, 4 Apr 2018 17:34:16 +0000 Subject: libosmocore[master]: fsm: id: properly set name in case of NULL id In-Reply-To: References: Message-ID: Patch Set 1: > but .. it's so .. obvious..... ... ... ok. we've had similarly "obvious" changes to the name/id handling of osmo_fsm in the past and it broke :/ also, if this patch is fixing a bug, we should explicitly test for it to avoid regressions. -- To view, visit https://gerrit.osmocom.org/7627 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I6d6b09a811b82770818f19b189a57d9fc4a8133b Gerrit-PatchSet: 1 Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Neels Hofmeyr Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Wed Apr 4 18:00:58 2018 From: gerrit-no-reply at lists.osmocom.org (Neels Hofmeyr) Date: Wed, 4 Apr 2018 18:00:58 +0000 Subject: [PATCH] osmo-bsc[master]: Revert "cosmetic: remove dead code" Message-ID: Review at https://gerrit.osmocom.org/7634 Revert "cosmetic: remove dead code" Removing the dead VTY commands currently breaks our ttcn3-bts-test. Instead we should keep dummy commands that don't do anything, to not break existing configs. This reverts commit c74a5616bf1c77ac40ddd92f4927dca7a1b45bc8. Change-Id: I95a5bad1ade66ded849cfc20bebb7fc522aecc38 --- M doc/examples/osmo-bsc/osmo-bsc.cfg M include/osmocom/bsc/bsc_msc_data.h M src/osmo-bsc/osmo_bsc_api.c M src/osmo-bsc/osmo_bsc_msc.c M src/osmo-bsc/osmo_bsc_vty.c M tests/vty_test_runner.py 6 files changed, 634 insertions(+), 0 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-bsc refs/changes/34/7634/1 diff --git a/doc/examples/osmo-bsc/osmo-bsc.cfg b/doc/examples/osmo-bsc/osmo-bsc.cfg index 2a41d84..2d759ca 100644 --- a/doc/examples/osmo-bsc/osmo-bsc.cfg +++ b/doc/examples/osmo-bsc/osmo-bsc.cfg @@ -78,6 +78,10 @@ phys_chan_config TCH/F hopping enabled 0 msc 0 + ip.access rtp-base 4000 + timeout-ping 20 + timeout-pong 5 + no timeout-ping advanced no bsc-welcome-text no bsc-msc-lost-text no bsc-grace-text diff --git a/include/osmocom/bsc/bsc_msc_data.h b/include/osmocom/bsc/bsc_msc_data.h index bedf412..a04e632 100644 --- a/include/osmocom/bsc/bsc_msc_data.h +++ b/include/osmocom/bsc/bsc_msc_data.h @@ -73,6 +73,11 @@ /* Connection data */ + int ping_timeout; + int pong_timeout; + struct osmo_timer_list ping_timer; + struct osmo_timer_list pong_timer; + int advanced_ping; struct bsc_msc_connection *msc_con; struct osmo_plmn_id core_plmn; int core_lac; @@ -153,6 +158,8 @@ int osmo_bsc_msc_init(struct bsc_msc_data *msc); int osmo_bsc_sccp_init(struct gsm_network *gsmnet); +int msc_queue_write(struct bsc_msc_connection *conn, struct msgb *msg, int proto); +int msc_queue_write_with_ping(struct bsc_msc_connection *, struct msgb *msg, int proto); int osmo_bsc_audio_init(struct gsm_network *network); diff --git a/src/osmo-bsc/osmo_bsc_api.c b/src/osmo-bsc/osmo_bsc_api.c index 239bb54..b80eb58 100644 --- a/src/osmo-bsc/osmo_bsc_api.c +++ b/src/osmo-bsc/osmo_bsc_api.c @@ -237,8 +237,18 @@ { int con_type, rc, lu_cause; char *imsi = NULL; + struct timeval tv; struct msgb *resp; enum bsc_con ret; + int send_ping = msc->advanced_ping; + + /* Advanced ping/pong handling */ + if (osmo_timer_pending(&msc->pong_timer)) + send_ping = 0; + if (msc->ping_timeout <= 0) + send_ping = 0; + if (send_ping && osmo_timer_remaining(&msc->ping_timer, NULL, &tv) == -1) + send_ping = 0; /* Check the filter */ rc = bsc_filter_initial(msc->network->bsc_data, msc, conn, msg, diff --git a/src/osmo-bsc/osmo_bsc_msc.c b/src/osmo-bsc/osmo_bsc_msc.c index 2178d1d..e0c7556 100644 --- a/src/osmo-bsc/osmo_bsc_msc.c +++ b/src/osmo-bsc/osmo_bsc_msc.c @@ -40,19 +40,515 @@ #include #include +#if 0 +static void initialize_if_needed(struct bsc_msc_connection *conn); +static void send_lacs(struct gsm_network *net, struct bsc_msc_connection *conn); +static void send_id_get_response(struct bsc_msc_data *data, int fd, struct msgb *inp); +static void send_ping(struct bsc_msc_data *data); +static void schedule_ping_pong(struct bsc_msc_data *data); + +/* + * MGCP forwarding code + */ + +#endif +static int mgcp_do_read(struct osmo_fd *fd) +{ + struct bsc_msc_data *data = (struct bsc_msc_data *) fd->data; + struct msgb *mgcp; + int ret; + + mgcp = msgb_alloc_headroom(4096, 128, "mgcp_from_gw"); + if (!mgcp) { + LOGP(DMGCP, LOGL_ERROR, "Failed to allocate MGCP message.\n"); + return -1; + } + + ret = read(fd->fd, mgcp->data, 4096 - 128); + if (ret <= 0) { + LOGP(DMGCP, LOGL_ERROR, "Failed to read: %d/%s\n", errno, strerror(errno)); + msgb_free(mgcp); + return -1; + } else if (ret > 4096 - 128) { + LOGP(DMGCP, LOGL_ERROR, "Too much data: %d\n", ret); + msgb_free(mgcp); + return -1; + } + + mgcp->l2h = msgb_put(mgcp, ret); + msc_queue_write(data->msc_con, mgcp, IPAC_PROTO_MGCP_OLD); + return 0; +} + +static int mgcp_do_write(struct osmo_fd *fd, struct msgb *msg) +{ + int ret; + + LOGP(DMGCP, LOGL_DEBUG, "Sending msg to MGCP GW size: %u\n", msg->len); + + ret = write(fd->fd, msg->data, msg->len); + if (ret != msg->len) + LOGP(DMGCP, LOGL_ERROR, "Failed to forward message to MGCP GW (%s).\n", strerror(errno)); + + return ret; +} + +#if 0 +static void mgcp_forward(struct bsc_msc_data *data, struct msgb *msg) +{ + struct msgb *mgcp; + + if (msgb_l2len(msg) > 4096) { + LOGP(DMGCP, LOGL_ERROR, "Can not forward too big message.\n"); + return; + } + + mgcp = msgb_alloc(4096, "mgcp_to_gw"); + if (!mgcp) { + LOGP(DMGCP, LOGL_ERROR, "Failed to send message.\n"); + return; + } + + msgb_put(mgcp, msgb_l2len(msg)); + memcpy(mgcp->data, msg->l2h, mgcp->len); + if (osmo_wqueue_enqueue(&data->mgcp_agent, mgcp) != 0) { + LOGP(DMGCP, LOGL_FATAL, "Could not queue message to MGCP GW.\n"); + msgb_free(mgcp); + } +} +#endif + +static int mgcp_create_port(struct bsc_msc_data *data) +{ + int on; + struct sockaddr_in addr; + + data->mgcp_agent.bfd.fd = socket(AF_INET, SOCK_DGRAM, 0); + if (data->mgcp_agent.bfd.fd < 0) { + LOGP(DMGCP, LOGL_FATAL, "Failed to create UDP socket errno: %d\n", errno); + return -1; + } + + on = 1; + setsockopt(data->mgcp_agent.bfd.fd, SOL_SOCKET, SO_REUSEADDR, &on, sizeof(on)); + + /* try to bind the socket */ + memset(&addr, 0, sizeof(addr)); + addr.sin_family = AF_INET; + addr.sin_addr.s_addr = htonl(INADDR_LOOPBACK); + addr.sin_port = 0; + + if (bind(data->mgcp_agent.bfd.fd, (struct sockaddr *) &addr, sizeof(addr)) < 0) { + LOGP(DMGCP, LOGL_FATAL, "Failed to bind to any port.\n"); + close(data->mgcp_agent.bfd.fd); + data->mgcp_agent.bfd.fd = -1; + return -1; + } + + /* connect to the remote */ + addr.sin_port = htons(2427); + if (connect(data->mgcp_agent.bfd.fd, (struct sockaddr *) & addr, sizeof(addr)) < 0) { + LOGP(DMGCP, LOGL_FATAL, "Failed to connect to local MGCP GW. %s\n", strerror(errno)); + close(data->mgcp_agent.bfd.fd); + data->mgcp_agent.bfd.fd = -1; + return -1; + } + + osmo_wqueue_init(&data->mgcp_agent, 10); + data->mgcp_agent.bfd.when = BSC_FD_READ; + data->mgcp_agent.bfd.data = data; + data->mgcp_agent.read_cb = mgcp_do_read; + data->mgcp_agent.write_cb = mgcp_do_write; + + if (osmo_fd_register(&data->mgcp_agent.bfd) != 0) { + LOGP(DMGCP, LOGL_FATAL, "Failed to register BFD\n"); + close(data->mgcp_agent.bfd.fd); + data->mgcp_agent.bfd.fd = -1; + return -1; + } + + return 0; +} + + +/* + * Send data to the network + */ +int msc_queue_write(struct bsc_msc_connection *conn, struct msgb *msg, int proto) +{ + ipa_prepend_header(msg, proto); + if (osmo_wqueue_enqueue(&conn->write_queue, msg) != 0) { + LOGP(DMSC, LOGL_FATAL, "Failed to queue IPA/%d\n", proto); + msgb_free(msg); + return -1; + } + + return 0; +} + +#if 0 +int msc_queue_write_with_ping(struct bsc_msc_connection *conn, + struct msgb *msg, int proto) +{ + struct bsc_msc_data *data; + uint8_t val; + + /* prepend the header */ + ipa_prepend_header(msg, proto); + if (osmo_wqueue_enqueue(&conn->write_queue, msg) != 0) { + LOGP(DMSC, LOGL_FATAL, "Failed to queue IPA/%d\n", proto); + msgb_free(msg); + return -1; + } + + /* add the ping as the other message */ + val = IPAC_MSGT_PING; + msgb_l16tv_put(msg, 1, IPAC_PROTO_IPACCESS, &val); + + data = (struct bsc_msc_data *) conn->write_queue.bfd.data; + schedule_ping_pong(data); + return 0; +} + +static int msc_alink_do_write(struct osmo_fd *fd, struct msgb *msg) +{ + int ret; + + LOGP(DMSC, LOGL_DEBUG, "Sending SCCP to MSC: %u\n", msgb_l2len(msg)); + LOGP(DLMI, LOGL_DEBUG, "MSC TX %s\n", osmo_hexdump(msg->data, msg->len)); + + ret = write(fd->fd, msg->data, msg->len); + if (ret < msg->len) + perror("MSC: Failed to send SCCP"); + + return ret; +} + +static void handle_ctrl(struct bsc_msc_data *msc, struct msgb *msg) +{ + int ret; + struct ctrl_cmd *cmd; + + cmd = ctrl_cmd_parse(msc->msc_con, msg); + if (!cmd) { + LOGP(DMSC, LOGL_ERROR, "Failed to parse control message.\n"); + cmd = talloc_zero(msc->msc_con, struct ctrl_cmd); + if (!cmd) { + LOGP(DMSC, LOGL_ERROR, "OOM!\n"); + return; + } + cmd->type = CTRL_TYPE_ERROR; + cmd->id = "err"; + cmd->reply = "Failed to parse control message."; + + ctrl_cmd_send(&msc->msc_con->write_queue, cmd); + talloc_free(cmd); + + return; + } + + ret = ctrl_cmd_handle(msc->network->ctrl, cmd, msc->network); + if (ret != CTRL_CMD_HANDLED) + ctrl_cmd_send(&msc->msc_con->write_queue, cmd); + talloc_free(cmd); +} + +static void osmo_ext_handle(struct bsc_msc_data *msc, struct msgb *msg) +{ + struct ipaccess_head *hh; + struct ipaccess_head_ext *hh_ext; + + hh = (struct ipaccess_head *) msg->data; + hh_ext = (struct ipaccess_head_ext *) hh->data; + if (msg->len < sizeof(*hh) + sizeof(*hh_ext)) { + LOGP(DMSC, LOGL_ERROR, "Packet too short for extended header.\n"); + return; + } + + msg->l2h = hh_ext->data; + if (hh_ext->proto == IPAC_PROTO_EXT_MGCP) + mgcp_forward(msc, msg); + else if (hh_ext->proto == IPAC_PROTO_EXT_LAC) + send_lacs(msc->network, msc->msc_con); + else if (hh_ext->proto == IPAC_PROTO_EXT_CTRL) + handle_ctrl(msc, msg); +} + +static int ipaccess_a_fd_cb(struct osmo_fd *bfd) +{ + struct msgb *msg = NULL; + struct ipaccess_head *hh; + struct bsc_msc_data *data = (struct bsc_msc_data *) bfd->data; + int ret; + + ret = ipa_msg_recv_buffered(bfd->fd, &msg, &data->msc_con->pending_msg); + if (ret <= 0) { + if (ret == -EAGAIN) + return 0; + if (ret == 0) { + LOGP(DMSC, LOGL_ERROR, "The connection to the MSC was lost.\n"); + bsc_msc_lost(data->msc_con); + return -1; + } + + LOGP(DMSC, LOGL_ERROR, "Failed to parse ip access message: %d\n", ret); + return -1; + } + + LOGP(DLMI, LOGL_DEBUG, "From MSC: %s proto: %d\n", osmo_hexdump(msg->data, msg->len), msg->l2h[0]); + + /* handle base message handling */ + hh = (struct ipaccess_head *) msg->data; + + /* initialize the networking. This includes sending a GSM08.08 message */ + msg->cb[0] = (unsigned long) data; + if (hh->proto == IPAC_PROTO_IPACCESS) { + ipa_ccm_rcvmsg_base(msg, bfd); + if (msg->l2h[0] == IPAC_MSGT_ID_ACK) + initialize_if_needed(data->msc_con); + else if (msg->l2h[0] == IPAC_MSGT_ID_GET) { + send_id_get_response(data, bfd->fd, msg); + } else if (msg->l2h[0] == IPAC_MSGT_PONG) { + osmo_timer_del(&data->pong_timer); + } + } else if (hh->proto == IPAC_PROTO_SCCP) { + sccp_system_incoming_ctx(msg, data->msc_con); + } else if (hh->proto == IPAC_PROTO_MGCP_OLD) { + mgcp_forward(data, msg); + } else if (hh->proto == IPAC_PROTO_OSMO) { + osmo_ext_handle(data, msg); + } + + msgb_free(msg); + return 0; +} + +static void send_ping(struct bsc_msc_data *data) +{ + struct msgb *msg; + + msg = msgb_alloc_headroom(4096, 128, "ping"); + if (!msg) { + LOGP(DMSC, LOGL_ERROR, "Failed to create PING.\n"); + return; + } + + msg->l2h = msgb_put(msg, 1); + msg->l2h[0] = IPAC_MSGT_PING; + + msc_queue_write(data->msc_con, msg, IPAC_PROTO_IPACCESS); +} + +static void schedule_ping_pong(struct bsc_msc_data *data) +{ + /* send another ping in 20 seconds */ + osmo_timer_schedule(&data->ping_timer, data->ping_timeout, 0); + + /* also start a pong timer */ + osmo_timer_schedule(&data->pong_timer, data->pong_timeout, 0); +} + +static void msc_ping_timeout_cb(void *_data) +{ + struct bsc_msc_data *data = (struct bsc_msc_data *) _data; + if (data->ping_timeout <= 0) + return; + + send_ping(data); + schedule_ping_pong(data); +} + +static void msc_pong_timeout_cb(void *_data) +{ +// struct bsc_msc_data *data = (struct bsc_msc_data *) _data; + + LOGP(DMSC, LOGL_ERROR, "MSC didn't answer PING. Closing connection.\n"); +// bsc_msc_lost(data->msc_con); +} + +static void msc_connection_connected(struct bsc_msc_connection *con) +{ + struct msc_signal_data sig; + struct bsc_msc_data *data; + int ret, on; + on = 1; +// ret = setsockopt(con->write_queue.bfd.fd, IPPROTO_TCP, TCP_NODELAY, &on, sizeof(on)); +// if (ret != 0) +// LOGP(DMSC, LOGL_ERROR, "Failed to set TCP_NODELAY: %s\n", strerror(errno)); + +// data = (struct bsc_msc_data *) con->write_queue.bfd.data; +// msc_ping_timeout_cb(data); + + sig.data = data; + osmo_signal_dispatch(SS_MSC, S_MSC_CONNECTED, &sig); +} + +/* + * The connection to the MSC was lost and we will need to free all + * resources and then attempt to reconnect. + */ +static void msc_connection_was_lost(struct bsc_msc_connection *msc) +{ +// struct msc_signal_data sig; +// struct bsc_msc_data *data; + + LOGP(DMSC, LOGL_ERROR, "Lost MSC connection. Freing stuff.\n"); + +// data = (struct bsc_msc_data *) msc->write_queue.bfd.data; +// osmo_timer_del(&data->ping_timer); +// osmo_timer_del(&data->pong_timer); +// +// sig.data = data; +// osmo_signal_dispatch(SS_MSC, S_MSC_LOST, &sig); + + msc->is_authenticated = 0; +// bsc_msc_schedule_connect(msc); +} + +static void send_lacs(struct gsm_network *net, struct bsc_msc_connection *conn) +{ + struct ipac_ext_lac_cmd *lac; + struct gsm_bts *bts; + struct msgb *msg; + int lacs = 0; + + if (llist_empty(&net->bts_list)) { + LOGP(DMSC, LOGL_ERROR, "No BTSs configured. Not sending LACs.\n"); + return; + } + + msg = msgb_alloc_headroom(4096, 128, "LAC Command"); + if (!msg) { + LOGP(DMSC, LOGL_ERROR, "Failed to create the LAC command.\n"); + return; + } + + lac = (struct ipac_ext_lac_cmd *) msgb_put(msg, sizeof(*lac)); + lac->add_remove = 1; + + llist_for_each_entry(bts, &net->bts_list, list) { + if (lacs++ == 0) + lac->lac = htons(bts->location_area_code); + else + msgb_put_u16(msg, htons(bts->location_area_code)); + } + + lac->nr_extra_lacs = lacs - 1; + ipa_prepend_header_ext(msg, IPAC_PROTO_EXT_LAC); + msc_queue_write(conn, msg, IPAC_PROTO_OSMO); +} + +static void initialize_if_needed(struct bsc_msc_connection *conn) +{ + struct msgb *msg; + + if (!conn->is_authenticated) { + /* send a gsm 08.08 reset message from here */ + msg = gsm0808_create_reset(); + if (!msg) { + LOGP(DMSC, LOGL_ERROR, "Failed to create the reset message.\n"); + return; + } + + sccp_write(msg, &sccp_ssn_bssap, &sccp_ssn_bssap, 0, conn); + msgb_free(msg); + conn->is_authenticated = 1; + } +} + +static int answer_challenge(struct bsc_msc_data *data, struct msgb *inp, struct osmo_auth_vector *vec) +{ + int ret; + struct tlv_parsed tvp; + const uint8_t *mrand; + uint8_t mrand_len; + struct osmo_sub_auth_data auth = { + .type = OSMO_AUTH_TYPE_GSM, + .algo = OSMO_AUTH_ALG_MILENAGE, + }; + + ret = ipa_ccm_idtag_parse_off(&tvp, + inp->l2h + 1, + msgb_l2len(inp) - 1, 1); + if (ret < 0) { + LOGP(DMSC, LOGL_ERROR, "ignoring IPA response " + "message with malformed TLVs: %s\n", osmo_hexdump(inp->l2h + 1, + msgb_l2len(inp) - 1)); + return 0; + } + + mrand = TLVP_VAL(&tvp, 0x23); + mrand_len = TLVP_LEN(&tvp, 0x23); + if (mrand_len != 16) { + LOGP(DMSC, LOGL_ERROR, + "RAND is not 16 bytes. Was %d\n", + mrand_len); + return 0; + } + + /* copy the key */ + memcpy(auth.u.umts.opc, data->bsc_key, 16); + memcpy(auth.u.umts.k, data->bsc_key, 16); + memset(auth.u.umts.amf, 0, 2); + auth.u.umts.sqn = 0; + + /* generate the result */ + memset(vec, 0, sizeof(*vec)); + osmo_auth_gen_vec(vec, &auth, mrand); + return 1; +} + + +static void send_id_get_response(struct bsc_msc_data *data, int fd, struct msgb *inp) +{ + struct msc_signal_data sig; + struct msgb *msg; + struct osmo_auth_vector vec; + int valid = 0; + + if (data->bsc_key_present) + valid = answer_challenge(data, inp, &vec); + + msg = bsc_msc_id_get_resp(valid, data->bsc_token, + vec.res, valid ? vec.res_len : 0); + if (!msg) + return; + msc_queue_write(data->msc_con, msg, IPAC_PROTO_IPACCESS); + + sig.data = data; + osmo_signal_dispatch(SS_MSC, S_MSC_AUTHENTICATED, &sig); +} + +#endif + int osmo_bsc_msc_init(struct bsc_msc_data *data) { + if (mgcp_create_port(data) != 0) + return -1; + data->msc_con = bsc_msc_create(data, &data->dests); if (!data->msc_con) { LOGP(DMSC, LOGL_ERROR, "Creating the MSC network connection failed.\n"); return -1; } +// osmo_timer_setup(&data->ping_timer, msc_ping_timeout_cb, data); +// osmo_timer_setup(&data->pong_timer, msc_pong_timeout_cb, data); + + data->msc_con->write_queue.bfd.data = data; +// data->msc_con->connection_loss = msc_connection_was_lost; +// data->msc_con->connected = msc_connection_connected; +// data->msc_con->write_queue.read_cb = ipaccess_a_fd_cb; +// data->msc_con->write_queue.write_cb = msc_alink_do_write; +// bsc_msc_connect(data->msc_con); + data->msc_con->is_connected = 1; data->msc_con->is_authenticated = 1; + return 0; } + struct bsc_msc_data *osmo_msc_data_find(struct gsm_network *net, int nr) { @@ -83,6 +579,8 @@ msc_data->network = net; INIT_LLIST_HEAD(&msc_data->dests); + msc_data->ping_timeout = 20; + msc_data->pong_timeout = 5; msc_data->core_plmn = (struct osmo_plmn_id){ .mcc = GSM_MCC_MNC_INVALID, .mnc = GSM_MCC_MNC_INVALID, diff --git a/src/osmo-bsc/osmo_bsc_vty.c b/src/osmo-bsc/osmo_bsc_vty.c index 7968e21..3455d01 100644 --- a/src/osmo-bsc/osmo_bsc_vty.c +++ b/src/osmo-bsc/osmo_bsc_vty.c @@ -122,6 +122,17 @@ msc->core_ci, VTY_NEWLINE); vty_out(vty, " ip.access rtp-base %d%s", msc->rtp_base, VTY_NEWLINE); + if (msc->ping_timeout == -1) + vty_out(vty, " no timeout-ping%s", VTY_NEWLINE); + else { + vty_out(vty, " timeout-ping %d%s", msc->ping_timeout, VTY_NEWLINE); + vty_out(vty, " timeout-pong %d%s", msc->pong_timeout, VTY_NEWLINE); + if (msc->advanced_ping) + vty_out(vty, " timeout-ping advanced%s", VTY_NEWLINE); + else + vty_out(vty, " no timeout-ping advanced%s", VTY_NEWLINE); + } + if (msc->ussd_welcome_txt) vty_out(vty, " bsc-welcome-text %s%s", msc->ussd_welcome_txt, VTY_NEWLINE); else @@ -382,6 +393,64 @@ talloc_free(dest); } + return CMD_SUCCESS; +} + +DEFUN(cfg_net_msc_no_ping_time, + cfg_net_msc_no_ping_time_cmd, + "no timeout-ping", + NO_STR "Disable the ping/pong handling on A-link\n") +{ + struct bsc_msc_data *data = bsc_msc_data(vty); + data->ping_timeout = -1; + return CMD_SUCCESS; +} + +DEFUN(cfg_net_msc_ping_time, + cfg_net_msc_ping_time_cmd, + "timeout-ping <1-2147483647>", + "Set the PING interval, negative for not sending PING\n" + "Timeout in seconds\n") +{ + struct bsc_msc_data *data = bsc_msc_data(vty); + data->ping_timeout = atoi(argv[0]); + return CMD_SUCCESS; +} + +DEFUN(cfg_net_msc_pong_time, + cfg_net_msc_pong_time_cmd, + "timeout-pong <1-2147483647>", + "Set the time to wait for a PONG\n" "Timeout in seconds\n") +{ + struct bsc_msc_data *data = bsc_msc_data(vty); + data->pong_timeout = atoi(argv[0]); + return CMD_SUCCESS; +} + +DEFUN(cfg_net_msc_advanced_ping, + cfg_net_msc_advanced_ping_cmd, + "timeout-ping advanced", + "Ping timeout handling\nEnable advanced mode during SCCP\n") +{ + struct bsc_msc_data *data = bsc_msc_data(vty); + + if (data->ping_timeout == -1) { + vty_out(vty, "%%ping handling is disabled. Enable it first.%s", + VTY_NEWLINE); + return CMD_WARNING; + } + + data->advanced_ping = 1; + return CMD_SUCCESS; +} + +DEFUN(cfg_no_net_msc_advanced_ping, + cfg_no_net_msc_advanced_ping_cmd, + "no timeout-ping advanced", + NO_STR "Ping timeout handling\nEnable advanced mode during SCCP\n") +{ + struct bsc_msc_data *data = bsc_msc_data(vty); + data->advanced_ping = 0; return CMD_SUCCESS; } @@ -911,6 +980,11 @@ install_element(MSC_NODE, &cfg_net_bsc_codec_list_cmd); install_element(MSC_NODE, &cfg_net_msc_dest_cmd); install_element(MSC_NODE, &cfg_net_msc_no_dest_cmd); + install_element(MSC_NODE, &cfg_net_msc_no_ping_time_cmd); + install_element(MSC_NODE, &cfg_net_msc_ping_time_cmd); + install_element(MSC_NODE, &cfg_net_msc_pong_time_cmd); + install_element(MSC_NODE, &cfg_net_msc_advanced_ping_cmd); + install_element(MSC_NODE, &cfg_no_net_msc_advanced_ping_cmd); install_element(MSC_NODE, &cfg_net_msc_welcome_ussd_cmd); install_element(MSC_NODE, &cfg_net_msc_no_welcome_ussd_cmd); install_element(MSC_NODE, &cfg_net_msc_lost_ussd_cmd); diff --git a/tests/vty_test_runner.py b/tests/vty_test_runner.py index 3b73ce7..387ea70 100755 --- a/tests/vty_test_runner.py +++ b/tests/vty_test_runner.py @@ -234,6 +234,47 @@ res = self.vty.command("show network") self.assert_(res.startswith('BSC is on Country Code') >= 0) + def testPingPongConfiguration(self): + self.vty.enable() + self.vty.verify("configure terminal", ['']) + self.vty.verify("msc 0", ['']) + + self.vty.verify("timeout-ping 12", ['']) + self.vty.verify("timeout-pong 14", ['']) + res = self.vty.command("show running-config") + self.assert_(res.find(" timeout-ping 12") > 0) + self.assert_(res.find(" timeout-pong 14") > 0) + self.assert_(res.find(" no timeout-ping advanced") > 0) + + self.vty.verify("timeout-ping advanced", ['']) + res = self.vty.command("show running-config") + self.assert_(res.find(" timeout-ping 12") > 0) + self.assert_(res.find(" timeout-pong 14") > 0) + self.assert_(res.find(" timeout-ping advanced") > 0) + + self.vty.verify("no timeout-ping advanced", ['']) + res = self.vty.command("show running-config") + self.assert_(res.find(" timeout-ping 12") > 0) + self.assert_(res.find(" timeout-pong 14") > 0) + self.assert_(res.find(" no timeout-ping advanced") > 0) + + self.vty.verify("no timeout-ping", ['']) + res = self.vty.command("show running-config") + self.assertEquals(res.find(" timeout-ping 12"), -1) + self.assertEquals(res.find(" timeout-pong 14"), -1) + self.assertEquals(res.find(" no timeout-ping advanced"), -1) + self.assert_(res.find(" no timeout-ping") > 0) + + self.vty.verify("timeout-ping advanced", ['%ping handling is disabled. Enable it first.']) + + # And back to enabling it + self.vty.verify("timeout-ping 12", ['']) + self.vty.verify("timeout-pong 14", ['']) + res = self.vty.command("show running-config") + self.assert_(res.find(" timeout-ping 12") > 0) + self.assert_(res.find(" timeout-pong 14") > 0) + self.assert_(res.find(" timeout-ping advanced") > 0) + def testMscDataCoreLACCI(self): self.vty.enable() res = self.vty.command("show running-config") -- To view, visit https://gerrit.osmocom.org/7634 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I95a5bad1ade66ded849cfc20bebb7fc522aecc38 Gerrit-PatchSet: 1 Gerrit-Project: osmo-bsc Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr From gerrit-no-reply at lists.osmocom.org Wed Apr 4 18:00:50 2018 From: gerrit-no-reply at lists.osmocom.org (Neels Hofmeyr) Date: Wed, 4 Apr 2018 18:00:50 +0000 Subject: osmo-bsc[master]: Revert "cosmetic: remove dead code" In-Reply-To: References: Message-ID: Neels Hofmeyr has reverted this change. Change subject: Revert "cosmetic: remove dead code" ...................................................................... Uploaded patch set 1. -- To view, visit https://gerrit.osmocom.org/7634 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: revert Gerrit-Change-Id: I95a5bad1ade66ded849cfc20bebb7fc522aecc38 Gerrit-PatchSet: 1 Gerrit-Project: osmo-bsc Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr From gerrit-no-reply at lists.osmocom.org Wed Apr 4 19:05:46 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Wed, 4 Apr 2018 19:05:46 +0000 Subject: docker-playground[master]: fix 'make -C subdir': use $(shell pwd) instead of $PWD In-Reply-To: References: Message-ID: Patch Set 1: (1 comment) https://gerrit.osmocom.org/#/c/7633/1/make/Makefile File make/Makefile: Line 18: NAME=$(shell basename $(shell pwd)) Hm looks related to the issues I had and fixed in this other makefile. The solution merged in there may be worth a try: https://git.sysmocom.de/poky/system-images/commit/Makefile?h=201705&id=e72638bdc7a927741076b92e086baa6506ed5490 -- To view, visit https://gerrit.osmocom.org/7633 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I1dd0fd1ad89fdee18fdbea851ccc831ad60aeccf Gerrit-PatchSet: 1 Gerrit-Project: docker-playground Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr Gerrit-Reviewer: Pau Espin Pedrol Gerrit-HasComments: Yes From gerrit-no-reply at lists.osmocom.org Wed Apr 4 21:47:08 2018 From: gerrit-no-reply at lists.osmocom.org (Vadim Yanitskiy) Date: Wed, 4 Apr 2018 21:47:08 +0000 Subject: [MERGED] libosmocore[master]: gsm0480: drop messages with incorrect data length In-Reply-To: References: Message-ID: Vadim Yanitskiy has submitted this change and it was merged. Change subject: gsm0480: drop messages with incorrect data length ...................................................................... gsm0480: drop messages with incorrect data length If either an INVOKE, either a RETURN_RESULT component has the data with incorrect length (see Annex A, 3GPP TS 04.80), the whole message is probably incorrect. Let's drop such messages instead of silent truncation. Change-Id: I2a169b0b84aa26ea2521edd55ff005c27ae6d808 --- M src/gsm/gsm0480.c 1 file changed, 12 insertions(+), 9 deletions(-) Approvals: Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/src/gsm/gsm0480.c b/src/gsm/gsm0480.c index 38082b3..636f267 100644 --- a/src/gsm/gsm0480.c +++ b/src/gsm/gsm0480.c @@ -552,8 +552,12 @@ if (num_chars > length - 2) return 0; - if (num_chars > GSM0480_USSD_OCTET_STRING_LEN) - num_chars = GSM0480_USSD_OCTET_STRING_LEN; + /* Drop messages with incorrect length */ + if (num_chars > GSM0480_USSD_OCTET_STRING_LEN) { + LOGP(DLGLOBAL, LOGL_ERROR, "Incorrect USS_DATA data length=%u, " + "dropping message", num_chars); + return 0; + } memcpy(req->ussd_text, uss_req_data + 2, num_chars); @@ -588,9 +592,12 @@ /* Get the amount of bytes */ num_chars = uss_req_data[6]; - /* Prevent a mobile-originated buffer-overrun! */ - if (num_chars > GSM0480_USSD_OCTET_STRING_LEN) - num_chars = GSM0480_USSD_OCTET_STRING_LEN; + /* Drop messages with incorrect length */ + if (num_chars > GSM0480_USSD_OCTET_STRING_LEN) { + LOGP(DLGLOBAL, LOGL_ERROR, "Incorrect USS_REQ data length=%u, " + "dropping message", num_chars); + return 0; + } /* Copy the data 'as is' */ memcpy(req->ussd_data, uss_req_data + 7, num_chars); @@ -605,10 +612,6 @@ if (dcs == 0x0F) { /* Calculate the amount of 7-bit characters */ num_chars = (num_chars * 8) / 7; - - /* Prevent a mobile-originated buffer-overrun! */ - if (num_chars > GSM0480_USSD_7BIT_STRING_LEN) - num_chars = GSM0480_USSD_7BIT_STRING_LEN; gsm_7bit_decode_n_ussd((char *)req->ussd_text, sizeof(req->ussd_text), &(uss_req_data[7]), num_chars); -- To view, visit https://gerrit.osmocom.org/7630 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: I2a169b0b84aa26ea2521edd55ff005c27ae6d808 Gerrit-PatchSet: 2 Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Owner: Vadim Yanitskiy Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Vadim Yanitskiy From gerrit-no-reply at lists.osmocom.org Wed Apr 4 21:47:08 2018 From: gerrit-no-reply at lists.osmocom.org (Vadim Yanitskiy) Date: Wed, 4 Apr 2018 21:47:08 +0000 Subject: [MERGED] libosmocore[master]: gsm0480: copy the raw USSD data, its DCS and length In-Reply-To: References: Message-ID: Vadim Yanitskiy has submitted this change and it was merged. Change subject: gsm0480: copy the raw USSD data, its DCS and length ...................................................................... gsm0480: copy the raw USSD data, its DCS and length As it was already documented before, the 'ss_request' struct has a rudiment of deprecated 'ussd_request' struct - the 'ussd_text' field. It represents the data either of an INVOKE component, either of a RETURN_RESULT component, encoded as ASCII in case if DCS is 0x0f (i.e. decoded by the code itself), otherwise raw bytes 'as is'. Previously, there was no possibility to distinguish between ASCII and raw bytes with different DCS. Moreover, the payload decoding is not desired in some cases. Let's introduce the new fields, which will carry the raw unmodified payload, its length and DCS (Data Coding Scheme). Change-Id: Ia193d175021e145bb3b131290231f307dbefc64a --- M TODO-RELEASE M include/osmocom/gsm/gsm0480.h M src/gsm/gsm0480.c 3 files changed, 32 insertions(+), 10 deletions(-) Approvals: Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/TODO-RELEASE b/TODO-RELEASE index 928b18d..16496d6 100644 --- a/TODO-RELEASE +++ b/TODO-RELEASE @@ -10,4 +10,6 @@ core msgb_queue_free() add inline func to msgb.h coding gsm0503_rach_ext-encode() add func to gsm0503_coding.h codec ecu.c / ecu.h implement ECU for FR (Error Concealment Unit) -fsm fsmc / fsm.h added callback for graceful exit => ABI changed \ No newline at end of file +fsm fsmc / fsm.h added callback for graceful exit => ABI changed +gsm gsm0480.c / gsm0480.h the 'ss_request' struct extended with ussd_data, + ussd_data_len, and ussd_data_dcs => ABI changed diff --git a/include/osmocom/gsm/gsm0480.h b/include/osmocom/gsm/gsm0480.h index 05c26df..b0b6aa2 100644 --- a/include/osmocom/gsm/gsm0480.h +++ b/include/osmocom/gsm/gsm0480.h @@ -67,6 +67,18 @@ uint8_t ussd_text[GSM0480_USSD_OCTET_STRING_LEN]; /** + * Represents the data of either an INVOKE, either + * a RETURN_RESULT component 'as is'. Useful when + * decoding is not supported or not desired. + * + * Shall be always followed by its length (in bytes) + * and DCS (Data Coding Scheme). + */ + uint8_t ussd_data[GSM0480_USSD_OCTET_STRING_LEN]; + uint8_t ussd_data_len; /* Length in bytes */ + uint8_t ussd_data_dcs; /* Data Coding Scheme */ + + /** * GSM TS 04.80, section 3.3 "Transaction identifier" * See GSM TS 04.07, section 11.2.3 for details. */ diff --git a/src/gsm/gsm0480.c b/src/gsm/gsm0480.c index 0072812..38082b3 100644 --- a/src/gsm/gsm0480.c +++ b/src/gsm/gsm0480.c @@ -557,6 +557,11 @@ memcpy(req->ussd_text, uss_req_data + 2, num_chars); + /* Copy the data 'as is' */ + memcpy(req->ussd_data, uss_req_data + 2, num_chars); + req->ussd_data_len = num_chars; + req->ussd_data_dcs = 0x00; + return 1; } @@ -580,6 +585,17 @@ /* Get DCS (Data Coding Scheme) */ dcs = uss_req_data[4]; + /* Get the amount of bytes */ + num_chars = uss_req_data[6]; + + /* Prevent a mobile-originated buffer-overrun! */ + if (num_chars > GSM0480_USSD_OCTET_STRING_LEN) + num_chars = GSM0480_USSD_OCTET_STRING_LEN; + + /* Copy the data 'as is' */ + memcpy(req->ussd_data, uss_req_data + 7, num_chars); + req->ussd_data_len = num_chars; + req->ussd_data_dcs = dcs; /** * According to GSM 04.08, 4.4.2 "ASN.1 data types": @@ -588,7 +604,7 @@ */ if (dcs == 0x0F) { /* Calculate the amount of 7-bit characters */ - num_chars = (uss_req_data[6] * 8) / 7; + num_chars = (num_chars * 8) / 7; /* Prevent a mobile-originated buffer-overrun! */ if (num_chars > GSM0480_USSD_7BIT_STRING_LEN) @@ -599,15 +615,7 @@ return 1; } else { - /* Get the amount of 8-bit characters */ - num_chars = uss_req_data[6]; - - /* Prevent a mobile-originated buffer-overrun! */ - if (num_chars > GSM0480_USSD_OCTET_STRING_LEN) - num_chars = GSM0480_USSD_OCTET_STRING_LEN; - memcpy(req->ussd_text, &(uss_req_data[7]), num_chars); - return 1; } -- To view, visit https://gerrit.osmocom.org/7625 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: Ia193d175021e145bb3b131290231f307dbefc64a Gerrit-PatchSet: 2 Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Owner: Vadim Yanitskiy Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Vadim Yanitskiy From gerrit-no-reply at lists.osmocom.org Wed Apr 4 21:47:08 2018 From: gerrit-no-reply at lists.osmocom.org (Vadim Yanitskiy) Date: Wed, 4 Apr 2018 21:47:08 +0000 Subject: [MERGED] libosmocore[master]: gsm0480: document the 'ss_request' structure In-Reply-To: References: Message-ID: Vadim Yanitskiy has submitted this change and it was merged. Change subject: gsm0480: document the 'ss_request' structure ...................................................................... gsm0480: document the 'ss_request' structure Change-Id: I22144dd759e0c1bb1965574b7ddd676606e5d6b7 --- M include/osmocom/gsm/gsm0480.h 1 file changed, 31 insertions(+), 0 deletions(-) Approvals: Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/include/osmocom/gsm/gsm0480.h b/include/osmocom/gsm/gsm0480.h index 0dfd868..05c26df 100644 --- a/include/osmocom/gsm/gsm0480.h +++ b/include/osmocom/gsm/gsm0480.h @@ -40,11 +40,42 @@ int gsm0480_decode_ussd_request(const struct gsm48_hdr *hdr, uint16_t len, struct ussd_request *request) OSMO_DEPRECATED("Use gsm0480_decode_ss_request() instead"); +/** + * This structure represents some meaningful parts of + * a decoded and/or to be encoded GSM 04.80 message. + */ struct ss_request { + /** + * GSM TS 04.80, section 3.6.4 "Operation code" + * See GSM0480_OP_CODE_* for possible values. + */ uint8_t opcode; + /** + * GSM TS 04.80, section 4.4.3.9 "ss-Code" + * The ss-Code identifier refers to the code which identify + * a supplementary service or a group of supplementary services. + */ uint8_t ss_code; + + /** + * A rudiment of deprecated 'ussd_request' structure. + * Represents the data of either an INVOKE, either + * a RETURN_RESULT component, encoded as ASCII in + * case if DCS is 0x0f (i.e. decoded by the code + * itself), otherwise raw bytes 'as is'. + */ uint8_t ussd_text[GSM0480_USSD_OCTET_STRING_LEN]; + + /** + * GSM TS 04.80, section 3.3 "Transaction identifier" + * See GSM TS 04.07, section 11.2.3 for details. + */ uint8_t transaction_id; + /** + * GSM TS 04.80, section 3.6.3 "Component ID tag" + * The term Component ID refers to the Invoke ID or + * the Linked ID. + */ uint8_t invoke_id; }; -- To view, visit https://gerrit.osmocom.org/7624 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: I22144dd759e0c1bb1965574b7ddd676606e5d6b7 Gerrit-PatchSet: 1 Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Owner: Vadim Yanitskiy Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Vadim Yanitskiy From jenkins at lists.osmocom.org Wed Apr 4 21:52:54 2018 From: jenkins at lists.osmocom.org (jenkins at lists.osmocom.org) Date: Wed, 4 Apr 2018 21:52:54 +0000 (UTC) Subject: =?UTF-8?Q?Build_failed_in_Jenkins:_master-osmo-gmr_=C2=BB_a1=3Ddefau?= =?UTF-8?Q?lt,a2=3Ddefault,a3=3Ddefault,osmocom-master-debian9_#328?= Message-ID: <606956978.18.1522878774901.JavaMail.jenkins@jenkins.osmocom.org> See ------------------------------------------ Started by upstream project "master-osmo-gmr" build number 328 originally caused by: Started by upstream project "master-libosmocore" build number 187 originally caused by: Started by an SCM change Building remotely on build2-deb9build-ansible (ttcn3 osmo-gsm-tester-build osmocom-gerrit-debian9 osmocom-master-debian9 coverity) in workspace > git rev-parse --is-inside-work-tree # timeout=10 Fetching changes from the remote Git repository > git config remote.origin.url git://git.osmocom.org/osmo-gmr # timeout=10 Fetching upstream changes from git://git.osmocom.org/osmo-gmr > git --version # timeout=10 > git fetch --tags --progress git://git.osmocom.org/osmo-gmr +refs/heads/*:refs/remotes/origin/* Checking out Revision adb8cc6aa9453dfc339de53ae641067136a031ec (refs/remotes/origin/master) > git config core.sparsecheckout # timeout=10 > git checkout -f adb8cc6aa9453dfc339de53ae641067136a031ec Commit message: "Add contrib/jenkins.sh script, like other osmo-* repositories" > git rev-list --no-walk adb8cc6aa9453dfc339de53ae641067136a031ec # timeout=10 [osmocom-master-debian9] $ /bin/sh -xe /tmp/jenkins2336193569389059459.sh + ./contrib/jenkins.sh + base= + deps= + inst= + export deps inst + osmo-clean-workspace.sh + chmod -R +w . + git checkout -f HEAD + git clean -dxf -e -e layer1-headers Skipping repository deps/libosmocore + [ -d ] + git -C checkout -f HEAD error: pathspec 'HEAD' did not match any file(s) known to git. Build step 'Execute shell' marked build as failure [WARNINGS]Skipping publisher since build result is FAILURE From jenkins at lists.osmocom.org Wed Apr 4 21:56:06 2018 From: jenkins at lists.osmocom.org (jenkins at lists.osmocom.org) Date: Wed, 4 Apr 2018 21:56:06 +0000 (UTC) Subject: =?UTF-8?Q?Build_failed_in_Jenkins:_master-osmo-bts_=C2=BB_sysmo, sup?= =?UTF-8?Q?erfemto=5Fv3.0.1pre,default,osmocom-master-debian9_#458?= Message-ID: <912603811.19.1522878966770.JavaMail.jenkins@jenkins.osmocom.org> See ------------------------------------------ Started by upstream project "master-osmo-bts" build number 458 originally caused by: Started by upstream project "master-libosmo-abis" build number 254 originally caused by: Started by upstream project "master-libosmocore" build number 187 originally caused by: Started by an SCM change Building remotely on build2-deb9build-ansible (ttcn3 osmo-gsm-tester-build osmocom-gerrit-debian9 osmocom-master-debian9 coverity) in workspace > git rev-parse --is-inside-work-tree # timeout=10 Fetching changes from the remote Git repository > git config remote.origin.url git://git.osmocom.org/osmo-bts # timeout=10 Fetching upstream changes from git://git.osmocom.org/osmo-bts > git --version # timeout=10 > git fetch --tags --progress git://git.osmocom.org/osmo-bts +refs/heads/*:refs/remotes/origin/* Checking out Revision 113e30cb0639cefbafdad2862c5e69b0e17d9bf3 (refs/remotes/origin/master) > git config core.sparsecheckout # timeout=10 > git checkout -f 113e30cb0639cefbafdad2862c5e69b0e17d9bf3 Commit message: "use osmo_init_logging2() with proper talloc ctx" > git rev-list --no-walk 113e30cb0639cefbafdad2862c5e69b0e17d9bf3 # timeout=10 [osmocom-master-debian9] $ /bin/sh -xe /tmp/jenkins296989706721487592.sh + ./contrib/jenkins_bts_model.sh sysmo ./contrib/jenkins_bts_model.sh: 7: [: xsysmo: unexpected operator + ./contrib/jenkins_sysmobts.sh + base= + deps= + inst= + export deps inst + osmo-clean-workspace.sh + chmod -R +w . + git checkout -f HEAD + git clean -dxf -e -e layer1-headers Skipping repository deps/libosmocore + [ -d ] + git -C checkout -f HEAD error: pathspec 'HEAD' did not match any file(s) known to git. Build step 'Execute shell' marked build as failure [WARNINGS]Skipping publisher since build result is FAILURE From gerrit-no-reply at lists.osmocom.org Wed Apr 4 22:54:40 2018 From: gerrit-no-reply at lists.osmocom.org (Neels Hofmeyr) Date: Wed, 4 Apr 2018 22:54:40 +0000 Subject: [PATCH] docker-playground[master]: osmo-bsc.cfg: drop legacy config: timeout-ping, timeout-pong Message-ID: Review at https://gerrit.osmocom.org/7635 osmo-bsc.cfg: drop legacy config: timeout-ping, timeout-pong Change-Id: I70bffa7ed96da099993ba0cedc50178ca9e00db4 --- M osmo-bsc-master/osmo-bsc.cfg M ttcn3-bsc-test/osmo-bsc.cfg 2 files changed, 0 insertions(+), 6 deletions(-) git pull ssh://gerrit.osmocom.org:29418/docker-playground refs/changes/35/7635/1 diff --git a/osmo-bsc-master/osmo-bsc.cfg b/osmo-bsc-master/osmo-bsc.cfg index 1166130..4176cae 100644 --- a/osmo-bsc-master/osmo-bsc.cfg +++ b/osmo-bsc-master/osmo-bsc.cfg @@ -339,9 +339,6 @@ hopping enabled 0 msc 0 ip.access rtp-base 4000 - timeout-ping 20 - timeout-pong 5 - no timeout-ping advanced no bsc-welcome-text no bsc-msc-lost-text no bsc-grace-text diff --git a/ttcn3-bsc-test/osmo-bsc.cfg b/ttcn3-bsc-test/osmo-bsc.cfg index 8b34904..610bdf3 100644 --- a/ttcn3-bsc-test/osmo-bsc.cfg +++ b/ttcn3-bsc-test/osmo-bsc.cfg @@ -344,9 +344,6 @@ hopping enabled 0 msc 0 ip.access rtp-base 4000 - timeout-ping 20 - timeout-pong 5 - no timeout-ping advanced no bsc-welcome-text no bsc-msc-lost-text no bsc-grace-text -- To view, visit https://gerrit.osmocom.org/7635 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I70bffa7ed96da099993ba0cedc50178ca9e00db4 Gerrit-PatchSet: 1 Gerrit-Project: docker-playground Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr From gerrit-no-reply at lists.osmocom.org Wed Apr 4 23:05:43 2018 From: gerrit-no-reply at lists.osmocom.org (Neels Hofmeyr) Date: Wed, 4 Apr 2018 23:05:43 +0000 Subject: [PATCH] osmo-bsc[master]: vty: re-add 'timeout-ping' and 'timeout-pong' as dummy commands In-Reply-To: References: Message-ID: Hello Jenkins Builder, I'd like you to reexamine a change. Please visit https://gerrit.osmocom.org/7634 to look at the new patch set (#2). vty: re-add 'timeout-ping' and 'timeout-pong' as dummy commands Legacy VTY commands were removed in commit c74a5616bf1c77ac40ddd92f4927dca7a1b45bc8 == I5cf3fec31cc774c902f3cfe6d16fb85ef301694a Removing the dead VTY commands currently breaks our ttcn3-bts-test and is likely to create problems with users of osmo-bsc, when their config osmo-bsc stops working with a mere upgrade. Instead, add deprecated dummy commands that don't do anything, to not break existing configs. Catch all of these legacy commands: timeout-ping timeout-pong timeout-ping advanced no timeout-ping no timeout-ping advanced by defining timeout-ping ARG timeout-pong ARG no timeout-ping [ARG] I verified manually that starting osmo-bsc with all the abovementioned VTY commands in the config file works (and produces the deprecation messages). Change-Id: I95a5bad1ade66ded849cfc20bebb7fc522aecc38 --- M src/osmo-bsc/osmo_bsc_vty.c 1 file changed, 21 insertions(+), 0 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-bsc refs/changes/34/7634/2 diff --git a/src/osmo-bsc/osmo_bsc_vty.c b/src/osmo-bsc/osmo_bsc_vty.c index 7968e21..e6ae078 100644 --- a/src/osmo-bsc/osmo_bsc_vty.c +++ b/src/osmo-bsc/osmo_bsc_vty.c @@ -884,6 +884,22 @@ return CMD_SUCCESS; } +#define LEGACY_STR "This command has no effect, it is kept to support legacy config files\n" + +DEFUN_DEPRECATED(cfg_net_msc_ping_time, cfg_net_msc_ping_time_cmd, + "timeout-ping ARG", LEGACY_STR "-\n") +{ + vty_out(vty, "%% timeout-ping / timeout-pong config is deprecated and has no effect%s", + VTY_NEWLINE); + return CMD_WARNING; +} + +ALIAS_DEPRECATED(cfg_net_msc_ping_time, cfg_net_msc_no_ping_time_cmd, + "no timeout-ping [ARG]", NO_STR LEGACY_STR "-\n"); + +ALIAS_DEPRECATED(cfg_net_msc_ping_time, cfg_net_msc_pong_time_cmd, + "timeout-pong ARG", LEGACY_STR "-\n"); + int bsc_vty_init_extra(void) { struct gsm_network *net = bsc_gsmnet; @@ -933,6 +949,11 @@ install_element(MSC_NODE, &cfg_msc_cs7_bsc_addr_cmd); install_element(MSC_NODE, &cfg_msc_cs7_msc_addr_cmd); + /* Deprecated: ping time config, kept to support legacy config files. */ + install_element(MSC_NODE, &cfg_net_msc_no_ping_time_cmd); + install_element(MSC_NODE, &cfg_net_msc_ping_time_cmd); + install_element(MSC_NODE, &cfg_net_msc_pong_time_cmd); + install_element_ve(&show_statistics_cmd); install_element_ve(&show_mscs_cmd); install_element_ve(&show_pos_cmd); -- To view, visit https://gerrit.osmocom.org/7634 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newpatchset Gerrit-Change-Id: I95a5bad1ade66ded849cfc20bebb7fc522aecc38 Gerrit-PatchSet: 2 Gerrit-Project: osmo-bsc Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr Gerrit-Reviewer: Jenkins Builder From jenkins at lists.osmocom.org Wed Apr 4 23:22:24 2018 From: jenkins at lists.osmocom.org (jenkins at lists.osmocom.org) Date: Wed, 4 Apr 2018 23:22:24 +0000 (UTC) Subject: =?UTF-8?Q?Jenkins_build_is_back_to_normal_:_master-osmo-bts_=C2=BB_sysmo?= =?UTF-8?Q?,superfemto=5Fv3.0.1pre,default,osmocom-master-debian9_#459?= In-Reply-To: <912603811.19.1522878966770.JavaMail.jenkins@jenkins.osmocom.org> References: <912603811.19.1522878966770.JavaMail.jenkins@jenkins.osmocom.org> Message-ID: <1509515368.20.1522884144184.JavaMail.jenkins@jenkins.osmocom.org> See From gerrit-no-reply at lists.osmocom.org Wed Apr 4 23:23:25 2018 From: gerrit-no-reply at lists.osmocom.org (Neels Hofmeyr) Date: Wed, 4 Apr 2018 23:23:25 +0000 Subject: [PATCH] osmo-msc[master]: unify allocation of gsm_subscriber_connection In-Reply-To: References: Message-ID: Hello Harald Welte, Jenkins Builder, I'd like you to reexamine a change. Please visit https://gerrit.osmocom.org/7616 to look at the new patch set (#2). unify allocation of gsm_subscriber_connection The current msc_subscr_con_allocate() was in fact only used by msc_vlr_tests, while both a_iface_bssap.c and iucs.c did their own duplicate code of allocating the gsm_subscriber_connection struct. Unify. Drop the old msc_subscr_con_allocate(), instead add msc_subscr_conn_alloc(). The new function also takes via_ran and lac arguments directly. The conn allocation will soon be closely tied to the subscr_conn_fsm instance allocation, so place the new function definition alongside the other subscr_conn_fsm API, and match its naming ("conn"). Related: OS#3122 Change-Id: Ia57b42a149a43f9c370b1310e2e1f512183993ea --- M include/osmocom/msc/gsm_data.h M include/osmocom/msc/osmo_msc.h M src/libmsc/a_iface_bssap.c M src/libmsc/iucs.c M src/libmsc/subscr_conn.c M tests/msc_vlr/msc_vlr_test_rest.c M tests/msc_vlr/msc_vlr_tests.c 7 files changed, 27 insertions(+), 17 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-msc refs/changes/16/7616/2 diff --git a/include/osmocom/msc/gsm_data.h b/include/osmocom/msc/gsm_data.h index 29abd5d..f3e1b94 100644 --- a/include/osmocom/msc/gsm_data.h +++ b/include/osmocom/msc/gsm_data.h @@ -374,7 +374,6 @@ char text[SMS_TEXT_SIZE]; }; -struct gsm_subscriber_connection *msc_subscr_con_allocate(struct gsm_network *network); void msc_subscr_con_free(struct gsm_subscriber_connection *conn); /* control interface handling */ diff --git a/include/osmocom/msc/osmo_msc.h b/include/osmocom/msc/osmo_msc.h index fb525e0..1334138 100644 --- a/include/osmocom/msc/osmo_msc.h +++ b/include/osmocom/msc/osmo_msc.h @@ -41,6 +41,9 @@ MSC_CONN_REJECT = 1, }; +struct gsm_subscriber_connection *msc_subscr_conn_alloc(struct gsm_network *network, + enum ran_type via_ran, uint16_t lac); + void msc_subscr_conn_update_id(struct gsm_subscriber_connection *conn, enum complete_layer3_type from, const char *id); char *msc_subscr_conn_get_conn_id(struct gsm_subscriber_connection *conn); diff --git a/src/libmsc/a_iface_bssap.c b/src/libmsc/a_iface_bssap.c index 743814c..1665e23 100644 --- a/src/libmsc/a_iface_bssap.c +++ b/src/libmsc/a_iface_bssap.c @@ -54,13 +54,9 @@ LOGP(DMSC, LOGL_DEBUG, "Allocating A-Interface subscriber conn: lac %i, conn_id %i\n", lac, conn_id); - conn = talloc_zero(network, struct gsm_subscriber_connection); + conn = msc_subscr_conn_alloc(network, RAN_GERAN_A, lac); if (!conn) return NULL; - - conn->network = network; - conn->via_ran = RAN_GERAN_A; - conn->lac = lac; conn->a.conn_id = conn_id; conn->a.scu = scu; @@ -69,7 +65,6 @@ * identify later which BSC is responsible for this subscriber connection */ memcpy(&conn->a.bsc_addr, &a_conn_info->bsc->bsc_addr, sizeof(conn->a.bsc_addr)); - llist_add_tail(&conn->entry, &network->subscr_conns); LOGPCONN(conn, LOGL_DEBUG, "A-Interface subscriber connection successfully allocated!\n"); return conn; } diff --git a/src/libmsc/iucs.c b/src/libmsc/iucs.c index d6da1f7..a3092f8 100644 --- a/src/libmsc/iucs.c +++ b/src/libmsc/iucs.c @@ -57,17 +57,12 @@ DEBUGP(DIUCS, "Allocating IuCS subscriber conn: lac %d, conn_id %" PRIx32 "\n", lac, ue->conn_id); - conn = talloc_zero(network, struct gsm_subscriber_connection); + conn = msc_subscr_conn_alloc(network, RAN_UTRAN_IU, lac); if (!conn) return NULL; - conn->network = network; - conn->via_ran = RAN_UTRAN_IU; conn->iu.ue_ctx = ue; conn->iu.ue_ctx->rab_assign_addr_enc = network->iu.rab_assign_addr_enc; - conn->lac = lac; - - llist_add_tail(&conn->entry, &network->subscr_conns); return conn; } diff --git a/src/libmsc/subscr_conn.c b/src/libmsc/subscr_conn.c index fc89a66..5629d26 100644 --- a/src/libmsc/subscr_conn.c +++ b/src/libmsc/subscr_conn.c @@ -369,6 +369,26 @@ osmo_fsm_register(&subscr_conn_fsm); } +/* Allocate a new subscriber conn. */ +struct gsm_subscriber_connection *msc_subscr_conn_alloc(struct gsm_network *network, + enum ran_type via_ran, uint16_t lac) +{ + struct gsm_subscriber_connection *conn; + + conn = talloc_zero(network, struct gsm_subscriber_connection); + if (!conn) + return NULL; + + *conn = (struct gsm_subscriber_connection){ + .network = network, + .via_ran = via_ran, + .lac = lac, + }; + + llist_add_tail(&conn->entry, &network->subscr_conns); + return conn; +} + const struct value_string complete_layer3_type_names[] = { { COMPLETE_LAYER3_NONE, "NONE" }, { COMPLETE_LAYER3_LU, "LU" }, diff --git a/tests/msc_vlr/msc_vlr_test_rest.c b/tests/msc_vlr/msc_vlr_test_rest.c index 3f843f0..7fd7bae 100644 --- a/tests/msc_vlr/msc_vlr_test_rest.c +++ b/tests/msc_vlr/msc_vlr_test_rest.c @@ -31,7 +31,7 @@ EXPECT_ACCEPTED(false); btw("freshly allocated conn"); - g_conn = msc_subscr_con_allocate(net); + g_conn = msc_subscr_conn_alloc(net, RAN_GERAN_A, 123); EXPECT_ACCEPTED(false); btw("conn_fsm present, in state NEW"); diff --git a/tests/msc_vlr/msc_vlr_tests.c b/tests/msc_vlr/msc_vlr_tests.c index 523f74f..7c54057 100644 --- a/tests/msc_vlr/msc_vlr_tests.c +++ b/tests/msc_vlr/msc_vlr_tests.c @@ -191,9 +191,7 @@ struct gsm_subscriber_connection *conn_new(void) { struct gsm_subscriber_connection *conn; - conn = msc_subscr_con_allocate(net); - conn->via_ran = rx_from_ran; - conn->lac = 23; + conn = msc_subscr_conn_alloc(net, rx_from_ran, 23); if (conn->via_ran == RAN_UTRAN_IU) { struct ranap_ue_conn_ctx *ue_ctx = talloc_zero(conn, struct ranap_ue_conn_ctx); *ue_ctx = (struct ranap_ue_conn_ctx){ -- To view, visit https://gerrit.osmocom.org/7616 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newpatchset Gerrit-Change-Id: Ia57b42a149a43f9c370b1310e2e1f512183993ea Gerrit-PatchSet: 2 Gerrit-Project: osmo-msc Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder From jenkins at lists.osmocom.org Wed Apr 4 23:57:42 2018 From: jenkins at lists.osmocom.org (jenkins at lists.osmocom.org) Date: Wed, 4 Apr 2018 23:57:42 +0000 (UTC) Subject: =?UTF-8?Q?Build_failed_in_Jenkins:_master-osmo-gmr_=C2=BB_a1=3Ddefau?= =?UTF-8?Q?lt,a2=3Ddefault,a3=3Ddefault,osmocom-master-debian9_#329?= In-Reply-To: <606956978.18.1522878774901.JavaMail.jenkins@jenkins.osmocom.org> References: <606956978.18.1522878774901.JavaMail.jenkins@jenkins.osmocom.org> Message-ID: <544515688.21.1522886263002.JavaMail.jenkins@jenkins.osmocom.org> See ------------------------------------------ Started by upstream project "master-osmo-gmr" build number 329 originally caused by: Started by upstream project "master-libosmocore" build number 188 originally caused by: Started by timer Building remotely on build2-deb9build-ansible (ttcn3 osmo-gsm-tester-build osmocom-gerrit-debian9 osmocom-master-debian9 coverity) in workspace > git rev-parse --is-inside-work-tree # timeout=10 Fetching changes from the remote Git repository > git config remote.origin.url git://git.osmocom.org/osmo-gmr # timeout=10 Fetching upstream changes from git://git.osmocom.org/osmo-gmr > git --version # timeout=10 > git fetch --tags --progress git://git.osmocom.org/osmo-gmr +refs/heads/*:refs/remotes/origin/* Checking out Revision adb8cc6aa9453dfc339de53ae641067136a031ec (refs/remotes/origin/master) > git config core.sparsecheckout # timeout=10 > git checkout -f adb8cc6aa9453dfc339de53ae641067136a031ec Commit message: "Add contrib/jenkins.sh script, like other osmo-* repositories" > git rev-list --no-walk adb8cc6aa9453dfc339de53ae641067136a031ec # timeout=10 [osmocom-master-debian9] $ /bin/sh -xe /tmp/jenkins5887156522652684977.sh + ./contrib/jenkins.sh + base= + deps= + inst= + export deps inst + osmo-clean-workspace.sh + chmod -R +w . + git checkout -f HEAD + git clean -dxf -e -e layer1-headers Skipping repository deps/libosmocore + [ -d ] + git -C checkout -f HEAD error: pathspec 'HEAD' did not match any file(s) known to git. Build step 'Execute shell' marked build as failure [WARNINGS]Skipping publisher since build result is FAILURE From gerrit-no-reply at lists.osmocom.org Thu Apr 5 00:32:11 2018 From: gerrit-no-reply at lists.osmocom.org (Neels Hofmeyr) Date: Thu, 5 Apr 2018 00:32:11 +0000 Subject: [PATCH] libosmocore[master]: ctrl: fix deferred commands (and hence fix osmo-bts-sysmo 'c... In-Reply-To: References: Message-ID: Hello Jenkins Builder, I'd like you to reexamine a change. Please visit https://gerrit.osmocom.org/7618 to look at the new patch set (#2). ctrl: fix deferred commands (and hence fix osmo-bts-sysmo 'clock-info' cmd) The CTRL interface has a ctrl_cmd_def_* API that allows deferring a CTRL command reply until later. However, the command handling currently fails to acknowledge this and deallocates the struct ctrl_cmd anyway. Fix: in struct ctrl_cmd, add a defer pointer to be populated by ctrl_cmd_def_make(). A cmd thus marked as deferred is not deallocated at the end of command handling. This fix needs no change in calling code. (Another idea was to return a different code than CTRL_CMD_HANDLED when the command is to be deferred, but that would require adjusting each user of ctrl_cmd_def_make(). The implicit marking is safer and easier.) Show that handling deferred commands is fixed by adjusting the expectations of ctrl_test.c's test_deferred_cmd() and removing the now obsolete exit_early label. One symptom of the breakage is that osmo-bts-sysmo crashes when asked to report a trx's clock-info, which is aggravated by the fact that the sysmobts-mgr does ask osmo-bts-sysmo for a clock-info. The crash appears since Id583b413f8b8bd16e5cf92a8a9e8663903646381 -- it looked like just fixing an obvious memory leak, which it did as shown by the unit test, but deferred ctrl commands actually relied on that leak. Both fixed now. Related: OS#3120 Change-Id: I24232be7dcf7be79f4def91ddc8b8f8005b56318 --- M include/osmocom/ctrl/control_cmd.h M src/ctrl/control_cmd.c M src/ctrl/control_if.c M tests/ctrl/ctrl_test.c M tests/ctrl/ctrl_test.ok 5 files changed, 14 insertions(+), 5 deletions(-) git pull ssh://gerrit.osmocom.org:29418/libosmocore refs/changes/18/7618/2 diff --git a/include/osmocom/ctrl/control_cmd.h b/include/osmocom/ctrl/control_cmd.h index 865b006..a5df753 100644 --- a/include/osmocom/ctrl/control_cmd.h +++ b/include/osmocom/ctrl/control_cmd.h @@ -56,6 +56,8 @@ struct llist_head def_cmds; }; +struct ctrl_cmd_def; + struct ctrl_cmd { struct ctrl_connection *ccon; enum ctrl_type type; @@ -64,6 +66,7 @@ char *variable; char *value; char *reply; + struct ctrl_cmd_def *defer; }; #define ctrl_cmd_reply_printf(cmd, fmt, args ...) \ diff --git a/src/ctrl/control_cmd.c b/src/ctrl/control_cmd.c index c747e84..fb0cd2b 100644 --- a/src/ctrl/control_cmd.c +++ b/src/ctrl/control_cmd.c @@ -566,6 +566,7 @@ cd = talloc_zero(ctx, struct ctrl_cmd_def); + cmd->defer = cd; cd->cmd = cmd; cd->data = data; diff --git a/src/ctrl/control_if.c b/src/ctrl/control_if.c index 07de0d4..df8abbc 100644 --- a/src/ctrl/control_if.c +++ b/src/ctrl/control_if.c @@ -401,6 +401,13 @@ if (cmd->type != CTRL_TYPE_ERROR) { cmd->ccon = ccon; if (ctrl_cmd_handle(ctrl, cmd, ctrl->data) == CTRL_CMD_HANDLED) { + + if (cmd->defer) { + /* The command is still stored as ctrl_cmd_def.cmd, in the def_cmds list. + * Just leave hanging for deferred handling. Reply will happen later. */ + return 0; + } + /* On CTRL_CMD_HANDLED, no reply needs to be sent back. */ talloc_free(cmd); cmd = NULL; diff --git a/tests/ctrl/ctrl_test.c b/tests/ctrl/ctrl_test.c index 86c6a78..0c55bf0 100644 --- a/tests/ctrl/ctrl_test.c +++ b/tests/ctrl/ctrl_test.c @@ -402,8 +402,6 @@ /* Expecting a ctrl_cmd_def as well as the cmd to still be allocated */ if (talloc_total_size(ctx) <= ctx_size_before_defer) { printf("deferred command apparently deallocated too soon\n"); - /* ERROR -- showing current bug in handling deallocated cmds, hence exiting early */ - goto exit_early; talloc_report_full(ctx, stdout); OSMO_ASSERT(false); } @@ -419,8 +417,6 @@ } printf("success\n"); - -exit_early: talloc_free(ccon); talloc_free(ctrl); diff --git a/tests/ctrl/ctrl_test.ok b/tests/ctrl/ctrl_test.ok index 2af708a..07f4aac 100644 --- a/tests/ctrl/ctrl_test.ok +++ b/tests/ctrl/ctrl_test.ok @@ -176,4 +176,6 @@ test_deferred_cmd get_test_defer called ctrl_handle_msg() returned 0 -deferred command apparently deallocated too soon +invoking ctrl_test_defer_cb() asynchronously +ctrl_test_defer_cb called +success -- To view, visit https://gerrit.osmocom.org/7618 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newpatchset Gerrit-Change-Id: I24232be7dcf7be79f4def91ddc8b8f8005b56318 Gerrit-PatchSet: 2 Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder From gerrit-no-reply at lists.osmocom.org Thu Apr 5 00:32:13 2018 From: gerrit-no-reply at lists.osmocom.org (Neels Hofmeyr) Date: Thu, 5 Apr 2018 00:32:13 +0000 Subject: [PATCH] libosmocore[master]: ctrl: test deferred cmd, show current failure Message-ID: Review at https://gerrit.osmocom.org/7636 ctrl: test deferred cmd, show current failure Handling a deferred command currently deallocates the struct ctrl_cmd upon exiting the initial command handling, while it should actually stay around for the asynchronous/deferred handling of the ctrl command. Show the current bug by means of a ctrl test. The test will be adjusted to expect the correct result when the bug is fixed in a subsequent commit (I24232be7dcf7be79f4def91ddc8b8f8005b56318). Change-Id: Ibbc847fc583bdd8e5e53a008258805e634ea12b4 --- M tests/ctrl/ctrl_test.c M tests/ctrl/ctrl_test.ok 2 files changed, 102 insertions(+), 0 deletions(-) git pull ssh://gerrit.osmocom.org:29418/libosmocore refs/changes/36/7636/1 diff --git a/tests/ctrl/ctrl_test.c b/tests/ctrl/ctrl_test.c index a38591f..86c6a78 100644 --- a/tests/ctrl/ctrl_test.c +++ b/tests/ctrl/ctrl_test.c @@ -331,6 +331,101 @@ talloc_free(ctrl); } +CTRL_CMD_DEFINE(test_defer, "test-defer"); +static void ctrl_test_defer_cb(void *data) +{ + struct ctrl_cmd_def *cd = data; + struct ctrl_cmd *cmd = cd->cmd; + static int i = 0; + printf("%s called\n", __func__); + + if (ctrl_cmd_def_is_zombie(cd)) { + printf("Is Zombie\n"); + return; + } + + cmd->reply = talloc_asprintf(cmd, "Test Defer #%d", i++); + + ctrl_cmd_def_send(cd); + return; +} + +static struct ctrl_cmd_def *test_defer_cd = NULL; +static int get_test_defer(struct ctrl_cmd *cmd, void *data) +{ + void *ctx = cmd->node; + printf("%s called\n", __func__); + + test_defer_cd = ctrl_cmd_def_make(ctx, cmd, NULL, 10); + + return CTRL_CMD_HANDLED; +} +static int set_test_defer(struct ctrl_cmd *cmd, void *data) +{ + return CTRL_CMD_HANDLED; +} +static int verify_test_defer(struct ctrl_cmd *cmd, const char *value, void *data) +{ + return 0; +} + +static void test_deferred_cmd() +{ + struct ctrl_handle *ctrl; + struct ctrl_connection *ccon; + struct ctrl_cmd *cmd; + struct msgb *msg; + int result; + int ctx_size_was; + int ctx_size_before_defer; + + printf("\n%s\n", __func__); + ctx_size_was = talloc_total_size(ctx); + + ctrl = ctrl_handle_alloc2(ctx, NULL, NULL, 0); + ccon = talloc_zero(ctx, struct ctrl_connection); + INIT_LLIST_HEAD(&ccon->def_cmds); + + osmo_wqueue_init(&ccon->write_queue, 1); + + ctrl_cmd_install(CTRL_NODE_ROOT, &cmd_test_defer); + + ctx_size_before_defer = talloc_total_size(ctx); + + msg = msgb_from_string("GET 123 test-defer"); + + result = ctrl_handle_msg(ctrl, ccon, msg); + printf("ctrl_handle_msg() returned %d\n", result); + + OSMO_ASSERT(result == CTRL_CMD_HANDLED); + + /* Expecting a ctrl_cmd_def as well as the cmd to still be allocated */ + if (talloc_total_size(ctx) <= ctx_size_before_defer) { + printf("deferred command apparently deallocated too soon\n"); + /* ERROR -- showing current bug in handling deallocated cmds, hence exiting early */ + goto exit_early; + talloc_report_full(ctx, stdout); + OSMO_ASSERT(false); + } + + printf("invoking ctrl_test_defer_cb() asynchronously\n"); + ctrl_test_defer_cb(test_defer_cd); + + /* And now the deferred cmd should be cleaned up completely. */ + if (talloc_total_size(ctx) != ctx_size_before_defer) { + printf("mem leak!\n"); + talloc_report_full(ctx, stdout); + OSMO_ASSERT(false); + } + + printf("success\n"); + +exit_early: + + talloc_free(ccon); + talloc_free(ctrl); +} + static struct log_info_cat test_categories[] = { }; @@ -357,5 +452,7 @@ test_messages(); + test_deferred_cmd(); + return 0; } diff --git a/tests/ctrl/ctrl_test.ok b/tests/ctrl/ctrl_test.ok index 087ebbc..2af708a 100644 --- a/tests/ctrl/ctrl_test.ok +++ b/tests/ctrl/ctrl_test.ok @@ -172,3 +172,8 @@ reply = 'OK' handling: ok + +test_deferred_cmd +get_test_defer called +ctrl_handle_msg() returned 0 +deferred command apparently deallocated too soon -- To view, visit https://gerrit.osmocom.org/7636 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Ibbc847fc583bdd8e5e53a008258805e634ea12b4 Gerrit-PatchSet: 1 Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr From gerrit-no-reply at lists.osmocom.org Thu Apr 5 01:04:37 2018 From: gerrit-no-reply at lists.osmocom.org (Neels Hofmeyr) Date: Thu, 5 Apr 2018 01:04:37 +0000 Subject: [PATCH] libosmocore[master]: use osmo_init_logging2() with proper talloc ctx Message-ID: Review at https://gerrit.osmocom.org/7637 use osmo_init_logging2() with proper talloc ctx Ironically, when deprecating osmo_init_logging() in I216837780e9405fdaec8059c63d10699c695b360, I forgot to change the callers within libosmocore itself, i.e. in the various regression tests. Change-Id: Ia36c248f99353d5baaa2533f46a2f60a8579bdf8 --- M tests/abis/abis_test.c M tests/ctrl/ctrl_test.c M tests/gb/bssgp_fc_test.c M tests/gb/gprs_bssgp_test.c M tests/gb/gprs_ns_test.c M tests/gprs/gprs_test.c M tests/gsup/gsup_test.c M tests/lapd/lapd_test.c M tests/msgb/msgb_test.c M tests/oap/oap_test.c M tests/sms/sms_test.c M tests/socket/socket_test.c M tests/tlv/tlv_test.c M tests/ussd/ussd_test.c M tests/vty/vty_test.c 15 files changed, 48 insertions(+), 22 deletions(-) git pull ssh://gerrit.osmocom.org:29418/libosmocore refs/changes/37/7637/1 diff --git a/tests/abis/abis_test.c b/tests/abis/abis_test.c index c0605c2..ca6daed 100644 --- a/tests/abis/abis_test.c +++ b/tests/abis/abis_test.c @@ -199,7 +199,8 @@ int main(int argc, char **argv) { - osmo_init_logging(&info); + void *ctx = talloc_named_const(NULL, 0, "abis_test"); + osmo_init_logging2(ctx, &info); test_sw_descr(); test_simple_sw_config(); diff --git a/tests/ctrl/ctrl_test.c b/tests/ctrl/ctrl_test.c index a38591f..cd550c9 100644 --- a/tests/ctrl/ctrl_test.c +++ b/tests/ctrl/ctrl_test.c @@ -342,7 +342,7 @@ int main(int argc, char **argv) { ctx = talloc_named_const(NULL, 1, "ctrl_test"); - osmo_init_logging(&info); + osmo_init_logging2(ctx, &info); printf("Checking ctrl types...\n"); diff --git a/tests/gb/bssgp_fc_test.c b/tests/gb/bssgp_fc_test.c index ac690a5..cc38777 100644 --- a/tests/gb/bssgp_fc_test.c +++ b/tests/gb/bssgp_fc_test.c @@ -17,6 +17,7 @@ static unsigned long in_ctr = 1; static struct timeval tv_start; +void *ctx = NULL; int get_centisec_diff(void) { @@ -71,7 +72,7 @@ uint32_t max_queue_depth, uint32_t pdu_len, uint32_t pdu_count) { - struct bssgp_flow_control *fc = talloc_zero(NULL, struct bssgp_flow_control); + struct bssgp_flow_control *fc = talloc_zero(ctx, struct bssgp_flow_control); int i; osmo_gettimeofday_override_time = (struct timeval){ @@ -133,6 +134,7 @@ uint32_t pdu_count = 20; /* messages */ int c; void *tall_msgb_ctx; + ctx = talloc_named_const(NULL, 0, "bssgp_fc_test"); static const struct option long_options[] = { { "bucket-size-max", 1, 0, 's' }, @@ -144,11 +146,11 @@ { 0, 0, 0, 0 } }; - osmo_init_logging(&info); + osmo_init_logging2(ctx, &info); log_set_use_color(osmo_stderr_target, 0); log_set_print_filename(osmo_stderr_target, 0); - tall_msgb_ctx = msgb_talloc_ctx_init(NULL, 0); + tall_msgb_ctx = msgb_talloc_ctx_init(ctx, 0); while ((c = getopt_long(argc, argv, "s:r:d:l:c:", long_options, NULL)) != -1) { diff --git a/tests/gb/gprs_bssgp_test.c b/tests/gb/gprs_bssgp_test.c index c38e180..52e986e 100644 --- a/tests/gb/gprs_bssgp_test.c +++ b/tests/gb/gprs_bssgp_test.c @@ -294,11 +294,14 @@ int main(int argc, char **argv) { struct sockaddr_in bss_peer= {0}; + void *ctx = talloc_named_const(NULL, 0, "gprs_bssgp_test"); - osmo_init_logging(&info); + osmo_init_logging2(ctx, &info); log_set_use_color(osmo_stderr_target, 0); log_set_print_filename(osmo_stderr_target, 0); + msgb_talloc_ctx_init(ctx, 0); + bssgp_nsi = gprs_ns_instantiate(gprs_ns_callback, NULL); bss_peer.sin_family = AF_INET; diff --git a/tests/gb/gprs_ns_test.c b/tests/gb/gprs_ns_test.c index 7e6b85c..f70e493 100644 --- a/tests/gb/gprs_ns_test.c +++ b/tests/gb/gprs_ns_test.c @@ -901,7 +901,8 @@ int main(int argc, char **argv) { - osmo_init_logging(&info); + void *ctx = talloc_named_const(NULL, 0, "gprs_ns_test"); + osmo_init_logging2(ctx, &info); log_set_use_color(osmo_stderr_target, 0); log_set_print_filename(osmo_stderr_target, 0); osmo_signal_register_handler(SS_L_NS, &test_signal, NULL); diff --git a/tests/gprs/gprs_test.c b/tests/gprs/gprs_test.c index 6f16fb2..70e3009 100644 --- a/tests/gprs/gprs_test.c +++ b/tests/gprs/gprs_test.c @@ -120,7 +120,8 @@ int main(int argc, char **argv) { - osmo_init_logging(&info); + void *ctx = talloc_named_const(NULL, 0, "gprs_test"); + osmo_init_logging2(ctx, &info); test_gsm_03_03_apn(); diff --git a/tests/gsup/gsup_test.c b/tests/gsup/gsup_test.c index b55f1d9..acc7274 100644 --- a/tests/gsup/gsup_test.c +++ b/tests/gsup/gsup_test.c @@ -329,7 +329,8 @@ int main(int argc, char **argv) { - osmo_init_logging(&info); + void *ctx = talloc_named_const(NULL, 0, "gsup_test"); + osmo_init_logging2(ctx, &info); log_set_print_filename(osmo_stderr_target, 0); log_set_print_timestamp(osmo_stderr_target, 0); log_set_use_color(osmo_stderr_target, 0); diff --git a/tests/lapd/lapd_test.c b/tests/lapd/lapd_test.c index e627ba6..3f15afe 100644 --- a/tests/lapd/lapd_test.c +++ b/tests/lapd/lapd_test.c @@ -29,6 +29,7 @@ #include #include +#include #include @@ -759,7 +760,10 @@ int main(int argc, char **argv) { - osmo_init_logging(&info); + void *ctx = talloc_named_const(NULL, 0, "lapd_test"); + osmo_init_logging2(ctx, &info); + + msgb_talloc_ctx_init(ctx, 0); /* Prevent the test from segfaulting */ dummy_l1_header_len = 0; diff --git a/tests/msgb/msgb_test.c b/tests/msgb/msgb_test.c index 0533546..ffaa155 100644 --- a/tests/msgb/msgb_test.c +++ b/tests/msgb/msgb_test.c @@ -385,7 +385,9 @@ int main(int argc, char **argv) { - osmo_init_logging(&info); + void *ctx = talloc_named_const(NULL, 0, "msgb_test"); + osmo_init_logging2(ctx, &info); + msgb_talloc_ctx_init(ctx, 0); test_msgb_api(); test_msgb_api_errors(); diff --git a/tests/oap/oap_test.c b/tests/oap/oap_test.c index dea5c11..32676ca 100644 --- a/tests/oap/oap_test.c +++ b/tests/oap/oap_test.c @@ -173,7 +173,9 @@ int main(int argc, char **argv) { - osmo_init_logging(&info); + void *ctx = talloc_named_const(NULL, 0, "oap_test"); + osmo_init_logging2(ctx, &info); + msgb_talloc_ctx_init(ctx, 0); test_oap_messages_dec_enc(); diff --git a/tests/sms/sms_test.c b/tests/sms/sms_test.c index efbdf7e..0615396 100644 --- a/tests/sms/sms_test.c +++ b/tests/sms/sms_test.c @@ -282,9 +282,10 @@ uint8_t septet_data[256]; int nchars; char result[256]; + void *ctx = talloc_named_const(NULL, 0, "sms_test"); /* Fake logging. */ - osmo_init_logging(&fake_log_info); + osmo_init_logging2(ctx, &fake_log_info); /* test 7-bit encoding */ for (i = 0; i < ARRAY_SIZE(test_encode); ++i) { diff --git a/tests/socket/socket_test.c b/tests/socket/socket_test.c index 11ef8da..37e0281 100644 --- a/tests/socket/socket_test.c +++ b/tests/socket/socket_test.c @@ -35,6 +35,8 @@ #include "../config.h" +void *ctx = NULL; + static int test_sockinit(void) { int fd, rc; @@ -44,7 +46,7 @@ fd = osmo_sock_init(AF_INET, SOCK_DGRAM, IPPROTO_UDP, "0.0.0.0", 0, OSMO_SOCK_F_BIND); OSMO_ASSERT(fd >= 0); - name = osmo_sock_get_name(NULL, fd); + name = osmo_sock_get_name(ctx, fd); /* expect it to be not connected. We cannot match on INADDR_ANY, * as apparently that won't work on FreeBSD if there's only one * address (e.g. 127.0.0.1) assigned to the entire system, like @@ -82,7 +84,7 @@ fd = osmo_sock_init2(AF_INET, SOCK_DGRAM, IPPROTO_UDP, "0.0.0.0", 0, NULL, 0, OSMO_SOCK_F_BIND); OSMO_ASSERT(fd >= 0); - name = osmo_sock_get_name(NULL, fd); + name = osmo_sock_get_name(ctx, fd); /* expect it to be not connected. We cannot match on INADDR_ANY, * as apparently that won't work on FreeBSD if there's only one * address (e.g. 127.0.0.1) assigned to the entire system, like @@ -111,7 +113,7 @@ fd = osmo_sock_init2(AF_INET, SOCK_DGRAM, IPPROTO_UDP, "127.0.0.1", 0, "127.0.0.1", 53, OSMO_SOCK_F_BIND|OSMO_SOCK_F_CONNECT); OSMO_ASSERT(fd >= 0); - name = osmo_sock_get_name(NULL, fd); + name = osmo_sock_get_name(ctx, fd); #ifndef __FreeBSD__ /* For some reason, on the jenkins.osmocom.org build slave with * FreeBSD 10 inside a jail, it fails. Works fine on laforge's @@ -134,7 +136,8 @@ int main(int argc, char *argv[]) { - osmo_init_logging(&info); + ctx = talloc_named_const(NULL, 0, "socket_test"); + osmo_init_logging2(ctx, &info); log_set_use_color(osmo_stderr_target, 0); log_set_print_filename(osmo_stderr_target, 0); diff --git a/tests/tlv/tlv_test.c b/tests/tlv/tlv_test.c index 2e28e54..3973275 100644 --- a/tests/tlv/tlv_test.c +++ b/tests/tlv/tlv_test.c @@ -277,7 +277,7 @@ int main(int argc, char **argv) { - //osmo_init_logging(&info); + //osmo_init_logging2(ctx, &info); test_tlv_shift_functions(); test_tlv_repeated_ie(); diff --git a/tests/ussd/ussd_test.c b/tests/ussd/ussd_test.c index 429c72d..1f79063 100644 --- a/tests/ussd/ussd_test.c +++ b/tests/ussd/ussd_test.c @@ -122,8 +122,9 @@ uint16_t size; int i; struct msgb *msg; + void *ctx = talloc_named_const(NULL, 0, "ussd_test"); - osmo_init_logging(&info); + osmo_init_logging2(ctx, &info); memset(&req, 0, sizeof(req)); gsm0480_decode_ss_request((struct gsm48_hdr *) ussd_request, diff --git a/tests/vty/vty_test.c b/tests/vty/vty_test.c index 42646eb..a3478e1 100644 --- a/tests/vty/vty_test.c +++ b/tests/vty/vty_test.c @@ -41,6 +41,7 @@ #include static enum event last_vty_connection_event = -1; +void *ctx = NULL; static void test_cmd_string_from_valstr(void) { @@ -55,7 +56,7 @@ /* check against character strings that could break printf */ - cmd = vty_cmd_string_from_valstr (NULL, printf_seq_vs, "[prefix%s%s%s%s%s]", "[sep%s%s%s%s%s]", "[end%s%s%s%s%s]", 1); + cmd = vty_cmd_string_from_valstr (ctx, printf_seq_vs, "[prefix%s%s%s%s%s]", "[sep%s%s%s%s%s]", "[end%s%s%s%s%s]", 1); printf ("Tested with %%s-strings, resulting cmd = '%s'\n", cmd); talloc_free (cmd); } @@ -428,12 +429,15 @@ .cat = default_categories, .num_cat = ARRAY_SIZE(default_categories), }; - void *stats_ctx = talloc_named_const(NULL, 1, "stats test context"); + void *stats_ctx; + + ctx = talloc_named_const(NULL, 0, "stats test context"); + stats_ctx = talloc_named_const(ctx, 1, "stats test context"); osmo_signal_register_handler(SS_L_VTY, vty_event_cb, NULL); /* Fake logging. */ - osmo_init_logging(&log_info); + osmo_init_logging2(ctx, &log_info); /* Init stats */ osmo_stats_init(stats_ctx); -- To view, visit https://gerrit.osmocom.org/7637 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Ia36c248f99353d5baaa2533f46a2f60a8579bdf8 Gerrit-PatchSet: 1 Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr From gerrit-no-reply at lists.osmocom.org Thu Apr 5 01:07:02 2018 From: gerrit-no-reply at lists.osmocom.org (Vadim Yanitskiy) Date: Thu, 5 Apr 2018 01:07:02 +0000 Subject: [PATCH] libosmocore[master]: GSUP: add USSD messages support according to 3GPP TS 09.02 In-Reply-To: References: Message-ID: Hello Jenkins Builder, I'd like you to reexamine a change. Please visit https://gerrit.osmocom.org/7600 to look at the new patch set (#3). GSUP: add USSD messages support according to 3GPP TS 09.02 In order to be able to transfer USSD messages via GSUP, this change introduces the new message types: - OSMO_GSUP_MSGT_PROC_USS_REQ, - OSMO_GSUP_MSGT_USS_REQ, - OSMO_GSUP_MSGT_USS_NOTIFY, which correspond to MAP message types defined by 3GPP TS 09.02 "Mobile Application Part (MAP) specification". The 'osmo_gsup_message' structure was extended with a child structure that represents a single decoded and/or to be encoded SS/USSD message. Change-Id: Ie17a78043a35fffbdd59e80fd2b2da39cce5e532 Related: OS#1597 --- M TODO-RELEASE M include/osmocom/gsm/gsup.h M src/gsm/gsup.c M tests/gsup/gsup_test.c M tests/gsup/gsup_test.err M tests/gsup/gsup_test.ok 6 files changed, 273 insertions(+), 8 deletions(-) git pull ssh://gerrit.osmocom.org:29418/libosmocore refs/changes/00/7600/3 diff --git a/TODO-RELEASE b/TODO-RELEASE index 16496d6..a412f9e 100644 --- a/TODO-RELEASE +++ b/TODO-RELEASE @@ -13,3 +13,5 @@ fsm fsmc / fsm.h added callback for graceful exit => ABI changed gsm gsm0480.c / gsm0480.h the 'ss_request' struct extended with ussd_data, ussd_data_len, and ussd_data_dcs => ABI changed +gsup gsup.h the 'osmo_gsup_message' struct extended with + SS/USSD information => ABI changed diff --git a/include/osmocom/gsm/gsup.h b/include/osmocom/gsm/gsup.h index 1a8a3b2..304dd56 100644 --- a/include/osmocom/gsm/gsup.h +++ b/include/osmocom/gsm/gsup.h @@ -81,6 +81,18 @@ OSMO_GSUP_AUTS_IE = 0x26, OSMO_GSUP_RES_IE = 0x27, OSMO_GSUP_CN_DOMAIN_IE = 0x28, + + /** + * 3GPP TS 09.02 "Mobile Application Part (MAP) specification", + * Section 7.6.4 "Supplementary services parameters" + * Section 7.6.3 "Subscriber management parameters" + * Section 7.6.1 "Common parameters" + */ + OSMO_GSUP_SS_INFO_IE = 0x30, + OSMO_GSUP_SS_INVOKE_ID_IE = 0x31, + OSMO_GSUP_SS_ALERTING_PATTERN_IE = 0x32, + OSMO_GSUP_USSD_STRING_DCS_IE = 0x33, + OSMO_GSUP_USSD_STRING_IE = 0x34, }; /*! GSUP message type */ @@ -110,6 +122,43 @@ OSMO_GSUP_MSGT_LOCATION_CANCEL_REQUEST = 0b00011100, OSMO_GSUP_MSGT_LOCATION_CANCEL_ERROR = 0b00011101, OSMO_GSUP_MSGT_LOCATION_CANCEL_RESULT = 0b00011110, + + /** + * 3GPP TS 09.02 "Mobile Application Part (MAP) specification", + * Section 11 "Supplementary services related services", + * Call independent supplementary services + */ + + /** + * Section 11.9 "MAP_PROCESS_UNSTRUCTURED_SS_REQUEST service" + * Is used to relay information in order to allow unstructured + * supplementary service operation, and can be initiated + * either by MS, either by the network. + */ + OSMO_GSUP_MSGT_PROC_USS_REQ_REQUEST = 0b00100000, + OSMO_GSUP_MSGT_PROC_USS_REQ_ERROR = 0b00100001, + OSMO_GSUP_MSGT_PROC_USS_REQ_RESULT = 0b00100010, + + /** + * Section 11.10 "MAP_UNSTRUCTURED_SS_REQUEST service" + * Is used when the invoking entity requires information + * from the mobile user, in connection with unstructured + * supplementary service handling. + */ + OSMO_GSUP_MSGT_USS_REQ_REQUEST = 0b00100100, + OSMO_GSUP_MSGT_USS_REQ_ERROR = 0b00100101, + OSMO_GSUP_MSGT_USS_REQ_RESULT = 0b00100110, + + + /** + * Section 11.11 "MAP_UNSTRUCTURED_SS_NOTIFY service" + * Is used when the invoking entity requires a notification + * to be sent to the mobile user, in connection with + * unstructured supplementary services handling. + */ + OSMO_GSUP_MSGT_USS_NOTIFY_REQUEST = 0b00101000, + OSMO_GSUP_MSGT_USS_NOTIFY_ERROR = 0b00101001, + OSMO_GSUP_MSGT_USS_NOTIFY_RESULT = 0b00101010, }; #define OSMO_GSUP_IS_MSGT_REQUEST(msgt) (((msgt) & 0b00000011) == 0b00) @@ -154,6 +203,22 @@ size_t pdp_charg_enc_len; }; +/*! parsed/decoded SS/USSD information */ +struct osmo_gsup_ss_info { + /*! Should this IE be taken into account? */ + bool have_info; + /*! Invoke ID, identifies each given session */ + uint32_t invoke_id; + /*! USSD request or response string DCS (Data Coding Scheme) */ + uint8_t ussd_string_dcs; + /*! USSD request or response string length */ + size_t ussd_string_len; + /*! USSD request or response string */ + const uint8_t *ussd_string; + /*! SS notification alerting pattern */ + const uint8_t *ss_ap; +}; + /*! parsed/decoded GSUP protocol message */ struct osmo_gsup_message { enum osmo_gsup_message_type message_type; @@ -175,6 +240,7 @@ enum osmo_gsup_cn_domain cn_domain; const uint8_t *pdp_charg_enc; size_t pdp_charg_enc_len; + struct osmo_gsup_ss_info ss_info; }; int osmo_gsup_decode(const uint8_t *data, size_t data_len, diff --git a/src/gsm/gsup.c b/src/gsm/gsup.c index b6ac56d..9532acf 100644 --- a/src/gsm/gsup.c +++ b/src/gsm/gsup.c @@ -62,6 +62,19 @@ OSMO_VALUE_STRING(OSMO_GSUP_MSGT_LOCATION_CANCEL_REQUEST), OSMO_VALUE_STRING(OSMO_GSUP_MSGT_LOCATION_CANCEL_ERROR), OSMO_VALUE_STRING(OSMO_GSUP_MSGT_LOCATION_CANCEL_RESULT), + + OSMO_VALUE_STRING(OSMO_GSUP_MSGT_PROC_USS_REQ_REQUEST), + OSMO_VALUE_STRING(OSMO_GSUP_MSGT_PROC_USS_REQ_ERROR), + OSMO_VALUE_STRING(OSMO_GSUP_MSGT_PROC_USS_REQ_RESULT), + + OSMO_VALUE_STRING(OSMO_GSUP_MSGT_USS_REQ_REQUEST), + OSMO_VALUE_STRING(OSMO_GSUP_MSGT_USS_REQ_ERROR), + OSMO_VALUE_STRING(OSMO_GSUP_MSGT_USS_REQ_RESULT), + + OSMO_VALUE_STRING(OSMO_GSUP_MSGT_USS_NOTIFY_REQUEST), + OSMO_VALUE_STRING(OSMO_GSUP_MSGT_USS_NOTIFY_ERROR), + OSMO_VALUE_STRING(OSMO_GSUP_MSGT_USS_NOTIFY_RESULT), + { 0, NULL } }; @@ -208,6 +221,54 @@ "GSUP IE type %d, length %zu invalid in PDP info\n", iei, value_len); return -1; +} + +static int decode_ss_info(uint8_t *data, size_t data_len, + struct osmo_gsup_ss_info *ss_info) +{ + enum osmo_gsup_iei iei; + size_t value_len; + uint8_t *value; + uint8_t tag; + int rc; + + /* SS/USSD message parts */ + while (data_len > 0) { + rc = osmo_shift_tlv(&data, &data_len, &tag, &value, &value_len); + if (rc < 0) + return -GMM_CAUSE_PROTO_ERR_UNSPEC; + + iei = tag; + + switch (iei) { + case OSMO_GSUP_SS_INVOKE_ID_IE: + ss_info->invoke_id = osmo_decode_big_endian(value, value_len); + break; + + case OSMO_GSUP_SS_ALERTING_PATTERN_IE: + ss_info->ss_ap = value; + break; + + case OSMO_GSUP_USSD_STRING_DCS_IE: + ss_info->ussd_string_dcs = *value; + break; + + case OSMO_GSUP_USSD_STRING_IE: + ss_info->ussd_string_len = value_len; + ss_info->ussd_string = value; + break; + + default: + LOGP(DLGSUP, LOGL_ERROR, + "GSUP IE type %d not expected in SS/USSD info\n", iei); + continue; + } + } + + /* Indicate that SS/USSD information was decoded */ + ss_info->have_info = true; + + return 0; } /*! Decode (parse) a GSUP message @@ -385,6 +446,12 @@ gsup_msg->pdp_charg_enc_len = value_len; break; + case OSMO_GSUP_SS_INFO_IE: + rc = decode_ss_info(value, value_len, &gsup_msg->ss_info); + if (rc < 0) + return rc; + break; + default: LOGP(DLGSUP, LOGL_NOTICE, "GSUP IE type %d unknown\n", iei); @@ -466,6 +533,38 @@ msgb_tlv_put(msg, OSMO_GSUP_RES_IE, auth_vector->res_len, auth_vector->res); + } + + /* Update length field */ + *len_field = msgb_length(msg) - old_len; +} + +static void encode_ss_info(struct msgb *msg, enum osmo_gsup_iei iei, + const struct osmo_gsup_ss_info *ss_info) +{ + uint8_t *len_field; + size_t old_len, len; + + len_field = msgb_tlv_put(msg, iei, 0, NULL) - 1; + old_len = msgb_length(msg); + + /* Invoke ID (uint32_t => 4 bytes) */ + len = sizeof(ss_info->invoke_id); + msgb_tlv_put(msg, OSMO_GSUP_SS_INVOKE_ID_IE, + len, osmo_encode_big_endian(ss_info->invoke_id, len)); + + /* Alerting pattern in case of SS Notification */ + if (ss_info->ss_ap) { + msgb_tlv_put(msg, OSMO_GSUP_SS_ALERTING_PATTERN_IE, + sizeof(uint8_t), ss_info->ss_ap); + } + + /* If preset, USSD string and its DCS (Data Coding Scheme) */ + if (ss_info->ussd_string && ss_info->ussd_string_len > 0) { + msgb_tlv_put(msg, OSMO_GSUP_USSD_STRING_DCS_IE, + sizeof(ss_info->ussd_string_dcs), &ss_info->ussd_string_dcs); + msgb_tlv_put(msg, OSMO_GSUP_USSD_STRING_IE, + ss_info->ussd_string_len, ss_info->ussd_string); } /* Update length field */ @@ -564,6 +663,9 @@ gsup_msg->pdp_charg_enc_len, gsup_msg->pdp_charg_enc); } + if (gsup_msg->ss_info.have_info) + encode_ss_info(msg, OSMO_GSUP_SS_INFO_IE, &gsup_msg->ss_info); + return 0; } diff --git a/tests/gsup/gsup_test.c b/tests/gsup/gsup_test.c index b55f1d9..e9fc94a 100644 --- a/tests/gsup/gsup_test.c +++ b/tests/gsup/gsup_test.c @@ -171,6 +171,73 @@ 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, }; + static const uint8_t send_ussd_req[] = { + 0x20, /* OSMO_GSUP_MSGT_PROC_USS_REQ_REQUEST */ + TEST_IMSI_IE, + /* SS/USSD information IE */ + 0x30, 0x11, + /* Invoke ID */ + 0x31, 0x04, 0xde, 0xad, 0xbe, 0xef, + + /** + * DCS (Data Coding Scheme) + * Coding Group: the GSM 7 bit default alphabet + * Language: Language unspecified + */ + 0x33, 0x01, 0x0f, + + /* USSD string: "*#100#" */ + 0x34, 0x06, + 0xaa, 0x51, 0x0c, 0x06, 0x1b, 0x01, + }; + + static const uint8_t send_ussd_res[] = { + 0x22, /* OSMO_GSUP_MSGT_PROC_USS_REQ_RESULT */ + TEST_IMSI_IE, + /* SS/USSD information IE */ + 0x30, 0x21, + /* Invoke ID */ + 0x31, 0x04, 0xde, 0xad, 0xbe, 0xef, + + /** + * DCS (Data Coding Scheme) + * Coding Group: the GSM 7 bit default alphabet + * Language: Language unspecified + */ + 0x33, 0x01, 0x0f, + + /* USSD string: "Your extension is 01393" */ + 0x34, 0x16, + 0xd9, 0x77, 0x5d, 0x0e, 0x2a, 0xe3, 0xe9, 0x65, + 0xf7, 0x3c, 0xfd, 0x76, 0x83, 0xd2, 0x73, 0x10, + 0x2c, 0x36, 0xcb, 0xcd, 0x1a, 0x0d, + }; + + static const uint8_t send_ussd_ntf[] = { + 0x28, /* OSMO_GSUP_MSGT_USS_NOTIFY_REQUEST */ + TEST_IMSI_IE, + /* SS/USSD information IE */ + 0x30, 0x24, + /* Invoke ID */ + 0x31, 0x04, 0xbe, 0xee, 0xee, 0xff, + + /* Alerting pattern */ + 0x32, 0x01, 0xff, + + /** + * DCS (Data Coding Scheme) + * Coding Group: the GSM 7 bit default alphabet + * Language: Language unspecified + */ + 0x33, 0x01, 0x0f, + + /* USSD string: "Your extension is 01393" */ + 0x34, 0x16, + 0xd9, 0x77, 0x5d, 0x0e, 0x2a, 0xe3, 0xe9, 0x65, + 0xf7, 0x3c, 0xfd, 0x76, 0x83, 0xd2, 0x73, 0x10, + 0x2c, 0x36, 0xcb, 0xcd, 0x1a, 0x0d, + }; + static const struct test { char *name; const uint8_t *data; @@ -204,6 +271,9 @@ send_auth_info_res_umts, sizeof(send_auth_info_res_umts)}, {"Send Authentication Info Request with AUTS and RAND (UMTS)", send_auth_info_req_auts, sizeof(send_auth_info_req_auts)}, + {"USSD Request", send_ussd_req, sizeof(send_ussd_req)}, + {"USSD Result", send_ussd_res, sizeof(send_ussd_res)}, + {"USSD Notify", send_ussd_ntf, sizeof(send_ussd_ntf)}, }; printf("Test GSUP message decoding/encoding\n"); @@ -267,7 +337,11 @@ osmo_hexdump(t->data + j, ie_end - j)); OSMO_ASSERT(j <= ie_end - 2); - OSMO_ASSERT(t->data[j+0] <= OSMO_GSUP_CN_DOMAIN_IE); + /** + * FIXME: share the maximal IE value somehow + * in order to avoid manual updating of this + */ + OSMO_ASSERT(t->data[j+0] <= OSMO_GSUP_USSD_STRING_IE); OSMO_ASSERT(t->data[j+1] <= ie_end - j - 2); ie_end = j; diff --git a/tests/gsup/gsup_test.err b/tests/gsup/gsup_test.err index 05c64fe..8ecef41 100644 --- a/tests/gsup/gsup_test.err +++ b/tests/gsup/gsup_test.err @@ -40,6 +40,15 @@ generated message: 08 01 08 21 43 65 87 09 21 43 f5 26 0e 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 20 10 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f 10 original message: 08 01 08 21 43 65 87 09 21 43 f5 26 0e 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 20 10 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f 10 IMSI: 123456789012345 + generated message: 20 01 08 21 43 65 87 09 21 43 f5 30 11 31 04 de ad be ef 33 01 0f 34 06 aa 51 0c 06 1b 01 + original message: 20 01 08 21 43 65 87 09 21 43 f5 30 11 31 04 de ad be ef 33 01 0f 34 06 aa 51 0c 06 1b 01 + IMSI: 123456789012345 + generated message: 22 01 08 21 43 65 87 09 21 43 f5 30 21 31 04 de ad be ef 33 01 0f 34 16 d9 77 5d 0e 2a e3 e9 65 f7 3c fd 76 83 d2 73 10 2c 36 cb cd 1a 0d + original message: 22 01 08 21 43 65 87 09 21 43 f5 30 21 31 04 de ad be ef 33 01 0f 34 16 d9 77 5d 0e 2a e3 e9 65 f7 3c fd 76 83 d2 73 10 2c 36 cb cd 1a 0d + IMSI: 123456789012345 + generated message: 28 01 08 21 43 65 87 09 21 43 f5 30 24 31 04 be ee ee ff 32 01 ff 33 01 0f 34 16 d9 77 5d 0e 2a e3 e9 65 f7 3c fd 76 83 d2 73 10 2c 36 cb cd 1a 0d + original message: 28 01 08 21 43 65 87 09 21 43 f5 30 24 31 04 be ee ee ff 32 01 ff 33 01 0f 34 16 d9 77 5d 0e 2a e3 e9 65 f7 3c fd 76 83 d2 73 10 2c 36 cb cd 1a 0d + IMSI: 123456789012345 message 0: tested 11 truncations, 11 parse failures message 1: tested 14 truncations, 13 parse failures message 2: tested 83 truncations, 81 parse failures @@ -54,18 +63,24 @@ message 11: tested 13 truncations, 12 parse failures message 12: tested 211 truncations, 209 parse failures message 13: tested 45 truncations, 43 parse failures + message 14: tested 30 truncations, 29 parse failures + message 15: tested 46 truncations, 45 parse failures + message 16: tested 49 truncations, 48 parse failures DLGSUP Stopping DLGSUP logging message 0: tested 2816 modifications, 510 parse failures - message 1: tested 3584 modifications, 768 parse failures + message 1: tested 3584 modifications, 769 parse failures message 2: tested 21248 modifications, 2571 parse failures message 3: tested 2816 modifications, 510 parse failures - message 4: tested 3584 modifications, 768 parse failures - message 5: tested 20736 modifications, 4010 parse failures - message 6: tested 3584 modifications, 769 parse failures - message 7: tested 3584 modifications, 768 parse failures + message 4: tested 3584 modifications, 769 parse failures + message 5: tested 20736 modifications, 4013 parse failures + message 6: tested 3584 modifications, 770 parse failures + message 7: tested 3584 modifications, 769 parse failures message 8: tested 2816 modifications, 510 parse failures message 9: tested 2816 modifications, 510 parse failures - message 10: tested 3584 modifications, 768 parse failures + message 10: tested 3584 modifications, 769 parse failures message 11: tested 3328 modifications, 767 parse failures message 12: tested 54016 modifications, 4622 parse failures - message 13: tested 11520 modifications, 1026 parse failures + message 13: tested 11520 modifications, 1028 parse failures + message 14: tested 7680 modifications, 1526 parse failures + message 15: tested 11776 modifications, 1526 parse failures + message 16: tested 12544 modifications, 1777 parse failures diff --git a/tests/gsup/gsup_test.ok b/tests/gsup/gsup_test.ok index 49a85ba..bd929b5 100644 --- a/tests/gsup/gsup_test.ok +++ b/tests/gsup/gsup_test.ok @@ -27,4 +27,10 @@ Send Authentication Info Result with IK, CK, AUTN and RES (UMTS) OK Testing Send Authentication Info Request with AUTS and RAND (UMTS) Send Authentication Info Request with AUTS and RAND (UMTS) OK + Testing USSD Request + USSD Request OK + Testing USSD Result + USSD Result OK + Testing USSD Notify + USSD Notify OK Done. -- To view, visit https://gerrit.osmocom.org/7600 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newpatchset Gerrit-Change-Id: Ie17a78043a35fffbdd59e80fd2b2da39cce5e532 Gerrit-PatchSet: 3 Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Owner: Vadim Yanitskiy Gerrit-Reviewer: Alexander Chemeris Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Vadim Yanitskiy From gerrit-no-reply at lists.osmocom.org Thu Apr 5 01:13:03 2018 From: gerrit-no-reply at lists.osmocom.org (Neels Hofmeyr) Date: Thu, 5 Apr 2018 01:13:03 +0000 Subject: [PATCH] libosmocore[master]: ctrl: fix deferred commands (and hence fix osmo-bts-sysmo 'c... In-Reply-To: References: Message-ID: Hello Jenkins Builder, I'd like you to reexamine a change. Please visit https://gerrit.osmocom.org/7618 to look at the new patch set (#3). ctrl: fix deferred commands (and hence fix osmo-bts-sysmo 'clock-info' cmd) The CTRL interface has a ctrl_cmd_def_* API that allows deferring a CTRL command reply until later. However, the command handling currently fails to acknowledge this and deallocates the struct ctrl_cmd anyway. Fix: in struct ctrl_cmd, add a defer pointer to be populated by ctrl_cmd_def_make(). A cmd thus marked as deferred is not deallocated at the end of command handling. This fix needs no change in calling code. (Another idea was to return a different code than CTRL_CMD_HANDLED when the command is to be deferred, but that would require adjusting each user of ctrl_cmd_def_make(). The implicit marking is safer and easier.) Show that handling deferred commands is fixed by adjusting the expectations of ctrl_test.c's test_deferred_cmd() and removing the now obsolete exit_early label. One symptom of the breakage is that osmo-bts-sysmo crashes when asked to report a trx's clock-info, which is aggravated by the fact that the sysmobts-mgr does ask osmo-bts-sysmo for a clock-info. The crash appears since Id583b413f8b8bd16e5cf92a8a9e8663903646381 -- it looked like just fixing an obvious memory leak, which it did as shown by the unit test, but deferred ctrl commands actually relied on that leak. Both fixed now. Related: OS#3120 Change-Id: I24232be7dcf7be79f4def91ddc8b8f8005b56318 --- M include/osmocom/ctrl/control_cmd.h M src/ctrl/control_cmd.c M src/ctrl/control_if.c M tests/ctrl/ctrl_test.c M tests/ctrl/ctrl_test.ok 5 files changed, 13 insertions(+), 5 deletions(-) git pull ssh://gerrit.osmocom.org:29418/libosmocore refs/changes/18/7618/3 diff --git a/include/osmocom/ctrl/control_cmd.h b/include/osmocom/ctrl/control_cmd.h index 865b006..a5df753 100644 --- a/include/osmocom/ctrl/control_cmd.h +++ b/include/osmocom/ctrl/control_cmd.h @@ -56,6 +56,8 @@ struct llist_head def_cmds; }; +struct ctrl_cmd_def; + struct ctrl_cmd { struct ctrl_connection *ccon; enum ctrl_type type; @@ -64,6 +66,7 @@ char *variable; char *value; char *reply; + struct ctrl_cmd_def *defer; }; #define ctrl_cmd_reply_printf(cmd, fmt, args ...) \ diff --git a/src/ctrl/control_cmd.c b/src/ctrl/control_cmd.c index c747e84..fb0cd2b 100644 --- a/src/ctrl/control_cmd.c +++ b/src/ctrl/control_cmd.c @@ -566,6 +566,7 @@ cd = talloc_zero(ctx, struct ctrl_cmd_def); + cmd->defer = cd; cd->cmd = cmd; cd->data = data; diff --git a/src/ctrl/control_if.c b/src/ctrl/control_if.c index 07de0d4..df8abbc 100644 --- a/src/ctrl/control_if.c +++ b/src/ctrl/control_if.c @@ -401,6 +401,13 @@ if (cmd->type != CTRL_TYPE_ERROR) { cmd->ccon = ccon; if (ctrl_cmd_handle(ctrl, cmd, ctrl->data) == CTRL_CMD_HANDLED) { + + if (cmd->defer) { + /* The command is still stored as ctrl_cmd_def.cmd, in the def_cmds list. + * Just leave hanging for deferred handling. Reply will happen later. */ + return 0; + } + /* On CTRL_CMD_HANDLED, no reply needs to be sent back. */ talloc_free(cmd); cmd = NULL; diff --git a/tests/ctrl/ctrl_test.c b/tests/ctrl/ctrl_test.c index f20f534..b7b30c3 100644 --- a/tests/ctrl/ctrl_test.c +++ b/tests/ctrl/ctrl_test.c @@ -401,8 +401,6 @@ /* Expecting a ctrl_cmd_def as well as the cmd to still be allocated */ if (talloc_total_size(ctx) <= ctx_size_before_defer) { printf("deferred command apparently deallocated too soon\n"); - /* ERROR -- showing current bug in handling deallocated cmds, hence exiting early */ - goto exit_early; talloc_report_full(ctx, stdout); OSMO_ASSERT(false); } @@ -416,8 +414,6 @@ talloc_report_full(ctx, stdout); OSMO_ASSERT(false); } - -exit_early: talloc_free(ccon); talloc_free(ctrl); diff --git a/tests/ctrl/ctrl_test.ok b/tests/ctrl/ctrl_test.ok index 6a902be..07f4aac 100644 --- a/tests/ctrl/ctrl_test.ok +++ b/tests/ctrl/ctrl_test.ok @@ -176,5 +176,6 @@ test_deferred_cmd get_test_defer called ctrl_handle_msg() returned 0 -deferred command apparently deallocated too soon +invoking ctrl_test_defer_cb() asynchronously +ctrl_test_defer_cb called success -- To view, visit https://gerrit.osmocom.org/7618 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newpatchset Gerrit-Change-Id: I24232be7dcf7be79f4def91ddc8b8f8005b56318 Gerrit-PatchSet: 3 Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder From gerrit-no-reply at lists.osmocom.org Thu Apr 5 01:13:03 2018 From: gerrit-no-reply at lists.osmocom.org (Neels Hofmeyr) Date: Thu, 5 Apr 2018 01:13:03 +0000 Subject: [PATCH] libosmocore[master]: ctrl: test deferred cmd, show current failure In-Reply-To: References: Message-ID: Hello Jenkins Builder, I'd like you to reexamine a change. Please visit https://gerrit.osmocom.org/7636 to look at the new patch set (#2). ctrl: test deferred cmd, show current failure Handling a deferred command currently deallocates the struct ctrl_cmd upon exiting the initial command handling, while it should actually stay around for the asynchronous/deferred handling of the ctrl command. Show the current bug by means of a ctrl test. The test will be adjusted to expect the correct result when the bug is fixed in a subsequent commit (I24232be7dcf7be79f4def91ddc8b8f8005b56318). Change-Id: Ibbc847fc583bdd8e5e53a008258805e634ea12b4 --- M tests/ctrl/ctrl_test.c M tests/ctrl/ctrl_test.ok 2 files changed, 108 insertions(+), 0 deletions(-) git pull ssh://gerrit.osmocom.org:29418/libosmocore refs/changes/36/7636/2 diff --git a/tests/ctrl/ctrl_test.c b/tests/ctrl/ctrl_test.c index a38591f..f20f534 100644 --- a/tests/ctrl/ctrl_test.c +++ b/tests/ctrl/ctrl_test.c @@ -331,6 +331,106 @@ talloc_free(ctrl); } +CTRL_CMD_DEFINE(test_defer, "test-defer"); +static void ctrl_test_defer_cb(void *data) +{ + struct ctrl_cmd_def *cd = data; + struct ctrl_cmd *cmd = cd->cmd; + static int i = 0; + printf("%s called\n", __func__); + + if (ctrl_cmd_def_is_zombie(cd)) { + printf("Is Zombie\n"); + return; + } + + cmd->reply = talloc_asprintf(cmd, "Test Defer #%d", i++); + + ctrl_cmd_def_send(cd); + return; +} + +static struct ctrl_cmd_def *test_defer_cd = NULL; +static int get_test_defer(struct ctrl_cmd *cmd, void *data) +{ + void *ctx = cmd->node; + printf("%s called\n", __func__); + + test_defer_cd = ctrl_cmd_def_make(ctx, cmd, NULL, 10); + + return CTRL_CMD_HANDLED; +} +static int set_test_defer(struct ctrl_cmd *cmd, void *data) +{ + return CTRL_CMD_HANDLED; +} +static int verify_test_defer(struct ctrl_cmd *cmd, const char *value, void *data) +{ + return 0; +} + +static void test_deferred_cmd() +{ + struct ctrl_handle *ctrl; + struct ctrl_connection *ccon; + struct msgb *msg; + int result; + int ctx_size_was; + int ctx_size_before_defer; + + printf("\n%s\n", __func__); + ctx_size_was = talloc_total_size(ctx); + + ctrl = ctrl_handle_alloc2(ctx, NULL, NULL, 0); + ccon = talloc_zero(ctx, struct ctrl_connection); + INIT_LLIST_HEAD(&ccon->def_cmds); + + osmo_wqueue_init(&ccon->write_queue, 1); + + ctrl_cmd_install(CTRL_NODE_ROOT, &cmd_test_defer); + + ctx_size_before_defer = talloc_total_size(ctx); + + msg = msgb_from_string("GET 123 test-defer"); + + result = ctrl_handle_msg(ctrl, ccon, msg); + printf("ctrl_handle_msg() returned %d\n", result); + + OSMO_ASSERT(result == CTRL_CMD_HANDLED); + + /* Expecting a ctrl_cmd_def as well as the cmd to still be allocated */ + if (talloc_total_size(ctx) <= ctx_size_before_defer) { + printf("deferred command apparently deallocated too soon\n"); + /* ERROR -- showing current bug in handling deallocated cmds, hence exiting early */ + goto exit_early; + talloc_report_full(ctx, stdout); + OSMO_ASSERT(false); + } + + printf("invoking ctrl_test_defer_cb() asynchronously\n"); + ctrl_test_defer_cb(test_defer_cd); + + /* And now the deferred cmd should be cleaned up completely. */ + if (talloc_total_size(ctx) != ctx_size_before_defer) { + printf("mem leak!\n"); + talloc_report_full(ctx, stdout); + OSMO_ASSERT(false); + } + +exit_early: + + talloc_free(ccon); + talloc_free(ctrl); + + if (talloc_total_size(ctx) != ctx_size_was) { + printf("mem leak!\n"); + talloc_report_full(ctx, stdout); + OSMO_ASSERT(false); + } + + printf("success\n"); +} + static struct log_info_cat test_categories[] = { }; @@ -357,5 +457,7 @@ test_messages(); + test_deferred_cmd(); + return 0; } diff --git a/tests/ctrl/ctrl_test.ok b/tests/ctrl/ctrl_test.ok index 087ebbc..6a902be 100644 --- a/tests/ctrl/ctrl_test.ok +++ b/tests/ctrl/ctrl_test.ok @@ -172,3 +172,9 @@ reply = 'OK' handling: ok + +test_deferred_cmd +get_test_defer called +ctrl_handle_msg() returned 0 +deferred command apparently deallocated too soon +success -- To view, visit https://gerrit.osmocom.org/7636 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newpatchset Gerrit-Change-Id: Ibbc847fc583bdd8e5e53a008258805e634ea12b4 Gerrit-PatchSet: 2 Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr Gerrit-Reviewer: Jenkins Builder From gerrit-no-reply at lists.osmocom.org Thu Apr 5 01:17:25 2018 From: gerrit-no-reply at lists.osmocom.org (Neels Hofmeyr) Date: Thu, 5 Apr 2018 01:17:25 +0000 Subject: [PATCH] docker-playground[master]: fix 'make -C subdir': use $(CURDIR) instead of $PWD In-Reply-To: References: Message-ID: fix 'make -C subdir': use $(CURDIR) instead of $PWD $(PWD) reflects the dir of 'make' invocation, $(CURDIR) the dir stepped into. So obtain the current dir from $(CURDIR) instead of $(PWD). So far, when doing 'make -C osmo-foo-maser', the image's name would be derived from the root dir's basename and all images were tagged as 'docker-playground'. With this fix, 'make -C' from anywhere still tags with the proper name. Change-Id: I1dd0fd1ad89fdee18fdbea851ccc831ad60aeccf --- M make/Makefile 1 file changed, 1 insertion(+), 1 deletion(-) git pull ssh://gerrit.osmocom.org:29418/docker-playground refs/changes/33/7633/2 diff --git a/make/Makefile b/make/Makefile index 14d4c52..21614a8 100644 --- a/make/Makefile +++ b/make/Makefile @@ -15,7 +15,7 @@ # REGISTRY_HOST=docker.io USERNAME=$(USER) -NAME=$(shell basename $(PWD)) +NAME=$(shell basename $(CURDIR)) RELEASE_SUPPORT := $(shell dirname $(abspath $(lastword $(MAKEFILE_LIST))))/.make-release-support IMAGE=$(REGISTRY_HOST)/$(USERNAME)/$(NAME) -- To view, visit https://gerrit.osmocom.org/7633 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newpatchset Gerrit-Change-Id: I1dd0fd1ad89fdee18fdbea851ccc831ad60aeccf Gerrit-PatchSet: 2 Gerrit-Project: docker-playground Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr Gerrit-Reviewer: Pau Espin Pedrol From gerrit-no-reply at lists.osmocom.org Thu Apr 5 01:17:45 2018 From: gerrit-no-reply at lists.osmocom.org (Neels Hofmeyr) Date: Thu, 5 Apr 2018 01:17:45 +0000 Subject: docker-playground[master]: fix 'make -C subdir': use $(CURDIR) instead of $PWD In-Reply-To: References: Message-ID: Patch Set 2: thanks, CURDIR is even better -- To view, visit https://gerrit.osmocom.org/7633 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I1dd0fd1ad89fdee18fdbea851ccc831ad60aeccf Gerrit-PatchSet: 2 Gerrit-Project: docker-playground Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr Gerrit-Reviewer: Neels Hofmeyr Gerrit-Reviewer: Pau Espin Pedrol Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Thu Apr 5 01:50:42 2018 From: gerrit-no-reply at lists.osmocom.org (Neels Hofmeyr) Date: Thu, 5 Apr 2018 01:50:42 +0000 Subject: docker-playground[master]: osmo-bsc.cfg: drop legacy config: timeout-ping, timeout-pong In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 Verified+1 going to push this through now, to see if the next ttcn3-bts-test will work again. Still relevant are https://osmocom.org/issues/3135 https://gerrit.osmocom.org/7635 -- To view, visit https://gerrit.osmocom.org/7635 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I70bffa7ed96da099993ba0cedc50178ca9e00db4 Gerrit-PatchSet: 1 Gerrit-Project: docker-playground Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr Gerrit-Reviewer: Neels Hofmeyr Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Thu Apr 5 01:50:44 2018 From: gerrit-no-reply at lists.osmocom.org (Neels Hofmeyr) Date: Thu, 5 Apr 2018 01:50:44 +0000 Subject: [MERGED] docker-playground[master]: osmo-bsc.cfg: drop legacy config: timeout-ping, timeout-pong In-Reply-To: References: Message-ID: Neels Hofmeyr has submitted this change and it was merged. Change subject: osmo-bsc.cfg: drop legacy config: timeout-ping, timeout-pong ...................................................................... osmo-bsc.cfg: drop legacy config: timeout-ping, timeout-pong Change-Id: I70bffa7ed96da099993ba0cedc50178ca9e00db4 --- M osmo-bsc-master/osmo-bsc.cfg M ttcn3-bsc-test/osmo-bsc.cfg 2 files changed, 0 insertions(+), 6 deletions(-) Approvals: Neels Hofmeyr: Looks good to me, approved; Verified diff --git a/osmo-bsc-master/osmo-bsc.cfg b/osmo-bsc-master/osmo-bsc.cfg index 1166130..4176cae 100644 --- a/osmo-bsc-master/osmo-bsc.cfg +++ b/osmo-bsc-master/osmo-bsc.cfg @@ -339,9 +339,6 @@ hopping enabled 0 msc 0 ip.access rtp-base 4000 - timeout-ping 20 - timeout-pong 5 - no timeout-ping advanced no bsc-welcome-text no bsc-msc-lost-text no bsc-grace-text diff --git a/ttcn3-bsc-test/osmo-bsc.cfg b/ttcn3-bsc-test/osmo-bsc.cfg index 8b34904..610bdf3 100644 --- a/ttcn3-bsc-test/osmo-bsc.cfg +++ b/ttcn3-bsc-test/osmo-bsc.cfg @@ -344,9 +344,6 @@ hopping enabled 0 msc 0 ip.access rtp-base 4000 - timeout-ping 20 - timeout-pong 5 - no timeout-ping advanced no bsc-welcome-text no bsc-msc-lost-text no bsc-grace-text -- To view, visit https://gerrit.osmocom.org/7635 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: I70bffa7ed96da099993ba0cedc50178ca9e00db4 Gerrit-PatchSet: 1 Gerrit-Project: docker-playground Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr Gerrit-Reviewer: Neels Hofmeyr From gerrit-no-reply at lists.osmocom.org Thu Apr 5 01:53:52 2018 From: gerrit-no-reply at lists.osmocom.org (Neels Hofmeyr) Date: Thu, 5 Apr 2018 01:53:52 +0000 Subject: docker-playground[master]: fix 'make -C subdir': use $(CURDIR) instead of $PWD In-Reply-To: References: Message-ID: Patch Set 2: Verified+1 -- To view, visit https://gerrit.osmocom.org/7633 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I1dd0fd1ad89fdee18fdbea851ccc831ad60aeccf Gerrit-PatchSet: 2 Gerrit-Project: docker-playground Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr Gerrit-Reviewer: Neels Hofmeyr Gerrit-Reviewer: Pau Espin Pedrol Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Thu Apr 5 07:29:29 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Thu, 5 Apr 2018 07:29:29 +0000 Subject: [PATCH] osmo-bts[master]: rsl_tx_dyn_pdch_ack: Add missing FRAME_NR information element Message-ID: Review at https://gerrit.osmocom.org/7638 rsl_tx_dyn_pdch_ack: Add missing FRAME_NR information element It seems that the IPA PDCH ACT ACK contains not only the channel number, but also the frame number. Let's make sure we're as close as possible to other implementations to ensure maximum interoperability. Change-Id: Ibe7988e9ef374e8c7d9429777fb32322d90c2024 --- M src/common/rsl.c 1 file changed, 7 insertions(+), 4 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-bts refs/changes/38/7638/1 diff --git a/src/common/rsl.c b/src/common/rsl.c index 6120e0e..9adb89a 100644 --- a/src/common/rsl.c +++ b/src/common/rsl.c @@ -1932,8 +1932,10 @@ /* PDCH ACT/DEACT ACKNOWLEDGE */ static int rsl_tx_dyn_pdch_ack(struct gsm_lchan *lchan, bool pdch_act) { - struct msgb *msg; + struct gsm_time *gtime = get_time(lchan->ts->trx->bts); uint8_t chan_nr = gsm_lchan2chan_nr(lchan); + struct msgb *msg; + uint8_t ie[2]; LOGP(DRSL, LOGL_NOTICE, "%s Tx PDCH %s ACK\n", gsm_lchan_name(lchan), pdch_act? "ACT" : "DEACT"); @@ -1942,9 +1944,10 @@ if (!msg) return -ENOMEM; - msg->len = 0; - msg->data = msg->tail = msg->l3h; - + if (pdch_act) { + gsm48_gen_starting_time(ie, gtime); + msgb_tv_fixed_put(msg, RSL_IE_FRAME_NUMBER, 2, ie); + } rsl_dch_push_hdr(msg, pdch_act? RSL_MT_IPAC_PDCH_ACT_ACK : RSL_MT_IPAC_PDCH_DEACT_ACK, -- To view, visit https://gerrit.osmocom.org/7638 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Ibe7988e9ef374e8c7d9429777fb32322d90c2024 Gerrit-PatchSet: 1 Gerrit-Project: osmo-bts Gerrit-Branch: master Gerrit-Owner: Harald Welte From gerrit-no-reply at lists.osmocom.org Thu Apr 5 07:35:20 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Thu, 5 Apr 2018 07:35:20 +0000 Subject: [PATCH] osmo-ttcn3-hacks[master]: PCUIF_Types: Fix bit-order of pdch_mask Message-ID: Review at https://gerrit.osmocom.org/7639 PCUIF_Types: Fix bit-order of pdch_mask The bit-string type should be indexed by timeslot number, i.e. the first element [0] should equal timeslot 0, the last one TS7 Change-Id: Ib89689abd998d4940895ba04f49eb140888bc73f --- M library/PCUIF_Types.ttcn 1 file changed, 1 insertion(+), 1 deletion(-) git pull ssh://gerrit.osmocom.org:29418/osmo-ttcn3-hacks refs/changes/39/7639/1 diff --git a/library/PCUIF_Types.ttcn b/library/PCUIF_Types.ttcn index 1a4ba29..7bfaf9b 100644 --- a/library/PCUIF_Types.ttcn +++ b/library/PCUIF_Types.ttcn @@ -124,7 +124,7 @@ OCT1 spare, OCT8 tsc, uint32_t hLayer1 -} with { variant "" }; +} with { variant (pdch_mask) "BITORDER(msb)" }; type record PCUIF_info_ind { uint32_t version, -- To view, visit https://gerrit.osmocom.org/7639 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Ib89689abd998d4940895ba04f49eb140888bc73f Gerrit-PatchSet: 1 Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Owner: Harald Welte From gerrit-no-reply at lists.osmocom.org Thu Apr 5 07:35:21 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Thu, 5 Apr 2018 07:35:21 +0000 Subject: [PATCH] osmo-ttcn3-hacks[master]: BTS_Tests: Prepare for ConnHdlr with PCU socket access Message-ID: Review at https://gerrit.osmocom.org/7640 BTS_Tests: Prepare for ConnHdlr with PCU socket access For upcoming dynamic PDCH activation/deactivation tests we would like to access the PCU socket from ConnHdlr, rather than test_CT. Let's prepare for that. Change-Id: Ib8811dd87f737f326f7ed8f652aa6f552c3f05f8 --- M bts/BTS_Tests.ttcn 1 file changed, 23 insertions(+), 11 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-ttcn3-hacks refs/changes/40/7640/1 diff --git a/bts/BTS_Tests.ttcn b/bts/BTS_Tests.ttcn index 4a4ced5..8b30bd9 100644 --- a/bts/BTS_Tests.ttcn +++ b/bts/BTS_Tests.ttcn @@ -117,6 +117,9 @@ var ConnHdlrPars g_pars; var uint8_t g_next_meas_res_nr := 0; var boolean g_first_meas_res := true; + + /* PCU Interface of BTS */ + port PCUIF_CODEC_PT PCU; } function f_init_rsl(charstring id) runs on test_CT { @@ -235,30 +238,31 @@ } /* PCU socket may at any time receive a new INFO.ind */ -private altstep as_pcu_info_ind() runs on test_CT { +private altstep as_pcu_info_ind(PCUIF_CODEC_PT pt, integer pcu_conn_id, + out PCUIF_Message pcu_last_info) { var PCUIF_send_data sd; - [] PCU.receive(t_SD_PCUIF(g_pcu_conn_id, tr_PCUIF_INFO_IND(0, ?))) -> value sd { - g_pcu_last_info := sd.data; + [] pt.receive(t_SD_PCUIF(pcu_conn_id, tr_PCUIF_INFO_IND(0, ?))) -> value sd { + pcu_last_info := sd.data; } - [] PCU.receive(t_SD_PCUIF(g_pcu_conn_id, tr_PCUIF_INFO_IND(?, ?, ?))) -> value sd { + [] pt.receive(t_SD_PCUIF(pcu_conn_id, tr_PCUIF_INFO_IND(?, ?, ?))) -> value sd { setverdict(fail, "Invalid PCU Version/BTS Number received"); self.stop; } } -private function f_init_pcu(charstring id) runs on test_CT { +private function f_init_pcu(PCUIF_CODEC_PT pt, charstring id, + out integer pcu_conn_id, out PCUIF_Message pcu_last_info) { timer T := 2.0; var PCUIF_send_data sd; - map(self:PCU, system:PCU); if (mp_pcu_socket == "") { - g_pcu_conn_id := -1; + pcu_conn_id := -1; return; } - g_pcu_conn_id := f_pcuif_connect(PCU, mp_pcu_socket); + pcu_conn_id := f_pcuif_connect(pt, mp_pcu_socket); T.start; alt { - [] as_pcu_info_ind(); + [] as_pcu_info_ind(pt, pcu_conn_id, pcu_last_info); [] T.timeout { setverdict(fail, "Timeout waiting for PCU INFO_IND"); self.stop; @@ -296,7 +300,8 @@ f_rsl_bcch_fill(RSL_SYSTEM_INFO_2, ts_SI2_default); f_rsl_bcch_fill(RSL_SYSTEM_INFO_4, ts_SI4_default); - f_init_pcu(id); + map(self:PCU, system:PCU); + f_init_pcu(PCU, id, g_pcu_conn_id, g_pcu_last_info); if (mp_bb_trxc_port != -1) { var TrxcMessage ret; @@ -322,7 +327,7 @@ type function void_fn(charstring id) runs on ConnHdlr; /* create a new test component */ -function f_start_handler(void_fn fn, ConnHdlrPars pars) +function f_start_handler(void_fn fn, ConnHdlrPars pars, boolean pcu_comp := false) runs on test_CT return ConnHdlr { var charstring id := testcasename(); var ConnHdlr vc_conn; @@ -331,6 +336,13 @@ /* connect to RSL Emulation main component */ connect(vc_conn:RSL, vc_RSL:CLIENT_PT); connect(vc_conn:RSL_PROC, vc_RSL:RSL_PROC); + if (pcu_comp) { + /* the ConnHdlr component wants to talk directly to the PCU, so disconnect + * it from the test_CT and connect it to the component. This obviously only + * works for one component, i.e. no concurrency */ + unmap(self:PCU, system:PCU); + map(vc_conn:PCU, system:PCU); + } vc_conn.start(f_handler_init(fn, id, pars)); return vc_conn; -- To view, visit https://gerrit.osmocom.org/7640 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Ib8811dd87f737f326f7ed8f652aa6f552c3f05f8 Gerrit-PatchSet: 1 Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Owner: Harald Welte From gerrit-no-reply at lists.osmocom.org Thu Apr 5 07:35:22 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Thu, 5 Apr 2018 07:35:22 +0000 Subject: [PATCH] osmo-ttcn3-hacks[master]: bts: Add first five dynamic PDCH tests Message-ID: Review at https://gerrit.osmocom.org/7641 bts: Add first five dynamic PDCH tests NOTE: This needs changes to your osmo-bsc.cfg, as it will now need an osmocom-style dyn PDCH on TS4, and an IPA-style dny PDCH on TS3. --- a/ttcn3-bts-test/osmo-bsc.cfg +++ b/ttcn3-bts-test/osmo-bsc.cfg @@ -154,10 +154,10 @@ network phys_chan_config TCH/F hopping enabled 0 timeslot 3 - phys_chan_config TCH/F + phys_chan_config TCH/F_PDCH hopping enabled 0 timeslot 4 - phys_chan_config TCH/F + phys_chan_config TCH/F_TCH/H_PDCH hopping enabled 0 timeslot 5 phys_chan_config TCH/H Corresponding change in docker-playground.git has Change-Id I229000ce7609845fdf24cafe1f5ec2bfa3f507e8 Change-Id: I2a42531dc5555ab4772d538fda462343605b8feb --- M bts/BTS_Tests.ttcn 1 file changed, 193 insertions(+), 1 deletion(-) git pull ssh://gerrit.osmocom.org:29418/osmo-ttcn3-hacks refs/changes/41/7641/1 diff --git a/bts/BTS_Tests.ttcn b/bts/BTS_Tests.ttcn index 8b30bd9..5316696 100644 --- a/bts/BTS_Tests.ttcn +++ b/bts/BTS_Tests.ttcn @@ -36,7 +36,10 @@ /* The tests assume a BTS with the following timeslot configuration: * TS0 : Combined CCCH + SDCCH/4 - * TS1 .. TS 4: TCH/F + * TS1 : TCH/F + * TS2 : TCH/F + * TS3 : TCH/F_PDCH (IPA Style) + * TS4 : TCH/F_TCH/H_PDCH (Osmocom Style) * TS5 : TCH/H * TS6 : SDCCH/8 * TS7 : PDCH @@ -2631,6 +2634,189 @@ setverdict(pass); } +/*********************************************************************** + * Dynamic Timeslot Support + ***********************************************************************/ + +private function f_dyn_osmo_pdch_act(integer pcu_conn_id, integer bts_nr, integer trx_nr) +runs on ConnHdlr { + var PCUIF_send_data sd; + /* Expect BTS to immediately acknowledge activation as PDCH */ + PCU.clear; + f_rsl_chan_act(g_pars.chan_mode); + /* expect INFO_IND on PCU interface listing TS as PDCH */ + alt { + [] PCU.receive(t_SD_PCUIF(pcu_conn_id, tr_PCUIF_INFO_IND(bts_nr, ?))) -> value sd { + if (substr(sd.data.u.info_ind.trx[trx_nr].pdch_mask, g_chan_nr.tn, 1) != '1'B) { + setverdict(fail, "PCUIF_INFO_IND PDCH_MASK not '1' after PDCH ACT"); + self.stop; + } + } + [] PCU.receive { repeat; } + } + /* try to activate this PDCH from the PCU point of view */ + PCU.send(t_SD_PCUIF(pcu_conn_id, ts_PCUIF_ACT_REQ(bts_nr, trx_nr, g_chan_nr.tn))); + /* FIXME: is there a response? */ +} + +private function f_dyn_osmo_pdch_deact(integer pcu_conn_id, integer bts_nr, integer trx_nr) +runs on ConnHdlr { + var PCUIF_send_data sd; + /* Send RSL CHAN REL (deactivate) */ + PCU.clear; + RSL.send(ts_RSL_RF_CHAN_REL(g_chan_nr)); + /* expect BTS to ask PCU to deactivate the channel */ + alt { + [] PCU.receive(t_SD_PCUIF(pcu_conn_id, tr_PCUIF_INFO_IND(bts_nr, ?))) -> value sd { + if (substr(sd.data.u.info_ind.trx[trx_nr].pdch_mask, g_chan_nr.tn, 1) != '0'B) { + setverdict(fail, "PCUIF_INFO_IND PDCH_MASK not '0' after PDCH DEACT"); + self.stop; + } + } + [] PCU.receive { repeat; } + } + /* Emulate PCU asking BTS to deactivate PDCH */ + PCU.send(t_SD_PCUIF(pcu_conn_id, ts_PCUIF_DEACT_REQ(bts_nr, trx_nr, g_chan_nr.tn))); + alt { + [] RSL.receive(tr_RSL_RF_CHAN_REL_ACK(g_chan_nr)) { + setverdict(pass); + } + [] RSL.receive { repeat; } + } +} + +/* Activate Osmocom-style dynamic PDCH from BSC side */ +function f_TC_dyn_osmo_pdch_act_deact(charstring id) runs on ConnHdlr { + var PCUIF_Message first_info; + var integer ts_nr := g_chan_nr.tn; + var integer trx_nr := 0; + var integer bts_nr := 0; + var integer pcu_conn_id := -1; + + f_init_pcu(PCU, id, pcu_conn_id, first_info); + + f_dyn_osmo_pdch_act(pcu_conn_id, bts_nr, trx_nr); + f_sleep(3.0); + f_dyn_osmo_pdch_deact(pcu_conn_id, bts_nr, trx_nr); + setverdict(pass); +} +testcase TC_dyn_osmo_pdch_act_deact() runs on test_CT { + var ConnHdlrPars pars; + var ConnHdlr vc_conn; + f_init(testcasename()); + + pars := valueof(t_Pars(t_RslChanNr_PDCH(4), ts_RSL_ChanMode_SIGN)); + vc_conn := f_start_handler(refers(f_TC_dyn_osmo_pdch_act_deact), pars, true); + vc_conn.done; +} + +/* send a RF CHAN REL for PDCH on an osmocom dynamci PDCH that's already inactive */ +function f_TC_dyn_osmo_pdch_unsol_deact(charstring id) runs on ConnHdlr { + var PCUIF_Message first_info; + var integer ts_nr := g_chan_nr.tn; + var integer trx_nr := 0; + var integer bts_nr := 0; + var integer pcu_conn_id := -1; + + f_init_pcu(PCU, id, pcu_conn_id, first_info); + + f_dyn_osmo_pdch_deact(pcu_conn_id, bts_nr, trx_nr); + setverdict(pass); +} +testcase TC_dyn_osmo_pdch_unsol_deact() runs on test_CT { + var ConnHdlrPars pars; + var ConnHdlr vc_conn; + f_init(testcasename()); + + pars := valueof(t_Pars(t_RslChanNr_PDCH(4), ts_RSL_ChanMode_SIGN)); + vc_conn := f_start_handler(refers(f_TC_dyn_osmo_pdch_unsol_deact), pars, true); + vc_conn.done; +} + +/* try to RSL CHAN ACT a PDCH on an osmocom-style PDCH that's already active */ +function f_TC_dyn_osmo_pdch_double_act(charstring id) runs on ConnHdlr { + var PCUIF_Message first_info; + var integer ts_nr := g_chan_nr.tn; + var integer trx_nr := 0; + var integer bts_nr := 0; + var integer pcu_conn_id := -1; + + f_init_pcu(PCU, id, pcu_conn_id, first_info); + + f_dyn_osmo_pdch_act(pcu_conn_id, bts_nr, trx_nr); + f_dyn_osmo_pdch_act(pcu_conn_id, bts_nr, trx_nr); + setverdict(pass); +} +testcase TC_dyn_osmo_pdch_double_act() runs on test_CT { + var ConnHdlrPars pars; + var ConnHdlr vc_conn; + f_init(testcasename()); + + pars := valueof(t_Pars(t_RslChanNr_PDCH(4), ts_RSL_ChanMode_SIGN)); + vc_conn := f_start_handler(refers(f_TC_dyn_osmo_pdch_double_act), pars, true); + vc_conn.done; +} + +/* try to RSL CHAN ACT a TCH/F on an osmocom-style PDCH */ +function f_TC_dyn_osmo_pdch_tchf_act(charstring id) runs on ConnHdlr { + var PCUIF_Message first_info; + var integer ts_nr := g_chan_nr.tn; + var integer trx_nr := 0; + var integer bts_nr := 0; + var integer pcu_conn_id := -1; + var RslChannelNr chan_nr := valueof(t_RslChanNr_Bm(g_chan_nr.tn)); + + /* register for the TCH/F channel number */ + f_rslem_register(0, chan_nr); + + f_init_pcu(PCU, id, pcu_conn_id, first_info); + + f_rsl_transceive(ts_RSL_CHAN_ACT(chan_nr, g_pars.chan_mode), tr_RSL_CHAN_ACT_ACK(chan_nr), + "RSL CHAN ACT"); + setverdict(pass); +} +testcase TC_dyn_osmo_pdch_tchf_act() runs on test_CT { + var ConnHdlrPars pars; + var ConnHdlr vc_conn; + f_init(testcasename()); + + pars := valueof(t_Pars(t_RslChanNr_PDCH(4), ts_RSL_ChanMode_SIGN)); + vc_conn := f_start_handler(refers(f_TC_dyn_osmo_pdch_tchf_act), pars, true); + vc_conn.done; +} + +/* try to RSL CHAN ACT the TCH/H on an osmocom-style PDCH */ +function f_TC_dyn_osmo_pdch_tchh_act(charstring id) runs on ConnHdlr { + var PCUIF_Message first_info; + var integer ts_nr := g_chan_nr.tn; + var integer trx_nr := 0; + var integer bts_nr := 0; + var integer pcu_conn_id := -1; + var RslChannelNr chan_nr[2] := { valueof(t_RslChanNr_Lm(g_chan_nr.tn, 0)), + valueof(t_RslChanNr_Lm(g_chan_nr.tn, 1)) }; + + /* register for the TCH/H channel numbers */ + f_rslem_register(0, chan_nr[0]); + f_rslem_register(0, chan_nr[1]); + + f_init_pcu(PCU, id, pcu_conn_id, first_info); + + f_rsl_transceive(ts_RSL_CHAN_ACT(chan_nr[1], g_pars.chan_mode), + tr_RSL_CHAN_ACT_ACK(chan_nr[1]), "RSL CHAN ACT [1]"); + f_rsl_transceive(ts_RSL_CHAN_ACT(chan_nr[0], g_pars.chan_mode), + tr_RSL_CHAN_ACT_ACK(chan_nr[0]), "RSL CHAN ACT [0]"); + setverdict(pass); +} +testcase TC_dyn_osmo_pdch_tchh_act() runs on test_CT { + var ConnHdlrPars pars; + var ConnHdlr vc_conn; + f_init(testcasename()); + + pars := valueof(t_Pars(t_RslChanNr_PDCH(4), ts_RSL_ChanMode_SIGN)); + vc_conn := f_start_handler(refers(f_TC_dyn_osmo_pdch_tchh_act), pars, true); + vc_conn.done; +} + /* TODO Areas: @@ -2723,6 +2909,12 @@ execute( TC_pcu_data_req_imm_ass_pch() ); execute( TC_pcu_rach_content() ); execute( TC_pcu_paging_from_rsl() ); + + execute( TC_dyn_osmo_pdch_act_deact() ); + execute( TC_dyn_osmo_pdch_unsol_deact() ); + execute( TC_dyn_osmo_pdch_double_act() ); + execute( TC_dyn_osmo_pdch_tchf_act() ); + execute( TC_dyn_osmo_pdch_tchh_act() ); } -- To view, visit https://gerrit.osmocom.org/7641 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I2a42531dc5555ab4772d538fda462343605b8feb Gerrit-PatchSet: 1 Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Owner: Harald Welte From gerrit-no-reply at lists.osmocom.org Thu Apr 5 07:35:22 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Thu, 5 Apr 2018 07:35:22 +0000 Subject: [PATCH] osmo-ttcn3-hacks[master]: RSL_Types: Fix msg_disc of IPA PDCH ACT/DEACT + inverse temp... Message-ID: Review at https://gerrit.osmocom.org/7642 RSL_Types: Fix msg_disc of IPA PDCH ACT/DEACT + inverse templates The MDISC_IPACCESS is only used for the media (CRCX/MDCX/DLCX) related commands, not for the PDCH activation/deactivation. The latter uses normal MDISC_DCHAN. Also, add the inverse templates for PDCH actiation/deactivation, so we now have both receive and transmit template for each of the 6 related messages (activation, deactivation, plus each their ACK + NACK). Change-Id: I170a90391859d71e1f96a72205487cccba5b6ae7 --- M library/RSL_Types.ttcn 1 file changed, 55 insertions(+), 6 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-ttcn3-hacks refs/changes/42/7642/1 diff --git a/library/RSL_Types.ttcn b/library/RSL_Types.ttcn index f26a1d8..5dba470 100644 --- a/library/RSL_Types.ttcn +++ b/library/RSL_Types.ttcn @@ -1547,34 +1547,67 @@ } + template RSL_Message ts_RSL_IPA_PDCH_ACT(RslChannelNr chan_nr) := { + msg_disc := ts_RSL_MsgDisc(RSL_MDISC_DCHAN, false), + msg_type := RSL_MT_IPAC_PDCH_ACT, + ies := { + t_RSL_IE(RSL_IE_CHAN_NR, RSL_IE_Body:{chan_nr := chan_nr}) + } + } template RSL_Message tr_RSL_IPA_PDCH_ACT(template RslChannelNr chan_nr) := { - msg_disc := ts_RSL_MsgDisc(RSL_MDISC_IPACCESS, false), + msg_disc := ts_RSL_MsgDisc(RSL_MDISC_DCHAN, false), msg_type := RSL_MT_IPAC_PDCH_ACT, ies := { tr_RSL_IE(RSL_IE_Body:{chan_nr := chan_nr}) } } + template RSL_Message ts_RSL_IPA_PDCH_ACT_ACK(RslChannelNr chan_nr, RSL_IE_FrameNumber fn) := { - msg_disc := ts_RSL_MsgDisc(RSL_MDISC_IPACCESS, false), + msg_disc := ts_RSL_MsgDisc(RSL_MDISC_DCHAN, false), msg_type := RSL_MT_IPAC_PDCH_ACT_ACK, ies := { t_RSL_IE(RSL_IE_CHAN_NR, RSL_IE_Body:{chan_nr := chan_nr}), t_RSL_IE(RSL_IE_FRAME_NUMBER, RSL_IE_Body:{frame_nr := fn}) } } + template RSL_Message tr_RSL_IPA_PDCH_ACT_ACK(template RslChannelNr chan_nr, + template RSL_IE_FrameNumber fn) := { + msg_disc := ts_RSL_MsgDisc(RSL_MDISC_DCHAN, false), + msg_type := RSL_MT_IPAC_PDCH_ACT_ACK, + ies := { + tr_RSL_IE(RSL_IE_Body:{chan_nr := chan_nr}), + tr_RSL_IE(RSL_IE_Body:{frame_nr := fn}) + } + } template RSL_Message ts_RSL_IPA_PDCH_ACT_NACK(RslChannelNr chan_nr, RSL_Cause cause) := { - msg_disc := ts_RSL_MsgDisc(RSL_MDISC_IPACCESS, false), + msg_disc := ts_RSL_MsgDisc(RSL_MDISC_DCHAN, false), msg_type := RSL_MT_IPAC_PDCH_ACT_NACK, ies := { t_RSL_IE(RSL_IE_CHAN_NR, RSL_IE_Body:{chan_nr := chan_nr}), t_RSL_IE(RSL_IE_CAUSE, RSL_IE_Body:{cause := ts_RSL_IE_Cause(cause)}) } } + template RSL_Message tr_RSL_IPA_PDCH_ACT_NACK(template RslChannelNr chan_nr, + template RSL_Cause cause) := { + msg_disc := ts_RSL_MsgDisc(RSL_MDISC_DCHAN, false), + msg_type := RSL_MT_IPAC_PDCH_ACT_NACK, + ies := { + tr_RSL_IE(RSL_IE_Body:{chan_nr := chan_nr}), + tr_RSL_IE(RSL_IE_Body:{cause := tr_RSL_IE_Cause(cause)}) + } + } + template RSL_Message ts_RSL_IPA_PDCH_DEACT(RslChannelNr chan_nr) := { + msg_disc := ts_RSL_MsgDisc(RSL_MDISC_DCHAN, false), + msg_type := RSL_MT_IPAC_PDCH_DEACT, + ies := { + t_RSL_IE(RSL_IE_CHAN_NR, RSL_IE_Body:{chan_nr := chan_nr}) + } + } template RSL_Message tr_RSL_IPA_PDCH_DEACT(template RslChannelNr chan_nr) := { - msg_disc := ts_RSL_MsgDisc(RSL_MDISC_IPACCESS, false), + msg_disc := ts_RSL_MsgDisc(RSL_MDISC_DCHAN, false), msg_type := RSL_MT_IPAC_PDCH_DEACT, ies := { tr_RSL_IE(RSL_IE_Body:{chan_nr := chan_nr}) @@ -1582,21 +1615,37 @@ } template RSL_Message ts_RSL_IPA_PDCH_DEACT_ACK(RslChannelNr chan_nr) := { - msg_disc := ts_RSL_MsgDisc(RSL_MDISC_IPACCESS, false), + msg_disc := ts_RSL_MsgDisc(RSL_MDISC_DCHAN, false), msg_type := RSL_MT_IPAC_PDCH_DEACT_ACK, ies := { t_RSL_IE(RSL_IE_CHAN_NR, RSL_IE_Body:{chan_nr := chan_nr}) } } + template RSL_Message tr_RSL_IPA_PDCH_DEACT_ACK(template RslChannelNr chan_nr) := { + msg_disc := ts_RSL_MsgDisc(RSL_MDISC_DCHAN, false), + msg_type := RSL_MT_IPAC_PDCH_DEACT_ACK, + ies := { + tr_RSL_IE(RSL_IE_Body:{chan_nr := chan_nr}) + } + } template RSL_Message ts_RSL_IPA_PDCH_DEACT_NACK(RslChannelNr chan_nr, RSL_Cause cause) := { - msg_disc := ts_RSL_MsgDisc(RSL_MDISC_IPACCESS, false), + msg_disc := ts_RSL_MsgDisc(RSL_MDISC_DCHAN, false), msg_type := RSL_MT_IPAC_PDCH_DEACT_NACK, ies := { t_RSL_IE(RSL_IE_CHAN_NR, RSL_IE_Body:{chan_nr := chan_nr}), t_RSL_IE(RSL_IE_CAUSE, RSL_IE_Body:{cause := ts_RSL_IE_Cause(cause)}) } } + template RSL_Message tr_RSL_IPA_PDCH_DEACT_NACK(template RslChannelNr chan_nr, + template RSL_Cause cause) := { + msg_disc := ts_RSL_MsgDisc(RSL_MDISC_DCHAN, false), + msg_type := RSL_MT_IPAC_PDCH_DEACT_NACK, + ies := { + tr_RSL_IE(RSL_IE_Body:{chan_nr := chan_nr}), + tr_RSL_IE(RSL_IE_Body:{cause := tr_RSL_IE_Cause(cause)}) + } + } function f_rsl_find_ie(RSL_Message msg, RSL_IE_Type iei, out RSL_IE_Body ret) return boolean { -- To view, visit https://gerrit.osmocom.org/7642 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I170a90391859d71e1f96a72205487cccba5b6ae7 Gerrit-PatchSet: 1 Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Owner: Harald Welte From gerrit-no-reply at lists.osmocom.org Thu Apr 5 09:35:01 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Thu, 5 Apr 2018 09:35:01 +0000 Subject: osmo-gsm-tester[master]: ms: Create a cumulative distribution function class In-Reply-To: References: Message-ID: Patch Set 8: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/6230 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I9e3064f4c3c4c7af5d3491f850090516e541f4d3 Gerrit-PatchSet: 8 Gerrit-Project: osmo-gsm-tester Gerrit-Branch: master Gerrit-Owner: Holger Freyther Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Holger Freyther Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Neels Hofmeyr Gerrit-Reviewer: Pau Espin Pedrol Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Thu Apr 5 09:35:58 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Thu, 5 Apr 2018 09:35:58 +0000 Subject: osmo-ci[master]: jenkins: add osmo-gsm-tester-build jobs In-Reply-To: References: Message-ID: Patch Set 5: lynxis, can you validate and merge them? Is there something else missing? -- To view, visit https://gerrit.osmocom.org/7019 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Ic49c94e9e6639e43f6ae14b868bc826af3ce2085 Gerrit-PatchSet: 5 Gerrit-Project: osmo-ci Gerrit-Branch: master Gerrit-Owner: lynxis lazus Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Neels Hofmeyr Gerrit-Reviewer: Pau Espin Pedrol Gerrit-Reviewer: lynxis lazus Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Thu Apr 5 11:52:51 2018 From: gerrit-no-reply at lists.osmocom.org (Neels Hofmeyr) Date: Thu, 5 Apr 2018 11:52:51 +0000 Subject: [PATCH] docker-playground[master]: root Makefile: fix ttcn3-msc-test rule, drop an extra .PHONY Message-ID: Review at https://gerrit.osmocom.org/7643 root Makefile: fix ttcn3-msc-test rule, drop an extra .PHONY Change-Id: I098d9d84d9ce89b1dab204b90d2cd7ee7b3f19c9 --- M Makefile 1 file changed, 1 insertion(+), 3 deletions(-) git pull ssh://gerrit.osmocom.org:29418/docker-playground refs/changes/43/7643/1 diff --git a/Makefile b/Makefile index 5f3aea1..eca64be 100644 --- a/Makefile +++ b/Makefile @@ -1,8 +1,6 @@ .PHONY: build build: debian-jessie-build osmo-ggsn-master osmo-stp-master sctp-test sigtran-tests m3ua-test sua-test debian-stretch-titan ttcn3-ggsn-test -.PHONY: ttcn3-bsc-test ttcn3-msc-test ttcn3-bts-test - .PHONY: debian-jessie-build debian-jessie-build: $(MAKE) -C debian-jessie-build @@ -52,7 +50,7 @@ $(MAKE) -C ggsn-test .PHONY: ttcn3-mgw-test -ttcn3-msc-test: debian-stretch-titan osmo-mgw-master +ttcn3-mgw-test: debian-stretch-titan osmo-mgw-master $(MAKE) -C ttcn3-mgw-test .PHONY: sctp-test -- To view, visit https://gerrit.osmocom.org/7643 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I098d9d84d9ce89b1dab204b90d2cd7ee7b3f19c9 Gerrit-PatchSet: 1 Gerrit-Project: docker-playground Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr From gerrit-no-reply at lists.osmocom.org Thu Apr 5 13:47:46 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Thu, 5 Apr 2018 13:47:46 +0000 Subject: docker-playground[master]: root Makefile: fix ttcn3-msc-test rule, drop an extra .PHONY In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7643 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I098d9d84d9ce89b1dab204b90d2cd7ee7b3f19c9 Gerrit-PatchSet: 1 Gerrit-Project: docker-playground Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr Gerrit-Reviewer: Harald Welte Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Thu Apr 5 13:48:05 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Thu, 5 Apr 2018 13:48:05 +0000 Subject: docker-playground[master]: fix 'make -C subdir': use $(CURDIR) instead of $PWD In-Reply-To: References: Message-ID: Patch Set 2: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7633 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I1dd0fd1ad89fdee18fdbea851ccc831ad60aeccf Gerrit-PatchSet: 2 Gerrit-Project: docker-playground Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Neels Hofmeyr Gerrit-Reviewer: Pau Espin Pedrol Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Thu Apr 5 13:48:53 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Thu, 5 Apr 2018 13:48:53 +0000 Subject: [MERGED] docker-playground[master]: fix 'make -C subdir': use $(CURDIR) instead of $PWD In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: fix 'make -C subdir': use $(CURDIR) instead of $PWD ...................................................................... fix 'make -C subdir': use $(CURDIR) instead of $PWD $(PWD) reflects the dir of 'make' invocation, $(CURDIR) the dir stepped into. So obtain the current dir from $(CURDIR) instead of $(PWD). So far, when doing 'make -C osmo-foo-maser', the image's name would be derived from the root dir's basename and all images were tagged as 'docker-playground'. With this fix, 'make -C' from anywhere still tags with the proper name. Change-Id: I1dd0fd1ad89fdee18fdbea851ccc831ad60aeccf --- M make/Makefile 1 file changed, 1 insertion(+), 1 deletion(-) Approvals: Neels Hofmeyr: Verified Harald Welte: Looks good to me, approved diff --git a/make/Makefile b/make/Makefile index 14d4c52..21614a8 100644 --- a/make/Makefile +++ b/make/Makefile @@ -15,7 +15,7 @@ # REGISTRY_HOST=docker.io USERNAME=$(USER) -NAME=$(shell basename $(PWD)) +NAME=$(shell basename $(CURDIR)) RELEASE_SUPPORT := $(shell dirname $(abspath $(lastword $(MAKEFILE_LIST))))/.make-release-support IMAGE=$(REGISTRY_HOST)/$(USERNAME)/$(NAME) -- To view, visit https://gerrit.osmocom.org/7633 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: I1dd0fd1ad89fdee18fdbea851ccc831ad60aeccf Gerrit-PatchSet: 2 Gerrit-Project: docker-playground Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Neels Hofmeyr Gerrit-Reviewer: Pau Espin Pedrol From gerrit-no-reply at lists.osmocom.org Thu Apr 5 13:49:53 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Thu, 5 Apr 2018 13:49:53 +0000 Subject: osmo-ttcn3-hacks[master]: PCUIF_Types: Fix bit-order of pdch_mask In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7639 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Ib89689abd998d4940895ba04f49eb140888bc73f Gerrit-PatchSet: 1 Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Owner: Harald Welte Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Thu Apr 5 13:49:55 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Thu, 5 Apr 2018 13:49:55 +0000 Subject: osmo-ttcn3-hacks[master]: BTS_Tests: Prepare for ConnHdlr with PCU socket access In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7640 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Ib8811dd87f737f326f7ed8f652aa6f552c3f05f8 Gerrit-PatchSet: 1 Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Owner: Harald Welte Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Thu Apr 5 13:49:57 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Thu, 5 Apr 2018 13:49:57 +0000 Subject: osmo-ttcn3-hacks[master]: bts: Add first five dynamic PDCH tests In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7641 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I2a42531dc5555ab4772d538fda462343605b8feb Gerrit-PatchSet: 1 Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Owner: Harald Welte Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Thu Apr 5 13:49:59 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Thu, 5 Apr 2018 13:49:59 +0000 Subject: osmo-ttcn3-hacks[master]: RSL_Types: Fix msg_disc of IPA PDCH ACT/DEACT + inverse temp... In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7642 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I170a90391859d71e1f96a72205487cccba5b6ae7 Gerrit-PatchSet: 1 Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Owner: Harald Welte Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Thu Apr 5 13:50:01 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Thu, 5 Apr 2018 13:50:01 +0000 Subject: [MERGED] osmo-ttcn3-hacks[master]: RSL_Types: Fix msg_disc of IPA PDCH ACT/DEACT + inverse temp... In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: RSL_Types: Fix msg_disc of IPA PDCH ACT/DEACT + inverse templates ...................................................................... RSL_Types: Fix msg_disc of IPA PDCH ACT/DEACT + inverse templates The MDISC_IPACCESS is only used for the media (CRCX/MDCX/DLCX) related commands, not for the PDCH activation/deactivation. The latter uses normal MDISC_DCHAN. Also, add the inverse templates for PDCH actiation/deactivation, so we now have both receive and transmit template for each of the 6 related messages (activation, deactivation, plus each their ACK + NACK). Change-Id: I170a90391859d71e1f96a72205487cccba5b6ae7 --- M library/RSL_Types.ttcn 1 file changed, 55 insertions(+), 6 deletions(-) Approvals: Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/library/RSL_Types.ttcn b/library/RSL_Types.ttcn index f26a1d8..5dba470 100644 --- a/library/RSL_Types.ttcn +++ b/library/RSL_Types.ttcn @@ -1547,34 +1547,67 @@ } + template RSL_Message ts_RSL_IPA_PDCH_ACT(RslChannelNr chan_nr) := { + msg_disc := ts_RSL_MsgDisc(RSL_MDISC_DCHAN, false), + msg_type := RSL_MT_IPAC_PDCH_ACT, + ies := { + t_RSL_IE(RSL_IE_CHAN_NR, RSL_IE_Body:{chan_nr := chan_nr}) + } + } template RSL_Message tr_RSL_IPA_PDCH_ACT(template RslChannelNr chan_nr) := { - msg_disc := ts_RSL_MsgDisc(RSL_MDISC_IPACCESS, false), + msg_disc := ts_RSL_MsgDisc(RSL_MDISC_DCHAN, false), msg_type := RSL_MT_IPAC_PDCH_ACT, ies := { tr_RSL_IE(RSL_IE_Body:{chan_nr := chan_nr}) } } + template RSL_Message ts_RSL_IPA_PDCH_ACT_ACK(RslChannelNr chan_nr, RSL_IE_FrameNumber fn) := { - msg_disc := ts_RSL_MsgDisc(RSL_MDISC_IPACCESS, false), + msg_disc := ts_RSL_MsgDisc(RSL_MDISC_DCHAN, false), msg_type := RSL_MT_IPAC_PDCH_ACT_ACK, ies := { t_RSL_IE(RSL_IE_CHAN_NR, RSL_IE_Body:{chan_nr := chan_nr}), t_RSL_IE(RSL_IE_FRAME_NUMBER, RSL_IE_Body:{frame_nr := fn}) } } + template RSL_Message tr_RSL_IPA_PDCH_ACT_ACK(template RslChannelNr chan_nr, + template RSL_IE_FrameNumber fn) := { + msg_disc := ts_RSL_MsgDisc(RSL_MDISC_DCHAN, false), + msg_type := RSL_MT_IPAC_PDCH_ACT_ACK, + ies := { + tr_RSL_IE(RSL_IE_Body:{chan_nr := chan_nr}), + tr_RSL_IE(RSL_IE_Body:{frame_nr := fn}) + } + } template RSL_Message ts_RSL_IPA_PDCH_ACT_NACK(RslChannelNr chan_nr, RSL_Cause cause) := { - msg_disc := ts_RSL_MsgDisc(RSL_MDISC_IPACCESS, false), + msg_disc := ts_RSL_MsgDisc(RSL_MDISC_DCHAN, false), msg_type := RSL_MT_IPAC_PDCH_ACT_NACK, ies := { t_RSL_IE(RSL_IE_CHAN_NR, RSL_IE_Body:{chan_nr := chan_nr}), t_RSL_IE(RSL_IE_CAUSE, RSL_IE_Body:{cause := ts_RSL_IE_Cause(cause)}) } } + template RSL_Message tr_RSL_IPA_PDCH_ACT_NACK(template RslChannelNr chan_nr, + template RSL_Cause cause) := { + msg_disc := ts_RSL_MsgDisc(RSL_MDISC_DCHAN, false), + msg_type := RSL_MT_IPAC_PDCH_ACT_NACK, + ies := { + tr_RSL_IE(RSL_IE_Body:{chan_nr := chan_nr}), + tr_RSL_IE(RSL_IE_Body:{cause := tr_RSL_IE_Cause(cause)}) + } + } + template RSL_Message ts_RSL_IPA_PDCH_DEACT(RslChannelNr chan_nr) := { + msg_disc := ts_RSL_MsgDisc(RSL_MDISC_DCHAN, false), + msg_type := RSL_MT_IPAC_PDCH_DEACT, + ies := { + t_RSL_IE(RSL_IE_CHAN_NR, RSL_IE_Body:{chan_nr := chan_nr}) + } + } template RSL_Message tr_RSL_IPA_PDCH_DEACT(template RslChannelNr chan_nr) := { - msg_disc := ts_RSL_MsgDisc(RSL_MDISC_IPACCESS, false), + msg_disc := ts_RSL_MsgDisc(RSL_MDISC_DCHAN, false), msg_type := RSL_MT_IPAC_PDCH_DEACT, ies := { tr_RSL_IE(RSL_IE_Body:{chan_nr := chan_nr}) @@ -1582,21 +1615,37 @@ } template RSL_Message ts_RSL_IPA_PDCH_DEACT_ACK(RslChannelNr chan_nr) := { - msg_disc := ts_RSL_MsgDisc(RSL_MDISC_IPACCESS, false), + msg_disc := ts_RSL_MsgDisc(RSL_MDISC_DCHAN, false), msg_type := RSL_MT_IPAC_PDCH_DEACT_ACK, ies := { t_RSL_IE(RSL_IE_CHAN_NR, RSL_IE_Body:{chan_nr := chan_nr}) } } + template RSL_Message tr_RSL_IPA_PDCH_DEACT_ACK(template RslChannelNr chan_nr) := { + msg_disc := ts_RSL_MsgDisc(RSL_MDISC_DCHAN, false), + msg_type := RSL_MT_IPAC_PDCH_DEACT_ACK, + ies := { + tr_RSL_IE(RSL_IE_Body:{chan_nr := chan_nr}) + } + } template RSL_Message ts_RSL_IPA_PDCH_DEACT_NACK(RslChannelNr chan_nr, RSL_Cause cause) := { - msg_disc := ts_RSL_MsgDisc(RSL_MDISC_IPACCESS, false), + msg_disc := ts_RSL_MsgDisc(RSL_MDISC_DCHAN, false), msg_type := RSL_MT_IPAC_PDCH_DEACT_NACK, ies := { t_RSL_IE(RSL_IE_CHAN_NR, RSL_IE_Body:{chan_nr := chan_nr}), t_RSL_IE(RSL_IE_CAUSE, RSL_IE_Body:{cause := ts_RSL_IE_Cause(cause)}) } } + template RSL_Message tr_RSL_IPA_PDCH_DEACT_NACK(template RslChannelNr chan_nr, + template RSL_Cause cause) := { + msg_disc := ts_RSL_MsgDisc(RSL_MDISC_DCHAN, false), + msg_type := RSL_MT_IPAC_PDCH_DEACT_NACK, + ies := { + tr_RSL_IE(RSL_IE_Body:{chan_nr := chan_nr}), + tr_RSL_IE(RSL_IE_Body:{cause := tr_RSL_IE_Cause(cause)}) + } + } function f_rsl_find_ie(RSL_Message msg, RSL_IE_Type iei, out RSL_IE_Body ret) return boolean { -- To view, visit https://gerrit.osmocom.org/7642 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: I170a90391859d71e1f96a72205487cccba5b6ae7 Gerrit-PatchSet: 1 Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Owner: Harald Welte Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder From gerrit-no-reply at lists.osmocom.org Thu Apr 5 13:50:01 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Thu, 5 Apr 2018 13:50:01 +0000 Subject: [MERGED] osmo-ttcn3-hacks[master]: bts: Add first five dynamic PDCH tests In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: bts: Add first five dynamic PDCH tests ...................................................................... bts: Add first five dynamic PDCH tests NOTE: This needs changes to your osmo-bsc.cfg, as it will now need an osmocom-style dyn PDCH on TS4, and an IPA-style dny PDCH on TS3. --- a/ttcn3-bts-test/osmo-bsc.cfg +++ b/ttcn3-bts-test/osmo-bsc.cfg @@ -154,10 +154,10 @@ network phys_chan_config TCH/F hopping enabled 0 timeslot 3 - phys_chan_config TCH/F + phys_chan_config TCH/F_PDCH hopping enabled 0 timeslot 4 - phys_chan_config TCH/F + phys_chan_config TCH/F_TCH/H_PDCH hopping enabled 0 timeslot 5 phys_chan_config TCH/H Corresponding change in docker-playground.git has Change-Id I229000ce7609845fdf24cafe1f5ec2bfa3f507e8 Change-Id: I2a42531dc5555ab4772d538fda462343605b8feb --- M bts/BTS_Tests.ttcn 1 file changed, 193 insertions(+), 1 deletion(-) Approvals: Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/bts/BTS_Tests.ttcn b/bts/BTS_Tests.ttcn index 8b30bd9..5316696 100644 --- a/bts/BTS_Tests.ttcn +++ b/bts/BTS_Tests.ttcn @@ -36,7 +36,10 @@ /* The tests assume a BTS with the following timeslot configuration: * TS0 : Combined CCCH + SDCCH/4 - * TS1 .. TS 4: TCH/F + * TS1 : TCH/F + * TS2 : TCH/F + * TS3 : TCH/F_PDCH (IPA Style) + * TS4 : TCH/F_TCH/H_PDCH (Osmocom Style) * TS5 : TCH/H * TS6 : SDCCH/8 * TS7 : PDCH @@ -2631,6 +2634,189 @@ setverdict(pass); } +/*********************************************************************** + * Dynamic Timeslot Support + ***********************************************************************/ + +private function f_dyn_osmo_pdch_act(integer pcu_conn_id, integer bts_nr, integer trx_nr) +runs on ConnHdlr { + var PCUIF_send_data sd; + /* Expect BTS to immediately acknowledge activation as PDCH */ + PCU.clear; + f_rsl_chan_act(g_pars.chan_mode); + /* expect INFO_IND on PCU interface listing TS as PDCH */ + alt { + [] PCU.receive(t_SD_PCUIF(pcu_conn_id, tr_PCUIF_INFO_IND(bts_nr, ?))) -> value sd { + if (substr(sd.data.u.info_ind.trx[trx_nr].pdch_mask, g_chan_nr.tn, 1) != '1'B) { + setverdict(fail, "PCUIF_INFO_IND PDCH_MASK not '1' after PDCH ACT"); + self.stop; + } + } + [] PCU.receive { repeat; } + } + /* try to activate this PDCH from the PCU point of view */ + PCU.send(t_SD_PCUIF(pcu_conn_id, ts_PCUIF_ACT_REQ(bts_nr, trx_nr, g_chan_nr.tn))); + /* FIXME: is there a response? */ +} + +private function f_dyn_osmo_pdch_deact(integer pcu_conn_id, integer bts_nr, integer trx_nr) +runs on ConnHdlr { + var PCUIF_send_data sd; + /* Send RSL CHAN REL (deactivate) */ + PCU.clear; + RSL.send(ts_RSL_RF_CHAN_REL(g_chan_nr)); + /* expect BTS to ask PCU to deactivate the channel */ + alt { + [] PCU.receive(t_SD_PCUIF(pcu_conn_id, tr_PCUIF_INFO_IND(bts_nr, ?))) -> value sd { + if (substr(sd.data.u.info_ind.trx[trx_nr].pdch_mask, g_chan_nr.tn, 1) != '0'B) { + setverdict(fail, "PCUIF_INFO_IND PDCH_MASK not '0' after PDCH DEACT"); + self.stop; + } + } + [] PCU.receive { repeat; } + } + /* Emulate PCU asking BTS to deactivate PDCH */ + PCU.send(t_SD_PCUIF(pcu_conn_id, ts_PCUIF_DEACT_REQ(bts_nr, trx_nr, g_chan_nr.tn))); + alt { + [] RSL.receive(tr_RSL_RF_CHAN_REL_ACK(g_chan_nr)) { + setverdict(pass); + } + [] RSL.receive { repeat; } + } +} + +/* Activate Osmocom-style dynamic PDCH from BSC side */ +function f_TC_dyn_osmo_pdch_act_deact(charstring id) runs on ConnHdlr { + var PCUIF_Message first_info; + var integer ts_nr := g_chan_nr.tn; + var integer trx_nr := 0; + var integer bts_nr := 0; + var integer pcu_conn_id := -1; + + f_init_pcu(PCU, id, pcu_conn_id, first_info); + + f_dyn_osmo_pdch_act(pcu_conn_id, bts_nr, trx_nr); + f_sleep(3.0); + f_dyn_osmo_pdch_deact(pcu_conn_id, bts_nr, trx_nr); + setverdict(pass); +} +testcase TC_dyn_osmo_pdch_act_deact() runs on test_CT { + var ConnHdlrPars pars; + var ConnHdlr vc_conn; + f_init(testcasename()); + + pars := valueof(t_Pars(t_RslChanNr_PDCH(4), ts_RSL_ChanMode_SIGN)); + vc_conn := f_start_handler(refers(f_TC_dyn_osmo_pdch_act_deact), pars, true); + vc_conn.done; +} + +/* send a RF CHAN REL for PDCH on an osmocom dynamci PDCH that's already inactive */ +function f_TC_dyn_osmo_pdch_unsol_deact(charstring id) runs on ConnHdlr { + var PCUIF_Message first_info; + var integer ts_nr := g_chan_nr.tn; + var integer trx_nr := 0; + var integer bts_nr := 0; + var integer pcu_conn_id := -1; + + f_init_pcu(PCU, id, pcu_conn_id, first_info); + + f_dyn_osmo_pdch_deact(pcu_conn_id, bts_nr, trx_nr); + setverdict(pass); +} +testcase TC_dyn_osmo_pdch_unsol_deact() runs on test_CT { + var ConnHdlrPars pars; + var ConnHdlr vc_conn; + f_init(testcasename()); + + pars := valueof(t_Pars(t_RslChanNr_PDCH(4), ts_RSL_ChanMode_SIGN)); + vc_conn := f_start_handler(refers(f_TC_dyn_osmo_pdch_unsol_deact), pars, true); + vc_conn.done; +} + +/* try to RSL CHAN ACT a PDCH on an osmocom-style PDCH that's already active */ +function f_TC_dyn_osmo_pdch_double_act(charstring id) runs on ConnHdlr { + var PCUIF_Message first_info; + var integer ts_nr := g_chan_nr.tn; + var integer trx_nr := 0; + var integer bts_nr := 0; + var integer pcu_conn_id := -1; + + f_init_pcu(PCU, id, pcu_conn_id, first_info); + + f_dyn_osmo_pdch_act(pcu_conn_id, bts_nr, trx_nr); + f_dyn_osmo_pdch_act(pcu_conn_id, bts_nr, trx_nr); + setverdict(pass); +} +testcase TC_dyn_osmo_pdch_double_act() runs on test_CT { + var ConnHdlrPars pars; + var ConnHdlr vc_conn; + f_init(testcasename()); + + pars := valueof(t_Pars(t_RslChanNr_PDCH(4), ts_RSL_ChanMode_SIGN)); + vc_conn := f_start_handler(refers(f_TC_dyn_osmo_pdch_double_act), pars, true); + vc_conn.done; +} + +/* try to RSL CHAN ACT a TCH/F on an osmocom-style PDCH */ +function f_TC_dyn_osmo_pdch_tchf_act(charstring id) runs on ConnHdlr { + var PCUIF_Message first_info; + var integer ts_nr := g_chan_nr.tn; + var integer trx_nr := 0; + var integer bts_nr := 0; + var integer pcu_conn_id := -1; + var RslChannelNr chan_nr := valueof(t_RslChanNr_Bm(g_chan_nr.tn)); + + /* register for the TCH/F channel number */ + f_rslem_register(0, chan_nr); + + f_init_pcu(PCU, id, pcu_conn_id, first_info); + + f_rsl_transceive(ts_RSL_CHAN_ACT(chan_nr, g_pars.chan_mode), tr_RSL_CHAN_ACT_ACK(chan_nr), + "RSL CHAN ACT"); + setverdict(pass); +} +testcase TC_dyn_osmo_pdch_tchf_act() runs on test_CT { + var ConnHdlrPars pars; + var ConnHdlr vc_conn; + f_init(testcasename()); + + pars := valueof(t_Pars(t_RslChanNr_PDCH(4), ts_RSL_ChanMode_SIGN)); + vc_conn := f_start_handler(refers(f_TC_dyn_osmo_pdch_tchf_act), pars, true); + vc_conn.done; +} + +/* try to RSL CHAN ACT the TCH/H on an osmocom-style PDCH */ +function f_TC_dyn_osmo_pdch_tchh_act(charstring id) runs on ConnHdlr { + var PCUIF_Message first_info; + var integer ts_nr := g_chan_nr.tn; + var integer trx_nr := 0; + var integer bts_nr := 0; + var integer pcu_conn_id := -1; + var RslChannelNr chan_nr[2] := { valueof(t_RslChanNr_Lm(g_chan_nr.tn, 0)), + valueof(t_RslChanNr_Lm(g_chan_nr.tn, 1)) }; + + /* register for the TCH/H channel numbers */ + f_rslem_register(0, chan_nr[0]); + f_rslem_register(0, chan_nr[1]); + + f_init_pcu(PCU, id, pcu_conn_id, first_info); + + f_rsl_transceive(ts_RSL_CHAN_ACT(chan_nr[1], g_pars.chan_mode), + tr_RSL_CHAN_ACT_ACK(chan_nr[1]), "RSL CHAN ACT [1]"); + f_rsl_transceive(ts_RSL_CHAN_ACT(chan_nr[0], g_pars.chan_mode), + tr_RSL_CHAN_ACT_ACK(chan_nr[0]), "RSL CHAN ACT [0]"); + setverdict(pass); +} +testcase TC_dyn_osmo_pdch_tchh_act() runs on test_CT { + var ConnHdlrPars pars; + var ConnHdlr vc_conn; + f_init(testcasename()); + + pars := valueof(t_Pars(t_RslChanNr_PDCH(4), ts_RSL_ChanMode_SIGN)); + vc_conn := f_start_handler(refers(f_TC_dyn_osmo_pdch_tchh_act), pars, true); + vc_conn.done; +} + /* TODO Areas: @@ -2723,6 +2909,12 @@ execute( TC_pcu_data_req_imm_ass_pch() ); execute( TC_pcu_rach_content() ); execute( TC_pcu_paging_from_rsl() ); + + execute( TC_dyn_osmo_pdch_act_deact() ); + execute( TC_dyn_osmo_pdch_unsol_deact() ); + execute( TC_dyn_osmo_pdch_double_act() ); + execute( TC_dyn_osmo_pdch_tchf_act() ); + execute( TC_dyn_osmo_pdch_tchh_act() ); } -- To view, visit https://gerrit.osmocom.org/7641 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: I2a42531dc5555ab4772d538fda462343605b8feb Gerrit-PatchSet: 1 Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Owner: Harald Welte Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder From gerrit-no-reply at lists.osmocom.org Thu Apr 5 13:50:02 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Thu, 5 Apr 2018 13:50:02 +0000 Subject: [MERGED] osmo-ttcn3-hacks[master]: BTS_Tests: Prepare for ConnHdlr with PCU socket access In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: BTS_Tests: Prepare for ConnHdlr with PCU socket access ...................................................................... BTS_Tests: Prepare for ConnHdlr with PCU socket access For upcoming dynamic PDCH activation/deactivation tests we would like to access the PCU socket from ConnHdlr, rather than test_CT. Let's prepare for that. Change-Id: Ib8811dd87f737f326f7ed8f652aa6f552c3f05f8 --- M bts/BTS_Tests.ttcn 1 file changed, 23 insertions(+), 11 deletions(-) Approvals: Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/bts/BTS_Tests.ttcn b/bts/BTS_Tests.ttcn index 4a4ced5..8b30bd9 100644 --- a/bts/BTS_Tests.ttcn +++ b/bts/BTS_Tests.ttcn @@ -117,6 +117,9 @@ var ConnHdlrPars g_pars; var uint8_t g_next_meas_res_nr := 0; var boolean g_first_meas_res := true; + + /* PCU Interface of BTS */ + port PCUIF_CODEC_PT PCU; } function f_init_rsl(charstring id) runs on test_CT { @@ -235,30 +238,31 @@ } /* PCU socket may at any time receive a new INFO.ind */ -private altstep as_pcu_info_ind() runs on test_CT { +private altstep as_pcu_info_ind(PCUIF_CODEC_PT pt, integer pcu_conn_id, + out PCUIF_Message pcu_last_info) { var PCUIF_send_data sd; - [] PCU.receive(t_SD_PCUIF(g_pcu_conn_id, tr_PCUIF_INFO_IND(0, ?))) -> value sd { - g_pcu_last_info := sd.data; + [] pt.receive(t_SD_PCUIF(pcu_conn_id, tr_PCUIF_INFO_IND(0, ?))) -> value sd { + pcu_last_info := sd.data; } - [] PCU.receive(t_SD_PCUIF(g_pcu_conn_id, tr_PCUIF_INFO_IND(?, ?, ?))) -> value sd { + [] pt.receive(t_SD_PCUIF(pcu_conn_id, tr_PCUIF_INFO_IND(?, ?, ?))) -> value sd { setverdict(fail, "Invalid PCU Version/BTS Number received"); self.stop; } } -private function f_init_pcu(charstring id) runs on test_CT { +private function f_init_pcu(PCUIF_CODEC_PT pt, charstring id, + out integer pcu_conn_id, out PCUIF_Message pcu_last_info) { timer T := 2.0; var PCUIF_send_data sd; - map(self:PCU, system:PCU); if (mp_pcu_socket == "") { - g_pcu_conn_id := -1; + pcu_conn_id := -1; return; } - g_pcu_conn_id := f_pcuif_connect(PCU, mp_pcu_socket); + pcu_conn_id := f_pcuif_connect(pt, mp_pcu_socket); T.start; alt { - [] as_pcu_info_ind(); + [] as_pcu_info_ind(pt, pcu_conn_id, pcu_last_info); [] T.timeout { setverdict(fail, "Timeout waiting for PCU INFO_IND"); self.stop; @@ -296,7 +300,8 @@ f_rsl_bcch_fill(RSL_SYSTEM_INFO_2, ts_SI2_default); f_rsl_bcch_fill(RSL_SYSTEM_INFO_4, ts_SI4_default); - f_init_pcu(id); + map(self:PCU, system:PCU); + f_init_pcu(PCU, id, g_pcu_conn_id, g_pcu_last_info); if (mp_bb_trxc_port != -1) { var TrxcMessage ret; @@ -322,7 +327,7 @@ type function void_fn(charstring id) runs on ConnHdlr; /* create a new test component */ -function f_start_handler(void_fn fn, ConnHdlrPars pars) +function f_start_handler(void_fn fn, ConnHdlrPars pars, boolean pcu_comp := false) runs on test_CT return ConnHdlr { var charstring id := testcasename(); var ConnHdlr vc_conn; @@ -331,6 +336,13 @@ /* connect to RSL Emulation main component */ connect(vc_conn:RSL, vc_RSL:CLIENT_PT); connect(vc_conn:RSL_PROC, vc_RSL:RSL_PROC); + if (pcu_comp) { + /* the ConnHdlr component wants to talk directly to the PCU, so disconnect + * it from the test_CT and connect it to the component. This obviously only + * works for one component, i.e. no concurrency */ + unmap(self:PCU, system:PCU); + map(vc_conn:PCU, system:PCU); + } vc_conn.start(f_handler_init(fn, id, pars)); return vc_conn; -- To view, visit https://gerrit.osmocom.org/7640 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: Ib8811dd87f737f326f7ed8f652aa6f552c3f05f8 Gerrit-PatchSet: 1 Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Owner: Harald Welte Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder From gerrit-no-reply at lists.osmocom.org Thu Apr 5 13:50:02 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Thu, 5 Apr 2018 13:50:02 +0000 Subject: [MERGED] osmo-ttcn3-hacks[master]: PCUIF_Types: Fix bit-order of pdch_mask In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: PCUIF_Types: Fix bit-order of pdch_mask ...................................................................... PCUIF_Types: Fix bit-order of pdch_mask The bit-string type should be indexed by timeslot number, i.e. the first element [0] should equal timeslot 0, the last one TS7 Change-Id: Ib89689abd998d4940895ba04f49eb140888bc73f --- M library/PCUIF_Types.ttcn 1 file changed, 1 insertion(+), 1 deletion(-) Approvals: Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/library/PCUIF_Types.ttcn b/library/PCUIF_Types.ttcn index 1a4ba29..7bfaf9b 100644 --- a/library/PCUIF_Types.ttcn +++ b/library/PCUIF_Types.ttcn @@ -124,7 +124,7 @@ OCT1 spare, OCT8 tsc, uint32_t hLayer1 -} with { variant "" }; +} with { variant (pdch_mask) "BITORDER(msb)" }; type record PCUIF_info_ind { uint32_t version, -- To view, visit https://gerrit.osmocom.org/7639 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: Ib89689abd998d4940895ba04f49eb140888bc73f Gerrit-PatchSet: 1 Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Owner: Harald Welte Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder From gerrit-no-reply at lists.osmocom.org Thu Apr 5 13:50:31 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Thu, 5 Apr 2018 13:50:31 +0000 Subject: osmo-bts[master]: rsl_tx_dyn_pdch_ack: Add missing FRAME_NR information element In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7638 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Ibe7988e9ef374e8c7d9429777fb32322d90c2024 Gerrit-PatchSet: 1 Gerrit-Project: osmo-bts Gerrit-Branch: master Gerrit-Owner: Harald Welte Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Thu Apr 5 13:50:34 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Thu, 5 Apr 2018 13:50:34 +0000 Subject: [MERGED] osmo-bts[master]: rsl_tx_dyn_pdch_ack: Add missing FRAME_NR information element In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: rsl_tx_dyn_pdch_ack: Add missing FRAME_NR information element ...................................................................... rsl_tx_dyn_pdch_ack: Add missing FRAME_NR information element It seems that the IPA PDCH ACT ACK contains not only the channel number, but also the frame number. Let's make sure we're as close as possible to other implementations to ensure maximum interoperability. Change-Id: Ibe7988e9ef374e8c7d9429777fb32322d90c2024 --- M src/common/rsl.c 1 file changed, 7 insertions(+), 4 deletions(-) Approvals: Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/src/common/rsl.c b/src/common/rsl.c index 6120e0e..9adb89a 100644 --- a/src/common/rsl.c +++ b/src/common/rsl.c @@ -1932,8 +1932,10 @@ /* PDCH ACT/DEACT ACKNOWLEDGE */ static int rsl_tx_dyn_pdch_ack(struct gsm_lchan *lchan, bool pdch_act) { - struct msgb *msg; + struct gsm_time *gtime = get_time(lchan->ts->trx->bts); uint8_t chan_nr = gsm_lchan2chan_nr(lchan); + struct msgb *msg; + uint8_t ie[2]; LOGP(DRSL, LOGL_NOTICE, "%s Tx PDCH %s ACK\n", gsm_lchan_name(lchan), pdch_act? "ACT" : "DEACT"); @@ -1942,9 +1944,10 @@ if (!msg) return -ENOMEM; - msg->len = 0; - msg->data = msg->tail = msg->l3h; - + if (pdch_act) { + gsm48_gen_starting_time(ie, gtime); + msgb_tv_fixed_put(msg, RSL_IE_FRAME_NUMBER, 2, ie); + } rsl_dch_push_hdr(msg, pdch_act? RSL_MT_IPAC_PDCH_ACT_ACK : RSL_MT_IPAC_PDCH_DEACT_ACK, -- To view, visit https://gerrit.osmocom.org/7638 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: Ibe7988e9ef374e8c7d9429777fb32322d90c2024 Gerrit-PatchSet: 2 Gerrit-Project: osmo-bts Gerrit-Branch: master Gerrit-Owner: Harald Welte Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder From gerrit-no-reply at lists.osmocom.org Thu Apr 5 13:50:34 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Thu, 5 Apr 2018 13:50:34 +0000 Subject: [MERGED] osmo-bts[master]: fox chan_nr_is_dchan() for RSL_CHAN_OSMO_PDCH In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: fox chan_nr_is_dchan() for RSL_CHAN_OSMO_PDCH ...................................................................... fox chan_nr_is_dchan() for RSL_CHAN_OSMO_PDCH When writing chan_nr_is_dchan() in Change-Id: I43a78bec63aeb36dd67043d237b27fe880209349, I apparently only looked at TS 48.058 without considering the osmocom extension to it for PDCH activation. The result is complete breakage for "osmocom style dynamic PDCH" support. This patch fixes the mistake by making the compare more specific. Change-Id: I18e0774fdd48966bc95261e715f798464b8b681f Related: OS#3131, OS#1853 --- M src/common/rsl.c 1 file changed, 2 insertions(+), 2 deletions(-) Approvals: Neels Hofmeyr: Looks good to me, approved Jenkins Builder: Verified diff --git a/src/common/rsl.c b/src/common/rsl.c index 5f3c17e..6120e0e 100644 --- a/src/common/rsl.c +++ b/src/common/rsl.c @@ -140,8 +140,8 @@ /* Is this channel number for a dedicated channel (true) or not (false) */ static bool chan_nr_is_dchan(uint8_t chan_nr) { - /* See TS 48.058 9.3.1 */ - if (chan_nr & 0x80) + /* See TS 48.058 9.3.1 + Osmocom extension for RSL_CHAN_OSMO_PDCH */ + if ((chan_nr & 0xc0) == 0x80) return false; else return true; -- To view, visit https://gerrit.osmocom.org/7632 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: I18e0774fdd48966bc95261e715f798464b8b681f Gerrit-PatchSet: 2 Gerrit-Project: osmo-bts Gerrit-Branch: master Gerrit-Owner: Harald Welte Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Neels Hofmeyr From gerrit-no-reply at lists.osmocom.org Thu Apr 5 13:50:52 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Thu, 5 Apr 2018 13:50:52 +0000 Subject: libosmocore[master]: ctrl: test deferred cmd, show current failure In-Reply-To: References: Message-ID: Patch Set 2: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7636 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Ibbc847fc583bdd8e5e53a008258805e634ea12b4 Gerrit-PatchSet: 2 Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Thu Apr 5 13:51:06 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Thu, 5 Apr 2018 13:51:06 +0000 Subject: libosmocore[master]: ctrl: fix deferred commands (and hence fix osmo-bts-sysmo 'c... In-Reply-To: References: Message-ID: Patch Set 3: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7618 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I24232be7dcf7be79f4def91ddc8b8f8005b56318 Gerrit-PatchSet: 3 Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Thu Apr 5 13:51:09 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Thu, 5 Apr 2018 13:51:09 +0000 Subject: [MERGED] libosmocore[master]: ctrl: fix deferred commands (and hence fix osmo-bts-sysmo 'c... In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: ctrl: fix deferred commands (and hence fix osmo-bts-sysmo 'clock-info' cmd) ...................................................................... ctrl: fix deferred commands (and hence fix osmo-bts-sysmo 'clock-info' cmd) The CTRL interface has a ctrl_cmd_def_* API that allows deferring a CTRL command reply until later. However, the command handling currently fails to acknowledge this and deallocates the struct ctrl_cmd anyway. Fix: in struct ctrl_cmd, add a defer pointer to be populated by ctrl_cmd_def_make(). A cmd thus marked as deferred is not deallocated at the end of command handling. This fix needs no change in calling code. (Another idea was to return a different code than CTRL_CMD_HANDLED when the command is to be deferred, but that would require adjusting each user of ctrl_cmd_def_make(). The implicit marking is safer and easier.) Show that handling deferred commands is fixed by adjusting the expectations of ctrl_test.c's test_deferred_cmd() and removing the now obsolete exit_early label. One symptom of the breakage is that osmo-bts-sysmo crashes when asked to report a trx's clock-info, which is aggravated by the fact that the sysmobts-mgr does ask osmo-bts-sysmo for a clock-info. The crash appears since Id583b413f8b8bd16e5cf92a8a9e8663903646381 -- it looked like just fixing an obvious memory leak, which it did as shown by the unit test, but deferred ctrl commands actually relied on that leak. Both fixed now. Related: OS#3120 Change-Id: I24232be7dcf7be79f4def91ddc8b8f8005b56318 --- M include/osmocom/ctrl/control_cmd.h M src/ctrl/control_cmd.c M src/ctrl/control_if.c M tests/ctrl/ctrl_test.c M tests/ctrl/ctrl_test.ok 5 files changed, 13 insertions(+), 5 deletions(-) Approvals: Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/include/osmocom/ctrl/control_cmd.h b/include/osmocom/ctrl/control_cmd.h index 865b006..a5df753 100644 --- a/include/osmocom/ctrl/control_cmd.h +++ b/include/osmocom/ctrl/control_cmd.h @@ -56,6 +56,8 @@ struct llist_head def_cmds; }; +struct ctrl_cmd_def; + struct ctrl_cmd { struct ctrl_connection *ccon; enum ctrl_type type; @@ -64,6 +66,7 @@ char *variable; char *value; char *reply; + struct ctrl_cmd_def *defer; }; #define ctrl_cmd_reply_printf(cmd, fmt, args ...) \ diff --git a/src/ctrl/control_cmd.c b/src/ctrl/control_cmd.c index c747e84..fb0cd2b 100644 --- a/src/ctrl/control_cmd.c +++ b/src/ctrl/control_cmd.c @@ -566,6 +566,7 @@ cd = talloc_zero(ctx, struct ctrl_cmd_def); + cmd->defer = cd; cd->cmd = cmd; cd->data = data; diff --git a/src/ctrl/control_if.c b/src/ctrl/control_if.c index 07de0d4..df8abbc 100644 --- a/src/ctrl/control_if.c +++ b/src/ctrl/control_if.c @@ -401,6 +401,13 @@ if (cmd->type != CTRL_TYPE_ERROR) { cmd->ccon = ccon; if (ctrl_cmd_handle(ctrl, cmd, ctrl->data) == CTRL_CMD_HANDLED) { + + if (cmd->defer) { + /* The command is still stored as ctrl_cmd_def.cmd, in the def_cmds list. + * Just leave hanging for deferred handling. Reply will happen later. */ + return 0; + } + /* On CTRL_CMD_HANDLED, no reply needs to be sent back. */ talloc_free(cmd); cmd = NULL; diff --git a/tests/ctrl/ctrl_test.c b/tests/ctrl/ctrl_test.c index f20f534..b7b30c3 100644 --- a/tests/ctrl/ctrl_test.c +++ b/tests/ctrl/ctrl_test.c @@ -401,8 +401,6 @@ /* Expecting a ctrl_cmd_def as well as the cmd to still be allocated */ if (talloc_total_size(ctx) <= ctx_size_before_defer) { printf("deferred command apparently deallocated too soon\n"); - /* ERROR -- showing current bug in handling deallocated cmds, hence exiting early */ - goto exit_early; talloc_report_full(ctx, stdout); OSMO_ASSERT(false); } @@ -416,8 +414,6 @@ talloc_report_full(ctx, stdout); OSMO_ASSERT(false); } - -exit_early: talloc_free(ccon); talloc_free(ctrl); diff --git a/tests/ctrl/ctrl_test.ok b/tests/ctrl/ctrl_test.ok index 6a902be..07f4aac 100644 --- a/tests/ctrl/ctrl_test.ok +++ b/tests/ctrl/ctrl_test.ok @@ -176,5 +176,6 @@ test_deferred_cmd get_test_defer called ctrl_handle_msg() returned 0 -deferred command apparently deallocated too soon +invoking ctrl_test_defer_cb() asynchronously +ctrl_test_defer_cb called success -- To view, visit https://gerrit.osmocom.org/7618 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: I24232be7dcf7be79f4def91ddc8b8f8005b56318 Gerrit-PatchSet: 3 Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder From gerrit-no-reply at lists.osmocom.org Thu Apr 5 13:51:09 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Thu, 5 Apr 2018 13:51:09 +0000 Subject: [MERGED] libosmocore[master]: ctrl: test deferred cmd, show current failure In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: ctrl: test deferred cmd, show current failure ...................................................................... ctrl: test deferred cmd, show current failure Handling a deferred command currently deallocates the struct ctrl_cmd upon exiting the initial command handling, while it should actually stay around for the asynchronous/deferred handling of the ctrl command. Show the current bug by means of a ctrl test. The test will be adjusted to expect the correct result when the bug is fixed in a subsequent commit (I24232be7dcf7be79f4def91ddc8b8f8005b56318). Change-Id: Ibbc847fc583bdd8e5e53a008258805e634ea12b4 --- M tests/ctrl/ctrl_test.c M tests/ctrl/ctrl_test.ok 2 files changed, 108 insertions(+), 0 deletions(-) Approvals: Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/tests/ctrl/ctrl_test.c b/tests/ctrl/ctrl_test.c index a38591f..f20f534 100644 --- a/tests/ctrl/ctrl_test.c +++ b/tests/ctrl/ctrl_test.c @@ -331,6 +331,106 @@ talloc_free(ctrl); } +CTRL_CMD_DEFINE(test_defer, "test-defer"); +static void ctrl_test_defer_cb(void *data) +{ + struct ctrl_cmd_def *cd = data; + struct ctrl_cmd *cmd = cd->cmd; + static int i = 0; + printf("%s called\n", __func__); + + if (ctrl_cmd_def_is_zombie(cd)) { + printf("Is Zombie\n"); + return; + } + + cmd->reply = talloc_asprintf(cmd, "Test Defer #%d", i++); + + ctrl_cmd_def_send(cd); + return; +} + +static struct ctrl_cmd_def *test_defer_cd = NULL; +static int get_test_defer(struct ctrl_cmd *cmd, void *data) +{ + void *ctx = cmd->node; + printf("%s called\n", __func__); + + test_defer_cd = ctrl_cmd_def_make(ctx, cmd, NULL, 10); + + return CTRL_CMD_HANDLED; +} +static int set_test_defer(struct ctrl_cmd *cmd, void *data) +{ + return CTRL_CMD_HANDLED; +} +static int verify_test_defer(struct ctrl_cmd *cmd, const char *value, void *data) +{ + return 0; +} + +static void test_deferred_cmd() +{ + struct ctrl_handle *ctrl; + struct ctrl_connection *ccon; + struct msgb *msg; + int result; + int ctx_size_was; + int ctx_size_before_defer; + + printf("\n%s\n", __func__); + ctx_size_was = talloc_total_size(ctx); + + ctrl = ctrl_handle_alloc2(ctx, NULL, NULL, 0); + ccon = talloc_zero(ctx, struct ctrl_connection); + INIT_LLIST_HEAD(&ccon->def_cmds); + + osmo_wqueue_init(&ccon->write_queue, 1); + + ctrl_cmd_install(CTRL_NODE_ROOT, &cmd_test_defer); + + ctx_size_before_defer = talloc_total_size(ctx); + + msg = msgb_from_string("GET 123 test-defer"); + + result = ctrl_handle_msg(ctrl, ccon, msg); + printf("ctrl_handle_msg() returned %d\n", result); + + OSMO_ASSERT(result == CTRL_CMD_HANDLED); + + /* Expecting a ctrl_cmd_def as well as the cmd to still be allocated */ + if (talloc_total_size(ctx) <= ctx_size_before_defer) { + printf("deferred command apparently deallocated too soon\n"); + /* ERROR -- showing current bug in handling deallocated cmds, hence exiting early */ + goto exit_early; + talloc_report_full(ctx, stdout); + OSMO_ASSERT(false); + } + + printf("invoking ctrl_test_defer_cb() asynchronously\n"); + ctrl_test_defer_cb(test_defer_cd); + + /* And now the deferred cmd should be cleaned up completely. */ + if (talloc_total_size(ctx) != ctx_size_before_defer) { + printf("mem leak!\n"); + talloc_report_full(ctx, stdout); + OSMO_ASSERT(false); + } + +exit_early: + + talloc_free(ccon); + talloc_free(ctrl); + + if (talloc_total_size(ctx) != ctx_size_was) { + printf("mem leak!\n"); + talloc_report_full(ctx, stdout); + OSMO_ASSERT(false); + } + + printf("success\n"); +} + static struct log_info_cat test_categories[] = { }; @@ -357,5 +457,7 @@ test_messages(); + test_deferred_cmd(); + return 0; } diff --git a/tests/ctrl/ctrl_test.ok b/tests/ctrl/ctrl_test.ok index 087ebbc..6a902be 100644 --- a/tests/ctrl/ctrl_test.ok +++ b/tests/ctrl/ctrl_test.ok @@ -172,3 +172,9 @@ reply = 'OK' handling: ok + +test_deferred_cmd +get_test_defer called +ctrl_handle_msg() returned 0 +deferred command apparently deallocated too soon +success -- To view, visit https://gerrit.osmocom.org/7636 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: Ibbc847fc583bdd8e5e53a008258805e634ea12b4 Gerrit-PatchSet: 2 Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder From gerrit-no-reply at lists.osmocom.org Thu Apr 5 13:51:09 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Thu, 5 Apr 2018 13:51:09 +0000 Subject: [MERGED] libosmocore[master]: cosmetic: flatten ctrl_handle_msg() In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: cosmetic: flatten ctrl_handle_msg() ...................................................................... cosmetic: flatten ctrl_handle_msg() Change-Id: I3a711f5c974b7f56e27b333d390d1a706fb57007 --- M src/ctrl/control_if.c 1 file changed, 19 insertions(+), 17 deletions(-) Approvals: Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/src/ctrl/control_if.c b/src/ctrl/control_if.c index df8abbc..cc613ee 100644 --- a/src/ctrl/control_if.c +++ b/src/ctrl/control_if.c @@ -365,6 +365,7 @@ struct ctrl_cmd *cmd; struct ipaccess_head *iph; struct ipaccess_head_ext *iph_ext; + int result; if (msg->len < sizeof(*iph) + sizeof(*iph_ext)) { LOGP(DLCTRL, LOGL_ERROR, "The message is too short.\n"); @@ -398,28 +399,29 @@ cmd->reply = "Command parser error."; } - if (cmd->type != CTRL_TYPE_ERROR) { - cmd->ccon = ccon; - if (ctrl_cmd_handle(ctrl, cmd, ctrl->data) == CTRL_CMD_HANDLED) { + /* In case of error, reply with the error message right away. */ + if (cmd->type == CTRL_TYPE_ERROR) + goto send_reply; - if (cmd->defer) { - /* The command is still stored as ctrl_cmd_def.cmd, in the def_cmds list. - * Just leave hanging for deferred handling. Reply will happen later. */ - return 0; - } + cmd->ccon = ccon; + result = ctrl_cmd_handle(ctrl, cmd, ctrl->data); - /* On CTRL_CMD_HANDLED, no reply needs to be sent back. */ - talloc_free(cmd); - cmd = NULL; - } + + if (cmd->defer) { + /* The command is still stored as ctrl_cmd_def.cmd, in the def_cmds list. + * Just leave hanging for deferred handling. Reply will happen later. */ + return 0; } - if (cmd) { - /* There is a reply or error that should be reported back to the sender. */ - ctrl_cmd_send(&ccon->write_queue, cmd); - talloc_free(cmd); - } + /* On CTRL_CMD_HANDLED, no reply needs to be sent back. */ + if (result == CTRL_CMD_HANDLED) + goto just_free; +send_reply: + /* There is a reply or error that should be reported back to the sender. */ + ctrl_cmd_send(&ccon->write_queue, cmd); +just_free: + talloc_free(cmd); return 0; } -- To view, visit https://gerrit.osmocom.org/7619 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: I3a711f5c974b7f56e27b333d390d1a706fb57007 Gerrit-PatchSet: 3 Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder From jenkins at lists.osmocom.org Thu Apr 5 13:56:03 2018 From: jenkins at lists.osmocom.org (jenkins at lists.osmocom.org) Date: Thu, 5 Apr 2018 13:56:03 +0000 (UTC) Subject: =?UTF-8?Q?Build_failed_in_Jenkins:_master-libosmocore_=C2=BB_a2=3Dd?= =?UTF-8?Q?efault,a3=3Ddefault,amd64,osmocom-master-debian9_#189?= Message-ID: <1381258592.30.1522936563745.JavaMail.jenkins@jenkins.osmocom.org> See Changes: [Neels Hofmeyr] ctrl: test deferred cmd, show current failure [Neels Hofmeyr] ctrl: fix deferred commands (and hence fix osmo-bts-sysmo 'clock-info' [Neels Hofmeyr] cosmetic: flatten ctrl_handle_msg() ------------------------------------------ [...truncated 521.40 KB...] Subject: [libosmocore 0.10.2.240-7c003] testsuite: 3 failed You may investigate any problem if you feel able to do so, in which case the test suite provides a good starting point. Its output may be found below `tests/testsuite.dir'. Makefile:1930: recipe for target 'check-local' failed make[4]: *** [check-local] Error 1 make[4]: Leaving directory ' Makefile:1699: recipe for target 'check-am' failed make[3]: *** [check-am] Error 2 make[3]: Leaving directory ' Makefile:1702: recipe for target 'check' failed make[2]: *** [check] Error 2 make[2]: Leaving directory ' Makefile:600: recipe for target 'check-recursive' failed make[1]: *** [check-recursive] Error 1 make[1]: Leaving directory ' Makefile:891: recipe for target 'check' failed make: *** [check] Error 2 + cat-testlogs.sh ======================== ./tests/testsuite.dir/03/testsuite.log # -*- compilation -*- 3. testsuite.at:18: testing ctrl ... :21: $abs_top_builddir/tests/ctrl/ctrl_test stderr: <0007> :375 GET with trailing characters: "i\nable" <0007> :375 GET with trailing characters: "i\nable" <0007> :366 GET variable contains invalid characters: "var\ti\table" <0007> :366 GET variable contains invalid characters: "var\ti\table" <0007> :366 GET variable contains invalid characters: "var\ri\rable" <0007> :366 GET variable contains invalid characters: "var\ri\rable" <0007> :375 GET with trailing characters: "value" <0007> :375 GET with trailing characters: "value" <0007> :375 GET with trailing characters: "value\n" <0007> :375 GET with trailing characters: "value\n" <0007> :375 GET with trailing characters: "multiple value tokens" <0007> :375 GET with trailing characters: "multiple value tokens" <0007> :375 GET with trailing characters: "multiple value tokens\n" <0007> :375 GET with trailing characters: "multiple value tokens\n" <0007> :345 Invalid message ID number: "weird_id" <0007> :345 Invalid message ID number: "weird_id" <0007> :345 Invalid message ID number: "weird_id" <0007> :345 Invalid message ID number: "weird_id" <0007> :345 Invalid message ID number: "\n" <0007> :345 Invalid message ID number: "\n" <0007> :345 Invalid message ID number: "\t" <0007> :345 Invalid message ID number: "\t"  ================================================================= ==31790==ERROR: LeakSanitizer: detected memory leaks Direct leak of 5584 byte(s) in 2 object(s) allocated from: #0 0x7f6ca7022d28 in malloc (/usr/lib/x86_64-linux-gnu/libasan.so.3+0xc1d28) #1 0x7f6ca69b6661 in talloc_named_const (/usr/lib/x86_64-linux-gnu/libtalloc.so.2+0x6661) SUMMARY: AddressSanitizer: 5584 byte(s) leaked in 2 allocation(s). --- expout 2018-04-05 13:55:58.887815636 +0000 +++ 2018-04-05 13:55:58.887815636 +0000 @@ -1,181 +0,0 @@ -Checking ctrl types... -ctrl type 0 is (unknown) -> 0 OK -ctrl type 1 is GET -> 1 OK -ctrl type 2 is SET -> 2 OK -ctrl type 3 is GET_REPLY -> 3 OK -ctrl type 4 is SET_REPLY -> 4 OK -ctrl type 5 is TRAP -> 5 OK -ctrl type 6 is ERROR -> 6 OK -ctrl type 64 is unknown 0x40 [PARSE FAILED] -test: 'GET 1 variable' -parsing: -id = '1' -variable = 'variable' -value = '(null)' -reply = '(null)' -handling: -replied: 'ERROR 1 Command not found' -ok -test: 'GET 1 variable\n' -parsing: -id = '1' -variable = 'variable' -value = '(null)' -reply = '(null)' -handling: -replied: 'ERROR 1 Command not found' -ok -test: 'GET 1 var\ni\nable' -parsing: -id = '1' -reply = 'GET with trailing characters' -handling: -replied: 'ERROR 1 GET with trailing characters' -ok -test: 'GET 1 var\ti\table' -parsing: -id = '1' -reply = 'GET variable contains invalid characters' -handling: -replied: 'ERROR 1 GET variable contains invalid characters' -ok -test: 'GET 1 var\ri\rable' -parsing: -id = '1' -reply = 'GET variable contains invalid characters' -handling: -replied: 'ERROR 1 GET variable contains invalid characters' -ok -test: 'GET 1 variable value' -parsing: -id = '1' -reply = 'GET with trailing characters' -handling: -replied: 'ERROR 1 GET with trailing characters' -ok -test: 'GET 1 variable value\n' -parsing: -id = '1' -reply = 'GET with trailing characters' -handling: -replied: 'ERROR 1 GET with trailing characters' -ok -test: 'GET 1 variable multiple value tokens' -parsing: -id = '1' -reply = 'GET with trailing characters' -handling: -replied: 'ERROR 1 GET with trailing characters' -ok -test: 'GET 1 variable multiple value tokens\n' -parsing: -id = '1' -reply = 'GET with trailing characters' -handling: -replied: 'ERROR 1 GET with trailing characters' -ok -test: 'SET 1 variable value' -parsing: -id = '1' -variable = 'variable' -value = 'value' -reply = '(null)' -handling: -replied: 'ERROR 1 Command not found' -ok -test: 'SET 1 variable value\n' -parsing: -id = '1' -variable = 'variable' -value = 'value' -reply = '(null)' -handling: -replied: 'ERROR 1 Command not found' -ok -test: 'SET weird_id variable value' -parsing: -id = 'err' -reply = 'Invalid message ID number' -handling: -replied: 'ERROR err Invalid message ID number' -ok -test: 'SET weird_id variable value\n' -parsing: -id = 'err' -reply = 'Invalid message ID number' -handling: -replied: 'ERROR err Invalid message ID number' -ok -test: 'SET 1 variable multiple value tokens' -parsing: -id = '1' -variable = 'variable' -value = 'multiple value tokens' -reply = '(null)' -handling: -replied: 'ERROR 1 Command not found' -ok -test: 'SET 1 variable multiple value tokens\n' -parsing: -id = '1' -variable = 'variable' -value = 'multiple value tokens' -reply = '(null)' -handling: -replied: 'ERROR 1 Command not found' -ok -test: 'SET 1 variable value_with_trailing_spaces ' -parsing: -id = '1' -variable = 'variable' -value = 'value_with_trailing_spaces ' -reply = '(null)' -handling: -replied: 'ERROR 1 Command not found' -ok -test: 'SET 1 variable value_with_trailing_spaces \n' -parsing: -id = '1' -variable = 'variable' -value = 'value_with_trailing_spaces ' -reply = '(null)' -handling: -replied: 'ERROR 1 Command not found' -ok -test: 'SET \n special_char_id value' -parsing: -id = 'err' -reply = 'Invalid message ID number' -handling: -replied: 'ERROR err Invalid message ID number' -ok -test: 'SET \t special_char_id value' -parsing: -id = 'err' -reply = 'Invalid message ID number' -handling: -replied: 'ERROR err Invalid message ID number' -ok -test: 'GET_REPLY 1 variable OK' -parsing: -id = '1' -variable = 'variable' -value = '(null)' -reply = 'OK' -handling: -ok -test: 'SET_REPLY 1 variable OK' -parsing: -id = '1' -variable = 'variable' -value = '(null)' -reply = 'OK' -handling: -ok - -test_deferred_cmd -get_test_defer called -ctrl_handle_msg() returned 0 -invoking ctrl_test_defer_cb() asynchronously -ctrl_test_defer_cb called -success :21: exit code was 1, expected 0 3. testsuite.at:18: 3. ctrl (testsuite.at:18): FAILED (testsuite.at:21) Build step 'Execute shell' marked build as failure [WARNINGS]Skipping publisher since build result is FAILURE From gerrit-no-reply at lists.osmocom.org Thu Apr 5 14:41:47 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Thu, 5 Apr 2018 14:41:47 +0000 Subject: [PATCH] osmo-ttcn3-hacks[master]: bts: Add first two tests about IPA style dynamic PDCH Message-ID: Review at https://gerrit.osmocom.org/7644 bts: Add first two tests about IPA style dynamic PDCH Change-Id: I56d8b0284e8e4eee4ce6454f7a495ee09c40fe42 --- M bts/BTS_Tests.ttcn 1 file changed, 112 insertions(+), 1 deletion(-) git pull ssh://gerrit.osmocom.org:29418/osmo-ttcn3-hacks refs/changes/44/7644/1 diff --git a/bts/BTS_Tests.ttcn b/bts/BTS_Tests.ttcn index 5316696..d91ed92 100644 --- a/bts/BTS_Tests.ttcn +++ b/bts/BTS_Tests.ttcn @@ -2635,7 +2635,7 @@ } /*********************************************************************** - * Dynamic Timeslot Support + * Osmocom Style Dynamic Timeslot Support ***********************************************************************/ private function f_dyn_osmo_pdch_act(integer pcu_conn_id, integer bts_nr, integer trx_nr) @@ -2817,6 +2817,115 @@ vc_conn.done; } +/*********************************************************************** + * IPA Style Dynamic Timeslot Support + ***********************************************************************/ + +private function f_dyn_ipa_pdch_act(integer pcu_conn_id, integer bts_nr, integer trx_nr) +runs on ConnHdlr { + var PCUIF_send_data sd; + /* Expect BTS to immediately acknowledge activation as PDCH */ + PCU.clear; + RSL.send(ts_RSL_IPA_PDCH_ACT(g_chan_nr)); + /* expect INFO_IND on PCU interface listing TS as PDCH */ + alt { + [] PCU.receive(t_SD_PCUIF(pcu_conn_id, tr_PCUIF_INFO_IND(bts_nr, ?))) -> value sd { + if (substr(sd.data.u.info_ind.trx[trx_nr].pdch_mask, g_chan_nr.tn, 1) != '1'B) { + setverdict(fail, "PCUIF_INFO_IND PDCH_MASK not '1' after PDCH ACT"); + self.stop; + } + } + [] PCU.receive { repeat; } + } + /* try to activate this PDCH from the PCU point of view */ + PCU.send(t_SD_PCUIF(pcu_conn_id, ts_PCUIF_ACT_REQ(bts_nr, trx_nr, g_chan_nr.tn))); + /* FIXME: is there a response? */ + + RSL.receive(tr_RSL_IPA_PDCH_ACT_ACK(g_chan_nr, ?)); +} + +private function f_dyn_ipa_pdch_deact(integer pcu_conn_id, integer bts_nr, integer trx_nr) +runs on ConnHdlr { + var PCUIF_send_data sd; + /* Send RSL CHAN REL (deactivate) */ + RSL.send(ts_RSL_IPA_PDCH_DEACT(g_chan_nr)); + PCU.clear; + /* expect BTS to ask PCU to deactivate the channel */ + alt { + [] PCU.receive(t_SD_PCUIF(pcu_conn_id, tr_PCUIF_INFO_IND(bts_nr, ?))) -> value sd { + if (substr(sd.data.u.info_ind.trx[trx_nr].pdch_mask, g_chan_nr.tn, 1) != '0'B) { + setverdict(fail, "PCUIF_INFO_IND PDCH_MASK not '0' after PDCH DEACT"); + self.stop; + } + } + [] PCU.receive { repeat; } + } + /* Emulate PCU asking BTS to deactivate PDCH */ + PCU.send(t_SD_PCUIF(pcu_conn_id, ts_PCUIF_DEACT_REQ(bts_nr, trx_nr, g_chan_nr.tn))); + alt { + [] RSL.receive(tr_RSL_IPA_PDCH_DEACT_ACK(g_chan_nr)) { + setverdict(pass); + } + [] RSL.receive { repeat; } + } +} + +/* Activate and de-activate an IPA-style dynamic TCH/F + PDCH */ +function f_TC_dyn_ipa_pdch_act_deact(charstring id) runs on ConnHdlr { + var PCUIF_Message first_info; + var integer ts_nr := g_chan_nr.tn; + var integer trx_nr := 0; + var integer bts_nr := 0; + var integer pcu_conn_id := -1; + + f_init_pcu(PCU, id, pcu_conn_id, first_info); + + f_dyn_ipa_pdch_act(pcu_conn_id, bts_nr, trx_nr); + f_sleep(3.0); + f_dyn_ipa_pdch_deact(pcu_conn_id, bts_nr, trx_nr); + + setverdict(pass); + +} +testcase TC_dyn_ipa_pdch_act_deact() runs on test_CT { + var ConnHdlrPars pars; + var ConnHdlr vc_conn; + f_init(); + + pars := valueof(t_Pars(t_RslChanNr_Bm(3), ts_RSL_ChanMode_SIGN)); + vc_conn := f_start_handler(refers(f_TC_dyn_ipa_pdch_act_deact), pars, true); + vc_conn.done; +} + +/* try to RSL CHAN ACT a TCH/F on an IPA-style PDCH */ +function f_TC_dyn_ipa_pdch_tchf_act(charstring id) runs on ConnHdlr { + var PCUIF_Message first_info; + var integer ts_nr := g_chan_nr.tn; + var integer trx_nr := 0; + var integer bts_nr := 0; + var integer pcu_conn_id := -1; + var RslChannelNr chan_nr := valueof(t_RslChanNr_Bm(g_chan_nr.tn)); + + /* register for the TCH/F channel number */ + f_rslem_register(0, chan_nr); + + f_init_pcu(PCU, id, pcu_conn_id, first_info); + + f_rsl_transceive(ts_RSL_CHAN_ACT(chan_nr, g_pars.chan_mode), tr_RSL_CHAN_ACT_ACK(chan_nr), + "RSL CHAN ACT"); + setverdict(pass); +} +testcase TC_dyn_ipa_pdch_tchf_act() runs on test_CT { + var ConnHdlrPars pars; + var ConnHdlr vc_conn; + f_init(testcasename()); + + pars := valueof(t_Pars(t_RslChanNr_PDCH(3), ts_RSL_ChanMode_SIGN)); + vc_conn := f_start_handler(refers(f_TC_dyn_ipa_pdch_tchf_act), pars, true); + vc_conn.done; +} + + /* TODO Areas: @@ -2915,6 +3024,8 @@ execute( TC_dyn_osmo_pdch_double_act() ); execute( TC_dyn_osmo_pdch_tchf_act() ); execute( TC_dyn_osmo_pdch_tchh_act() ); + execute( TC_dyn_ipa_pdch_act_deact() ); + execute( TC_dyn_ipa_pdch_tchf_act() ); } -- To view, visit https://gerrit.osmocom.org/7644 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I56d8b0284e8e4eee4ce6454f7a495ee09c40fe42 Gerrit-PatchSet: 1 Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Owner: Harald Welte From gerrit-no-reply at lists.osmocom.org Thu Apr 5 15:08:38 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Thu, 5 Apr 2018 15:08:38 +0000 Subject: [PATCH] libosmocore[master]: socket.c: osmo_sock_init2: Several logic fixes and log impro... Message-ID: Review at https://gerrit.osmocom.org/7645 socket.c: osmo_sock_init2: Several logic fixes and log improvements After investigating osmo-msc showing this log message and looking at the code, it's a bit difficult to find out what's going on in the code: socket.c:224 unable to bind socket: (null):0: Protocol not supported The root cause was not yet found, but probably SCTP is not enabled in the kernel of the host running it. The cod eis most probably failing during socket() and not due to bind error as the log says, so let's print an error if socket() fails. Then, if setsockopt fails, we want to still keep trying in case an extra addr was offered by addrinfo_helper. It is definetly wrong to continue if setsockopt fails, because then we are skipping the bind(), which is a fundamental part of what osmo_sock_init2 does. Then, let's print the bind error when it really happens, and re-write the extra log at the end if we reach the point at which no suitable addr is found. Change-Id: I1854422ad92dadf33ed4d849e15c0380c3bf1626 --- M src/socket.c 1 file changed, 15 insertions(+), 7 deletions(-) git pull ssh://gerrit.osmocom.org:29418/libosmocore refs/changes/45/7645/1 diff --git a/src/socket.c b/src/socket.c index 0378970..60369b1 100644 --- a/src/socket.c +++ b/src/socket.c @@ -91,8 +91,11 @@ int sfd, on = 1; sfd = socket(rp->ai_family, rp->ai_socktype, rp->ai_protocol); - if (sfd == -1) + if (sfd == -1) { + LOGP(DLGLOBAL, LOGL_ERROR, + "unable to create socket: %s\n", strerror(errno)); return sfd; + } if (flags & OSMO_SOCK_F_NONBLOCK) { if (ioctl(sfd, FIONBIO, (unsigned char *)&on) < 0) { LOGP(DLGLOBAL, LOGL_ERROR, @@ -212,16 +215,21 @@ "cannot setsockopt socket:" " %s:%u: %s\n", local_host, local_port, strerror(errno)); - break; + close(sfd); + continue; } - if (bind(sfd, rp->ai_addr, rp->ai_addrlen) != -1) - break; - close(sfd); + if (bind(sfd, rp->ai_addr, rp->ai_addrlen) == -1) { + LOGP(DLGLOBAL, LOGL_ERROR, "unable to bind socket: %s:%u: %s\n", + local_host, local_port, strerror(errno)); + close(sfd); + continue; + } + break; } freeaddrinfo(result); if (rp == NULL) { - LOGP(DLGLOBAL, LOGL_ERROR, "unable to bind socket: %s:%u: %s\n", - local_host, local_port, strerror(errno)); + LOGP(DLGLOBAL, LOGL_ERROR, "no suitable addr found for: %s:%u\n", + local_host, local_port); return -ENODEV; } } -- To view, visit https://gerrit.osmocom.org/7645 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I1854422ad92dadf33ed4d849e15c0380c3bf1626 Gerrit-PatchSet: 1 Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol From jenkins at lists.osmocom.org Thu Apr 5 15:10:06 2018 From: jenkins at lists.osmocom.org (jenkins at lists.osmocom.org) Date: Thu, 5 Apr 2018 15:10:06 +0000 (UTC) Subject: =?UTF-8?Q?Build_failed_in_Jenkins:_master-asn1c_=C2=BB_a1=3Ddefaul?= =?UTF-8?Q?t,a2=3Ddefault,a3=3Ddefault,osmocom-master-debian9_#78?= In-Reply-To: <867567398.17.1522854606573.JavaMail.jenkins@jenkins.osmocom.org> References: <867567398.17.1522854606573.JavaMail.jenkins@jenkins.osmocom.org> Message-ID: <441192822.31.1522941006500.JavaMail.jenkins@jenkins.osmocom.org> See ------------------------------------------ [...truncated 3.69 KB...] + ./configure checking build system type... x86_64-unknown-linux-gnu checking host system type... x86_64-unknown-linux-gnu checking target system type... x86_64-unknown-linux-gnu checking for a BSD-compatible install... /usr/bin/install -c checking whether build environment is sane... yes checking for gawk... gawk checking whether make sets $(MAKE)... yes checking whether to enable maintainer-specific portions of Makefiles... no checking for style of include used by make... GNU checking for gcc... gcc checking for C compiler default output file name... a.out checking whether the C compiler works... yes checking whether we are cross compiling... no checking for suffix of executables... checking for suffix of object files... o checking whether we are using the GNU C compiler... yes checking whether gcc accepts -g... yes checking for gcc option to accept ISO C89... none needed checking dependency style of gcc... gcc3 checking for a sed that does not truncate output... /bin/sed checking for grep that handles long lines and -e... /bin/grep checking for egrep... /bin/grep -E checking for ld used by gcc... /usr/bin/ld checking if the linker (/usr/bin/ld) is GNU ld... yes checking for /usr/bin/ld option to reload object files... -r checking for BSD-compatible nm... /usr/bin/nm -B checking whether ln -s works... yes checking how to recognise dependent libraries... pass_all checking how to run the C preprocessor... gcc -E checking for ANSI C header files... yes checking for sys/types.h... yes checking for sys/stat.h... yes checking for stdlib.h... yes checking for string.h... yes checking for memory.h... yes checking for strings.h... yes checking for inttypes.h... yes checking for stdint.h... yes checking for unistd.h... yes checking dlfcn.h usability... yes checking dlfcn.h presence... yes checking for dlfcn.h... yes checking for g++... g++ checking whether we are using the GNU C++ compiler... yes checking whether g++ accepts -g... yes checking dependency style of g++... gcc3 checking how to run the C++ preprocessor... g++ -E checking for g77... no checking for f77... no checking for xlf... no checking for frt... no checking for pgf77... no checking for cf77... no checking for fort77... no checking for fl32... no checking for af77... no checking for f90... no checking for xlf90... no checking for pgf90... no checking for pghpf... no checking for epcf90... no checking for gfortran... no checking for g95... no checking for f95... no checking for fort... no checking for xlf95... no checking for ifort... no checking for ifc... no checking for efc... no checking for pgf95... no checking for lf95... no checking for ftn... no checking whether we are using the GNU Fortran 77 compiler... no checking whether accepts -g... no checking the maximum length of command line arguments... 32768 checking command to parse /usr/bin/nm -B output from gcc object... ok checking for objdir... .libs checking for ar... ar checking for ranlib... ranlib checking for strip... strip checking if gcc supports -fno-rtti -fno-exceptions... no checking for gcc option to produce PIC... -fPIC checking if gcc PIC flag -fPIC works... yes checking if gcc static flag -static works... yes checking if gcc supports -c -o file.o... yes checking whether the gcc linker (/usr/bin/ld -m elf_x86_64) supports shared libraries... yes checking whether -lc should be explicitly linked in... no checking dynamic linker characteristics... GNU/Linux ld.so checking how to hardcode library paths into programs... immediate checking whether stripping libraries is possible... yes checking if libtool supports shared libraries... yes checking whether to build shared libraries... yes checking whether to build static libraries... yes configure: creating libtool appending configuration tag "CXX" to libtool checking for ld used by g++... /usr/bin/ld -m elf_x86_64 checking if the linker (/usr/bin/ld -m elf_x86_64) is GNU ld... yes checking whether the g++ linker (/usr/bin/ld -m elf_x86_64) supports shared libraries... yes checking for g++ option to produce PIC... -fPIC checking if g++ PIC flag -fPIC works... yes checking if g++ static flag -static works... yes checking if g++ supports -c -o file.o... yes checking whether the g++ linker (/usr/bin/ld -m elf_x86_64) supports shared libraries... yes checking dynamic linker characteristics... GNU/Linux ld.so checking how to hardcode library paths into programs... immediate appending configuration tag "F77" to libtool checking for autoconf... /usr/bin/autoconf checking for autoheader... /usr/bin/autoheader checking for gcc... (cached) gcc checking whether we are using the GNU C compiler... (cached) yes checking whether gcc accepts -g... (cached) yes checking for gcc option to accept ISO C89... (cached) none needed checking dependency style of gcc... (cached) gcc3 checking how to run the C preprocessor... gcc -E checking for a BSD-compatible install... /usr/bin/install -c checking whether ln -s works... yes checking whether make sets $(MAKE)... (cached) yes checking for bison... bison -y checking for flex... flex checking for yywrap in -lfl... yes checking lex output file root... lex.yy checking whether yytext is a pointer... yes checking for ar... /usr/bin/ar checking for ANSI C header files... (cached) yes checking sys/param.h usability... yes checking sys/param.h presence... yes checking for sys/param.h... yes checking whether byte ordering is bigendian... no checking for off_t... yes checking for size_t... yes checking whether struct tm is in sys/time.h or time.h... time.h checking for intmax_t... yes checking for library containing getopt... none required checking for strtoimax... yes checking for strtoll... yes checking for mergesort... no checking for mkstemps... yes configure: creating ./config.status config.status: creating skeletons/standard-modules/Makefile config.status: creating skeletons/tests/Makefile config.status: creating libasn1compiler/Makefile config.status: creating libasn1parser/Makefile config.status: creating libasn1print/Makefile config.status: creating asn1c/webcgi/Makefile config.status: creating asn1c/tests/Makefile config.status: creating libasn1fix/Makefile config.status: creating skeletons/Makefile config.status: creating examples/Makefile config.status: creating tests/Makefile config.status: creating asn1c/Makefile config.status: creating doc/Makefile config.status: creating asn1c.spec config.status: creating Makefile config.status: creating config.h config.status: executing depfiles commands + make -j 8 make all-recursive make[1]: Entering directory ' Making all in libasn1parser make[2]: Entering directory ' if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1parser.lo -MD -MP -MF ".deps/asn1parser.Tpo" -c -o asn1parser.lo asn1parser.c; \ then mv -f ".deps/asn1parser.Tpo" ".deps/asn1parser.Plo"; else rm -f ".deps/asn1parser.Tpo"; exit 1; fi bison -y -p asn1p_ -d asn1p_y.y if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_l.lo -MD -MP -MF ".deps/asn1p_l.Tpo" -c -o asn1p_l.lo asn1p_l.c; \ then mv -f ".deps/asn1p_l.Tpo" ".deps/asn1p_l.Plo"; else rm -f ".deps/asn1p_l.Tpo"; exit 1; fi if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_module.lo -MD -MP -MF ".deps/asn1p_module.Tpo" -c -o asn1p_module.lo asn1p_module.c; \ then mv -f ".deps/asn1p_module.Tpo" ".deps/asn1p_module.Plo"; else rm -f ".deps/asn1p_module.Tpo"; exit 1; fi if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_oid.lo -MD -MP -MF ".deps/asn1p_oid.Tpo" -c -o asn1p_oid.lo asn1p_oid.c; \ then mv -f ".deps/asn1p_oid.Tpo" ".deps/asn1p_oid.Plo"; else rm -f ".deps/asn1p_oid.Tpo"; exit 1; fi if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_value.lo -MD -MP -MF ".deps/asn1p_value.Tpo" -c -o asn1p_value.lo asn1p_value.c; \ then mv -f ".deps/asn1p_value.Tpo" ".deps/asn1p_value.Plo"; else rm -f ".deps/asn1p_value.Tpo"; exit 1; fi if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_expr.lo -MD -MP -MF ".deps/asn1p_expr.Tpo" -c -o asn1p_expr.lo asn1p_expr.c; \ then mv -f ".deps/asn1p_expr.Tpo" ".deps/asn1p_expr.Plo"; else rm -f ".deps/asn1p_expr.Tpo"; exit 1; fi if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_xports.lo -MD -MP -MF ".deps/asn1p_xports.Tpo" -c -o asn1p_xports.lo asn1p_xports.c; \ then mv -f ".deps/asn1p_xports.Tpo" ".deps/asn1p_xports.Plo"; else rm -f ".deps/asn1p_xports.Tpo"; exit 1; fi asn1p_y.y: warning: 2 shift/reduce conflicts [-Wconflicts-sr] mkdir .libs gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1parser.lo -MD -MP -MF .deps/asn1parser.Tpo -c asn1parser.c -fPIC -DPIC -o .libs/asn1parser.o gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_oid.lo -MD -MP -MF .deps/asn1p_oid.Tpo -c asn1p_oid.c -fPIC -DPIC -o .libs/asn1p_oid.o gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_module.lo -MD -MP -MF .deps/asn1p_module.Tpo -c asn1p_module.c -fPIC -DPIC -o .libs/asn1p_module.o gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_expr.lo -MD -MP -MF .deps/asn1p_expr.Tpo -c asn1p_expr.c -fPIC -DPIC -o .libs/asn1p_expr.o gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_value.lo -MD -MP -MF .deps/asn1p_value.Tpo -c asn1p_value.c -fPIC -DPIC -o .libs/asn1p_value.o gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_l.lo -MD -MP -MF .deps/asn1p_l.Tpo -c asn1p_l.c -fPIC -DPIC -o .libs/asn1p_l.o gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_xports.lo -MD -MP -MF .deps/asn1p_xports.Tpo -c asn1p_xports.c -fPIC -DPIC -o .libs/asn1p_xports.o gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_xports.lo -MD -MP -MF .deps/asn1p_xports.Tpo -c asn1p_xports.c -o asn1p_xports.o >/dev/null 2>&1 asn1p_l.c:3521:12: warning: 'input' defined but not used [-Wunused-function] static int input() ^~~~~ gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_module.lo -MD -MP -MF .deps/asn1p_module.Tpo -c asn1p_module.c -o asn1p_module.o >/dev/null 2>&1 gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1parser.lo -MD -MP -MF .deps/asn1parser.Tpo -c asn1parser.c -o asn1parser.o >/dev/null 2>&1 gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_oid.lo -MD -MP -MF .deps/asn1p_oid.Tpo -c asn1p_oid.c -o asn1p_oid.o >/dev/null 2>&1 gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_value.lo -MD -MP -MF .deps/asn1p_value.Tpo -c asn1p_value.c -o asn1p_value.o >/dev/null 2>&1 if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_constr.lo -MD -MP -MF ".deps/asn1p_constr.Tpo" -c -o asn1p_constr.lo asn1p_constr.c; \ then mv -f ".deps/asn1p_constr.Tpo" ".deps/asn1p_constr.Plo"; else rm -f ".deps/asn1p_constr.Tpo"; exit 1; fi gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_expr.lo -MD -MP -MF .deps/asn1p_expr.Tpo -c asn1p_expr.c -o asn1p_expr.o >/dev/null 2>&1 if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_param.lo -MD -MP -MF ".deps/asn1p_param.Tpo" -c -o asn1p_param.lo asn1p_param.c; \ then mv -f ".deps/asn1p_param.Tpo" ".deps/asn1p_param.Plo"; else rm -f ".deps/asn1p_param.Tpo"; exit 1; fi if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_class.lo -MD -MP -MF ".deps/asn1p_class.Tpo" -c -o asn1p_class.lo asn1p_class.c; \ then mv -f ".deps/asn1p_class.Tpo" ".deps/asn1p_class.Plo"; else rm -f ".deps/asn1p_class.Tpo"; exit 1; fi if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_ref.lo -MD -MP -MF ".deps/asn1p_ref.Tpo" -c -o asn1p_ref.lo asn1p_ref.c; \ then mv -f ".deps/asn1p_ref.Tpo" ".deps/asn1p_ref.Plo"; else rm -f ".deps/asn1p_ref.Tpo"; exit 1; fi gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_constr.lo -MD -MP -MF .deps/asn1p_constr.Tpo -c asn1p_constr.c -fPIC -DPIC -o .libs/asn1p_constr.o gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_param.lo -MD -MP -MF .deps/asn1p_param.Tpo -c asn1p_param.c -fPIC -DPIC -o .libs/asn1p_param.o gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_class.lo -MD -MP -MF .deps/asn1p_class.Tpo -c asn1p_class.c -fPIC -DPIC -o .libs/asn1p_class.o if test -f y.tab.h; then \ to=`echo "asn1p_y_H" | sed \ -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/' \ -e 's/[^ABCDEFGHIJKLMNOPQRSTUVWXYZ]/_/g'`; \ sed -e "/^#/!b" -e "s/Y_TAB_H/$to/g" -e "s|y\.tab\.h|asn1p_y.h|" \ y.tab.h >asn1p_y.ht; \ rm -f y.tab.h; \ if cmp -s asn1p_y.ht asn1p_y.h; then \ rm -f asn1p_y.ht ;\ else \ mv asn1p_y.ht asn1p_y.h; \ fi; \ fi if test -f y.output; then \ mv y.output asn1p_y.output; \ fi sed '/^#/ s|y\.tab\.c|asn1p_y.c|' y.tab.c >asn1p_y.ct && mv asn1p_y.ct asn1p_y.c gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_ref.lo -MD -MP -MF .deps/asn1p_ref.Tpo -c asn1p_ref.c -fPIC -DPIC -o .libs/asn1p_ref.o rm -f y.tab.c if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_y.lo -MD -MP -MF ".deps/asn1p_y.Tpo" -c -o asn1p_y.lo asn1p_y.c; \ then mv -f ".deps/asn1p_y.Tpo" ".deps/asn1p_y.Plo"; else rm -f ".deps/asn1p_y.Tpo"; exit 1; fi gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_constr.lo -MD -MP -MF .deps/asn1p_constr.Tpo -c asn1p_constr.c -o asn1p_constr.o >/dev/null 2>&1 gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_param.lo -MD -MP -MF .deps/asn1p_param.Tpo -c asn1p_param.c -o asn1p_param.o >/dev/null 2>&1 gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_class.lo -MD -MP -MF .deps/asn1p_class.Tpo -c asn1p_class.c -o asn1p_class.o >/dev/null 2>&1 gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_ref.lo -MD -MP -MF .deps/asn1p_ref.Tpo -c asn1p_ref.c -o asn1p_ref.o >/dev/null 2>&1 gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_y.lo -MD -MP -MF .deps/asn1p_y.Tpo -c asn1p_y.c -fPIC -DPIC -o .libs/asn1p_y.o asn1p_y.y: In function 'asn1p_parse': asn1p_y.y:357:13: error: 'param' undeclared (first use in this function) *(void **)param = $1; ^~~~~ asn1p_y.y:357:13: note: each undeclared identifier is reported only once for each function it appears in gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_l.lo -MD -MP -MF .deps/asn1p_l.Tpo -c asn1p_l.c -o asn1p_l.o >/dev/null 2>&1 Makefile:299: recipe for target 'asn1p_y.lo' failed make[2]: *** [asn1p_y.lo] Error 1 make[2]: *** Waiting for unfinished jobs.... make[2]: Leaving directory ' Makefile:302: recipe for target 'all-recursive' failed make[1]: *** [all-recursive] Error 1 make[1]: Leaving directory ' Makefile:212: recipe for target 'all' failed make: *** [all] Error 2 Build step 'Execute shell' marked build as failure [WARNINGS]Skipping publisher since build result is FAILURE From gerrit-no-reply at lists.osmocom.org Thu Apr 5 15:12:04 2018 From: gerrit-no-reply at lists.osmocom.org (Holger Freyther) Date: Thu, 5 Apr 2018 15:12:04 +0000 Subject: [MERGED] osmo-gsm-tester[master]: ms: Create a cumulative distribution function class In-Reply-To: References: Message-ID: Holger Freyther has submitted this change and it was merged. Change subject: ms: Create a cumulative distribution function class ...................................................................... ms: Create a cumulative distribution function class We are using the CDF to decide which percentage of the jobs should be running at a given point. The x-axis is time and the y-axis the percentage of how many jobs should be running. There are three functions to do this. The first one is a constant which would result in everything being started right now, one to start them linearly and the last (formula from Qt/3rdparty) to first accelerate and decelerate slowly. Change-Id: I9e3064f4c3c4c7af5d3491f850090516e541f4d3 --- A selftest/cdf_test.ok A selftest/cdf_test.py A src/osmo_ms_driver/__init__.py A src/osmo_ms_driver/cdf.py 4 files changed, 259 insertions(+), 0 deletions(-) Approvals: Pau Espin Pedrol: Looks good to me, approved Jenkins Builder: Verified diff --git a/selftest/cdf_test.ok b/selftest/cdf_test.ok new file mode 100644 index 0000000..aa753e4 --- /dev/null +++ b/selftest/cdf_test.ok @@ -0,0 +1,57 @@ +Testing the immediate CDF +Done True +1 1.0 False +Testing linear with duration +Done False +0.0 0.0 True +Done False +0.2 0.2 True +Done False +0.4 0.4 True +Done False +0.6 0.6 True +Done False +0.8 0.8 True +Done True +1.0 1.0 True +Testing linear with duration scaled +Done False +0.0 0.0 True +0.0 0.0 True +Done False +0.2 0.2 True +200 200 True +Done False +0.4 0.4 True +400 400 True +Done False +0.6 0.6 True +600 600 True +Done False +0.8 0.8 True +800 800 True +Done True +1.0 1.0 True +100 100 True +Testing in_out +0.5 0.5 True +0.87 0.87 True +0.9 0.9 True +0.95 0.95 True +1.0 1.0 True +Testing ease In and Out +Done False +0.0 0.0 True +0.0 0.0 True +Done False +5.0 5.0 True +0.1 0.1 True +Done False +10.0 10.0 True +0.5 0.5 True +Done False +15.0 15.0 True +0.8 0.8 True +Done True +20.0 20 True +1.0 1.0 True diff --git a/selftest/cdf_test.py b/selftest/cdf_test.py new file mode 100755 index 0000000..8d837c1 --- /dev/null +++ b/selftest/cdf_test.py @@ -0,0 +1,75 @@ +#!/usr/bin/env python3 + +import _prep + +from osmo_ms_driver import cdf +from datetime import timedelta + +def print_fuzzy_compare(want, expe, len=3): + want_str = str(want)[0:len] + expe_str = str(expe)[0:len] + print(want_str, expe_str, want_str == expe_str) + + +def check_steps(a, steps, fun): + print("Done", a.is_done()) + for step in steps: + # Verify we can step + + # Compare and step once + fun(a, step) + if a.is_done(): + break + a.step_once() + print("Done", a.is_done()) + +def compare_value(a, step): + print_fuzzy_compare(a.current_value(), step) + +def compare_scaled_value(a, val): + (step, scale) = val + print_fuzzy_compare(a.current_value(), step) + print_fuzzy_compare(a.current_scaled_value(), scale) + +def compare_x_value(a, val): + (x, step) = val + print(a._x, x, x == a._x) + print_fuzzy_compare(a.current_value(), step) + +def testImmediate(): + print("Testing the immediate CDF") + a = cdf.immediate() + print("Done", a.is_done()) + print_fuzzy_compare(a.current_value(), 1.0) + + +def testLinearWithDuration(): + print("Testing linear with duration") + a = cdf.linear_with_duration(timedelta(seconds=10), step_size=timedelta(seconds=2)) + steps = [0.0, 0.2, 0.4, 0.6, 0.8, 1.0] + check_steps(a, steps, compare_value) + + print("Testing linear with duration scaled") + a = cdf.linear_with_duration(timedelta(seconds=10), step_size=timedelta(seconds=2)) + a.set_target(1000) + steps = [(0.0, 0.0), (0.2, 200), (0.4, 400), (0.6, 600), (0.8, 800), (1.0, 10000)] + check_steps(a, steps, compare_scaled_value) + +def testInOut(): + print("Testing in_out") + print_fuzzy_compare(cdf._in_out(0.5), 0.5, 3) + print_fuzzy_compare(cdf._in_out(0.75), 0.875, 4) + print_fuzzy_compare(cdf._in_out(0.8), 0.92, 3) + print_fuzzy_compare(cdf._in_out(0.85), 0.955, 4) + print_fuzzy_compare(cdf._in_out(1.0), 1.0, 3) + +def testEaseInOutDuration(): + print("Testing ease In and Out") + a = cdf.ease_in_out_duration(duration=timedelta(seconds=20), step_size=timedelta(seconds=5)) + steps = [(0.0, 0.0), (5.0, 0.125), (10.0, 0.5), (15.0, 0.875), (20, 1.0)] + check_steps(a, steps, compare_x_value) + +testImmediate() +testLinearWithDuration() +testInOut() +testEaseInOutDuration() diff --git a/src/osmo_ms_driver/__init__.py b/src/osmo_ms_driver/__init__.py new file mode 100644 index 0000000..0c7b4b9 --- /dev/null +++ b/src/osmo_ms_driver/__init__.py @@ -0,0 +1,22 @@ +# osmo_ms_driver: automated cellular network tests +# +# Copyright (C) 2018 by sysmocom - s.f.m.c. GmbH +# +# Authors: Holger Hans Peter Freyther +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +from osmo_gsm_tester import __version__ + +# vim: expandtab tabstop=4 shiftwidth=4 diff --git a/src/osmo_ms_driver/cdf.py b/src/osmo_ms_driver/cdf.py new file mode 100644 index 0000000..781349b --- /dev/null +++ b/src/osmo_ms_driver/cdf.py @@ -0,0 +1,105 @@ +# osmo_ms_driver: A cumululative distribution function class. +# Help to start processes over time. +# +# Copyright (C) 2018 by Holger Hans Peter Freyther +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + + +from datetime import timedelta + +class DistributionFunctionHandler(object): + """ + The goal is to start n "mobile" processes. We like to see some + conflicts (RACH bursts being ignored) but starting n processes + at the same time is not a realistic model. + We use the concept of cumulative distribution function here. On + the x-axis we have time (maybe in steps of 10ms) and on the + y-axis we have the percentage (from 0.0 to 1.0) of how many + processes should run at the given time. + """ + + def __init__(self, step, duration, fun): + self._step = step + self._fun = fun + self._x = 0.0 + self._y = self._fun(self._x) + self._target = 1.0 + self._duration = duration + + def step_size(self): + return self._step + + def set_target(self, scale): + """ + Scale the percentage to the target value.. + """ + self._target = scale + + def is_done(self): + return self._y >= 1.0 + + def current_value(self): + return self._y + + def current_scaled_value(self): + return self._y * self._target + + def step_once(self): + self._x = self._x + self._step.total_seconds() + self._y = self._fun(self._x) + + def duration(self): + return self._duration + + +def immediate(step_size=timedelta(milliseconds=20)): + """ + Reaches 100% at the first step. + """ + duration = timedelta(seconds=0) + return DistributionFunctionHandler(step_size, duration, lambda x: 1) + +def linear_with_slope(slope, duration, step_size=timedelta(milliseconds=20)): + """ + Use the slope and step size you want + """ + return DistributionFunctionHandler(step_size, duration, lambda x: slope*x) + +def linear_with_duration(duration, step_size=timedelta(milliseconds=20)): + """ + Linear progression that reaches 100% after duration.total_seconds() + """ + slope = 1.0/duration.total_seconds() + return linear_with_slope(slope, duration, step_size) + +def _in_out(x): + """ + Internal in/out function inspired by Qt + """ + assert x <= 1.0 + # Needs to be between 0..1 and increase first + if x < 0.5: + return (x*x) * 2 + # deaccelerate now. in_out(0.5) == 0.5, in_out(1.0) == 1.0 + x = x * 2 - 1 + return -0.5 * (x*(x-2)- 1) + +def ease_in_out_duration(duration, step_size=timedelta(milliseconds=20)): + """ + Example invocation + """ + scale = 1.0/duration.total_seconds() + return DistributionFunctionHandler(step_size, duration, + lambda x: _in_out(x*scale)) -- To view, visit https://gerrit.osmocom.org/6230 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: I9e3064f4c3c4c7af5d3491f850090516e541f4d3 Gerrit-PatchSet: 8 Gerrit-Project: osmo-gsm-tester Gerrit-Branch: master Gerrit-Owner: Holger Freyther Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Holger Freyther Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Neels Hofmeyr Gerrit-Reviewer: Pau Espin Pedrol From gerrit-no-reply at lists.osmocom.org Thu Apr 5 15:56:57 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Thu, 5 Apr 2018 15:56:57 +0000 Subject: [PATCH] osmo-ttcn3-hacks[master]: bts: Add first tests about IPA style dynamic PDCH In-Reply-To: References: Message-ID: Hello Jenkins Builder, I'd like you to reexamine a change. Please visit https://gerrit.osmocom.org/7644 to look at the new patch set (#2). bts: Add first tests about IPA style dynamic PDCH Change-Id: I56d8b0284e8e4eee4ce6454f7a495ee09c40fe42 --- M bts/BTS_Tests.ttcn 1 file changed, 181 insertions(+), 1 deletion(-) git pull ssh://gerrit.osmocom.org:29418/osmo-ttcn3-hacks refs/changes/44/7644/2 diff --git a/bts/BTS_Tests.ttcn b/bts/BTS_Tests.ttcn index 5316696..6f34e03 100644 --- a/bts/BTS_Tests.ttcn +++ b/bts/BTS_Tests.ttcn @@ -2635,7 +2635,7 @@ } /*********************************************************************** - * Dynamic Timeslot Support + * Osmocom Style Dynamic Timeslot Support ***********************************************************************/ private function f_dyn_osmo_pdch_act(integer pcu_conn_id, integer bts_nr, integer trx_nr) @@ -2817,6 +2817,182 @@ vc_conn.done; } +/*********************************************************************** + * IPA Style Dynamic Timeslot Support + ***********************************************************************/ + +private function f_dyn_ipa_pdch_act(integer pcu_conn_id, integer bts_nr, integer trx_nr) +runs on ConnHdlr { + var PCUIF_send_data sd; + /* Expect BTS to immediately acknowledge activation as PDCH */ + PCU.clear; + RSL.send(ts_RSL_IPA_PDCH_ACT(g_chan_nr)); + /* expect INFO_IND on PCU interface listing TS as PDCH */ + alt { + [] PCU.receive(t_SD_PCUIF(pcu_conn_id, tr_PCUIF_INFO_IND(bts_nr, ?))) -> value sd { + if (substr(sd.data.u.info_ind.trx[trx_nr].pdch_mask, g_chan_nr.tn, 1) != '1'B) { + setverdict(fail, "PCUIF_INFO_IND PDCH_MASK not '1' after PDCH ACT"); + self.stop; + } + } + [] PCU.receive { repeat; } + } + /* try to activate this PDCH from the PCU point of view */ + PCU.send(t_SD_PCUIF(pcu_conn_id, ts_PCUIF_ACT_REQ(bts_nr, trx_nr, g_chan_nr.tn))); + /* FIXME: is there a response? */ + + RSL.receive(tr_RSL_IPA_PDCH_ACT_ACK(g_chan_nr, ?)); +} + +private function f_dyn_ipa_pdch_deact(integer pcu_conn_id, integer bts_nr, integer trx_nr) +runs on ConnHdlr { + var PCUIF_send_data sd; + /* Send RSL CHAN REL (deactivate) */ + RSL.send(ts_RSL_IPA_PDCH_DEACT(g_chan_nr)); + PCU.clear; + /* expect BTS to ask PCU to deactivate the channel */ + alt { + [] PCU.receive(t_SD_PCUIF(pcu_conn_id, tr_PCUIF_INFO_IND(bts_nr, ?))) -> value sd { + if (substr(sd.data.u.info_ind.trx[trx_nr].pdch_mask, g_chan_nr.tn, 1) != '0'B) { + setverdict(fail, "PCUIF_INFO_IND PDCH_MASK not '0' after PDCH DEACT"); + self.stop; + } + } + [] PCU.receive { repeat; } + } + /* Emulate PCU asking BTS to deactivate PDCH */ + PCU.send(t_SD_PCUIF(pcu_conn_id, ts_PCUIF_DEACT_REQ(bts_nr, trx_nr, g_chan_nr.tn))); + alt { + [] RSL.receive(tr_RSL_IPA_PDCH_DEACT_ACK(g_chan_nr)) { + setverdict(pass); + } + [] RSL.receive { repeat; } + } +} + +/* Activate and de-activate an IPA-style dynamic TCH/F + PDCH */ +function f_TC_dyn_ipa_pdch_act_deact(charstring id) runs on ConnHdlr { + var PCUIF_Message first_info; + var integer ts_nr := g_chan_nr.tn; + var integer trx_nr := 0; + var integer bts_nr := 0; + var integer pcu_conn_id := -1; + + f_init_pcu(PCU, id, pcu_conn_id, first_info); + + f_dyn_ipa_pdch_act(pcu_conn_id, bts_nr, trx_nr); + f_sleep(3.0); + f_dyn_ipa_pdch_deact(pcu_conn_id, bts_nr, trx_nr); + + setverdict(pass); + +} +testcase TC_dyn_ipa_pdch_act_deact() runs on test_CT { + var ConnHdlrPars pars; + var ConnHdlr vc_conn; + f_init(); + + pars := valueof(t_Pars(t_RslChanNr_Bm(3), ts_RSL_ChanMode_SIGN)); + vc_conn := f_start_handler(refers(f_TC_dyn_ipa_pdch_act_deact), pars, true); + vc_conn.done; +} + +/* try to RSL CHAN ACT a TCH/F on an IPA-style PDCH */ +function f_TC_dyn_ipa_pdch_tchf_act(charstring id) runs on ConnHdlr { + var PCUIF_Message first_info; + var integer ts_nr := g_chan_nr.tn; + var integer trx_nr := 0; + var integer bts_nr := 0; + var integer pcu_conn_id := -1; + + f_init_pcu(PCU, id, pcu_conn_id, first_info); + + f_rsl_transceive(ts_RSL_CHAN_ACT(g_chan_nr, g_pars.chan_mode), tr_RSL_CHAN_ACT_ACK(g_chan_nr), + "RSL CHAN ACT"); + f_rsl_transceive(ts_RSL_RF_CHAN_REL(g_chan_nr), tr_RSL_RF_CHAN_REL_ACK(g_chan_nr), + "RF CHAN REL", true); + setverdict(pass); +} +testcase TC_dyn_ipa_pdch_tchf_act() runs on test_CT { + var ConnHdlrPars pars; + var ConnHdlr vc_conn; + f_init(testcasename()); + + pars := valueof(t_Pars(t_RslChanNr_Bm(3), ts_RSL_ChanMode_SIGN)); + vc_conn := f_start_handler(refers(f_TC_dyn_ipa_pdch_tchf_act), pars, true); + vc_conn.done; +} + +/* Activate IPA style dyn PDCH as TCH/F and then illegally try to activate it as PDCH, too */ +function f_TC_dyn_ipa_pdch_tchf_act_pdch_act_nack(charstring id) runs on ConnHdlr { + var PCUIF_Message first_info; + var integer ts_nr := g_chan_nr.tn; + var integer trx_nr := 0; + var integer bts_nr := 0; + var integer pcu_conn_id := -1; + + f_init_pcu(PCU, id, pcu_conn_id, first_info); + + f_rsl_transceive(ts_RSL_CHAN_ACT(g_chan_nr, g_pars.chan_mode), tr_RSL_CHAN_ACT_ACK(g_chan_nr), + "RSL CHAN ACT"); + + RSL.send(ts_RSL_IPA_PDCH_ACT(g_chan_nr)); + alt { + [] RSL.receive(tr_RSL_IPA_PDCH_ACT_NACK(g_chan_nr, ?)); + [] RSL.receive(tr_RSL_IPA_PDCH_ACT_ACK(g_chan_nr, ?)) { + setverdict(fail, "Unexpected PDCH ACT ACK"); + self.stop; + } + [] RSL.receive { repeat; } + } + + f_rsl_transceive(ts_RSL_RF_CHAN_REL(g_chan_nr), tr_RSL_RF_CHAN_REL_ACK(g_chan_nr), + "RF CHAN REL", true); + setverdict(pass); +} +testcase TC_dyn_ipa_pdch_tchf_act_pdch_act_nack() runs on test_CT { + var ConnHdlrPars pars; + var ConnHdlr vc_conn; + f_init(testcasename()); + + pars := valueof(t_Pars(t_RslChanNr_Bm(3), ts_RSL_ChanMode_SIGN)); + vc_conn := f_start_handler(refers(f_TC_dyn_ipa_pdch_tchf_act_pdch_act_nack), pars, true); + vc_conn.done; +} + +/* try to RSL CHAN ACT a TCH/F on an IPA-style PDCH that's already in PDCH mode; expect NACK */ +function f_TC_dyn_ipa_pdch_act_tchf_act_nack(charstring id) runs on ConnHdlr { + var PCUIF_Message first_info; + var integer ts_nr := g_chan_nr.tn; + var integer trx_nr := 0; + var integer bts_nr := 0; + var integer pcu_conn_id := -1; + + /* register for the TCH/F channel number */ + f_rslem_register(0, g_chan_nr); + + f_init_pcu(PCU, id, pcu_conn_id, first_info); + + f_dyn_ipa_pdch_act(pcu_conn_id, bts_nr, trx_nr); + + f_rsl_transceive(ts_RSL_CHAN_ACT(g_chan_nr, g_pars.chan_mode), tr_RSL_CHAN_ACT_NACK(g_chan_nr), + "RSL CHAN ACT"); + + f_dyn_ipa_pdch_deact(pcu_conn_id, bts_nr, trx_nr); + + setverdict(pass); +} +testcase TC_dyn_ipa_pdch_act_tchf_act_nack() runs on test_CT { + var ConnHdlrPars pars; + var ConnHdlr vc_conn; + f_init(testcasename()); + + pars := valueof(t_Pars(t_RslChanNr_Bm(3), ts_RSL_ChanMode_SIGN)); + vc_conn := f_start_handler(refers(f_TC_dyn_ipa_pdch_act_tchf_act_nack), pars, true); + vc_conn.done; +} + + /* TODO Areas: @@ -2915,6 +3091,10 @@ execute( TC_dyn_osmo_pdch_double_act() ); execute( TC_dyn_osmo_pdch_tchf_act() ); execute( TC_dyn_osmo_pdch_tchh_act() ); + execute( TC_dyn_ipa_pdch_act_deact() ); + execute( TC_dyn_ipa_pdch_tchf_act() ); + execute( TC_dyn_ipa_pdch_tchf_act_pdch_act_nack() ); + execute( TC_dyn_ipa_pdch_act_tchf_act_nack() ); } -- To view, visit https://gerrit.osmocom.org/7644 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newpatchset Gerrit-Change-Id: I56d8b0284e8e4eee4ce6454f7a495ee09c40fe42 Gerrit-PatchSet: 2 Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Owner: Harald Welte Gerrit-Reviewer: Jenkins Builder From gerrit-no-reply at lists.osmocom.org Thu Apr 5 15:57:42 2018 From: gerrit-no-reply at lists.osmocom.org (Neels Hofmeyr) Date: Thu, 5 Apr 2018 15:57:42 +0000 Subject: [PATCH] osmo-ttcn3-hacks[master]: add compare-results.sh, call from start-testsuite.sh Message-ID: Review at https://gerrit.osmocom.org/7646 add compare-results.sh, call from start-testsuite.sh Compare current test results to the expected results, and exit in error on discrepancies. Add compare-result.sh: (trivially) grep junit xml output to determine which tests passed and which didn't, and compare against an expected-result.log, another junit file from a previous run. Summarize and determine success. Include an "xfail" feature: tests that are expected to fail are marked as "xfail", unexpected failures as "FAIL". In various subdirs, copy the current jenkins jobs' junit xml outputs as expected-results.log, so that we will start getting useful output in both jenkins runs and manual local runs. In start-testsuite.sh, after running the tests, invoke the results comparison. Due to the single-line parsing nature, the script so far does not distinguish between error and failure. I doubt that we actually need to do that though. Related: OS#3136 Change-Id: I87d62a8be73d73a5eeff61a842e7c27a0066079d --- M .gitignore A bsc/expected-results.log A compare-results.sh A ggsn_tests/expected-results.log A hlr/expected-results.log A mgw/expected-results.log A msc/expected-results.log A sgsn/expected-results.log A sip/expected-results.log M start-testsuite.sh A sysinfo/expected-results.log 11 files changed, 633 insertions(+), 2 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-ttcn3-hacks refs/changes/46/7646/1 diff --git a/.gitignore b/.gitignore index bf5baa0..b92be2f 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,7 @@ deps/*/ *.o *.log +!expected-results.log *.so compile */.gitignore diff --git a/bsc/expected-results.log b/bsc/expected-results.log new file mode 100644 index 0000000..18a9a20 --- /dev/null +++ b/bsc/expected-results.log @@ -0,0 +1,95 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Timeout expecting { msg_disc := { msg_group := RSL_MDISC_CCHAN (6), transparent := false }, msg_type := RSL_MT_PAGING_CMD (21), ies := { { iei := ?, body := { chan_nr := { u := { ch0 := RSL_CHAN_NR_PCH_AGCH (18) }, tn := ? } } }, { iei := ?, body := { paging_group := ? } }, { iei := ?, body := { ms_identity := { len := ?, payload := ? } } }, * } } + BSC_Tests.ttcn:2203 BSC_Tests control part + BSC_Tests.ttcn:1131 TC_paging_imsi_nochan_lai testcase + + + + + + + + + + + + + + Received PAGING after A-RESET + BSC_Tests.ttcn:2212 BSC_Tests control part + BSC_Tests.ttcn:1306 TC_paging_imsi_a_reset testcase + + + + + + + + + + + + + + + + + Timeout of T_guard + BSC_Tests.ttcn:2230 BSC_Tests control part + BSC_Tests.ttcn:2056 TC_bssmap_clear_does_not_cause_bssmap_reset testcase + + + + Timeout of T_guard + BSC_Tests.ttcn:2231 BSC_Tests control part + BSC_Tests.ttcn:2115 TC_ms_rel_ind_does_not_cause_bssmap_reset testcase + + + diff --git a/compare-results.sh b/compare-results.sh new file mode 100755 index 0000000..cb80a0d --- /dev/null +++ b/compare-results.sh @@ -0,0 +1,198 @@ +#!/usr/bin/env bash +expected_file="$1" +results_file="$2" + +usage() { + echo " +Usage: + + $(basename "$0") expected_results.junit-log current_results.junit-log [--allow-* [...]] + +Return 0 if the expected results match the current results exactly. + + --allow-skip Allow runnning less tests than are listed in the expected file. + Default is to return failure on any skipped tests. + --allow-new Allow more test results than found in the expected file. + Default is to return failure on any unknown tests. + --allow-xpass If a test was expected to fail but passed, return success. + Default is to return failure on any mismatch. +" +} + +if [ ! -f "$expected_file" ]; then + usage + echo "Expected file not found: '$expected_file'" + exit 1 +fi + +if [ ! -f "$results_file" ]; then + usage + echo "Current results file not found: '$results_file'" + exit 1 +fi + +shift +shift + +allow_xpass=0 +allow_skip=0 +allow_new=0 + +while test -n "$1"; do + arg="$1" + if [ "x$arg" = "x--allow-xpass" ]; then + allow_xpass=1 + elif [ "x$arg" = "x--allow-skip" ]; then + allow_skip=1 + elif [ "x$arg" = "x--allow-new" ]; then + allow_new=1 + else + usage + echo "Unknown argument: '$arg'" + exit 1 + fi + shift +done + +echo "Comparing expected results $expected_file against results in $results_file +--------------------" + +parse_testcase() { + line="$1" + suite_name="$(echo "$line" | sed 's,.*classname='"'"'\([^'"'"']*\)'"'"'.*,\1,')" + test_name="$(echo "$line" | sed 's,.*\$')" ]; then + test_result="pass" + else + test_result="FAIL" + fi +} + +pass=0 +xfail=0 +more_failures=0 +more_successes=0 +skipped=0 +new=0 + +while read line; do + parse_testcase "$line" + exp_suite_name="$suite_name" + exp_test_name="$test_name" + exp_test_result="$test_result" + matched="0" + + while read line; do + parse_testcase "$line" + if [ "x$exp_suite_name" != "x$suite_name" ]; then + continue + fi + if [ "x$exp_test_name" != "x$test_name" ]; then + continue + fi + + if [ "x$exp_test_result" = "x$test_result" ]; then + if [ "x$exp_test_result" = "xFAIL" ]; then + exp_test_result="xfail" + (( xfail += 1 )) + else + (( pass += 1 )) + fi + echo "$exp_test_result $suite_name.$test_name" + else + if [ "x$exp_test_result" = "xFAIL" ]; then + exp_test_result="xfail" + fi + echo "$exp_test_result->$test_result $suite_name.$test_name" + if [ "x$test_result" = "xFAIL" ]; then + (( more_failures += 1 )) + else + (( more_successes += 1 )) + fi + fi + matched="1" + break + done <<< "$(grep " + + + + + + + + + + + + + diff --git a/hlr/expected-results.log b/hlr/expected-results.log new file mode 100644 index 0000000..be8000c --- /dev/null +++ b/hlr/expected-results.log @@ -0,0 +1,23 @@ + + + + Unexpected SAI ERROR Cause + HLR_Tests.ttcn:558 HLR_Tests control part + HLR_Tests.ttcn:364 TC_gsup_sai_err_invalid_imsi testcase + + + + + + + + + Timeout waiting for ISD.req + HLR_Tests.ttcn:564 HLR_Tests control part + HLR_Tests.ttcn:485 TC_vty_msisdn_isd testcase + + + + + + diff --git a/mgw/expected-results.log b/mgw/expected-results.log new file mode 100644 index 0000000..c67d5d9 --- /dev/null +++ b/mgw/expected-results.log @@ -0,0 +1,36 @@ + + + + no verdict + + + + + + + + + + + + MGCP_Test.ttcn:887 MGCP_Test control part + MGCP_Test.ttcn:436 TC_crcx_illegal_double_lco testcase + + + + + + + + + + + + + + + + + + + diff --git a/msc/expected-results.log b/msc/expected-results.log new file mode 100644 index 0000000..d436978 --- /dev/null +++ b/msc/expected-results.log @@ -0,0 +1,110 @@ + + + + + + + Timeout waiting for ClearCommand/Release + MSC_Tests.ttcn:1829 MSC_Tests control part + MSC_Tests.ttcn:502 TC_lu_imsi_reject testcase + + + + Timeout waiting for ClearCommand/Release + MSC_Tests.ttcn:1830 MSC_Tests control part + MSC_Tests.ttcn:531 TC_lu_imsi_timeout_gsup testcase + + + + + + + + + + + + + + + + Timeout waiting for ClearCommand/Release + MSC_Tests.ttcn:1843 MSC_Tests control part + MSC_Tests.ttcn:903 TC_emerg_call_imei_reject testcase + + + + + Timeout waiting for ClearCommand/Release + MSC_Tests.ttcn:1845 MSC_Tests control part + MSC_Tests.ttcn:940 TC_cm_serv_req_vgcs_reject testcase + + + + Timeout waiting for ClearCommand/Release + MSC_Tests.ttcn:1846 MSC_Tests control part + MSC_Tests.ttcn:961 TC_cm_serv_req_vbs_reject testcase + + + + Timeout waiting for ClearCommand/Release + MSC_Tests.ttcn:1847 MSC_Tests control part + MSC_Tests.ttcn:982 TC_cm_serv_req_lcs_reject testcase + + + + Timeout waiting for ClearCommand/Release + MSC_Tests.ttcn:1848 MSC_Tests control part + MSC_Tests.ttcn:1003 TC_cm_reest_req_reject testcase + + + + + + + Timeout waiting for ClearCommand or SCCP Release + MSC_Tests.ttcn:1852 MSC_Tests control part + MSC_Tests.ttcn:1125 TC_cl3_rnd_payload testcase + + + + Timeout waiting for ClearCommand/Release + MSC_Tests.ttcn:1853 MSC_Tests control part + MSC_Tests.ttcn:1142 TC_establish_and_nothing testcase + + + + Timeout waiting for ClearCommand/Release + MSC_Tests.ttcn:1854 MSC_Tests control part + MSC_Tests.ttcn:1166 TC_mo_setup_and_nothing testcase + + + + + Timeout waiting for channel release + MSC_Tests.ttcn:1856 MSC_Tests control part + MSC_Tests.ttcn:1283 TC_mo_crcx_ran_reject testcase + + + + Timeout waiting for channel release + MSC_Tests.ttcn:1857 MSC_Tests control part + MSC_Tests.ttcn:1380 TC_mt_crcx_ran_reject testcase + + + + + + + + + + + + + + + + + + diff --git a/sgsn/expected-results.log b/sgsn/expected-results.log new file mode 100644 index 0000000..502dde8 --- /dev/null +++ b/sgsn/expected-results.log @@ -0,0 +1,54 @@ + + + + + + + Tguard timeout + SGSN_Tests.ttcn:1157 SGSN_Tests control part + SGSN_Tests.ttcn:480 TC_attach_auth_sai_timeout testcase + + + + Tguard timeout + SGSN_Tests.ttcn:1158 SGSN_Tests control part + SGSN_Tests.ttcn:501 TC_attach_auth_sai_reject testcase + + + + Tguard timeout + SGSN_Tests.ttcn:1159 SGSN_Tests control part + SGSN_Tests.ttcn:529 TC_attach_gsup_lu_timeout testcase + + + + Tguard timeout + SGSN_Tests.ttcn:1160 SGSN_Tests control part + SGSN_Tests.ttcn:558 TC_attach_gsup_lu_reject testcase + + + + + + + + + Dynamic test case error: Error message was received from MC: The connect operation refers to test component with component reference 77, which has already terminated. + + + Dynamic test case error: Error message was received from MC: The connect operation refers to test component with component reference 83, which has already terminated. + + + + + + + + + + Tguard timeout + SGSN_Tests.ttcn:1175 SGSN_Tests control part + SGSN_Tests.ttcn:1148 TC_attach_pdp_act_user_deact_mt testcase + + + diff --git a/sip/expected-results.log b/sip/expected-results.log new file mode 100644 index 0000000..54123a5 --- /dev/null +++ b/sip/expected-results.log @@ -0,0 +1,7 @@ + + + + + + + diff --git a/start-testsuite.sh b/start-testsuite.sh index 8affdba..5b187fa 100755 --- a/start-testsuite.sh +++ b/start-testsuite.sh @@ -10,7 +10,9 @@ fi SUITE=$1 -CFG=$(basename "$SUITE").cfg +SUITE_DIR="$(dirname "$SUITE")" +SUITE_NAME="$(basename "$SUITE")" +CFG="$SUITE_NAME.cfg" if [ $# -gt 1 ]; then CFG=$2 fi @@ -19,4 +21,26 @@ TEST=$3 fi -LD_LIBRARY_PATH=$(dirname "$SUITE"):/usr/lib/titan:/usr/ttcn3/lib ttcn3_start $SUITE $CFG $TEST +LD_LIBRARY_PATH="$SUITE_DIR:/usr/lib/titan:/usr/ttcn3/lib" ttcn3_start $SUITE $CFG $TEST + +expected="$SUITE_DIR/expected-results.log" +if [ ! -f "$expected" ]; then + echo "No expected results found, not comparing outcome. ($expected)" + exit 0 +fi + +# find the most recent junit output log here +last_log="$(ls -1tr junit*.log | tail -n 1)" +if [ ! -f "$last_log" ]; then + echo "No junit log found." + exit 1 +fi + +compare="$SUITE_DIR/../compare-results.sh" +if [ ! -x "$compare" ]; then + echo "ERROR: cannot find $compare" + exit 1 +fi + +set -e +"$compare" "$expected" "$last_log" $OSMO_TTCN3_COMPARE_ARGS diff --git a/sysinfo/expected-results.log b/sysinfo/expected-results.log new file mode 100644 index 0000000..cea6f54 --- /dev/null +++ b/sysinfo/expected-results.log @@ -0,0 +1,69 @@ + + + + + + No SI messages for TC=0! + + + + + No SI messages for TC=0! + + + + + No SI messages for TC=0! + + + + + Test.ttcn:162: Dynamic test case error: testcase.stop + + + + Test.ttcn:162: Dynamic test case error: testcase.stop + + + Test.ttcn:162: Dynamic test case error: testcase.stop + + + Test.ttcn:478: Dynamic test case error: testcase.stop + + + Test.ttcn:478: Dynamic test case error: testcase.stop + + + Test.ttcn:478: Dynamic test case error: testcase.stop + + + Test.ttcn:478: Dynamic test case error: testcase.stop + + + Test.ttcn:478: Dynamic test case error: testcase.stop + + + Test.ttcn:478: Dynamic test case error: testcase.stop + + + Test.ttcn:478: Dynamic test case error: testcase.stop + + + Test.ttcn:478: Dynamic test case error: testcase.stop + + + Test.ttcn:478: Dynamic test case error: testcase.stop + + + Test.ttcn:478: Dynamic test case error: testcase.stop + + + Test.ttcn:478: Dynamic test case error: testcase.stop + + + Test.ttcn:478: Dynamic test case error: testcase.stop + + + Test.ttcn:478: Dynamic test case error: testcase.stop + + -- To view, visit https://gerrit.osmocom.org/7646 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I87d62a8be73d73a5eeff61a842e7c27a0066079d Gerrit-PatchSet: 1 Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr From gerrit-no-reply at lists.osmocom.org Thu Apr 5 15:57:42 2018 From: gerrit-no-reply at lists.osmocom.org (Neels Hofmeyr) Date: Thu, 5 Apr 2018 15:57:42 +0000 Subject: [PATCH] osmo-ttcn3-hacks[master]: gitignore vim swp files Message-ID: Review at https://gerrit.osmocom.org/7647 gitignore vim swp files Change-Id: I2d60ad2365c7fd82210ee1dac96fabab19617280 --- M .gitignore 1 file changed, 1 insertion(+), 0 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-ttcn3-hacks refs/changes/47/7647/1 diff --git a/.gitignore b/.gitignore index b92be2f..519dc48 100644 --- a/.gitignore +++ b/.gitignore @@ -15,3 +15,4 @@ */Makefile !bin/Makefile !deps/Makefile +.*.sw? -- To view, visit https://gerrit.osmocom.org/7647 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I2d60ad2365c7fd82210ee1dac96fabab19617280 Gerrit-PatchSet: 1 Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr From gerrit-no-reply at lists.osmocom.org Thu Apr 5 15:57:48 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Thu, 5 Apr 2018 15:57:48 +0000 Subject: osmo-bsc[master]: vty: re-add 'timeout-ping' and 'timeout-pong' as dummy commands In-Reply-To: References: Message-ID: Patch Set 2: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7634 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I95a5bad1ade66ded849cfc20bebb7fc522aecc38 Gerrit-PatchSet: 2 Gerrit-Project: osmo-bsc Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Thu Apr 5 15:58:13 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Thu, 5 Apr 2018 15:58:13 +0000 Subject: [PATCH] libosmocore[master]: socket.c: osmo_sock_init2: bind: Several logic fixes and log... In-Reply-To: References: Message-ID: Hello Jenkins Builder, I'd like you to reexamine a change. Please visit https://gerrit.osmocom.org/7645 to look at the new patch set (#2). socket.c: osmo_sock_init2: bind: Several logic fixes and log improvements After investigating osmo-msc showing this log message and looking at the code, it's a bit difficult to find out what's going on in the code: socket.c:224 unable to bind socket: (null):0: Protocol not supported The root cause was not yet found, but probably SCTP is not enabled in the kernel of the host running it. The cod eis most probably failing during socket() and not due to bind error as the log says, so let's print an error if socket() fails. Then, if setsockopt fails, we want to still keep trying in case an extra addr was offered by addrinfo_helper. It is definetly wrong to continue if setsockopt fails, because then we are skipping the bind(), which is a fundamental part of what osmo_sock_init2 does. Then, let's print the bind error when it really happens, and re-write the extra log at the end if we reach the point at which no suitable addr is found. Change-Id: I1854422ad92dadf33ed4d849e15c0380c3bf1626 --- M src/socket.c 1 file changed, 19 insertions(+), 7 deletions(-) git pull ssh://gerrit.osmocom.org:29418/libosmocore refs/changes/45/7645/2 diff --git a/src/socket.c b/src/socket.c index 0378970..2310d75 100644 --- a/src/socket.c +++ b/src/socket.c @@ -91,8 +91,11 @@ int sfd, on = 1; sfd = socket(rp->ai_family, rp->ai_socktype, rp->ai_protocol); - if (sfd == -1) + if (sfd == -1) { + LOGP(DLGLOBAL, LOGL_ERROR, + "unable to create socket: %s\n", strerror(errno)); return sfd; + } if (flags & OSMO_SOCK_F_NONBLOCK) { if (ioctl(sfd, FIONBIO, (unsigned char *)&on) < 0) { LOGP(DLGLOBAL, LOGL_ERROR, @@ -212,20 +215,29 @@ "cannot setsockopt socket:" " %s:%u: %s\n", local_host, local_port, strerror(errno)); - break; + close(sfd); + continue; } - if (bind(sfd, rp->ai_addr, rp->ai_addrlen) != -1) - break; - close(sfd); + if (bind(sfd, rp->ai_addr, rp->ai_addrlen) == -1) { + LOGP(DLGLOBAL, LOGL_ERROR, "unable to bind socket: %s:%u: %s\n", + local_host, local_port, strerror(errno)); + close(sfd); + continue; + } + break; } freeaddrinfo(result); if (rp == NULL) { - LOGP(DLGLOBAL, LOGL_ERROR, "unable to bind socket: %s:%u: %s\n", - local_host, local_port, strerror(errno)); + LOGP(DLGLOBAL, LOGL_ERROR, "no suitable local addr found for: %s:%u\n", + local_host, local_port); return -ENODEV; } } + /* Reached this point, if OSMO_SOCK_F_BIND then sfd is valid (>=0) or it + was already closed and func returned. If OSMO_SOCK_F_BIND is not + set, then sfd = -1 */ + /* figure out remote side of socket */ if (flags & OSMO_SOCK_F_CONNECT) { result = addrinfo_helper(family, type, proto, remote_host, remote_port, false); -- To view, visit https://gerrit.osmocom.org/7645 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newpatchset Gerrit-Change-Id: I1854422ad92dadf33ed4d849e15c0380c3bf1626 Gerrit-PatchSet: 2 Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Jenkins Builder From gerrit-no-reply at lists.osmocom.org Thu Apr 5 15:58:14 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Thu, 5 Apr 2018 15:58:14 +0000 Subject: [PATCH] libosmocore[master]: socket.c: osmo_sock_init2: connect: Several logic fixes and ... Message-ID: Review at https://gerrit.osmocom.org/7648 socket.c: osmo_sock_init2: connect: Several logic fixes and log improvements See explanations in previous commits. Change-Id: Ib2f7577b9f498ae9d388ed1f79f6ca0ec6f09664 --- M src/socket.c 1 file changed, 17 insertions(+), 8 deletions(-) git pull ssh://gerrit.osmocom.org:29418/libosmocore refs/changes/48/7648/1 diff --git a/src/socket.c b/src/socket.c index 2310d75..0e0aa24 100644 --- a/src/socket.c +++ b/src/socket.c @@ -242,7 +242,8 @@ if (flags & OSMO_SOCK_F_CONNECT) { result = addrinfo_helper(family, type, proto, remote_host, remote_port, false); if (!result) { - close(sfd); + if (sfd >= 0) + close(sfd); return -EINVAL; } @@ -260,16 +261,24 @@ } rc = connect(sfd, rp->ai_addr, rp->ai_addrlen); - if (rc != -1 || (rc == -1 && errno == EINPROGRESS)) - break; - - close(sfd); - sfd = -1; + if (rc != 0 && errno != EINPROGRESS) { + LOGP(DLGLOBAL, LOGL_ERROR, "unable to connect socket: %s:%u: %s\n", + remote_host, remote_port, strerror(errno)); + /* We want to maintain the bind socket if bind was enabled */ + if (!(flags & OSMO_SOCK_F_BIND)) { + close(sfd); + sfd = -1; + } + continue; + } + break; } freeaddrinfo(result); if (rp == NULL) { - LOGP(DLGLOBAL, LOGL_ERROR, "unable to connect socket: %s:%u: %s\n", - remote_host, remote_port, strerror(errno)); + LOGP(DLGLOBAL, LOGL_ERROR, "no suitable remote addr found for: %s:%u\n", + remote_host, remote_port); + if (sfd >= 0) + close(sfd); return -ENODEV; } } -- To view, visit https://gerrit.osmocom.org/7648 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Ib2f7577b9f498ae9d388ed1f79f6ca0ec6f09664 Gerrit-PatchSet: 1 Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol From gerrit-no-reply at lists.osmocom.org Thu Apr 5 15:58:14 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Thu, 5 Apr 2018 15:58:14 +0000 Subject: [PATCH] libosmocore[master]: socket.c: osmo_sock_init: Several logic fixes and log improv... Message-ID: Review at https://gerrit.osmocom.org/7649 socket.c: osmo_sock_init: Several logic fixes and log improvements See explanations in previous commit. Change-Id: I4889e777d8627fdfb52c97ab3ab353b6ed34aab2 --- M src/socket.c 1 file changed, 16 insertions(+), 8 deletions(-) git pull ssh://gerrit.osmocom.org:29418/libosmocore refs/changes/49/7649/1 diff --git a/src/socket.c b/src/socket.c index 0e0aa24..d96f664 100644 --- a/src/socket.c +++ b/src/socket.c @@ -339,8 +339,10 @@ if (flags & OSMO_SOCK_F_CONNECT) { rc = connect(sfd, rp->ai_addr, rp->ai_addrlen); - if (rc != -1 || (rc == -1 && errno == EINPROGRESS)) - break; + if (rc != 0 && errno != EINPROGRESS) { + close(sfd); + continue; + } } else { rc = setsockopt(sfd, SOL_SOCKET, SO_REUSEADDR, &on, sizeof(on)); @@ -349,18 +351,24 @@ "cannot setsockopt socket:" " %s:%u: %s\n", host, port, strerror(errno)); - break; + close(sfd); + continue; } - if (bind(sfd, rp->ai_addr, rp->ai_addrlen) != -1) - break; + if (bind(sfd, rp->ai_addr, rp->ai_addrlen) == -1) { + LOGP(DLGLOBAL, LOGL_ERROR, "unable to bind socket:" + "%s:%u: %s\n", + host, port, strerror(errno)); + close(sfd); + continue; + } } - close(sfd); + break; } freeaddrinfo(result); if (rp == NULL) { - LOGP(DLGLOBAL, LOGL_ERROR, "unable to connect/bind socket: %s:%u: %s\n", - host, port, strerror(errno)); + LOGP(DLGLOBAL, LOGL_ERROR, "no suitable addr found for: %s:%u\n", + host, port); return -ENODEV; } -- To view, visit https://gerrit.osmocom.org/7649 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I4889e777d8627fdfb52c97ab3ab353b6ed34aab2 Gerrit-PatchSet: 1 Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol From gerrit-no-reply at lists.osmocom.org Thu Apr 5 15:59:55 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Thu, 5 Apr 2018 15:59:55 +0000 Subject: osmo-ttcn3-hacks[master]: add compare-results.sh, call from start-testsuite.sh In-Reply-To: References: Message-ID: Patch Set 1: I'm not convinced, once again, sorry. I believe we had this discussion and the conclusion was that we split the tests into two TTCN-3 modules so we have BTS_Tests and BTS_Tests_xfail or something like that? Also, I'm quite critical of this in general. We should focus on fixing all bugs the testsuite produces, rather than trying to hide some of the failures. the test failures should be a constant reminder of how broken our code is :/ -- To view, visit https://gerrit.osmocom.org/7646 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I87d62a8be73d73a5eeff61a842e7c27a0066079d Gerrit-PatchSet: 1 Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Thu Apr 5 16:00:03 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Thu, 5 Apr 2018 16:00:03 +0000 Subject: osmo-ttcn3-hacks[master]: gitignore vim swp files In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7647 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I2d60ad2365c7fd82210ee1dac96fabab19617280 Gerrit-PatchSet: 1 Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Thu Apr 5 16:01:01 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Thu, 5 Apr 2018 16:01:01 +0000 Subject: libosmocore[master]: socket.c: osmo_sock_init2: bind: Several logic fixes and log... In-Reply-To: References: Message-ID: Patch Set 2: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7645 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I1854422ad92dadf33ed4d849e15c0380c3bf1626 Gerrit-PatchSet: 2 Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Thu Apr 5 16:01:29 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Thu, 5 Apr 2018 16:01:29 +0000 Subject: libosmocore[master]: socket.c: osmo_sock_init2: connect: Several logic fixes and ... In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+1 -- To view, visit https://gerrit.osmocom.org/7648 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Ib2f7577b9f498ae9d388ed1f79f6ca0ec6f09664 Gerrit-PatchSet: 1 Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Harald Welte Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Thu Apr 5 16:01:44 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Thu, 5 Apr 2018 16:01:44 +0000 Subject: libosmocore[master]: socket.c: osmo_sock_init: Several logic fixes and log improv... In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7649 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I4889e777d8627fdfb52c97ab3ab353b6ed34aab2 Gerrit-PatchSet: 1 Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Thu Apr 5 16:01:48 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Thu, 5 Apr 2018 16:01:48 +0000 Subject: libosmocore[master]: socket.c: osmo_sock_init2: connect: Several logic fixes and ... In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7648 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Ib2f7577b9f498ae9d388ed1f79f6ca0ec6f09664 Gerrit-PatchSet: 1 Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Harald Welte Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Thu Apr 5 16:10:53 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Thu, 5 Apr 2018 16:10:53 +0000 Subject: [PATCH] libosmo-netif[master]: stream.c: osmo_stream_cli_open2: Remove wrong assumption in ... Message-ID: Review at https://gerrit.osmocom.org/7650 stream.c: osmo_stream_cli_open2: Remove wrong assumption in reconnect decision Documentation of osmo_sock_init2 doesn't provide information of any specific value of errno set/expected after running the function. It is incorrect to expect a specific value of errno and looking at the implementation it is actually not a good idea to check it. If reconnect flag is set, let's reconnect always instead of looking at errno to decide. Change-Id: I25b33f4cdc496ae31ff240d445b9b2805091845c --- M src/stream.c 1 file changed, 1 insertion(+), 1 deletion(-) git pull ssh://gerrit.osmocom.org:29418/libosmo-netif refs/changes/50/7650/1 diff --git a/src/stream.c b/src/stream.c index 78dafd5..9dcb94b 100644 --- a/src/stream.c +++ b/src/stream.c @@ -453,7 +453,7 @@ cli->addr, cli->port, OSMO_SOCK_F_CONNECT|OSMO_SOCK_F_BIND); if (ret < 0) { - if (reconnect && errno == ECONNREFUSED) + if (reconnect) osmo_stream_cli_reconnect(cli); return ret; } -- To view, visit https://gerrit.osmocom.org/7650 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I25b33f4cdc496ae31ff240d445b9b2805091845c Gerrit-PatchSet: 1 Gerrit-Project: libosmo-netif Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol From gerrit-no-reply at lists.osmocom.org Thu Apr 5 16:25:13 2018 From: gerrit-no-reply at lists.osmocom.org (Neels Hofmeyr) Date: Thu, 5 Apr 2018 16:25:13 +0000 Subject: [PATCH] libosmocore[master]: fix ctrl_test sanitizer issues Message-ID: Review at https://gerrit.osmocom.org/7651 fix ctrl_test sanitizer issues Add logging to root ctx, add msgb ctx to root ctx, free wqueue to simulate the msgb being sent, and assert final talloc size. Change-Id: Ief3d5e7b6c4d781b3854e230e45a67d5281b94cd --- M tests/ctrl/ctrl_test.c 1 file changed, 12 insertions(+), 1 deletion(-) git pull ssh://gerrit.osmocom.org:29418/libosmocore refs/changes/51/7651/1 diff --git a/tests/ctrl/ctrl_test.c b/tests/ctrl/ctrl_test.c index b7b30c3..8bb917b 100644 --- a/tests/ctrl/ctrl_test.c +++ b/tests/ctrl/ctrl_test.c @@ -397,6 +397,7 @@ printf("ctrl_handle_msg() returned %d\n", result); OSMO_ASSERT(result == CTRL_CMD_HANDLED); + talloc_free(msg); /* Expecting a ctrl_cmd_def as well as the cmd to still be allocated */ if (talloc_total_size(ctx) <= ctx_size_before_defer) { @@ -407,6 +408,9 @@ printf("invoking ctrl_test_defer_cb() asynchronously\n"); ctrl_test_defer_cb(test_defer_cd); + + /* simulate sending of the reply */ + osmo_wqueue_clear(&ccon->write_queue); /* And now the deferred cmd should be cleaned up completely. */ if (talloc_total_size(ctx) != ctx_size_before_defer) { @@ -438,7 +442,8 @@ int main(int argc, char **argv) { ctx = talloc_named_const(NULL, 1, "ctrl_test"); - osmo_init_logging(&info); + osmo_init_logging2(ctx, &info); + msgb_talloc_ctx_init(ctx, 0); printf("Checking ctrl types...\n"); @@ -455,5 +460,11 @@ test_deferred_cmd(); + /* Expecting root ctx + msgb root ctx + 5 logging elements */ + if (talloc_total_blocks(ctx) != 7) { + talloc_report_full(ctx, stdout); + OSMO_ASSERT(false); + } + return 0; } -- To view, visit https://gerrit.osmocom.org/7651 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Ief3d5e7b6c4d781b3854e230e45a67d5281b94cd Gerrit-PatchSet: 1 Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr From gerrit-no-reply at lists.osmocom.org Thu Apr 5 16:31:19 2018 From: gerrit-no-reply at lists.osmocom.org (Neels Hofmeyr) Date: Thu, 5 Apr 2018 16:31:19 +0000 Subject: osmo-ttcn3-hacks[master]: add compare-results.sh, call from start-testsuite.sh In-Reply-To: References: Message-ID: Patch Set 1: I don't understand why you see a neat summary as a problem. No current schemes of deciding on success or failure are affected. This "just" prints a summary in the end, showing things like: pass -- we expect it to pass, and it passed xfail -- we know this fails and still does pass->FAIL -- i've broken another test with my patch xfail->pass -- i've fixed a test This doesn't hide anything, and so far the outcome of jenkins jobs isn't affected (if at all then it is failing more often now instead of hiding failures) Furthermore it is highly valuable information while testing patches and ttcn files, which so far needs to be looked up manually. Please try it out and revisit your remarks, I frankly think they don't hold. -- To view, visit https://gerrit.osmocom.org/7646 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I87d62a8be73d73a5eeff61a842e7c27a0066079d Gerrit-PatchSet: 1 Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Neels Hofmeyr Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Thu Apr 5 16:34:15 2018 From: gerrit-no-reply at lists.osmocom.org (Neels Hofmeyr) Date: Thu, 5 Apr 2018 16:34:15 +0000 Subject: libosmocore[master]: fix ctrl_test sanitizer issues In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 submitting to fix master build -- To view, visit https://gerrit.osmocom.org/7651 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Ief3d5e7b6c4d781b3854e230e45a67d5281b94cd Gerrit-PatchSet: 1 Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Neels Hofmeyr Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Thu Apr 5 16:34:31 2018 From: gerrit-no-reply at lists.osmocom.org (Neels Hofmeyr) Date: Thu, 5 Apr 2018 16:34:31 +0000 Subject: [MERGED] libosmocore[master]: fix ctrl_test sanitizer issues In-Reply-To: References: Message-ID: Neels Hofmeyr has submitted this change and it was merged. Change subject: fix ctrl_test sanitizer issues ...................................................................... fix ctrl_test sanitizer issues Add logging to root ctx, add msgb ctx to root ctx, free wqueue to simulate the msgb being sent, and assert final talloc size. Change-Id: Ief3d5e7b6c4d781b3854e230e45a67d5281b94cd --- M tests/ctrl/ctrl_test.c 1 file changed, 12 insertions(+), 1 deletion(-) Approvals: Neels Hofmeyr: Looks good to me, approved Jenkins Builder: Verified diff --git a/tests/ctrl/ctrl_test.c b/tests/ctrl/ctrl_test.c index b7b30c3..8bb917b 100644 --- a/tests/ctrl/ctrl_test.c +++ b/tests/ctrl/ctrl_test.c @@ -397,6 +397,7 @@ printf("ctrl_handle_msg() returned %d\n", result); OSMO_ASSERT(result == CTRL_CMD_HANDLED); + talloc_free(msg); /* Expecting a ctrl_cmd_def as well as the cmd to still be allocated */ if (talloc_total_size(ctx) <= ctx_size_before_defer) { @@ -407,6 +408,9 @@ printf("invoking ctrl_test_defer_cb() asynchronously\n"); ctrl_test_defer_cb(test_defer_cd); + + /* simulate sending of the reply */ + osmo_wqueue_clear(&ccon->write_queue); /* And now the deferred cmd should be cleaned up completely. */ if (talloc_total_size(ctx) != ctx_size_before_defer) { @@ -438,7 +442,8 @@ int main(int argc, char **argv) { ctx = talloc_named_const(NULL, 1, "ctrl_test"); - osmo_init_logging(&info); + osmo_init_logging2(ctx, &info); + msgb_talloc_ctx_init(ctx, 0); printf("Checking ctrl types...\n"); @@ -455,5 +460,11 @@ test_deferred_cmd(); + /* Expecting root ctx + msgb root ctx + 5 logging elements */ + if (talloc_total_blocks(ctx) != 7) { + talloc_report_full(ctx, stdout); + OSMO_ASSERT(false); + } + return 0; } -- To view, visit https://gerrit.osmocom.org/7651 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: Ief3d5e7b6c4d781b3854e230e45a67d5281b94cd Gerrit-PatchSet: 1 Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Neels Hofmeyr From gerrit-no-reply at lists.osmocom.org Thu Apr 5 16:36:12 2018 From: gerrit-no-reply at lists.osmocom.org (Neels Hofmeyr) Date: Thu, 5 Apr 2018 16:36:12 +0000 Subject: [MERGED] osmo-bsc[master]: vty: re-add 'timeout-ping' and 'timeout-pong' as dummy commands In-Reply-To: References: Message-ID: Neels Hofmeyr has submitted this change and it was merged. Change subject: vty: re-add 'timeout-ping' and 'timeout-pong' as dummy commands ...................................................................... vty: re-add 'timeout-ping' and 'timeout-pong' as dummy commands Legacy VTY commands were removed in commit c74a5616bf1c77ac40ddd92f4927dca7a1b45bc8 == I5cf3fec31cc774c902f3cfe6d16fb85ef301694a Removing the dead VTY commands currently breaks our ttcn3-bts-test and is likely to create problems with users of osmo-bsc, when their config osmo-bsc stops working with a mere upgrade. Instead, add deprecated dummy commands that don't do anything, to not break existing configs. Catch all of these legacy commands: timeout-ping timeout-pong timeout-ping advanced no timeout-ping no timeout-ping advanced by defining timeout-ping ARG timeout-pong ARG no timeout-ping [ARG] I verified manually that starting osmo-bsc with all the abovementioned VTY commands in the config file works (and produces the deprecation messages). Change-Id: I95a5bad1ade66ded849cfc20bebb7fc522aecc38 --- M src/osmo-bsc/osmo_bsc_vty.c 1 file changed, 21 insertions(+), 0 deletions(-) Approvals: Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/src/osmo-bsc/osmo_bsc_vty.c b/src/osmo-bsc/osmo_bsc_vty.c index 7968e21..e6ae078 100644 --- a/src/osmo-bsc/osmo_bsc_vty.c +++ b/src/osmo-bsc/osmo_bsc_vty.c @@ -884,6 +884,22 @@ return CMD_SUCCESS; } +#define LEGACY_STR "This command has no effect, it is kept to support legacy config files\n" + +DEFUN_DEPRECATED(cfg_net_msc_ping_time, cfg_net_msc_ping_time_cmd, + "timeout-ping ARG", LEGACY_STR "-\n") +{ + vty_out(vty, "%% timeout-ping / timeout-pong config is deprecated and has no effect%s", + VTY_NEWLINE); + return CMD_WARNING; +} + +ALIAS_DEPRECATED(cfg_net_msc_ping_time, cfg_net_msc_no_ping_time_cmd, + "no timeout-ping [ARG]", NO_STR LEGACY_STR "-\n"); + +ALIAS_DEPRECATED(cfg_net_msc_ping_time, cfg_net_msc_pong_time_cmd, + "timeout-pong ARG", LEGACY_STR "-\n"); + int bsc_vty_init_extra(void) { struct gsm_network *net = bsc_gsmnet; @@ -933,6 +949,11 @@ install_element(MSC_NODE, &cfg_msc_cs7_bsc_addr_cmd); install_element(MSC_NODE, &cfg_msc_cs7_msc_addr_cmd); + /* Deprecated: ping time config, kept to support legacy config files. */ + install_element(MSC_NODE, &cfg_net_msc_no_ping_time_cmd); + install_element(MSC_NODE, &cfg_net_msc_ping_time_cmd); + install_element(MSC_NODE, &cfg_net_msc_pong_time_cmd); + install_element_ve(&show_statistics_cmd); install_element_ve(&show_mscs_cmd); install_element_ve(&show_pos_cmd); -- To view, visit https://gerrit.osmocom.org/7634 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: I95a5bad1ade66ded849cfc20bebb7fc522aecc38 Gerrit-PatchSet: 2 Gerrit-Project: osmo-bsc Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Neels Hofmeyr From gerrit-no-reply at lists.osmocom.org Thu Apr 5 16:36:34 2018 From: gerrit-no-reply at lists.osmocom.org (Neels Hofmeyr) Date: Thu, 5 Apr 2018 16:36:34 +0000 Subject: docker-playground[master]: root Makefile: fix ttcn3-msc-test rule, drop an extra .PHONY In-Reply-To: References: Message-ID: Patch Set 1: Verified+1 -- To view, visit https://gerrit.osmocom.org/7643 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I098d9d84d9ce89b1dab204b90d2cd7ee7b3f19c9 Gerrit-PatchSet: 1 Gerrit-Project: docker-playground Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Neels Hofmeyr Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Thu Apr 5 16:36:38 2018 From: gerrit-no-reply at lists.osmocom.org (Neels Hofmeyr) Date: Thu, 5 Apr 2018 16:36:38 +0000 Subject: [MERGED] docker-playground[master]: root Makefile: fix ttcn3-msc-test rule, drop an extra .PHONY In-Reply-To: References: Message-ID: Neels Hofmeyr has submitted this change and it was merged. Change subject: root Makefile: fix ttcn3-msc-test rule, drop an extra .PHONY ...................................................................... root Makefile: fix ttcn3-msc-test rule, drop an extra .PHONY Change-Id: I098d9d84d9ce89b1dab204b90d2cd7ee7b3f19c9 --- M Makefile 1 file changed, 1 insertion(+), 3 deletions(-) Approvals: Neels Hofmeyr: Verified Harald Welte: Looks good to me, approved diff --git a/Makefile b/Makefile index 5f3aea1..eca64be 100644 --- a/Makefile +++ b/Makefile @@ -1,8 +1,6 @@ .PHONY: build build: debian-jessie-build osmo-ggsn-master osmo-stp-master sctp-test sigtran-tests m3ua-test sua-test debian-stretch-titan ttcn3-ggsn-test -.PHONY: ttcn3-bsc-test ttcn3-msc-test ttcn3-bts-test - .PHONY: debian-jessie-build debian-jessie-build: $(MAKE) -C debian-jessie-build @@ -52,7 +50,7 @@ $(MAKE) -C ggsn-test .PHONY: ttcn3-mgw-test -ttcn3-msc-test: debian-stretch-titan osmo-mgw-master +ttcn3-mgw-test: debian-stretch-titan osmo-mgw-master $(MAKE) -C ttcn3-mgw-test .PHONY: sctp-test -- To view, visit https://gerrit.osmocom.org/7643 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: I098d9d84d9ce89b1dab204b90d2cd7ee7b3f19c9 Gerrit-PatchSet: 1 Gerrit-Project: docker-playground Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Neels Hofmeyr From jenkins at lists.osmocom.org Thu Apr 5 16:37:45 2018 From: jenkins at lists.osmocom.org (jenkins at lists.osmocom.org) Date: Thu, 5 Apr 2018 16:37:45 +0000 (UTC) Subject: =?UTF-8?Q?Jenkins_build_is_back_to_normal_:_master-libosmocore_=C2=BB_?= =?UTF-8?Q?a2=3Ddefault,a3=3Ddefault,amd64,osmocom-master-debian9_#190?= In-Reply-To: <1381258592.30.1522936563745.JavaMail.jenkins@jenkins.osmocom.org> References: <1381258592.30.1522936563745.JavaMail.jenkins@jenkins.osmocom.org> Message-ID: <1627769062.33.1522946265025.JavaMail.jenkins@jenkins.osmocom.org> See From jenkins at lists.osmocom.org Thu Apr 5 16:38:48 2018 From: jenkins at lists.osmocom.org (jenkins at lists.osmocom.org) Date: Thu, 5 Apr 2018 16:38:48 +0000 (UTC) Subject: =?UTF-8?Q?Jenkins_build_is_back_to_normal_:_master-osmo-gmr_=C2=BB_a1=3Dd?= =?UTF-8?Q?efault,a2=3Ddefault,a3=3Ddefault,osmocom-master-debian9_#330?= In-Reply-To: <544515688.21.1522886263002.JavaMail.jenkins@jenkins.osmocom.org> References: <544515688.21.1522886263002.JavaMail.jenkins@jenkins.osmocom.org> Message-ID: <1569515723.34.1522946328805.JavaMail.jenkins@jenkins.osmocom.org> See From gerrit-no-reply at lists.osmocom.org Thu Apr 5 16:42:22 2018 From: gerrit-no-reply at lists.osmocom.org (Neels Hofmeyr) Date: Thu, 5 Apr 2018 16:42:22 +0000 Subject: osmo-ttcn3-hacks[master]: add compare-results.sh, call from start-testsuite.sh In-Reply-To: References: Message-ID: Patch Set 1: > I believe we had this discussion and the conclusion was that we > split the tests into two TTCN-3 modules so we have BTS_Tests and > BTS_Tests_xfail or something like that? That was one of the ideas. Even if we do that, I still want a human readable summary (that tells me what changed). I think having separate suites is not so good, since we constantly need to move code around as tests start passing. This summary does what I need without so much as touching anything else. > Also, I'm quite critical of this in general. We should focus on > fixing all bugs the testsuite produces, rather than trying to hide > some of the failures. To see the failures, I actually need to be able to read them. And there's nothing more rewarding than updating expected test results to squat one more xfail from the list. It's not hiding, it's making more visible, IMHO. -- To view, visit https://gerrit.osmocom.org/7646 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I87d62a8be73d73a5eeff61a842e7c27a0066079d Gerrit-PatchSet: 1 Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Neels Hofmeyr Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Thu Apr 5 19:44:40 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Thu, 5 Apr 2018 19:44:40 +0000 Subject: [PATCH] osmo-bts[master]: fix activation of osmocom-style dynamic PDCH as TCH/F or TCH/H Message-ID: Review at https://gerrit.osmocom.org/7652 fix activation of osmocom-style dynamic PDCH as TCH/F or TCH/H in change-id Iebd2571726d1284a7431b3f9b23ad3185e832ed1 we introduced tighter validation on whether the requested channel number matches the underlying physical channel configuration. Unfortunately this broke activation of an osmocom-style dynamic PDCH as TCH/F or TCH/H rsl_lchan_lookup already permitted a chan_nr if the dynamic PDCH was already switched to the given TCH mode, or at least the related switching had already been initiated. However, in the case of the bug, the current type is NONE, which means that the compatibility check of rsl_lchan_lookup will fail Let's relax the checks of rsl_lchan_lookup() slightly to permit matching for "ts->dyn.pchan_is == GSM_PCHAN_NONE" cases. This fixes BTS_Tests.TC_dyn_osmo_pdch_tchh_act and BTS_Tests.TC_dyn_osmo_pdch_tchf_act Change-Id: I14ae4c4ed2aae0966e5cb5116cf024d6bd890237 Related: OS#3134 --- M src/common/gsm_data_shared.c 1 file changed, 2 insertions(+), 0 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-bts refs/changes/52/7652/1 diff --git a/src/common/gsm_data_shared.c b/src/common/gsm_data_shared.c index 3fb31bf..553c09b 100644 --- a/src/common/gsm_data_shared.c +++ b/src/common/gsm_data_shared.c @@ -709,6 +709,7 @@ ts->pchan != GSM_PCHAN_TCH_F_PDCH && !(ts->pchan == GSM_PCHAN_TCH_F_TCH_H_PDCH && (ts->dyn.pchan_is == GSM_PCHAN_TCH_F + || ts->dyn.pchan_is == GSM_PCHAN_NONE || ts->dyn.pchan_want == GSM_PCHAN_TCH_F))) ok = false; } else if ((cbits & 0x1e) == 0x02) { @@ -716,6 +717,7 @@ if (ts->pchan != GSM_PCHAN_TCH_H && !(ts->pchan == GSM_PCHAN_TCH_F_TCH_H_PDCH && (ts->dyn.pchan_is == GSM_PCHAN_TCH_H + || ts->dyn.pchan_is == GSM_PCHAN_NONE || ts->dyn.pchan_want == GSM_PCHAN_TCH_H))) ok = false; } else if ((cbits & 0x1c) == 0x04) { -- To view, visit https://gerrit.osmocom.org/7652 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I14ae4c4ed2aae0966e5cb5116cf024d6bd890237 Gerrit-PatchSet: 1 Gerrit-Project: osmo-bts Gerrit-Branch: master Gerrit-Owner: Harald Welte From gerrit-no-reply at lists.osmocom.org Thu Apr 5 19:53:58 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Thu, 5 Apr 2018 19:53:58 +0000 Subject: osmo-bts[master]: fix activation of osmocom-style dynamic PDCH as TCH/F or TCH/H In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+1 let's see what neels has to say -- To view, visit https://gerrit.osmocom.org/7652 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I14ae4c4ed2aae0966e5cb5116cf024d6bd890237 Gerrit-PatchSet: 1 Gerrit-Project: osmo-bts Gerrit-Branch: master Gerrit-Owner: Harald Welte Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: neels Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Thu Apr 5 19:54:05 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Thu, 5 Apr 2018 19:54:05 +0000 Subject: osmo-ttcn3-hacks[master]: add compare-results.sh, call from start-testsuite.sh In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7646 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I87d62a8be73d73a5eeff61a842e7c27a0066079d Gerrit-PatchSet: 1 Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Neels Hofmeyr Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Thu Apr 5 19:56:20 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Thu, 5 Apr 2018 19:56:20 +0000 Subject: libosmo-netif[master]: stream.c: osmo_stream_cli_open2: Remove wrong assumption in ... In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+1 I'm not entirely sure if this is the right approach. Aren't there fatal/permanent causes in which connect() can fail and there's no point in trying to reconnect? I mean, if the connection is refused or times out, reconnecting is fine. But what if the local port the user has specified is used by some other program? Maybe I'm worrying too much... So this is not a veto, just a hunch that this might be a bit too "agressive"? -- To view, visit https://gerrit.osmocom.org/7650 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I25b33f4cdc496ae31ff240d445b9b2805091845c Gerrit-PatchSet: 1 Gerrit-Project: libosmo-netif Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Thu Apr 5 19:56:28 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Thu, 5 Apr 2018 19:56:28 +0000 Subject: osmo-ttcn3-hacks[master]: bts: Add first tests about IPA style dynamic PDCH In-Reply-To: References: Message-ID: Patch Set 2: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7644 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I56d8b0284e8e4eee4ce6454f7a495ee09c40fe42 Gerrit-PatchSet: 2 Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Owner: Harald Welte Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Thu Apr 5 19:56:29 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Thu, 5 Apr 2018 19:56:29 +0000 Subject: [MERGED] osmo-ttcn3-hacks[master]: bts: Add first tests about IPA style dynamic PDCH In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: bts: Add first tests about IPA style dynamic PDCH ...................................................................... bts: Add first tests about IPA style dynamic PDCH Change-Id: I56d8b0284e8e4eee4ce6454f7a495ee09c40fe42 --- M bts/BTS_Tests.ttcn 1 file changed, 181 insertions(+), 1 deletion(-) Approvals: Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/bts/BTS_Tests.ttcn b/bts/BTS_Tests.ttcn index 5316696..6f34e03 100644 --- a/bts/BTS_Tests.ttcn +++ b/bts/BTS_Tests.ttcn @@ -2635,7 +2635,7 @@ } /*********************************************************************** - * Dynamic Timeslot Support + * Osmocom Style Dynamic Timeslot Support ***********************************************************************/ private function f_dyn_osmo_pdch_act(integer pcu_conn_id, integer bts_nr, integer trx_nr) @@ -2817,6 +2817,182 @@ vc_conn.done; } +/*********************************************************************** + * IPA Style Dynamic Timeslot Support + ***********************************************************************/ + +private function f_dyn_ipa_pdch_act(integer pcu_conn_id, integer bts_nr, integer trx_nr) +runs on ConnHdlr { + var PCUIF_send_data sd; + /* Expect BTS to immediately acknowledge activation as PDCH */ + PCU.clear; + RSL.send(ts_RSL_IPA_PDCH_ACT(g_chan_nr)); + /* expect INFO_IND on PCU interface listing TS as PDCH */ + alt { + [] PCU.receive(t_SD_PCUIF(pcu_conn_id, tr_PCUIF_INFO_IND(bts_nr, ?))) -> value sd { + if (substr(sd.data.u.info_ind.trx[trx_nr].pdch_mask, g_chan_nr.tn, 1) != '1'B) { + setverdict(fail, "PCUIF_INFO_IND PDCH_MASK not '1' after PDCH ACT"); + self.stop; + } + } + [] PCU.receive { repeat; } + } + /* try to activate this PDCH from the PCU point of view */ + PCU.send(t_SD_PCUIF(pcu_conn_id, ts_PCUIF_ACT_REQ(bts_nr, trx_nr, g_chan_nr.tn))); + /* FIXME: is there a response? */ + + RSL.receive(tr_RSL_IPA_PDCH_ACT_ACK(g_chan_nr, ?)); +} + +private function f_dyn_ipa_pdch_deact(integer pcu_conn_id, integer bts_nr, integer trx_nr) +runs on ConnHdlr { + var PCUIF_send_data sd; + /* Send RSL CHAN REL (deactivate) */ + RSL.send(ts_RSL_IPA_PDCH_DEACT(g_chan_nr)); + PCU.clear; + /* expect BTS to ask PCU to deactivate the channel */ + alt { + [] PCU.receive(t_SD_PCUIF(pcu_conn_id, tr_PCUIF_INFO_IND(bts_nr, ?))) -> value sd { + if (substr(sd.data.u.info_ind.trx[trx_nr].pdch_mask, g_chan_nr.tn, 1) != '0'B) { + setverdict(fail, "PCUIF_INFO_IND PDCH_MASK not '0' after PDCH DEACT"); + self.stop; + } + } + [] PCU.receive { repeat; } + } + /* Emulate PCU asking BTS to deactivate PDCH */ + PCU.send(t_SD_PCUIF(pcu_conn_id, ts_PCUIF_DEACT_REQ(bts_nr, trx_nr, g_chan_nr.tn))); + alt { + [] RSL.receive(tr_RSL_IPA_PDCH_DEACT_ACK(g_chan_nr)) { + setverdict(pass); + } + [] RSL.receive { repeat; } + } +} + +/* Activate and de-activate an IPA-style dynamic TCH/F + PDCH */ +function f_TC_dyn_ipa_pdch_act_deact(charstring id) runs on ConnHdlr { + var PCUIF_Message first_info; + var integer ts_nr := g_chan_nr.tn; + var integer trx_nr := 0; + var integer bts_nr := 0; + var integer pcu_conn_id := -1; + + f_init_pcu(PCU, id, pcu_conn_id, first_info); + + f_dyn_ipa_pdch_act(pcu_conn_id, bts_nr, trx_nr); + f_sleep(3.0); + f_dyn_ipa_pdch_deact(pcu_conn_id, bts_nr, trx_nr); + + setverdict(pass); + +} +testcase TC_dyn_ipa_pdch_act_deact() runs on test_CT { + var ConnHdlrPars pars; + var ConnHdlr vc_conn; + f_init(); + + pars := valueof(t_Pars(t_RslChanNr_Bm(3), ts_RSL_ChanMode_SIGN)); + vc_conn := f_start_handler(refers(f_TC_dyn_ipa_pdch_act_deact), pars, true); + vc_conn.done; +} + +/* try to RSL CHAN ACT a TCH/F on an IPA-style PDCH */ +function f_TC_dyn_ipa_pdch_tchf_act(charstring id) runs on ConnHdlr { + var PCUIF_Message first_info; + var integer ts_nr := g_chan_nr.tn; + var integer trx_nr := 0; + var integer bts_nr := 0; + var integer pcu_conn_id := -1; + + f_init_pcu(PCU, id, pcu_conn_id, first_info); + + f_rsl_transceive(ts_RSL_CHAN_ACT(g_chan_nr, g_pars.chan_mode), tr_RSL_CHAN_ACT_ACK(g_chan_nr), + "RSL CHAN ACT"); + f_rsl_transceive(ts_RSL_RF_CHAN_REL(g_chan_nr), tr_RSL_RF_CHAN_REL_ACK(g_chan_nr), + "RF CHAN REL", true); + setverdict(pass); +} +testcase TC_dyn_ipa_pdch_tchf_act() runs on test_CT { + var ConnHdlrPars pars; + var ConnHdlr vc_conn; + f_init(testcasename()); + + pars := valueof(t_Pars(t_RslChanNr_Bm(3), ts_RSL_ChanMode_SIGN)); + vc_conn := f_start_handler(refers(f_TC_dyn_ipa_pdch_tchf_act), pars, true); + vc_conn.done; +} + +/* Activate IPA style dyn PDCH as TCH/F and then illegally try to activate it as PDCH, too */ +function f_TC_dyn_ipa_pdch_tchf_act_pdch_act_nack(charstring id) runs on ConnHdlr { + var PCUIF_Message first_info; + var integer ts_nr := g_chan_nr.tn; + var integer trx_nr := 0; + var integer bts_nr := 0; + var integer pcu_conn_id := -1; + + f_init_pcu(PCU, id, pcu_conn_id, first_info); + + f_rsl_transceive(ts_RSL_CHAN_ACT(g_chan_nr, g_pars.chan_mode), tr_RSL_CHAN_ACT_ACK(g_chan_nr), + "RSL CHAN ACT"); + + RSL.send(ts_RSL_IPA_PDCH_ACT(g_chan_nr)); + alt { + [] RSL.receive(tr_RSL_IPA_PDCH_ACT_NACK(g_chan_nr, ?)); + [] RSL.receive(tr_RSL_IPA_PDCH_ACT_ACK(g_chan_nr, ?)) { + setverdict(fail, "Unexpected PDCH ACT ACK"); + self.stop; + } + [] RSL.receive { repeat; } + } + + f_rsl_transceive(ts_RSL_RF_CHAN_REL(g_chan_nr), tr_RSL_RF_CHAN_REL_ACK(g_chan_nr), + "RF CHAN REL", true); + setverdict(pass); +} +testcase TC_dyn_ipa_pdch_tchf_act_pdch_act_nack() runs on test_CT { + var ConnHdlrPars pars; + var ConnHdlr vc_conn; + f_init(testcasename()); + + pars := valueof(t_Pars(t_RslChanNr_Bm(3), ts_RSL_ChanMode_SIGN)); + vc_conn := f_start_handler(refers(f_TC_dyn_ipa_pdch_tchf_act_pdch_act_nack), pars, true); + vc_conn.done; +} + +/* try to RSL CHAN ACT a TCH/F on an IPA-style PDCH that's already in PDCH mode; expect NACK */ +function f_TC_dyn_ipa_pdch_act_tchf_act_nack(charstring id) runs on ConnHdlr { + var PCUIF_Message first_info; + var integer ts_nr := g_chan_nr.tn; + var integer trx_nr := 0; + var integer bts_nr := 0; + var integer pcu_conn_id := -1; + + /* register for the TCH/F channel number */ + f_rslem_register(0, g_chan_nr); + + f_init_pcu(PCU, id, pcu_conn_id, first_info); + + f_dyn_ipa_pdch_act(pcu_conn_id, bts_nr, trx_nr); + + f_rsl_transceive(ts_RSL_CHAN_ACT(g_chan_nr, g_pars.chan_mode), tr_RSL_CHAN_ACT_NACK(g_chan_nr), + "RSL CHAN ACT"); + + f_dyn_ipa_pdch_deact(pcu_conn_id, bts_nr, trx_nr); + + setverdict(pass); +} +testcase TC_dyn_ipa_pdch_act_tchf_act_nack() runs on test_CT { + var ConnHdlrPars pars; + var ConnHdlr vc_conn; + f_init(testcasename()); + + pars := valueof(t_Pars(t_RslChanNr_Bm(3), ts_RSL_ChanMode_SIGN)); + vc_conn := f_start_handler(refers(f_TC_dyn_ipa_pdch_act_tchf_act_nack), pars, true); + vc_conn.done; +} + + /* TODO Areas: @@ -2915,6 +3091,10 @@ execute( TC_dyn_osmo_pdch_double_act() ); execute( TC_dyn_osmo_pdch_tchf_act() ); execute( TC_dyn_osmo_pdch_tchh_act() ); + execute( TC_dyn_ipa_pdch_act_deact() ); + execute( TC_dyn_ipa_pdch_tchf_act() ); + execute( TC_dyn_ipa_pdch_tchf_act_pdch_act_nack() ); + execute( TC_dyn_ipa_pdch_act_tchf_act_nack() ); } -- To view, visit https://gerrit.osmocom.org/7644 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: I56d8b0284e8e4eee4ce6454f7a495ee09c40fe42 Gerrit-PatchSet: 2 Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Owner: Harald Welte Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder From gerrit-no-reply at lists.osmocom.org Thu Apr 5 19:57:07 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Thu, 5 Apr 2018 19:57:07 +0000 Subject: libosmocore[master]: gsm0480: fix: don't overwrite the data of RELEASE_COMPLETE In-Reply-To: References: Message-ID: Patch Set 2: Code-Review+1 -- To view, visit https://gerrit.osmocom.org/7631 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I0c85292222749a48ca0c4b2e93f4fa2d61468c18 Gerrit-PatchSet: 2 Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Owner: Vadim Yanitskiy Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Thu Apr 5 19:57:25 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Thu, 5 Apr 2018 19:57:25 +0000 Subject: libosmocore[master]: GSUP: add USSD messages support according to 3GPP TS 09.02 In-Reply-To: References: Message-ID: Patch Set 3: Code-Review+1 looks fine, let's wait for OSmoMSC patches -- To view, visit https://gerrit.osmocom.org/7600 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Ie17a78043a35fffbdd59e80fd2b2da39cce5e532 Gerrit-PatchSet: 3 Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Owner: Vadim Yanitskiy Gerrit-Reviewer: Alexander Chemeris Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Vadim Yanitskiy Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Thu Apr 5 19:57:36 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Thu, 5 Apr 2018 19:57:36 +0000 Subject: [MERGED] libosmocore[master]: socket.c: osmo_sock_init2: connect: Several logic fixes and ... In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: socket.c: osmo_sock_init2: connect: Several logic fixes and log improvements ...................................................................... socket.c: osmo_sock_init2: connect: Several logic fixes and log improvements See explanations in previous commits. Change-Id: Ib2f7577b9f498ae9d388ed1f79f6ca0ec6f09664 --- M src/socket.c 1 file changed, 17 insertions(+), 8 deletions(-) Approvals: Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/src/socket.c b/src/socket.c index 2310d75..0e0aa24 100644 --- a/src/socket.c +++ b/src/socket.c @@ -242,7 +242,8 @@ if (flags & OSMO_SOCK_F_CONNECT) { result = addrinfo_helper(family, type, proto, remote_host, remote_port, false); if (!result) { - close(sfd); + if (sfd >= 0) + close(sfd); return -EINVAL; } @@ -260,16 +261,24 @@ } rc = connect(sfd, rp->ai_addr, rp->ai_addrlen); - if (rc != -1 || (rc == -1 && errno == EINPROGRESS)) - break; - - close(sfd); - sfd = -1; + if (rc != 0 && errno != EINPROGRESS) { + LOGP(DLGLOBAL, LOGL_ERROR, "unable to connect socket: %s:%u: %s\n", + remote_host, remote_port, strerror(errno)); + /* We want to maintain the bind socket if bind was enabled */ + if (!(flags & OSMO_SOCK_F_BIND)) { + close(sfd); + sfd = -1; + } + continue; + } + break; } freeaddrinfo(result); if (rp == NULL) { - LOGP(DLGLOBAL, LOGL_ERROR, "unable to connect socket: %s:%u: %s\n", - remote_host, remote_port, strerror(errno)); + LOGP(DLGLOBAL, LOGL_ERROR, "no suitable remote addr found for: %s:%u\n", + remote_host, remote_port); + if (sfd >= 0) + close(sfd); return -ENODEV; } } -- To view, visit https://gerrit.osmocom.org/7648 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: Ib2f7577b9f498ae9d388ed1f79f6ca0ec6f09664 Gerrit-PatchSet: 2 Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder From gerrit-no-reply at lists.osmocom.org Thu Apr 5 19:57:36 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Thu, 5 Apr 2018 19:57:36 +0000 Subject: [MERGED] libosmocore[master]: socket.c: osmo_sock_init: Several logic fixes and log improv... In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: socket.c: osmo_sock_init: Several logic fixes and log improvements ...................................................................... socket.c: osmo_sock_init: Several logic fixes and log improvements See explanations in previous commit. Change-Id: I4889e777d8627fdfb52c97ab3ab353b6ed34aab2 --- M src/socket.c 1 file changed, 16 insertions(+), 8 deletions(-) Approvals: Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/src/socket.c b/src/socket.c index 0e0aa24..d96f664 100644 --- a/src/socket.c +++ b/src/socket.c @@ -339,8 +339,10 @@ if (flags & OSMO_SOCK_F_CONNECT) { rc = connect(sfd, rp->ai_addr, rp->ai_addrlen); - if (rc != -1 || (rc == -1 && errno == EINPROGRESS)) - break; + if (rc != 0 && errno != EINPROGRESS) { + close(sfd); + continue; + } } else { rc = setsockopt(sfd, SOL_SOCKET, SO_REUSEADDR, &on, sizeof(on)); @@ -349,18 +351,24 @@ "cannot setsockopt socket:" " %s:%u: %s\n", host, port, strerror(errno)); - break; + close(sfd); + continue; } - if (bind(sfd, rp->ai_addr, rp->ai_addrlen) != -1) - break; + if (bind(sfd, rp->ai_addr, rp->ai_addrlen) == -1) { + LOGP(DLGLOBAL, LOGL_ERROR, "unable to bind socket:" + "%s:%u: %s\n", + host, port, strerror(errno)); + close(sfd); + continue; + } } - close(sfd); + break; } freeaddrinfo(result); if (rp == NULL) { - LOGP(DLGLOBAL, LOGL_ERROR, "unable to connect/bind socket: %s:%u: %s\n", - host, port, strerror(errno)); + LOGP(DLGLOBAL, LOGL_ERROR, "no suitable addr found for: %s:%u\n", + host, port); return -ENODEV; } -- To view, visit https://gerrit.osmocom.org/7649 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: I4889e777d8627fdfb52c97ab3ab353b6ed34aab2 Gerrit-PatchSet: 2 Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder From gerrit-no-reply at lists.osmocom.org Thu Apr 5 19:57:36 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Thu, 5 Apr 2018 19:57:36 +0000 Subject: [MERGED] libosmocore[master]: socket.c: osmo_sock_init2: bind: Several logic fixes and log... In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: socket.c: osmo_sock_init2: bind: Several logic fixes and log improvements ...................................................................... socket.c: osmo_sock_init2: bind: Several logic fixes and log improvements After investigating osmo-msc showing this log message and looking at the code, it's a bit difficult to find out what's going on in the code: socket.c:224 unable to bind socket: (null):0: Protocol not supported The root cause was not yet found, but probably SCTP is not enabled in the kernel of the host running it. The cod eis most probably failing during socket() and not due to bind error as the log says, so let's print an error if socket() fails. Then, if setsockopt fails, we want to still keep trying in case an extra addr was offered by addrinfo_helper. It is definetly wrong to continue if setsockopt fails, because then we are skipping the bind(), which is a fundamental part of what osmo_sock_init2 does. Then, let's print the bind error when it really happens, and re-write the extra log at the end if we reach the point at which no suitable addr is found. Change-Id: I1854422ad92dadf33ed4d849e15c0380c3bf1626 --- M src/socket.c 1 file changed, 19 insertions(+), 7 deletions(-) Approvals: Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/src/socket.c b/src/socket.c index 0378970..2310d75 100644 --- a/src/socket.c +++ b/src/socket.c @@ -91,8 +91,11 @@ int sfd, on = 1; sfd = socket(rp->ai_family, rp->ai_socktype, rp->ai_protocol); - if (sfd == -1) + if (sfd == -1) { + LOGP(DLGLOBAL, LOGL_ERROR, + "unable to create socket: %s\n", strerror(errno)); return sfd; + } if (flags & OSMO_SOCK_F_NONBLOCK) { if (ioctl(sfd, FIONBIO, (unsigned char *)&on) < 0) { LOGP(DLGLOBAL, LOGL_ERROR, @@ -212,20 +215,29 @@ "cannot setsockopt socket:" " %s:%u: %s\n", local_host, local_port, strerror(errno)); - break; + close(sfd); + continue; } - if (bind(sfd, rp->ai_addr, rp->ai_addrlen) != -1) - break; - close(sfd); + if (bind(sfd, rp->ai_addr, rp->ai_addrlen) == -1) { + LOGP(DLGLOBAL, LOGL_ERROR, "unable to bind socket: %s:%u: %s\n", + local_host, local_port, strerror(errno)); + close(sfd); + continue; + } + break; } freeaddrinfo(result); if (rp == NULL) { - LOGP(DLGLOBAL, LOGL_ERROR, "unable to bind socket: %s:%u: %s\n", - local_host, local_port, strerror(errno)); + LOGP(DLGLOBAL, LOGL_ERROR, "no suitable local addr found for: %s:%u\n", + local_host, local_port); return -ENODEV; } } + /* Reached this point, if OSMO_SOCK_F_BIND then sfd is valid (>=0) or it + was already closed and func returned. If OSMO_SOCK_F_BIND is not + set, then sfd = -1 */ + /* figure out remote side of socket */ if (flags & OSMO_SOCK_F_CONNECT) { result = addrinfo_helper(family, type, proto, remote_host, remote_port, false); -- To view, visit https://gerrit.osmocom.org/7645 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: I1854422ad92dadf33ed4d849e15c0380c3bf1626 Gerrit-PatchSet: 3 Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder From gerrit-no-reply at lists.osmocom.org Thu Apr 5 19:57:50 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Thu, 5 Apr 2018 19:57:50 +0000 Subject: [MERGED] osmo-hlr[master]: more robust usage of osmo_timer API for osmo-hlr luop timer In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: more robust usage of osmo_timer API for osmo-hlr luop timer ...................................................................... more robust usage of osmo_timer API for osmo-hlr luop timer Use osmo_timer_setup() to set up the luop timer, instead of settting the timer up manually. Delete the timer before the luop is freed to prevent a potential crash in case the timer is already armed and the function call chain leading up to lu_op_free() does not cancel the timer. Found while studying code to prepare work on issue OS#2785. This change has been tested with 'make check' and TTCN3 HLR tests. Related: OS#2785 Change-Id: I1a7596675b2d94217895f0f3d3f67b86ef123c2e --- M src/luop.c 1 file changed, 5 insertions(+), 2 deletions(-) Approvals: Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/src/luop.c b/src/luop.c index 4ef4ea3..02c41d0 100644 --- a/src/luop.c +++ b/src/luop.c @@ -108,8 +108,7 @@ luop = talloc_zero(srv, struct lu_operation); OSMO_ASSERT(luop); luop->gsup_server = srv; - luop->timer.cb = lu_op_timer_cb; - luop->timer.data = luop; + osmo_timer_setup(&luop->timer, lu_op_timer_cb, luop); return luop; } @@ -119,6 +118,10 @@ /* Only attempt to remove when it was ever added to a list. */ if (luop->list.next) llist_del(&luop->list); + + /* Delete timer just in case it is still pending. */ + osmo_timer_del(&luop->timer); + talloc_free(luop); } -- To view, visit https://gerrit.osmocom.org/7587 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: I1a7596675b2d94217895f0f3d3f67b86ef123c2e Gerrit-PatchSet: 1 Gerrit-Project: osmo-hlr Gerrit-Branch: master Gerrit-Owner: Stefan Sperling Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder From gerrit-no-reply at lists.osmocom.org Thu Apr 5 19:58:18 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Thu, 5 Apr 2018 19:58:18 +0000 Subject: [MERGED] osmo-gsm-tester[master]: ms: Add a main function to start all of it In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: ms: Add a main function to start all of it ...................................................................... ms: Add a main function to start all of it Add a main file to start everything. All parameters need to be made configurable. Composition of testcase and IMSI ranges need to be configurable as well. This is left for future commits. Right now it can execute a single UL test. Start with: export PATH=../osmocom-bb/src/host/layer23/src/mobile:$PATH export PATH=../osmocom-bb/src/host/virt_phy/src/:$PATH export PYTHONPATH=$PWD/src python3 -mosmo_ms_driver Change-Id: I58c938500a067eebb213750e56d8bf4d8af43df2 --- A src/osmo_ms_driver/__main__.py 1 file changed, 79 insertions(+), 0 deletions(-) Approvals: Pau Espin Pedrol: Looks good to me, approved Harald Welte: Looks good to me, but someone else must approve Jenkins Builder: Verified diff --git a/src/osmo_ms_driver/__main__.py b/src/osmo_ms_driver/__main__.py new file mode 100644 index 0000000..6b61d64 --- /dev/null +++ b/src/osmo_ms_driver/__main__.py @@ -0,0 +1,79 @@ +# osmo_ms_driver: Main test runner +# +# Copyright (C) 2018 by Holger Hans Peter Freyther +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +# Local modules +from .event_server import EventServer +from .simple_loop import SimpleLoop +from .location_update_test import MassUpdateLocationTest +from .cdf import ease_in_out_duration, linear_with_duration +from osmo_gsm_tester import log + +# System modules +import datetime +import subprocess +import signal +import tempfile +import os.path + + +def main(): + # Create a default log to stdout + log.LogTarget().style(src=False) + + # We don't care what is happening to child processes we spawn! + signal.signal(signal.SIGCHLD, signal.SIG_IGN) + + loop = SimpleLoop() + + # TODO: Parse parameters and test composition. Right now we test + # with a single set of values. + num_ms = 10 + + tmp_dir = tempfile.mkdtemp(suffix="osmo-ms-driver") + log.log("Going to store files in ", tmp_dir=tmp_dir) + + # How long should starting all apps take + time_start=datetime.timedelta(seconds=60) + # In which steps to start processes + time_step=datetime.timedelta(milliseconds=100) + + # Event server path + event_server_path = os.path.join(tmp_dir, "osmo_ms_driver.unix") + + # The function that decides when to start something + cdf = ease_in_out_duration(time_start, time_step) + + # Event server to handle MS->test events + ev_server = EventServer("ev_server", event_server_path) + ev_server.listen(loop) + #while True: + # loop.select() + + # Just a single test for now. + test = MassUpdateLocationTest("lu_test", num_ms, cdf, ev_server, tmp_dir) + + # Run until everything has been launched + test.launch(loop) + + # Wait for it to complete + test.wait_for_result(loop) + + # Print stats + test.print_stats() + +if __name__ == '__main__': + main() -- To view, visit https://gerrit.osmocom.org/6919 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: I58c938500a067eebb213750e56d8bf4d8af43df2 Gerrit-PatchSet: 11 Gerrit-Project: osmo-gsm-tester Gerrit-Branch: master Gerrit-Owner: Holger Freyther Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Pau Espin Pedrol Gerrit-Reviewer: neels From gerrit-no-reply at lists.osmocom.org Thu Apr 5 19:58:19 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Thu, 5 Apr 2018 19:58:19 +0000 Subject: [MERGED] osmo-gsm-tester[master]: ms: Lua part of location update testing In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: ms: Lua part of location update testing ...................................................................... ms: Lua part of location update testing The lua part to start the MS and then signal the first successful Location Update. Change-Id: Ica5aa0c2f86d0e5d8a2bc4dc0652de18762dd156 --- A src/osmo_gsm_tester/templates/osmo-mobile-lu.lua.tmpl 1 file changed, 18 insertions(+), 0 deletions(-) Approvals: Pau Espin Pedrol: Looks good to me, approved Jenkins Builder: Verified diff --git a/src/osmo_gsm_tester/templates/osmo-mobile-lu.lua.tmpl b/src/osmo_gsm_tester/templates/osmo-mobile-lu.lua.tmpl new file mode 100644 index 0000000..c25d799 --- /dev/null +++ b/src/osmo_gsm_tester/templates/osmo-mobile-lu.lua.tmpl @@ -0,0 +1,18 @@ +package.path = '${test.lua_support}/?.lua;' .. package.path +event = require('ms_support') +send = 1 + +function mm_cb(new_state, new_substate, old_substate) + if new_state == 19 and new_substate == 1 and send == 1 then + send = 0 + event.send({lu_done=1}) + end +end + +local cbs = { + Mm=mm_cb +} +osmo.ms():register(cbs) +osmo.ms().start() + +event.register(osmo.ms():number(), "${test.event_path}") -- To view, visit https://gerrit.osmocom.org/6232 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: Ica5aa0c2f86d0e5d8a2bc4dc0652de18762dd156 Gerrit-PatchSet: 11 Gerrit-Project: osmo-gsm-tester Gerrit-Branch: master Gerrit-Owner: Holger Freyther Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Holger Freyther Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Pau Espin Pedrol Gerrit-Reviewer: Vadim Yanitskiy From gerrit-no-reply at lists.osmocom.org Thu Apr 5 19:58:19 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Thu, 5 Apr 2018 19:58:19 +0000 Subject: [MERGED] osmo-gsm-tester[master]: ms: Add a first test to use all parts of the system In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: ms: Add a first test to use all parts of the system ...................................................................... ms: Add a first test to use all parts of the system This is an interim solution but is bringing all parts together. We will need to: * Abstract this into a base class * Be able to mix different tests without interfering with each other (e.g. 10k LU tests, 2k SMS sending) * The event loop will need to handle multiple timers/timeouts * Stats printing should print more information and test pass/fail * The test should quit early if everything has already passed Change-Id: Id3277ed0f0f9ee734569bedd4752564eb68c9cfd --- A src/osmo_ms_driver/location_update_test.py 1 file changed, 207 insertions(+), 0 deletions(-) Approvals: Pau Espin Pedrol: Looks good to me, approved Jenkins Builder: Verified diff --git a/src/osmo_ms_driver/location_update_test.py b/src/osmo_ms_driver/location_update_test.py new file mode 100644 index 0000000..2d661ca --- /dev/null +++ b/src/osmo_ms_driver/location_update_test.py @@ -0,0 +1,207 @@ +# osmo_ms_driver: Starter for processes +# Help to start processes over time. +# +# Copyright (C) 2018 by Holger Hans Peter Freyther +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + + +from osmo_gsm_tester import log +from .starter import OsmoVirtPhy, OsmoMobile + +from datetime import timedelta + +import time + +def imsi_ki_gen(): + """ + Generate IMSIs and KIs to be used by test. + """ + n = 1010000000000 + while True: + yield ("%.15d" % n, "00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00") + n += 1 + +class Results(log.Origin): + + def __init__(self, name): + super().__init__(log.C_RUN, name) + self._time_of_registration = None + self._time_of_launch = None + self._time_of_lu = None + + def set_start_time(self, time): + assert self._time_of_registration is None + self._time_of_registration = time + + def set_launch_time(self, time): + assert self._time_of_launch is None + self._time_of_launch = time + + def set_lu_time(self, time): + assert self._time_of_lu is None + self._time_of_lu = time + + def start_time(self): + return self._time_of_registration or 0 + + def launch_time(self): + return self._time_of_launch or 0 + + def lu_time(self): + return self._time_of_lu or 0 + + def lu_delay(self): + return self.lu_time() - self.start_time() + +class MassUpdateLocationTest(log.Origin): + """ + A test to launch a configurable amount of MS and make them + execute a Location Updating Procedure. + + Configure the number of MS to be tested and a function that + decides how quickly to start them and a timeout. + """ + + TEMPLATE_LUA = "osmo-mobile-lu.lua" + TEMPLATE_CFG = "osmo-mobile.cfg" + TEST_TIME = timedelta(seconds=120) + + def __init__(self, name, number_of_ms, cdf_function, event_server, tmp_dir): + super().__init__(log.C_RUN, name) + self._number_of_ms = number_of_ms + self._cdf = cdf_function + self._cdf.set_target(number_of_ms) + self._unstarted = [] + self._phys = [] + self._results = {} + imsi_gen = imsi_ki_gen() + + for i in range(0, number_of_ms): + ms_name = "%.5d" % i + + phy = OsmoVirtPhy(ms_name, tmp_dir) + self._phys.append(phy) + + launcher = OsmoMobile(ms_name, tmp_dir, self.TEMPLATE_LUA, + self.TEMPLATE_CFG, imsi_gen, + phy.phy_filename(), + event_server.server_path()) + self._results[ms_name] = Results(ms_name) + self._unstarted.append(launcher) + self._event_server = event_server + self._event_server.register(self.handle_msg) + + def pre_launch(self, loop): + """ + We need the virtphy's be ready when the lua script in the + mobile comes and kicks-off the test. In lua we don't seem to + be able to just stat/check if a file/socket exists so we need + to do this from here. + """ + self.log("Pre-launching all virtphy's") + for phy in self._phys: + phy.start(loop) + + self.log("Checking if sockets are in the filesystem") + for phy in self._phys: + phy.verify_ready() + + def launch(self, loop): + self.log("Starting testcase") + + self.pre_launch(loop) + + self._start_time = time.clock_gettime(time.CLOCK_MONOTONIC) + self._end_time = self._start_time + \ + self._cdf.duration().total_seconds() + \ + timedelta(seconds=120).total_seconds() + + current_time = self._start_time + step_size = self._cdf.step_size().total_seconds() + self._started = [] + too_slow = 0 + + # Start + self._cdf.step_once() + + while len(self._unstarted) > 0: + # Check for timeout + # start pending MS + while len(self._started) < self._cdf.current_scaled_value() and len(self._unstarted) > 0: + ms = self._unstarted.pop(0) + ms.start(loop) + launch_time = time.clock_gettime(time.CLOCK_MONOTONIC) + self._results[ms.name_number()].set_launch_time(launch_time) + self._started.append(ms) + + # Progress and sleep + self._cdf.step_once() + + now_time = time.clock_gettime(time.CLOCK_MONOTONIC) + sleep_time = (current_time + step_size) - now_time + if sleep_time <= 0: + self.log("Starting too slowly. Moving on", + target=(current_time + step_size), now=now_time, sleep=sleep_time) + too_slow += 1 + else: + loop.schedule_timeout(sleep_time) + loop.select() + current_time += step_size + + end_time = time.clock_gettime(time.CLOCK_MONOTONIC) + self.log("All started...", too_slow=too_slow, duration=end_time - self._start_time) + + def stop_all(self): + for launcher in self._started: + launcher.kill() + + def handle_msg(self, _data, time): + import json + data = json.loads(_data.decode()) + + if data['type'] == 'register': + ms = self._results[data['ms']] + ms.set_start_time(time) + launch_delay = ms.start_time() - ms.launch_time() + self.log("MS start registered ", ms=ms, at=time, delay=launch_delay) + elif data['type'] == 'event': + if data['data']['lu_done'] == 1: + ms = self._results[data['ms']] + ms.set_lu_time(time) + self.log("MS performed LU ", ms=ms, at=time, lu_delay=ms.lu_delay()) + else: + print(time, data) + raise Exception("Unknown event type..:" + _data.decode()) + + + def wait_for_result(self, loop): + to_complete_time = self._start_time + self.TEST_TIME.total_seconds() + + while True: + now_time = time.clock_gettime(time.CLOCK_MONOTONIC) + sleep_time = to_complete_time - now_time + if sleep_time < 0: + break + loop.schedule_timeout(sleep_time) + loop.select() + + def print_stats(self): + from functools import reduce + all_completed = reduce(lambda b, ms: b and ms.lu_time() is not None, self._results.values(), True) + min_value = min(self._results.values(), key=lambda x: x.lu_delay()) + max_value = max(self._results.values(), key=lambda x: x.lu_delay()) + + self.log("Tests done", all_completed=all_completed, + min=min_value.lu_delay(), max=max_value.lu_delay()) -- To view, visit https://gerrit.osmocom.org/6918 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: Id3277ed0f0f9ee734569bedd4752564eb68c9cfd Gerrit-PatchSet: 11 Gerrit-Project: osmo-gsm-tester Gerrit-Branch: master Gerrit-Owner: Holger Freyther Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Holger Freyther Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Pau Espin Pedrol Gerrit-Reviewer: neels From gerrit-no-reply at lists.osmocom.org Thu Apr 5 19:58:19 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Thu, 5 Apr 2018 19:58:19 +0000 Subject: [MERGED] osmo-gsm-tester[master]: ms: Create a starter for virtphy and mobile application In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: ms: Create a starter for virtphy and mobile application ...................................................................... ms: Create a starter for virtphy and mobile application In the long run we might not want to start the virtphy but for now virtphy+mobile belong together. Start virtphy first as mobile will not handle a missing socket gracefully. Change-Id: I5c6d742842d7f3e0a1858436ef3f8634d8c0582d --- A src/osmo_ms_driver/starter.py 1 file changed, 119 insertions(+), 0 deletions(-) Approvals: Pau Espin Pedrol: Looks good to me, approved Jenkins Builder: Verified diff --git a/src/osmo_ms_driver/starter.py b/src/osmo_ms_driver/starter.py new file mode 100644 index 0000000..243dedc --- /dev/null +++ b/src/osmo_ms_driver/starter.py @@ -0,0 +1,119 @@ +# osmo_ms_driver: Starter for processes +# Help to start processes over time. +# +# Copyright (C) 2018 by Holger Hans Peter Freyther +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +from osmo_gsm_tester import log, template + +import os +import os.path +import subprocess +import time + +_devnull = open(os.devnull, 'w') +#_devnull = open('/dev/stdout', 'w') + +class Launcher(log.Origin): + def __init__(self, base_name, name_number, tmp_dir): + super().__init__(log.C_RUN, "{}/{}".format(base_name, name_number)) + self._name_number = name_number + self._tmp_dir = tmp_dir + + def name_number(self): + return self._name_number + +class OsmoVirtPhy(Launcher): + def __init__(self, name_number, tmp_dir): + super().__init__("osmo-ms-virt-phy", name_number, tmp_dir) + self._phy_filename = os.path.join(self._tmp_dir, "osmocom_l2_" + self._name_number) + + def phy_filename(self): + return self._phy_filename + + def start(self, loop): + if len(self._phy_filename.encode()) > 107: + raise log.Error('Path for unix socket is longer than max allowed len for unix socket path (107):', self._phy_filename) + + self.log("Starting virtphy process") + args = ["virtphy", "--l1ctl-sock=" + self._phy_filename] + self.log(' '.join(args)) + self._vphy_proc = subprocess.Popen(args, stderr=_devnull, stdout=_devnull) + + def verify_ready(self): + while True: + if os.path.exists(self._phy_filename): + return + time.sleep(0.2) + + def kill(self): + """Clean up things.""" + if self._vphy_proc: + self._vphy_proc.kill() + +class OsmoMobile(Launcher): + def __init__(self, name_number, tmp_dir, lua_tmpl, cfg_tmpl, imsi_ki_generator, phy_filename, ev_server_path): + super().__init__("osmo-ms-mob", name_number, tmp_dir) + self._lua_template = lua_tmpl + self._cfg_template = cfg_tmpl + self._imsi_ki_generator = imsi_ki_generator + self._phy_filename = phy_filename + self._ev_server_path = ev_server_path + + def write_lua_cfg(self): + lua_support = os.path.join(os.path.dirname(__file__), 'lua') + cfg = { + 'test': { + 'event_path': self._ev_server_path, + 'lua_support': lua_support, + } + } + lua_cfg_file = os.path.join(self._tmp_dir, "lua_" + self._name_number + ".lua") + lua_script = template.render(self._lua_template, cfg) + with open(lua_cfg_file, 'w') as w: + w.write(lua_script) + return lua_cfg_file + + def write_mob_cfg(self, lua_filename, phy_filename): + (imsi, ki) = next(self._imsi_ki_generator) + cfg = { + 'test': { + 'script': lua_filename, + 'virt_phy': phy_filename, + 'imsi': imsi, + 'ki_comp128': ki, + 'ms_number': self._name_number, + } + } + mob_cfg_file = os.path.join(self._tmp_dir, "mob_" + self._name_number + ".cfg") + mob_vty = template.render(self._cfg_template, cfg) + with open(mob_cfg_file, 'w') as w: + w.write(mob_vty) + return mob_cfg_file + + def start(self, loop): + lua_filename = self.write_lua_cfg() + mob_filename = self.write_mob_cfg(lua_filename, self._phy_filename) + + self.log("Starting process") + # Let the kernel pick an unused port for the VTY. + args = ["mobile", "-c", mob_filename, "--vty-port=0"] + self.log(' '.join(args)) + self._omob_proc = subprocess.Popen(args, stderr=_devnull, stdout=_devnull) + + def kill(self): + """Clean up things.""" + if self._omob_proc: + self._omob_proc.kill() -- To view, visit https://gerrit.osmocom.org/6917 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: I5c6d742842d7f3e0a1858436ef3f8634d8c0582d Gerrit-PatchSet: 11 Gerrit-Project: osmo-gsm-tester Gerrit-Branch: master Gerrit-Owner: Holger Freyther Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Holger Freyther Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Pau Espin Pedrol Gerrit-Reviewer: neels From gerrit-no-reply at lists.osmocom.org Thu Apr 5 19:58:19 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Thu, 5 Apr 2018 19:58:19 +0000 Subject: [MERGED] osmo-gsm-tester[master]: ms: Create template for the osmocom-bb mobile application In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: ms: Create template for the osmocom-bb mobile application ...................................................................... ms: Create template for the osmocom-bb mobile application Change-Id: I9296f42edfab57762f8dd317d63231298cda5430 --- A src/osmo_gsm_tester/templates/osmo-mobile.cfg.tmpl 1 file changed, 49 insertions(+), 0 deletions(-) Approvals: Pau Espin Pedrol: Looks good to me, approved Jenkins Builder: Verified diff --git a/src/osmo_gsm_tester/templates/osmo-mobile.cfg.tmpl b/src/osmo_gsm_tester/templates/osmo-mobile.cfg.tmpl new file mode 100644 index 0000000..96ec0d9 --- /dev/null +++ b/src/osmo_gsm_tester/templates/osmo-mobile.cfg.tmpl @@ -0,0 +1,49 @@ +no gps enable +no hide-default +ms ${test.ms_number} + layer2-socket ${test.virt_phy} + sim test + network-selection-mode auto + imei 000000000000000 0 + imei-fixed + no emergency-imsi + no sms-service-center + no call-waiting + no auto-answer + no force-rekey + no clip + no clir + tx-power auto + no simulated-delay + no stick + location-updating + neighbour-measurement + codec full-speed prefer + codec half-speed + no abbrev + support + sms + a5/1 + a5/2 + p-gsm + e-gsm + r-gsm + no gsm-850 + dcs + no pcs + class-900 4 + class-850 4 + class-dcs 1 + class-pcs 1 + channel-capability sdcch+tchf+tchh + full-speech-v1 + full-speech-v2 + half-speech-v1 + min-rxlev -106 + dsc-max 90 + no skip-max-per-band + test-sim + imsi ${test.imsi} + ki comp128 ${test.ki_comp128} + no barred-access + lua-script ${test.script} -- To view, visit https://gerrit.osmocom.org/6916 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: I9296f42edfab57762f8dd317d63231298cda5430 Gerrit-PatchSet: 10 Gerrit-Project: osmo-gsm-tester Gerrit-Branch: master Gerrit-Owner: Holger Freyther Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Pau Espin Pedrol Gerrit-Reviewer: neels From gerrit-no-reply at lists.osmocom.org Thu Apr 5 19:58:20 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Thu, 5 Apr 2018 19:58:20 +0000 Subject: [MERGED] osmo-gsm-tester[master]: ms: Add lua script support utilities In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: ms: Add lua script support utilities ...................................................................... ms: Add lua script support utilities Add a JSON encoder and a small module to sent registration and other events per unix datagram socket. json.lua fetched using: $ wget -O src/osmo_ms_driver/lua/json.lua \ https://raw.githubusercontent.com/rxi/json.lua/master/json.lua Change-Id: I43ae84a944c7f33e41d5de0880d4aaab3378809b --- A src/osmo_ms_driver/lua/json.lua A src/osmo_ms_driver/lua/ms_support.lua 2 files changed, 411 insertions(+), 0 deletions(-) Approvals: Pau Espin Pedrol: Looks good to me, approved Jenkins Builder: Verified diff --git a/src/osmo_ms_driver/lua/json.lua b/src/osmo_ms_driver/lua/json.lua new file mode 100644 index 0000000..dda6193 --- /dev/null +++ b/src/osmo_ms_driver/lua/json.lua @@ -0,0 +1,380 @@ +-- +-- json.lua +-- +-- Copyright (c) 2015 rxi +-- +-- This library is free software; you can redistribute it and/or modify it +-- under the terms of the MIT license. See LICENSE for details. +-- + +local json = { _version = "0.1.0" } + +------------------------------------------------------------------------------- +-- Encode +------------------------------------------------------------------------------- + +local encode + +local escape_char_map = { + [ "\\" ] = "\\\\", + [ "\"" ] = "\\\"", + [ "\b" ] = "\\b", + [ "\f" ] = "\\f", + [ "\n" ] = "\\n", + [ "\r" ] = "\\r", + [ "\t" ] = "\\t", +} + +local escape_char_map_inv = { [ "\\/" ] = "/" } +for k, v in pairs(escape_char_map) do + escape_char_map_inv[v] = k +end + + +local function escape_char(c) + return escape_char_map[c] or string.format("\\u%04x", c:byte()) +end + + +local function encode_nil(val) + return "null" +end + + +local function encode_table(val, stack) + local res = {} + stack = stack or {} + + -- Circular reference? + if stack[val] then error("circular reference") end + + stack[val] = true + + if val[1] ~= nil or next(val) == nil then + -- Treat as array -- check keys are valid and it is not sparse + local n = 0 + for k in pairs(val) do + if type(k) ~= "number" then + error("invalid table: mixed or invalid key types") + end + n = n + 1 + end + if n ~= #val then + error("invalid table: sparse array") + end + -- Encode + for i, v in ipairs(val) do + table.insert(res, encode(v, stack)) + end + stack[val] = nil + return "[" .. table.concat(res, ",") .. "]" + + else + -- Treat as an object + for k, v in pairs(val) do + if type(k) ~= "string" then + error("invalid table: mixed or invalid key types") + end + table.insert(res, encode(k, stack) .. ":" .. encode(v, stack)) + end + stack[val] = nil + return "{" .. table.concat(res, ",") .. "}" + end +end + + +local function encode_string(val) + return '"' .. val:gsub('[%z\1-\31\\"]', escape_char) .. '"' +end + + +local function encode_number(val) + -- Check for NaN, -inf and inf + if val ~= val or val <= -math.huge or val >= math.huge then + error("unexpected number value '" .. tostring(val) .. "'") + end + return string.format("%.14g", val) +end + + +local type_func_map = { + [ "nil" ] = encode_nil, + [ "table" ] = encode_table, + [ "string" ] = encode_string, + [ "number" ] = encode_number, + [ "boolean" ] = tostring, +} + + +encode = function(val, stack) + local t = type(val) + local f = type_func_map[t] + if f then + return f(val, stack) + end + error("unexpected type '" .. t .. "'") +end + + +function json.encode(val) + return ( encode(val) ) +end + + +------------------------------------------------------------------------------- +-- Decode +------------------------------------------------------------------------------- + +local parse + +local function create_set(...) + local res = {} + for i = 1, select("#", ...) do + res[ select(i, ...) ] = true + end + return res +end + +local space_chars = create_set(" ", "\t", "\r", "\n") +local delim_chars = create_set(" ", "\t", "\r", "\n", "]", "}", ",") +local escape_chars = create_set("\\", "/", '"', "b", "f", "n", "r", "t", "u") +local literals = create_set("true", "false", "null") + +local literal_map = { + [ "true" ] = true, + [ "false" ] = false, + [ "null" ] = nil, +} + + +local function next_char(str, idx, set, negate) + for i = idx, #str do + if set[str:sub(i, i)] ~= negate then + return i + end + end + return #str + 1 +end + + +local function decode_error(str, idx, msg) + local line_count = 1 + local col_count = 1 + for i = 1, idx - 1 do + col_count = col_count + 1 + if str:sub(i, i) == "\n" then + line_count = line_count + 1 + col_count = 1 + end + end + error( string.format("%s at line %d col %d", msg, line_count, col_count) ) +end + + +local function codepoint_to_utf8(n) + -- http://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&id=iws-appendixa + local f = math.floor + if n <= 0x7f then + return string.char(n) + elseif n <= 0x7ff then + return string.char(f(n / 64) + 192, n % 64 + 128) + elseif n <= 0xffff then + return string.char(f(n / 4096) + 224, f(n % 4096 / 64) + 128, n % 64 + 128) + elseif n <= 0x10ffff then + return string.char(f(n / 262144) + 240, f(n % 262144 / 4096) + 128, + f(n % 4096 / 64) + 128, n % 64 + 128) + end + error( string.format("invalid unicode codepoint '%x'", n) ) +end + + +local function parse_unicode_escape(s) + local n1 = tonumber( s:sub(3, 6), 16 ) + local n2 = tonumber( s:sub(9, 12), 16 ) + -- Surrogate pair? + if n2 then + return codepoint_to_utf8((n1 - 0xd800) * 0x400 + (n2 - 0xdc00) + 0x10000) + else + return codepoint_to_utf8(n1) + end +end + + +local function parse_string(str, i) + local has_unicode_escape = false + local has_surrogate_escape = false + local has_escape = false + local last + for j = i + 1, #str do + local x = str:byte(j) + + if x < 32 then + decode_error(str, j, "control character in string") + end + + if last == 92 then -- "\\" (escape char) + if x == 117 then -- "u" (unicode escape sequence) + local hex = str:sub(j + 1, j + 5) + if not hex:find("%x%x%x%x") then + decode_error(str, j, "invalid unicode escape in string") + end + if hex:find("^[dD][89aAbB]") then + has_surrogate_escape = true + else + has_unicode_escape = true + end + else + local c = string.char(x) + if not escape_chars[c] then + decode_error(str, j, "invalid escape char '" .. c .. "' in string") + end + has_escape = true + end + last = nil + + elseif x == 34 then -- '"' (end of string) + local s = str:sub(i + 1, j - 1) + if has_surrogate_escape then + s = s:gsub("\\u[dD][89aAbB]..\\u....", parse_unicode_escape) + end + if has_unicode_escape then + s = s:gsub("\\u....", parse_unicode_escape) + end + if has_escape then + s = s:gsub("\\.", escape_char_map_inv) + end + return s, j + 1 + + else + last = x + end + end + decode_error(str, i, "expected closing quote for string") +end + + +local function parse_number(str, i) + local x = next_char(str, i, delim_chars) + local s = str:sub(i, x - 1) + local n = tonumber(s) + if not n then + decode_error(str, i, "invalid number '" .. s .. "'") + end + return n, x +end + + +local function parse_literal(str, i) + local x = next_char(str, i, delim_chars) + local word = str:sub(i, x - 1) + if not literals[word] then + decode_error(str, i, "invalid literal '" .. word .. "'") + end + return literal_map[word], x +end + + +local function parse_array(str, i) + local res = {} + local n = 1 + i = i + 1 + while 1 do + local x + i = next_char(str, i, space_chars, true) + -- Empty / end of array? + if str:sub(i, i) == "]" then + i = i + 1 + break + end + -- Read token + x, i = parse(str, i) + res[n] = x + n = n + 1 + -- Next token + i = next_char(str, i, space_chars, true) + local chr = str:sub(i, i) + i = i + 1 + if chr == "]" then break end + if chr ~= "," then decode_error(str, i, "expected ']' or ','") end + end + return res, i +end + + +local function parse_object(str, i) + local res = {} + i = i + 1 + while 1 do + local key, val + i = next_char(str, i, space_chars, true) + -- Empty / end of object? + if str:sub(i, i) == "}" then + i = i + 1 + break + end + -- Read key + if str:sub(i, i) ~= '"' then + decode_error(str, i, "expected string for key") + end + key, i = parse(str, i) + -- Read ':' delimiter + i = next_char(str, i, space_chars, true) + if str:sub(i, i) ~= ":" then + decode_error(str, i, "expected ':' after key") + end + i = next_char(str, i + 1, space_chars, true) + -- Read value + val, i = parse(str, i) + -- Set + res[key] = val + -- Next token + i = next_char(str, i, space_chars, true) + local chr = str:sub(i, i) + i = i + 1 + if chr == "}" then break end + if chr ~= "," then decode_error(str, i, "expected '}' or ','") end + end + return res, i +end + + +local char_func_map = { + [ '"' ] = parse_string, + [ "0" ] = parse_number, + [ "1" ] = parse_number, + [ "2" ] = parse_number, + [ "3" ] = parse_number, + [ "4" ] = parse_number, + [ "5" ] = parse_number, + [ "6" ] = parse_number, + [ "7" ] = parse_number, + [ "8" ] = parse_number, + [ "9" ] = parse_number, + [ "-" ] = parse_number, + [ "t" ] = parse_literal, + [ "f" ] = parse_literal, + [ "n" ] = parse_literal, + [ "[" ] = parse_array, + [ "{" ] = parse_object, +} + + +parse = function(str, idx) + local chr = str:sub(idx, idx) + local f = char_func_map[chr] + if f then + return f(str, idx) + end + decode_error(str, idx, "unexpected character '" .. chr .. "'") +end + + +function json.decode(str) + if type(str) ~= "string" then + error("expected argument of type string, got " .. type(str)) + end + return ( parse(str, next_char(str, 1, space_chars, true)) ) +end + + +return json diff --git a/src/osmo_ms_driver/lua/ms_support.lua b/src/osmo_ms_driver/lua/ms_support.lua new file mode 100644 index 0000000..817a564 --- /dev/null +++ b/src/osmo_ms_driver/lua/ms_support.lua @@ -0,0 +1,31 @@ +json = require("json") +socket = require("socket") +socket.unix = require("socket.unix") + +local g_c = socket.unix.dgram() +local g_ms = nil + +local mod = {} + +-- Register the MS instance with the system +function mod.register(ms, path) + g_ms = ms + + g_c:connect(path) + + local event = {} + event['ms'] = g_ms + event['type'] = 'register' + g_c:send(json.encode(event)) +end + +-- Send an event +function mod.send(data) + local event = {} + event['ms'] = g_ms + event['type'] = 'event' + event['data'] = data + g_c:send(json.encode(event)) +end + +return mod -- To view, visit https://gerrit.osmocom.org/6915 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: I43ae84a944c7f33e41d5de0880d4aaab3378809b Gerrit-PatchSet: 10 Gerrit-Project: osmo-gsm-tester Gerrit-Branch: master Gerrit-Owner: Holger Freyther Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Holger Freyther Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Pau Espin Pedrol Gerrit-Reviewer: neels From gerrit-no-reply at lists.osmocom.org Thu Apr 5 19:58:20 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Thu, 5 Apr 2018 19:58:20 +0000 Subject: [MERGED] osmo-gsm-tester[master]: ms: Create an event server to handle Unix datagram messages In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: ms: Create an event server to handle Unix datagram messages ...................................................................... ms: Create an event server to handle Unix datagram messages Create an EventServer that will create a unix domain socket and dispatch incoming datagram messages. The lua remotes are not passing credentials so this is a one way communication channel for now. Tests can register to handle the message. Change-Id: Ida97c570e8e741410f2dba4a231a8058ca96da25 --- A src/osmo_ms_driver/event_server.py 1 file changed, 33 insertions(+), 0 deletions(-) Approvals: Pau Espin Pedrol: Looks good to me, approved Harald Welte: Looks good to me, but someone else must approve Jenkins Builder: Verified diff --git a/src/osmo_ms_driver/event_server.py b/src/osmo_ms_driver/event_server.py new file mode 100644 index 0000000..6b0232b --- /dev/null +++ b/src/osmo_ms_driver/event_server.py @@ -0,0 +1,33 @@ + +from osmo_gsm_tester import log +from functools import partial + +import time + + +class EventServer(log.Origin): + """ + Listen for AF_UNIX/SOCK_DGRAM messages from test apps and + forward them. + """ + def __init__(self, name, path): + super().__init__(log.C_RUN, name) + self._path = path + self._handlers = [] + + def register(self, cb): + self._handlers.append(cb) + + def server_path(self): + return self._path + + def listen(self, loop): + self._server = loop.create_unix_server(self.read_cb, self._path) + + def read_cb(self, obj, mask): + # addresss doesn't give us the remote but currently we don't + # need it. + (data, address) = self._server.recvfrom(4096) + now = time.clock_gettime(time.CLOCK_MONOTONIC) + for handler in self._handlers: + handler(data, now) -- To view, visit https://gerrit.osmocom.org/6914 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: Ida97c570e8e741410f2dba4a231a8058ca96da25 Gerrit-PatchSet: 9 Gerrit-Project: osmo-gsm-tester Gerrit-Branch: master Gerrit-Owner: Holger Freyther Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Pau Espin Pedrol Gerrit-Reviewer: neels From gerrit-no-reply at lists.osmocom.org Thu Apr 5 19:58:20 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Thu, 5 Apr 2018 19:58:20 +0000 Subject: [MERGED] osmo-gsm-tester[master]: ms: Create a simple epoll (or kqueue) based event loop In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: ms: Create a simple epoll (or kqueue) based event loop ...................................................................... ms: Create a simple epoll (or kqueue) based event loop Create a C-like single process event loop. It could be powered by select/epoll or kqueue. It should scale to many open fds but we will not have that many. Change-Id: Iea06f33870cab9f21e9a1a1feb9758467343dd29 --- A src/osmo_ms_driver/simple_loop.py 1 file changed, 63 insertions(+), 0 deletions(-) Approvals: Pau Espin Pedrol: Looks good to me, approved Jenkins Builder: Verified diff --git a/src/osmo_ms_driver/simple_loop.py b/src/osmo_ms_driver/simple_loop.py new file mode 100644 index 0000000..f4b3e05 --- /dev/null +++ b/src/osmo_ms_driver/simple_loop.py @@ -0,0 +1,63 @@ +# osmo_ms_driver: Event loop because asyncio is not up to the job +# +# Copyright (C) 2018 by Holger Hans Peter Freyther +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +from osmo_gsm_tester import log +from functools import partial + +import os +import selectors +import socket + + +class SimpleLoop(log.Origin): + def __init__(self): + super().__init__(log.C_RUN, "SimpleLoop") + self._loop = selectors.DefaultSelector() + self._timeout = None + + def register_fd(self, fd, event, callback): + self._loop.register(fd, event, callback) + + def schedule_timeout(self, timeout): + assert self._timeout == None + self._timeout = timeout + + def create_unix_server(self, cb, path): + sock = socket.socket(socket.AF_UNIX, socket.SOCK_DGRAM) + + if len(path.encode()) > 107: + raise log.Error('Path for unix socket is longer than max allowed len for unix socket path (107):', path) + + # If not a special Linux namespace... + if path[0] != '\0': + try: + os.unlink(path) + except FileNotFoundError: + pass + + # Now bind+listen+NONBLOCK + sock.bind(path) + sock.setblocking(False) + + self.register_fd(sock.fileno(), selectors.EVENT_READ, cb) + return sock + + def select(self): + events = self._loop.select(timeout=self._timeout) + self._timeout = None + for key, mask in events: + key.data(key.fileobj, mask) -- To view, visit https://gerrit.osmocom.org/6913 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: Iea06f33870cab9f21e9a1a1feb9758467343dd29 Gerrit-PatchSet: 9 Gerrit-Project: osmo-gsm-tester Gerrit-Branch: master Gerrit-Owner: Holger Freyther Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Holger Freyther Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Pau Espin Pedrol Gerrit-Reviewer: neels From gerrit-no-reply at lists.osmocom.org Thu Apr 5 19:58:32 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Thu, 5 Apr 2018 19:58:32 +0000 Subject: osmo-ci[master]: ansible: osmocom-jenkins-slave: don't install recommend pack... In-Reply-To: References: Message-ID: Patch Set 1: Verified+1 -- To view, visit https://gerrit.osmocom.org/7590 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I6859b8180916a8e172d32030da06ba6fa27d5c45 Gerrit-PatchSet: 1 Gerrit-Project: osmo-ci Gerrit-Branch: master Gerrit-Owner: lynxis lazus Gerrit-Reviewer: Harald Welte Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Thu Apr 5 19:58:34 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Thu, 5 Apr 2018 19:58:34 +0000 Subject: osmo-ci[master]: ansible: hosts: add build2-deb8build-ansible build2-deb9buil... In-Reply-To: References: Message-ID: Patch Set 1: Verified+1 -- To view, visit https://gerrit.osmocom.org/7591 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Iede01ab10f0a9582b3a3a9a3ebbbc684b94a3c0a Gerrit-PatchSet: 1 Gerrit-Project: osmo-ci Gerrit-Branch: master Gerrit-Owner: lynxis lazus Gerrit-Reviewer: Harald Welte Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Thu Apr 5 19:58:36 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Thu, 5 Apr 2018 19:58:36 +0000 Subject: osmo-ci[master]: ansible: hosts: use inventory with ansible_host to have more... In-Reply-To: References: Message-ID: Patch Set 1: Verified+1 -- To view, visit https://gerrit.osmocom.org/7592 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I0888e9b66cd1077dcdada97fb5ee2d56def516e3 Gerrit-PatchSet: 1 Gerrit-Project: osmo-ci Gerrit-Branch: master Gerrit-Owner: lynxis lazus Gerrit-Reviewer: Harald Welte Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Thu Apr 5 19:58:41 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Thu, 5 Apr 2018 19:58:41 +0000 Subject: osmo-ci[master]: ansible: create a new group coverity-slaves to choose the ta... In-Reply-To: References: Message-ID: Patch Set 1: Verified+1 -- To view, visit https://gerrit.osmocom.org/7593 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I8b09ca50db938c5c7087a74e5d2575412a916ff6 Gerrit-PatchSet: 1 Gerrit-Project: osmo-ci Gerrit-Branch: master Gerrit-Owner: lynxis lazus Gerrit-Reviewer: Harald Welte Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Thu Apr 5 19:58:43 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Thu, 5 Apr 2018 19:58:43 +0000 Subject: osmo-ci[master]: ansible: hosts: add host2-deb8build-ansible host2-deb9build-... In-Reply-To: References: Message-ID: Patch Set 1: Verified+1 -- To view, visit https://gerrit.osmocom.org/7594 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: If0a21f24483b2c1c6ea56e366c5858eee50f17e1 Gerrit-PatchSet: 1 Gerrit-Project: osmo-ci Gerrit-Branch: master Gerrit-Owner: lynxis lazus Gerrit-Reviewer: Harald Welte Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Thu Apr 5 19:58:44 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Thu, 5 Apr 2018 19:58:44 +0000 Subject: osmo-ci[master]: jobs/update-osmo*: add new nodes to the update jobs In-Reply-To: References: Message-ID: Patch Set 1: Verified+1 -- To view, visit https://gerrit.osmocom.org/7595 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Ib103b3343d582f7a78f0c4cec00c94078a078584 Gerrit-PatchSet: 1 Gerrit-Project: osmo-ci Gerrit-Branch: master Gerrit-Owner: lynxis lazus Gerrit-Reviewer: Harald Welte Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Thu Apr 5 19:58:46 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Thu, 5 Apr 2018 19:58:46 +0000 Subject: osmo-ci[master]: ansible: install eclipse-titan In-Reply-To: References: Message-ID: Patch Set 1: Verified+1 -- To view, visit https://gerrit.osmocom.org/7596 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I354271b7c573484b7f538a5a4bb29753a950d5f9 Gerrit-PatchSet: 1 Gerrit-Project: osmo-ci Gerrit-Branch: master Gerrit-Owner: lynxis lazus Gerrit-Reviewer: Harald Welte Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Thu Apr 5 19:58:48 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Thu, 5 Apr 2018 19:58:48 +0000 Subject: osmo-ci[master]: ansible jenkins-slave: only setup ttcn3_slave on debian stretch In-Reply-To: References: Message-ID: Patch Set 1: Verified+1 -- To view, visit https://gerrit.osmocom.org/7597 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Iaf043008890da94098986468e1fd3d9578810206 Gerrit-PatchSet: 1 Gerrit-Project: osmo-ci Gerrit-Branch: master Gerrit-Owner: lynxis lazus Gerrit-Reviewer: Harald Welte Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Thu Apr 5 19:58:51 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Thu, 5 Apr 2018 19:58:51 +0000 Subject: [MERGED] osmo-ci[master]: ansible jenkins-slave: only setup ttcn3_slave on debian stretch In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: ansible jenkins-slave: only setup ttcn3_slave on debian stretch ...................................................................... ansible jenkins-slave: only setup ttcn3_slave on debian stretch Change-Id: Iaf043008890da94098986468e1fd3d9578810206 --- M ansible/roles/osmocom-jenkins-slave/tasks/main.yml 1 file changed, 1 insertion(+), 1 deletion(-) Approvals: Harald Welte: Looks good to me, approved; Verified diff --git a/ansible/roles/osmocom-jenkins-slave/tasks/main.yml b/ansible/roles/osmocom-jenkins-slave/tasks/main.yml index 485a157..805a81e 100644 --- a/ansible/roles/osmocom-jenkins-slave/tasks/main.yml +++ b/ansible/roles/osmocom-jenkins-slave/tasks/main.yml @@ -100,7 +100,7 @@ - name: install ttcn3 dependencies include: ttcn3-slave.yml - when: ttcn3_slave + when: ttcn3_slave and ansible_distribution == 'Debian' and ansible_distribution_release == 'stretch' - name: copy .gitconfig copy: -- To view, visit https://gerrit.osmocom.org/7597 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: Iaf043008890da94098986468e1fd3d9578810206 Gerrit-PatchSet: 2 Gerrit-Project: osmo-ci Gerrit-Branch: master Gerrit-Owner: lynxis lazus Gerrit-Reviewer: Harald Welte From gerrit-no-reply at lists.osmocom.org Thu Apr 5 19:58:52 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Thu, 5 Apr 2018 19:58:52 +0000 Subject: [MERGED] osmo-ci[master]: ansible: install eclipse-titan In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: ansible: install eclipse-titan ...................................................................... ansible: install eclipse-titan Change-Id: I354271b7c573484b7f538a5a4bb29753a950d5f9 --- M ansible/roles/osmocom-jenkins-slave/tasks/ttcn3-slave.yml 1 file changed, 17 insertions(+), 0 deletions(-) Approvals: Harald Welte: Looks good to me, approved; Verified diff --git a/ansible/roles/osmocom-jenkins-slave/tasks/ttcn3-slave.yml b/ansible/roles/osmocom-jenkins-slave/tasks/ttcn3-slave.yml index 6a7845c..72166ab 100644 --- a/ansible/roles/osmocom-jenkins-slave/tasks/ttcn3-slave.yml +++ b/ansible/roles/osmocom-jenkins-slave/tasks/ttcn3-slave.yml @@ -13,3 +13,20 @@ git: repo: "https://git.osmocom.org/docker-playground" dest: "/home/{{ jenkins_user }}/jenkins/docker-playground" + +- name: add apt.key + apt_key: + url: https://download.opensuse.org/repositories/network:/osmocom:/latest/Debian_9.0/Release.key + +- name: add apt repository + apt_repository: + repo: "deb http://download.opensuse.org/repositories/network:/osmocom:/latest/Debian_9.0/ ./" + filename: obs_osmocom + update_cache: yes + +- name: install titan + apt: + name: eclipse-titan + update_cache: yes + cache_valid_time: 3600 + -- To view, visit https://gerrit.osmocom.org/7596 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: I354271b7c573484b7f538a5a4bb29753a950d5f9 Gerrit-PatchSet: 2 Gerrit-Project: osmo-ci Gerrit-Branch: master Gerrit-Owner: lynxis lazus Gerrit-Reviewer: Harald Welte From gerrit-no-reply at lists.osmocom.org Thu Apr 5 19:58:52 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Thu, 5 Apr 2018 19:58:52 +0000 Subject: [MERGED] osmo-ci[master]: jobs/update-osmo*: add new nodes to the update jobs In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: jobs/update-osmo*: add new nodes to the update jobs ...................................................................... jobs/update-osmo*: add new nodes to the update jobs Change-Id: Ib103b3343d582f7a78f0c4cec00c94078a078584 --- M jobs/update-osmo-ci-on-slaves.yml M jobs/update-osmo-python-on-slaves.yml 2 files changed, 2 insertions(+), 2 deletions(-) Approvals: Harald Welte: Looks good to me, approved; Verified diff --git a/jobs/update-osmo-ci-on-slaves.yml b/jobs/update-osmo-ci-on-slaves.yml index 429c29d..5dcb544 100644 --- a/jobs/update-osmo-ci-on-slaves.yml +++ b/jobs/update-osmo-ci-on-slaves.yml @@ -5,7 +5,7 @@ - axis: type: slave name: label - values: [ OsmocomBuild1, build1-debian9-lxc, build2-deb8build, admin2-deb8build, admin2-deb9build ] + values: [ OsmocomBuild1, build1-debian9-lxc, build2-deb8build, admin2-deb8build, admin2-deb9build, host2-deb8build-ansible, host2-deb9build-ansible, build2-deb8build-ansible, build2-deb9build-ansible ] properties: - build-discarder: days-to-keep: 30 diff --git a/jobs/update-osmo-python-on-slaves.yml b/jobs/update-osmo-python-on-slaves.yml index c859ec6..554a273 100644 --- a/jobs/update-osmo-python-on-slaves.yml +++ b/jobs/update-osmo-python-on-slaves.yml @@ -5,7 +5,7 @@ - axis: type: slave name: label - values: [ OsmocomBuild1, build1-debian9-lxc, build2-deb8build, admin2-deb8build, admin2-deb9build ] + values: [ OsmocomBuild1, build1-debian9-lxc, build2-deb8build, admin2-deb8build, admin2-deb9build, host2-deb8build-ansible, host2-deb9build-ansible, build2-deb8build-ansible, build2-deb9build-ansible ] properties: - build-discarder: days-to-keep: 30 -- To view, visit https://gerrit.osmocom.org/7595 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: Ib103b3343d582f7a78f0c4cec00c94078a078584 Gerrit-PatchSet: 2 Gerrit-Project: osmo-ci Gerrit-Branch: master Gerrit-Owner: lynxis lazus Gerrit-Reviewer: Harald Welte From gerrit-no-reply at lists.osmocom.org Thu Apr 5 19:58:52 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Thu, 5 Apr 2018 19:58:52 +0000 Subject: [MERGED] osmo-ci[master]: ansible: hosts: add host2-deb8build-ansible host2-deb9build-... In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: ansible: hosts: add host2-deb8build-ansible host2-deb9build-ansible ...................................................................... ansible: hosts: add host2-deb8build-ansible host2-deb9build-ansible Change-Id: If0a21f24483b2c1c6ea56e366c5858eee50f17e1 --- M ansible/hosts 1 file changed, 3 insertions(+), 0 deletions(-) Approvals: Harald Welte: Looks good to me, approved; Verified diff --git a/ansible/hosts b/ansible/hosts index e809d03..ea5dea4 100644 --- a/ansible/hosts +++ b/ansible/hosts @@ -7,9 +7,12 @@ [coverity-slaves] admin2-deb9build ansible_host=2a01:4f8:13b:828::1:300 build2-deb9build-ansible ansible_host=2a01:4f8:10b:2ad9::1:6 +host2-deb9build-ansible ansible_host=2a01:4f8:120:8470::1:3 [jenkins-slaves] admin2-deb8build ansible_host=2a01:4f8:13b:828::1:400 admin2-deb9build ansible_host=2a01:4f8:13b:828::1:300 build2-deb8build-ansible ansible_host=2a01:4f8:10b:2ad9::1:7 build2-deb9build-ansible ansible_host=2a01:4f8:10b:2ad9::1:6 +host2-deb8build-ansible ansible_host=2a01:4f8:120:8470::1:2 +host2-deb9build-ansible ansible_host=2a01:4f8:120:8470::1:3 -- To view, visit https://gerrit.osmocom.org/7594 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: If0a21f24483b2c1c6ea56e366c5858eee50f17e1 Gerrit-PatchSet: 2 Gerrit-Project: osmo-ci Gerrit-Branch: master Gerrit-Owner: lynxis lazus Gerrit-Reviewer: Harald Welte From gerrit-no-reply at lists.osmocom.org Thu Apr 5 19:58:52 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Thu, 5 Apr 2018 19:58:52 +0000 Subject: [MERGED] osmo-ci[master]: ansible: create a new group coverity-slaves to choose the ta... In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: ansible: create a new group coverity-slaves to choose the target of coverity ...................................................................... ansible: create a new group coverity-slaves to choose the target of coverity Change-Id: I8b09ca50db938c5c7087a74e5d2575412a916ff6 --- M ansible/hosts M ansible/setup-jenkins-slave.yml 2 files changed, 9 insertions(+), 1 deletion(-) Approvals: Harald Welte: Looks good to me, approved; Verified diff --git a/ansible/hosts b/ansible/hosts index 27480e4..e809d03 100644 --- a/ansible/hosts +++ b/ansible/hosts @@ -4,8 +4,12 @@ # production 10.9.25.107 -[jenkins-slaves] +[coverity-slaves] admin2-deb9build ansible_host=2a01:4f8:13b:828::1:300 +build2-deb9build-ansible ansible_host=2a01:4f8:10b:2ad9::1:6 + +[jenkins-slaves] admin2-deb8build ansible_host=2a01:4f8:13b:828::1:400 +admin2-deb9build ansible_host=2a01:4f8:13b:828::1:300 build2-deb8build-ansible ansible_host=2a01:4f8:10b:2ad9::1:7 build2-deb9build-ansible ansible_host=2a01:4f8:10b:2ad9::1:6 diff --git a/ansible/setup-jenkins-slave.yml b/ansible/setup-jenkins-slave.yml index 5963f6e..4ca7188 100644 --- a/ansible/setup-jenkins-slave.yml +++ b/ansible/setup-jenkins-slave.yml @@ -30,6 +30,10 @@ tags: - jenkins-slave +- name: setup coverity slaves + hosts: coverity-slaves + user: root + roles: - name: install-coverity tags: - coverity -- To view, visit https://gerrit.osmocom.org/7593 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: I8b09ca50db938c5c7087a74e5d2575412a916ff6 Gerrit-PatchSet: 2 Gerrit-Project: osmo-ci Gerrit-Branch: master Gerrit-Owner: lynxis lazus Gerrit-Reviewer: Harald Welte From gerrit-no-reply at lists.osmocom.org Thu Apr 5 19:58:53 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Thu, 5 Apr 2018 19:58:53 +0000 Subject: [MERGED] osmo-ci[master]: ansible: hosts: use inventory with ansible_host to have more... In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: ansible: hosts: use inventory with ansible_host to have more readable ansible output ...................................................................... ansible: hosts: use inventory with ansible_host to have more readable ansible output As long they don't have a dns entry, use the ansible_host variable Change-Id: I0888e9b66cd1077dcdada97fb5ee2d56def516e3 --- M ansible/hosts 1 file changed, 4 insertions(+), 8 deletions(-) Approvals: Harald Welte: Looks good to me, approved; Verified diff --git a/ansible/hosts b/ansible/hosts index 152315d..27480e4 100644 --- a/ansible/hosts +++ b/ansible/hosts @@ -5,11 +5,7 @@ 10.9.25.107 [jenkins-slaves] -# admin2-deb9build -2a01:4f8:13b:828::1:300 -# admin2-deb8build -2a01:4f8:13b:828::1:400 -# build2-deb8build-ansible -2a01:4f8:10b:2ad9::1:7 -# build2-deb9build-ansible -2a01:4f8:10b:2ad9::1:6 +admin2-deb9build ansible_host=2a01:4f8:13b:828::1:300 +admin2-deb8build ansible_host=2a01:4f8:13b:828::1:400 +build2-deb8build-ansible ansible_host=2a01:4f8:10b:2ad9::1:7 +build2-deb9build-ansible ansible_host=2a01:4f8:10b:2ad9::1:6 -- To view, visit https://gerrit.osmocom.org/7592 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: I0888e9b66cd1077dcdada97fb5ee2d56def516e3 Gerrit-PatchSet: 2 Gerrit-Project: osmo-ci Gerrit-Branch: master Gerrit-Owner: lynxis lazus Gerrit-Reviewer: Harald Welte From gerrit-no-reply at lists.osmocom.org Thu Apr 5 19:58:54 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Thu, 5 Apr 2018 19:58:54 +0000 Subject: [MERGED] osmo-ci[master]: ansible: hosts: add build2-deb8build-ansible build2-deb9buil... In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: ansible: hosts: add build2-deb8build-ansible build2-deb9build-ansible slaves ...................................................................... ansible: hosts: add build2-deb8build-ansible build2-deb9build-ansible slaves Change-Id: Iede01ab10f0a9582b3a3a9a3ebbbc684b94a3c0a --- M ansible/hosts 1 file changed, 4 insertions(+), 0 deletions(-) Approvals: Harald Welte: Looks good to me, approved; Verified diff --git a/ansible/hosts b/ansible/hosts index 4f12cdf..152315d 100644 --- a/ansible/hosts +++ b/ansible/hosts @@ -9,3 +9,7 @@ 2a01:4f8:13b:828::1:300 # admin2-deb8build 2a01:4f8:13b:828::1:400 +# build2-deb8build-ansible +2a01:4f8:10b:2ad9::1:7 +# build2-deb9build-ansible +2a01:4f8:10b:2ad9::1:6 -- To view, visit https://gerrit.osmocom.org/7591 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: Iede01ab10f0a9582b3a3a9a3ebbbc684b94a3c0a Gerrit-PatchSet: 2 Gerrit-Project: osmo-ci Gerrit-Branch: master Gerrit-Owner: lynxis lazus Gerrit-Reviewer: Harald Welte From gerrit-no-reply at lists.osmocom.org Thu Apr 5 19:58:54 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Thu, 5 Apr 2018 19:58:54 +0000 Subject: [MERGED] osmo-ci[master]: ansible: osmocom-jenkins-slave: don't install recommend pack... In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: ansible: osmocom-jenkins-slave: don't install recommend packages ...................................................................... ansible: osmocom-jenkins-slave: don't install recommend packages libuhd-dev would recommend uhd-host which seems not be installable on debian jessie in an lxc. However we should have already listed all explicit dependencies and shouldn't need anything else Change-Id: I6859b8180916a8e172d32030da06ba6fa27d5c45 --- M ansible/roles/osmocom-jenkins-slave/tasks/main.yml 1 file changed, 1 insertion(+), 0 deletions(-) Approvals: Harald Welte: Looks good to me, approved; Verified diff --git a/ansible/roles/osmocom-jenkins-slave/tasks/main.yml b/ansible/roles/osmocom-jenkins-slave/tasks/main.yml index 9e8b0b0..485a157 100644 --- a/ansible/roles/osmocom-jenkins-slave/tasks/main.yml +++ b/ansible/roles/osmocom-jenkins-slave/tasks/main.yml @@ -47,6 +47,7 @@ name: "{{ item }}" cache_valid_time: 3600 update_cache: yes + install_recommends: no with_items: - docbook5-xml - libboost-dev -- To view, visit https://gerrit.osmocom.org/7590 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: I6859b8180916a8e172d32030da06ba6fa27d5c45 Gerrit-PatchSet: 2 Gerrit-Project: osmo-ci Gerrit-Branch: master Gerrit-Owner: lynxis lazus Gerrit-Reviewer: Harald Welte From jenkins at lists.osmocom.org Thu Apr 5 20:02:50 2018 From: jenkins at lists.osmocom.org (jenkins at lists.osmocom.org) Date: Thu, 5 Apr 2018 20:02:50 +0000 (UTC) Subject: =?UTF-8?Q?Build_failed_in_Jenkins:_master-osmo-gmr_=C2=BB_a1=3Ddefau?= =?UTF-8?Q?lt,a2=3Ddefault,a3=3Ddefault,osmocom-master-debian9_#332?= Message-ID: <1671527594.35.1522958570135.JavaMail.jenkins@jenkins.osmocom.org> See ------------------------------------------ Started by upstream project "master-osmo-gmr" build number 332 originally caused by: Started by upstream project "master-libosmocore" build number 191 originally caused by: Started by an SCM change Building remotely on build2-deb9build-ansible (ttcn3 osmo-gsm-tester-build osmocom-gerrit-debian9 osmocom-master-debian9 coverity) in workspace > git rev-parse --is-inside-work-tree # timeout=10 Fetching changes from the remote Git repository > git config remote.origin.url git://git.osmocom.org/osmo-gmr # timeout=10 Fetching upstream changes from git://git.osmocom.org/osmo-gmr > git --version # timeout=10 > git fetch --tags --progress git://git.osmocom.org/osmo-gmr +refs/heads/*:refs/remotes/origin/* Checking out Revision adb8cc6aa9453dfc339de53ae641067136a031ec (refs/remotes/origin/master) > git config core.sparsecheckout # timeout=10 > git checkout -f adb8cc6aa9453dfc339de53ae641067136a031ec Commit message: "Add contrib/jenkins.sh script, like other osmo-* repositories" > git rev-list --no-walk adb8cc6aa9453dfc339de53ae641067136a031ec # timeout=10 [osmocom-master-debian9] $ /bin/sh -xe /tmp/jenkins1622528284191338754.sh + ./contrib/jenkins.sh + base= + deps= + inst= + export deps inst + osmo-clean-workspace.sh + chmod -R +w . + git checkout -f HEAD + git clean -dxf -e -e layer1-headers Skipping repository deps/libosmocore + [ -d ] + git -C checkout -f HEAD error: pathspec 'HEAD' did not match any file(s) known to git. Build step 'Execute shell' marked build as failure [WARNINGS]Skipping publisher since build result is FAILURE From gerrit-no-reply at lists.osmocom.org Thu Apr 5 20:13:05 2018 From: gerrit-no-reply at lists.osmocom.org (Vadim Yanitskiy) Date: Thu, 5 Apr 2018 20:13:05 +0000 Subject: libosmocore[master]: GSUP: add USSD messages support according to 3GPP TS 09.02 In-Reply-To: References: Message-ID: Patch Set 3: > looks fine, let's wait for OSmoMSC patches Thanks. Will upload them soon. And, a little modification here is required. -- To view, visit https://gerrit.osmocom.org/7600 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Ie17a78043a35fffbdd59e80fd2b2da39cce5e532 Gerrit-PatchSet: 3 Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Owner: Vadim Yanitskiy Gerrit-Reviewer: Alexander Chemeris Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Vadim Yanitskiy Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Thu Apr 5 20:15:44 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Thu, 5 Apr 2018 20:15:44 +0000 Subject: [MERGED] osmo-ttcn3-hacks[master]: gitignore vim swp files In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: gitignore vim swp files ...................................................................... gitignore vim swp files Change-Id: I2d60ad2365c7fd82210ee1dac96fabab19617280 --- M .gitignore 1 file changed, 1 insertion(+), 0 deletions(-) Approvals: Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/.gitignore b/.gitignore index bf5baa0..8282f5f 100644 --- a/.gitignore +++ b/.gitignore @@ -14,3 +14,4 @@ */Makefile !bin/Makefile !deps/Makefile +.*.sw? -- To view, visit https://gerrit.osmocom.org/7647 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: I2d60ad2365c7fd82210ee1dac96fabab19617280 Gerrit-PatchSet: 3 Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder From jenkins at lists.osmocom.org Thu Apr 5 21:23:47 2018 From: jenkins at lists.osmocom.org (jenkins at lists.osmocom.org) Date: Thu, 5 Apr 2018 21:23:47 +0000 (UTC) Subject: =?UTF-8?Q?Jenkins_build_is_back_to_normal_:_master-osmo-gmr_=C2=BB_a1=3Dd?= =?UTF-8?Q?efault,a2=3Ddefault,a3=3Ddefault,osmocom-master-debian9_#333?= In-Reply-To: <1671527594.35.1522958570135.JavaMail.jenkins@jenkins.osmocom.org> References: <1671527594.35.1522958570135.JavaMail.jenkins@jenkins.osmocom.org> Message-ID: <982174836.37.1522963427882.JavaMail.jenkins@jenkins.osmocom.org> See From gerrit-no-reply at lists.osmocom.org Thu Apr 5 21:40:04 2018 From: gerrit-no-reply at lists.osmocom.org (Neels Hofmeyr) Date: Thu, 5 Apr 2018 21:40:04 +0000 Subject: osmo-ttcn3-hacks[master]: add compare-results.sh, call from start-testsuite.sh In-Reply-To: References: Message-ID: Patch Set 1: for illustration, I tested the new msc fsm with this and got: Comparing expected results /osmo-ttcn3-hacks/msc/expected-results.log against results in junit-xml-105.log -------------------- xfail->pass MSC_Tests.TC_cr_before_reset pass MSC_Tests.TC_lu_imsi_noauth_tmsi pass MSC_Tests.TC_lu_imsi_noauth_notmsi xfail MSC_Tests.TC_lu_imsi_reject xfail MSC_Tests.TC_lu_imsi_timeout_gsup pass MSC_Tests.TC_lu_imsi_auth_tmsi pass MSC_Tests.TC_cmserv_imsi_unknown pass MSC_Tests.TC_lu_and_mo_call pass MSC_Tests.TC_lu_auth_sai_timeout pass MSC_Tests.TC_lu_auth_sai_err pass->FAIL MSC_Tests.TC_lu_clear_request pass MSC_Tests.TC_lu_disconnect pass MSC_Tests.TC_lu_by_imei pass MSC_Tests.TC_lu_by_tmsi_noauth_unknown pass MSC_Tests.TC_imsi_detach_by_imsi pass MSC_Tests.TC_imsi_detach_by_tmsi pass MSC_Tests.TC_imsi_detach_by_imei xfail->pass MSC_Tests.TC_emerg_call_imei_reject pass MSC_Tests.TC_emerg_call_imsi xfail->pass MSC_Tests.TC_cm_serv_req_vgcs_reject xfail->pass MSC_Tests.TC_cm_serv_req_vbs_reject xfail->pass MSC_Tests.TC_cm_serv_req_lcs_reject xfail->pass MSC_Tests.TC_cm_reest_req_reject pass MSC_Tests.TC_lu_auth_2G_fail pass MSC_Tests.TC_lu_imsi_auth_tmsi_encr_13_13 pass MSC_Tests.TC_cl3_no_payload xfail->pass MSC_Tests.TC_cl3_rnd_payload xfail MSC_Tests.TC_establish_and_nothing xfail MSC_Tests.TC_mo_setup_and_nothing pass MSC_Tests.TC_mo_crcx_ran_timeout xfail MSC_Tests.TC_mo_crcx_ran_reject xfail MSC_Tests.TC_mt_crcx_ran_reject pass MSC_Tests.TC_mo_setup_and_dtmf_dup xfail MSC_Tests.TC_gsup_cancel pass MSC_Tests.TC_lu_imsi_auth_tmsi_encr_1_13 pass MSC_Tests.TC_lu_imsi_auth_tmsi_encr_3_13 pass MSC_Tests.TC_lu_imsi_auth_tmsi_encr_3_1 pass MSC_Tests.TC_lu_imsi_auth_tmsi_encr_3_1_no_cm pass MSC_Tests.TC_lu_imsi_auth_tmsi_encr_13_2 pass MSC_Tests.TC_lu_imsi_auth_tmsi_encr_013_2 pass MSC_Tests.TC_mo_release_timeout pass MSC_Tests.TC_lu_and_mt_call_no_dlcx_resp pass MSC_Tests.TC_reset_two pass MSC_Tests.TC_lu_and_mt_call pass MSC_Tests.TC_lu_imsi_auth_tmsi_encr_3_1_log_msc_debug -------------------- 30 pass 7 xfail 7 pass unexpectedly Update the expected results! 1 FAIL FAILURE So this tells me that I fixed 7 tests, but made one break. So I still need to look at that one: pass->FAIL MSC_Tests.TC_lu_clear_request And if that one passes I haven't made anything worse (that is picked up by the test suite). -- To view, visit https://gerrit.osmocom.org/7646 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I87d62a8be73d73a5eeff61a842e7c27a0066079d Gerrit-PatchSet: 1 Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Neels Hofmeyr Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Thu Apr 5 21:50:43 2018 From: gerrit-no-reply at lists.osmocom.org (Neels Hofmeyr) Date: Thu, 5 Apr 2018 21:50:43 +0000 Subject: osmo-ttcn3-hacks[master]: add compare-results.sh, call from start-testsuite.sh In-Reply-To: References: Message-ID: Patch Set 1: (in case anyone wonders, I faked this one for testing the script and it was left over by accident, it's not really xfail: > xfail->pass MSC_Tests.TC_cr_before_reset So the FSM really fixes only 6 tests, not 7.) -- To view, visit https://gerrit.osmocom.org/7646 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I87d62a8be73d73a5eeff61a842e7c27a0066079d Gerrit-PatchSet: 1 Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Neels Hofmeyr Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Thu Apr 5 22:39:12 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Thu, 5 Apr 2018 22:39:12 +0000 Subject: libosmo-netif[master]: stream.c: osmo_stream_cli_open2: Remove wrong assumption in ... In-Reply-To: References: Message-ID: Patch Set 1: I was having the same concerns why looking at this. I was thinking more in the differentiation between "temporary" errors or more "permanent" errors, which would not be solved over time, but ended up concluding what you see in this commit. I thought of different scenarios, but realized most of them are actually temporary, be they more or less difficult to solve/change over time, but temporary over all. For instance: - CONNRESFUSED -> may change over time if the service goes up or if there's a topology change in the network/routing. - Protocol Not Supported: It can actually change if you load for instance the sctp module after starting osmo-msc. - Address in use: Can be available at some point if the other process using it finishes (or it already finished but the kernel didn't release the socket completely yet). - Network unreachable: can change due to network topology. - Timeout: can change due to network topology. In any case, adding extra info to differentiate those errors would mean changing the API, or extending it by setting errno explicitly in the implementation and documenting it. -- To view, visit https://gerrit.osmocom.org/7650 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I25b33f4cdc496ae31ff240d445b9b2805091845c Gerrit-PatchSet: 1 Gerrit-Project: libosmo-netif Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Pau Espin Pedrol Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Thu Apr 5 23:13:31 2018 From: gerrit-no-reply at lists.osmocom.org (Neels Hofmeyr) Date: Thu, 5 Apr 2018 23:13:31 +0000 Subject: [PATCH] osmo-ttcn3-hacks[master]: add compare-results.sh, call from start-testsuite.sh In-Reply-To: References: Message-ID: Hello Harald Welte, Jenkins Builder, I'd like you to reexamine a change. Please visit https://gerrit.osmocom.org/7646 to look at the new patch set (#2). add compare-results.sh, call from start-testsuite.sh Compare current test results to the expected results, and exit in error on discrepancies. Add compare-result.sh: (trivially) grep junit xml output to determine which tests passed and which didn't, and compare against an expected-result.log, another junit file from a previous run. Summarize and determine success. Include an "xfail" feature: tests that are expected to fail are marked as "xfail", unexpected failures as "FAIL". In various subdirs, copy the current jenkins jobs' junit xml outputs as expected-results.log, so that we will start getting useful output in both jenkins runs and manual local runs. In start-testsuite.sh, after running the tests, invoke the results comparison. Due to the single-line parsing nature, the script so far does not distinguish between error and failure. I doubt that we actually need to do that though. Related: OS#3136 Change-Id: I87d62a8be73d73a5eeff61a842e7c27a0066079d --- M .gitignore A bsc/expected-results.log A compare-results.sh A ggsn_tests/expected-results.log A hlr/expected-results.log A mgw/expected-results.log A msc/expected-results.log A sgsn/expected-results.log A sip/expected-results.log M start-testsuite.sh A sysinfo/expected-results.log 11 files changed, 633 insertions(+), 2 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-ttcn3-hacks refs/changes/46/7646/2 diff --git a/.gitignore b/.gitignore index 8282f5f..519dc48 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,7 @@ deps/*/ *.o *.log +!expected-results.log *.so compile */.gitignore diff --git a/bsc/expected-results.log b/bsc/expected-results.log new file mode 100644 index 0000000..18a9a20 --- /dev/null +++ b/bsc/expected-results.log @@ -0,0 +1,95 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Timeout expecting { msg_disc := { msg_group := RSL_MDISC_CCHAN (6), transparent := false }, msg_type := RSL_MT_PAGING_CMD (21), ies := { { iei := ?, body := { chan_nr := { u := { ch0 := RSL_CHAN_NR_PCH_AGCH (18) }, tn := ? } } }, { iei := ?, body := { paging_group := ? } }, { iei := ?, body := { ms_identity := { len := ?, payload := ? } } }, * } } + BSC_Tests.ttcn:2203 BSC_Tests control part + BSC_Tests.ttcn:1131 TC_paging_imsi_nochan_lai testcase + + + + + + + + + + + + + + Received PAGING after A-RESET + BSC_Tests.ttcn:2212 BSC_Tests control part + BSC_Tests.ttcn:1306 TC_paging_imsi_a_reset testcase + + + + + + + + + + + + + + + + + Timeout of T_guard + BSC_Tests.ttcn:2230 BSC_Tests control part + BSC_Tests.ttcn:2056 TC_bssmap_clear_does_not_cause_bssmap_reset testcase + + + + Timeout of T_guard + BSC_Tests.ttcn:2231 BSC_Tests control part + BSC_Tests.ttcn:2115 TC_ms_rel_ind_does_not_cause_bssmap_reset testcase + + + diff --git a/compare-results.sh b/compare-results.sh new file mode 100755 index 0000000..cb80a0d --- /dev/null +++ b/compare-results.sh @@ -0,0 +1,198 @@ +#!/usr/bin/env bash +expected_file="$1" +results_file="$2" + +usage() { + echo " +Usage: + + $(basename "$0") expected_results.junit-log current_results.junit-log [--allow-* [...]] + +Return 0 if the expected results match the current results exactly. + + --allow-skip Allow runnning less tests than are listed in the expected file. + Default is to return failure on any skipped tests. + --allow-new Allow more test results than found in the expected file. + Default is to return failure on any unknown tests. + --allow-xpass If a test was expected to fail but passed, return success. + Default is to return failure on any mismatch. +" +} + +if [ ! -f "$expected_file" ]; then + usage + echo "Expected file not found: '$expected_file'" + exit 1 +fi + +if [ ! -f "$results_file" ]; then + usage + echo "Current results file not found: '$results_file'" + exit 1 +fi + +shift +shift + +allow_xpass=0 +allow_skip=0 +allow_new=0 + +while test -n "$1"; do + arg="$1" + if [ "x$arg" = "x--allow-xpass" ]; then + allow_xpass=1 + elif [ "x$arg" = "x--allow-skip" ]; then + allow_skip=1 + elif [ "x$arg" = "x--allow-new" ]; then + allow_new=1 + else + usage + echo "Unknown argument: '$arg'" + exit 1 + fi + shift +done + +echo "Comparing expected results $expected_file against results in $results_file +--------------------" + +parse_testcase() { + line="$1" + suite_name="$(echo "$line" | sed 's,.*classname='"'"'\([^'"'"']*\)'"'"'.*,\1,')" + test_name="$(echo "$line" | sed 's,.*\$')" ]; then + test_result="pass" + else + test_result="FAIL" + fi +} + +pass=0 +xfail=0 +more_failures=0 +more_successes=0 +skipped=0 +new=0 + +while read line; do + parse_testcase "$line" + exp_suite_name="$suite_name" + exp_test_name="$test_name" + exp_test_result="$test_result" + matched="0" + + while read line; do + parse_testcase "$line" + if [ "x$exp_suite_name" != "x$suite_name" ]; then + continue + fi + if [ "x$exp_test_name" != "x$test_name" ]; then + continue + fi + + if [ "x$exp_test_result" = "x$test_result" ]; then + if [ "x$exp_test_result" = "xFAIL" ]; then + exp_test_result="xfail" + (( xfail += 1 )) + else + (( pass += 1 )) + fi + echo "$exp_test_result $suite_name.$test_name" + else + if [ "x$exp_test_result" = "xFAIL" ]; then + exp_test_result="xfail" + fi + echo "$exp_test_result->$test_result $suite_name.$test_name" + if [ "x$test_result" = "xFAIL" ]; then + (( more_failures += 1 )) + else + (( more_successes += 1 )) + fi + fi + matched="1" + break + done <<< "$(grep " + + + + + + + + + + + + + diff --git a/hlr/expected-results.log b/hlr/expected-results.log new file mode 100644 index 0000000..be8000c --- /dev/null +++ b/hlr/expected-results.log @@ -0,0 +1,23 @@ + + + + Unexpected SAI ERROR Cause + HLR_Tests.ttcn:558 HLR_Tests control part + HLR_Tests.ttcn:364 TC_gsup_sai_err_invalid_imsi testcase + + + + + + + + + Timeout waiting for ISD.req + HLR_Tests.ttcn:564 HLR_Tests control part + HLR_Tests.ttcn:485 TC_vty_msisdn_isd testcase + + + + + + diff --git a/mgw/expected-results.log b/mgw/expected-results.log new file mode 100644 index 0000000..c67d5d9 --- /dev/null +++ b/mgw/expected-results.log @@ -0,0 +1,36 @@ + + + + no verdict + + + + + + + + + + + + MGCP_Test.ttcn:887 MGCP_Test control part + MGCP_Test.ttcn:436 TC_crcx_illegal_double_lco testcase + + + + + + + + + + + + + + + + + + + diff --git a/msc/expected-results.log b/msc/expected-results.log new file mode 100644 index 0000000..3945a5f --- /dev/null +++ b/msc/expected-results.log @@ -0,0 +1,110 @@ + + + + + + + Timeout waiting for ClearCommand/Release + MSC_Tests.ttcn:1829 MSC_Tests control part + MSC_Tests.ttcn:502 TC_lu_imsi_reject testcase + + + + Timeout waiting for ClearCommand/Release + MSC_Tests.ttcn:1830 MSC_Tests control part + MSC_Tests.ttcn:531 TC_lu_imsi_timeout_gsup testcase + + + + + + + + + + + + + + + + Timeout waiting for ClearCommand/Release + MSC_Tests.ttcn:1843 MSC_Tests control part + MSC_Tests.ttcn:903 TC_emerg_call_imei_reject testcase + + + + + Timeout waiting for ClearCommand/Release + MSC_Tests.ttcn:1845 MSC_Tests control part + MSC_Tests.ttcn:940 TC_cm_serv_req_vgcs_reject testcase + + + + Timeout waiting for ClearCommand/Release + MSC_Tests.ttcn:1846 MSC_Tests control part + MSC_Tests.ttcn:961 TC_cm_serv_req_vbs_reject testcase + + + + Timeout waiting for ClearCommand/Release + MSC_Tests.ttcn:1847 MSC_Tests control part + MSC_Tests.ttcn:982 TC_cm_serv_req_lcs_reject testcase + + + + Timeout waiting for ClearCommand/Release + MSC_Tests.ttcn:1848 MSC_Tests control part + MSC_Tests.ttcn:1003 TC_cm_reest_req_reject testcase + + + + + + + Timeout waiting for ClearCommand or SCCP Release + MSC_Tests.ttcn:1852 MSC_Tests control part + MSC_Tests.ttcn:1125 TC_cl3_rnd_payload testcase + + + + Timeout waiting for ClearCommand/Release + MSC_Tests.ttcn:1853 MSC_Tests control part + MSC_Tests.ttcn:1142 TC_establish_and_nothing testcase + + + + Timeout waiting for ClearCommand/Release + MSC_Tests.ttcn:1854 MSC_Tests control part + MSC_Tests.ttcn:1166 TC_mo_setup_and_nothing testcase + + + + + Timeout waiting for channel release + MSC_Tests.ttcn:1856 MSC_Tests control part + MSC_Tests.ttcn:1283 TC_mo_crcx_ran_reject testcase + + + + Timeout waiting for channel release + MSC_Tests.ttcn:1857 MSC_Tests control part + MSC_Tests.ttcn:1380 TC_mt_crcx_ran_reject testcase + + + + + + + + + + + + + + + + + + diff --git a/sgsn/expected-results.log b/sgsn/expected-results.log new file mode 100644 index 0000000..502dde8 --- /dev/null +++ b/sgsn/expected-results.log @@ -0,0 +1,54 @@ + + + + + + + Tguard timeout + SGSN_Tests.ttcn:1157 SGSN_Tests control part + SGSN_Tests.ttcn:480 TC_attach_auth_sai_timeout testcase + + + + Tguard timeout + SGSN_Tests.ttcn:1158 SGSN_Tests control part + SGSN_Tests.ttcn:501 TC_attach_auth_sai_reject testcase + + + + Tguard timeout + SGSN_Tests.ttcn:1159 SGSN_Tests control part + SGSN_Tests.ttcn:529 TC_attach_gsup_lu_timeout testcase + + + + Tguard timeout + SGSN_Tests.ttcn:1160 SGSN_Tests control part + SGSN_Tests.ttcn:558 TC_attach_gsup_lu_reject testcase + + + + + + + + + Dynamic test case error: Error message was received from MC: The connect operation refers to test component with component reference 77, which has already terminated. + + + Dynamic test case error: Error message was received from MC: The connect operation refers to test component with component reference 83, which has already terminated. + + + + + + + + + + Tguard timeout + SGSN_Tests.ttcn:1175 SGSN_Tests control part + SGSN_Tests.ttcn:1148 TC_attach_pdp_act_user_deact_mt testcase + + + diff --git a/sip/expected-results.log b/sip/expected-results.log new file mode 100644 index 0000000..54123a5 --- /dev/null +++ b/sip/expected-results.log @@ -0,0 +1,7 @@ + + + + + + + diff --git a/start-testsuite.sh b/start-testsuite.sh index 8affdba..5b187fa 100755 --- a/start-testsuite.sh +++ b/start-testsuite.sh @@ -10,7 +10,9 @@ fi SUITE=$1 -CFG=$(basename "$SUITE").cfg +SUITE_DIR="$(dirname "$SUITE")" +SUITE_NAME="$(basename "$SUITE")" +CFG="$SUITE_NAME.cfg" if [ $# -gt 1 ]; then CFG=$2 fi @@ -19,4 +21,26 @@ TEST=$3 fi -LD_LIBRARY_PATH=$(dirname "$SUITE"):/usr/lib/titan:/usr/ttcn3/lib ttcn3_start $SUITE $CFG $TEST +LD_LIBRARY_PATH="$SUITE_DIR:/usr/lib/titan:/usr/ttcn3/lib" ttcn3_start $SUITE $CFG $TEST + +expected="$SUITE_DIR/expected-results.log" +if [ ! -f "$expected" ]; then + echo "No expected results found, not comparing outcome. ($expected)" + exit 0 +fi + +# find the most recent junit output log here +last_log="$(ls -1tr junit*.log | tail -n 1)" +if [ ! -f "$last_log" ]; then + echo "No junit log found." + exit 1 +fi + +compare="$SUITE_DIR/../compare-results.sh" +if [ ! -x "$compare" ]; then + echo "ERROR: cannot find $compare" + exit 1 +fi + +set -e +"$compare" "$expected" "$last_log" $OSMO_TTCN3_COMPARE_ARGS diff --git a/sysinfo/expected-results.log b/sysinfo/expected-results.log new file mode 100644 index 0000000..cea6f54 --- /dev/null +++ b/sysinfo/expected-results.log @@ -0,0 +1,69 @@ + + + + + + No SI messages for TC=0! + + + + + No SI messages for TC=0! + + + + + No SI messages for TC=0! + + + + + Test.ttcn:162: Dynamic test case error: testcase.stop + + + + Test.ttcn:162: Dynamic test case error: testcase.stop + + + Test.ttcn:162: Dynamic test case error: testcase.stop + + + Test.ttcn:478: Dynamic test case error: testcase.stop + + + Test.ttcn:478: Dynamic test case error: testcase.stop + + + Test.ttcn:478: Dynamic test case error: testcase.stop + + + Test.ttcn:478: Dynamic test case error: testcase.stop + + + Test.ttcn:478: Dynamic test case error: testcase.stop + + + Test.ttcn:478: Dynamic test case error: testcase.stop + + + Test.ttcn:478: Dynamic test case error: testcase.stop + + + Test.ttcn:478: Dynamic test case error: testcase.stop + + + Test.ttcn:478: Dynamic test case error: testcase.stop + + + Test.ttcn:478: Dynamic test case error: testcase.stop + + + Test.ttcn:478: Dynamic test case error: testcase.stop + + + Test.ttcn:478: Dynamic test case error: testcase.stop + + + Test.ttcn:478: Dynamic test case error: testcase.stop + + -- To view, visit https://gerrit.osmocom.org/7646 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newpatchset Gerrit-Change-Id: I87d62a8be73d73a5eeff61a842e7c27a0066079d Gerrit-PatchSet: 2 Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Neels Hofmeyr From gerrit-no-reply at lists.osmocom.org Thu Apr 5 23:14:48 2018 From: gerrit-no-reply at lists.osmocom.org (Neels Hofmeyr) Date: Thu, 5 Apr 2018 23:14:48 +0000 Subject: osmo-ttcn3-hacks[master]: add compare-results.sh, call from start-testsuite.sh In-Reply-To: References: Message-ID: Patch Set 2: Code-Review+2 re-add earlier +2, patch set just fixed a manual edit of msc's expected results that should not have gotten into the patch. -- To view, visit https://gerrit.osmocom.org/7646 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I87d62a8be73d73a5eeff61a842e7c27a0066079d Gerrit-PatchSet: 2 Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Neels Hofmeyr Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Thu Apr 5 23:15:00 2018 From: gerrit-no-reply at lists.osmocom.org (Neels Hofmeyr) Date: Thu, 5 Apr 2018 23:15:00 +0000 Subject: [MERGED] osmo-ttcn3-hacks[master]: add compare-results.sh, call from start-testsuite.sh In-Reply-To: References: Message-ID: Neels Hofmeyr has submitted this change and it was merged. Change subject: add compare-results.sh, call from start-testsuite.sh ...................................................................... add compare-results.sh, call from start-testsuite.sh Compare current test results to the expected results, and exit in error on discrepancies. Add compare-result.sh: (trivially) grep junit xml output to determine which tests passed and which didn't, and compare against an expected-result.log, another junit file from a previous run. Summarize and determine success. Include an "xfail" feature: tests that are expected to fail are marked as "xfail", unexpected failures as "FAIL". In various subdirs, copy the current jenkins jobs' junit xml outputs as expected-results.log, so that we will start getting useful output in both jenkins runs and manual local runs. In start-testsuite.sh, after running the tests, invoke the results comparison. Due to the single-line parsing nature, the script so far does not distinguish between error and failure. I doubt that we actually need to do that though. Related: OS#3136 Change-Id: I87d62a8be73d73a5eeff61a842e7c27a0066079d --- M .gitignore A bsc/expected-results.log A compare-results.sh A ggsn_tests/expected-results.log A hlr/expected-results.log A mgw/expected-results.log A msc/expected-results.log A sgsn/expected-results.log A sip/expected-results.log M start-testsuite.sh A sysinfo/expected-results.log 11 files changed, 633 insertions(+), 2 deletions(-) Approvals: Neels Hofmeyr: Looks good to me, approved Jenkins Builder: Verified diff --git a/.gitignore b/.gitignore index 8282f5f..519dc48 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,7 @@ deps/*/ *.o *.log +!expected-results.log *.so compile */.gitignore diff --git a/bsc/expected-results.log b/bsc/expected-results.log new file mode 100644 index 0000000..18a9a20 --- /dev/null +++ b/bsc/expected-results.log @@ -0,0 +1,95 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Timeout expecting { msg_disc := { msg_group := RSL_MDISC_CCHAN (6), transparent := false }, msg_type := RSL_MT_PAGING_CMD (21), ies := { { iei := ?, body := { chan_nr := { u := { ch0 := RSL_CHAN_NR_PCH_AGCH (18) }, tn := ? } } }, { iei := ?, body := { paging_group := ? } }, { iei := ?, body := { ms_identity := { len := ?, payload := ? } } }, * } } + BSC_Tests.ttcn:2203 BSC_Tests control part + BSC_Tests.ttcn:1131 TC_paging_imsi_nochan_lai testcase + + + + + + + + + + + + + + Received PAGING after A-RESET + BSC_Tests.ttcn:2212 BSC_Tests control part + BSC_Tests.ttcn:1306 TC_paging_imsi_a_reset testcase + + + + + + + + + + + + + + + + + Timeout of T_guard + BSC_Tests.ttcn:2230 BSC_Tests control part + BSC_Tests.ttcn:2056 TC_bssmap_clear_does_not_cause_bssmap_reset testcase + + + + Timeout of T_guard + BSC_Tests.ttcn:2231 BSC_Tests control part + BSC_Tests.ttcn:2115 TC_ms_rel_ind_does_not_cause_bssmap_reset testcase + + + diff --git a/compare-results.sh b/compare-results.sh new file mode 100755 index 0000000..cb80a0d --- /dev/null +++ b/compare-results.sh @@ -0,0 +1,198 @@ +#!/usr/bin/env bash +expected_file="$1" +results_file="$2" + +usage() { + echo " +Usage: + + $(basename "$0") expected_results.junit-log current_results.junit-log [--allow-* [...]] + +Return 0 if the expected results match the current results exactly. + + --allow-skip Allow runnning less tests than are listed in the expected file. + Default is to return failure on any skipped tests. + --allow-new Allow more test results than found in the expected file. + Default is to return failure on any unknown tests. + --allow-xpass If a test was expected to fail but passed, return success. + Default is to return failure on any mismatch. +" +} + +if [ ! -f "$expected_file" ]; then + usage + echo "Expected file not found: '$expected_file'" + exit 1 +fi + +if [ ! -f "$results_file" ]; then + usage + echo "Current results file not found: '$results_file'" + exit 1 +fi + +shift +shift + +allow_xpass=0 +allow_skip=0 +allow_new=0 + +while test -n "$1"; do + arg="$1" + if [ "x$arg" = "x--allow-xpass" ]; then + allow_xpass=1 + elif [ "x$arg" = "x--allow-skip" ]; then + allow_skip=1 + elif [ "x$arg" = "x--allow-new" ]; then + allow_new=1 + else + usage + echo "Unknown argument: '$arg'" + exit 1 + fi + shift +done + +echo "Comparing expected results $expected_file against results in $results_file +--------------------" + +parse_testcase() { + line="$1" + suite_name="$(echo "$line" | sed 's,.*classname='"'"'\([^'"'"']*\)'"'"'.*,\1,')" + test_name="$(echo "$line" | sed 's,.*\$')" ]; then + test_result="pass" + else + test_result="FAIL" + fi +} + +pass=0 +xfail=0 +more_failures=0 +more_successes=0 +skipped=0 +new=0 + +while read line; do + parse_testcase "$line" + exp_suite_name="$suite_name" + exp_test_name="$test_name" + exp_test_result="$test_result" + matched="0" + + while read line; do + parse_testcase "$line" + if [ "x$exp_suite_name" != "x$suite_name" ]; then + continue + fi + if [ "x$exp_test_name" != "x$test_name" ]; then + continue + fi + + if [ "x$exp_test_result" = "x$test_result" ]; then + if [ "x$exp_test_result" = "xFAIL" ]; then + exp_test_result="xfail" + (( xfail += 1 )) + else + (( pass += 1 )) + fi + echo "$exp_test_result $suite_name.$test_name" + else + if [ "x$exp_test_result" = "xFAIL" ]; then + exp_test_result="xfail" + fi + echo "$exp_test_result->$test_result $suite_name.$test_name" + if [ "x$test_result" = "xFAIL" ]; then + (( more_failures += 1 )) + else + (( more_successes += 1 )) + fi + fi + matched="1" + break + done <<< "$(grep " + + + + + + + + + + + + + diff --git a/hlr/expected-results.log b/hlr/expected-results.log new file mode 100644 index 0000000..be8000c --- /dev/null +++ b/hlr/expected-results.log @@ -0,0 +1,23 @@ + + + + Unexpected SAI ERROR Cause + HLR_Tests.ttcn:558 HLR_Tests control part + HLR_Tests.ttcn:364 TC_gsup_sai_err_invalid_imsi testcase + + + + + + + + + Timeout waiting for ISD.req + HLR_Tests.ttcn:564 HLR_Tests control part + HLR_Tests.ttcn:485 TC_vty_msisdn_isd testcase + + + + + + diff --git a/mgw/expected-results.log b/mgw/expected-results.log new file mode 100644 index 0000000..c67d5d9 --- /dev/null +++ b/mgw/expected-results.log @@ -0,0 +1,36 @@ + + + + no verdict + + + + + + + + + + + + MGCP_Test.ttcn:887 MGCP_Test control part + MGCP_Test.ttcn:436 TC_crcx_illegal_double_lco testcase + + + + + + + + + + + + + + + + + + + diff --git a/msc/expected-results.log b/msc/expected-results.log new file mode 100644 index 0000000..3945a5f --- /dev/null +++ b/msc/expected-results.log @@ -0,0 +1,110 @@ + + + + + + + Timeout waiting for ClearCommand/Release + MSC_Tests.ttcn:1829 MSC_Tests control part + MSC_Tests.ttcn:502 TC_lu_imsi_reject testcase + + + + Timeout waiting for ClearCommand/Release + MSC_Tests.ttcn:1830 MSC_Tests control part + MSC_Tests.ttcn:531 TC_lu_imsi_timeout_gsup testcase + + + + + + + + + + + + + + + + Timeout waiting for ClearCommand/Release + MSC_Tests.ttcn:1843 MSC_Tests control part + MSC_Tests.ttcn:903 TC_emerg_call_imei_reject testcase + + + + + Timeout waiting for ClearCommand/Release + MSC_Tests.ttcn:1845 MSC_Tests control part + MSC_Tests.ttcn:940 TC_cm_serv_req_vgcs_reject testcase + + + + Timeout waiting for ClearCommand/Release + MSC_Tests.ttcn:1846 MSC_Tests control part + MSC_Tests.ttcn:961 TC_cm_serv_req_vbs_reject testcase + + + + Timeout waiting for ClearCommand/Release + MSC_Tests.ttcn:1847 MSC_Tests control part + MSC_Tests.ttcn:982 TC_cm_serv_req_lcs_reject testcase + + + + Timeout waiting for ClearCommand/Release + MSC_Tests.ttcn:1848 MSC_Tests control part + MSC_Tests.ttcn:1003 TC_cm_reest_req_reject testcase + + + + + + + Timeout waiting for ClearCommand or SCCP Release + MSC_Tests.ttcn:1852 MSC_Tests control part + MSC_Tests.ttcn:1125 TC_cl3_rnd_payload testcase + + + + Timeout waiting for ClearCommand/Release + MSC_Tests.ttcn:1853 MSC_Tests control part + MSC_Tests.ttcn:1142 TC_establish_and_nothing testcase + + + + Timeout waiting for ClearCommand/Release + MSC_Tests.ttcn:1854 MSC_Tests control part + MSC_Tests.ttcn:1166 TC_mo_setup_and_nothing testcase + + + + + Timeout waiting for channel release + MSC_Tests.ttcn:1856 MSC_Tests control part + MSC_Tests.ttcn:1283 TC_mo_crcx_ran_reject testcase + + + + Timeout waiting for channel release + MSC_Tests.ttcn:1857 MSC_Tests control part + MSC_Tests.ttcn:1380 TC_mt_crcx_ran_reject testcase + + + + + + + + + + + + + + + + + + diff --git a/sgsn/expected-results.log b/sgsn/expected-results.log new file mode 100644 index 0000000..502dde8 --- /dev/null +++ b/sgsn/expected-results.log @@ -0,0 +1,54 @@ + + + + + + + Tguard timeout + SGSN_Tests.ttcn:1157 SGSN_Tests control part + SGSN_Tests.ttcn:480 TC_attach_auth_sai_timeout testcase + + + + Tguard timeout + SGSN_Tests.ttcn:1158 SGSN_Tests control part + SGSN_Tests.ttcn:501 TC_attach_auth_sai_reject testcase + + + + Tguard timeout + SGSN_Tests.ttcn:1159 SGSN_Tests control part + SGSN_Tests.ttcn:529 TC_attach_gsup_lu_timeout testcase + + + + Tguard timeout + SGSN_Tests.ttcn:1160 SGSN_Tests control part + SGSN_Tests.ttcn:558 TC_attach_gsup_lu_reject testcase + + + + + + + + + Dynamic test case error: Error message was received from MC: The connect operation refers to test component with component reference 77, which has already terminated. + + + Dynamic test case error: Error message was received from MC: The connect operation refers to test component with component reference 83, which has already terminated. + + + + + + + + + + Tguard timeout + SGSN_Tests.ttcn:1175 SGSN_Tests control part + SGSN_Tests.ttcn:1148 TC_attach_pdp_act_user_deact_mt testcase + + + diff --git a/sip/expected-results.log b/sip/expected-results.log new file mode 100644 index 0000000..54123a5 --- /dev/null +++ b/sip/expected-results.log @@ -0,0 +1,7 @@ + + + + + + + diff --git a/start-testsuite.sh b/start-testsuite.sh index 8affdba..5b187fa 100755 --- a/start-testsuite.sh +++ b/start-testsuite.sh @@ -10,7 +10,9 @@ fi SUITE=$1 -CFG=$(basename "$SUITE").cfg +SUITE_DIR="$(dirname "$SUITE")" +SUITE_NAME="$(basename "$SUITE")" +CFG="$SUITE_NAME.cfg" if [ $# -gt 1 ]; then CFG=$2 fi @@ -19,4 +21,26 @@ TEST=$3 fi -LD_LIBRARY_PATH=$(dirname "$SUITE"):/usr/lib/titan:/usr/ttcn3/lib ttcn3_start $SUITE $CFG $TEST +LD_LIBRARY_PATH="$SUITE_DIR:/usr/lib/titan:/usr/ttcn3/lib" ttcn3_start $SUITE $CFG $TEST + +expected="$SUITE_DIR/expected-results.log" +if [ ! -f "$expected" ]; then + echo "No expected results found, not comparing outcome. ($expected)" + exit 0 +fi + +# find the most recent junit output log here +last_log="$(ls -1tr junit*.log | tail -n 1)" +if [ ! -f "$last_log" ]; then + echo "No junit log found." + exit 1 +fi + +compare="$SUITE_DIR/../compare-results.sh" +if [ ! -x "$compare" ]; then + echo "ERROR: cannot find $compare" + exit 1 +fi + +set -e +"$compare" "$expected" "$last_log" $OSMO_TTCN3_COMPARE_ARGS diff --git a/sysinfo/expected-results.log b/sysinfo/expected-results.log new file mode 100644 index 0000000..cea6f54 --- /dev/null +++ b/sysinfo/expected-results.log @@ -0,0 +1,69 @@ + + + + + + No SI messages for TC=0! + + + + + No SI messages for TC=0! + + + + + No SI messages for TC=0! + + + + + Test.ttcn:162: Dynamic test case error: testcase.stop + + + + Test.ttcn:162: Dynamic test case error: testcase.stop + + + Test.ttcn:162: Dynamic test case error: testcase.stop + + + Test.ttcn:478: Dynamic test case error: testcase.stop + + + Test.ttcn:478: Dynamic test case error: testcase.stop + + + Test.ttcn:478: Dynamic test case error: testcase.stop + + + Test.ttcn:478: Dynamic test case error: testcase.stop + + + Test.ttcn:478: Dynamic test case error: testcase.stop + + + Test.ttcn:478: Dynamic test case error: testcase.stop + + + Test.ttcn:478: Dynamic test case error: testcase.stop + + + Test.ttcn:478: Dynamic test case error: testcase.stop + + + Test.ttcn:478: Dynamic test case error: testcase.stop + + + Test.ttcn:478: Dynamic test case error: testcase.stop + + + Test.ttcn:478: Dynamic test case error: testcase.stop + + + Test.ttcn:478: Dynamic test case error: testcase.stop + + + Test.ttcn:478: Dynamic test case error: testcase.stop + + -- To view, visit https://gerrit.osmocom.org/7646 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: I87d62a8be73d73a5eeff61a842e7c27a0066079d Gerrit-PatchSet: 2 Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Neels Hofmeyr From gerrit-no-reply at lists.osmocom.org Thu Apr 5 23:17:23 2018 From: gerrit-no-reply at lists.osmocom.org (Neels Hofmeyr) Date: Thu, 5 Apr 2018 23:17:23 +0000 Subject: [PATCH] osmo-ttcn3-hacks[master]: fix TC_lu_clear_request: allow LU Reject message, forbid sec... Message-ID: Review at https://gerrit.osmocom.org/7653 fix TC_lu_clear_request: allow LU Reject message, forbid second Clear Cmd When the MS sends a Clear Request in the middle of a Location Updating, it should be permitted for the MSC to send a Location Updating Reject back. Extend with an alt that also allows a LU reject before the Clear Command. The test explicitly hints at https://osmocom.org/issues/2862 which rightfully forbids the MSC to send a second Clear Command after the first is completed. However, this test so far explicitly permits a second Clear Command, so it was probably passing in error all the time. Set verdict to failure if a second Clear Command is received before the DISC_IND. This changes the test verdict to failure with current osmo-msc master, rightfully so; the failure will be fixed by the upcoming MSC subscr conn FSM refactoring. Change-Id: I7bc5555b829d61b0a2529107bc9b58446865545d --- M msc/MSC_Tests.ttcn M msc/expected-results.log 2 files changed, 14 insertions(+), 3 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-ttcn3-hacks refs/changes/53/7653/1 diff --git a/msc/MSC_Tests.ttcn b/msc/MSC_Tests.ttcn index ce9c8b9..6ec08bb 100644 --- a/msc/MSC_Tests.ttcn +++ b/msc/MSC_Tests.ttcn @@ -681,11 +681,17 @@ f_sleep(1.0); /* send clear request in the middle of the LU */ BSSAP.send(ts_BSSMAP_ClearRequest(0)); - BSSAP.receive(tr_BSSMAP_ClearCommand); + alt { + [] BSSAP.receive(tr_PDU_DTAP_MT(tr_ML3_MT_LU_Rej)) { repeat; } + [] BSSAP.receive(tr_BSSMAP_ClearCommand) {} + } BSSAP.send(ts_BSSMAP_ClearComplete); alt { /* See https://osmocom.org/issues/2862 */ - [] BSSAP.receive(tr_BSSMAP_ClearCommand) { repeat; } + [] BSSAP.receive(tr_BSSMAP_ClearCommand) { + setverdict(fail, "Got a second Clear Command, only one expected"); + repeat; + } [] BSSAP.receive(BSSAP_Conn_Prim:MSC_CONN_PRIM_DISC_IND) {} } setverdict(pass); diff --git a/msc/expected-results.log b/msc/expected-results.log index 3945a5f..92c38a0 100644 --- a/msc/expected-results.log +++ b/msc/expected-results.log @@ -20,7 +20,12 @@ - + + Got a second Clear Command, only one expected + MSC_Tests.ttcn:1832 MSC_Tests control part + MSC_Tests.ttcn:704 TC_lu_clear_request testcase + + -- To view, visit https://gerrit.osmocom.org/7653 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I7bc5555b829d61b0a2529107bc9b58446865545d Gerrit-PatchSet: 1 Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr From gerrit-no-reply at lists.osmocom.org Thu Apr 5 23:18:14 2018 From: gerrit-no-reply at lists.osmocom.org (Neels Hofmeyr) Date: Thu, 5 Apr 2018 23:18:14 +0000 Subject: [PATCH] osmo-ttcn3-hacks[master]: fix MSC.TC_lu_clear_request: allow LU Reject, forbid 2nd Cle... In-Reply-To: References: Message-ID: Hello Jenkins Builder, I'd like you to reexamine a change. Please visit https://gerrit.osmocom.org/7653 to look at the new patch set (#2). fix MSC.TC_lu_clear_request: allow LU Reject, forbid 2nd Clear Cmd When the MS sends a Clear Request in the middle of a Location Updating, it should be permitted for the MSC to send a Location Updating Reject back. Extend with an alt that also allows a LU reject before the Clear Command. The test explicitly hints at https://osmocom.org/issues/2862 which rightfully forbids the MSC to send a second Clear Command after the first is completed. However, this test so far explicitly permits a second Clear Command, so it was probably passing in error all the time. Set verdict to failure if a second Clear Command is received before the DISC_IND. This changes the test verdict to failure with current osmo-msc master, rightfully so; the failure will be fixed by the upcoming MSC subscr conn FSM refactoring. Change-Id: I7bc5555b829d61b0a2529107bc9b58446865545d --- M msc/MSC_Tests.ttcn M msc/expected-results.log 2 files changed, 14 insertions(+), 3 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-ttcn3-hacks refs/changes/53/7653/2 diff --git a/msc/MSC_Tests.ttcn b/msc/MSC_Tests.ttcn index ce9c8b9..6ec08bb 100644 --- a/msc/MSC_Tests.ttcn +++ b/msc/MSC_Tests.ttcn @@ -681,11 +681,17 @@ f_sleep(1.0); /* send clear request in the middle of the LU */ BSSAP.send(ts_BSSMAP_ClearRequest(0)); - BSSAP.receive(tr_BSSMAP_ClearCommand); + alt { + [] BSSAP.receive(tr_PDU_DTAP_MT(tr_ML3_MT_LU_Rej)) { repeat; } + [] BSSAP.receive(tr_BSSMAP_ClearCommand) {} + } BSSAP.send(ts_BSSMAP_ClearComplete); alt { /* See https://osmocom.org/issues/2862 */ - [] BSSAP.receive(tr_BSSMAP_ClearCommand) { repeat; } + [] BSSAP.receive(tr_BSSMAP_ClearCommand) { + setverdict(fail, "Got a second Clear Command, only one expected"); + repeat; + } [] BSSAP.receive(BSSAP_Conn_Prim:MSC_CONN_PRIM_DISC_IND) {} } setverdict(pass); diff --git a/msc/expected-results.log b/msc/expected-results.log index 3945a5f..92c38a0 100644 --- a/msc/expected-results.log +++ b/msc/expected-results.log @@ -20,7 +20,12 @@ - + + Got a second Clear Command, only one expected + MSC_Tests.ttcn:1832 MSC_Tests control part + MSC_Tests.ttcn:704 TC_lu_clear_request testcase + + -- To view, visit https://gerrit.osmocom.org/7653 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newpatchset Gerrit-Change-Id: I7bc5555b829d61b0a2529107bc9b58446865545d Gerrit-PatchSet: 2 Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr Gerrit-Reviewer: Jenkins Builder From jenkins at lists.osmocom.org Thu Apr 5 23:20:12 2018 From: jenkins at lists.osmocom.org (jenkins at lists.osmocom.org) Date: Thu, 5 Apr 2018 23:20:12 +0000 (UTC) Subject: =?UTF-8?Q?Build_failed_in_Jenkins:_master-osmo-bts_=C2=BB_sysmo, sup?= =?UTF-8?Q?erfemto=5Fv3.0.1pre,default,osmocom-master-debian9_#465?= Message-ID: <1646763481.38.1522970413006.JavaMail.jenkins@jenkins.osmocom.org> See ------------------------------------------ Started by upstream project "master-osmo-bts" build number 465 originally caused by: Started by timer Building remotely on build2-deb9build-ansible (ttcn3 osmo-gsm-tester-build osmocom-gerrit-debian9 osmocom-master-debian9 coverity) in workspace > git rev-parse --is-inside-work-tree # timeout=10 Fetching changes from the remote Git repository > git config remote.origin.url git://git.osmocom.org/osmo-bts # timeout=10 Fetching upstream changes from git://git.osmocom.org/osmo-bts > git --version # timeout=10 > git fetch --tags --progress git://git.osmocom.org/osmo-bts +refs/heads/*:refs/remotes/origin/* Checking out Revision 254326de3dd238d6a26989f141ff3c7eaf1da56a (refs/remotes/origin/master) > git config core.sparsecheckout # timeout=10 > git checkout -f 254326de3dd238d6a26989f141ff3c7eaf1da56a Commit message: "rsl_tx_dyn_pdch_ack: Add missing FRAME_NR information element" > git rev-list --no-walk 254326de3dd238d6a26989f141ff3c7eaf1da56a # timeout=10 [osmocom-master-debian9] $ /bin/sh -xe /tmp/jenkins1591909789992271438.sh + ./contrib/jenkins_bts_model.sh sysmo ./contrib/jenkins_bts_model.sh: 7: [: xsysmo: unexpected operator + ./contrib/jenkins_sysmobts.sh + base= + deps= + inst= + export deps inst + osmo-clean-workspace.sh + chmod -R +w . + git checkout -f HEAD + git clean -dxf -e -e layer1-headers Skipping repository deps/libosmocore + [ -d ] + git -C checkout -f HEAD error: pathspec 'HEAD' did not match any file(s) known to git. Build step 'Execute shell' marked build as failure [WARNINGS]Skipping publisher since build result is FAILURE From gerrit-no-reply at lists.osmocom.org Thu Apr 5 23:27:23 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Thu, 5 Apr 2018 23:27:23 +0000 Subject: [PATCH] osmo-bts[master]: contrib: jenkins_bts_model: Fix bashism expr Message-ID: Review at https://gerrit.osmocom.org/7654 contrib: jenkins_bts_model: Fix bashism expr In posix shell, = is valid and == is not. Change-Id: I5c027039d12c5e455a8f8a0878f88ab30c168db4 --- M contrib/jenkins_bts_model.sh 1 file changed, 1 insertion(+), 1 deletion(-) git pull ssh://gerrit.osmocom.org:29418/osmo-bts refs/changes/54/7654/1 diff --git a/contrib/jenkins_bts_model.sh b/contrib/jenkins_bts_model.sh index 33bfdc7..2488f71 100755 --- a/contrib/jenkins_bts_model.sh +++ b/contrib/jenkins_bts_model.sh @@ -4,7 +4,7 @@ bts_model="$1" -if [ "x$bts_model" == "x" ]; then +if [ "x$bts_model" = "x" ]; then echo "Error: You have to specify the BTS model as first argument, e.g. $0 sysmo" exit 2 fi -- To view, visit https://gerrit.osmocom.org/7654 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I5c027039d12c5e455a8f8a0878f88ab30c168db4 Gerrit-PatchSet: 1 Gerrit-Project: osmo-bts Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol From jenkins at lists.osmocom.org Thu Apr 5 23:57:46 2018 From: jenkins at lists.osmocom.org (jenkins at lists.osmocom.org) Date: Thu, 5 Apr 2018 23:57:46 +0000 (UTC) Subject: =?UTF-8?Q?Build_failed_in_Jenkins:_master-osmo-gmr_=C2=BB_a1=3Ddefau?= =?UTF-8?Q?lt,a2=3Ddefault,a3=3Ddefault,osmocom-master-debian9_#334?= Message-ID: <549923341.39.1522972666255.JavaMail.jenkins@jenkins.osmocom.org> See ------------------------------------------ Started by upstream project "master-osmo-gmr" build number 334 originally caused by: Started by upstream project "master-libosmocore" build number 192 originally caused by: Started by timer Building remotely on build2-deb9build-ansible (ttcn3 osmo-gsm-tester-build osmocom-gerrit-debian9 osmocom-master-debian9 coverity) in workspace > git rev-parse --is-inside-work-tree # timeout=10 Fetching changes from the remote Git repository > git config remote.origin.url git://git.osmocom.org/osmo-gmr # timeout=10 Fetching upstream changes from git://git.osmocom.org/osmo-gmr > git --version # timeout=10 > git fetch --tags --progress git://git.osmocom.org/osmo-gmr +refs/heads/*:refs/remotes/origin/* Checking out Revision adb8cc6aa9453dfc339de53ae641067136a031ec (refs/remotes/origin/master) > git config core.sparsecheckout # timeout=10 > git checkout -f adb8cc6aa9453dfc339de53ae641067136a031ec Commit message: "Add contrib/jenkins.sh script, like other osmo-* repositories" > git rev-list --no-walk adb8cc6aa9453dfc339de53ae641067136a031ec # timeout=10 [osmocom-master-debian9] $ /bin/sh -xe /tmp/jenkins7158258067282036800.sh + ./contrib/jenkins.sh + base= + deps= + inst= + export deps inst + osmo-clean-workspace.sh + chmod -R +w . + git checkout -f HEAD + git clean -dxf -e -e layer1-headers Skipping repository deps/libosmocore + [ -d ] + git -C checkout -f HEAD error: pathspec 'HEAD' did not match any file(s) known to git. Build step 'Execute shell' marked build as failure [WARNINGS]Skipping publisher since build result is FAILURE From jenkins at lists.osmocom.org Fri Apr 6 00:04:36 2018 From: jenkins at lists.osmocom.org (jenkins at lists.osmocom.org) Date: Fri, 6 Apr 2018 00:04:36 +0000 (UTC) Subject: =?UTF-8?Q?Jenkins_build_is_back_to_normal_:_master-osmo-bts_=C2=BB_sysmo?= =?UTF-8?Q?,superfemto=5Fv3.0.1pre,default,osmocom-master-debian9_#466?= In-Reply-To: <1646763481.38.1522970413006.JavaMail.jenkins@jenkins.osmocom.org> References: <1646763481.38.1522970413006.JavaMail.jenkins@jenkins.osmocom.org> Message-ID: <472521.40.1522973076099.JavaMail.jenkins@jenkins.osmocom.org> See From jenkins at lists.osmocom.org Fri Apr 6 00:48:59 2018 From: jenkins at lists.osmocom.org (jenkins at lists.osmocom.org) Date: Fri, 6 Apr 2018 00:48:59 +0000 (UTC) Subject: =?UTF-8?Q?Build_failed_in_Jenkins:_master-osmo-bts_=C2=BB_sysmo, sup?= =?UTF-8?Q?erfemto=5Fv3.0.1pre,default,osmocom-master-debian9_#467?= Message-ID: <1293027774.41.1522975739246.JavaMail.jenkins@jenkins.osmocom.org> See ------------------------------------------ Started by upstream project "master-osmo-bts" build number 467 originally caused by: Started by upstream project "master-libosmo-abis" build number 260 originally caused by: Started by timer Building remotely on build2-deb9build-ansible (ttcn3 osmo-gsm-tester-build osmocom-gerrit-debian9 osmocom-master-debian9 coverity) in workspace > git rev-parse --is-inside-work-tree # timeout=10 Fetching changes from the remote Git repository > git config remote.origin.url git://git.osmocom.org/osmo-bts # timeout=10 Fetching upstream changes from git://git.osmocom.org/osmo-bts > git --version # timeout=10 > git fetch --tags --progress git://git.osmocom.org/osmo-bts +refs/heads/*:refs/remotes/origin/* Checking out Revision 254326de3dd238d6a26989f141ff3c7eaf1da56a (refs/remotes/origin/master) > git config core.sparsecheckout # timeout=10 > git checkout -f 254326de3dd238d6a26989f141ff3c7eaf1da56a Commit message: "rsl_tx_dyn_pdch_ack: Add missing FRAME_NR information element" > git rev-list --no-walk 254326de3dd238d6a26989f141ff3c7eaf1da56a # timeout=10 [osmocom-master-debian9] $ /bin/sh -xe /tmp/jenkins7681235967131258214.sh + ./contrib/jenkins_bts_model.sh sysmo ./contrib/jenkins_bts_model.sh: 7: [: xsysmo: unexpected operator + ./contrib/jenkins_sysmobts.sh + base= + deps= + inst= + export deps inst + osmo-clean-workspace.sh + chmod -R +w . + git checkout -f HEAD + git clean -dxf -e -e layer1-headers Skipping repository deps/libosmocore + [ -d ] + git -C checkout -f HEAD error: pathspec 'HEAD' did not match any file(s) known to git. Build step 'Execute shell' marked build as failure [WARNINGS]Skipping publisher since build result is FAILURE From gerrit-no-reply at lists.osmocom.org Fri Apr 6 02:37:58 2018 From: gerrit-no-reply at lists.osmocom.org (Neels Hofmeyr) Date: Fri, 6 Apr 2018 02:37:58 +0000 Subject: [PATCH] libosmocore[master]: use osmo_init_logging2() with proper talloc ctx In-Reply-To: References: Message-ID: Hello Jenkins Builder, I'd like you to reexamine a change. Please visit https://gerrit.osmocom.org/7637 to look at the new patch set (#2). use osmo_init_logging2() with proper talloc ctx Ironically, when deprecating osmo_init_logging() in I216837780e9405fdaec8059c63d10699c695b360, I forgot to change the callers within libosmocore itself, i.e. in the various regression tests. Change-Id: Ia36c248f99353d5baaa2533f46a2f60a8579bdf8 --- M tests/abis/abis_test.c M tests/gb/bssgp_fc_test.c M tests/gb/gprs_bssgp_test.c M tests/gb/gprs_ns_test.c M tests/gprs/gprs_test.c M tests/gsup/gsup_test.c M tests/lapd/lapd_test.c M tests/msgb/msgb_test.c M tests/oap/oap_test.c M tests/sms/sms_test.c M tests/socket/socket_test.c M tests/tlv/tlv_test.c M tests/ussd/ussd_test.c M tests/vty/vty_test.c 14 files changed, 47 insertions(+), 21 deletions(-) git pull ssh://gerrit.osmocom.org:29418/libosmocore refs/changes/37/7637/2 diff --git a/tests/abis/abis_test.c b/tests/abis/abis_test.c index c0605c2..ca6daed 100644 --- a/tests/abis/abis_test.c +++ b/tests/abis/abis_test.c @@ -199,7 +199,8 @@ int main(int argc, char **argv) { - osmo_init_logging(&info); + void *ctx = talloc_named_const(NULL, 0, "abis_test"); + osmo_init_logging2(ctx, &info); test_sw_descr(); test_simple_sw_config(); diff --git a/tests/gb/bssgp_fc_test.c b/tests/gb/bssgp_fc_test.c index ac690a5..cc38777 100644 --- a/tests/gb/bssgp_fc_test.c +++ b/tests/gb/bssgp_fc_test.c @@ -17,6 +17,7 @@ static unsigned long in_ctr = 1; static struct timeval tv_start; +void *ctx = NULL; int get_centisec_diff(void) { @@ -71,7 +72,7 @@ uint32_t max_queue_depth, uint32_t pdu_len, uint32_t pdu_count) { - struct bssgp_flow_control *fc = talloc_zero(NULL, struct bssgp_flow_control); + struct bssgp_flow_control *fc = talloc_zero(ctx, struct bssgp_flow_control); int i; osmo_gettimeofday_override_time = (struct timeval){ @@ -133,6 +134,7 @@ uint32_t pdu_count = 20; /* messages */ int c; void *tall_msgb_ctx; + ctx = talloc_named_const(NULL, 0, "bssgp_fc_test"); static const struct option long_options[] = { { "bucket-size-max", 1, 0, 's' }, @@ -144,11 +146,11 @@ { 0, 0, 0, 0 } }; - osmo_init_logging(&info); + osmo_init_logging2(ctx, &info); log_set_use_color(osmo_stderr_target, 0); log_set_print_filename(osmo_stderr_target, 0); - tall_msgb_ctx = msgb_talloc_ctx_init(NULL, 0); + tall_msgb_ctx = msgb_talloc_ctx_init(ctx, 0); while ((c = getopt_long(argc, argv, "s:r:d:l:c:", long_options, NULL)) != -1) { diff --git a/tests/gb/gprs_bssgp_test.c b/tests/gb/gprs_bssgp_test.c index c38e180..52e986e 100644 --- a/tests/gb/gprs_bssgp_test.c +++ b/tests/gb/gprs_bssgp_test.c @@ -294,11 +294,14 @@ int main(int argc, char **argv) { struct sockaddr_in bss_peer= {0}; + void *ctx = talloc_named_const(NULL, 0, "gprs_bssgp_test"); - osmo_init_logging(&info); + osmo_init_logging2(ctx, &info); log_set_use_color(osmo_stderr_target, 0); log_set_print_filename(osmo_stderr_target, 0); + msgb_talloc_ctx_init(ctx, 0); + bssgp_nsi = gprs_ns_instantiate(gprs_ns_callback, NULL); bss_peer.sin_family = AF_INET; diff --git a/tests/gb/gprs_ns_test.c b/tests/gb/gprs_ns_test.c index 7e6b85c..f70e493 100644 --- a/tests/gb/gprs_ns_test.c +++ b/tests/gb/gprs_ns_test.c @@ -901,7 +901,8 @@ int main(int argc, char **argv) { - osmo_init_logging(&info); + void *ctx = talloc_named_const(NULL, 0, "gprs_ns_test"); + osmo_init_logging2(ctx, &info); log_set_use_color(osmo_stderr_target, 0); log_set_print_filename(osmo_stderr_target, 0); osmo_signal_register_handler(SS_L_NS, &test_signal, NULL); diff --git a/tests/gprs/gprs_test.c b/tests/gprs/gprs_test.c index 6f16fb2..70e3009 100644 --- a/tests/gprs/gprs_test.c +++ b/tests/gprs/gprs_test.c @@ -120,7 +120,8 @@ int main(int argc, char **argv) { - osmo_init_logging(&info); + void *ctx = talloc_named_const(NULL, 0, "gprs_test"); + osmo_init_logging2(ctx, &info); test_gsm_03_03_apn(); diff --git a/tests/gsup/gsup_test.c b/tests/gsup/gsup_test.c index b55f1d9..acc7274 100644 --- a/tests/gsup/gsup_test.c +++ b/tests/gsup/gsup_test.c @@ -329,7 +329,8 @@ int main(int argc, char **argv) { - osmo_init_logging(&info); + void *ctx = talloc_named_const(NULL, 0, "gsup_test"); + osmo_init_logging2(ctx, &info); log_set_print_filename(osmo_stderr_target, 0); log_set_print_timestamp(osmo_stderr_target, 0); log_set_use_color(osmo_stderr_target, 0); diff --git a/tests/lapd/lapd_test.c b/tests/lapd/lapd_test.c index e627ba6..3f15afe 100644 --- a/tests/lapd/lapd_test.c +++ b/tests/lapd/lapd_test.c @@ -29,6 +29,7 @@ #include #include +#include #include @@ -759,7 +760,10 @@ int main(int argc, char **argv) { - osmo_init_logging(&info); + void *ctx = talloc_named_const(NULL, 0, "lapd_test"); + osmo_init_logging2(ctx, &info); + + msgb_talloc_ctx_init(ctx, 0); /* Prevent the test from segfaulting */ dummy_l1_header_len = 0; diff --git a/tests/msgb/msgb_test.c b/tests/msgb/msgb_test.c index 0533546..ffaa155 100644 --- a/tests/msgb/msgb_test.c +++ b/tests/msgb/msgb_test.c @@ -385,7 +385,9 @@ int main(int argc, char **argv) { - osmo_init_logging(&info); + void *ctx = talloc_named_const(NULL, 0, "msgb_test"); + osmo_init_logging2(ctx, &info); + msgb_talloc_ctx_init(ctx, 0); test_msgb_api(); test_msgb_api_errors(); diff --git a/tests/oap/oap_test.c b/tests/oap/oap_test.c index dea5c11..32676ca 100644 --- a/tests/oap/oap_test.c +++ b/tests/oap/oap_test.c @@ -173,7 +173,9 @@ int main(int argc, char **argv) { - osmo_init_logging(&info); + void *ctx = talloc_named_const(NULL, 0, "oap_test"); + osmo_init_logging2(ctx, &info); + msgb_talloc_ctx_init(ctx, 0); test_oap_messages_dec_enc(); diff --git a/tests/sms/sms_test.c b/tests/sms/sms_test.c index efbdf7e..0615396 100644 --- a/tests/sms/sms_test.c +++ b/tests/sms/sms_test.c @@ -282,9 +282,10 @@ uint8_t septet_data[256]; int nchars; char result[256]; + void *ctx = talloc_named_const(NULL, 0, "sms_test"); /* Fake logging. */ - osmo_init_logging(&fake_log_info); + osmo_init_logging2(ctx, &fake_log_info); /* test 7-bit encoding */ for (i = 0; i < ARRAY_SIZE(test_encode); ++i) { diff --git a/tests/socket/socket_test.c b/tests/socket/socket_test.c index 11ef8da..37e0281 100644 --- a/tests/socket/socket_test.c +++ b/tests/socket/socket_test.c @@ -35,6 +35,8 @@ #include "../config.h" +void *ctx = NULL; + static int test_sockinit(void) { int fd, rc; @@ -44,7 +46,7 @@ fd = osmo_sock_init(AF_INET, SOCK_DGRAM, IPPROTO_UDP, "0.0.0.0", 0, OSMO_SOCK_F_BIND); OSMO_ASSERT(fd >= 0); - name = osmo_sock_get_name(NULL, fd); + name = osmo_sock_get_name(ctx, fd); /* expect it to be not connected. We cannot match on INADDR_ANY, * as apparently that won't work on FreeBSD if there's only one * address (e.g. 127.0.0.1) assigned to the entire system, like @@ -82,7 +84,7 @@ fd = osmo_sock_init2(AF_INET, SOCK_DGRAM, IPPROTO_UDP, "0.0.0.0", 0, NULL, 0, OSMO_SOCK_F_BIND); OSMO_ASSERT(fd >= 0); - name = osmo_sock_get_name(NULL, fd); + name = osmo_sock_get_name(ctx, fd); /* expect it to be not connected. We cannot match on INADDR_ANY, * as apparently that won't work on FreeBSD if there's only one * address (e.g. 127.0.0.1) assigned to the entire system, like @@ -111,7 +113,7 @@ fd = osmo_sock_init2(AF_INET, SOCK_DGRAM, IPPROTO_UDP, "127.0.0.1", 0, "127.0.0.1", 53, OSMO_SOCK_F_BIND|OSMO_SOCK_F_CONNECT); OSMO_ASSERT(fd >= 0); - name = osmo_sock_get_name(NULL, fd); + name = osmo_sock_get_name(ctx, fd); #ifndef __FreeBSD__ /* For some reason, on the jenkins.osmocom.org build slave with * FreeBSD 10 inside a jail, it fails. Works fine on laforge's @@ -134,7 +136,8 @@ int main(int argc, char *argv[]) { - osmo_init_logging(&info); + ctx = talloc_named_const(NULL, 0, "socket_test"); + osmo_init_logging2(ctx, &info); log_set_use_color(osmo_stderr_target, 0); log_set_print_filename(osmo_stderr_target, 0); diff --git a/tests/tlv/tlv_test.c b/tests/tlv/tlv_test.c index 2e28e54..3973275 100644 --- a/tests/tlv/tlv_test.c +++ b/tests/tlv/tlv_test.c @@ -277,7 +277,7 @@ int main(int argc, char **argv) { - //osmo_init_logging(&info); + //osmo_init_logging2(ctx, &info); test_tlv_shift_functions(); test_tlv_repeated_ie(); diff --git a/tests/ussd/ussd_test.c b/tests/ussd/ussd_test.c index 429c72d..1f79063 100644 --- a/tests/ussd/ussd_test.c +++ b/tests/ussd/ussd_test.c @@ -122,8 +122,9 @@ uint16_t size; int i; struct msgb *msg; + void *ctx = talloc_named_const(NULL, 0, "ussd_test"); - osmo_init_logging(&info); + osmo_init_logging2(ctx, &info); memset(&req, 0, sizeof(req)); gsm0480_decode_ss_request((struct gsm48_hdr *) ussd_request, diff --git a/tests/vty/vty_test.c b/tests/vty/vty_test.c index 42646eb..a3478e1 100644 --- a/tests/vty/vty_test.c +++ b/tests/vty/vty_test.c @@ -41,6 +41,7 @@ #include static enum event last_vty_connection_event = -1; +void *ctx = NULL; static void test_cmd_string_from_valstr(void) { @@ -55,7 +56,7 @@ /* check against character strings that could break printf */ - cmd = vty_cmd_string_from_valstr (NULL, printf_seq_vs, "[prefix%s%s%s%s%s]", "[sep%s%s%s%s%s]", "[end%s%s%s%s%s]", 1); + cmd = vty_cmd_string_from_valstr (ctx, printf_seq_vs, "[prefix%s%s%s%s%s]", "[sep%s%s%s%s%s]", "[end%s%s%s%s%s]", 1); printf ("Tested with %%s-strings, resulting cmd = '%s'\n", cmd); talloc_free (cmd); } @@ -428,12 +429,15 @@ .cat = default_categories, .num_cat = ARRAY_SIZE(default_categories), }; - void *stats_ctx = talloc_named_const(NULL, 1, "stats test context"); + void *stats_ctx; + + ctx = talloc_named_const(NULL, 0, "stats test context"); + stats_ctx = talloc_named_const(ctx, 1, "stats test context"); osmo_signal_register_handler(SS_L_VTY, vty_event_cb, NULL); /* Fake logging. */ - osmo_init_logging(&log_info); + osmo_init_logging2(ctx, &log_info); /* Init stats */ osmo_stats_init(stats_ctx); -- To view, visit https://gerrit.osmocom.org/7637 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newpatchset Gerrit-Change-Id: Ia36c248f99353d5baaa2533f46a2f60a8579bdf8 Gerrit-PatchSet: 2 Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr Gerrit-Reviewer: Jenkins Builder From jenkins at lists.osmocom.org Fri Apr 6 06:16:39 2018 From: jenkins at lists.osmocom.org (jenkins at lists.osmocom.org) Date: Fri, 6 Apr 2018 06:16:39 +0000 (UTC) Subject: =?UTF-8?Q?Build_failed_in_Jenkins:_master-osmo-msc_=C2=BB_--disable-?= =?UTF-8?Q?iu,a2=3Ddefault,a3=3Ddefault,osmocom-master-debian9_#2640?= Message-ID: <999060636.46.1522995399294.JavaMail.jenkins@jenkins.osmocom.org> See ------------------------------------------ Started by upstream project "master-osmo-msc" build number 2640 originally caused by: Started by upstream project "master-libosmo-sccp" build number 653 originally caused by: Started by timer Building remotely on build2-deb9build-ansible (ttcn3 osmo-gsm-tester-build osmocom-gerrit-debian9 osmocom-master-debian9 coverity) in workspace > git rev-parse --is-inside-work-tree # timeout=10 Fetching changes from the remote Git repository > git config remote.origin.url git://git.osmocom.org/osmo-msc # timeout=10 Fetching upstream changes from git://git.osmocom.org/osmo-msc > git --version # timeout=10 > git fetch --tags --progress git://git.osmocom.org/osmo-msc +refs/heads/*:refs/remotes/origin/* Checking out Revision 16c42b5fbacb93867f41f529893b6af8a1a54c5b (refs/remotes/origin/master) > git config core.sparsecheckout # timeout=10 > git checkout -f 16c42b5fbacb93867f41f529893b6af8a1a54c5b Commit message: "subscr_conn: store complete_layer3_type in conn, not FSM event arg" > git rev-list --no-walk 16c42b5fbacb93867f41f529893b6af8a1a54c5b # timeout=10 [osmocom-master-debian9] $ /bin/sh -xe /tmp/jenkins5977720665878408225.sh + ARTIFACT_STORE=/home/osmocom-build/jenkins_build_artifact_store + mkdir -p /home/osmocom-build/jenkins_build_artifact_store + docker run --rm=true -i -e HOME=/build -e ARTIFACT_STORE=/artifact_store -e JOB_NAME=master-osmo-msc/IU=--disable-iu,a2=default,a3=default,label=osmocom-master-debian9 -e MAKE=make -e PARALLEL_MAKE=-j 8 -e IU=--disable-iu -e PATH=/usr/local/bin:/usr/bin:/bin:/usr/games:/home/osmocom-build/bin:/build_bin -e OSMOPY_DEBUG_TCP_SOCKETS=1 -w /build -u build -v :/build -v /home/osmocom-build/bin:/build_bin -v /home/osmocom-build/jenkins_build_artifact_store:/artifact_store osmocom:amd64 /build/contrib/jenkins.sh + base=/build + deps=/build/deps + inst=/build/deps/install + export deps inst + osmo-clean-workspace.sh + chmod -R +w . + git checkout -f HEAD + git clean -dxf -e /build/deps -e layer1-headers Skipping repository deps/libosmocore Skipping repository deps/libosmo-sccp Skipping repository deps/libosmo-netif Skipping repository deps/libsmpp34 Skipping repository deps/libosmo-abis Skipping repository deps/osmo-mgw + [ -d /build/deps ] + git -C /build/deps/libosmo-abis checkout -f HEAD + git -C /build/deps/libosmo-abis clean -dxf + git -C /build/deps/libosmo-netif checkout -f HEAD + git -C /build/deps/libosmo-netif clean -dxf + git -C /build/deps/libosmo-sccp checkout -f HEAD + git -C /build/deps/libosmo-sccp clean -dxf + git -C /build/deps/libosmocore checkout -f HEAD + git -C /build/deps/libosmocore clean -dxf + git -C /build/deps/libsmpp34 checkout -f HEAD + git -C /build/deps/libsmpp34 clean -dxf + git -C /build/deps/osmo-mgw checkout -f HEAD + git -C /build/deps/osmo-mgw clean -dxf + [ -d layer1-headers ] + mkdir /build/deps mkdir: cannot create directory '/build/deps': File exists + true + osmo-build-dep.sh libosmocore '' ac_cv_path_DOXYGEN=false =============================== libosmocore =============================== + mkdir -p /build/deps + cd /build/deps + osmo-deps.sh libosmocore + project=libosmocore + branch=master + git branch -a + grep -c remotes/origin/master$ + [ x1 != x0 ] + branch=origin/master + test -d libosmocore + cd libosmocore + git fetch --tags origin >From git://git.osmocom.org/libosmocore * [new branch] neels/msc_fsm -> origin/neels/msc_fsm + git fetch origin + deps= osmo-clean-workspace.sh + chmod -R +w . + git checkout -f HEAD + git clean -dxf -e -e layer1-headers + [ -d ] + [ -d layer1-headers ] + git checkout -f origin/master HEAD is now at 3a32147... socket.c: osmo_sock_init: Several logic fixes and log improvements + git rev-parse HEAD 3a32147366faa6e08ae37700b1314b92f7b788a7 + cd libosmocore + mkdir -p /build/deps/install/stow + autoreconf --install --force autom4te: cannot create /tmp/argfPkzm/am4t4173.59: No space left on device at /usr/bin/autom4te line 969. aclocal: error: echo failed with exit status: 28 autoreconf: aclocal failed with exit status: 28 Build step 'Execute shell' marked build as failure [WARNINGS]Skipping publisher since build result is FAILURE From jenkins at lists.osmocom.org Fri Apr 6 06:16:40 2018 From: jenkins at lists.osmocom.org (jenkins at lists.osmocom.org) Date: Fri, 6 Apr 2018 06:16:40 +0000 (UTC) Subject: =?UTF-8?Q?Build_failed_in_Jenkins:_master?= =?UTF-8?Q?-openbsc_=C2=BB_--disable-iu,--disab?= =?UTF-8?Q?le-mgcp-transcoding,--enable-smpp,osmocom-master-debian9_#1575?= Message-ID: <1869899667.47.1522995400268.JavaMail.jenkins@jenkins.osmocom.org> See ------------------------------------------ [...truncated 11.24 KB...] error: unable to write file openbsc/include/openbsc/ipaccess.h error: unable to write file openbsc/include/openbsc/iu.h error: unable to write file openbsc/include/openbsc/meas_feed.h error: unable to write file openbsc/include/openbsc/meas_rep.h error: unable to write file openbsc/include/openbsc/mgcp.h error: unable to write file openbsc/include/openbsc/mgcp_internal.h error: unable to write file openbsc/include/openbsc/mgcp_transcode.h error: unable to write file openbsc/include/openbsc/misdn.h error: unable to write file openbsc/include/openbsc/mncc.h error: unable to write file openbsc/include/openbsc/mncc_int.h error: unable to write file openbsc/include/openbsc/nat_rewrite_trie.h error: unable to write file openbsc/include/openbsc/network_listen.h error: unable to write file openbsc/include/openbsc/oap_client.h error: unable to write file openbsc/include/openbsc/openbscdefines.h error: unable to write file openbsc/include/openbsc/osmo_bsc.h error: unable to write file openbsc/include/openbsc/osmo_bsc_grace.h error: unable to write file openbsc/include/openbsc/osmo_bsc_rf.h error: unable to write file openbsc/include/openbsc/osmo_msc.h error: unable to write file openbsc/include/openbsc/osmux.h error: unable to write file openbsc/include/openbsc/paging.h error: unable to write file openbsc/include/openbsc/pcu_if.h error: unable to write file openbsc/include/openbsc/pcuif_proto.h error: unable to write file openbsc/include/openbsc/rest_octets.h error: unable to write file openbsc/include/openbsc/rrlp.h error: unable to write file openbsc/include/openbsc/rs232.h error: unable to write file openbsc/include/openbsc/rtp_proxy.h error: unable to write file openbsc/include/openbsc/signal.h error: unable to write file openbsc/include/openbsc/silent_call.h error: unable to write file openbsc/include/openbsc/smpp.h error: unable to write file openbsc/include/openbsc/sms_queue.h error: unable to write file openbsc/include/openbsc/socket.h error: unable to write file openbsc/include/openbsc/system_information.h error: unable to write file openbsc/include/openbsc/token_auth.h error: unable to write file openbsc/include/openbsc/transaction.h error: unable to write file openbsc/include/openbsc/trau_mux.h error: unable to write file openbsc/include/openbsc/trau_upqueue.h error: unable to write file openbsc/include/openbsc/ussd.h error: unable to write file openbsc/include/openbsc/vty.h error: unable to write file openbsc/m4/README error: unable to write file openbsc/m4/ax_check_compile_flag.m4 error: unable to write file openbsc/openbsc.pc.in error: unable to write file openbsc/osmoappdesc.py error: unable to write file openbsc/src/Makefile.am error: unable to write file openbsc/src/ipaccess/Makefile.am error: unable to write file openbsc/src/ipaccess/abisip-find.c error: unable to write file openbsc/src/ipaccess/ipaccess-config.c error: unable to write file openbsc/src/ipaccess/ipaccess-firmware.c error: unable to write file openbsc/src/ipaccess/ipaccess-proxy.c error: unable to write file openbsc/src/ipaccess/network_listen.c error: unable to write file openbsc/src/libbsc/Makefile.am error: unable to write file openbsc/src/libbsc/abis_nm.c error: unable to write file openbsc/src/libbsc/abis_nm_ipaccess.c error: unable to write file openbsc/src/libbsc/abis_nm_vty.c error: unable to write file openbsc/src/libbsc/abis_om2000.c error: unable to write file openbsc/src/libbsc/abis_om2000_vty.c error: unable to write file openbsc/src/libbsc/abis_rsl.c error: unable to write file openbsc/src/libbsc/acc_ramp.c error: unable to write file openbsc/src/libbsc/arfcn_range_encode.c error: unable to write file openbsc/src/libbsc/bsc_api.c error: unable to write file openbsc/src/libbsc/bsc_ctrl_commands.c error: unable to write file openbsc/src/libbsc/bsc_ctrl_lookup.c error: unable to write file openbsc/src/libbsc/bsc_dyn_ts.c error: unable to write file openbsc/src/libbsc/bsc_init.c error: unable to write file openbsc/src/libbsc/bsc_msc.c error: unable to write file openbsc/src/libbsc/bsc_rf_ctrl.c error: unable to write file openbsc/src/libbsc/bsc_rll.c error: unable to write file openbsc/src/libbsc/bsc_subscriber.c error: unable to write file openbsc/src/libbsc/bsc_vty.c error: unable to write file openbsc/src/libbsc/bts_ericsson_rbs2000.c error: unable to write file openbsc/src/libbsc/bts_init.c error: unable to write file openbsc/src/libbsc/bts_ipaccess_nanobts.c error: unable to write file openbsc/src/libbsc/bts_ipaccess_nanobts_omlattr.c error: unable to write file openbsc/src/libbsc/bts_nokia_site.c error: unable to write file openbsc/src/libbsc/bts_siemens_bs11.c error: unable to write file openbsc/src/libbsc/bts_sysmobts.c error: unable to write file openbsc/src/libbsc/bts_unknown.c error: unable to write file openbsc/src/libbsc/chan_alloc.c error: unable to write file openbsc/src/libbsc/e1_config.c error: unable to write file openbsc/src/libbsc/gsm_04_08_utils.c error: unable to write file openbsc/src/libbsc/gsm_04_80_utils.c error: unable to write file openbsc/src/libbsc/handover_decision.c error: unable to write file openbsc/src/libbsc/handover_logic.c error: unable to write file openbsc/src/libbsc/meas_proc.c error: unable to write file openbsc/src/libbsc/meas_rep.c error: unable to write file openbsc/src/libbsc/net_init.c error: unable to write file openbsc/src/libbsc/paging.c error: unable to write file openbsc/src/libbsc/pcu_sock.c error: unable to write file openbsc/src/libbsc/rest_octets.c error: unable to write file openbsc/src/libbsc/system_information.c error: unable to write file openbsc/src/libcommon-cs/Makefile.am error: unable to write file openbsc/src/libcommon-cs/common_cs.c error: unable to write file openbsc/src/libcommon-cs/common_cs_vty.c error: unable to write file openbsc/src/libcommon/Makefile.am error: unable to write file openbsc/src/libcommon/bsc_version.c error: unable to write file openbsc/src/libcommon/common_vty.c error: unable to write file openbsc/src/libcommon/debug.c error: unable to write file openbsc/src/libcommon/gsm_data.c error: unable to write file openbsc/src/libcommon/gsm_data_shared.c error: unable to write file openbsc/src/libcommon/gsm_subscriber_base.c error: unable to write file openbsc/src/libcommon/gsup_client.c error: unable to write file openbsc/src/libcommon/gsup_test_client.c error: unable to write file openbsc/src/libcommon/oap_client.c error: unable to write file openbsc/src/libcommon/socket.c error: unable to write file openbsc/src/libcommon/talloc_ctx.c error: unable to write file openbsc/src/libfilter/Makefile.am error: unable to write file openbsc/src/libfilter/bsc_msg_acc.c error: unable to write file openbsc/src/libfilter/bsc_msg_filter.c error: unable to write file openbsc/src/libfilter/bsc_msg_vty.c error: unable to write file openbsc/src/libiu/Makefile.am error: unable to write file openbsc/src/libiu/iu.c error: unable to write file openbsc/src/libiu/iu_vty.c error: unable to write file openbsc/src/libmgcp/Makefile.am error: unable to write file openbsc/src/libmgcp/g711common.h error: unable to write file openbsc/src/libmgcp/mgcp_network.c error: unable to write file openbsc/src/libmgcp/mgcp_osmux.c error: unable to write file openbsc/src/libmgcp/mgcp_protocol.c error: unable to write file openbsc/src/libmgcp/mgcp_sdp.c error: unable to write file openbsc/src/libmgcp/mgcp_transcode.c error: unable to write file openbsc/src/libmgcp/mgcp_vty.c error: unable to write file openbsc/src/libmsc/Makefile.am error: unable to write file openbsc/src/libmsc/auth.c error: unable to write file openbsc/src/libmsc/ctrl_commands.c error: unable to write file openbsc/src/libmsc/db.c error: unable to write file openbsc/src/libmsc/gsm_04_08.c error: unable to write file openbsc/src/libmsc/gsm_04_11.c error: unable to write file openbsc/src/libmsc/gsm_04_14.c error: unable to write file openbsc/src/libmsc/gsm_04_80.c error: unable to write file openbsc/src/libmsc/gsm_subscriber.c error: unable to write file openbsc/src/libmsc/meas_feed.c error: unable to write file openbsc/src/libmsc/meas_feed.h error: unable to write file openbsc/src/libmsc/mncc.c error: unable to write file openbsc/src/libmsc/mncc_builtin.c error: unable to write file openbsc/src/libmsc/mncc_sock.c error: unable to write file openbsc/src/libmsc/osmo_msc.c error: unable to write file openbsc/src/libmsc/rrlp.c error: unable to write file openbsc/src/libmsc/silent_call.c error: unable to write file openbsc/src/libmsc/smpp_openbsc.c error: unable to write file openbsc/src/libmsc/smpp_smsc.c error: unable to write file openbsc/src/libmsc/smpp_smsc.h error: unable to write file openbsc/src/libmsc/smpp_utils.c error: unable to write file openbsc/src/libmsc/smpp_vty.c error: unable to write file openbsc/src/libmsc/sms_queue.c error: unable to write file openbsc/src/libmsc/token_auth.c error: unable to write file openbsc/src/libmsc/transaction.c error: unable to write file openbsc/src/libmsc/ussd.c error: unable to write file openbsc/src/libmsc/vty_interface_layer3.c error: unable to write file openbsc/src/libtrau/Makefile.am error: unable to write file openbsc/src/libtrau/rtp_proxy.c error: unable to write file openbsc/src/libtrau/trau_mux.c error: unable to write file openbsc/src/libtrau/trau_upqueue.c error: unable to write file openbsc/src/osmo-bsc/Makefile.am error: unable to write file openbsc/src/osmo-bsc/osmo_bsc_api.c error: unable to write file openbsc/src/osmo-bsc/osmo_bsc_audio.c error: unable to write file openbsc/src/osmo-bsc/osmo_bsc_bssap.c error: unable to write file openbsc/src/osmo-bsc/osmo_bsc_ctrl.c error: unable to write file openbsc/src/osmo-bsc/osmo_bsc_filter.c error: unable to write file openbsc/src/osmo-bsc/osmo_bsc_grace.c error: unable to write file openbsc/src/osmo-bsc/osmo_bsc_main.c error: unable to write file openbsc/src/osmo-bsc/osmo_bsc_msc.c error: unable to write file openbsc/src/osmo-bsc/osmo_bsc_sccp.c error: unable to write file openbsc/src/osmo-bsc/osmo_bsc_vty.c error: unable to write file openbsc/src/osmo-bsc_mgcp/Makefile.am error: unable to write file openbsc/src/osmo-bsc_mgcp/mgcp_main.c error: unable to write file openbsc/src/osmo-bsc_nat/Makefile.am error: unable to write file openbsc/src/osmo-bsc_nat/bsc_filter.c error: unable to write file openbsc/src/osmo-bsc_nat/bsc_mgcp_utils.c error: unable to write file openbsc/src/osmo-bsc_nat/bsc_nat.c error: unable to write file openbsc/src/osmo-bsc_nat/bsc_nat_ctrl.c error: unable to write file openbsc/src/osmo-bsc_nat/bsc_nat_filter.c error: unable to write file openbsc/src/osmo-bsc_nat/bsc_nat_rewrite.c error: unable to write file openbsc/src/osmo-bsc_nat/bsc_nat_rewrite_trie.c error: unable to write file openbsc/src/osmo-bsc_nat/bsc_nat_utils.c error: unable to write file openbsc/src/osmo-bsc_nat/bsc_nat_vty.c error: unable to write file openbsc/src/osmo-bsc_nat/bsc_sccp.c error: unable to write file openbsc/src/osmo-bsc_nat/bsc_ussd.c error: unable to write file openbsc/src/osmo-nitb/Makefile.am error: unable to write file openbsc/src/osmo-nitb/bsc_hack.c error: unable to write file openbsc/src/utils/Makefile.am error: unable to write file openbsc/src/utils/bs11_config.c error: unable to write file openbsc/src/utils/isdnsync.c error: unable to write file openbsc/src/utils/meas_db.c error: unable to write file openbsc/src/utils/meas_db.h error: unable to write file openbsc/src/utils/meas_json.c error: unable to write file openbsc/src/utils/meas_pcap2db.c error: unable to write file openbsc/src/utils/meas_udp2db.c error: unable to write file openbsc/src/utils/meas_vis.c error: unable to write file openbsc/src/utils/smpp_mirror.c error: unable to write file openbsc/tests/Makefile.am error: unable to write file openbsc/tests/abis/Makefile.am error: unable to write file openbsc/tests/abis/abis_test.c error: unable to write file openbsc/tests/abis/abis_test.ok error: unable to write file openbsc/tests/atlocal.in error: unable to write file openbsc/tests/bsc-nat-trie/Makefile.am error: unable to write file openbsc/tests/bsc-nat-trie/bsc_nat_trie_test.c error: unable to write file openbsc/tests/bsc-nat-trie/bsc_nat_trie_test.ok error: unable to write file openbsc/tests/bsc-nat-trie/prefixes.csv error: unable to write file openbsc/tests/bsc-nat/Makefile.am error: unable to write file openbsc/tests/bsc-nat/barr.cfg error: unable to write file openbsc/tests/bsc-nat/barr_dup.cfg error: unable to write file openbsc/tests/bsc-nat/bsc_data.c error: unable to write file openbsc/tests/bsc-nat/bsc_nat_test.c error: unable to write file openbsc/tests/bsc-nat/bsc_nat_test.ok error: unable to write file openbsc/tests/bsc-nat/prefixes.csv error: unable to write file openbsc/tests/bsc/Makefile.am error: unable to write file openbsc/tests/bsc/bsc_test.c error: unable to write file openbsc/tests/bsc/bsc_test.ok error: unable to write file openbsc/tests/channel/Makefile.am error: unable to write file openbsc/tests/channel/channel_test.c error: unable to write file openbsc/tests/channel/channel_test.ok error: unable to write file openbsc/tests/ctrl_test_runner.py error: unable to write file openbsc/tests/db/Makefile.am error: unable to write file openbsc/tests/db/db_test.c error: unable to write file openbsc/tests/db/db_test.err error: unable to write file openbsc/tests/db/db_test.ok error: unable to write file openbsc/tests/db/hlr.sqlite3 error: unable to write file openbsc/tests/gsm0408/Makefile.am error: unable to write file openbsc/tests/gsm0408/gsm0408_test.c error: unable to write file openbsc/tests/gsm0408/gsm0408_test.ok error: unable to write file openbsc/tests/mgcp/Makefile.am error: unable to write file openbsc/tests/mgcp/mgcp_test.c error: unable to write file openbsc/tests/mgcp/mgcp_test.ok error: unable to write file openbsc/tests/mgcp/mgcp_transcoding_test.c error: unable to write file openbsc/tests/mgcp/mgcp_transcoding_test.ok error: unable to write file openbsc/tests/mm_auth/Makefile.am error: unable to write file openbsc/tests/mm_auth/mm_auth_test.c error: unable to write file openbsc/tests/mm_auth/mm_auth_test.ok error: unable to write file openbsc/tests/nanobts_omlattr/Makefile.am error: unable to write file openbsc/tests/nanobts_omlattr/nanobts_omlattr_test.c error: unable to write file openbsc/tests/nanobts_omlattr/nanobts_omlattr_test.ok error: unable to write file openbsc/tests/smpp/Makefile.am error: unable to write file openbsc/tests/smpp/smpp_test.c error: unable to write file openbsc/tests/smpp/smpp_test.err error: unable to write file openbsc/tests/smpp/smpp_test.ok error: unable to write file openbsc/tests/smpp_test_runner.py error: unable to write file openbsc/tests/subscr/Makefile.am error: unable to write file openbsc/tests/subscr/bsc_subscr_test.c error: unable to write file openbsc/tests/subscr/bsc_subscr_test.err error: unable to write file openbsc/tests/subscr/bsc_subscr_test.ok error: unable to write file openbsc/tests/subscr/subscr_test.c error: unable to write file openbsc/tests/subscr/subscr_test.ok error: unable to write file openbsc/tests/testsuite.at error: unable to write file openbsc/tests/trau/Makefile.am error: unable to write file openbsc/tests/trau/trau_test.c error: unable to write file openbsc/tests/trau/trau_test.ok error: unable to write file openbsc/tests/vty_test_runner.py error: unable to write file openbsc/tools/hlrstat.pl fatal: unable to write new index file Build step 'Execute shell' marked build as failure [WARNINGS]Skipping publisher since build result is FAILURE From jenkins at lists.osmocom.org Fri Apr 6 06:16:41 2018 From: jenkins at lists.osmocom.org (jenkins at lists.osmocom.org) Date: Fri, 6 Apr 2018 06:16:41 +0000 (UTC) Subject: =?UTF-8?Q?Build_failed_in_Jenkins:_maste?= =?UTF-8?Q?r-openbsc_=C2=BB_--disable-iu,--enab?= =?UTF-8?Q?le-mgcp-transcoding,--enable-smpp,osmocom-master-debian9_#1575?= Message-ID: <1592471743.48.1522995401422.JavaMail.jenkins@jenkins.osmocom.org> See ------------------------------------------ [...truncated 11.23 KB...] error: unable to write file openbsc/include/openbsc/ipaccess.h error: unable to write file openbsc/include/openbsc/iu.h error: unable to write file openbsc/include/openbsc/meas_feed.h error: unable to write file openbsc/include/openbsc/meas_rep.h error: unable to write file openbsc/include/openbsc/mgcp.h error: unable to write file openbsc/include/openbsc/mgcp_internal.h error: unable to write file openbsc/include/openbsc/mgcp_transcode.h error: unable to write file openbsc/include/openbsc/misdn.h error: unable to write file openbsc/include/openbsc/mncc.h error: unable to write file openbsc/include/openbsc/mncc_int.h error: unable to write file openbsc/include/openbsc/nat_rewrite_trie.h error: unable to write file openbsc/include/openbsc/network_listen.h error: unable to write file openbsc/include/openbsc/oap_client.h error: unable to write file openbsc/include/openbsc/openbscdefines.h error: unable to write file openbsc/include/openbsc/osmo_bsc.h error: unable to write file openbsc/include/openbsc/osmo_bsc_grace.h error: unable to write file openbsc/include/openbsc/osmo_bsc_rf.h error: unable to write file openbsc/include/openbsc/osmo_msc.h error: unable to write file openbsc/include/openbsc/osmux.h error: unable to write file openbsc/include/openbsc/paging.h error: unable to write file openbsc/include/openbsc/pcu_if.h error: unable to write file openbsc/include/openbsc/pcuif_proto.h error: unable to write file openbsc/include/openbsc/rest_octets.h error: unable to write file openbsc/include/openbsc/rrlp.h error: unable to write file openbsc/include/openbsc/rs232.h error: unable to write file openbsc/include/openbsc/rtp_proxy.h error: unable to write file openbsc/include/openbsc/signal.h error: unable to write file openbsc/include/openbsc/silent_call.h error: unable to write file openbsc/include/openbsc/smpp.h error: unable to write file openbsc/include/openbsc/sms_queue.h error: unable to write file openbsc/include/openbsc/socket.h error: unable to write file openbsc/include/openbsc/system_information.h error: unable to write file openbsc/include/openbsc/token_auth.h error: unable to write file openbsc/include/openbsc/transaction.h error: unable to write file openbsc/include/openbsc/trau_mux.h error: unable to write file openbsc/include/openbsc/trau_upqueue.h error: unable to write file openbsc/include/openbsc/ussd.h error: unable to write file openbsc/include/openbsc/vty.h error: unable to write file openbsc/m4/README error: unable to write file openbsc/m4/ax_check_compile_flag.m4 error: unable to write file openbsc/openbsc.pc.in error: unable to write file openbsc/osmoappdesc.py error: unable to write file openbsc/src/Makefile.am error: unable to write file openbsc/src/ipaccess/Makefile.am error: unable to write file openbsc/src/ipaccess/abisip-find.c error: unable to write file openbsc/src/ipaccess/ipaccess-config.c error: unable to write file openbsc/src/ipaccess/ipaccess-firmware.c error: unable to write file openbsc/src/ipaccess/ipaccess-proxy.c error: unable to write file openbsc/src/ipaccess/network_listen.c error: unable to write file openbsc/src/libbsc/Makefile.am error: unable to write file openbsc/src/libbsc/abis_nm.c error: unable to write file openbsc/src/libbsc/abis_nm_ipaccess.c error: unable to write file openbsc/src/libbsc/abis_nm_vty.c error: unable to write file openbsc/src/libbsc/abis_om2000.c error: unable to write file openbsc/src/libbsc/abis_om2000_vty.c error: unable to write file openbsc/src/libbsc/abis_rsl.c error: unable to write file openbsc/src/libbsc/acc_ramp.c error: unable to write file openbsc/src/libbsc/arfcn_range_encode.c error: unable to write file openbsc/src/libbsc/bsc_api.c error: unable to write file openbsc/src/libbsc/bsc_ctrl_commands.c error: unable to write file openbsc/src/libbsc/bsc_ctrl_lookup.c error: unable to write file openbsc/src/libbsc/bsc_dyn_ts.c error: unable to write file openbsc/src/libbsc/bsc_init.c error: unable to write file openbsc/src/libbsc/bsc_msc.c error: unable to write file openbsc/src/libbsc/bsc_rf_ctrl.c error: unable to write file openbsc/src/libbsc/bsc_rll.c error: unable to write file openbsc/src/libbsc/bsc_subscriber.c error: unable to write file openbsc/src/libbsc/bsc_vty.c error: unable to write file openbsc/src/libbsc/bts_ericsson_rbs2000.c error: unable to write file openbsc/src/libbsc/bts_init.c error: unable to write file openbsc/src/libbsc/bts_ipaccess_nanobts.c error: unable to write file openbsc/src/libbsc/bts_ipaccess_nanobts_omlattr.c error: unable to write file openbsc/src/libbsc/bts_nokia_site.c error: unable to write file openbsc/src/libbsc/bts_siemens_bs11.c error: unable to write file openbsc/src/libbsc/bts_sysmobts.c error: unable to write file openbsc/src/libbsc/bts_unknown.c error: unable to write file openbsc/src/libbsc/chan_alloc.c error: unable to write file openbsc/src/libbsc/e1_config.c error: unable to write file openbsc/src/libbsc/gsm_04_08_utils.c error: unable to write file openbsc/src/libbsc/gsm_04_80_utils.c error: unable to write file openbsc/src/libbsc/handover_decision.c error: unable to write file openbsc/src/libbsc/handover_logic.c error: unable to write file openbsc/src/libbsc/meas_proc.c error: unable to write file openbsc/src/libbsc/meas_rep.c error: unable to write file openbsc/src/libbsc/net_init.c error: unable to write file openbsc/src/libbsc/paging.c error: unable to write file openbsc/src/libbsc/pcu_sock.c error: unable to write file openbsc/src/libbsc/rest_octets.c error: unable to write file openbsc/src/libbsc/system_information.c error: unable to write file openbsc/src/libcommon-cs/Makefile.am error: unable to write file openbsc/src/libcommon-cs/common_cs.c error: unable to write file openbsc/src/libcommon-cs/common_cs_vty.c error: unable to write file openbsc/src/libcommon/Makefile.am error: unable to write file openbsc/src/libcommon/bsc_version.c error: unable to write file openbsc/src/libcommon/common_vty.c error: unable to write file openbsc/src/libcommon/debug.c error: unable to write file openbsc/src/libcommon/gsm_data.c error: unable to write file openbsc/src/libcommon/gsm_data_shared.c error: unable to write file openbsc/src/libcommon/gsm_subscriber_base.c error: unable to write file openbsc/src/libcommon/gsup_client.c error: unable to write file openbsc/src/libcommon/gsup_test_client.c error: unable to write file openbsc/src/libcommon/oap_client.c error: unable to write file openbsc/src/libcommon/socket.c error: unable to write file openbsc/src/libcommon/talloc_ctx.c error: unable to write file openbsc/src/libfilter/Makefile.am error: unable to write file openbsc/src/libfilter/bsc_msg_acc.c error: unable to write file openbsc/src/libfilter/bsc_msg_filter.c error: unable to write file openbsc/src/libfilter/bsc_msg_vty.c error: unable to write file openbsc/src/libiu/Makefile.am error: unable to write file openbsc/src/libiu/iu.c error: unable to write file openbsc/src/libiu/iu_vty.c error: unable to write file openbsc/src/libmgcp/Makefile.am error: unable to write file openbsc/src/libmgcp/g711common.h error: unable to write file openbsc/src/libmgcp/mgcp_network.c error: unable to write file openbsc/src/libmgcp/mgcp_osmux.c error: unable to write file openbsc/src/libmgcp/mgcp_protocol.c error: unable to write file openbsc/src/libmgcp/mgcp_sdp.c error: unable to write file openbsc/src/libmgcp/mgcp_transcode.c error: unable to write file openbsc/src/libmgcp/mgcp_vty.c error: unable to write file openbsc/src/libmsc/Makefile.am error: unable to write file openbsc/src/libmsc/auth.c error: unable to write file openbsc/src/libmsc/ctrl_commands.c error: unable to write file openbsc/src/libmsc/db.c error: unable to write file openbsc/src/libmsc/gsm_04_08.c error: unable to write file openbsc/src/libmsc/gsm_04_11.c error: unable to write file openbsc/src/libmsc/gsm_04_14.c error: unable to write file openbsc/src/libmsc/gsm_04_80.c error: unable to write file openbsc/src/libmsc/gsm_subscriber.c error: unable to write file openbsc/src/libmsc/meas_feed.c error: unable to write file openbsc/src/libmsc/meas_feed.h error: unable to write file openbsc/src/libmsc/mncc.c error: unable to write file openbsc/src/libmsc/mncc_builtin.c error: unable to write file openbsc/src/libmsc/mncc_sock.c error: unable to write file openbsc/src/libmsc/osmo_msc.c error: unable to write file openbsc/src/libmsc/rrlp.c error: unable to write file openbsc/src/libmsc/silent_call.c error: unable to write file openbsc/src/libmsc/smpp_openbsc.c error: unable to write file openbsc/src/libmsc/smpp_smsc.c error: unable to write file openbsc/src/libmsc/smpp_smsc.h error: unable to write file openbsc/src/libmsc/smpp_utils.c error: unable to write file openbsc/src/libmsc/smpp_vty.c error: unable to write file openbsc/src/libmsc/sms_queue.c error: unable to write file openbsc/src/libmsc/token_auth.c error: unable to write file openbsc/src/libmsc/transaction.c error: unable to write file openbsc/src/libmsc/ussd.c error: unable to write file openbsc/src/libmsc/vty_interface_layer3.c error: unable to write file openbsc/src/libtrau/Makefile.am error: unable to write file openbsc/src/libtrau/rtp_proxy.c error: unable to write file openbsc/src/libtrau/trau_mux.c error: unable to write file openbsc/src/libtrau/trau_upqueue.c error: unable to write file openbsc/src/osmo-bsc/Makefile.am error: unable to write file openbsc/src/osmo-bsc/osmo_bsc_api.c error: unable to write file openbsc/src/osmo-bsc/osmo_bsc_audio.c error: unable to write file openbsc/src/osmo-bsc/osmo_bsc_bssap.c error: unable to write file openbsc/src/osmo-bsc/osmo_bsc_ctrl.c error: unable to write file openbsc/src/osmo-bsc/osmo_bsc_filter.c error: unable to write file openbsc/src/osmo-bsc/osmo_bsc_grace.c error: unable to write file openbsc/src/osmo-bsc/osmo_bsc_main.c error: unable to write file openbsc/src/osmo-bsc/osmo_bsc_msc.c error: unable to write file openbsc/src/osmo-bsc/osmo_bsc_sccp.c error: unable to write file openbsc/src/osmo-bsc/osmo_bsc_vty.c error: unable to write file openbsc/src/osmo-bsc_mgcp/Makefile.am error: unable to write file openbsc/src/osmo-bsc_mgcp/mgcp_main.c error: unable to write file openbsc/src/osmo-bsc_nat/Makefile.am error: unable to write file openbsc/src/osmo-bsc_nat/bsc_filter.c error: unable to write file openbsc/src/osmo-bsc_nat/bsc_mgcp_utils.c error: unable to write file openbsc/src/osmo-bsc_nat/bsc_nat.c error: unable to write file openbsc/src/osmo-bsc_nat/bsc_nat_ctrl.c error: unable to write file openbsc/src/osmo-bsc_nat/bsc_nat_filter.c error: unable to write file openbsc/src/osmo-bsc_nat/bsc_nat_rewrite.c error: unable to write file openbsc/src/osmo-bsc_nat/bsc_nat_rewrite_trie.c error: unable to write file openbsc/src/osmo-bsc_nat/bsc_nat_utils.c error: unable to write file openbsc/src/osmo-bsc_nat/bsc_nat_vty.c error: unable to write file openbsc/src/osmo-bsc_nat/bsc_sccp.c error: unable to write file openbsc/src/osmo-bsc_nat/bsc_ussd.c error: unable to write file openbsc/src/osmo-nitb/Makefile.am error: unable to write file openbsc/src/osmo-nitb/bsc_hack.c error: unable to write file openbsc/src/utils/Makefile.am error: unable to write file openbsc/src/utils/bs11_config.c error: unable to write file openbsc/src/utils/isdnsync.c error: unable to write file openbsc/src/utils/meas_db.c error: unable to write file openbsc/src/utils/meas_db.h error: unable to write file openbsc/src/utils/meas_json.c error: unable to write file openbsc/src/utils/meas_pcap2db.c error: unable to write file openbsc/src/utils/meas_udp2db.c error: unable to write file openbsc/src/utils/meas_vis.c error: unable to write file openbsc/src/utils/smpp_mirror.c error: unable to write file openbsc/tests/Makefile.am error: unable to write file openbsc/tests/abis/Makefile.am error: unable to write file openbsc/tests/abis/abis_test.c error: unable to write file openbsc/tests/abis/abis_test.ok error: unable to write file openbsc/tests/atlocal.in error: unable to write file openbsc/tests/bsc-nat-trie/Makefile.am error: unable to write file openbsc/tests/bsc-nat-trie/bsc_nat_trie_test.c error: unable to write file openbsc/tests/bsc-nat-trie/bsc_nat_trie_test.ok error: unable to write file openbsc/tests/bsc-nat-trie/prefixes.csv error: unable to write file openbsc/tests/bsc-nat/Makefile.am error: unable to write file openbsc/tests/bsc-nat/barr.cfg error: unable to write file openbsc/tests/bsc-nat/barr_dup.cfg error: unable to write file openbsc/tests/bsc-nat/bsc_data.c error: unable to write file openbsc/tests/bsc-nat/bsc_nat_test.c error: unable to write file openbsc/tests/bsc-nat/bsc_nat_test.ok error: unable to write file openbsc/tests/bsc-nat/prefixes.csv error: unable to write file openbsc/tests/bsc/Makefile.am error: unable to write file openbsc/tests/bsc/bsc_test.c error: unable to write file openbsc/tests/bsc/bsc_test.ok error: unable to write file openbsc/tests/channel/Makefile.am error: unable to write file openbsc/tests/channel/channel_test.c error: unable to write file openbsc/tests/channel/channel_test.ok error: unable to write file openbsc/tests/ctrl_test_runner.py error: unable to write file openbsc/tests/db/Makefile.am error: unable to write file openbsc/tests/db/db_test.c error: unable to write file openbsc/tests/db/db_test.err error: unable to write file openbsc/tests/db/db_test.ok error: unable to write file openbsc/tests/db/hlr.sqlite3 error: unable to write file openbsc/tests/gsm0408/Makefile.am error: unable to write file openbsc/tests/gsm0408/gsm0408_test.c error: unable to write file openbsc/tests/gsm0408/gsm0408_test.ok error: unable to write file openbsc/tests/mgcp/Makefile.am error: unable to write file openbsc/tests/mgcp/mgcp_test.c error: unable to write file openbsc/tests/mgcp/mgcp_test.ok error: unable to write file openbsc/tests/mgcp/mgcp_transcoding_test.c error: unable to write file openbsc/tests/mgcp/mgcp_transcoding_test.ok error: unable to write file openbsc/tests/mm_auth/Makefile.am error: unable to write file openbsc/tests/mm_auth/mm_auth_test.c error: unable to write file openbsc/tests/mm_auth/mm_auth_test.ok error: unable to write file openbsc/tests/nanobts_omlattr/Makefile.am error: unable to write file openbsc/tests/nanobts_omlattr/nanobts_omlattr_test.c error: unable to write file openbsc/tests/nanobts_omlattr/nanobts_omlattr_test.ok error: unable to write file openbsc/tests/smpp/Makefile.am error: unable to write file openbsc/tests/smpp/smpp_test.c error: unable to write file openbsc/tests/smpp/smpp_test.err error: unable to write file openbsc/tests/smpp/smpp_test.ok error: unable to write file openbsc/tests/smpp_test_runner.py error: unable to write file openbsc/tests/subscr/Makefile.am error: unable to write file openbsc/tests/subscr/bsc_subscr_test.c error: unable to write file openbsc/tests/subscr/bsc_subscr_test.err error: unable to write file openbsc/tests/subscr/bsc_subscr_test.ok error: unable to write file openbsc/tests/subscr/subscr_test.c error: unable to write file openbsc/tests/subscr/subscr_test.ok error: unable to write file openbsc/tests/testsuite.at error: unable to write file openbsc/tests/trau/Makefile.am error: unable to write file openbsc/tests/trau/trau_test.c error: unable to write file openbsc/tests/trau/trau_test.ok error: unable to write file openbsc/tests/vty_test_runner.py error: unable to write file openbsc/tools/hlrstat.pl fatal: unable to write new index file Build step 'Execute shell' marked build as failure [WARNINGS]Skipping publisher since build result is FAILURE From jenkins at lists.osmocom.org Fri Apr 6 06:20:25 2018 From: jenkins at lists.osmocom.org (jenkins at lists.osmocom.org) Date: Fri, 6 Apr 2018 06:20:25 +0000 (UTC) Subject: =?UTF-8?Q?Build_failed_in_Jenkins:_master-osmo-msc_=C2=BB_--disable-?= =?UTF-8?Q?iu,a2=3Ddefault,a3=3Ddefault,osmocom-master-debian9_#2641?= In-Reply-To: <999060636.46.1522995399294.JavaMail.jenkins@jenkins.osmocom.org> References: <999060636.46.1522995399294.JavaMail.jenkins@jenkins.osmocom.org> Message-ID: <578130359.49.1522995625801.JavaMail.jenkins@jenkins.osmocom.org> See ------------------------------------------ Started by upstream project "master-osmo-msc" build number 2641 originally caused by: Started by upstream project "master-osmo-iuh" build number 867 originally caused by: Started by upstream project "master-libasn1c" build number 79 originally caused by: Started by timer Building remotely on build2-deb9build-ansible (ttcn3 osmo-gsm-tester-build osmocom-gerrit-debian9 osmocom-master-debian9 coverity) in workspace > git rev-parse --is-inside-work-tree # timeout=10 Fetching changes from the remote Git repository > git config remote.origin.url git://git.osmocom.org/osmo-msc # timeout=10 Fetching upstream changes from git://git.osmocom.org/osmo-msc > git --version # timeout=10 > git fetch --tags --progress git://git.osmocom.org/osmo-msc +refs/heads/*:refs/remotes/origin/* Checking out Revision 16c42b5fbacb93867f41f529893b6af8a1a54c5b (refs/remotes/origin/master) > git config core.sparsecheckout # timeout=10 > git checkout -f 16c42b5fbacb93867f41f529893b6af8a1a54c5b Commit message: "subscr_conn: store complete_layer3_type in conn, not FSM event arg" > git rev-list --no-walk 16c42b5fbacb93867f41f529893b6af8a1a54c5b # timeout=10 [osmocom-master-debian9] $ /bin/sh -xe /tmp/jenkins5279481595393885060.sh + ARTIFACT_STORE=/home/osmocom-build/jenkins_build_artifact_store + mkdir -p /home/osmocom-build/jenkins_build_artifact_store + docker run --rm=true -i -e HOME=/build -e ARTIFACT_STORE=/artifact_store -e JOB_NAME=master-osmo-msc/IU=--disable-iu,a2=default,a3=default,label=osmocom-master-debian9 -e MAKE=make -e PARALLEL_MAKE=-j 8 -e IU=--disable-iu -e PATH=/usr/local/bin:/usr/bin:/bin:/usr/games:/home/osmocom-build/bin:/build_bin -e OSMOPY_DEBUG_TCP_SOCKETS=1 -w /build -u build -v :/build -v /home/osmocom-build/bin:/build_bin -v /home/osmocom-build/jenkins_build_artifact_store:/artifact_store osmocom:amd64 /build/contrib/jenkins.sh + base=/build + deps=/build/deps + inst=/build/deps/install + export deps inst + osmo-clean-workspace.sh + chmod -R +w . + git checkout -f HEAD + git clean -dxf -e /build/deps -e layer1-headers Skipping repository deps/libosmocore Skipping repository deps/libosmo-sccp Skipping repository deps/libosmo-netif Skipping repository deps/libsmpp34 Skipping repository deps/libosmo-abis Skipping repository deps/osmo-mgw Removing deps/install + [ -d /build/deps ] + git -C /build/deps/libosmo-abis checkout -f HEAD + git -C /build/deps/libosmo-abis clean -dxf + git -C /build/deps/libosmo-netif checkout -f HEAD + git -C /build/deps/libosmo-netif clean -dxf + git -C /build/deps/libosmo-sccp checkout -f HEAD + git -C /build/deps/libosmo-sccp clean -dxf + git -C /build/deps/libosmocore checkout -f HEAD + git -C /build/deps/libosmocore clean -dxf + git -C /build/deps/libsmpp34 checkout -f HEAD + git -C /build/deps/libsmpp34 clean -dxf + git -C /build/deps/osmo-mgw checkout -f HEAD + git -C /build/deps/osmo-mgw clean -dxf + [ -d layer1-headers ] + mkdir /build/deps mkdir: cannot create directory '/build/deps': File exists + true + osmo-build-dep.sh libosmocore '' ac_cv_path_DOXYGEN=false + mkdir -p /build/deps =============================== libosmocore =============================== + cd /build/deps + osmo-deps.sh libosmocore + project=libosmocore + branch=master + git branch -a + grep -c remotes/origin/master$ + [ x1 != x0 ] + branch=origin/master + test -d libosmocore + cd libosmocore + git fetch --tags origin + git fetch origin + deps= osmo-clean-workspace.sh + chmod -R +w . + git checkout -f HEAD + git clean -dxf -e -e layer1-headers + [ -d ] + [ -d layer1-headers ] + git checkout -f origin/master HEAD is now at 3a32147... socket.c: osmo_sock_init: Several logic fixes and log improvements + git rev-parse HEAD 3a32147366faa6e08ae37700b1314b92f7b788a7 + cd libosmocore + mkdir -p /build/deps/install/stow + autoreconf --install --force autom4te: cannot create /tmp/arKXTMpB/am4t3144.58: No space left on device at /usr/bin/autom4te line 969. aclocal: error: echo failed with exit status: 28 autoreconf: aclocal failed with exit status: 28 Build step 'Execute shell' marked build as failure [WARNINGS]Skipping publisher since build result is FAILURE From jenkins at lists.osmocom.org Fri Apr 6 06:20:26 2018 From: jenkins at lists.osmocom.org (jenkins at lists.osmocom.org) Date: Fri, 6 Apr 2018 06:20:26 +0000 (UTC) Subject: =?UTF-8?Q?Build_failed_in_Jenkins:_master-osmo-sgsn_=C2=BB_--disable?= =?UTF-8?Q?-iu,a2=3Ddefault,a3=3Ddefault,osmocom-master-debian9_#2154?= Message-ID: <1357740665.50.1522995626805.JavaMail.jenkins@jenkins.osmocom.org> See ------------------------------------------ Started by upstream project "master-osmo-sgsn" build number 2154 originally caused by: Started by upstream project "master-osmo-iuh" build number 867 originally caused by: Started by upstream project "master-libasn1c" build number 79 originally caused by: Started by timer Building remotely on build2-deb9build-ansible (ttcn3 osmo-gsm-tester-build osmocom-gerrit-debian9 osmocom-master-debian9 coverity) in workspace > git rev-parse --is-inside-work-tree # timeout=10 Fetching changes from the remote Git repository > git config remote.origin.url git://git.osmocom.org/osmo-sgsn # timeout=10 Fetching upstream changes from git://git.osmocom.org/osmo-sgsn > git --version # timeout=10 > git fetch --tags --progress git://git.osmocom.org/osmo-sgsn +refs/heads/*:refs/remotes/origin/* Checking out Revision 69e356be93c420b5e2f8b96fbc89ef889cbcfe53 (refs/remotes/origin/master) > git config core.sparsecheckout # timeout=10 > git checkout -f 69e356be93c420b5e2f8b96fbc89ef889cbcfe53 Commit message: "compiler warnings: use enum ranap_nsap_addr_enc, constify local var" > git rev-list --no-walk 69e356be93c420b5e2f8b96fbc89ef889cbcfe53 # timeout=10 [osmocom-master-debian9] $ /bin/sh -xe /tmp/jenkins5406474191760214109.sh + docker run --rm=true -e HOME=/build -e MAKE=make -e PARALLEL_MAKE=-j 8 -e IU=--disable-iu -e PATH=/usr/local/bin:/usr/bin:/bin:/usr/games:/home/osmocom-build/bin:/build_bin -e OSMOPY_DEBUG_TCP_SOCKETS=1 -w /build -i -u build -v :/build -v /home/osmocom-build/bin:/build_bin osmocom:amd64 /build/contrib/jenkins.sh + base=/build + deps=/build/deps + inst=/build/deps/install + export deps inst + osmo-clean-workspace.sh + chmod -R +w . + git checkout -f HEAD error: unable to write file .gitignore error: unable to write file .gitreview error: unable to write file .mailmap error: unable to write file AUTHORS error: unable to write file COPYING error: unable to write file Makefile.am error: unable to write file README error: unable to write file README.vty-tests error: unable to write file configure.ac error: unable to write file contrib/gprs/gb-proxy-unblock-bug.py error: unable to write file contrib/gprs/gprs-bssgp-histogram.lua error: unable to write file contrib/gprs/gprs-buffer-count.lua error: unable to write file contrib/gprs/gprs-split-trace-by-tlli.lua error: unable to write file contrib/gprs/gprs-verify-nu.lua error: unable to write file contrib/jenkins.sh error: unable to write file contrib/systemd/osmo-gbproxy.service error: unable to write file contrib/systemd/osmo-sgsn.service error: unable to write file debian/changelog error: unable to write file debian/compat error: unable to write file debian/control error: unable to write file debian/copyright error: unable to write file debian/osmo-gbproxy.init error: unable to write file debian/osmo-gbproxy.install error: unable to write file debian/osmo-gtphub.default error: unable to write file debian/osmo-gtphub.init error: unable to write file debian/osmo-gtphub.install error: unable to write file debian/osmo-sgsn.install error: unable to write file debian/rules error: unable to write file debian/source/format error: unable to write file doc/Makefile.am error: unable to write file doc/examples/Makefile.am error: unable to write file doc/examples/osmo-gbproxy/osmo-gbproxy-legacy.cfg error: unable to write file doc/examples/osmo-gbproxy/osmo-gbproxy.cfg error: unable to write file doc/examples/osmo-gtphub/gtphub-example.txt error: unable to write file doc/examples/osmo-gtphub/osmo-gtphub-1iface.cfg error: unable to write file doc/examples/osmo-gtphub/osmo-gtphub.cfg error: unable to write file doc/examples/osmo-sgsn/osmo-sgsn-accept-all.cfg error: unable to write file doc/examples/osmo-sgsn/osmo-sgsn.cfg error: unable to write file git-version-gen error: unable to write file include/Makefile.am error: unable to write file include/osmocom/Makefile.am error: unable to write file include/osmocom/sgsn/Makefile.am error: unable to write file include/osmocom/sgsn/common.h error: unable to write file include/osmocom/sgsn/crc24.h error: unable to write file include/osmocom/sgsn/debug.h error: unable to write file include/osmocom/sgsn/gb_proxy.h error: unable to write file include/osmocom/sgsn/gprs_gb_parse.h error: unable to write file include/osmocom/sgsn/gprs_gmm.h error: unable to write file include/osmocom/sgsn/gprs_llc.h error: unable to write file include/osmocom/sgsn/gprs_llc_xid.h error: unable to write file include/osmocom/sgsn/gprs_sgsn.h error: unable to write file include/osmocom/sgsn/gprs_sndcp.h error: unable to write file include/osmocom/sgsn/gprs_sndcp_comp.h error: unable to write file include/osmocom/sgsn/gprs_sndcp_dcomp.h error: unable to write file include/osmocom/sgsn/gprs_sndcp_pcomp.h error: unable to write file include/osmocom/sgsn/gprs_sndcp_xid.h error: unable to write file include/osmocom/sgsn/gprs_subscriber.h error: unable to write file include/osmocom/sgsn/gprs_utils.h error: unable to write file include/osmocom/sgsn/gsup_client.h error: unable to write file include/osmocom/sgsn/gtphub.h error: unable to write file include/osmocom/sgsn/oap_client.h error: unable to write file include/osmocom/sgsn/sgsn.h error: unable to write file include/osmocom/sgsn/signal.h error: unable to write file include/osmocom/sgsn/slhc.h error: unable to write file include/osmocom/sgsn/v42bis.h error: unable to write file include/osmocom/sgsn/v42bis_private.h error: unable to write file include/osmocom/sgsn/vty.h error: unable to write file m4/README error: unable to write file m4/ax_check_compile_flag.m4 error: unable to write file osmo-sgsn.pc.in error: unable to write file osmoappdesc.py error: unable to write file src/Makefile.am error: unable to write file src/gprs/.gitignore error: unable to write file src/gprs/Makefile.am error: unable to write file src/gprs/crc24.c error: unable to write file src/gprs/gb_proxy.c error: unable to write file src/gprs/gb_proxy_main.c error: unable to write file src/gprs/gb_proxy_patch.c error: unable to write file src/gprs/gb_proxy_peer.c error: unable to write file src/gprs/gb_proxy_tlli.c error: unable to write file src/gprs/gb_proxy_vty.c error: unable to write file src/gprs/gprs_gb_parse.c error: unable to write file src/gprs/gprs_gmm.c error: unable to write file src/gprs/gprs_llc.c error: unable to write file src/gprs/gprs_llc_parse.c error: unable to write file src/gprs/gprs_llc_vty.c error: unable to write file src/gprs/gprs_llc_xid.c error: unable to write file src/gprs/gprs_sgsn.c error: unable to write file src/gprs/gprs_sndcp.c error: unable to write file src/gprs/gprs_sndcp_comp.c error: unable to write file src/gprs/gprs_sndcp_dcomp.c error: unable to write file src/gprs/gprs_sndcp_pcomp.c error: unable to write file src/gprs/gprs_sndcp_vty.c error: unable to write file src/gprs/gprs_sndcp_xid.c error: unable to write file src/gprs/gprs_subscriber.c error: unable to write file src/gprs/gprs_utils.c error: unable to write file src/gprs/gsup_client.c error: unable to write file src/gprs/gtphub.c error: unable to write file src/gprs/gtphub_ares.c error: unable to write file src/gprs/gtphub_main.c error: unable to write file src/gprs/gtphub_sock.c error: unable to write file src/gprs/gtphub_vty.c error: unable to write file src/gprs/oap_client.c error: unable to write file src/gprs/sgsn_ares.c error: unable to write file src/gprs/sgsn_auth.c error: unable to write file src/gprs/sgsn_cdr.c error: unable to write file src/gprs/sgsn_ctrl.c error: unable to write file src/gprs/sgsn_libgtp.c error: unable to write file src/gprs/sgsn_main.c error: unable to write file src/gprs/sgsn_vty.c error: unable to write file src/gprs/slhc.c error: unable to write file src/gprs/v42bis.c error: unable to write file src/libcommon/Makefile.am error: unable to write file src/libcommon/common_vty.c error: unable to write file src/libcommon/debug.c error: unable to write file src/libcommon/gsm_data.c error: unable to write file src/libcommon/gsm_data_shared.c error: unable to write file src/libcommon/gsm_subscriber_base.c error: unable to write file src/libcommon/gsup_client.c error: unable to write file src/libcommon/gsup_test_client.c error: unable to write file src/libcommon/oap_client.c error: unable to write file src/libcommon/socket.c error: unable to write file src/libcommon/talloc_ctx.c error: unable to write file tests/Makefile.am error: unable to write file tests/atlocal.in error: unable to write file tests/ctrl_test_runner.py error: unable to write file tests/gbproxy/Makefile.am error: unable to write file tests/gbproxy/gbproxy_test.c error: unable to write file tests/gbproxy/gbproxy_test.ok error: unable to write file tests/gprs/Makefile.am error: unable to write file tests/gprs/gprs_test.c error: unable to write file tests/gprs/gprs_test.ok error: unable to write file tests/gtphub/Makefile.am error: unable to write file tests/gtphub/gtphub_test.c error: unable to write file tests/gtphub/gtphub_test.ok error: unable to write file tests/oap/Makefile.am error: unable to write file tests/oap/oap_client_test.c error: unable to write file tests/oap/oap_client_test.err error: unable to write file tests/oap/oap_client_test.ok error: unable to write file tests/sgsn/Makefile.am error: unable to write file tests/sgsn/sgsn_test.c error: unable to write file tests/sgsn/sgsn_test.ok error: unable to write file tests/slhc/Makefile.am error: unable to write file tests/slhc/slhc_test.c error: unable to write file tests/slhc/slhc_test.ok error: unable to write file tests/sndcp_xid/Makefile.am error: unable to write file tests/sndcp_xid/sndcp_xid_test.c error: unable to write file tests/sndcp_xid/sndcp_xid_test.ok error: unable to write file tests/testsuite.at error: unable to write file tests/v42bis/Makefile.am error: unable to write file tests/v42bis/v42bis_test.c error: unable to write file tests/v42bis/v42bis_test.ok error: unable to write file tests/vty_test_runner.py error: unable to write file tests/xid/Makefile.am error: unable to write file tests/xid/xid_test.c error: unable to write file tests/xid/xid_test.ok fatal: unable to write new index file Build step 'Execute shell' marked build as failure [WARNINGS]Skipping publisher since build result is FAILURE From jenkins at lists.osmocom.org Fri Apr 6 06:29:30 2018 From: jenkins at lists.osmocom.org (jenkins at lists.osmocom.org) Date: Fri, 6 Apr 2018 06:29:30 +0000 (UTC) Subject: =?UTF-8?Q?Jenkins_build_is_back_to_normal_:_master-osmo-sgsn_=C2=BB_--dis?= =?UTF-8?Q?able-iu,a2=3Ddefault,a3=3Ddefault,osmocom-master-debian9_#2155?= In-Reply-To: <1357740665.50.1522995626805.JavaMail.jenkins@jenkins.osmocom.org> References: <1357740665.50.1522995626805.JavaMail.jenkins@jenkins.osmocom.org> Message-ID: <108379372.52.1522996170304.JavaMail.jenkins@jenkins.osmocom.org> See From jenkins at lists.osmocom.org Fri Apr 6 06:32:18 2018 From: jenkins at lists.osmocom.org (jenkins at lists.osmocom.org) Date: Fri, 6 Apr 2018 06:32:18 +0000 (UTC) Subject: =?UTF-8?Q?Jenkins_build_is_back_to_normal_:_master-osmo-msc_=C2=BB_--dis?= =?UTF-8?Q?able-iu,a2=3Ddefault,a3=3Ddefault,osmocom-master-debian9_#2642?= In-Reply-To: <578130359.49.1522995625801.JavaMail.jenkins@jenkins.osmocom.org> References: <578130359.49.1522995625801.JavaMail.jenkins@jenkins.osmocom.org> Message-ID: <484296676.53.1522996338257.JavaMail.jenkins@jenkins.osmocom.org> See From gerrit-no-reply at lists.osmocom.org Fri Apr 6 06:42:20 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Fri, 6 Apr 2018 06:42:20 +0000 Subject: osmo-bts[master]: fix activation of osmocom-style dynamic PDCH as TCH/F or TCH/H In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7652 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I14ae4c4ed2aae0966e5cb5116cf024d6bd890237 Gerrit-PatchSet: 1 Gerrit-Project: osmo-bts Gerrit-Branch: master Gerrit-Owner: Harald Welte Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: neels Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Fri Apr 6 06:42:57 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Fri, 6 Apr 2018 06:42:57 +0000 Subject: [MERGED] osmo-bts[master]: fix activation of osmocom-style dynamic PDCH as TCH/F or TCH/H In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: fix activation of osmocom-style dynamic PDCH as TCH/F or TCH/H ...................................................................... fix activation of osmocom-style dynamic PDCH as TCH/F or TCH/H in change-id Iebd2571726d1284a7431b3f9b23ad3185e832ed1 we introduced tighter validation on whether the requested channel number matches the underlying physical channel configuration. Unfortunately this broke activation of an osmocom-style dynamic PDCH as TCH/F or TCH/H rsl_lchan_lookup already permitted a chan_nr if the dynamic PDCH was already switched to the given TCH mode, or at least the related switching had already been initiated. However, in the case of the bug, the current type is NONE, which means that the compatibility check of rsl_lchan_lookup will fail Let's relax the checks of rsl_lchan_lookup() slightly to permit matching for "ts->dyn.pchan_is == GSM_PCHAN_NONE" cases. This fixes BTS_Tests.TC_dyn_osmo_pdch_tchh_act and BTS_Tests.TC_dyn_osmo_pdch_tchf_act Change-Id: I14ae4c4ed2aae0966e5cb5116cf024d6bd890237 Related: OS#3134 --- M src/common/gsm_data_shared.c 1 file changed, 2 insertions(+), 0 deletions(-) Approvals: Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/src/common/gsm_data_shared.c b/src/common/gsm_data_shared.c index 3fb31bf..553c09b 100644 --- a/src/common/gsm_data_shared.c +++ b/src/common/gsm_data_shared.c @@ -709,6 +709,7 @@ ts->pchan != GSM_PCHAN_TCH_F_PDCH && !(ts->pchan == GSM_PCHAN_TCH_F_TCH_H_PDCH && (ts->dyn.pchan_is == GSM_PCHAN_TCH_F + || ts->dyn.pchan_is == GSM_PCHAN_NONE || ts->dyn.pchan_want == GSM_PCHAN_TCH_F))) ok = false; } else if ((cbits & 0x1e) == 0x02) { @@ -716,6 +717,7 @@ if (ts->pchan != GSM_PCHAN_TCH_H && !(ts->pchan == GSM_PCHAN_TCH_F_TCH_H_PDCH && (ts->dyn.pchan_is == GSM_PCHAN_TCH_H + || ts->dyn.pchan_is == GSM_PCHAN_NONE || ts->dyn.pchan_want == GSM_PCHAN_TCH_H))) ok = false; } else if ((cbits & 0x1c) == 0x04) { -- To view, visit https://gerrit.osmocom.org/7652 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: I14ae4c4ed2aae0966e5cb5116cf024d6bd890237 Gerrit-PatchSet: 1 Gerrit-Project: osmo-bts Gerrit-Branch: master Gerrit-Owner: Harald Welte Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: neels From gerrit-no-reply at lists.osmocom.org Fri Apr 6 06:43:21 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Fri, 6 Apr 2018 06:43:21 +0000 Subject: libosmocore[master]: use osmo_init_logging2() with proper talloc ctx In-Reply-To: References: Message-ID: Patch Set 2: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7637 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Ia36c248f99353d5baaa2533f46a2f60a8579bdf8 Gerrit-PatchSet: 2 Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Fri Apr 6 06:43:40 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Fri, 6 Apr 2018 06:43:40 +0000 Subject: [MERGED] libosmocore[master]: use osmo_init_logging2() with proper talloc ctx In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: use osmo_init_logging2() with proper talloc ctx ...................................................................... use osmo_init_logging2() with proper talloc ctx Ironically, when deprecating osmo_init_logging() in I216837780e9405fdaec8059c63d10699c695b360, I forgot to change the callers within libosmocore itself, i.e. in the various regression tests. Change-Id: Ia36c248f99353d5baaa2533f46a2f60a8579bdf8 --- M tests/abis/abis_test.c M tests/gb/bssgp_fc_test.c M tests/gb/gprs_bssgp_test.c M tests/gb/gprs_ns_test.c M tests/gprs/gprs_test.c M tests/gsup/gsup_test.c M tests/lapd/lapd_test.c M tests/msgb/msgb_test.c M tests/oap/oap_test.c M tests/sms/sms_test.c M tests/socket/socket_test.c M tests/tlv/tlv_test.c M tests/ussd/ussd_test.c M tests/vty/vty_test.c 14 files changed, 47 insertions(+), 21 deletions(-) Approvals: Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/tests/abis/abis_test.c b/tests/abis/abis_test.c index c0605c2..ca6daed 100644 --- a/tests/abis/abis_test.c +++ b/tests/abis/abis_test.c @@ -199,7 +199,8 @@ int main(int argc, char **argv) { - osmo_init_logging(&info); + void *ctx = talloc_named_const(NULL, 0, "abis_test"); + osmo_init_logging2(ctx, &info); test_sw_descr(); test_simple_sw_config(); diff --git a/tests/gb/bssgp_fc_test.c b/tests/gb/bssgp_fc_test.c index ac690a5..cc38777 100644 --- a/tests/gb/bssgp_fc_test.c +++ b/tests/gb/bssgp_fc_test.c @@ -17,6 +17,7 @@ static unsigned long in_ctr = 1; static struct timeval tv_start; +void *ctx = NULL; int get_centisec_diff(void) { @@ -71,7 +72,7 @@ uint32_t max_queue_depth, uint32_t pdu_len, uint32_t pdu_count) { - struct bssgp_flow_control *fc = talloc_zero(NULL, struct bssgp_flow_control); + struct bssgp_flow_control *fc = talloc_zero(ctx, struct bssgp_flow_control); int i; osmo_gettimeofday_override_time = (struct timeval){ @@ -133,6 +134,7 @@ uint32_t pdu_count = 20; /* messages */ int c; void *tall_msgb_ctx; + ctx = talloc_named_const(NULL, 0, "bssgp_fc_test"); static const struct option long_options[] = { { "bucket-size-max", 1, 0, 's' }, @@ -144,11 +146,11 @@ { 0, 0, 0, 0 } }; - osmo_init_logging(&info); + osmo_init_logging2(ctx, &info); log_set_use_color(osmo_stderr_target, 0); log_set_print_filename(osmo_stderr_target, 0); - tall_msgb_ctx = msgb_talloc_ctx_init(NULL, 0); + tall_msgb_ctx = msgb_talloc_ctx_init(ctx, 0); while ((c = getopt_long(argc, argv, "s:r:d:l:c:", long_options, NULL)) != -1) { diff --git a/tests/gb/gprs_bssgp_test.c b/tests/gb/gprs_bssgp_test.c index c38e180..52e986e 100644 --- a/tests/gb/gprs_bssgp_test.c +++ b/tests/gb/gprs_bssgp_test.c @@ -294,11 +294,14 @@ int main(int argc, char **argv) { struct sockaddr_in bss_peer= {0}; + void *ctx = talloc_named_const(NULL, 0, "gprs_bssgp_test"); - osmo_init_logging(&info); + osmo_init_logging2(ctx, &info); log_set_use_color(osmo_stderr_target, 0); log_set_print_filename(osmo_stderr_target, 0); + msgb_talloc_ctx_init(ctx, 0); + bssgp_nsi = gprs_ns_instantiate(gprs_ns_callback, NULL); bss_peer.sin_family = AF_INET; diff --git a/tests/gb/gprs_ns_test.c b/tests/gb/gprs_ns_test.c index 7e6b85c..f70e493 100644 --- a/tests/gb/gprs_ns_test.c +++ b/tests/gb/gprs_ns_test.c @@ -901,7 +901,8 @@ int main(int argc, char **argv) { - osmo_init_logging(&info); + void *ctx = talloc_named_const(NULL, 0, "gprs_ns_test"); + osmo_init_logging2(ctx, &info); log_set_use_color(osmo_stderr_target, 0); log_set_print_filename(osmo_stderr_target, 0); osmo_signal_register_handler(SS_L_NS, &test_signal, NULL); diff --git a/tests/gprs/gprs_test.c b/tests/gprs/gprs_test.c index 6f16fb2..70e3009 100644 --- a/tests/gprs/gprs_test.c +++ b/tests/gprs/gprs_test.c @@ -120,7 +120,8 @@ int main(int argc, char **argv) { - osmo_init_logging(&info); + void *ctx = talloc_named_const(NULL, 0, "gprs_test"); + osmo_init_logging2(ctx, &info); test_gsm_03_03_apn(); diff --git a/tests/gsup/gsup_test.c b/tests/gsup/gsup_test.c index b55f1d9..acc7274 100644 --- a/tests/gsup/gsup_test.c +++ b/tests/gsup/gsup_test.c @@ -329,7 +329,8 @@ int main(int argc, char **argv) { - osmo_init_logging(&info); + void *ctx = talloc_named_const(NULL, 0, "gsup_test"); + osmo_init_logging2(ctx, &info); log_set_print_filename(osmo_stderr_target, 0); log_set_print_timestamp(osmo_stderr_target, 0); log_set_use_color(osmo_stderr_target, 0); diff --git a/tests/lapd/lapd_test.c b/tests/lapd/lapd_test.c index e627ba6..3f15afe 100644 --- a/tests/lapd/lapd_test.c +++ b/tests/lapd/lapd_test.c @@ -29,6 +29,7 @@ #include #include +#include #include @@ -759,7 +760,10 @@ int main(int argc, char **argv) { - osmo_init_logging(&info); + void *ctx = talloc_named_const(NULL, 0, "lapd_test"); + osmo_init_logging2(ctx, &info); + + msgb_talloc_ctx_init(ctx, 0); /* Prevent the test from segfaulting */ dummy_l1_header_len = 0; diff --git a/tests/msgb/msgb_test.c b/tests/msgb/msgb_test.c index 0533546..ffaa155 100644 --- a/tests/msgb/msgb_test.c +++ b/tests/msgb/msgb_test.c @@ -385,7 +385,9 @@ int main(int argc, char **argv) { - osmo_init_logging(&info); + void *ctx = talloc_named_const(NULL, 0, "msgb_test"); + osmo_init_logging2(ctx, &info); + msgb_talloc_ctx_init(ctx, 0); test_msgb_api(); test_msgb_api_errors(); diff --git a/tests/oap/oap_test.c b/tests/oap/oap_test.c index dea5c11..32676ca 100644 --- a/tests/oap/oap_test.c +++ b/tests/oap/oap_test.c @@ -173,7 +173,9 @@ int main(int argc, char **argv) { - osmo_init_logging(&info); + void *ctx = talloc_named_const(NULL, 0, "oap_test"); + osmo_init_logging2(ctx, &info); + msgb_talloc_ctx_init(ctx, 0); test_oap_messages_dec_enc(); diff --git a/tests/sms/sms_test.c b/tests/sms/sms_test.c index efbdf7e..0615396 100644 --- a/tests/sms/sms_test.c +++ b/tests/sms/sms_test.c @@ -282,9 +282,10 @@ uint8_t septet_data[256]; int nchars; char result[256]; + void *ctx = talloc_named_const(NULL, 0, "sms_test"); /* Fake logging. */ - osmo_init_logging(&fake_log_info); + osmo_init_logging2(ctx, &fake_log_info); /* test 7-bit encoding */ for (i = 0; i < ARRAY_SIZE(test_encode); ++i) { diff --git a/tests/socket/socket_test.c b/tests/socket/socket_test.c index 11ef8da..37e0281 100644 --- a/tests/socket/socket_test.c +++ b/tests/socket/socket_test.c @@ -35,6 +35,8 @@ #include "../config.h" +void *ctx = NULL; + static int test_sockinit(void) { int fd, rc; @@ -44,7 +46,7 @@ fd = osmo_sock_init(AF_INET, SOCK_DGRAM, IPPROTO_UDP, "0.0.0.0", 0, OSMO_SOCK_F_BIND); OSMO_ASSERT(fd >= 0); - name = osmo_sock_get_name(NULL, fd); + name = osmo_sock_get_name(ctx, fd); /* expect it to be not connected. We cannot match on INADDR_ANY, * as apparently that won't work on FreeBSD if there's only one * address (e.g. 127.0.0.1) assigned to the entire system, like @@ -82,7 +84,7 @@ fd = osmo_sock_init2(AF_INET, SOCK_DGRAM, IPPROTO_UDP, "0.0.0.0", 0, NULL, 0, OSMO_SOCK_F_BIND); OSMO_ASSERT(fd >= 0); - name = osmo_sock_get_name(NULL, fd); + name = osmo_sock_get_name(ctx, fd); /* expect it to be not connected. We cannot match on INADDR_ANY, * as apparently that won't work on FreeBSD if there's only one * address (e.g. 127.0.0.1) assigned to the entire system, like @@ -111,7 +113,7 @@ fd = osmo_sock_init2(AF_INET, SOCK_DGRAM, IPPROTO_UDP, "127.0.0.1", 0, "127.0.0.1", 53, OSMO_SOCK_F_BIND|OSMO_SOCK_F_CONNECT); OSMO_ASSERT(fd >= 0); - name = osmo_sock_get_name(NULL, fd); + name = osmo_sock_get_name(ctx, fd); #ifndef __FreeBSD__ /* For some reason, on the jenkins.osmocom.org build slave with * FreeBSD 10 inside a jail, it fails. Works fine on laforge's @@ -134,7 +136,8 @@ int main(int argc, char *argv[]) { - osmo_init_logging(&info); + ctx = talloc_named_const(NULL, 0, "socket_test"); + osmo_init_logging2(ctx, &info); log_set_use_color(osmo_stderr_target, 0); log_set_print_filename(osmo_stderr_target, 0); diff --git a/tests/tlv/tlv_test.c b/tests/tlv/tlv_test.c index 2e28e54..3973275 100644 --- a/tests/tlv/tlv_test.c +++ b/tests/tlv/tlv_test.c @@ -277,7 +277,7 @@ int main(int argc, char **argv) { - //osmo_init_logging(&info); + //osmo_init_logging2(ctx, &info); test_tlv_shift_functions(); test_tlv_repeated_ie(); diff --git a/tests/ussd/ussd_test.c b/tests/ussd/ussd_test.c index 429c72d..1f79063 100644 --- a/tests/ussd/ussd_test.c +++ b/tests/ussd/ussd_test.c @@ -122,8 +122,9 @@ uint16_t size; int i; struct msgb *msg; + void *ctx = talloc_named_const(NULL, 0, "ussd_test"); - osmo_init_logging(&info); + osmo_init_logging2(ctx, &info); memset(&req, 0, sizeof(req)); gsm0480_decode_ss_request((struct gsm48_hdr *) ussd_request, diff --git a/tests/vty/vty_test.c b/tests/vty/vty_test.c index 42646eb..a3478e1 100644 --- a/tests/vty/vty_test.c +++ b/tests/vty/vty_test.c @@ -41,6 +41,7 @@ #include static enum event last_vty_connection_event = -1; +void *ctx = NULL; static void test_cmd_string_from_valstr(void) { @@ -55,7 +56,7 @@ /* check against character strings that could break printf */ - cmd = vty_cmd_string_from_valstr (NULL, printf_seq_vs, "[prefix%s%s%s%s%s]", "[sep%s%s%s%s%s]", "[end%s%s%s%s%s]", 1); + cmd = vty_cmd_string_from_valstr (ctx, printf_seq_vs, "[prefix%s%s%s%s%s]", "[sep%s%s%s%s%s]", "[end%s%s%s%s%s]", 1); printf ("Tested with %%s-strings, resulting cmd = '%s'\n", cmd); talloc_free (cmd); } @@ -428,12 +429,15 @@ .cat = default_categories, .num_cat = ARRAY_SIZE(default_categories), }; - void *stats_ctx = talloc_named_const(NULL, 1, "stats test context"); + void *stats_ctx; + + ctx = talloc_named_const(NULL, 0, "stats test context"); + stats_ctx = talloc_named_const(ctx, 1, "stats test context"); osmo_signal_register_handler(SS_L_VTY, vty_event_cb, NULL); /* Fake logging. */ - osmo_init_logging(&log_info); + osmo_init_logging2(ctx, &log_info); /* Init stats */ osmo_stats_init(stats_ctx); -- To view, visit https://gerrit.osmocom.org/7637 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: Ia36c248f99353d5baaa2533f46a2f60a8579bdf8 Gerrit-PatchSet: 2 Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder From gerrit-no-reply at lists.osmocom.org Fri Apr 6 06:44:07 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Fri, 6 Apr 2018 06:44:07 +0000 Subject: osmo-bts[master]: contrib: jenkins_bts_model: Fix bashism expr In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7654 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I5c027039d12c5e455a8f8a0878f88ab30c168db4 Gerrit-PatchSet: 1 Gerrit-Project: osmo-bts Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Fri Apr 6 06:45:20 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Fri, 6 Apr 2018 06:45:20 +0000 Subject: [MERGED] osmo-bts[master]: contrib: jenkins_bts_model: Fix bashism expr In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: contrib: jenkins_bts_model: Fix bashism expr ...................................................................... contrib: jenkins_bts_model: Fix bashism expr In posix shell, = is valid and == is not. Change-Id: I5c027039d12c5e455a8f8a0878f88ab30c168db4 --- M contrib/jenkins_bts_model.sh 1 file changed, 1 insertion(+), 1 deletion(-) Approvals: Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/contrib/jenkins_bts_model.sh b/contrib/jenkins_bts_model.sh index 33bfdc7..2488f71 100755 --- a/contrib/jenkins_bts_model.sh +++ b/contrib/jenkins_bts_model.sh @@ -4,7 +4,7 @@ bts_model="$1" -if [ "x$bts_model" == "x" ]; then +if [ "x$bts_model" = "x" ]; then echo "Error: You have to specify the BTS model as first argument, e.g. $0 sysmo" exit 2 fi -- To view, visit https://gerrit.osmocom.org/7654 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: I5c027039d12c5e455a8f8a0878f88ab30c168db4 Gerrit-PatchSet: 2 Gerrit-Project: osmo-bts Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder From gerrit-no-reply at lists.osmocom.org Fri Apr 6 06:46:59 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Fri, 6 Apr 2018 06:46:59 +0000 Subject: osmo-ttcn3-hacks[master]: fix MSC.TC_lu_clear_request: allow LU Reject, forbid 2nd Cle... In-Reply-To: References: Message-ID: Patch Set 2: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7653 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I7bc5555b829d61b0a2529107bc9b58446865545d Gerrit-PatchSet: 2 Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Fri Apr 6 06:47:20 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Fri, 6 Apr 2018 06:47:20 +0000 Subject: [MERGED] osmo-ttcn3-hacks[master]: fix MSC.TC_lu_clear_request: allow LU Reject, forbid 2nd Cle... In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: fix MSC.TC_lu_clear_request: allow LU Reject, forbid 2nd Clear Cmd ...................................................................... fix MSC.TC_lu_clear_request: allow LU Reject, forbid 2nd Clear Cmd When the MS sends a Clear Request in the middle of a Location Updating, it should be permitted for the MSC to send a Location Updating Reject back. Extend with an alt that also allows a LU reject before the Clear Command. The test explicitly hints at https://osmocom.org/issues/2862 which rightfully forbids the MSC to send a second Clear Command after the first is completed. However, this test so far explicitly permits a second Clear Command, so it was probably passing in error all the time. Set verdict to failure if a second Clear Command is received before the DISC_IND. This changes the test verdict to failure with current osmo-msc master, rightfully so; the failure will be fixed by the upcoming MSC subscr conn FSM refactoring. Change-Id: I7bc5555b829d61b0a2529107bc9b58446865545d --- M msc/MSC_Tests.ttcn M msc/expected-results.log 2 files changed, 14 insertions(+), 3 deletions(-) Approvals: Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/msc/MSC_Tests.ttcn b/msc/MSC_Tests.ttcn index ce9c8b9..6ec08bb 100644 --- a/msc/MSC_Tests.ttcn +++ b/msc/MSC_Tests.ttcn @@ -681,11 +681,17 @@ f_sleep(1.0); /* send clear request in the middle of the LU */ BSSAP.send(ts_BSSMAP_ClearRequest(0)); - BSSAP.receive(tr_BSSMAP_ClearCommand); + alt { + [] BSSAP.receive(tr_PDU_DTAP_MT(tr_ML3_MT_LU_Rej)) { repeat; } + [] BSSAP.receive(tr_BSSMAP_ClearCommand) {} + } BSSAP.send(ts_BSSMAP_ClearComplete); alt { /* See https://osmocom.org/issues/2862 */ - [] BSSAP.receive(tr_BSSMAP_ClearCommand) { repeat; } + [] BSSAP.receive(tr_BSSMAP_ClearCommand) { + setverdict(fail, "Got a second Clear Command, only one expected"); + repeat; + } [] BSSAP.receive(BSSAP_Conn_Prim:MSC_CONN_PRIM_DISC_IND) {} } setverdict(pass); diff --git a/msc/expected-results.log b/msc/expected-results.log index 3945a5f..92c38a0 100644 --- a/msc/expected-results.log +++ b/msc/expected-results.log @@ -20,7 +20,12 @@ - + + Got a second Clear Command, only one expected + MSC_Tests.ttcn:1832 MSC_Tests control part + MSC_Tests.ttcn:704 TC_lu_clear_request testcase + + -- To view, visit https://gerrit.osmocom.org/7653 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: I7bc5555b829d61b0a2529107bc9b58446865545d Gerrit-PatchSet: 2 Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder From gerrit-no-reply at lists.osmocom.org Fri Apr 6 06:48:23 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Fri, 6 Apr 2018 06:48:23 +0000 Subject: osmo-ci[master]: jenkins: add osmo-gsm-tester-build jobs In-Reply-To: References: Message-ID: Patch Set 5: Verified+1 -- To view, visit https://gerrit.osmocom.org/7019 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Ic49c94e9e6639e43f6ae14b868bc826af3ce2085 Gerrit-PatchSet: 5 Gerrit-Project: osmo-ci Gerrit-Branch: master Gerrit-Owner: lynxis lazus Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Neels Hofmeyr Gerrit-Reviewer: Pau Espin Pedrol Gerrit-Reviewer: lynxis lazus Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Fri Apr 6 06:48:29 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Fri, 6 Apr 2018 06:48:29 +0000 Subject: osmo-ci[master]: jenkins: add job osmo-gsm-tester_build-trigger-all In-Reply-To: References: Message-ID: Patch Set 6: Verified+1 -- To view, visit https://gerrit.osmocom.org/7020 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I8dcf2a6fa2991cb73b4807f8a10d251f3dca77dd Gerrit-PatchSet: 6 Gerrit-Project: osmo-ci Gerrit-Branch: master Gerrit-Owner: lynxis lazus Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Neels Hofmeyr Gerrit-Reviewer: Pau Espin Pedrol Gerrit-Reviewer: lynxis lazus Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Fri Apr 6 06:48:33 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Fri, 6 Apr 2018 06:48:33 +0000 Subject: osmo-ci[master]: jenkins: add osmo-gsm-tester_run-{prod,rnd} In-Reply-To: References: Message-ID: Patch Set 7: Verified+1 -- To view, visit https://gerrit.osmocom.org/7021 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Ic1c4babc547f48402b0bcfaf38e2734e87e565f0 Gerrit-PatchSet: 7 Gerrit-Project: osmo-ci Gerrit-Branch: master Gerrit-Owner: lynxis lazus Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Neels Hofmeyr Gerrit-Reviewer: Pau Espin Pedrol Gerrit-Reviewer: lynxis lazus Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Fri Apr 6 06:48:36 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Fri, 6 Apr 2018 06:48:36 +0000 Subject: osmo-ci[master]: jenkins: add job osmo-gsm-tester_gerrit In-Reply-To: References: Message-ID: Patch Set 8: Verified+1 -- To view, visit https://gerrit.osmocom.org/7022 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: If661675528059bc8a95d39a6489a5a9381f52677 Gerrit-PatchSet: 8 Gerrit-Project: osmo-ci Gerrit-Branch: master Gerrit-Owner: lynxis lazus Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Neels Hofmeyr Gerrit-Reviewer: Pau Espin Pedrol Gerrit-Reviewer: lynxis lazus Gerrit-HasComments: No From jenkins at lists.osmocom.org Fri Apr 6 06:48:41 2018 From: jenkins at lists.osmocom.org (jenkins at lists.osmocom.org) Date: Fri, 6 Apr 2018 06:48:41 +0000 (UTC) Subject: =?UTF-8?Q?Jenkins_build_is_back_to_normal_:_master-osmo-gmr_=C2=BB_a1=3Dd?= =?UTF-8?Q?efault,a2=3Ddefault,a3=3Ddefault,osmocom-master-debian9_#335?= In-Reply-To: <549923341.39.1522972666255.JavaMail.jenkins@jenkins.osmocom.org> References: <549923341.39.1522972666255.JavaMail.jenkins@jenkins.osmocom.org> Message-ID: <2052442872.56.1522997321118.JavaMail.jenkins@jenkins.osmocom.org> See From jenkins at lists.osmocom.org Fri Apr 6 06:49:18 2018 From: jenkins at lists.osmocom.org (jenkins at lists.osmocom.org) Date: Fri, 6 Apr 2018 06:49:18 +0000 (UTC) Subject: =?UTF-8?Q?Build_failed_in_Jenkins:_master-osmo-bts_=C2=BB_sysmo,s?= =?UTF-8?Q?uperfemto=5Fv2.4,default,osmocom-master-debian9_#468?= Message-ID: <1921574210.58.1522997358143.JavaMail.jenkins@jenkins.osmocom.org> See Changes: [laforge] fix activation of osmocom-style dynamic PDCH as TCH/F or TCH/H [laforge] contrib: jenkins_bts_model: Fix bashism expr ------------------------------------------ [...truncated 47.38 KB...] CC bitcomp.lo CC fsm.lo CC counter.lo CC write_queue.lo CC utils.lo CC socket.lo CC logging.lo CC logging_syslog.lo CC logging_gsmtap.lo CC gsmtap_util.lo CC rate_ctr.lo CC crc16.lo CC panic.lo CC backtrace.lo CC conv.lo CC application.lo CC rbtree.lo CC strrb.lo CC loggingrb.lo CC crc8gen.lo CC crc16gen.lo CC crc32gen.lo CC crc64gen.lo CC macaddr.lo CC stat_item.lo CC stats.lo CC stats_statsd.lo CC prim.lo CC conv_acc.lo CC conv_acc_generic.lo CC sercomm.lo CC prbs.lo CC conv_acc_sse.lo CC conv_acc_sse_avx.lo CC plugin.lo CC msgfile.lo CC serial.lo CCLD libosmocore.la make[4]: Entering directory ' make[4]: Nothing to be done for 'install-data-am'. /bin/mkdir -p ' /bin/bash ../libtool --mode=install /usr/bin/install -c libosmocore.la ' libtool: install: /usr/bin/install -c .libs/libosmocore.so.9.0.0 libtool: install: (cd && { ln -s -f libosmocore.so.9.0.0 libosmocore.so.9 || { rm -f libosmocore.so.9 && ln -s libosmocore.so.9.0.0 libosmocore.so.9; }; }) libtool: install: (cd && { ln -s -f libosmocore.so.9.0.0 libosmocore.so || { rm -f libosmocore.so && ln -s libosmocore.so.9.0.0 libosmocore.so; }; }) libtool: install: /usr/bin/install -c .libs/libosmocore.lai libtool: finish: PATH="/usr/local/bin:/usr/bin:/bin:/usr/games:/home/osmocom-build/bin:/sbin" ldconfig -n ---------------------------------------------------------------------- Libraries have been installed in: If you ever happen to want to link against installed libraries in a given directory, LIBDIR, you must either use libtool, and specify the full pathname of the library, or use the '-LLIBDIR' flag during linking and do at least one of the following: - add LIBDIR to the 'LD_LIBRARY_PATH' environment variable during execution - add LIBDIR to the 'LD_RUN_PATH' environment variable during linking - use the '-Wl,-rpath -Wl,LIBDIR' linker flag - have your system administrator add LIBDIR to '/etc/ld.so.conf' See any operating system documentation about shared libraries for more information, such as the ld(1) and ld.so(8) manual pages. ---------------------------------------------------------------------- make[4]: Leaving directory ' make[3]: Leaving directory ' make[2]: Leaving directory ' Making install in src/vty make[2]: Entering directory ' CC vty.lo CC vector.lo CC buffer.lo CC utils.lo CC telnet_interface.lo CC command.lo CC logging_vty.lo CC stats_vty.lo CC talloc_ctx_vty.lo CC fsm_vty.lo CCLD libosmovty.la make[3]: Entering directory ' make[3]: Nothing to be done for 'install-data-am'. /bin/mkdir -p ' /bin/bash ../../libtool --mode=install /usr/bin/install -c libosmovty.la ' libtool: warning: relinking 'libosmovty.la' libtool: install: (cd /bin/bash " --silent --tag CC --mode=relink gcc -Wall -g -O2 -DBUILDING_LIBOSMOCORE -Wall -version-info 4:0:0 -no-undefined -o libosmovty.la -rpath buffer.lo command.lo vty.lo vector.lo utils.lo telnet_interface.lo logging_vty.lo stats_vty.lo fsm_vty.lo talloc_ctx_vty.lo ../../src/libosmocore.la -ltalloc ) libtool: install: /usr/bin/install -c .libs/libosmovty.so.4.0.0T libtool: install: (cd && { ln -s -f libosmovty.so.4.0.0 libosmovty.so.4 || { rm -f libosmovty.so.4 && ln -s libosmovty.so.4.0.0 libosmovty.so.4; }; }) libtool: install: (cd && { ln -s -f libosmovty.so.4.0.0 libosmovty.so || { rm -f libosmovty.so && ln -s libosmovty.so.4.0.0 libosmovty.so; }; }) libtool: install: /usr/bin/install -c .libs/libosmovty.lai libtool: finish: PATH="/usr/local/bin:/usr/bin:/bin:/usr/games:/home/osmocom-build/bin:/sbin" ldconfig -n ---------------------------------------------------------------------- Libraries have been installed in: If you ever happen to want to link against installed libraries in a given directory, LIBDIR, you must either use libtool, and specify the full pathname of the library, or use the '-LLIBDIR' flag during linking and do at least one of the following: - add LIBDIR to the 'LD_LIBRARY_PATH' environment variable during execution - add LIBDIR to the 'LD_RUN_PATH' environment variable during linking - use the '-Wl,-rpath -Wl,LIBDIR' linker flag - have your system administrator add LIBDIR to '/etc/ld.so.conf' See any operating system documentation about shared libraries for more information, such as the ld(1) and ld.so(8) manual pages. ---------------------------------------------------------------------- make[3]: Leaving directory ' make[2]: Leaving directory ' Making install in src/codec make[2]: Entering directory ' CC gsm620.lo CC gsm660.lo CC gsm610.lo CC ecu_fr.lo CC gsm690.lo CCLD libosmocodec.la make[3]: Entering directory ' make[3]: Nothing to be done for 'install-data-am'. /bin/mkdir -p ' /bin/bash ../../libtool --mode=install /usr/bin/install -c libosmocodec.la ' libtool: warning: relinking 'libosmocodec.la' libtool: install: (cd /bin/bash " --silent --tag CC --mode=relink gcc -Wall -g -O2 -DBUILDING_LIBOSMOCORE -Wall -version-info 0:0:0 -no-undefined -o libosmocodec.la -rpath gsm610.lo gsm620.lo gsm660.lo gsm690.lo ecu_fr.lo ../../src/libosmocore.la ) libtool: install: /usr/bin/install -c .libs/libosmocodec.so.0.0.0T libtool: install: (cd && { ln -s -f libosmocodec.so.0.0.0 libosmocodec.so.0 || { rm -f libosmocodec.so.0 && ln -s libosmocodec.so.0.0.0 libosmocodec.so.0; }; }) libtool: install: (cd && { ln -s -f libosmocodec.so.0.0.0 libosmocodec.so || { rm -f libosmocodec.so && ln -s libosmocodec.so.0.0.0 libosmocodec.so; }; }) libtool: install: /usr/bin/install -c .libs/libosmocodec.lai libtool: finish: PATH="/usr/local/bin:/usr/bin:/bin:/usr/games:/home/osmocom-build/bin:/sbin" ldconfig -n ---------------------------------------------------------------------- Libraries have been installed in: If you ever happen to want to link against installed libraries in a given directory, LIBDIR, you must either use libtool, and specify the full pathname of the library, or use the '-LLIBDIR' flag during linking and do at least one of the following: - add LIBDIR to the 'LD_LIBRARY_PATH' environment variable during execution - add LIBDIR to the 'LD_RUN_PATH' environment variable during linking - use the '-Wl,-rpath -Wl,LIBDIR' linker flag - have your system administrator add LIBDIR to '/etc/ld.so.conf' See any operating system documentation about shared libraries for more information, such as the ld(1) and ld.so(8) manual pages. ---------------------------------------------------------------------- make[3]: Leaving directory ' make[2]: Leaving directory ' Making install in src/gsm make[2]: Entering directory ' GEN gsm0503_conv.c Generating convolutional codes... Generate 'xcch' definition Generate 'rach' definition Generate 'rach_ext' definition Generate 'sch' definition Generate 'cs2' definition Generate 'cs3' definition Generate 'cs2_np' definition Generate 'cs3_np' definition Generate 'tch_afs_12_2' definition Generate 'tch_afs_10_2' definition Generate 'tch_afs_7_95' definition Generate 'tch_afs_7_4' definition Generate 'tch_afs_6_7' definition Generate 'tch_afs_5_9' definition Generate 'tch_afs_5_15' definition Generate 'tch_afs_4_75' definition Generate 'tch_fr' definition Generate 'tch_hr' definition Generate 'tch_ahs_7_95' definition Generate 'tch_ahs_7_4' definition Generate 'tch_ahs_6_7' definition Generate 'tch_ahs_5_9' definition Generate 'tch_ahs_5_15' definition Generate 'tch_ahs_4_75' definition Generate 'mcs1_dl_hdr' definition Generate 'mcs1_ul_hdr' definition Generate 'mcs1' definition Generate 'mcs2' definition Generate 'mcs3' definition Generate 'mcs4' definition Generate 'mcs5_dl_hdr' definition Generate 'mcs5_ul_hdr' definition Generate 'mcs5' definition Generate 'mcs6' definition Generate 'mcs7_dl_hdr' definition Generate 'mcs7_ul_hdr' definition Generate 'mcs7' definition Generate 'mcs8' definition Generate 'mcs9' definition Generation complete. make install-am make[3]: Entering directory ' CC a5.lo CC tlv_parser.lo CC rxlev_stat.lo CC comp128.lo CC comp128v23.lo CC rsl.lo CC gsm_utils.lo CC gsm48.lo gsm_utils.c:112:9: note: #pragma message: including GnuTLS for getrandom fallback. #pragma message ("including GnuTLS for getrandom fallback.") ^~~~~~~ gsm_utils.c: In function ?osmo_get_rand_id?: gsm_utils.c:429:9: note: #pragma message: Using direct syscall access for getrandom(): consider upgrading to glibc >= 2.25 #pragma message ("Using direct syscall access for getrandom(): consider upgrading to glibc >= 2.25") ^~~~~~~ gsm_utils.c:437:9: note: #pragma message: Secure random failed: using GnuTLS fallback. #pragma message ("Secure random failed: using GnuTLS fallback.") ^~~~~~~ CC gsm48_ie.lo CC gsm0808.lo CC sysinfo.lo CC gprs_cipher_core.lo CC gprs_rlc.lo CC gsm0480.lo CC abis_nm.lo CC gsm0502.lo CC gsm0411_utils.lo CC gsm0411_smc.lo CC gsm0411_smr.lo CC gsm0414.lo gsm0808.c: In function ?gsm0808_create_ass?: gsm0808.c:326:14: internal compiler error: Segmentation fault struct msgb *gsm0808_create_ass(const struct gsm0808_channel_type *ct, ^~~~~~~~~~~~~~~~~~ CC lapd_core.lo Please submit a full bug report, with preprocessed source if appropriate. See for instructions. Makefile:578: recipe for target 'gsm0808.lo' failed make[3]: *** [gsm0808.lo] Error 1 make[3]: *** Waiting for unfinished jobs.... make[3]: Leaving directory ' Makefile:683: recipe for target 'install' failed make[2]: *** [install] Error 2 make[2]: Leaving directory ' Makefile:600: recipe for target 'install-recursive' failed make[1]: *** [install-recursive] Error 1 make[1]: Leaving directory ' Makefile:899: recipe for target 'install' failed make: *** [install] Error 2 Build step 'Execute shell' marked build as failure [WARNINGS]Skipping publisher since build result is FAILURE From jenkins at lists.osmocom.org Fri Apr 6 06:49:33 2018 From: jenkins at lists.osmocom.org (jenkins at lists.osmocom.org) Date: Fri, 6 Apr 2018 06:49:33 +0000 (UTC) Subject: =?UTF-8?Q?Build_failed_in_Jenkins:_master-osmo-bts_=C2=BB_oct?= =?UTF-8?Q?+trx,master,default,osmocom-master-debian9_#468?= Message-ID: <1127369093.59.1522997373123.JavaMail.jenkins@jenkins.osmocom.org> See Changes: [laforge] fix activation of osmocom-style dynamic PDCH as TCH/F or TCH/H [laforge] contrib: jenkins_bts_model: Fix bashism expr ------------------------------------------ [...truncated 39.07 KB...] checking if gcc PIC flag -fPIC -DPIC works... yes checking if gcc static flag -static works... yes checking if gcc supports -c -o file.o... yes checking if gcc supports -c -o file.o... (cached) yes checking whether the gcc linker (/usr/bin/ld -m elf_x86_64) supports shared libraries... yes checking whether -lc should be explicitly linked in... no checking dynamic linker characteristics... GNU/Linux ld.so checking how to hardcode library paths into programs... immediate checking whether stripping libraries is possible... yes checking if libtool supports shared libraries... yes checking whether to build shared libraries... yes checking whether to build static libraries... no checking for pkg-config... /usr/bin/pkg-config checking for pkg-config... /usr/bin/pkg-config checking pkg-config is at least version 0.20... yes checking for ANSI C header files... (cached) yes checking execinfo.h usability... yes checking execinfo.h presence... yes checking for execinfo.h... yes checking sys/select.h usability... yes checking sys/select.h presence... yes checking for sys/select.h... yes checking sys/socket.h usability... yes checking sys/socket.h presence... yes checking for sys/socket.h... yes checking syslog.h usability... yes checking syslog.h presence... yes checking for syslog.h... yes checking ctype.h usability... yes checking ctype.h presence... yes checking for ctype.h... yes checking netinet/tcp.h usability... yes checking netinet/tcp.h presence... yes checking for netinet/tcp.h... yes checking for size_t... yes checking for working alloca.h... yes checking for alloca... yes checking for library containing dlopen... -ldl checking for backtrace in -lexecinfo... no checking for doxygen... /usr/bin/doxygen checking whether SYS_getrandom is declared... yes checking if gcc supports -fvisibility=hidden... yes checking whether struct tm has tm_gmtoff member... yes checking for TALLOC... yes checking for PCSC... yes checking for LIBGNUTLS... yes checking whether C compiler accepts -mavx2... yes checking whether C compiler accepts -mssse3... yes checking whether C compiler accepts -msse4.1... yes checking whether gcc has __builtin_cpu_supports built-in... yes CFLAGS="-g -O2 -DBUILDING_LIBOSMOCORE -Wall" CPPFLAGS=" -DBUILDING_LIBOSMOCORE -Wall" checking that generated files are newer than configure... done configure: creating ./config.status config.status: creating libosmocore.pc config.status: creating libosmocodec.pc config.status: creating libosmocoding.pc config.status: creating libosmovty.pc config.status: creating libosmogsm.pc config.status: creating libosmogb.pc config.status: creating libosmoctrl.pc config.status: creating libosmosim.pc config.status: creating include/Makefile config.status: creating src/Makefile config.status: creating src/vty/Makefile config.status: creating src/codec/Makefile config.status: creating src/coding/Makefile config.status: creating src/sim/Makefile config.status: creating src/gsm/Makefile config.status: creating src/gb/Makefile config.status: creating src/ctrl/Makefile config.status: creating src/pseudotalloc/Makefile config.status: creating tests/Makefile config.status: creating tests/atlocal config.status: creating utils/Makefile config.status: creating Doxyfile.core config.status: creating Doxyfile.gsm config.status: creating Doxyfile.vty config.status: creating Doxyfile.codec config.status: creating Doxyfile.coding config.status: creating Doxyfile.gb config.status: creating Makefile config.status: creating config.h config.status: executing tests/atconfig commands config.status: executing depfiles commands config.status: executing libtool commands + make -j 8 install echo 0.10.2.245-a829 > .version-t && mv .version-t .version make install-recursive make[1]: Entering directory ' Making install in include make[2]: Entering directory ' GEN osmocom/gsm/gsm0503.h Generating header file... Generate 'xcch' declaration Generate 'rach' declaration Generate 'rach_ext' declaration Generate 'sch' declaration Generate 'cs2' declaration Generate 'cs3' declaration Generate 'cs2_np' declaration Generate 'cs3_np' declaration Generate 'tch_afs_12_2' declaration Generate 'tch_afs_10_2' declaration Generate 'tch_afs_7_95' declaration Generate 'tch_afs_7_4' declaration Generate 'tch_afs_6_7' declaration Generate 'tch_afs_5_9' declaration Generate 'tch_afs_5_15' declaration Generate 'tch_afs_4_75' declaration Generate 'tch_fr' declaration Generate 'tch_hr' declaration Generate 'tch_ahs_7_95' declaration Generate 'tch_ahs_7_4' declaration Generate 'tch_ahs_6_7' declaration Generate 'tch_ahs_5_9' declaration Generate 'tch_ahs_5_15' declaration Generate 'tch_ahs_4_75' declaration Generate 'mcs1_dl_hdr' declaration Generate 'mcs1_ul_hdr' declaration Generate 'mcs1' declaration Generate 'mcs2' declaration Generate 'mcs3' declaration Generate 'mcs4' declaration Generate 'mcs5_dl_hdr' declaration Generate 'mcs5_ul_hdr' declaration Generate 'mcs5' declaration Generate 'mcs6' declaration Generate 'mcs7_dl_hdr' declaration Generate 'mcs7_ul_hdr' declaration Generate 'mcs7' declaration Generate 'mcs8' declaration Generate 'mcs9' declaration Generation complete. make install-am make[3]: Entering directory ' GEN osmocom/core/bit64gen.h GEN osmocom/core/bit32gen.h GEN osmocom/core/bit16gen.h GEN osmocom/core/crc16gen.h GEN osmocom/core/crc64gen.h GEN osmocom/core/crc32gen.h GEN osmocom/core/crc8gen.h GEN osmocom/core/bit16gen.h GEN osmocom/core/bit64gen.h GEN osmocom/core/crc64gen.h GEN osmocom/core/bit32gen.h GEN osmocom/core/crc32gen.h GEN osmocom/core/crc8gen.h GEN osmocom/core/crc16gen.h make[4]: Entering directory ' make[4]: Nothing to be done for 'install-exec-am'. /bin/mkdir -p ' /bin/mkdir -p ' /usr/bin/install -c -m 644 osmocom/core/application.h osmocom/core/backtrace.h osmocom/core/bit16gen.h osmocom/core/bit32gen.h osmocom/core/bit64gen.h osmocom/core/bits.h osmocom/core/bitvec.h osmocom/core/bitcomp.h osmocom/core/byteswap.h osmocom/core/conv.h osmocom/core/counter.h osmocom/core/crc16.h osmocom/core/crc16gen.h osmocom/core/crc32gen.h osmocom/core/crc64gen.h osmocom/core/crc8gen.h osmocom/core/crcgen.h osmocom/core/endian.h osmocom/core/defs.h osmocom/core/fsm.h osmocom/core/gsmtap.h osmocom/core/gsmtap_util.h osmocom/core/linuxlist.h osmocom/core/linuxrbtree.h osmocom/core/logging.h osmocom/core/loggingrb.h osmocom/core/stats.h osmocom/core/macaddr.h osmocom/core/msgb.h osmocom/core/panic.h osmocom/core/prbs.h osmocom/core/prim.h osmocom/core/process.h osmocom/core/rate_ctr.h osmocom/core/stat_item.h osmocom/core/select.h osmocom/core/sercomm.h osmocom/core/signal.h osmocom/core/socket.h osmocom/core/statistics.h ' /bin/mkdir -p ' /usr/bin/install -c -m 644 osmocom/coding/gsm0503_tables.h osmocom/coding/gsm0503_parity.h osmocom/coding/gsm0503_mapping.h osmocom/coding/gsm0503_interleaving.h osmocom/coding/gsm0503_coding.h ' /bin/mkdir -p ' /usr/bin/install -c -m 644 osmocom/core/strrb.h osmocom/core/talloc.h osmocom/core/timer.h osmocom/core/timer_compat.h osmocom/core/utils.h osmocom/core/write_queue.h osmocom/core/plugin.h osmocom/core/msgfile.h osmocom/core/serial.h ' /bin/mkdir -p ' /usr/bin/install -c -m 644 osmocom/vty/buffer.h osmocom/vty/command.h osmocom/vty/logging.h osmocom/vty/stats.h osmocom/vty/misc.h osmocom/vty/telnet_interface.h osmocom/vty/vector.h osmocom/vty/vty.h osmocom/vty/ports.h ' /bin/mkdir -p ' /usr/bin/install -c -m 644 osmocom/gsm/protocol/gsm_03_40.h osmocom/gsm/protocol/gsm_03_41.h osmocom/gsm/protocol/gsm_04_08.h osmocom/gsm/protocol/gsm_04_08_gprs.h osmocom/gsm/protocol/gsm_04_11.h osmocom/gsm/protocol/gsm_04_12.h osmocom/gsm/protocol/gsm_04_14.h osmocom/gsm/protocol/gsm_04_80.h osmocom/gsm/protocol/gsm_08_08.h osmocom/gsm/protocol/gsm_08_58.h osmocom/gsm/protocol/gsm_09_02.h osmocom/gsm/protocol/gsm_12_21.h osmocom/gsm/protocol/gsm_23_003.h osmocom/gsm/protocol/gsm_44_318.h osmocom/gsm/protocol/ipaccess.h osmocom/gsm/protocol/smpp34_osmocom.h ' /bin/mkdir -p ' /usr/bin/install -c -m 644 osmocom/sim/class_tables.h osmocom/sim/sim.h ' /bin/mkdir -p ' /usr/bin/install -c -m 644 osmocom/gprs/gprs_bssgp.h osmocom/gprs/gprs_bssgp_bss.h osmocom/gprs/gprs_msgb.h osmocom/gprs/gprs_ns.h osmocom/gprs/gprs_ns_frgre.h osmocom/gprs/gprs_rlc.h ' /bin/mkdir -p ' /usr/bin/install -c -m 644 osmocom/crypt/auth.h osmocom/crypt/gprs_cipher.h ' /bin/mkdir -p ' /usr/bin/install -c -m 644 osmocom/gsm/a5.h osmocom/gsm/abis_nm.h osmocom/gsm/apn.h osmocom/gsm/bts_features.h osmocom/gsm/comp128.h osmocom/gsm/comp128v23.h osmocom/gsm/bitvec_gsm.h osmocom/gsm/gan.h osmocom/gsm/gsm0341.h osmocom/gsm/gsm0411_smc.h osmocom/gsm/gsm0411_smr.h osmocom/gsm/gsm0411_utils.h osmocom/gsm/gsm0480.h osmocom/gsm/gsm0502.h osmocom/gsm/gsm0503.h osmocom/gsm/gsm0808.h osmocom/gsm/gsm0808_utils.h osmocom/gsm/gsm23003.h osmocom/gsm/gsm48.h osmocom/gsm/gsm48_ie.h osmocom/gsm/gsm_utils.h osmocom/gsm/gsup.h osmocom/gsm/ipa.h osmocom/gsm/lapd_core.h osmocom/gsm/lapdm.h osmocom/gsm/meas_rep.h osmocom/gsm/mncc.h osmocom/gsm/prim.h osmocom/gsm/l1sap.h osmocom/gsm/oap.h osmocom/gsm/rsl.h osmocom/gsm/rxlev_stat.h osmocom/gsm/sysinfo.h osmocom/gsm/tlv.h ' /bin/mkdir -p ' /usr/bin/install -c -m 644 osmocom/ctrl/control_cmd.h osmocom/ctrl/control_if.h osmocom/ctrl/ports.h osmocom/ctrl/control_vty.h ' /bin/mkdir -p ' /usr/bin/install -c -m 644 osmocom/gprs/protocol/gsm_04_60.h osmocom/gprs/protocol/gsm_08_16.h osmocom/gprs/protocol/gsm_08_18.h ' /bin/mkdir -p ' /usr/bin/install -c -m 644 osmocom/codec/ecu.h osmocom/codec/codec.h osmocom/codec/gsm610_bits.h ' make[4]: Leaving directory ' make[3]: Leaving directory ' make[2]: Leaving directory ' Making install in src make[2]: Entering directory ' GEN crc8gen.c GEN crc16gen.c GEN crc64gen.c GEN crc32gen.c make install-am make[3]: Entering directory ' CC timer.lo CC timer_gettimeofday.lo CC timer_clockgettime.lo CC select.lo CC bitvec.lo CC msgb.lo CC bits.lo CC signal.lo CC bitcomp.lo CC counter.lo CC fsm.lo CC write_queue.lo CC utils.lo CC socket.lo CC logging.lo CC logging_syslog.lo CC logging_gsmtap.lo CC rate_ctr.lo CC gsmtap_util.lo CC crc16.lo CC panic.lo CC backtrace.lo CC conv.lo CC application.lo CC rbtree.lo CC strrb.lo CC loggingrb.lo CC crc8gen.lo CC crc16gen.lo CC crc32gen.lo CC crc64gen.lo CC macaddr.lo CC stat_item.lo CC stats.lo CC stats_statsd.lo CC prim.lo CC conv_acc.lo CC conv_acc_generic.lo CC sercomm.lo CC prbs.lo CC conv_acc_sse.lo CC conv_acc_sse_avx.lo CC plugin.lo CC msgfile.lo CC serial.lo /tmp/ccIxPxaW.s: Assembler messages: /tmp/ccIxPxaW.s: Fatal error: can't write 41 bytes to section .text of .libs/conv_acc_sse_avx.o because: 'No space left on device' /tmp/ccIxPxaW.s: Fatal error: can't close .libs/conv_acc_sse_avx.o: No space left on device Makefile:545: recipe for target 'conv_acc_sse_avx.lo' failed make[3]: *** [conv_acc_sse_avx.lo] Error 1 make[3]: Leaving directory ' Makefile:649: recipe for target 'install' failed make[2]: *** [install] Error 2 make[2]: Leaving directory ' Makefile:600: recipe for target 'install-recursive' failed make[1]: *** [install-recursive] Error 1 make[1]: Leaving directory ' Makefile:899: recipe for target 'install' failed make: *** [install] Error 2 Build step 'Execute shell' marked build as failure [WARNINGS]Skipping publisher since build result is FAILURE From jenkins at lists.osmocom.org Fri Apr 6 06:49:33 2018 From: jenkins at lists.osmocom.org (jenkins at lists.osmocom.org) Date: Fri, 6 Apr 2018 06:49:33 +0000 (UTC) Subject: =?UTF-8?Q?Build_failed_in_Jenkins:_master-osmo-pcu_=C2=BB_?= =?UTF-8?Q?master,osmocom-master-debian9,lc15,True_#355?= Message-ID: <568624259.60.1522997373615.JavaMail.jenkins@jenkins.osmocom.org> See ------------------------------------------ [...truncated 119.24 KB...] checking if gcc static flag -static works... yes checking if gcc supports -c -o file.o... yes checking if gcc supports -c -o file.o... (cached) yes checking whether the gcc linker (/usr/bin/ld -m elf_x86_64) supports shared libraries... yes checking whether -lc should be explicitly linked in... no checking dynamic linker characteristics... GNU/Linux ld.so checking how to hardcode library paths into programs... immediate checking whether stripping libraries is possible... yes checking if libtool supports shared libraries... yes checking whether to build shared libraries... yes checking whether to build static libraries... yes checking how to run the C++ preprocessor... g++ -E checking for ld used by g++... /usr/bin/ld -m elf_x86_64 checking if the linker (/usr/bin/ld -m elf_x86_64) is GNU ld... yes checking whether the g++ linker (/usr/bin/ld -m elf_x86_64) supports shared libraries... yes checking for g++ option to produce PIC... -fPIC -DPIC checking if g++ PIC flag -fPIC -DPIC works... yes checking if g++ static flag -static works... yes checking if g++ supports -c -o file.o... yes checking if g++ supports -c -o file.o... (cached) yes checking whether the g++ linker (/usr/bin/ld -m elf_x86_64) supports shared libraries... yes checking dynamic linker characteristics... (cached) GNU/Linux ld.so checking how to hardcode library paths into programs... immediate checking for pkg-config... /usr/bin/pkg-config checking for pkg-config... /usr/bin/pkg-config checking pkg-config is at least version 0.20... yes checking for ANSI C header files... (cached) yes checking for LIBOSMOCORE... yes checking for LIBOSMOVTY... yes checking for LIBOSMOGSM... yes checking for LIBOSMOGB... yes checking whether to enable direct DSP access for PDCH of sysmocom-bts... unset checking whether to enable direct PHY access for PDCH of NuRAN Wireless Litecell 1.5 BTS... yes checking for python... /usr/bin/python checking for python version... 2.7 checking for python platform... linux2 checking for python script directory... ${prefix}/lib/python2.7/site-packages checking for python extension module directory... ${exec_prefix}/lib/python2.7/site-packages checking for osmotestvty.py... yes checking whether to enable VTY tests... yes CFLAGS="-g -O2" CPPFLAGS="" checking that generated files are newer than configure... done configure: creating ./config.status config.status: creating osmo-pcu.pc config.status: creating include/Makefile config.status: creating src/Makefile config.status: creating examples/Makefile config.status: creating tests/Makefile config.status: creating Makefile config.status: executing tests/atconfig commands config.status: executing depfiles commands config.status: executing libtool commands make[1]: Entering directory ' Making all in include make[2]: Entering directory ' make[2]: Nothing to be done for 'all'. make[2]: Leaving directory ' Making all in src make[2]: Entering directory ' CXX gprs_debug.lo CXX csn1.lo CXX gsm_rlcmac.lo CXX gprs_bssgp_pcu.lo ../../../src/gprs_bssgp_pcu.cpp:975:2: warning: #warning "This causes ASAN to complain. It is not critical for normal operation but should be fixed nevertheless" [-Wcpp] #warning "This causes ASAN to complain. It is not critical for normal operation but should be fixed nevertheless" ^~~~~~~ CXX gprs_rlcmac.lo CXX gprs_rlcmac_sched.lo CXX gprs_rlcmac_meas.lo CXX gprs_rlcmac_ts_alloc.lo CXX gprs_ms.lo CXX gprs_ms_storage.lo CXX gsm_timer.lo CXX pcu_l1_if.lo CC pcu_vty.lo CXX pcu_vty_functions.lo CC mslot_class.lo CXX tbf.lo CXX tbf_ul.lo CXX tbf_dl.lo CXX bts.lo CXX pdch.lo CXX poll_controller.lo CXX encoding.lo CXX sba.lo CXX decoding.lo CXX llc.lo CXX rlc.lo CXX osmobts_sock.lo CC gprs_codel.lo CXX gprs_coding_scheme.lo CXX egprs_rlc_compression.lo CXXLD libgprs.la ar: `u' modifier ignored since `D' is the default (see `U') CXX pcu_main.o CC osmo-bts-litecell15/lc15_l1_if.o ../../../src/osmo-bts-litecell15/lc15_l1_if.c: In function ?prim_init?: ../../../src/osmo-bts-litecell15/lc15_l1_if.c:79:33: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast] prim->u.mphCloseReq.hLayer1 = (HANDLE)gl1->hLayer1; ^ ../../../src/osmo-bts-litecell15/lc15_l1_if.c:82:35: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast] prim->u.mphConnectReq.hLayer1 = (HANDLE)gl1->hLayer1; ^ ../../../src/osmo-bts-litecell15/lc15_l1_if.c:85:38: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast] prim->u.mphDisconnectReq.hLayer1 = (HANDLE)gl1->hLayer1; ^ ../../../src/osmo-bts-litecell15/lc15_l1_if.c:88:36: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast] prim->u.mphActivateReq.hLayer1 = (HANDLE)gl1->hLayer1; ^ ../../../src/osmo-bts-litecell15/lc15_l1_if.c:91:38: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast] prim->u.mphDeactivateReq.hLayer1 = (HANDLE)gl1->hLayer1; ^ ../../../src/osmo-bts-litecell15/lc15_l1_if.c:94:34: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast] prim->u.mphConfigReq.hLayer1 = (HANDLE)gl1->hLayer1; ^ ../../../src/osmo-bts-litecell15/lc15_l1_if.c:97:35: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast] prim->u.mphMeasureReq.hLayer1 = (HANDLE)gl1->hLayer1; ^ ../../../src/osmo-bts-litecell15/lc15_l1_if.c:113:37: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast] prim->u.phEmptyFrameReq.hLayer1 = (HANDLE)gl1->hLayer1; ^ ../../../src/osmo-bts-litecell15/lc15_l1_if.c:116:31: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast] prim->u.phDataReq.hLayer1 = (HANDLE)gl1->hLayer1; ^ In file included from ../../../src/gprs_debug.h:25:0, from ../../../src/osmo-bts-litecell15/lc15_l1_if.c:35: ../../../src/osmo-bts-litecell15/lc15_l1_if.c: In function ?handle_ph_data_ind?: ../../../src/osmo-bts-litecell15/lc15_l1_if.c:191:16: warning: format ?%x? expects argument of type ?unsigned int?, but argument 8 has type ?HANDLE {aka void *}? [-Wformat=] DEBUGP(DL1IF, "Rx PH-DATA.ind %s (hL2 %08x): %s\n", ^ :93:54: note: in definition of macro ?LOGPSRCC? logp2(ss, level, caller_file, caller_line, cont, fmt, ##args); \ ^~~ :47:2: note: in expansion of macro ?LOGPSRC? LOGPSRC(ss, level, NULL, 0, fmt, ## args) ^~~~~~~ :27:34: note: in expansion of macro ?LOGP? #define DEBUGP(ss, fmt, args...) LOGP(ss, LOGL_DEBUG, fmt, ##args) ^~~~ ../../../src/osmo-bts-litecell15/lc15_l1_if.c:191:2: note: in expansion of macro ?DEBUGP? DEBUGP(DL1IF, "Rx PH-DATA.ind %s (hL2 %08x): %s\n", ^~~~~~ ../../../src/osmo-bts-litecell15/lc15_l1_if.c:191:16: warning: format ?%x? expects argument of type ?unsigned int?, but argument 8 has type ?HANDLE {aka void *}? [-Wformat=] DEBUGP(DL1IF, "Rx PH-DATA.ind %s (hL2 %08x): %s\n", ^ :95:53: note: in definition of macro ?LOGPSRCC? logp2(ss, level, __BASE_FILE__, __LINE__, cont, fmt, ##args); \ ^~~ :47:2: note: in expansion of macro ?LOGPSRC? LOGPSRC(ss, level, NULL, 0, fmt, ## args) ^~~~~~~ :27:34: note: in expansion of macro ?LOGP? #define DEBUGP(ss, fmt, args...) LOGP(ss, LOGL_DEBUG, fmt, ##args) ^~~~ ../../../src/osmo-bts-litecell15/lc15_l1_if.c:191:2: note: in expansion of macro ?DEBUGP? DEBUGP(DL1IF, "Rx PH-DATA.ind %s (hL2 %08x): %s\n", ^~~~~~ ../../../src/osmo-bts-litecell15/lc15_l1_if.c: In function ?l1if_pdch_req?: ../../../src/osmo-bts-litecell15/lc15_l1_if.c:321:22: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast] data_req->hLayer1 = (HANDLE)fl1h->hLayer1; ^ CC osmo-bts-litecell15/lc15_l1_hw.o CC osmo-bts-litecell15/lc15bts.o CXXLD osmo-pcu make[2]: Leaving directory ' Making all in examples make[2]: Entering directory ' make[2]: Nothing to be done for 'all'. make[2]: Leaving directory ' Making all in tests make[2]: Entering directory ' CXX pcu_emu.o CXX test_replay_gprs_attach.o CC openbsc_clone.o CXX test_pdp_activation.o CXXLD emu/pcu_emu make[2]: Leaving directory ' make[2]: Entering directory ' make[2]: Nothing to be done for 'all-am'. make[2]: Leaving directory ' make[1]: Leaving directory ' make[1]: Entering directory ' Making dvi in include make[2]: Entering directory ' make[2]: Nothing to be done for 'dvi'. make[2]: Leaving directory ' Making dvi in src make[2]: Entering directory ' make[2]: Nothing to be done for 'dvi'. make[2]: Leaving directory ' Making dvi in examples make[2]: Entering directory ' make[2]: Nothing to be done for 'dvi'. make[2]: Leaving directory ' Making dvi in tests make[2]: Entering directory ' make[2]: Nothing to be done for 'dvi'. make[2]: Leaving directory ' make[2]: Entering directory ' make[2]: Nothing to be done for 'dvi-am'. make[2]: Leaving directory ' make[1]: Leaving directory ' make[1]: Entering directory ' Making check in include make[2]: Entering directory ' make[2]: Nothing to be done for 'check'. make[2]: Leaving directory ' Making check in src make[2]: Entering directory ' make[2]: Nothing to be done for 'check'. make[2]: Leaving directory ' Making check in examples make[2]: Entering directory ' make[2]: Nothing to be done for 'check'. make[2]: Leaving directory ' Making check in tests make[2]: Entering directory ' make rlcmac/RLCMACTest alloc/AllocTest alloc/MslotTest tbf/TbfTest types/TypesTest ms/MsTest llist/LListTest llc/LlcTest codel/codel_test edge/EdgeTest bitcomp/BitcompTest fn/FnTest make[3]: Entering directory ' CXX RLCMACTest.o CXXLD rlcmac/RLCMACTest CXX AllocTest.o CXXLD alloc/AllocTest CXX MslotTest.o CXXLD alloc/MslotTest CXX TbfTest.o CXXLD tbf/TbfTest CXX TypesTest.o CXXLD types/TypesTest CXX MsTest.o ../../../tests/ms/MsTest.cpp:555:1: fatal error: error writing to /tmp/cc35Pvh8.s: No space left on device } ^ compilation terminated. Makefile:939: recipe for target 'MsTest.o' failed make[3]: *** [MsTest.o] Error 1 make[3]: Leaving directory ' Makefile:1095: recipe for target 'check-am' failed make[2]: *** [check-am] Error 2 make[2]: Leaving directory ' Makefile:461: recipe for target 'check-recursive' failed make[1]: *** [check-recursive] Error 1 make[1]: Leaving directory ' Makefile:666: recipe for target 'distcheck' failed make: *** [distcheck] Error 1 + cat-testlogs.sh Build step 'Execute shell' marked build as failure [WARNINGS]Skipping publisher since build result is FAILURE From jenkins at lists.osmocom.org Fri Apr 6 06:49:46 2018 From: jenkins at lists.osmocom.org (jenkins at lists.osmocom.org) Date: Fri, 6 Apr 2018 06:49:46 +0000 (UTC) Subject: =?UTF-8?Q?Build_failed_in_Jenkins:_master-osmo-bts_=C2=BB_sy?= =?UTF-8?Q?smo,master,default,osmocom-master-debian9_#468?= Message-ID: <637284671.61.1522997386995.JavaMail.jenkins@jenkins.osmocom.org> See Changes: [laforge] fix activation of osmocom-style dynamic PDCH as TCH/F or TCH/H [laforge] contrib: jenkins_bts_model: Fix bashism expr ------------------------------------------ Started by upstream project "master-osmo-bts" build number 468 originally caused by: Started by an SCM change Building remotely on build2-deb9build-ansible (ttcn3 osmo-gsm-tester-build osmocom-gerrit-debian9 osmocom-master-debian9 coverity) in workspace > git rev-parse --is-inside-work-tree # timeout=10 Fetching changes from the remote Git repository > git config remote.origin.url git://git.osmocom.org/osmo-bts # timeout=10 ERROR: Error fetching remote repo 'origin' hudson.plugins.git.GitException: Failed to fetch from git://git.osmocom.org/osmo-bts at hudson.plugins.git.GitSCM.fetchFrom(GitSCM.java:862) at hudson.plugins.git.GitSCM.retrieveChanges(GitSCM.java:1129) at hudson.plugins.git.GitSCM.checkout(GitSCM.java:1160) at hudson.scm.SCM.checkout(SCM.java:495) at hudson.model.AbstractProject.checkout(AbstractProject.java:1202) at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:574) at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:86) at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:499) at hudson.model.Run.execute(Run.java:1724) at hudson.matrix.MatrixRun.run(MatrixRun.java:146) at hudson.model.ResourceController.execute(ResourceController.java:97) at hudson.model.Executor.run(Executor.java:429) Caused by: hudson.plugins.git.GitException: Command "git config remote.origin.url git://git.osmocom.org/osmo-bts" returned status code 4: stdout: stderr: error: failed to write new configuration file at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1996) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1964) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1960) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommand(CliGitAPIImpl.java:1597) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommand(CliGitAPIImpl.java:1609) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.setRemoteUrl(CliGitAPIImpl.java:1243) at hudson.plugins.git.GitAPI.setRemoteUrl(GitAPI.java:160) at sun.reflect.GeneratedMethodAccessor26.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at hudson.remoting.RemoteInvocationHandler$RPCRequest.perform(RemoteInvocationHandler.java:922) at hudson.remoting.RemoteInvocationHandler$RPCRequest.call(RemoteInvocationHandler.java:896) at hudson.remoting.RemoteInvocationHandler$RPCRequest.call(RemoteInvocationHandler.java:853) at hudson.remoting.UserRequest.perform(UserRequest.java:207) at hudson.remoting.UserRequest.perform(UserRequest.java:53) at hudson.remoting.Request$2.run(Request.java:358) at hudson.remoting.InterceptingExecutorService$1.call(InterceptingExecutorService.java:72) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:748) Suppressed: hudson.remoting.Channel$CallSiteStackTrace: Remote call to build2-deb9build-ansible at hudson.remoting.Channel.attachCallSiteStackTrace(Channel.java:1693) at hudson.remoting.UserResponse.retrieve(UserRequest.java:310) at hudson.remoting.Channel.call(Channel.java:908) at hudson.remoting.RemoteInvocationHandler.invoke(RemoteInvocationHandler.java:281) at com.sun.proxy.$Proxy56.setRemoteUrl(Unknown Source) at org.jenkinsci.plugins.gitclient.RemoteGitImpl.setRemoteUrl(RemoteGitImpl.java:295) at hudson.plugins.git.GitSCM.fetchFrom(GitSCM.java:850) at hudson.plugins.git.GitSCM.retrieveChanges(GitSCM.java:1129) at hudson.plugins.git.GitSCM.checkout(GitSCM.java:1160) at hudson.scm.SCM.checkout(SCM.java:495) at hudson.model.AbstractProject.checkout(AbstractProject.java:1202) at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:574) at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:86) at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:499) at hudson.model.Run.execute(Run.java:1724) at hudson.matrix.MatrixRun.run(MatrixRun.java:146) at hudson.model.ResourceController.execute(ResourceController.java:97) at hudson.model.Executor.run(Executor.java:429) ERROR: Error fetching remote repo 'origin' Retrying after 10 seconds > git rev-parse --is-inside-work-tree # timeout=10 Fetching changes from the remote Git repository > git config remote.origin.url git://git.osmocom.org/osmo-bts # timeout=10 Fetching upstream changes from git://git.osmocom.org/osmo-bts > git --version # timeout=10 > git fetch --tags --progress git://git.osmocom.org/osmo-bts +refs/heads/*:refs/remotes/origin/* Checking out Revision e5518b07d6fc3375a9e4004a2ed2680dbb2d178e (refs/remotes/origin/master) > git config core.sparsecheckout # timeout=10 > git checkout -f e5518b07d6fc3375a9e4004a2ed2680dbb2d178e Commit message: "contrib: jenkins_bts_model: Fix bashism expr" > git rev-list --no-walk 254326de3dd238d6a26989f141ff3c7eaf1da56a # timeout=10 [osmocom-master-debian9] $ /bin/sh -xe /tmp/jenkins3928230310018392102.sh + ./contrib/jenkins_bts_model.sh sysmo + ./contrib/jenkins_sysmobts.sh + base= + deps= + inst= + export deps inst + osmo-clean-workspace.sh + chmod -R +w . + git checkout -f HEAD + git clean -dxf -e -e layer1-headers Skipping repository deps/libosmocore Skipping repository deps/layer1-headers Skipping repository deps/libosmo-abis + [ -d ] + git -C checkout -f HEAD + git -C clean -dxf + git -C checkout -f HEAD + git -C clean -dxf + git -C checkout -f HEAD + git -C clean -dxf + [ -d layer1-headers ] + mkdir -p + find . -name *.[hc] + verify_value_string_arrays_are_terminated.py ./deps/libosmocore/utils/osmo-sim-test.c ./deps/libosmocore/utils/osmo-auc-gen.c ./deps/libosmocore/utils/osmo-arfcn.c ./deps/libosmocore/include/osmocom/codec/codec.h ./deps/libosmocore/include/osmocom/codec/ecu.h ./deps/libosmocore/include/osmocom/codec/gsm610_bits.h ./deps/libosmocore/include/osmocom/vty/ports.h ./deps/libosmocore/include/osmocom/vty/misc.h ./deps/libosmocore/include/osmocom/vty/vty.h ./deps/libosmocore/include/osmocom/vty/vector.h ./deps/libosmocore/include/osmocom/vty/buffer.h ./deps/libosmocore/include/osmocom/vty/telnet_interface.h ./deps/libosmocore/include/osmocom/vty/stats.h ./deps/libosmocore/include/osmocom/vty/command.h ./deps/libosmocore/include/osmocom/vty/logging.h ./deps/libosmocore/include/osmocom/ctrl/ports.h ./deps/libosmocore/include/osmocom/ctrl/control_vty.h ./deps/libosmocore/include/osmocom/ctrl/control_if.h ./deps/libosmocore/include/osmocom/ctrl/control_cmd.h ./deps/libosmocore/include/osmocom/coding/gsm0503_coding.h ./deps/libosmocore/include/osmocom/coding/gsm0503_interleaving.h ./deps/libosmocore/include/osmocom/coding/gsm0503_tables.h ./deps/libosmocore/include/osmocom/coding/gsm0503_mapping.h ./deps/libosmocore/include/osmocom/coding/gsm0503_parity.h ./deps/libosmocore/include/osmocom/gprs/gprs_ns_frgre.h ./deps/libosmocore/include/osmocom/gprs/gprs_bssgp.h ./deps/libosmocore/include/osmocom/gprs/protocol/gsm_08_16.h ./deps/libosmocore/include/osmocom/gprs/protocol/gsm_04_60.h ./deps/libosmocore/include/osmocom/gprs/protocol/gsm_08_18.h ./deps/libosmocore/include/osmocom/gprs/gprs_bssgp_bss.h ./deps/libosmocore/include/osmocom/gprs/gprs_msgb.h ./deps/libosmocore/include/osmocom/gprs/gprs_rlc.h ./deps/libosmocore/include/osmocom/gprs/gprs_ns.h ./deps/libosmocore/include/osmocom/gsm/kasumi.h ./deps/libosmocore/include/osmocom/gsm/gsm0808.h ./deps/libosmocore/include/osmocom/gsm/gan.h ./deps/libosmocore/include/osmocom/gsm/gsm0480.h ./deps/libosmocore/include/osmocom/gsm/gsm0341.h ./deps/libosmocore/include/osmocom/gsm/ipa.h ./deps/libosmocore/include/osmocom/gsm/oap.h ./deps/libosmocore/include/osmocom/gsm/tlv.h ./deps/libosmocore/include/osmocom/gsm/meas_rep.h ./deps/libosmocore/include/osmocom/gsm/gsm_utils.h ./deps/libosmocore/include/osmocom/gsm/bts_features.h ./deps/libosmocore/include/osmocom/gsm/gsm0411_smc.h ./deps/libosmocore/include/osmocom/gsm/apn.h ./deps/libosmocore/include/osmocom/gsm/gsm23003.h ./deps/libosmocore/include/osmocom/gsm/lapd_core.h ./deps/libosmocore/include/osmocom/gsm/prim.h ./deps/libosmocore/include/osmocom/gsm/l1sap.h ./deps/libosmocore/include/osmocom/gsm/mncc.h ./deps/libosmocore/include/osmocom/gsm/gsup.h ./deps/libosmocore/include/osmocom/gsm/gea.h ./deps/libosmocore/include/osmocom/gsm/comp128v23.h ./deps/libosmocore/include/osmocom/gsm/a5.h ./deps/libosmocore/include/osmocom/gsm/gsm48.h ./deps/libosmocore/include/osmocom/gsm/rsl.h ./deps/libosmocore/include/osmocom/gsm/protocol/gsm_09_02.h ./deps/libosmocore/include/osmocom/gsm/protocol/gsm_03_40.h ./deps/libosmocore/include/osmocom/gsm/protocol/gsm_12_21.h ./deps/libosmocore/include/osmocom/gsm/protocol/gsm_04_08.h ./deps/libosmocore/include/osmocom/gsm/protocol/smpp34_osmocom.h ./deps/libosmocore/include/osmocom/gsm/protocol/gsm_03_41.h ./deps/libosmocore/include/osmocom/gsm/protocol/gsm_04_14.h ./deps/libosmocore/include/osmocom/gsm/protocol/gsm_44_318.h ./deps/libosmocore/include/osmocom/gsm/protocol/gsm_08_58.h ./deps/libosmocore/include/osmocom/gsm/protocol/gsm_08_08.h ./deps/libosmocore/include/osmocom/gsm/protocol/ipaccess.h ./deps/libosmocore/include/osmocom/gsm/protocol/gsm_04_12.h ./deps/libosmocore/include/osmocom/gsm/protocol/gsm_04_11.h ./deps/libosmocore/include/osmocom/gsm/protocol/gsm_04_80.h ./deps/libosmocore/include/osmocom/gsm/protocol/gsm_04_08_gprs.h ./deps/libosmocore/include/osmocom/gsm/protocol/gsm_23_003.h ./deps/libosmocore/include/osmocom/gsm/gsm48_ie.h ./deps/libosmocore/include/osmocom/gsm/rxlev_stat.h ./deps/libosmocore/include/osmocom/gsm/bitvec_gsm.h ./deps/libosmocore/include/osmocom/gsm/gsm0808_utils.h ./deps/libosmocore/include/osmocom/gsm/gsm0502.h ./deps/libosmocore/include/osmocom/gsm/abis_nm.h ./deps/libosmocore/include/osmocom/gsm/gsm0411_utils.h ./deps/libosmocore/include/osmocom/gsm/comp128.h ./deps/libosmocore/include/osmocom/gsm/lapdm.h ./deps/libosmocore/include/osmocom/gsm/sysinfo.h ./deps/libosmocore/include/osmocom/gsm/gsm0411_smr.h ./deps/libosmocore/include/osmocom/core/endian.h ./deps/libosmocore/include/osmocom/core/backtrace.h ./deps/libosmocore/include/osmocom/core/stat_item.h ./deps/libosmocore/include/osmocom/core/signal.h ./deps/libosmocore/include/osmocom/core/conv.h ./deps/libosmocore/include/osmocom/core/timer_compat.h ./deps/libosmocore/include/osmocom/core/application.h ./deps/libosmocore/include/osmocom/core/select.h ./deps/libosmocore/include/osmocom/core/timer.h ./deps/libosmocore/include/osmocom/core/serial.h ./deps/libosmocore/include/osmocom/core/statistics.h ./deps/libosmocore/include/osmocom/core/sercomm.h ./deps/libosmocore/include/osmocom/core/prim.h ./deps/libosmocore/include/osmocom/core/panic.h ./deps/libosmocore/include/osmocom/core/gsmtap.h ./deps/libosmocore/include/osmocom/core/strrb.h ./deps/libosmocore/include/osmocom/core/write_queue.h ./deps/libosmocore/include/osmocom/core/linuxrbtree.h ./deps/libosmocore/include/osmocom/core/loggingrb.h ./deps/libosmocore/include/osmocom/core/msgb.h ./deps/libosmocore/include/osmocom/core/bitcomp.h ./deps/libosmocore/include/osmocom/core/crcgen.h ./deps/libosmocore/include/osmocom/core/gsmtap_util.h ./deps/libosmocore/include/osmocom/core/bits.h ./deps/libosmocore/include/osmocom/core/msgfile.h ./deps/libosmocore/include/osmocom/core/utils.h ./deps/libosmocore/include/osmocom/core/macaddr.h ./deps/libosmocore/include/osmocom/core/counter.h ./deps/libosmocore/include/osmocom/core/linuxlist.h ./deps/libosmocore/include/osmocom/core/crc16.h ./deps/libosmocore/include/osmocom/core/byteswap.h ./deps/libosmocore/include/osmocom/core/plugin.h ./deps/libosmocore/include/osmocom/core/fsm.h ./deps/libosmocore/include/osmocom/core/rate_ctr.h ./deps/libosmocore/include/osmocom/core/talloc.h ./deps/libosmocore/include/osmocom/core/prbs.h ./deps/libosmocore/include/osmocom/core/defs.h ./deps/libosmocore/include/osmocom/core/socket.h ./deps/libosmocore/include/osmocom/core/bitvec.h ./deps/libosmocore/include/osmocom/core/process.h ./deps/libosmocore/include/osmocom/core/stats.h ./deps/libosmocore/include/osmocom/core/logging.h ./deps/libosmocore/include/osmocom/sim/sim.h ./deps/libosmocore/include/osmocom/sim/class_tables.h ./deps/libosmocore/include/osmocom/crypt/gprs_cipher.h ./deps/libosmocore/include/osmocom/crypt/auth.h ./deps/libosmocore/src/crc16.c ./deps/libosmocore/src/bitcomp.c ./deps/libosmocore/src/stats_statsd.c ./deps/libosmocore/src/gb/gprs_bssgp.c ./deps/libosmocore/src/gb/gprs_bssgp_util.c ./deps/libosmocore/src/gb/gprs_ns_frgre.c ./deps/libosmocore/src/gb/gprs_bssgp_vty.c ./deps/libosmocore/src/gb/gprs_ns.c ./deps/libosmocore/src/gb/common_vty.c ./deps/libosmocore/src/gb/common_vty.h ./deps/libosmocore/src/gb/gprs_ns_vty.c ./deps/libosmocore/src/gb/gprs_bssgp_bss.c ./deps/libosmocore/src/conv_acc.c ./deps/libosmocore/src/rbtree.c ./deps/libosmocore/src/codec/ecu_fr.c ./deps/libosmocore/src/codec/gsm610.c ./deps/libosmocore/src/codec/gsm620.c ./deps/libosmocore/src/codec/gsm690.c ./deps/libosmocore/src/codec/gsm660.c ./deps/libosmocore/src/panic.c ./deps/libosmocore/src/socket.c ./deps/libosmocore/src/prim.c ./deps/libosmocore/src/logging_syslog.c ./deps/libosmocore/src/conv.c ./deps/libosmocore/src/stat_item.c ./deps/libosmocore/src/logging.c ./deps/libosmocore/src/stats.c ./deps/libosmocore/src/plugin.c ./deps/libosmocore/src/loggingrb.c ./deps/libosmocore/src/timer_clockgettime.c ./deps/libosmocore/src/select.c ./deps/libosmocore/src/signal.c ./deps/libosmocore/src/utils.c ./deps/libosmocore/src/bitvec.c ./deps/libosmocore/src/fsm.c ./deps/libosmocore/src/vty/talloc_ctx_vty.c ./deps/libosmocore/src/vty/fsm_vty.c ./deps/libosmocore/src/vty/telnet_interface.c ./deps/libosmocore/src/vty/vector.c ./deps/libosmocore/src/vty/vty.c ./deps/libosmocore/src/vty/utils.c ./deps/libosmocore/src/vty/stats_vty.c ./deps/libosmocore/src/vty/logging_vty.c ./deps/libosmocore/src/vty/command.c ./deps/libosmocore/src/vty/buffer.c ./deps/libosmocore/src/ctrl/control_vty.c ./deps/libosmocore/src/ctrl/control_if.c ./deps/libosmocore/src/ctrl/fsm_ctrl_commands.c ./deps/libosmocore/src/ctrl/control_cmd.c ./deps/libosmocore/src/coding/gsm0503_mapping.c ./deps/libosmocore/src/coding/gsm0503_parity.c ./deps/libosmocore/src/coding/gsm0503_interleaving.c ./deps/libosmocore/src/coding/gsm0503_tables.c ./deps/libosmocore/src/coding/gsm0503_coding.c ./deps/libosmocore/src/sercomm.c ./deps/libosmocore/src/conv_acc_sse_impl.h ./deps/libosmocore/src/prbs.c ./deps/libosmocore/src/pseudotalloc/pseudotalloc.c ./deps/libosmocore/src/pseudotalloc/talloc.h ./deps/libosmocore/src/application.c ./deps/libosmocore/src/gsm/auth_core.c ./deps/libosmocore/src/gsm/milenage/milenage.c ./deps/libosmocore/src/gsm/milenage/crypto.h ./deps/libosmocore/src/gsm/milenage/aes_wrap.h ./deps/libosmocore/src/gsm/milenage/includes.h ./deps/libosmocore/src/gsm/milenage/common.h ./deps/libosmocore/src/gsm/milenage/aes-encblock.c ./deps/libosmocore/src/gsm/milenage/aes_i.h ./deps/libosmocore/src/gsm/milenage/aes.h ./deps/libosmocore/src/gsm/milenage/aes-internal.c ./deps/libosmocore/src/gsm/milenage/aes-internal-enc.c ./deps/libosmocore/src/gsm/milenage/milenage.h ./deps/libosmocore/src/gsm/rxlev_stat.c ./deps/libosmocore/src/gsm/tlv_parser.c ./deps/libosmocore/src/gsm/auth_comp128v23.c ./deps/libosmocore/src/gsm/apn.c ./deps/libosmocore/src/gsm/rsl.c ./deps/libosmocore/src/gsm/gan.c ./deps/libosmocore/src/gsm/gsm0411_utils.c ./deps/libosmocore/src/gsm/gsm_utils.c ./deps/libosmocore/src/gsm/gsm0808.c ./deps/libosmocore/src/gsm/kasumi.c ./deps/libosmocore/src/gsm/a5.c ./deps/libosmocore/src/gsm/gprs_rlc.c ./deps/libosmocore/src/gsm/bts_features.c ./deps/libosmocore/src/gsm/auth_milenage.c ./deps/libosmocore/src/gsm/gsup.c ./deps/libosmocore/src/gsm/lapd_core.c ./deps/libosmocore/src/gsm/oap.c ./deps/libosmocore/src/gsm/gsm0411_smr.c ./deps/libosmocore/src/gsm/gsm48_ie.c ./deps/libosmocore/src/gsm/comp128v23.c ./deps/libosmocore/src/gsm/ipa.c ./deps/libosmocore/src/gsm/gsm0808_utils.c ./deps/libosmocore/src/gsm/comp128.c ./deps/libosmocore/src/gsm/gsm0414.c ./deps/libosmocore/src/gsm/gsm23003.c ./deps/libosmocore/src/gsm/gsm48.c ./deps/libosmocore/src/gsm/gsm0341.c ./deps/libosmocore/src/gsm/gsm0480.c ./deps/libosmocore/src/gsm/abis_nm.c ./deps/libosmocore/src/gsm/mncc.c ./deps/libosmocore/src/gsm/lapdm.c ./deps/libosmocore/src/gsm/gsm_04_08_gprs.c ./deps/libosmocore/src/gsm/gea.c ./deps/libosmocore/src/gsm/gprs_gea.c ./deps/libosmocore/src/gsm/auth_comp128v1.c ./deps/libosmocore/src/gsm/gprs_cipher_core.c ./deps/libosmocore/src/gsm/gsm0411_smc.c ./deps/libosmocore/src/gsm/sysinfo.c ./deps/libosmocore/src/gsm/gsm0502.c ./deps/libosmocore/src/serial.c ./deps/libosmocore/src/msgfile.c ./deps/libosmocore/src/sim/card_fs_uicc.c ./deps/libosmocore/src/sim/reader.c ./deps/libosmocore/src/sim/card_fs_sim.c ./deps/libosmocore/src/sim/card_fs_usim.c ./deps/libosmocore/src/sim/sim_int.h ./deps/libosmocore/src/sim/card_fs_isim.c ./deps/libosmocore/src/sim/card_fs_tetra.c ./deps/libosmocore/src/sim/core.c ./deps/libosmocore/src/sim/gsm_int.h ./deps/libosmocore/src/sim/reader_pcsc.c ./deps/libosmocore/src/sim/class_tables.c ./deps/libosmocore/src/counter.c ./deps/libosmocore/src/backtrace.c ./deps/libosmocore/src/conv_acc_sse_avx.c ./deps/libosmocore/src/timer_gettimeofday.c ./deps/libosmocore/src/gsmtap_util.c ./deps/libosmocore/src/bits.c ./deps/libosmocore/src/macaddr.c ./deps/libosmocore/src/conv_acc_sse.c ./deps/libosmocore/src/msgb.c ./deps/libosmocore/src/rate_ctr.c ./deps/libosmocore/src/timer.c ./deps/libosmocore/src/conv_acc_generic.c ./deps/libosmocore/src/strrb.c ./deps/libosmocore/src/write_queue.c ./deps/libosmocore/src/logging_gsmtap.c ./deps/libosmocore/tests/kasumi/kasumi_test.c ./deps/libosmocore/tests/gb/bssgp_fc_test.c ./deps/libosmocore/tests/gb/gprs_bssgp_test.c ./deps/libosmocore/tests/gb/gprs_ns_test.c ./deps/libosmocore/tests/gea/gea_test.c ./deps/libosmocore/tests/comp128/comp128_test.c ./deps/libosmocore/tests/codec/codec_ecu_fr_test.c ./deps/libosmocore/tests/codec/codec_test.c ./deps/libosmocore/tests/ussd/ussd_test.c ./deps/libosmocore/tests/abis/abis_test.c ./deps/libosmocore/tests/gsm0408/gsm0408_test.c ./deps/libosmocore/tests/a5/a5_test.c ./deps/libosmocore/tests/endian/endian_test.c ./deps/libosmocore/tests/tlv/tlv_test.c ./deps/libosmocore/tests/gsm0808/gsm0808_test.c ./deps/libosmocore/tests/utils/utils_test.c ./deps/libosmocore/tests/vty/vty_test.c ./deps/libosmocore/tests/msgb/msgb_test.c ./deps/libosmocore/tests/ctrl/ctrl_test.c ./deps/libosmocore/tests/coding/coding_test.c ./deps/libosmocore/tests/stats/stats_test.c ./deps/libosmocore/tests/gsm23003/gsm23003_test.c ./deps/libosmocore/tests/gprs/gprs_test.c ./deps/libosmocore/tests/bitvec/bitvec_test.c ./deps/libosmocore/tests/msgfile/msgfile_test.c ./deps/libosmocore/tests/write_queue/wqueue_test.c ./deps/libosmocore/tests/oap/oap_test.c ./deps/libosmocore/tests/sms/sms_test.c ./deps/libosmocore/tests/strrb/strrb_test.c ./deps/libosmocore/tests/sim/sim_test.c ./deps/libosmocore/tests/sercomm/sercomm_test.c ./deps/libosmocore/tests/socket/socket_test.c ./deps/libosmocore/tests/auth/milenage_test.c ./deps/libosmocore/tests/fr/fr_test.c ./deps/libosmocore/tests/bits/bitfield_test.c ./deps/libosmocore/tests/bits/bitrev_test.c ./deps/libosmocore/tests/bits/bitcomp_test.c ./deps/libosmocore/tests/logging/logging_test.c ./deps/libosmocore/tests/loggingrb/loggingrb_test.c ./deps/libosmocore/tests/lapd/lapd_test.c ./deps/libosmocore/tests/timer/timer_test.c ./deps/libosmocore/tests/timer/clk_override_test.c ./deps/libosmocore/tests/gsup/gsup_test.c ./deps/libosmocore/tests/smscb/gsm0341_test.c ./deps/libosmocore/tests/smscb/smscb_test.c ./deps/libosmocore/tests/prbs/prbs_test.c ./deps/libosmocore/tests/conv/conv.h ./deps/libosmocore/tests/conv/conv.c ./deps/libosmocore/tests/conv/conv_test.c ./deps/libosmocore/tests/conv/conv_gsm0503_test.c ./deps/libosmocore/tests/fsm/fsm_test.c ./deps/libosmocore/tests/libsercomstub.c ./deps/layer1-headers/include/gsml1const.h ./deps/layer1-headers/include/sbts2050_header.h ./deps/layer1-headers/include/superfemto.h ./deps/layer1-headers/include/gsml1dbg.h ./deps/layer1-headers/include/gsml1prim.h ./deps/layer1-headers/include/gsml1types.h ./deps/libosmo-abis/include/internal.h ./deps/libosmo-abis/include/osmocom/trau/osmo_ortp.h ./deps/libosmo-abis/include/osmocom/abis/ipa.h ./deps/libosmo-abis/include/osmocom/abis/trau_frame.h ./deps/libosmo-abis/include/osmocom/abis/ipa_proxy.h ./deps/libosmo-abis/include/osmocom/abis/lapd.h ./deps/libosmo-abis/include/osmocom/abis/lapd_pcap.h ./deps/libosmo-abis/include/osmocom/abis/unixsocket_proto.h ./deps/libosmo-abis/include/osmocom/abis/e1_input.h ./deps/libosmo-abis/include/osmocom/abis/ipaccess.h ./deps/libosmo-abis/include/osmocom/abis/abis.h ./deps/libosmo-abis/include/osmocom/abis/subchan_demux.h ./deps/libosmo-abis/include/mISDNif.h ./deps/libosmo-abis/src/subchan_demux.c ./deps/libosmo-abis/src/trau/osmo_ortp.c ./deps/libosmo-abis/src/trau_frame.c ./deps/libosmo-abis/src/ipa_proxy.c ./deps/libosmo-abis/src/input/unixsocket.c ./deps/libosmo-abis/src/input/lapd_pcap.c ./deps/libosmo-abis/src/input/lapd.c ./deps/libosmo-abis/src/input/misdn.c ./deps/libosmo-abis/src/input/rs232.c ./deps/libosmo-abis/src/input/ipa.c ./deps/libosmo-abis/src/input/dahdi.c ./deps/libosmo-abis/src/input/ipaccess.c ./deps/libosmo-abis/src/e1_input_vty.c ./deps/libosmo-abis/src/init.c ./deps/libosmo-abis/src/e1_input.c ./deps/libosmo-abis/tests/subchan_demux/subchan_demux_test.c ./deps/libosmo-abis/tests/e1inp_ipa_bts_test.c ./deps/libosmo-abis/tests/ipa_proxy_test.c ./deps/libosmo-abis/tests/e1inp_ipa_bsc_test.c ./deps/libosmo-abis/tests/ipa_recv/ipa_recv_test.c ./include/osmo-bts/cbch.h ./include/osmo-bts/oml.h ./include/osmo-bts/signal.h ./include/osmo-bts/pcuif_proto.h ./include/osmo-bts/scheduler.h ./include/osmo-bts/phy_link.h ./include/osmo-bts/l1sap.h ./include/osmo-bts/msg_utils.h ./include/osmo-bts/vty.h ./include/osmo-bts/gsm_data_shared.h ./include/osmo-bts/gsm_data.h ./include/osmo-bts/dtx_dl_amr_fsm.h ./include/osmo-bts/power_control.h ./include/osmo-bts/measurement.h ./include/osmo-bts/bts_model.h ./include/osmo-bts/handover.h ./include/osmo-bts/pcu_if.h ./include/osmo-bts/rsl.h ./include/osmo-bts/bts.h ./include/osmo-bts/tx_power.h ./include/osmo-bts/control_if.h ./include/osmo-bts/scheduler_backend.h ./include/osmo-bts/abis.h ./include/osmo-bts/amr.h ./include/osmo-bts/paging.h ./include/osmo-bts/logging.h ./src/osmo-bts-omldummy/bts_model.c ./src/osmo-bts-omldummy/main.c ./src/osmo-bts-virtual/osmo_mcast_sock.c ./src/osmo-bts-virtual/osmo_mcast_sock.h ./src/osmo-bts-virtual/virtualbts_vty.c ./src/osmo-bts-virtual/bts_model.c ./src/osmo-bts-virtual/scheduler_virtbts.c ./src/osmo-bts-virtual/virtual_um.h ./src/osmo-bts-virtual/l1_if.c ./src/osmo-bts-virtual/main.c ./src/osmo-bts-virtual/l1_if.h ./src/osmo-bts-virtual/virtual_um.c ./src/osmo-bts-octphy/octphy_hw_api.c ./src/osmo-bts-octphy/l1_oml.c ./src/osmo-bts-octphy/l1_utils.h ./src/osmo-bts-octphy/octphy_vty.c ./src/osmo-bts-octphy/l1_tch.c ./src/osmo-bts-octphy/octpkt.c ./src/osmo-bts-octphy/octpkt.h ./src/osmo-bts-octphy/l1_if.c ./src/osmo-bts-octphy/l1_utils.c ./src/osmo-bts-octphy/main.c ./src/osmo-bts-octphy/l1_if.h ./src/osmo-bts-octphy/l1_oml.h ./src/osmo-bts-octphy/octphy_hw_api.h ./src/osmo-bts-trx/scheduler_trx.c ./src/osmo-bts-trx/loops.h ./src/osmo-bts-trx/loops.c ./src/osmo-bts-trx/trx_if.h ./src/osmo-bts-trx/l1_if.c ./src/osmo-bts-trx/main.c ./src/osmo-bts-trx/trx_if.c ./src/osmo-bts-trx/l1_if.h ./src/osmo-bts-trx/trx_vty.c ./src/common/l1sap.c ./src/common/abis.c ./src/common/rsl.c ./src/common/msg_utils.c ./src/common/tx_power.c ./src/common/amr.c ./src/common/logging.c ./src/common/dtx_dl_amr_fsm.c ./src/common/power_control.c ./src/common/measurement.c ./src/common/paging.c ./src/common/lchan.c ./src/common/phy_link.c ./src/common/vty.c ./src/common/load_indication.c ./src/common/cbch.c ./src/common/main.c ./src/common/bts_ctrl_commands.c ./src/common/handover.c ./src/common/oml.c ./src/common/scheduler_mframe.c ./src/common/scheduler.c ./src/common/pcu_sock.c ./src/common/bts.c ./src/common/bts_ctrl_lookup.c ./src/common/gsm_data_shared.c ./src/common/sysinfo.c ./src/osmo-bts-sysmo/calib_fixup.c ./src/osmo-bts-sysmo/l1_fwd_main.c ./src/osmo-bts-sysmo/femtobts.h ./src/osmo-bts-sysmo/l1_transp_fwd.c ./src/osmo-bts-sysmo/l1_transp.h ./src/osmo-bts-sysmo/hw_misc.c ./src/osmo-bts-sysmo/sysmobts_vty.c ./src/osmo-bts-sysmo/l1_fwd.h ./src/osmo-bts-sysmo/oml_router.h ./src/osmo-bts-sysmo/utils.h ./src/osmo-bts-sysmo/utils.c ./src/osmo-bts-sysmo/sysmobts_ctrl.c ./src/osmo-bts-sysmo/l1_transp_hw.c ./src/osmo-bts-sysmo/l1_if.c ./src/osmo-bts-sysmo/hw_misc.h ./src/osmo-bts-sysmo/oml_router.c ./src/osmo-bts-sysmo/calib_file.c ./src/osmo-bts-sysmo/main.c ./src/osmo-bts-sysmo/tch.c ./src/osmo-bts-sysmo/oml.c ./src/osmo-bts-sysmo/l1_if.h ./src/osmo-bts-sysmo/misc/sysmobts_par.h ./src/osmo-bts-sysmo/misc/sysmobts_misc.h ./src/osmo-bts-sysmo/misc/sysmobts_nl.c ./src/osmo-bts-sysmo/misc/sysmobts_util.c ./src/osmo-bts-sysmo/misc/sysmobts_mgr_temp.c ./src/osmo-bts-sysmo/misc/sysmobts-calib.c ./src/osmo-bts-sysmo/misc/sysmobts_mgr_vty.c ./src/osmo-bts-sysmo/misc/sysmobts_eeprom.h ./src/osmo-bts-sysmo/misc/sysmobts_mgr.c ./src/osmo-bts-sysmo/misc/sysmobts_mgr_nl.c ./src/osmo-bts-sysmo/misc/sysmobts_mgr.h ./src/osmo-bts-sysmo/misc/sysmobts_mgr_calib.c ./src/osmo-bts-sysmo/misc/sysmobts-layer1.c ./src/osmo-bts-sysmo/misc/sysmobts_misc.c ./src/osmo-bts-sysmo/misc/sysmobts_par.c ./src/osmo-bts-sysmo/misc/sysmobts-layer1.h ./src/osmo-bts-sysmo/misc/sysmobts_nl.h ./src/osmo-bts-sysmo/misc/sysmobts_mgr_2050.c ./src/osmo-bts-sysmo/eeprom.c ./src/osmo-bts-sysmo/femtobts.c ./src/osmo-bts-sysmo/eeprom.h ./src/osmo-bts-litecell15/l1_transp.h ./src/osmo-bts-litecell15/hw_misc.c ./src/osmo-bts-litecell15/lc15bts_vty.c ./src/osmo-bts-litecell15/oml_router.h ./src/osmo-bts-litecell15/utils.h ./src/osmo-bts-litecell15/utils.c ./src/osmo-bts-litecell15/lc15bts.c ./src/osmo-bts-litecell15/l1_transp_hw.c ./src/osmo-bts-litecell15/l1_if.c ./src/osmo-bts-litecell15/hw_misc.h ./src/osmo-bts-litecell15/oml_router.c ./src/osmo-bts-litecell15/lc15bts.h ./src/osmo-bts-litecell15/calib_file.c ./src/osmo-bts-litecell15/main.c ./src/osmo-bts-litecell15/tch.c ./src/osmo-bts-litecell15/oml.c ./src/osmo-bts-litecell15/l1_if.h ./src/osmo-bts-litecell15/misc/lc15bts_mgr_calib.c ./src/osmo-bts-litecell15/misc/lc15bts_led.h ./src/osmo-bts-litecell15/misc/lc15bts_util.c ./src/osmo-bts-litecell15/misc/lc15bts_bts.h ./src/osmo-bts-litecell15/misc/lc15bts_bts.c ./src/osmo-bts-litecell15/misc/lc15bts_mgr_nl.c ./src/osmo-bts-litecell15/misc/lc15bts_bid.h ./src/osmo-bts-litecell15/misc/lc15bts_par.c ./src/osmo-bts-litecell15/misc/lc15bts_mgr_temp.c ./src/osmo-bts-litecell15/misc/lc15bts_misc.c ./src/osmo-bts-litecell15/misc/lc15bts_nl.c ./src/osmo-bts-litecell15/misc/lc15bts_led.c ./src/osmo-bts-litecell15/misc/lc15bts_mgr.c ./src/osmo-bts-litecell15/misc/lc15bts_mgr.h ./src/osmo-bts-litecell15/misc/lc15bts_nl.h ./src/osmo-bts-litecell15/misc/lc15bts_power.h ./src/osmo-bts-litecell15/misc/lc15bts_power.c ./src/osmo-bts-litecell15/misc/lc15bts_mgr_vty.c ./src/osmo-bts-litecell15/misc/lc15bts_bid.c ./src/osmo-bts-litecell15/misc/lc15bts_clock.h ./src/osmo-bts-litecell15/misc/lc15bts_temp.c ./src/osmo-bts-litecell15/misc/lc15bts_swd.c ./src/osmo-bts-litecell15/misc/lc15bts_swd.h ./src/osmo-bts-litecell15/misc/lc15bts_misc.h ./src/osmo-bts-litecell15/misc/lc15bts_clock.c ./src/osmo-bts-litecell15/misc/lc15bts_temp.h ./src/osmo-bts-litecell15/misc/lc15bts_par.h ./tests/paging/paging_test.c ./tests/cipher/cipher_test.c ./tests/handover/handover_test.c ./tests/sysmobts/sysmobts_test.c ./tests/stubs.c ./tests/power/power_test.c ./tests/misc/misc_test.c ./tests/meas/sysmobts_fr_samples.h ./tests/meas/meas_test.c ./tests/tx_power/tx_power_test.c ./tests/agch/agch_test.c ./contrib/eeprom_reader.c + osmo-build-dep.sh libosmocore --disable-doxygen =============================== libosmocore =============================== + mkdir -p + cd + osmo-deps.sh libosmocore + project=libosmocore + branch=master + git branch -a + grep -c remotes/origin/master$ + [ x1 != x0 ] + branch=origin/master + test -d libosmocore + cd libosmocore + git fetch --tags origin >From git://git.osmocom.org/libosmocore dbb76592..a829b45c master -> origin/master * [new branch] neels/msc_fsm -> origin/neels/msc_fsm + git fetch origin + deps= osmo-clean-workspace.sh + chmod -R +w . + git checkout -f HEAD + git clean -dxf -e -e layer1-headers + [ -d ] + [ -d layer1-headers ] + git checkout -f origin/master Previous HEAD position was dbb76592... gsm0808: Add value strings for BSSMAP cause codes HEAD is now at a829b45c... use osmo_init_logging2() with proper talloc ctx + git rev-parse HEAD a829b45c8553765dfdd7201e1875a033a91d3a90 + cd libosmocore + mkdir -p + autoreconf --install --force autom4te: cannot create /tmp/armFY4Um/am4t3644.21672: No space left on device at /usr/bin/autom4te line 969. aclocal: error: echo failed with exit status: 28 autoreconf: aclocal failed with exit status: 28 Build step 'Execute shell' marked build as failure [WARNINGS]Skipping publisher since build result is FAILURE From jenkins at lists.osmocom.org Fri Apr 6 06:49:47 2018 From: jenkins at lists.osmocom.org (jenkins at lists.osmocom.org) Date: Fri, 6 Apr 2018 06:49:47 +0000 (UTC) Subject: =?UTF-8?Q?Build_failed_in_Jenkins:_master-osmo-bts_=C2=BB_lc?= =?UTF-8?Q?15,master,default,osmocom-master-debian9_#468?= Message-ID: <1292860986.62.1522997387119.JavaMail.jenkins@jenkins.osmocom.org> See Changes: [laforge] fix activation of osmocom-style dynamic PDCH as TCH/F or TCH/H [laforge] contrib: jenkins_bts_model: Fix bashism expr ------------------------------------------ Started by upstream project "master-osmo-bts" build number 468 originally caused by: Started by an SCM change Building remotely on build2-deb9build-ansible (ttcn3 osmo-gsm-tester-build osmocom-gerrit-debian9 osmocom-master-debian9 coverity) in workspace > git rev-parse --is-inside-work-tree # timeout=10 Fetching changes from the remote Git repository > git config remote.origin.url git://git.osmocom.org/osmo-bts # timeout=10 ERROR: Error fetching remote repo 'origin' hudson.plugins.git.GitException: Failed to fetch from git://git.osmocom.org/osmo-bts at hudson.plugins.git.GitSCM.fetchFrom(GitSCM.java:862) at hudson.plugins.git.GitSCM.retrieveChanges(GitSCM.java:1129) at hudson.plugins.git.GitSCM.checkout(GitSCM.java:1160) at hudson.scm.SCM.checkout(SCM.java:495) at hudson.model.AbstractProject.checkout(AbstractProject.java:1202) at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:574) at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:86) at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:499) at hudson.model.Run.execute(Run.java:1724) at hudson.matrix.MatrixRun.run(MatrixRun.java:146) at hudson.model.ResourceController.execute(ResourceController.java:97) at hudson.model.Executor.run(Executor.java:429) Caused by: hudson.plugins.git.GitException: Command "git config remote.origin.url git://git.osmocom.org/osmo-bts" returned status code 4: stdout: stderr: error: failed to write new configuration file at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1996) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1964) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1960) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommand(CliGitAPIImpl.java:1597) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommand(CliGitAPIImpl.java:1609) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.setRemoteUrl(CliGitAPIImpl.java:1243) at hudson.plugins.git.GitAPI.setRemoteUrl(GitAPI.java:160) at sun.reflect.GeneratedMethodAccessor26.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at hudson.remoting.RemoteInvocationHandler$RPCRequest.perform(RemoteInvocationHandler.java:922) at hudson.remoting.RemoteInvocationHandler$RPCRequest.call(RemoteInvocationHandler.java:896) at hudson.remoting.RemoteInvocationHandler$RPCRequest.call(RemoteInvocationHandler.java:853) at hudson.remoting.UserRequest.perform(UserRequest.java:207) at hudson.remoting.UserRequest.perform(UserRequest.java:53) at hudson.remoting.Request$2.run(Request.java:358) at hudson.remoting.InterceptingExecutorService$1.call(InterceptingExecutorService.java:72) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:748) Suppressed: hudson.remoting.Channel$CallSiteStackTrace: Remote call to build2-deb9build-ansible at hudson.remoting.Channel.attachCallSiteStackTrace(Channel.java:1693) at hudson.remoting.UserResponse.retrieve(UserRequest.java:310) at hudson.remoting.Channel.call(Channel.java:908) at hudson.remoting.RemoteInvocationHandler.invoke(RemoteInvocationHandler.java:281) at com.sun.proxy.$Proxy56.setRemoteUrl(Unknown Source) at org.jenkinsci.plugins.gitclient.RemoteGitImpl.setRemoteUrl(RemoteGitImpl.java:295) at hudson.plugins.git.GitSCM.fetchFrom(GitSCM.java:850) at hudson.plugins.git.GitSCM.retrieveChanges(GitSCM.java:1129) at hudson.plugins.git.GitSCM.checkout(GitSCM.java:1160) at hudson.scm.SCM.checkout(SCM.java:495) at hudson.model.AbstractProject.checkout(AbstractProject.java:1202) at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:574) at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:86) at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:499) at hudson.model.Run.execute(Run.java:1724) at hudson.matrix.MatrixRun.run(MatrixRun.java:146) at hudson.model.ResourceController.execute(ResourceController.java:97) at hudson.model.Executor.run(Executor.java:429) ERROR: Error fetching remote repo 'origin' Retrying after 10 seconds > git rev-parse --is-inside-work-tree # timeout=10 Fetching changes from the remote Git repository > git config remote.origin.url git://git.osmocom.org/osmo-bts # timeout=10 Fetching upstream changes from git://git.osmocom.org/osmo-bts > git --version # timeout=10 > git fetch --tags --progress git://git.osmocom.org/osmo-bts +refs/heads/*:refs/remotes/origin/* Checking out Revision e5518b07d6fc3375a9e4004a2ed2680dbb2d178e (refs/remotes/origin/master) > git config core.sparsecheckout # timeout=10 > git checkout -f e5518b07d6fc3375a9e4004a2ed2680dbb2d178e Commit message: "contrib: jenkins_bts_model: Fix bashism expr" > git rev-list --no-walk 254326de3dd238d6a26989f141ff3c7eaf1da56a # timeout=10 [osmocom-master-debian9] $ /bin/sh -xe /tmp/jenkins131456084441412899.sh + ./contrib/jenkins_bts_model.sh lc15 + ./contrib/jenkins_lc15.sh + base= + deps= + inst= + export deps inst + osmo-clean-workspace.sh + chmod -R +w . + git checkout -f HEAD + git clean -dxf -e -e layer1-headers Skipping repository deps/libosmocore Skipping repository deps/layer1-headers Skipping repository deps/libosmo-abis + [ -d ] + git -C checkout -f HEAD + git -C clean -dxf + git -C checkout -f HEAD + git -C clean -dxf + git -C checkout -f HEAD + git -C clean -dxf + [ -d layer1-headers ] + mkdir -p + find . -name *.[hc] + verify_value_string_arrays_are_terminated.py ./deps/libosmocore/utils/osmo-sim-test.c ./deps/libosmocore/utils/osmo-auc-gen.c ./deps/libosmocore/utils/osmo-arfcn.c ./deps/libosmocore/include/osmocom/codec/codec.h ./deps/libosmocore/include/osmocom/codec/ecu.h ./deps/libosmocore/include/osmocom/codec/gsm610_bits.h ./deps/libosmocore/include/osmocom/vty/ports.h ./deps/libosmocore/include/osmocom/vty/misc.h ./deps/libosmocore/include/osmocom/vty/vty.h ./deps/libosmocore/include/osmocom/vty/vector.h ./deps/libosmocore/include/osmocom/vty/buffer.h ./deps/libosmocore/include/osmocom/vty/telnet_interface.h ./deps/libosmocore/include/osmocom/vty/stats.h ./deps/libosmocore/include/osmocom/vty/command.h ./deps/libosmocore/include/osmocom/vty/logging.h ./deps/libosmocore/include/osmocom/ctrl/ports.h ./deps/libosmocore/include/osmocom/ctrl/control_vty.h ./deps/libosmocore/include/osmocom/ctrl/control_if.h ./deps/libosmocore/include/osmocom/ctrl/control_cmd.h ./deps/libosmocore/include/osmocom/coding/gsm0503_coding.h ./deps/libosmocore/include/osmocom/coding/gsm0503_interleaving.h ./deps/libosmocore/include/osmocom/coding/gsm0503_tables.h ./deps/libosmocore/include/osmocom/coding/gsm0503_mapping.h ./deps/libosmocore/include/osmocom/coding/gsm0503_parity.h ./deps/libosmocore/include/osmocom/gprs/gprs_ns_frgre.h ./deps/libosmocore/include/osmocom/gprs/gprs_bssgp.h ./deps/libosmocore/include/osmocom/gprs/protocol/gsm_08_16.h ./deps/libosmocore/include/osmocom/gprs/protocol/gsm_04_60.h ./deps/libosmocore/include/osmocom/gprs/protocol/gsm_08_18.h ./deps/libosmocore/include/osmocom/gprs/gprs_bssgp_bss.h ./deps/libosmocore/include/osmocom/gprs/gprs_msgb.h ./deps/libosmocore/include/osmocom/gprs/gprs_rlc.h ./deps/libosmocore/include/osmocom/gprs/gprs_ns.h ./deps/libosmocore/include/osmocom/gsm/kasumi.h ./deps/libosmocore/include/osmocom/gsm/gsm0808.h ./deps/libosmocore/include/osmocom/gsm/gan.h ./deps/libosmocore/include/osmocom/gsm/gsm0480.h ./deps/libosmocore/include/osmocom/gsm/gsm0341.h ./deps/libosmocore/include/osmocom/gsm/ipa.h ./deps/libosmocore/include/osmocom/gsm/oap.h ./deps/libosmocore/include/osmocom/gsm/tlv.h ./deps/libosmocore/include/osmocom/gsm/meas_rep.h ./deps/libosmocore/include/osmocom/gsm/gsm_utils.h ./deps/libosmocore/include/osmocom/gsm/bts_features.h ./deps/libosmocore/include/osmocom/gsm/gsm0411_smc.h ./deps/libosmocore/include/osmocom/gsm/apn.h ./deps/libosmocore/include/osmocom/gsm/gsm23003.h ./deps/libosmocore/include/osmocom/gsm/lapd_core.h ./deps/libosmocore/include/osmocom/gsm/prim.h ./deps/libosmocore/include/osmocom/gsm/l1sap.h ./deps/libosmocore/include/osmocom/gsm/mncc.h ./deps/libosmocore/include/osmocom/gsm/gsup.h ./deps/libosmocore/include/osmocom/gsm/gea.h ./deps/libosmocore/include/osmocom/gsm/comp128v23.h ./deps/libosmocore/include/osmocom/gsm/a5.h ./deps/libosmocore/include/osmocom/gsm/gsm48.h ./deps/libosmocore/include/osmocom/gsm/rsl.h ./deps/libosmocore/include/osmocom/gsm/protocol/gsm_09_02.h ./deps/libosmocore/include/osmocom/gsm/protocol/gsm_03_40.h ./deps/libosmocore/include/osmocom/gsm/protocol/gsm_12_21.h ./deps/libosmocore/include/osmocom/gsm/protocol/gsm_04_08.h ./deps/libosmocore/include/osmocom/gsm/protocol/smpp34_osmocom.h ./deps/libosmocore/include/osmocom/gsm/protocol/gsm_03_41.h ./deps/libosmocore/include/osmocom/gsm/protocol/gsm_04_14.h ./deps/libosmocore/include/osmocom/gsm/protocol/gsm_44_318.h ./deps/libosmocore/include/osmocom/gsm/protocol/gsm_08_58.h ./deps/libosmocore/include/osmocom/gsm/protocol/gsm_08_08.h ./deps/libosmocore/include/osmocom/gsm/protocol/ipaccess.h ./deps/libosmocore/include/osmocom/gsm/protocol/gsm_04_12.h ./deps/libosmocore/include/osmocom/gsm/protocol/gsm_04_11.h ./deps/libosmocore/include/osmocom/gsm/protocol/gsm_04_80.h ./deps/libosmocore/include/osmocom/gsm/protocol/gsm_04_08_gprs.h ./deps/libosmocore/include/osmocom/gsm/protocol/gsm_23_003.h ./deps/libosmocore/include/osmocom/gsm/gsm48_ie.h ./deps/libosmocore/include/osmocom/gsm/rxlev_stat.h ./deps/libosmocore/include/osmocom/gsm/bitvec_gsm.h ./deps/libosmocore/include/osmocom/gsm/gsm0808_utils.h ./deps/libosmocore/include/osmocom/gsm/gsm0502.h ./deps/libosmocore/include/osmocom/gsm/abis_nm.h ./deps/libosmocore/include/osmocom/gsm/gsm0411_utils.h ./deps/libosmocore/include/osmocom/gsm/comp128.h ./deps/libosmocore/include/osmocom/gsm/lapdm.h ./deps/libosmocore/include/osmocom/gsm/sysinfo.h ./deps/libosmocore/include/osmocom/gsm/gsm0411_smr.h ./deps/libosmocore/include/osmocom/core/endian.h ./deps/libosmocore/include/osmocom/core/backtrace.h ./deps/libosmocore/include/osmocom/core/stat_item.h ./deps/libosmocore/include/osmocom/core/signal.h ./deps/libosmocore/include/osmocom/core/conv.h ./deps/libosmocore/include/osmocom/core/timer_compat.h ./deps/libosmocore/include/osmocom/core/application.h ./deps/libosmocore/include/osmocom/core/select.h ./deps/libosmocore/include/osmocom/core/timer.h ./deps/libosmocore/include/osmocom/core/serial.h ./deps/libosmocore/include/osmocom/core/statistics.h ./deps/libosmocore/include/osmocom/core/sercomm.h ./deps/libosmocore/include/osmocom/core/prim.h ./deps/libosmocore/include/osmocom/core/panic.h ./deps/libosmocore/include/osmocom/core/gsmtap.h ./deps/libosmocore/include/osmocom/core/strrb.h ./deps/libosmocore/include/osmocom/core/write_queue.h ./deps/libosmocore/include/osmocom/core/linuxrbtree.h ./deps/libosmocore/include/osmocom/core/loggingrb.h ./deps/libosmocore/include/osmocom/core/msgb.h ./deps/libosmocore/include/osmocom/core/bitcomp.h ./deps/libosmocore/include/osmocom/core/crcgen.h ./deps/libosmocore/include/osmocom/core/gsmtap_util.h ./deps/libosmocore/include/osmocom/core/bits.h ./deps/libosmocore/include/osmocom/core/msgfile.h ./deps/libosmocore/include/osmocom/core/utils.h ./deps/libosmocore/include/osmocom/core/macaddr.h ./deps/libosmocore/include/osmocom/core/counter.h ./deps/libosmocore/include/osmocom/core/linuxlist.h ./deps/libosmocore/include/osmocom/core/crc16.h ./deps/libosmocore/include/osmocom/core/byteswap.h ./deps/libosmocore/include/osmocom/core/plugin.h ./deps/libosmocore/include/osmocom/core/fsm.h ./deps/libosmocore/include/osmocom/core/rate_ctr.h ./deps/libosmocore/include/osmocom/core/talloc.h ./deps/libosmocore/include/osmocom/core/prbs.h ./deps/libosmocore/include/osmocom/core/defs.h ./deps/libosmocore/include/osmocom/core/socket.h ./deps/libosmocore/include/osmocom/core/bitvec.h ./deps/libosmocore/include/osmocom/core/process.h ./deps/libosmocore/include/osmocom/core/stats.h ./deps/libosmocore/include/osmocom/core/logging.h ./deps/libosmocore/include/osmocom/sim/sim.h ./deps/libosmocore/include/osmocom/sim/class_tables.h ./deps/libosmocore/include/osmocom/crypt/gprs_cipher.h ./deps/libosmocore/include/osmocom/crypt/auth.h ./deps/libosmocore/src/crc16.c ./deps/libosmocore/src/bitcomp.c ./deps/libosmocore/src/stats_statsd.c ./deps/libosmocore/src/gb/gprs_bssgp.c ./deps/libosmocore/src/gb/gprs_bssgp_util.c ./deps/libosmocore/src/gb/gprs_ns_frgre.c ./deps/libosmocore/src/gb/gprs_bssgp_vty.c ./deps/libosmocore/src/gb/gprs_ns.c ./deps/libosmocore/src/gb/common_vty.c ./deps/libosmocore/src/gb/common_vty.h ./deps/libosmocore/src/gb/gprs_ns_vty.c ./deps/libosmocore/src/gb/gprs_bssgp_bss.c ./deps/libosmocore/src/conv_acc.c ./deps/libosmocore/src/rbtree.c ./deps/libosmocore/src/codec/ecu_fr.c ./deps/libosmocore/src/codec/gsm610.c ./deps/libosmocore/src/codec/gsm620.c ./deps/libosmocore/src/codec/gsm690.c ./deps/libosmocore/src/codec/gsm660.c ./deps/libosmocore/src/panic.c ./deps/libosmocore/src/socket.c ./deps/libosmocore/src/prim.c ./deps/libosmocore/src/logging_syslog.c ./deps/libosmocore/src/conv.c ./deps/libosmocore/src/stat_item.c ./deps/libosmocore/src/logging.c ./deps/libosmocore/src/stats.c ./deps/libosmocore/src/plugin.c ./deps/libosmocore/src/loggingrb.c ./deps/libosmocore/src/timer_clockgettime.c ./deps/libosmocore/src/select.c ./deps/libosmocore/src/signal.c ./deps/libosmocore/src/utils.c ./deps/libosmocore/src/bitvec.c ./deps/libosmocore/src/fsm.c ./deps/libosmocore/src/vty/talloc_ctx_vty.c ./deps/libosmocore/src/vty/fsm_vty.c ./deps/libosmocore/src/vty/telnet_interface.c ./deps/libosmocore/src/vty/vector.c ./deps/libosmocore/src/vty/vty.c ./deps/libosmocore/src/vty/utils.c ./deps/libosmocore/src/vty/stats_vty.c ./deps/libosmocore/src/vty/logging_vty.c ./deps/libosmocore/src/vty/command.c ./deps/libosmocore/src/vty/buffer.c ./deps/libosmocore/src/ctrl/control_vty.c ./deps/libosmocore/src/ctrl/control_if.c ./deps/libosmocore/src/ctrl/fsm_ctrl_commands.c ./deps/libosmocore/src/ctrl/control_cmd.c ./deps/libosmocore/src/coding/gsm0503_mapping.c ./deps/libosmocore/src/coding/gsm0503_parity.c ./deps/libosmocore/src/coding/gsm0503_interleaving.c ./deps/libosmocore/src/coding/gsm0503_tables.c ./deps/libosmocore/src/coding/gsm0503_coding.c ./deps/libosmocore/src/sercomm.c ./deps/libosmocore/src/conv_acc_sse_impl.h ./deps/libosmocore/src/prbs.c ./deps/libosmocore/src/pseudotalloc/pseudotalloc.c ./deps/libosmocore/src/pseudotalloc/talloc.h ./deps/libosmocore/src/application.c ./deps/libosmocore/src/gsm/auth_core.c ./deps/libosmocore/src/gsm/milenage/milenage.c ./deps/libosmocore/src/gsm/milenage/crypto.h ./deps/libosmocore/src/gsm/milenage/aes_wrap.h ./deps/libosmocore/src/gsm/milenage/includes.h ./deps/libosmocore/src/gsm/milenage/common.h ./deps/libosmocore/src/gsm/milenage/aes-encblock.c ./deps/libosmocore/src/gsm/milenage/aes_i.h ./deps/libosmocore/src/gsm/milenage/aes.h ./deps/libosmocore/src/gsm/milenage/aes-internal.c ./deps/libosmocore/src/gsm/milenage/aes-internal-enc.c ./deps/libosmocore/src/gsm/milenage/milenage.h ./deps/libosmocore/src/gsm/rxlev_stat.c ./deps/libosmocore/src/gsm/tlv_parser.c ./deps/libosmocore/src/gsm/auth_comp128v23.c ./deps/libosmocore/src/gsm/apn.c ./deps/libosmocore/src/gsm/rsl.c ./deps/libosmocore/src/gsm/gan.c ./deps/libosmocore/src/gsm/gsm0411_utils.c ./deps/libosmocore/src/gsm/gsm_utils.c ./deps/libosmocore/src/gsm/gsm0808.c ./deps/libosmocore/src/gsm/kasumi.c ./deps/libosmocore/src/gsm/a5.c ./deps/libosmocore/src/gsm/gprs_rlc.c ./deps/libosmocore/src/gsm/bts_features.c ./deps/libosmocore/src/gsm/auth_milenage.c ./deps/libosmocore/src/gsm/gsup.c ./deps/libosmocore/src/gsm/lapd_core.c ./deps/libosmocore/src/gsm/oap.c ./deps/libosmocore/src/gsm/gsm0411_smr.c ./deps/libosmocore/src/gsm/gsm48_ie.c ./deps/libosmocore/src/gsm/comp128v23.c ./deps/libosmocore/src/gsm/ipa.c ./deps/libosmocore/src/gsm/gsm0808_utils.c ./deps/libosmocore/src/gsm/comp128.c ./deps/libosmocore/src/gsm/gsm0414.c ./deps/libosmocore/src/gsm/gsm23003.c ./deps/libosmocore/src/gsm/gsm48.c ./deps/libosmocore/src/gsm/gsm0341.c ./deps/libosmocore/src/gsm/gsm0480.c ./deps/libosmocore/src/gsm/abis_nm.c ./deps/libosmocore/src/gsm/mncc.c ./deps/libosmocore/src/gsm/lapdm.c ./deps/libosmocore/src/gsm/gsm_04_08_gprs.c ./deps/libosmocore/src/gsm/gea.c ./deps/libosmocore/src/gsm/gprs_gea.c ./deps/libosmocore/src/gsm/auth_comp128v1.c ./deps/libosmocore/src/gsm/gprs_cipher_core.c ./deps/libosmocore/src/gsm/gsm0411_smc.c ./deps/libosmocore/src/gsm/sysinfo.c ./deps/libosmocore/src/gsm/gsm0502.c ./deps/libosmocore/src/serial.c ./deps/libosmocore/src/msgfile.c ./deps/libosmocore/src/sim/card_fs_uicc.c ./deps/libosmocore/src/sim/reader.c ./deps/libosmocore/src/sim/card_fs_sim.c ./deps/libosmocore/src/sim/card_fs_usim.c ./deps/libosmocore/src/sim/sim_int.h ./deps/libosmocore/src/sim/card_fs_isim.c ./deps/libosmocore/src/sim/card_fs_tetra.c ./deps/libosmocore/src/sim/core.c ./deps/libosmocore/src/sim/gsm_int.h ./deps/libosmocore/src/sim/reader_pcsc.c ./deps/libosmocore/src/sim/class_tables.c ./deps/libosmocore/src/counter.c ./deps/libosmocore/src/backtrace.c ./deps/libosmocore/src/conv_acc_sse_avx.c ./deps/libosmocore/src/timer_gettimeofday.c ./deps/libosmocore/src/gsmtap_util.c ./deps/libosmocore/src/bits.c ./deps/libosmocore/src/macaddr.c ./deps/libosmocore/src/conv_acc_sse.c ./deps/libosmocore/src/msgb.c ./deps/libosmocore/src/rate_ctr.c ./deps/libosmocore/src/timer.c ./deps/libosmocore/src/conv_acc_generic.c ./deps/libosmocore/src/strrb.c ./deps/libosmocore/src/write_queue.c ./deps/libosmocore/src/logging_gsmtap.c ./deps/libosmocore/tests/kasumi/kasumi_test.c ./deps/libosmocore/tests/gb/bssgp_fc_test.c ./deps/libosmocore/tests/gb/gprs_bssgp_test.c ./deps/libosmocore/tests/gb/gprs_ns_test.c ./deps/libosmocore/tests/gea/gea_test.c ./deps/libosmocore/tests/comp128/comp128_test.c ./deps/libosmocore/tests/codec/codec_ecu_fr_test.c ./deps/libosmocore/tests/codec/codec_test.c ./deps/libosmocore/tests/ussd/ussd_test.c ./deps/libosmocore/tests/abis/abis_test.c ./deps/libosmocore/tests/gsm0408/gsm0408_test.c ./deps/libosmocore/tests/a5/a5_test.c ./deps/libosmocore/tests/endian/endian_test.c ./deps/libosmocore/tests/tlv/tlv_test.c ./deps/libosmocore/tests/gsm0808/gsm0808_test.c ./deps/libosmocore/tests/utils/utils_test.c ./deps/libosmocore/tests/vty/vty_test.c ./deps/libosmocore/tests/msgb/msgb_test.c ./deps/libosmocore/tests/ctrl/ctrl_test.c ./deps/libosmocore/tests/coding/coding_test.c ./deps/libosmocore/tests/stats/stats_test.c ./deps/libosmocore/tests/gsm23003/gsm23003_test.c ./deps/libosmocore/tests/gprs/gprs_test.c ./deps/libosmocore/tests/bitvec/bitvec_test.c ./deps/libosmocore/tests/msgfile/msgfile_test.c ./deps/libosmocore/tests/write_queue/wqueue_test.c ./deps/libosmocore/tests/oap/oap_test.c ./deps/libosmocore/tests/sms/sms_test.c ./deps/libosmocore/tests/strrb/strrb_test.c ./deps/libosmocore/tests/sim/sim_test.c ./deps/libosmocore/tests/sercomm/sercomm_test.c ./deps/libosmocore/tests/socket/socket_test.c ./deps/libosmocore/tests/auth/milenage_test.c ./deps/libosmocore/tests/fr/fr_test.c ./deps/libosmocore/tests/bits/bitfield_test.c ./deps/libosmocore/tests/bits/bitrev_test.c ./deps/libosmocore/tests/bits/bitcomp_test.c ./deps/libosmocore/tests/logging/logging_test.c ./deps/libosmocore/tests/loggingrb/loggingrb_test.c ./deps/libosmocore/tests/lapd/lapd_test.c ./deps/libosmocore/tests/timer/timer_test.c ./deps/libosmocore/tests/timer/clk_override_test.c ./deps/libosmocore/tests/gsup/gsup_test.c ./deps/libosmocore/tests/smscb/gsm0341_test.c ./deps/libosmocore/tests/smscb/smscb_test.c ./deps/libosmocore/tests/prbs/prbs_test.c ./deps/libosmocore/tests/conv/conv.h ./deps/libosmocore/tests/conv/conv.c ./deps/libosmocore/tests/conv/conv_test.c ./deps/libosmocore/tests/conv/conv_gsm0503_test.c ./deps/libosmocore/tests/fsm/fsm_test.c ./deps/libosmocore/tests/libsercomstub.c ./deps/layer1-headers/inc/nrw/litecell15/litecell15.h ./deps/layer1-headers/inc/nrw/litecell15/gsml1const.h ./deps/layer1-headers/inc/nrw/litecell15/gsml1dbg.h ./deps/layer1-headers/inc/nrw/litecell15/gsml1prim.h ./deps/layer1-headers/inc/nrw/litecell15/gsml1types.h ./deps/libosmo-abis/include/internal.h ./deps/libosmo-abis/include/osmocom/trau/osmo_ortp.h ./deps/libosmo-abis/include/osmocom/abis/ipa.h ./deps/libosmo-abis/include/osmocom/abis/trau_frame.h ./deps/libosmo-abis/include/osmocom/abis/ipa_proxy.h ./deps/libosmo-abis/include/osmocom/abis/lapd.h ./deps/libosmo-abis/include/osmocom/abis/lapd_pcap.h ./deps/libosmo-abis/include/osmocom/abis/unixsocket_proto.h ./deps/libosmo-abis/include/osmocom/abis/e1_input.h ./deps/libosmo-abis/include/osmocom/abis/ipaccess.h ./deps/libosmo-abis/include/osmocom/abis/abis.h ./deps/libosmo-abis/include/osmocom/abis/subchan_demux.h ./deps/libosmo-abis/include/mISDNif.h ./deps/libosmo-abis/src/subchan_demux.c ./deps/libosmo-abis/src/trau/osmo_ortp.c ./deps/libosmo-abis/src/trau_frame.c ./deps/libosmo-abis/src/ipa_proxy.c ./deps/libosmo-abis/src/input/unixsocket.c ./deps/libosmo-abis/src/input/lapd_pcap.c ./deps/libosmo-abis/src/input/lapd.c ./deps/libosmo-abis/src/input/misdn.c ./deps/libosmo-abis/src/input/rs232.c ./deps/libosmo-abis/src/input/ipa.c ./deps/libosmo-abis/src/input/dahdi.c ./deps/libosmo-abis/src/input/ipaccess.c ./deps/libosmo-abis/src/e1_input_vty.c ./deps/libosmo-abis/src/init.c ./deps/libosmo-abis/src/e1_input.c ./deps/libosmo-abis/tests/subchan_demux/subchan_demux_test.c ./deps/libosmo-abis/tests/e1inp_ipa_bts_test.c ./deps/libosmo-abis/tests/ipa_proxy_test.c ./deps/libosmo-abis/tests/e1inp_ipa_bsc_test.c ./deps/libosmo-abis/tests/ipa_recv/ipa_recv_test.c ./include/osmo-bts/cbch.h ./include/osmo-bts/oml.h ./include/osmo-bts/signal.h ./include/osmo-bts/pcuif_proto.h ./include/osmo-bts/scheduler.h ./include/osmo-bts/phy_link.h ./include/osmo-bts/l1sap.h ./include/osmo-bts/msg_utils.h ./include/osmo-bts/vty.h ./include/osmo-bts/gsm_data_shared.h ./include/osmo-bts/gsm_data.h ./include/osmo-bts/dtx_dl_amr_fsm.h ./include/osmo-bts/power_control.h ./include/osmo-bts/measurement.h ./include/osmo-bts/bts_model.h ./include/osmo-bts/handover.h ./include/osmo-bts/pcu_if.h ./include/osmo-bts/rsl.h ./include/osmo-bts/bts.h ./include/osmo-bts/tx_power.h ./include/osmo-bts/control_if.h ./include/osmo-bts/scheduler_backend.h ./include/osmo-bts/abis.h ./include/osmo-bts/amr.h ./include/osmo-bts/paging.h ./include/osmo-bts/logging.h ./src/osmo-bts-omldummy/bts_model.c ./src/osmo-bts-omldummy/main.c ./src/osmo-bts-virtual/osmo_mcast_sock.c ./src/osmo-bts-virtual/osmo_mcast_sock.h ./src/osmo-bts-virtual/virtualbts_vty.c ./src/osmo-bts-virtual/bts_model.c ./src/osmo-bts-virtual/scheduler_virtbts.c ./src/osmo-bts-virtual/virtual_um.h ./src/osmo-bts-virtual/l1_if.c ./src/osmo-bts-virtual/main.c ./src/osmo-bts-virtual/l1_if.h ./src/osmo-bts-virtual/virtual_um.c ./src/osmo-bts-octphy/octphy_hw_api.c ./src/osmo-bts-octphy/l1_oml.c ./src/osmo-bts-octphy/l1_utils.h ./src/osmo-bts-octphy/octphy_vty.c ./src/osmo-bts-octphy/l1_tch.c ./src/osmo-bts-octphy/octpkt.c ./src/osmo-bts-octphy/octpkt.h ./src/osmo-bts-octphy/l1_if.c ./src/osmo-bts-octphy/l1_utils.c ./src/osmo-bts-octphy/main.c ./src/osmo-bts-octphy/l1_if.h ./src/osmo-bts-octphy/l1_oml.h ./src/osmo-bts-octphy/octphy_hw_api.h ./src/osmo-bts-trx/scheduler_trx.c ./src/osmo-bts-trx/loops.h ./src/osmo-bts-trx/loops.c ./src/osmo-bts-trx/trx_if.h ./src/osmo-bts-trx/l1_if.c ./src/osmo-bts-trx/main.c ./src/osmo-bts-trx/trx_if.c ./src/osmo-bts-trx/l1_if.h ./src/osmo-bts-trx/trx_vty.c ./src/common/l1sap.c ./src/common/abis.c ./src/common/rsl.c ./src/common/msg_utils.c ./src/common/tx_power.c ./src/common/amr.c ./src/common/logging.c ./src/common/dtx_dl_amr_fsm.c ./src/common/power_control.c ./src/common/measurement.c ./src/common/paging.c ./src/common/lchan.c ./src/common/phy_link.c ./src/common/vty.c ./src/common/load_indication.c ./src/common/cbch.c ./src/common/main.c ./src/common/bts_ctrl_commands.c ./src/common/handover.c ./src/common/oml.c ./src/common/scheduler_mframe.c ./src/common/scheduler.c ./src/common/pcu_sock.c ./src/common/bts.c ./src/common/bts_ctrl_lookup.c ./src/common/gsm_data_shared.c ./src/common/sysinfo.c ./src/osmo-bts-sysmo/calib_fixup.c ./src/osmo-bts-sysmo/l1_fwd_main.c ./src/osmo-bts-sysmo/femtobts.h ./src/osmo-bts-sysmo/l1_transp_fwd.c ./src/osmo-bts-sysmo/l1_transp.h ./src/osmo-bts-sysmo/hw_misc.c ./src/osmo-bts-sysmo/sysmobts_vty.c ./src/osmo-bts-sysmo/l1_fwd.h ./src/osmo-bts-sysmo/oml_router.h ./src/osmo-bts-sysmo/utils.h ./src/osmo-bts-sysmo/utils.c ./src/osmo-bts-sysmo/sysmobts_ctrl.c ./src/osmo-bts-sysmo/l1_transp_hw.c ./src/osmo-bts-sysmo/l1_if.c ./src/osmo-bts-sysmo/hw_misc.h ./src/osmo-bts-sysmo/oml_router.c ./src/osmo-bts-sysmo/calib_file.c ./src/osmo-bts-sysmo/main.c ./src/osmo-bts-sysmo/tch.c ./src/osmo-bts-sysmo/oml.c ./src/osmo-bts-sysmo/l1_if.h ./src/osmo-bts-sysmo/misc/sysmobts_par.h ./src/osmo-bts-sysmo/misc/sysmobts_misc.h ./src/osmo-bts-sysmo/misc/sysmobts_nl.c ./src/osmo-bts-sysmo/misc/sysmobts_util.c ./src/osmo-bts-sysmo/misc/sysmobts_mgr_temp.c ./src/osmo-bts-sysmo/misc/sysmobts-calib.c ./src/osmo-bts-sysmo/misc/sysmobts_mgr_vty.c ./src/osmo-bts-sysmo/misc/sysmobts_eeprom.h ./src/osmo-bts-sysmo/misc/sysmobts_mgr.c ./src/osmo-bts-sysmo/misc/sysmobts_mgr_nl.c ./src/osmo-bts-sysmo/misc/sysmobts_mgr.h ./src/osmo-bts-sysmo/misc/sysmobts_mgr_calib.c ./src/osmo-bts-sysmo/misc/sysmobts-layer1.c ./src/osmo-bts-sysmo/misc/sysmobts_misc.c ./src/osmo-bts-sysmo/misc/sysmobts_par.c ./src/osmo-bts-sysmo/misc/sysmobts-layer1.h ./src/osmo-bts-sysmo/misc/sysmobts_nl.h ./src/osmo-bts-sysmo/misc/sysmobts_mgr_2050.c ./src/osmo-bts-sysmo/eeprom.c ./src/osmo-bts-sysmo/femtobts.c ./src/osmo-bts-sysmo/eeprom.h ./src/osmo-bts-litecell15/l1_transp.h ./src/osmo-bts-litecell15/hw_misc.c ./src/osmo-bts-litecell15/lc15bts_vty.c ./src/osmo-bts-litecell15/oml_router.h ./src/osmo-bts-litecell15/utils.h ./src/osmo-bts-litecell15/utils.c ./src/osmo-bts-litecell15/lc15bts.c ./src/osmo-bts-litecell15/l1_transp_hw.c ./src/osmo-bts-litecell15/l1_if.c ./src/osmo-bts-litecell15/hw_misc.h ./src/osmo-bts-litecell15/oml_router.c ./src/osmo-bts-litecell15/lc15bts.h ./src/osmo-bts-litecell15/calib_file.c ./src/osmo-bts-litecell15/main.c ./src/osmo-bts-litecell15/tch.c ./src/osmo-bts-litecell15/oml.c ./src/osmo-bts-litecell15/l1_if.h ./src/osmo-bts-litecell15/misc/lc15bts_mgr_calib.c ./src/osmo-bts-litecell15/misc/lc15bts_led.h ./src/osmo-bts-litecell15/misc/lc15bts_util.c ./src/osmo-bts-litecell15/misc/lc15bts_bts.h ./src/osmo-bts-litecell15/misc/lc15bts_bts.c ./src/osmo-bts-litecell15/misc/lc15bts_mgr_nl.c ./src/osmo-bts-litecell15/misc/lc15bts_bid.h ./src/osmo-bts-litecell15/misc/lc15bts_par.c ./src/osmo-bts-litecell15/misc/lc15bts_mgr_temp.c ./src/osmo-bts-litecell15/misc/lc15bts_misc.c ./src/osmo-bts-litecell15/misc/lc15bts_nl.c ./src/osmo-bts-litecell15/misc/lc15bts_led.c ./src/osmo-bts-litecell15/misc/lc15bts_mgr.c ./src/osmo-bts-litecell15/misc/lc15bts_mgr.h ./src/osmo-bts-litecell15/misc/lc15bts_nl.h ./src/osmo-bts-litecell15/misc/lc15bts_power.h ./src/osmo-bts-litecell15/misc/lc15bts_power.c ./src/osmo-bts-litecell15/misc/lc15bts_mgr_vty.c ./src/osmo-bts-litecell15/misc/lc15bts_bid.c ./src/osmo-bts-litecell15/misc/lc15bts_clock.h ./src/osmo-bts-litecell15/misc/lc15bts_temp.c ./src/osmo-bts-litecell15/misc/lc15bts_swd.c ./src/osmo-bts-litecell15/misc/lc15bts_swd.h ./src/osmo-bts-litecell15/misc/lc15bts_misc.h ./src/osmo-bts-litecell15/misc/lc15bts_clock.c ./src/osmo-bts-litecell15/misc/lc15bts_temp.h ./src/osmo-bts-litecell15/misc/lc15bts_par.h ./tests/paging/paging_test.c ./tests/cipher/cipher_test.c ./tests/handover/handover_test.c ./tests/sysmobts/sysmobts_test.c ./tests/stubs.c ./tests/power/power_test.c ./tests/misc/misc_test.c ./tests/meas/sysmobts_fr_samples.h ./tests/meas/meas_test.c ./tests/tx_power/tx_power_test.c ./tests/agch/agch_test.c ./contrib/eeprom_reader.c + osmo-build-dep.sh libosmocore --disable-doxygen =============================== libosmocore =============================== + mkdir -p + cd + osmo-deps.sh libosmocore + project=libosmocore + branch=master + git branch -a + grep -c remotes/origin/master$ + [ x1 != x0 ] + branch=origin/master + test -d libosmocore + cd libosmocore + git fetch --tags origin >From git://git.osmocom.org/libosmocore 3a321473..a829b45c master -> origin/master * [new branch] neels/msc_fsm -> origin/neels/msc_fsm + git fetch origin + deps= osmo-clean-workspace.sh + chmod -R +w . + git checkout -f HEAD + git clean -dxf -e -e layer1-headers + [ -d ] + [ -d layer1-headers ] + git checkout -f origin/master Previous HEAD position was 3a321473... socket.c: osmo_sock_init: Several logic fixes and log improvements HEAD is now at a829b45c... use osmo_init_logging2() with proper talloc ctx + git rev-parse HEAD a829b45c8553765dfdd7201e1875a033a91d3a90 + cd libosmocore + mkdir -p + autoreconf --install --force autom4te: cannot create /tmp/arpNnKOu/am4t1919.21683: No space left on device at /usr/bin/autom4te line 969. aclocal: error: echo failed with exit status: 28 autoreconf: aclocal failed with exit status: 28 Build step 'Execute shell' marked build as failure [WARNINGS]Skipping publisher since build result is FAILURE From jenkins at lists.osmocom.org Fri Apr 6 06:49:50 2018 From: jenkins at lists.osmocom.org (jenkins at lists.osmocom.org) Date: Fri, 6 Apr 2018 06:49:50 +0000 (UTC) Subject: =?UTF-8?Q?Build_failed_in_Jenkins:_master-osmo-bts_=C2=BB_lc15, origin/?= =?UTF-8?Q?nrw/litecell15-next,default,osmocom-master-debian9_#468?= Message-ID: <12909634.63.1522997390571.JavaMail.jenkins@jenkins.osmocom.org> See Changes: [laforge] fix activation of osmocom-style dynamic PDCH as TCH/F or TCH/H [laforge] contrib: jenkins_bts_model: Fix bashism expr ------------------------------------------ [...truncated 169.63 KB...] cipher_test.c: In function ?main?: cipher_test.c:71:2: warning: implicit declaration of function ?osmo_init_logging2? [-Wimplicit-function-declaration] osmo_init_logging2(tall_bts_ctx, &bts_log_info); ^~~~~~~~~~~~~~~~~~ CCLD cipher_test make[3]: Leaving directory ' Making all in agch make[3]: Entering directory ' CC stubs.o CC agch_test.o agch_test.c: In function ?main?: agch_test.c:225:2: warning: implicit declaration of function ?osmo_init_logging2? [-Wimplicit-function-declaration] osmo_init_logging2(tall_bts_ctx, &bts_log_info); ^~~~~~~~~~~~~~~~~~ CCLD agch_test make[3]: Leaving directory ' Making all in misc make[3]: Entering directory ' CC misc_test.o CC stubs.o CCLD misc_test make[3]: Leaving directory ' Making all in handover make[3]: Entering directory ' CC handover_test.o CCLD handover_test make[3]: Leaving directory ' Making all in tx_power make[3]: Entering directory ' CC stubs.o CC tx_power_test.o CCLD tx_power_test make[3]: Leaving directory ' Making all in power make[3]: Entering directory ' CC power_test.o CC stubs.o CCLD power_test make[3]: Leaving directory ' Making all in meas make[3]: Entering directory ' CC meas_test.o CCLD meas_test make[3]: Leaving directory ' make[3]: Entering directory ' make[3]: Nothing to be done for 'all-am'. make[3]: Leaving directory ' make[2]: Leaving directory ' make[2]: Entering directory ' make[2]: Leaving directory ' make[1]: Leaving directory ' + make check make check-recursive make[1]: Entering directory ' Making check in include make[2]: Entering directory ' Making check in osmo-bts make[3]: Entering directory ' make[3]: Nothing to be done for 'check'. make[3]: Leaving directory ' make[3]: Entering directory ' make[3]: Nothing to be done for 'check-am'. make[3]: Leaving directory ' make[2]: Leaving directory ' Making check in src make[2]: Entering directory ' Making check in common make[3]: Entering directory ' make[3]: Nothing to be done for 'check'. make[3]: Leaving directory ' Making check in osmo-bts-virtual make[3]: Entering directory ' make[3]: Nothing to be done for 'check'. make[3]: Leaving directory ' Making check in osmo-bts-omldummy make[3]: Entering directory ' make[3]: Nothing to be done for 'check'. make[3]: Leaving directory ' Making check in osmo-bts-litecell15 make[3]: Entering directory ' make[3]: Nothing to be done for 'check'. make[3]: Leaving directory ' make[3]: Entering directory ' make[3]: Nothing to be done for 'check-am'. make[3]: Leaving directory ' make[2]: Leaving directory ' Making check in tests make[2]: Entering directory ' Making check in paging make[3]: Entering directory ' make[3]: Nothing to be done for 'check'. make[3]: Leaving directory ' Making check in cipher make[3]: Entering directory ' make[3]: Nothing to be done for 'check'. make[3]: Leaving directory ' Making check in agch make[3]: Entering directory ' make[3]: Nothing to be done for 'check'. make[3]: Leaving directory ' Making check in misc make[3]: Entering directory ' make[3]: Nothing to be done for 'check'. make[3]: Leaving directory ' Making check in handover make[3]: Entering directory ' make[3]: Nothing to be done for 'check'. make[3]: Leaving directory ' Making check in tx_power make[3]: Entering directory ' make[3]: Nothing to be done for 'check'. make[3]: Leaving directory ' Making check in power make[3]: Entering directory ' make[3]: Nothing to be done for 'check'. make[3]: Leaving directory ' Making check in meas make[3]: Entering directory ' make[3]: Nothing to be done for 'check'. make[3]: Leaving directory ' make[3]: Entering directory ' make check-local make[4]: Entering directory ' :;{ \ echo '# Signature of the current package.' && \ echo 'm4_define([AT_PACKAGE_NAME],' && \ echo ' [osmo-bts])' && \ echo 'm4_define([AT_PACKAGE_TARNAME],' && \ echo ' [osmo-bts])' && \ echo 'm4_define([AT_PACKAGE_VERSION],' && \ echo ' [0.7.0.174-e551])' && \ echo 'm4_define([AT_PACKAGE_STRING],' && \ echo ' [osmo-bts 0.7.0.174-e551])' && \ echo 'm4_define([AT_PACKAGE_BUGREPORT],' && \ echo ' [openbsc at lists.osmocom.org])'; \ echo 'm4_define([AT_PACKAGE_URL],' && \ echo ' [])'; \ } >'./package.m4' /bin/bash ../missing --run autom4te --language=autotest -I '.' -o testsuite.tmp testsuite.at mv testsuite.tmp testsuite /bin/bash './testsuite' ## ----------------------------------- ## ## osmo-bts 0.7.0.174-e551 test suite. ## ## ----------------------------------- ## Regression tests. 1: paging ok 2: agch ok 3: cipher ok 4: misc ok 5: handover ok 6: power ok 7: tx_power testsuite: WARNING: unable to parse test group: 7 ./testsuite: line 1601: echo: write error: No space left on device FAILED (testsuite.at:44) ./testsuite: line 1343: echo: write error: No space left on device mkdir: cannot create directory ': No space left on device mkdir: cannot create directory ': No space left on device ./testsuite: line 1519: echo: write error: No space left on device ./testsuite: line 1775: cd: : No such file or directory testsuite: WARNING: unable to parse test group: 8 ./testsuite: line 1559: cannot create temp file for here-document: No space left on device ./testsuite: line 1564: printf: write error: No space left on device ./testsuite: line 1568: : No such file or directory ./testsuite: line 1601: echo: write error: No space left on device FAILED () ./testsuite: line 1642: : No such file or directory ./testsuite: line 1341: : No such file or directory ## ------------- ## ## Test results. ## ## ------------- ## ERROR: All 8 tests were run, 2 failed unexpectedly. : line 911: cannot create temp file for here-document: No space left on device cat: write error: No space left on device ./testsuite: line 1955: echo: write error: No space left on device cat: : No such file or directory ./testsuite: line 1955: echo: write error: No space left on device ./testsuite: line 1957: echo: write error: No space left on device ./testsuite: line 1960: cannot create temp file for here-document: No space left on device sed: couldn't write 25 items to stdout: No space left on device ./testsuite: line 1964: echo: write error: No space left on device ./testsuite: line 1968: cannot create temp file for here-document: No space left on device Please send `tests/testsuite.log' and all information you think might help: To: Subject: [osmo-bts 0.7.0.174-e551] testsuite: 7 8 failed You may investigate any problem if you feel able to do so, in which case the test suite provides a good starting point. Its output may be found below `tests/testsuite.dir'. Makefile:671: recipe for target 'check-local' failed make[4]: *** [check-local] Error 1 make[4]: Leaving directory ' Makefile:531: recipe for target 'check-am' failed make[3]: *** [check-am] Error 2 make[3]: Leaving directory ' Makefile:383: recipe for target 'check-recursive' failed make[2]: *** [check-recursive] Error 1 make[2]: Leaving directory ' Makefile:435: recipe for target 'check-recursive' failed make[1]: *** [check-recursive] Error 1 make[1]: Leaving directory ' Makefile:726: recipe for target 'check' failed make: *** [check] Error 2 + cat-testlogs.sh ======================== ./tests/testsuite.dir/7/testsuite.log # -*- compilation -*- 7. testsuite.at:40: testing tx_power ... ./testsuite.at:44: $abs_top_builddir/tests/tx_power/tx_power_test --- expout 2018-04-06 06:49:31.031355246 +0000 +++ 2018-04-06 06:49:50.463075950 +0000 @@ -1,23 +0,0 @@ -Testing tx_power calculation for sysmoBTS 1002 -Testing tx_power calculation for sysmoBTS 1020 -Testing tx_power calculation for sysmoBTS 1100 -Testing tx_power calculation for sysmoBTS 2050 -Testing tx_power ramping for sysmoBTS 1020 -Testing tx_power ramping for sysmoBTS 1020 -CHANGE_POWER(-8000) -CHANGE_POWER(-6000) -CHANGE_POWER(-4000) -CHANGE_POWER(-2000) -CHANGE_POWER(0) -CHANGE_POWER(2000) -CHANGE_POWER(4000) -CHANGE_POWER(6000) -CHANGE_POWER(8000) -CHANGE_POWER(10000) -CHANGE_POWER(12000) -CHANGE_POWER(14000) -CHANGE_POWER(16000) -CHANGE_POWER(18000) -CHANGE_POWER(20000) -CHANGE_POWER(22000) -CHANGE_POWER(23000) ./testsuite: line 1281: echo: write error: No space left on device 7. testsuite.at:40: 7. tx_power (testsuite.at:40): FAILED (testsuite.at:44) Build step 'Execute shell' marked build as failure [WARNINGS]Skipping publisher since build result is FAILURE From gerrit-no-reply at lists.osmocom.org Fri Apr 6 06:50:16 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Fri, 6 Apr 2018 06:50:16 +0000 Subject: [MERGED] osmo-ci[master]: jenkins: add job osmo-gsm-tester_gerrit In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: jenkins: add job osmo-gsm-tester_gerrit ...................................................................... jenkins: add job osmo-gsm-tester_gerrit The job verifies the gerrit patchset. Change-Id: If661675528059bc8a95d39a6489a5a9381f52677 --- M jobs/osmo-gsm-tester-runner.yml A jobs/osmo-gsm-tester_run-gerrit.sh 2 files changed, 64 insertions(+), 0 deletions(-) Approvals: Pau Espin Pedrol: Looks good to me, but someone else must approve Neels Hofmeyr: Looks good to me, approved Harald Welte: Verified diff --git a/jobs/osmo-gsm-tester-runner.yml b/jobs/osmo-gsm-tester-runner.yml index 5221b9a..5e1ff92 100644 --- a/jobs/osmo-gsm-tester-runner.yml +++ b/jobs/osmo-gsm-tester-runner.yml @@ -6,6 +6,23 @@ - rnd jobs: - 'osmo-gsm-tester_run-{stage}' + - 'osmo-gsm-tester_gerrit' + +- scm: + name: osmo-gsm-tester-gerrit + scm: + - git: + url: ssh://jenkins at gerrit.osmocom.org:29418/osmo-gsm-tester + credentials-id: d5eda5e9-b59d-44ba-88d2-43473cb6e42d + branches: + - $GERRIT_BRANCH + refspec: $GERRIT_REFSPEC + wipe-workspace: false + skip-tag: true + basedir: osmo-gsm-tester + clean: + before: true + choosing-strategy: 'gerrit' # The repo must be used seperate to workaround the bug "Can not expand OSMO_GSM_TESTER_BRANCH". # The safe-guard check to not use un-defined variables seems to be broken. @@ -116,3 +133,36 @@ notify-every-unstable-build: true scm: - 'osmo-gsm-tester-repo' + +# gerrit job +- job: + name: 'osmo-gsm-tester_gerrit' + defaults: runner + scm: + - 'osmo-gsm-tester-gerrit' + triggers: + - gerrit: + server-name: 'gerrit.osmocom.org' + trigger-on: + - patchset-created-event: + exclude-no-code-change: true + - draft-published-event + projects: + - project-compare-type: 'PLAIN' + project-pattern: 'osmo-gsm-tester' + branches: + - branch-compare-type: 'ANT' + branch-pattern: '**' + builders: + - shell: | + # make sure no bin artifacts from a previous run remain + rm -f *.tgz *.md5 + - copy_artifact_all + - shell: !include-raw: osmo-gsm-tester_run-gerrit.sh + publishers: + - archive: + artifacts: '*-run.tgz, *-bin.tgz' + default-excludes: false + - junit: + results: 'trial-*/last_run/trial-*.xml' + allow-empty-results: true diff --git a/jobs/osmo-gsm-tester_run-gerrit.sh b/jobs/osmo-gsm-tester_run-gerrit.sh new file mode 100644 index 0000000..6d33490 --- /dev/null +++ b/jobs/osmo-gsm-tester_run-gerrit.sh @@ -0,0 +1,14 @@ +#!/bin/sh +set -e -x + +# On our hardware, we actually use the example configuration as-is. +export OSMO_GSM_TESTER_CONF="$PWD/osmo-gsm-tester/example" + +# debug: provoke a failure +#export OSMO_GSM_TESTER_OPTS="-s debug -t fail" + +unlink osmo-gsm-tester/example/resources.conf || true +ln -s resources.conf.prod osmo-gsm-tester/example/resources.conf + +export OSMO_GSM_TESTER_OPTS="-s sms:sysmo -s aoip_sms:sysmo -s gprs:sysmo" +./osmo-gsm-tester/contrib/jenkins-make-check-and-run.sh -- To view, visit https://gerrit.osmocom.org/7022 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: If661675528059bc8a95d39a6489a5a9381f52677 Gerrit-PatchSet: 9 Gerrit-Project: osmo-ci Gerrit-Branch: master Gerrit-Owner: lynxis lazus Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Neels Hofmeyr Gerrit-Reviewer: Pau Espin Pedrol Gerrit-Reviewer: lynxis lazus From gerrit-no-reply at lists.osmocom.org Fri Apr 6 06:50:16 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Fri, 6 Apr 2018 06:50:16 +0000 Subject: [MERGED] osmo-ci[master]: jenkins: add osmo-gsm-tester_run-{prod, rnd} In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: jenkins: add osmo-gsm-tester_run-{prod,rnd} ...................................................................... jenkins: add osmo-gsm-tester_run-{prod,rnd} Both jobs doing the actual test run on the prod or rnd tester. Change-Id: Ic1c4babc547f48402b0bcfaf38e2734e87e565f0 --- A jobs/osmo-gsm-tester-runner.yml A jobs/osmo-gsm-tester_run-prod.sh A jobs/osmo-gsm-tester_run-rnd.sh 3 files changed, 146 insertions(+), 0 deletions(-) Approvals: Pau Espin Pedrol: Looks good to me, but someone else must approve Neels Hofmeyr: Looks good to me, approved Harald Welte: Verified diff --git a/jobs/osmo-gsm-tester-runner.yml b/jobs/osmo-gsm-tester-runner.yml new file mode 100644 index 0000000..5221b9a --- /dev/null +++ b/jobs/osmo-gsm-tester-runner.yml @@ -0,0 +1,118 @@ +## run jobs +- project: + name: osmo-gsm-testers-runner + stage: + - prod + - rnd + jobs: + - 'osmo-gsm-tester_run-{stage}' + +# The repo must be used seperate to workaround the bug "Can not expand OSMO_GSM_TESTER_BRANCH". +# The safe-guard check to not use un-defined variables seems to be broken. +- scm: + name: osmo-gsm-tester-repo + scm: + - git: + url: git://git.osmocom.org/osmo-gsm-tester + branches: + - ${OSMO_GSM_TESTER_BRANCH} + wipe-workspace: false + skip-tag: true + basedir: osmo-gsm-tester + +- builder: + name: copy_artifact + builders: + - copyartifact: + project: '{repo}' + filter: '*.tgz, *.md5' + which-build: last-successful + stable: true + +# all artifact in one place +- builder: + name: copy_artifact_all + builders: + - copy_artifact: + repo: osmo-gsm-tester_build-osmo-bsc + - copy_artifact: + repo: osmo-gsm-tester_build-osmo-bts + - copy_artifact: + repo: osmo-gsm-tester_build-osmo-ggsn + - copy_artifact: + repo: osmo-gsm-tester_build-osmo-hlr + - copy_artifact: + repo: osmo-gsm-tester_build-osmo-mgw + - copy_artifact: + repo: osmo-gsm-tester_build-osmo-msc + - copy_artifact: + repo: osmo-gsm-tester_build-osmo-pcu + - copy_artifact: + repo: osmo-gsm-tester_build-osmo-sgsn + - copy_artifact: + repo: osmo-gsm-tester_build-osmo-trx + - copy_artifact: + repo: osmo-gsm-tester_build-osmo-nitb + - copy_artifact: + repo: osmo-gsm-tester_build-osmo-stp + - copy_artifact: + repo: osmo-gsm-tester_build-osmo-bts-sysmo + - copy_artifact: + repo: osmo-gsm-tester_build-osmo-pcu-sysmo + +- defaults: + name: runner + description: 'Run an actual GSM hardware test using the binaries from the osmo-gsm-tester_build* jobs' + node: 'osmo-gsm-tester-prod' + project-type: freestyle + properties: + - build-discarder: + num-to-keep: 60 + parameters: + - string: + name: "OSMO_GSM_TESTER_BRANCH" + default: "origin/master" + description: "Which branch/sha should be used for testing" + - string: + name: "OSMO_GSM_TESTER_OPTS" + default: "" + description: "pass additional command line options to osmo-gsm-tester.py, e.g. to select specific suites:scenarios. Default: leave empty." + +- job-template: + name: 'osmo-gsm-tester_run-{stage}' + defaults: runner + node: 'osmo-gsm-tester-{stage}' + triggers: + - timed: "H H/2 * * *" + - pollscm: + cron: "H/5 * * * *" + - reverse: + jobs: + - osmo-gsm-tester_build-osmo-bsc + - osmo-gsm-tester_build-osmo-bts + - osmo-gsm-tester_build-osmo-ggsn + - osmo-gsm-tester_build-osmo-hlr + - osmo-gsm-tester_build-osmo-mgw + - osmo-gsm-tester_build-osmo-msc + - osmo-gsm-tester_build-osmo-pcu + - osmo-gsm-tester_build-osmo-sgsn + - osmo-gsm-tester_build-osmo-trx + - osmo-gsm-tester_build-osmo-nitb + - osmo-gsm-tester_build-osmo-stp + - osmo-gsm-tester_build-osmo-bts-sysmo + - osmo-gsm-tester_build-osmo-pcu-sysmo + builders: + - copy_artifact_all + - shell: !include-raw: osmo-gsm-tester_run-{stage}.sh + publishers: + - archive: + artifacts: '*-run.tgz, *-bin.tgz' + default-excludes: false + - junit: + results: 'trial-*/last_run/trial-*.xml' + allow-empty-results: true + - email: + recipients: 'pespin at sysmocom.de' + notify-every-unstable-build: true + scm: + - 'osmo-gsm-tester-repo' diff --git a/jobs/osmo-gsm-tester_run-prod.sh b/jobs/osmo-gsm-tester_run-prod.sh new file mode 100644 index 0000000..bcfe8ed --- /dev/null +++ b/jobs/osmo-gsm-tester_run-prod.sh @@ -0,0 +1,14 @@ +#!/bin/sh +set -e -x + +# On our hardware, we actually use the example configuration as-is. +export OSMO_GSM_TESTER_CONF="$PWD/osmo-gsm-tester/example" + +# debug: provoke a failure +#export OSMO_GSM_TESTER_OPTS="-s debug -t fail" + +unlink osmo-gsm-tester/example/resources.conf || true +ln -s resources.conf.prod osmo-gsm-tester/example/resources.conf + +PATH="$PWD/osmo-gsm-tester/src:$PATH" \ + ./osmo-gsm-tester/contrib/jenkins-run.sh diff --git a/jobs/osmo-gsm-tester_run-rnd.sh b/jobs/osmo-gsm-tester_run-rnd.sh new file mode 100644 index 0000000..1f8a58a --- /dev/null +++ b/jobs/osmo-gsm-tester_run-rnd.sh @@ -0,0 +1,14 @@ +#!/bin/sh +set -e -x + +# On our hardware, we actually use the example configuration as-is. +export OSMO_GSM_TESTER_CONF="$PWD/osmo-gsm-tester/example" + +# debug: provoke a failure +#export OSMO_GSM_TESTER_OPTS="-s debug -t fail" + +unlink osmo-gsm-tester/example/resources.conf || true +ln -s resources.conf.rnd osmo-gsm-tester/example/resources.conf + +PATH="$PWD/osmo-gsm-tester/src:$PATH" \ + ./osmo-gsm-tester/contrib/jenkins-run.sh -- To view, visit https://gerrit.osmocom.org/7021 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: Ic1c4babc547f48402b0bcfaf38e2734e87e565f0 Gerrit-PatchSet: 8 Gerrit-Project: osmo-ci Gerrit-Branch: master Gerrit-Owner: lynxis lazus Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Neels Hofmeyr Gerrit-Reviewer: Pau Espin Pedrol Gerrit-Reviewer: lynxis lazus From jenkins at lists.osmocom.org Fri Apr 6 06:50:17 2018 From: jenkins at lists.osmocom.org (jenkins at lists.osmocom.org) Date: Fri, 6 Apr 2018 06:50:17 +0000 (UTC) Subject: =?UTF-8?Q?Build_failed_in_Jenkins:_master-libosmo-netif_=C2=BB_a1=3Ddef?= =?UTF-8?Q?ault,a2=3Ddefault,a3=3Ddefault,osmocom-master-debian9_#422?= Message-ID: <670781481.64.1522997417524.JavaMail.jenkins@jenkins.osmocom.org> See ------------------------------------------ Started by upstream project "master-libosmo-netif" build number 422 originally caused by: Started by upstream project "master-libosmo-abis" build number 261 originally caused by: Started by upstream project "master-libosmocore" build number 193 originally caused by: Started by an SCM change Building remotely on build2-deb9build-ansible (ttcn3 osmo-gsm-tester-build osmocom-gerrit-debian9 osmocom-master-debian9 coverity) in workspace java.io.IOException: Failed to mkdirs: at hudson.FilePath.mkdirs(FilePath.java:1170) at hudson.model.AbstractProject.checkout(AbstractProject.java:1200) at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:574) at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:86) at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:499) at hudson.model.Run.execute(Run.java:1724) at hudson.matrix.MatrixRun.run(MatrixRun.java:146) at hudson.model.ResourceController.execute(ResourceController.java:97) at hudson.model.Executor.run(Executor.java:429) Retrying after 10 seconds java.io.IOException: Failed to mkdirs: at hudson.FilePath.mkdirs(FilePath.java:1170) at hudson.model.AbstractProject.checkout(AbstractProject.java:1200) at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:574) at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:86) at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:499) at hudson.model.Run.execute(Run.java:1724) at hudson.matrix.MatrixRun.run(MatrixRun.java:146) at hudson.model.ResourceController.execute(ResourceController.java:97) at hudson.model.Executor.run(Executor.java:429) Retrying after 10 seconds java.io.IOException: Failed to mkdirs: at hudson.FilePath.mkdirs(FilePath.java:1170) at hudson.model.AbstractProject.checkout(AbstractProject.java:1200) at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:574) at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:86) at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:499) at hudson.model.Run.execute(Run.java:1724) at hudson.matrix.MatrixRun.run(MatrixRun.java:146) at hudson.model.ResourceController.execute(ResourceController.java:97) at hudson.model.Executor.run(Executor.java:429) Retrying after 10 seconds java.io.IOException: Failed to mkdirs: at hudson.FilePath.mkdirs(FilePath.java:1170) at hudson.model.AbstractProject.checkout(AbstractProject.java:1200) at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:574) at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:86) at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:499) at hudson.model.Run.execute(Run.java:1724) at hudson.matrix.MatrixRun.run(MatrixRun.java:146) at hudson.model.ResourceController.execute(ResourceController.java:97) at hudson.model.Executor.run(Executor.java:429) [WARNINGS]Skipping publisher since build result is FAILURE From gerrit-no-reply at lists.osmocom.org Fri Apr 6 06:50:17 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Fri, 6 Apr 2018 06:50:17 +0000 Subject: [MERGED] osmo-ci[master]: jenkins: add job osmo-gsm-tester_build-trigger-all In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: jenkins: add job osmo-gsm-tester_build-trigger-all ...................................................................... jenkins: add job osmo-gsm-tester_build-trigger-all osmo-gsm-tester_build-trigger-all triggers a new build of all osmo-gsm-tester build jobs. Change-Id: I8dcf2a6fa2991cb73b4807f8a10d251f3dca77dd --- A jobs/osmo-gsm-tester-trigger.yml 1 file changed, 29 insertions(+), 0 deletions(-) Approvals: Pau Espin Pedrol: Looks good to me, but someone else must approve Neels Hofmeyr: Looks good to me, approved Harald Welte: Verified diff --git a/jobs/osmo-gsm-tester-trigger.yml b/jobs/osmo-gsm-tester-trigger.yml new file mode 100644 index 0000000..aa24a4e --- /dev/null +++ b/jobs/osmo-gsm-tester-trigger.yml @@ -0,0 +1,29 @@ +# Only contains osmo-gsm-tester_build-trigger-all +# Manually kick off all osmo-gsm-tester_build-osmo-* builds at once. +- project: + name: osmo-gsm-tester-trigger + jobs: + - 'osmo-gsm-tester_build-trigger-all' + +- job: + name: 'osmo-gsm-tester_build-trigger-all' + description: 'Manually kick off all osmo-gsm-tester_build-osmo-* builds at once.' + project-type: freestyle + node: osmo-gsm-tester-build + publishers: + # hopefully the trigger will support lists in the future + - trigger: + project: > + osmo-gsm-tester_build-osmo-bsc, + osmo-gsm-tester_build-osmo-bts, + osmo-gsm-tester_build-osmo-ggsn, + osmo-gsm-tester_build-osmo-hlr, + osmo-gsm-tester_build-osmo-mgw, + osmo-gsm-tester_build-osmo-msc, + osmo-gsm-tester_build-osmo-pcu, + osmo-gsm-tester_build-osmo-sgsn, + osmo-gsm-tester_build-osmo-trx, + osmo-gsm-tester_build-osmo-nitb, + osmo-gsm-tester_build-osmo-stp, + osmo-gsm-tester_build-osmo-bts-sysmo, + osmo-gsm-tester_build-osmo-pcu-sysmo -- To view, visit https://gerrit.osmocom.org/7020 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: I8dcf2a6fa2991cb73b4807f8a10d251f3dca77dd Gerrit-PatchSet: 7 Gerrit-Project: osmo-ci Gerrit-Branch: master Gerrit-Owner: lynxis lazus Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Neels Hofmeyr Gerrit-Reviewer: Pau Espin Pedrol Gerrit-Reviewer: lynxis lazus From jenkins at lists.osmocom.org Fri Apr 6 06:50:17 2018 From: jenkins at lists.osmocom.org (jenkins at lists.osmocom.org) Date: Fri, 6 Apr 2018 06:50:17 +0000 (UTC) Subject: =?UTF-8?Q?Build_failed_in_Jenkins:_master-osmo-bts_=C2=BB_sysmo, sup?= =?UTF-8?Q?erfemto=5Fv3.0.1pre,default,osmocom-master-debian9_#468?= In-Reply-To: <1293027774.41.1522975739246.JavaMail.jenkins@jenkins.osmocom.org> References: <1293027774.41.1522975739246.JavaMail.jenkins@jenkins.osmocom.org> Message-ID: <1483875036.65.1522997417565.JavaMail.jenkins@jenkins.osmocom.org> See ------------------------------------------ [...truncated 1.33 KB...] ERROR: Error fetching remote repo 'origin' hudson.plugins.git.GitException: Failed to fetch from git://git.osmocom.org/osmo-bts at hudson.plugins.git.GitSCM.fetchFrom(GitSCM.java:862) at hudson.plugins.git.GitSCM.retrieveChanges(GitSCM.java:1129) at hudson.plugins.git.GitSCM.checkout(GitSCM.java:1160) at hudson.scm.SCM.checkout(SCM.java:495) at hudson.model.AbstractProject.checkout(AbstractProject.java:1202) at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:574) at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:86) at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:499) at hudson.model.Run.execute(Run.java:1724) at hudson.matrix.MatrixRun.run(MatrixRun.java:146) at hudson.model.ResourceController.execute(ResourceController.java:97) at hudson.model.Executor.run(Executor.java:429) Caused by: hudson.plugins.git.GitException: Command "git config remote.origin.url git://git.osmocom.org/osmo-bts" returned status code 4: stdout: stderr: error: failed to write new configuration file at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1996) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1964) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1960) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommand(CliGitAPIImpl.java:1597) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommand(CliGitAPIImpl.java:1609) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.setRemoteUrl(CliGitAPIImpl.java:1243) at hudson.plugins.git.GitAPI.setRemoteUrl(GitAPI.java:160) at sun.reflect.GeneratedMethodAccessor26.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at hudson.remoting.RemoteInvocationHandler$RPCRequest.perform(RemoteInvocationHandler.java:922) at hudson.remoting.RemoteInvocationHandler$RPCRequest.call(RemoteInvocationHandler.java:896) at hudson.remoting.RemoteInvocationHandler$RPCRequest.call(RemoteInvocationHandler.java:853) at hudson.remoting.UserRequest.perform(UserRequest.java:207) at hudson.remoting.UserRequest.perform(UserRequest.java:53) at hudson.remoting.Request$2.run(Request.java:358) at hudson.remoting.InterceptingExecutorService$1.call(InterceptingExecutorService.java:72) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:748) Suppressed: hudson.remoting.Channel$CallSiteStackTrace: Remote call to build2-deb9build-ansible at hudson.remoting.Channel.attachCallSiteStackTrace(Channel.java:1693) at hudson.remoting.UserResponse.retrieve(UserRequest.java:310) at hudson.remoting.Channel.call(Channel.java:908) at hudson.remoting.RemoteInvocationHandler.invoke(RemoteInvocationHandler.java:281) at com.sun.proxy.$Proxy56.setRemoteUrl(Unknown Source) at org.jenkinsci.plugins.gitclient.RemoteGitImpl.setRemoteUrl(RemoteGitImpl.java:295) at hudson.plugins.git.GitSCM.fetchFrom(GitSCM.java:850) at hudson.plugins.git.GitSCM.retrieveChanges(GitSCM.java:1129) at hudson.plugins.git.GitSCM.checkout(GitSCM.java:1160) at hudson.scm.SCM.checkout(SCM.java:495) at hudson.model.AbstractProject.checkout(AbstractProject.java:1202) at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:574) at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:86) at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:499) at hudson.model.Run.execute(Run.java:1724) at hudson.matrix.MatrixRun.run(MatrixRun.java:146) at hudson.model.ResourceController.execute(ResourceController.java:97) at hudson.model.Executor.run(Executor.java:429) ERROR: Error fetching remote repo 'origin' Retrying after 10 seconds > git rev-parse --is-inside-work-tree # timeout=10 Fetching changes from the remote Git repository > git config remote.origin.url git://git.osmocom.org/osmo-bts # timeout=10 ERROR: Error fetching remote repo 'origin' hudson.plugins.git.GitException: Failed to fetch from git://git.osmocom.org/osmo-bts at hudson.plugins.git.GitSCM.fetchFrom(GitSCM.java:862) at hudson.plugins.git.GitSCM.retrieveChanges(GitSCM.java:1129) at hudson.plugins.git.GitSCM.checkout(GitSCM.java:1160) at hudson.scm.SCM.checkout(SCM.java:495) at hudson.model.AbstractProject.checkout(AbstractProject.java:1202) at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:574) at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:86) at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:499) at hudson.model.Run.execute(Run.java:1724) at hudson.matrix.MatrixRun.run(MatrixRun.java:146) at hudson.model.ResourceController.execute(ResourceController.java:97) at hudson.model.Executor.run(Executor.java:429) Caused by: hudson.plugins.git.GitException: Command "git config remote.origin.url git://git.osmocom.org/osmo-bts" returned status code 4: stdout: stderr: error: failed to write new configuration file at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1996) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1964) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1960) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommand(CliGitAPIImpl.java:1597) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommand(CliGitAPIImpl.java:1609) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.setRemoteUrl(CliGitAPIImpl.java:1243) at hudson.plugins.git.GitAPI.setRemoteUrl(GitAPI.java:160) at sun.reflect.GeneratedMethodAccessor26.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at hudson.remoting.RemoteInvocationHandler$RPCRequest.perform(RemoteInvocationHandler.java:922) at hudson.remoting.RemoteInvocationHandler$RPCRequest.call(RemoteInvocationHandler.java:896) at hudson.remoting.RemoteInvocationHandler$RPCRequest.call(RemoteInvocationHandler.java:853) at hudson.remoting.UserRequest.perform(UserRequest.java:207) at hudson.remoting.UserRequest.perform(UserRequest.java:53) at hudson.remoting.Request$2.run(Request.java:358) at hudson.remoting.InterceptingExecutorService$1.call(InterceptingExecutorService.java:72) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:748) Suppressed: hudson.remoting.Channel$CallSiteStackTrace: Remote call to build2-deb9build-ansible at hudson.remoting.Channel.attachCallSiteStackTrace(Channel.java:1693) at hudson.remoting.UserResponse.retrieve(UserRequest.java:310) at hudson.remoting.Channel.call(Channel.java:908) at hudson.remoting.RemoteInvocationHandler.invoke(RemoteInvocationHandler.java:281) at com.sun.proxy.$Proxy56.setRemoteUrl(Unknown Source) at org.jenkinsci.plugins.gitclient.RemoteGitImpl.setRemoteUrl(RemoteGitImpl.java:295) at hudson.plugins.git.GitSCM.fetchFrom(GitSCM.java:850) at hudson.plugins.git.GitSCM.retrieveChanges(GitSCM.java:1129) at hudson.plugins.git.GitSCM.checkout(GitSCM.java:1160) at hudson.scm.SCM.checkout(SCM.java:495) at hudson.model.AbstractProject.checkout(AbstractProject.java:1202) at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:574) at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:86) at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:499) at hudson.model.Run.execute(Run.java:1724) at hudson.matrix.MatrixRun.run(MatrixRun.java:146) at hudson.model.ResourceController.execute(ResourceController.java:97) at hudson.model.Executor.run(Executor.java:429) ERROR: Error fetching remote repo 'origin' Retrying after 10 seconds > git rev-parse --is-inside-work-tree # timeout=10 Fetching changes from the remote Git repository > git config remote.origin.url git://git.osmocom.org/osmo-bts # timeout=10 ERROR: Error fetching remote repo 'origin' hudson.plugins.git.GitException: Failed to fetch from git://git.osmocom.org/osmo-bts at hudson.plugins.git.GitSCM.fetchFrom(GitSCM.java:862) at hudson.plugins.git.GitSCM.retrieveChanges(GitSCM.java:1129) at hudson.plugins.git.GitSCM.checkout(GitSCM.java:1160) at hudson.scm.SCM.checkout(SCM.java:495) at hudson.model.AbstractProject.checkout(AbstractProject.java:1202) at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:574) at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:86) at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:499) at hudson.model.Run.execute(Run.java:1724) at hudson.matrix.MatrixRun.run(MatrixRun.java:146) at hudson.model.ResourceController.execute(ResourceController.java:97) at hudson.model.Executor.run(Executor.java:429) Caused by: hudson.plugins.git.GitException: Command "git config remote.origin.url git://git.osmocom.org/osmo-bts" returned status code 4: stdout: stderr: error: failed to write new configuration file at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1996) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1964) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1960) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommand(CliGitAPIImpl.java:1597) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommand(CliGitAPIImpl.java:1609) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.setRemoteUrl(CliGitAPIImpl.java:1243) at hudson.plugins.git.GitAPI.setRemoteUrl(GitAPI.java:160) at sun.reflect.GeneratedMethodAccessor26.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at hudson.remoting.RemoteInvocationHandler$RPCRequest.perform(RemoteInvocationHandler.java:922) at hudson.remoting.RemoteInvocationHandler$RPCRequest.call(RemoteInvocationHandler.java:896) at hudson.remoting.RemoteInvocationHandler$RPCRequest.call(RemoteInvocationHandler.java:853) at hudson.remoting.UserRequest.perform(UserRequest.java:207) at hudson.remoting.UserRequest.perform(UserRequest.java:53) at hudson.remoting.Request$2.run(Request.java:358) at hudson.remoting.InterceptingExecutorService$1.call(InterceptingExecutorService.java:72) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:748) Suppressed: hudson.remoting.Channel$CallSiteStackTrace: Remote call to build2-deb9build-ansible at hudson.remoting.Channel.attachCallSiteStackTrace(Channel.java:1693) at hudson.remoting.UserResponse.retrieve(UserRequest.java:310) at hudson.remoting.Channel.call(Channel.java:908) at hudson.remoting.RemoteInvocationHandler.invoke(RemoteInvocationHandler.java:281) at com.sun.proxy.$Proxy56.setRemoteUrl(Unknown Source) at org.jenkinsci.plugins.gitclient.RemoteGitImpl.setRemoteUrl(RemoteGitImpl.java:295) at hudson.plugins.git.GitSCM.fetchFrom(GitSCM.java:850) at hudson.plugins.git.GitSCM.retrieveChanges(GitSCM.java:1129) at hudson.plugins.git.GitSCM.checkout(GitSCM.java:1160) at hudson.scm.SCM.checkout(SCM.java:495) at hudson.model.AbstractProject.checkout(AbstractProject.java:1202) at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:574) at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:86) at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:499) at hudson.model.Run.execute(Run.java:1724) at hudson.matrix.MatrixRun.run(MatrixRun.java:146) at hudson.model.ResourceController.execute(ResourceController.java:97) at hudson.model.Executor.run(Executor.java:429) ERROR: Error fetching remote repo 'origin' Retrying after 10 seconds > git rev-parse --is-inside-work-tree # timeout=10 Fetching changes from the remote Git repository > git config remote.origin.url git://git.osmocom.org/osmo-bts # timeout=10 ERROR: Error fetching remote repo 'origin' hudson.plugins.git.GitException: Failed to fetch from git://git.osmocom.org/osmo-bts at hudson.plugins.git.GitSCM.fetchFrom(GitSCM.java:862) at hudson.plugins.git.GitSCM.retrieveChanges(GitSCM.java:1129) at hudson.plugins.git.GitSCM.checkout(GitSCM.java:1160) at hudson.scm.SCM.checkout(SCM.java:495) at hudson.model.AbstractProject.checkout(AbstractProject.java:1202) at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:574) at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:86) at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:499) at hudson.model.Run.execute(Run.java:1724) at hudson.matrix.MatrixRun.run(MatrixRun.java:146) at hudson.model.ResourceController.execute(ResourceController.java:97) at hudson.model.Executor.run(Executor.java:429) Caused by: hudson.plugins.git.GitException: Command "git config remote.origin.url git://git.osmocom.org/osmo-bts" returned status code 4: stdout: stderr: error: failed to write new configuration file at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1996) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1964) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1960) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommand(CliGitAPIImpl.java:1597) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommand(CliGitAPIImpl.java:1609) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.setRemoteUrl(CliGitAPIImpl.java:1243) at hudson.plugins.git.GitAPI.setRemoteUrl(GitAPI.java:160) at sun.reflect.GeneratedMethodAccessor26.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at hudson.remoting.RemoteInvocationHandler$RPCRequest.perform(RemoteInvocationHandler.java:922) at hudson.remoting.RemoteInvocationHandler$RPCRequest.call(RemoteInvocationHandler.java:896) at hudson.remoting.RemoteInvocationHandler$RPCRequest.call(RemoteInvocationHandler.java:853) at hudson.remoting.UserRequest.perform(UserRequest.java:207) at hudson.remoting.UserRequest.perform(UserRequest.java:53) at hudson.remoting.Request$2.run(Request.java:358) at hudson.remoting.InterceptingExecutorService$1.call(InterceptingExecutorService.java:72) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:748) Suppressed: hudson.remoting.Channel$CallSiteStackTrace: Remote call to build2-deb9build-ansible at hudson.remoting.Channel.attachCallSiteStackTrace(Channel.java:1693) at hudson.remoting.UserResponse.retrieve(UserRequest.java:310) at hudson.remoting.Channel.call(Channel.java:908) at hudson.remoting.RemoteInvocationHandler.invoke(RemoteInvocationHandler.java:281) at com.sun.proxy.$Proxy56.setRemoteUrl(Unknown Source) at org.jenkinsci.plugins.gitclient.RemoteGitImpl.setRemoteUrl(RemoteGitImpl.java:295) at hudson.plugins.git.GitSCM.fetchFrom(GitSCM.java:850) at hudson.plugins.git.GitSCM.retrieveChanges(GitSCM.java:1129) at hudson.plugins.git.GitSCM.checkout(GitSCM.java:1160) at hudson.scm.SCM.checkout(SCM.java:495) at hudson.model.AbstractProject.checkout(AbstractProject.java:1202) at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:574) at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:86) at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:499) at hudson.model.Run.execute(Run.java:1724) at hudson.matrix.MatrixRun.run(MatrixRun.java:146) at hudson.model.ResourceController.execute(ResourceController.java:97) at hudson.model.Executor.run(Executor.java:429) ERROR: Error fetching remote repo 'origin' [WARNINGS]Skipping publisher since build result is FAILURE From gerrit-no-reply at lists.osmocom.org Fri Apr 6 06:50:17 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Fri, 6 Apr 2018 06:50:17 +0000 Subject: [MERGED] osmo-ci[master]: jenkins: add osmo-gsm-tester-build jobs In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: jenkins: add osmo-gsm-tester-build jobs ...................................................................... jenkins: add osmo-gsm-tester-build jobs The build jobs building all osmocom components which will be used by the osmo-gsm-tester. A .tgz archive will be used as artefact which is copied later by the osmo-gsm-tester test run. Change-Id: Ic49c94e9e6639e43f6ae14b868bc826af3ce2085 --- A jobs/osmo-gsm-tester-builder.yml 1 file changed, 99 insertions(+), 0 deletions(-) Approvals: Neels Hofmeyr: Looks good to me, approved Harald Welte: Verified diff --git a/jobs/osmo-gsm-tester-builder.yml b/jobs/osmo-gsm-tester-builder.yml new file mode 100644 index 0000000..8f3ce61 --- /dev/null +++ b/jobs/osmo-gsm-tester-builder.yml @@ -0,0 +1,99 @@ +--- +# All job in here builds the binaries +# which will be used by the runner jobs +# +- project: + name: osmo-gsm-tester-builder + + repo: + - osmo-bsc + - osmo-bts + - osmo-ggsn + - osmo-hlr + - osmo-mgw + - osmo-msc + - osmo-pcu + - osmo-sgsn + - osmo-trx + - osmo-nitb: + triggered-by: master-openbsc + - osmo-stp: + triggered-by: master-libosmo-sccp + - osmo-bts-sysmo: + triggered-by: master-osmo-bts + - osmo-pcu-sysmo: + triggered-by: master-osmo-pcu + triggered-by: 'master-{repo}' + + jobs: + - 'osmo-gsm-tester_build-{repo}' + +- parameter: + name: add_param_build_branch + parameters: + - string: + name: "{name}" + default: "" + description: "Default: leave empty. Branch to build from, in the form my/branch or origin/my/branch (do not prepend 'refs/heads/')" + +- job-template: + name: 'osmo-gsm-tester_build-{repo}' + project-type: freestyle + node: osmo-gsm-tester-build + builders: + - shell: | + set -e -x + ./osmo-gsm-tester/contrib/jenkins-build-{repo}.sh + triggers: + - reverse: + jobs: '{triggered-by}' + publishers: + - archive: + artifacts: '*.tgz, *.md5' + only-if-success: 'true' + default-excludes: false + properties: + - build-discarder: + num-to-keep: 20 + parameters: + - string: + name: "OSMO_GSM_TESTER_BRANCH" + default: "origin/master" + description: "Which branch/sha should be used for testing" + - add_param_build_branch: + name: OSMO_GSM_TESTER_BUILD_libosmo-abis + - add_param_build_branch: + name: OSMO_GSM_TESTER_BUILD_libosmocore + - add_param_build_branch: + name: OSMO_GSM_TESTER_BUILD_libosmo-netif + - add_param_build_branch: + name: OSMO_GSM_TESTER_BUILD_libosmo_sccp + - add_param_build_branch: + name: OSMO_GSM_TESTER_BUILD_octphy_2g_headers + - add_param_build_branch: + name: OSMO_GSM_TESTER_BUILD_osmo_bts + - add_param_build_branch: + name: OSMO_GSM_TESTER_BUILD_osmo_mgw + - add_param_build_branch: + name: OSMO_GSM_TESTER_BUILD_osmo-mgw + - add_param_build_branch: + name: OSMO_GSM_TESTER_BUILD_osmo_msc + - add_param_build_branch: + name: OSMO_GSM_TESTER_BUILD_osmo_pcu + - add_param_build_branch: + name: OSMO_GSM_TESTER_BUILD_osmo_trx + scm: + - osmo-gsm-tester-repo + +# The repo must be used seperate to workaround the bug "Can not expand OSMO_GSM_TESTER_BRANCH". +# The safe-guard check to not use un-defined variables seems to be broken. +- scm: + name: osmo-gsm-tester-repo + scm: + - git: + url: git://git.osmocom.org/osmo-gsm-tester + branches: + - ${OSMO_GSM_TESTER_BRANCH} + wipe-workspace: false + skip-tag: true + basedir: osmo-gsm-tester -- To view, visit https://gerrit.osmocom.org/7019 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: Ic49c94e9e6639e43f6ae14b868bc826af3ce2085 Gerrit-PatchSet: 6 Gerrit-Project: osmo-ci Gerrit-Branch: master Gerrit-Owner: lynxis lazus Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Neels Hofmeyr Gerrit-Reviewer: Pau Espin Pedrol Gerrit-Reviewer: lynxis lazus From jenkins at lists.osmocom.org Fri Apr 6 06:50:21 2018 From: jenkins at lists.osmocom.org (jenkins at lists.osmocom.org) Date: Fri, 6 Apr 2018 06:50:21 +0000 (UTC) Subject: =?UTF-8?Q?Build_failed_in_Jenkins:_master-osmo-sgsn_=C2=BB_--enable-?= =?UTF-8?Q?iu,a2=3Ddefault,a3=3Ddefault,osmocom-master-debian9_#2156?= Message-ID: <1674100882.66.1522997421389.JavaMail.jenkins@jenkins.osmocom.org> See ------------------------------------------ [...truncated 2.60 KB...] ERROR: Error fetching remote repo 'origin' hudson.plugins.git.GitException: Failed to fetch from git://git.osmocom.org/osmo-sgsn at hudson.plugins.git.GitSCM.fetchFrom(GitSCM.java:862) at hudson.plugins.git.GitSCM.retrieveChanges(GitSCM.java:1129) at hudson.plugins.git.GitSCM.checkout(GitSCM.java:1160) at hudson.scm.SCM.checkout(SCM.java:495) at hudson.model.AbstractProject.checkout(AbstractProject.java:1202) at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:574) at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:86) at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:499) at hudson.model.Run.execute(Run.java:1724) at hudson.matrix.MatrixRun.run(MatrixRun.java:146) at hudson.model.ResourceController.execute(ResourceController.java:97) at hudson.model.Executor.run(Executor.java:429) Caused by: hudson.plugins.git.GitException: Command "git config remote.origin.url git://git.osmocom.org/osmo-sgsn" returned status code 4: stdout: stderr: error: failed to write new configuration file at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1996) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1964) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1960) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommand(CliGitAPIImpl.java:1597) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommand(CliGitAPIImpl.java:1609) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.setRemoteUrl(CliGitAPIImpl.java:1243) at hudson.plugins.git.GitAPI.setRemoteUrl(GitAPI.java:160) at sun.reflect.GeneratedMethodAccessor26.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at hudson.remoting.RemoteInvocationHandler$RPCRequest.perform(RemoteInvocationHandler.java:922) at hudson.remoting.RemoteInvocationHandler$RPCRequest.call(RemoteInvocationHandler.java:896) at hudson.remoting.RemoteInvocationHandler$RPCRequest.call(RemoteInvocationHandler.java:853) at hudson.remoting.UserRequest.perform(UserRequest.java:207) at hudson.remoting.UserRequest.perform(UserRequest.java:53) at hudson.remoting.Request$2.run(Request.java:358) at hudson.remoting.InterceptingExecutorService$1.call(InterceptingExecutorService.java:72) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:748) Suppressed: hudson.remoting.Channel$CallSiteStackTrace: Remote call to build2-deb9build-ansible at hudson.remoting.Channel.attachCallSiteStackTrace(Channel.java:1693) at hudson.remoting.UserResponse.retrieve(UserRequest.java:310) at hudson.remoting.Channel.call(Channel.java:908) at hudson.remoting.RemoteInvocationHandler.invoke(RemoteInvocationHandler.java:281) at com.sun.proxy.$Proxy56.setRemoteUrl(Unknown Source) at org.jenkinsci.plugins.gitclient.RemoteGitImpl.setRemoteUrl(RemoteGitImpl.java:295) at hudson.plugins.git.GitSCM.fetchFrom(GitSCM.java:850) at hudson.plugins.git.GitSCM.retrieveChanges(GitSCM.java:1129) at hudson.plugins.git.GitSCM.checkout(GitSCM.java:1160) at hudson.scm.SCM.checkout(SCM.java:495) at hudson.model.AbstractProject.checkout(AbstractProject.java:1202) at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:574) at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:86) at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:499) at hudson.model.Run.execute(Run.java:1724) at hudson.matrix.MatrixRun.run(MatrixRun.java:146) at hudson.model.ResourceController.execute(ResourceController.java:97) at hudson.model.Executor.run(Executor.java:429) ERROR: Error fetching remote repo 'origin' Retrying after 10 seconds > git rev-parse --is-inside-work-tree # timeout=10 Fetching changes from the remote Git repository > git config remote.origin.url git://git.osmocom.org/osmo-sgsn # timeout=10 ERROR: Error fetching remote repo 'origin' hudson.plugins.git.GitException: Failed to fetch from git://git.osmocom.org/osmo-sgsn at hudson.plugins.git.GitSCM.fetchFrom(GitSCM.java:862) at hudson.plugins.git.GitSCM.retrieveChanges(GitSCM.java:1129) at hudson.plugins.git.GitSCM.checkout(GitSCM.java:1160) at hudson.scm.SCM.checkout(SCM.java:495) at hudson.model.AbstractProject.checkout(AbstractProject.java:1202) at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:574) at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:86) at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:499) at hudson.model.Run.execute(Run.java:1724) at hudson.matrix.MatrixRun.run(MatrixRun.java:146) at hudson.model.ResourceController.execute(ResourceController.java:97) at hudson.model.Executor.run(Executor.java:429) Caused by: hudson.plugins.git.GitException: Command "git config remote.origin.url git://git.osmocom.org/osmo-sgsn" returned status code 4: stdout: stderr: error: failed to write new configuration file at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1996) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1964) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1960) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommand(CliGitAPIImpl.java:1597) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommand(CliGitAPIImpl.java:1609) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.setRemoteUrl(CliGitAPIImpl.java:1243) at hudson.plugins.git.GitAPI.setRemoteUrl(GitAPI.java:160) at sun.reflect.GeneratedMethodAccessor26.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at hudson.remoting.RemoteInvocationHandler$RPCRequest.perform(RemoteInvocationHandler.java:922) at hudson.remoting.RemoteInvocationHandler$RPCRequest.call(RemoteInvocationHandler.java:896) at hudson.remoting.RemoteInvocationHandler$RPCRequest.call(RemoteInvocationHandler.java:853) at hudson.remoting.UserRequest.perform(UserRequest.java:207) at hudson.remoting.UserRequest.perform(UserRequest.java:53) at hudson.remoting.Request$2.run(Request.java:358) at hudson.remoting.InterceptingExecutorService$1.call(InterceptingExecutorService.java:72) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:748) Suppressed: hudson.remoting.Channel$CallSiteStackTrace: Remote call to build2-deb9build-ansible at hudson.remoting.Channel.attachCallSiteStackTrace(Channel.java:1693) at hudson.remoting.UserResponse.retrieve(UserRequest.java:310) at hudson.remoting.Channel.call(Channel.java:908) at hudson.remoting.RemoteInvocationHandler.invoke(RemoteInvocationHandler.java:281) at com.sun.proxy.$Proxy56.setRemoteUrl(Unknown Source) at org.jenkinsci.plugins.gitclient.RemoteGitImpl.setRemoteUrl(RemoteGitImpl.java:295) at hudson.plugins.git.GitSCM.fetchFrom(GitSCM.java:850) at hudson.plugins.git.GitSCM.retrieveChanges(GitSCM.java:1129) at hudson.plugins.git.GitSCM.checkout(GitSCM.java:1160) at hudson.scm.SCM.checkout(SCM.java:495) at hudson.model.AbstractProject.checkout(AbstractProject.java:1202) at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:574) at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:86) at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:499) at hudson.model.Run.execute(Run.java:1724) at hudson.matrix.MatrixRun.run(MatrixRun.java:146) at hudson.model.ResourceController.execute(ResourceController.java:97) at hudson.model.Executor.run(Executor.java:429) ERROR: Error fetching remote repo 'origin' Retrying after 10 seconds > git rev-parse --is-inside-work-tree # timeout=10 Fetching changes from the remote Git repository > git config remote.origin.url git://git.osmocom.org/osmo-sgsn # timeout=10 ERROR: Error fetching remote repo 'origin' hudson.plugins.git.GitException: Failed to fetch from git://git.osmocom.org/osmo-sgsn at hudson.plugins.git.GitSCM.fetchFrom(GitSCM.java:862) at hudson.plugins.git.GitSCM.retrieveChanges(GitSCM.java:1129) at hudson.plugins.git.GitSCM.checkout(GitSCM.java:1160) at hudson.scm.SCM.checkout(SCM.java:495) at hudson.model.AbstractProject.checkout(AbstractProject.java:1202) at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:574) at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:86) at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:499) at hudson.model.Run.execute(Run.java:1724) at hudson.matrix.MatrixRun.run(MatrixRun.java:146) at hudson.model.ResourceController.execute(ResourceController.java:97) at hudson.model.Executor.run(Executor.java:429) Caused by: hudson.plugins.git.GitException: Command "git config remote.origin.url git://git.osmocom.org/osmo-sgsn" returned status code 4: stdout: stderr: error: failed to write new configuration file at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1996) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1964) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1960) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommand(CliGitAPIImpl.java:1597) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommand(CliGitAPIImpl.java:1609) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.setRemoteUrl(CliGitAPIImpl.java:1243) at hudson.plugins.git.GitAPI.setRemoteUrl(GitAPI.java:160) at sun.reflect.GeneratedMethodAccessor26.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at hudson.remoting.RemoteInvocationHandler$RPCRequest.perform(RemoteInvocationHandler.java:922) at hudson.remoting.RemoteInvocationHandler$RPCRequest.call(RemoteInvocationHandler.java:896) at hudson.remoting.RemoteInvocationHandler$RPCRequest.call(RemoteInvocationHandler.java:853) at hudson.remoting.UserRequest.perform(UserRequest.java:207) at hudson.remoting.UserRequest.perform(UserRequest.java:53) at hudson.remoting.Request$2.run(Request.java:358) at hudson.remoting.InterceptingExecutorService$1.call(InterceptingExecutorService.java:72) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:748) Suppressed: hudson.remoting.Channel$CallSiteStackTrace: Remote call to build2-deb9build-ansible at hudson.remoting.Channel.attachCallSiteStackTrace(Channel.java:1693) at hudson.remoting.UserResponse.retrieve(UserRequest.java:310) at hudson.remoting.Channel.call(Channel.java:908) at hudson.remoting.RemoteInvocationHandler.invoke(RemoteInvocationHandler.java:281) at com.sun.proxy.$Proxy56.setRemoteUrl(Unknown Source) at org.jenkinsci.plugins.gitclient.RemoteGitImpl.setRemoteUrl(RemoteGitImpl.java:295) at hudson.plugins.git.GitSCM.fetchFrom(GitSCM.java:850) at hudson.plugins.git.GitSCM.retrieveChanges(GitSCM.java:1129) at hudson.plugins.git.GitSCM.checkout(GitSCM.java:1160) at hudson.scm.SCM.checkout(SCM.java:495) at hudson.model.AbstractProject.checkout(AbstractProject.java:1202) at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:574) at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:86) at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:499) at hudson.model.Run.execute(Run.java:1724) at hudson.matrix.MatrixRun.run(MatrixRun.java:146) at hudson.model.ResourceController.execute(ResourceController.java:97) at hudson.model.Executor.run(Executor.java:429) ERROR: Error fetching remote repo 'origin' Retrying after 10 seconds > git rev-parse --is-inside-work-tree # timeout=10 Fetching changes from the remote Git repository > git config remote.origin.url git://git.osmocom.org/osmo-sgsn # timeout=10 ERROR: Error fetching remote repo 'origin' hudson.plugins.git.GitException: Failed to fetch from git://git.osmocom.org/osmo-sgsn at hudson.plugins.git.GitSCM.fetchFrom(GitSCM.java:862) at hudson.plugins.git.GitSCM.retrieveChanges(GitSCM.java:1129) at hudson.plugins.git.GitSCM.checkout(GitSCM.java:1160) at hudson.scm.SCM.checkout(SCM.java:495) at hudson.model.AbstractProject.checkout(AbstractProject.java:1202) at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:574) at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:86) at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:499) at hudson.model.Run.execute(Run.java:1724) at hudson.matrix.MatrixRun.run(MatrixRun.java:146) at hudson.model.ResourceController.execute(ResourceController.java:97) at hudson.model.Executor.run(Executor.java:429) Caused by: hudson.plugins.git.GitException: Command "git config remote.origin.url git://git.osmocom.org/osmo-sgsn" returned status code 4: stdout: stderr: error: failed to write new configuration file at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1996) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1964) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1960) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommand(CliGitAPIImpl.java:1597) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommand(CliGitAPIImpl.java:1609) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.setRemoteUrl(CliGitAPIImpl.java:1243) at hudson.plugins.git.GitAPI.setRemoteUrl(GitAPI.java:160) at sun.reflect.GeneratedMethodAccessor26.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at hudson.remoting.RemoteInvocationHandler$RPCRequest.perform(RemoteInvocationHandler.java:922) at hudson.remoting.RemoteInvocationHandler$RPCRequest.call(RemoteInvocationHandler.java:896) at hudson.remoting.RemoteInvocationHandler$RPCRequest.call(RemoteInvocationHandler.java:853) at hudson.remoting.UserRequest.perform(UserRequest.java:207) at hudson.remoting.UserRequest.perform(UserRequest.java:53) at hudson.remoting.Request$2.run(Request.java:358) at hudson.remoting.InterceptingExecutorService$1.call(InterceptingExecutorService.java:72) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:748) Suppressed: hudson.remoting.Channel$CallSiteStackTrace: Remote call to build2-deb9build-ansible at hudson.remoting.Channel.attachCallSiteStackTrace(Channel.java:1693) at hudson.remoting.UserResponse.retrieve(UserRequest.java:310) at hudson.remoting.Channel.call(Channel.java:908) at hudson.remoting.RemoteInvocationHandler.invoke(RemoteInvocationHandler.java:281) at com.sun.proxy.$Proxy56.setRemoteUrl(Unknown Source) at org.jenkinsci.plugins.gitclient.RemoteGitImpl.setRemoteUrl(RemoteGitImpl.java:295) at hudson.plugins.git.GitSCM.fetchFrom(GitSCM.java:850) at hudson.plugins.git.GitSCM.retrieveChanges(GitSCM.java:1129) at hudson.plugins.git.GitSCM.checkout(GitSCM.java:1160) at hudson.scm.SCM.checkout(SCM.java:495) at hudson.model.AbstractProject.checkout(AbstractProject.java:1202) at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:574) at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:86) at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:499) at hudson.model.Run.execute(Run.java:1724) at hudson.matrix.MatrixRun.run(MatrixRun.java:146) at hudson.model.ResourceController.execute(ResourceController.java:97) at hudson.model.Executor.run(Executor.java:429) ERROR: Error fetching remote repo 'origin' [WARNINGS]Skipping publisher since build result is FAILURE From jenkins at lists.osmocom.org Fri Apr 6 06:50:48 2018 From: jenkins at lists.osmocom.org (jenkins at lists.osmocom.org) Date: Fri, 6 Apr 2018 06:50:48 +0000 (UTC) Subject: =?UTF-8?Q?Build_failed_in_Jenkins:_master-osmo-pcu_=C2=BB_origin/nrw?= =?UTF-8?Q?/litecell15-next,osmocom-master-debian9,lc15,True_#355?= Message-ID: <1877620889.68.1522997448368.JavaMail.jenkins@jenkins.osmocom.org> See ------------------------------------------ [...truncated 1.98 KB...] ERROR: Error fetching remote repo 'origin' hudson.plugins.git.GitException: Failed to fetch from git://git.osmocom.org/osmo-pcu at hudson.plugins.git.GitSCM.fetchFrom(GitSCM.java:862) at hudson.plugins.git.GitSCM.retrieveChanges(GitSCM.java:1129) at hudson.plugins.git.GitSCM.checkout(GitSCM.java:1160) at hudson.scm.SCM.checkout(SCM.java:495) at hudson.model.AbstractProject.checkout(AbstractProject.java:1202) at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:574) at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:86) at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:499) at hudson.model.Run.execute(Run.java:1724) at hudson.matrix.MatrixRun.run(MatrixRun.java:146) at hudson.model.ResourceController.execute(ResourceController.java:97) at hudson.model.Executor.run(Executor.java:429) Caused by: hudson.plugins.git.GitException: Command "git config remote.origin.url git://git.osmocom.org/osmo-pcu" returned status code 4: stdout: stderr: error: failed to write new configuration file at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1996) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1964) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1960) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommand(CliGitAPIImpl.java:1597) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommand(CliGitAPIImpl.java:1609) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.setRemoteUrl(CliGitAPIImpl.java:1243) at hudson.plugins.git.GitAPI.setRemoteUrl(GitAPI.java:160) at sun.reflect.GeneratedMethodAccessor26.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at hudson.remoting.RemoteInvocationHandler$RPCRequest.perform(RemoteInvocationHandler.java:922) at hudson.remoting.RemoteInvocationHandler$RPCRequest.call(RemoteInvocationHandler.java:896) at hudson.remoting.RemoteInvocationHandler$RPCRequest.call(RemoteInvocationHandler.java:853) at hudson.remoting.UserRequest.perform(UserRequest.java:207) at hudson.remoting.UserRequest.perform(UserRequest.java:53) at hudson.remoting.Request$2.run(Request.java:358) at hudson.remoting.InterceptingExecutorService$1.call(InterceptingExecutorService.java:72) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:748) Suppressed: hudson.remoting.Channel$CallSiteStackTrace: Remote call to build2-deb9build-ansible at hudson.remoting.Channel.attachCallSiteStackTrace(Channel.java:1693) at hudson.remoting.UserResponse.retrieve(UserRequest.java:310) at hudson.remoting.Channel.call(Channel.java:908) at hudson.remoting.RemoteInvocationHandler.invoke(RemoteInvocationHandler.java:281) at com.sun.proxy.$Proxy56.setRemoteUrl(Unknown Source) at org.jenkinsci.plugins.gitclient.RemoteGitImpl.setRemoteUrl(RemoteGitImpl.java:295) at hudson.plugins.git.GitSCM.fetchFrom(GitSCM.java:850) at hudson.plugins.git.GitSCM.retrieveChanges(GitSCM.java:1129) at hudson.plugins.git.GitSCM.checkout(GitSCM.java:1160) at hudson.scm.SCM.checkout(SCM.java:495) at hudson.model.AbstractProject.checkout(AbstractProject.java:1202) at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:574) at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:86) at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:499) at hudson.model.Run.execute(Run.java:1724) at hudson.matrix.MatrixRun.run(MatrixRun.java:146) at hudson.model.ResourceController.execute(ResourceController.java:97) at hudson.model.Executor.run(Executor.java:429) ERROR: Error fetching remote repo 'origin' Retrying after 10 seconds > git rev-parse --is-inside-work-tree # timeout=10 Fetching changes from the remote Git repository > git config remote.origin.url git://git.osmocom.org/osmo-pcu # timeout=10 ERROR: Error fetching remote repo 'origin' hudson.plugins.git.GitException: Failed to fetch from git://git.osmocom.org/osmo-pcu at hudson.plugins.git.GitSCM.fetchFrom(GitSCM.java:862) at hudson.plugins.git.GitSCM.retrieveChanges(GitSCM.java:1129) at hudson.plugins.git.GitSCM.checkout(GitSCM.java:1160) at hudson.scm.SCM.checkout(SCM.java:495) at hudson.model.AbstractProject.checkout(AbstractProject.java:1202) at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:574) at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:86) at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:499) at hudson.model.Run.execute(Run.java:1724) at hudson.matrix.MatrixRun.run(MatrixRun.java:146) at hudson.model.ResourceController.execute(ResourceController.java:97) at hudson.model.Executor.run(Executor.java:429) Caused by: hudson.plugins.git.GitException: Command "git config remote.origin.url git://git.osmocom.org/osmo-pcu" returned status code 4: stdout: stderr: error: failed to write new configuration file at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1996) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1964) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1960) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommand(CliGitAPIImpl.java:1597) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommand(CliGitAPIImpl.java:1609) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.setRemoteUrl(CliGitAPIImpl.java:1243) at hudson.plugins.git.GitAPI.setRemoteUrl(GitAPI.java:160) at sun.reflect.GeneratedMethodAccessor26.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at hudson.remoting.RemoteInvocationHandler$RPCRequest.perform(RemoteInvocationHandler.java:922) at hudson.remoting.RemoteInvocationHandler$RPCRequest.call(RemoteInvocationHandler.java:896) at hudson.remoting.RemoteInvocationHandler$RPCRequest.call(RemoteInvocationHandler.java:853) at hudson.remoting.UserRequest.perform(UserRequest.java:207) at hudson.remoting.UserRequest.perform(UserRequest.java:53) at hudson.remoting.Request$2.run(Request.java:358) at hudson.remoting.InterceptingExecutorService$1.call(InterceptingExecutorService.java:72) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:748) Suppressed: hudson.remoting.Channel$CallSiteStackTrace: Remote call to build2-deb9build-ansible at hudson.remoting.Channel.attachCallSiteStackTrace(Channel.java:1693) at hudson.remoting.UserResponse.retrieve(UserRequest.java:310) at hudson.remoting.Channel.call(Channel.java:908) at hudson.remoting.RemoteInvocationHandler.invoke(RemoteInvocationHandler.java:281) at com.sun.proxy.$Proxy56.setRemoteUrl(Unknown Source) at org.jenkinsci.plugins.gitclient.RemoteGitImpl.setRemoteUrl(RemoteGitImpl.java:295) at hudson.plugins.git.GitSCM.fetchFrom(GitSCM.java:850) at hudson.plugins.git.GitSCM.retrieveChanges(GitSCM.java:1129) at hudson.plugins.git.GitSCM.checkout(GitSCM.java:1160) at hudson.scm.SCM.checkout(SCM.java:495) at hudson.model.AbstractProject.checkout(AbstractProject.java:1202) at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:574) at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:86) at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:499) at hudson.model.Run.execute(Run.java:1724) at hudson.matrix.MatrixRun.run(MatrixRun.java:146) at hudson.model.ResourceController.execute(ResourceController.java:97) at hudson.model.Executor.run(Executor.java:429) ERROR: Error fetching remote repo 'origin' Retrying after 10 seconds > git rev-parse --is-inside-work-tree # timeout=10 Fetching changes from the remote Git repository > git config remote.origin.url git://git.osmocom.org/osmo-pcu # timeout=10 ERROR: Error fetching remote repo 'origin' hudson.plugins.git.GitException: Failed to fetch from git://git.osmocom.org/osmo-pcu at hudson.plugins.git.GitSCM.fetchFrom(GitSCM.java:862) at hudson.plugins.git.GitSCM.retrieveChanges(GitSCM.java:1129) at hudson.plugins.git.GitSCM.checkout(GitSCM.java:1160) at hudson.scm.SCM.checkout(SCM.java:495) at hudson.model.AbstractProject.checkout(AbstractProject.java:1202) at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:574) at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:86) at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:499) at hudson.model.Run.execute(Run.java:1724) at hudson.matrix.MatrixRun.run(MatrixRun.java:146) at hudson.model.ResourceController.execute(ResourceController.java:97) at hudson.model.Executor.run(Executor.java:429) Caused by: hudson.plugins.git.GitException: Command "git config remote.origin.url git://git.osmocom.org/osmo-pcu" returned status code 4: stdout: stderr: error: failed to write new configuration file at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1996) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1964) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1960) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommand(CliGitAPIImpl.java:1597) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommand(CliGitAPIImpl.java:1609) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.setRemoteUrl(CliGitAPIImpl.java:1243) at hudson.plugins.git.GitAPI.setRemoteUrl(GitAPI.java:160) at sun.reflect.GeneratedMethodAccessor26.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at hudson.remoting.RemoteInvocationHandler$RPCRequest.perform(RemoteInvocationHandler.java:922) at hudson.remoting.RemoteInvocationHandler$RPCRequest.call(RemoteInvocationHandler.java:896) at hudson.remoting.RemoteInvocationHandler$RPCRequest.call(RemoteInvocationHandler.java:853) at hudson.remoting.UserRequest.perform(UserRequest.java:207) at hudson.remoting.UserRequest.perform(UserRequest.java:53) at hudson.remoting.Request$2.run(Request.java:358) at hudson.remoting.InterceptingExecutorService$1.call(InterceptingExecutorService.java:72) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:748) Suppressed: hudson.remoting.Channel$CallSiteStackTrace: Remote call to build2-deb9build-ansible at hudson.remoting.Channel.attachCallSiteStackTrace(Channel.java:1693) at hudson.remoting.UserResponse.retrieve(UserRequest.java:310) at hudson.remoting.Channel.call(Channel.java:908) at hudson.remoting.RemoteInvocationHandler.invoke(RemoteInvocationHandler.java:281) at com.sun.proxy.$Proxy56.setRemoteUrl(Unknown Source) at org.jenkinsci.plugins.gitclient.RemoteGitImpl.setRemoteUrl(RemoteGitImpl.java:295) at hudson.plugins.git.GitSCM.fetchFrom(GitSCM.java:850) at hudson.plugins.git.GitSCM.retrieveChanges(GitSCM.java:1129) at hudson.plugins.git.GitSCM.checkout(GitSCM.java:1160) at hudson.scm.SCM.checkout(SCM.java:495) at hudson.model.AbstractProject.checkout(AbstractProject.java:1202) at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:574) at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:86) at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:499) at hudson.model.Run.execute(Run.java:1724) at hudson.matrix.MatrixRun.run(MatrixRun.java:146) at hudson.model.ResourceController.execute(ResourceController.java:97) at hudson.model.Executor.run(Executor.java:429) ERROR: Error fetching remote repo 'origin' Retrying after 10 seconds > git rev-parse --is-inside-work-tree # timeout=10 Fetching changes from the remote Git repository > git config remote.origin.url git://git.osmocom.org/osmo-pcu # timeout=10 ERROR: Error fetching remote repo 'origin' hudson.plugins.git.GitException: Failed to fetch from git://git.osmocom.org/osmo-pcu at hudson.plugins.git.GitSCM.fetchFrom(GitSCM.java:862) at hudson.plugins.git.GitSCM.retrieveChanges(GitSCM.java:1129) at hudson.plugins.git.GitSCM.checkout(GitSCM.java:1160) at hudson.scm.SCM.checkout(SCM.java:495) at hudson.model.AbstractProject.checkout(AbstractProject.java:1202) at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:574) at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:86) at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:499) at hudson.model.Run.execute(Run.java:1724) at hudson.matrix.MatrixRun.run(MatrixRun.java:146) at hudson.model.ResourceController.execute(ResourceController.java:97) at hudson.model.Executor.run(Executor.java:429) Caused by: hudson.plugins.git.GitException: Command "git config remote.origin.url git://git.osmocom.org/osmo-pcu" returned status code 4: stdout: stderr: error: failed to write new configuration file at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1996) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1964) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1960) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommand(CliGitAPIImpl.java:1597) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommand(CliGitAPIImpl.java:1609) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.setRemoteUrl(CliGitAPIImpl.java:1243) at hudson.plugins.git.GitAPI.setRemoteUrl(GitAPI.java:160) at sun.reflect.GeneratedMethodAccessor26.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at hudson.remoting.RemoteInvocationHandler$RPCRequest.perform(RemoteInvocationHandler.java:922) at hudson.remoting.RemoteInvocationHandler$RPCRequest.call(RemoteInvocationHandler.java:896) at hudson.remoting.RemoteInvocationHandler$RPCRequest.call(RemoteInvocationHandler.java:853) at hudson.remoting.UserRequest.perform(UserRequest.java:207) at hudson.remoting.UserRequest.perform(UserRequest.java:53) at hudson.remoting.Request$2.run(Request.java:358) at hudson.remoting.InterceptingExecutorService$1.call(InterceptingExecutorService.java:72) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:748) Suppressed: hudson.remoting.Channel$CallSiteStackTrace: Remote call to build2-deb9build-ansible at hudson.remoting.Channel.attachCallSiteStackTrace(Channel.java:1693) at hudson.remoting.UserResponse.retrieve(UserRequest.java:310) at hudson.remoting.Channel.call(Channel.java:908) at hudson.remoting.RemoteInvocationHandler.invoke(RemoteInvocationHandler.java:281) at com.sun.proxy.$Proxy56.setRemoteUrl(Unknown Source) at org.jenkinsci.plugins.gitclient.RemoteGitImpl.setRemoteUrl(RemoteGitImpl.java:295) at hudson.plugins.git.GitSCM.fetchFrom(GitSCM.java:850) at hudson.plugins.git.GitSCM.retrieveChanges(GitSCM.java:1129) at hudson.plugins.git.GitSCM.checkout(GitSCM.java:1160) at hudson.scm.SCM.checkout(SCM.java:495) at hudson.model.AbstractProject.checkout(AbstractProject.java:1202) at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:574) at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:86) at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:499) at hudson.model.Run.execute(Run.java:1724) at hudson.matrix.MatrixRun.run(MatrixRun.java:146) at hudson.model.ResourceController.execute(ResourceController.java:97) at hudson.model.Executor.run(Executor.java:429) ERROR: Error fetching remote repo 'origin' [WARNINGS]Skipping publisher since build result is FAILURE From jenkins at lists.osmocom.org Fri Apr 6 06:50:48 2018 From: jenkins at lists.osmocom.org (jenkins at lists.osmocom.org) Date: Fri, 6 Apr 2018 06:50:48 +0000 (UTC) Subject: =?UTF-8?Q?Build_failed_in_Jenkins:_master-osmo-sgsn_=C2=BB_--disable?= =?UTF-8?Q?-iu,a2=3Ddefault,a3=3Ddefault,osmocom-master-debian9_#2156?= Message-ID: <1025233406.67.1522997448367.JavaMail.jenkins@jenkins.osmocom.org> See ------------------------------------------ [...truncated 2.60 KB...] ERROR: Error fetching remote repo 'origin' hudson.plugins.git.GitException: Failed to fetch from git://git.osmocom.org/osmo-sgsn at hudson.plugins.git.GitSCM.fetchFrom(GitSCM.java:862) at hudson.plugins.git.GitSCM.retrieveChanges(GitSCM.java:1129) at hudson.plugins.git.GitSCM.checkout(GitSCM.java:1160) at hudson.scm.SCM.checkout(SCM.java:495) at hudson.model.AbstractProject.checkout(AbstractProject.java:1202) at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:574) at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:86) at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:499) at hudson.model.Run.execute(Run.java:1724) at hudson.matrix.MatrixRun.run(MatrixRun.java:146) at hudson.model.ResourceController.execute(ResourceController.java:97) at hudson.model.Executor.run(Executor.java:429) Caused by: hudson.plugins.git.GitException: Command "git config remote.origin.url git://git.osmocom.org/osmo-sgsn" returned status code 4: stdout: stderr: error: failed to write new configuration file at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1996) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1964) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1960) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommand(CliGitAPIImpl.java:1597) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommand(CliGitAPIImpl.java:1609) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.setRemoteUrl(CliGitAPIImpl.java:1243) at hudson.plugins.git.GitAPI.setRemoteUrl(GitAPI.java:160) at sun.reflect.GeneratedMethodAccessor26.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at hudson.remoting.RemoteInvocationHandler$RPCRequest.perform(RemoteInvocationHandler.java:922) at hudson.remoting.RemoteInvocationHandler$RPCRequest.call(RemoteInvocationHandler.java:896) at hudson.remoting.RemoteInvocationHandler$RPCRequest.call(RemoteInvocationHandler.java:853) at hudson.remoting.UserRequest.perform(UserRequest.java:207) at hudson.remoting.UserRequest.perform(UserRequest.java:53) at hudson.remoting.Request$2.run(Request.java:358) at hudson.remoting.InterceptingExecutorService$1.call(InterceptingExecutorService.java:72) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:748) Suppressed: hudson.remoting.Channel$CallSiteStackTrace: Remote call to build2-deb9build-ansible at hudson.remoting.Channel.attachCallSiteStackTrace(Channel.java:1693) at hudson.remoting.UserResponse.retrieve(UserRequest.java:310) at hudson.remoting.Channel.call(Channel.java:908) at hudson.remoting.RemoteInvocationHandler.invoke(RemoteInvocationHandler.java:281) at com.sun.proxy.$Proxy56.setRemoteUrl(Unknown Source) at org.jenkinsci.plugins.gitclient.RemoteGitImpl.setRemoteUrl(RemoteGitImpl.java:295) at hudson.plugins.git.GitSCM.fetchFrom(GitSCM.java:850) at hudson.plugins.git.GitSCM.retrieveChanges(GitSCM.java:1129) at hudson.plugins.git.GitSCM.checkout(GitSCM.java:1160) at hudson.scm.SCM.checkout(SCM.java:495) at hudson.model.AbstractProject.checkout(AbstractProject.java:1202) at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:574) at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:86) at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:499) at hudson.model.Run.execute(Run.java:1724) at hudson.matrix.MatrixRun.run(MatrixRun.java:146) at hudson.model.ResourceController.execute(ResourceController.java:97) at hudson.model.Executor.run(Executor.java:429) ERROR: Error fetching remote repo 'origin' Retrying after 10 seconds > git rev-parse --is-inside-work-tree # timeout=10 Fetching changes from the remote Git repository > git config remote.origin.url git://git.osmocom.org/osmo-sgsn # timeout=10 ERROR: Error fetching remote repo 'origin' hudson.plugins.git.GitException: Failed to fetch from git://git.osmocom.org/osmo-sgsn at hudson.plugins.git.GitSCM.fetchFrom(GitSCM.java:862) at hudson.plugins.git.GitSCM.retrieveChanges(GitSCM.java:1129) at hudson.plugins.git.GitSCM.checkout(GitSCM.java:1160) at hudson.scm.SCM.checkout(SCM.java:495) at hudson.model.AbstractProject.checkout(AbstractProject.java:1202) at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:574) at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:86) at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:499) at hudson.model.Run.execute(Run.java:1724) at hudson.matrix.MatrixRun.run(MatrixRun.java:146) at hudson.model.ResourceController.execute(ResourceController.java:97) at hudson.model.Executor.run(Executor.java:429) Caused by: hudson.plugins.git.GitException: Command "git config remote.origin.url git://git.osmocom.org/osmo-sgsn" returned status code 4: stdout: stderr: error: failed to write new configuration file at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1996) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1964) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1960) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommand(CliGitAPIImpl.java:1597) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommand(CliGitAPIImpl.java:1609) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.setRemoteUrl(CliGitAPIImpl.java:1243) at hudson.plugins.git.GitAPI.setRemoteUrl(GitAPI.java:160) at sun.reflect.GeneratedMethodAccessor26.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at hudson.remoting.RemoteInvocationHandler$RPCRequest.perform(RemoteInvocationHandler.java:922) at hudson.remoting.RemoteInvocationHandler$RPCRequest.call(RemoteInvocationHandler.java:896) at hudson.remoting.RemoteInvocationHandler$RPCRequest.call(RemoteInvocationHandler.java:853) at hudson.remoting.UserRequest.perform(UserRequest.java:207) at hudson.remoting.UserRequest.perform(UserRequest.java:53) at hudson.remoting.Request$2.run(Request.java:358) at hudson.remoting.InterceptingExecutorService$1.call(InterceptingExecutorService.java:72) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:748) Suppressed: hudson.remoting.Channel$CallSiteStackTrace: Remote call to build2-deb9build-ansible at hudson.remoting.Channel.attachCallSiteStackTrace(Channel.java:1693) at hudson.remoting.UserResponse.retrieve(UserRequest.java:310) at hudson.remoting.Channel.call(Channel.java:908) at hudson.remoting.RemoteInvocationHandler.invoke(RemoteInvocationHandler.java:281) at com.sun.proxy.$Proxy56.setRemoteUrl(Unknown Source) at org.jenkinsci.plugins.gitclient.RemoteGitImpl.setRemoteUrl(RemoteGitImpl.java:295) at hudson.plugins.git.GitSCM.fetchFrom(GitSCM.java:850) at hudson.plugins.git.GitSCM.retrieveChanges(GitSCM.java:1129) at hudson.plugins.git.GitSCM.checkout(GitSCM.java:1160) at hudson.scm.SCM.checkout(SCM.java:495) at hudson.model.AbstractProject.checkout(AbstractProject.java:1202) at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:574) at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:86) at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:499) at hudson.model.Run.execute(Run.java:1724) at hudson.matrix.MatrixRun.run(MatrixRun.java:146) at hudson.model.ResourceController.execute(ResourceController.java:97) at hudson.model.Executor.run(Executor.java:429) ERROR: Error fetching remote repo 'origin' Retrying after 10 seconds > git rev-parse --is-inside-work-tree # timeout=10 Fetching changes from the remote Git repository > git config remote.origin.url git://git.osmocom.org/osmo-sgsn # timeout=10 ERROR: Error fetching remote repo 'origin' hudson.plugins.git.GitException: Failed to fetch from git://git.osmocom.org/osmo-sgsn at hudson.plugins.git.GitSCM.fetchFrom(GitSCM.java:862) at hudson.plugins.git.GitSCM.retrieveChanges(GitSCM.java:1129) at hudson.plugins.git.GitSCM.checkout(GitSCM.java:1160) at hudson.scm.SCM.checkout(SCM.java:495) at hudson.model.AbstractProject.checkout(AbstractProject.java:1202) at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:574) at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:86) at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:499) at hudson.model.Run.execute(Run.java:1724) at hudson.matrix.MatrixRun.run(MatrixRun.java:146) at hudson.model.ResourceController.execute(ResourceController.java:97) at hudson.model.Executor.run(Executor.java:429) Caused by: hudson.plugins.git.GitException: Command "git config remote.origin.url git://git.osmocom.org/osmo-sgsn" returned status code 4: stdout: stderr: error: failed to write new configuration file at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1996) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1964) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1960) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommand(CliGitAPIImpl.java:1597) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommand(CliGitAPIImpl.java:1609) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.setRemoteUrl(CliGitAPIImpl.java:1243) at hudson.plugins.git.GitAPI.setRemoteUrl(GitAPI.java:160) at sun.reflect.GeneratedMethodAccessor26.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at hudson.remoting.RemoteInvocationHandler$RPCRequest.perform(RemoteInvocationHandler.java:922) at hudson.remoting.RemoteInvocationHandler$RPCRequest.call(RemoteInvocationHandler.java:896) at hudson.remoting.RemoteInvocationHandler$RPCRequest.call(RemoteInvocationHandler.java:853) at hudson.remoting.UserRequest.perform(UserRequest.java:207) at hudson.remoting.UserRequest.perform(UserRequest.java:53) at hudson.remoting.Request$2.run(Request.java:358) at hudson.remoting.InterceptingExecutorService$1.call(InterceptingExecutorService.java:72) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:748) Suppressed: hudson.remoting.Channel$CallSiteStackTrace: Remote call to build2-deb9build-ansible at hudson.remoting.Channel.attachCallSiteStackTrace(Channel.java:1693) at hudson.remoting.UserResponse.retrieve(UserRequest.java:310) at hudson.remoting.Channel.call(Channel.java:908) at hudson.remoting.RemoteInvocationHandler.invoke(RemoteInvocationHandler.java:281) at com.sun.proxy.$Proxy56.setRemoteUrl(Unknown Source) at org.jenkinsci.plugins.gitclient.RemoteGitImpl.setRemoteUrl(RemoteGitImpl.java:295) at hudson.plugins.git.GitSCM.fetchFrom(GitSCM.java:850) at hudson.plugins.git.GitSCM.retrieveChanges(GitSCM.java:1129) at hudson.plugins.git.GitSCM.checkout(GitSCM.java:1160) at hudson.scm.SCM.checkout(SCM.java:495) at hudson.model.AbstractProject.checkout(AbstractProject.java:1202) at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:574) at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:86) at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:499) at hudson.model.Run.execute(Run.java:1724) at hudson.matrix.MatrixRun.run(MatrixRun.java:146) at hudson.model.ResourceController.execute(ResourceController.java:97) at hudson.model.Executor.run(Executor.java:429) ERROR: Error fetching remote repo 'origin' Retrying after 10 seconds > git rev-parse --is-inside-work-tree # timeout=10 Fetching changes from the remote Git repository > git config remote.origin.url git://git.osmocom.org/osmo-sgsn # timeout=10 ERROR: Error fetching remote repo 'origin' hudson.plugins.git.GitException: Failed to fetch from git://git.osmocom.org/osmo-sgsn at hudson.plugins.git.GitSCM.fetchFrom(GitSCM.java:862) at hudson.plugins.git.GitSCM.retrieveChanges(GitSCM.java:1129) at hudson.plugins.git.GitSCM.checkout(GitSCM.java:1160) at hudson.scm.SCM.checkout(SCM.java:495) at hudson.model.AbstractProject.checkout(AbstractProject.java:1202) at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:574) at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:86) at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:499) at hudson.model.Run.execute(Run.java:1724) at hudson.matrix.MatrixRun.run(MatrixRun.java:146) at hudson.model.ResourceController.execute(ResourceController.java:97) at hudson.model.Executor.run(Executor.java:429) Caused by: hudson.plugins.git.GitException: Command "git config remote.origin.url git://git.osmocom.org/osmo-sgsn" returned status code 4: stdout: stderr: error: failed to write new configuration file at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1996) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1964) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1960) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommand(CliGitAPIImpl.java:1597) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommand(CliGitAPIImpl.java:1609) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.setRemoteUrl(CliGitAPIImpl.java:1243) at hudson.plugins.git.GitAPI.setRemoteUrl(GitAPI.java:160) at sun.reflect.GeneratedMethodAccessor26.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at hudson.remoting.RemoteInvocationHandler$RPCRequest.perform(RemoteInvocationHandler.java:922) at hudson.remoting.RemoteInvocationHandler$RPCRequest.call(RemoteInvocationHandler.java:896) at hudson.remoting.RemoteInvocationHandler$RPCRequest.call(RemoteInvocationHandler.java:853) at hudson.remoting.UserRequest.perform(UserRequest.java:207) at hudson.remoting.UserRequest.perform(UserRequest.java:53) at hudson.remoting.Request$2.run(Request.java:358) at hudson.remoting.InterceptingExecutorService$1.call(InterceptingExecutorService.java:72) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:748) Suppressed: hudson.remoting.Channel$CallSiteStackTrace: Remote call to build2-deb9build-ansible at hudson.remoting.Channel.attachCallSiteStackTrace(Channel.java:1693) at hudson.remoting.UserResponse.retrieve(UserRequest.java:310) at hudson.remoting.Channel.call(Channel.java:908) at hudson.remoting.RemoteInvocationHandler.invoke(RemoteInvocationHandler.java:281) at com.sun.proxy.$Proxy56.setRemoteUrl(Unknown Source) at org.jenkinsci.plugins.gitclient.RemoteGitImpl.setRemoteUrl(RemoteGitImpl.java:295) at hudson.plugins.git.GitSCM.fetchFrom(GitSCM.java:850) at hudson.plugins.git.GitSCM.retrieveChanges(GitSCM.java:1129) at hudson.plugins.git.GitSCM.checkout(GitSCM.java:1160) at hudson.scm.SCM.checkout(SCM.java:495) at hudson.model.AbstractProject.checkout(AbstractProject.java:1202) at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:574) at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:86) at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:499) at hudson.model.Run.execute(Run.java:1724) at hudson.matrix.MatrixRun.run(MatrixRun.java:146) at hudson.model.ResourceController.execute(ResourceController.java:97) at hudson.model.Executor.run(Executor.java:429) ERROR: Error fetching remote repo 'origin' [WARNINGS]Skipping publisher since build result is FAILURE From jenkins at lists.osmocom.org Fri Apr 6 06:52:19 2018 From: jenkins at lists.osmocom.org (jenkins at lists.osmocom.org) Date: Fri, 6 Apr 2018 06:52:19 +0000 (UTC) Subject: =?UTF-8?Q?Build_failed_in_Jenkins:_master-osmo-bts_=C2=BB_sysmo,s?= =?UTF-8?Q?uperfemto=5Fv2.4,default,osmocom-master-debian9_#469?= In-Reply-To: <1921574210.58.1522997358143.JavaMail.jenkins@jenkins.osmocom.org> References: <1921574210.58.1522997358143.JavaMail.jenkins@jenkins.osmocom.org> Message-ID: <96164468.70.1522997539306.JavaMail.jenkins@jenkins.osmocom.org> See ------------------------------------------ [...truncated 2.62 KB...] ERROR: Error fetching remote repo 'origin' hudson.plugins.git.GitException: Failed to fetch from git://git.osmocom.org/osmo-bts at hudson.plugins.git.GitSCM.fetchFrom(GitSCM.java:862) at hudson.plugins.git.GitSCM.retrieveChanges(GitSCM.java:1129) at hudson.plugins.git.GitSCM.checkout(GitSCM.java:1160) at hudson.scm.SCM.checkout(SCM.java:495) at hudson.model.AbstractProject.checkout(AbstractProject.java:1202) at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:574) at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:86) at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:499) at hudson.model.Run.execute(Run.java:1724) at hudson.matrix.MatrixRun.run(MatrixRun.java:146) at hudson.model.ResourceController.execute(ResourceController.java:97) at hudson.model.Executor.run(Executor.java:429) Caused by: hudson.plugins.git.GitException: Command "git config remote.origin.url git://git.osmocom.org/osmo-bts" returned status code 4: stdout: stderr: error: failed to write new configuration file at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1996) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1964) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1960) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommand(CliGitAPIImpl.java:1597) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommand(CliGitAPIImpl.java:1609) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.setRemoteUrl(CliGitAPIImpl.java:1243) at hudson.plugins.git.GitAPI.setRemoteUrl(GitAPI.java:160) at sun.reflect.GeneratedMethodAccessor26.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at hudson.remoting.RemoteInvocationHandler$RPCRequest.perform(RemoteInvocationHandler.java:922) at hudson.remoting.RemoteInvocationHandler$RPCRequest.call(RemoteInvocationHandler.java:896) at hudson.remoting.RemoteInvocationHandler$RPCRequest.call(RemoteInvocationHandler.java:853) at hudson.remoting.UserRequest.perform(UserRequest.java:207) at hudson.remoting.UserRequest.perform(UserRequest.java:53) at hudson.remoting.Request$2.run(Request.java:358) at hudson.remoting.InterceptingExecutorService$1.call(InterceptingExecutorService.java:72) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:748) Suppressed: hudson.remoting.Channel$CallSiteStackTrace: Remote call to build2-deb9build-ansible at hudson.remoting.Channel.attachCallSiteStackTrace(Channel.java:1693) at hudson.remoting.UserResponse.retrieve(UserRequest.java:310) at hudson.remoting.Channel.call(Channel.java:908) at hudson.remoting.RemoteInvocationHandler.invoke(RemoteInvocationHandler.java:281) at com.sun.proxy.$Proxy56.setRemoteUrl(Unknown Source) at org.jenkinsci.plugins.gitclient.RemoteGitImpl.setRemoteUrl(RemoteGitImpl.java:295) at hudson.plugins.git.GitSCM.fetchFrom(GitSCM.java:850) at hudson.plugins.git.GitSCM.retrieveChanges(GitSCM.java:1129) at hudson.plugins.git.GitSCM.checkout(GitSCM.java:1160) at hudson.scm.SCM.checkout(SCM.java:495) at hudson.model.AbstractProject.checkout(AbstractProject.java:1202) at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:574) at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:86) at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:499) at hudson.model.Run.execute(Run.java:1724) at hudson.matrix.MatrixRun.run(MatrixRun.java:146) at hudson.model.ResourceController.execute(ResourceController.java:97) at hudson.model.Executor.run(Executor.java:429) ERROR: Error fetching remote repo 'origin' Retrying after 10 seconds > git rev-parse --is-inside-work-tree # timeout=10 Fetching changes from the remote Git repository > git config remote.origin.url git://git.osmocom.org/osmo-bts # timeout=10 ERROR: Error fetching remote repo 'origin' hudson.plugins.git.GitException: Failed to fetch from git://git.osmocom.org/osmo-bts at hudson.plugins.git.GitSCM.fetchFrom(GitSCM.java:862) at hudson.plugins.git.GitSCM.retrieveChanges(GitSCM.java:1129) at hudson.plugins.git.GitSCM.checkout(GitSCM.java:1160) at hudson.scm.SCM.checkout(SCM.java:495) at hudson.model.AbstractProject.checkout(AbstractProject.java:1202) at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:574) at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:86) at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:499) at hudson.model.Run.execute(Run.java:1724) at hudson.matrix.MatrixRun.run(MatrixRun.java:146) at hudson.model.ResourceController.execute(ResourceController.java:97) at hudson.model.Executor.run(Executor.java:429) Caused by: hudson.plugins.git.GitException: Command "git config remote.origin.url git://git.osmocom.org/osmo-bts" returned status code 4: stdout: stderr: error: failed to write new configuration file at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1996) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1964) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1960) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommand(CliGitAPIImpl.java:1597) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommand(CliGitAPIImpl.java:1609) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.setRemoteUrl(CliGitAPIImpl.java:1243) at hudson.plugins.git.GitAPI.setRemoteUrl(GitAPI.java:160) at sun.reflect.GeneratedMethodAccessor26.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at hudson.remoting.RemoteInvocationHandler$RPCRequest.perform(RemoteInvocationHandler.java:922) at hudson.remoting.RemoteInvocationHandler$RPCRequest.call(RemoteInvocationHandler.java:896) at hudson.remoting.RemoteInvocationHandler$RPCRequest.call(RemoteInvocationHandler.java:853) at hudson.remoting.UserRequest.perform(UserRequest.java:207) at hudson.remoting.UserRequest.perform(UserRequest.java:53) at hudson.remoting.Request$2.run(Request.java:358) at hudson.remoting.InterceptingExecutorService$1.call(InterceptingExecutorService.java:72) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:748) Suppressed: hudson.remoting.Channel$CallSiteStackTrace: Remote call to build2-deb9build-ansible at hudson.remoting.Channel.attachCallSiteStackTrace(Channel.java:1693) at hudson.remoting.UserResponse.retrieve(UserRequest.java:310) at hudson.remoting.Channel.call(Channel.java:908) at hudson.remoting.RemoteInvocationHandler.invoke(RemoteInvocationHandler.java:281) at com.sun.proxy.$Proxy56.setRemoteUrl(Unknown Source) at org.jenkinsci.plugins.gitclient.RemoteGitImpl.setRemoteUrl(RemoteGitImpl.java:295) at hudson.plugins.git.GitSCM.fetchFrom(GitSCM.java:850) at hudson.plugins.git.GitSCM.retrieveChanges(GitSCM.java:1129) at hudson.plugins.git.GitSCM.checkout(GitSCM.java:1160) at hudson.scm.SCM.checkout(SCM.java:495) at hudson.model.AbstractProject.checkout(AbstractProject.java:1202) at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:574) at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:86) at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:499) at hudson.model.Run.execute(Run.java:1724) at hudson.matrix.MatrixRun.run(MatrixRun.java:146) at hudson.model.ResourceController.execute(ResourceController.java:97) at hudson.model.Executor.run(Executor.java:429) ERROR: Error fetching remote repo 'origin' Retrying after 10 seconds > git rev-parse --is-inside-work-tree # timeout=10 Fetching changes from the remote Git repository > git config remote.origin.url git://git.osmocom.org/osmo-bts # timeout=10 ERROR: Error fetching remote repo 'origin' hudson.plugins.git.GitException: Failed to fetch from git://git.osmocom.org/osmo-bts at hudson.plugins.git.GitSCM.fetchFrom(GitSCM.java:862) at hudson.plugins.git.GitSCM.retrieveChanges(GitSCM.java:1129) at hudson.plugins.git.GitSCM.checkout(GitSCM.java:1160) at hudson.scm.SCM.checkout(SCM.java:495) at hudson.model.AbstractProject.checkout(AbstractProject.java:1202) at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:574) at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:86) at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:499) at hudson.model.Run.execute(Run.java:1724) at hudson.matrix.MatrixRun.run(MatrixRun.java:146) at hudson.model.ResourceController.execute(ResourceController.java:97) at hudson.model.Executor.run(Executor.java:429) Caused by: hudson.plugins.git.GitException: Command "git config remote.origin.url git://git.osmocom.org/osmo-bts" returned status code 4: stdout: stderr: error: failed to write new configuration file at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1996) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1964) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1960) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommand(CliGitAPIImpl.java:1597) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommand(CliGitAPIImpl.java:1609) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.setRemoteUrl(CliGitAPIImpl.java:1243) at hudson.plugins.git.GitAPI.setRemoteUrl(GitAPI.java:160) at sun.reflect.GeneratedMethodAccessor26.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at hudson.remoting.RemoteInvocationHandler$RPCRequest.perform(RemoteInvocationHandler.java:922) at hudson.remoting.RemoteInvocationHandler$RPCRequest.call(RemoteInvocationHandler.java:896) at hudson.remoting.RemoteInvocationHandler$RPCRequest.call(RemoteInvocationHandler.java:853) at hudson.remoting.UserRequest.perform(UserRequest.java:207) at hudson.remoting.UserRequest.perform(UserRequest.java:53) at hudson.remoting.Request$2.run(Request.java:358) at hudson.remoting.InterceptingExecutorService$1.call(InterceptingExecutorService.java:72) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:748) Suppressed: hudson.remoting.Channel$CallSiteStackTrace: Remote call to build2-deb9build-ansible at hudson.remoting.Channel.attachCallSiteStackTrace(Channel.java:1693) at hudson.remoting.UserResponse.retrieve(UserRequest.java:310) at hudson.remoting.Channel.call(Channel.java:908) at hudson.remoting.RemoteInvocationHandler.invoke(RemoteInvocationHandler.java:281) at com.sun.proxy.$Proxy56.setRemoteUrl(Unknown Source) at org.jenkinsci.plugins.gitclient.RemoteGitImpl.setRemoteUrl(RemoteGitImpl.java:295) at hudson.plugins.git.GitSCM.fetchFrom(GitSCM.java:850) at hudson.plugins.git.GitSCM.retrieveChanges(GitSCM.java:1129) at hudson.plugins.git.GitSCM.checkout(GitSCM.java:1160) at hudson.scm.SCM.checkout(SCM.java:495) at hudson.model.AbstractProject.checkout(AbstractProject.java:1202) at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:574) at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:86) at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:499) at hudson.model.Run.execute(Run.java:1724) at hudson.matrix.MatrixRun.run(MatrixRun.java:146) at hudson.model.ResourceController.execute(ResourceController.java:97) at hudson.model.Executor.run(Executor.java:429) ERROR: Error fetching remote repo 'origin' Retrying after 10 seconds > git rev-parse --is-inside-work-tree # timeout=10 Fetching changes from the remote Git repository > git config remote.origin.url git://git.osmocom.org/osmo-bts # timeout=10 ERROR: Error fetching remote repo 'origin' hudson.plugins.git.GitException: Failed to fetch from git://git.osmocom.org/osmo-bts at hudson.plugins.git.GitSCM.fetchFrom(GitSCM.java:862) at hudson.plugins.git.GitSCM.retrieveChanges(GitSCM.java:1129) at hudson.plugins.git.GitSCM.checkout(GitSCM.java:1160) at hudson.scm.SCM.checkout(SCM.java:495) at hudson.model.AbstractProject.checkout(AbstractProject.java:1202) at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:574) at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:86) at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:499) at hudson.model.Run.execute(Run.java:1724) at hudson.matrix.MatrixRun.run(MatrixRun.java:146) at hudson.model.ResourceController.execute(ResourceController.java:97) at hudson.model.Executor.run(Executor.java:429) Caused by: hudson.plugins.git.GitException: Command "git config remote.origin.url git://git.osmocom.org/osmo-bts" returned status code 4: stdout: stderr: error: failed to write new configuration file at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1996) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1964) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1960) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommand(CliGitAPIImpl.java:1597) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommand(CliGitAPIImpl.java:1609) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.setRemoteUrl(CliGitAPIImpl.java:1243) at hudson.plugins.git.GitAPI.setRemoteUrl(GitAPI.java:160) at sun.reflect.GeneratedMethodAccessor26.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at hudson.remoting.RemoteInvocationHandler$RPCRequest.perform(RemoteInvocationHandler.java:922) at hudson.remoting.RemoteInvocationHandler$RPCRequest.call(RemoteInvocationHandler.java:896) at hudson.remoting.RemoteInvocationHandler$RPCRequest.call(RemoteInvocationHandler.java:853) at hudson.remoting.UserRequest.perform(UserRequest.java:207) at hudson.remoting.UserRequest.perform(UserRequest.java:53) at hudson.remoting.Request$2.run(Request.java:358) at hudson.remoting.InterceptingExecutorService$1.call(InterceptingExecutorService.java:72) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:748) Suppressed: hudson.remoting.Channel$CallSiteStackTrace: Remote call to build2-deb9build-ansible at hudson.remoting.Channel.attachCallSiteStackTrace(Channel.java:1693) at hudson.remoting.UserResponse.retrieve(UserRequest.java:310) at hudson.remoting.Channel.call(Channel.java:908) at hudson.remoting.RemoteInvocationHandler.invoke(RemoteInvocationHandler.java:281) at com.sun.proxy.$Proxy56.setRemoteUrl(Unknown Source) at org.jenkinsci.plugins.gitclient.RemoteGitImpl.setRemoteUrl(RemoteGitImpl.java:295) at hudson.plugins.git.GitSCM.fetchFrom(GitSCM.java:850) at hudson.plugins.git.GitSCM.retrieveChanges(GitSCM.java:1129) at hudson.plugins.git.GitSCM.checkout(GitSCM.java:1160) at hudson.scm.SCM.checkout(SCM.java:495) at hudson.model.AbstractProject.checkout(AbstractProject.java:1202) at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:574) at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:86) at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:499) at hudson.model.Run.execute(Run.java:1724) at hudson.matrix.MatrixRun.run(MatrixRun.java:146) at hudson.model.ResourceController.execute(ResourceController.java:97) at hudson.model.Executor.run(Executor.java:429) ERROR: Error fetching remote repo 'origin' [WARNINGS]Skipping publisher since build result is FAILURE From jenkins at lists.osmocom.org Fri Apr 6 06:52:19 2018 From: jenkins at lists.osmocom.org (jenkins at lists.osmocom.org) Date: Fri, 6 Apr 2018 06:52:19 +0000 (UTC) Subject: =?UTF-8?Q?Build_failed_in_Jenkins:_master-osmo-bts_=C2=BB_sysmo,s?= =?UTF-8?Q?uperfemto=5Fv5.1,default,osmocom-master-debian9_#469?= Message-ID: <1502531032.69.1522997539301.JavaMail.jenkins@jenkins.osmocom.org> See ------------------------------------------ [...truncated 2.62 KB...] ERROR: Error fetching remote repo 'origin' hudson.plugins.git.GitException: Failed to fetch from git://git.osmocom.org/osmo-bts at hudson.plugins.git.GitSCM.fetchFrom(GitSCM.java:862) at hudson.plugins.git.GitSCM.retrieveChanges(GitSCM.java:1129) at hudson.plugins.git.GitSCM.checkout(GitSCM.java:1160) at hudson.scm.SCM.checkout(SCM.java:495) at hudson.model.AbstractProject.checkout(AbstractProject.java:1202) at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:574) at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:86) at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:499) at hudson.model.Run.execute(Run.java:1724) at hudson.matrix.MatrixRun.run(MatrixRun.java:146) at hudson.model.ResourceController.execute(ResourceController.java:97) at hudson.model.Executor.run(Executor.java:429) Caused by: hudson.plugins.git.GitException: Command "git config remote.origin.url git://git.osmocom.org/osmo-bts" returned status code 4: stdout: stderr: error: failed to write new configuration file at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1996) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1964) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1960) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommand(CliGitAPIImpl.java:1597) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommand(CliGitAPIImpl.java:1609) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.setRemoteUrl(CliGitAPIImpl.java:1243) at hudson.plugins.git.GitAPI.setRemoteUrl(GitAPI.java:160) at sun.reflect.GeneratedMethodAccessor26.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at hudson.remoting.RemoteInvocationHandler$RPCRequest.perform(RemoteInvocationHandler.java:922) at hudson.remoting.RemoteInvocationHandler$RPCRequest.call(RemoteInvocationHandler.java:896) at hudson.remoting.RemoteInvocationHandler$RPCRequest.call(RemoteInvocationHandler.java:853) at hudson.remoting.UserRequest.perform(UserRequest.java:207) at hudson.remoting.UserRequest.perform(UserRequest.java:53) at hudson.remoting.Request$2.run(Request.java:358) at hudson.remoting.InterceptingExecutorService$1.call(InterceptingExecutorService.java:72) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:748) Suppressed: hudson.remoting.Channel$CallSiteStackTrace: Remote call to build2-deb9build-ansible at hudson.remoting.Channel.attachCallSiteStackTrace(Channel.java:1693) at hudson.remoting.UserResponse.retrieve(UserRequest.java:310) at hudson.remoting.Channel.call(Channel.java:908) at hudson.remoting.RemoteInvocationHandler.invoke(RemoteInvocationHandler.java:281) at com.sun.proxy.$Proxy56.setRemoteUrl(Unknown Source) at org.jenkinsci.plugins.gitclient.RemoteGitImpl.setRemoteUrl(RemoteGitImpl.java:295) at hudson.plugins.git.GitSCM.fetchFrom(GitSCM.java:850) at hudson.plugins.git.GitSCM.retrieveChanges(GitSCM.java:1129) at hudson.plugins.git.GitSCM.checkout(GitSCM.java:1160) at hudson.scm.SCM.checkout(SCM.java:495) at hudson.model.AbstractProject.checkout(AbstractProject.java:1202) at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:574) at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:86) at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:499) at hudson.model.Run.execute(Run.java:1724) at hudson.matrix.MatrixRun.run(MatrixRun.java:146) at hudson.model.ResourceController.execute(ResourceController.java:97) at hudson.model.Executor.run(Executor.java:429) ERROR: Error fetching remote repo 'origin' Retrying after 10 seconds > git rev-parse --is-inside-work-tree # timeout=10 Fetching changes from the remote Git repository > git config remote.origin.url git://git.osmocom.org/osmo-bts # timeout=10 ERROR: Error fetching remote repo 'origin' hudson.plugins.git.GitException: Failed to fetch from git://git.osmocom.org/osmo-bts at hudson.plugins.git.GitSCM.fetchFrom(GitSCM.java:862) at hudson.plugins.git.GitSCM.retrieveChanges(GitSCM.java:1129) at hudson.plugins.git.GitSCM.checkout(GitSCM.java:1160) at hudson.scm.SCM.checkout(SCM.java:495) at hudson.model.AbstractProject.checkout(AbstractProject.java:1202) at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:574) at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:86) at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:499) at hudson.model.Run.execute(Run.java:1724) at hudson.matrix.MatrixRun.run(MatrixRun.java:146) at hudson.model.ResourceController.execute(ResourceController.java:97) at hudson.model.Executor.run(Executor.java:429) Caused by: hudson.plugins.git.GitException: Command "git config remote.origin.url git://git.osmocom.org/osmo-bts" returned status code 4: stdout: stderr: error: failed to write new configuration file at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1996) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1964) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1960) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommand(CliGitAPIImpl.java:1597) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommand(CliGitAPIImpl.java:1609) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.setRemoteUrl(CliGitAPIImpl.java:1243) at hudson.plugins.git.GitAPI.setRemoteUrl(GitAPI.java:160) at sun.reflect.GeneratedMethodAccessor26.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at hudson.remoting.RemoteInvocationHandler$RPCRequest.perform(RemoteInvocationHandler.java:922) at hudson.remoting.RemoteInvocationHandler$RPCRequest.call(RemoteInvocationHandler.java:896) at hudson.remoting.RemoteInvocationHandler$RPCRequest.call(RemoteInvocationHandler.java:853) at hudson.remoting.UserRequest.perform(UserRequest.java:207) at hudson.remoting.UserRequest.perform(UserRequest.java:53) at hudson.remoting.Request$2.run(Request.java:358) at hudson.remoting.InterceptingExecutorService$1.call(InterceptingExecutorService.java:72) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:748) Suppressed: hudson.remoting.Channel$CallSiteStackTrace: Remote call to build2-deb9build-ansible at hudson.remoting.Channel.attachCallSiteStackTrace(Channel.java:1693) at hudson.remoting.UserResponse.retrieve(UserRequest.java:310) at hudson.remoting.Channel.call(Channel.java:908) at hudson.remoting.RemoteInvocationHandler.invoke(RemoteInvocationHandler.java:281) at com.sun.proxy.$Proxy56.setRemoteUrl(Unknown Source) at org.jenkinsci.plugins.gitclient.RemoteGitImpl.setRemoteUrl(RemoteGitImpl.java:295) at hudson.plugins.git.GitSCM.fetchFrom(GitSCM.java:850) at hudson.plugins.git.GitSCM.retrieveChanges(GitSCM.java:1129) at hudson.plugins.git.GitSCM.checkout(GitSCM.java:1160) at hudson.scm.SCM.checkout(SCM.java:495) at hudson.model.AbstractProject.checkout(AbstractProject.java:1202) at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:574) at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:86) at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:499) at hudson.model.Run.execute(Run.java:1724) at hudson.matrix.MatrixRun.run(MatrixRun.java:146) at hudson.model.ResourceController.execute(ResourceController.java:97) at hudson.model.Executor.run(Executor.java:429) ERROR: Error fetching remote repo 'origin' Retrying after 10 seconds > git rev-parse --is-inside-work-tree # timeout=10 Fetching changes from the remote Git repository > git config remote.origin.url git://git.osmocom.org/osmo-bts # timeout=10 ERROR: Error fetching remote repo 'origin' hudson.plugins.git.GitException: Failed to fetch from git://git.osmocom.org/osmo-bts at hudson.plugins.git.GitSCM.fetchFrom(GitSCM.java:862) at hudson.plugins.git.GitSCM.retrieveChanges(GitSCM.java:1129) at hudson.plugins.git.GitSCM.checkout(GitSCM.java:1160) at hudson.scm.SCM.checkout(SCM.java:495) at hudson.model.AbstractProject.checkout(AbstractProject.java:1202) at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:574) at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:86) at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:499) at hudson.model.Run.execute(Run.java:1724) at hudson.matrix.MatrixRun.run(MatrixRun.java:146) at hudson.model.ResourceController.execute(ResourceController.java:97) at hudson.model.Executor.run(Executor.java:429) Caused by: hudson.plugins.git.GitException: Command "git config remote.origin.url git://git.osmocom.org/osmo-bts" returned status code 4: stdout: stderr: error: failed to write new configuration file at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1996) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1964) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1960) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommand(CliGitAPIImpl.java:1597) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommand(CliGitAPIImpl.java:1609) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.setRemoteUrl(CliGitAPIImpl.java:1243) at hudson.plugins.git.GitAPI.setRemoteUrl(GitAPI.java:160) at sun.reflect.GeneratedMethodAccessor26.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at hudson.remoting.RemoteInvocationHandler$RPCRequest.perform(RemoteInvocationHandler.java:922) at hudson.remoting.RemoteInvocationHandler$RPCRequest.call(RemoteInvocationHandler.java:896) at hudson.remoting.RemoteInvocationHandler$RPCRequest.call(RemoteInvocationHandler.java:853) at hudson.remoting.UserRequest.perform(UserRequest.java:207) at hudson.remoting.UserRequest.perform(UserRequest.java:53) at hudson.remoting.Request$2.run(Request.java:358) at hudson.remoting.InterceptingExecutorService$1.call(InterceptingExecutorService.java:72) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:748) Suppressed: hudson.remoting.Channel$CallSiteStackTrace: Remote call to build2-deb9build-ansible at hudson.remoting.Channel.attachCallSiteStackTrace(Channel.java:1693) at hudson.remoting.UserResponse.retrieve(UserRequest.java:310) at hudson.remoting.Channel.call(Channel.java:908) at hudson.remoting.RemoteInvocationHandler.invoke(RemoteInvocationHandler.java:281) at com.sun.proxy.$Proxy56.setRemoteUrl(Unknown Source) at org.jenkinsci.plugins.gitclient.RemoteGitImpl.setRemoteUrl(RemoteGitImpl.java:295) at hudson.plugins.git.GitSCM.fetchFrom(GitSCM.java:850) at hudson.plugins.git.GitSCM.retrieveChanges(GitSCM.java:1129) at hudson.plugins.git.GitSCM.checkout(GitSCM.java:1160) at hudson.scm.SCM.checkout(SCM.java:495) at hudson.model.AbstractProject.checkout(AbstractProject.java:1202) at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:574) at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:86) at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:499) at hudson.model.Run.execute(Run.java:1724) at hudson.matrix.MatrixRun.run(MatrixRun.java:146) at hudson.model.ResourceController.execute(ResourceController.java:97) at hudson.model.Executor.run(Executor.java:429) ERROR: Error fetching remote repo 'origin' Retrying after 10 seconds > git rev-parse --is-inside-work-tree # timeout=10 Fetching changes from the remote Git repository > git config remote.origin.url git://git.osmocom.org/osmo-bts # timeout=10 ERROR: Error fetching remote repo 'origin' hudson.plugins.git.GitException: Failed to fetch from git://git.osmocom.org/osmo-bts at hudson.plugins.git.GitSCM.fetchFrom(GitSCM.java:862) at hudson.plugins.git.GitSCM.retrieveChanges(GitSCM.java:1129) at hudson.plugins.git.GitSCM.checkout(GitSCM.java:1160) at hudson.scm.SCM.checkout(SCM.java:495) at hudson.model.AbstractProject.checkout(AbstractProject.java:1202) at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:574) at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:86) at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:499) at hudson.model.Run.execute(Run.java:1724) at hudson.matrix.MatrixRun.run(MatrixRun.java:146) at hudson.model.ResourceController.execute(ResourceController.java:97) at hudson.model.Executor.run(Executor.java:429) Caused by: hudson.plugins.git.GitException: Command "git config remote.origin.url git://git.osmocom.org/osmo-bts" returned status code 4: stdout: stderr: error: failed to write new configuration file at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1996) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1964) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1960) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommand(CliGitAPIImpl.java:1597) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommand(CliGitAPIImpl.java:1609) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.setRemoteUrl(CliGitAPIImpl.java:1243) at hudson.plugins.git.GitAPI.setRemoteUrl(GitAPI.java:160) at sun.reflect.GeneratedMethodAccessor26.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at hudson.remoting.RemoteInvocationHandler$RPCRequest.perform(RemoteInvocationHandler.java:922) at hudson.remoting.RemoteInvocationHandler$RPCRequest.call(RemoteInvocationHandler.java:896) at hudson.remoting.RemoteInvocationHandler$RPCRequest.call(RemoteInvocationHandler.java:853) at hudson.remoting.UserRequest.perform(UserRequest.java:207) at hudson.remoting.UserRequest.perform(UserRequest.java:53) at hudson.remoting.Request$2.run(Request.java:358) at hudson.remoting.InterceptingExecutorService$1.call(InterceptingExecutorService.java:72) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:748) Suppressed: hudson.remoting.Channel$CallSiteStackTrace: Remote call to build2-deb9build-ansible at hudson.remoting.Channel.attachCallSiteStackTrace(Channel.java:1693) at hudson.remoting.UserResponse.retrieve(UserRequest.java:310) at hudson.remoting.Channel.call(Channel.java:908) at hudson.remoting.RemoteInvocationHandler.invoke(RemoteInvocationHandler.java:281) at com.sun.proxy.$Proxy56.setRemoteUrl(Unknown Source) at org.jenkinsci.plugins.gitclient.RemoteGitImpl.setRemoteUrl(RemoteGitImpl.java:295) at hudson.plugins.git.GitSCM.fetchFrom(GitSCM.java:850) at hudson.plugins.git.GitSCM.retrieveChanges(GitSCM.java:1129) at hudson.plugins.git.GitSCM.checkout(GitSCM.java:1160) at hudson.scm.SCM.checkout(SCM.java:495) at hudson.model.AbstractProject.checkout(AbstractProject.java:1202) at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:574) at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:86) at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:499) at hudson.model.Run.execute(Run.java:1724) at hudson.matrix.MatrixRun.run(MatrixRun.java:146) at hudson.model.ResourceController.execute(ResourceController.java:97) at hudson.model.Executor.run(Executor.java:429) ERROR: Error fetching remote repo 'origin' [WARNINGS]Skipping publisher since build result is FAILURE From jenkins at lists.osmocom.org Fri Apr 6 06:52:19 2018 From: jenkins at lists.osmocom.org (jenkins at lists.osmocom.org) Date: Fri, 6 Apr 2018 06:52:19 +0000 (UTC) Subject: =?UTF-8?Q?Build_failed_in_Jenkins:_master-osmo-bts_=C2=BB_lc15, origin/?= =?UTF-8?Q?nrw/litecell15-next,default,osmocom-master-debian9_#469?= In-Reply-To: <12909634.63.1522997390571.JavaMail.jenkins@jenkins.osmocom.org> References: <12909634.63.1522997390571.JavaMail.jenkins@jenkins.osmocom.org> Message-ID: <1537760235.71.1522997539306.JavaMail.jenkins@jenkins.osmocom.org> See ------------------------------------------ [...truncated 2.63 KB...] ERROR: Error fetching remote repo 'origin' hudson.plugins.git.GitException: Failed to fetch from git://git.osmocom.org/osmo-bts at hudson.plugins.git.GitSCM.fetchFrom(GitSCM.java:862) at hudson.plugins.git.GitSCM.retrieveChanges(GitSCM.java:1129) at hudson.plugins.git.GitSCM.checkout(GitSCM.java:1160) at hudson.scm.SCM.checkout(SCM.java:495) at hudson.model.AbstractProject.checkout(AbstractProject.java:1202) at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:574) at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:86) at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:499) at hudson.model.Run.execute(Run.java:1724) at hudson.matrix.MatrixRun.run(MatrixRun.java:146) at hudson.model.ResourceController.execute(ResourceController.java:97) at hudson.model.Executor.run(Executor.java:429) Caused by: hudson.plugins.git.GitException: Command "git config remote.origin.url git://git.osmocom.org/osmo-bts" returned status code 4: stdout: stderr: error: failed to write new configuration file at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1996) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1964) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1960) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommand(CliGitAPIImpl.java:1597) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommand(CliGitAPIImpl.java:1609) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.setRemoteUrl(CliGitAPIImpl.java:1243) at hudson.plugins.git.GitAPI.setRemoteUrl(GitAPI.java:160) at sun.reflect.GeneratedMethodAccessor26.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at hudson.remoting.RemoteInvocationHandler$RPCRequest.perform(RemoteInvocationHandler.java:922) at hudson.remoting.RemoteInvocationHandler$RPCRequest.call(RemoteInvocationHandler.java:896) at hudson.remoting.RemoteInvocationHandler$RPCRequest.call(RemoteInvocationHandler.java:853) at hudson.remoting.UserRequest.perform(UserRequest.java:207) at hudson.remoting.UserRequest.perform(UserRequest.java:53) at hudson.remoting.Request$2.run(Request.java:358) at hudson.remoting.InterceptingExecutorService$1.call(InterceptingExecutorService.java:72) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:748) Suppressed: hudson.remoting.Channel$CallSiteStackTrace: Remote call to build2-deb9build-ansible at hudson.remoting.Channel.attachCallSiteStackTrace(Channel.java:1693) at hudson.remoting.UserResponse.retrieve(UserRequest.java:310) at hudson.remoting.Channel.call(Channel.java:908) at hudson.remoting.RemoteInvocationHandler.invoke(RemoteInvocationHandler.java:281) at com.sun.proxy.$Proxy56.setRemoteUrl(Unknown Source) at org.jenkinsci.plugins.gitclient.RemoteGitImpl.setRemoteUrl(RemoteGitImpl.java:295) at hudson.plugins.git.GitSCM.fetchFrom(GitSCM.java:850) at hudson.plugins.git.GitSCM.retrieveChanges(GitSCM.java:1129) at hudson.plugins.git.GitSCM.checkout(GitSCM.java:1160) at hudson.scm.SCM.checkout(SCM.java:495) at hudson.model.AbstractProject.checkout(AbstractProject.java:1202) at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:574) at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:86) at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:499) at hudson.model.Run.execute(Run.java:1724) at hudson.matrix.MatrixRun.run(MatrixRun.java:146) at hudson.model.ResourceController.execute(ResourceController.java:97) at hudson.model.Executor.run(Executor.java:429) ERROR: Error fetching remote repo 'origin' Retrying after 10 seconds > git rev-parse --is-inside-work-tree # timeout=10 Fetching changes from the remote Git repository > git config remote.origin.url git://git.osmocom.org/osmo-bts # timeout=10 ERROR: Error fetching remote repo 'origin' hudson.plugins.git.GitException: Failed to fetch from git://git.osmocom.org/osmo-bts at hudson.plugins.git.GitSCM.fetchFrom(GitSCM.java:862) at hudson.plugins.git.GitSCM.retrieveChanges(GitSCM.java:1129) at hudson.plugins.git.GitSCM.checkout(GitSCM.java:1160) at hudson.scm.SCM.checkout(SCM.java:495) at hudson.model.AbstractProject.checkout(AbstractProject.java:1202) at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:574) at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:86) at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:499) at hudson.model.Run.execute(Run.java:1724) at hudson.matrix.MatrixRun.run(MatrixRun.java:146) at hudson.model.ResourceController.execute(ResourceController.java:97) at hudson.model.Executor.run(Executor.java:429) Caused by: hudson.plugins.git.GitException: Command "git config remote.origin.url git://git.osmocom.org/osmo-bts" returned status code 4: stdout: stderr: error: failed to write new configuration file at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1996) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1964) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1960) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommand(CliGitAPIImpl.java:1597) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommand(CliGitAPIImpl.java:1609) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.setRemoteUrl(CliGitAPIImpl.java:1243) at hudson.plugins.git.GitAPI.setRemoteUrl(GitAPI.java:160) at sun.reflect.GeneratedMethodAccessor26.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at hudson.remoting.RemoteInvocationHandler$RPCRequest.perform(RemoteInvocationHandler.java:922) at hudson.remoting.RemoteInvocationHandler$RPCRequest.call(RemoteInvocationHandler.java:896) at hudson.remoting.RemoteInvocationHandler$RPCRequest.call(RemoteInvocationHandler.java:853) at hudson.remoting.UserRequest.perform(UserRequest.java:207) at hudson.remoting.UserRequest.perform(UserRequest.java:53) at hudson.remoting.Request$2.run(Request.java:358) at hudson.remoting.InterceptingExecutorService$1.call(InterceptingExecutorService.java:72) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:748) Suppressed: hudson.remoting.Channel$CallSiteStackTrace: Remote call to build2-deb9build-ansible at hudson.remoting.Channel.attachCallSiteStackTrace(Channel.java:1693) at hudson.remoting.UserResponse.retrieve(UserRequest.java:310) at hudson.remoting.Channel.call(Channel.java:908) at hudson.remoting.RemoteInvocationHandler.invoke(RemoteInvocationHandler.java:281) at com.sun.proxy.$Proxy56.setRemoteUrl(Unknown Source) at org.jenkinsci.plugins.gitclient.RemoteGitImpl.setRemoteUrl(RemoteGitImpl.java:295) at hudson.plugins.git.GitSCM.fetchFrom(GitSCM.java:850) at hudson.plugins.git.GitSCM.retrieveChanges(GitSCM.java:1129) at hudson.plugins.git.GitSCM.checkout(GitSCM.java:1160) at hudson.scm.SCM.checkout(SCM.java:495) at hudson.model.AbstractProject.checkout(AbstractProject.java:1202) at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:574) at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:86) at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:499) at hudson.model.Run.execute(Run.java:1724) at hudson.matrix.MatrixRun.run(MatrixRun.java:146) at hudson.model.ResourceController.execute(ResourceController.java:97) at hudson.model.Executor.run(Executor.java:429) ERROR: Error fetching remote repo 'origin' Retrying after 10 seconds > git rev-parse --is-inside-work-tree # timeout=10 Fetching changes from the remote Git repository > git config remote.origin.url git://git.osmocom.org/osmo-bts # timeout=10 ERROR: Error fetching remote repo 'origin' hudson.plugins.git.GitException: Failed to fetch from git://git.osmocom.org/osmo-bts at hudson.plugins.git.GitSCM.fetchFrom(GitSCM.java:862) at hudson.plugins.git.GitSCM.retrieveChanges(GitSCM.java:1129) at hudson.plugins.git.GitSCM.checkout(GitSCM.java:1160) at hudson.scm.SCM.checkout(SCM.java:495) at hudson.model.AbstractProject.checkout(AbstractProject.java:1202) at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:574) at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:86) at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:499) at hudson.model.Run.execute(Run.java:1724) at hudson.matrix.MatrixRun.run(MatrixRun.java:146) at hudson.model.ResourceController.execute(ResourceController.java:97) at hudson.model.Executor.run(Executor.java:429) Caused by: hudson.plugins.git.GitException: Command "git config remote.origin.url git://git.osmocom.org/osmo-bts" returned status code 4: stdout: stderr: error: failed to write new configuration file at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1996) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1964) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1960) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommand(CliGitAPIImpl.java:1597) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommand(CliGitAPIImpl.java:1609) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.setRemoteUrl(CliGitAPIImpl.java:1243) at hudson.plugins.git.GitAPI.setRemoteUrl(GitAPI.java:160) at sun.reflect.GeneratedMethodAccessor26.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at hudson.remoting.RemoteInvocationHandler$RPCRequest.perform(RemoteInvocationHandler.java:922) at hudson.remoting.RemoteInvocationHandler$RPCRequest.call(RemoteInvocationHandler.java:896) at hudson.remoting.RemoteInvocationHandler$RPCRequest.call(RemoteInvocationHandler.java:853) at hudson.remoting.UserRequest.perform(UserRequest.java:207) at hudson.remoting.UserRequest.perform(UserRequest.java:53) at hudson.remoting.Request$2.run(Request.java:358) at hudson.remoting.InterceptingExecutorService$1.call(InterceptingExecutorService.java:72) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:748) Suppressed: hudson.remoting.Channel$CallSiteStackTrace: Remote call to build2-deb9build-ansible at hudson.remoting.Channel.attachCallSiteStackTrace(Channel.java:1693) at hudson.remoting.UserResponse.retrieve(UserRequest.java:310) at hudson.remoting.Channel.call(Channel.java:908) at hudson.remoting.RemoteInvocationHandler.invoke(RemoteInvocationHandler.java:281) at com.sun.proxy.$Proxy56.setRemoteUrl(Unknown Source) at org.jenkinsci.plugins.gitclient.RemoteGitImpl.setRemoteUrl(RemoteGitImpl.java:295) at hudson.plugins.git.GitSCM.fetchFrom(GitSCM.java:850) at hudson.plugins.git.GitSCM.retrieveChanges(GitSCM.java:1129) at hudson.plugins.git.GitSCM.checkout(GitSCM.java:1160) at hudson.scm.SCM.checkout(SCM.java:495) at hudson.model.AbstractProject.checkout(AbstractProject.java:1202) at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:574) at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:86) at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:499) at hudson.model.Run.execute(Run.java:1724) at hudson.matrix.MatrixRun.run(MatrixRun.java:146) at hudson.model.ResourceController.execute(ResourceController.java:97) at hudson.model.Executor.run(Executor.java:429) ERROR: Error fetching remote repo 'origin' Retrying after 10 seconds > git rev-parse --is-inside-work-tree # timeout=10 Fetching changes from the remote Git repository > git config remote.origin.url git://git.osmocom.org/osmo-bts # timeout=10 ERROR: Error fetching remote repo 'origin' hudson.plugins.git.GitException: Failed to fetch from git://git.osmocom.org/osmo-bts at hudson.plugins.git.GitSCM.fetchFrom(GitSCM.java:862) at hudson.plugins.git.GitSCM.retrieveChanges(GitSCM.java:1129) at hudson.plugins.git.GitSCM.checkout(GitSCM.java:1160) at hudson.scm.SCM.checkout(SCM.java:495) at hudson.model.AbstractProject.checkout(AbstractProject.java:1202) at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:574) at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:86) at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:499) at hudson.model.Run.execute(Run.java:1724) at hudson.matrix.MatrixRun.run(MatrixRun.java:146) at hudson.model.ResourceController.execute(ResourceController.java:97) at hudson.model.Executor.run(Executor.java:429) Caused by: hudson.plugins.git.GitException: Command "git config remote.origin.url git://git.osmocom.org/osmo-bts" returned status code 4: stdout: stderr: error: failed to write new configuration file at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1996) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1964) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1960) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommand(CliGitAPIImpl.java:1597) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommand(CliGitAPIImpl.java:1609) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.setRemoteUrl(CliGitAPIImpl.java:1243) at hudson.plugins.git.GitAPI.setRemoteUrl(GitAPI.java:160) at sun.reflect.GeneratedMethodAccessor26.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at hudson.remoting.RemoteInvocationHandler$RPCRequest.perform(RemoteInvocationHandler.java:922) at hudson.remoting.RemoteInvocationHandler$RPCRequest.call(RemoteInvocationHandler.java:896) at hudson.remoting.RemoteInvocationHandler$RPCRequest.call(RemoteInvocationHandler.java:853) at hudson.remoting.UserRequest.perform(UserRequest.java:207) at hudson.remoting.UserRequest.perform(UserRequest.java:53) at hudson.remoting.Request$2.run(Request.java:358) at hudson.remoting.InterceptingExecutorService$1.call(InterceptingExecutorService.java:72) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:748) Suppressed: hudson.remoting.Channel$CallSiteStackTrace: Remote call to build2-deb9build-ansible at hudson.remoting.Channel.attachCallSiteStackTrace(Channel.java:1693) at hudson.remoting.UserResponse.retrieve(UserRequest.java:310) at hudson.remoting.Channel.call(Channel.java:908) at hudson.remoting.RemoteInvocationHandler.invoke(RemoteInvocationHandler.java:281) at com.sun.proxy.$Proxy56.setRemoteUrl(Unknown Source) at org.jenkinsci.plugins.gitclient.RemoteGitImpl.setRemoteUrl(RemoteGitImpl.java:295) at hudson.plugins.git.GitSCM.fetchFrom(GitSCM.java:850) at hudson.plugins.git.GitSCM.retrieveChanges(GitSCM.java:1129) at hudson.plugins.git.GitSCM.checkout(GitSCM.java:1160) at hudson.scm.SCM.checkout(SCM.java:495) at hudson.model.AbstractProject.checkout(AbstractProject.java:1202) at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:574) at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:86) at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:499) at hudson.model.Run.execute(Run.java:1724) at hudson.matrix.MatrixRun.run(MatrixRun.java:146) at hudson.model.ResourceController.execute(ResourceController.java:97) at hudson.model.Executor.run(Executor.java:429) ERROR: Error fetching remote repo 'origin' [WARNINGS]Skipping publisher since build result is FAILURE From jenkins at lists.osmocom.org Fri Apr 6 06:52:52 2018 From: jenkins at lists.osmocom.org (jenkins at lists.osmocom.org) Date: Fri, 6 Apr 2018 06:52:52 +0000 (UTC) Subject: =?UTF-8?Q?Build_failed_in_Jenkins:_master-osmo-bts_=C2=BB_lc?= =?UTF-8?Q?15,master,default,osmocom-master-debian9_#469?= In-Reply-To: <1292860986.62.1522997387119.JavaMail.jenkins@jenkins.osmocom.org> References: <1292860986.62.1522997387119.JavaMail.jenkins@jenkins.osmocom.org> Message-ID: <1715701445.72.1522997572739.JavaMail.jenkins@jenkins.osmocom.org> See ------------------------------------------ [...truncated 2.61 KB...] ERROR: Error fetching remote repo 'origin' hudson.plugins.git.GitException: Failed to fetch from git://git.osmocom.org/osmo-bts at hudson.plugins.git.GitSCM.fetchFrom(GitSCM.java:862) at hudson.plugins.git.GitSCM.retrieveChanges(GitSCM.java:1129) at hudson.plugins.git.GitSCM.checkout(GitSCM.java:1160) at hudson.scm.SCM.checkout(SCM.java:495) at hudson.model.AbstractProject.checkout(AbstractProject.java:1202) at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:574) at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:86) at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:499) at hudson.model.Run.execute(Run.java:1724) at hudson.matrix.MatrixRun.run(MatrixRun.java:146) at hudson.model.ResourceController.execute(ResourceController.java:97) at hudson.model.Executor.run(Executor.java:429) Caused by: hudson.plugins.git.GitException: Command "git config remote.origin.url git://git.osmocom.org/osmo-bts" returned status code 4: stdout: stderr: error: failed to write new configuration file at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1996) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1964) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1960) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommand(CliGitAPIImpl.java:1597) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommand(CliGitAPIImpl.java:1609) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.setRemoteUrl(CliGitAPIImpl.java:1243) at hudson.plugins.git.GitAPI.setRemoteUrl(GitAPI.java:160) at sun.reflect.GeneratedMethodAccessor26.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at hudson.remoting.RemoteInvocationHandler$RPCRequest.perform(RemoteInvocationHandler.java:922) at hudson.remoting.RemoteInvocationHandler$RPCRequest.call(RemoteInvocationHandler.java:896) at hudson.remoting.RemoteInvocationHandler$RPCRequest.call(RemoteInvocationHandler.java:853) at hudson.remoting.UserRequest.perform(UserRequest.java:207) at hudson.remoting.UserRequest.perform(UserRequest.java:53) at hudson.remoting.Request$2.run(Request.java:358) at hudson.remoting.InterceptingExecutorService$1.call(InterceptingExecutorService.java:72) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:748) Suppressed: hudson.remoting.Channel$CallSiteStackTrace: Remote call to build2-deb9build-ansible at hudson.remoting.Channel.attachCallSiteStackTrace(Channel.java:1693) at hudson.remoting.UserResponse.retrieve(UserRequest.java:310) at hudson.remoting.Channel.call(Channel.java:908) at hudson.remoting.RemoteInvocationHandler.invoke(RemoteInvocationHandler.java:281) at com.sun.proxy.$Proxy56.setRemoteUrl(Unknown Source) at org.jenkinsci.plugins.gitclient.RemoteGitImpl.setRemoteUrl(RemoteGitImpl.java:295) at hudson.plugins.git.GitSCM.fetchFrom(GitSCM.java:850) at hudson.plugins.git.GitSCM.retrieveChanges(GitSCM.java:1129) at hudson.plugins.git.GitSCM.checkout(GitSCM.java:1160) at hudson.scm.SCM.checkout(SCM.java:495) at hudson.model.AbstractProject.checkout(AbstractProject.java:1202) at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:574) at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:86) at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:499) at hudson.model.Run.execute(Run.java:1724) at hudson.matrix.MatrixRun.run(MatrixRun.java:146) at hudson.model.ResourceController.execute(ResourceController.java:97) at hudson.model.Executor.run(Executor.java:429) ERROR: Error fetching remote repo 'origin' Retrying after 10 seconds > git rev-parse --is-inside-work-tree # timeout=10 Fetching changes from the remote Git repository > git config remote.origin.url git://git.osmocom.org/osmo-bts # timeout=10 ERROR: Error fetching remote repo 'origin' hudson.plugins.git.GitException: Failed to fetch from git://git.osmocom.org/osmo-bts at hudson.plugins.git.GitSCM.fetchFrom(GitSCM.java:862) at hudson.plugins.git.GitSCM.retrieveChanges(GitSCM.java:1129) at hudson.plugins.git.GitSCM.checkout(GitSCM.java:1160) at hudson.scm.SCM.checkout(SCM.java:495) at hudson.model.AbstractProject.checkout(AbstractProject.java:1202) at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:574) at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:86) at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:499) at hudson.model.Run.execute(Run.java:1724) at hudson.matrix.MatrixRun.run(MatrixRun.java:146) at hudson.model.ResourceController.execute(ResourceController.java:97) at hudson.model.Executor.run(Executor.java:429) Caused by: hudson.plugins.git.GitException: Command "git config remote.origin.url git://git.osmocom.org/osmo-bts" returned status code 4: stdout: stderr: error: failed to write new configuration file at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1996) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1964) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1960) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommand(CliGitAPIImpl.java:1597) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommand(CliGitAPIImpl.java:1609) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.setRemoteUrl(CliGitAPIImpl.java:1243) at hudson.plugins.git.GitAPI.setRemoteUrl(GitAPI.java:160) at sun.reflect.GeneratedMethodAccessor26.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at hudson.remoting.RemoteInvocationHandler$RPCRequest.perform(RemoteInvocationHandler.java:922) at hudson.remoting.RemoteInvocationHandler$RPCRequest.call(RemoteInvocationHandler.java:896) at hudson.remoting.RemoteInvocationHandler$RPCRequest.call(RemoteInvocationHandler.java:853) at hudson.remoting.UserRequest.perform(UserRequest.java:207) at hudson.remoting.UserRequest.perform(UserRequest.java:53) at hudson.remoting.Request$2.run(Request.java:358) at hudson.remoting.InterceptingExecutorService$1.call(InterceptingExecutorService.java:72) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:748) Suppressed: hudson.remoting.Channel$CallSiteStackTrace: Remote call to build2-deb9build-ansible at hudson.remoting.Channel.attachCallSiteStackTrace(Channel.java:1693) at hudson.remoting.UserResponse.retrieve(UserRequest.java:310) at hudson.remoting.Channel.call(Channel.java:908) at hudson.remoting.RemoteInvocationHandler.invoke(RemoteInvocationHandler.java:281) at com.sun.proxy.$Proxy56.setRemoteUrl(Unknown Source) at org.jenkinsci.plugins.gitclient.RemoteGitImpl.setRemoteUrl(RemoteGitImpl.java:295) at hudson.plugins.git.GitSCM.fetchFrom(GitSCM.java:850) at hudson.plugins.git.GitSCM.retrieveChanges(GitSCM.java:1129) at hudson.plugins.git.GitSCM.checkout(GitSCM.java:1160) at hudson.scm.SCM.checkout(SCM.java:495) at hudson.model.AbstractProject.checkout(AbstractProject.java:1202) at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:574) at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:86) at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:499) at hudson.model.Run.execute(Run.java:1724) at hudson.matrix.MatrixRun.run(MatrixRun.java:146) at hudson.model.ResourceController.execute(ResourceController.java:97) at hudson.model.Executor.run(Executor.java:429) ERROR: Error fetching remote repo 'origin' Retrying after 10 seconds > git rev-parse --is-inside-work-tree # timeout=10 Fetching changes from the remote Git repository > git config remote.origin.url git://git.osmocom.org/osmo-bts # timeout=10 ERROR: Error fetching remote repo 'origin' hudson.plugins.git.GitException: Failed to fetch from git://git.osmocom.org/osmo-bts at hudson.plugins.git.GitSCM.fetchFrom(GitSCM.java:862) at hudson.plugins.git.GitSCM.retrieveChanges(GitSCM.java:1129) at hudson.plugins.git.GitSCM.checkout(GitSCM.java:1160) at hudson.scm.SCM.checkout(SCM.java:495) at hudson.model.AbstractProject.checkout(AbstractProject.java:1202) at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:574) at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:86) at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:499) at hudson.model.Run.execute(Run.java:1724) at hudson.matrix.MatrixRun.run(MatrixRun.java:146) at hudson.model.ResourceController.execute(ResourceController.java:97) at hudson.model.Executor.run(Executor.java:429) Caused by: hudson.plugins.git.GitException: Command "git config remote.origin.url git://git.osmocom.org/osmo-bts" returned status code 4: stdout: stderr: error: failed to write new configuration file at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1996) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1964) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1960) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommand(CliGitAPIImpl.java:1597) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommand(CliGitAPIImpl.java:1609) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.setRemoteUrl(CliGitAPIImpl.java:1243) at hudson.plugins.git.GitAPI.setRemoteUrl(GitAPI.java:160) at sun.reflect.GeneratedMethodAccessor26.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at hudson.remoting.RemoteInvocationHandler$RPCRequest.perform(RemoteInvocationHandler.java:922) at hudson.remoting.RemoteInvocationHandler$RPCRequest.call(RemoteInvocationHandler.java:896) at hudson.remoting.RemoteInvocationHandler$RPCRequest.call(RemoteInvocationHandler.java:853) at hudson.remoting.UserRequest.perform(UserRequest.java:207) at hudson.remoting.UserRequest.perform(UserRequest.java:53) at hudson.remoting.Request$2.run(Request.java:358) at hudson.remoting.InterceptingExecutorService$1.call(InterceptingExecutorService.java:72) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:748) Suppressed: hudson.remoting.Channel$CallSiteStackTrace: Remote call to build2-deb9build-ansible at hudson.remoting.Channel.attachCallSiteStackTrace(Channel.java:1693) at hudson.remoting.UserResponse.retrieve(UserRequest.java:310) at hudson.remoting.Channel.call(Channel.java:908) at hudson.remoting.RemoteInvocationHandler.invoke(RemoteInvocationHandler.java:281) at com.sun.proxy.$Proxy56.setRemoteUrl(Unknown Source) at org.jenkinsci.plugins.gitclient.RemoteGitImpl.setRemoteUrl(RemoteGitImpl.java:295) at hudson.plugins.git.GitSCM.fetchFrom(GitSCM.java:850) at hudson.plugins.git.GitSCM.retrieveChanges(GitSCM.java:1129) at hudson.plugins.git.GitSCM.checkout(GitSCM.java:1160) at hudson.scm.SCM.checkout(SCM.java:495) at hudson.model.AbstractProject.checkout(AbstractProject.java:1202) at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:574) at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:86) at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:499) at hudson.model.Run.execute(Run.java:1724) at hudson.matrix.MatrixRun.run(MatrixRun.java:146) at hudson.model.ResourceController.execute(ResourceController.java:97) at hudson.model.Executor.run(Executor.java:429) ERROR: Error fetching remote repo 'origin' Retrying after 10 seconds > git rev-parse --is-inside-work-tree # timeout=10 Fetching changes from the remote Git repository > git config remote.origin.url git://git.osmocom.org/osmo-bts # timeout=10 ERROR: Error fetching remote repo 'origin' hudson.plugins.git.GitException: Failed to fetch from git://git.osmocom.org/osmo-bts at hudson.plugins.git.GitSCM.fetchFrom(GitSCM.java:862) at hudson.plugins.git.GitSCM.retrieveChanges(GitSCM.java:1129) at hudson.plugins.git.GitSCM.checkout(GitSCM.java:1160) at hudson.scm.SCM.checkout(SCM.java:495) at hudson.model.AbstractProject.checkout(AbstractProject.java:1202) at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:574) at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:86) at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:499) at hudson.model.Run.execute(Run.java:1724) at hudson.matrix.MatrixRun.run(MatrixRun.java:146) at hudson.model.ResourceController.execute(ResourceController.java:97) at hudson.model.Executor.run(Executor.java:429) Caused by: hudson.plugins.git.GitException: Command "git config remote.origin.url git://git.osmocom.org/osmo-bts" returned status code 4: stdout: stderr: error: failed to write new configuration file at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1996) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1964) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1960) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommand(CliGitAPIImpl.java:1597) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommand(CliGitAPIImpl.java:1609) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.setRemoteUrl(CliGitAPIImpl.java:1243) at hudson.plugins.git.GitAPI.setRemoteUrl(GitAPI.java:160) at sun.reflect.GeneratedMethodAccessor26.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at hudson.remoting.RemoteInvocationHandler$RPCRequest.perform(RemoteInvocationHandler.java:922) at hudson.remoting.RemoteInvocationHandler$RPCRequest.call(RemoteInvocationHandler.java:896) at hudson.remoting.RemoteInvocationHandler$RPCRequest.call(RemoteInvocationHandler.java:853) at hudson.remoting.UserRequest.perform(UserRequest.java:207) at hudson.remoting.UserRequest.perform(UserRequest.java:53) at hudson.remoting.Request$2.run(Request.java:358) at hudson.remoting.InterceptingExecutorService$1.call(InterceptingExecutorService.java:72) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:748) Suppressed: hudson.remoting.Channel$CallSiteStackTrace: Remote call to build2-deb9build-ansible at hudson.remoting.Channel.attachCallSiteStackTrace(Channel.java:1693) at hudson.remoting.UserResponse.retrieve(UserRequest.java:310) at hudson.remoting.Channel.call(Channel.java:908) at hudson.remoting.RemoteInvocationHandler.invoke(RemoteInvocationHandler.java:281) at com.sun.proxy.$Proxy56.setRemoteUrl(Unknown Source) at org.jenkinsci.plugins.gitclient.RemoteGitImpl.setRemoteUrl(RemoteGitImpl.java:295) at hudson.plugins.git.GitSCM.fetchFrom(GitSCM.java:850) at hudson.plugins.git.GitSCM.retrieveChanges(GitSCM.java:1129) at hudson.plugins.git.GitSCM.checkout(GitSCM.java:1160) at hudson.scm.SCM.checkout(SCM.java:495) at hudson.model.AbstractProject.checkout(AbstractProject.java:1202) at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:574) at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:86) at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:499) at hudson.model.Run.execute(Run.java:1724) at hudson.matrix.MatrixRun.run(MatrixRun.java:146) at hudson.model.ResourceController.execute(ResourceController.java:97) at hudson.model.Executor.run(Executor.java:429) ERROR: Error fetching remote repo 'origin' [WARNINGS]Skipping publisher since build result is FAILURE From jenkins at lists.osmocom.org Fri Apr 6 06:53:07 2018 From: jenkins at lists.osmocom.org (jenkins at lists.osmocom.org) Date: Fri, 6 Apr 2018 06:53:07 +0000 (UTC) Subject: =?UTF-8?Q?Build_failed_in_Jenkins:_master-osmo-bts_=C2=BB_sy?= =?UTF-8?Q?smo,master,default,osmocom-master-debian9_#469?= In-Reply-To: <637284671.61.1522997386995.JavaMail.jenkins@jenkins.osmocom.org> References: <637284671.61.1522997386995.JavaMail.jenkins@jenkins.osmocom.org> Message-ID: <631944683.74.1522997587582.JavaMail.jenkins@jenkins.osmocom.org> See ------------------------------------------ [...truncated 2.61 KB...] ERROR: Error fetching remote repo 'origin' hudson.plugins.git.GitException: Failed to fetch from git://git.osmocom.org/osmo-bts at hudson.plugins.git.GitSCM.fetchFrom(GitSCM.java:862) at hudson.plugins.git.GitSCM.retrieveChanges(GitSCM.java:1129) at hudson.plugins.git.GitSCM.checkout(GitSCM.java:1160) at hudson.scm.SCM.checkout(SCM.java:495) at hudson.model.AbstractProject.checkout(AbstractProject.java:1202) at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:574) at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:86) at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:499) at hudson.model.Run.execute(Run.java:1724) at hudson.matrix.MatrixRun.run(MatrixRun.java:146) at hudson.model.ResourceController.execute(ResourceController.java:97) at hudson.model.Executor.run(Executor.java:429) Caused by: hudson.plugins.git.GitException: Command "git config remote.origin.url git://git.osmocom.org/osmo-bts" returned status code 4: stdout: stderr: error: failed to write new configuration file at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1996) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1964) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1960) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommand(CliGitAPIImpl.java:1597) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommand(CliGitAPIImpl.java:1609) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.setRemoteUrl(CliGitAPIImpl.java:1243) at hudson.plugins.git.GitAPI.setRemoteUrl(GitAPI.java:160) at sun.reflect.GeneratedMethodAccessor26.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at hudson.remoting.RemoteInvocationHandler$RPCRequest.perform(RemoteInvocationHandler.java:922) at hudson.remoting.RemoteInvocationHandler$RPCRequest.call(RemoteInvocationHandler.java:896) at hudson.remoting.RemoteInvocationHandler$RPCRequest.call(RemoteInvocationHandler.java:853) at hudson.remoting.UserRequest.perform(UserRequest.java:207) at hudson.remoting.UserRequest.perform(UserRequest.java:53) at hudson.remoting.Request$2.run(Request.java:358) at hudson.remoting.InterceptingExecutorService$1.call(InterceptingExecutorService.java:72) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:748) Suppressed: hudson.remoting.Channel$CallSiteStackTrace: Remote call to build2-deb9build-ansible at hudson.remoting.Channel.attachCallSiteStackTrace(Channel.java:1693) at hudson.remoting.UserResponse.retrieve(UserRequest.java:310) at hudson.remoting.Channel.call(Channel.java:908) at hudson.remoting.RemoteInvocationHandler.invoke(RemoteInvocationHandler.java:281) at com.sun.proxy.$Proxy56.setRemoteUrl(Unknown Source) at org.jenkinsci.plugins.gitclient.RemoteGitImpl.setRemoteUrl(RemoteGitImpl.java:295) at hudson.plugins.git.GitSCM.fetchFrom(GitSCM.java:850) at hudson.plugins.git.GitSCM.retrieveChanges(GitSCM.java:1129) at hudson.plugins.git.GitSCM.checkout(GitSCM.java:1160) at hudson.scm.SCM.checkout(SCM.java:495) at hudson.model.AbstractProject.checkout(AbstractProject.java:1202) at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:574) at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:86) at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:499) at hudson.model.Run.execute(Run.java:1724) at hudson.matrix.MatrixRun.run(MatrixRun.java:146) at hudson.model.ResourceController.execute(ResourceController.java:97) at hudson.model.Executor.run(Executor.java:429) ERROR: Error fetching remote repo 'origin' Retrying after 10 seconds > git rev-parse --is-inside-work-tree # timeout=10 Fetching changes from the remote Git repository > git config remote.origin.url git://git.osmocom.org/osmo-bts # timeout=10 ERROR: Error fetching remote repo 'origin' hudson.plugins.git.GitException: Failed to fetch from git://git.osmocom.org/osmo-bts at hudson.plugins.git.GitSCM.fetchFrom(GitSCM.java:862) at hudson.plugins.git.GitSCM.retrieveChanges(GitSCM.java:1129) at hudson.plugins.git.GitSCM.checkout(GitSCM.java:1160) at hudson.scm.SCM.checkout(SCM.java:495) at hudson.model.AbstractProject.checkout(AbstractProject.java:1202) at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:574) at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:86) at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:499) at hudson.model.Run.execute(Run.java:1724) at hudson.matrix.MatrixRun.run(MatrixRun.java:146) at hudson.model.ResourceController.execute(ResourceController.java:97) at hudson.model.Executor.run(Executor.java:429) Caused by: hudson.plugins.git.GitException: Command "git config remote.origin.url git://git.osmocom.org/osmo-bts" returned status code 4: stdout: stderr: error: failed to write new configuration file at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1996) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1964) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1960) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommand(CliGitAPIImpl.java:1597) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommand(CliGitAPIImpl.java:1609) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.setRemoteUrl(CliGitAPIImpl.java:1243) at hudson.plugins.git.GitAPI.setRemoteUrl(GitAPI.java:160) at sun.reflect.GeneratedMethodAccessor26.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at hudson.remoting.RemoteInvocationHandler$RPCRequest.perform(RemoteInvocationHandler.java:922) at hudson.remoting.RemoteInvocationHandler$RPCRequest.call(RemoteInvocationHandler.java:896) at hudson.remoting.RemoteInvocationHandler$RPCRequest.call(RemoteInvocationHandler.java:853) at hudson.remoting.UserRequest.perform(UserRequest.java:207) at hudson.remoting.UserRequest.perform(UserRequest.java:53) at hudson.remoting.Request$2.run(Request.java:358) at hudson.remoting.InterceptingExecutorService$1.call(InterceptingExecutorService.java:72) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:748) Suppressed: hudson.remoting.Channel$CallSiteStackTrace: Remote call to build2-deb9build-ansible at hudson.remoting.Channel.attachCallSiteStackTrace(Channel.java:1693) at hudson.remoting.UserResponse.retrieve(UserRequest.java:310) at hudson.remoting.Channel.call(Channel.java:908) at hudson.remoting.RemoteInvocationHandler.invoke(RemoteInvocationHandler.java:281) at com.sun.proxy.$Proxy56.setRemoteUrl(Unknown Source) at org.jenkinsci.plugins.gitclient.RemoteGitImpl.setRemoteUrl(RemoteGitImpl.java:295) at hudson.plugins.git.GitSCM.fetchFrom(GitSCM.java:850) at hudson.plugins.git.GitSCM.retrieveChanges(GitSCM.java:1129) at hudson.plugins.git.GitSCM.checkout(GitSCM.java:1160) at hudson.scm.SCM.checkout(SCM.java:495) at hudson.model.AbstractProject.checkout(AbstractProject.java:1202) at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:574) at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:86) at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:499) at hudson.model.Run.execute(Run.java:1724) at hudson.matrix.MatrixRun.run(MatrixRun.java:146) at hudson.model.ResourceController.execute(ResourceController.java:97) at hudson.model.Executor.run(Executor.java:429) ERROR: Error fetching remote repo 'origin' Retrying after 10 seconds > git rev-parse --is-inside-work-tree # timeout=10 Fetching changes from the remote Git repository > git config remote.origin.url git://git.osmocom.org/osmo-bts # timeout=10 ERROR: Error fetching remote repo 'origin' hudson.plugins.git.GitException: Failed to fetch from git://git.osmocom.org/osmo-bts at hudson.plugins.git.GitSCM.fetchFrom(GitSCM.java:862) at hudson.plugins.git.GitSCM.retrieveChanges(GitSCM.java:1129) at hudson.plugins.git.GitSCM.checkout(GitSCM.java:1160) at hudson.scm.SCM.checkout(SCM.java:495) at hudson.model.AbstractProject.checkout(AbstractProject.java:1202) at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:574) at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:86) at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:499) at hudson.model.Run.execute(Run.java:1724) at hudson.matrix.MatrixRun.run(MatrixRun.java:146) at hudson.model.ResourceController.execute(ResourceController.java:97) at hudson.model.Executor.run(Executor.java:429) Caused by: hudson.plugins.git.GitException: Command "git config remote.origin.url git://git.osmocom.org/osmo-bts" returned status code 4: stdout: stderr: error: failed to write new configuration file at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1996) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1964) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1960) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommand(CliGitAPIImpl.java:1597) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommand(CliGitAPIImpl.java:1609) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.setRemoteUrl(CliGitAPIImpl.java:1243) at hudson.plugins.git.GitAPI.setRemoteUrl(GitAPI.java:160) at sun.reflect.GeneratedMethodAccessor26.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at hudson.remoting.RemoteInvocationHandler$RPCRequest.perform(RemoteInvocationHandler.java:922) at hudson.remoting.RemoteInvocationHandler$RPCRequest.call(RemoteInvocationHandler.java:896) at hudson.remoting.RemoteInvocationHandler$RPCRequest.call(RemoteInvocationHandler.java:853) at hudson.remoting.UserRequest.perform(UserRequest.java:207) at hudson.remoting.UserRequest.perform(UserRequest.java:53) at hudson.remoting.Request$2.run(Request.java:358) at hudson.remoting.InterceptingExecutorService$1.call(InterceptingExecutorService.java:72) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:748) Suppressed: hudson.remoting.Channel$CallSiteStackTrace: Remote call to build2-deb9build-ansible at hudson.remoting.Channel.attachCallSiteStackTrace(Channel.java:1693) at hudson.remoting.UserResponse.retrieve(UserRequest.java:310) at hudson.remoting.Channel.call(Channel.java:908) at hudson.remoting.RemoteInvocationHandler.invoke(RemoteInvocationHandler.java:281) at com.sun.proxy.$Proxy56.setRemoteUrl(Unknown Source) at org.jenkinsci.plugins.gitclient.RemoteGitImpl.setRemoteUrl(RemoteGitImpl.java:295) at hudson.plugins.git.GitSCM.fetchFrom(GitSCM.java:850) at hudson.plugins.git.GitSCM.retrieveChanges(GitSCM.java:1129) at hudson.plugins.git.GitSCM.checkout(GitSCM.java:1160) at hudson.scm.SCM.checkout(SCM.java:495) at hudson.model.AbstractProject.checkout(AbstractProject.java:1202) at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:574) at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:86) at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:499) at hudson.model.Run.execute(Run.java:1724) at hudson.matrix.MatrixRun.run(MatrixRun.java:146) at hudson.model.ResourceController.execute(ResourceController.java:97) at hudson.model.Executor.run(Executor.java:429) ERROR: Error fetching remote repo 'origin' Retrying after 10 seconds > git rev-parse --is-inside-work-tree # timeout=10 Fetching changes from the remote Git repository > git config remote.origin.url git://git.osmocom.org/osmo-bts # timeout=10 ERROR: Error fetching remote repo 'origin' hudson.plugins.git.GitException: Failed to fetch from git://git.osmocom.org/osmo-bts at hudson.plugins.git.GitSCM.fetchFrom(GitSCM.java:862) at hudson.plugins.git.GitSCM.retrieveChanges(GitSCM.java:1129) at hudson.plugins.git.GitSCM.checkout(GitSCM.java:1160) at hudson.scm.SCM.checkout(SCM.java:495) at hudson.model.AbstractProject.checkout(AbstractProject.java:1202) at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:574) at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:86) at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:499) at hudson.model.Run.execute(Run.java:1724) at hudson.matrix.MatrixRun.run(MatrixRun.java:146) at hudson.model.ResourceController.execute(ResourceController.java:97) at hudson.model.Executor.run(Executor.java:429) Caused by: hudson.plugins.git.GitException: Command "git config remote.origin.url git://git.osmocom.org/osmo-bts" returned status code 4: stdout: stderr: error: failed to write new configuration file at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1996) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1964) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1960) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommand(CliGitAPIImpl.java:1597) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommand(CliGitAPIImpl.java:1609) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.setRemoteUrl(CliGitAPIImpl.java:1243) at hudson.plugins.git.GitAPI.setRemoteUrl(GitAPI.java:160) at sun.reflect.GeneratedMethodAccessor26.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at hudson.remoting.RemoteInvocationHandler$RPCRequest.perform(RemoteInvocationHandler.java:922) at hudson.remoting.RemoteInvocationHandler$RPCRequest.call(RemoteInvocationHandler.java:896) at hudson.remoting.RemoteInvocationHandler$RPCRequest.call(RemoteInvocationHandler.java:853) at hudson.remoting.UserRequest.perform(UserRequest.java:207) at hudson.remoting.UserRequest.perform(UserRequest.java:53) at hudson.remoting.Request$2.run(Request.java:358) at hudson.remoting.InterceptingExecutorService$1.call(InterceptingExecutorService.java:72) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:748) Suppressed: hudson.remoting.Channel$CallSiteStackTrace: Remote call to build2-deb9build-ansible at hudson.remoting.Channel.attachCallSiteStackTrace(Channel.java:1693) at hudson.remoting.UserResponse.retrieve(UserRequest.java:310) at hudson.remoting.Channel.call(Channel.java:908) at hudson.remoting.RemoteInvocationHandler.invoke(RemoteInvocationHandler.java:281) at com.sun.proxy.$Proxy56.setRemoteUrl(Unknown Source) at org.jenkinsci.plugins.gitclient.RemoteGitImpl.setRemoteUrl(RemoteGitImpl.java:295) at hudson.plugins.git.GitSCM.fetchFrom(GitSCM.java:850) at hudson.plugins.git.GitSCM.retrieveChanges(GitSCM.java:1129) at hudson.plugins.git.GitSCM.checkout(GitSCM.java:1160) at hudson.scm.SCM.checkout(SCM.java:495) at hudson.model.AbstractProject.checkout(AbstractProject.java:1202) at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:574) at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:86) at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:499) at hudson.model.Run.execute(Run.java:1724) at hudson.matrix.MatrixRun.run(MatrixRun.java:146) at hudson.model.ResourceController.execute(ResourceController.java:97) at hudson.model.Executor.run(Executor.java:429) ERROR: Error fetching remote repo 'origin' [WARNINGS]Skipping publisher since build result is FAILURE From jenkins at lists.osmocom.org Fri Apr 6 06:53:07 2018 From: jenkins at lists.osmocom.org (jenkins at lists.osmocom.org) Date: Fri, 6 Apr 2018 06:53:07 +0000 (UTC) Subject: =?UTF-8?Q?Build_failed_in_Jenkins:_master-osmo-bts_=C2=BB_sysmo, sup?= =?UTF-8?Q?erfemto=5Fv3.0.1pre,default,osmocom-master-debian9_#469?= In-Reply-To: <1483875036.65.1522997417565.JavaMail.jenkins@jenkins.osmocom.org> References: <1483875036.65.1522997417565.JavaMail.jenkins@jenkins.osmocom.org> Message-ID: <697067561.73.1522997587582.JavaMail.jenkins@jenkins.osmocom.org> See ------------------------------------------ [...truncated 2.63 KB...] ERROR: Error fetching remote repo 'origin' hudson.plugins.git.GitException: Failed to fetch from git://git.osmocom.org/osmo-bts at hudson.plugins.git.GitSCM.fetchFrom(GitSCM.java:862) at hudson.plugins.git.GitSCM.retrieveChanges(GitSCM.java:1129) at hudson.plugins.git.GitSCM.checkout(GitSCM.java:1160) at hudson.scm.SCM.checkout(SCM.java:495) at hudson.model.AbstractProject.checkout(AbstractProject.java:1202) at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:574) at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:86) at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:499) at hudson.model.Run.execute(Run.java:1724) at hudson.matrix.MatrixRun.run(MatrixRun.java:146) at hudson.model.ResourceController.execute(ResourceController.java:97) at hudson.model.Executor.run(Executor.java:429) Caused by: hudson.plugins.git.GitException: Command "git config remote.origin.url git://git.osmocom.org/osmo-bts" returned status code 4: stdout: stderr: error: failed to write new configuration file at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1996) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1964) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1960) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommand(CliGitAPIImpl.java:1597) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommand(CliGitAPIImpl.java:1609) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.setRemoteUrl(CliGitAPIImpl.java:1243) at hudson.plugins.git.GitAPI.setRemoteUrl(GitAPI.java:160) at sun.reflect.GeneratedMethodAccessor26.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at hudson.remoting.RemoteInvocationHandler$RPCRequest.perform(RemoteInvocationHandler.java:922) at hudson.remoting.RemoteInvocationHandler$RPCRequest.call(RemoteInvocationHandler.java:896) at hudson.remoting.RemoteInvocationHandler$RPCRequest.call(RemoteInvocationHandler.java:853) at hudson.remoting.UserRequest.perform(UserRequest.java:207) at hudson.remoting.UserRequest.perform(UserRequest.java:53) at hudson.remoting.Request$2.run(Request.java:358) at hudson.remoting.InterceptingExecutorService$1.call(InterceptingExecutorService.java:72) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:748) Suppressed: hudson.remoting.Channel$CallSiteStackTrace: Remote call to build2-deb9build-ansible at hudson.remoting.Channel.attachCallSiteStackTrace(Channel.java:1693) at hudson.remoting.UserResponse.retrieve(UserRequest.java:310) at hudson.remoting.Channel.call(Channel.java:908) at hudson.remoting.RemoteInvocationHandler.invoke(RemoteInvocationHandler.java:281) at com.sun.proxy.$Proxy56.setRemoteUrl(Unknown Source) at org.jenkinsci.plugins.gitclient.RemoteGitImpl.setRemoteUrl(RemoteGitImpl.java:295) at hudson.plugins.git.GitSCM.fetchFrom(GitSCM.java:850) at hudson.plugins.git.GitSCM.retrieveChanges(GitSCM.java:1129) at hudson.plugins.git.GitSCM.checkout(GitSCM.java:1160) at hudson.scm.SCM.checkout(SCM.java:495) at hudson.model.AbstractProject.checkout(AbstractProject.java:1202) at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:574) at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:86) at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:499) at hudson.model.Run.execute(Run.java:1724) at hudson.matrix.MatrixRun.run(MatrixRun.java:146) at hudson.model.ResourceController.execute(ResourceController.java:97) at hudson.model.Executor.run(Executor.java:429) ERROR: Error fetching remote repo 'origin' Retrying after 10 seconds > git rev-parse --is-inside-work-tree # timeout=10 Fetching changes from the remote Git repository > git config remote.origin.url git://git.osmocom.org/osmo-bts # timeout=10 ERROR: Error fetching remote repo 'origin' hudson.plugins.git.GitException: Failed to fetch from git://git.osmocom.org/osmo-bts at hudson.plugins.git.GitSCM.fetchFrom(GitSCM.java:862) at hudson.plugins.git.GitSCM.retrieveChanges(GitSCM.java:1129) at hudson.plugins.git.GitSCM.checkout(GitSCM.java:1160) at hudson.scm.SCM.checkout(SCM.java:495) at hudson.model.AbstractProject.checkout(AbstractProject.java:1202) at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:574) at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:86) at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:499) at hudson.model.Run.execute(Run.java:1724) at hudson.matrix.MatrixRun.run(MatrixRun.java:146) at hudson.model.ResourceController.execute(ResourceController.java:97) at hudson.model.Executor.run(Executor.java:429) Caused by: hudson.plugins.git.GitException: Command "git config remote.origin.url git://git.osmocom.org/osmo-bts" returned status code 4: stdout: stderr: error: failed to write new configuration file at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1996) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1964) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1960) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommand(CliGitAPIImpl.java:1597) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommand(CliGitAPIImpl.java:1609) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.setRemoteUrl(CliGitAPIImpl.java:1243) at hudson.plugins.git.GitAPI.setRemoteUrl(GitAPI.java:160) at sun.reflect.GeneratedMethodAccessor26.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at hudson.remoting.RemoteInvocationHandler$RPCRequest.perform(RemoteInvocationHandler.java:922) at hudson.remoting.RemoteInvocationHandler$RPCRequest.call(RemoteInvocationHandler.java:896) at hudson.remoting.RemoteInvocationHandler$RPCRequest.call(RemoteInvocationHandler.java:853) at hudson.remoting.UserRequest.perform(UserRequest.java:207) at hudson.remoting.UserRequest.perform(UserRequest.java:53) at hudson.remoting.Request$2.run(Request.java:358) at hudson.remoting.InterceptingExecutorService$1.call(InterceptingExecutorService.java:72) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:748) Suppressed: hudson.remoting.Channel$CallSiteStackTrace: Remote call to build2-deb9build-ansible at hudson.remoting.Channel.attachCallSiteStackTrace(Channel.java:1693) at hudson.remoting.UserResponse.retrieve(UserRequest.java:310) at hudson.remoting.Channel.call(Channel.java:908) at hudson.remoting.RemoteInvocationHandler.invoke(RemoteInvocationHandler.java:281) at com.sun.proxy.$Proxy56.setRemoteUrl(Unknown Source) at org.jenkinsci.plugins.gitclient.RemoteGitImpl.setRemoteUrl(RemoteGitImpl.java:295) at hudson.plugins.git.GitSCM.fetchFrom(GitSCM.java:850) at hudson.plugins.git.GitSCM.retrieveChanges(GitSCM.java:1129) at hudson.plugins.git.GitSCM.checkout(GitSCM.java:1160) at hudson.scm.SCM.checkout(SCM.java:495) at hudson.model.AbstractProject.checkout(AbstractProject.java:1202) at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:574) at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:86) at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:499) at hudson.model.Run.execute(Run.java:1724) at hudson.matrix.MatrixRun.run(MatrixRun.java:146) at hudson.model.ResourceController.execute(ResourceController.java:97) at hudson.model.Executor.run(Executor.java:429) ERROR: Error fetching remote repo 'origin' Retrying after 10 seconds > git rev-parse --is-inside-work-tree # timeout=10 Fetching changes from the remote Git repository > git config remote.origin.url git://git.osmocom.org/osmo-bts # timeout=10 ERROR: Error fetching remote repo 'origin' hudson.plugins.git.GitException: Failed to fetch from git://git.osmocom.org/osmo-bts at hudson.plugins.git.GitSCM.fetchFrom(GitSCM.java:862) at hudson.plugins.git.GitSCM.retrieveChanges(GitSCM.java:1129) at hudson.plugins.git.GitSCM.checkout(GitSCM.java:1160) at hudson.scm.SCM.checkout(SCM.java:495) at hudson.model.AbstractProject.checkout(AbstractProject.java:1202) at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:574) at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:86) at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:499) at hudson.model.Run.execute(Run.java:1724) at hudson.matrix.MatrixRun.run(MatrixRun.java:146) at hudson.model.ResourceController.execute(ResourceController.java:97) at hudson.model.Executor.run(Executor.java:429) Caused by: hudson.plugins.git.GitException: Command "git config remote.origin.url git://git.osmocom.org/osmo-bts" returned status code 4: stdout: stderr: error: failed to write new configuration file at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1996) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1964) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1960) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommand(CliGitAPIImpl.java:1597) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommand(CliGitAPIImpl.java:1609) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.setRemoteUrl(CliGitAPIImpl.java:1243) at hudson.plugins.git.GitAPI.setRemoteUrl(GitAPI.java:160) at sun.reflect.GeneratedMethodAccessor26.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at hudson.remoting.RemoteInvocationHandler$RPCRequest.perform(RemoteInvocationHandler.java:922) at hudson.remoting.RemoteInvocationHandler$RPCRequest.call(RemoteInvocationHandler.java:896) at hudson.remoting.RemoteInvocationHandler$RPCRequest.call(RemoteInvocationHandler.java:853) at hudson.remoting.UserRequest.perform(UserRequest.java:207) at hudson.remoting.UserRequest.perform(UserRequest.java:53) at hudson.remoting.Request$2.run(Request.java:358) at hudson.remoting.InterceptingExecutorService$1.call(InterceptingExecutorService.java:72) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:748) Suppressed: hudson.remoting.Channel$CallSiteStackTrace: Remote call to build2-deb9build-ansible at hudson.remoting.Channel.attachCallSiteStackTrace(Channel.java:1693) at hudson.remoting.UserResponse.retrieve(UserRequest.java:310) at hudson.remoting.Channel.call(Channel.java:908) at hudson.remoting.RemoteInvocationHandler.invoke(RemoteInvocationHandler.java:281) at com.sun.proxy.$Proxy56.setRemoteUrl(Unknown Source) at org.jenkinsci.plugins.gitclient.RemoteGitImpl.setRemoteUrl(RemoteGitImpl.java:295) at hudson.plugins.git.GitSCM.fetchFrom(GitSCM.java:850) at hudson.plugins.git.GitSCM.retrieveChanges(GitSCM.java:1129) at hudson.plugins.git.GitSCM.checkout(GitSCM.java:1160) at hudson.scm.SCM.checkout(SCM.java:495) at hudson.model.AbstractProject.checkout(AbstractProject.java:1202) at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:574) at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:86) at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:499) at hudson.model.Run.execute(Run.java:1724) at hudson.matrix.MatrixRun.run(MatrixRun.java:146) at hudson.model.ResourceController.execute(ResourceController.java:97) at hudson.model.Executor.run(Executor.java:429) ERROR: Error fetching remote repo 'origin' Retrying after 10 seconds > git rev-parse --is-inside-work-tree # timeout=10 Fetching changes from the remote Git repository > git config remote.origin.url git://git.osmocom.org/osmo-bts # timeout=10 ERROR: Error fetching remote repo 'origin' hudson.plugins.git.GitException: Failed to fetch from git://git.osmocom.org/osmo-bts at hudson.plugins.git.GitSCM.fetchFrom(GitSCM.java:862) at hudson.plugins.git.GitSCM.retrieveChanges(GitSCM.java:1129) at hudson.plugins.git.GitSCM.checkout(GitSCM.java:1160) at hudson.scm.SCM.checkout(SCM.java:495) at hudson.model.AbstractProject.checkout(AbstractProject.java:1202) at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:574) at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:86) at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:499) at hudson.model.Run.execute(Run.java:1724) at hudson.matrix.MatrixRun.run(MatrixRun.java:146) at hudson.model.ResourceController.execute(ResourceController.java:97) at hudson.model.Executor.run(Executor.java:429) Caused by: hudson.plugins.git.GitException: Command "git config remote.origin.url git://git.osmocom.org/osmo-bts" returned status code 4: stdout: stderr: error: failed to write new configuration file at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1996) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1964) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1960) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommand(CliGitAPIImpl.java:1597) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommand(CliGitAPIImpl.java:1609) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.setRemoteUrl(CliGitAPIImpl.java:1243) at hudson.plugins.git.GitAPI.setRemoteUrl(GitAPI.java:160) at sun.reflect.GeneratedMethodAccessor26.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at hudson.remoting.RemoteInvocationHandler$RPCRequest.perform(RemoteInvocationHandler.java:922) at hudson.remoting.RemoteInvocationHandler$RPCRequest.call(RemoteInvocationHandler.java:896) at hudson.remoting.RemoteInvocationHandler$RPCRequest.call(RemoteInvocationHandler.java:853) at hudson.remoting.UserRequest.perform(UserRequest.java:207) at hudson.remoting.UserRequest.perform(UserRequest.java:53) at hudson.remoting.Request$2.run(Request.java:358) at hudson.remoting.InterceptingExecutorService$1.call(InterceptingExecutorService.java:72) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:748) Suppressed: hudson.remoting.Channel$CallSiteStackTrace: Remote call to build2-deb9build-ansible at hudson.remoting.Channel.attachCallSiteStackTrace(Channel.java:1693) at hudson.remoting.UserResponse.retrieve(UserRequest.java:310) at hudson.remoting.Channel.call(Channel.java:908) at hudson.remoting.RemoteInvocationHandler.invoke(RemoteInvocationHandler.java:281) at com.sun.proxy.$Proxy56.setRemoteUrl(Unknown Source) at org.jenkinsci.plugins.gitclient.RemoteGitImpl.setRemoteUrl(RemoteGitImpl.java:295) at hudson.plugins.git.GitSCM.fetchFrom(GitSCM.java:850) at hudson.plugins.git.GitSCM.retrieveChanges(GitSCM.java:1129) at hudson.plugins.git.GitSCM.checkout(GitSCM.java:1160) at hudson.scm.SCM.checkout(SCM.java:495) at hudson.model.AbstractProject.checkout(AbstractProject.java:1202) at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:574) at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:86) at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:499) at hudson.model.Run.execute(Run.java:1724) at hudson.matrix.MatrixRun.run(MatrixRun.java:146) at hudson.model.ResourceController.execute(ResourceController.java:97) at hudson.model.Executor.run(Executor.java:429) ERROR: Error fetching remote repo 'origin' [WARNINGS]Skipping publisher since build result is FAILURE From jenkins at lists.osmocom.org Fri Apr 6 06:53:23 2018 From: jenkins at lists.osmocom.org (jenkins at lists.osmocom.org) Date: Fri, 6 Apr 2018 06:53:23 +0000 (UTC) Subject: =?UTF-8?Q?Build_failed_in_Jenkins:_master-osmo-pcu_=C2=BB_m?= =?UTF-8?Q?aster,osmocom-master-debian9,none,False_#355?= Message-ID: <99062621.75.1522997603486.JavaMail.jenkins@jenkins.osmocom.org> See ------------------------------------------ [...truncated 1.96 KB...] ERROR: Error fetching remote repo 'origin' hudson.plugins.git.GitException: Failed to fetch from git://git.osmocom.org/osmo-pcu at hudson.plugins.git.GitSCM.fetchFrom(GitSCM.java:862) at hudson.plugins.git.GitSCM.retrieveChanges(GitSCM.java:1129) at hudson.plugins.git.GitSCM.checkout(GitSCM.java:1160) at hudson.scm.SCM.checkout(SCM.java:495) at hudson.model.AbstractProject.checkout(AbstractProject.java:1202) at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:574) at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:86) at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:499) at hudson.model.Run.execute(Run.java:1724) at hudson.matrix.MatrixRun.run(MatrixRun.java:146) at hudson.model.ResourceController.execute(ResourceController.java:97) at hudson.model.Executor.run(Executor.java:429) Caused by: hudson.plugins.git.GitException: Command "git config remote.origin.url git://git.osmocom.org/osmo-pcu" returned status code 4: stdout: stderr: error: failed to write new configuration file at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1996) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1964) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1960) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommand(CliGitAPIImpl.java:1597) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommand(CliGitAPIImpl.java:1609) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.setRemoteUrl(CliGitAPIImpl.java:1243) at hudson.plugins.git.GitAPI.setRemoteUrl(GitAPI.java:160) at sun.reflect.GeneratedMethodAccessor26.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at hudson.remoting.RemoteInvocationHandler$RPCRequest.perform(RemoteInvocationHandler.java:922) at hudson.remoting.RemoteInvocationHandler$RPCRequest.call(RemoteInvocationHandler.java:896) at hudson.remoting.RemoteInvocationHandler$RPCRequest.call(RemoteInvocationHandler.java:853) at hudson.remoting.UserRequest.perform(UserRequest.java:207) at hudson.remoting.UserRequest.perform(UserRequest.java:53) at hudson.remoting.Request$2.run(Request.java:358) at hudson.remoting.InterceptingExecutorService$1.call(InterceptingExecutorService.java:72) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:748) Suppressed: hudson.remoting.Channel$CallSiteStackTrace: Remote call to build2-deb9build-ansible at hudson.remoting.Channel.attachCallSiteStackTrace(Channel.java:1693) at hudson.remoting.UserResponse.retrieve(UserRequest.java:310) at hudson.remoting.Channel.call(Channel.java:908) at hudson.remoting.RemoteInvocationHandler.invoke(RemoteInvocationHandler.java:281) at com.sun.proxy.$Proxy56.setRemoteUrl(Unknown Source) at org.jenkinsci.plugins.gitclient.RemoteGitImpl.setRemoteUrl(RemoteGitImpl.java:295) at hudson.plugins.git.GitSCM.fetchFrom(GitSCM.java:850) at hudson.plugins.git.GitSCM.retrieveChanges(GitSCM.java:1129) at hudson.plugins.git.GitSCM.checkout(GitSCM.java:1160) at hudson.scm.SCM.checkout(SCM.java:495) at hudson.model.AbstractProject.checkout(AbstractProject.java:1202) at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:574) at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:86) at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:499) at hudson.model.Run.execute(Run.java:1724) at hudson.matrix.MatrixRun.run(MatrixRun.java:146) at hudson.model.ResourceController.execute(ResourceController.java:97) at hudson.model.Executor.run(Executor.java:429) ERROR: Error fetching remote repo 'origin' Retrying after 10 seconds > git rev-parse --is-inside-work-tree # timeout=10 Fetching changes from the remote Git repository > git config remote.origin.url git://git.osmocom.org/osmo-pcu # timeout=10 ERROR: Error fetching remote repo 'origin' hudson.plugins.git.GitException: Failed to fetch from git://git.osmocom.org/osmo-pcu at hudson.plugins.git.GitSCM.fetchFrom(GitSCM.java:862) at hudson.plugins.git.GitSCM.retrieveChanges(GitSCM.java:1129) at hudson.plugins.git.GitSCM.checkout(GitSCM.java:1160) at hudson.scm.SCM.checkout(SCM.java:495) at hudson.model.AbstractProject.checkout(AbstractProject.java:1202) at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:574) at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:86) at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:499) at hudson.model.Run.execute(Run.java:1724) at hudson.matrix.MatrixRun.run(MatrixRun.java:146) at hudson.model.ResourceController.execute(ResourceController.java:97) at hudson.model.Executor.run(Executor.java:429) Caused by: hudson.plugins.git.GitException: Command "git config remote.origin.url git://git.osmocom.org/osmo-pcu" returned status code 4: stdout: stderr: error: failed to write new configuration file at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1996) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1964) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1960) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommand(CliGitAPIImpl.java:1597) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommand(CliGitAPIImpl.java:1609) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.setRemoteUrl(CliGitAPIImpl.java:1243) at hudson.plugins.git.GitAPI.setRemoteUrl(GitAPI.java:160) at sun.reflect.GeneratedMethodAccessor26.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at hudson.remoting.RemoteInvocationHandler$RPCRequest.perform(RemoteInvocationHandler.java:922) at hudson.remoting.RemoteInvocationHandler$RPCRequest.call(RemoteInvocationHandler.java:896) at hudson.remoting.RemoteInvocationHandler$RPCRequest.call(RemoteInvocationHandler.java:853) at hudson.remoting.UserRequest.perform(UserRequest.java:207) at hudson.remoting.UserRequest.perform(UserRequest.java:53) at hudson.remoting.Request$2.run(Request.java:358) at hudson.remoting.InterceptingExecutorService$1.call(InterceptingExecutorService.java:72) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:748) Suppressed: hudson.remoting.Channel$CallSiteStackTrace: Remote call to build2-deb9build-ansible at hudson.remoting.Channel.attachCallSiteStackTrace(Channel.java:1693) at hudson.remoting.UserResponse.retrieve(UserRequest.java:310) at hudson.remoting.Channel.call(Channel.java:908) at hudson.remoting.RemoteInvocationHandler.invoke(RemoteInvocationHandler.java:281) at com.sun.proxy.$Proxy56.setRemoteUrl(Unknown Source) at org.jenkinsci.plugins.gitclient.RemoteGitImpl.setRemoteUrl(RemoteGitImpl.java:295) at hudson.plugins.git.GitSCM.fetchFrom(GitSCM.java:850) at hudson.plugins.git.GitSCM.retrieveChanges(GitSCM.java:1129) at hudson.plugins.git.GitSCM.checkout(GitSCM.java:1160) at hudson.scm.SCM.checkout(SCM.java:495) at hudson.model.AbstractProject.checkout(AbstractProject.java:1202) at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:574) at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:86) at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:499) at hudson.model.Run.execute(Run.java:1724) at hudson.matrix.MatrixRun.run(MatrixRun.java:146) at hudson.model.ResourceController.execute(ResourceController.java:97) at hudson.model.Executor.run(Executor.java:429) ERROR: Error fetching remote repo 'origin' Retrying after 10 seconds > git rev-parse --is-inside-work-tree # timeout=10 Fetching changes from the remote Git repository > git config remote.origin.url git://git.osmocom.org/osmo-pcu # timeout=10 ERROR: Error fetching remote repo 'origin' hudson.plugins.git.GitException: Failed to fetch from git://git.osmocom.org/osmo-pcu at hudson.plugins.git.GitSCM.fetchFrom(GitSCM.java:862) at hudson.plugins.git.GitSCM.retrieveChanges(GitSCM.java:1129) at hudson.plugins.git.GitSCM.checkout(GitSCM.java:1160) at hudson.scm.SCM.checkout(SCM.java:495) at hudson.model.AbstractProject.checkout(AbstractProject.java:1202) at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:574) at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:86) at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:499) at hudson.model.Run.execute(Run.java:1724) at hudson.matrix.MatrixRun.run(MatrixRun.java:146) at hudson.model.ResourceController.execute(ResourceController.java:97) at hudson.model.Executor.run(Executor.java:429) Caused by: hudson.plugins.git.GitException: Command "git config remote.origin.url git://git.osmocom.org/osmo-pcu" returned status code 4: stdout: stderr: error: failed to write new configuration file at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1996) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1964) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1960) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommand(CliGitAPIImpl.java:1597) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommand(CliGitAPIImpl.java:1609) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.setRemoteUrl(CliGitAPIImpl.java:1243) at hudson.plugins.git.GitAPI.setRemoteUrl(GitAPI.java:160) at sun.reflect.GeneratedMethodAccessor26.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at hudson.remoting.RemoteInvocationHandler$RPCRequest.perform(RemoteInvocationHandler.java:922) at hudson.remoting.RemoteInvocationHandler$RPCRequest.call(RemoteInvocationHandler.java:896) at hudson.remoting.RemoteInvocationHandler$RPCRequest.call(RemoteInvocationHandler.java:853) at hudson.remoting.UserRequest.perform(UserRequest.java:207) at hudson.remoting.UserRequest.perform(UserRequest.java:53) at hudson.remoting.Request$2.run(Request.java:358) at hudson.remoting.InterceptingExecutorService$1.call(InterceptingExecutorService.java:72) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:748) Suppressed: hudson.remoting.Channel$CallSiteStackTrace: Remote call to build2-deb9build-ansible at hudson.remoting.Channel.attachCallSiteStackTrace(Channel.java:1693) at hudson.remoting.UserResponse.retrieve(UserRequest.java:310) at hudson.remoting.Channel.call(Channel.java:908) at hudson.remoting.RemoteInvocationHandler.invoke(RemoteInvocationHandler.java:281) at com.sun.proxy.$Proxy56.setRemoteUrl(Unknown Source) at org.jenkinsci.plugins.gitclient.RemoteGitImpl.setRemoteUrl(RemoteGitImpl.java:295) at hudson.plugins.git.GitSCM.fetchFrom(GitSCM.java:850) at hudson.plugins.git.GitSCM.retrieveChanges(GitSCM.java:1129) at hudson.plugins.git.GitSCM.checkout(GitSCM.java:1160) at hudson.scm.SCM.checkout(SCM.java:495) at hudson.model.AbstractProject.checkout(AbstractProject.java:1202) at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:574) at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:86) at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:499) at hudson.model.Run.execute(Run.java:1724) at hudson.matrix.MatrixRun.run(MatrixRun.java:146) at hudson.model.ResourceController.execute(ResourceController.java:97) at hudson.model.Executor.run(Executor.java:429) ERROR: Error fetching remote repo 'origin' Retrying after 10 seconds > git rev-parse --is-inside-work-tree # timeout=10 Fetching changes from the remote Git repository > git config remote.origin.url git://git.osmocom.org/osmo-pcu # timeout=10 ERROR: Error fetching remote repo 'origin' hudson.plugins.git.GitException: Failed to fetch from git://git.osmocom.org/osmo-pcu at hudson.plugins.git.GitSCM.fetchFrom(GitSCM.java:862) at hudson.plugins.git.GitSCM.retrieveChanges(GitSCM.java:1129) at hudson.plugins.git.GitSCM.checkout(GitSCM.java:1160) at hudson.scm.SCM.checkout(SCM.java:495) at hudson.model.AbstractProject.checkout(AbstractProject.java:1202) at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:574) at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:86) at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:499) at hudson.model.Run.execute(Run.java:1724) at hudson.matrix.MatrixRun.run(MatrixRun.java:146) at hudson.model.ResourceController.execute(ResourceController.java:97) at hudson.model.Executor.run(Executor.java:429) Caused by: hudson.plugins.git.GitException: Command "git config remote.origin.url git://git.osmocom.org/osmo-pcu" returned status code 4: stdout: stderr: error: failed to write new configuration file at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1996) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1964) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1960) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommand(CliGitAPIImpl.java:1597) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommand(CliGitAPIImpl.java:1609) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.setRemoteUrl(CliGitAPIImpl.java:1243) at hudson.plugins.git.GitAPI.setRemoteUrl(GitAPI.java:160) at sun.reflect.GeneratedMethodAccessor26.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at hudson.remoting.RemoteInvocationHandler$RPCRequest.perform(RemoteInvocationHandler.java:922) at hudson.remoting.RemoteInvocationHandler$RPCRequest.call(RemoteInvocationHandler.java:896) at hudson.remoting.RemoteInvocationHandler$RPCRequest.call(RemoteInvocationHandler.java:853) at hudson.remoting.UserRequest.perform(UserRequest.java:207) at hudson.remoting.UserRequest.perform(UserRequest.java:53) at hudson.remoting.Request$2.run(Request.java:358) at hudson.remoting.InterceptingExecutorService$1.call(InterceptingExecutorService.java:72) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:748) Suppressed: hudson.remoting.Channel$CallSiteStackTrace: Remote call to build2-deb9build-ansible at hudson.remoting.Channel.attachCallSiteStackTrace(Channel.java:1693) at hudson.remoting.UserResponse.retrieve(UserRequest.java:310) at hudson.remoting.Channel.call(Channel.java:908) at hudson.remoting.RemoteInvocationHandler.invoke(RemoteInvocationHandler.java:281) at com.sun.proxy.$Proxy56.setRemoteUrl(Unknown Source) at org.jenkinsci.plugins.gitclient.RemoteGitImpl.setRemoteUrl(RemoteGitImpl.java:295) at hudson.plugins.git.GitSCM.fetchFrom(GitSCM.java:850) at hudson.plugins.git.GitSCM.retrieveChanges(GitSCM.java:1129) at hudson.plugins.git.GitSCM.checkout(GitSCM.java:1160) at hudson.scm.SCM.checkout(SCM.java:495) at hudson.model.AbstractProject.checkout(AbstractProject.java:1202) at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:574) at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:86) at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:499) at hudson.model.Run.execute(Run.java:1724) at hudson.matrix.MatrixRun.run(MatrixRun.java:146) at hudson.model.ResourceController.execute(ResourceController.java:97) at hudson.model.Executor.run(Executor.java:429) ERROR: Error fetching remote repo 'origin' [WARNINGS]Skipping publisher since build result is FAILURE From jenkins at lists.osmocom.org Fri Apr 6 06:53:57 2018 From: jenkins at lists.osmocom.org (jenkins at lists.osmocom.org) Date: Fri, 6 Apr 2018 06:53:57 +0000 (UTC) Subject: =?UTF-8?Q?Build_failed_in_Jenkins:_master-osmo-pcu_=C2=BB_v?= =?UTF-8?Q?2017.01,osmocom-master-debian9,lc15,True_#355?= Message-ID: <1960525918.76.1522997637634.JavaMail.jenkins@jenkins.osmocom.org> See ------------------------------------------ [...truncated 1.96 KB...] ERROR: Error fetching remote repo 'origin' hudson.plugins.git.GitException: Failed to fetch from git://git.osmocom.org/osmo-pcu at hudson.plugins.git.GitSCM.fetchFrom(GitSCM.java:862) at hudson.plugins.git.GitSCM.retrieveChanges(GitSCM.java:1129) at hudson.plugins.git.GitSCM.checkout(GitSCM.java:1160) at hudson.scm.SCM.checkout(SCM.java:495) at hudson.model.AbstractProject.checkout(AbstractProject.java:1202) at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:574) at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:86) at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:499) at hudson.model.Run.execute(Run.java:1724) at hudson.matrix.MatrixRun.run(MatrixRun.java:146) at hudson.model.ResourceController.execute(ResourceController.java:97) at hudson.model.Executor.run(Executor.java:429) Caused by: hudson.plugins.git.GitException: Command "git config remote.origin.url git://git.osmocom.org/osmo-pcu" returned status code 4: stdout: stderr: error: failed to write new configuration file at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1996) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1964) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1960) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommand(CliGitAPIImpl.java:1597) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommand(CliGitAPIImpl.java:1609) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.setRemoteUrl(CliGitAPIImpl.java:1243) at hudson.plugins.git.GitAPI.setRemoteUrl(GitAPI.java:160) at sun.reflect.GeneratedMethodAccessor26.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at hudson.remoting.RemoteInvocationHandler$RPCRequest.perform(RemoteInvocationHandler.java:922) at hudson.remoting.RemoteInvocationHandler$RPCRequest.call(RemoteInvocationHandler.java:896) at hudson.remoting.RemoteInvocationHandler$RPCRequest.call(RemoteInvocationHandler.java:853) at hudson.remoting.UserRequest.perform(UserRequest.java:207) at hudson.remoting.UserRequest.perform(UserRequest.java:53) at hudson.remoting.Request$2.run(Request.java:358) at hudson.remoting.InterceptingExecutorService$1.call(InterceptingExecutorService.java:72) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:748) Suppressed: hudson.remoting.Channel$CallSiteStackTrace: Remote call to build2-deb9build-ansible at hudson.remoting.Channel.attachCallSiteStackTrace(Channel.java:1693) at hudson.remoting.UserResponse.retrieve(UserRequest.java:310) at hudson.remoting.Channel.call(Channel.java:908) at hudson.remoting.RemoteInvocationHandler.invoke(RemoteInvocationHandler.java:281) at com.sun.proxy.$Proxy56.setRemoteUrl(Unknown Source) at org.jenkinsci.plugins.gitclient.RemoteGitImpl.setRemoteUrl(RemoteGitImpl.java:295) at hudson.plugins.git.GitSCM.fetchFrom(GitSCM.java:850) at hudson.plugins.git.GitSCM.retrieveChanges(GitSCM.java:1129) at hudson.plugins.git.GitSCM.checkout(GitSCM.java:1160) at hudson.scm.SCM.checkout(SCM.java:495) at hudson.model.AbstractProject.checkout(AbstractProject.java:1202) at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:574) at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:86) at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:499) at hudson.model.Run.execute(Run.java:1724) at hudson.matrix.MatrixRun.run(MatrixRun.java:146) at hudson.model.ResourceController.execute(ResourceController.java:97) at hudson.model.Executor.run(Executor.java:429) ERROR: Error fetching remote repo 'origin' Retrying after 10 seconds > git rev-parse --is-inside-work-tree # timeout=10 Fetching changes from the remote Git repository > git config remote.origin.url git://git.osmocom.org/osmo-pcu # timeout=10 ERROR: Error fetching remote repo 'origin' hudson.plugins.git.GitException: Failed to fetch from git://git.osmocom.org/osmo-pcu at hudson.plugins.git.GitSCM.fetchFrom(GitSCM.java:862) at hudson.plugins.git.GitSCM.retrieveChanges(GitSCM.java:1129) at hudson.plugins.git.GitSCM.checkout(GitSCM.java:1160) at hudson.scm.SCM.checkout(SCM.java:495) at hudson.model.AbstractProject.checkout(AbstractProject.java:1202) at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:574) at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:86) at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:499) at hudson.model.Run.execute(Run.java:1724) at hudson.matrix.MatrixRun.run(MatrixRun.java:146) at hudson.model.ResourceController.execute(ResourceController.java:97) at hudson.model.Executor.run(Executor.java:429) Caused by: hudson.plugins.git.GitException: Command "git config remote.origin.url git://git.osmocom.org/osmo-pcu" returned status code 4: stdout: stderr: error: failed to write new configuration file at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1996) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1964) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1960) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommand(CliGitAPIImpl.java:1597) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommand(CliGitAPIImpl.java:1609) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.setRemoteUrl(CliGitAPIImpl.java:1243) at hudson.plugins.git.GitAPI.setRemoteUrl(GitAPI.java:160) at sun.reflect.GeneratedMethodAccessor26.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at hudson.remoting.RemoteInvocationHandler$RPCRequest.perform(RemoteInvocationHandler.java:922) at hudson.remoting.RemoteInvocationHandler$RPCRequest.call(RemoteInvocationHandler.java:896) at hudson.remoting.RemoteInvocationHandler$RPCRequest.call(RemoteInvocationHandler.java:853) at hudson.remoting.UserRequest.perform(UserRequest.java:207) at hudson.remoting.UserRequest.perform(UserRequest.java:53) at hudson.remoting.Request$2.run(Request.java:358) at hudson.remoting.InterceptingExecutorService$1.call(InterceptingExecutorService.java:72) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:748) Suppressed: hudson.remoting.Channel$CallSiteStackTrace: Remote call to build2-deb9build-ansible at hudson.remoting.Channel.attachCallSiteStackTrace(Channel.java:1693) at hudson.remoting.UserResponse.retrieve(UserRequest.java:310) at hudson.remoting.Channel.call(Channel.java:908) at hudson.remoting.RemoteInvocationHandler.invoke(RemoteInvocationHandler.java:281) at com.sun.proxy.$Proxy56.setRemoteUrl(Unknown Source) at org.jenkinsci.plugins.gitclient.RemoteGitImpl.setRemoteUrl(RemoteGitImpl.java:295) at hudson.plugins.git.GitSCM.fetchFrom(GitSCM.java:850) at hudson.plugins.git.GitSCM.retrieveChanges(GitSCM.java:1129) at hudson.plugins.git.GitSCM.checkout(GitSCM.java:1160) at hudson.scm.SCM.checkout(SCM.java:495) at hudson.model.AbstractProject.checkout(AbstractProject.java:1202) at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:574) at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:86) at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:499) at hudson.model.Run.execute(Run.java:1724) at hudson.matrix.MatrixRun.run(MatrixRun.java:146) at hudson.model.ResourceController.execute(ResourceController.java:97) at hudson.model.Executor.run(Executor.java:429) ERROR: Error fetching remote repo 'origin' Retrying after 10 seconds > git rev-parse --is-inside-work-tree # timeout=10 Fetching changes from the remote Git repository > git config remote.origin.url git://git.osmocom.org/osmo-pcu # timeout=10 ERROR: Error fetching remote repo 'origin' hudson.plugins.git.GitException: Failed to fetch from git://git.osmocom.org/osmo-pcu at hudson.plugins.git.GitSCM.fetchFrom(GitSCM.java:862) at hudson.plugins.git.GitSCM.retrieveChanges(GitSCM.java:1129) at hudson.plugins.git.GitSCM.checkout(GitSCM.java:1160) at hudson.scm.SCM.checkout(SCM.java:495) at hudson.model.AbstractProject.checkout(AbstractProject.java:1202) at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:574) at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:86) at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:499) at hudson.model.Run.execute(Run.java:1724) at hudson.matrix.MatrixRun.run(MatrixRun.java:146) at hudson.model.ResourceController.execute(ResourceController.java:97) at hudson.model.Executor.run(Executor.java:429) Caused by: hudson.plugins.git.GitException: Command "git config remote.origin.url git://git.osmocom.org/osmo-pcu" returned status code 4: stdout: stderr: error: failed to write new configuration file at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1996) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1964) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1960) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommand(CliGitAPIImpl.java:1597) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommand(CliGitAPIImpl.java:1609) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.setRemoteUrl(CliGitAPIImpl.java:1243) at hudson.plugins.git.GitAPI.setRemoteUrl(GitAPI.java:160) at sun.reflect.GeneratedMethodAccessor26.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at hudson.remoting.RemoteInvocationHandler$RPCRequest.perform(RemoteInvocationHandler.java:922) at hudson.remoting.RemoteInvocationHandler$RPCRequest.call(RemoteInvocationHandler.java:896) at hudson.remoting.RemoteInvocationHandler$RPCRequest.call(RemoteInvocationHandler.java:853) at hudson.remoting.UserRequest.perform(UserRequest.java:207) at hudson.remoting.UserRequest.perform(UserRequest.java:53) at hudson.remoting.Request$2.run(Request.java:358) at hudson.remoting.InterceptingExecutorService$1.call(InterceptingExecutorService.java:72) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:748) Suppressed: hudson.remoting.Channel$CallSiteStackTrace: Remote call to build2-deb9build-ansible at hudson.remoting.Channel.attachCallSiteStackTrace(Channel.java:1693) at hudson.remoting.UserResponse.retrieve(UserRequest.java:310) at hudson.remoting.Channel.call(Channel.java:908) at hudson.remoting.RemoteInvocationHandler.invoke(RemoteInvocationHandler.java:281) at com.sun.proxy.$Proxy56.setRemoteUrl(Unknown Source) at org.jenkinsci.plugins.gitclient.RemoteGitImpl.setRemoteUrl(RemoteGitImpl.java:295) at hudson.plugins.git.GitSCM.fetchFrom(GitSCM.java:850) at hudson.plugins.git.GitSCM.retrieveChanges(GitSCM.java:1129) at hudson.plugins.git.GitSCM.checkout(GitSCM.java:1160) at hudson.scm.SCM.checkout(SCM.java:495) at hudson.model.AbstractProject.checkout(AbstractProject.java:1202) at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:574) at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:86) at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:499) at hudson.model.Run.execute(Run.java:1724) at hudson.matrix.MatrixRun.run(MatrixRun.java:146) at hudson.model.ResourceController.execute(ResourceController.java:97) at hudson.model.Executor.run(Executor.java:429) ERROR: Error fetching remote repo 'origin' Retrying after 10 seconds > git rev-parse --is-inside-work-tree # timeout=10 Fetching changes from the remote Git repository > git config remote.origin.url git://git.osmocom.org/osmo-pcu # timeout=10 ERROR: Error fetching remote repo 'origin' hudson.plugins.git.GitException: Failed to fetch from git://git.osmocom.org/osmo-pcu at hudson.plugins.git.GitSCM.fetchFrom(GitSCM.java:862) at hudson.plugins.git.GitSCM.retrieveChanges(GitSCM.java:1129) at hudson.plugins.git.GitSCM.checkout(GitSCM.java:1160) at hudson.scm.SCM.checkout(SCM.java:495) at hudson.model.AbstractProject.checkout(AbstractProject.java:1202) at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:574) at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:86) at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:499) at hudson.model.Run.execute(Run.java:1724) at hudson.matrix.MatrixRun.run(MatrixRun.java:146) at hudson.model.ResourceController.execute(ResourceController.java:97) at hudson.model.Executor.run(Executor.java:429) Caused by: hudson.plugins.git.GitException: Command "git config remote.origin.url git://git.osmocom.org/osmo-pcu" returned status code 4: stdout: stderr: error: failed to write new configuration file at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1996) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1964) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1960) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommand(CliGitAPIImpl.java:1597) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommand(CliGitAPIImpl.java:1609) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.setRemoteUrl(CliGitAPIImpl.java:1243) at hudson.plugins.git.GitAPI.setRemoteUrl(GitAPI.java:160) at sun.reflect.GeneratedMethodAccessor26.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at hudson.remoting.RemoteInvocationHandler$RPCRequest.perform(RemoteInvocationHandler.java:922) at hudson.remoting.RemoteInvocationHandler$RPCRequest.call(RemoteInvocationHandler.java:896) at hudson.remoting.RemoteInvocationHandler$RPCRequest.call(RemoteInvocationHandler.java:853) at hudson.remoting.UserRequest.perform(UserRequest.java:207) at hudson.remoting.UserRequest.perform(UserRequest.java:53) at hudson.remoting.Request$2.run(Request.java:358) at hudson.remoting.InterceptingExecutorService$1.call(InterceptingExecutorService.java:72) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:748) Suppressed: hudson.remoting.Channel$CallSiteStackTrace: Remote call to build2-deb9build-ansible at hudson.remoting.Channel.attachCallSiteStackTrace(Channel.java:1693) at hudson.remoting.UserResponse.retrieve(UserRequest.java:310) at hudson.remoting.Channel.call(Channel.java:908) at hudson.remoting.RemoteInvocationHandler.invoke(RemoteInvocationHandler.java:281) at com.sun.proxy.$Proxy56.setRemoteUrl(Unknown Source) at org.jenkinsci.plugins.gitclient.RemoteGitImpl.setRemoteUrl(RemoteGitImpl.java:295) at hudson.plugins.git.GitSCM.fetchFrom(GitSCM.java:850) at hudson.plugins.git.GitSCM.retrieveChanges(GitSCM.java:1129) at hudson.plugins.git.GitSCM.checkout(GitSCM.java:1160) at hudson.scm.SCM.checkout(SCM.java:495) at hudson.model.AbstractProject.checkout(AbstractProject.java:1202) at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:574) at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:86) at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:499) at hudson.model.Run.execute(Run.java:1724) at hudson.matrix.MatrixRun.run(MatrixRun.java:146) at hudson.model.ResourceController.execute(ResourceController.java:97) at hudson.model.Executor.run(Executor.java:429) ERROR: Error fetching remote repo 'origin' [WARNINGS]Skipping publisher since build result is FAILURE From gerrit-no-reply at lists.osmocom.org Fri Apr 6 06:54:03 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Fri, 6 Apr 2018 06:54:03 +0000 Subject: osmo-msc[master]: unify allocation of gsm_subscriber_connection In-Reply-To: References: Message-ID: Patch Set 2: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7616 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Ia57b42a149a43f9c370b1310e2e1f512183993ea Gerrit-PatchSet: 2 Gerrit-Project: osmo-msc Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-HasComments: No From jenkins at lists.osmocom.org Fri Apr 6 06:54:10 2018 From: jenkins at lists.osmocom.org (jenkins at lists.osmocom.org) Date: Fri, 6 Apr 2018 06:54:10 +0000 (UTC) Subject: =?UTF-8?Q?Jenkins_build_is_back_to_normal_:_master-osmo-bts_=C2=BB?= =?UTF-8?Q?_oct+trx,master,default,osmocom-master-debian9_#469?= In-Reply-To: <1127369093.59.1522997373123.JavaMail.jenkins@jenkins.osmocom.org> References: <1127369093.59.1522997373123.JavaMail.jenkins@jenkins.osmocom.org> Message-ID: <1515542512.77.1522997650362.JavaMail.jenkins@jenkins.osmocom.org> See From gerrit-no-reply at lists.osmocom.org Fri Apr 6 06:54:29 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Fri, 6 Apr 2018 06:54:29 +0000 Subject: [MERGED] osmo-msc[master]: unify allocation of gsm_subscriber_connection In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: unify allocation of gsm_subscriber_connection ...................................................................... unify allocation of gsm_subscriber_connection The current msc_subscr_con_allocate() was in fact only used by msc_vlr_tests, while both a_iface_bssap.c and iucs.c did their own duplicate code of allocating the gsm_subscriber_connection struct. Unify. Drop the old msc_subscr_con_allocate(), instead add msc_subscr_conn_alloc(). The new function also takes via_ran and lac arguments directly. The conn allocation will soon be closely tied to the subscr_conn_fsm instance allocation, so place the new function definition alongside the other subscr_conn_fsm API, and match its naming ("conn"). Related: OS#3122 Change-Id: Ia57b42a149a43f9c370b1310e2e1f512183993ea --- M include/osmocom/msc/gsm_data.h M include/osmocom/msc/osmo_msc.h M src/libmsc/a_iface_bssap.c M src/libmsc/iucs.c M src/libmsc/subscr_conn.c M tests/msc_vlr/msc_vlr_test_rest.c M tests/msc_vlr/msc_vlr_tests.c 7 files changed, 27 insertions(+), 17 deletions(-) Approvals: Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/include/osmocom/msc/gsm_data.h b/include/osmocom/msc/gsm_data.h index 29abd5d..f3e1b94 100644 --- a/include/osmocom/msc/gsm_data.h +++ b/include/osmocom/msc/gsm_data.h @@ -374,7 +374,6 @@ char text[SMS_TEXT_SIZE]; }; -struct gsm_subscriber_connection *msc_subscr_con_allocate(struct gsm_network *network); void msc_subscr_con_free(struct gsm_subscriber_connection *conn); /* control interface handling */ diff --git a/include/osmocom/msc/osmo_msc.h b/include/osmocom/msc/osmo_msc.h index fb525e0..1334138 100644 --- a/include/osmocom/msc/osmo_msc.h +++ b/include/osmocom/msc/osmo_msc.h @@ -41,6 +41,9 @@ MSC_CONN_REJECT = 1, }; +struct gsm_subscriber_connection *msc_subscr_conn_alloc(struct gsm_network *network, + enum ran_type via_ran, uint16_t lac); + void msc_subscr_conn_update_id(struct gsm_subscriber_connection *conn, enum complete_layer3_type from, const char *id); char *msc_subscr_conn_get_conn_id(struct gsm_subscriber_connection *conn); diff --git a/src/libmsc/a_iface_bssap.c b/src/libmsc/a_iface_bssap.c index 743814c..1665e23 100644 --- a/src/libmsc/a_iface_bssap.c +++ b/src/libmsc/a_iface_bssap.c @@ -54,13 +54,9 @@ LOGP(DMSC, LOGL_DEBUG, "Allocating A-Interface subscriber conn: lac %i, conn_id %i\n", lac, conn_id); - conn = talloc_zero(network, struct gsm_subscriber_connection); + conn = msc_subscr_conn_alloc(network, RAN_GERAN_A, lac); if (!conn) return NULL; - - conn->network = network; - conn->via_ran = RAN_GERAN_A; - conn->lac = lac; conn->a.conn_id = conn_id; conn->a.scu = scu; @@ -69,7 +65,6 @@ * identify later which BSC is responsible for this subscriber connection */ memcpy(&conn->a.bsc_addr, &a_conn_info->bsc->bsc_addr, sizeof(conn->a.bsc_addr)); - llist_add_tail(&conn->entry, &network->subscr_conns); LOGPCONN(conn, LOGL_DEBUG, "A-Interface subscriber connection successfully allocated!\n"); return conn; } diff --git a/src/libmsc/iucs.c b/src/libmsc/iucs.c index d6da1f7..a3092f8 100644 --- a/src/libmsc/iucs.c +++ b/src/libmsc/iucs.c @@ -57,17 +57,12 @@ DEBUGP(DIUCS, "Allocating IuCS subscriber conn: lac %d, conn_id %" PRIx32 "\n", lac, ue->conn_id); - conn = talloc_zero(network, struct gsm_subscriber_connection); + conn = msc_subscr_conn_alloc(network, RAN_UTRAN_IU, lac); if (!conn) return NULL; - conn->network = network; - conn->via_ran = RAN_UTRAN_IU; conn->iu.ue_ctx = ue; conn->iu.ue_ctx->rab_assign_addr_enc = network->iu.rab_assign_addr_enc; - conn->lac = lac; - - llist_add_tail(&conn->entry, &network->subscr_conns); return conn; } diff --git a/src/libmsc/subscr_conn.c b/src/libmsc/subscr_conn.c index fc89a66..5629d26 100644 --- a/src/libmsc/subscr_conn.c +++ b/src/libmsc/subscr_conn.c @@ -369,6 +369,26 @@ osmo_fsm_register(&subscr_conn_fsm); } +/* Allocate a new subscriber conn. */ +struct gsm_subscriber_connection *msc_subscr_conn_alloc(struct gsm_network *network, + enum ran_type via_ran, uint16_t lac) +{ + struct gsm_subscriber_connection *conn; + + conn = talloc_zero(network, struct gsm_subscriber_connection); + if (!conn) + return NULL; + + *conn = (struct gsm_subscriber_connection){ + .network = network, + .via_ran = via_ran, + .lac = lac, + }; + + llist_add_tail(&conn->entry, &network->subscr_conns); + return conn; +} + const struct value_string complete_layer3_type_names[] = { { COMPLETE_LAYER3_NONE, "NONE" }, { COMPLETE_LAYER3_LU, "LU" }, diff --git a/tests/msc_vlr/msc_vlr_test_rest.c b/tests/msc_vlr/msc_vlr_test_rest.c index 3f843f0..7fd7bae 100644 --- a/tests/msc_vlr/msc_vlr_test_rest.c +++ b/tests/msc_vlr/msc_vlr_test_rest.c @@ -31,7 +31,7 @@ EXPECT_ACCEPTED(false); btw("freshly allocated conn"); - g_conn = msc_subscr_con_allocate(net); + g_conn = msc_subscr_conn_alloc(net, RAN_GERAN_A, 123); EXPECT_ACCEPTED(false); btw("conn_fsm present, in state NEW"); diff --git a/tests/msc_vlr/msc_vlr_tests.c b/tests/msc_vlr/msc_vlr_tests.c index 523f74f..7c54057 100644 --- a/tests/msc_vlr/msc_vlr_tests.c +++ b/tests/msc_vlr/msc_vlr_tests.c @@ -191,9 +191,7 @@ struct gsm_subscriber_connection *conn_new(void) { struct gsm_subscriber_connection *conn; - conn = msc_subscr_con_allocate(net); - conn->via_ran = rx_from_ran; - conn->lac = 23; + conn = msc_subscr_conn_alloc(net, rx_from_ran, 23); if (conn->via_ran == RAN_UTRAN_IU) { struct ranap_ue_conn_ctx *ue_ctx = talloc_zero(conn, struct ranap_ue_conn_ctx); *ue_ctx = (struct ranap_ue_conn_ctx){ -- To view, visit https://gerrit.osmocom.org/7616 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: Ia57b42a149a43f9c370b1310e2e1f512183993ea Gerrit-PatchSet: 2 Gerrit-Project: osmo-msc Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder From jenkins at lists.osmocom.org Fri Apr 6 07:27:48 2018 From: jenkins at lists.osmocom.org (jenkins at lists.osmocom.org) Date: Fri, 6 Apr 2018 07:27:48 +0000 (UTC) Subject: =?UTF-8?Q?Build_failed_in_Jenkins:_master-osmo-bts_=C2=BB_sysmo,?= =?UTF-8?Q?femtobts=5Fv2.7,default,osmocom-master-debian9_#470?= Message-ID: <437369222.80.1522999668286.JavaMail.jenkins@jenkins.osmocom.org> See ------------------------------------------ Started by upstream project "master-osmo-bts" build number 470 originally caused by: Started by user laforge Building remotely on build2-deb9build-ansible (ttcn3 osmo-gsm-tester-build osmocom-gerrit-debian9 osmocom-master-debian9 coverity) in workspace > git rev-parse --is-inside-work-tree # timeout=10 Fetching changes from the remote Git repository > git config remote.origin.url git://git.osmocom.org/osmo-bts # timeout=10 Fetching upstream changes from git://git.osmocom.org/osmo-bts > git --version # timeout=10 > git fetch --tags --progress git://git.osmocom.org/osmo-bts +refs/heads/*:refs/remotes/origin/* Checking out Revision e5518b07d6fc3375a9e4004a2ed2680dbb2d178e (refs/remotes/origin/master) > git config core.sparsecheckout # timeout=10 > git checkout -f e5518b07d6fc3375a9e4004a2ed2680dbb2d178e Commit message: "contrib: jenkins_bts_model: Fix bashism expr" > git rev-list --no-walk e5518b07d6fc3375a9e4004a2ed2680dbb2d178e # timeout=10 [osmocom-master-debian9] $ /bin/sh -xe /tmp/jenkins4094156677962390259.sh + ./contrib/jenkins_bts_model.sh sysmo + ./contrib/jenkins_sysmobts.sh + base= + deps= + inst= + export deps inst + osmo-clean-workspace.sh + chmod -R +w . + git checkout -f HEAD + git clean -dxf -e -e layer1-headers Skipping repository deps/libosmocore + [ -d ] + git -C checkout -f HEAD error: pathspec 'HEAD' did not match any file(s) known to git. Build step 'Execute shell' marked build as failure [WARNINGS]Skipping publisher since build result is FAILURE From jenkins at lists.osmocom.org Fri Apr 6 07:28:44 2018 From: jenkins at lists.osmocom.org (jenkins at lists.osmocom.org) Date: Fri, 6 Apr 2018 07:28:44 +0000 (UTC) Subject: =?UTF-8?Q?Jenkins_build_is_back_to_normal_:_master-libosmo-netif_=C2=BB_a?= =?UTF-8?Q?1=3Ddefault,a2=3Ddefault,a3=3Ddefau?= =?UTF-8?Q?lt,osmocom-master-debian9_#423?= In-Reply-To: <670781481.64.1522997417524.JavaMail.jenkins@jenkins.osmocom.org> References: <670781481.64.1522997417524.JavaMail.jenkins@jenkins.osmocom.org> Message-ID: <1518627475.81.1522999724862.JavaMail.jenkins@jenkins.osmocom.org> See From jenkins at lists.osmocom.org Fri Apr 6 07:30:12 2018 From: jenkins at lists.osmocom.org (jenkins at lists.osmocom.org) Date: Fri, 6 Apr 2018 07:30:12 +0000 (UTC) Subject: =?UTF-8?Q?Jenkins_build_is_back_to_norm?= =?UTF-8?Q?al_:_master-osmo-bts_=C2=BB_lc15,or?= =?UTF-8?Q?igin/nrw/litecell15-next,default,osmocom-master-debian9_#470?= In-Reply-To: <1537760235.71.1522997539306.JavaMail.jenkins@jenkins.osmocom.org> References: <1537760235.71.1522997539306.JavaMail.jenkins@jenkins.osmocom.org> Message-ID: <649276116.82.1522999812594.JavaMail.jenkins@jenkins.osmocom.org> See From jenkins at lists.osmocom.org Fri Apr 6 07:30:36 2018 From: jenkins at lists.osmocom.org (jenkins at lists.osmocom.org) Date: Fri, 6 Apr 2018 07:30:36 +0000 (UTC) Subject: =?UTF-8?Q?Jenkins_build_is_back_to_normal_:_master-osmo-bts_=C2=BB_sy?= =?UTF-8?Q?smo,superfemto=5Fv2.4,default,osmocom-master-debian9_#470?= In-Reply-To: <96164468.70.1522997539306.JavaMail.jenkins@jenkins.osmocom.org> References: <96164468.70.1522997539306.JavaMail.jenkins@jenkins.osmocom.org> Message-ID: <36526502.84.1522999836274.JavaMail.jenkins@jenkins.osmocom.org> See From jenkins at lists.osmocom.org Fri Apr 6 07:30:35 2018 From: jenkins at lists.osmocom.org (jenkins at lists.osmocom.org) Date: Fri, 6 Apr 2018 07:30:35 +0000 (UTC) Subject: =?UTF-8?Q?Jenkins_build_is_back_to_normal_:_master-osmo-bts_=C2=BB_sy?= =?UTF-8?Q?smo,superfemto=5Fv5.1,default,osmocom-master-debian9_#470?= In-Reply-To: <1502531032.69.1522997539301.JavaMail.jenkins@jenkins.osmocom.org> References: <1502531032.69.1522997539301.JavaMail.jenkins@jenkins.osmocom.org> Message-ID: <476554355.83.1522999835608.JavaMail.jenkins@jenkins.osmocom.org> See From jenkins at lists.osmocom.org Fri Apr 6 07:31:57 2018 From: jenkins at lists.osmocom.org (jenkins at lists.osmocom.org) Date: Fri, 6 Apr 2018 07:31:57 +0000 (UTC) Subject: =?UTF-8?Q?Jenkins_build_is_back_to_normal_:_master-osmo-bts?= =?UTF-8?Q?_=C2=BB_lc15,master,default,osmocom-master-debian9_#470?= In-Reply-To: <1715701445.72.1522997572739.JavaMail.jenkins@jenkins.osmocom.org> References: <1715701445.72.1522997572739.JavaMail.jenkins@jenkins.osmocom.org> Message-ID: <681595290.85.1522999917288.JavaMail.jenkins@jenkins.osmocom.org> See From jenkins at lists.osmocom.org Fri Apr 6 07:32:00 2018 From: jenkins at lists.osmocom.org (jenkins at lists.osmocom.org) Date: Fri, 6 Apr 2018 07:32:00 +0000 (UTC) Subject: =?UTF-8?Q?Jenkins_build_is_back_to_normal_:_master-osmo-pc?= =?UTF-8?Q?u_=C2=BB_master,osmocom-master-debian9,lc15,True_#356?= In-Reply-To: <568624259.60.1522997373615.JavaMail.jenkins@jenkins.osmocom.org> References: <568624259.60.1522997373615.JavaMail.jenkins@jenkins.osmocom.org> Message-ID: <1196859203.86.1522999920109.JavaMail.jenkins@jenkins.osmocom.org> See From jenkins at lists.osmocom.org Fri Apr 6 07:32:37 2018 From: jenkins at lists.osmocom.org (jenkins at lists.osmocom.org) Date: Fri, 6 Apr 2018 07:32:37 +0000 (UTC) Subject: =?UTF-8?Q?Jenkins_build_is_back_to_normal_:_master-osmo-bts_?= =?UTF-8?Q?=C2=BB_sysmo,master,default,osmocom-master-debian9_#470?= In-Reply-To: <631944683.74.1522997587582.JavaMail.jenkins@jenkins.osmocom.org> References: <631944683.74.1522997587582.JavaMail.jenkins@jenkins.osmocom.org> Message-ID: <1370783489.87.1522999957601.JavaMail.jenkins@jenkins.osmocom.org> See From jenkins at lists.osmocom.org Fri Apr 6 07:32:42 2018 From: jenkins at lists.osmocom.org (jenkins at lists.osmocom.org) Date: Fri, 6 Apr 2018 07:32:42 +0000 (UTC) Subject: =?UTF-8?Q?Jenkins_build_is_back_to_normal_:_master-osmo-bts_=C2=BB_sysmo?= =?UTF-8?Q?,superfemto=5Fv3.0.1pre,default,osmocom-master-debian9_#470?= In-Reply-To: <697067561.73.1522997587582.JavaMail.jenkins@jenkins.osmocom.org> References: <697067561.73.1522997587582.JavaMail.jenkins@jenkins.osmocom.org> Message-ID: <1933655464.88.1522999962779.JavaMail.jenkins@jenkins.osmocom.org> See From jenkins at lists.osmocom.org Fri Apr 6 07:34:20 2018 From: jenkins at lists.osmocom.org (jenkins at lists.osmocom.org) Date: Fri, 6 Apr 2018 07:34:20 +0000 (UTC) Subject: =?UTF-8?Q?Jenkins_build_is_back_to_normal_:_master-osmo-sgsn_=C2=BB_--en?= =?UTF-8?Q?able-iu,a2=3Ddefault,a3=3Ddefault,osmocom-master-debian9_#2157?= In-Reply-To: <1674100882.66.1522997421389.JavaMail.jenkins@jenkins.osmocom.org> References: <1674100882.66.1522997421389.JavaMail.jenkins@jenkins.osmocom.org> Message-ID: <833439419.89.1523000060916.JavaMail.jenkins@jenkins.osmocom.org> See From jenkins at lists.osmocom.org Fri Apr 6 07:34:50 2018 From: jenkins at lists.osmocom.org (jenkins at lists.osmocom.org) Date: Fri, 6 Apr 2018 07:34:50 +0000 (UTC) Subject: =?UTF-8?Q?Jenkins_build_is_back_to_normal_:_master-osmo-sgsn_=C2=BB_--dis?= =?UTF-8?Q?able-iu,a2=3Ddefault,a3=3Ddefault,osmocom-master-debian9_#2157?= In-Reply-To: <1025233406.67.1522997448367.JavaMail.jenkins@jenkins.osmocom.org> References: <1025233406.67.1522997448367.JavaMail.jenkins@jenkins.osmocom.org> Message-ID: <555544572.90.1523000090538.JavaMail.jenkins@jenkins.osmocom.org> See From jenkins at lists.osmocom.org Fri Apr 6 07:35:22 2018 From: jenkins at lists.osmocom.org (jenkins at lists.osmocom.org) Date: Fri, 6 Apr 2018 07:35:22 +0000 (UTC) Subject: =?UTF-8?Q?Jenkins_build_is_back_to_normal_:?= =?UTF-8?Q?_master-openbsc_=C2=BB_--disable-iu,--?= =?UTF-8?Q?enable-mgcp-transcoding,--enable-?= =?UTF-8?Q?smpp,osmocom-master-debian9_#1576?= In-Reply-To: <1592471743.48.1522995401422.JavaMail.jenkins@jenkins.osmocom.org> References: <1592471743.48.1522995401422.JavaMail.jenkins@jenkins.osmocom.org> Message-ID: <2040615485.91.1523000122272.JavaMail.jenkins@jenkins.osmocom.org> See From jenkins at lists.osmocom.org Fri Apr 6 07:35:24 2018 From: jenkins at lists.osmocom.org (jenkins at lists.osmocom.org) Date: Fri, 6 Apr 2018 07:35:24 +0000 (UTC) Subject: =?UTF-8?Q?Jenkins_build_is_back_to_normal_:?= =?UTF-8?Q?_master-openbsc_=C2=BB_--disable-iu,--?= =?UTF-8?Q?disable-mgcp-transcoding,--enable?= =?UTF-8?Q?-smpp,osmocom-master-debian9_#1576?= In-Reply-To: <1869899667.47.1522995400268.JavaMail.jenkins@jenkins.osmocom.org> References: <1869899667.47.1522995400268.JavaMail.jenkins@jenkins.osmocom.org> Message-ID: <1985381826.92.1523000124756.JavaMail.jenkins@jenkins.osmocom.org> See From jenkins at lists.osmocom.org Fri Apr 6 07:35:50 2018 From: jenkins at lists.osmocom.org (jenkins at lists.osmocom.org) Date: Fri, 6 Apr 2018 07:35:50 +0000 (UTC) Subject: =?UTF-8?Q?Jenkins_build_is_back_to_normal_:_master-osmo-pcu_=C2=BB_origin?= =?UTF-8?Q?/nrw/litecell15-next,osmocom-master-debian9,lc15,True_#356?= In-Reply-To: <1877620889.68.1522997448368.JavaMail.jenkins@jenkins.osmocom.org> References: <1877620889.68.1522997448368.JavaMail.jenkins@jenkins.osmocom.org> Message-ID: <2023178189.93.1523000150265.JavaMail.jenkins@jenkins.osmocom.org> See From gerrit-no-reply at lists.osmocom.org Fri Apr 6 07:41:20 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Fri, 6 Apr 2018 07:41:20 +0000 Subject: [PATCH] osmo-ci[master]: add docker-cleanup.sh script Message-ID: Review at https://gerrit.osmocom.org/7655 add docker-cleanup.sh script This script should be executed regularly on all build slaves that have docker in order to discard unused images/layers. It would be a good idea to call "fstrim /" afterwards in order to get more SSD performance. However, the latter requires root access, and hence cannot be called by the 'osmocom-build' user and thus jenkins. Maybe we should install it as a cron job or systemd periodic timer job? Related: OS#3144 Change-Id: I688b952578507a9cc28fe682221b5c7e3a245519 --- A scripts/docker-cleanup.sh 1 file changed, 9 insertions(+), 0 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-ci refs/changes/55/7655/1 diff --git a/scripts/docker-cleanup.sh b/scripts/docker-cleanup.sh new file mode 100644 index 0000000..e7c7d1b --- /dev/null +++ b/scripts/docker-cleanup.sh @@ -0,0 +1,9 @@ +#!/bin/sh + +# delete all but the latest images +IMAGES=`docker image ls | grep \^osmocom-build | grep -v latest | awk -F ' ' '{print $1":"$2}'` +for f in $IMAGES; do + docker image rm $f +done + +docker image prune -f -- To view, visit https://gerrit.osmocom.org/7655 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I688b952578507a9cc28fe682221b5c7e3a245519 Gerrit-PatchSet: 1 Gerrit-Project: osmo-ci Gerrit-Branch: master Gerrit-Owner: Harald Welte From jenkins at lists.osmocom.org Fri Apr 6 07:46:53 2018 From: jenkins at lists.osmocom.org (jenkins at lists.osmocom.org) Date: Fri, 6 Apr 2018 07:46:53 +0000 (UTC) Subject: =?UTF-8?Q?Jenkins_build_is_back_to_normal_:_master-osmo-pc?= =?UTF-8?Q?u_=C2=BB_master,osmocom-master-debian9,none,False_#356?= In-Reply-To: <99062621.75.1522997603486.JavaMail.jenkins@jenkins.osmocom.org> References: <99062621.75.1522997603486.JavaMail.jenkins@jenkins.osmocom.org> Message-ID: <839814859.94.1523000813815.JavaMail.jenkins@jenkins.osmocom.org> See From jenkins at lists.osmocom.org Fri Apr 6 07:48:39 2018 From: jenkins at lists.osmocom.org (jenkins at lists.osmocom.org) Date: Fri, 6 Apr 2018 07:48:39 +0000 (UTC) Subject: =?UTF-8?Q?Jenkins_build_is_back_to_normal_:_master-osmo-pcu?= =?UTF-8?Q?_=C2=BB_v2017.01,osmocom-master-debian9,lc15,True_#356?= In-Reply-To: <1960525918.76.1522997637634.JavaMail.jenkins@jenkins.osmocom.org> References: <1960525918.76.1522997637634.JavaMail.jenkins@jenkins.osmocom.org> Message-ID: <894672250.95.1523000919764.JavaMail.jenkins@jenkins.osmocom.org> See From gerrit-no-reply at lists.osmocom.org Fri Apr 6 07:58:12 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Fri, 6 Apr 2018 07:58:12 +0000 Subject: libosmo-netif[master]: stream.c: osmo_stream_cli_open2: Remove wrong assumption in ... In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7650 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I25b33f4cdc496ae31ff240d445b9b2805091845c Gerrit-PatchSet: 1 Gerrit-Project: libosmo-netif Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Pau Espin Pedrol Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Fri Apr 6 07:58:14 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Fri, 6 Apr 2018 07:58:14 +0000 Subject: [MERGED] libosmo-netif[master]: stream.c: osmo_stream_cli_open2: Remove wrong assumption in ... In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: stream.c: osmo_stream_cli_open2: Remove wrong assumption in reconnect decision ...................................................................... stream.c: osmo_stream_cli_open2: Remove wrong assumption in reconnect decision Documentation of osmo_sock_init2 doesn't provide information of any specific value of errno set/expected after running the function. It is incorrect to expect a specific value of errno and looking at the implementation it is actually not a good idea to check it. If reconnect flag is set, let's reconnect always instead of looking at errno to decide. Change-Id: I25b33f4cdc496ae31ff240d445b9b2805091845c --- M src/stream.c 1 file changed, 1 insertion(+), 1 deletion(-) Approvals: Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/src/stream.c b/src/stream.c index 78dafd5..9dcb94b 100644 --- a/src/stream.c +++ b/src/stream.c @@ -453,7 +453,7 @@ cli->addr, cli->port, OSMO_SOCK_F_CONNECT|OSMO_SOCK_F_BIND); if (ret < 0) { - if (reconnect && errno == ECONNREFUSED) + if (reconnect) osmo_stream_cli_reconnect(cli); return ret; } -- To view, visit https://gerrit.osmocom.org/7650 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: I25b33f4cdc496ae31ff240d445b9b2805091845c Gerrit-PatchSet: 1 Gerrit-Project: libosmo-netif Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Pau Espin Pedrol From gerrit-no-reply at lists.osmocom.org Fri Apr 6 10:17:02 2018 From: gerrit-no-reply at lists.osmocom.org (Stefan Sperling) Date: Fri, 6 Apr 2018 10:17:02 +0000 Subject: osmo-ttcn3-hacks[master]: test GGSN support for optional GTP-U sequence numbers In-Reply-To: References: Message-ID: Patch Set 1: > Can you confirm that the encoder is not automatically filling in s_bit depending on whether an optional part is present or not? The encoder does not change the s_bit field we pass in the template. I don't see where such behaviour would take effect in the PDU defintion in GTPU_Types.ttcn. The only information this definition provides to the encoder about the s_bit field is that the opt_part field of the record shall be encoded if the s_bit is set (via the variant PRESENCE attribute). To defer setting of the s_bit to the encoder, it looks like we would need to declare something like a CROSSTAG attribute which sets the s_bit to '1' or '0' depending on the presence of the opt_part? I'm not quite sure yet how this could be expressed syntactically. -- To view, visit https://gerrit.osmocom.org/7623 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I1dc299407c61b1c865035add44067b8ab89001b3 Gerrit-PatchSet: 1 Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Owner: Stefan Sperling Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Pau Espin Pedrol Gerrit-Reviewer: Stefan Sperling Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Fri Apr 6 11:20:07 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Fri, 6 Apr 2018 11:20:07 +0000 Subject: [PATCH] libosmo-abis[master]: e1_input.h: Remove dead declaration of unexistent API ipacce... Message-ID: Review at https://gerrit.osmocom.org/7656 e1_input.h: Remove dead declaration of unexistent API ipaccess_setup The function was removed long time ago in af8ed983ffa1f750e3972e0fb850c16249943543. Change-Id: I34debe01d1d8b6f4420354666d2a25807dacc25c --- M include/osmocom/abis/e1_input.h 1 file changed, 0 insertions(+), 3 deletions(-) git pull ssh://gerrit.osmocom.org:29418/libosmo-abis refs/changes/56/7656/1 diff --git a/include/osmocom/abis/e1_input.h b/include/osmocom/abis/e1_input.h index 1a701f9..3fbce5b 100644 --- a/include/osmocom/abis/e1_input.h +++ b/include/osmocom/abis/e1_input.h @@ -303,9 +303,6 @@ int e1inp_vty_init(void); -struct gsm_network; -int ipaccess_setup(struct gsm_network *gsmnet); - /* activate superchannel or deactive to use timeslots. only valid for unixsocket driver */ void e1inp_ericsson_set_altc(struct e1inp_line *unixlinue, int superchannel); -- To view, visit https://gerrit.osmocom.org/7656 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I34debe01d1d8b6f4420354666d2a25807dacc25c Gerrit-PatchSet: 1 Gerrit-Project: libosmo-abis Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol From gerrit-no-reply at lists.osmocom.org Fri Apr 6 11:47:45 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Fri, 6 Apr 2018 11:47:45 +0000 Subject: [PATCH] docker-playground[master]: ttcn3-bts-test: Configure BTS to have dynamic PDCH Message-ID: Review at https://gerrit.osmocom.org/7657 ttcn3-bts-test: Configure BTS to have dynamic PDCH This is required by later versions of the osmo-ttcn3-hacks BTS test suite after Change-Id I2a42531dc5555ab4772d538fda462343605b8feb Change-Id: I229000ce7609845fdf24cafe1f5ec2bfa3f507e8 --- M ttcn3-bts-test/osmo-bsc.cfg 1 file changed, 2 insertions(+), 2 deletions(-) git pull ssh://gerrit.osmocom.org:29418/docker-playground refs/changes/57/7657/1 diff --git a/ttcn3-bts-test/osmo-bsc.cfg b/ttcn3-bts-test/osmo-bsc.cfg index e4e2493..b66d776 100644 --- a/ttcn3-bts-test/osmo-bsc.cfg +++ b/ttcn3-bts-test/osmo-bsc.cfg @@ -154,10 +154,10 @@ phys_chan_config TCH/F hopping enabled 0 timeslot 3 - phys_chan_config TCH/F + phys_chan_config TCH/F_PDCH hopping enabled 0 timeslot 4 - phys_chan_config TCH/F + phys_chan_config TCH/F_TCH/H_PDCH hopping enabled 0 timeslot 5 phys_chan_config TCH/H -- To view, visit https://gerrit.osmocom.org/7657 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I229000ce7609845fdf24cafe1f5ec2bfa3f507e8 Gerrit-PatchSet: 1 Gerrit-Project: docker-playground Gerrit-Branch: master Gerrit-Owner: Harald Welte From gerrit-no-reply at lists.osmocom.org Fri Apr 6 11:53:20 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Fri, 6 Apr 2018 11:53:20 +0000 Subject: [PATCH] osmo-ttcn3-hacks[master]: deps: Update titan.TestPorts.UNIX_DOMAIN_SOCKETasp_commit Message-ID: Review at https://gerrit.osmocom.org/7658 deps: Update titan.TestPorts.UNIX_DOMAIN_SOCKETasp_commit The osmocom fork of the titan.TestPorts.UNIX_DOMAIN_SOCKETasp master branch has been force-pushed in order to incorporate patch review comments from upstream TITAN. Change-Id: I23ec12fa5fb30796f37257cf5ea3fcd74d3ecb80 --- M deps/Makefile 1 file changed, 1 insertion(+), 1 deletion(-) git pull ssh://gerrit.osmocom.org:29418/osmo-ttcn3-hacks refs/changes/58/7658/1 diff --git a/deps/Makefile b/deps/Makefile index 46698e0..d1545fd 100644 --- a/deps/Makefile +++ b/deps/Makefile @@ -88,7 +88,7 @@ titan.TestPorts.TCPasp_commit= R.9.A titan.TestPorts.TELNETasp_commit= R.9.A titan.TestPorts.UDPasp_commit= R.8.A -titan.TestPorts.UNIX_DOMAIN_SOCKETasp_commit= R.2.A-4-g63d4ee3 +titan.TestPorts.UNIX_DOMAIN_SOCKETasp_commit= R.2.A-4-gbacd73d all: $(foreach dir,$(ALL_REPOS),$(dir)/update) clean: $(foreach dir,$(ALL_REPOS),$(dir)/clean) -- To view, visit https://gerrit.osmocom.org/7658 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I23ec12fa5fb30796f37257cf5ea3fcd74d3ecb80 Gerrit-PatchSet: 1 Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Owner: Harald Welte From gerrit-no-reply at lists.osmocom.org Fri Apr 6 11:55:59 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Fri, 6 Apr 2018 11:55:59 +0000 Subject: osmo-ttcn3-hacks[master]: deps: Update titan.TestPorts.UNIX_DOMAIN_SOCKETasp_commit In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7658 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I23ec12fa5fb30796f37257cf5ea3fcd74d3ecb80 Gerrit-PatchSet: 1 Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Owner: Harald Welte Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Fri Apr 6 11:56:00 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Fri, 6 Apr 2018 11:56:00 +0000 Subject: [MERGED] osmo-ttcn3-hacks[master]: deps: Update titan.TestPorts.UNIX_DOMAIN_SOCKETasp_commit In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: deps: Update titan.TestPorts.UNIX_DOMAIN_SOCKETasp_commit ...................................................................... deps: Update titan.TestPorts.UNIX_DOMAIN_SOCKETasp_commit The osmocom fork of the titan.TestPorts.UNIX_DOMAIN_SOCKETasp master branch has been force-pushed in order to incorporate patch review comments from upstream TITAN. Change-Id: I23ec12fa5fb30796f37257cf5ea3fcd74d3ecb80 --- M deps/Makefile 1 file changed, 1 insertion(+), 1 deletion(-) Approvals: Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/deps/Makefile b/deps/Makefile index 46698e0..d1545fd 100644 --- a/deps/Makefile +++ b/deps/Makefile @@ -88,7 +88,7 @@ titan.TestPorts.TCPasp_commit= R.9.A titan.TestPorts.TELNETasp_commit= R.9.A titan.TestPorts.UDPasp_commit= R.8.A -titan.TestPorts.UNIX_DOMAIN_SOCKETasp_commit= R.2.A-4-g63d4ee3 +titan.TestPorts.UNIX_DOMAIN_SOCKETasp_commit= R.2.A-4-gbacd73d all: $(foreach dir,$(ALL_REPOS),$(dir)/update) clean: $(foreach dir,$(ALL_REPOS),$(dir)/clean) -- To view, visit https://gerrit.osmocom.org/7658 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: I23ec12fa5fb30796f37257cf5ea3fcd74d3ecb80 Gerrit-PatchSet: 1 Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Owner: Harald Welte Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder From gerrit-no-reply at lists.osmocom.org Fri Apr 6 11:58:23 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Fri, 6 Apr 2018 11:58:23 +0000 Subject: osmocom-bb[master]: Merge branch 'fixeria/trx' into master In-Reply-To: References: Message-ID: Patch Set 2: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7263 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I83094ca021a0b84c107f7301e10a603e4b342e6e Gerrit-PatchSet: 2 Gerrit-Project: osmocom-bb Gerrit-Branch: master Gerrit-Owner: Vadim Yanitskiy Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Vadim Yanitskiy Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Fri Apr 6 11:59:07 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Fri, 6 Apr 2018 11:59:07 +0000 Subject: osmocom-bb[master]: Merge branch 'fixeria/trx' into master In-Reply-To: References: Message-ID: Patch Set 2: > The 9b1d398685e70e3bc9ed2fa1a07209a24e2b31b6 introduced an > unrelated change of 'src/host/layer23/.gitignore'. Probably, > this was accidentally done during some rebase process > in the past... > > @Harald, should I correct this in a separate change? > Or is it ok to recover here? either way is fine for me. -- To view, visit https://gerrit.osmocom.org/7263 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I83094ca021a0b84c107f7301e10a603e4b342e6e Gerrit-PatchSet: 2 Gerrit-Project: osmocom-bb Gerrit-Branch: master Gerrit-Owner: Vadim Yanitskiy Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Vadim Yanitskiy Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Fri Apr 6 12:23:33 2018 From: gerrit-no-reply at lists.osmocom.org (Stefan Sperling) Date: Fri, 6 Apr 2018 12:23:33 +0000 Subject: [PATCH] osmo-ttcn3-hacks[master]: test GGSN support for optional GTP-U sequence numbers In-Reply-To: References: Message-ID: Hello Jenkins Builder, I'd like you to reexamine a change. Please visit https://gerrit.osmocom.org/7623 to look at the new patch set (#2). test GGSN support for optional GTP-U sequence numbers Add VTY functionality to GGSN tests, and use the VTY to enable/disable GTP-U Tx sequence numbers in the running osmo-ggsn. The GTPU packet template now makes sequence numbers optional. A template created with its sequence number set to 'omit' will result in a packet without a sequence number, i.e. the 'sequence number present' bit in the packet header is cleared, and the sequence number field is omitted from the encoded GTPU T-PDU packet. Re-use the existing TC_pdp4_clients_interact() test for testing the behaviour of osmo-ggsn. This test is now run twice, once with and once without GTP-U Tx sequence numbers. Verify that packets relayed by osmo-ggsn match its "g-pdu tx-sequence-numbers" configuration setting. Change-Id: I1dc299407c61b1c865035add44067b8ab89001b3 Related: OS#2519 --- M ggsn_tests/GGSN_Tests.default M ggsn_tests/GGSN_Tests.ttcn M ggsn_tests/gen_links.sh M ggsn_tests/regen_makefile.sh M library/GTP_Templates.ttcn 5 files changed, 115 insertions(+), 16 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-ttcn3-hacks refs/changes/23/7623/2 diff --git a/ggsn_tests/GGSN_Tests.default b/ggsn_tests/GGSN_Tests.default index 2d57f89..ff0cd97 100644 --- a/ggsn_tests/GGSN_Tests.default +++ b/ggsn_tests/GGSN_Tests.default @@ -1,6 +1,14 @@ [LOGGING] [TESTPORT_PARAMETERS] +*.GGSNVTY.CTRL_MODE := "client" +*.GGSNVTY.CTRL_HOSTNAME := "127.0.0.1" +*.GGSNVTY.CTRL_PORTNUM := "4260" +*.GGSNVTY.CTRL_LOGIN_SKIPPED := "yes" +*.GGSNVTY.CTRL_DETECT_SERVER_DISCONNECTED := "yes" +*.GGSNVTY.CTRL_READMODE := "buffered" +*.GGSNVTY.CTRL_CLIENT_CLEANUP_LINEFEED := "yes" +*.GGSNVTY.PROMPT1 := "OsmoGGSN> " [MODULE_PARAMETERS] GGSN_Tests.m_bind_ip_gtpc := "127.0.42.1" @@ -11,5 +19,6 @@ GGSN_Tests.m_ggsn_ip4_dns2 := "8.8.8.8" GGSN_Tests.m_ggsn_ip6_dns1 := "2001:4860:4860::8888" GGSN_Tests.m_ggsn_ip6_dns2 := "2001:4860:4860::8844" +Osmocom_VTY_Functions.mp_prompt_prefix := "OsmoGGSN"; [EXECUTE] diff --git a/ggsn_tests/GGSN_Tests.ttcn b/ggsn_tests/GGSN_Tests.ttcn index 2b7de96..aac9f41 100644 --- a/ggsn_tests/GGSN_Tests.ttcn +++ b/ggsn_tests/GGSN_Tests.ttcn @@ -14,6 +14,8 @@ import from ICMP_Types all; import from ICMPv6_Types all; import from Native_Functions all; + import from Osmocom_VTY_Functions all; + import from TELNETasp_PortType all; const integer GTP0_PORT := 3386; const integer GTP1C_PORT := 2123; @@ -70,6 +72,42 @@ var uint16_t g_c_seq_nr; /* next to-be-sent GTP-U sequence number */ var uint16_t g_d_seq_nr; + + port TELNETasp_PT GGSNVTY; + var boolean use_gptu_txseq := true; + } + + private function f_init_vty() runs on GT_CT { + map(self:GGSNVTY, system:GGSNVTY); + f_vty_set_prompts(GGSNVTY); + f_vty_transceive(GGSNVTY, "enable"); + } + + private function f_vty_set_gpdu_txseq(boolean enable) runs on GT_CT { + f_vty_enter_config(GGSNVTY); + f_vty_transceive(GGSNVTY, "ggsn ggsn0"); + f_vty_transceive(GGSNVTY, "apn internet"); + if (enable) { + f_vty_transceive(GGSNVTY, "g-pdu tx-sequence-numbers"); + } else { + f_vty_transceive(GGSNVTY, "no g-pdu tx-sequence-numbers"); + } + f_vty_transceive(GGSNVTY, "end"); + } + + private function f_verify_gtpu_txseq(in PDU_GTPU gtpu, in boolean expect_gptu_txseq) return boolean { + if (expect_gptu_txseq) { + if (gtpu.s_bit != '1'B) { + log("GTPU sequence number expected but not present") + return false; + } + } else { + if (gtpu.s_bit != '0'B) { + log("GTPU sequence number not expected but present") + return false; + } + } + return true; } function f_init() runs on GT_CT { @@ -94,6 +132,9 @@ g_restart_ctr := f_rnd_octstring(1); g_c_seq_nr := f_rnd_int(65535); g_d_seq_nr := f_rnd_int(65535); + + f_init_vty(); + f_vty_set_gpdu_txseq(use_gptu_txseq); } /* Altstep implementing responses to any incoming echo requests */ @@ -148,8 +189,12 @@ /* send GTP-U for a given context and increment sequence number */ function f_send_gtpu(inout PdpContext ctx, in octetstring data) runs on GT_CT { - GTPU.send(ts_GTP1U_GPDU(g_peer_u, g_d_seq_nr, ctx.teid_remote, data)); - g_d_seq_nr := g_d_seq_nr + 1; + if (use_gptu_txseq) { + GTPU.send(ts_GTP1U_GPDU(g_peer_u, g_d_seq_nr, ctx.teid_remote, data)); + g_d_seq_nr := g_d_seq_nr + 1; + } else { + GTPU.send(ts_GTP1U_GPDU(g_peer_u, omit, ctx.teid_remote, data)); + } } /* send a PDP context activation */ @@ -539,6 +584,10 @@ T_default.start; alt { [] GTPU.receive(tr_GTPU_GPDU(g_peer_u, ?)) -> value ud { + if (f_verify_gtpu_txseq(ud.gtpu, use_gptu_txseq) == false) { + setverdict(fail); + stop; + } var octetstring gpdu := ud.gtpu.gtpu_IEs.g_PDU_IEs.data; var IPv4_packet ip4 := f_IPv4_dec(gpdu); if (ip4.header.ver != 4) { @@ -571,6 +620,10 @@ T_default.start; alt { [] GTPU.receive(tr_GTPU_GPDU(g_peer_u, ?)) -> value ud { + if (f_verify_gtpu_txseq(ud.gtpu, use_gptu_txseq) == false) { + setverdict(fail); + stop; + } var octetstring gpdu := ud.gtpu.gtpu_IEs.g_PDU_IEs.data; var IPv6_packet ip6 := f_IPv6_dec(gpdu); if (ip6.header.ver != 6 or ip6.header.nexthead != 58) { @@ -821,8 +874,8 @@ f_pdp_ctx_del(ctx, '1'B); } - /* Validate if different clients (pdp ctx) can reach one another through GGSN. */ - testcase TC_pdp4_clients_interact() runs on GT_CT { + /* Helper function for tests below. */ + function f_pdp4_clients_interact() runs on GT_CT { f_init(); var PdpContext ctxA := valueof(t_DefinePDP(f_rnd_imsi('26242'H), '1234'O, c_ApnInternet, valueof(t_EuaIPv4Dyn))); var PdpContext ctxB := valueof(t_DefinePDP(f_rnd_imsi('26242'H), '1234'O, c_ApnInternet, valueof(t_EuaIPv4Dyn))); @@ -834,6 +887,18 @@ f_wait_icmp4_echo_request(ctxB); f_pdp_ctx_del(ctxA, '1'B); + } + + /* Validate if different clients (pdp ctx) can reach one another through GGSN. */ + testcase TC_pdp4_clients_interact_with_txseq() runs on GT_CT { + use_gptu_txseq := true; + f_pdp4_clients_interact(); + } + + /* Validate if different clients (pdp ctx) can reach one another through GGSN (without Tx sequence number). */ + testcase TC_pdp4_clients_interact_without_txseq() runs on GT_CT { + use_gptu_txseq := false; + f_pdp4_clients_interact(); } testcase TC_echo_req_resp() runs on GT_CT { @@ -853,7 +918,8 @@ execute(TC_pdp4_act_deact_ipcp()); execute(TC_pdp4_act_deact_pcodns()); execute(TC_pdp4_act_deact_gtpu_access()); - execute(TC_pdp4_clients_interact()); + execute(TC_pdp4_clients_interact_with_txseq()); + execute(TC_pdp4_clients_interact_without_txseq()); execute(TC_pdp6_act_deact()); execute(TC_pdp6_act_deact_pcodns()); diff --git a/ggsn_tests/gen_links.sh b/ggsn_tests/gen_links.sh index 6ef52e1..4e012ae 100755 --- a/ggsn_tests/gen_links.sh +++ b/ggsn_tests/gen_links.sh @@ -40,9 +40,14 @@ FILES="GTPC_EncDec.cc GTPC_Types.ttcn GTPU_EncDec.cc GTPU_Types.ttcn" gen_links $DIR $FILES +DIR=$BASEDIR/titan.TestPorts.TELNETasp/src +FILES="TELNETasp_PT.cc TELNETasp_PT.hh TELNETasp_PortType.ttcn" +gen_links $DIR $FILES + DIR=../library FILES="General_Types.ttcn GSM_Types.ttcn Osmocom_Types.ttcn Native_Functions.ttcn Native_FunctionDefs.cc IPCP_Types.ttcn " FILES+="GTP_CodecPort.ttcn GTP_CodecPort_CtrlFunct.ttcn GTP_CodecPort_CtrlFunctDef.cc GTP_Templates.ttcn " +FILES+="Osmocom_VTY_Functions.ttcn " gen_links $DIR $FILES ignore_pp_results diff --git a/ggsn_tests/regen_makefile.sh b/ggsn_tests/regen_makefile.sh index 2fc74f7..6db1a3d 100755 --- a/ggsn_tests/regen_makefile.sh +++ b/ggsn_tests/regen_makefile.sh @@ -1,5 +1,5 @@ #!/bin/sh -FILES="*.ttcn IPL4asp_PT.cc IPL4asp_discovery.cc TCCConversion.cc TCCInterface.cc GTPC_EncDec.cc GTPU_EncDec.cc GTP_CodecPort_CtrlFunctDef.cc ICMPv6_EncDec.cc IP_EncDec.cc Native_FunctionDefs.cc UDP_EncDec.cc ICMP_EncDec.cc" +FILES="*.ttcn IPL4asp_PT.cc IPL4asp_discovery.cc TCCConversion.cc TCCInterface.cc GTPC_EncDec.cc GTPU_EncDec.cc GTP_CodecPort_CtrlFunctDef.cc ICMPv6_EncDec.cc IP_EncDec.cc Native_FunctionDefs.cc UDP_EncDec.cc ICMP_EncDec.cc TELNETasp_PT.cc" ../regen-makefile.sh GGSN_Tests.ttcn $FILES diff --git a/library/GTP_Templates.ttcn b/library/GTP_Templates.ttcn index d8a43c2..44ec439 100644 --- a/library/GTP_Templates.ttcn +++ b/library/GTP_Templates.ttcn @@ -545,15 +545,39 @@ gtpu_IEs := ies } + function f_GTPU_s_bit(template (omit) uint16_t seq) return BIT1 { + if (istemplatekind(seq, "omit")) { + return '0'B; + } + return '1'B; + } + + function f_GTPU_opt_part(template (omit) uint16_t seq) return template (omit) GTPU_Header_optional_part { + if (istemplatekind(seq, "omit")) { + return omit; + } + var GTPU_Header_optional_part ret := { + sequenceNumber := int2oct(valueof(seq), 2), + npduNumber := '00'O, + nextExtHeader := '00'O, + gTPU_extensionHeader_List := omit + }; + return ret; + } + /* generalized GTP-U send template */ - template PDU_GTPU ts_GTP1U_PDU(OCT1 msg_type, uint16_t seq, OCT4 teid, GTPU_IEs ies) := { + template PDU_GTPU ts_GTP1U_PDU(OCT1 msg_type, template (omit) uint16_t seq, OCT4 teid, GTPU_IEs ies) := { /* N-PDU Number flag (PN): the GTP-U header contains a meaningful N-PDU Number field if the PN * flag is set to 1. */ pn_bit := '0'B, /* we assume the encoder overwrites this if an optional part is given */ /* If the Sequence Number flag (S) is set to '1' the sequence number field is present and * meaningful otherwise it is set to '0'. For GTP-U messages Echo Request, Echo Response, - * Error Indication and Supported Extension Headers Notification, the S flag shall be set to '1'. */ - s_bit := '1'B, /* we assume the encoder overwrites this if an optional part is given */ + * Error Indication and Supported Extension Headers Notification, the S flag shall be set to '1'. + * + * Note that the caller must ensure that these conditions hold. + * The caller can either pass a sequence number (we set s_bit to '1'B) when appropriate, + * or may omit the sequence number (we set s_bit to '0'B). */ + s_bit := f_GTPU_s_bit(seq), /* Extension header presence */ e_bit := '0'B, spare := '0'B, @@ -564,12 +588,7 @@ messageType := msg_type, lengthf := 0, /* we assume encoder overwrites this */ teid := teid, - opt_part := { - sequenceNumber := int2oct(seq, 2), - npduNumber := '00'O, - nextExtHeader := '00'O, - gTPU_extensionHeader_List := omit - }, + opt_part := f_GTPU_opt_part(seq), gtpu_IEs := ies } @@ -610,7 +629,7 @@ } /* master template for sending a GTP-U user plane data */ - template Gtp1uUnitdata ts_GTP1U_GPDU(GtpPeer peer, uint16_t seq, OCT4 teid, octetstring data) := { + template Gtp1uUnitdata ts_GTP1U_GPDU(GtpPeer peer, template (omit) uint16_t seq, OCT4 teid, octetstring data) := { peer := peer, gtpu := ts_GTP1U_PDU('FF'O, seq, teid, { g_PDU_IEs := { data := data }}) } -- To view, visit https://gerrit.osmocom.org/7623 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newpatchset Gerrit-Change-Id: I1dc299407c61b1c865035add44067b8ab89001b3 Gerrit-PatchSet: 2 Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Owner: Stefan Sperling Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Pau Espin Pedrol Gerrit-Reviewer: Stefan Sperling From gerrit-no-reply at lists.osmocom.org Fri Apr 6 12:24:06 2018 From: gerrit-no-reply at lists.osmocom.org (Stefan Sperling) Date: Fri, 6 Apr 2018 12:24:06 +0000 Subject: osmo-ttcn3-hacks[master]: test GGSN support for optional GTP-U sequence numbers In-Reply-To: References: Message-ID: Patch Set 1: Thanks for the feedback! I hope this updated patch set makes more sense. -- To view, visit https://gerrit.osmocom.org/7623 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I1dc299407c61b1c865035add44067b8ab89001b3 Gerrit-PatchSet: 1 Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Owner: Stefan Sperling Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Pau Espin Pedrol Gerrit-Reviewer: Stefan Sperling Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Fri Apr 6 12:30:55 2018 From: gerrit-no-reply at lists.osmocom.org (Vadim Yanitskiy) Date: Fri, 6 Apr 2018 12:30:55 +0000 Subject: osmocom-bb[master]: Merge branch 'fixeria/trx' into master In-Reply-To: References: Message-ID: Patch Set 2: This way let me update this change in order to merge the actual version of 'fixeria/trx'. -- To view, visit https://gerrit.osmocom.org/7263 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I83094ca021a0b84c107f7301e10a603e4b342e6e Gerrit-PatchSet: 2 Gerrit-Project: osmocom-bb Gerrit-Branch: master Gerrit-Owner: Vadim Yanitskiy Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Vadim Yanitskiy Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Fri Apr 6 12:37:30 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Fri, 6 Apr 2018 12:37:30 +0000 Subject: docker-playground[master]: ttcn3-bts-test: Configure BTS to have dynamic PDCH In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 Verified+1 -- To view, visit https://gerrit.osmocom.org/7657 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I229000ce7609845fdf24cafe1f5ec2bfa3f507e8 Gerrit-PatchSet: 1 Gerrit-Project: docker-playground Gerrit-Branch: master Gerrit-Owner: Harald Welte Gerrit-Reviewer: Harald Welte Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Fri Apr 6 12:37:41 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Fri, 6 Apr 2018 12:37:41 +0000 Subject: [MERGED] docker-playground[master]: ttcn3-bts-test: Configure BTS to have dynamic PDCH In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: ttcn3-bts-test: Configure BTS to have dynamic PDCH ...................................................................... ttcn3-bts-test: Configure BTS to have dynamic PDCH This is required by later versions of the osmo-ttcn3-hacks BTS test suite after Change-Id I2a42531dc5555ab4772d538fda462343605b8feb Change-Id: I229000ce7609845fdf24cafe1f5ec2bfa3f507e8 --- M ttcn3-bts-test/osmo-bsc.cfg 1 file changed, 2 insertions(+), 2 deletions(-) Approvals: Harald Welte: Looks good to me, approved; Verified diff --git a/ttcn3-bts-test/osmo-bsc.cfg b/ttcn3-bts-test/osmo-bsc.cfg index e4e2493..b66d776 100644 --- a/ttcn3-bts-test/osmo-bsc.cfg +++ b/ttcn3-bts-test/osmo-bsc.cfg @@ -154,10 +154,10 @@ phys_chan_config TCH/F hopping enabled 0 timeslot 3 - phys_chan_config TCH/F + phys_chan_config TCH/F_PDCH hopping enabled 0 timeslot 4 - phys_chan_config TCH/F + phys_chan_config TCH/F_TCH/H_PDCH hopping enabled 0 timeslot 5 phys_chan_config TCH/H -- To view, visit https://gerrit.osmocom.org/7657 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: I229000ce7609845fdf24cafe1f5ec2bfa3f507e8 Gerrit-PatchSet: 1 Gerrit-Project: docker-playground Gerrit-Branch: master Gerrit-Owner: Harald Welte Gerrit-Reviewer: Harald Welte From gerrit-no-reply at lists.osmocom.org Fri Apr 6 12:43:21 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Fri, 6 Apr 2018 12:43:21 +0000 Subject: osmo-ttcn3-hacks[master]: test GGSN support for optional GTP-U sequence numbers In-Reply-To: References: Message-ID: Patch Set 2: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7623 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I1dc299407c61b1c865035add44067b8ab89001b3 Gerrit-PatchSet: 2 Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Owner: Stefan Sperling Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Pau Espin Pedrol Gerrit-Reviewer: Stefan Sperling Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Fri Apr 6 12:43:25 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Fri, 6 Apr 2018 12:43:25 +0000 Subject: [MERGED] osmo-ttcn3-hacks[master]: test GGSN support for optional GTP-U sequence numbers In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: test GGSN support for optional GTP-U sequence numbers ...................................................................... test GGSN support for optional GTP-U sequence numbers Add VTY functionality to GGSN tests, and use the VTY to enable/disable GTP-U Tx sequence numbers in the running osmo-ggsn. The GTPU packet template now makes sequence numbers optional. A template created with its sequence number set to 'omit' will result in a packet without a sequence number, i.e. the 'sequence number present' bit in the packet header is cleared, and the sequence number field is omitted from the encoded GTPU T-PDU packet. Re-use the existing TC_pdp4_clients_interact() test for testing the behaviour of osmo-ggsn. This test is now run twice, once with and once without GTP-U Tx sequence numbers. Verify that packets relayed by osmo-ggsn match its "g-pdu tx-sequence-numbers" configuration setting. Change-Id: I1dc299407c61b1c865035add44067b8ab89001b3 Related: OS#2519 --- M ggsn_tests/GGSN_Tests.default M ggsn_tests/GGSN_Tests.ttcn M ggsn_tests/gen_links.sh M ggsn_tests/regen_makefile.sh M library/GTP_Templates.ttcn 5 files changed, 115 insertions(+), 16 deletions(-) Approvals: Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/ggsn_tests/GGSN_Tests.default b/ggsn_tests/GGSN_Tests.default index 2d57f89..ff0cd97 100644 --- a/ggsn_tests/GGSN_Tests.default +++ b/ggsn_tests/GGSN_Tests.default @@ -1,6 +1,14 @@ [LOGGING] [TESTPORT_PARAMETERS] +*.GGSNVTY.CTRL_MODE := "client" +*.GGSNVTY.CTRL_HOSTNAME := "127.0.0.1" +*.GGSNVTY.CTRL_PORTNUM := "4260" +*.GGSNVTY.CTRL_LOGIN_SKIPPED := "yes" +*.GGSNVTY.CTRL_DETECT_SERVER_DISCONNECTED := "yes" +*.GGSNVTY.CTRL_READMODE := "buffered" +*.GGSNVTY.CTRL_CLIENT_CLEANUP_LINEFEED := "yes" +*.GGSNVTY.PROMPT1 := "OsmoGGSN> " [MODULE_PARAMETERS] GGSN_Tests.m_bind_ip_gtpc := "127.0.42.1" @@ -11,5 +19,6 @@ GGSN_Tests.m_ggsn_ip4_dns2 := "8.8.8.8" GGSN_Tests.m_ggsn_ip6_dns1 := "2001:4860:4860::8888" GGSN_Tests.m_ggsn_ip6_dns2 := "2001:4860:4860::8844" +Osmocom_VTY_Functions.mp_prompt_prefix := "OsmoGGSN"; [EXECUTE] diff --git a/ggsn_tests/GGSN_Tests.ttcn b/ggsn_tests/GGSN_Tests.ttcn index 1469062..ba8fae5 100644 --- a/ggsn_tests/GGSN_Tests.ttcn +++ b/ggsn_tests/GGSN_Tests.ttcn @@ -14,6 +14,8 @@ import from ICMP_Types all; import from ICMPv6_Types all; import from Native_Functions all; + import from Osmocom_VTY_Functions all; + import from TELNETasp_PortType all; const integer GTP0_PORT := 3386; const integer GTP1C_PORT := 2123; @@ -89,6 +91,42 @@ var uint16_t g_c_seq_nr; /* next to-be-sent GTP-U sequence number */ var uint16_t g_d_seq_nr; + + port TELNETasp_PT GGSNVTY; + var boolean use_gptu_txseq := true; + } + + private function f_init_vty() runs on GT_CT { + map(self:GGSNVTY, system:GGSNVTY); + f_vty_set_prompts(GGSNVTY); + f_vty_transceive(GGSNVTY, "enable"); + } + + private function f_vty_set_gpdu_txseq(boolean enable) runs on GT_CT { + f_vty_enter_config(GGSNVTY); + f_vty_transceive(GGSNVTY, "ggsn ggsn0"); + f_vty_transceive(GGSNVTY, "apn internet"); + if (enable) { + f_vty_transceive(GGSNVTY, "g-pdu tx-sequence-numbers"); + } else { + f_vty_transceive(GGSNVTY, "no g-pdu tx-sequence-numbers"); + } + f_vty_transceive(GGSNVTY, "end"); + } + + private function f_verify_gtpu_txseq(in PDU_GTPU gtpu, in boolean expect_gptu_txseq) return boolean { + if (expect_gptu_txseq) { + if (gtpu.s_bit != '1'B) { + log("GTPU sequence number expected but not present") + return false; + } + } else { + if (gtpu.s_bit != '0'B) { + log("GTPU sequence number not expected but present") + return false; + } + } + return true; } function f_init() runs on GT_CT { @@ -113,6 +151,9 @@ g_restart_ctr := f_rnd_octstring(1); g_c_seq_nr := f_rnd_int(65535); g_d_seq_nr := f_rnd_int(65535); + + f_init_vty(); + f_vty_set_gpdu_txseq(use_gptu_txseq); } /* Altstep implementing responses to any incoming echo requests */ @@ -167,8 +208,12 @@ /* send GTP-U for a given context and increment sequence number */ function f_send_gtpu(inout PdpContext ctx, in octetstring data) runs on GT_CT { - GTPU.send(ts_GTP1U_GPDU(g_peer_u, g_d_seq_nr, ctx.teid_remote, data)); - g_d_seq_nr := g_d_seq_nr + 1; + if (use_gptu_txseq) { + GTPU.send(ts_GTP1U_GPDU(g_peer_u, g_d_seq_nr, ctx.teid_remote, data)); + g_d_seq_nr := g_d_seq_nr + 1; + } else { + GTPU.send(ts_GTP1U_GPDU(g_peer_u, omit, ctx.teid_remote, data)); + } } /* send a PDP context activation */ @@ -558,6 +603,10 @@ T_default.start; alt { [] GTPU.receive(tr_GTPU_GPDU(g_peer_u, ?)) -> value ud { + if (f_verify_gtpu_txseq(ud.gtpu, use_gptu_txseq) == false) { + setverdict(fail); + stop; + } var octetstring gpdu := ud.gtpu.gtpu_IEs.g_PDU_IEs.data; var IPv4_packet ip4 := f_IPv4_dec(gpdu); if (ip4.header.ver != 4) { @@ -590,6 +639,10 @@ T_default.start; alt { [] GTPU.receive(tr_GTPU_GPDU(g_peer_u, ?)) -> value ud { + if (f_verify_gtpu_txseq(ud.gtpu, use_gptu_txseq) == false) { + setverdict(fail); + stop; + } var octetstring gpdu := ud.gtpu.gtpu_IEs.g_PDU_IEs.data; var IPv6_packet ip6 := f_IPv6_dec(gpdu); if (ip6.header.ver != 6 or ip6.header.nexthead != 58) { @@ -840,8 +893,8 @@ f_pdp_ctx_del(ctx, '1'B); } - /* Validate if different clients (pdp ctx) can reach one another through GGSN. */ - testcase TC_pdp4_clients_interact() runs on GT_CT { + /* Helper function for tests below. */ + function f_pdp4_clients_interact() runs on GT_CT { f_init(); var PdpContext ctxA := valueof(t_DefinePDP(f_rnd_imsi('26242'H), '1234'O, c_ApnInternet, valueof(t_EuaIPv4Dyn))); var PdpContext ctxB := valueof(t_DefinePDP(f_rnd_imsi('26242'H), '1234'O, c_ApnInternet, valueof(t_EuaIPv4Dyn))); @@ -853,6 +906,18 @@ f_wait_icmp4_echo_request(ctxB); f_pdp_ctx_del(ctxA, '1'B); + } + + /* Validate if different clients (pdp ctx) can reach one another through GGSN. */ + testcase TC_pdp4_clients_interact_with_txseq() runs on GT_CT { + use_gptu_txseq := true; + f_pdp4_clients_interact(); + } + + /* Validate if different clients (pdp ctx) can reach one another through GGSN (without Tx sequence number). */ + testcase TC_pdp4_clients_interact_without_txseq() runs on GT_CT { + use_gptu_txseq := false; + f_pdp4_clients_interact(); } testcase TC_echo_req_resp() runs on GT_CT { @@ -872,7 +937,8 @@ execute(TC_pdp4_act_deact_ipcp()); execute(TC_pdp4_act_deact_pcodns()); execute(TC_pdp4_act_deact_gtpu_access()); - execute(TC_pdp4_clients_interact()); + execute(TC_pdp4_clients_interact_with_txseq()); + execute(TC_pdp4_clients_interact_without_txseq()); execute(TC_pdp6_act_deact()); execute(TC_pdp6_act_deact_pcodns()); diff --git a/ggsn_tests/gen_links.sh b/ggsn_tests/gen_links.sh index 6ef52e1..4e012ae 100755 --- a/ggsn_tests/gen_links.sh +++ b/ggsn_tests/gen_links.sh @@ -40,9 +40,14 @@ FILES="GTPC_EncDec.cc GTPC_Types.ttcn GTPU_EncDec.cc GTPU_Types.ttcn" gen_links $DIR $FILES +DIR=$BASEDIR/titan.TestPorts.TELNETasp/src +FILES="TELNETasp_PT.cc TELNETasp_PT.hh TELNETasp_PortType.ttcn" +gen_links $DIR $FILES + DIR=../library FILES="General_Types.ttcn GSM_Types.ttcn Osmocom_Types.ttcn Native_Functions.ttcn Native_FunctionDefs.cc IPCP_Types.ttcn " FILES+="GTP_CodecPort.ttcn GTP_CodecPort_CtrlFunct.ttcn GTP_CodecPort_CtrlFunctDef.cc GTP_Templates.ttcn " +FILES+="Osmocom_VTY_Functions.ttcn " gen_links $DIR $FILES ignore_pp_results diff --git a/ggsn_tests/regen_makefile.sh b/ggsn_tests/regen_makefile.sh index 2fc74f7..6db1a3d 100755 --- a/ggsn_tests/regen_makefile.sh +++ b/ggsn_tests/regen_makefile.sh @@ -1,5 +1,5 @@ #!/bin/sh -FILES="*.ttcn IPL4asp_PT.cc IPL4asp_discovery.cc TCCConversion.cc TCCInterface.cc GTPC_EncDec.cc GTPU_EncDec.cc GTP_CodecPort_CtrlFunctDef.cc ICMPv6_EncDec.cc IP_EncDec.cc Native_FunctionDefs.cc UDP_EncDec.cc ICMP_EncDec.cc" +FILES="*.ttcn IPL4asp_PT.cc IPL4asp_discovery.cc TCCConversion.cc TCCInterface.cc GTPC_EncDec.cc GTPU_EncDec.cc GTP_CodecPort_CtrlFunctDef.cc ICMPv6_EncDec.cc IP_EncDec.cc Native_FunctionDefs.cc UDP_EncDec.cc ICMP_EncDec.cc TELNETasp_PT.cc" ../regen-makefile.sh GGSN_Tests.ttcn $FILES diff --git a/library/GTP_Templates.ttcn b/library/GTP_Templates.ttcn index d8a43c2..44ec439 100644 --- a/library/GTP_Templates.ttcn +++ b/library/GTP_Templates.ttcn @@ -545,15 +545,39 @@ gtpu_IEs := ies } + function f_GTPU_s_bit(template (omit) uint16_t seq) return BIT1 { + if (istemplatekind(seq, "omit")) { + return '0'B; + } + return '1'B; + } + + function f_GTPU_opt_part(template (omit) uint16_t seq) return template (omit) GTPU_Header_optional_part { + if (istemplatekind(seq, "omit")) { + return omit; + } + var GTPU_Header_optional_part ret := { + sequenceNumber := int2oct(valueof(seq), 2), + npduNumber := '00'O, + nextExtHeader := '00'O, + gTPU_extensionHeader_List := omit + }; + return ret; + } + /* generalized GTP-U send template */ - template PDU_GTPU ts_GTP1U_PDU(OCT1 msg_type, uint16_t seq, OCT4 teid, GTPU_IEs ies) := { + template PDU_GTPU ts_GTP1U_PDU(OCT1 msg_type, template (omit) uint16_t seq, OCT4 teid, GTPU_IEs ies) := { /* N-PDU Number flag (PN): the GTP-U header contains a meaningful N-PDU Number field if the PN * flag is set to 1. */ pn_bit := '0'B, /* we assume the encoder overwrites this if an optional part is given */ /* If the Sequence Number flag (S) is set to '1' the sequence number field is present and * meaningful otherwise it is set to '0'. For GTP-U messages Echo Request, Echo Response, - * Error Indication and Supported Extension Headers Notification, the S flag shall be set to '1'. */ - s_bit := '1'B, /* we assume the encoder overwrites this if an optional part is given */ + * Error Indication and Supported Extension Headers Notification, the S flag shall be set to '1'. + * + * Note that the caller must ensure that these conditions hold. + * The caller can either pass a sequence number (we set s_bit to '1'B) when appropriate, + * or may omit the sequence number (we set s_bit to '0'B). */ + s_bit := f_GTPU_s_bit(seq), /* Extension header presence */ e_bit := '0'B, spare := '0'B, @@ -564,12 +588,7 @@ messageType := msg_type, lengthf := 0, /* we assume encoder overwrites this */ teid := teid, - opt_part := { - sequenceNumber := int2oct(seq, 2), - npduNumber := '00'O, - nextExtHeader := '00'O, - gTPU_extensionHeader_List := omit - }, + opt_part := f_GTPU_opt_part(seq), gtpu_IEs := ies } @@ -610,7 +629,7 @@ } /* master template for sending a GTP-U user plane data */ - template Gtp1uUnitdata ts_GTP1U_GPDU(GtpPeer peer, uint16_t seq, OCT4 teid, octetstring data) := { + template Gtp1uUnitdata ts_GTP1U_GPDU(GtpPeer peer, template (omit) uint16_t seq, OCT4 teid, octetstring data) := { peer := peer, gtpu := ts_GTP1U_PDU('FF'O, seq, teid, { g_PDU_IEs := { data := data }}) } -- To view, visit https://gerrit.osmocom.org/7623 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: I1dc299407c61b1c865035add44067b8ab89001b3 Gerrit-PatchSet: 3 Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Owner: Stefan Sperling Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Pau Espin Pedrol Gerrit-Reviewer: Stefan Sperling From gerrit-no-reply at lists.osmocom.org Fri Apr 6 12:43:39 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Fri, 6 Apr 2018 12:43:39 +0000 Subject: libosmo-abis[master]: e1_input.h: Remove dead declaration of unexistent API ipacce... In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7656 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I34debe01d1d8b6f4420354666d2a25807dacc25c Gerrit-PatchSet: 1 Gerrit-Project: libosmo-abis Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Fri Apr 6 12:43:41 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Fri, 6 Apr 2018 12:43:41 +0000 Subject: [MERGED] libosmo-abis[master]: e1_input.h: Remove dead declaration of unexistent API ipacce... In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: e1_input.h: Remove dead declaration of unexistent API ipaccess_setup ...................................................................... e1_input.h: Remove dead declaration of unexistent API ipaccess_setup The function was removed long time ago in af8ed983ffa1f750e3972e0fb850c16249943543. Change-Id: I34debe01d1d8b6f4420354666d2a25807dacc25c --- M include/osmocom/abis/e1_input.h 1 file changed, 0 insertions(+), 3 deletions(-) Approvals: Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/include/osmocom/abis/e1_input.h b/include/osmocom/abis/e1_input.h index 1a701f9..3fbce5b 100644 --- a/include/osmocom/abis/e1_input.h +++ b/include/osmocom/abis/e1_input.h @@ -303,9 +303,6 @@ int e1inp_vty_init(void); -struct gsm_network; -int ipaccess_setup(struct gsm_network *gsmnet); - /* activate superchannel or deactive to use timeslots. only valid for unixsocket driver */ void e1inp_ericsson_set_altc(struct e1inp_line *unixlinue, int superchannel); -- To view, visit https://gerrit.osmocom.org/7656 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: I34debe01d1d8b6f4420354666d2a25807dacc25c Gerrit-PatchSet: 1 Gerrit-Project: libosmo-abis Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder From jenkins at lists.osmocom.org Fri Apr 6 12:49:31 2018 From: jenkins at lists.osmocom.org (jenkins at lists.osmocom.org) Date: Fri, 6 Apr 2018 12:49:31 +0000 (UTC) Subject: =?UTF-8?Q?Jenkins_build_is_back_to_normal_:_master-osmo-bts_=C2=BB_s?= =?UTF-8?Q?ysmo,femtobts=5Fv2.7,default,osmocom-master-debian9_#471?= In-Reply-To: <437369222.80.1522999668286.JavaMail.jenkins@jenkins.osmocom.org> References: <437369222.80.1522999668286.JavaMail.jenkins@jenkins.osmocom.org> Message-ID: <1684551485.101.1523018971169.JavaMail.jenkins@jenkins.osmocom.org> See From gerrit-no-reply at lists.osmocom.org Fri Apr 6 13:06:36 2018 From: gerrit-no-reply at lists.osmocom.org (Stefan Sperling) Date: Fri, 6 Apr 2018 13:06:36 +0000 Subject: osmo-ttcn3-hacks[master]: support ccache to speed up ttcn3 test compilation In-Reply-To: References: Message-ID: Stefan Sperling has restored this change. Change subject: support ccache to speed up ttcn3 test compilation ...................................................................... Restored Revisiting this: The problems at run-time are caused by omitting the -l flag to ttcn3_makefilegen. The ttcn3_makefilegen man page suggests that this flag is just an optimization, but it seems to be cruical for our test runs. A Makefile generated with the -l option still performs a separate compilation step from C++ to bject file, and then also re-links object files as shared objects. We can still benefit from ccache during the first compilation step from C++ code to object file. -- To view, visit https://gerrit.osmocom.org/7601 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: restore Gerrit-Change-Id: Ibb538f602206535c06980f88191c1dabe3c4cd82 Gerrit-PatchSet: 5 Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Owner: Stefan Sperling Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Neels Hofmeyr Gerrit-Reviewer: Stefan Sperling From gerrit-no-reply at lists.osmocom.org Fri Apr 6 13:07:13 2018 From: gerrit-no-reply at lists.osmocom.org (Stefan Sperling) Date: Fri, 6 Apr 2018 13:07:13 +0000 Subject: [PATCH] osmo-ttcn3-hacks[master]: support ccache to speed up ttcn3 test compilation In-Reply-To: References: Message-ID: Hello Neels Hofmeyr, Harald Welte, Jenkins Builder, I'd like you to reexamine a change. Please visit https://gerrit.osmocom.org/7601 to look at the new patch set (#6). support ccache to speed up ttcn3 test compilation By default, if ccache is found in PATH when regen-makefile.sh runs, use cached compiled C++ object files during the build (or populate the cache in case an object is not cached yet). Objects are cached in ccache's default cache directory (~/.ccache) unless overriden by the CCACHE_DIR environment variable. The USE_CCACHE environment variable overrides auto-detection in regen-makefile.sh and disables (USE_CCACHE=0) or enables (USE_CCACHE=1) use of ccache. Rebuilding the test suite from scratch with a populated cache is an order of magnitude faster than doing an initial build. ccache only speeds up C++ (.cc) to object file (.o) compilation. Linking object (.o) files into shared object (.so) files is still performed by the real compiler during every build. There is a small downside: We need to tweak the generated C++ files to prevent cache misses due to timestamps inserted into the code by ttcn3_compiler. This is done during 'make compile' if ccache is used. This mechanism could break in case the output of ttcn3_makefilegen changes. However, the only consequence would be a slow build due to cache misses. In the long term, an upstream solution built into eclipse titan (e.g. an option to disable time stamps in generated files) would be diserable. Another thing to note is that builds using objects from ccache will contain timestamp strings from the build which populated the cache. ccache provides a way to repopulate the cache if needed (set CCACHE_RECACHE=1 in the environment). These tradeoffs seem acceptable to me since in return we can achieve much faster turnaround, both during local test development and during test builds on jenkins. Change-Id: Ibb538f602206535c06980f88191c1dabe3c4cd82 --- M regen-makefile.sh A strip-datetime-comments.sed 2 files changed, 63 insertions(+), 0 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-ttcn3-hacks refs/changes/01/7601/6 diff --git a/regen-makefile.sh b/regen-makefile.sh index 57eebff..cd7a589 100755 --- a/regen-makefile.sh +++ b/regen-makefile.sh @@ -12,6 +12,16 @@ test -x "$(which ttcn3_makefilegen 2>/dev/null)" || { echo "ERROR: ttcn3_makefilegen not in PATH"; exit 1; } +# Enable ccache if it can be found in path. +# This speeds up repeated builds of the TTCN3 tests by an order of magnitude +# since most of the generated C++ source files don't change very often. +# Roughly, for an initial build which takes N minutes, a complete rebuild +# after 'make clean' will only take N seconds with ccache. +# Note that ccache cannot speed up compilation of .o files to .so files. +if [ -z "$USE_CCACHE" ] && which ccache 2>/dev/null; then + USE_CCACHE=1 +fi + ttcn3_makefilegen -p -l -f $* sed -i -e 's/# TTCN3_DIR = /TTCN3_DIR = \/usr/' Makefile sed -i -e 's/LDFLAGS = /LDFLAGS = -L \/usr\/lib\/titan /' Makefile @@ -32,3 +42,11 @@ sed -i -e 's/TTCN3_DIR = $/TTCN3_DIR = \/usr/' Makefile fi sed -i -e 's/\/bin\/compiler/\/bin\/ttcn3_compiler/' Makefile + +if [ "x$USE_CCACHE" = "x1" ]; then + # enable ccache + sed -i -e 's/^CXX = g++ $/CXX = env CCACHE_SLOPPINESS=time_macros ccache g++/' Makefile + # The Makefile must tweak generated C++ files during the 'make compile' step. + # See the strip-datetime-comments sed script for details. + sed -i -f ../strip-datetime-comments.sed Makefile +fi diff --git a/strip-datetime-comments.sed b/strip-datetime-comments.sed new file mode 100644 index 0000000..8089b8e --- /dev/null +++ b/strip-datetime-comments.sed @@ -0,0 +1,45 @@ +#!/usr/bin/sed +# (C) 2018 by sysmocom s.f.m.c. GmbH +# Author: Stefan Sperling +# All rights reserved. +# Released under the terms of GNU General Public License, Version 2 or +# (at your option) any later version. + +# This sed script edits a Makefile generated by ttcn3_makefilegen. +# We insert a sed command into the 'compile:' target in order to +# remove timestamp comments from generated C++ files. + +# The ttcn3_compiler will generate C++ comments with a timestamp, such as: +# // for Stefan Sperling (stsp at fintan) on Sat Mar 31 14:34:30 2018 +# We must remove such comments since they cause cache misses with ccache. +# +# A related problem is the use of __DATE__ and __TIME__ in generated C++ code, +# which can be worked around by setting "CCACHE_SLOPPINESS=time_macros". This +# workaround implies that we must get our cache hits from ccache's "direct" +# cache, since ccache's "preprocessor" caching method won't work. +# +# FIXME: This should really be addressed in ttcn3_compiler itself! +# It should provide an option to suppress use of timestamps in generated code. + +# The generated Makefile's compile target looks like this: +# +# compile: $(TTCN3_MODULES) $(PREPROCESSED_TTCN3_MODULES) $(ASN1_MODULES) +# $(TTCN3_DIR)/bin/ttcn3_compiler $(COMPILER_FLAGS) \ +# $(TTCN3_MODULES) $(PREPROCESSED_TTCN3_MODULES) $(ASN1_MODULES) - $? +# touch $@ +# +# Before the final 'touch $@' step, we now insert a `sed` command that strips +# offending C++ comments from the generated code. + +# match the line in the generated Makefile which starts with 'compile:' +/^compile:/ { + # go to the next line + n; + # go to the next line + n; + # go to the next line + n; + # on this line, try to match 'touch $@', and if there is a match preprend a + # sed command which deletes the offending comments from generated C++ files: + s!touch $@!sed -i -e '/\\/\\/ for .* on .*/d' $(GENERATED_HEADERS) $(GENERATED_SOURCES) \&\& &! +} -- To view, visit https://gerrit.osmocom.org/7601 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newpatchset Gerrit-Change-Id: Ibb538f602206535c06980f88191c1dabe3c4cd82 Gerrit-PatchSet: 6 Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Owner: Stefan Sperling Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Neels Hofmeyr Gerrit-Reviewer: Stefan Sperling From gerrit-no-reply at lists.osmocom.org Fri Apr 6 13:12:15 2018 From: gerrit-no-reply at lists.osmocom.org (Stefan Sperling) Date: Fri, 6 Apr 2018 13:12:15 +0000 Subject: osmo-ttcn3-hacks[master]: support ccache to speed up ttcn3 test compilation In-Reply-To: References: Message-ID: Patch Set 6: This new patch set resolves the problems identified above. Link steps are now performed for every object file during the build but the benefit of the cache is still high. In a cache log (set CCACHE_LOGFILE in the environment) we can now see the following: Result: cache miss This means the C++ to object file compilation step was performed by the compiler. Result: cache hit (direct) This means the C++ to object file compilation was skipped and the object was retrieved from the cache instead. Result: called for link This means ccache was invoked for linking an object file into a shared object, and the work was performed by the g++ compiler and linker. -- To view, visit https://gerrit.osmocom.org/7601 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Ibb538f602206535c06980f88191c1dabe3c4cd82 Gerrit-PatchSet: 6 Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Owner: Stefan Sperling Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Neels Hofmeyr Gerrit-Reviewer: Stefan Sperling Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Fri Apr 6 13:17:21 2018 From: gerrit-no-reply at lists.osmocom.org (Vadim Yanitskiy) Date: Fri, 6 Apr 2018 13:17:21 +0000 Subject: [PATCH] osmocom-bb[master]: Merge branch 'fixeria/trx' into master In-Reply-To: References: Message-ID: Hello Harald Welte, Jenkins Builder, I'd like you to reexamine a change. Please visit https://gerrit.osmocom.org/7263 to look at the new patch set (#3). Merge branch 'fixeria/trx' into master This change introduces the following: - trxcon - a similar to the osmocon application, which implements both L1CTL and TRX interfaces, and intended to connect the L2&3 applications with a transciever, such as FakeTRX, OsmoTRX or GR-GSM TRX. - trx_toolkit - a set of tools in Python, intended for hacking and debugging a TRX interface between both transceiver and L1 software, and for creating a virtual Um-interface between both OsmocomBB and OsmoBTS. For more details, see: https://osmocom.org/projects/baseband/wiki/TRX_Interface https://osmocom.org/projects/baseband/wiki/FakeTRX src/target/trx_toolkit/README Change-Id: I83094ca021a0b84c107f7301e10a603e4b342e6e --- M src/Makefile M src/host/layer23/.gitignore 2 files changed, 2 insertions(+), 5 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmocom-bb refs/changes/63/7263/3 diff --git a/src/Makefile b/src/Makefile index 78deca8..d92acbc 100644 --- a/src/Makefile +++ b/src/Makefile @@ -12,12 +12,8 @@ TOPDIR=$(shell pwd) all: libosmocore-target nofirmware firmware mtk-firmware -<<<<<<< HEAD (f9ac7e virt_phy: Add missing gprs related entries to l1ctlPrimNames) -nofirmware: layer23 osmocon gsmmap gprsdecode virtphy -======= -nofirmware: layer23 osmocon trxcon gsmmap virtphy ->>>>>>> BRANCH (00bfb3 trxcon/l1ctl.c: hexdump content of unhandled messages) +nofirmware: layer23 osmocon trxcon gsmmap gprsdecode virtphy libosmocore-target: shared/libosmocore/build-target/src/.libs/libosmocore.a diff --git a/src/host/layer23/.gitignore b/src/host/layer23/.gitignore index 59601be..8fb93f7 100644 --- a/src/host/layer23/.gitignore +++ b/src/host/layer23/.gitignore @@ -19,6 +19,7 @@ # build by-products *.o +*.a # various *.sw? -- To view, visit https://gerrit.osmocom.org/7263 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newpatchset Gerrit-Change-Id: I83094ca021a0b84c107f7301e10a603e4b342e6e Gerrit-PatchSet: 3 Gerrit-Project: osmocom-bb Gerrit-Branch: master Gerrit-Owner: Vadim Yanitskiy Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Vadim Yanitskiy From gerrit-no-reply at lists.osmocom.org Fri Apr 6 13:21:14 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Fri, 6 Apr 2018 13:21:14 +0000 Subject: osmocom-bb[master]: Merge branch 'fixeria/trx' into master In-Reply-To: References: Message-ID: Patch Set 3: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7263 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I83094ca021a0b84c107f7301e10a603e4b342e6e Gerrit-PatchSet: 3 Gerrit-Project: osmocom-bb Gerrit-Branch: master Gerrit-Owner: Vadim Yanitskiy Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Vadim Yanitskiy Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Fri Apr 6 13:49:44 2018 From: gerrit-no-reply at lists.osmocom.org (Stefan Sperling) Date: Fri, 6 Apr 2018 13:49:44 +0000 Subject: osmo-ttcn3-hacks[master]: support ccache to speed up ttcn3 test compilation In-Reply-To: References: Message-ID: Patch Set 6: There is in fact already an option which prevents timestamps in the generated C++ code: https://www.eclipse.org/forums/index.php/m/1767735/?srch=ccache#msg_1767735 (thanks Harald for the link!) This option was missing in the documentation I was looking at :( I'll rework the patch to make use of this option. -- To view, visit https://gerrit.osmocom.org/7601 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Ibb538f602206535c06980f88191c1dabe3c4cd82 Gerrit-PatchSet: 6 Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Owner: Stefan Sperling Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Neels Hofmeyr Gerrit-Reviewer: Stefan Sperling Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Fri Apr 6 14:10:45 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Fri, 6 Apr 2018 14:10:45 +0000 Subject: [PATCH] meta-telephony[201705]: openbsc: enable smpp Message-ID: Review at https://gerrit.osmocom.org/7659 openbsc: enable smpp libsmpp34 was listed in DEPENDS but it's use was not enabled. Change-Id: I20c77346e4894d6d146863fd79f6d27ef12cb3ee --- M recipes-osmocom/openbsc/openbsc.inc 1 file changed, 2 insertions(+), 2 deletions(-) git pull ssh://gerrit.osmocom.org:29418/meta-telephony refs/changes/59/7659/1 diff --git a/recipes-osmocom/openbsc/openbsc.inc b/recipes-osmocom/openbsc/openbsc.inc index 3c1b98f..90a0398 100644 --- a/recipes-osmocom/openbsc/openbsc.inc +++ b/recipes-osmocom/openbsc/openbsc.inc @@ -11,10 +11,10 @@ file://osmo-bsc-sccplite.service \ " -INC_PR = "r24.${META_TELEPHONY_OSMO_INC}" +INC_PR = "r25.${META_TELEPHONY_OSMO_INC}" -EXTRA_OECONF += "--enable-osmo-bsc --enable-mgcp-transcoding --with-g729" +EXTRA_OECONF += "--enable-osmo-bsc --enable-smpp --enable-mgcp-transcoding --with-g729" inherit autotools update-rc.d pkgconfig -- To view, visit https://gerrit.osmocom.org/7659 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I20c77346e4894d6d146863fd79f6d27ef12cb3ee Gerrit-PatchSet: 1 Gerrit-Project: meta-telephony Gerrit-Branch: 201705 Gerrit-Owner: Pau Espin Pedrol From gerrit-no-reply at lists.osmocom.org Fri Apr 6 14:15:21 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Fri, 6 Apr 2018 14:15:21 +0000 Subject: [PATCH] meta-telephony[201705]: openbsc: remove c-ares dependency Message-ID: Review at https://gerrit.osmocom.org/7660 openbsc: remove c-ares dependency Since openbsc ed03661871ac8ee1715c04390d25631537b084ac, the c-ares dependency has been removed. Change-Id: I1bee6e0132252d0e5adc3517908dcf05021547ea --- M recipes-osmocom/openbsc/openbsc.inc 1 file changed, 1 insertion(+), 1 deletion(-) git pull ssh://gerrit.osmocom.org:29418/meta-telephony refs/changes/60/7660/1 diff --git a/recipes-osmocom/openbsc/openbsc.inc b/recipes-osmocom/openbsc/openbsc.inc index 90a0398..ba0d75c 100644 --- a/recipes-osmocom/openbsc/openbsc.inc +++ b/recipes-osmocom/openbsc/openbsc.inc @@ -1,5 +1,5 @@ DESCRIPTION = "OpenBSC a Free Software GSM BaseStationController" -DEPENDS = "libdbi libosmocore libosmo-sccp libosmo-abis libosmo-netif osmo-ggsn libsmpp34 bcg729 libgsm libpcap c-ares" +DEPENDS = "libdbi libosmocore libosmo-sccp libosmo-abis libosmo-netif osmo-ggsn libsmpp34 bcg729 libgsm libpcap" HOMEPAGE = "http://openbsc.osmocom.org/" LICENSE = "AGPLv3+" LIC_FILES_CHKSUM = "file://COPYING;md5=73f1eb20517c55bf9493b7dd6e480788" -- To view, visit https://gerrit.osmocom.org/7660 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I1bee6e0132252d0e5adc3517908dcf05021547ea Gerrit-PatchSet: 1 Gerrit-Project: meta-telephony Gerrit-Branch: 201705 Gerrit-Owner: Pau Espin Pedrol From gerrit-no-reply at lists.osmocom.org Fri Apr 6 14:31:26 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Fri, 6 Apr 2018 14:31:26 +0000 Subject: meta-telephony[201705]: openbsc: remove c-ares dependency In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7660 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I1bee6e0132252d0e5adc3517908dcf05021547ea Gerrit-PatchSet: 1 Gerrit-Project: meta-telephony Gerrit-Branch: 201705 Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Harald Welte Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Fri Apr 6 14:31:38 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Fri, 6 Apr 2018 14:31:38 +0000 Subject: meta-telephony[201705]: openbsc: enable smpp In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7659 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I20c77346e4894d6d146863fd79f6d27ef12cb3ee Gerrit-PatchSet: 1 Gerrit-Project: meta-telephony Gerrit-Branch: 201705 Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Harald Welte Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Fri Apr 6 14:33:27 2018 From: gerrit-no-reply at lists.osmocom.org (Stefan Sperling) Date: Fri, 6 Apr 2018 14:33:27 +0000 Subject: [PATCH] osmo-ttcn3-hacks[master]: support ccache to speed up ttcn3 test compilation In-Reply-To: References: Message-ID: Hello Neels Hofmeyr, Harald Welte, Jenkins Builder, I'd like you to reexamine a change. Please visit https://gerrit.osmocom.org/7601 to look at the new patch set (#7). support ccache to speed up ttcn3 test compilation By default, if ccache is found in PATH when regen-makefile.sh runs, use cached compiled C++ object files during the build (or populate the cache in case an object is not cached yet). Objects are cached in ccache's default cache directory (~/.ccache) unless overriden by the CCACHE_DIR environment variable. The USE_CCACHE environment variable overrides auto-detection in regen-makefile.sh and disables (USE_CCACHE=0) or enables (USE_CCACHE=1) use of ccache. Rebuilding the test suite from scratch with a populated cache is an order of magnitude faster than doing an initial build. ccache only speeds up C++ (.cc) to object file (.o) compilation. Linking object (.o) files into shared object (.so) files is still performed by the real compiler during every build. Change-Id: Ibb538f602206535c06980f88191c1dabe3c4cd82 --- M regen-makefile.sh 1 file changed, 18 insertions(+), 0 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-ttcn3-hacks refs/changes/01/7601/7 diff --git a/regen-makefile.sh b/regen-makefile.sh index 57eebff..6b32f75 100755 --- a/regen-makefile.sh +++ b/regen-makefile.sh @@ -12,6 +12,16 @@ test -x "$(which ttcn3_makefilegen 2>/dev/null)" || { echo "ERROR: ttcn3_makefilegen not in PATH"; exit 1; } +# Enable ccache if it can be found in path. +# This speeds up repeated builds of the TTCN3 tests by an order of magnitude +# since most of the generated C++ source files don't change very often. +# Roughly, for an initial build which takes N minutes, a complete rebuild +# after 'make clean' will only take N seconds with ccache. +# Note that ccache cannot speed up compilation of .o files to .so files. +if [ -z "$USE_CCACHE" ] && which ccache 2>/dev/null; then + USE_CCACHE=1 +fi + ttcn3_makefilegen -p -l -f $* sed -i -e 's/# TTCN3_DIR = /TTCN3_DIR = \/usr/' Makefile sed -i -e 's/LDFLAGS = /LDFLAGS = -L \/usr\/lib\/titan /' Makefile @@ -32,3 +42,11 @@ sed -i -e 's/TTCN3_DIR = $/TTCN3_DIR = \/usr/' Makefile fi sed -i -e 's/\/bin\/compiler/\/bin\/ttcn3_compiler/' Makefile + +if [ "x$USE_CCACHE" = "x1" ]; then + # enable ccache + sed -i -e 's/^CXX = g++ $/CXX = env CCACHE_SLOPPINESS=time_macros ccache g++/' Makefile + # Append the -D option to compiler flags. This option disables timestamps + # inside comments in the generated C++ code which interfere with ccache. + sed -i -e 's/^COMPILER_FLAGS = \(.*\)/&-D/' Makefile +fi -- To view, visit https://gerrit.osmocom.org/7601 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newpatchset Gerrit-Change-Id: Ibb538f602206535c06980f88191c1dabe3c4cd82 Gerrit-PatchSet: 7 Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Owner: Stefan Sperling Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Neels Hofmeyr Gerrit-Reviewer: Stefan Sperling From jenkins at lists.osmocom.org Fri Apr 6 15:10:06 2018 From: jenkins at lists.osmocom.org (jenkins at lists.osmocom.org) Date: Fri, 6 Apr 2018 15:10:06 +0000 (UTC) Subject: =?UTF-8?Q?Build_failed_in_Jenkins:_master-asn1c_=C2=BB_a1=3Ddefaul?= =?UTF-8?Q?t,a2=3Ddefault,a3=3Ddefault,osmocom-master-debian9_#79?= In-Reply-To: <441192822.31.1522941006500.JavaMail.jenkins@jenkins.osmocom.org> References: <441192822.31.1522941006500.JavaMail.jenkins@jenkins.osmocom.org> Message-ID: <1461353327.104.1523027406536.JavaMail.jenkins@jenkins.osmocom.org> See ------------------------------------------ [...truncated 3.69 KB...] + ./configure checking build system type... x86_64-unknown-linux-gnu checking host system type... x86_64-unknown-linux-gnu checking target system type... x86_64-unknown-linux-gnu checking for a BSD-compatible install... /usr/bin/install -c checking whether build environment is sane... yes checking for gawk... gawk checking whether make sets $(MAKE)... yes checking whether to enable maintainer-specific portions of Makefiles... no checking for style of include used by make... GNU checking for gcc... gcc checking for C compiler default output file name... a.out checking whether the C compiler works... yes checking whether we are cross compiling... no checking for suffix of executables... checking for suffix of object files... o checking whether we are using the GNU C compiler... yes checking whether gcc accepts -g... yes checking for gcc option to accept ISO C89... none needed checking dependency style of gcc... gcc3 checking for a sed that does not truncate output... /bin/sed checking for grep that handles long lines and -e... /bin/grep checking for egrep... /bin/grep -E checking for ld used by gcc... /usr/bin/ld checking if the linker (/usr/bin/ld) is GNU ld... yes checking for /usr/bin/ld option to reload object files... -r checking for BSD-compatible nm... /usr/bin/nm -B checking whether ln -s works... yes checking how to recognise dependent libraries... pass_all checking how to run the C preprocessor... gcc -E checking for ANSI C header files... yes checking for sys/types.h... yes checking for sys/stat.h... yes checking for stdlib.h... yes checking for string.h... yes checking for memory.h... yes checking for strings.h... yes checking for inttypes.h... yes checking for stdint.h... yes checking for unistd.h... yes checking dlfcn.h usability... yes checking dlfcn.h presence... yes checking for dlfcn.h... yes checking for g++... g++ checking whether we are using the GNU C++ compiler... yes checking whether g++ accepts -g... yes checking dependency style of g++... gcc3 checking how to run the C++ preprocessor... g++ -E checking for g77... no checking for f77... no checking for xlf... no checking for frt... no checking for pgf77... no checking for cf77... no checking for fort77... no checking for fl32... no checking for af77... no checking for f90... no checking for xlf90... no checking for pgf90... no checking for pghpf... no checking for epcf90... no checking for gfortran... no checking for g95... no checking for f95... no checking for fort... no checking for xlf95... no checking for ifort... no checking for ifc... no checking for efc... no checking for pgf95... no checking for lf95... no checking for ftn... no checking whether we are using the GNU Fortran 77 compiler... no checking whether accepts -g... no checking the maximum length of command line arguments... 32768 checking command to parse /usr/bin/nm -B output from gcc object... ok checking for objdir... .libs checking for ar... ar checking for ranlib... ranlib checking for strip... strip checking if gcc supports -fno-rtti -fno-exceptions... no checking for gcc option to produce PIC... -fPIC checking if gcc PIC flag -fPIC works... yes checking if gcc static flag -static works... yes checking if gcc supports -c -o file.o... yes checking whether the gcc linker (/usr/bin/ld -m elf_x86_64) supports shared libraries... yes checking whether -lc should be explicitly linked in... no checking dynamic linker characteristics... GNU/Linux ld.so checking how to hardcode library paths into programs... immediate checking whether stripping libraries is possible... yes checking if libtool supports shared libraries... yes checking whether to build shared libraries... yes checking whether to build static libraries... yes configure: creating libtool appending configuration tag "CXX" to libtool checking for ld used by g++... /usr/bin/ld -m elf_x86_64 checking if the linker (/usr/bin/ld -m elf_x86_64) is GNU ld... yes checking whether the g++ linker (/usr/bin/ld -m elf_x86_64) supports shared libraries... yes checking for g++ option to produce PIC... -fPIC checking if g++ PIC flag -fPIC works... yes checking if g++ static flag -static works... yes checking if g++ supports -c -o file.o... yes checking whether the g++ linker (/usr/bin/ld -m elf_x86_64) supports shared libraries... yes checking dynamic linker characteristics... GNU/Linux ld.so checking how to hardcode library paths into programs... immediate appending configuration tag "F77" to libtool checking for autoconf... /usr/bin/autoconf checking for autoheader... /usr/bin/autoheader checking for gcc... (cached) gcc checking whether we are using the GNU C compiler... (cached) yes checking whether gcc accepts -g... (cached) yes checking for gcc option to accept ISO C89... (cached) none needed checking dependency style of gcc... (cached) gcc3 checking how to run the C preprocessor... gcc -E checking for a BSD-compatible install... /usr/bin/install -c checking whether ln -s works... yes checking whether make sets $(MAKE)... (cached) yes checking for bison... bison -y checking for flex... flex checking for yywrap in -lfl... yes checking lex output file root... lex.yy checking whether yytext is a pointer... yes checking for ar... /usr/bin/ar checking for ANSI C header files... (cached) yes checking sys/param.h usability... yes checking sys/param.h presence... yes checking for sys/param.h... yes checking whether byte ordering is bigendian... no checking for off_t... yes checking for size_t... yes checking whether struct tm is in sys/time.h or time.h... time.h checking for intmax_t... yes checking for library containing getopt... none required checking for strtoimax... yes checking for strtoll... yes checking for mergesort... no checking for mkstemps... yes configure: creating ./config.status config.status: creating skeletons/standard-modules/Makefile config.status: creating skeletons/tests/Makefile config.status: creating libasn1compiler/Makefile config.status: creating libasn1parser/Makefile config.status: creating libasn1print/Makefile config.status: creating asn1c/webcgi/Makefile config.status: creating asn1c/tests/Makefile config.status: creating libasn1fix/Makefile config.status: creating skeletons/Makefile config.status: creating examples/Makefile config.status: creating tests/Makefile config.status: creating asn1c/Makefile config.status: creating doc/Makefile config.status: creating asn1c.spec config.status: creating Makefile config.status: creating config.h config.status: executing depfiles commands + make -j 8 make all-recursive make[1]: Entering directory ' Making all in libasn1parser make[2]: Entering directory ' if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1parser.lo -MD -MP -MF ".deps/asn1parser.Tpo" -c -o asn1parser.lo asn1parser.c; \ then mv -f ".deps/asn1parser.Tpo" ".deps/asn1parser.Plo"; else rm -f ".deps/asn1parser.Tpo"; exit 1; fi bison -y -p asn1p_ -d asn1p_y.y if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_l.lo -MD -MP -MF ".deps/asn1p_l.Tpo" -c -o asn1p_l.lo asn1p_l.c; \ then mv -f ".deps/asn1p_l.Tpo" ".deps/asn1p_l.Plo"; else rm -f ".deps/asn1p_l.Tpo"; exit 1; fi if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_module.lo -MD -MP -MF ".deps/asn1p_module.Tpo" -c -o asn1p_module.lo asn1p_module.c; \ then mv -f ".deps/asn1p_module.Tpo" ".deps/asn1p_module.Plo"; else rm -f ".deps/asn1p_module.Tpo"; exit 1; fi if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_oid.lo -MD -MP -MF ".deps/asn1p_oid.Tpo" -c -o asn1p_oid.lo asn1p_oid.c; \ then mv -f ".deps/asn1p_oid.Tpo" ".deps/asn1p_oid.Plo"; else rm -f ".deps/asn1p_oid.Tpo"; exit 1; fi if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_value.lo -MD -MP -MF ".deps/asn1p_value.Tpo" -c -o asn1p_value.lo asn1p_value.c; \ then mv -f ".deps/asn1p_value.Tpo" ".deps/asn1p_value.Plo"; else rm -f ".deps/asn1p_value.Tpo"; exit 1; fi if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_expr.lo -MD -MP -MF ".deps/asn1p_expr.Tpo" -c -o asn1p_expr.lo asn1p_expr.c; \ then mv -f ".deps/asn1p_expr.Tpo" ".deps/asn1p_expr.Plo"; else rm -f ".deps/asn1p_expr.Tpo"; exit 1; fi if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_xports.lo -MD -MP -MF ".deps/asn1p_xports.Tpo" -c -o asn1p_xports.lo asn1p_xports.c; \ then mv -f ".deps/asn1p_xports.Tpo" ".deps/asn1p_xports.Plo"; else rm -f ".deps/asn1p_xports.Tpo"; exit 1; fi asn1p_y.y: warning: 2 shift/reduce conflicts [-Wconflicts-sr] mkdir .libs gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_module.lo -MD -MP -MF .deps/asn1p_module.Tpo -c asn1p_module.c -fPIC -DPIC -o .libs/asn1p_module.o gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_xports.lo -MD -MP -MF .deps/asn1p_xports.Tpo -c asn1p_xports.c -fPIC -DPIC -o .libs/asn1p_xports.o gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1parser.lo -MD -MP -MF .deps/asn1parser.Tpo -c asn1parser.c -fPIC -DPIC -o .libs/asn1parser.o gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_l.lo -MD -MP -MF .deps/asn1p_l.Tpo -c asn1p_l.c -fPIC -DPIC -o .libs/asn1p_l.o gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_oid.lo -MD -MP -MF .deps/asn1p_oid.Tpo -c asn1p_oid.c -fPIC -DPIC -o .libs/asn1p_oid.o gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_expr.lo -MD -MP -MF .deps/asn1p_expr.Tpo -c asn1p_expr.c -fPIC -DPIC -o .libs/asn1p_expr.o gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_value.lo -MD -MP -MF .deps/asn1p_value.Tpo -c asn1p_value.c -fPIC -DPIC -o .libs/asn1p_value.o gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_xports.lo -MD -MP -MF .deps/asn1p_xports.Tpo -c asn1p_xports.c -o asn1p_xports.o >/dev/null 2>&1 asn1p_l.c:3521:12: warning: 'input' defined but not used [-Wunused-function] static int input() ^~~~~ gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_module.lo -MD -MP -MF .deps/asn1p_module.Tpo -c asn1p_module.c -o asn1p_module.o >/dev/null 2>&1 gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_oid.lo -MD -MP -MF .deps/asn1p_oid.Tpo -c asn1p_oid.c -o asn1p_oid.o >/dev/null 2>&1 gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1parser.lo -MD -MP -MF .deps/asn1parser.Tpo -c asn1parser.c -o asn1parser.o >/dev/null 2>&1 gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_value.lo -MD -MP -MF .deps/asn1p_value.Tpo -c asn1p_value.c -o asn1p_value.o >/dev/null 2>&1 gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_expr.lo -MD -MP -MF .deps/asn1p_expr.Tpo -c asn1p_expr.c -o asn1p_expr.o >/dev/null 2>&1 if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_constr.lo -MD -MP -MF ".deps/asn1p_constr.Tpo" -c -o asn1p_constr.lo asn1p_constr.c; \ then mv -f ".deps/asn1p_constr.Tpo" ".deps/asn1p_constr.Plo"; else rm -f ".deps/asn1p_constr.Tpo"; exit 1; fi if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_param.lo -MD -MP -MF ".deps/asn1p_param.Tpo" -c -o asn1p_param.lo asn1p_param.c; \ then mv -f ".deps/asn1p_param.Tpo" ".deps/asn1p_param.Plo"; else rm -f ".deps/asn1p_param.Tpo"; exit 1; fi if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_class.lo -MD -MP -MF ".deps/asn1p_class.Tpo" -c -o asn1p_class.lo asn1p_class.c; \ then mv -f ".deps/asn1p_class.Tpo" ".deps/asn1p_class.Plo"; else rm -f ".deps/asn1p_class.Tpo"; exit 1; fi if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_ref.lo -MD -MP -MF ".deps/asn1p_ref.Tpo" -c -o asn1p_ref.lo asn1p_ref.c; \ then mv -f ".deps/asn1p_ref.Tpo" ".deps/asn1p_ref.Plo"; else rm -f ".deps/asn1p_ref.Tpo"; exit 1; fi gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_constr.lo -MD -MP -MF .deps/asn1p_constr.Tpo -c asn1p_constr.c -fPIC -DPIC -o .libs/asn1p_constr.o gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_param.lo -MD -MP -MF .deps/asn1p_param.Tpo -c asn1p_param.c -fPIC -DPIC -o .libs/asn1p_param.o gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_class.lo -MD -MP -MF .deps/asn1p_class.Tpo -c asn1p_class.c -fPIC -DPIC -o .libs/asn1p_class.o if test -f y.tab.h; then \ to=`echo "asn1p_y_H" | sed \ -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/' \ -e 's/[^ABCDEFGHIJKLMNOPQRSTUVWXYZ]/_/g'`; \ sed -e "/^#/!b" -e "s/Y_TAB_H/$to/g" -e "s|y\.tab\.h|asn1p_y.h|" \ y.tab.h >asn1p_y.ht; \ rm -f y.tab.h; \ if cmp -s asn1p_y.ht asn1p_y.h; then \ rm -f asn1p_y.ht ;\ else \ mv asn1p_y.ht asn1p_y.h; \ fi; \ fi gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_ref.lo -MD -MP -MF .deps/asn1p_ref.Tpo -c asn1p_ref.c -fPIC -DPIC -o .libs/asn1p_ref.o if test -f y.output; then \ mv y.output asn1p_y.output; \ fi sed '/^#/ s|y\.tab\.c|asn1p_y.c|' y.tab.c >asn1p_y.ct && mv asn1p_y.ct asn1p_y.c rm -f y.tab.c if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_y.lo -MD -MP -MF ".deps/asn1p_y.Tpo" -c -o asn1p_y.lo asn1p_y.c; \ then mv -f ".deps/asn1p_y.Tpo" ".deps/asn1p_y.Plo"; else rm -f ".deps/asn1p_y.Tpo"; exit 1; fi gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_constr.lo -MD -MP -MF .deps/asn1p_constr.Tpo -c asn1p_constr.c -o asn1p_constr.o >/dev/null 2>&1 gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_param.lo -MD -MP -MF .deps/asn1p_param.Tpo -c asn1p_param.c -o asn1p_param.o >/dev/null 2>&1 gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_ref.lo -MD -MP -MF .deps/asn1p_ref.Tpo -c asn1p_ref.c -o asn1p_ref.o >/dev/null 2>&1 gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_class.lo -MD -MP -MF .deps/asn1p_class.Tpo -c asn1p_class.c -o asn1p_class.o >/dev/null 2>&1 gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_y.lo -MD -MP -MF .deps/asn1p_y.Tpo -c asn1p_y.c -fPIC -DPIC -o .libs/asn1p_y.o gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_l.lo -MD -MP -MF .deps/asn1p_l.Tpo -c asn1p_l.c -o asn1p_l.o >/dev/null 2>&1 asn1p_y.y: In function 'asn1p_parse': asn1p_y.y:357:13: error: 'param' undeclared (first use in this function) *(void **)param = $1; ^~~~~ asn1p_y.y:357:13: note: each undeclared identifier is reported only once for each function it appears in Makefile:299: recipe for target 'asn1p_y.lo' failed make[2]: *** [asn1p_y.lo] Error 1 make[2]: *** Waiting for unfinished jobs.... make[2]: Leaving directory ' Makefile:302: recipe for target 'all-recursive' failed make[1]: *** [all-recursive] Error 1 make[1]: Leaving directory ' Makefile:212: recipe for target 'all' failed make: *** [all] Error 2 Build step 'Execute shell' marked build as failure [WARNINGS]Skipping publisher since build result is FAILURE From gerrit-no-reply at lists.osmocom.org Fri Apr 6 16:58:41 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Fri, 6 Apr 2018 16:58:41 +0000 Subject: osmo-ttcn3-hacks[master]: support ccache to speed up ttcn3 test compilation In-Reply-To: References: Message-ID: Patch Set 7: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7601 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Ibb538f602206535c06980f88191c1dabe3c4cd82 Gerrit-PatchSet: 7 Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Owner: Stefan Sperling Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Neels Hofmeyr Gerrit-Reviewer: Stefan Sperling Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Fri Apr 6 16:58:46 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Fri, 6 Apr 2018 16:58:46 +0000 Subject: [MERGED] osmo-ttcn3-hacks[master]: support ccache to speed up ttcn3 test compilation In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: support ccache to speed up ttcn3 test compilation ...................................................................... support ccache to speed up ttcn3 test compilation By default, if ccache is found in PATH when regen-makefile.sh runs, use cached compiled C++ object files during the build (or populate the cache in case an object is not cached yet). Objects are cached in ccache's default cache directory (~/.ccache) unless overriden by the CCACHE_DIR environment variable. The USE_CCACHE environment variable overrides auto-detection in regen-makefile.sh and disables (USE_CCACHE=0) or enables (USE_CCACHE=1) use of ccache. Rebuilding the test suite from scratch with a populated cache is an order of magnitude faster than doing an initial build. ccache only speeds up C++ (.cc) to object file (.o) compilation. Linking object (.o) files into shared object (.so) files is still performed by the real compiler during every build. Change-Id: Ibb538f602206535c06980f88191c1dabe3c4cd82 --- M regen-makefile.sh 1 file changed, 18 insertions(+), 0 deletions(-) Approvals: Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/regen-makefile.sh b/regen-makefile.sh index 57eebff..6b32f75 100755 --- a/regen-makefile.sh +++ b/regen-makefile.sh @@ -12,6 +12,16 @@ test -x "$(which ttcn3_makefilegen 2>/dev/null)" || { echo "ERROR: ttcn3_makefilegen not in PATH"; exit 1; } +# Enable ccache if it can be found in path. +# This speeds up repeated builds of the TTCN3 tests by an order of magnitude +# since most of the generated C++ source files don't change very often. +# Roughly, for an initial build which takes N minutes, a complete rebuild +# after 'make clean' will only take N seconds with ccache. +# Note that ccache cannot speed up compilation of .o files to .so files. +if [ -z "$USE_CCACHE" ] && which ccache 2>/dev/null; then + USE_CCACHE=1 +fi + ttcn3_makefilegen -p -l -f $* sed -i -e 's/# TTCN3_DIR = /TTCN3_DIR = \/usr/' Makefile sed -i -e 's/LDFLAGS = /LDFLAGS = -L \/usr\/lib\/titan /' Makefile @@ -32,3 +42,11 @@ sed -i -e 's/TTCN3_DIR = $/TTCN3_DIR = \/usr/' Makefile fi sed -i -e 's/\/bin\/compiler/\/bin\/ttcn3_compiler/' Makefile + +if [ "x$USE_CCACHE" = "x1" ]; then + # enable ccache + sed -i -e 's/^CXX = g++ $/CXX = env CCACHE_SLOPPINESS=time_macros ccache g++/' Makefile + # Append the -D option to compiler flags. This option disables timestamps + # inside comments in the generated C++ code which interfere with ccache. + sed -i -e 's/^COMPILER_FLAGS = \(.*\)/&-D/' Makefile +fi -- To view, visit https://gerrit.osmocom.org/7601 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: Ibb538f602206535c06980f88191c1dabe3c4cd82 Gerrit-PatchSet: 8 Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Owner: Stefan Sperling Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Neels Hofmeyr Gerrit-Reviewer: Stefan Sperling From jenkins at lists.osmocom.org Fri Apr 6 23:20:13 2018 From: jenkins at lists.osmocom.org (jenkins at lists.osmocom.org) Date: Fri, 6 Apr 2018 23:20:13 +0000 (UTC) Subject: =?UTF-8?Q?Build_failed_in_Jenkins:_master-osmo-bts_=C2=BB_sysmo, sup?= =?UTF-8?Q?erfemto=5Fv3.0.1pre,default,osmocom-master-debian9_#472?= Message-ID: <1368184660.108.1523056813200.JavaMail.jenkins@jenkins.osmocom.org> See ------------------------------------------ Started by upstream project "master-osmo-bts" build number 472 originally caused by: Started by timer Building remotely on build2-deb9build-ansible (ttcn3 osmo-gsm-tester-build osmocom-gerrit-debian9 osmocom-master-debian9 coverity) in workspace > git rev-parse --is-inside-work-tree # timeout=10 Fetching changes from the remote Git repository > git config remote.origin.url git://git.osmocom.org/osmo-bts # timeout=10 Fetching upstream changes from git://git.osmocom.org/osmo-bts > git --version # timeout=10 > git fetch --tags --progress git://git.osmocom.org/osmo-bts +refs/heads/*:refs/remotes/origin/* Checking out Revision e5518b07d6fc3375a9e4004a2ed2680dbb2d178e (refs/remotes/origin/master) > git config core.sparsecheckout # timeout=10 > git checkout -f e5518b07d6fc3375a9e4004a2ed2680dbb2d178e Commit message: "contrib: jenkins_bts_model: Fix bashism expr" > git rev-list --no-walk e5518b07d6fc3375a9e4004a2ed2680dbb2d178e # timeout=10 [osmocom-master-debian9] $ /bin/sh -xe /tmp/jenkins6077074383943270998.sh + ./contrib/jenkins_bts_model.sh sysmo + ./contrib/jenkins_sysmobts.sh + base= + deps= + inst= + export deps inst + osmo-clean-workspace.sh + chmod -R +w . + git checkout -f HEAD + git clean -dxf -e -e layer1-headers Skipping repository deps/libosmocore + [ -d ] + git -C checkout -f HEAD error: pathspec 'HEAD' did not match any file(s) known to git. Build step 'Execute shell' marked build as failure [WARNINGS]Skipping publisher since build result is FAILURE From jenkins at lists.osmocom.org Fri Apr 6 23:59:33 2018 From: jenkins at lists.osmocom.org (jenkins at lists.osmocom.org) Date: Fri, 6 Apr 2018 23:59:33 +0000 (UTC) Subject: =?UTF-8?Q?Build_failed_in_Jenkins:_master-osmo-bts_=C2=BB_sysmo,?= =?UTF-8?Q?femtobts=5Fv2.7,default,osmocom-master-debian9_#473?= Message-ID: <1944403328.109.1523059173348.JavaMail.jenkins@jenkins.osmocom.org> See ------------------------------------------ Started by upstream project "master-osmo-bts" build number 473 originally caused by: Started by upstream project "master-libosmo-abis" build number 263 originally caused by: Started by upstream project "master-libosmocore" build number 194 originally caused by: Started by timer Building remotely on build2-deb9build-ansible (ttcn3 osmo-gsm-tester-build osmocom-gerrit-debian9 osmocom-master-debian9 coverity) in workspace > git rev-parse --is-inside-work-tree # timeout=10 Fetching changes from the remote Git repository > git config remote.origin.url git://git.osmocom.org/osmo-bts # timeout=10 Fetching upstream changes from git://git.osmocom.org/osmo-bts > git --version # timeout=10 > git fetch --tags --progress git://git.osmocom.org/osmo-bts +refs/heads/*:refs/remotes/origin/* Checking out Revision e5518b07d6fc3375a9e4004a2ed2680dbb2d178e (refs/remotes/origin/master) > git config core.sparsecheckout # timeout=10 > git checkout -f e5518b07d6fc3375a9e4004a2ed2680dbb2d178e Commit message: "contrib: jenkins_bts_model: Fix bashism expr" > git rev-list --no-walk e5518b07d6fc3375a9e4004a2ed2680dbb2d178e # timeout=10 [osmocom-master-debian9] $ /bin/sh -xe /tmp/jenkins2734248633901524950.sh + ./contrib/jenkins_bts_model.sh sysmo + ./contrib/jenkins_sysmobts.sh + base= + deps= + inst= + export deps inst + osmo-clean-workspace.sh + chmod -R +w . + git checkout -f HEAD + git clean -dxf -e -e layer1-headers Skipping repository deps/libosmocore + [ -d ] + git -C checkout -f HEAD error: pathspec 'HEAD' did not match any file(s) known to git. Build step 'Execute shell' marked build as failure [WARNINGS]Skipping publisher since build result is FAILURE From jenkins at lists.osmocom.org Sat Apr 7 00:01:49 2018 From: jenkins at lists.osmocom.org (jenkins at lists.osmocom.org) Date: Sat, 7 Apr 2018 00:01:49 +0000 (UTC) Subject: =?UTF-8?Q?Build_failed_in_Jenkins:_master-osmo-bts_=C2=BB_sysmo, sup?= =?UTF-8?Q?erfemto=5Fv3.0.1pre,default,osmocom-master-debian9_#473?= In-Reply-To: <1368184660.108.1523056813200.JavaMail.jenkins@jenkins.osmocom.org> References: <1368184660.108.1523056813200.JavaMail.jenkins@jenkins.osmocom.org> Message-ID: <970165520.110.1523059309216.JavaMail.jenkins@jenkins.osmocom.org> See ------------------------------------------ Started by upstream project "master-osmo-bts" build number 473 originally caused by: Started by upstream project "master-libosmo-abis" build number 263 originally caused by: Started by upstream project "master-libosmocore" build number 194 originally caused by: Started by timer Building remotely on build2-deb9build-ansible (ttcn3 osmo-gsm-tester-build osmocom-gerrit-debian9 osmocom-master-debian9 coverity) in workspace > git rev-parse --is-inside-work-tree # timeout=10 Fetching changes from the remote Git repository > git config remote.origin.url git://git.osmocom.org/osmo-bts # timeout=10 Fetching upstream changes from git://git.osmocom.org/osmo-bts > git --version # timeout=10 > git fetch --tags --progress git://git.osmocom.org/osmo-bts +refs/heads/*:refs/remotes/origin/* Checking out Revision e5518b07d6fc3375a9e4004a2ed2680dbb2d178e (refs/remotes/origin/master) > git config core.sparsecheckout # timeout=10 > git checkout -f e5518b07d6fc3375a9e4004a2ed2680dbb2d178e Commit message: "contrib: jenkins_bts_model: Fix bashism expr" > git rev-list --no-walk e5518b07d6fc3375a9e4004a2ed2680dbb2d178e # timeout=10 [osmocom-master-debian9] $ /bin/sh -xe /tmp/jenkins432713322616975304.sh + ./contrib/jenkins_bts_model.sh sysmo + ./contrib/jenkins_sysmobts.sh + base= + deps= + inst= + export deps inst + osmo-clean-workspace.sh + chmod -R +w . + git checkout -f HEAD + git clean -dxf -e -e layer1-headers Skipping repository deps/libosmocore + [ -d ] + git -C checkout -f HEAD error: pathspec 'HEAD' did not match any file(s) known to git. Build step 'Execute shell' marked build as failure [WARNINGS]Skipping publisher since build result is FAILURE From jenkins at lists.osmocom.org Sat Apr 7 00:49:00 2018 From: jenkins at lists.osmocom.org (jenkins at lists.osmocom.org) Date: Sat, 7 Apr 2018 00:49:00 +0000 (UTC) Subject: =?UTF-8?Q?Build_failed_in_Jenkins:_master-osmo-bts_=C2=BB_sysmo, sup?= =?UTF-8?Q?erfemto=5Fv3.0.1pre,default,osmocom-master-debian9_#474?= In-Reply-To: <970165520.110.1523059309216.JavaMail.jenkins@jenkins.osmocom.org> References: <970165520.110.1523059309216.JavaMail.jenkins@jenkins.osmocom.org> Message-ID: <1281528068.111.1523062140637.JavaMail.jenkins@jenkins.osmocom.org> See ------------------------------------------ Started by upstream project "master-osmo-bts" build number 474 originally caused by: Started by upstream project "master-libosmo-abis" build number 264 originally caused by: Started by timer Building remotely on build2-deb9build-ansible (ttcn3 osmo-gsm-tester-build osmocom-gerrit-debian9 osmocom-master-debian9 coverity) in workspace > git rev-parse --is-inside-work-tree # timeout=10 Fetching changes from the remote Git repository > git config remote.origin.url git://git.osmocom.org/osmo-bts # timeout=10 Fetching upstream changes from git://git.osmocom.org/osmo-bts > git --version # timeout=10 > git fetch --tags --progress git://git.osmocom.org/osmo-bts +refs/heads/*:refs/remotes/origin/* Checking out Revision e5518b07d6fc3375a9e4004a2ed2680dbb2d178e (refs/remotes/origin/master) > git config core.sparsecheckout # timeout=10 > git checkout -f e5518b07d6fc3375a9e4004a2ed2680dbb2d178e Commit message: "contrib: jenkins_bts_model: Fix bashism expr" > git rev-list --no-walk e5518b07d6fc3375a9e4004a2ed2680dbb2d178e # timeout=10 [osmocom-master-debian9] $ /bin/sh -xe /tmp/jenkins8636413725935580346.sh + ./contrib/jenkins_bts_model.sh sysmo + ./contrib/jenkins_sysmobts.sh + base= + deps= + inst= + export deps inst + osmo-clean-workspace.sh + chmod -R +w . + git checkout -f HEAD + git clean -dxf -e -e layer1-headers Skipping repository deps/libosmocore + [ -d ] + git -C checkout -f HEAD error: pathspec 'HEAD' did not match any file(s) known to git. Build step 'Execute shell' marked build as failure [WARNINGS]Skipping publisher since build result is FAILURE From jenkins at lists.osmocom.org Sat Apr 7 00:49:19 2018 From: jenkins at lists.osmocom.org (jenkins at lists.osmocom.org) Date: Sat, 7 Apr 2018 00:49:19 +0000 (UTC) Subject: =?UTF-8?Q?Jenkins_build_is_back_to_normal_:_master-osmo-bts_=C2=BB_s?= =?UTF-8?Q?ysmo,femtobts=5Fv2.7,default,osmocom-master-debian9_#474?= In-Reply-To: <1944403328.109.1523059173348.JavaMail.jenkins@jenkins.osmocom.org> References: <1944403328.109.1523059173348.JavaMail.jenkins@jenkins.osmocom.org> Message-ID: <67930161.112.1523062159286.JavaMail.jenkins@jenkins.osmocom.org> See From jenkins at lists.osmocom.org Sat Apr 7 07:35:54 2018 From: jenkins at lists.osmocom.org (jenkins at lists.osmocom.org) Date: Sat, 7 Apr 2018 07:35:54 +0000 (UTC) Subject: =?UTF-8?Q?Build_failed_in_Jenkins:_master-osmo-pcu_=C2=BB_m?= =?UTF-8?Q?aster,osmocom-master-debian9,none,False_#359?= Message-ID: <1002353212.124.1523086554525.JavaMail.jenkins@jenkins.osmocom.org> See ------------------------------------------ [...truncated 114.92 KB...] CXX egprs_rlc_compression.lo CXXLD libgprs.la ar: `u' modifier ignored since `D' is the default (see `U') CXX pcu_main.o CXXLD osmo-pcu make[2]: Leaving directory ' Making all in examples make[2]: Entering directory ' make[2]: Nothing to be done for 'all'. make[2]: Leaving directory ' Making all in tests make[2]: Entering directory ' CXX pcu_emu.o CXX test_replay_gprs_attach.o CC openbsc_clone.o CXX test_pdp_activation.o CXXLD emu/pcu_emu make[2]: Leaving directory ' make[2]: Entering directory ' make[2]: Nothing to be done for 'all-am'. make[2]: Leaving directory ' make[1]: Leaving directory ' make[1]: Entering directory ' Making dvi in include make[2]: Entering directory ' make[2]: Nothing to be done for 'dvi'. make[2]: Leaving directory ' Making dvi in src make[2]: Entering directory ' make[2]: Nothing to be done for 'dvi'. make[2]: Leaving directory ' Making dvi in examples make[2]: Entering directory ' make[2]: Nothing to be done for 'dvi'. make[2]: Leaving directory ' Making dvi in tests make[2]: Entering directory ' make[2]: Nothing to be done for 'dvi'. make[2]: Leaving directory ' make[2]: Entering directory ' make[2]: Nothing to be done for 'dvi-am'. make[2]: Leaving directory ' make[1]: Leaving directory ' make[1]: Entering directory ' Making check in include make[2]: Entering directory ' make[2]: Nothing to be done for 'check'. make[2]: Leaving directory ' Making check in src make[2]: Entering directory ' make[2]: Nothing to be done for 'check'. make[2]: Leaving directory ' Making check in examples make[2]: Entering directory ' make[2]: Nothing to be done for 'check'. make[2]: Leaving directory ' Making check in tests make[2]: Entering directory ' make rlcmac/RLCMACTest alloc/AllocTest alloc/MslotTest tbf/TbfTest types/TypesTest ms/MsTest llist/LListTest llc/LlcTest codel/codel_test edge/EdgeTest bitcomp/BitcompTest fn/FnTest make[3]: Entering directory ' CXX RLCMACTest.o CXXLD rlcmac/RLCMACTest CXX AllocTest.o CXXLD alloc/AllocTest CXX MslotTest.o CXXLD alloc/MslotTest CXX TbfTest.o CXXLD tbf/TbfTest CXX TypesTest.o CXXLD types/TypesTest CXX MsTest.o CXXLD ms/MsTest CXX LListTest.o CXXLD llist/LListTest CXX LlcTest.o CXXLD llc/LlcTest CC codel_test.o CCLD codel/codel_test CXX EdgeTest.o CXXLD edge/EdgeTest CXX BitcompTest.o CXX egprs_rlc_compression.o CXXLD bitcomp/BitcompTest CXX FnTest.o CXXLD fn/FnTest make[3]: Leaving directory ' make check-local make[3]: Entering directory ' /bin/bash '../../../tests/testsuite' ## ----------------------------------- ## ## osmo-pcu 0.4.0.111-42f2 test suite. ## ## ----------------------------------- ## Regression tests 1: rlcmac ok 2: multi_slot ok 3: ts_alloc ok 4: tbf ok 5: bitcomp ok 6: edge ok 7: types ok 8: ms ok 9: llc ok 10: llist ok 11: codel ok 12: fn ok ## ------------- ## ## Test results. ## ## ------------- ## All 12 tests were successful. make python-tests make[4]: Entering directory ' Not running python-based tests (determined at configure-time) make[4]: Leaving directory ' make[3]: Leaving directory ' make[2]: Leaving directory ' make[2]: Entering directory ' make[2]: Nothing to be done for 'check-am'. make[2]: Leaving directory ' make[1]: Leaving directory ' make[1]: Entering directory ' Making install in include make[2]: Entering directory ' make[3]: Entering directory ' make[3]: Nothing to be done for 'install-exec-am'. /bin/mkdir -p ' /bin/mkdir -p ' /usr/bin/install -c -m 644 ../../../include/osmocom/pcu/pcuif_proto.h ' make[3]: Leaving directory ' make[2]: Leaving directory ' Making install in src make[2]: Entering directory ' make[3]: Entering directory ' /bin/mkdir -p ' /bin/bash ../libtool --mode=install /usr/bin/install -c osmo-pcu ' libtool: install: /usr/bin/install -c osmo-pcu make[3]: Leaving directory ' make[2]: Leaving directory ' Making install in examples make[2]: Entering directory ' make[3]: Entering directory ' make[3]: Nothing to be done for 'install-exec-am'. /bin/mkdir -p ' /usr/bin/install -c -m 644 ../../../examples/osmo-pcu.cfg ' make[3]: Leaving directory ' make[2]: Leaving directory ' Making install in tests make[2]: Entering directory ' make[3]: Entering directory ' make[3]: Nothing to be done for 'install-exec-am'. make[3]: Nothing to be done for 'install-data-am'. make[3]: Leaving directory ' make[2]: Leaving directory ' make[2]: Entering directory ' make[3]: Entering directory ' make[3]: Nothing to be done for 'install-exec-am'. /bin/mkdir -p ' /usr/bin/install -c -m 644 osmo-pcu.pc ' make[3]: Leaving directory ' make[2]: Leaving directory ' make[1]: Leaving directory ' make[1]: Entering directory ' Making installcheck in include make[2]: Entering directory ' make[2]: Nothing to be done for 'installcheck'. make[2]: Leaving directory ' Making installcheck in src make[2]: Entering directory ' make[2]: Nothing to be done for 'installcheck'. make[2]: Leaving directory ' Making installcheck in examples make[2]: Entering directory ' make[2]: Nothing to be done for 'installcheck'. make[2]: Leaving directory ' Making installcheck in tests make[2]: Entering directory ' /bin/bash '../../../tests/testsuite' AUTOTEST_PATH=' \ ## ----------------------------------- ## ## osmo-pcu 0.4.0.111-42f2 test suite. ## ## ----------------------------------- ## Regression tests 1: rlcmac ok 2: multi_slot ok 3: ts_alloc ok 4: tbf FAILED (testsuite.at:29) 5: bitcomp ok 6: edge ok 7: types ok 8: ms ok 9: llc ok 10: llist ok 11: codel ok 12: fn ok ## ------------- ## ## Test results. ## ## ------------- ## ERROR: All 12 tests were run, 1 failed unexpectedly. ## -------------------------- ## ## testsuite.log was created. ## ## -------------------------- ## Please send `tests/testsuite.log' and all information you think might help: To: Subject: [osmo-pcu 0.4.0.111-42f2] testsuite: 4 failed You may investigate any problem if you feel able to do so, in which case the test suite provides a good starting point. Its output may be found below `tests/testsuite.dir'. Makefile:1265: recipe for target 'installcheck-local' failed make[2]: *** [installcheck-local] Error 1 make[2]: Leaving directory ' Makefile:461: recipe for target 'installcheck-recursive' failed make[1]: *** [installcheck-recursive] Error 1 make[1]: Leaving directory ' Makefile:666: recipe for target 'distcheck' failed make: *** [distcheck] Error 1 + cat-testlogs.sh ======================== ./osmo-pcu-0.4.0.111-42f2/_build/sub/tests/testsuite.dir/04/testsuite.log # -*- compilation -*- 4. testsuite.at:25: testing tbf ... ../../../tests/testsuite.at:29: $OSMO_QEMU $abs_top_builddir/tests/tbf/TbfTest --- experr 2018-04-07 07:35:52.976528784 +0000 +++ 2018-04-07 07:35:53.016528760 +0000 @@ -1929,6 +1929,7 @@ TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=ASSIGN) starting timer T0 [assignment (PACCH)] with 2 sec. 0 microsec. Got CS-1 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=184 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW) UL DATA TFI=0 received (V(Q)=0 .. V(R)=0) +../../../src/gprs_rlcmac_meas.cpp:82:42: runtime error: left shift of negative value -999790 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW) Got CS-1 RLC data block: CV=15, BSN=0, SPB=0, PI=0, E=1, TI=0, bitoffs=24 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW) BSN 0 storing in window (0..63) 4. testsuite.at:25: 4. tbf (testsuite.at:25): FAILED (testsuite.at:29) Build step 'Execute shell' marked build as failure [WARNINGS]Skipping publisher since build result is FAILURE From gerrit-no-reply at lists.osmocom.org Sat Apr 7 09:00:43 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Sat, 7 Apr 2018 09:00:43 +0000 Subject: osmo-bsc[master]: Generate the S_L_INP_TEI_UP signal earlier. In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7503 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I78a152671a00b95c997830f7161fca92bb898fa3 Gerrit-PatchSet: 1 Gerrit-Project: osmo-bsc Gerrit-Branch: master Gerrit-Owner: Stefan Sperling Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Stefan Sperling Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Sat Apr 7 09:01:06 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Sat, 7 Apr 2018 09:01:06 +0000 Subject: [MERGED] osmo-bsc[master]: Generate the S_L_INP_TEI_UP signal earlier. In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: Generate the S_L_INP_TEI_UP signal earlier. ...................................................................... Generate the S_L_INP_TEI_UP signal earlier. The S_L_INP_TEI_UP signal was generated when the first message from a BTS arrives on the OML/RSL link, rather than when the OML/RSL link comes up. Instead, generate this signal when the link is brought up, so we intitialize state regardless of how a particular BTS behaves. Tested with osmo-bts-virtual and virtphy/mobile programs, and with a sysmobts. This was already committed in faf0982ae20001519cf20c5d6345dad490a135f2 but subsequently reverted in 383a059a123b1e0e5aab76423db47846e329f095 because it introduced a regression. The underlying problem causing this regression has now been addressed by https://gerrit.osmocom.org/#/c/7462/ (libosmo-abis commit 49917c129b1456585258b0ebe89a513ecef823a8). Change-Id: I78a152671a00b95c997830f7161fca92bb898fa3 Depends: I52f7c903212b38e9c87e4d45e52b231b6f1ae9f5 Related: OS#2719 --- M src/libbsc/bts_ipaccess_nanobts.c 1 file changed, 12 insertions(+), 13 deletions(-) Approvals: Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/src/libbsc/bts_ipaccess_nanobts.c b/src/libbsc/bts_ipaccess_nanobts.c index a3f7919..edfe417 100644 --- a/src/libbsc/bts_ipaccess_nanobts.c +++ b/src/libbsc/bts_ipaccess_nanobts.c @@ -438,6 +438,11 @@ bts->oml_tei, 0); rc = clock_gettime(CLOCK_MONOTONIC, &tp); bts->uptime = (rc < 0) ? 0 : tp.tv_sec; /* we don't need sub-second precision for uptime */ + if (!(sign_link->trx->bts->ip_access.flags & OML_UP)) { + e1inp_event(sign_link->ts, S_L_INP_TEI_UP, + sign_link->tei, sign_link->sapi); + sign_link->trx->bts->ip_access.flags |= OML_UP; + } break; case E1INP_SIGN_RSL: { struct e1inp_ts *ts; @@ -458,6 +463,13 @@ e1inp_sign_link_create(ts, E1INP_SIGN_RSL, trx, trx->rsl_tei, 0); trx->rsl_link->ts->sign.delay = 0; + if (!(sign_link->trx->bts->ip_access.flags & + (RSL_UP << sign_link->trx->nr))) { + e1inp_event(sign_link->ts, S_L_INP_TEI_UP, + sign_link->tei, sign_link->sapi); + sign_link->trx->bts->ip_access.flags |= + (RSL_UP << sign_link->trx->nr); + } break; } default: @@ -490,25 +502,12 @@ { int ret = 0; struct e1inp_sign_link *link = msg->dst; - struct e1inp_ts *e1i_ts = link->ts; switch (link->type) { case E1INP_SIGN_RSL: - if (!(link->trx->bts->ip_access.flags & - (RSL_UP << link->trx->nr))) { - e1inp_event(e1i_ts, S_L_INP_TEI_UP, - link->tei, link->sapi); - link->trx->bts->ip_access.flags |= - (RSL_UP << link->trx->nr); - } ret = abis_rsl_rcvmsg(msg); break; case E1INP_SIGN_OML: - if (!(link->trx->bts->ip_access.flags & OML_UP)) { - e1inp_event(e1i_ts, S_L_INP_TEI_UP, - link->tei, link->sapi); - link->trx->bts->ip_access.flags |= OML_UP; - } ret = abis_nm_rcvmsg(msg); break; default: -- To view, visit https://gerrit.osmocom.org/7503 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: I78a152671a00b95c997830f7161fca92bb898fa3 Gerrit-PatchSet: 2 Gerrit-Project: osmo-bsc Gerrit-Branch: master Gerrit-Owner: Stefan Sperling Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Stefan Sperling From gerrit-no-reply at lists.osmocom.org Sat Apr 7 09:35:28 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Sat, 7 Apr 2018 09:35:28 +0000 Subject: [PATCH] osmo-bsc[master]: Start Dynamic PDCH Initialization after RSL is up Message-ID: Review at https://gerrit.osmocom.org/7661 Start Dynamic PDCH Initialization after RSL is up We used to start the dynamic PDCH initialization right after the respective OML initialization of the related timeslot. However, this is problematic as the RSL link may very well not even be up yet at that point. So let's do this at RSL link esetablishment time, not from OML. Change-Id: I8ac30ca075a1db4b624dc38a423d844d705fda7e Closes: OS#1841 --- M src/libbsc/abis_om2000.c M src/libbsc/bsc_init.c M src/libbsc/bts_ipaccess_nanobts.c 3 files changed, 3 insertions(+), 13 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-bsc refs/changes/61/7661/1 diff --git a/src/libbsc/abis_om2000.c b/src/libbsc/abis_om2000.c index 756cc89..6057bc6 100644 --- a/src/libbsc/abis_om2000.c +++ b/src/libbsc/abis_om2000.c @@ -1683,15 +1683,6 @@ static void om2k_mo_st_wait_opinfo_accept(struct osmo_fsm_inst *fi, uint32_t event, void *data) { - struct om2k_mo_fsm_priv *omfp = fi->priv; - - /* if we have just received opinfo accept for the timeslot, - * start dynamic TCH switching procedures */ - if (omfp->mo->addr.class == OM2K_MO_CLS_TS) { - struct gsm_bts_trx_ts *ts; - ts = mo2obj(omfp->trx->bts, &omfp->mo->addr); - dyn_ts_init(ts); - } osmo_fsm_inst_state_chg(fi, OM2K_ST_DONE, 0, 0); } diff --git a/src/libbsc/bsc_init.c b/src/libbsc/bsc_init.c index f164533..ba8b8e6 100644 --- a/src/libbsc/bsc_init.c +++ b/src/libbsc/bsc_init.c @@ -350,8 +350,10 @@ rsl_nokia_si_end(trx); } - for (i = 0; i < ARRAY_SIZE(trx->ts); i++) + for (i = 0; i < ARRAY_SIZE(trx->ts); i++) { generate_ma_for_ts(&trx->ts[i]); + dyn_ts_init(&trx->ts[i]); + } if (acc_ramp_is_enabled(&trx->bts->acc_ramp)) acc_ramp_start(&trx->bts->acc_ramp); diff --git a/src/libbsc/bts_ipaccess_nanobts.c b/src/libbsc/bts_ipaccess_nanobts.c index edfe417..4f1ac4b 100644 --- a/src/libbsc/bts_ipaccess_nanobts.c +++ b/src/libbsc/bts_ipaccess_nanobts.c @@ -175,9 +175,6 @@ abis_nm_opstart(trx->bts, obj_class, trx->bts->bts_nr, trx->nr, ts->nr); } - if (new_state->operational == NM_OPSTATE_ENABLED - && new_state->availability == NM_AVSTATE_OK) - dyn_ts_init(ts); break; case NM_OC_RADIO_CARRIER: trx = obj; -- To view, visit https://gerrit.osmocom.org/7661 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I8ac30ca075a1db4b624dc38a423d844d705fda7e Gerrit-PatchSet: 1 Gerrit-Project: osmo-bsc Gerrit-Branch: master Gerrit-Owner: Harald Welte From jenkins at lists.osmocom.org Sat Apr 7 15:10:07 2018 From: jenkins at lists.osmocom.org (jenkins at lists.osmocom.org) Date: Sat, 7 Apr 2018 15:10:07 +0000 (UTC) Subject: =?UTF-8?Q?Build_failed_in_Jenkins:_master-asn1c_=C2=BB_a1=3Ddefaul?= =?UTF-8?Q?t,a2=3Ddefault,a3=3Ddefault,osmocom-master-debian9_#80?= In-Reply-To: <1461353327.104.1523027406536.JavaMail.jenkins@jenkins.osmocom.org> References: <1461353327.104.1523027406536.JavaMail.jenkins@jenkins.osmocom.org> Message-ID: <1752897870.127.1523113807062.JavaMail.jenkins@jenkins.osmocom.org> See ------------------------------------------ [...truncated 2.09 KB...] + ./configure checking build system type... x86_64-unknown-linux-gnu checking host system type... x86_64-unknown-linux-gnu checking target system type... x86_64-unknown-linux-gnu checking for a BSD-compatible install... /usr/bin/install -c checking whether build environment is sane... yes checking for gawk... gawk checking whether make sets $(MAKE)... yes checking whether to enable maintainer-specific portions of Makefiles... no checking for style of include used by make... GNU checking for gcc... gcc checking for C compiler default output file name... a.out checking whether the C compiler works... yes checking whether we are cross compiling... no checking for suffix of executables... checking for suffix of object files... o checking whether we are using the GNU C compiler... yes checking whether gcc accepts -g... yes checking for gcc option to accept ISO C89... none needed checking dependency style of gcc... gcc3 checking for a sed that does not truncate output... /bin/sed checking for grep that handles long lines and -e... /bin/grep checking for egrep... /bin/grep -E checking for ld used by gcc... /usr/bin/ld checking if the linker (/usr/bin/ld) is GNU ld... yes checking for /usr/bin/ld option to reload object files... -r checking for BSD-compatible nm... /usr/bin/nm -B checking whether ln -s works... yes checking how to recognise dependent libraries... pass_all checking how to run the C preprocessor... gcc -E checking for ANSI C header files... yes checking for sys/types.h... yes checking for sys/stat.h... yes checking for stdlib.h... yes checking for string.h... yes checking for memory.h... yes checking for strings.h... yes checking for inttypes.h... yes checking for stdint.h... yes checking for unistd.h... yes checking dlfcn.h usability... yes checking dlfcn.h presence... yes checking for dlfcn.h... yes checking for g++... g++ checking whether we are using the GNU C++ compiler... yes checking whether g++ accepts -g... yes checking dependency style of g++... gcc3 checking how to run the C++ preprocessor... g++ -E checking for g77... no checking for f77... no checking for xlf... no checking for frt... no checking for pgf77... no checking for cf77... no checking for fort77... no checking for fl32... no checking for af77... no checking for f90... no checking for xlf90... no checking for pgf90... no checking for pghpf... no checking for epcf90... no checking for gfortran... no checking for g95... no checking for f95... no checking for fort... no checking for xlf95... no checking for ifort... no checking for ifc... no checking for efc... no checking for pgf95... no checking for lf95... no checking for ftn... no checking whether we are using the GNU Fortran 77 compiler... no checking whether accepts -g... no checking the maximum length of command line arguments... 32768 checking command to parse /usr/bin/nm -B output from gcc object... ok checking for objdir... .libs checking for ar... ar checking for ranlib... ranlib checking for strip... strip checking if gcc supports -fno-rtti -fno-exceptions... no checking for gcc option to produce PIC... -fPIC checking if gcc PIC flag -fPIC works... yes checking if gcc static flag -static works... yes checking if gcc supports -c -o file.o... yes checking whether the gcc linker (/usr/bin/ld -m elf_x86_64) supports shared libraries... yes checking whether -lc should be explicitly linked in... no checking dynamic linker characteristics... GNU/Linux ld.so checking how to hardcode library paths into programs... immediate checking whether stripping libraries is possible... yes checking if libtool supports shared libraries... yes checking whether to build shared libraries... yes checking whether to build static libraries... yes configure: creating libtool appending configuration tag "CXX" to libtool checking for ld used by g++... /usr/bin/ld -m elf_x86_64 checking if the linker (/usr/bin/ld -m elf_x86_64) is GNU ld... yes checking whether the g++ linker (/usr/bin/ld -m elf_x86_64) supports shared libraries... yes checking for g++ option to produce PIC... -fPIC checking if g++ PIC flag -fPIC works... yes checking if g++ static flag -static works... yes checking if g++ supports -c -o file.o... yes checking whether the g++ linker (/usr/bin/ld -m elf_x86_64) supports shared libraries... yes checking dynamic linker characteristics... GNU/Linux ld.so checking how to hardcode library paths into programs... immediate appending configuration tag "F77" to libtool checking for autoconf... /usr/bin/autoconf checking for autoheader... /usr/bin/autoheader checking for gcc... (cached) gcc checking whether we are using the GNU C compiler... (cached) yes checking whether gcc accepts -g... (cached) yes checking for gcc option to accept ISO C89... (cached) none needed checking dependency style of gcc... (cached) gcc3 checking how to run the C preprocessor... gcc -E checking for a BSD-compatible install... /usr/bin/install -c checking whether ln -s works... yes checking whether make sets $(MAKE)... (cached) yes checking for bison... bison -y checking for flex... flex checking for yywrap in -lfl... yes checking lex output file root... lex.yy checking whether yytext is a pointer... yes checking for ar... /usr/bin/ar checking for ANSI C header files... (cached) yes checking sys/param.h usability... yes checking sys/param.h presence... yes checking for sys/param.h... yes checking whether byte ordering is bigendian... no checking for off_t... yes checking for size_t... yes checking whether struct tm is in sys/time.h or time.h... time.h checking for intmax_t... yes checking for library containing getopt... none required checking for strtoimax... yes checking for strtoll... yes checking for mergesort... no checking for mkstemps... yes configure: creating ./config.status config.status: creating skeletons/standard-modules/Makefile config.status: creating skeletons/tests/Makefile config.status: creating libasn1compiler/Makefile config.status: creating libasn1parser/Makefile config.status: creating libasn1print/Makefile config.status: creating asn1c/webcgi/Makefile config.status: creating asn1c/tests/Makefile config.status: creating libasn1fix/Makefile config.status: creating skeletons/Makefile config.status: creating examples/Makefile config.status: creating tests/Makefile config.status: creating asn1c/Makefile config.status: creating doc/Makefile config.status: creating asn1c.spec config.status: creating Makefile config.status: creating config.h config.status: executing depfiles commands + make -j 4 make all-recursive make[1]: Entering directory ' Making all in libasn1parser make[2]: Entering directory ' if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1parser.lo -MD -MP -MF ".deps/asn1parser.Tpo" -c -o asn1parser.lo asn1parser.c; \ then mv -f ".deps/asn1parser.Tpo" ".deps/asn1parser.Plo"; else rm -f ".deps/asn1parser.Tpo"; exit 1; fi bison -y -p asn1p_ -d asn1p_y.y if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_l.lo -MD -MP -MF ".deps/asn1p_l.Tpo" -c -o asn1p_l.lo asn1p_l.c; \ then mv -f ".deps/asn1p_l.Tpo" ".deps/asn1p_l.Plo"; else rm -f ".deps/asn1p_l.Tpo"; exit 1; fi if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_module.lo -MD -MP -MF ".deps/asn1p_module.Tpo" -c -o asn1p_module.lo asn1p_module.c; \ then mv -f ".deps/asn1p_module.Tpo" ".deps/asn1p_module.Plo"; else rm -f ".deps/asn1p_module.Tpo"; exit 1; fi asn1p_y.y: warning: 2 shift/reduce conflicts [-Wconflicts-sr] mkdir .libs gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1parser.lo -MD -MP -MF .deps/asn1parser.Tpo -c asn1parser.c -fPIC -DPIC -o .libs/asn1parser.o gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_module.lo -MD -MP -MF .deps/asn1p_module.Tpo -c asn1p_module.c -fPIC -DPIC -o .libs/asn1p_module.o gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_l.lo -MD -MP -MF .deps/asn1p_l.Tpo -c asn1p_l.c -fPIC -DPIC -o .libs/asn1p_l.o gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_module.lo -MD -MP -MF .deps/asn1p_module.Tpo -c asn1p_module.c -o asn1p_module.o >/dev/null 2>&1 asn1p_l.c:3521:12: warning: 'input' defined but not used [-Wunused-function] static int input() ^~~~~ gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1parser.lo -MD -MP -MF .deps/asn1parser.Tpo -c asn1parser.c -o asn1parser.o >/dev/null 2>&1 if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_oid.lo -MD -MP -MF ".deps/asn1p_oid.Tpo" -c -o asn1p_oid.lo asn1p_oid.c; \ then mv -f ".deps/asn1p_oid.Tpo" ".deps/asn1p_oid.Plo"; else rm -f ".deps/asn1p_oid.Tpo"; exit 1; fi if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_value.lo -MD -MP -MF ".deps/asn1p_value.Tpo" -c -o asn1p_value.lo asn1p_value.c; \ then mv -f ".deps/asn1p_value.Tpo" ".deps/asn1p_value.Plo"; else rm -f ".deps/asn1p_value.Tpo"; exit 1; fi gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_oid.lo -MD -MP -MF .deps/asn1p_oid.Tpo -c asn1p_oid.c -fPIC -DPIC -o .libs/asn1p_oid.o if test -f y.tab.h; then \ to=`echo "asn1p_y_H" | sed \ -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/' \ -e 's/[^ABCDEFGHIJKLMNOPQRSTUVWXYZ]/_/g'`; \ sed -e "/^#/!b" -e "s/Y_TAB_H/$to/g" -e "s|y\.tab\.h|asn1p_y.h|" \ y.tab.h >asn1p_y.ht; \ rm -f y.tab.h; \ if cmp -s asn1p_y.ht asn1p_y.h; then \ rm -f asn1p_y.ht ;\ else \ mv asn1p_y.ht asn1p_y.h; \ fi; \ fi if test -f y.output; then \ mv y.output asn1p_y.output; \ fi sed '/^#/ s|y\.tab\.c|asn1p_y.c|' y.tab.c >asn1p_y.ct && mv asn1p_y.ct asn1p_y.c rm -f y.tab.c if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_expr.lo -MD -MP -MF ".deps/asn1p_expr.Tpo" -c -o asn1p_expr.lo asn1p_expr.c; \ then mv -f ".deps/asn1p_expr.Tpo" ".deps/asn1p_expr.Plo"; else rm -f ".deps/asn1p_expr.Tpo"; exit 1; fi gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_value.lo -MD -MP -MF .deps/asn1p_value.Tpo -c asn1p_value.c -fPIC -DPIC -o .libs/asn1p_value.o gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_oid.lo -MD -MP -MF .deps/asn1p_oid.Tpo -c asn1p_oid.c -o asn1p_oid.o >/dev/null 2>&1 gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_expr.lo -MD -MP -MF .deps/asn1p_expr.Tpo -c asn1p_expr.c -fPIC -DPIC -o .libs/asn1p_expr.o if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_xports.lo -MD -MP -MF ".deps/asn1p_xports.Tpo" -c -o asn1p_xports.lo asn1p_xports.c; \ then mv -f ".deps/asn1p_xports.Tpo" ".deps/asn1p_xports.Plo"; else rm -f ".deps/asn1p_xports.Tpo"; exit 1; fi gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_value.lo -MD -MP -MF .deps/asn1p_value.Tpo -c asn1p_value.c -o asn1p_value.o >/dev/null 2>&1 gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_l.lo -MD -MP -MF .deps/asn1p_l.Tpo -c asn1p_l.c -o asn1p_l.o >/dev/null 2>&1 gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_expr.lo -MD -MP -MF .deps/asn1p_expr.Tpo -c asn1p_expr.c -o asn1p_expr.o >/dev/null 2>&1 gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_xports.lo -MD -MP -MF .deps/asn1p_xports.Tpo -c asn1p_xports.c -fPIC -DPIC -o .libs/asn1p_xports.o if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_constr.lo -MD -MP -MF ".deps/asn1p_constr.Tpo" -c -o asn1p_constr.lo asn1p_constr.c; \ then mv -f ".deps/asn1p_constr.Tpo" ".deps/asn1p_constr.Plo"; else rm -f ".deps/asn1p_constr.Tpo"; exit 1; fi gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_xports.lo -MD -MP -MF .deps/asn1p_xports.Tpo -c asn1p_xports.c -o asn1p_xports.o >/dev/null 2>&1 if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_param.lo -MD -MP -MF ".deps/asn1p_param.Tpo" -c -o asn1p_param.lo asn1p_param.c; \ then mv -f ".deps/asn1p_param.Tpo" ".deps/asn1p_param.Plo"; else rm -f ".deps/asn1p_param.Tpo"; exit 1; fi if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_class.lo -MD -MP -MF ".deps/asn1p_class.Tpo" -c -o asn1p_class.lo asn1p_class.c; \ then mv -f ".deps/asn1p_class.Tpo" ".deps/asn1p_class.Plo"; else rm -f ".deps/asn1p_class.Tpo"; exit 1; fi gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_constr.lo -MD -MP -MF .deps/asn1p_constr.Tpo -c asn1p_constr.c -fPIC -DPIC -o .libs/asn1p_constr.o gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_param.lo -MD -MP -MF .deps/asn1p_param.Tpo -c asn1p_param.c -fPIC -DPIC -o .libs/asn1p_param.o gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_class.lo -MD -MP -MF .deps/asn1p_class.Tpo -c asn1p_class.c -fPIC -DPIC -o .libs/asn1p_class.o gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_constr.lo -MD -MP -MF .deps/asn1p_constr.Tpo -c asn1p_constr.c -o asn1p_constr.o >/dev/null 2>&1 gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_param.lo -MD -MP -MF .deps/asn1p_param.Tpo -c asn1p_param.c -o asn1p_param.o >/dev/null 2>&1 gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_class.lo -MD -MP -MF .deps/asn1p_class.Tpo -c asn1p_class.c -o asn1p_class.o >/dev/null 2>&1 if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_ref.lo -MD -MP -MF ".deps/asn1p_ref.Tpo" -c -o asn1p_ref.lo asn1p_ref.c; \ then mv -f ".deps/asn1p_ref.Tpo" ".deps/asn1p_ref.Plo"; else rm -f ".deps/asn1p_ref.Tpo"; exit 1; fi if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_y.lo -MD -MP -MF ".deps/asn1p_y.Tpo" -c -o asn1p_y.lo asn1p_y.c; \ then mv -f ".deps/asn1p_y.Tpo" ".deps/asn1p_y.Plo"; else rm -f ".deps/asn1p_y.Tpo"; exit 1; fi gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_ref.lo -MD -MP -MF .deps/asn1p_ref.Tpo -c asn1p_ref.c -fPIC -DPIC -o .libs/asn1p_ref.o gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_y.lo -MD -MP -MF .deps/asn1p_y.Tpo -c asn1p_y.c -fPIC -DPIC -o .libs/asn1p_y.o asn1p_y.y: In function 'asn1p_parse': asn1p_y.y:357:13: error: 'param' undeclared (first use in this function) *(void **)param = $1; ^~~~~ asn1p_y.y:357:13: note: each undeclared identifier is reported only once for each function it appears in gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_ref.lo -MD -MP -MF .deps/asn1p_ref.Tpo -c asn1p_ref.c -o asn1p_ref.o >/dev/null 2>&1 Makefile:299: recipe for target 'asn1p_y.lo' failed make[2]: *** [asn1p_y.lo] Error 1 make[2]: *** Waiting for unfinished jobs.... make[2]: Leaving directory ' Makefile:302: recipe for target 'all-recursive' failed make[1]: *** [all-recursive] Error 1 make[1]: Leaving directory ' Makefile:212: recipe for target 'all' failed make: *** [all] Error 2 Build step 'Execute shell' marked build as failure [WARNINGS]Skipping publisher since build result is FAILURE From gerrit-no-reply at lists.osmocom.org Sat Apr 7 15:28:39 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Sat, 7 Apr 2018 15:28:39 +0000 Subject: [PATCH] osmo-gsm-tester[master]: event_loop: Avoid leaking active timeouts on poll exception Message-ID: Review at https://gerrit.osmocom.org/7662 event_loop: Avoid leaking active timeouts on poll exception It was spotted that when an error ocurred during poll generating an exception to finish the test (osmo-msc ended prematurely), then the active wait() condition was kept being checked for later tests, making all followup tests fail. That's because in case of exception we were not making sure the timeout is removed and it kept firing forever. Change-Id: I5c93cd67b2b83c0ecee96fbc6c4200b419bdf73f --- M src/osmo_gsm_tester/event_loop.py 1 file changed, 5 insertions(+), 1 deletion(-) git pull ssh://gerrit.osmocom.org:29418/osmo-gsm-tester refs/changes/62/7662/1 diff --git a/src/osmo_gsm_tester/event_loop.py b/src/osmo_gsm_tester/event_loop.py index a9683dd..64a110d 100644 --- a/src/osmo_gsm_tester/event_loop.py +++ b/src/osmo_gsm_tester/event_loop.py @@ -96,7 +96,11 @@ wait_req = WaitRequest(condition, condition_args, condition_kwargs, timeout, timestep) wait_id = GObject.timeout_add(timestep*1000, self._trigger_cb_func, wait_req.condition_check) while True: - self.poll(may_block=True) + try: + self.poll(may_block=True) + except Exception: # cleanup of temporary resources in the wait scope + GObject.source_remove(wait_id) + raise if wait_req.condition_ack or wait_req.timeout_ack: GObject.source_remove(wait_id) success = wait_req.condition_ack -- To view, visit https://gerrit.osmocom.org/7662 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I5c93cd67b2b83c0ecee96fbc6c4200b419bdf73f Gerrit-PatchSet: 1 Gerrit-Project: osmo-gsm-tester Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol From gerrit-no-reply at lists.osmocom.org Sat Apr 7 16:07:43 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Sat, 7 Apr 2018 16:07:43 +0000 Subject: osmo-gsm-tester[master]: event_loop: Avoid leaking active timeouts on poll exception In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7662 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I5c93cd67b2b83c0ecee96fbc6c4200b419bdf73f Gerrit-PatchSet: 1 Gerrit-Project: osmo-gsm-tester Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Pau Espin Pedrol Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Sat Apr 7 16:07:45 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Sat, 7 Apr 2018 16:07:45 +0000 Subject: [MERGED] osmo-gsm-tester[master]: event_loop: Avoid leaking active timeouts on poll exception In-Reply-To: References: Message-ID: Pau Espin Pedrol has submitted this change and it was merged. Change subject: event_loop: Avoid leaking active timeouts on poll exception ...................................................................... event_loop: Avoid leaking active timeouts on poll exception It was spotted that when an error ocurred during poll generating an exception to finish the test (osmo-msc ended prematurely), then the active wait() condition was kept being checked for later tests, making all followup tests fail. That's because in case of exception we were not making sure the timeout is removed and it kept firing forever. Change-Id: I5c93cd67b2b83c0ecee96fbc6c4200b419bdf73f --- M src/osmo_gsm_tester/event_loop.py 1 file changed, 5 insertions(+), 1 deletion(-) Approvals: Pau Espin Pedrol: Looks good to me, approved Jenkins Builder: Verified diff --git a/src/osmo_gsm_tester/event_loop.py b/src/osmo_gsm_tester/event_loop.py index a9683dd..64a110d 100644 --- a/src/osmo_gsm_tester/event_loop.py +++ b/src/osmo_gsm_tester/event_loop.py @@ -96,7 +96,11 @@ wait_req = WaitRequest(condition, condition_args, condition_kwargs, timeout, timestep) wait_id = GObject.timeout_add(timestep*1000, self._trigger_cb_func, wait_req.condition_check) while True: - self.poll(may_block=True) + try: + self.poll(may_block=True) + except Exception: # cleanup of temporary resources in the wait scope + GObject.source_remove(wait_id) + raise if wait_req.condition_ack or wait_req.timeout_ack: GObject.source_remove(wait_id) success = wait_req.condition_ack -- To view, visit https://gerrit.osmocom.org/7662 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: I5c93cd67b2b83c0ecee96fbc6c4200b419bdf73f Gerrit-PatchSet: 1 Gerrit-Project: osmo-gsm-tester Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Pau Espin Pedrol From gerrit-no-reply at lists.osmocom.org Sat Apr 7 17:04:57 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Sat, 7 Apr 2018 17:04:57 +0000 Subject: [PATCH] osmo-bsc[master]: "show timeslot": Show dynamic PDCH state also for Osmocom-st... Message-ID: Review at https://gerrit.osmocom.org/7663 "show timeslot": Show dynamic PDCH state also for Osmocom-style dyn PDCH So far we only used to show the current mode of the timeslot for IPA style dynamic PDCH, but not for osmocom-style. Old output for osmocom-style dyn PDCH: BTS 0, TRX 0, Timeslot 6, phys cfg TCH/F_TCH/H_PDCH, TSC 7 NM State: Oper 'Enabled', Admin 'Unlocked', Avail 'OK' new output with this patch: BTS 0, TRX 0, Timeslot 6, phys cfg TCH/F_TCH/H_PDCH, TSC 7 (PDCH mode) NM State: Oper 'Enabled', Admin 'Unlocked', Avail 'OK' where "PDCH mode" changes from "NONE mode" to "TCH/F mode" to "TCH/H mode" depending on the current state. Change-Id: If5044d6bec76b869bd6a7c0260a4c77e229dcd0d Related: OS#3099 --- M src/libbsc/bsc_vty.c 1 file changed, 4 insertions(+), 1 deletion(-) git pull ssh://gerrit.osmocom.org:29418/osmo-bsc refs/changes/63/7663/1 diff --git a/src/libbsc/bsc_vty.c b/src/libbsc/bsc_vty.c index 6daeb98..13e123b 100644 --- a/src/libbsc/bsc_vty.c +++ b/src/libbsc/bsc_vty.c @@ -1099,9 +1099,12 @@ vty_out(vty, "BTS %u, TRX %u, Timeslot %u, phys cfg %s, TSC %u", ts->trx->bts->nr, ts->trx->nr, ts->nr, gsm_pchan_name(ts->pchan), gsm_ts_tsc(ts)); - if (ts->pchan == GSM_PCHAN_TCH_F_PDCH) + if (ts->pchan == GSM_PCHAN_TCH_F_PDCH) { vty_out(vty, " (%s mode)", ts->flags & TS_F_PDCH_ACTIVE ? "PDCH" : "TCH/F"); + } else if (ts->pchan == GSM_PCHAN_TCH_F_TCH_H_PDCH) { + vty_out(vty, " (%s mode)", gsm_pchan_name(ts->dyn.pchan_is)); + } vty_out(vty, "%s", VTY_NEWLINE); vty_out(vty, " NM State: "); net_dump_nmstate(vty, &ts->mo.nm_state); -- To view, visit https://gerrit.osmocom.org/7663 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: If5044d6bec76b869bd6a7c0260a4c77e229dcd0d Gerrit-PatchSet: 1 Gerrit-Project: osmo-bsc Gerrit-Branch: master Gerrit-Owner: Harald Welte From gerrit-no-reply at lists.osmocom.org Sat Apr 7 17:28:24 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Sat, 7 Apr 2018 17:28:24 +0000 Subject: [PATCH] osmo-ttcn3-hacks[master]: bsc: Testing of dynamic PDCH (both IPA style and Osmocom style) Message-ID: Review at https://gerrit.osmocom.org/7664 bsc: Testing of dynamic PDCH (both IPA style and Osmocom style) This adds a set of four new testcases relted to dynamic PDCH switching: One successful and one unsuccessful for each Osmo + IPA style dynamic PDCH. Closes: OS#3099 Change-Id: I7a7a937548a35461d86e93ead79c39a37a59563e --- M bsc/BSC_Tests.ttcn M library/RSL_Types.ttcn 2 files changed, 285 insertions(+), 3 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-ttcn3-hacks refs/changes/64/7664/1 diff --git a/bsc/BSC_Tests.ttcn b/bsc/BSC_Tests.ttcn index a70ed53..0dfb708 100644 --- a/bsc/BSC_Tests.ttcn +++ b/bsc/BSC_Tests.ttcn @@ -281,7 +281,11 @@ vc_MGCP.start(MGCP_Emulation.main(ops, mgcp_pars, id)); } -private function f_init_vty(charstring id) runs on test_CT { +private function f_init_vty(charstring id := "foo") runs on test_CT { + if (BSCVTY.checkstate("Mapped")) { + /* skip initialization if already executed once */ + return; + } map(self:BSCVTY, system:BSCVTY); f_vty_set_prompts(BSCVTY); f_vty_transceive(BSCVTY, "enable"); @@ -1917,6 +1921,14 @@ vc_conn.done; } +/* execute a "bts <0-255> trx <0-255> timeslot <0-7> " command on given Dchan */ +private function f_vty_ts_action(charstring suffix, integer bts_nr, integer trx_nr, integer ts_nr) +runs on test_CT { + var charstring cmd := "bts "&int2str(bts_nr)&" trx "&int2str(trx_nr)& + " timeslot "&int2str(ts_nr)&" "; + f_vty_transceive(BSCVTY, cmd & suffix); +} + /* execute a "bts <0-255> trx <0-255> timeslot <0-7> sub-slot <0-7>" command on given Dchan */ private function f_vty_ss_action(charstring suffix, integer bts_nr, integer trx_nr, RslChannelNr chan_nr) runs on MSC_ConnHdlr { @@ -2145,6 +2157,239 @@ f_shutdown_helper(); } +/*********************************************************************** + * IPA style dynamic PDCH + ***********************************************************************/ + +private function f_dyn_ipa_pdch_act(integer bts_nr, integer trx_nr, integer ts_nr, + template (omit) RSL_Cause nack := omit) +runs on test_CT { + var RslChannelNr chan_nr := valueof(t_RslChanNr_Bm(ts_nr)); + var RSL_Message rsl_unused; + /* ask BSC via VTY to activate a given IPA style chan as PDCH */ + f_vty_ts_action("pdch activate", bts_nr, trx_nr, ts_nr); + /* expect the BSC to issue the related RSL command */ + rsl_unused := f_exp_ipa_rx(0, tr_RSL_IPA_PDCH_ACT(chan_nr)); + if (istemplatekind(nack, "omit")) { + /* respond with a related acknowledgement */ + f_ipa_tx(0, ts_RSL_IPA_PDCH_ACT_ACK(chan_nr, ts_RSL_IE_FrameNumber(2342))); + } else { + f_ipa_tx(0, ts_RSL_IPA_PDCH_ACT_NACK(chan_nr, valueof(nack))); + } +} + +private function f_dyn_ipa_pdch_deact(integer bts_nr, integer trx_nr, integer ts_nr, + template (omit) RSL_Cause nack := omit) +runs on test_CT { + var RslChannelNr chan_nr := valueof(t_RslChanNr_Bm(ts_nr)); + var RSL_Message rsl_unused; + /* ask BSC via VTY to activate a given IPA style chan as PDCH */ + f_vty_ts_action("pdch deactivate", bts_nr, trx_nr, ts_nr); + /* expect the BSC to issue the related RSL command */ + rsl_unused := f_exp_ipa_rx(0, tr_RSL_IPA_PDCH_DEACT(chan_nr)); + if (istemplatekind(nack, "omit")) { + /* respond with a related acknowledgement */ + f_ipa_tx(0, ts_RSL_IPA_PDCH_DEACT_ACK(chan_nr)); + } else { + f_ipa_tx(0, ts_RSL_IPA_PDCH_DEACT_NACK(chan_nr, valueof(nack))); + } +} + +private function f_ts_dyn_mode_get(integer bts_nr, integer trx_nr, integer ts_nr) +runs on test_CT return charstring { + var charstring cmd, resp; + cmd := "show timeslot "&int2str(bts_nr)&" "&int2str(trx_nr)&" "&int2str(ts_nr); + resp := f_vty_transceive_ret(BSCVTY, cmd); + return regexp(resp, "*\((*)\)*", 0); +} + +private function f_ts_dyn_mode_assert(integer bts_nr, integer trx_nr, integer ts_nr, + template charstring exp) +runs on test_CT { + var charstring mode := f_ts_dyn_mode_get(bts_nr, trx_nr, ts_nr); + if (not match(mode, exp)) { + setverdict(fail, "Unexpected TS Mode: ", mode); + self.stop; + } +} + +private function f_ts_set_chcomb(integer bts_nr, integer trx_nr, integer ts_nr, charstring chcomb) +runs on test_CT { + f_vty_enter_cfg_ts(BSCVTY, bts_nr, trx_nr, ts_nr); + f_vty_transceive(BSCVTY, "phys_chan_config " & chcomb); + f_vty_transceive(BSCVTY, "end"); +} + +private const charstring TCHF_MODE := "TCH/F mode"; +private const charstring TCHH_MODE := "TCH/H mode"; +private const charstring PDCH_MODE := "PDCH mode"; +private const charstring NONE_MODE := "NONE mode"; + +/* Test IPA PDCH activation / deactivation triggered by VTY */ +testcase TC_dyn_pdch_ipa_act_deact() runs on test_CT { + var RSL_Message rsl_unused; + + /* change Timeslot 6 before f_init() starts RSL */ + f_init_vty(); + f_ts_set_chcomb(0, 0, 6, "TCH/F_PDCH"); + f_vty_transceive(BSCVTY, "drop bts connection 0 oml"); + + f_init(1, false); + f_sleep(1.0); + + var RslChannelNr chan_nr := valueof(t_RslChanNr_Bm(6)); + + f_ts_dyn_mode_assert(0, 0, chan_nr.tn, TCHF_MODE); + /* The BSC will activate the dynamic PDCH by default, so confirm that */ + rsl_unused := f_exp_ipa_rx(0, tr_RSL_IPA_PDCH_ACT(chan_nr)); + f_ipa_tx(0, ts_RSL_IPA_PDCH_ACT_ACK(chan_nr, ts_RSL_IE_FrameNumber(2342))); + f_sleep(1.0); + f_ts_dyn_mode_assert(0, 0, chan_nr.tn, PDCH_MODE); + + /* De-activate it via VTY */ + f_dyn_ipa_pdch_deact(0, 0, chan_nr.tn); + f_sleep(1.0); + f_ts_dyn_mode_assert(0, 0, chan_nr.tn, TCHF_MODE); + + /* re-activate it via VTY */ + f_dyn_ipa_pdch_act(0, 0, chan_nr.tn); + f_sleep(1.0); + f_ts_dyn_mode_assert(0, 0, chan_nr.tn, PDCH_MODE); + + /* and finally de-activate it again */ + f_dyn_ipa_pdch_deact(0, 0, chan_nr.tn); + f_sleep(1.0); + f_ts_dyn_mode_assert(0, 0, chan_nr.tn, TCHF_MODE); + + setverdict(pass); +} + +/* Test IPA PDCH activation NACK */ +testcase TC_dyn_pdch_ipa_act_nack() runs on test_CT { + var RSL_Message rsl_unused; + + /* change Timeslot 6 before f_init() starts RSL */ + f_init_vty(); + f_ts_set_chcomb(0, 0, 6, "TCH/F_PDCH"); + f_vty_transceive(BSCVTY, "drop bts connection 0 oml"); + + f_init(1, false); + f_sleep(1.0); + + var RslChannelNr chan_nr := valueof(t_RslChanNr_Bm(6)); + + f_ts_dyn_mode_assert(0, 0, chan_nr.tn, TCHF_MODE); + /* The BSC will activate the dynamic PDCH by default, so confirm that */ + rsl_unused := f_exp_ipa_rx(0, tr_RSL_IPA_PDCH_ACT(chan_nr)); + f_ipa_tx(0, ts_RSL_IPA_PDCH_ACT_ACK(chan_nr, ts_RSL_IE_FrameNumber(2342))); + f_sleep(1.0); + f_ts_dyn_mode_assert(0, 0, chan_nr.tn, PDCH_MODE); + + /* De-activate it via VTY */ + f_dyn_ipa_pdch_deact(0, 0, chan_nr.tn); + f_sleep(1.0); + f_ts_dyn_mode_assert(0, 0, chan_nr.tn, TCHF_MODE); + + /* re-activate it via VTY, but fail that; check BSC still assumes TCH/F mode */ + f_dyn_ipa_pdch_act(0, 0, chan_nr.tn, RSL_ERR_EQUIPMENT_FAIL); + f_sleep(1.0); + f_ts_dyn_mode_assert(0, 0, chan_nr.tn, TCHF_MODE); + + setverdict(pass); +} + + +/*********************************************************************** + * Osmocom style dynamic PDCH + ***********************************************************************/ + +private function f_dyn_osmo_pdch_act(integer bts_nr, integer trx_nr, integer ts_nr, + template (omit) RSL_Cause nack := omit) +runs on test_CT { + var RslChannelNr chan_nr := valueof(t_RslChanNr_PDCH(ts_nr)); + var RSL_Message rsl_unused; + /* ask BSC via VTY to activate a given IPA style chan as PDCH */ + /* FIXME: no VTY command to activate Osmocom PDCH !! */ + /* expect the BSC to issue the related RSL command */ + rsl_unused := f_exp_ipa_rx(0, tr_RSL_CHAN_ACT(chan_nr, ?)); + if (istemplatekind(nack, "omit")) { + /* respond with a related acknowledgement */ + f_ipa_tx(0, ts_RSL_CHAN_ACT_ACK(chan_nr, 2342)); + } else { + f_ipa_tx(0, ts_RSL_CHAN_ACT_NACK(chan_nr, valueof(nack))); + } +} + +private function f_dyn_osmo_pdch_deact(integer bts_nr, integer trx_nr, integer ts_nr, + template (omit) RSL_Cause nack := omit) +runs on test_CT { + var RslChannelNr chan_nr := valueof(t_RslChanNr_PDCH(ts_nr)); + var RSL_Message rsl_unused; + /* ask BSC via VTY to activate a given IPA style chan as PDCH */ + /* FIXME: no VTY command to activate Osmocom PDCH !! */ + /* expect the BSC to issue the related RSL command */ + rsl_unused := f_exp_ipa_rx(0, tr_RSL_RF_CHAN_REL(chan_nr)); + if (istemplatekind(nack, "omit")) { + /* respond with a related acknowledgement */ + f_ipa_tx(0, ts_RSL_RF_CHAN_REL_ACK(chan_nr)); + } else { + //f_ipa_tx(0, ts_RSL_RF_CHAN_REL_NACK(chan_nr, valueof(nack))); + } +} + +/* Test Osmocom dyn PDCH activation / deactivation triggered by VTY */ +testcase TC_dyn_pdch_osmo_act_deact() runs on test_CT { + var RSL_Message rsl_unused; + + /* change Timeslot 6 before f_init() starts RSL */ + f_init_vty(); + f_ts_set_chcomb(0, 0, 6, "TCH/F_TCH/H_PDCH"); + f_vty_transceive(BSCVTY, "drop bts connection 0 oml"); + + f_init(1, false); + f_sleep(1.0); + + var RslChannelNr chan_nr := valueof(t_RslChanNr_PDCH(6)); + + f_ts_dyn_mode_assert(0, 0, chan_nr.tn, NONE_MODE); + /* The BSC will activate the dynamic PDCH by default, so confirm that */ + rsl_unused := f_exp_ipa_rx(0, tr_RSL_CHAN_ACT_PDCH(chan_nr, ?)); + + f_ipa_tx(0, ts_RSL_CHAN_ACT_ACK(chan_nr, 2342)); + f_sleep(1.0); + f_ts_dyn_mode_assert(0, 0, chan_nr.tn, PDCH_MODE); + + setverdict(pass); +} + +/* Test Osmocom dyn PDCH activation NACK behavior */ +testcase TC_dyn_pdch_osmo_act_nack() runs on test_CT { + var RSL_Message rsl_unused; + + /* change Timeslot 6 before f_init() starts RSL */ + f_init_vty(); + f_ts_set_chcomb(0, 0, 6, "TCH/F_TCH/H_PDCH"); + f_vty_transceive(BSCVTY, "drop bts connection 0 oml"); + + f_init(1, false); + f_sleep(1.0); + + var RslChannelNr chan_nr := valueof(t_RslChanNr_PDCH(6)); + + f_ts_dyn_mode_assert(0, 0, chan_nr.tn, NONE_MODE); + /* The BSC will activate the dynamic PDCH by default, so confirm that */ + rsl_unused := f_exp_ipa_rx(0, tr_RSL_CHAN_ACT_PDCH(chan_nr, ?)); + + /* NACK this activation and expect the "show timeslot" mode still to be NONE */ + f_ipa_tx(0, ts_RSL_CHAN_ACT_NACK(chan_nr, RSL_ERR_EQUIPMENT_FAIL)); + f_sleep(1.0); + f_ts_dyn_mode_assert(0, 0, chan_nr.tn, NONE_MODE); + + setverdict(pass); +} + + + control { /* CTRL interface testing */ execute( TC_ctrl_msc_connection_status() ); @@ -2229,6 +2474,11 @@ execute( TC_bssap_rlsd_does_not_cause_bssmap_reset() ); execute( TC_bssmap_clear_does_not_cause_bssmap_reset() ); execute( TC_ms_rel_ind_does_not_cause_bssmap_reset() ); + + execute( TC_dyn_pdch_ipa_act_deact() ); + execute( TC_dyn_pdch_ipa_act_nack() ); + execute( TC_dyn_pdch_osmo_act_deact() ); + execute( TC_dyn_pdch_osmo_act_nack() ); } } diff --git a/library/RSL_Types.ttcn b/library/RSL_Types.ttcn index 5dba470..104a1a8 100644 --- a/library/RSL_Types.ttcn +++ b/library/RSL_Types.ttcn @@ -277,6 +277,13 @@ a_bits := 0 /* related to immediate assignment */ } + /* osmocom-style dynamic PDCH */ + template RSL_IE_ActivationType t_RSL_IE_ActType_PDCH := { + reactivation := false, + reserved := 1, + a_bits := 7 /* related to immediate assignment */ + } + /* 9.3.6 */ type enumerated RSL_SpeechDataInd { RSL_SPDI_SPEECH ('00000001'B), @@ -418,7 +425,7 @@ } /* 3GPP TS 44.018 / 10.5.2.38 Starting Time */ - template RSL_IE_FrameNumber ts_RSL_IE_FrameNumber(GsmFrameNumber fn) := { + template (value) RSL_IE_FrameNumber ts_RSL_IE_FrameNumber(GsmFrameNumber fn) := { t1_p := (fn / 1326) mod 32, t3 := fn mod 51, t2 := fn mod 26 @@ -945,6 +952,30 @@ /* lots of optional IEs */ } } + template RSL_Message tr_RSL_CHAN_ACT(template RslChannelNr chan_nr, + template RSL_IE_ChannelMode mode) := { + msg_disc := ts_RSL_MsgDisc(RSL_MDISC_DCHAN, false), + msg_type := RSL_MT_CHAN_ACTIV, + ies :={ + tr_RSL_IE(RSL_IE_Body:{chan_nr := chan_nr}), + tr_RSL_IE(RSL_IE_Body:{act_type := t_RSL_IE_ActType}), + tr_RSL_IE(RSL_IE_Body:{chan_mode := mode}), + /* lots of optional IEs */ + * + } + } + template RSL_Message tr_RSL_CHAN_ACT_PDCH(template RslChannelNr chan_nr, + template RSL_IE_ChannelMode mode) := { + msg_disc := ts_RSL_MsgDisc(RSL_MDISC_DCHAN, false), + msg_type := RSL_MT_CHAN_ACTIV, + ies :={ + tr_RSL_IE(RSL_IE_Body:{chan_nr := chan_nr}), + tr_RSL_IE(RSL_IE_Body:{act_type := t_RSL_IE_ActType_PDCH}), + /* lots of optional IEs */ + * + } + } + /* 8.4.2 BTS -> BSC */ template RSL_Message ts_RSL_CHAN_ACT_ACK(RslChannelNr chan_nr, GsmFrameNumber fn) := { @@ -1563,7 +1594,8 @@ } - template RSL_Message ts_RSL_IPA_PDCH_ACT_ACK(RslChannelNr chan_nr, RSL_IE_FrameNumber fn) := { + template RSL_Message ts_RSL_IPA_PDCH_ACT_ACK(RslChannelNr chan_nr, + template (value) RSL_IE_FrameNumber fn) := { msg_disc := ts_RSL_MsgDisc(RSL_MDISC_DCHAN, false), msg_type := RSL_MT_IPAC_PDCH_ACT_ACK, ies := { -- To view, visit https://gerrit.osmocom.org/7664 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I7a7a937548a35461d86e93ead79c39a37a59563e Gerrit-PatchSet: 1 Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Owner: Harald Welte From gerrit-no-reply at lists.osmocom.org Sat Apr 7 17:29:37 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Sat, 7 Apr 2018 17:29:37 +0000 Subject: osmo-bsc[master]: Start Dynamic PDCH Initialization after RSL is up In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7661 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I8ac30ca075a1db4b624dc38a423d844d705fda7e Gerrit-PatchSet: 1 Gerrit-Project: osmo-bsc Gerrit-Branch: master Gerrit-Owner: Harald Welte Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Sat Apr 7 17:29:39 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Sat, 7 Apr 2018 17:29:39 +0000 Subject: [MERGED] osmo-bsc[master]: Start Dynamic PDCH Initialization after RSL is up In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: Start Dynamic PDCH Initialization after RSL is up ...................................................................... Start Dynamic PDCH Initialization after RSL is up We used to start the dynamic PDCH initialization right after the respective OML initialization of the related timeslot. However, this is problematic as the RSL link may very well not even be up yet at that point. So let's do this at RSL link esetablishment time, not from OML. Change-Id: I8ac30ca075a1db4b624dc38a423d844d705fda7e Closes: OS#1841 --- M src/libbsc/abis_om2000.c M src/libbsc/bsc_init.c M src/libbsc/bts_ipaccess_nanobts.c 3 files changed, 3 insertions(+), 13 deletions(-) Approvals: Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/src/libbsc/abis_om2000.c b/src/libbsc/abis_om2000.c index 756cc89..6057bc6 100644 --- a/src/libbsc/abis_om2000.c +++ b/src/libbsc/abis_om2000.c @@ -1683,15 +1683,6 @@ static void om2k_mo_st_wait_opinfo_accept(struct osmo_fsm_inst *fi, uint32_t event, void *data) { - struct om2k_mo_fsm_priv *omfp = fi->priv; - - /* if we have just received opinfo accept for the timeslot, - * start dynamic TCH switching procedures */ - if (omfp->mo->addr.class == OM2K_MO_CLS_TS) { - struct gsm_bts_trx_ts *ts; - ts = mo2obj(omfp->trx->bts, &omfp->mo->addr); - dyn_ts_init(ts); - } osmo_fsm_inst_state_chg(fi, OM2K_ST_DONE, 0, 0); } diff --git a/src/libbsc/bsc_init.c b/src/libbsc/bsc_init.c index f164533..ba8b8e6 100644 --- a/src/libbsc/bsc_init.c +++ b/src/libbsc/bsc_init.c @@ -350,8 +350,10 @@ rsl_nokia_si_end(trx); } - for (i = 0; i < ARRAY_SIZE(trx->ts); i++) + for (i = 0; i < ARRAY_SIZE(trx->ts); i++) { generate_ma_for_ts(&trx->ts[i]); + dyn_ts_init(&trx->ts[i]); + } if (acc_ramp_is_enabled(&trx->bts->acc_ramp)) acc_ramp_start(&trx->bts->acc_ramp); diff --git a/src/libbsc/bts_ipaccess_nanobts.c b/src/libbsc/bts_ipaccess_nanobts.c index edfe417..4f1ac4b 100644 --- a/src/libbsc/bts_ipaccess_nanobts.c +++ b/src/libbsc/bts_ipaccess_nanobts.c @@ -175,9 +175,6 @@ abis_nm_opstart(trx->bts, obj_class, trx->bts->bts_nr, trx->nr, ts->nr); } - if (new_state->operational == NM_OPSTATE_ENABLED - && new_state->availability == NM_AVSTATE_OK) - dyn_ts_init(ts); break; case NM_OC_RADIO_CARRIER: trx = obj; -- To view, visit https://gerrit.osmocom.org/7661 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: I8ac30ca075a1db4b624dc38a423d844d705fda7e Gerrit-PatchSet: 1 Gerrit-Project: osmo-bsc Gerrit-Branch: master Gerrit-Owner: Harald Welte Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder From gerrit-no-reply at lists.osmocom.org Sat Apr 7 17:29:41 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Sat, 7 Apr 2018 17:29:41 +0000 Subject: osmo-bsc[master]: "show timeslot": Show dynamic PDCH state also for Osmocom-st... In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7663 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: If5044d6bec76b869bd6a7c0260a4c77e229dcd0d Gerrit-PatchSet: 1 Gerrit-Project: osmo-bsc Gerrit-Branch: master Gerrit-Owner: Harald Welte Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Sat Apr 7 17:29:42 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Sat, 7 Apr 2018 17:29:42 +0000 Subject: [MERGED] osmo-bsc[master]: "show timeslot": Show dynamic PDCH state also for Osmocom-st... In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: "show timeslot": Show dynamic PDCH state also for Osmocom-style dyn PDCH ...................................................................... "show timeslot": Show dynamic PDCH state also for Osmocom-style dyn PDCH So far we only used to show the current mode of the timeslot for IPA style dynamic PDCH, but not for osmocom-style. Old output for osmocom-style dyn PDCH: BTS 0, TRX 0, Timeslot 6, phys cfg TCH/F_TCH/H_PDCH, TSC 7 NM State: Oper 'Enabled', Admin 'Unlocked', Avail 'OK' new output with this patch: BTS 0, TRX 0, Timeslot 6, phys cfg TCH/F_TCH/H_PDCH, TSC 7 (PDCH mode) NM State: Oper 'Enabled', Admin 'Unlocked', Avail 'OK' where "PDCH mode" changes from "NONE mode" to "TCH/F mode" to "TCH/H mode" depending on the current state. Change-Id: If5044d6bec76b869bd6a7c0260a4c77e229dcd0d Related: OS#3099 --- M src/libbsc/bsc_vty.c 1 file changed, 4 insertions(+), 1 deletion(-) Approvals: Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/src/libbsc/bsc_vty.c b/src/libbsc/bsc_vty.c index 6daeb98..13e123b 100644 --- a/src/libbsc/bsc_vty.c +++ b/src/libbsc/bsc_vty.c @@ -1099,9 +1099,12 @@ vty_out(vty, "BTS %u, TRX %u, Timeslot %u, phys cfg %s, TSC %u", ts->trx->bts->nr, ts->trx->nr, ts->nr, gsm_pchan_name(ts->pchan), gsm_ts_tsc(ts)); - if (ts->pchan == GSM_PCHAN_TCH_F_PDCH) + if (ts->pchan == GSM_PCHAN_TCH_F_PDCH) { vty_out(vty, " (%s mode)", ts->flags & TS_F_PDCH_ACTIVE ? "PDCH" : "TCH/F"); + } else if (ts->pchan == GSM_PCHAN_TCH_F_TCH_H_PDCH) { + vty_out(vty, " (%s mode)", gsm_pchan_name(ts->dyn.pchan_is)); + } vty_out(vty, "%s", VTY_NEWLINE); vty_out(vty, " NM State: "); net_dump_nmstate(vty, &ts->mo.nm_state); -- To view, visit https://gerrit.osmocom.org/7663 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: If5044d6bec76b869bd6a7c0260a4c77e229dcd0d Gerrit-PatchSet: 1 Gerrit-Project: osmo-bsc Gerrit-Branch: master Gerrit-Owner: Harald Welte Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder From gerrit-no-reply at lists.osmocom.org Sat Apr 7 17:29:48 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Sat, 7 Apr 2018 17:29:48 +0000 Subject: osmo-ttcn3-hacks[master]: bsc: Testing of dynamic PDCH (both IPA style and Osmocom style) In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7664 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I7a7a937548a35461d86e93ead79c39a37a59563e Gerrit-PatchSet: 1 Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Owner: Harald Welte Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Sat Apr 7 17:29:49 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Sat, 7 Apr 2018 17:29:49 +0000 Subject: [MERGED] osmo-ttcn3-hacks[master]: bsc: Testing of dynamic PDCH (both IPA style and Osmocom style) In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: bsc: Testing of dynamic PDCH (both IPA style and Osmocom style) ...................................................................... bsc: Testing of dynamic PDCH (both IPA style and Osmocom style) This adds a set of four new testcases relted to dynamic PDCH switching: One successful and one unsuccessful for each Osmo + IPA style dynamic PDCH. Closes: OS#3099 Change-Id: I7a7a937548a35461d86e93ead79c39a37a59563e --- M bsc/BSC_Tests.ttcn M library/RSL_Types.ttcn 2 files changed, 285 insertions(+), 3 deletions(-) Approvals: Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/bsc/BSC_Tests.ttcn b/bsc/BSC_Tests.ttcn index a70ed53..0dfb708 100644 --- a/bsc/BSC_Tests.ttcn +++ b/bsc/BSC_Tests.ttcn @@ -281,7 +281,11 @@ vc_MGCP.start(MGCP_Emulation.main(ops, mgcp_pars, id)); } -private function f_init_vty(charstring id) runs on test_CT { +private function f_init_vty(charstring id := "foo") runs on test_CT { + if (BSCVTY.checkstate("Mapped")) { + /* skip initialization if already executed once */ + return; + } map(self:BSCVTY, system:BSCVTY); f_vty_set_prompts(BSCVTY); f_vty_transceive(BSCVTY, "enable"); @@ -1917,6 +1921,14 @@ vc_conn.done; } +/* execute a "bts <0-255> trx <0-255> timeslot <0-7> " command on given Dchan */ +private function f_vty_ts_action(charstring suffix, integer bts_nr, integer trx_nr, integer ts_nr) +runs on test_CT { + var charstring cmd := "bts "&int2str(bts_nr)&" trx "&int2str(trx_nr)& + " timeslot "&int2str(ts_nr)&" "; + f_vty_transceive(BSCVTY, cmd & suffix); +} + /* execute a "bts <0-255> trx <0-255> timeslot <0-7> sub-slot <0-7>" command on given Dchan */ private function f_vty_ss_action(charstring suffix, integer bts_nr, integer trx_nr, RslChannelNr chan_nr) runs on MSC_ConnHdlr { @@ -2145,6 +2157,239 @@ f_shutdown_helper(); } +/*********************************************************************** + * IPA style dynamic PDCH + ***********************************************************************/ + +private function f_dyn_ipa_pdch_act(integer bts_nr, integer trx_nr, integer ts_nr, + template (omit) RSL_Cause nack := omit) +runs on test_CT { + var RslChannelNr chan_nr := valueof(t_RslChanNr_Bm(ts_nr)); + var RSL_Message rsl_unused; + /* ask BSC via VTY to activate a given IPA style chan as PDCH */ + f_vty_ts_action("pdch activate", bts_nr, trx_nr, ts_nr); + /* expect the BSC to issue the related RSL command */ + rsl_unused := f_exp_ipa_rx(0, tr_RSL_IPA_PDCH_ACT(chan_nr)); + if (istemplatekind(nack, "omit")) { + /* respond with a related acknowledgement */ + f_ipa_tx(0, ts_RSL_IPA_PDCH_ACT_ACK(chan_nr, ts_RSL_IE_FrameNumber(2342))); + } else { + f_ipa_tx(0, ts_RSL_IPA_PDCH_ACT_NACK(chan_nr, valueof(nack))); + } +} + +private function f_dyn_ipa_pdch_deact(integer bts_nr, integer trx_nr, integer ts_nr, + template (omit) RSL_Cause nack := omit) +runs on test_CT { + var RslChannelNr chan_nr := valueof(t_RslChanNr_Bm(ts_nr)); + var RSL_Message rsl_unused; + /* ask BSC via VTY to activate a given IPA style chan as PDCH */ + f_vty_ts_action("pdch deactivate", bts_nr, trx_nr, ts_nr); + /* expect the BSC to issue the related RSL command */ + rsl_unused := f_exp_ipa_rx(0, tr_RSL_IPA_PDCH_DEACT(chan_nr)); + if (istemplatekind(nack, "omit")) { + /* respond with a related acknowledgement */ + f_ipa_tx(0, ts_RSL_IPA_PDCH_DEACT_ACK(chan_nr)); + } else { + f_ipa_tx(0, ts_RSL_IPA_PDCH_DEACT_NACK(chan_nr, valueof(nack))); + } +} + +private function f_ts_dyn_mode_get(integer bts_nr, integer trx_nr, integer ts_nr) +runs on test_CT return charstring { + var charstring cmd, resp; + cmd := "show timeslot "&int2str(bts_nr)&" "&int2str(trx_nr)&" "&int2str(ts_nr); + resp := f_vty_transceive_ret(BSCVTY, cmd); + return regexp(resp, "*\((*)\)*", 0); +} + +private function f_ts_dyn_mode_assert(integer bts_nr, integer trx_nr, integer ts_nr, + template charstring exp) +runs on test_CT { + var charstring mode := f_ts_dyn_mode_get(bts_nr, trx_nr, ts_nr); + if (not match(mode, exp)) { + setverdict(fail, "Unexpected TS Mode: ", mode); + self.stop; + } +} + +private function f_ts_set_chcomb(integer bts_nr, integer trx_nr, integer ts_nr, charstring chcomb) +runs on test_CT { + f_vty_enter_cfg_ts(BSCVTY, bts_nr, trx_nr, ts_nr); + f_vty_transceive(BSCVTY, "phys_chan_config " & chcomb); + f_vty_transceive(BSCVTY, "end"); +} + +private const charstring TCHF_MODE := "TCH/F mode"; +private const charstring TCHH_MODE := "TCH/H mode"; +private const charstring PDCH_MODE := "PDCH mode"; +private const charstring NONE_MODE := "NONE mode"; + +/* Test IPA PDCH activation / deactivation triggered by VTY */ +testcase TC_dyn_pdch_ipa_act_deact() runs on test_CT { + var RSL_Message rsl_unused; + + /* change Timeslot 6 before f_init() starts RSL */ + f_init_vty(); + f_ts_set_chcomb(0, 0, 6, "TCH/F_PDCH"); + f_vty_transceive(BSCVTY, "drop bts connection 0 oml"); + + f_init(1, false); + f_sleep(1.0); + + var RslChannelNr chan_nr := valueof(t_RslChanNr_Bm(6)); + + f_ts_dyn_mode_assert(0, 0, chan_nr.tn, TCHF_MODE); + /* The BSC will activate the dynamic PDCH by default, so confirm that */ + rsl_unused := f_exp_ipa_rx(0, tr_RSL_IPA_PDCH_ACT(chan_nr)); + f_ipa_tx(0, ts_RSL_IPA_PDCH_ACT_ACK(chan_nr, ts_RSL_IE_FrameNumber(2342))); + f_sleep(1.0); + f_ts_dyn_mode_assert(0, 0, chan_nr.tn, PDCH_MODE); + + /* De-activate it via VTY */ + f_dyn_ipa_pdch_deact(0, 0, chan_nr.tn); + f_sleep(1.0); + f_ts_dyn_mode_assert(0, 0, chan_nr.tn, TCHF_MODE); + + /* re-activate it via VTY */ + f_dyn_ipa_pdch_act(0, 0, chan_nr.tn); + f_sleep(1.0); + f_ts_dyn_mode_assert(0, 0, chan_nr.tn, PDCH_MODE); + + /* and finally de-activate it again */ + f_dyn_ipa_pdch_deact(0, 0, chan_nr.tn); + f_sleep(1.0); + f_ts_dyn_mode_assert(0, 0, chan_nr.tn, TCHF_MODE); + + setverdict(pass); +} + +/* Test IPA PDCH activation NACK */ +testcase TC_dyn_pdch_ipa_act_nack() runs on test_CT { + var RSL_Message rsl_unused; + + /* change Timeslot 6 before f_init() starts RSL */ + f_init_vty(); + f_ts_set_chcomb(0, 0, 6, "TCH/F_PDCH"); + f_vty_transceive(BSCVTY, "drop bts connection 0 oml"); + + f_init(1, false); + f_sleep(1.0); + + var RslChannelNr chan_nr := valueof(t_RslChanNr_Bm(6)); + + f_ts_dyn_mode_assert(0, 0, chan_nr.tn, TCHF_MODE); + /* The BSC will activate the dynamic PDCH by default, so confirm that */ + rsl_unused := f_exp_ipa_rx(0, tr_RSL_IPA_PDCH_ACT(chan_nr)); + f_ipa_tx(0, ts_RSL_IPA_PDCH_ACT_ACK(chan_nr, ts_RSL_IE_FrameNumber(2342))); + f_sleep(1.0); + f_ts_dyn_mode_assert(0, 0, chan_nr.tn, PDCH_MODE); + + /* De-activate it via VTY */ + f_dyn_ipa_pdch_deact(0, 0, chan_nr.tn); + f_sleep(1.0); + f_ts_dyn_mode_assert(0, 0, chan_nr.tn, TCHF_MODE); + + /* re-activate it via VTY, but fail that; check BSC still assumes TCH/F mode */ + f_dyn_ipa_pdch_act(0, 0, chan_nr.tn, RSL_ERR_EQUIPMENT_FAIL); + f_sleep(1.0); + f_ts_dyn_mode_assert(0, 0, chan_nr.tn, TCHF_MODE); + + setverdict(pass); +} + + +/*********************************************************************** + * Osmocom style dynamic PDCH + ***********************************************************************/ + +private function f_dyn_osmo_pdch_act(integer bts_nr, integer trx_nr, integer ts_nr, + template (omit) RSL_Cause nack := omit) +runs on test_CT { + var RslChannelNr chan_nr := valueof(t_RslChanNr_PDCH(ts_nr)); + var RSL_Message rsl_unused; + /* ask BSC via VTY to activate a given IPA style chan as PDCH */ + /* FIXME: no VTY command to activate Osmocom PDCH !! */ + /* expect the BSC to issue the related RSL command */ + rsl_unused := f_exp_ipa_rx(0, tr_RSL_CHAN_ACT(chan_nr, ?)); + if (istemplatekind(nack, "omit")) { + /* respond with a related acknowledgement */ + f_ipa_tx(0, ts_RSL_CHAN_ACT_ACK(chan_nr, 2342)); + } else { + f_ipa_tx(0, ts_RSL_CHAN_ACT_NACK(chan_nr, valueof(nack))); + } +} + +private function f_dyn_osmo_pdch_deact(integer bts_nr, integer trx_nr, integer ts_nr, + template (omit) RSL_Cause nack := omit) +runs on test_CT { + var RslChannelNr chan_nr := valueof(t_RslChanNr_PDCH(ts_nr)); + var RSL_Message rsl_unused; + /* ask BSC via VTY to activate a given IPA style chan as PDCH */ + /* FIXME: no VTY command to activate Osmocom PDCH !! */ + /* expect the BSC to issue the related RSL command */ + rsl_unused := f_exp_ipa_rx(0, tr_RSL_RF_CHAN_REL(chan_nr)); + if (istemplatekind(nack, "omit")) { + /* respond with a related acknowledgement */ + f_ipa_tx(0, ts_RSL_RF_CHAN_REL_ACK(chan_nr)); + } else { + //f_ipa_tx(0, ts_RSL_RF_CHAN_REL_NACK(chan_nr, valueof(nack))); + } +} + +/* Test Osmocom dyn PDCH activation / deactivation triggered by VTY */ +testcase TC_dyn_pdch_osmo_act_deact() runs on test_CT { + var RSL_Message rsl_unused; + + /* change Timeslot 6 before f_init() starts RSL */ + f_init_vty(); + f_ts_set_chcomb(0, 0, 6, "TCH/F_TCH/H_PDCH"); + f_vty_transceive(BSCVTY, "drop bts connection 0 oml"); + + f_init(1, false); + f_sleep(1.0); + + var RslChannelNr chan_nr := valueof(t_RslChanNr_PDCH(6)); + + f_ts_dyn_mode_assert(0, 0, chan_nr.tn, NONE_MODE); + /* The BSC will activate the dynamic PDCH by default, so confirm that */ + rsl_unused := f_exp_ipa_rx(0, tr_RSL_CHAN_ACT_PDCH(chan_nr, ?)); + + f_ipa_tx(0, ts_RSL_CHAN_ACT_ACK(chan_nr, 2342)); + f_sleep(1.0); + f_ts_dyn_mode_assert(0, 0, chan_nr.tn, PDCH_MODE); + + setverdict(pass); +} + +/* Test Osmocom dyn PDCH activation NACK behavior */ +testcase TC_dyn_pdch_osmo_act_nack() runs on test_CT { + var RSL_Message rsl_unused; + + /* change Timeslot 6 before f_init() starts RSL */ + f_init_vty(); + f_ts_set_chcomb(0, 0, 6, "TCH/F_TCH/H_PDCH"); + f_vty_transceive(BSCVTY, "drop bts connection 0 oml"); + + f_init(1, false); + f_sleep(1.0); + + var RslChannelNr chan_nr := valueof(t_RslChanNr_PDCH(6)); + + f_ts_dyn_mode_assert(0, 0, chan_nr.tn, NONE_MODE); + /* The BSC will activate the dynamic PDCH by default, so confirm that */ + rsl_unused := f_exp_ipa_rx(0, tr_RSL_CHAN_ACT_PDCH(chan_nr, ?)); + + /* NACK this activation and expect the "show timeslot" mode still to be NONE */ + f_ipa_tx(0, ts_RSL_CHAN_ACT_NACK(chan_nr, RSL_ERR_EQUIPMENT_FAIL)); + f_sleep(1.0); + f_ts_dyn_mode_assert(0, 0, chan_nr.tn, NONE_MODE); + + setverdict(pass); +} + + + control { /* CTRL interface testing */ execute( TC_ctrl_msc_connection_status() ); @@ -2229,6 +2474,11 @@ execute( TC_bssap_rlsd_does_not_cause_bssmap_reset() ); execute( TC_bssmap_clear_does_not_cause_bssmap_reset() ); execute( TC_ms_rel_ind_does_not_cause_bssmap_reset() ); + + execute( TC_dyn_pdch_ipa_act_deact() ); + execute( TC_dyn_pdch_ipa_act_nack() ); + execute( TC_dyn_pdch_osmo_act_deact() ); + execute( TC_dyn_pdch_osmo_act_nack() ); } } diff --git a/library/RSL_Types.ttcn b/library/RSL_Types.ttcn index 5dba470..104a1a8 100644 --- a/library/RSL_Types.ttcn +++ b/library/RSL_Types.ttcn @@ -277,6 +277,13 @@ a_bits := 0 /* related to immediate assignment */ } + /* osmocom-style dynamic PDCH */ + template RSL_IE_ActivationType t_RSL_IE_ActType_PDCH := { + reactivation := false, + reserved := 1, + a_bits := 7 /* related to immediate assignment */ + } + /* 9.3.6 */ type enumerated RSL_SpeechDataInd { RSL_SPDI_SPEECH ('00000001'B), @@ -418,7 +425,7 @@ } /* 3GPP TS 44.018 / 10.5.2.38 Starting Time */ - template RSL_IE_FrameNumber ts_RSL_IE_FrameNumber(GsmFrameNumber fn) := { + template (value) RSL_IE_FrameNumber ts_RSL_IE_FrameNumber(GsmFrameNumber fn) := { t1_p := (fn / 1326) mod 32, t3 := fn mod 51, t2 := fn mod 26 @@ -945,6 +952,30 @@ /* lots of optional IEs */ } } + template RSL_Message tr_RSL_CHAN_ACT(template RslChannelNr chan_nr, + template RSL_IE_ChannelMode mode) := { + msg_disc := ts_RSL_MsgDisc(RSL_MDISC_DCHAN, false), + msg_type := RSL_MT_CHAN_ACTIV, + ies :={ + tr_RSL_IE(RSL_IE_Body:{chan_nr := chan_nr}), + tr_RSL_IE(RSL_IE_Body:{act_type := t_RSL_IE_ActType}), + tr_RSL_IE(RSL_IE_Body:{chan_mode := mode}), + /* lots of optional IEs */ + * + } + } + template RSL_Message tr_RSL_CHAN_ACT_PDCH(template RslChannelNr chan_nr, + template RSL_IE_ChannelMode mode) := { + msg_disc := ts_RSL_MsgDisc(RSL_MDISC_DCHAN, false), + msg_type := RSL_MT_CHAN_ACTIV, + ies :={ + tr_RSL_IE(RSL_IE_Body:{chan_nr := chan_nr}), + tr_RSL_IE(RSL_IE_Body:{act_type := t_RSL_IE_ActType_PDCH}), + /* lots of optional IEs */ + * + } + } + /* 8.4.2 BTS -> BSC */ template RSL_Message ts_RSL_CHAN_ACT_ACK(RslChannelNr chan_nr, GsmFrameNumber fn) := { @@ -1563,7 +1594,8 @@ } - template RSL_Message ts_RSL_IPA_PDCH_ACT_ACK(RslChannelNr chan_nr, RSL_IE_FrameNumber fn) := { + template RSL_Message ts_RSL_IPA_PDCH_ACT_ACK(RslChannelNr chan_nr, + template (value) RSL_IE_FrameNumber fn) := { msg_disc := ts_RSL_MsgDisc(RSL_MDISC_DCHAN, false), msg_type := RSL_MT_IPAC_PDCH_ACT_ACK, ies := { -- To view, visit https://gerrit.osmocom.org/7664 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: I7a7a937548a35461d86e93ead79c39a37a59563e Gerrit-PatchSet: 1 Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Owner: Harald Welte Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder From gerrit-no-reply at lists.osmocom.org Sat Apr 7 17:36:32 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Sat, 7 Apr 2018 17:36:32 +0000 Subject: [ABANDON] osmocom-bb[master]: Merge branch 'fixeria/trx' into master In-Reply-To: References: Message-ID: Harald Welte has abandoned this change. Change subject: Merge branch 'fixeria/trx' into master ...................................................................... Abandoned manually merged -- To view, visit https://gerrit.osmocom.org/7263 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: abandon Gerrit-Change-Id: I83094ca021a0b84c107f7301e10a603e4b342e6e Gerrit-PatchSet: 3 Gerrit-Project: osmocom-bb Gerrit-Branch: master Gerrit-Owner: Vadim Yanitskiy Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Vadim Yanitskiy From gerrit-no-reply at lists.osmocom.org Sat Apr 7 18:15:11 2018 From: gerrit-no-reply at lists.osmocom.org (Vadim Yanitskiy) Date: Sat, 7 Apr 2018 18:15:11 +0000 Subject: [PATCH] docker-playground[master]: trxcon/Dockerfile: use 'master' branch Message-ID: Review at https://gerrit.osmocom.org/7665 trxcon/Dockerfile: use 'master' branch The 'laforge/trx' branch of OsmocomBB was used to make basic TTCN3 tests, such as the 'max_ta', work ASAP. Now all required changes and some bug fixes have been merged to the 'master'. Change-Id: I4c3012c4ad24dfebea61e14038bea86d4f56832d --- M osmocom-bb-trxcon/Dockerfile 1 file changed, 1 insertion(+), 1 deletion(-) git pull ssh://gerrit.osmocom.org:29418/docker-playground refs/changes/65/7665/1 diff --git a/osmocom-bb-trxcon/Dockerfile b/osmocom-bb-trxcon/Dockerfile index 1d29051..0f3cb12 100644 --- a/osmocom-bb-trxcon/Dockerfile +++ b/osmocom-bb-trxcon/Dockerfile @@ -2,7 +2,7 @@ MAINTAINER Harald Welte -ARG OSMO_BB_BRANCH="laforge/trx" +ARG OSMO_BB_BRANCH="master" ARG OSMOCOM_REPO="http://download.opensuse.org/repositories/network:/osmocom:/nightly/Debian_8.0/" -- To view, visit https://gerrit.osmocom.org/7665 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I4c3012c4ad24dfebea61e14038bea86d4f56832d Gerrit-PatchSet: 1 Gerrit-Project: docker-playground Gerrit-Branch: master Gerrit-Owner: Vadim Yanitskiy From gerrit-no-reply at lists.osmocom.org Sat Apr 7 19:37:08 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Sat, 7 Apr 2018 19:37:08 +0000 Subject: docker-playground[master]: trxcon/Dockerfile: use 'master' branch In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 Verified+1 -- To view, visit https://gerrit.osmocom.org/7665 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I4c3012c4ad24dfebea61e14038bea86d4f56832d Gerrit-PatchSet: 1 Gerrit-Project: docker-playground Gerrit-Branch: master Gerrit-Owner: Vadim Yanitskiy Gerrit-Reviewer: Harald Welte Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Sat Apr 7 19:37:10 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Sat, 7 Apr 2018 19:37:10 +0000 Subject: [MERGED] docker-playground[master]: trxcon/Dockerfile: use 'master' branch In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: trxcon/Dockerfile: use 'master' branch ...................................................................... trxcon/Dockerfile: use 'master' branch The 'laforge/trx' branch of OsmocomBB was used to make basic TTCN3 tests, such as the 'max_ta', work ASAP. Now all required changes and some bug fixes have been merged to the 'master'. Change-Id: I4c3012c4ad24dfebea61e14038bea86d4f56832d --- M osmocom-bb-trxcon/Dockerfile 1 file changed, 1 insertion(+), 1 deletion(-) Approvals: Harald Welte: Looks good to me, approved; Verified diff --git a/osmocom-bb-trxcon/Dockerfile b/osmocom-bb-trxcon/Dockerfile index 1d29051..0f3cb12 100644 --- a/osmocom-bb-trxcon/Dockerfile +++ b/osmocom-bb-trxcon/Dockerfile @@ -2,7 +2,7 @@ MAINTAINER Harald Welte -ARG OSMO_BB_BRANCH="laforge/trx" +ARG OSMO_BB_BRANCH="master" ARG OSMOCOM_REPO="http://download.opensuse.org/repositories/network:/osmocom:/nightly/Debian_8.0/" -- To view, visit https://gerrit.osmocom.org/7665 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: I4c3012c4ad24dfebea61e14038bea86d4f56832d Gerrit-PatchSet: 1 Gerrit-Project: docker-playground Gerrit-Branch: master Gerrit-Owner: Vadim Yanitskiy Gerrit-Reviewer: Harald Welte From gerrit-no-reply at lists.osmocom.org Sat Apr 7 21:11:02 2018 From: gerrit-no-reply at lists.osmocom.org (Thorsten Alteholz) Date: Sat, 7 Apr 2018 21:11:02 +0000 Subject: [PATCH] libosmocore[master]: fix issue on big endian architecture Message-ID: Review at https://gerrit.osmocom.org/7666 fix issue on big endian architecture OSMO_IS_LITTLE_ENDIAN is always defined and has a value of either 0 or 1 as a result in byteswap.h the corresponding swap functions will be always called, independent of the endianess Signed-off-by: Thorsten Alteholz Change-Id: I4a09d2d8ccf155e70a3977ae1747758b6bc5125e --- M include/osmocom/core/byteswap.h 1 file changed, 1 insertion(+), 1 deletion(-) git pull ssh://gerrit.osmocom.org:29418/libosmocore refs/changes/66/7666/1 diff --git a/include/osmocom/core/byteswap.h b/include/osmocom/core/byteswap.h index 1ea5b3d..cecdc63 100644 --- a/include/osmocom/core/byteswap.h +++ b/include/osmocom/core/byteswap.h @@ -32,7 +32,7 @@ return out; } -#ifdef OSMO_IS_LITTLE_ENDIAN +#if OSMO_IS_LITTLE_ENDIAN == 1 #define osmo_ntohl(x) osmo_swab32(x) #define osmo_ntohs(x) osmo_swab16(x) #define osmo_htonl(x) osmo_swab32(x) -- To view, visit https://gerrit.osmocom.org/7666 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I4a09d2d8ccf155e70a3977ae1747758b6bc5125e Gerrit-PatchSet: 1 Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Owner: Thorsten Alteholz From jenkins at lists.osmocom.org Sat Apr 7 23:22:24 2018 From: jenkins at lists.osmocom.org (jenkins at lists.osmocom.org) Date: Sat, 7 Apr 2018 23:22:24 +0000 (UTC) Subject: =?UTF-8?Q?Jenkins_build_is_back_to_normal_:_master-osmo-bts_=C2=BB_sysmo?= =?UTF-8?Q?,superfemto=5Fv3.0.1pre,default,osmocom-master-debian9_#475?= In-Reply-To: <1281528068.111.1523062140637.JavaMail.jenkins@jenkins.osmocom.org> References: <1281528068.111.1523062140637.JavaMail.jenkins@jenkins.osmocom.org> Message-ID: <1532371587.132.1523143344663.JavaMail.jenkins@jenkins.osmocom.org> See From jenkins at lists.osmocom.org Sat Apr 7 23:57:47 2018 From: jenkins at lists.osmocom.org (jenkins at lists.osmocom.org) Date: Sat, 7 Apr 2018 23:57:47 +0000 (UTC) Subject: =?UTF-8?Q?Build_failed_in_Jenkins:_master-osmo-gmr_=C2=BB_a1=3Ddefau?= =?UTF-8?Q?lt,a2=3Ddefault,a3=3Ddefault,osmocom-master-debian9_#341?= Message-ID: <179467555.133.1523145467926.JavaMail.jenkins@jenkins.osmocom.org> See ------------------------------------------ Started by upstream project "master-osmo-gmr" build number 341 originally caused by: Started by upstream project "master-libosmocore" build number 195 originally caused by: Started by timer Building remotely on build2-deb9build-ansible (ttcn3 osmo-gsm-tester-build osmocom-gerrit-debian9 osmocom-master-debian9 coverity) in workspace > git rev-parse --is-inside-work-tree # timeout=10 Fetching changes from the remote Git repository > git config remote.origin.url git://git.osmocom.org/osmo-gmr # timeout=10 Fetching upstream changes from git://git.osmocom.org/osmo-gmr > git --version # timeout=10 > git fetch --tags --progress git://git.osmocom.org/osmo-gmr +refs/heads/*:refs/remotes/origin/* Checking out Revision adb8cc6aa9453dfc339de53ae641067136a031ec (refs/remotes/origin/master) > git config core.sparsecheckout # timeout=10 > git checkout -f adb8cc6aa9453dfc339de53ae641067136a031ec Commit message: "Add contrib/jenkins.sh script, like other osmo-* repositories" > git rev-list --no-walk adb8cc6aa9453dfc339de53ae641067136a031ec # timeout=10 [osmocom-master-debian9] $ /bin/sh -xe /tmp/jenkins454528601956290833.sh + ./contrib/jenkins.sh + base= + deps= + inst= + export deps inst + osmo-clean-workspace.sh + chmod -R +w . + git checkout -f HEAD + git clean -dxf -e -e layer1-headers Skipping repository deps/libosmocore + [ -d ] + git -C checkout -f HEAD error: pathspec 'HEAD' did not match any file(s) known to git. Build step 'Execute shell' marked build as failure [WARNINGS]Skipping publisher since build result is FAILURE From jenkins at lists.osmocom.org Sun Apr 8 00:00:01 2018 From: jenkins at lists.osmocom.org (jenkins at lists.osmocom.org) Date: Sun, 8 Apr 2018 00:00:01 +0000 (UTC) Subject: =?UTF-8?Q?Build_failed_in_Jenkins:_master-osmo-bts_=C2=BB_sysmo,?= =?UTF-8?Q?femtobts=5Fv2.7,default,osmocom-master-debian9_#476?= Message-ID: <1723823981.134.1523145601727.JavaMail.jenkins@jenkins.osmocom.org> See ------------------------------------------ Started by upstream project "master-osmo-bts" build number 476 originally caused by: Started by upstream project "master-libosmo-abis" build number 265 originally caused by: Started by upstream project "master-libosmocore" build number 195 originally caused by: Started by timer Building remotely on build2-deb9build-ansible (ttcn3 osmo-gsm-tester-build osmocom-gerrit-debian9 osmocom-master-debian9 coverity) in workspace > git rev-parse --is-inside-work-tree # timeout=10 Fetching changes from the remote Git repository > git config remote.origin.url git://git.osmocom.org/osmo-bts # timeout=10 Fetching upstream changes from git://git.osmocom.org/osmo-bts > git --version # timeout=10 > git fetch --tags --progress git://git.osmocom.org/osmo-bts +refs/heads/*:refs/remotes/origin/* Checking out Revision e5518b07d6fc3375a9e4004a2ed2680dbb2d178e (refs/remotes/origin/master) > git config core.sparsecheckout # timeout=10 > git checkout -f e5518b07d6fc3375a9e4004a2ed2680dbb2d178e Commit message: "contrib: jenkins_bts_model: Fix bashism expr" > git rev-list --no-walk e5518b07d6fc3375a9e4004a2ed2680dbb2d178e # timeout=10 [osmocom-master-debian9] $ /bin/sh -xe /tmp/jenkins7583912625707978522.sh + ./contrib/jenkins_bts_model.sh sysmo + ./contrib/jenkins_sysmobts.sh + base= + deps= + inst= + export deps inst + osmo-clean-workspace.sh + chmod -R +w . + git checkout -f HEAD + git clean -dxf -e -e layer1-headers Skipping repository deps/libosmocore + [ -d ] + git -C checkout -f HEAD error: pathspec 'HEAD' did not match any file(s) known to git. Build step 'Execute shell' marked build as failure [WARNINGS]Skipping publisher since build result is FAILURE From jenkins at lists.osmocom.org Sun Apr 8 00:02:18 2018 From: jenkins at lists.osmocom.org (jenkins at lists.osmocom.org) Date: Sun, 8 Apr 2018 00:02:18 +0000 (UTC) Subject: =?UTF-8?Q?Build_failed_in_Jenkins:_master-osmo-bts_=C2=BB_sysmo, sup?= =?UTF-8?Q?erfemto=5Fv3.0.1pre,default,osmocom-master-debian9_#476?= Message-ID: <969626116.135.1523145738599.JavaMail.jenkins@jenkins.osmocom.org> See ------------------------------------------ Started by upstream project "master-osmo-bts" build number 476 originally caused by: Started by upstream project "master-libosmo-abis" build number 265 originally caused by: Started by upstream project "master-libosmocore" build number 195 originally caused by: Started by timer Building remotely on build2-deb9build-ansible (ttcn3 osmo-gsm-tester-build osmocom-gerrit-debian9 osmocom-master-debian9 coverity) in workspace > git rev-parse --is-inside-work-tree # timeout=10 Fetching changes from the remote Git repository > git config remote.origin.url git://git.osmocom.org/osmo-bts # timeout=10 Fetching upstream changes from git://git.osmocom.org/osmo-bts > git --version # timeout=10 > git fetch --tags --progress git://git.osmocom.org/osmo-bts +refs/heads/*:refs/remotes/origin/* Checking out Revision e5518b07d6fc3375a9e4004a2ed2680dbb2d178e (refs/remotes/origin/master) > git config core.sparsecheckout # timeout=10 > git checkout -f e5518b07d6fc3375a9e4004a2ed2680dbb2d178e Commit message: "contrib: jenkins_bts_model: Fix bashism expr" > git rev-list --no-walk e5518b07d6fc3375a9e4004a2ed2680dbb2d178e # timeout=10 [osmocom-master-debian9] $ /bin/sh -xe /tmp/jenkins3320166216874069003.sh + ./contrib/jenkins_bts_model.sh sysmo + ./contrib/jenkins_sysmobts.sh + base= + deps= + inst= + export deps inst + osmo-clean-workspace.sh + chmod -R +w . + git checkout -f HEAD + git clean -dxf -e -e layer1-headers Skipping repository deps/libosmocore + [ -d ] + git -C checkout -f HEAD error: pathspec 'HEAD' did not match any file(s) known to git. Build step 'Execute shell' marked build as failure [WARNINGS]Skipping publisher since build result is FAILURE From jenkins at lists.osmocom.org Sun Apr 8 00:17:11 2018 From: jenkins at lists.osmocom.org (jenkins at lists.osmocom.org) Date: Sun, 8 Apr 2018 00:17:11 +0000 (UTC) Subject: =?UTF-8?Q?Jenkins_build_is_back_to_normal_:_master-osmo-pc?= =?UTF-8?Q?u_=C2=BB_master,osmocom-master-debian9,none,False_#360?= In-Reply-To: <1002353212.124.1523086554525.JavaMail.jenkins@jenkins.osmocom.org> References: <1002353212.124.1523086554525.JavaMail.jenkins@jenkins.osmocom.org> Message-ID: <2005473099.136.1523146631509.JavaMail.jenkins@jenkins.osmocom.org> See From jenkins at lists.osmocom.org Sun Apr 8 00:48:59 2018 From: jenkins at lists.osmocom.org (jenkins at lists.osmocom.org) Date: Sun, 8 Apr 2018 00:48:59 +0000 (UTC) Subject: =?UTF-8?Q?Jenkins_build_is_back_to_normal_:_master-osmo-bts_=C2=BB_s?= =?UTF-8?Q?ysmo,femtobts=5Fv2.7,default,osmocom-master-debian9_#477?= In-Reply-To: <1723823981.134.1523145601727.JavaMail.jenkins@jenkins.osmocom.org> References: <1723823981.134.1523145601727.JavaMail.jenkins@jenkins.osmocom.org> Message-ID: <1772768941.137.1523148539792.JavaMail.jenkins@jenkins.osmocom.org> See From jenkins at lists.osmocom.org Sun Apr 8 00:51:32 2018 From: jenkins at lists.osmocom.org (jenkins at lists.osmocom.org) Date: Sun, 8 Apr 2018 00:51:32 +0000 (UTC) Subject: =?UTF-8?Q?Jenkins_build_is_back_to_normal_:_master-osmo-bts_=C2=BB_sysmo?= =?UTF-8?Q?,superfemto=5Fv3.0.1pre,default,osmocom-master-debian9_#477?= In-Reply-To: <969626116.135.1523145738599.JavaMail.jenkins@jenkins.osmocom.org> References: <969626116.135.1523145738599.JavaMail.jenkins@jenkins.osmocom.org> Message-ID: <386145274.138.1523148692457.JavaMail.jenkins@jenkins.osmocom.org> See From gerrit-no-reply at lists.osmocom.org Sun Apr 8 10:27:12 2018 From: gerrit-no-reply at lists.osmocom.org (Vadim Yanitskiy) Date: Sun, 8 Apr 2018 10:27:12 +0000 Subject: libosmocore[master]: fix issue on big endian architecture In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+1 -- To view, visit https://gerrit.osmocom.org/7666 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I4a09d2d8ccf155e70a3977ae1747758b6bc5125e Gerrit-PatchSet: 1 Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Owner: Thorsten Alteholz Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Vadim Yanitskiy Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Sun Apr 8 10:46:12 2018 From: gerrit-no-reply at lists.osmocom.org (Vadim Yanitskiy) Date: Sun, 8 Apr 2018 10:46:12 +0000 Subject: [PATCH] osmocom-bb[master]: host/trxcon: use osmo_init_logging2() Message-ID: Review at https://gerrit.osmocom.org/7667 host/trxcon: use osmo_init_logging2() The osmo_init_logging() doesn't allow to specify a talloc context for libosmocore logging subsystem, so this is why the new version was introduced. Let's use it. Change-Id: I06c4a1f7f839f774bc428e89cfac30132bae904d --- M src/host/trxcon/logging.c 1 file changed, 2 insertions(+), 1 deletion(-) git pull ssh://gerrit.osmocom.org:29418/osmocom-bb refs/changes/67/7667/1 diff --git a/src/host/trxcon/logging.c b/src/host/trxcon/logging.c index a76b4d9..6a3043b 100644 --- a/src/host/trxcon/logging.c +++ b/src/host/trxcon/logging.c @@ -26,6 +26,7 @@ #include #include "logging.h" +#include "trxcon.h" static struct log_info_cat trx_log_info_cat[] = { [DAPP] = { @@ -79,7 +80,7 @@ int trx_log_init(const char *category_mask) { - osmo_init_logging(&trx_log_info); + osmo_init_logging2(tall_trx_ctx, &trx_log_info); if (category_mask) log_parse_category_mask(osmo_stderr_target, category_mask); -- To view, visit https://gerrit.osmocom.org/7667 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I06c4a1f7f839f774bc428e89cfac30132bae904d Gerrit-PatchSet: 1 Gerrit-Project: osmocom-bb Gerrit-Branch: master Gerrit-Owner: Vadim Yanitskiy From gerrit-no-reply at lists.osmocom.org Sun Apr 8 10:46:13 2018 From: gerrit-no-reply at lists.osmocom.org (Vadim Yanitskiy) Date: Sun, 8 Apr 2018 10:46:13 +0000 Subject: [PATCH] osmocom-bb[master]: host/trxcon: don't free root talloc context Message-ID: Review at https://gerrit.osmocom.org/7668 host/trxcon: don't free root talloc context This is useless, and prevents us from finding potential memory leaks at exit. Let's print talloc report instead of that. Change-Id: Ibf04942070d654e97c3ed77d69ab19e44602758c --- M src/host/trxcon/trxcon.c 1 file changed, 7 insertions(+), 2 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmocom-bb refs/changes/68/7668/1 diff --git a/src/host/trxcon/trxcon.c b/src/host/trxcon/trxcon.c index 43c98a5..1d0ecc3 100644 --- a/src/host/trxcon/trxcon.c +++ b/src/host/trxcon/trxcon.c @@ -309,9 +309,14 @@ /* Shutdown main state machine */ osmo_fsm_inst_free(trxcon_fsm); - /* Make Valgrind happy */ + /* Deinitialize logging */ log_fini(); - talloc_free(tall_trx_ctx); + + /** + * Print report for the root talloc context in order + * to be able to find and fix potential memory leaks. + */ + talloc_report_full(tall_trx_ctx, stderr); return rc; } -- To view, visit https://gerrit.osmocom.org/7668 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Ibf04942070d654e97c3ed77d69ab19e44602758c Gerrit-PatchSet: 1 Gerrit-Project: osmocom-bb Gerrit-Branch: master Gerrit-Owner: Vadim Yanitskiy From gerrit-no-reply at lists.osmocom.org Sun Apr 8 10:46:13 2018 From: gerrit-no-reply at lists.osmocom.org (Vadim Yanitskiy) Date: Sun, 8 Apr 2018 10:46:13 +0000 Subject: [PATCH] osmocom-bb[master]: host/trxcon: track talloc NULL contexts by default Message-ID: Review at https://gerrit.osmocom.org/7669 host/trxcon: track talloc NULL contexts by default In order to be able to introspect not only the root application context, but also all other contexts, e.g. allocated within libosmocore or other libraries, let's enable tracking the use of NULL contexts using the corresponding talloc API. Change-Id: Id21cd5ee340def443f7a5d0b2b8f37f41188dd87 --- M src/host/trxcon/trxcon.c 1 file changed, 3 insertions(+), 0 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmocom-bb refs/changes/69/7669/1 diff --git a/src/host/trxcon/trxcon.c b/src/host/trxcon/trxcon.c index 1d0ecc3..c746816 100644 --- a/src/host/trxcon/trxcon.c +++ b/src/host/trxcon/trxcon.c @@ -247,6 +247,9 @@ init_defaults(); handle_options(argc, argv); + /* Track the use of talloc NULL memory contexts */ + talloc_enable_null_tracking(); + /* Init talloc memory management system */ tall_trx_ctx = talloc_init("trxcon context"); msgb_talloc_ctx_init(tall_trx_ctx, 0); -- To view, visit https://gerrit.osmocom.org/7669 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Id21cd5ee340def443f7a5d0b2b8f37f41188dd87 Gerrit-PatchSet: 1 Gerrit-Project: osmocom-bb Gerrit-Branch: master Gerrit-Owner: Vadim Yanitskiy From jenkins at lists.osmocom.org Sun Apr 8 15:10:06 2018 From: jenkins at lists.osmocom.org (jenkins at lists.osmocom.org) Date: Sun, 8 Apr 2018 15:10:06 +0000 (UTC) Subject: =?UTF-8?Q?Build_failed_in_Jenkins:_master-asn1c_=C2=BB_a1=3Ddefaul?= =?UTF-8?Q?t,a2=3Ddefault,a3=3Ddefault,osmocom-master-debian9_#81?= In-Reply-To: <1752897870.127.1523113807062.JavaMail.jenkins@jenkins.osmocom.org> References: <1752897870.127.1523113807062.JavaMail.jenkins@jenkins.osmocom.org> Message-ID: <2083390164.153.1523200206926.JavaMail.jenkins@jenkins.osmocom.org> See ------------------------------------------ [...truncated 3.68 KB...] + ./configure checking build system type... x86_64-unknown-linux-gnu checking host system type... x86_64-unknown-linux-gnu checking target system type... x86_64-unknown-linux-gnu checking for a BSD-compatible install... /usr/bin/install -c checking whether build environment is sane... yes checking for gawk... gawk checking whether make sets $(MAKE)... yes checking whether to enable maintainer-specific portions of Makefiles... no checking for style of include used by make... GNU checking for gcc... gcc checking for C compiler default output file name... a.out checking whether the C compiler works... yes checking whether we are cross compiling... no checking for suffix of executables... checking for suffix of object files... o checking whether we are using the GNU C compiler... yes checking whether gcc accepts -g... yes checking for gcc option to accept ISO C89... none needed checking dependency style of gcc... gcc3 checking for a sed that does not truncate output... /bin/sed checking for grep that handles long lines and -e... /bin/grep checking for egrep... /bin/grep -E checking for ld used by gcc... /usr/bin/ld checking if the linker (/usr/bin/ld) is GNU ld... yes checking for /usr/bin/ld option to reload object files... -r checking for BSD-compatible nm... /usr/bin/nm -B checking whether ln -s works... yes checking how to recognise dependent libraries... pass_all checking how to run the C preprocessor... gcc -E checking for ANSI C header files... yes checking for sys/types.h... yes checking for sys/stat.h... yes checking for stdlib.h... yes checking for string.h... yes checking for memory.h... yes checking for strings.h... yes checking for inttypes.h... yes checking for stdint.h... yes checking for unistd.h... yes checking dlfcn.h usability... yes checking dlfcn.h presence... yes checking for dlfcn.h... yes checking for g++... g++ checking whether we are using the GNU C++ compiler... yes checking whether g++ accepts -g... yes checking dependency style of g++... gcc3 checking how to run the C++ preprocessor... g++ -E checking for g77... no checking for f77... no checking for xlf... no checking for frt... no checking for pgf77... no checking for cf77... no checking for fort77... no checking for fl32... no checking for af77... no checking for f90... no checking for xlf90... no checking for pgf90... no checking for pghpf... no checking for epcf90... no checking for gfortran... no checking for g95... no checking for f95... no checking for fort... no checking for xlf95... no checking for ifort... no checking for ifc... no checking for efc... no checking for pgf95... no checking for lf95... no checking for ftn... no checking whether we are using the GNU Fortran 77 compiler... no checking whether accepts -g... no checking the maximum length of command line arguments... 32768 checking command to parse /usr/bin/nm -B output from gcc object... ok checking for objdir... .libs checking for ar... ar checking for ranlib... ranlib checking for strip... strip checking if gcc supports -fno-rtti -fno-exceptions... no checking for gcc option to produce PIC... -fPIC checking if gcc PIC flag -fPIC works... yes checking if gcc static flag -static works... yes checking if gcc supports -c -o file.o... yes checking whether the gcc linker (/usr/bin/ld -m elf_x86_64) supports shared libraries... yes checking whether -lc should be explicitly linked in... no checking dynamic linker characteristics... GNU/Linux ld.so checking how to hardcode library paths into programs... immediate checking whether stripping libraries is possible... yes checking if libtool supports shared libraries... yes checking whether to build shared libraries... yes checking whether to build static libraries... yes configure: creating libtool appending configuration tag "CXX" to libtool checking for ld used by g++... /usr/bin/ld -m elf_x86_64 checking if the linker (/usr/bin/ld -m elf_x86_64) is GNU ld... yes checking whether the g++ linker (/usr/bin/ld -m elf_x86_64) supports shared libraries... yes checking for g++ option to produce PIC... -fPIC checking if g++ PIC flag -fPIC works... yes checking if g++ static flag -static works... yes checking if g++ supports -c -o file.o... yes checking whether the g++ linker (/usr/bin/ld -m elf_x86_64) supports shared libraries... yes checking dynamic linker characteristics... GNU/Linux ld.so checking how to hardcode library paths into programs... immediate appending configuration tag "F77" to libtool checking for autoconf... /usr/bin/autoconf checking for autoheader... /usr/bin/autoheader checking for gcc... (cached) gcc checking whether we are using the GNU C compiler... (cached) yes checking whether gcc accepts -g... (cached) yes checking for gcc option to accept ISO C89... (cached) none needed checking dependency style of gcc... (cached) gcc3 checking how to run the C preprocessor... gcc -E checking for a BSD-compatible install... /usr/bin/install -c checking whether ln -s works... yes checking whether make sets $(MAKE)... (cached) yes checking for bison... bison -y checking for flex... flex checking for yywrap in -lfl... yes checking lex output file root... lex.yy checking whether yytext is a pointer... yes checking for ar... /usr/bin/ar checking for ANSI C header files... (cached) yes checking sys/param.h usability... yes checking sys/param.h presence... yes checking for sys/param.h... yes checking whether byte ordering is bigendian... no checking for off_t... yes checking for size_t... yes checking whether struct tm is in sys/time.h or time.h... time.h checking for intmax_t... yes checking for library containing getopt... none required checking for strtoimax... yes checking for strtoll... yes checking for mergesort... no checking for mkstemps... yes configure: creating ./config.status config.status: creating skeletons/standard-modules/Makefile config.status: creating skeletons/tests/Makefile config.status: creating libasn1compiler/Makefile config.status: creating libasn1parser/Makefile config.status: creating libasn1print/Makefile config.status: creating asn1c/webcgi/Makefile config.status: creating asn1c/tests/Makefile config.status: creating libasn1fix/Makefile config.status: creating skeletons/Makefile config.status: creating examples/Makefile config.status: creating tests/Makefile config.status: creating asn1c/Makefile config.status: creating doc/Makefile config.status: creating asn1c.spec config.status: creating Makefile config.status: creating config.h config.status: executing depfiles commands + make -j 4 make all-recursive make[1]: Entering directory ' Making all in libasn1parser make[2]: Entering directory ' if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1parser.lo -MD -MP -MF ".deps/asn1parser.Tpo" -c -o asn1parser.lo asn1parser.c; \ then mv -f ".deps/asn1parser.Tpo" ".deps/asn1parser.Plo"; else rm -f ".deps/asn1parser.Tpo"; exit 1; fi bison -y -p asn1p_ -d asn1p_y.y if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_l.lo -MD -MP -MF ".deps/asn1p_l.Tpo" -c -o asn1p_l.lo asn1p_l.c; \ then mv -f ".deps/asn1p_l.Tpo" ".deps/asn1p_l.Plo"; else rm -f ".deps/asn1p_l.Tpo"; exit 1; fi if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_module.lo -MD -MP -MF ".deps/asn1p_module.Tpo" -c -o asn1p_module.lo asn1p_module.c; \ then mv -f ".deps/asn1p_module.Tpo" ".deps/asn1p_module.Plo"; else rm -f ".deps/asn1p_module.Tpo"; exit 1; fi asn1p_y.y: warning: 2 shift/reduce conflicts [-Wconflicts-sr] mkdir .libs gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1parser.lo -MD -MP -MF .deps/asn1parser.Tpo -c asn1parser.c -fPIC -DPIC -o .libs/asn1parser.o gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_l.lo -MD -MP -MF .deps/asn1p_l.Tpo -c asn1p_l.c -fPIC -DPIC -o .libs/asn1p_l.o gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_module.lo -MD -MP -MF .deps/asn1p_module.Tpo -c asn1p_module.c -fPIC -DPIC -o .libs/asn1p_module.o asn1p_l.c:3521:12: warning: 'input' defined but not used [-Wunused-function] static int input() ^~~~~ gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1parser.lo -MD -MP -MF .deps/asn1parser.Tpo -c asn1parser.c -o asn1parser.o >/dev/null 2>&1 gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_module.lo -MD -MP -MF .deps/asn1p_module.Tpo -c asn1p_module.c -o asn1p_module.o >/dev/null 2>&1 if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_oid.lo -MD -MP -MF ".deps/asn1p_oid.Tpo" -c -o asn1p_oid.lo asn1p_oid.c; \ then mv -f ".deps/asn1p_oid.Tpo" ".deps/asn1p_oid.Plo"; else rm -f ".deps/asn1p_oid.Tpo"; exit 1; fi if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_value.lo -MD -MP -MF ".deps/asn1p_value.Tpo" -c -o asn1p_value.lo asn1p_value.c; \ then mv -f ".deps/asn1p_value.Tpo" ".deps/asn1p_value.Plo"; else rm -f ".deps/asn1p_value.Tpo"; exit 1; fi gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_oid.lo -MD -MP -MF .deps/asn1p_oid.Tpo -c asn1p_oid.c -fPIC -DPIC -o .libs/asn1p_oid.o if test -f y.tab.h; then \ to=`echo "asn1p_y_H" | sed \ -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/' \ -e 's/[^ABCDEFGHIJKLMNOPQRSTUVWXYZ]/_/g'`; \ sed -e "/^#/!b" -e "s/Y_TAB_H/$to/g" -e "s|y\.tab\.h|asn1p_y.h|" \ y.tab.h >asn1p_y.ht; \ rm -f y.tab.h; \ if cmp -s asn1p_y.ht asn1p_y.h; then \ rm -f asn1p_y.ht ;\ else \ mv asn1p_y.ht asn1p_y.h; \ fi; \ fi gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_value.lo -MD -MP -MF .deps/asn1p_value.Tpo -c asn1p_value.c -fPIC -DPIC -o .libs/asn1p_value.o if test -f y.output; then \ mv y.output asn1p_y.output; \ fi sed '/^#/ s|y\.tab\.c|asn1p_y.c|' y.tab.c >asn1p_y.ct && mv asn1p_y.ct asn1p_y.c rm -f y.tab.c if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_expr.lo -MD -MP -MF ".deps/asn1p_expr.Tpo" -c -o asn1p_expr.lo asn1p_expr.c; \ then mv -f ".deps/asn1p_expr.Tpo" ".deps/asn1p_expr.Plo"; else rm -f ".deps/asn1p_expr.Tpo"; exit 1; fi gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_oid.lo -MD -MP -MF .deps/asn1p_oid.Tpo -c asn1p_oid.c -o asn1p_oid.o >/dev/null 2>&1 gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_expr.lo -MD -MP -MF .deps/asn1p_expr.Tpo -c asn1p_expr.c -fPIC -DPIC -o .libs/asn1p_expr.o gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_value.lo -MD -MP -MF .deps/asn1p_value.Tpo -c asn1p_value.c -o asn1p_value.o >/dev/null 2>&1 if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_xports.lo -MD -MP -MF ".deps/asn1p_xports.Tpo" -c -o asn1p_xports.lo asn1p_xports.c; \ then mv -f ".deps/asn1p_xports.Tpo" ".deps/asn1p_xports.Plo"; else rm -f ".deps/asn1p_xports.Tpo"; exit 1; fi gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_l.lo -MD -MP -MF .deps/asn1p_l.Tpo -c asn1p_l.c -o asn1p_l.o >/dev/null 2>&1 if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_constr.lo -MD -MP -MF ".deps/asn1p_constr.Tpo" -c -o asn1p_constr.lo asn1p_constr.c; \ then mv -f ".deps/asn1p_constr.Tpo" ".deps/asn1p_constr.Plo"; else rm -f ".deps/asn1p_constr.Tpo"; exit 1; fi gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_xports.lo -MD -MP -MF .deps/asn1p_xports.Tpo -c asn1p_xports.c -fPIC -DPIC -o .libs/asn1p_xports.o gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_expr.lo -MD -MP -MF .deps/asn1p_expr.Tpo -c asn1p_expr.c -o asn1p_expr.o >/dev/null 2>&1 gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_xports.lo -MD -MP -MF .deps/asn1p_xports.Tpo -c asn1p_xports.c -o asn1p_xports.o >/dev/null 2>&1 gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_constr.lo -MD -MP -MF .deps/asn1p_constr.Tpo -c asn1p_constr.c -fPIC -DPIC -o .libs/asn1p_constr.o if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_param.lo -MD -MP -MF ".deps/asn1p_param.Tpo" -c -o asn1p_param.lo asn1p_param.c; \ then mv -f ".deps/asn1p_param.Tpo" ".deps/asn1p_param.Plo"; else rm -f ".deps/asn1p_param.Tpo"; exit 1; fi if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_class.lo -MD -MP -MF ".deps/asn1p_class.Tpo" -c -o asn1p_class.lo asn1p_class.c; \ then mv -f ".deps/asn1p_class.Tpo" ".deps/asn1p_class.Plo"; else rm -f ".deps/asn1p_class.Tpo"; exit 1; fi gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_constr.lo -MD -MP -MF .deps/asn1p_constr.Tpo -c asn1p_constr.c -o asn1p_constr.o >/dev/null 2>&1 gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_param.lo -MD -MP -MF .deps/asn1p_param.Tpo -c asn1p_param.c -fPIC -DPIC -o .libs/asn1p_param.o gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_class.lo -MD -MP -MF .deps/asn1p_class.Tpo -c asn1p_class.c -fPIC -DPIC -o .libs/asn1p_class.o if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_ref.lo -MD -MP -MF ".deps/asn1p_ref.Tpo" -c -o asn1p_ref.lo asn1p_ref.c; \ then mv -f ".deps/asn1p_ref.Tpo" ".deps/asn1p_ref.Plo"; else rm -f ".deps/asn1p_ref.Tpo"; exit 1; fi gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_param.lo -MD -MP -MF .deps/asn1p_param.Tpo -c asn1p_param.c -o asn1p_param.o >/dev/null 2>&1 gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_class.lo -MD -MP -MF .deps/asn1p_class.Tpo -c asn1p_class.c -o asn1p_class.o >/dev/null 2>&1 if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_y.lo -MD -MP -MF ".deps/asn1p_y.Tpo" -c -o asn1p_y.lo asn1p_y.c; \ then mv -f ".deps/asn1p_y.Tpo" ".deps/asn1p_y.Plo"; else rm -f ".deps/asn1p_y.Tpo"; exit 1; fi gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_ref.lo -MD -MP -MF .deps/asn1p_ref.Tpo -c asn1p_ref.c -fPIC -DPIC -o .libs/asn1p_ref.o gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_ref.lo -MD -MP -MF .deps/asn1p_ref.Tpo -c asn1p_ref.c -o asn1p_ref.o >/dev/null 2>&1 gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_y.lo -MD -MP -MF .deps/asn1p_y.Tpo -c asn1p_y.c -fPIC -DPIC -o .libs/asn1p_y.o asn1p_y.y: In function 'asn1p_parse': asn1p_y.y:357:13: error: 'param' undeclared (first use in this function) *(void **)param = $1; ^~~~~ asn1p_y.y:357:13: note: each undeclared identifier is reported only once for each function it appears in Makefile:299: recipe for target 'asn1p_y.lo' failed make[2]: *** [asn1p_y.lo] Error 1 make[2]: *** Waiting for unfinished jobs.... make[2]: Leaving directory ' Makefile:302: recipe for target 'all-recursive' failed make[1]: *** [all-recursive] Error 1 make[1]: Leaving directory ' Makefile:212: recipe for target 'all' failed make: *** [all] Error 2 Build step 'Execute shell' marked build as failure [WARNINGS]Skipping publisher since build result is FAILURE From gerrit-no-reply at lists.osmocom.org Sun Apr 8 17:16:57 2018 From: gerrit-no-reply at lists.osmocom.org (Thorsten Alteholz) Date: Sun, 8 Apr 2018 17:16:57 +0000 Subject: [PATCH] libosmocore[master]: fix spelling Message-ID: Review at https://gerrit.osmocom.org/7670 fix spelling fix for some spelling issues found by lintian Signed-off-by: Thorsten Alteholz Change-Id: I69976ecae6939d9ff51bfe4ce7374890c6563b82 --- M src/gsm/ipa.c M src/sim/card_fs_sim.c M src/sim/card_fs_tetra.c 3 files changed, 3 insertions(+), 3 deletions(-) git pull ssh://gerrit.osmocom.org:29418/libosmocore refs/changes/70/7670/1 diff --git a/src/gsm/ipa.c b/src/gsm/ipa.c index e00e2d0..e03f615 100644 --- a/src/gsm/ipa.c +++ b/src/gsm/ipa.c @@ -321,7 +321,7 @@ t_tag = *cur++; if (t_len > len + 1) { - LOGP(DLINP, LOGL_ERROR, "IPA CCM tage 0x%02x does not fit\n", t_tag); + LOGP(DLINP, LOGL_ERROR, "IPA CCM tag 0x%02x does not fit\n", t_tag); break; } diff --git a/src/sim/card_fs_sim.c b/src/sim/card_fs_sim.c index 8c819a4..3f541f7 100644 --- a/src/sim/card_fs_sim.c +++ b/src/sim/card_fs_sim.c @@ -51,7 +51,7 @@ .u.str = "SIM Application Toolkit is busy, command cannot be executed at present", }, { 0x9200, 0xfff0, SW_TYPE_STR, SW_CLS_WARN, - .u.str = "Memory management - Command successful but after using an internal updat retry X times", + .u.str = "Memory management - Command successful but after using an internal update retry X times", }, { 0x9240, 0xffff, SW_TYPE_STR, SW_CLS_ERROR, .u.str = "Memory management - Memory problem", diff --git a/src/sim/card_fs_tetra.c b/src/sim/card_fs_tetra.c index 7bf0279..12853a5 100644 --- a/src/sim/card_fs_tetra.c +++ b/src/sim/card_fs_tetra.c @@ -46,7 +46,7 @@ .u.str = "SIM Application Toolkit is busy, command cannot be executed at present", }, { 0x9200, 0xfff0, SW_TYPE_STR, SW_CLS_WARN, - .u.str = "Memory management - Command successful but after using an internal updat retry X times", + .u.str = "Memory management - Command successful but after using an internal update retry X times", }, { 0x9240, 0xffff, SW_TYPE_STR, SW_CLS_ERROR, .u.str = "Memory management - Memory problem", -- To view, visit https://gerrit.osmocom.org/7670 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I69976ecae6939d9ff51bfe4ce7374890c6563b82 Gerrit-PatchSet: 1 Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Owner: Thorsten Alteholz From gerrit-no-reply at lists.osmocom.org Sun Apr 8 17:55:40 2018 From: gerrit-no-reply at lists.osmocom.org (roox) Date: Sun, 8 Apr 2018 17:55:40 +0000 Subject: [PATCH] osmo-trx[master]: configure.ac: Fix typo Message-ID: Review at https://gerrit.osmocom.org/7671 configure.ac: Fix typo Unbreak git-version-gen when used with .tarball-version Change-Id: Id836c6822daf1f6835a8c869624b4b40dde47f3a --- M configure.ac 1 file changed, 1 insertion(+), 1 deletion(-) git pull ssh://gerrit.osmocom.org:29418/osmo-trx refs/changes/71/7671/1 diff --git a/configure.ac b/configure.ac index bade799..c80f1cf 100644 --- a/configure.ac +++ b/configure.ac @@ -19,7 +19,7 @@ dnl AC_INIT([osmo-trx], - m4_esyscmd([./git-version-gen .tarball-veresion]), + m4_esyscmd([./git-version-gen .tarball-version]), [openbsc at lists.osmocom.org]) AC_PREREQ(2.57) AC_CONFIG_SRCDIR([Transceiver52M/Makefile.am]) -- To view, visit https://gerrit.osmocom.org/7671 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Id836c6822daf1f6835a8c869624b4b40dde47f3a Gerrit-PatchSet: 1 Gerrit-Project: osmo-trx Gerrit-Branch: master Gerrit-Owner: roox From jenkins at lists.osmocom.org Sun Apr 8 19:20:09 2018 From: jenkins at lists.osmocom.org (jenkins at lists.osmocom.org) Date: Sun, 8 Apr 2018 19:20:09 +0000 (UTC) Subject: =?UTF-8?Q?Jenkins_build_is_back_to_normal_:_master-osmo-gmr_=C2=BB_a1=3Dd?= =?UTF-8?Q?efault,a2=3Ddefault,a3=3Ddefault,osmocom-master-debian9_#342?= In-Reply-To: <179467555.133.1523145467926.JavaMail.jenkins@jenkins.osmocom.org> References: <179467555.133.1523145467926.JavaMail.jenkins@jenkins.osmocom.org> Message-ID: <1700180140.154.1523215209412.JavaMail.jenkins@jenkins.osmocom.org> See From gerrit-no-reply at lists.osmocom.org Sun Apr 8 19:52:32 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Sun, 8 Apr 2018 19:52:32 +0000 Subject: libosmocore[master]: fix spelling In-Reply-To: References: Message-ID: Patch Set 1: (1 comment) https://gerrit.osmocom.org/#/c/7670/1//COMMIT_MSG Commit Message: Line 11: Signed-off-by: Thorsten Alteholz We don't use signed-off in osmocom -- To view, visit https://gerrit.osmocom.org/7670 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I69976ecae6939d9ff51bfe4ce7374890c6563b82 Gerrit-PatchSet: 1 Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Owner: Thorsten Alteholz Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Pau Espin Pedrol Gerrit-HasComments: Yes From gerrit-no-reply at lists.osmocom.org Sun Apr 8 19:53:48 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Sun, 8 Apr 2018 19:53:48 +0000 Subject: osmo-trx[master]: configure.ac: Fix typo In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+1 -- To view, visit https://gerrit.osmocom.org/7671 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Id836c6822daf1f6835a8c869624b4b40dde47f3a Gerrit-PatchSet: 1 Gerrit-Project: osmo-trx Gerrit-Branch: master Gerrit-Owner: roox Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Pau Espin Pedrol Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Sun Apr 8 22:27:39 2018 From: gerrit-no-reply at lists.osmocom.org (Vadim Yanitskiy) Date: Sun, 8 Apr 2018 22:27:39 +0000 Subject: [PATCH] osmo-msc[master]: ussd.h: cosmetic: move comment to a proper place Message-ID: Review at https://gerrit.osmocom.org/7672 ussd.h: cosmetic: move comment to a proper place Change-Id: I6b0d1d9e1a1b1ffb71cb9905e74f6fad2333bb65 --- M include/osmocom/msc/ussd.h 1 file changed, 1 insertion(+), 2 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-msc refs/changes/72/7672/1 diff --git a/include/osmocom/msc/ussd.h b/include/osmocom/msc/ussd.h index 2665468..f77e0c9 100644 --- a/include/osmocom/msc/ussd.h +++ b/include/osmocom/msc/ussd.h @@ -1,10 +1,9 @@ #ifndef _USSD_H #define _USSD_H -/* Handler function for mobile-originated USSD messages */ - #include +/* Handler function for mobile-originated USSD messages */ int handle_rcv_ussd(struct gsm_subscriber_connection *conn, struct msgb *msg); #endif -- To view, visit https://gerrit.osmocom.org/7672 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I6b0d1d9e1a1b1ffb71cb9905e74f6fad2333bb65 Gerrit-PatchSet: 1 Gerrit-Project: osmo-msc Gerrit-Branch: master Gerrit-Owner: Vadim Yanitskiy From gerrit-no-reply at lists.osmocom.org Sun Apr 8 22:27:40 2018 From: gerrit-no-reply at lists.osmocom.org (Vadim Yanitskiy) Date: Sun, 8 Apr 2018 22:27:40 +0000 Subject: [PATCH] osmo-msc[master]: ussd.h: cosmetic: use '#pragma once' include guard Message-ID: Review at https://gerrit.osmocom.org/7673 ussd.h: cosmetic: use '#pragma once' include guard Change-Id: I0e78aa946b8e6bc7c31534751b2ee5c867bfd490 --- M include/osmocom/msc/ussd.h 1 file changed, 1 insertion(+), 4 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-msc refs/changes/73/7673/1 diff --git a/include/osmocom/msc/ussd.h b/include/osmocom/msc/ussd.h index f77e0c9..b41eb8e 100644 --- a/include/osmocom/msc/ussd.h +++ b/include/osmocom/msc/ussd.h @@ -1,9 +1,6 @@ -#ifndef _USSD_H -#define _USSD_H +#pragma once #include /* Handler function for mobile-originated USSD messages */ int handle_rcv_ussd(struct gsm_subscriber_connection *conn, struct msgb *msg); - -#endif -- To view, visit https://gerrit.osmocom.org/7673 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I0e78aa946b8e6bc7c31534751b2ee5c867bfd490 Gerrit-PatchSet: 1 Gerrit-Project: osmo-msc Gerrit-Branch: master Gerrit-Owner: Vadim Yanitskiy From gerrit-no-reply at lists.osmocom.org Sun Apr 8 22:27:40 2018 From: gerrit-no-reply at lists.osmocom.org (Vadim Yanitskiy) Date: Sun, 8 Apr 2018 22:27:40 +0000 Subject: [PATCH] osmo-msc[master]: libmsc/gsm_04_80.c: drop unused 'in_msg' argument Message-ID: Review at https://gerrit.osmocom.org/7674 libmsc/gsm_04_80.c: drop unused 'in_msg' argument Change-Id: I4248ebf8626d3f7f0bf273fd20cc4f64e979938b --- M include/osmocom/msc/gsm_04_80.h M src/libmsc/gsm_04_80.c M src/libmsc/ussd.c 3 files changed, 10 insertions(+), 13 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-msc refs/changes/74/7674/1 diff --git a/include/osmocom/msc/gsm_04_80.h b/include/osmocom/msc/gsm_04_80.h index 7da45a0..4b4ba10 100644 --- a/include/osmocom/msc/gsm_04_80.h +++ b/include/osmocom/msc/gsm_04_80.h @@ -7,11 +7,9 @@ struct gsm_subscriber_connection; int gsm0480_send_ussd_response(struct gsm_subscriber_connection *conn, - const struct msgb *in_msg, const char* response_text, - const struct ss_request *req); + const char* response_text, const struct ss_request *req); int gsm0480_send_ussd_reject(struct gsm_subscriber_connection *conn, - const struct msgb *msg, - const struct ss_request *request); + const struct ss_request *request); int msc_send_ussd_notify(struct gsm_subscriber_connection *conn, int level, const char *text); diff --git a/src/libmsc/gsm_04_80.c b/src/libmsc/gsm_04_80.c index 37e058c..12b41a1 100644 --- a/src/libmsc/gsm_04_80.c +++ b/src/libmsc/gsm_04_80.c @@ -62,8 +62,7 @@ /* Send response to a mobile-originated ProcessUnstructuredSS-Request */ int gsm0480_send_ussd_response(struct gsm_subscriber_connection *conn, - const struct msgb *in_msg, const char *response_text, - const struct ss_request *req) + const char *response_text, const struct ss_request *req) { struct msgb *msg = gsm48_msgb_alloc_name("GSM 04.08 USSD RSP"); struct gsm48_hdr *gh; @@ -110,7 +109,6 @@ } int gsm0480_send_ussd_reject(struct gsm_subscriber_connection *conn, - const struct msgb *in_msg, const struct ss_request *req) { struct msgb *msg = gsm48_msgb_alloc_name("GSM 04.08 USSD REJ"); diff --git a/src/libmsc/ussd.c b/src/libmsc/ussd.c index eeab52a..ce8939a 100644 --- a/src/libmsc/ussd.c +++ b/src/libmsc/ussd.c @@ -40,7 +40,8 @@ const char USSD_TEXT_OWN_NUMBER[] = "*#100#"; /* A network-specific handler function */ -static int send_own_number(struct gsm_subscriber_connection *conn, const struct msgb *msg, const struct ss_request *req) +static int send_own_number(struct gsm_subscriber_connection *conn, + const struct ss_request *req) { char *own_number = conn->vsub->msisdn; char response_string[GSM_EXTENSION_LENGTH + 20]; @@ -50,7 +51,7 @@ /* Need trailing CR as EOT character */ snprintf(response_string, sizeof(response_string), "Your extension is %s\r", own_number); - return gsm0480_send_ussd_response(conn, msg, response_string, req); + return gsm0480_send_ussd_response(conn, response_string, req); } /* Entrypoint - handler function common to all mobile-originated USSDs */ @@ -72,7 +73,7 @@ rc = gsm0480_decode_ss_request(gh, msgb_l3len(msg), &req); if (!rc) { DEBUGP(DMM, "Unhandled SS\n"); - rc = gsm0480_send_ussd_reject(conn, msg, &req); + rc = gsm0480_send_ussd_reject(conn, &req); return rc; } @@ -80,7 +81,7 @@ if (req.ussd_text[0] == '\0' || req.ussd_text[0] == 0xFF) { if (req.ss_code > 0) { /* Assume interrogateSS or modification of it and reject */ - rc = gsm0480_send_ussd_reject(conn, msg, &req); + rc = gsm0480_send_ussd_reject(conn, &req); return rc; } /* Still assuming a Release-Complete and returning */ @@ -90,10 +91,10 @@ msc_subscr_conn_communicating(conn); if (!strcmp(USSD_TEXT_OWN_NUMBER, (const char *)req.ussd_text)) { DEBUGP(DMM, "USSD: Own number requested\n"); - rc = send_own_number(conn, msg, &req); + rc = send_own_number(conn, &req); } else { DEBUGP(DMM, "Unhandled USSD %s\n", req.ussd_text); - rc = gsm0480_send_ussd_reject(conn, msg, &req); + rc = gsm0480_send_ussd_reject(conn, &req); } return rc; -- To view, visit https://gerrit.osmocom.org/7674 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I4248ebf8626d3f7f0bf273fd20cc4f64e979938b Gerrit-PatchSet: 1 Gerrit-Project: osmo-msc Gerrit-Branch: master Gerrit-Owner: Vadim Yanitskiy From gerrit-no-reply at lists.osmocom.org Sun Apr 8 22:27:40 2018 From: gerrit-no-reply at lists.osmocom.org (Vadim Yanitskiy) Date: Sun, 8 Apr 2018 22:27:40 +0000 Subject: [PATCH] osmo-msc[master]: libmsc/ussd.c: cosmetic: correct logging level Message-ID: Review at https://gerrit.osmocom.org/7675 libmsc/ussd.c: cosmetic: correct logging level Change-Id: If6c270fae54ce79c2708c99d7762ce6ff71f43d9 --- M src/libmsc/ussd.c 1 file changed, 1 insertion(+), 1 deletion(-) git pull ssh://gerrit.osmocom.org:29418/osmo-msc refs/changes/75/7675/1 diff --git a/src/libmsc/ussd.c b/src/libmsc/ussd.c index ce8939a..7a17786 100644 --- a/src/libmsc/ussd.c +++ b/src/libmsc/ussd.c @@ -72,7 +72,7 @@ gh = msgb_l3(msg); rc = gsm0480_decode_ss_request(gh, msgb_l3len(msg), &req); if (!rc) { - DEBUGP(DMM, "Unhandled SS\n"); + LOGP(DMM, LOGL_ERROR, "Unhandled SS message\n"); rc = gsm0480_send_ussd_reject(conn, &req); return rc; } -- To view, visit https://gerrit.osmocom.org/7675 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: If6c270fae54ce79c2708c99d7762ce6ff71f43d9 Gerrit-PatchSet: 1 Gerrit-Project: osmo-msc Gerrit-Branch: master Gerrit-Owner: Vadim Yanitskiy From gerrit-no-reply at lists.osmocom.org Sun Apr 8 22:27:40 2018 From: gerrit-no-reply at lists.osmocom.org (Vadim Yanitskiy) Date: Sun, 8 Apr 2018 22:27:40 +0000 Subject: [PATCH] osmo-msc[master]: libmsc/ussd: don't overwrite rc if decoding failed Message-ID: Review at https://gerrit.osmocom.org/7676 libmsc/ussd: don't overwrite rc if decoding failed Change-Id: I344e4b3a9aad617686a7ddbdeae5780fd8b07e58 --- M src/libmsc/ussd.c 1 file changed, 1 insertion(+), 1 deletion(-) git pull ssh://gerrit.osmocom.org:29418/osmo-msc refs/changes/76/7676/1 diff --git a/src/libmsc/ussd.c b/src/libmsc/ussd.c index 7a17786..e7f7e5d 100644 --- a/src/libmsc/ussd.c +++ b/src/libmsc/ussd.c @@ -73,7 +73,7 @@ rc = gsm0480_decode_ss_request(gh, msgb_l3len(msg), &req); if (!rc) { LOGP(DMM, LOGL_ERROR, "Unhandled SS message\n"); - rc = gsm0480_send_ussd_reject(conn, &req); + gsm0480_send_ussd_reject(conn, &req); return rc; } -- To view, visit https://gerrit.osmocom.org/7676 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I344e4b3a9aad617686a7ddbdeae5780fd8b07e58 Gerrit-PatchSet: 1 Gerrit-Project: osmo-msc Gerrit-Branch: master Gerrit-Owner: Vadim Yanitskiy From gerrit-no-reply at lists.osmocom.org Sun Apr 8 22:27:41 2018 From: gerrit-no-reply at lists.osmocom.org (Vadim Yanitskiy) Date: Sun, 8 Apr 2018 22:27:41 +0000 Subject: [PATCH] osmo-msc[master]: VTY: add USSD processing back-end configuration Message-ID: Review at https://gerrit.osmocom.org/7677 VTY: add USSD processing back-end configuration This change is a preparation for the upcoming remote USSD processing back-end support. It extends the VTY in order to allow one to choose preferred USSD handler. At the moment, the following handlers are available: OsmoMSC# configure terminal OsmoMSC(config)# ussd OsmoMSC(config-ussd)# handler none Do not handle USSD requests local Built-in USSD handlers (e.g. *#100#) Please note that the local back-end (good old *#100#) is still used by default due to the compatibility reasons. Change-Id: I0b3c5ccea4054113e8e23109b1ab68d9f0e18497 --- M include/osmocom/msc/gsm_data.h M include/osmocom/msc/ussd.h M include/osmocom/msc/vty.h M src/libmsc/msc_vty.c M src/libmsc/ussd.c M src/osmo-msc/msc_main.c M tests/msc_vlr/msc_vlr_tests.c 7 files changed, 170 insertions(+), 19 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-msc refs/changes/77/7677/1 diff --git a/include/osmocom/msc/gsm_data.h b/include/osmocom/msc/gsm_data.h index f3e1b94..5194896 100644 --- a/include/osmocom/msc/gsm_data.h +++ b/include/osmocom/msc/gsm_data.h @@ -14,6 +14,7 @@ #include #include +#include #include #include #include @@ -321,6 +322,11 @@ /* MSISDN to which to route MO emergency calls */ char *route_to_msisdn; } emergency; + + struct { + /* USSD handler, e.g. local */ + enum ussd_handler_type handler; + } ussd; }; struct osmo_esme; diff --git a/include/osmocom/msc/ussd.h b/include/osmocom/msc/ussd.h index b41eb8e..7ce27fe 100644 --- a/include/osmocom/msc/ussd.h +++ b/include/osmocom/msc/ussd.h @@ -2,5 +2,19 @@ #include +enum ussd_handler_type { + /* Do not handle USSD requests */ + USSD_HANDLER_NONE = 0, + /* Built-in USSD handlers (e.g. *#100#) */ + USSD_HANDLER_LOCAL, +}; + +/* Forward declarations to avoid mutual include */ +struct gsm_subscriber_connection; +struct gsm_network; + +int ussd_init(struct gsm_network *net); +void ussd_shutdown(struct gsm_network *net); + /* Handler function for mobile-originated USSD messages */ int handle_rcv_ussd(struct gsm_subscriber_connection *conn, struct msgb *msg); diff --git a/include/osmocom/msc/vty.h b/include/osmocom/msc/vty.h index 6a55df7..068683f 100644 --- a/include/osmocom/msc/vty.h +++ b/include/osmocom/msc/vty.h @@ -23,6 +23,7 @@ SMPP_NODE, SMPP_ESME_NODE, HLR_NODE, + USSD_NODE, }; int bsc_vty_init_extra(void); diff --git a/src/libmsc/msc_vty.c b/src/libmsc/msc_vty.c index 33613e9..3a1e512 100644 --- a/src/libmsc/msc_vty.c +++ b/src/libmsc/msc_vty.c @@ -47,6 +47,7 @@ #include #include #include +#include #include #include #include @@ -1380,6 +1381,61 @@ return CMD_SUCCESS; } +static struct cmd_node ussd_node = { + USSD_NODE, + "%s(config-ussd)# ", + 1, +}; + +DEFUN(cfg_ussd, cfg_ussd_cmd, + "ussd", "Configure USSD handling") +{ + vty->node = USSD_NODE; + return CMD_SUCCESS; +} + +#define USSD_HANDLERS "(none|local)" +#define USSD_HANDLERS_HELP \ + "Do not handle USSD requests\n" \ + "Built-in USSD handlers (e.g. *#100#)\n" + +DEFUN(cfg_ussd_handler, cfg_ussd_handler_cmd, + "handler " USSD_HANDLERS, + "USSD processing back-end\n" + USSD_HANDLERS_HELP) +{ + const char *handler_str = argv[0]; + + /* Parse handler type */ + if (!strcasecmp(handler_str, "none")) + gsmnet->ussd.handler = USSD_HANDLER_NONE; + else if (!strcasecmp(handler_str, "local")) + gsmnet->ussd.handler = USSD_HANDLER_LOCAL; + else { + vty_out(vty, "Incorrect USSD handler%s", VTY_NEWLINE); + return CMD_WARNING; + } + + return CMD_SUCCESS; +} + +static int config_write_ussd(struct vty *vty) +{ + vty_out(vty, "ussd%s", VTY_NEWLINE); + + vty_out(vty, " handler "); + switch (gsmnet->ussd.handler) { + case USSD_HANDLER_NONE: + vty_out(vty, "none%s", VTY_NEWLINE); + break; + case USSD_HANDLER_LOCAL: + vty_out(vty, "local%s", VTY_NEWLINE); + break; + } + + return CMD_SUCCESS; +} + void msc_vty_init(struct gsm_network *msc_network) { OSMO_ASSERT(gsmnet == NULL); @@ -1461,4 +1517,8 @@ install_node(&hlr_node, config_write_hlr); install_element(HLR_NODE, &cfg_hlr_remote_ip_cmd); install_element(HLR_NODE, &cfg_hlr_remote_port_cmd); + + install_element(CONFIG_NODE, &cfg_ussd_cmd); + install_node(&ussd_node, config_write_ussd); + install_element(USSD_NODE, &cfg_ussd_handler_cmd); } diff --git a/src/libmsc/ussd.c b/src/libmsc/ussd.c index e7f7e5d..4396f97 100644 --- a/src/libmsc/ussd.c +++ b/src/libmsc/ussd.c @@ -34,7 +34,11 @@ #include #include #include +#include #include + +static int (*ussd_handler)(struct gsm_subscriber_connection *conn, + const struct ss_request *req) = NULL; /* Declarations of USSD strings to be recognised */ const char USSD_TEXT_OWN_NUMBER[] = "*#100#"; @@ -52,6 +56,43 @@ /* Need trailing CR as EOT character */ snprintf(response_string, sizeof(response_string), "Your extension is %s\r", own_number); return gsm0480_send_ussd_response(conn, response_string, req); +} + +static int ussd_handler_local(struct gsm_subscriber_connection *conn, + const struct ss_request *req) +{ + int rc; + + /* Interrogation or releaseComplete? */ + if (req->ussd_text[0] == '\0' || req->ussd_text[0] == 0xFF) { + if (req->ss_code > 0) { + /* Assume interrogateSS or modification of it and reject */ + rc = gsm0480_send_ussd_reject(conn, req); + return rc; + } + /* Still assuming a Release-Complete and returning */ + return 0; + } + + msc_subscr_conn_communicating(conn); + if (!strcmp(USSD_TEXT_OWN_NUMBER, (const char *)req->ussd_text)) { + DEBUGP(DMM, "USSD: Own number requested\n"); + rc = send_own_number(conn, req); + } else { + DEBUGP(DMM, "Unhandled USSD %s\n", req->ussd_text); + rc = gsm0480_send_ussd_reject(conn, req); + } + + return rc; +} + +static int ussd_handler_dummy(struct gsm_subscriber_connection *conn, + const struct ss_request *req) +{ + DEBUGP(DMM, "USSD support disabled, rejecting request\n"); + + /* FIXME: use a proper problem code */ + return gsm0480_send_ussd_reject(conn, req); } /* Entrypoint - handler function common to all mobile-originated USSDs */ @@ -77,25 +118,31 @@ return rc; } - /* Interrogation or releaseComplete? */ - if (req.ussd_text[0] == '\0' || req.ussd_text[0] == 0xFF) { - if (req.ss_code > 0) { - /* Assume interrogateSS or modification of it and reject */ - rc = gsm0480_send_ussd_reject(conn, &req); - return rc; - } - /* Still assuming a Release-Complete and returning */ - return 0; + OSMO_ASSERT(ussd_handler); + return ussd_handler(conn, &req); +} + +int ussd_init(struct gsm_network *net) +{ + /* Choose USSD connection handler */ + switch (net->ussd.handler) { + case USSD_HANDLER_LOCAL: + ussd_handler = ussd_handler_local; + break; + case USSD_HANDLER_NONE: + default: + ussd_handler = ussd_handler_dummy; + break; } - msc_subscr_conn_communicating(conn); - if (!strcmp(USSD_TEXT_OWN_NUMBER, (const char *)req.ussd_text)) { - DEBUGP(DMM, "USSD: Own number requested\n"); - rc = send_own_number(conn, &req); - } else { - DEBUGP(DMM, "Unhandled USSD %s\n", req.ussd_text); - rc = gsm0480_send_ussd_reject(conn, &req); - } + return 0; +} - return rc; +void ussd_shutdown(struct gsm_network *net) +{ + /** + * Do nothing for now + * TODO: close connection with external USSD gateway + * TODO: close all active USSD connections + */ } diff --git a/src/osmo-msc/msc_main.c b/src/osmo-msc/msc_main.c index 85a8fe1..d1f731f 100644 --- a/src/osmo-msc/msc_main.c +++ b/src/osmo-msc/msc_main.c @@ -55,6 +55,7 @@ #include #include #include +#include #include #include #include @@ -215,12 +216,22 @@ mgcp_client_conf_init(&net->mgw.conf); + /* USSD: let's keep *#100# available by default */ + net->ussd.handler = USSD_HANDLER_LOCAL; + return net; } void msc_network_shutdown(struct gsm_network *net) { - /* nothing here yet */ + /** + * Prevent NULL pointer dereference, + * e.g. when called before initialization... + */ + OSMO_ASSERT(net); + + /* Shutdown USSD */ + ussd_shutdown(net); } static struct gsm_network *msc_network = NULL; @@ -620,6 +631,13 @@ return -1; } + /* Initialize USSD */ + rc = ussd_init(msc_network); + if (rc) { + printf("Failed to initialize USSD.\n"); + return -1; + } + /* seed the PRNG */ srand(time(NULL)); /* TODO: is this used for crypto?? Improve randomness, at least we diff --git a/tests/msc_vlr/msc_vlr_tests.c b/tests/msc_vlr/msc_vlr_tests.c index 7c54057..828963c 100644 --- a/tests/msc_vlr/msc_vlr_tests.c +++ b/tests/msc_vlr/msc_vlr_tests.c @@ -926,6 +926,9 @@ net->vlr->ops.tx_auth_rej = fake_vlr_tx_auth_rej; net->vlr->ops.set_ciph_mode = fake_vlr_tx_ciph_mode_cmd; + /* USSD: let's keep *#100# available by default */ + net->ussd.handler = USSD_HANDLER_LOCAL; + return net; } @@ -954,6 +957,8 @@ msc_subscr_conn_init(); + ussd_init(net); + clear_vlr(); if (optind >= argc) -- To view, visit https://gerrit.osmocom.org/7677 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I0b3c5ccea4054113e8e23109b1ab68d9f0e18497 Gerrit-PatchSet: 1 Gerrit-Project: osmo-msc Gerrit-Branch: master Gerrit-Owner: Vadim Yanitskiy From gerrit-no-reply at lists.osmocom.org Sun Apr 8 22:55:49 2018 From: gerrit-no-reply at lists.osmocom.org (Vadim Yanitskiy) Date: Sun, 8 Apr 2018 22:55:49 +0000 Subject: libosmocore[master]: GSUP: add USSD messages support according to 3GPP TS 09.02 In-Reply-To: References: Message-ID: Patch Set 3: Code-Review-1 Verified-1 Still WIP... -- To view, visit https://gerrit.osmocom.org/7600 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Ie17a78043a35fffbdd59e80fd2b2da39cce5e532 Gerrit-PatchSet: 3 Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Owner: Vadim Yanitskiy Gerrit-Reviewer: Alexander Chemeris Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Vadim Yanitskiy Gerrit-HasComments: No From jenkins at lists.osmocom.org Sun Apr 8 23:20:13 2018 From: jenkins at lists.osmocom.org (jenkins at lists.osmocom.org) Date: Sun, 8 Apr 2018 23:20:13 +0000 (UTC) Subject: =?UTF-8?Q?Build_failed_in_Jenkins:_master-osmo-bts_=C2=BB_sysmo, sup?= =?UTF-8?Q?erfemto=5Fv3.0.1pre,default,osmocom-master-debian9_#478?= Message-ID: <808886779.156.1523229613876.JavaMail.jenkins@jenkins.osmocom.org> See ------------------------------------------ Started by upstream project "master-osmo-bts" build number 478 originally caused by: Started by timer Building remotely on build2-deb9build-ansible (ttcn3 osmo-gsm-tester-build osmocom-gerrit-debian9 osmocom-master-debian9 coverity) in workspace > git rev-parse --is-inside-work-tree # timeout=10 Fetching changes from the remote Git repository > git config remote.origin.url git://git.osmocom.org/osmo-bts # timeout=10 Fetching upstream changes from git://git.osmocom.org/osmo-bts > git --version # timeout=10 > git fetch --tags --progress git://git.osmocom.org/osmo-bts +refs/heads/*:refs/remotes/origin/* Checking out Revision e5518b07d6fc3375a9e4004a2ed2680dbb2d178e (refs/remotes/origin/master) > git config core.sparsecheckout # timeout=10 > git checkout -f e5518b07d6fc3375a9e4004a2ed2680dbb2d178e Commit message: "contrib: jenkins_bts_model: Fix bashism expr" > git rev-list --no-walk e5518b07d6fc3375a9e4004a2ed2680dbb2d178e # timeout=10 [osmocom-master-debian9] $ /bin/sh -xe /tmp/jenkins4199144292182729448.sh + ./contrib/jenkins_bts_model.sh sysmo + ./contrib/jenkins_sysmobts.sh + base= + deps= + inst= + export deps inst + osmo-clean-workspace.sh + chmod -R +w . + git checkout -f HEAD + git clean -dxf -e -e layer1-headers Skipping repository deps/libosmocore + [ -d ] + git -C checkout -f HEAD error: pathspec 'HEAD' did not match any file(s) known to git. Build step 'Execute shell' marked build as failure [WARNINGS]Skipping publisher since build result is FAILURE From jenkins at lists.osmocom.org Sun Apr 8 23:57:53 2018 From: jenkins at lists.osmocom.org (jenkins at lists.osmocom.org) Date: Sun, 8 Apr 2018 23:57:53 +0000 (UTC) Subject: =?UTF-8?Q?Build_failed_in_Jenkins:_master-osmo-gmr_=C2=BB_a1=3Ddefau?= =?UTF-8?Q?lt,a2=3Ddefault,a3=3Ddefault,osmocom-master-debian9_#344?= Message-ID: <26948684.158.1523231873871.JavaMail.jenkins@jenkins.osmocom.org> See ------------------------------------------ Started by upstream project "master-osmo-gmr" build number 344 originally caused by: Started by upstream project "master-libosmocore" build number 196 originally caused by: Started by timer Building remotely on build2-deb9build-ansible (ttcn3 osmo-gsm-tester-build osmocom-gerrit-debian9 osmocom-master-debian9 coverity) in workspace > git rev-parse --is-inside-work-tree # timeout=10 Fetching changes from the remote Git repository > git config remote.origin.url git://git.osmocom.org/osmo-gmr # timeout=10 Fetching upstream changes from git://git.osmocom.org/osmo-gmr > git --version # timeout=10 > git fetch --tags --progress git://git.osmocom.org/osmo-gmr +refs/heads/*:refs/remotes/origin/* Checking out Revision adb8cc6aa9453dfc339de53ae641067136a031ec (refs/remotes/origin/master) > git config core.sparsecheckout # timeout=10 > git checkout -f adb8cc6aa9453dfc339de53ae641067136a031ec Commit message: "Add contrib/jenkins.sh script, like other osmo-* repositories" > git rev-list --no-walk adb8cc6aa9453dfc339de53ae641067136a031ec # timeout=10 [osmocom-master-debian9] $ /bin/sh -xe /tmp/jenkins5768576114341785483.sh + ./contrib/jenkins.sh + base= + deps= + inst= + export deps inst + osmo-clean-workspace.sh + chmod -R +w . + git checkout -f HEAD + git clean -dxf -e -e layer1-headers Skipping repository deps/libosmocore + [ -d ] + git -C checkout -f HEAD error: pathspec 'HEAD' did not match any file(s) known to git. Build step 'Execute shell' marked build as failure [WARNINGS]Skipping publisher since build result is FAILURE From jenkins at lists.osmocom.org Mon Apr 9 00:04:52 2018 From: jenkins at lists.osmocom.org (jenkins at lists.osmocom.org) Date: Mon, 9 Apr 2018 00:04:52 +0000 (UTC) Subject: =?UTF-8?Q?Jenkins_build_is_back_to_normal_:_master-osmo-bts_=C2=BB_sysmo?= =?UTF-8?Q?,superfemto=5Fv3.0.1pre,default,osmocom-master-debian9_#479?= In-Reply-To: <808886779.156.1523229613876.JavaMail.jenkins@jenkins.osmocom.org> References: <808886779.156.1523229613876.JavaMail.jenkins@jenkins.osmocom.org> Message-ID: <229326766.159.1523232292670.JavaMail.jenkins@jenkins.osmocom.org> See From gerrit-no-reply at lists.osmocom.org Mon Apr 9 00:51:09 2018 From: gerrit-no-reply at lists.osmocom.org (Neels Hofmeyr) Date: Mon, 9 Apr 2018 00:51:09 +0000 Subject: [PATCH] libosmocore[master]: fsm: id: properly set name in case of NULL id In-Reply-To: References: Message-ID: Hello Harald Welte, Jenkins Builder, I'd like you to reexamine a change. Please visit https://gerrit.osmocom.org/7627 to look at the new patch set (#2). fsm: id: properly set name in case of NULL id Since alloc relies on osmo_fsm_inst_update_id() to set the name, never skip that. In osmo_fsm_inst_alloc(), we allow passing a NULL id, and in osmo_fsm_inst_update_id(), we set the name without id if id is NULL. Change-Id: I6d6b09a811b82770818f19b189a57d9fc4a8133b --- M src/fsm.c M tests/fsm/fsm_test.c M tests/fsm/fsm_test.err 3 files changed, 4 insertions(+), 19 deletions(-) git pull ssh://gerrit.osmocom.org:29418/libosmocore refs/changes/27/7627/2 diff --git a/src/fsm.c b/src/fsm.c index 88de011..9bbf870 100644 --- a/src/fsm.c +++ b/src/fsm.c @@ -263,11 +263,9 @@ fi->log_level = log_level; osmo_timer_setup(&fi->timer, fsm_tmr_cb, fi); - if (id) { - if (osmo_fsm_inst_update_id(fi, id) < 0) { - talloc_free(fi); - return NULL; - } + if (osmo_fsm_inst_update_id(fi, id) < 0) { + talloc_free(fi); + return NULL; } INIT_LLIST_HEAD(&fi->proc.children); diff --git a/tests/fsm/fsm_test.c b/tests/fsm/fsm_test.c index 0f29a2e..859b78d 100644 --- a/tests/fsm/fsm_test.c +++ b/tests/fsm/fsm_test.c @@ -221,20 +221,7 @@ /* allocate FSM instance without id, there should be a name without id */ fi = osmo_fsm_inst_alloc(&fsm, g_ctx, NULL, LOGL_DEBUG, NULL); OSMO_ASSERT(fi); - /* CURRENT BUG: here I want to just do assert_name("Test_FSM"); - * but when allocated with a NULL id, the fsm's name remains unset. Hence: */ - { - const char *expected_name = "Test_FSM"; - const char *name = osmo_fsm_inst_name(fi); - fprintf(stderr, " osmo_fsm_inst_name() == %s\n", osmo_quote_str(name, -1)); - if (safe_strcmp(name, expected_name)) { - fprintf(stderr, " ERROR: expected %s\n", osmo_quote_str(expected_name, -1)); - OSMO_ASSERT(false); - } - OSMO_ASSERT(osmo_fsm_inst_find_by_name(&fsm, "Test_FSM") == NULL); /* <- ERROR */ - fprintf(stderr, " osmo_fsm_inst_find_by_name(%s) == NULL\n", osmo_quote_str(expected_name, -1)); - } change_id("my_id"); change_id("another_id"); diff --git a/tests/fsm/fsm_test.err b/tests/fsm/fsm_test.err index bc159bd..c4ee46f 100644 --- a/tests/fsm/fsm_test.err +++ b/tests/fsm/fsm_test.err @@ -13,7 +13,7 @@ --- test_id_api() Test_FSM{NULL}: Allocated  osmo_fsm_inst_name() == "Test_FSM" - osmo_fsm_inst_find_by_name("Test_FSM") == NULL + osmo_fsm_inst_find_by_name("Test_FSM") == fi osmo_fsm_inst_update_id("my_id") rc == 0, ok osmo_fsm_inst_name() == "Test_FSM(my_id)" -- To view, visit https://gerrit.osmocom.org/7627 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newpatchset Gerrit-Change-Id: I6d6b09a811b82770818f19b189a57d9fc4a8133b Gerrit-PatchSet: 2 Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Neels Hofmeyr From gerrit-no-reply at lists.osmocom.org Mon Apr 9 00:51:09 2018 From: gerrit-no-reply at lists.osmocom.org (Neels Hofmeyr) Date: Mon, 9 Apr 2018 00:51:09 +0000 Subject: [PATCH] libosmocore[master]: add osmo_fsm_inst_update_id_f() In-Reply-To: References: Message-ID: Hello Jenkins Builder, I'd like you to reexamine a change. Please visit https://gerrit.osmocom.org/7629 to look at the new patch set (#2). add osmo_fsm_inst_update_id_f() In the osmo-msc, I would like to set the subscr conn FSM identifier by a string format, to include the type of Complete Layer 3 that is taking place. I could each time talloc a string and free it again. This API is more convenient. >From osmo_fsm_inst_update_id(), call osmo_fsm_inst_update_id_f() with "%s" (or pass NULL). Put the name updating into separate static update_name() function to clarify. Adjust the error message for erratic ID: don't say "allocate", it might be from an update. Adjust test expectation. Change-Id: I76743a7642f2449fd33350691ac8ebbf4400371d --- M include/osmocom/core/fsm.h M src/fsm.c M tests/fsm/fsm_test.c M tests/fsm/fsm_test.err 4 files changed, 97 insertions(+), 22 deletions(-) git pull ssh://gerrit.osmocom.org:29418/libosmocore refs/changes/29/7629/2 diff --git a/include/osmocom/core/fsm.h b/include/osmocom/core/fsm.h index 2c2a996..174396a 100644 --- a/include/osmocom/core/fsm.h +++ b/include/osmocom/core/fsm.h @@ -159,6 +159,7 @@ void osmo_fsm_inst_free(struct osmo_fsm_inst *fi); int osmo_fsm_inst_update_id(struct osmo_fsm_inst *fi, const char *id); +int osmo_fsm_inst_update_id_f(struct osmo_fsm_inst *fi, const char *fmt, ...); const char *osmo_fsm_event_name(struct osmo_fsm *fsm, uint32_t event); const char *osmo_fsm_inst_name(struct osmo_fsm_inst *fi); diff --git a/src/fsm.c b/src/fsm.c index 0fdc564..ae2fdc2 100644 --- a/src/fsm.c +++ b/src/fsm.c @@ -211,38 +211,61 @@ */ int osmo_fsm_inst_update_id(struct osmo_fsm_inst *fi, const char *id) { - if (id) { + if (!id) + return osmo_fsm_inst_update_id_f(fi, NULL); + else + return osmo_fsm_inst_update_id_f(fi, "%s", id); +} + +static void update_name(struct osmo_fsm_inst *fi) +{ + if (fi->name) + talloc_free((char*)fi->name); + + if (!fsm_log_addr) { + if (fi->id) + fi->name = talloc_asprintf(fi, "%s(%s)", fi->fsm->name, fi->id); + else + fi->name = talloc_asprintf(fi, "%s", fi->fsm->name); + } else { + if (fi->id) + fi->name = talloc_asprintf(fi, "%s(%s)[%p]", fi->fsm->name, fi->id, fi); + else + fi->name = talloc_asprintf(fi, "%s[%p]", fi->fsm->name, fi); + } +} + +/*! Change id of the FSM instance using a string format. + * \param[in] fi FSM instance. + * \param[in] fmt format string to compose new ID. + * \param[in] ... variable argument list for format string. + * \returns 0 if the ID was updated, otherwise -EINVAL. + */ +int osmo_fsm_inst_update_id_f(struct osmo_fsm_inst *fi, const char *fmt, ...) +{ + char *id = NULL; + + if (fmt) { + va_list ap; + + va_start(ap, fmt); + id = talloc_vasprintf(fi, fmt, ap); + va_end(ap); + if (!osmo_identifier_valid(id)) { LOGP(DLGLOBAL, LOGL_ERROR, "Attempting to set illegal id for FSM instance of type '%s': %s\n", fi->fsm->name, osmo_quote_str(id, -1)); + talloc_free(id); return -EINVAL; } - osmo_talloc_replace_string(fi, (char **)&fi->id, id); - - if (fi->name) - talloc_free((void*)fi->name); - - if (!fsm_log_addr) { - fi->name = talloc_asprintf(fi, "%s(%s)", fi->fsm->name, id); - } else { - fi->name = talloc_asprintf(fi, "%s(%s)[%p]", fi->fsm->name, id, fi); - } - - return 0; } if (fi->id) - talloc_free((void*)fi->id); - fi->id = NULL; - if (fi->name) - talloc_free((void*)fi->name); + talloc_free((char*)fi->id); + fi->id = id; - if (!fsm_log_addr) { - fi->name = talloc_asprintf(fi, "%s", fi->fsm->name); - } else { - fi->name = talloc_asprintf(fi, "%s[%p]", fi->fsm->name, fi); - } + update_name(fi); return 0; } diff --git a/tests/fsm/fsm_test.c b/tests/fsm/fsm_test.c index 859b78d..e34164c 100644 --- a/tests/fsm/fsm_test.c +++ b/tests/fsm/fsm_test.c @@ -237,6 +237,30 @@ test_id("invalid.id", -EINVAL, "(arbitrary_id)"); + fprintf(stderr, "--- id format tests...\n"); +/* Update the id, assert the proper rc, and expect a resulting fsm inst name + lookup */ +#define test_id_f(expect_rc, expect_name_suffix, new_id_fmt, args...) do { \ + int rc; \ + fprintf(stderr, "osmo_fsm_inst_update_id_f(%s, " #args ")\n", \ + osmo_quote_str(new_id_fmt, -1)); \ + rc = osmo_fsm_inst_update_id_f(fi, new_id_fmt, ## args); \ + fprintf(stderr, " rc == %d", rc); \ + if (rc == (expect_rc)) \ + fprintf(stderr, ", ok\n"); \ + else { \ + fprintf(stderr, ", ERROR: expected rc == %d\n", expect_rc); \ + OSMO_ASSERT(rc == expect_rc); \ + } \ + assert_name("Test_FSM" expect_name_suffix); \ + }while (0) + + test_id_f(-EINVAL, "(arbitrary_id)", "format%cid", '.'); + test_id_f(-EINVAL, "(arbitrary_id)", "%s", ""); + test_id_f(0, "(format23id42)", "format%xid%d", 0x23, 42); + test_id_f(0, "", NULL); + test_id_f(0, "", NULL); + test_id_f(0, "(arbitrary_id)", "%s%c%s", "arbitrary", '_', "id"); + fprintf(stderr, "\n--- %s() done\n\n", __func__); osmo_fsm_inst_term(fi, OSMO_FSM_TERM_REQUEST, NULL); diff --git a/tests/fsm/fsm_test.err b/tests/fsm/fsm_test.err index 3e01d48..3237def 100644 --- a/tests/fsm/fsm_test.err +++ b/tests/fsm/fsm_test.err @@ -47,6 +47,33 @@  rc == -22, ok osmo_fsm_inst_name() == "Test_FSM(arbitrary_id)" osmo_fsm_inst_find_by_name("Test_FSM(arbitrary_id)") == fi +--- id format tests... +osmo_fsm_inst_update_id_f("format%cid", '.') +Attempting to set illegal id for FSM instance of type 'Test_FSM': "format.id" + rc == -22, ok + osmo_fsm_inst_name() == "Test_FSM(arbitrary_id)" + osmo_fsm_inst_find_by_name("Test_FSM(arbitrary_id)") == fi +osmo_fsm_inst_update_id_f("%s", "") +Attempting to set illegal id for FSM instance of type 'Test_FSM': "" + rc == -22, ok + osmo_fsm_inst_name() == "Test_FSM(arbitrary_id)" + osmo_fsm_inst_find_by_name("Test_FSM(arbitrary_id)") == fi +osmo_fsm_inst_update_id_f("format%xid%d", 0x23, 42) + rc == 0, ok + osmo_fsm_inst_name() == "Test_FSM(format23id42)" + osmo_fsm_inst_find_by_name("Test_FSM(format23id42)") == fi +osmo_fsm_inst_update_id_f(NULL, ) + rc == 0, ok + osmo_fsm_inst_name() == "Test_FSM" + osmo_fsm_inst_find_by_name("Test_FSM") == fi +osmo_fsm_inst_update_id_f(NULL, ) + rc == 0, ok + osmo_fsm_inst_name() == "Test_FSM" + osmo_fsm_inst_find_by_name("Test_FSM") == fi +osmo_fsm_inst_update_id_f("%s%c%s", "arbitrary", '_', "id") + rc == 0, ok + osmo_fsm_inst_name() == "Test_FSM(arbitrary_id)" + osmo_fsm_inst_find_by_name("Test_FSM(arbitrary_id)") == fi --- test_id_api() done -- To view, visit https://gerrit.osmocom.org/7629 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newpatchset Gerrit-Change-Id: I76743a7642f2449fd33350691ac8ebbf4400371d Gerrit-PatchSet: 2 Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Neels Hofmeyr From gerrit-no-reply at lists.osmocom.org Mon Apr 9 00:51:10 2018 From: gerrit-no-reply at lists.osmocom.org (Neels Hofmeyr) Date: Mon, 9 Apr 2018 00:51:10 +0000 Subject: [PATCH] libosmocore[master]: add osmo_quote_str(), osmo_quote_str_buf() and test Message-ID: Review at https://gerrit.osmocom.org/7678 add osmo_quote_str(),osmo_quote_str_buf() and test Rationale: with osmo_escape_str(), you get the escaped contents of the string, but not so graceful handling of NULL strings. The caller needs to quote it, and for NULL strings not quote it. osmo_quote_str() is like osmo_escape_str() but always quotes a non-NULL string, and for a NULL string returns a literal NULL, i.e. it should (tm) give the exact C representation of a string. That's useful in testing, to show exactly what char* situation we have, without jumping through hoops like if (str) printf("\"%s\"", osmo_escape_str(str, -1)); else printf("NULL"); Copy the unit test for osmo_escape_str() and adjust. To indicate that the double quotes are returned by osmo_quote_str(), use single quotes in the test printf()s. I considered allowing to pick the quoting characters by further arguments, but that complicates things: we'd need to escape the quoting characters. Just hardcode double quotes like C. Change-Id: I6f1b3709b32c23fc52f70ad9ecc9439c62b02a12 --- M include/osmocom/core/utils.h M src/utils.c M tests/utils/utils_test.c M tests/utils/utils_test.ok 4 files changed, 128 insertions(+), 0 deletions(-) git pull ssh://gerrit.osmocom.org:29418/libosmocore refs/changes/78/7678/1 diff --git a/include/osmocom/core/utils.h b/include/osmocom/core/utils.h index f1e011f..8928f68 100644 --- a/include/osmocom/core/utils.h +++ b/include/osmocom/core/utils.h @@ -125,5 +125,7 @@ const char *osmo_escape_str(const char *str, int len); const char *osmo_escape_str_buf(const char *str, int in_len, char *buf, size_t bufsize); +const char *osmo_quote_str(const char *str, int in_len); +const char *osmo_quote_str_buf(const char *str, int in_len, char *buf, size_t bufsize); /*! @} */ diff --git a/src/utils.c b/src/utils.c index 109aac0..6b3e025 100644 --- a/src/utils.c +++ b/src/utils.c @@ -554,4 +554,42 @@ return osmo_escape_str_buf(str, in_len, namebuf, sizeof(namebuf)); } +/*! Like osmo_escape_str(), but returns double-quotes around a string, or "NULL" for a NULL string. + * This allows passing any char* value and get its C representation as string. + * \param[in] str A string that may contain any characters. + * \param[in] len Pass -1 to print until nul char, or >= 0 to force a length. + * \returns buf containing an escaped representation, possibly truncated, or str itself. + */ +const char *osmo_quote_str_buf(const char *str, int in_len, char *buf, size_t bufsize) +{ + const char *res; + int l; + if (!str) + return "NULL"; + if (bufsize < 3) + return ""; + buf[0] = '"'; + res = osmo_escape_str_buf(str, in_len, buf + 1, bufsize - 2); + /* if osmo_escape_str_buf() returned the str itself, we need to copy it to buf to be able to + * quote it. */ + if (res == str) { + /* max_len = bufsize - two quotes - nul term */ + int max_len = bufsize - 2 - 1; + if (in_len >= 0) + max_len = OSMO_MIN(in_len, max_len); + /* It is not allowed to pass unterminated strings into osmo_strlcpy() :/ */ + strncpy(buf + 1, str, max_len); + buf[1 + max_len] = '\0'; + } + l = strlen(buf); + buf[l] = '"'; + buf[l+1] = '\0'; /* both osmo_escape_str_buf() and osmo_strlcpy() ensure room for '\0' */ + return buf; +} + +const char *osmo_quote_str(const char *str, int in_len) +{ + return osmo_quote_str_buf(str, in_len, namebuf, sizeof(namebuf)); +} + /*! @} */ diff --git a/tests/utils/utils_test.c b/tests/utils/utils_test.c index f358e9a..a124352 100644 --- a/tests/utils/utils_test.c +++ b/tests/utils/utils_test.c @@ -371,6 +371,60 @@ OSMO_ASSERT(out_buf[0] == 0x7f); } +static void str_quote_test(void) +{ + int i; + int j; + uint8_t in_buf[32]; + char out_buf[11]; + const char *printable = "printable"; + const char *res; + + printf("\nTesting string quoting\n"); + printf("- all chars from 0 to 255 in batches of 16:\n"); + in_buf[16] = '\0'; + for (j = 0; j < 16; j++) { + for (i = 0; i < 16; i++) + in_buf[i] = (j << 4) | i; + printf("'%s'\n", osmo_quote_str((const char*)in_buf, 16)); + } + + printf("- nul terminated:\n"); + printf("'%s'\n", osmo_quote_str("termi\nated", -1)); + + printf("- never passthru:\n"); + res = osmo_quote_str(printable, -1); + if (res != printable) + printf("NOT passed through. '%s'\n", res); + else + printf("passed through unchanged '%s'\n", res); + + printf("- zero length:\n"); + printf("'%s'\n", osmo_quote_str("omitted", 0)); + + printf("- truncation when too long:\n"); + memset(in_buf, 'x', sizeof(in_buf)); + in_buf[0] = '\a'; + in_buf[5] = 'E'; + memset(out_buf, 0x7f, sizeof(out_buf)); + printf("'%s'\n", osmo_quote_str_buf((const char *)in_buf, sizeof(in_buf), out_buf, 10)); + OSMO_ASSERT(out_buf[10] == 0x7f); + + printf("- always truncation, even when no escaping needed:\n"); + memset(in_buf, 'x', sizeof(in_buf)); + in_buf[6] = 'E'; /* dst has 10, less 2 quotes and nul, leaves 7, i.e. in[6] is last */ + in_buf[20] = '\0'; + memset(out_buf, 0x7f, sizeof(out_buf)); + printf("'%s'\n", osmo_quote_str_buf((const char *)in_buf, -1, out_buf, 10)); + OSMO_ASSERT(out_buf[0] == '"'); + + printf("- try to feed too little buf for quoting:\n"); + printf("'%s'\n", osmo_quote_str_buf("", -1, out_buf, 2)); + + printf("- NULL string becomes a \"NULL\" literal:\n"); + printf("'%s'\n", osmo_quote_str_buf(NULL, -1, out_buf, 10)); +} + int main(int argc, char **argv) { static const struct log_info log_info = {}; @@ -382,5 +436,6 @@ test_is_hexstr(); bcd_test(); str_escape_test(); + str_quote_test(); return 0; } diff --git a/tests/utils/utils_test.ok b/tests/utils/utils_test.ok index fb1d62e..5bc3896 100644 --- a/tests/utils/utils_test.ok +++ b/tests/utils/utils_test.ok @@ -104,3 +104,36 @@ "\axxxxxxE" - passthrough without truncation when no escaping needed: "xxxxxxxxxxxxxxxxxxxE" + +Testing string quoting +- all chars from 0 to 255 in batches of 16: +'"\0\1\2\3\4\5\6\a\b\t\n\v\f\r\14\15"' +'"\16\17\18\19\20\21\22\23\24\25\26\27\28\29\30\31"' +'" !\"#$%&'()*+,-./"' +'"0123456789:;<=>?"' +'"@ABCDEFGHIJKLMNO"' +'"PQRSTUVWXYZ[\\]^_"' +'"`abcdefghijklmno"' +'"pqrstuvwxyz{|}~\127"' +'"\128\129\130\131\132\133\134\135\136\137\138\139\140\141\142\143"' +'"\144\145\146\147\148\149\150\151\152\153\154\155\156\157\158\159"' +'"\160\161\162\163\164\165\166\167\168\169\170\171\172\173\174\175"' +'"\176\177\178\179\180\181\182\183\184\185\186\187\188\189\190\191"' +'"\192\193\194\195\196\197\198\199\200\201\202\203\204\205\206\207"' +'"\208\209\210\211\212\213\214\215\216\217\218\219\220\221\222\223"' +'"\224\225\226\227\228\229\230\231\232\233\234\235\236\237\238\239"' +'"\240\241\242\243\244\245\246\247\248\249\250\251\252\253\254\255"' +- nul terminated: +'"termi\nated"' +- never passthru: +NOT passed through. '"printable"' +- zero length: +'""' +- truncation when too long: +'"\axxxxE"' +- always truncation, even when no escaping needed: +'"xxxxxxE"' +- try to feed too little buf for quoting: +'' +- NULL string becomes a "NULL" literal: +'NULL' -- To view, visit https://gerrit.osmocom.org/7678 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I6f1b3709b32c23fc52f70ad9ecc9439c62b02a12 Gerrit-PatchSet: 1 Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr From gerrit-no-reply at lists.osmocom.org Mon Apr 9 00:51:11 2018 From: gerrit-no-reply at lists.osmocom.org (Neels Hofmeyr) Date: Mon, 9 Apr 2018 00:51:11 +0000 Subject: [PATCH] libosmocore[master]: fsm_test: terminate the main loop instead of exit on timeout Message-ID: Review at https://gerrit.osmocom.org/7679 fsm_test: terminate the main loop instead of exit on timeout In fsm_test.c, we have FSM instance cleanup after the select main loop, but we exit(0) in the timer cb; hence the final code is never called. Rather clean up the instance and hence also test that, by using a global flag to exit the main loop upon timeout. Adjust expected stderr output. BTW, in a subsequent commit, I want to move the fsm instance id testing to below the main loop, to more clearly group the tested bits. Change-Id: Ia47811ffcc1bd68d2630c86be7ab98fc1f338773 --- M tests/fsm/fsm_test.c M tests/fsm/fsm_test.err 2 files changed, 7 insertions(+), 2 deletions(-) git pull ssh://gerrit.osmocom.org:29418/libosmocore refs/changes/79/7679/1 diff --git a/tests/fsm/fsm_test.c b/tests/fsm/fsm_test.c index d7b08ae..ef7bfe3 100644 --- a/tests/fsm/fsm_test.c +++ b/tests/fsm/fsm_test.c @@ -60,13 +60,17 @@ } } +static bool main_loop_run = true; + static int test_fsm_tmr_cb(struct osmo_fsm_inst *fi) { OSMO_ASSERT(fi->T == 2342); OSMO_ASSERT(fi->state == ST_TWO); LOGP(DMAIN, LOGL_INFO, "Timer\n"); - exit(0); + main_loop_run = false; + + return 0; } static struct osmo_fsm_state test_fsm_states[] = { @@ -201,7 +205,7 @@ OSMO_ASSERT(osmo_fsm_inst_find_by_name(&fsm, "Test_FSM(another_id)") == finst); OSMO_ASSERT(osmo_fsm_inst_update_id(finst, "my_id") == 0); - while (1) { + while (main_loop_run) { osmo_select_main(0); } osmo_fsm_inst_free(finst); diff --git a/tests/fsm/fsm_test.err b/tests/fsm/fsm_test.err index 153963f..facc9f7 100644 --- a/tests/fsm/fsm_test.err +++ b/tests/fsm/fsm_test.err @@ -8,4 +8,5 @@ Test_FSM(my_id){ONE}: state_chg to TWO Test_FSM(my_id){TWO}: Timeout of T2342 Timer +Test_FSM(my_id){TWO}: Deallocated  \ No newline at end of file -- To view, visit https://gerrit.osmocom.org/7679 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Ia47811ffcc1bd68d2630c86be7ab98fc1f338773 Gerrit-PatchSet: 1 Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr From gerrit-no-reply at lists.osmocom.org Mon Apr 9 00:51:11 2018 From: gerrit-no-reply at lists.osmocom.org (Neels Hofmeyr) Date: Mon, 9 Apr 2018 00:51:11 +0000 Subject: [PATCH] libosmocore[master]: osmo_fsm_inst_find_by_name(): guard against strcmp(NULL) Message-ID: Review at https://gerrit.osmocom.org/7680 osmo_fsm_inst_find_by_name(): guard against strcmp(NULL) strcmp() *must not* be passed NULL pointers, or we hit: ../../../src/libosmocore/src/fsm.c:123:8: runtime error: null pointer passed as argument 2, which is declared to never be null ASAN:DEADLYSIGNAL (Or, alternatively, a segfault.) If any of the search string or an FSM instance's name string should be NULL, simply never match. Technically, an FSM should never have a NULL name, but a current bug actually allows this (pass NULL id to alloc), which will be addressed by an upcoming patch. To test for it, we need to first make sure this here doesn't segfault. Change-Id: I2e5f82c06d1a4727bd93e955366e3b62b2df1b32 --- M src/fsm.c 1 file changed, 5 insertions(+), 0 deletions(-) git pull ssh://gerrit.osmocom.org:29418/libosmocore refs/changes/80/7680/1 diff --git a/src/fsm.c b/src/fsm.c index c5256da..88de011 100644 --- a/src/fsm.c +++ b/src/fsm.c @@ -119,7 +119,12 @@ { struct osmo_fsm_inst *fi; + if (!name) + return NULL; + llist_for_each_entry(fi, &fsm->instances, list) { + if (!fi->name) + continue; if (!strcmp(name, fi->name)) return fi; } -- To view, visit https://gerrit.osmocom.org/7680 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I2e5f82c06d1a4727bd93e955366e3b62b2df1b32 Gerrit-PatchSet: 1 Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr From gerrit-no-reply at lists.osmocom.org Mon Apr 9 00:51:11 2018 From: gerrit-no-reply at lists.osmocom.org (Neels Hofmeyr) Date: Mon, 9 Apr 2018 00:51:11 +0000 Subject: [PATCH] libosmocore[master]: fsm_test: more thoroughly test FSM inst ids and names Message-ID: Review at https://gerrit.osmocom.org/7681 fsm_test: more thoroughly test FSM inst ids and names Place id and name testing in its separate section, test_id_api(). Add a test that actually allocates an FSM instance with a NULL id, which is allowed, but uncovers a bug of an unset FSM instance name. osmo_fsm_inst_name() falls back to the fsm struct's name on NULL, but osmo_fsm_inst_find_by_name() fails to match if the instance's name is NULL (and until recently even crashed). Show this in fsm_test.c with loud comments. Add test to clear the id by passing NULL. Add test for setting an empty id. Add test for setting an invalid identifier (osmo_identifier_valid() == false). Change-Id: I646ed918576ce196c395dc5f42a1507c52ace2c5 --- M tests/fsm/fsm_test.c M tests/fsm/fsm_test.err 2 files changed, 138 insertions(+), 7 deletions(-) git pull ssh://gerrit.osmocom.org:29418/libosmocore refs/changes/81/7681/1 diff --git a/tests/fsm/fsm_test.c b/tests/fsm/fsm_test.c index ef7bfe3..0f29a2e 100644 --- a/tests/fsm/fsm_test.c +++ b/tests/fsm/fsm_test.c @@ -3,6 +3,7 @@ #include #include #include +#include #include #include @@ -16,6 +17,12 @@ static void *g_ctx; +static int safe_strcmp(const char *a, const char *b) +{ + if (!a || !b) + return a == b ? 0 : 1; + return strcmp(a, b); +} enum test_fsm_states { ST_NULL = 0, @@ -118,7 +125,7 @@ struct ctrl_cmd *cmd; cmd = exec_ctrl_cmd(cmdstr); - if (strcmp(cmd->reply, expres)) { + if (safe_strcmp(cmd->reply, expres)) { fprintf(stderr, "Reply '%s' doesn't match expected '%s'\n", cmd->reply, expres); OSMO_ASSERT(0); } @@ -165,6 +172,89 @@ return fi; } +static void test_id_api() +{ + struct osmo_fsm_inst *fi; + + fprintf(stderr, "\n--- %s()\n", __func__); + +/* Assert the instance has this name and can be looked up by it */ +#define assert_name(expected_name) \ +do { \ + const char *name = osmo_fsm_inst_name(fi); \ + fprintf(stderr, " osmo_fsm_inst_name() == %s\n", osmo_quote_str(name, -1)); \ + if (safe_strcmp(name, expected_name)) { \ + fprintf(stderr, " ERROR: expected %s\n", osmo_quote_str(expected_name, -1)); \ + OSMO_ASSERT(false); \ + } \ + OSMO_ASSERT(osmo_fsm_inst_find_by_name(&fsm, expected_name) == fi); \ + fprintf(stderr, " osmo_fsm_inst_find_by_name(%s) == fi\n", osmo_quote_str(expected_name, -1)); \ +} while(0) + +/* Assert the instance can be looked up by this id string */ +#define assert_id(expected_id) \ +do { \ + OSMO_ASSERT(osmo_fsm_inst_find_by_id(&fsm, expected_id) == fi); \ + fprintf(stderr, " osmo_fsm_inst_find_by_id(%s) == fi\n", osmo_quote_str(expected_id, -1)); \ +} while(0) + +/* Update the id, assert the proper rc, and expect a resulting fsm inst name + lookup */ +#define test_id(new_id, expect_rc, expect_name_suffix) do { \ + int rc; \ + fprintf(stderr, "osmo_fsm_inst_update_id(%s)\n", osmo_quote_str(new_id, -1)); \ + rc = osmo_fsm_inst_update_id(fi, new_id); \ + fprintf(stderr, " rc == %d", rc); \ + if (rc == (expect_rc)) \ + fprintf(stderr, ", ok\n"); \ + else { \ + fprintf(stderr, ", ERROR: expected rc == %d\n", expect_rc); \ + OSMO_ASSERT(rc == expect_rc); \ + } \ + assert_name("Test_FSM" expect_name_suffix); \ + }while (0) + +/* Successfully set a new id, along with name and id lookup assertions */ +#define change_id(new_id) \ + test_id(new_id, 0, "(" new_id ")"); \ + assert_id(new_id) + + /* allocate FSM instance without id, there should be a name without id */ + fi = osmo_fsm_inst_alloc(&fsm, g_ctx, NULL, LOGL_DEBUG, NULL); + OSMO_ASSERT(fi); + /* CURRENT BUG: here I want to just do + assert_name("Test_FSM"); + * but when allocated with a NULL id, the fsm's name remains unset. Hence: */ + { + const char *expected_name = "Test_FSM"; + const char *name = osmo_fsm_inst_name(fi); + fprintf(stderr, " osmo_fsm_inst_name() == %s\n", osmo_quote_str(name, -1)); + if (safe_strcmp(name, expected_name)) { + fprintf(stderr, " ERROR: expected %s\n", osmo_quote_str(expected_name, -1)); + OSMO_ASSERT(false); + } + OSMO_ASSERT(osmo_fsm_inst_find_by_name(&fsm, "Test_FSM") == NULL); /* <- ERROR */ + fprintf(stderr, " osmo_fsm_inst_find_by_name(%s) == NULL\n", osmo_quote_str(expected_name, -1)); + } + + change_id("my_id"); + change_id("another_id"); + + test_id(NULL, 0, ""); + /* clear already cleared id */ + test_id(NULL, 0, ""); + + change_id("arbitrary_id"); + + /* clear id by empty string doesn't work */ + test_id("", -EINVAL, "(arbitrary_id)"); + + test_id("invalid.id", -EINVAL, "(arbitrary_id)"); + + fprintf(stderr, "\n--- %s() done\n\n", __func__); + + osmo_fsm_inst_term(fi, OSMO_FSM_TERM_REQUEST, NULL); +} + static const struct log_info_cat default_categories[] = { [DMAIN] = { .name = "DMAIN", @@ -198,17 +288,14 @@ OSMO_ASSERT(osmo_fsm_inst_find_by_name(&fsm, "my_id") == NULL); finst = foo(); - OSMO_ASSERT(osmo_fsm_inst_find_by_id(&fsm, "my_id") == finst); - OSMO_ASSERT(osmo_fsm_inst_find_by_name(&fsm, "Test_FSM(my_id)") == finst); - OSMO_ASSERT(osmo_fsm_inst_update_id(finst, "another_id") == 0); - OSMO_ASSERT(osmo_fsm_inst_find_by_id(&fsm, "another_id") == finst); - OSMO_ASSERT(osmo_fsm_inst_find_by_name(&fsm, "Test_FSM(another_id)") == finst); - OSMO_ASSERT(osmo_fsm_inst_update_id(finst, "my_id") == 0); while (main_loop_run) { osmo_select_main(0); } osmo_fsm_inst_free(finst); + + test_id_api(); + osmo_fsm_unregister(&fsm); exit(0); } diff --git a/tests/fsm/fsm_test.err b/tests/fsm/fsm_test.err index facc9f7..bc159bd 100644 --- a/tests/fsm/fsm_test.err +++ b/tests/fsm/fsm_test.err @@ -9,4 +9,48 @@ Test_FSM(my_id){TWO}: Timeout of T2342 Timer Test_FSM(my_id){TWO}: Deallocated + +--- test_id_api() +Test_FSM{NULL}: Allocated + osmo_fsm_inst_name() == "Test_FSM" + osmo_fsm_inst_find_by_name("Test_FSM") == NULL +osmo_fsm_inst_update_id("my_id") + rc == 0, ok + osmo_fsm_inst_name() == "Test_FSM(my_id)" + osmo_fsm_inst_find_by_name("Test_FSM(my_id)") == fi + osmo_fsm_inst_find_by_id("my_id") == fi +osmo_fsm_inst_update_id("another_id") + rc == 0, ok + osmo_fsm_inst_name() == "Test_FSM(another_id)" + osmo_fsm_inst_find_by_name("Test_FSM(another_id)") == fi + osmo_fsm_inst_find_by_id("another_id") == fi +osmo_fsm_inst_update_id(NULL) + rc == 0, ok + osmo_fsm_inst_name() == "Test_FSM" + osmo_fsm_inst_find_by_name("Test_FSM") == fi +osmo_fsm_inst_update_id(NULL) + rc == 0, ok + osmo_fsm_inst_name() == "Test_FSM" + osmo_fsm_inst_find_by_name("Test_FSM") == fi +osmo_fsm_inst_update_id("arbitrary_id") + rc == 0, ok + osmo_fsm_inst_name() == "Test_FSM(arbitrary_id)" + osmo_fsm_inst_find_by_name("Test_FSM(arbitrary_id)") == fi + osmo_fsm_inst_find_by_id("arbitrary_id") == fi +osmo_fsm_inst_update_id("") +Attempting to allocate FSM instance of type 'Test_FSM' with illegal identifier '' + rc == -22, ok + osmo_fsm_inst_name() == "Test_FSM(arbitrary_id)" + osmo_fsm_inst_find_by_name("Test_FSM(arbitrary_id)") == fi +osmo_fsm_inst_update_id("invalid.id") +Attempting to allocate FSM instance of type 'Test_FSM' with illegal identifier 'invalid.id' + rc == -22, ok + osmo_fsm_inst_name() == "Test_FSM(arbitrary_id)" + osmo_fsm_inst_find_by_name("Test_FSM(arbitrary_id)") == fi + +--- test_id_api() done + +Test_FSM(arbitrary_id){NULL}: Terminating (cause = OSMO_FSM_TERM_REQUEST) +Test_FSM(arbitrary_id){NULL}: Freeing instance +Test_FSM(arbitrary_id){NULL}: Deallocated  \ No newline at end of file -- To view, visit https://gerrit.osmocom.org/7681 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I646ed918576ce196c395dc5f42a1507c52ace2c5 Gerrit-PatchSet: 1 Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr From gerrit-no-reply at lists.osmocom.org Mon Apr 9 00:51:11 2018 From: gerrit-no-reply at lists.osmocom.org (Neels Hofmeyr) Date: Mon, 9 Apr 2018 00:51:11 +0000 Subject: [PATCH] libosmocore[master]: cosmetic: osmo_fsm_inst_update_id(): don't log "allocate" Message-ID: Review at https://gerrit.osmocom.org/7682 cosmetic: osmo_fsm_inst_update_id(): don't log "allocate" On erratic id in osmo_fsm_inst_update_id(), don't say "Attempting to allocate FSM instance". Escape the invalid id using osmo_quote_str(). Change-Id: I770fc460de21faa42b403f694e853e8da01c4bef --- M src/fsm.c M tests/fsm/fsm_test.err 2 files changed, 5 insertions(+), 4 deletions(-) git pull ssh://gerrit.osmocom.org:29418/libosmocore refs/changes/82/7682/1 diff --git a/src/fsm.c b/src/fsm.c index 9bbf870..0fdc564 100644 --- a/src/fsm.c +++ b/src/fsm.c @@ -213,8 +213,9 @@ { if (id) { if (!osmo_identifier_valid(id)) { - LOGP(DLGLOBAL, LOGL_ERROR, "Attempting to allocate FSM instance of type '%s'" - " with illegal identifier '%s'\n", fi->fsm->name, id); + LOGP(DLGLOBAL, LOGL_ERROR, + "Attempting to set illegal id for FSM instance of type '%s': %s\n", + fi->fsm->name, osmo_quote_str(id, -1)); return -EINVAL; } osmo_talloc_replace_string(fi, (char **)&fi->id, id); diff --git a/tests/fsm/fsm_test.err b/tests/fsm/fsm_test.err index c4ee46f..3e01d48 100644 --- a/tests/fsm/fsm_test.err +++ b/tests/fsm/fsm_test.err @@ -38,12 +38,12 @@ osmo_fsm_inst_find_by_name("Test_FSM(arbitrary_id)") == fi osmo_fsm_inst_find_by_id("arbitrary_id") == fi osmo_fsm_inst_update_id("") -Attempting to allocate FSM instance of type 'Test_FSM' with illegal identifier '' +Attempting to set illegal id for FSM instance of type 'Test_FSM': ""  rc == -22, ok osmo_fsm_inst_name() == "Test_FSM(arbitrary_id)" osmo_fsm_inst_find_by_name("Test_FSM(arbitrary_id)") == fi osmo_fsm_inst_update_id("invalid.id") -Attempting to allocate FSM instance of type 'Test_FSM' with illegal identifier 'invalid.id' +Attempting to set illegal id for FSM instance of type 'Test_FSM': "invalid.id"  rc == -22, ok osmo_fsm_inst_name() == "Test_FSM(arbitrary_id)" osmo_fsm_inst_find_by_name("Test_FSM(arbitrary_id)") == fi -- To view, visit https://gerrit.osmocom.org/7682 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I770fc460de21faa42b403f694e853e8da01c4bef Gerrit-PatchSet: 1 Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr From gerrit-no-reply at lists.osmocom.org Mon Apr 9 00:51:12 2018 From: gerrit-no-reply at lists.osmocom.org (Neels Hofmeyr) Date: Mon, 9 Apr 2018 00:51:12 +0000 Subject: [PATCH] libosmocore[master]: add gsm48_reject_value_names Message-ID: Review at https://gerrit.osmocom.org/7683 add gsm48_reject_value_names There seems to be quite some confusion / overlap between enum gsm48_reject_value, gsm48_gsm_cause and gsm48_gmm_cause. I tried to go with gsm48_gsm_cause_names[], but e.g. GSM48_REJECT_CONGESTION is not represented. Instead of attempting to mix/merge those enums, provide a separate value string array for enum gsm48_reject_value. This will be used by osmo-msc's libvlr (refactoring of FSM result handling), I27bf8d68737ff1f8dc6d11fb1eac3d391aab0cb1. Change-Id: I6661f139e68a498fb1bef10c266c2f064b72774a --- M include/osmocom/gsm/protocol/gsm_04_08.h M src/gsm/gsm48.c M src/gsm/libosmogsm.map 3 files changed, 38 insertions(+), 0 deletions(-) git pull ssh://gerrit.osmocom.org:29418/libosmocore refs/changes/83/7683/1 diff --git a/include/osmocom/gsm/protocol/gsm_04_08.h b/include/osmocom/gsm/protocol/gsm_04_08.h index 4a821cc..6a5fb3b 100644 --- a/include/osmocom/gsm/protocol/gsm_04_08.h +++ b/include/osmocom/gsm/protocol/gsm_04_08.h @@ -1509,6 +1509,10 @@ GSM48_REJECT_MSC_TMP_NOT_REACHABLE = 16, }; +extern const struct value_string gsm48_reject_value_names[]; +static inline const char *gsm48_reject_value_name(enum gsm48_reject_value val) +{ return get_value_string(gsm48_reject_value_names, val); } + enum chreq_type { CHREQ_T_EMERG_CALL, CHREQ_T_CALL_REEST_TCH_F, diff --git a/src/gsm/gsm48.c b/src/gsm/gsm48.c index c2affae..468b2a9 100644 --- a/src/gsm/gsm48.c +++ b/src/gsm/gsm48.c @@ -980,4 +980,37 @@ return namebuf; } +const struct value_string gsm48_reject_value_names[] = { + { GSM48_REJECT_IMSI_UNKNOWN_IN_HLR, "IMSI_UNKNOWN_IN_HLR" }, + { GSM48_REJECT_ILLEGAL_MS, "ILLEGAL_MS" }, + { GSM48_REJECT_IMSI_UNKNOWN_IN_VLR, "IMSI_UNKNOWN_IN_VLR" }, + { GSM48_REJECT_IMEI_NOT_ACCEPTED, "IMEI_NOT_ACCEPTED" }, + { GSM48_REJECT_ILLEGAL_ME, "ILLEGAL_ME" }, + { GSM48_REJECT_PLMN_NOT_ALLOWED, "PLMN_NOT_ALLOWED" }, + { GSM48_REJECT_LOC_NOT_ALLOWED, "LOC_NOT_ALLOWED" }, + { GSM48_REJECT_ROAMING_NOT_ALLOWED, "ROAMING_NOT_ALLOWED" }, + { GSM48_REJECT_NETWORK_FAILURE, "NETWORK_FAILURE" }, + { GSM48_REJECT_SYNCH_FAILURE, "SYNCH_FAILURE" }, + { GSM48_REJECT_CONGESTION, "CONGESTION" }, + { GSM48_REJECT_SRV_OPT_NOT_SUPPORTED, "SRV_OPT_NOT_SUPPORTED" }, + { GSM48_REJECT_RQD_SRV_OPT_NOT_SUPPORTED, "RQD_SRV_OPT_NOT_SUPPORTED" }, + { GSM48_REJECT_SRV_OPT_TMP_OUT_OF_ORDER, "SRV_OPT_TMP_OUT_OF_ORDER" }, + { GSM48_REJECT_CALL_CAN_NOT_BE_IDENTIFIED, "CALL_CAN_NOT_BE_IDENTIFIED" }, + { GSM48_REJECT_INCORRECT_MESSAGE, "INCORRECT_MESSAGE" }, + { GSM48_REJECT_INVALID_MANDANTORY_INF, "INVALID_MANDANTORY_INF" }, + { GSM48_REJECT_MSG_TYPE_NOT_IMPLEMENTED, "MSG_TYPE_NOT_IMPLEMENTED" }, + { GSM48_REJECT_MSG_TYPE_NOT_COMPATIBLE, "MSG_TYPE_NOT_COMPATIBLE" }, + { GSM48_REJECT_INF_ELEME_NOT_IMPLEMENTED, "INF_ELEME_NOT_IMPLEMENTED" }, + { GSM48_REJECT_CONDTIONAL_IE_ERROR, "CONDTIONAL_IE_ERROR" }, + { GSM48_REJECT_MSG_NOT_COMPATIBLE, "MSG_NOT_COMPATIBLE" }, + { GSM48_REJECT_PROTOCOL_ERROR, "PROTOCOL_ERROR" }, + { GSM48_REJECT_GPRS_NOT_ALLOWED, "GPRS_NOT_ALLOWED" }, + { GSM48_REJECT_SERVICES_NOT_ALLOWED, "SERVICES_NOT_ALLOWED" }, + { GSM48_REJECT_MS_IDENTITY_NOT_DERVIVABLE, "MS_IDENTITY_NOT_DERVIVABLE" }, + { GSM48_REJECT_IMPLICITLY_DETACHED, "IMPLICITLY_DETACHED" }, + { GSM48_REJECT_GPRS_NOT_ALLOWED_IN_PLMN, "GPRS_NOT_ALLOWED_IN_PLMN" }, + { GSM48_REJECT_MSC_TMP_NOT_REACHABLE, "MSC_TMP_NOT_REACHABLE" }, + { 0, NULL } +}; + /*! @} */ diff --git a/src/gsm/libosmogsm.map b/src/gsm/libosmogsm.map index dd4722e..31717d5 100644 --- a/src/gsm/libosmogsm.map +++ b/src/gsm/libosmogsm.map @@ -287,6 +287,7 @@ gsm48_mm_msgtype_names; gsm48_cc_msgtype_names; gsm48_pdisc_msgtype_name; +gsm48_reject_value_names; gsm_7bit_decode; gsm_7bit_decode_ussd; -- To view, visit https://gerrit.osmocom.org/7683 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I6661f139e68a498fb1bef10c266c2f064b72774a Gerrit-PatchSet: 1 Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr From gerrit-no-reply at lists.osmocom.org Mon Apr 9 00:53:21 2018 From: gerrit-no-reply at lists.osmocom.org (Neels Hofmeyr) Date: Mon, 9 Apr 2018 00:53:21 +0000 Subject: [ABANDON] libosmocore[master]: fsm: collapse an empty id to a NULL id, adjust api doc In-Reply-To: References: Message-ID: Neels Hofmeyr has abandoned this change. Change subject: fsm: collapse an empty id to a NULL id, adjust api doc ...................................................................... Abandoned Actually, currently we reject an empty id by osmo_valid_identifier() check, which is good, and we don't want to start to allow setting an empty id at all. -- To view, visit https://gerrit.osmocom.org/7628 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: abandon Gerrit-Change-Id: I9fa6e13ec1c2ab204b6229f4e3fa5f2c0d53a2ba Gerrit-PatchSet: 1 Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder From gerrit-no-reply at lists.osmocom.org Mon Apr 9 00:56:44 2018 From: gerrit-no-reply at lists.osmocom.org (Neels Hofmeyr) Date: Mon, 9 Apr 2018 00:56:44 +0000 Subject: [PATCH] libosmocore[master]: add osmo_quote_str(), osmo_quote_str_buf() and test In-Reply-To: References: Message-ID: add osmo_quote_str(),osmo_quote_str_buf() and test Rationale: with osmo_escape_str(), you get the escaped contents of the string, but not so graceful handling of NULL strings. The caller needs to quote it, and for NULL strings not quote it. osmo_quote_str() is like osmo_escape_str() but always quotes a non-NULL string, and for a NULL string returns a literal NULL, i.e. it should (tm) give the exact C representation of a string. That's useful in testing, to show exactly what char* situation we have, without jumping through hoops like if (str) printf("\"%s\"", osmo_escape_str(str, -1)); else printf("NULL"); Copy the unit test for osmo_escape_str() and adjust. To indicate that the double quotes are returned by osmo_quote_str(), use single quotes in the test printf()s. I considered allowing to pick the quoting characters by further arguments, but that complicates things: we'd need to escape the quoting characters. Just hardcode double quotes like C. Change-Id: I6f1b3709b32c23fc52f70ad9ecc9439c62b02a12 --- M include/osmocom/core/utils.h M src/utils.c M tests/utils/utils_test.c M tests/utils/utils_test.ok 4 files changed, 128 insertions(+), 0 deletions(-) git pull ssh://gerrit.osmocom.org:29418/libosmocore refs/changes/78/7678/2 diff --git a/include/osmocom/core/utils.h b/include/osmocom/core/utils.h index f1e011f..8928f68 100644 --- a/include/osmocom/core/utils.h +++ b/include/osmocom/core/utils.h @@ -125,5 +125,7 @@ const char *osmo_escape_str(const char *str, int len); const char *osmo_escape_str_buf(const char *str, int in_len, char *buf, size_t bufsize); +const char *osmo_quote_str(const char *str, int in_len); +const char *osmo_quote_str_buf(const char *str, int in_len, char *buf, size_t bufsize); /*! @} */ diff --git a/src/utils.c b/src/utils.c index 109aac0..32ea87c 100644 --- a/src/utils.c +++ b/src/utils.c @@ -554,4 +554,42 @@ return osmo_escape_str_buf(str, in_len, namebuf, sizeof(namebuf)); } +/*! Like osmo_escape_str(), but returns double-quotes around a string, or "NULL" for a NULL string. + * This allows passing any char* value and get its C representation as string. + * \param[in] str A string that may contain any characters. + * \param[in] len Pass -1 to print until nul char, or >= 0 to force a length. + * \returns buf containing an escaped representation, possibly truncated, or str itself. + */ +const char *osmo_quote_str_buf(const char *str, int in_len, char *buf, size_t bufsize) +{ + const char *res; + int l; + if (!str) + return "NULL"; + if (bufsize < 3) + return ""; + buf[0] = '"'; + res = osmo_escape_str_buf(str, in_len, buf + 1, bufsize - 2); + /* if osmo_escape_str_buf() returned the str itself, we need to copy it to buf to be able to + * quote it. */ + if (res == str) { + /* max_len = bufsize - two quotes - nul term */ + int max_len = bufsize - 2 - 1; + if (in_len >= 0) + max_len = OSMO_MIN(in_len, max_len); + /* It is not allowed to pass unterminated strings into osmo_strlcpy() :/ */ + strncpy(buf + 1, str, max_len); + buf[1 + max_len] = '\0'; + } + l = strlen(buf); + buf[l] = '"'; + buf[l+1] = '\0'; /* both osmo_escape_str_buf() and max_len above ensure room for '\0' */ + return buf; +} + +const char *osmo_quote_str(const char *str, int in_len) +{ + return osmo_quote_str_buf(str, in_len, namebuf, sizeof(namebuf)); +} + /*! @} */ diff --git a/tests/utils/utils_test.c b/tests/utils/utils_test.c index f358e9a..a124352 100644 --- a/tests/utils/utils_test.c +++ b/tests/utils/utils_test.c @@ -371,6 +371,60 @@ OSMO_ASSERT(out_buf[0] == 0x7f); } +static void str_quote_test(void) +{ + int i; + int j; + uint8_t in_buf[32]; + char out_buf[11]; + const char *printable = "printable"; + const char *res; + + printf("\nTesting string quoting\n"); + printf("- all chars from 0 to 255 in batches of 16:\n"); + in_buf[16] = '\0'; + for (j = 0; j < 16; j++) { + for (i = 0; i < 16; i++) + in_buf[i] = (j << 4) | i; + printf("'%s'\n", osmo_quote_str((const char*)in_buf, 16)); + } + + printf("- nul terminated:\n"); + printf("'%s'\n", osmo_quote_str("termi\nated", -1)); + + printf("- never passthru:\n"); + res = osmo_quote_str(printable, -1); + if (res != printable) + printf("NOT passed through. '%s'\n", res); + else + printf("passed through unchanged '%s'\n", res); + + printf("- zero length:\n"); + printf("'%s'\n", osmo_quote_str("omitted", 0)); + + printf("- truncation when too long:\n"); + memset(in_buf, 'x', sizeof(in_buf)); + in_buf[0] = '\a'; + in_buf[5] = 'E'; + memset(out_buf, 0x7f, sizeof(out_buf)); + printf("'%s'\n", osmo_quote_str_buf((const char *)in_buf, sizeof(in_buf), out_buf, 10)); + OSMO_ASSERT(out_buf[10] == 0x7f); + + printf("- always truncation, even when no escaping needed:\n"); + memset(in_buf, 'x', sizeof(in_buf)); + in_buf[6] = 'E'; /* dst has 10, less 2 quotes and nul, leaves 7, i.e. in[6] is last */ + in_buf[20] = '\0'; + memset(out_buf, 0x7f, sizeof(out_buf)); + printf("'%s'\n", osmo_quote_str_buf((const char *)in_buf, -1, out_buf, 10)); + OSMO_ASSERT(out_buf[0] == '"'); + + printf("- try to feed too little buf for quoting:\n"); + printf("'%s'\n", osmo_quote_str_buf("", -1, out_buf, 2)); + + printf("- NULL string becomes a \"NULL\" literal:\n"); + printf("'%s'\n", osmo_quote_str_buf(NULL, -1, out_buf, 10)); +} + int main(int argc, char **argv) { static const struct log_info log_info = {}; @@ -382,5 +436,6 @@ test_is_hexstr(); bcd_test(); str_escape_test(); + str_quote_test(); return 0; } diff --git a/tests/utils/utils_test.ok b/tests/utils/utils_test.ok index fb1d62e..5bc3896 100644 --- a/tests/utils/utils_test.ok +++ b/tests/utils/utils_test.ok @@ -104,3 +104,36 @@ "\axxxxxxE" - passthrough without truncation when no escaping needed: "xxxxxxxxxxxxxxxxxxxE" + +Testing string quoting +- all chars from 0 to 255 in batches of 16: +'"\0\1\2\3\4\5\6\a\b\t\n\v\f\r\14\15"' +'"\16\17\18\19\20\21\22\23\24\25\26\27\28\29\30\31"' +'" !\"#$%&'()*+,-./"' +'"0123456789:;<=>?"' +'"@ABCDEFGHIJKLMNO"' +'"PQRSTUVWXYZ[\\]^_"' +'"`abcdefghijklmno"' +'"pqrstuvwxyz{|}~\127"' +'"\128\129\130\131\132\133\134\135\136\137\138\139\140\141\142\143"' +'"\144\145\146\147\148\149\150\151\152\153\154\155\156\157\158\159"' +'"\160\161\162\163\164\165\166\167\168\169\170\171\172\173\174\175"' +'"\176\177\178\179\180\181\182\183\184\185\186\187\188\189\190\191"' +'"\192\193\194\195\196\197\198\199\200\201\202\203\204\205\206\207"' +'"\208\209\210\211\212\213\214\215\216\217\218\219\220\221\222\223"' +'"\224\225\226\227\228\229\230\231\232\233\234\235\236\237\238\239"' +'"\240\241\242\243\244\245\246\247\248\249\250\251\252\253\254\255"' +- nul terminated: +'"termi\nated"' +- never passthru: +NOT passed through. '"printable"' +- zero length: +'""' +- truncation when too long: +'"\axxxxE"' +- always truncation, even when no escaping needed: +'"xxxxxxE"' +- try to feed too little buf for quoting: +'' +- NULL string becomes a "NULL" literal: +'NULL' -- To view, visit https://gerrit.osmocom.org/7678 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newpatchset Gerrit-Change-Id: I6f1b3709b32c23fc52f70ad9ecc9439c62b02a12 Gerrit-PatchSet: 2 Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr Gerrit-Reviewer: Jenkins Builder From jenkins at lists.osmocom.org Mon Apr 9 07:36:17 2018 From: jenkins at lists.osmocom.org (jenkins at lists.osmocom.org) Date: Mon, 9 Apr 2018 07:36:17 +0000 (UTC) Subject: =?UTF-8?Q?Build_failed_in_Jenkins:_master-osmo-pcu_=C2=BB_m?= =?UTF-8?Q?aster,osmocom-master-debian9,none,False_#363?= Message-ID: <1669641791.171.1523259377522.JavaMail.jenkins@jenkins.osmocom.org> See ------------------------------------------ [...truncated 115.47 KB...] make[2]: Nothing to be done for 'all'. make[2]: Leaving directory ' Making all in tests make[2]: Entering directory ' CXX pcu_emu.o CXX test_replay_gprs_attach.o CC openbsc_clone.o CXX test_pdp_activation.o CXXLD emu/pcu_emu make[2]: Leaving directory ' make[2]: Entering directory ' make[2]: Nothing to be done for 'all-am'. make[2]: Leaving directory ' make[1]: Leaving directory ' make[1]: Entering directory ' Making dvi in include make[2]: Entering directory ' make[2]: Nothing to be done for 'dvi'. make[2]: Leaving directory ' Making dvi in src make[2]: Entering directory ' make[2]: Nothing to be done for 'dvi'. make[2]: Leaving directory ' Making dvi in examples make[2]: Entering directory ' make[2]: Nothing to be done for 'dvi'. make[2]: Leaving directory ' Making dvi in tests make[2]: Entering directory ' make[2]: Nothing to be done for 'dvi'. make[2]: Leaving directory ' make[2]: Entering directory ' make[2]: Nothing to be done for 'dvi-am'. make[2]: Leaving directory ' make[1]: Leaving directory ' make[1]: Entering directory ' Making check in include make[2]: Entering directory ' make[2]: Nothing to be done for 'check'. make[2]: Leaving directory ' Making check in src make[2]: Entering directory ' make[2]: Nothing to be done for 'check'. make[2]: Leaving directory ' Making check in examples make[2]: Entering directory ' make[2]: Nothing to be done for 'check'. make[2]: Leaving directory ' Making check in tests make[2]: Entering directory ' make rlcmac/RLCMACTest alloc/AllocTest alloc/MslotTest tbf/TbfTest types/TypesTest ms/MsTest llist/LListTest llc/LlcTest codel/codel_test edge/EdgeTest bitcomp/BitcompTest fn/FnTest make[3]: Entering directory ' CXX RLCMACTest.o CXXLD rlcmac/RLCMACTest CXX AllocTest.o CXXLD alloc/AllocTest CXX MslotTest.o CXXLD alloc/MslotTest CXX TbfTest.o CXXLD tbf/TbfTest CXX TypesTest.o CXXLD types/TypesTest CXX MsTest.o CXXLD ms/MsTest CXX LListTest.o CXXLD llist/LListTest CXX LlcTest.o CXXLD llc/LlcTest CC codel_test.o CCLD codel/codel_test CXX EdgeTest.o CXXLD edge/EdgeTest CXX BitcompTest.o CXX egprs_rlc_compression.o CXXLD bitcomp/BitcompTest CXX FnTest.o CXXLD fn/FnTest make[3]: Leaving directory ' make check-local make[3]: Entering directory ' /bin/bash '../../../tests/testsuite' ## ----------------------------------- ## ## osmo-pcu 0.4.0.111-42f2 test suite. ## ## ----------------------------------- ## Regression tests 1: rlcmac ok 2: multi_slot ok 3: ts_alloc ok 4: tbf ok 5: bitcomp ok 6: edge ok 7: types ok 8: ms ok 9: llc ok 10: llist ok 11: codel ok 12: fn ok ## ------------- ## ## Test results. ## ## ------------- ## All 12 tests were successful. make python-tests make[4]: Entering directory ' Not running python-based tests (determined at configure-time) make[4]: Leaving directory ' make[3]: Leaving directory ' make[2]: Leaving directory ' make[2]: Entering directory ' make[2]: Nothing to be done for 'check-am'. make[2]: Leaving directory ' make[1]: Leaving directory ' make[1]: Entering directory ' Making install in include make[2]: Entering directory ' make[3]: Entering directory ' make[3]: Nothing to be done for 'install-exec-am'. /bin/mkdir -p ' /bin/mkdir -p ' /usr/bin/install -c -m 644 ../../../include/osmocom/pcu/pcuif_proto.h ' make[3]: Leaving directory ' make[2]: Leaving directory ' Making install in src make[2]: Entering directory ' make[3]: Entering directory ' /bin/mkdir -p ' /bin/bash ../libtool --mode=install /usr/bin/install -c osmo-pcu ' libtool: install: /usr/bin/install -c osmo-pcu make[3]: Leaving directory ' make[2]: Leaving directory ' Making install in examples make[2]: Entering directory ' make[3]: Entering directory ' make[3]: Nothing to be done for 'install-exec-am'. /bin/mkdir -p ' /usr/bin/install -c -m 644 ../../../examples/osmo-pcu.cfg ' make[3]: Leaving directory ' make[2]: Leaving directory ' Making install in tests make[2]: Entering directory ' make[3]: Entering directory ' make[3]: Nothing to be done for 'install-exec-am'. make[3]: Nothing to be done for 'install-data-am'. make[3]: Leaving directory ' make[2]: Leaving directory ' make[2]: Entering directory ' make[3]: Entering directory ' make[3]: Nothing to be done for 'install-exec-am'. /bin/mkdir -p ' /usr/bin/install -c -m 644 osmo-pcu.pc ' make[3]: Leaving directory ' make[2]: Leaving directory ' make[1]: Leaving directory ' make[1]: Entering directory ' Making installcheck in include make[2]: Entering directory ' make[2]: Nothing to be done for 'installcheck'. make[2]: Leaving directory ' Making installcheck in src make[2]: Entering directory ' make[2]: Nothing to be done for 'installcheck'. make[2]: Leaving directory ' Making installcheck in examples make[2]: Entering directory ' make[2]: Nothing to be done for 'installcheck'. make[2]: Leaving directory ' Making installcheck in tests make[2]: Entering directory ' /bin/bash '../../../tests/testsuite' AUTOTEST_PATH=' \ ## ----------------------------------- ## ## osmo-pcu 0.4.0.111-42f2 test suite. ## ## ----------------------------------- ## Regression tests 1: rlcmac ok 2: multi_slot ok 3: ts_alloc ok 4: tbf FAILED (testsuite.at:29) 5: bitcomp ok 6: edge ok 7: types ok 8: ms ok 9: llc ok 10: llist ok 11: codel ok 12: fn ok ## ------------- ## ## Test results. ## ## ------------- ## ERROR: All 12 tests were run, 1 failed unexpectedly. ## -------------------------- ## ## testsuite.log was created. ## ## -------------------------- ## Please send `tests/testsuite.log' and all information you think might help: To: Subject: [osmo-pcu 0.4.0.111-42f2] testsuite: 4 failed You may investigate any problem if you feel able to do so, in which case the test suite provides a good starting point. Its output may be found below `tests/testsuite.dir'. Makefile:1265: recipe for target 'installcheck-local' failed make[2]: *** [installcheck-local] Error 1 make[2]: Leaving directory ' Makefile:461: recipe for target 'installcheck-recursive' failed make[1]: *** [installcheck-recursive] Error 1 make[1]: Leaving directory ' Makefile:666: recipe for target 'distcheck' failed make: *** [distcheck] Error 1 + cat-testlogs.sh ======================== ./osmo-pcu-0.4.0.111-42f2/_build/sub/tests/testsuite.dir/04/testsuite.log # -*- compilation -*- 4. testsuite.at:25: testing tbf ... ../../../tests/testsuite.at:29: $OSMO_QEMU $abs_top_builddir/tests/tbf/TbfTest --- experr 2018-04-09 07:36:15.960281876 +0000 +++ 2018-04-09 07:36:16.012281136 +0000 @@ -3945,6 +3945,7 @@ TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) downlink (V(A)==0 .. V(S)==19) TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) Sending new block at BSN 19, CS=MCS-2 TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) Complete DL frame, len=512 +../../../src/gprs_rlcmac_meas.cpp:178:40: runtime error: left shift of negative value -999304 TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) Empty chunk, added LLC dummy command of size 18, drained_since=0 TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) Complete DL frame, len=18 TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) data block (BSN 19, MCS-2): 10 25 01 01 01 01 01 01 01 01 43 c0 01 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b @@ -3956,6 +3957,7 @@ TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) msg block (BSN 19, MCS-2): 07 c0 04 12 20 4a 02 02 02 02 02 02 02 02 86 80 03 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 00 TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) downlink acknowledge TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) Final ACK received. +../../../src/gprs_rlcmac_meas.cpp:134:42: runtime error: left shift of negative value -999245 TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) changes state from FLOW to WAIT RELEASE TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT RELEASE EGPRS) starting timer T3193 [release (DL-TBF)] with 0 sec. 0 microsec. TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT RELEASE EGPRS) changes DL ASS state from GPRS_RLCMAC_DL_ASS_WAIT_ACK to GPRS_RLCMAC_DL_ASS_NONE 4. testsuite.at:25: 4. tbf (testsuite.at:25): FAILED (testsuite.at:29) Build step 'Execute shell' marked build as failure [WARNINGS]Skipping publisher since build result is FAILURE From gerrit-no-reply at lists.osmocom.org Mon Apr 9 08:14:49 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Mon, 9 Apr 2018 08:14:49 +0000 Subject: libosmocore[master]: add osmo_quote_str(), osmo_quote_str_buf() and test In-Reply-To: References: Message-ID: Patch Set 2: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7678 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I6f1b3709b32c23fc52f70ad9ecc9439c62b02a12 Gerrit-PatchSet: 2 Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Mon Apr 9 08:15:07 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Mon, 9 Apr 2018 08:15:07 +0000 Subject: libosmocore[master]: fsm_test: terminate the main loop instead of exit on timeout In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7679 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Ia47811ffcc1bd68d2630c86be7ab98fc1f338773 Gerrit-PatchSet: 1 Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Mon Apr 9 08:15:29 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Mon, 9 Apr 2018 08:15:29 +0000 Subject: libosmocore[master]: osmo_fsm_inst_find_by_name(): guard against strcmp(NULL) In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7680 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I2e5f82c06d1a4727bd93e955366e3b62b2df1b32 Gerrit-PatchSet: 1 Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Mon Apr 9 08:15:39 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Mon, 9 Apr 2018 08:15:39 +0000 Subject: libosmocore[master]: fsm_test: more thoroughly test FSM inst ids and names In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7681 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I646ed918576ce196c395dc5f42a1507c52ace2c5 Gerrit-PatchSet: 1 Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Mon Apr 9 08:16:03 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Mon, 9 Apr 2018 08:16:03 +0000 Subject: libosmocore[master]: fsm: id: properly set name in case of NULL id In-Reply-To: References: Message-ID: Patch Set 2: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7627 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I6d6b09a811b82770818f19b189a57d9fc4a8133b Gerrit-PatchSet: 2 Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Neels Hofmeyr Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Mon Apr 9 08:16:21 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Mon, 9 Apr 2018 08:16:21 +0000 Subject: libosmocore[master]: cosmetic: osmo_fsm_inst_update_id(): don't log "allocate" In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7682 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I770fc460de21faa42b403f694e853e8da01c4bef Gerrit-PatchSet: 1 Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Mon Apr 9 08:16:54 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Mon, 9 Apr 2018 08:16:54 +0000 Subject: libosmocore[master]: add osmo_fsm_inst_update_id_f() In-Reply-To: References: Message-ID: Patch Set 2: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7629 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I76743a7642f2449fd33350691ac8ebbf4400371d Gerrit-PatchSet: 2 Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Neels Hofmeyr Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Mon Apr 9 08:17:35 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Mon, 9 Apr 2018 08:17:35 +0000 Subject: libosmocore[master]: add gsm48_reject_value_names In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7683 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I6661f139e68a498fb1bef10c266c2f064b72774a Gerrit-PatchSet: 1 Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Mon Apr 9 08:19:30 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Mon, 9 Apr 2018 08:19:30 +0000 Subject: osmo-msc[master]: VTY: add USSD processing back-end configuration In-Reply-To: References: Message-ID: Patch Set 1: Let's call it "internal", not " local", to use the same naming as for mncc handlers -- To view, visit https://gerrit.osmocom.org/7677 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I0b3c5ccea4054113e8e23109b1ab68d9f0e18497 Gerrit-PatchSet: 1 Gerrit-Project: osmo-msc Gerrit-Branch: master Gerrit-Owner: Vadim Yanitskiy Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Mon Apr 9 08:19:40 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Mon, 9 Apr 2018 08:19:40 +0000 Subject: osmo-msc[master]: ussd.h: cosmetic: use '#pragma once' include guard In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7673 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I0e78aa946b8e6bc7c31534751b2ee5c867bfd490 Gerrit-PatchSet: 1 Gerrit-Project: osmo-msc Gerrit-Branch: master Gerrit-Owner: Vadim Yanitskiy Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Mon Apr 9 08:19:54 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Mon, 9 Apr 2018 08:19:54 +0000 Subject: osmo-msc[master]: libmsc/ussd: don't overwrite rc if decoding failed In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7676 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I344e4b3a9aad617686a7ddbdeae5780fd8b07e58 Gerrit-PatchSet: 1 Gerrit-Project: osmo-msc Gerrit-Branch: master Gerrit-Owner: Vadim Yanitskiy Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Mon Apr 9 08:21:17 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Mon, 9 Apr 2018 08:21:17 +0000 Subject: osmo-msc[master]: libmsc/ussd.c: cosmetic: correct logging level In-Reply-To: References: Message-ID: Patch Set 1: Is it really an error like a decoding error? Or is it just an unhandled request? In case of decoding error, should we inform the ms? -- To view, visit https://gerrit.osmocom.org/7675 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: If6c270fae54ce79c2708c99d7762ce6ff71f43d9 Gerrit-PatchSet: 1 Gerrit-Project: osmo-msc Gerrit-Branch: master Gerrit-Owner: Vadim Yanitskiy Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Mon Apr 9 08:22:31 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Mon, 9 Apr 2018 08:22:31 +0000 Subject: osmo-msc[master]: libmsc/gsm_04_80.c: drop unused 'in_msg' argument In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7674 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I4248ebf8626d3f7f0bf273fd20cc4f64e979938b Gerrit-PatchSet: 1 Gerrit-Project: osmo-msc Gerrit-Branch: master Gerrit-Owner: Vadim Yanitskiy Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Mon Apr 9 08:23:26 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Mon, 9 Apr 2018 08:23:26 +0000 Subject: osmo-msc[master]: ussd.h: cosmetic: move comment to a proper place In-Reply-To: References: Message-ID: Patch Set 1: Code-Review-1 The comment describes the single function, not the whole file -- To view, visit https://gerrit.osmocom.org/7672 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I6b0d1d9e1a1b1ffb71cb9905e74f6fad2333bb65 Gerrit-PatchSet: 1 Gerrit-Project: osmo-msc Gerrit-Branch: master Gerrit-Owner: Vadim Yanitskiy Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Mon Apr 9 08:24:12 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Mon, 9 Apr 2018 08:24:12 +0000 Subject: libosmocore[master]: fix spelling In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7670 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I69976ecae6939d9ff51bfe4ce7374890c6563b82 Gerrit-PatchSet: 1 Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Owner: Thorsten Alteholz Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Pau Espin Pedrol Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Mon Apr 9 08:24:35 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Mon, 9 Apr 2018 08:24:35 +0000 Subject: [MERGED] libosmocore[master]: fix spelling In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: fix spelling ...................................................................... fix spelling fix for some spelling issues found by lintian Signed-off-by: Thorsten Alteholz Change-Id: I69976ecae6939d9ff51bfe4ce7374890c6563b82 --- M src/gsm/ipa.c M src/sim/card_fs_sim.c M src/sim/card_fs_tetra.c 3 files changed, 3 insertions(+), 3 deletions(-) Approvals: Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/src/gsm/ipa.c b/src/gsm/ipa.c index e00e2d0..e03f615 100644 --- a/src/gsm/ipa.c +++ b/src/gsm/ipa.c @@ -321,7 +321,7 @@ t_tag = *cur++; if (t_len > len + 1) { - LOGP(DLINP, LOGL_ERROR, "IPA CCM tage 0x%02x does not fit\n", t_tag); + LOGP(DLINP, LOGL_ERROR, "IPA CCM tag 0x%02x does not fit\n", t_tag); break; } diff --git a/src/sim/card_fs_sim.c b/src/sim/card_fs_sim.c index 8c819a4..3f541f7 100644 --- a/src/sim/card_fs_sim.c +++ b/src/sim/card_fs_sim.c @@ -51,7 +51,7 @@ .u.str = "SIM Application Toolkit is busy, command cannot be executed at present", }, { 0x9200, 0xfff0, SW_TYPE_STR, SW_CLS_WARN, - .u.str = "Memory management - Command successful but after using an internal updat retry X times", + .u.str = "Memory management - Command successful but after using an internal update retry X times", }, { 0x9240, 0xffff, SW_TYPE_STR, SW_CLS_ERROR, .u.str = "Memory management - Memory problem", diff --git a/src/sim/card_fs_tetra.c b/src/sim/card_fs_tetra.c index 7bf0279..12853a5 100644 --- a/src/sim/card_fs_tetra.c +++ b/src/sim/card_fs_tetra.c @@ -46,7 +46,7 @@ .u.str = "SIM Application Toolkit is busy, command cannot be executed at present", }, { 0x9200, 0xfff0, SW_TYPE_STR, SW_CLS_WARN, - .u.str = "Memory management - Command successful but after using an internal updat retry X times", + .u.str = "Memory management - Command successful but after using an internal update retry X times", }, { 0x9240, 0xffff, SW_TYPE_STR, SW_CLS_ERROR, .u.str = "Memory management - Memory problem", -- To view, visit https://gerrit.osmocom.org/7670 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: I69976ecae6939d9ff51bfe4ce7374890c6563b82 Gerrit-PatchSet: 1 Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Owner: Thorsten Alteholz Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Pau Espin Pedrol From gerrit-no-reply at lists.osmocom.org Mon Apr 9 08:24:57 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Mon, 9 Apr 2018 08:24:57 +0000 Subject: osmo-trx[master]: configure.ac: Fix typo In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7671 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Id836c6822daf1f6835a8c869624b4b40dde47f3a Gerrit-PatchSet: 1 Gerrit-Project: osmo-trx Gerrit-Branch: master Gerrit-Owner: roox Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Pau Espin Pedrol Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Mon Apr 9 08:25:10 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Mon, 9 Apr 2018 08:25:10 +0000 Subject: [MERGED] osmo-trx[master]: configure.ac: Fix typo In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: configure.ac: Fix typo ...................................................................... configure.ac: Fix typo Unbreak git-version-gen when used with .tarball-version Change-Id: Id836c6822daf1f6835a8c869624b4b40dde47f3a --- M configure.ac 1 file changed, 1 insertion(+), 1 deletion(-) Approvals: Pau Espin Pedrol: Looks good to me, but someone else must approve Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/configure.ac b/configure.ac index bade799..c80f1cf 100644 --- a/configure.ac +++ b/configure.ac @@ -19,7 +19,7 @@ dnl AC_INIT([osmo-trx], - m4_esyscmd([./git-version-gen .tarball-veresion]), + m4_esyscmd([./git-version-gen .tarball-version]), [openbsc at lists.osmocom.org]) AC_PREREQ(2.57) AC_CONFIG_SRCDIR([Transceiver52M/Makefile.am]) -- To view, visit https://gerrit.osmocom.org/7671 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: Id836c6822daf1f6835a8c869624b4b40dde47f3a Gerrit-PatchSet: 1 Gerrit-Project: osmo-trx Gerrit-Branch: master Gerrit-Owner: roox Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Pau Espin Pedrol From gerrit-no-reply at lists.osmocom.org Mon Apr 9 08:25:48 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Mon, 9 Apr 2018 08:25:48 +0000 Subject: osmocom-bb[master]: host/trxcon: track talloc NULL contexts by default In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7669 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Id21cd5ee340def443f7a5d0b2b8f37f41188dd87 Gerrit-PatchSet: 1 Gerrit-Project: osmocom-bb Gerrit-Branch: master Gerrit-Owner: Vadim Yanitskiy Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Mon Apr 9 08:26:03 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Mon, 9 Apr 2018 08:26:03 +0000 Subject: osmocom-bb[master]: host/trxcon: don't free root talloc context In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7668 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Ibf04942070d654e97c3ed77d69ab19e44602758c Gerrit-PatchSet: 1 Gerrit-Project: osmocom-bb Gerrit-Branch: master Gerrit-Owner: Vadim Yanitskiy Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Mon Apr 9 08:26:07 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Mon, 9 Apr 2018 08:26:07 +0000 Subject: osmocom-bb[master]: host/trxcon: use osmo_init_logging2() In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7667 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I06c4a1f7f839f774bc428e89cfac30132bae904d Gerrit-PatchSet: 1 Gerrit-Project: osmocom-bb Gerrit-Branch: master Gerrit-Owner: Vadim Yanitskiy Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Mon Apr 9 08:26:23 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Mon, 9 Apr 2018 08:26:23 +0000 Subject: [MERGED] osmocom-bb[master]: host/trxcon: use osmo_init_logging2() In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: host/trxcon: use osmo_init_logging2() ...................................................................... host/trxcon: use osmo_init_logging2() The osmo_init_logging() doesn't allow to specify a talloc context for libosmocore logging subsystem, so this is why the new version was introduced. Let's use it. Change-Id: I06c4a1f7f839f774bc428e89cfac30132bae904d --- M src/host/trxcon/logging.c 1 file changed, 2 insertions(+), 1 deletion(-) Approvals: Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/src/host/trxcon/logging.c b/src/host/trxcon/logging.c index a76b4d9..6a3043b 100644 --- a/src/host/trxcon/logging.c +++ b/src/host/trxcon/logging.c @@ -26,6 +26,7 @@ #include #include "logging.h" +#include "trxcon.h" static struct log_info_cat trx_log_info_cat[] = { [DAPP] = { @@ -79,7 +80,7 @@ int trx_log_init(const char *category_mask) { - osmo_init_logging(&trx_log_info); + osmo_init_logging2(tall_trx_ctx, &trx_log_info); if (category_mask) log_parse_category_mask(osmo_stderr_target, category_mask); -- To view, visit https://gerrit.osmocom.org/7667 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: I06c4a1f7f839f774bc428e89cfac30132bae904d Gerrit-PatchSet: 2 Gerrit-Project: osmocom-bb Gerrit-Branch: master Gerrit-Owner: Vadim Yanitskiy Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder From gerrit-no-reply at lists.osmocom.org Mon Apr 9 08:26:24 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Mon, 9 Apr 2018 08:26:24 +0000 Subject: [MERGED] osmocom-bb[master]: host/trxcon: don't free root talloc context In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: host/trxcon: don't free root talloc context ...................................................................... host/trxcon: don't free root talloc context This is useless, and prevents us from finding potential memory leaks at exit. Let's print talloc report instead of that. Change-Id: Ibf04942070d654e97c3ed77d69ab19e44602758c --- M src/host/trxcon/trxcon.c 1 file changed, 7 insertions(+), 2 deletions(-) Approvals: Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/src/host/trxcon/trxcon.c b/src/host/trxcon/trxcon.c index 43c98a5..1d0ecc3 100644 --- a/src/host/trxcon/trxcon.c +++ b/src/host/trxcon/trxcon.c @@ -309,9 +309,14 @@ /* Shutdown main state machine */ osmo_fsm_inst_free(trxcon_fsm); - /* Make Valgrind happy */ + /* Deinitialize logging */ log_fini(); - talloc_free(tall_trx_ctx); + + /** + * Print report for the root talloc context in order + * to be able to find and fix potential memory leaks. + */ + talloc_report_full(tall_trx_ctx, stderr); return rc; } -- To view, visit https://gerrit.osmocom.org/7668 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: Ibf04942070d654e97c3ed77d69ab19e44602758c Gerrit-PatchSet: 2 Gerrit-Project: osmocom-bb Gerrit-Branch: master Gerrit-Owner: Vadim Yanitskiy Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder From gerrit-no-reply at lists.osmocom.org Mon Apr 9 08:26:24 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Mon, 9 Apr 2018 08:26:24 +0000 Subject: [MERGED] osmocom-bb[master]: host/trxcon: track talloc NULL contexts by default In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: host/trxcon: track talloc NULL contexts by default ...................................................................... host/trxcon: track talloc NULL contexts by default In order to be able to introspect not only the root application context, but also all other contexts, e.g. allocated within libosmocore or other libraries, let's enable tracking the use of NULL contexts using the corresponding talloc API. Change-Id: Id21cd5ee340def443f7a5d0b2b8f37f41188dd87 --- M src/host/trxcon/trxcon.c 1 file changed, 3 insertions(+), 0 deletions(-) Approvals: Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/src/host/trxcon/trxcon.c b/src/host/trxcon/trxcon.c index 1d0ecc3..c746816 100644 --- a/src/host/trxcon/trxcon.c +++ b/src/host/trxcon/trxcon.c @@ -247,6 +247,9 @@ init_defaults(); handle_options(argc, argv); + /* Track the use of talloc NULL memory contexts */ + talloc_enable_null_tracking(); + /* Init talloc memory management system */ tall_trx_ctx = talloc_init("trxcon context"); msgb_talloc_ctx_init(tall_trx_ctx, 0); -- To view, visit https://gerrit.osmocom.org/7669 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: Id21cd5ee340def443f7a5d0b2b8f37f41188dd87 Gerrit-PatchSet: 2 Gerrit-Project: osmocom-bb Gerrit-Branch: master Gerrit-Owner: Vadim Yanitskiy Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder From gerrit-no-reply at lists.osmocom.org Mon Apr 9 08:28:13 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Mon, 9 Apr 2018 08:28:13 +0000 Subject: osmo-bts[master]: octphy: integrate octasics latest header release In-Reply-To: References: Message-ID: Patch Set 2: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7487 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Ic38d8dc35522205c4ffab583b4e61b5ef03cdba2 Gerrit-PatchSet: 2 Gerrit-Project: osmo-bts Gerrit-Branch: master Gerrit-Owner: dexter Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Neels Hofmeyr Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Mon Apr 9 08:29:23 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Mon, 9 Apr 2018 08:29:23 +0000 Subject: [MERGED] osmo-bts[master]: octphy: integrate octasics latest header release In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: octphy: integrate octasics latest header release ...................................................................... octphy: integrate octasics latest header release At the moment osmo-bts does not compile with the latest header file release from OCTSDR-2G-02.10.00-B1837-ALPHA as there are struct members removed and new ones added. The changes do not affect actual functionality in the existing code. The only affected parts are vty functions that query status information about the clock sync manager. - Add detection logic in configure.ac to detect if the affected struct members are present - Add conditional compiling to handle the different combinations of available struct members. Change-Id: Ic38d8dc35522205c4ffab583b4e61b5ef03cdba2 Related: SYS#4139 Patch-by: Octasic inc. --- M configure.ac M src/osmo-bts-octphy/octphy_hw_api.c M src/osmo-bts-octphy/octphy_hw_api.h M src/osmo-bts-octphy/octphy_vty.c 4 files changed, 181 insertions(+), 20 deletions(-) Approvals: Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/configure.ac b/configure.ac index 1d7379f..9767349 100644 --- a/configure.ac +++ b/configure.ac @@ -152,13 +152,6 @@ [], [#include ]) - AC_CHECK_MEMBER([tOCTVC1_HW_MSG_CLOCK_SYNC_MGR_STATS_RSP.ulSyncLossCnt], - AC_DEFINE([OCTPHY_USE_SYNC_LOSS_CNT], - [1], - [Define to 1 if your octphy header files renamed ulSyncLosseCnt to ulSyncLossCnt]), - [], - [#include ]) - AC_CHECK_MEMBER([tOCTVC1_HW_MSG_RF_PORT_INFO_ANTENNA_TX_CONFIG_RSP.TxConfig], AC_DEFINE([OCTPHY_USE_TX_CONFIG], [1], @@ -180,6 +173,83 @@ [], [#include ]) + AC_CHECK_MEMBER([tOCTVC1_HW_MSG_CLOCK_SYNC_MGR_INFO_RSP.ulClkSourceSelection], + AC_DEFINE([OCTPHY_USE_CLK_SOURCE_SELECTION], + [1], + [Define to 1 if your octphy header files supports ulClkSourceSelection in tOCTVC1_HW_MSG_CLOCK_SYNC_MGR_INFO_RSP]), + [], + [#include ]) + + AC_CHECK_MEMBER([tOCTVC1_HW_MSG_CLOCK_SYNC_MGR_STATS_RSP.lClockError], + AC_DEFINE([OCTPHY_USE_CLOCK_SYNC_MGR_STATS_CLOCK_ERROR], + [1], + [Define to 1 if your octphy header files supports lClockError in tOCTVC1_HW_MSG_CLOCK_SYNC_MGR_STATS_RSP]), + [], + [#include ]) + + AC_CHECK_MEMBER([tOCTVC1_HW_MSG_CLOCK_SYNC_MGR_STATS_RSP.lDroppedCycles], + AC_DEFINE([OCTPHY_USE_CLOCK_SYNC_MGR_STATS_DROPPED_CYCLES], + [1], + [Define to 1 if your octphy header files supports lDroppedCycles in tOCTVC1_HW_MSG_CLOCK_SYNC_MGR_STATS_RSP]), + [], + [#include ]) + + AC_CHECK_MEMBER([tOCTVC1_HW_MSG_CLOCK_SYNC_MGR_STATS_RSP.ulPllFreqHz], + AC_DEFINE([OCTPHY_USE_CLOCK_SYNC_MGR_STATS_PLL_FREQ_HZ], + [1], + [Define to 1 if your octphy header files supports ulPllFreqHz in tOCTVC1_HW_MSG_CLOCK_SYNC_MGR_STATS_RSP]), + [], + [#include ]) + + AC_CHECK_MEMBER([tOCTVC1_HW_MSG_CLOCK_SYNC_MGR_STATS_RSP.ulPllFractionalFreqHz], + AC_DEFINE([OCTPHY_USE_CLOCK_SYNC_MGR_STATS_PLL_FRACTIONAL_FREQ_HZ], + [1], + [Define to 1 if your octphy header files supports ulPllFractionalFreqHz in tOCTVC1_HW_MSG_CLOCK_SYNC_MGR_STATS_RSP]), + [], + [#include ]) + + AC_CHECK_MEMBER([tOCTVC1_HW_MSG_CLOCK_SYNC_MGR_STATS_RSP.ulSlipCnt], + AC_DEFINE([OCTPHY_USE_CLOCK_SYNC_MGR_STATS_SLIP_CNT], + [1], + [Define to 1 if your octphy header files supports ulSlipCnt in tOCTVC1_HW_MSG_CLOCK_SYNC_MGR_STATS_RSP]), + [], + [#include ]) + + AC_CHECK_MEMBER([tOCTVC1_HW_MSG_CLOCK_SYNC_MGR_STATS_RSP.ulSyncLosseCnt], + AC_DEFINE([OCTPHY_USE_CLOCK_SYNC_MGR_STATS_SYNC_LOSSE_CNT], + [1], + [Define to 1 if your octphy header files supports ulSyncLosseCnt in tOCTVC1_HW_MSG_CLOCK_SYNC_MGR_STATS_RSP]), + [], + [#include ]) + + AC_CHECK_MEMBER([tOCTVC1_HW_MSG_CLOCK_SYNC_MGR_STATS_RSP.ulSyncLossCnt], + AC_DEFINE([OCTPHY_USE_CLOCK_SYNC_MGR_STATS_SYNC_LOSS_CNT], + [1], + [Define to 1 if your octphy header files supports ulSyncLossCnt in tOCTVC1_HW_MSG_CLOCK_SYNC_MGR_STATS_RSP]), + [], + [#include ]) + + AC_CHECK_MEMBER([tOCTVC1_HW_MSG_CLOCK_SYNC_MGR_STATS_RSP.ulSourceState], + AC_DEFINE([OCTPHY_USE_CLOCK_SYNC_MGR_STATS_SOURCE_STATE], + [1], + [Define to 1 if your octphy header files supports ulSourceState in tOCTVC1_HW_MSG_CLOCK_SYNC_MGR_STATS_RSP]), + [], + [#include ]) + + AC_CHECK_MEMBER([tOCTVC1_HW_MSG_CLOCK_SYNC_MGR_STATS_RSP.ulDacState], + AC_DEFINE([OCTPHY_USE_CLOCK_SYNC_MGR_STATS_DAC_STATE], + [1], + [Define to 1 if your octphy header files supports ulDacState in tOCTVC1_HW_MSG_CLOCK_SYNC_MGR_STATS_RSP]), + [], + [#include ]) + + AC_CHECK_MEMBER([tOCTVC1_HW_MSG_CLOCK_SYNC_MGR_STATS_RSP.ulDriftElapseTimeUs], + AC_DEFINE([OCTPHY_USE_CLOCK_SYNC_MGR_STATS_DRIFT_ELAPSE_TIME_US], + [1], + [Define to 1 if your octphy header files supports ulDriftElapseTimeUs in tOCTVC1_HW_MSG_CLOCK_SYNC_MGR_STATS_RSP]), + [], + [#include ]) + CPPFLAGS=$oldCPPFLAGS fi diff --git a/src/osmo-bts-octphy/octphy_hw_api.c b/src/osmo-bts-octphy/octphy_hw_api.c index 91b84de..6da038b 100644 --- a/src/osmo-bts-octphy/octphy_hw_api.c +++ b/src/osmo-bts-octphy/octphy_hw_api.c @@ -275,6 +275,7 @@ { 0, NULL } }; +#if OCTPHY_USE_CLK_SOURCE_SELECTION == 1 static const struct value_string clocksync_sel_vals[] = { { cOCTVC1_HW_CLOCK_SYNC_MGR_SOURCE_SELECTION_ENUM_AUTOSELECT, "Autoselect" }, @@ -284,6 +285,7 @@ "Host Application" }, { 0, NULL } }; +#endif /* Chapter 12.15 */ static int get_clock_sync_compl_cb(struct octphy_hdl *fl1, struct msgb *resp, @@ -296,8 +298,14 @@ LOGP(DL1C, LOGL_INFO, "CLOCK-SYNC-MGR-INFO.resp Reference=%s ", get_value_string(clocksync_source_vals, cir->ulClkSourceRef)); + +#if OCTPHY_USE_CLK_SOURCE_SELECTION == 1 LOGPC(DL1C, LOGL_INFO, "Selection=%s)\n", get_value_string(clocksync_sel_vals, cir->ulClkSourceSelection)); +#else + LOGPC(DL1C, LOGL_INFO, "Clock Drift= %u Us\n", + cir->ulMaxDriftDurationUs); +#endif msgb_free(resp); return 0; @@ -330,18 +338,45 @@ mOCTVC1_HW_MSG_CLOCK_SYNC_MGR_STATS_RSP_SWAP(csr); - LOGP(DL1C, LOGL_INFO, "CLOCK-SYNC-MGR-STATS.resp State=%s, " - "ClockError=%d DroppedCycles=%d, PllFreqHz=%u, PllFract=%u, " - "SlipCnt=%u SyncLosses=%u SourceState=%u, DacValue=%u\n", - get_value_string(clocksync_state_vals, csr->ulState), - csr->lClockError, csr->lDroppedCycles, csr->ulPllFreqHz, - csr->ulPllFractionalFreqHz, csr->ulSlipCnt, -#if OCTPHY_USE_SYNC_LOSS_CNT == 1 - csr->ulSyncLossCnt, -#else - csr->ulSyncLosseCnt, + LOGP(DL1C, LOGL_INFO, "CLOCK-SYNC-MGR-STATS.resp"); + LOGPC(DL1C, LOGL_INFO, " State=%s,", + get_value_string(clocksync_state_vals, csr->ulState)); +#if OCTPHY_USE_CLOCK_SYNC_MGR_STATS_CLOCK_ERROR == 1 + LOGPC(DL1C, LOGL_INFO, " ClockError=%d,", csr->lClockError); #endif - csr->ulSourceState, csr->ulDacValue); +#if OCTPHY_USE_CLOCK_SYNC_MGR_STATS_DROPPED_CYCLES == 1 + LOGPC(DL1C, LOGL_INFO, " DroppedCycles=%d,", csr->lDroppedCycles); +#endif +#if OCTPHY_USE_CLOCK_SYNC_MGR_STATS_PLL_FREQ_HZ == 1 + LOGPC(DL1C, LOGL_INFO, " PllFreqHz=%u,", csr->ulPllFreqHz); +#endif +#if OCTPHY_USE_CLOCK_SYNC_MGR_STATS_PLL_FRACTIONAL_FREQ_HZ == 1 + LOGPC(DL1C, LOGL_INFO, " PllFract=%u,", csr->ulPllFractionalFreqHz); +#endif +#if OCTPHY_USE_CLOCK_SYNC_MGR_STATS_SLIP_CNT == 1 + LOGPC(DL1C, LOGL_INFO, " SlipCnt=%u,", csr->ulSlipCnt); +#endif +#if OCTPHY_USE_CLOCK_SYNC_MGR_STATS_SYNC_LOSS_CNT == 1 + LOGPC(DL1C, LOGL_INFO, " SyncLosses=%u,", csr->ulSyncLossCnt); +#endif +#if OCTPHY_USE_CLOCK_SYNC_MGR_STATS_SYNC_LOSSE_CNT == 1 + LOGPC(DL1C, LOGL_INFO, " SyncLosses=%u,", csr->ulSyncLosseCnt); +#endif +#if OCTPHY_USE_CLOCK_SYNC_MGR_STATS_SOURCE_STATE == 1 + LOGPC(DL1C, LOGL_INFO, " SourceState=%u,", csr->ulSourceState); +#endif +#if OCTPHY_USE_CLOCK_SYNC_MGR_STATS_DAC_STATE == 1 + LOGPC(DL1C, LOGL_INFO, " CLOCK-SYNC-MGR-STATS.resp State=%s,", + get_value_string(clocksync_dac_vals, csr->ulDacState)); +#endif + LOGPC(DL1C, LOGL_INFO, " LOCK-SYNC-MGR-USR-PROCESS.resp State=%s,", + get_value_string(usr_process_id, csr->ulOwnerProcessUid)); + LOGPC(DL1C, LOGL_INFO, " DacValue=%u,", csr->ulDacValue); +#if OCTPHY_USE_CLOCK_SYNC_MGR_STATS_DRIFT_ELAPSE_TIME_US == 1 + LOGPC(DL1C, LOGL_INFO, " DriftElapseTime=%u Us,", + csr->ulDriftElapseTimeUs); +#endif + LOGPC(DL1C, LOGL_INFO, "\n"); get_cb_data = (struct octphy_hw_get_cb_data*) data; get_cb_data->cb(resp,get_cb_data->data); diff --git a/src/osmo-bts-octphy/octphy_hw_api.h b/src/osmo-bts-octphy/octphy_hw_api.h index 78b7208..625fe86 100644 --- a/src/osmo-bts-octphy/octphy_hw_api.h +++ b/src/osmo-bts-octphy/octphy_hw_api.h @@ -34,6 +34,36 @@ { 0, NULL } }; +#if OCTPHY_USE_CLOCK_SYNC_MGR_STATS_DAC_STATE == 1 +static const struct value_string clocksync_dac_vals[] = { + { cOCTVC1_HW_CLOCK_SYNC_MGR_DAC_STATE_ENUM_UNUSED, "Unused" }, + { cOCTVC1_HW_CLOCK_SYNC_MGR_DAC_STATE_ENUM_MASTER, "Master" }, + { cOCTVC1_HW_CLOCK_SYNC_MGR_DAC_STATE_ENUM_SLAVE, "Slave" }, + { cOCTVC1_HW_CLOCK_SYNC_MGR_DAC_STATE_ENUM_FREE_RUNNING, "Free_Run"}, + { 0, NULL } +}; +#endif + +static const struct value_string usr_process_id[] = { + { cOCTVC1_USER_ID_PROCESS_ENUM_INVALID, "Invalid" }, + { cOCTVC1_USER_ID_PROCESS_ENUM_MAIN_APP, "MainApp" }, + { cOCTVC1_USER_ID_PROCESS_ENUM_MAIN_ROUTER, "MainRouter" }, + { cOCTVC1_USER_ID_PROCESS_ENUM_GSM_DL_0, "DL"}, + { cOCTVC1_USER_ID_PROCESS_ENUM_GSM_ULIM_0, "ULIM" }, + { cOCTVC1_USER_ID_PROCESS_ENUM_GSM_ULOM_0, "ULOM" }, + { cOCTVC1_USER_ID_PROCESS_ENUM_GSM_SCHED_0, "SCHED" }, +#ifdef cOCTVC1_USER_ID_PROCESS_ENUM_GSM_DECOMB + { cOCTVC1_USER_ID_PROCESS_ENUM_GSM_DECOMB, "DECOMB"}, +#endif +#ifdef cOCTVC1_USER_ID_PROCESS_ENUM_GSM_ULEQ + { cOCTVC1_USER_ID_PROCESS_ENUM_GSM_ULEQ, "ULEQ" }, +#endif +#ifdef cOCTVC1_USER_ID_PROCESS_ENUM_GSM_TEST + { cOCTVC1_USER_ID_PROCESS_ENUM_GSM_TEST, "TEST"}, +#endif + { 0, NULL } +}; + typedef void octphy_hw_get_cb(struct msgb *resp, void *data); struct octphy_hw_get_cb_data { diff --git a/src/osmo-bts-octphy/octphy_vty.c b/src/osmo-bts-octphy/octphy_vty.c index fb36493..e5e8eba 100644 --- a/src/osmo-bts-octphy/octphy_vty.c +++ b/src/osmo-bts-octphy/octphy_vty.c @@ -282,18 +282,44 @@ vty_out(vty, "State=%s%s", get_value_string(clocksync_state_vals, csr->ulState), VTY_NEWLINE); +#if OCTPHY_USE_CLOCK_SYNC_MGR_STATS_CLOCK_ERROR == 1 vty_out(vty, "ClockError=%d%s", csr->lClockError, VTY_NEWLINE); +#endif +#if OCTPHY_USE_CLOCK_SYNC_MGR_STATS_DROPPED_CYCLES == 1 vty_out(vty, "DroppedCycles=%d%s", csr->lDroppedCycles, VTY_NEWLINE); +#endif +#if OCTPHY_USE_CLOCK_SYNC_MGR_STATS_PLL_FREQ_HZ == 1 vty_out(vty, "PllFreqHz=%u%s", csr->ulPllFreqHz, VTY_NEWLINE); +#endif +#if OCTPHY_USE_CLOCK_SYNC_MGR_STATS_PLL_FRACTIONAL_FREQ_HZ == 1 vty_out(vty, "PllFract=%u%s", csr->ulPllFractionalFreqHz, VTY_NEWLINE); +#endif +#if OCTPHY_USE_CLOCK_SYNC_MGR_STATS_SLIP_CNT == 1 vty_out(vty, "SlipCnt=%u%s", csr->ulSlipCnt, VTY_NEWLINE); -#if OCTPHY_USE_SYNC_LOSS_CNT == 1 +#endif +#if OCTPHY_USE_CLOCK_SYNC_MGR_STATS_SYNC_LOSS_CNT == 1 vty_out(vty, "SyncLosses=%u%s", csr->ulSyncLossCnt, VTY_NEWLINE); -#else +#endif +#if OCTPHY_USE_CLOCK_SYNC_MGR_STATS_SYNC_LOSSE_CNT == 1 vty_out(vty, "SyncLosses=%u%s", csr->ulSyncLosseCnt, VTY_NEWLINE); #endif +#if OCTPHY_USE_CLOCK_SYNC_MGR_STATS_SOURCE_STATE == 1 vty_out(vty, "SourceState=%u%s", csr->ulSourceState, VTY_NEWLINE); +#endif vty_out(vty, "DacValue=%u%s", csr->ulDacValue, VTY_NEWLINE); +#if OCTPHY_USE_CLOCK_SYNC_MGR_STATS_DAC_STATE == 1 + vty_out(vty, "CLOCK-SYNC-MGR-STATS.resp State=%s%s", + get_value_string(clocksync_dac_vals, csr->ulDacState), + VTY_NEWLINE); +#endif + vty_out(vty, "LOCK-SYNC-MGR-USR-PROCESS.resp State=%s%s", + get_value_string(usr_process_id, csr->ulOwnerProcessUid), + VTY_NEWLINE); + vty_out(vty, "DacValue=%u%s", csr->ulDacValue, VTY_NEWLINE); +#if OCTPHY_USE_CLOCK_SYNC_MGR_STATS_DRIFT_ELAPSE_TIME_US == 1 + vty_out(vty, "DriftElapseTime=%u Us%s", csr->ulDriftElapseTimeUs, + VTY_NEWLINE); +#endif } DEFUN(show_clk_sync_stats, show_clk_sync_stats_cmd, -- To view, visit https://gerrit.osmocom.org/7487 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: Ic38d8dc35522205c4ffab583b4e61b5ef03cdba2 Gerrit-PatchSet: 3 Gerrit-Project: osmo-bts Gerrit-Branch: master Gerrit-Owner: dexter Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Neels Hofmeyr From jenkins at lists.osmocom.org Mon Apr 9 08:32:51 2018 From: jenkins at lists.osmocom.org (jenkins at lists.osmocom.org) Date: Mon, 9 Apr 2018 08:32:51 +0000 (UTC) Subject: =?UTF-8?Q?Build_failed_in_Jenkins:_master-osmo-gmr_=C2=BB_a1=3Ddefau?= =?UTF-8?Q?lt,a2=3Ddefault,a3=3Ddefault,osmocom-master-debian9_#345?= In-Reply-To: <26948684.158.1523231873871.JavaMail.jenkins@jenkins.osmocom.org> References: <26948684.158.1523231873871.JavaMail.jenkins@jenkins.osmocom.org> Message-ID: <292403498.173.1523262771274.JavaMail.jenkins@jenkins.osmocom.org> See ------------------------------------------ Started by upstream project "master-osmo-gmr" build number 345 originally caused by: Started by upstream project "master-libosmocore" build number 197 originally caused by: Started by an SCM change Building remotely on build2-deb9build-ansible (ttcn3 osmo-gsm-tester-build osmocom-gerrit-debian9 osmocom-master-debian9 coverity) in workspace > git rev-parse --is-inside-work-tree # timeout=10 Fetching changes from the remote Git repository > git config remote.origin.url git://git.osmocom.org/osmo-gmr # timeout=10 Fetching upstream changes from git://git.osmocom.org/osmo-gmr > git --version # timeout=10 > git fetch --tags --progress git://git.osmocom.org/osmo-gmr +refs/heads/*:refs/remotes/origin/* Checking out Revision adb8cc6aa9453dfc339de53ae641067136a031ec (refs/remotes/origin/master) > git config core.sparsecheckout # timeout=10 > git checkout -f adb8cc6aa9453dfc339de53ae641067136a031ec Commit message: "Add contrib/jenkins.sh script, like other osmo-* repositories" > git rev-list --no-walk adb8cc6aa9453dfc339de53ae641067136a031ec # timeout=10 [osmocom-master-debian9] $ /bin/sh -xe /tmp/jenkins7727641662637634445.sh + ./contrib/jenkins.sh + base= + deps= + inst= + export deps inst + osmo-clean-workspace.sh + chmod -R +w . + git checkout -f HEAD + git clean -dxf -e -e layer1-headers Skipping repository deps/libosmocore + [ -d ] + git -C checkout -f HEAD error: pathspec 'HEAD' did not match any file(s) known to git. Build step 'Execute shell' marked build as failure [WARNINGS]Skipping publisher since build result is FAILURE From jenkins at lists.osmocom.org Mon Apr 9 08:34:30 2018 From: jenkins at lists.osmocom.org (jenkins at lists.osmocom.org) Date: Mon, 9 Apr 2018 08:34:30 +0000 (UTC) Subject: =?UTF-8?Q?Build_failed_in_Jenkins:_master-osmo-bts_=C2=BB_sysmo,?= =?UTF-8?Q?femtobts=5Fv2.7,default,osmocom-master-debian9_#481?= Message-ID: <1151113468.174.1523262870721.JavaMail.jenkins@jenkins.osmocom.org> See Changes: [laforge] octphy: integrate octasics latest header release ------------------------------------------ Started by upstream project "master-osmo-bts" build number 481 originally caused by: Started by an SCM change Building remotely on build2-deb9build-ansible (ttcn3 osmo-gsm-tester-build osmocom-gerrit-debian9 osmocom-master-debian9 coverity) in workspace > git rev-parse --is-inside-work-tree # timeout=10 Fetching changes from the remote Git repository > git config remote.origin.url git://git.osmocom.org/osmo-bts # timeout=10 Fetching upstream changes from git://git.osmocom.org/osmo-bts > git --version # timeout=10 > git fetch --tags --progress git://git.osmocom.org/osmo-bts +refs/heads/*:refs/remotes/origin/* Checking out Revision dd4a6518f2118775c12affc02ac1e0dcc848d89a (refs/remotes/origin/master) > git config core.sparsecheckout # timeout=10 > git checkout -f dd4a6518f2118775c12affc02ac1e0dcc848d89a Commit message: "octphy: integrate octasics latest header release" > git rev-list --no-walk e5518b07d6fc3375a9e4004a2ed2680dbb2d178e # timeout=10 [osmocom-master-debian9] $ /bin/sh -xe /tmp/jenkins8825622255725683269.sh + ./contrib/jenkins_bts_model.sh sysmo + ./contrib/jenkins_sysmobts.sh + base= + deps= + inst= + export deps inst + osmo-clean-workspace.sh + chmod -R +w . + git checkout -f HEAD + git clean -dxf -e -e layer1-headers Skipping repository deps/libosmocore + [ -d ] + git -C checkout -f HEAD error: pathspec 'HEAD' did not match any file(s) known to git. Build step 'Execute shell' marked build as failure [WARNINGS]Skipping publisher since build result is FAILURE From jenkins at lists.osmocom.org Mon Apr 9 08:36:49 2018 From: jenkins at lists.osmocom.org (jenkins at lists.osmocom.org) Date: Mon, 9 Apr 2018 08:36:49 +0000 (UTC) Subject: =?UTF-8?Q?Build_failed_in_Jenkins:_master-osmo-bts_=C2=BB_sysmo, sup?= =?UTF-8?Q?erfemto=5Fv3.0.1pre,default,osmocom-master-debian9_#481?= Message-ID: <1579373629.175.1523263009490.JavaMail.jenkins@jenkins.osmocom.org> See Changes: [laforge] octphy: integrate octasics latest header release ------------------------------------------ Started by upstream project "master-osmo-bts" build number 481 originally caused by: Started by an SCM change Building remotely on build2-deb9build-ansible (ttcn3 osmo-gsm-tester-build osmocom-gerrit-debian9 osmocom-master-debian9 coverity) in workspace > git rev-parse --is-inside-work-tree # timeout=10 Fetching changes from the remote Git repository > git config remote.origin.url git://git.osmocom.org/osmo-bts # timeout=10 Fetching upstream changes from git://git.osmocom.org/osmo-bts > git --version # timeout=10 > git fetch --tags --progress git://git.osmocom.org/osmo-bts +refs/heads/*:refs/remotes/origin/* Checking out Revision dd4a6518f2118775c12affc02ac1e0dcc848d89a (refs/remotes/origin/master) > git config core.sparsecheckout # timeout=10 > git checkout -f dd4a6518f2118775c12affc02ac1e0dcc848d89a Commit message: "octphy: integrate octasics latest header release" > git rev-list --no-walk e5518b07d6fc3375a9e4004a2ed2680dbb2d178e # timeout=10 [osmocom-master-debian9] $ /bin/sh -xe /tmp/jenkins762961299735882106.sh + ./contrib/jenkins_bts_model.sh sysmo + ./contrib/jenkins_sysmobts.sh + base= + deps= + inst= + export deps inst + osmo-clean-workspace.sh + chmod -R +w . + git checkout -f HEAD + git clean -dxf -e -e layer1-headers Skipping repository deps/libosmocore + [ -d ] + git -C checkout -f HEAD error: pathspec 'HEAD' did not match any file(s) known to git. Build step 'Execute shell' marked build as failure [WARNINGS]Skipping publisher since build result is FAILURE From jenkins at lists.osmocom.org Mon Apr 9 08:41:08 2018 From: jenkins at lists.osmocom.org (jenkins at lists.osmocom.org) Date: Mon, 9 Apr 2018 08:41:08 +0000 (UTC) Subject: =?UTF-8?Q?Build_failed_in_Jenkins:_master-osmo-bts_=C2=BB_sysmo,?= =?UTF-8?Q?femtobts=5Fv2.7,default,osmocom-master-debian9_#482?= In-Reply-To: <1151113468.174.1523262870721.JavaMail.jenkins@jenkins.osmocom.org> References: <1151113468.174.1523262870721.JavaMail.jenkins@jenkins.osmocom.org> Message-ID: <306915603.177.1523263268691.JavaMail.jenkins@jenkins.osmocom.org> See ------------------------------------------ Started by upstream project "master-osmo-bts" build number 482 originally caused by: Started by upstream project "master-libosmo-abis" build number 269 originally caused by: Started by upstream project "master-libosmocore" build number 197 originally caused by: Started by an SCM change Building remotely on build2-deb9build-ansible (ttcn3 osmo-gsm-tester-build osmocom-gerrit-debian9 osmocom-master-debian9 coverity) in workspace > git rev-parse --is-inside-work-tree # timeout=10 Fetching changes from the remote Git repository > git config remote.origin.url git://git.osmocom.org/osmo-bts # timeout=10 Fetching upstream changes from git://git.osmocom.org/osmo-bts > git --version # timeout=10 > git fetch --tags --progress git://git.osmocom.org/osmo-bts +refs/heads/*:refs/remotes/origin/* Checking out Revision dd4a6518f2118775c12affc02ac1e0dcc848d89a (refs/remotes/origin/master) > git config core.sparsecheckout # timeout=10 > git checkout -f dd4a6518f2118775c12affc02ac1e0dcc848d89a Commit message: "octphy: integrate octasics latest header release" > git rev-list --no-walk dd4a6518f2118775c12affc02ac1e0dcc848d89a # timeout=10 [osmocom-master-debian9] $ /bin/sh -xe /tmp/jenkins7797860822729055675.sh + ./contrib/jenkins_bts_model.sh sysmo + ./contrib/jenkins_sysmobts.sh + base= + deps= + inst= + export deps inst + osmo-clean-workspace.sh + chmod -R +w . + git checkout -f HEAD + git clean -dxf -e -e layer1-headers Skipping repository deps/libosmocore + [ -d ] + git -C checkout -f HEAD error: pathspec 'HEAD' did not match any file(s) known to git. Build step 'Execute shell' marked build as failure [WARNINGS]Skipping publisher since build result is FAILURE From jenkins at lists.osmocom.org Mon Apr 9 08:44:25 2018 From: jenkins at lists.osmocom.org (jenkins at lists.osmocom.org) Date: Mon, 9 Apr 2018 08:44:25 +0000 (UTC) Subject: =?UTF-8?Q?Jenkins_build_is_back_to_normal_:_master-osmo-bts_=C2=BB_sysmo?= =?UTF-8?Q?,superfemto=5Fv3.0.1pre,default,osmocom-master-debian9_#482?= In-Reply-To: <1579373629.175.1523263009490.JavaMail.jenkins@jenkins.osmocom.org> References: <1579373629.175.1523263009490.JavaMail.jenkins@jenkins.osmocom.org> Message-ID: <176597311.178.1523263465941.JavaMail.jenkins@jenkins.osmocom.org> See From jenkins at lists.osmocom.org Mon Apr 9 08:52:35 2018 From: jenkins at lists.osmocom.org (jenkins at lists.osmocom.org) Date: Mon, 9 Apr 2018 08:52:35 +0000 (UTC) Subject: =?UTF-8?Q?Jenkins_build_is_back_to_normal_:_master-osmo-pc?= =?UTF-8?Q?u_=C2=BB_master,osmocom-master-debian9,none,False_#364?= In-Reply-To: <1669641791.171.1523259377522.JavaMail.jenkins@jenkins.osmocom.org> References: <1669641791.171.1523259377522.JavaMail.jenkins@jenkins.osmocom.org> Message-ID: <873711616.179.1523263955970.JavaMail.jenkins@jenkins.osmocom.org> See From gerrit-no-reply at lists.osmocom.org Mon Apr 9 09:31:29 2018 From: gerrit-no-reply at lists.osmocom.org (Stefan Sperling) Date: Mon, 9 Apr 2018 09:31:29 +0000 Subject: [PATCH] osmo-ttcn3-hacks[master]: improve failure diagnostics in TC_vty_msisdn_isd HLR test Message-ID: Review at https://gerrit.osmocom.org/7684 improve failure diagnostics in TC_vty_msisdn_isd HLR test Check for reception of an Insert Subscriber Data with outdated MSISDN. This happened to me while working on a fix for issue OS#2785, and it seems to be an easy mistake implementations can make. Catch this situation in the test and log an explicit message about the problem. Related: OS#2785 Change-Id: Ib0809617cca621cc22f29b078828057fd49f27e5 --- M hlr/HLR_Tests.ttcn 1 file changed, 6 insertions(+), 0 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-ttcn3-hacks refs/changes/84/7684/1 diff --git a/hlr/HLR_Tests.ttcn b/hlr/HLR_Tests.ttcn index 8b21626..c4b3ffb 100644 --- a/hlr/HLR_Tests.ttcn +++ b/hlr/HLR_Tests.ttcn @@ -480,6 +480,12 @@ sub.msisdn := new_msisdn; setverdict(pass); } + [] GSUP.receive(tr_GSUP_ISD_REQ(sub.imsi, sub.msisdn)) { + log("received ISD req with old MSISDN"); + GSUP.send(ts_GSUP_ISD_RES(sub.imsi)); + sub.msisdn := new_msisdn; + setverdict(fail); + } [] GSUP.receive { repeat; } [] T.timeout { setverdict(fail, "Timeout waiting for ISD.req"); -- To view, visit https://gerrit.osmocom.org/7684 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Ib0809617cca621cc22f29b078828057fd49f27e5 Gerrit-PatchSet: 1 Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Owner: Stefan Sperling From gerrit-no-reply at lists.osmocom.org Mon Apr 9 09:33:42 2018 From: gerrit-no-reply at lists.osmocom.org (Stefan Sperling) Date: Mon, 9 Apr 2018 09:33:42 +0000 Subject: [PATCH] osmo-ttcn3-hacks[master]: improve failure diagnostics in TC_vty_msisdn_isd HLR test In-Reply-To: References: Message-ID: Hello Jenkins Builder, I'd like you to reexamine a change. Please visit https://gerrit.osmocom.org/7684 to look at the new patch set (#2). improve failure diagnostics in TC_vty_msisdn_isd HLR test Check for reception of an Insert Subscriber Data with outdated MSISDN. This happened to me while working on a fix for issue OS#2785, and it seems to be an easy mistake implementations can make. Catch this situation in the test and log an explicit message about the problem. Related: OS#2785 Change-Id: Ib0809617cca621cc22f29b078828057fd49f27e5 --- M hlr/HLR_Tests.ttcn 1 file changed, 4 insertions(+), 0 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-ttcn3-hacks refs/changes/84/7684/2 diff --git a/hlr/HLR_Tests.ttcn b/hlr/HLR_Tests.ttcn index 8b21626..90a00bf 100644 --- a/hlr/HLR_Tests.ttcn +++ b/hlr/HLR_Tests.ttcn @@ -480,6 +480,10 @@ sub.msisdn := new_msisdn; setverdict(pass); } + [] GSUP.receive(tr_GSUP_ISD_REQ(sub.imsi, sub.msisdn)) { + log("received ISD req with old MSISDN"); + setverdict(fail); + } [] GSUP.receive { repeat; } [] T.timeout { setverdict(fail, "Timeout waiting for ISD.req"); -- To view, visit https://gerrit.osmocom.org/7684 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newpatchset Gerrit-Change-Id: Ib0809617cca621cc22f29b078828057fd49f27e5 Gerrit-PatchSet: 2 Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Owner: Stefan Sperling Gerrit-Reviewer: Jenkins Builder From gerrit-no-reply at lists.osmocom.org Mon Apr 9 09:58:52 2018 From: gerrit-no-reply at lists.osmocom.org (Stefan Sperling) Date: Mon, 9 Apr 2018 09:58:52 +0000 Subject: [PATCH] osmo-hlr[master]: notify GSUP clients when HLR subscriber information changes Message-ID: Review at https://gerrit.osmocom.org/7685 notify GSUP clients when HLR subscriber information changes Add a function which triggers subscriber update notifications to all connected GSUP clients, and invoke it when the MSISDN of a subscriber is changed via VTY. This makes the TTCN3 HLR test TC_vty_msisdn_isd pass. Note that the new function currently relies on implementation details of the Location Update Operation (luop) code. Because of this we currently log a slightly misleading message when the updated Insert Subscriber Data message is sent: "luop.c:161 LU OP state change: LU RECEIVED -> ISD SENT" This message is misleading because, in fact, no location update message was received from a GSUP client at that moment. So while this change fixes the externally visible behaviour, we may want to follow this up with some refactoring to avoid relying on luop internals. It seems acceptable to do that in a separate step since such a change will be more involved and harder to review. We may want to trigger such notifications in other situations as well. This is left for future work, too. There are no TTCN3 test cases for other situations yet, as far as I can see. Related: OS#2785 Change-Id: Iffe1d7afb9fc7dbae542f70bbf5391ddc08a14b4 --- M src/hlr.c M src/hlr.h M src/hlr_vty_subscr.c 3 files changed, 37 insertions(+), 0 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-hlr refs/changes/85/7685/1 diff --git a/src/hlr.c b/src/hlr.c index 838b1bc..2ae4285 100644 --- a/src/hlr.c +++ b/src/hlr.c @@ -46,6 +46,35 @@ static struct hlr *g_hlr; +/* Trigger 'Insert Subscriber Data' messages to all connected GSUP clients. + * + * \param[in] subscr A subscriber we have new data to send for. + */ +void +osmo_hlr_subscriber_update_notify(struct hlr_subscriber *subscr) +{ + struct osmo_gsup_conn *co; + + if (g_hlr->gs == NULL) + return; + + llist_for_each_entry(co, &g_hlr->gs->clients, list) { + struct lu_operation *luop = lu_op_alloc_conn(co); + if (!luop) { + LOGP(DMAIN, LOGL_ERROR, + "IMSI='%s': Cannot notify GSUP client, cannot allocate lu_operation," + " for %s:%u\n", subscr->imsi, + co && co->conn && co->conn->server? co->conn->server->addr : "unset", + co && co->conn && co->conn->server? co->conn->server->port : 0); + continue; + } + luop->subscr = *subscr; + luop->state = LU_S_LU_RECEIVED; /* Pretend we received a location update. */ + lu_op_tx_insert_subscr_data(luop); + lu_op_free(luop); + } +} + /*********************************************************************** * Send Auth Info handling ***********************************************************************/ diff --git a/src/hlr.h b/src/hlr.h index f63bc2b..368a052 100644 --- a/src/hlr.h +++ b/src/hlr.h @@ -38,3 +38,7 @@ /* Local bind addr */ char *gsup_bind_addr; }; + +struct hlr_subscriber; + +void osmo_hlr_subscriber_update_notify(struct hlr_subscriber *subscr); diff --git a/src/hlr_vty_subscr.c b/src/hlr_vty_subscr.c index 7191a1c..4092a8f 100644 --- a/src/hlr_vty_subscr.c +++ b/src/hlr_vty_subscr.c @@ -257,6 +257,10 @@ vty_out(vty, "%% Updated subscriber IMSI='%s' to MSISDN='%s'%s", subscr.imsi, msisdn, VTY_NEWLINE); + + if (db_subscr_get_by_msisdn(g_hlr->dbc, msisdn, &subscr) == 0) + osmo_hlr_subscriber_update_notify(&subscr); + return CMD_SUCCESS; } -- To view, visit https://gerrit.osmocom.org/7685 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Iffe1d7afb9fc7dbae542f70bbf5391ddc08a14b4 Gerrit-PatchSet: 1 Gerrit-Project: osmo-hlr Gerrit-Branch: master Gerrit-Owner: Stefan Sperling From gerrit-no-reply at lists.osmocom.org Mon Apr 9 10:06:14 2018 From: gerrit-no-reply at lists.osmocom.org (Stefan Sperling) Date: Mon, 9 Apr 2018 10:06:14 +0000 Subject: [PATCH] osmo-ttcn3-hacks[master]: update expected HLR test results to unexpected 'pass' Message-ID: Review at https://gerrit.osmocom.org/7686 update expected HLR test results to unexpected 'pass' With https://gerrit.osmocom.org/#/c/7685/ the test TC_vty_msisdn_isd is now passing. Update expected log output accordingly. Change-Id: Ie8cfbef5a0adcb927917b0623f89309479a60001 Depends: Iffe1d7afb9fc7dbae542f70bbf5391ddc08a14b4 Related: OS#2785 --- M hlr/expected-results.log 1 file changed, 4 insertions(+), 9 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-ttcn3-hacks refs/changes/86/7686/1 diff --git a/hlr/expected-results.log b/hlr/expected-results.log index be8000c..4d95479 100644 --- a/hlr/expected-results.log +++ b/hlr/expected-results.log @@ -1,8 +1,8 @@ - - + + Unexpected SAI ERROR Cause - HLR_Tests.ttcn:558 HLR_Tests control part + HLR_Tests.ttcn:562 HLR_Tests control part HLR_Tests.ttcn:364 TC_gsup_sai_err_invalid_imsi testcase @@ -11,12 +11,7 @@ - - Timeout waiting for ISD.req - HLR_Tests.ttcn:564 HLR_Tests control part - HLR_Tests.ttcn:485 TC_vty_msisdn_isd testcase - - + -- To view, visit https://gerrit.osmocom.org/7686 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Ie8cfbef5a0adcb927917b0623f89309479a60001 Gerrit-PatchSet: 1 Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Owner: Stefan Sperling From gerrit-no-reply at lists.osmocom.org Mon Apr 9 10:07:21 2018 From: gerrit-no-reply at lists.osmocom.org (Stefan Sperling) Date: Mon, 9 Apr 2018 10:07:21 +0000 Subject: [PATCH] osmo-ttcn3-hacks[master]: update expected HLR test results to prevent unexpected 'pass' In-Reply-To: References: Message-ID: Hello Jenkins Builder, I'd like you to reexamine a change. Please visit https://gerrit.osmocom.org/7686 to look at the new patch set (#2). update expected HLR test results to prevent unexpected 'pass' With https://gerrit.osmocom.org/#/c/7685/ the test TC_vty_msisdn_isd is now passing. Update expected log output accordingly. Change-Id: Ie8cfbef5a0adcb927917b0623f89309479a60001 Depends: Iffe1d7afb9fc7dbae542f70bbf5391ddc08a14b4 Related: OS#2785 --- M hlr/expected-results.log 1 file changed, 4 insertions(+), 9 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-ttcn3-hacks refs/changes/86/7686/2 diff --git a/hlr/expected-results.log b/hlr/expected-results.log index be8000c..4d95479 100644 --- a/hlr/expected-results.log +++ b/hlr/expected-results.log @@ -1,8 +1,8 @@ - - + + Unexpected SAI ERROR Cause - HLR_Tests.ttcn:558 HLR_Tests control part + HLR_Tests.ttcn:562 HLR_Tests control part HLR_Tests.ttcn:364 TC_gsup_sai_err_invalid_imsi testcase @@ -11,12 +11,7 @@ - - Timeout waiting for ISD.req - HLR_Tests.ttcn:564 HLR_Tests control part - HLR_Tests.ttcn:485 TC_vty_msisdn_isd testcase - - + -- To view, visit https://gerrit.osmocom.org/7686 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newpatchset Gerrit-Change-Id: Ie8cfbef5a0adcb927917b0623f89309479a60001 Gerrit-PatchSet: 2 Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Owner: Stefan Sperling Gerrit-Reviewer: Jenkins Builder From gerrit-no-reply at lists.osmocom.org Mon Apr 9 10:27:25 2018 From: gerrit-no-reply at lists.osmocom.org (Stefan Sperling) Date: Mon, 9 Apr 2018 10:27:25 +0000 Subject: [PATCH] osmo-bts[master]: LC15: Fix missing fill frame and GSM 05.08 mandatory frame In-Reply-To: References: Message-ID: Hello Vadim Yanitskiy, Jenkins Builder, I'd like you to reexamine a change. Please visit https://gerrit.osmocom.org/5753 to look at the new patch set (#6). LC15: Fix missing fill frame and GSM 05.08 mandatory frame It was discovered that the LC15 BTS does not send L2 fill frame in case there is nothing to transmit. This leads to bad RXQUAL reported by MS during signaling in TCH channel. BTS needs to send L2 fill frame in case there is nothing to transmit as indicated in GSM TS 05.08, section 8.3. Related: OS#1950 Change-Id: I40e9bf9438c0b400e4d29eb39ffae37207e34db6 --- M src/common/msg_utils.c M src/osmo-bts-litecell15/l1_if.c 2 files changed, 127 insertions(+), 15 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-bts refs/changes/53/5753/6 diff --git a/src/common/msg_utils.c b/src/common/msg_utils.c index f936c98..bab533b 100644 --- a/src/common/msg_utils.c +++ b/src/common/msg_utils.c @@ -379,15 +379,18 @@ static const uint8_t f[] = { 52, 53, 54, 55, 56, 57, 58, 59 }, h0[] = { 0, 2, 4, 6, 52, 54, 56, 58 }, h1[] = { 14, 16, 18, 20, 66, 68, 70, 72 }; - if (lchan->tch_mode == GSM48_CMODE_SPEECH_V1) { + + switch (lchan->tch_mode) { + case GSM48_CMODE_SPEECH_V1: + case GSM48_CMODE_SPEECH_AMR: if (lchan->type == GSM_LCHAN_TCH_F) return fn_chk(f, fn, ARRAY_SIZE(f)); - else - return fn_chk(lchan->nr ? h1 : h0, fn, - lchan->nr ? ARRAY_SIZE(h1) : - ARRAY_SIZE(h0)); + + return fn_chk(lchan->nr ? h1 : h0, fn, + lchan->nr ? ARRAY_SIZE(h1) : ARRAY_SIZE(h0)); + default: + return false; } - return false; } /*! \brief Check if DTX DL AMR is enabled for a given lchan (it have proper type, @@ -465,16 +468,71 @@ */ uint8_t repeat_last_sid(struct gsm_lchan *lchan, uint8_t *dst, uint32_t fn) { - /* FIXME: add EFR support */ - if (lchan->tch_mode == GSM48_CMODE_SPEECH_EFR) + uint8_t payload_len; + + static const uint8_t amr_sid_first_zero[] = { + 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00 + }; + + switch (lchan->tch_mode) { + case GSM48_CMODE_SPEECH_EFR: + /* FIXME: add EFR support */ return 0; - if (lchan->tch_mode != GSM48_CMODE_SPEECH_AMR) { - if (dtx_sched_optional(lchan, fn)) - return 0; - } else + case GSM48_CMODE_SPEECH_AMR: if (dtx_amr_sid_optional(lchan, fn)) return 0; + + if (lchan->rsl_cmode != RSL_CMOD_SPD_SPEECH) + break; + + if (!!lchan->tch.dtx.len) + break; + + /* Send zero SID FIRST frame */ + payload_len = sizeof(amr_sid_first_zero); + memcpy(dst, amr_sid_first_zero, payload_len); + + /* Debug print */ + LOGP(DL1C, LOGL_DEBUG, "%s %s %s: Sending zero speech frame " + "for tch_mode=%s\n", gsm_fn_as_gsmtime_str(fn), + gsm_ts_name(lchan->ts), get_value_string(gsm_chan_t_names, lchan->type), + get_value_string(gsm48_chan_mode_names, lchan->tch_mode)); + + return payload_len + 1; + + default: + if (dtx_sched_optional(lchan, fn)) + return 0; + + if (!lchan->ts->trx->bts->dtxd) + break; + + /* Determine the payload length */ + switch (lchan->type) { + case GSM_LCHAN_TCH_F: + payload_len = GSM_FR_BYTES; + break; + case GSM_LCHAN_TCH_H: + payload_len = GSM_HR_BYTES; + break; + default: + return 0; + } + + /** + * Need to send zeroed TCH frame on mandatory fn, + * defined in GSM TS 05.08, section 8.3 + */ + memset(dst, 0x00, payload_len); + + LOGP(DL1C, LOGL_DEBUG, "%s %s %s: Sending zero speech frame " + "for tch_mode=%s\n", gsm_fn_as_gsmtime_str(fn), + gsm_ts_name(lchan->ts), get_value_string(gsm_chan_t_names, lchan->type), + get_value_string(gsm48_chan_mode_names, lchan->tch_mode)); + + return payload_len + 1; + } if (lchan->tch.dtx.len) { if (dtx_dl_amr_enabled(lchan)) { @@ -502,6 +560,12 @@ } memcpy(dst, lchan->tch.dtx.cache, lchan->tch.dtx.len); lchan->tch.dtx.fn = fn; + + LOGP(DL1C, LOGL_DEBUG, "%s %s %s: Sending SID buffer " + "for tch_mode=%s\n", gsm_fn_as_gsmtime_str(fn), + gsm_ts_name(lchan->ts), get_value_string(gsm_chan_t_names, lchan->type), + get_value_string(gsm48_chan_mode_names, lchan->tch_mode)); + return lchan->tch.dtx.len + 1; } diff --git a/src/osmo-bts-litecell15/l1_if.c b/src/osmo-bts-litecell15/l1_if.c index 9e122cd..cb6cf7e 100644 --- a/src/osmo-bts-litecell15/l1_if.c +++ b/src/osmo-bts-litecell15/l1_if.c @@ -331,6 +331,44 @@ return empty_req; } +/* fill frame PH-DATA.req from l1sap primitive */ +static GsmL1_PhDataReq_t * +fill_req_from_l1sap(GsmL1_Prim_t *l1p, struct lc15l1_hdl *fl1, + uint8_t tn, uint32_t fn, uint8_t sapi, uint8_t sub_ch, uint8_t block_nr) +{ + GsmL1_PhDataReq_t *data_req = &l1p->u.phDataReq; + GsmL1_MsgUnitParam_t *msu_param; + uint8_t *l1_payload; + + msu_param = &data_req->msgUnitParam; + l1_payload = &msu_param->u8Buffer[0]; + l1p->id = GsmL1_PrimId_PhDataReq; + + memset(l1_payload, 0x2b, GSM_MACBLOCK_LEN); + + /* address field */ + l1_payload[0] = 0x03; + /* control field */ + l1_payload[1] = 0x03; + /* length field */ + l1_payload[2] = 0x01; + + /* copy fields from PH-RTS.ind */ + data_req->hLayer1 = (HANDLE)fl1->hLayer1; + data_req->u8Tn = tn; + data_req->u32Fn = fn; + data_req->sapi = sapi; + data_req->subCh = sub_ch; + data_req->u8BlockNbr = block_nr; + data_req->msgUnitParam.u8Size = GSM_MACBLOCK_LEN; + + LOGP(DL1C, LOGL_DEBUG, "%s tn=%u: Sending fill frame on in none DTX mode " + "SAPI=%d, SubCh=%d, BlockNr=%d\n", gsm_fn_as_gsmtime_str(fn), + tn, sapi, sub_ch, block_nr); + + return data_req; +} + static int ph_data_req(struct gsm_bts_trx *trx, struct msgb *msg, struct osmo_phsap_prim *l1sap, bool use_cache) { @@ -460,10 +498,20 @@ osmo_hexdump(l1p->u.phDataReq.msgUnitParam.u8Buffer, l1p->u.phDataReq.msgUnitParam.u8Size)); } else { - /* empty frame */ - GsmL1_Prim_t *l1p = msgb_l1prim(l1msg); - empty_req_from_l1sap(l1p, fl1, u8Tn, u32Fn, sapi, subCh, u8BlockNbr); + GsmL1_Prim_t *l1p = msgb_l1prim(l1msg); + if (lchan->rsl_cmode == RSL_CMOD_SPD_SIGN) { + /* fill frame */ + fill_req_from_l1sap(l1p, fl1, u8Tn, u32Fn, sapi, subCh, u8BlockNbr); + } else { + if (lchan->ts->trx->bts->dtxd) { + /* empty frame */ + empty_req_from_l1sap(l1p, fl1, u8Tn, u32Fn, sapi, subCh, u8BlockNbr); + } else { + /* fill frame */ + fill_req_from_l1sap(l1p, fl1, u8Tn, u32Fn, sapi, subCh, u8BlockNbr); + } + } } /* send message to DSP's queue */ -- To view, visit https://gerrit.osmocom.org/5753 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newpatchset Gerrit-Change-Id: I40e9bf9438c0b400e4d29eb39ffae37207e34db6 Gerrit-PatchSet: 6 Gerrit-Project: osmo-bts Gerrit-Branch: master Gerrit-Owner: Minh-Quang Nguyen Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Max Gerrit-Reviewer: Minh-Quang Nguyen Gerrit-Reviewer: Pau Espin Pedrol Gerrit-Reviewer: Stefan Sperling Gerrit-Reviewer: Vadim Yanitskiy From gerrit-no-reply at lists.osmocom.org Mon Apr 9 10:28:08 2018 From: gerrit-no-reply at lists.osmocom.org (Stefan Sperling) Date: Mon, 9 Apr 2018 10:28:08 +0000 Subject: osmo-bts[master]: LC15: Fix missing fill frame and GSM 05.08 mandatory frame In-Reply-To: References: Message-ID: Patch Set 6: I have applied the purely cosmetic suggestions from my comment above. -- To view, visit https://gerrit.osmocom.org/5753 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I40e9bf9438c0b400e4d29eb39ffae37207e34db6 Gerrit-PatchSet: 6 Gerrit-Project: osmo-bts Gerrit-Branch: master Gerrit-Owner: Minh-Quang Nguyen Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Max Gerrit-Reviewer: Minh-Quang Nguyen Gerrit-Reviewer: Pau Espin Pedrol Gerrit-Reviewer: Stefan Sperling Gerrit-Reviewer: Vadim Yanitskiy Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Mon Apr 9 10:32:46 2018 From: gerrit-no-reply at lists.osmocom.org (Stefan Sperling) Date: Mon, 9 Apr 2018 10:32:46 +0000 Subject: osmo-bts[master]: LC15: Fix missing fill frame and GSM 05.08 mandatory frame In-Reply-To: References: Message-ID: Patch Set 6: (1 comment) https://gerrit.osmocom.org/#/c/5753/6/src/common/msg_utils.c File src/common/msg_utils.c: Line 489: if (!!lchan->tch.dtx.len) I am still unsure about this use of '!!'. It looks much like an accidental typo where '!' was intended. Or is it really a check for a zero-length frame? If so, why not write it as dtx.len == 0? -- To view, visit https://gerrit.osmocom.org/5753 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I40e9bf9438c0b400e4d29eb39ffae37207e34db6 Gerrit-PatchSet: 6 Gerrit-Project: osmo-bts Gerrit-Branch: master Gerrit-Owner: Minh-Quang Nguyen Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Max Gerrit-Reviewer: Minh-Quang Nguyen Gerrit-Reviewer: Pau Espin Pedrol Gerrit-Reviewer: Stefan Sperling Gerrit-Reviewer: Vadim Yanitskiy Gerrit-HasComments: Yes From gerrit-no-reply at lists.osmocom.org Mon Apr 9 10:37:50 2018 From: gerrit-no-reply at lists.osmocom.org (Stefan Sperling) Date: Mon, 9 Apr 2018 10:37:50 +0000 Subject: osmo-bts[master]: LC15: Fix missing fill frame and GSM 05.08 mandatory frame In-Reply-To: References: Message-ID: Patch Set 6: (1 comment) https://gerrit.osmocom.org/#/c/5753/6/src/common/msg_utils.c File src/common/msg_utils.c: Line 489: if (!!lchan->tch.dtx.len) > I am still unsure about this use of '!!'. Oops, I meant to say: "why not write it as 'dtx.len != 0'" -- To view, visit https://gerrit.osmocom.org/5753 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I40e9bf9438c0b400e4d29eb39ffae37207e34db6 Gerrit-PatchSet: 6 Gerrit-Project: osmo-bts Gerrit-Branch: master Gerrit-Owner: Minh-Quang Nguyen Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Max Gerrit-Reviewer: Minh-Quang Nguyen Gerrit-Reviewer: Pau Espin Pedrol Gerrit-Reviewer: Stefan Sperling Gerrit-Reviewer: Vadim Yanitskiy Gerrit-HasComments: Yes From gerrit-no-reply at lists.osmocom.org Mon Apr 9 10:38:44 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Mon, 9 Apr 2018 10:38:44 +0000 Subject: osmo-bts[master]: LC15: Fix missing fill frame and GSM 05.08 mandatory frame In-Reply-To: References: Message-ID: Patch Set 6: (1 comment) https://gerrit.osmocom.org/#/c/5753/6/src/common/msg_utils.c File src/common/msg_utils.c: Line 489: if (!!lchan->tch.dtx.len) > I am still unsure about this use of '!!'. This is basically done to transform an integer into a boolean, ie: var>=0 -> var=1, but I agree in this place it doesn't make much sense and we can simply do: if (lchan->tch.dtx.len!=0) or if (lchan->tch.dtx.len) -- To view, visit https://gerrit.osmocom.org/5753 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I40e9bf9438c0b400e4d29eb39ffae37207e34db6 Gerrit-PatchSet: 6 Gerrit-Project: osmo-bts Gerrit-Branch: master Gerrit-Owner: Minh-Quang Nguyen Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Max Gerrit-Reviewer: Minh-Quang Nguyen Gerrit-Reviewer: Pau Espin Pedrol Gerrit-Reviewer: Stefan Sperling Gerrit-Reviewer: Vadim Yanitskiy Gerrit-HasComments: Yes From gerrit-no-reply at lists.osmocom.org Mon Apr 9 10:40:21 2018 From: gerrit-no-reply at lists.osmocom.org (Stefan Sperling) Date: Mon, 9 Apr 2018 10:40:21 +0000 Subject: [PATCH] osmo-bts[master]: LC15: Fix missing fill frame and GSM 05.08 mandatory frame In-Reply-To: References: Message-ID: Hello Vadim Yanitskiy, Jenkins Builder, I'd like you to reexamine a change. Please visit https://gerrit.osmocom.org/5753 to look at the new patch set (#7). LC15: Fix missing fill frame and GSM 05.08 mandatory frame It was discovered that the LC15 BTS does not send L2 fill frame in case there is nothing to transmit. This leads to bad RXQUAL reported by MS during signaling in TCH channel. BTS needs to send L2 fill frame in case there is nothing to transmit as indicated in GSM TS 05.08, section 8.3. Related: OS#1950 Change-Id: I40e9bf9438c0b400e4d29eb39ffae37207e34db6 --- M src/common/msg_utils.c M src/osmo-bts-litecell15/l1_if.c 2 files changed, 126 insertions(+), 15 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-bts refs/changes/53/5753/7 diff --git a/src/common/msg_utils.c b/src/common/msg_utils.c index f936c98..5fffd71 100644 --- a/src/common/msg_utils.c +++ b/src/common/msg_utils.c @@ -379,15 +379,18 @@ static const uint8_t f[] = { 52, 53, 54, 55, 56, 57, 58, 59 }, h0[] = { 0, 2, 4, 6, 52, 54, 56, 58 }, h1[] = { 14, 16, 18, 20, 66, 68, 70, 72 }; - if (lchan->tch_mode == GSM48_CMODE_SPEECH_V1) { + + switch (lchan->tch_mode) { + case GSM48_CMODE_SPEECH_V1: + case GSM48_CMODE_SPEECH_AMR: if (lchan->type == GSM_LCHAN_TCH_F) return fn_chk(f, fn, ARRAY_SIZE(f)); - else - return fn_chk(lchan->nr ? h1 : h0, fn, - lchan->nr ? ARRAY_SIZE(h1) : - ARRAY_SIZE(h0)); + + return fn_chk(lchan->nr ? h1 : h0, fn, + lchan->nr ? ARRAY_SIZE(h1) : ARRAY_SIZE(h0)); + default: + return false; } - return false; } /*! \brief Check if DTX DL AMR is enabled for a given lchan (it have proper type, @@ -465,16 +468,70 @@ */ uint8_t repeat_last_sid(struct gsm_lchan *lchan, uint8_t *dst, uint32_t fn) { - /* FIXME: add EFR support */ - if (lchan->tch_mode == GSM48_CMODE_SPEECH_EFR) + uint8_t payload_len; + + static const uint8_t amr_sid_first_zero[] = { + 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00 + }; + + switch (lchan->tch_mode) { + case GSM48_CMODE_SPEECH_EFR: + /* FIXME: add EFR support */ return 0; - if (lchan->tch_mode != GSM48_CMODE_SPEECH_AMR) { - if (dtx_sched_optional(lchan, fn)) - return 0; - } else + case GSM48_CMODE_SPEECH_AMR: if (dtx_amr_sid_optional(lchan, fn)) return 0; + + if (lchan->rsl_cmode != RSL_CMOD_SPD_SPEECH) + break; + + if (!!lchan->tch.dtx.len) + break; + + /* Send zero SID FIRST frame */ + payload_len = sizeof(amr_sid_first_zero); + memcpy(dst, amr_sid_first_zero, payload_len); + + LOGP(DL1C, LOGL_DEBUG, "%s %s %s: Sending zero speech frame " + "for tch_mode=%s\n", gsm_fn_as_gsmtime_str(fn), + gsm_ts_name(lchan->ts), get_value_string(gsm_chan_t_names, lchan->type), + get_value_string(gsm48_chan_mode_names, lchan->tch_mode)); + + return payload_len + 1; + + default: + if (dtx_sched_optional(lchan, fn)) + return 0; + + if (!lchan->ts->trx->bts->dtxd) + break; + + /* Determine the payload length */ + switch (lchan->type) { + case GSM_LCHAN_TCH_F: + payload_len = GSM_FR_BYTES; + break; + case GSM_LCHAN_TCH_H: + payload_len = GSM_HR_BYTES; + break; + default: + return 0; + } + + /** + * Need to send zeroed TCH frame on mandatory fn, + * defined in GSM TS 05.08, section 8.3 + */ + memset(dst, 0x00, payload_len); + + LOGP(DL1C, LOGL_DEBUG, "%s %s %s: Sending zero speech frame " + "for tch_mode=%s\n", gsm_fn_as_gsmtime_str(fn), + gsm_ts_name(lchan->ts), get_value_string(gsm_chan_t_names, lchan->type), + get_value_string(gsm48_chan_mode_names, lchan->tch_mode)); + + return payload_len + 1; + } if (lchan->tch.dtx.len) { if (dtx_dl_amr_enabled(lchan)) { @@ -502,6 +559,12 @@ } memcpy(dst, lchan->tch.dtx.cache, lchan->tch.dtx.len); lchan->tch.dtx.fn = fn; + + LOGP(DL1C, LOGL_DEBUG, "%s %s %s: Sending SID buffer " + "for tch_mode=%s\n", gsm_fn_as_gsmtime_str(fn), + gsm_ts_name(lchan->ts), get_value_string(gsm_chan_t_names, lchan->type), + get_value_string(gsm48_chan_mode_names, lchan->tch_mode)); + return lchan->tch.dtx.len + 1; } diff --git a/src/osmo-bts-litecell15/l1_if.c b/src/osmo-bts-litecell15/l1_if.c index 9e122cd..cb6cf7e 100644 --- a/src/osmo-bts-litecell15/l1_if.c +++ b/src/osmo-bts-litecell15/l1_if.c @@ -331,6 +331,44 @@ return empty_req; } +/* fill frame PH-DATA.req from l1sap primitive */ +static GsmL1_PhDataReq_t * +fill_req_from_l1sap(GsmL1_Prim_t *l1p, struct lc15l1_hdl *fl1, + uint8_t tn, uint32_t fn, uint8_t sapi, uint8_t sub_ch, uint8_t block_nr) +{ + GsmL1_PhDataReq_t *data_req = &l1p->u.phDataReq; + GsmL1_MsgUnitParam_t *msu_param; + uint8_t *l1_payload; + + msu_param = &data_req->msgUnitParam; + l1_payload = &msu_param->u8Buffer[0]; + l1p->id = GsmL1_PrimId_PhDataReq; + + memset(l1_payload, 0x2b, GSM_MACBLOCK_LEN); + + /* address field */ + l1_payload[0] = 0x03; + /* control field */ + l1_payload[1] = 0x03; + /* length field */ + l1_payload[2] = 0x01; + + /* copy fields from PH-RTS.ind */ + data_req->hLayer1 = (HANDLE)fl1->hLayer1; + data_req->u8Tn = tn; + data_req->u32Fn = fn; + data_req->sapi = sapi; + data_req->subCh = sub_ch; + data_req->u8BlockNbr = block_nr; + data_req->msgUnitParam.u8Size = GSM_MACBLOCK_LEN; + + LOGP(DL1C, LOGL_DEBUG, "%s tn=%u: Sending fill frame on in none DTX mode " + "SAPI=%d, SubCh=%d, BlockNr=%d\n", gsm_fn_as_gsmtime_str(fn), + tn, sapi, sub_ch, block_nr); + + return data_req; +} + static int ph_data_req(struct gsm_bts_trx *trx, struct msgb *msg, struct osmo_phsap_prim *l1sap, bool use_cache) { @@ -460,10 +498,20 @@ osmo_hexdump(l1p->u.phDataReq.msgUnitParam.u8Buffer, l1p->u.phDataReq.msgUnitParam.u8Size)); } else { - /* empty frame */ - GsmL1_Prim_t *l1p = msgb_l1prim(l1msg); - empty_req_from_l1sap(l1p, fl1, u8Tn, u32Fn, sapi, subCh, u8BlockNbr); + GsmL1_Prim_t *l1p = msgb_l1prim(l1msg); + if (lchan->rsl_cmode == RSL_CMOD_SPD_SIGN) { + /* fill frame */ + fill_req_from_l1sap(l1p, fl1, u8Tn, u32Fn, sapi, subCh, u8BlockNbr); + } else { + if (lchan->ts->trx->bts->dtxd) { + /* empty frame */ + empty_req_from_l1sap(l1p, fl1, u8Tn, u32Fn, sapi, subCh, u8BlockNbr); + } else { + /* fill frame */ + fill_req_from_l1sap(l1p, fl1, u8Tn, u32Fn, sapi, subCh, u8BlockNbr); + } + } } /* send message to DSP's queue */ -- To view, visit https://gerrit.osmocom.org/5753 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newpatchset Gerrit-Change-Id: I40e9bf9438c0b400e4d29eb39ffae37207e34db6 Gerrit-PatchSet: 7 Gerrit-Project: osmo-bts Gerrit-Branch: master Gerrit-Owner: Minh-Quang Nguyen Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Max Gerrit-Reviewer: Minh-Quang Nguyen Gerrit-Reviewer: Pau Espin Pedrol Gerrit-Reviewer: Stefan Sperling Gerrit-Reviewer: Vadim Yanitskiy From gerrit-no-reply at lists.osmocom.org Mon Apr 9 10:52:45 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Mon, 9 Apr 2018 10:52:45 +0000 Subject: osmo-bts[master]: LC15: Fix missing fill frame and GSM 05.08 mandatory frame In-Reply-To: References: Message-ID: Patch Set 7: (2 comments) https://gerrit.osmocom.org/#/c/5753/7/src/common/msg_utils.c File src/common/msg_utils.c: Line 489: if (!!lchan->tch.dtx.len) imho we can simplify the !!. https://gerrit.osmocom.org/#/c/5753/7/src/osmo-bts-litecell15/l1_if.c File src/osmo-bts-litecell15/l1_if.c: Line 365: LOGP(DL1C, LOGL_DEBUG, "%s tn=%u: Sending fill frame on in none DTX mode " This text is really confusing. -- To view, visit https://gerrit.osmocom.org/5753 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I40e9bf9438c0b400e4d29eb39ffae37207e34db6 Gerrit-PatchSet: 7 Gerrit-Project: osmo-bts Gerrit-Branch: master Gerrit-Owner: Minh-Quang Nguyen Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Max Gerrit-Reviewer: Minh-Quang Nguyen Gerrit-Reviewer: Pau Espin Pedrol Gerrit-Reviewer: Stefan Sperling Gerrit-Reviewer: Vadim Yanitskiy Gerrit-HasComments: Yes From gerrit-no-reply at lists.osmocom.org Mon Apr 9 10:56:44 2018 From: gerrit-no-reply at lists.osmocom.org (Vadim Yanitskiy) Date: Mon, 9 Apr 2018 10:56:44 +0000 Subject: osmo-msc[master]: ussd.h: cosmetic: move comment to a proper place In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+1 > The comment describes the single function, not the whole file And this is why I am moving it before the function from header of the file. Please have another look. -- To view, visit https://gerrit.osmocom.org/7672 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I6b0d1d9e1a1b1ffb71cb9905e74f6fad2333bb65 Gerrit-PatchSet: 1 Gerrit-Project: osmo-msc Gerrit-Branch: master Gerrit-Owner: Vadim Yanitskiy Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Vadim Yanitskiy Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Mon Apr 9 11:20:04 2018 From: gerrit-no-reply at lists.osmocom.org (Vadim Yanitskiy) Date: Mon, 9 Apr 2018 11:20:04 +0000 Subject: osmo-msc[master]: libmsc/ussd.c: cosmetic: correct logging level In-Reply-To: References: Message-ID: Patch Set 1: > Is it really an error like a decoding error? Or is it just an > unhandled request? Well, the libosmocore API doesn't provide such detailed info, it just returns 1 if in successful case (inverted for some reason), or 0 in case of any error, and it's not known what's wrong :/ > In case of decoding error, should we inform the ms? The MS is getting rejected in such cases. -- To view, visit https://gerrit.osmocom.org/7675 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: If6c270fae54ce79c2708c99d7762ce6ff71f43d9 Gerrit-PatchSet: 1 Gerrit-Project: osmo-msc Gerrit-Branch: master Gerrit-Owner: Vadim Yanitskiy Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Vadim Yanitskiy Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Mon Apr 9 11:21:54 2018 From: gerrit-no-reply at lists.osmocom.org (Vadim Yanitskiy) Date: Mon, 9 Apr 2018 11:21:54 +0000 Subject: osmo-msc[master]: libmsc/ussd.c: cosmetic: correct logging level In-Reply-To: References: Message-ID: Patch Set 1: I am going to extend the gsm0480_send_ussd_reject() in order to allow specifying the reject cause, but a bit later. -- To view, visit https://gerrit.osmocom.org/7675 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: If6c270fae54ce79c2708c99d7762ce6ff71f43d9 Gerrit-PatchSet: 1 Gerrit-Project: osmo-msc Gerrit-Branch: master Gerrit-Owner: Vadim Yanitskiy Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Vadim Yanitskiy Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Mon Apr 9 11:33:47 2018 From: gerrit-no-reply at lists.osmocom.org (Stefan Sperling) Date: Mon, 9 Apr 2018 11:33:47 +0000 Subject: [PATCH] osmo-bsc[master]: fix a format string error in bts_update_t3122_chan_load() Message-ID: Review at https://gerrit.osmocom.org/7687 fix a format string error in bts_update_t3122_chan_load() In a debug log message, a 64-bit value was printed with %lu (32 bit or 64 bit, depending on the platform), but it should be printed with an %llu format directive instead (64 bit everywhere). Change-Id: I09bb519e68886e650647b1369fd49d1964e76c7e --- M src/libbsc/chan_alloc.c 1 file changed, 1 insertion(+), 1 deletion(-) git pull ssh://gerrit.osmocom.org:29418/osmo-bsc refs/changes/87/7687/1 diff --git a/src/libbsc/chan_alloc.c b/src/libbsc/chan_alloc.c index 284cb21..de291e8 100644 --- a/src/libbsc/chan_alloc.c +++ b/src/libbsc/chan_alloc.c @@ -660,7 +660,7 @@ /* Log channel load average. */ load = ((used / total) * 100); - LOGP(DRLL, LOGL_DEBUG, "(bts=%d) channel load average is %lu.%.2lu%%\n", + LOGP(DRLL, LOGL_DEBUG, "(bts=%d) channel load average is %llu.%.2lu%%\n", bts->nr, (load & 0xffffff00) >> 8, (load & 0xff) / 10); bts->chan_load_avg = ((load & 0xffffff00) >> 8); OSMO_ASSERT(bts->chan_load_avg <= 100); -- To view, visit https://gerrit.osmocom.org/7687 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I09bb519e68886e650647b1369fd49d1964e76c7e Gerrit-PatchSet: 1 Gerrit-Project: osmo-bsc Gerrit-Branch: master Gerrit-Owner: Stefan Sperling From jenkins at lists.osmocom.org Mon Apr 9 11:41:09 2018 From: jenkins at lists.osmocom.org (jenkins at lists.osmocom.org) Date: Mon, 9 Apr 2018 11:41:09 +0000 (UTC) Subject: =?UTF-8?Q?Build_failed_in_Jenkins:_master-osmo-bts_=C2=BB_sysmo, sup?= =?UTF-8?Q?erfemto=5Fv3.0.1pre,default,osmocom-master-debian9_#483?= Message-ID: <637848195.181.1523274069929.JavaMail.jenkins@jenkins.osmocom.org> See ------------------------------------------ Started by upstream project "master-osmo-bts" build number 483 originally caused by: Started by user Neels Hofmeyr Building remotely on build2-deb9build-ansible (ttcn3 osmo-gsm-tester-build osmocom-gerrit-debian9 osmocom-master-debian9 coverity) in workspace > git rev-parse --is-inside-work-tree # timeout=10 Fetching changes from the remote Git repository > git config remote.origin.url git://git.osmocom.org/osmo-bts # timeout=10 Fetching upstream changes from git://git.osmocom.org/osmo-bts > git --version # timeout=10 > git fetch --tags --progress git://git.osmocom.org/osmo-bts +refs/heads/*:refs/remotes/origin/* Checking out Revision dd4a6518f2118775c12affc02ac1e0dcc848d89a (refs/remotes/origin/master) > git config core.sparsecheckout # timeout=10 > git checkout -f dd4a6518f2118775c12affc02ac1e0dcc848d89a Commit message: "octphy: integrate octasics latest header release" > git rev-list --no-walk dd4a6518f2118775c12affc02ac1e0dcc848d89a # timeout=10 [osmocom-master-debian9] $ /bin/sh -xe /tmp/jenkins6944078543296560191.sh + ./contrib/jenkins_bts_model.sh sysmo + ./contrib/jenkins_sysmobts.sh + base= + deps= + inst= + export deps inst + osmo-clean-workspace.sh + chmod -R +w . + git checkout -f HEAD + git clean -dxf -e -e layer1-headers Skipping repository deps/libosmocore + [ -d ] + git -C checkout -f HEAD error: pathspec 'HEAD' did not match any file(s) known to git. Build step 'Execute shell' marked build as failure [WARNINGS]Skipping publisher since build result is FAILURE From jenkins at lists.osmocom.org Mon Apr 9 11:41:24 2018 From: jenkins at lists.osmocom.org (jenkins at lists.osmocom.org) Date: Mon, 9 Apr 2018 11:41:24 +0000 (UTC) Subject: =?UTF-8?Q?Jenkins_build_is_back_to_normal_:_master-osmo-bts_=C2=BB_s?= =?UTF-8?Q?ysmo,femtobts=5Fv2.7,default,osmocom-master-debian9_#483?= In-Reply-To: <306915603.177.1523263268691.JavaMail.jenkins@jenkins.osmocom.org> References: <306915603.177.1523263268691.JavaMail.jenkins@jenkins.osmocom.org> Message-ID: <1726883214.182.1523274084977.JavaMail.jenkins@jenkins.osmocom.org> See From gerrit-no-reply at lists.osmocom.org Mon Apr 9 12:01:56 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Mon, 9 Apr 2018 12:01:56 +0000 Subject: osmo-bsc[master]: fix a format string error in bts_update_t3122_chan_load() In-Reply-To: References: Message-ID: Patch Set 1: (1 comment) https://gerrit.osmocom.org/#/c/7687/1/src/libbsc/chan_alloc.c File src/libbsc/chan_alloc.c: Line 663: LOGP(DRLL, LOGL_DEBUG, "(bts=%d) channel load average is %llu.%.2lu%%\n", Use PRIu64. Also probably needed for the 2nd load parameter, since it's also a 64bit var: "(bts=%d) channel load average is %"PRIu64".%.2"PRIu64"%%\n" -- To view, visit https://gerrit.osmocom.org/7687 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I09bb519e68886e650647b1369fd49d1964e76c7e Gerrit-PatchSet: 1 Gerrit-Project: osmo-bsc Gerrit-Branch: master Gerrit-Owner: Stefan Sperling Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Pau Espin Pedrol Gerrit-HasComments: Yes From gerrit-no-reply at lists.osmocom.org Mon Apr 9 12:02:00 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Mon, 9 Apr 2018 12:02:00 +0000 Subject: osmo-bsc[master]: fix a format string error in bts_update_t3122_chan_load() In-Reply-To: References: Message-ID: Patch Set 1: Code-Review-1 -- To view, visit https://gerrit.osmocom.org/7687 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I09bb519e68886e650647b1369fd49d1964e76c7e Gerrit-PatchSet: 1 Gerrit-Project: osmo-bsc Gerrit-Branch: master Gerrit-Owner: Stefan Sperling Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Pau Espin Pedrol Gerrit-HasComments: No From jenkins at lists.osmocom.org Mon Apr 9 12:17:21 2018 From: jenkins at lists.osmocom.org (jenkins at lists.osmocom.org) Date: Mon, 9 Apr 2018 12:17:21 +0000 (UTC) Subject: =?UTF-8?Q?Build_failed_in_Jenkins:_master-osmo-bts_=C2=BB_sysmo,?= =?UTF-8?Q?femtobts=5Fv2.7,default,osmocom-master-debian9_#484?= Message-ID: <331406603.183.1523276241135.JavaMail.jenkins@jenkins.osmocom.org> See ------------------------------------------ Started by upstream project "master-osmo-bts" build number 484 originally caused by: Started by user Neels Hofmeyr Building remotely on host2-deb9build-ansible (ttcn3 osmo-gsm-tester-build osmocom-gerrit-debian9 osmocom-master-debian9) in workspace > git rev-parse --is-inside-work-tree # timeout=10 Fetching changes from the remote Git repository > git config remote.origin.url git://git.osmocom.org/osmo-bts # timeout=10 Fetching upstream changes from git://git.osmocom.org/osmo-bts > git --version # timeout=10 > git fetch --tags --progress git://git.osmocom.org/osmo-bts +refs/heads/*:refs/remotes/origin/* Checking out Revision dd4a6518f2118775c12affc02ac1e0dcc848d89a (refs/remotes/origin/master) > git config core.sparsecheckout # timeout=10 > git checkout -f dd4a6518f2118775c12affc02ac1e0dcc848d89a Commit message: "octphy: integrate octasics latest header release" > git rev-list --no-walk dd4a6518f2118775c12affc02ac1e0dcc848d89a # timeout=10 [osmocom-master-debian9] $ /bin/sh -xe /tmp/jenkins1488053148223102923.sh + ./contrib/jenkins_bts_model.sh sysmo + ./contrib/jenkins_sysmobts.sh + base= + deps= + inst= + export deps inst + osmo-clean-workspace.sh + chmod -R +w . chmod: changing permissions of './deps/libosmocore/.git/index': Operation not permitted Build step 'Execute shell' marked build as failure [WARNINGS]Skipping publisher since build result is FAILURE From jenkins at lists.osmocom.org Mon Apr 9 12:21:47 2018 From: jenkins at lists.osmocom.org (jenkins at lists.osmocom.org) Date: Mon, 9 Apr 2018 12:21:47 +0000 (UTC) Subject: =?UTF-8?Q?Jenkins_build_is_back_to_normal_:_master-osmo-bts_=C2=BB_sysmo?= =?UTF-8?Q?,superfemto=5Fv3.0.1pre,default,osmocom-master-debian9_#484?= In-Reply-To: <637848195.181.1523274069929.JavaMail.jenkins@jenkins.osmocom.org> References: <637848195.181.1523274069929.JavaMail.jenkins@jenkins.osmocom.org> Message-ID: <669323820.184.1523276507156.JavaMail.jenkins@jenkins.osmocom.org> See From jenkins at lists.osmocom.org Mon Apr 9 12:26:27 2018 From: jenkins at lists.osmocom.org (jenkins at lists.osmocom.org) Date: Mon, 9 Apr 2018 12:26:27 +0000 (UTC) Subject: =?UTF-8?Q?Build_failed_in_Jenkins:_master-osmo-bts_=C2=BB_sysmo, sup?= =?UTF-8?Q?erfemto=5Fv3.0.1pre,default,osmocom-master-debian9_#485?= Message-ID: <2011735204.185.1523276787680.JavaMail.jenkins@jenkins.osmocom.org> See ------------------------------------------ Started by upstream project "master-osmo-bts" build number 485 originally caused by: Started by user Neels Hofmeyr Building remotely on build2-deb9build-ansible (ttcn3 osmo-gsm-tester-build osmocom-gerrit-debian9 osmocom-master-debian9 coverity) in workspace > git rev-parse --is-inside-work-tree # timeout=10 Fetching changes from the remote Git repository > git config remote.origin.url git://git.osmocom.org/osmo-bts # timeout=10 Fetching upstream changes from git://git.osmocom.org/osmo-bts > git --version # timeout=10 > git fetch --tags --progress git://git.osmocom.org/osmo-bts +refs/heads/*:refs/remotes/origin/* Checking out Revision dd4a6518f2118775c12affc02ac1e0dcc848d89a (refs/remotes/origin/master) > git config core.sparsecheckout # timeout=10 > git checkout -f dd4a6518f2118775c12affc02ac1e0dcc848d89a Commit message: "octphy: integrate octasics latest header release" > git rev-list --no-walk dd4a6518f2118775c12affc02ac1e0dcc848d89a # timeout=10 [osmocom-master-debian9] $ /bin/sh -xe /tmp/jenkins1144169825881928895.sh + ./contrib/jenkins_bts_model.sh sysmo + ./contrib/jenkins_sysmobts.sh + base= + deps= + inst= + export deps inst + osmo-clean-workspace.sh + chmod -R +w . + git checkout -f HEAD + git clean -dxf -e -e layer1-headers Skipping repository deps/libosmocore + [ -d ] + git -C checkout -f HEAD error: pathspec 'HEAD' did not match any file(s) known to git. Build step 'Execute shell' marked build as failure [WARNINGS]Skipping publisher since build result is FAILURE From jenkins at lists.osmocom.org Mon Apr 9 12:26:29 2018 From: jenkins at lists.osmocom.org (jenkins at lists.osmocom.org) Date: Mon, 9 Apr 2018 12:26:29 +0000 (UTC) Subject: =?UTF-8?Q?Build_failed_in_Jenkins:_master-osmo-gmr_=C2=BB_a1=3Ddefau?= =?UTF-8?Q?lt,a2=3Ddefault,a3=3Ddefault,osmocom-master-debian9_#346?= In-Reply-To: <292403498.173.1523262771274.JavaMail.jenkins@jenkins.osmocom.org> References: <292403498.173.1523262771274.JavaMail.jenkins@jenkins.osmocom.org> Message-ID: <2123284896.186.1523276789133.JavaMail.jenkins@jenkins.osmocom.org> See ------------------------------------------ Started by upstream project "master-osmo-gmr" build number 346 originally caused by: Started by user Neels Hofmeyr Building remotely on build2-deb9build-ansible (ttcn3 osmo-gsm-tester-build osmocom-gerrit-debian9 osmocom-master-debian9 coverity) in workspace > git rev-parse --is-inside-work-tree # timeout=10 Fetching changes from the remote Git repository > git config remote.origin.url git://git.osmocom.org/osmo-gmr # timeout=10 Fetching upstream changes from git://git.osmocom.org/osmo-gmr > git --version # timeout=10 > git fetch --tags --progress git://git.osmocom.org/osmo-gmr +refs/heads/*:refs/remotes/origin/* Checking out Revision adb8cc6aa9453dfc339de53ae641067136a031ec (refs/remotes/origin/master) > git config core.sparsecheckout # timeout=10 > git checkout -f adb8cc6aa9453dfc339de53ae641067136a031ec Commit message: "Add contrib/jenkins.sh script, like other osmo-* repositories" > git rev-list --no-walk adb8cc6aa9453dfc339de53ae641067136a031ec # timeout=10 [osmocom-master-debian9] $ /bin/sh -xe /tmp/jenkins2030268299872435319.sh + ./contrib/jenkins.sh + base= + deps= + inst= + export deps inst + osmo-clean-workspace.sh + chmod -R +w . + git checkout -f HEAD + git clean -dxf -e -e layer1-headers Skipping repository deps/libosmocore + [ -d ] + git -C checkout -f HEAD error: pathspec 'HEAD' did not match any file(s) known to git. Build step 'Execute shell' marked build as failure [WARNINGS]Skipping publisher since build result is FAILURE From jenkins at lists.osmocom.org Mon Apr 9 12:26:42 2018 From: jenkins at lists.osmocom.org (jenkins at lists.osmocom.org) Date: Mon, 9 Apr 2018 12:26:42 +0000 (UTC) Subject: =?UTF-8?Q?Jenkins_build_is_back_to_normal_:_master-osmo-bts_=C2=BB_s?= =?UTF-8?Q?ysmo,femtobts=5Fv2.7,default,osmocom-master-debian9_#485?= In-Reply-To: <331406603.183.1523276241135.JavaMail.jenkins@jenkins.osmocom.org> References: <331406603.183.1523276241135.JavaMail.jenkins@jenkins.osmocom.org> Message-ID: <1691046310.187.1523276802590.JavaMail.jenkins@jenkins.osmocom.org> See From gerrit-no-reply at lists.osmocom.org Mon Apr 9 12:50:52 2018 From: gerrit-no-reply at lists.osmocom.org (Neels Hofmeyr) Date: Mon, 9 Apr 2018 12:50:52 +0000 Subject: [PATCH] osmo-ci[master]: osmo-clean-workspace.sh: cosmetic: no need to clean -e deps Message-ID: Review at https://gerrit.osmocom.org/7688 osmo-clean-workspace.sh: cosmetic: no need to clean -e deps git clean always excludes git clone subdirs; furthermore, even if I supply a dir as -e, the contents of that dir still get cleaned out. So it is useless to pass -e on the commandline. Drop it. Change-Id: I2b59cc9c9adf88a2663469b22cfeffbd66b5bf2e --- M scripts/osmo-clean-workspace.sh 1 file changed, 2 insertions(+), 1 deletion(-) git pull ssh://gerrit.osmocom.org:29418/osmo-ci refs/changes/88/7688/1 diff --git a/scripts/osmo-clean-workspace.sh b/scripts/osmo-clean-workspace.sh index 4b77066..fcbfea8 100755 --- a/scripts/osmo-clean-workspace.sh +++ b/scripts/osmo-clean-workspace.sh @@ -25,7 +25,8 @@ git checkout -f HEAD # wipe all unversioned leftovers, except deps gits. -git clean -dxf -e "$deps" -e "layer1-headers" +# Git automatically excludes subdirs that are git clones. +git clean -dxf # leave the deps checkouts around, to not clone entire git history every time, # but clean each git of build artifacts. -- To view, visit https://gerrit.osmocom.org/7688 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I2b59cc9c9adf88a2663469b22cfeffbd66b5bf2e Gerrit-PatchSet: 1 Gerrit-Project: osmo-ci Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr From gerrit-no-reply at lists.osmocom.org Mon Apr 9 12:50:52 2018 From: gerrit-no-reply at lists.osmocom.org (Neels Hofmeyr) Date: Mon, 9 Apr 2018 12:50:52 +0000 Subject: [PATCH] osmo-ci[master]: osmo-clean-workspace.sh: make more robust against broken git... Message-ID: Review at https://gerrit.osmocom.org/7689 osmo-clean-workspace.sh: make more robust against broken git clones Change-Id: Ifa70fd75468b3e21b5c9327ea28bc7a4c8cb549d --- M scripts/osmo-clean-workspace.sh 1 file changed, 25 insertions(+), 4 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-ci refs/changes/89/7689/1 diff --git a/scripts/osmo-clean-workspace.sh b/scripts/osmo-clean-workspace.sh index fcbfea8..b67b548 100755 --- a/scripts/osmo-clean-workspace.sh +++ b/scripts/osmo-clean-workspace.sh @@ -28,16 +28,37 @@ # Git automatically excludes subdirs that are git clones. git clean -dxf +git_clean() { + repos="$1" + if [ ! -d "$repos" ]; then + return + fi + + if [ ! -d "$repos/.git" ]; then + echo "Not a git clone, removing: $repos" + rm -rf "$repos" + return + fi + if ! git -C "$repos" checkout -f HEAD; then + echo "Cleaning failed, removing: $repos" + rm -rf "$repos" + return + fi + if ! git -C "$repos" clean -dxf; then + echo "Cleaning failed, removing: $repos" + rm -rf "$repos" + return + fi +} + # leave the deps checkouts around, to not clone entire git history every time, # but clean each git of build artifacts. if [ -d "$deps" ]; then for dep_dir in "$deps"/* ; do - git -C "$dep_dir" checkout -f HEAD - git -C "$dep_dir" clean -dxf + git_clean "$dep_dir" done fi if [ -d "layer1-headers" ]; then - git -C "layer1-headers" checkout -f HEAD - git -C "layer1-headers" clean -dxf + git_clean "layer1-headers" fi -- To view, visit https://gerrit.osmocom.org/7689 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Ifa70fd75468b3e21b5c9327ea28bc7a4c8cb549d Gerrit-PatchSet: 1 Gerrit-Project: osmo-ci Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr From gerrit-no-reply at lists.osmocom.org Mon Apr 9 12:52:01 2018 From: gerrit-no-reply at lists.osmocom.org (Neels Hofmeyr) Date: Mon, 9 Apr 2018 12:52:01 +0000 Subject: osmo-ci[master]: osmo-clean-workspace.sh: cosmetic: no need to clean -e deps In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 Verified+1 -- To view, visit https://gerrit.osmocom.org/7688 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I2b59cc9c9adf88a2663469b22cfeffbd66b5bf2e Gerrit-PatchSet: 1 Gerrit-Project: osmo-ci Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr Gerrit-Reviewer: Neels Hofmeyr Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Mon Apr 9 12:52:06 2018 From: gerrit-no-reply at lists.osmocom.org (Neels Hofmeyr) Date: Mon, 9 Apr 2018 12:52:06 +0000 Subject: osmo-ci[master]: osmo-clean-workspace.sh: make more robust against broken git... In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 Verified+1 -- To view, visit https://gerrit.osmocom.org/7689 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Ifa70fd75468b3e21b5c9327ea28bc7a4c8cb549d Gerrit-PatchSet: 1 Gerrit-Project: osmo-ci Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr Gerrit-Reviewer: Neels Hofmeyr Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Mon Apr 9 12:52:07 2018 From: gerrit-no-reply at lists.osmocom.org (Neels Hofmeyr) Date: Mon, 9 Apr 2018 12:52:07 +0000 Subject: [MERGED] osmo-ci[master]: osmo-clean-workspace.sh: make more robust against broken git... In-Reply-To: References: Message-ID: Neels Hofmeyr has submitted this change and it was merged. Change subject: osmo-clean-workspace.sh: make more robust against broken git clones ...................................................................... osmo-clean-workspace.sh: make more robust against broken git clones Change-Id: Ifa70fd75468b3e21b5c9327ea28bc7a4c8cb549d --- M scripts/osmo-clean-workspace.sh 1 file changed, 25 insertions(+), 4 deletions(-) Approvals: Neels Hofmeyr: Looks good to me, approved; Verified diff --git a/scripts/osmo-clean-workspace.sh b/scripts/osmo-clean-workspace.sh index fcbfea8..b67b548 100755 --- a/scripts/osmo-clean-workspace.sh +++ b/scripts/osmo-clean-workspace.sh @@ -28,16 +28,37 @@ # Git automatically excludes subdirs that are git clones. git clean -dxf +git_clean() { + repos="$1" + if [ ! -d "$repos" ]; then + return + fi + + if [ ! -d "$repos/.git" ]; then + echo "Not a git clone, removing: $repos" + rm -rf "$repos" + return + fi + if ! git -C "$repos" checkout -f HEAD; then + echo "Cleaning failed, removing: $repos" + rm -rf "$repos" + return + fi + if ! git -C "$repos" clean -dxf; then + echo "Cleaning failed, removing: $repos" + rm -rf "$repos" + return + fi +} + # leave the deps checkouts around, to not clone entire git history every time, # but clean each git of build artifacts. if [ -d "$deps" ]; then for dep_dir in "$deps"/* ; do - git -C "$dep_dir" checkout -f HEAD - git -C "$dep_dir" clean -dxf + git_clean "$dep_dir" done fi if [ -d "layer1-headers" ]; then - git -C "layer1-headers" checkout -f HEAD - git -C "layer1-headers" clean -dxf + git_clean "layer1-headers" fi -- To view, visit https://gerrit.osmocom.org/7689 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: Ifa70fd75468b3e21b5c9327ea28bc7a4c8cb549d Gerrit-PatchSet: 1 Gerrit-Project: osmo-ci Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr Gerrit-Reviewer: Neels Hofmeyr From gerrit-no-reply at lists.osmocom.org Mon Apr 9 12:52:08 2018 From: gerrit-no-reply at lists.osmocom.org (Neels Hofmeyr) Date: Mon, 9 Apr 2018 12:52:08 +0000 Subject: [MERGED] osmo-ci[master]: osmo-clean-workspace.sh: cosmetic: no need to clean -e deps In-Reply-To: References: Message-ID: Neels Hofmeyr has submitted this change and it was merged. Change subject: osmo-clean-workspace.sh: cosmetic: no need to clean -e deps ...................................................................... osmo-clean-workspace.sh: cosmetic: no need to clean -e deps git clean always excludes git clone subdirs; furthermore, even if I supply a dir as -e, the contents of that dir still get cleaned out. So it is useless to pass -e on the commandline. Drop it. Change-Id: I2b59cc9c9adf88a2663469b22cfeffbd66b5bf2e --- M scripts/osmo-clean-workspace.sh 1 file changed, 2 insertions(+), 1 deletion(-) Approvals: Neels Hofmeyr: Looks good to me, approved; Verified diff --git a/scripts/osmo-clean-workspace.sh b/scripts/osmo-clean-workspace.sh index 4b77066..fcbfea8 100755 --- a/scripts/osmo-clean-workspace.sh +++ b/scripts/osmo-clean-workspace.sh @@ -25,7 +25,8 @@ git checkout -f HEAD # wipe all unversioned leftovers, except deps gits. -git clean -dxf -e "$deps" -e "layer1-headers" +# Git automatically excludes subdirs that are git clones. +git clean -dxf # leave the deps checkouts around, to not clone entire git history every time, # but clean each git of build artifacts. -- To view, visit https://gerrit.osmocom.org/7688 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: I2b59cc9c9adf88a2663469b22cfeffbd66b5bf2e Gerrit-PatchSet: 1 Gerrit-Project: osmo-ci Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr Gerrit-Reviewer: Neels Hofmeyr From jenkins at lists.osmocom.org Mon Apr 9 12:55:29 2018 From: jenkins at lists.osmocom.org (jenkins at lists.osmocom.org) Date: Mon, 9 Apr 2018 12:55:29 +0000 (UTC) Subject: =?UTF-8?Q?Jenkins_build_is_back_to_normal_:_master-osmo-gmr_=C2=BB_a1=3Dd?= =?UTF-8?Q?efault,a2=3Ddefault,a3=3Ddefault,osmocom-master-debian9_#347?= In-Reply-To: <2123284896.186.1523276789133.JavaMail.jenkins@jenkins.osmocom.org> References: <2123284896.186.1523276789133.JavaMail.jenkins@jenkins.osmocom.org> Message-ID: <2067069034.188.1523278529384.JavaMail.jenkins@jenkins.osmocom.org> See From jenkins at lists.osmocom.org Mon Apr 9 12:56:50 2018 From: jenkins at lists.osmocom.org (jenkins at lists.osmocom.org) Date: Mon, 9 Apr 2018 12:56:50 +0000 (UTC) Subject: =?UTF-8?Q?Jenkins_build_is_back_to_normal_:_master-osmo-bts_=C2=BB_sysmo?= =?UTF-8?Q?,superfemto=5Fv3.0.1pre,default,osmocom-master-debian9_#486?= In-Reply-To: <2011735204.185.1523276787680.JavaMail.jenkins@jenkins.osmocom.org> References: <2011735204.185.1523276787680.JavaMail.jenkins@jenkins.osmocom.org> Message-ID: <1152729.189.1523278610791.JavaMail.jenkins@jenkins.osmocom.org> See From gerrit-no-reply at lists.osmocom.org Mon Apr 9 13:05:32 2018 From: gerrit-no-reply at lists.osmocom.org (Stefan Sperling) Date: Mon, 9 Apr 2018 13:05:32 +0000 Subject: [PATCH] osmo-bsc[master]: fix a format string error in bts_update_t3122_chan_load() In-Reply-To: References: Message-ID: Hello Pau Espin Pedrol, Jenkins Builder, I'd like you to reexamine a change. Please visit https://gerrit.osmocom.org/7687 to look at the new patch set (#2). fix a format string error in bts_update_t3122_chan_load() In a debug log message, an unsigned 64-bit value was printed with %lu but it should be printed with PRIu64 from inttypes.h instead. Change-Id: I09bb519e68886e650647b1369fd49d1964e76c7e --- M src/libbsc/chan_alloc.c 1 file changed, 2 insertions(+), 1 deletion(-) git pull ssh://gerrit.osmocom.org:29418/osmo-bsc refs/changes/87/7687/2 diff --git a/src/libbsc/chan_alloc.c b/src/libbsc/chan_alloc.c index 284cb21..a08fdee 100644 --- a/src/libbsc/chan_alloc.c +++ b/src/libbsc/chan_alloc.c @@ -24,6 +24,7 @@ #include #include #include +#include #include #include @@ -660,7 +661,7 @@ /* Log channel load average. */ load = ((used / total) * 100); - LOGP(DRLL, LOGL_DEBUG, "(bts=%d) channel load average is %lu.%.2lu%%\n", + LOGP(DRLL, LOGL_DEBUG, "(bts=%d) channel load average is %"PRIu64".%.2"PRIu64"%%\n", bts->nr, (load & 0xffffff00) >> 8, (load & 0xff) / 10); bts->chan_load_avg = ((load & 0xffffff00) >> 8); OSMO_ASSERT(bts->chan_load_avg <= 100); -- To view, visit https://gerrit.osmocom.org/7687 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newpatchset Gerrit-Change-Id: I09bb519e68886e650647b1369fd49d1964e76c7e Gerrit-PatchSet: 2 Gerrit-Project: osmo-bsc Gerrit-Branch: master Gerrit-Owner: Stefan Sperling Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Pau Espin Pedrol From gerrit-no-reply at lists.osmocom.org Mon Apr 9 13:26:02 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Mon, 9 Apr 2018 13:26:02 +0000 Subject: osmo-bsc[master]: fix a format string error in bts_update_t3122_chan_load() In-Reply-To: References: Message-ID: Patch Set 2: Code-Review+1 -- To view, visit https://gerrit.osmocom.org/7687 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I09bb519e68886e650647b1369fd49d1964e76c7e Gerrit-PatchSet: 2 Gerrit-Project: osmo-bsc Gerrit-Branch: master Gerrit-Owner: Stefan Sperling Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Pau Espin Pedrol Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Mon Apr 9 13:26:19 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Mon, 9 Apr 2018 13:26:19 +0000 Subject: osmo-bsc[master]: fix a format string error in bts_update_t3122_chan_load() In-Reply-To: References: Message-ID: Patch Set 2: Please send backport for openbsc :) -- To view, visit https://gerrit.osmocom.org/7687 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I09bb519e68886e650647b1369fd49d1964e76c7e Gerrit-PatchSet: 2 Gerrit-Project: osmo-bsc Gerrit-Branch: master Gerrit-Owner: Stefan Sperling Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Pau Espin Pedrol Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Mon Apr 9 14:41:08 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Mon, 9 Apr 2018 14:41:08 +0000 Subject: [PATCH] osmo-msc[master]: DTAP: Ensure proper DLCI is used in MSC-originated DTAP Message-ID: Review at https://gerrit.osmocom.org/7690 DTAP: Ensure proper DLCI is used in MSC-originated DTAP The DLCI field of the DTAP header indicates the SAPI as well as the data link (main DCCH or SACCH). We must make sure to use the correct DLCI when sending DTAP to the BSC. We achieve this by * storing the DLCI in the msgb->cb while parsing the DTAP header * storing the received DLCI (from msgb->cb) in the transaction for mobile-originated transactions * using the trans->dlci to sent msgb->cb when transmitting L3 * filling the DTAP DLCI value from msgb->cb when transmitting DTAP For MSC-originated transactions, we choose a DLCI value corresponding to the service (SAPI=0 for CC, SAPI=3 for SMS) and store that in trans->dlci. Change-Id: If511b20f52575054cab1346d99a8cb68d827fdbf --- M include/osmocom/msc/gsm_data.h M include/osmocom/msc/transaction.h M src/libmsc/a_iface.c M src/libmsc/a_iface_bssap.c M src/libmsc/gsm_04_08.c M src/libmsc/gsm_04_11.c 6 files changed, 16 insertions(+), 4 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-msc refs/changes/90/7690/1 diff --git a/include/osmocom/msc/gsm_data.h b/include/osmocom/msc/gsm_data.h index f3e1b94..6f0aca4 100644 --- a/include/osmocom/msc/gsm_data.h +++ b/include/osmocom/msc/gsm_data.h @@ -20,7 +20,8 @@ #include "gsm_data_shared.h" - +/* TS 48.008 DLCI containing DCCH/ACCH + SAPI */ +#define OMSC_LINKID_CB(__msgb) (__msgb)->cb[3] /** annotations for msgb ownership */ #define __uses diff --git a/include/osmocom/msc/transaction.h b/include/osmocom/msc/transaction.h index 272fb3b..63b1cc5 100644 --- a/include/osmocom/msc/transaction.h +++ b/include/osmocom/msc/transaction.h @@ -31,6 +31,9 @@ /* The current transaction ID */ uint8_t transaction_id; + /* The DLCI (DCCH/ACCH + SAPI) of this transaction */ + uint8_t dlci; + /* To whom we belong, unique identifier of remote MM entity */ struct vlr_subscr *vsub; diff --git a/src/libmsc/a_iface.c b/src/libmsc/a_iface.c index 2b1baf0..6f2000e 100644 --- a/src/libmsc/a_iface.c +++ b/src/libmsc/a_iface.c @@ -145,14 +145,13 @@ struct gsm_subscriber_connection *conn; struct msgb *msg_resp; - /* FIXME: Set this to some meaninful value! */ - uint8_t link_id = 0x00; + uint8_t link_id = OMSC_LINKID_CB(msg); OSMO_ASSERT(msg); conn = (struct gsm_subscriber_connection *)msg->dst; OSMO_ASSERT(conn); OSMO_ASSERT(conn->a.scu); - LOGPCONN(conn, LOGL_DEBUG, "Passing DTAP message from MSC to BSC\n"); + LOGPCONN(conn, LOGL_DEBUG, "Passing DTAP message (DLCI=0x%02x) from MSC to BSC\n", link_id); msg->l3h = msg->data; msg_resp = gsm0808_create_dtap(msg, link_id); diff --git a/src/libmsc/a_iface_bssap.c b/src/libmsc/a_iface_bssap.c index 1665e23..d0d6bc0 100644 --- a/src/libmsc/a_iface_bssap.c +++ b/src/libmsc/a_iface_bssap.c @@ -610,6 +610,7 @@ { struct gsm_network *network = a_conn_info->network; struct gsm_subscriber_connection *conn; + struct dtap_header *dtap = (struct dtap_header *) msg->l2h; conn = subscr_conn_lookup_a(network, a_conn_info->conn_id); if (!conn) { @@ -620,6 +621,7 @@ /* msc_dtap expects the dtap payload in l3h */ msg->l3h = msg->l2h + 3; + OMSC_LINKID_CB(msg) = dtap->link_id; /* Forward dtap payload into the msc */ msc_dtap(conn, conn->a.conn_id, msg); diff --git a/src/libmsc/gsm_04_08.c b/src/libmsc/gsm_04_08.c index a90ff17..e5ddb44 100644 --- a/src/libmsc/gsm_04_08.c +++ b/src/libmsc/gsm_04_08.c @@ -164,6 +164,7 @@ * work that the caller no longer has to do */ if (trans) { gh->proto_discr = trans->protocol | (trans->transaction_id << 4); + OMSC_LINKID_CB(msg) = trans->dlci; } return msc_tx_dtap(conn, msg); @@ -3110,6 +3111,7 @@ /* Assign conn */ trans->conn = msc_subscr_conn_get(conn, MSC_CONN_USE_TRANS_CC); + trans->dlci = 0x00; /* SAPI=0, not SACCH */ vlr_subscr_put(vsub); } else { /* update the subscriber we deal with */ @@ -3262,6 +3264,7 @@ } /* Assign transaction */ trans->conn = msc_subscr_conn_get(conn, MSC_CONN_USE_TRANS_CC); + trans->dlci = OMSC_LINKID_CB(msg); /* DLCI as received from BSC */ cm_service_request_concludes(conn, msg); } diff --git a/src/libmsc/gsm_04_11.c b/src/libmsc/gsm_04_11.c index f82aa6d..aa60490 100644 --- a/src/libmsc/gsm_04_11.c +++ b/src/libmsc/gsm_04_11.c @@ -137,6 +137,7 @@ /* Outgoing needs the highest bit set */ gh->proto_discr = trans->protocol | (trans->transaction_id<<4); gh->msg_type = msg_type; + OMSC_LINKID_CB(msg) = trans->dlci; DEBUGP(DLSMS, "sending CP message (trans=%x)\n", trans->transaction_id); @@ -947,6 +948,7 @@ gsm411_rl_recv, gsm411_mn_send); trans->conn = msc_subscr_conn_get(conn, MSC_CONN_USE_TRANS_SMS); + trans->dlci = OMSC_LINKID_CB(msg); /* DLCI as received from BSC */ new_trans = 1; cm_service_request_concludes(conn, msg); @@ -1029,6 +1031,8 @@ trans->sms.sms = sms; trans->conn = msc_subscr_conn_get(conn, MSC_CONN_USE_TRANS_SMS); + trans->dlci = 0x03; + /* FIXME: specify SACCH in case we already have active TCH */ /* Hardcode SMSC Originating Address for now */ data = (uint8_t *)msgb_put(msg, 8); -- To view, visit https://gerrit.osmocom.org/7690 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: If511b20f52575054cab1346d99a8cb68d827fdbf Gerrit-PatchSet: 1 Gerrit-Project: osmo-msc Gerrit-Branch: master Gerrit-Owner: Harald Welte From gerrit-no-reply at lists.osmocom.org Mon Apr 9 14:41:25 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Mon, 9 Apr 2018 14:41:25 +0000 Subject: [PATCH] osmo-msc[master]: DTAP: Ensure proper DLCI is used in MSC-originated DTAP In-Reply-To: References: Message-ID: DTAP: Ensure proper DLCI is used in MSC-originated DTAP The DLCI field of the DTAP header indicates the SAPI as well as the data link (main DCCH or SACCH). We must make sure to use the correct DLCI when sending DTAP to the BSC. We achieve this by * storing the DLCI in the msgb->cb while parsing the DTAP header * storing the received DLCI (from msgb->cb) in the transaction for mobile-originated transactions * using the trans->dlci to sent msgb->cb when transmitting L3 * filling the DTAP DLCI value from msgb->cb when transmitting DTAP For MSC-originated transactions, we choose a DLCI value corresponding to the service (SAPI=0 for CC, SAPI=3 for SMS) and store that in trans->dlci. Closes: OS#3150 Change-Id: If511b20f52575054cab1346d99a8cb68d827fdbf --- M include/osmocom/msc/gsm_data.h M include/osmocom/msc/transaction.h M src/libmsc/a_iface.c M src/libmsc/a_iface_bssap.c M src/libmsc/gsm_04_08.c M src/libmsc/gsm_04_11.c 6 files changed, 16 insertions(+), 4 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-msc refs/changes/90/7690/2 diff --git a/include/osmocom/msc/gsm_data.h b/include/osmocom/msc/gsm_data.h index f3e1b94..6f0aca4 100644 --- a/include/osmocom/msc/gsm_data.h +++ b/include/osmocom/msc/gsm_data.h @@ -20,7 +20,8 @@ #include "gsm_data_shared.h" - +/* TS 48.008 DLCI containing DCCH/ACCH + SAPI */ +#define OMSC_LINKID_CB(__msgb) (__msgb)->cb[3] /** annotations for msgb ownership */ #define __uses diff --git a/include/osmocom/msc/transaction.h b/include/osmocom/msc/transaction.h index 272fb3b..63b1cc5 100644 --- a/include/osmocom/msc/transaction.h +++ b/include/osmocom/msc/transaction.h @@ -31,6 +31,9 @@ /* The current transaction ID */ uint8_t transaction_id; + /* The DLCI (DCCH/ACCH + SAPI) of this transaction */ + uint8_t dlci; + /* To whom we belong, unique identifier of remote MM entity */ struct vlr_subscr *vsub; diff --git a/src/libmsc/a_iface.c b/src/libmsc/a_iface.c index 2b1baf0..6f2000e 100644 --- a/src/libmsc/a_iface.c +++ b/src/libmsc/a_iface.c @@ -145,14 +145,13 @@ struct gsm_subscriber_connection *conn; struct msgb *msg_resp; - /* FIXME: Set this to some meaninful value! */ - uint8_t link_id = 0x00; + uint8_t link_id = OMSC_LINKID_CB(msg); OSMO_ASSERT(msg); conn = (struct gsm_subscriber_connection *)msg->dst; OSMO_ASSERT(conn); OSMO_ASSERT(conn->a.scu); - LOGPCONN(conn, LOGL_DEBUG, "Passing DTAP message from MSC to BSC\n"); + LOGPCONN(conn, LOGL_DEBUG, "Passing DTAP message (DLCI=0x%02x) from MSC to BSC\n", link_id); msg->l3h = msg->data; msg_resp = gsm0808_create_dtap(msg, link_id); diff --git a/src/libmsc/a_iface_bssap.c b/src/libmsc/a_iface_bssap.c index 1665e23..d0d6bc0 100644 --- a/src/libmsc/a_iface_bssap.c +++ b/src/libmsc/a_iface_bssap.c @@ -610,6 +610,7 @@ { struct gsm_network *network = a_conn_info->network; struct gsm_subscriber_connection *conn; + struct dtap_header *dtap = (struct dtap_header *) msg->l2h; conn = subscr_conn_lookup_a(network, a_conn_info->conn_id); if (!conn) { @@ -620,6 +621,7 @@ /* msc_dtap expects the dtap payload in l3h */ msg->l3h = msg->l2h + 3; + OMSC_LINKID_CB(msg) = dtap->link_id; /* Forward dtap payload into the msc */ msc_dtap(conn, conn->a.conn_id, msg); diff --git a/src/libmsc/gsm_04_08.c b/src/libmsc/gsm_04_08.c index a90ff17..e5ddb44 100644 --- a/src/libmsc/gsm_04_08.c +++ b/src/libmsc/gsm_04_08.c @@ -164,6 +164,7 @@ * work that the caller no longer has to do */ if (trans) { gh->proto_discr = trans->protocol | (trans->transaction_id << 4); + OMSC_LINKID_CB(msg) = trans->dlci; } return msc_tx_dtap(conn, msg); @@ -3110,6 +3111,7 @@ /* Assign conn */ trans->conn = msc_subscr_conn_get(conn, MSC_CONN_USE_TRANS_CC); + trans->dlci = 0x00; /* SAPI=0, not SACCH */ vlr_subscr_put(vsub); } else { /* update the subscriber we deal with */ @@ -3262,6 +3264,7 @@ } /* Assign transaction */ trans->conn = msc_subscr_conn_get(conn, MSC_CONN_USE_TRANS_CC); + trans->dlci = OMSC_LINKID_CB(msg); /* DLCI as received from BSC */ cm_service_request_concludes(conn, msg); } diff --git a/src/libmsc/gsm_04_11.c b/src/libmsc/gsm_04_11.c index f82aa6d..aa60490 100644 --- a/src/libmsc/gsm_04_11.c +++ b/src/libmsc/gsm_04_11.c @@ -137,6 +137,7 @@ /* Outgoing needs the highest bit set */ gh->proto_discr = trans->protocol | (trans->transaction_id<<4); gh->msg_type = msg_type; + OMSC_LINKID_CB(msg) = trans->dlci; DEBUGP(DLSMS, "sending CP message (trans=%x)\n", trans->transaction_id); @@ -947,6 +948,7 @@ gsm411_rl_recv, gsm411_mn_send); trans->conn = msc_subscr_conn_get(conn, MSC_CONN_USE_TRANS_SMS); + trans->dlci = OMSC_LINKID_CB(msg); /* DLCI as received from BSC */ new_trans = 1; cm_service_request_concludes(conn, msg); @@ -1029,6 +1031,8 @@ trans->sms.sms = sms; trans->conn = msc_subscr_conn_get(conn, MSC_CONN_USE_TRANS_SMS); + trans->dlci = 0x03; + /* FIXME: specify SACCH in case we already have active TCH */ /* Hardcode SMSC Originating Address for now */ data = (uint8_t *)msgb_put(msg, 8); -- To view, visit https://gerrit.osmocom.org/7690 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newpatchset Gerrit-Change-Id: If511b20f52575054cab1346d99a8cb68d827fdbf Gerrit-PatchSet: 2 Gerrit-Project: osmo-msc Gerrit-Branch: master Gerrit-Owner: Harald Welte Gerrit-Reviewer: Jenkins Builder From gerrit-no-reply at lists.osmocom.org Mon Apr 9 15:08:34 2018 From: gerrit-no-reply at lists.osmocom.org (Stefan Sperling) Date: Mon, 9 Apr 2018 15:08:34 +0000 Subject: [PATCH] osmo-bsc[master]: fix initialization of acc ramping Message-ID: Review at https://gerrit.osmocom.org/7691 fix initialization of acc ramping Remove a redundant call to acc_ramp_init() during bootstrap_bts(). ACC ramping state is already initialized during VTY config parsing, and bootstrap_bts() accidentally disabled ACC ramping again even if it was enabled in the configuration. This bug was introduced in last-minute refactoring during review of https://gerrit.osmocom.org/#/c/6324/ when the acc_ramping_enabled flag was moved from struct gsm_bts to the acc_ramp structure itself. Change-Id: Ib7d99c9d3d5d424e21bb7710f719c42f9aef3e95 Related: OS#2591 --- M src/libbsc/bsc_init.c 1 file changed, 1 insertion(+), 1 deletion(-) git pull ssh://gerrit.osmocom.org:29418/osmo-bsc refs/changes/91/7691/1 diff --git a/src/libbsc/bsc_init.c b/src/libbsc/bsc_init.c index ba8b8e6..366b01f 100644 --- a/src/libbsc/bsc_init.c +++ b/src/libbsc/bsc_init.c @@ -539,7 +539,7 @@ bts->chan_load_samples_idx = 0; - acc_ramp_init(&bts->acc_ramp, false, bts); + /* ACC ramping is initialized from vty/config */ /* Initialize the BTS state */ gsm_bts_mo_reset(bts); -- To view, visit https://gerrit.osmocom.org/7691 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Ib7d99c9d3d5d424e21bb7710f719c42f9aef3e95 Gerrit-PatchSet: 1 Gerrit-Project: osmo-bsc Gerrit-Branch: master Gerrit-Owner: Stefan Sperling From jenkins at lists.osmocom.org Mon Apr 9 15:10:06 2018 From: jenkins at lists.osmocom.org (jenkins at lists.osmocom.org) Date: Mon, 9 Apr 2018 15:10:06 +0000 (UTC) Subject: =?UTF-8?Q?Build_failed_in_Jenkins:_master-asn1c_=C2=BB_a1=3Ddefaul?= =?UTF-8?Q?t,a2=3Ddefault,a3=3Ddefault,osmocom-master-debian9_#82?= In-Reply-To: <2083390164.153.1523200206926.JavaMail.jenkins@jenkins.osmocom.org> References: <2083390164.153.1523200206926.JavaMail.jenkins@jenkins.osmocom.org> Message-ID: <592338669.191.1523286606487.JavaMail.jenkins@jenkins.osmocom.org> See ------------------------------------------ [...truncated 3.69 KB...] + ./configure checking build system type... x86_64-unknown-linux-gnu checking host system type... x86_64-unknown-linux-gnu checking target system type... x86_64-unknown-linux-gnu checking for a BSD-compatible install... /usr/bin/install -c checking whether build environment is sane... yes checking for gawk... gawk checking whether make sets $(MAKE)... yes checking whether to enable maintainer-specific portions of Makefiles... no checking for style of include used by make... GNU checking for gcc... gcc checking for C compiler default output file name... a.out checking whether the C compiler works... yes checking whether we are cross compiling... no checking for suffix of executables... checking for suffix of object files... o checking whether we are using the GNU C compiler... yes checking whether gcc accepts -g... yes checking for gcc option to accept ISO C89... none needed checking dependency style of gcc... gcc3 checking for a sed that does not truncate output... /bin/sed checking for grep that handles long lines and -e... /bin/grep checking for egrep... /bin/grep -E checking for ld used by gcc... /usr/bin/ld checking if the linker (/usr/bin/ld) is GNU ld... yes checking for /usr/bin/ld option to reload object files... -r checking for BSD-compatible nm... /usr/bin/nm -B checking whether ln -s works... yes checking how to recognise dependent libraries... pass_all checking how to run the C preprocessor... gcc -E checking for ANSI C header files... yes checking for sys/types.h... yes checking for sys/stat.h... yes checking for stdlib.h... yes checking for string.h... yes checking for memory.h... yes checking for strings.h... yes checking for inttypes.h... yes checking for stdint.h... yes checking for unistd.h... yes checking dlfcn.h usability... yes checking dlfcn.h presence... yes checking for dlfcn.h... yes checking for g++... g++ checking whether we are using the GNU C++ compiler... yes checking whether g++ accepts -g... yes checking dependency style of g++... gcc3 checking how to run the C++ preprocessor... g++ -E checking for g77... no checking for f77... no checking for xlf... no checking for frt... no checking for pgf77... no checking for cf77... no checking for fort77... no checking for fl32... no checking for af77... no checking for f90... no checking for xlf90... no checking for pgf90... no checking for pghpf... no checking for epcf90... no checking for gfortran... no checking for g95... no checking for f95... no checking for fort... no checking for xlf95... no checking for ifort... no checking for ifc... no checking for efc... no checking for pgf95... no checking for lf95... no checking for ftn... no checking whether we are using the GNU Fortran 77 compiler... no checking whether accepts -g... no checking the maximum length of command line arguments... 32768 checking command to parse /usr/bin/nm -B output from gcc object... ok checking for objdir... .libs checking for ar... ar checking for ranlib... ranlib checking for strip... strip checking if gcc supports -fno-rtti -fno-exceptions... no checking for gcc option to produce PIC... -fPIC checking if gcc PIC flag -fPIC works... yes checking if gcc static flag -static works... yes checking if gcc supports -c -o file.o... yes checking whether the gcc linker (/usr/bin/ld -m elf_x86_64) supports shared libraries... yes checking whether -lc should be explicitly linked in... no checking dynamic linker characteristics... GNU/Linux ld.so checking how to hardcode library paths into programs... immediate checking whether stripping libraries is possible... yes checking if libtool supports shared libraries... yes checking whether to build shared libraries... yes checking whether to build static libraries... yes configure: creating libtool appending configuration tag "CXX" to libtool checking for ld used by g++... /usr/bin/ld -m elf_x86_64 checking if the linker (/usr/bin/ld -m elf_x86_64) is GNU ld... yes checking whether the g++ linker (/usr/bin/ld -m elf_x86_64) supports shared libraries... yes checking for g++ option to produce PIC... -fPIC checking if g++ PIC flag -fPIC works... yes checking if g++ static flag -static works... yes checking if g++ supports -c -o file.o... yes checking whether the g++ linker (/usr/bin/ld -m elf_x86_64) supports shared libraries... yes checking dynamic linker characteristics... GNU/Linux ld.so checking how to hardcode library paths into programs... immediate appending configuration tag "F77" to libtool checking for autoconf... /usr/bin/autoconf checking for autoheader... /usr/bin/autoheader checking for gcc... (cached) gcc checking whether we are using the GNU C compiler... (cached) yes checking whether gcc accepts -g... (cached) yes checking for gcc option to accept ISO C89... (cached) none needed checking dependency style of gcc... (cached) gcc3 checking how to run the C preprocessor... gcc -E checking for a BSD-compatible install... /usr/bin/install -c checking whether ln -s works... yes checking whether make sets $(MAKE)... (cached) yes checking for bison... bison -y checking for flex... flex checking for yywrap in -lfl... yes checking lex output file root... lex.yy checking whether yytext is a pointer... yes checking for ar... /usr/bin/ar checking for ANSI C header files... (cached) yes checking sys/param.h usability... yes checking sys/param.h presence... yes checking for sys/param.h... yes checking whether byte ordering is bigendian... no checking for off_t... yes checking for size_t... yes checking whether struct tm is in sys/time.h or time.h... time.h checking for intmax_t... yes checking for library containing getopt... none required checking for strtoimax... yes checking for strtoll... yes checking for mergesort... no checking for mkstemps... yes configure: creating ./config.status config.status: creating skeletons/standard-modules/Makefile config.status: creating skeletons/tests/Makefile config.status: creating libasn1compiler/Makefile config.status: creating libasn1parser/Makefile config.status: creating libasn1print/Makefile config.status: creating asn1c/webcgi/Makefile config.status: creating asn1c/tests/Makefile config.status: creating libasn1fix/Makefile config.status: creating skeletons/Makefile config.status: creating examples/Makefile config.status: creating tests/Makefile config.status: creating asn1c/Makefile config.status: creating doc/Makefile config.status: creating asn1c.spec config.status: creating Makefile config.status: creating config.h config.status: executing depfiles commands + make -j 8 make all-recursive make[1]: Entering directory ' Making all in libasn1parser make[2]: Entering directory ' if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1parser.lo -MD -MP -MF ".deps/asn1parser.Tpo" -c -o asn1parser.lo asn1parser.c; \ then mv -f ".deps/asn1parser.Tpo" ".deps/asn1parser.Plo"; else rm -f ".deps/asn1parser.Tpo"; exit 1; fi bison -y -p asn1p_ -d asn1p_y.y if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_l.lo -MD -MP -MF ".deps/asn1p_l.Tpo" -c -o asn1p_l.lo asn1p_l.c; \ then mv -f ".deps/asn1p_l.Tpo" ".deps/asn1p_l.Plo"; else rm -f ".deps/asn1p_l.Tpo"; exit 1; fi if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_module.lo -MD -MP -MF ".deps/asn1p_module.Tpo" -c -o asn1p_module.lo asn1p_module.c; \ then mv -f ".deps/asn1p_module.Tpo" ".deps/asn1p_module.Plo"; else rm -f ".deps/asn1p_module.Tpo"; exit 1; fi if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_oid.lo -MD -MP -MF ".deps/asn1p_oid.Tpo" -c -o asn1p_oid.lo asn1p_oid.c; \ then mv -f ".deps/asn1p_oid.Tpo" ".deps/asn1p_oid.Plo"; else rm -f ".deps/asn1p_oid.Tpo"; exit 1; fi if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_value.lo -MD -MP -MF ".deps/asn1p_value.Tpo" -c -o asn1p_value.lo asn1p_value.c; \ then mv -f ".deps/asn1p_value.Tpo" ".deps/asn1p_value.Plo"; else rm -f ".deps/asn1p_value.Tpo"; exit 1; fi if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_expr.lo -MD -MP -MF ".deps/asn1p_expr.Tpo" -c -o asn1p_expr.lo asn1p_expr.c; \ then mv -f ".deps/asn1p_expr.Tpo" ".deps/asn1p_expr.Plo"; else rm -f ".deps/asn1p_expr.Tpo"; exit 1; fi if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_xports.lo -MD -MP -MF ".deps/asn1p_xports.Tpo" -c -o asn1p_xports.lo asn1p_xports.c; \ then mv -f ".deps/asn1p_xports.Tpo" ".deps/asn1p_xports.Plo"; else rm -f ".deps/asn1p_xports.Tpo"; exit 1; fi asn1p_y.y: warning: 2 shift/reduce conflicts [-Wconflicts-sr] mkdir .libs gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_module.lo -MD -MP -MF .deps/asn1p_module.Tpo -c asn1p_module.c -fPIC -DPIC -o .libs/asn1p_module.o gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_l.lo -MD -MP -MF .deps/asn1p_l.Tpo -c asn1p_l.c -fPIC -DPIC -o .libs/asn1p_l.o gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_xports.lo -MD -MP -MF .deps/asn1p_xports.Tpo -c asn1p_xports.c -fPIC -DPIC -o .libs/asn1p_xports.o gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_oid.lo -MD -MP -MF .deps/asn1p_oid.Tpo -c asn1p_oid.c -fPIC -DPIC -o .libs/asn1p_oid.o gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1parser.lo -MD -MP -MF .deps/asn1parser.Tpo -c asn1parser.c -fPIC -DPIC -o .libs/asn1parser.o gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_value.lo -MD -MP -MF .deps/asn1p_value.Tpo -c asn1p_value.c -fPIC -DPIC -o .libs/asn1p_value.o gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_expr.lo -MD -MP -MF .deps/asn1p_expr.Tpo -c asn1p_expr.c -fPIC -DPIC -o .libs/asn1p_expr.o gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_module.lo -MD -MP -MF .deps/asn1p_module.Tpo -c asn1p_module.c -o asn1p_module.o >/dev/null 2>&1 asn1p_l.c:3521:12: warning: 'input' defined but not used [-Wunused-function] static int input() ^~~~~ gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_xports.lo -MD -MP -MF .deps/asn1p_xports.Tpo -c asn1p_xports.c -o asn1p_xports.o >/dev/null 2>&1 gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_oid.lo -MD -MP -MF .deps/asn1p_oid.Tpo -c asn1p_oid.c -o asn1p_oid.o >/dev/null 2>&1 gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1parser.lo -MD -MP -MF .deps/asn1parser.Tpo -c asn1parser.c -o asn1parser.o >/dev/null 2>&1 gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_value.lo -MD -MP -MF .deps/asn1p_value.Tpo -c asn1p_value.c -o asn1p_value.o >/dev/null 2>&1 if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_constr.lo -MD -MP -MF ".deps/asn1p_constr.Tpo" -c -o asn1p_constr.lo asn1p_constr.c; \ then mv -f ".deps/asn1p_constr.Tpo" ".deps/asn1p_constr.Plo"; else rm -f ".deps/asn1p_constr.Tpo"; exit 1; fi if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_param.lo -MD -MP -MF ".deps/asn1p_param.Tpo" -c -o asn1p_param.lo asn1p_param.c; \ then mv -f ".deps/asn1p_param.Tpo" ".deps/asn1p_param.Plo"; else rm -f ".deps/asn1p_param.Tpo"; exit 1; fi gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_expr.lo -MD -MP -MF .deps/asn1p_expr.Tpo -c asn1p_expr.c -o asn1p_expr.o >/dev/null 2>&1 if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_class.lo -MD -MP -MF ".deps/asn1p_class.Tpo" -c -o asn1p_class.lo asn1p_class.c; \ then mv -f ".deps/asn1p_class.Tpo" ".deps/asn1p_class.Plo"; else rm -f ".deps/asn1p_class.Tpo"; exit 1; fi if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_ref.lo -MD -MP -MF ".deps/asn1p_ref.Tpo" -c -o asn1p_ref.lo asn1p_ref.c; \ then mv -f ".deps/asn1p_ref.Tpo" ".deps/asn1p_ref.Plo"; else rm -f ".deps/asn1p_ref.Tpo"; exit 1; fi gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_constr.lo -MD -MP -MF .deps/asn1p_constr.Tpo -c asn1p_constr.c -fPIC -DPIC -o .libs/asn1p_constr.o gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_param.lo -MD -MP -MF .deps/asn1p_param.Tpo -c asn1p_param.c -fPIC -DPIC -o .libs/asn1p_param.o if test -f y.tab.h; then \ to=`echo "asn1p_y_H" | sed \ -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/' \ -e 's/[^ABCDEFGHIJKLMNOPQRSTUVWXYZ]/_/g'`; \ sed -e "/^#/!b" -e "s/Y_TAB_H/$to/g" -e "s|y\.tab\.h|asn1p_y.h|" \ y.tab.h >asn1p_y.ht; \ rm -f y.tab.h; \ if cmp -s asn1p_y.ht asn1p_y.h; then \ rm -f asn1p_y.ht ;\ else \ mv asn1p_y.ht asn1p_y.h; \ fi; \ fi if test -f y.output; then \ mv y.output asn1p_y.output; \ fi sed '/^#/ s|y\.tab\.c|asn1p_y.c|' y.tab.c >asn1p_y.ct && mv asn1p_y.ct asn1p_y.c rm -f y.tab.c if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_y.lo -MD -MP -MF ".deps/asn1p_y.Tpo" -c -o asn1p_y.lo asn1p_y.c; \ then mv -f ".deps/asn1p_y.Tpo" ".deps/asn1p_y.Plo"; else rm -f ".deps/asn1p_y.Tpo"; exit 1; fi gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_class.lo -MD -MP -MF .deps/asn1p_class.Tpo -c asn1p_class.c -fPIC -DPIC -o .libs/asn1p_class.o gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_ref.lo -MD -MP -MF .deps/asn1p_ref.Tpo -c asn1p_ref.c -fPIC -DPIC -o .libs/asn1p_ref.o gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_param.lo -MD -MP -MF .deps/asn1p_param.Tpo -c asn1p_param.c -o asn1p_param.o >/dev/null 2>&1 gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_constr.lo -MD -MP -MF .deps/asn1p_constr.Tpo -c asn1p_constr.c -o asn1p_constr.o >/dev/null 2>&1 gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_y.lo -MD -MP -MF .deps/asn1p_y.Tpo -c asn1p_y.c -fPIC -DPIC -o .libs/asn1p_y.o gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_ref.lo -MD -MP -MF .deps/asn1p_ref.Tpo -c asn1p_ref.c -o asn1p_ref.o >/dev/null 2>&1 gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_class.lo -MD -MP -MF .deps/asn1p_class.Tpo -c asn1p_class.c -o asn1p_class.o >/dev/null 2>&1 asn1p_y.y: In function 'asn1p_parse': asn1p_y.y:357:13: error: 'param' undeclared (first use in this function) *(void **)param = $1; ^~~~~ asn1p_y.y:357:13: note: each undeclared identifier is reported only once for each function it appears in gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_l.lo -MD -MP -MF .deps/asn1p_l.Tpo -c asn1p_l.c -o asn1p_l.o >/dev/null 2>&1 Makefile:299: recipe for target 'asn1p_y.lo' failed make[2]: *** [asn1p_y.lo] Error 1 make[2]: *** Waiting for unfinished jobs.... make[2]: Leaving directory ' Makefile:302: recipe for target 'all-recursive' failed make[1]: *** [all-recursive] Error 1 make[1]: Leaving directory ' Makefile:212: recipe for target 'all' failed make: *** [all] Error 2 Build step 'Execute shell' marked build as failure [WARNINGS]Skipping publisher since build result is FAILURE From gerrit-no-reply at lists.osmocom.org Mon Apr 9 15:12:53 2018 From: gerrit-no-reply at lists.osmocom.org (Stefan Sperling) Date: Mon, 9 Apr 2018 15:12:53 +0000 Subject: [PATCH] osmo-bsc[master]: fix initialization of acc ramping In-Reply-To: References: Message-ID: fix initialization of acc ramping Remove a redundant call to acc_ramp_init() during bootstrap_bts(). ACC ramping state is already initialized during VTY config parsing, and bootstrap_bts() accidentally disabled ACC ramping again even if it was enabled in the configuration. This bug was introduced in last-minute refactoring during review of https://gerrit.osmocom.org/#/c/6324/ when the acc_ramping_enabled flag was moved from struct gsm_bts to the acc_ramp structure itself. Change-Id: Ib7d99c9d3d5d424e21bb7710f719c42f9aef3e95 Fixes: 6442e4327b1100ecfed7a242e397ac37b7529bea Related: OS#2591 --- M src/libbsc/bsc_init.c 1 file changed, 1 insertion(+), 1 deletion(-) git pull ssh://gerrit.osmocom.org:29418/osmo-bsc refs/changes/91/7691/2 diff --git a/src/libbsc/bsc_init.c b/src/libbsc/bsc_init.c index ba8b8e6..366b01f 100644 --- a/src/libbsc/bsc_init.c +++ b/src/libbsc/bsc_init.c @@ -539,7 +539,7 @@ bts->chan_load_samples_idx = 0; - acc_ramp_init(&bts->acc_ramp, false, bts); + /* ACC ramping is initialized from vty/config */ /* Initialize the BTS state */ gsm_bts_mo_reset(bts); -- To view, visit https://gerrit.osmocom.org/7691 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newpatchset Gerrit-Change-Id: Ib7d99c9d3d5d424e21bb7710f719c42f9aef3e95 Gerrit-PatchSet: 2 Gerrit-Project: osmo-bsc Gerrit-Branch: master Gerrit-Owner: Stefan Sperling Gerrit-Reviewer: Jenkins Builder From gerrit-no-reply at lists.osmocom.org Mon Apr 9 15:20:26 2018 From: gerrit-no-reply at lists.osmocom.org (Stefan Sperling) Date: Mon, 9 Apr 2018 15:20:26 +0000 Subject: [PATCH] openbsc[master]: fix initialization of acc ramping Message-ID: Review at https://gerrit.osmocom.org/7692 fix initialization of acc ramping Remove a redundant call to acc_ramp_init() during bootstrap_bts(). ACC ramping state is already initialized during VTY config parsing, and bootstrap_bts() accidentally disabled ACC ramping again even if it was enabled in the configuration. This bug was introduced in last-minute refactoring during review of https://gerrit.osmocom.org/#/c/6324/ when the acc_ramping_enabled flag was moved from struct gsm_bts to the acc_ramp structure itself. Port of osmo-bsc commit 668d4de017c65a8b4455fd7e185c7bff3daac719 Fixes: 8469818e33ef81e9f707a0c4dd13d7b91ecf83f5 Related: OS#2591 Change-Id: I5834fd953e65b8453dee0a7751d5a4cae12be83a --- M openbsc/src/libbsc/bsc_init.c 1 file changed, 1 insertion(+), 1 deletion(-) git pull ssh://gerrit.osmocom.org:29418/openbsc refs/changes/92/7692/1 diff --git a/openbsc/src/libbsc/bsc_init.c b/openbsc/src/libbsc/bsc_init.c index 9389c43..3882526 100644 --- a/openbsc/src/libbsc/bsc_init.c +++ b/openbsc/src/libbsc/bsc_init.c @@ -521,7 +521,7 @@ bts->chan_load_samples_idx = 0; - acc_ramp_init(&bts->acc_ramp, false, bts); + /* ACC ramping is initialized from vty/config */ /* Initialize the BTS state */ gsm_bts_mo_reset(bts); -- To view, visit https://gerrit.osmocom.org/7692 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I5834fd953e65b8453dee0a7751d5a4cae12be83a Gerrit-PatchSet: 1 Gerrit-Project: openbsc Gerrit-Branch: master Gerrit-Owner: Stefan Sperling From gerrit-no-reply at lists.osmocom.org Mon Apr 9 15:56:15 2018 From: gerrit-no-reply at lists.osmocom.org (Neels Hofmeyr) Date: Mon, 9 Apr 2018 15:56:15 +0000 Subject: [MERGED] libosmocore[master]: add osmo_quote_str(), osmo_quote_str_buf() and test In-Reply-To: References: Message-ID: Neels Hofmeyr has submitted this change and it was merged. Change subject: add osmo_quote_str(),osmo_quote_str_buf() and test ...................................................................... add osmo_quote_str(),osmo_quote_str_buf() and test Rationale: with osmo_escape_str(), you get the escaped contents of the string, but not so graceful handling of NULL strings. The caller needs to quote it, and for NULL strings not quote it. osmo_quote_str() is like osmo_escape_str() but always quotes a non-NULL string, and for a NULL string returns a literal NULL, i.e. it should (tm) give the exact C representation of a string. That's useful in testing, to show exactly what char* situation we have, without jumping through hoops like if (str) printf("\"%s\"", osmo_escape_str(str, -1)); else printf("NULL"); Copy the unit test for osmo_escape_str() and adjust. To indicate that the double quotes are returned by osmo_quote_str(), use single quotes in the test printf()s. I considered allowing to pick the quoting characters by further arguments, but that complicates things: we'd need to escape the quoting characters. Just hardcode double quotes like C. Change-Id: I6f1b3709b32c23fc52f70ad9ecc9439c62b02a12 --- M include/osmocom/core/utils.h M src/utils.c M tests/utils/utils_test.c M tests/utils/utils_test.ok 4 files changed, 128 insertions(+), 0 deletions(-) Approvals: Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/include/osmocom/core/utils.h b/include/osmocom/core/utils.h index f1e011f..8928f68 100644 --- a/include/osmocom/core/utils.h +++ b/include/osmocom/core/utils.h @@ -125,5 +125,7 @@ const char *osmo_escape_str(const char *str, int len); const char *osmo_escape_str_buf(const char *str, int in_len, char *buf, size_t bufsize); +const char *osmo_quote_str(const char *str, int in_len); +const char *osmo_quote_str_buf(const char *str, int in_len, char *buf, size_t bufsize); /*! @} */ diff --git a/src/utils.c b/src/utils.c index 109aac0..32ea87c 100644 --- a/src/utils.c +++ b/src/utils.c @@ -554,4 +554,42 @@ return osmo_escape_str_buf(str, in_len, namebuf, sizeof(namebuf)); } +/*! Like osmo_escape_str(), but returns double-quotes around a string, or "NULL" for a NULL string. + * This allows passing any char* value and get its C representation as string. + * \param[in] str A string that may contain any characters. + * \param[in] len Pass -1 to print until nul char, or >= 0 to force a length. + * \returns buf containing an escaped representation, possibly truncated, or str itself. + */ +const char *osmo_quote_str_buf(const char *str, int in_len, char *buf, size_t bufsize) +{ + const char *res; + int l; + if (!str) + return "NULL"; + if (bufsize < 3) + return ""; + buf[0] = '"'; + res = osmo_escape_str_buf(str, in_len, buf + 1, bufsize - 2); + /* if osmo_escape_str_buf() returned the str itself, we need to copy it to buf to be able to + * quote it. */ + if (res == str) { + /* max_len = bufsize - two quotes - nul term */ + int max_len = bufsize - 2 - 1; + if (in_len >= 0) + max_len = OSMO_MIN(in_len, max_len); + /* It is not allowed to pass unterminated strings into osmo_strlcpy() :/ */ + strncpy(buf + 1, str, max_len); + buf[1 + max_len] = '\0'; + } + l = strlen(buf); + buf[l] = '"'; + buf[l+1] = '\0'; /* both osmo_escape_str_buf() and max_len above ensure room for '\0' */ + return buf; +} + +const char *osmo_quote_str(const char *str, int in_len) +{ + return osmo_quote_str_buf(str, in_len, namebuf, sizeof(namebuf)); +} + /*! @} */ diff --git a/tests/utils/utils_test.c b/tests/utils/utils_test.c index f358e9a..a124352 100644 --- a/tests/utils/utils_test.c +++ b/tests/utils/utils_test.c @@ -371,6 +371,60 @@ OSMO_ASSERT(out_buf[0] == 0x7f); } +static void str_quote_test(void) +{ + int i; + int j; + uint8_t in_buf[32]; + char out_buf[11]; + const char *printable = "printable"; + const char *res; + + printf("\nTesting string quoting\n"); + printf("- all chars from 0 to 255 in batches of 16:\n"); + in_buf[16] = '\0'; + for (j = 0; j < 16; j++) { + for (i = 0; i < 16; i++) + in_buf[i] = (j << 4) | i; + printf("'%s'\n", osmo_quote_str((const char*)in_buf, 16)); + } + + printf("- nul terminated:\n"); + printf("'%s'\n", osmo_quote_str("termi\nated", -1)); + + printf("- never passthru:\n"); + res = osmo_quote_str(printable, -1); + if (res != printable) + printf("NOT passed through. '%s'\n", res); + else + printf("passed through unchanged '%s'\n", res); + + printf("- zero length:\n"); + printf("'%s'\n", osmo_quote_str("omitted", 0)); + + printf("- truncation when too long:\n"); + memset(in_buf, 'x', sizeof(in_buf)); + in_buf[0] = '\a'; + in_buf[5] = 'E'; + memset(out_buf, 0x7f, sizeof(out_buf)); + printf("'%s'\n", osmo_quote_str_buf((const char *)in_buf, sizeof(in_buf), out_buf, 10)); + OSMO_ASSERT(out_buf[10] == 0x7f); + + printf("- always truncation, even when no escaping needed:\n"); + memset(in_buf, 'x', sizeof(in_buf)); + in_buf[6] = 'E'; /* dst has 10, less 2 quotes and nul, leaves 7, i.e. in[6] is last */ + in_buf[20] = '\0'; + memset(out_buf, 0x7f, sizeof(out_buf)); + printf("'%s'\n", osmo_quote_str_buf((const char *)in_buf, -1, out_buf, 10)); + OSMO_ASSERT(out_buf[0] == '"'); + + printf("- try to feed too little buf for quoting:\n"); + printf("'%s'\n", osmo_quote_str_buf("", -1, out_buf, 2)); + + printf("- NULL string becomes a \"NULL\" literal:\n"); + printf("'%s'\n", osmo_quote_str_buf(NULL, -1, out_buf, 10)); +} + int main(int argc, char **argv) { static const struct log_info log_info = {}; @@ -382,5 +436,6 @@ test_is_hexstr(); bcd_test(); str_escape_test(); + str_quote_test(); return 0; } diff --git a/tests/utils/utils_test.ok b/tests/utils/utils_test.ok index fb1d62e..5bc3896 100644 --- a/tests/utils/utils_test.ok +++ b/tests/utils/utils_test.ok @@ -104,3 +104,36 @@ "\axxxxxxE" - passthrough without truncation when no escaping needed: "xxxxxxxxxxxxxxxxxxxE" + +Testing string quoting +- all chars from 0 to 255 in batches of 16: +'"\0\1\2\3\4\5\6\a\b\t\n\v\f\r\14\15"' +'"\16\17\18\19\20\21\22\23\24\25\26\27\28\29\30\31"' +'" !\"#$%&'()*+,-./"' +'"0123456789:;<=>?"' +'"@ABCDEFGHIJKLMNO"' +'"PQRSTUVWXYZ[\\]^_"' +'"`abcdefghijklmno"' +'"pqrstuvwxyz{|}~\127"' +'"\128\129\130\131\132\133\134\135\136\137\138\139\140\141\142\143"' +'"\144\145\146\147\148\149\150\151\152\153\154\155\156\157\158\159"' +'"\160\161\162\163\164\165\166\167\168\169\170\171\172\173\174\175"' +'"\176\177\178\179\180\181\182\183\184\185\186\187\188\189\190\191"' +'"\192\193\194\195\196\197\198\199\200\201\202\203\204\205\206\207"' +'"\208\209\210\211\212\213\214\215\216\217\218\219\220\221\222\223"' +'"\224\225\226\227\228\229\230\231\232\233\234\235\236\237\238\239"' +'"\240\241\242\243\244\245\246\247\248\249\250\251\252\253\254\255"' +- nul terminated: +'"termi\nated"' +- never passthru: +NOT passed through. '"printable"' +- zero length: +'""' +- truncation when too long: +'"\axxxxE"' +- always truncation, even when no escaping needed: +'"xxxxxxE"' +- try to feed too little buf for quoting: +'' +- NULL string becomes a "NULL" literal: +'NULL' -- To view, visit https://gerrit.osmocom.org/7678 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: I6f1b3709b32c23fc52f70ad9ecc9439c62b02a12 Gerrit-PatchSet: 3 Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Neels Hofmeyr From gerrit-no-reply at lists.osmocom.org Mon Apr 9 15:57:44 2018 From: gerrit-no-reply at lists.osmocom.org (Neels Hofmeyr) Date: Mon, 9 Apr 2018 15:57:44 +0000 Subject: [MERGED] libosmocore[master]: add gsm48_reject_value_names In-Reply-To: References: Message-ID: Neels Hofmeyr has submitted this change and it was merged. Change subject: add gsm48_reject_value_names ...................................................................... add gsm48_reject_value_names There seems to be quite some confusion / overlap between enum gsm48_reject_value, gsm48_gsm_cause and gsm48_gmm_cause. I tried to go with gsm48_gsm_cause_names[], but e.g. GSM48_REJECT_CONGESTION is not represented. Instead of attempting to mix/merge those enums, provide a separate value string array for enum gsm48_reject_value. This will be used by osmo-msc's libvlr (refactoring of FSM result handling), I27bf8d68737ff1f8dc6d11fb1eac3d391aab0cb1. Change-Id: I6661f139e68a498fb1bef10c266c2f064b72774a --- M include/osmocom/gsm/protocol/gsm_04_08.h M src/gsm/gsm48.c M src/gsm/libosmogsm.map 3 files changed, 38 insertions(+), 0 deletions(-) Approvals: Harald Welte: Looks good to me, approved diff --git a/include/osmocom/gsm/protocol/gsm_04_08.h b/include/osmocom/gsm/protocol/gsm_04_08.h index 4a821cc..6a5fb3b 100644 --- a/include/osmocom/gsm/protocol/gsm_04_08.h +++ b/include/osmocom/gsm/protocol/gsm_04_08.h @@ -1509,6 +1509,10 @@ GSM48_REJECT_MSC_TMP_NOT_REACHABLE = 16, }; +extern const struct value_string gsm48_reject_value_names[]; +static inline const char *gsm48_reject_value_name(enum gsm48_reject_value val) +{ return get_value_string(gsm48_reject_value_names, val); } + enum chreq_type { CHREQ_T_EMERG_CALL, CHREQ_T_CALL_REEST_TCH_F, diff --git a/src/gsm/gsm48.c b/src/gsm/gsm48.c index c2affae..468b2a9 100644 --- a/src/gsm/gsm48.c +++ b/src/gsm/gsm48.c @@ -980,4 +980,37 @@ return namebuf; } +const struct value_string gsm48_reject_value_names[] = { + { GSM48_REJECT_IMSI_UNKNOWN_IN_HLR, "IMSI_UNKNOWN_IN_HLR" }, + { GSM48_REJECT_ILLEGAL_MS, "ILLEGAL_MS" }, + { GSM48_REJECT_IMSI_UNKNOWN_IN_VLR, "IMSI_UNKNOWN_IN_VLR" }, + { GSM48_REJECT_IMEI_NOT_ACCEPTED, "IMEI_NOT_ACCEPTED" }, + { GSM48_REJECT_ILLEGAL_ME, "ILLEGAL_ME" }, + { GSM48_REJECT_PLMN_NOT_ALLOWED, "PLMN_NOT_ALLOWED" }, + { GSM48_REJECT_LOC_NOT_ALLOWED, "LOC_NOT_ALLOWED" }, + { GSM48_REJECT_ROAMING_NOT_ALLOWED, "ROAMING_NOT_ALLOWED" }, + { GSM48_REJECT_NETWORK_FAILURE, "NETWORK_FAILURE" }, + { GSM48_REJECT_SYNCH_FAILURE, "SYNCH_FAILURE" }, + { GSM48_REJECT_CONGESTION, "CONGESTION" }, + { GSM48_REJECT_SRV_OPT_NOT_SUPPORTED, "SRV_OPT_NOT_SUPPORTED" }, + { GSM48_REJECT_RQD_SRV_OPT_NOT_SUPPORTED, "RQD_SRV_OPT_NOT_SUPPORTED" }, + { GSM48_REJECT_SRV_OPT_TMP_OUT_OF_ORDER, "SRV_OPT_TMP_OUT_OF_ORDER" }, + { GSM48_REJECT_CALL_CAN_NOT_BE_IDENTIFIED, "CALL_CAN_NOT_BE_IDENTIFIED" }, + { GSM48_REJECT_INCORRECT_MESSAGE, "INCORRECT_MESSAGE" }, + { GSM48_REJECT_INVALID_MANDANTORY_INF, "INVALID_MANDANTORY_INF" }, + { GSM48_REJECT_MSG_TYPE_NOT_IMPLEMENTED, "MSG_TYPE_NOT_IMPLEMENTED" }, + { GSM48_REJECT_MSG_TYPE_NOT_COMPATIBLE, "MSG_TYPE_NOT_COMPATIBLE" }, + { GSM48_REJECT_INF_ELEME_NOT_IMPLEMENTED, "INF_ELEME_NOT_IMPLEMENTED" }, + { GSM48_REJECT_CONDTIONAL_IE_ERROR, "CONDTIONAL_IE_ERROR" }, + { GSM48_REJECT_MSG_NOT_COMPATIBLE, "MSG_NOT_COMPATIBLE" }, + { GSM48_REJECT_PROTOCOL_ERROR, "PROTOCOL_ERROR" }, + { GSM48_REJECT_GPRS_NOT_ALLOWED, "GPRS_NOT_ALLOWED" }, + { GSM48_REJECT_SERVICES_NOT_ALLOWED, "SERVICES_NOT_ALLOWED" }, + { GSM48_REJECT_MS_IDENTITY_NOT_DERVIVABLE, "MS_IDENTITY_NOT_DERVIVABLE" }, + { GSM48_REJECT_IMPLICITLY_DETACHED, "IMPLICITLY_DETACHED" }, + { GSM48_REJECT_GPRS_NOT_ALLOWED_IN_PLMN, "GPRS_NOT_ALLOWED_IN_PLMN" }, + { GSM48_REJECT_MSC_TMP_NOT_REACHABLE, "MSC_TMP_NOT_REACHABLE" }, + { 0, NULL } +}; + /*! @} */ diff --git a/src/gsm/libosmogsm.map b/src/gsm/libosmogsm.map index dd4722e..31717d5 100644 --- a/src/gsm/libosmogsm.map +++ b/src/gsm/libosmogsm.map @@ -287,6 +287,7 @@ gsm48_mm_msgtype_names; gsm48_cc_msgtype_names; gsm48_pdisc_msgtype_name; +gsm48_reject_value_names; gsm_7bit_decode; gsm_7bit_decode_ussd; -- To view, visit https://gerrit.osmocom.org/7683 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: I6661f139e68a498fb1bef10c266c2f064b72774a Gerrit-PatchSet: 2 Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder From gerrit-no-reply at lists.osmocom.org Mon Apr 9 15:57:44 2018 From: gerrit-no-reply at lists.osmocom.org (Neels Hofmeyr) Date: Mon, 9 Apr 2018 15:57:44 +0000 Subject: [MERGED] libosmocore[master]: add osmo_fsm_inst_update_id_f() In-Reply-To: References: Message-ID: Neels Hofmeyr has submitted this change and it was merged. Change subject: add osmo_fsm_inst_update_id_f() ...................................................................... add osmo_fsm_inst_update_id_f() In the osmo-msc, I would like to set the subscr conn FSM identifier by a string format, to include the type of Complete Layer 3 that is taking place. I could each time talloc a string and free it again. This API is more convenient. >From osmo_fsm_inst_update_id(), call osmo_fsm_inst_update_id_f() with "%s" (or pass NULL). Put the name updating into separate static update_name() function to clarify. Adjust the error message for erratic ID: don't say "allocate", it might be from an update. Adjust test expectation. Change-Id: I76743a7642f2449fd33350691ac8ebbf4400371d --- M include/osmocom/core/fsm.h M src/fsm.c M tests/fsm/fsm_test.c M tests/fsm/fsm_test.err 4 files changed, 97 insertions(+), 22 deletions(-) Approvals: Harald Welte: Looks good to me, approved diff --git a/include/osmocom/core/fsm.h b/include/osmocom/core/fsm.h index 2c2a996..174396a 100644 --- a/include/osmocom/core/fsm.h +++ b/include/osmocom/core/fsm.h @@ -159,6 +159,7 @@ void osmo_fsm_inst_free(struct osmo_fsm_inst *fi); int osmo_fsm_inst_update_id(struct osmo_fsm_inst *fi, const char *id); +int osmo_fsm_inst_update_id_f(struct osmo_fsm_inst *fi, const char *fmt, ...); const char *osmo_fsm_event_name(struct osmo_fsm *fsm, uint32_t event); const char *osmo_fsm_inst_name(struct osmo_fsm_inst *fi); diff --git a/src/fsm.c b/src/fsm.c index 0fdc564..ae2fdc2 100644 --- a/src/fsm.c +++ b/src/fsm.c @@ -211,38 +211,61 @@ */ int osmo_fsm_inst_update_id(struct osmo_fsm_inst *fi, const char *id) { - if (id) { + if (!id) + return osmo_fsm_inst_update_id_f(fi, NULL); + else + return osmo_fsm_inst_update_id_f(fi, "%s", id); +} + +static void update_name(struct osmo_fsm_inst *fi) +{ + if (fi->name) + talloc_free((char*)fi->name); + + if (!fsm_log_addr) { + if (fi->id) + fi->name = talloc_asprintf(fi, "%s(%s)", fi->fsm->name, fi->id); + else + fi->name = talloc_asprintf(fi, "%s", fi->fsm->name); + } else { + if (fi->id) + fi->name = talloc_asprintf(fi, "%s(%s)[%p]", fi->fsm->name, fi->id, fi); + else + fi->name = talloc_asprintf(fi, "%s[%p]", fi->fsm->name, fi); + } +} + +/*! Change id of the FSM instance using a string format. + * \param[in] fi FSM instance. + * \param[in] fmt format string to compose new ID. + * \param[in] ... variable argument list for format string. + * \returns 0 if the ID was updated, otherwise -EINVAL. + */ +int osmo_fsm_inst_update_id_f(struct osmo_fsm_inst *fi, const char *fmt, ...) +{ + char *id = NULL; + + if (fmt) { + va_list ap; + + va_start(ap, fmt); + id = talloc_vasprintf(fi, fmt, ap); + va_end(ap); + if (!osmo_identifier_valid(id)) { LOGP(DLGLOBAL, LOGL_ERROR, "Attempting to set illegal id for FSM instance of type '%s': %s\n", fi->fsm->name, osmo_quote_str(id, -1)); + talloc_free(id); return -EINVAL; } - osmo_talloc_replace_string(fi, (char **)&fi->id, id); - - if (fi->name) - talloc_free((void*)fi->name); - - if (!fsm_log_addr) { - fi->name = talloc_asprintf(fi, "%s(%s)", fi->fsm->name, id); - } else { - fi->name = talloc_asprintf(fi, "%s(%s)[%p]", fi->fsm->name, id, fi); - } - - return 0; } if (fi->id) - talloc_free((void*)fi->id); - fi->id = NULL; - if (fi->name) - talloc_free((void*)fi->name); + talloc_free((char*)fi->id); + fi->id = id; - if (!fsm_log_addr) { - fi->name = talloc_asprintf(fi, "%s", fi->fsm->name); - } else { - fi->name = talloc_asprintf(fi, "%s[%p]", fi->fsm->name, fi); - } + update_name(fi); return 0; } diff --git a/tests/fsm/fsm_test.c b/tests/fsm/fsm_test.c index 859b78d..e34164c 100644 --- a/tests/fsm/fsm_test.c +++ b/tests/fsm/fsm_test.c @@ -237,6 +237,30 @@ test_id("invalid.id", -EINVAL, "(arbitrary_id)"); + fprintf(stderr, "--- id format tests...\n"); +/* Update the id, assert the proper rc, and expect a resulting fsm inst name + lookup */ +#define test_id_f(expect_rc, expect_name_suffix, new_id_fmt, args...) do { \ + int rc; \ + fprintf(stderr, "osmo_fsm_inst_update_id_f(%s, " #args ")\n", \ + osmo_quote_str(new_id_fmt, -1)); \ + rc = osmo_fsm_inst_update_id_f(fi, new_id_fmt, ## args); \ + fprintf(stderr, " rc == %d", rc); \ + if (rc == (expect_rc)) \ + fprintf(stderr, ", ok\n"); \ + else { \ + fprintf(stderr, ", ERROR: expected rc == %d\n", expect_rc); \ + OSMO_ASSERT(rc == expect_rc); \ + } \ + assert_name("Test_FSM" expect_name_suffix); \ + }while (0) + + test_id_f(-EINVAL, "(arbitrary_id)", "format%cid", '.'); + test_id_f(-EINVAL, "(arbitrary_id)", "%s", ""); + test_id_f(0, "(format23id42)", "format%xid%d", 0x23, 42); + test_id_f(0, "", NULL); + test_id_f(0, "", NULL); + test_id_f(0, "(arbitrary_id)", "%s%c%s", "arbitrary", '_', "id"); + fprintf(stderr, "\n--- %s() done\n\n", __func__); osmo_fsm_inst_term(fi, OSMO_FSM_TERM_REQUEST, NULL); diff --git a/tests/fsm/fsm_test.err b/tests/fsm/fsm_test.err index 3e01d48..3237def 100644 --- a/tests/fsm/fsm_test.err +++ b/tests/fsm/fsm_test.err @@ -47,6 +47,33 @@  rc == -22, ok osmo_fsm_inst_name() == "Test_FSM(arbitrary_id)" osmo_fsm_inst_find_by_name("Test_FSM(arbitrary_id)") == fi +--- id format tests... +osmo_fsm_inst_update_id_f("format%cid", '.') +Attempting to set illegal id for FSM instance of type 'Test_FSM': "format.id" + rc == -22, ok + osmo_fsm_inst_name() == "Test_FSM(arbitrary_id)" + osmo_fsm_inst_find_by_name("Test_FSM(arbitrary_id)") == fi +osmo_fsm_inst_update_id_f("%s", "") +Attempting to set illegal id for FSM instance of type 'Test_FSM': "" + rc == -22, ok + osmo_fsm_inst_name() == "Test_FSM(arbitrary_id)" + osmo_fsm_inst_find_by_name("Test_FSM(arbitrary_id)") == fi +osmo_fsm_inst_update_id_f("format%xid%d", 0x23, 42) + rc == 0, ok + osmo_fsm_inst_name() == "Test_FSM(format23id42)" + osmo_fsm_inst_find_by_name("Test_FSM(format23id42)") == fi +osmo_fsm_inst_update_id_f(NULL, ) + rc == 0, ok + osmo_fsm_inst_name() == "Test_FSM" + osmo_fsm_inst_find_by_name("Test_FSM") == fi +osmo_fsm_inst_update_id_f(NULL, ) + rc == 0, ok + osmo_fsm_inst_name() == "Test_FSM" + osmo_fsm_inst_find_by_name("Test_FSM") == fi +osmo_fsm_inst_update_id_f("%s%c%s", "arbitrary", '_', "id") + rc == 0, ok + osmo_fsm_inst_name() == "Test_FSM(arbitrary_id)" + osmo_fsm_inst_find_by_name("Test_FSM(arbitrary_id)") == fi --- test_id_api() done -- To view, visit https://gerrit.osmocom.org/7629 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: I76743a7642f2449fd33350691ac8ebbf4400371d Gerrit-PatchSet: 3 Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Neels Hofmeyr From gerrit-no-reply at lists.osmocom.org Mon Apr 9 15:57:45 2018 From: gerrit-no-reply at lists.osmocom.org (Neels Hofmeyr) Date: Mon, 9 Apr 2018 15:57:45 +0000 Subject: [MERGED] libosmocore[master]: cosmetic: osmo_fsm_inst_update_id(): don't log "allocate" In-Reply-To: References: Message-ID: Neels Hofmeyr has submitted this change and it was merged. Change subject: cosmetic: osmo_fsm_inst_update_id(): don't log "allocate" ...................................................................... cosmetic: osmo_fsm_inst_update_id(): don't log "allocate" On erratic id in osmo_fsm_inst_update_id(), don't say "Attempting to allocate FSM instance". Escape the invalid id using osmo_quote_str(). Change-Id: I770fc460de21faa42b403f694e853e8da01c4bef --- M src/fsm.c M tests/fsm/fsm_test.err 2 files changed, 5 insertions(+), 4 deletions(-) Approvals: Harald Welte: Looks good to me, approved diff --git a/src/fsm.c b/src/fsm.c index 9bbf870..0fdc564 100644 --- a/src/fsm.c +++ b/src/fsm.c @@ -213,8 +213,9 @@ { if (id) { if (!osmo_identifier_valid(id)) { - LOGP(DLGLOBAL, LOGL_ERROR, "Attempting to allocate FSM instance of type '%s'" - " with illegal identifier '%s'\n", fi->fsm->name, id); + LOGP(DLGLOBAL, LOGL_ERROR, + "Attempting to set illegal id for FSM instance of type '%s': %s\n", + fi->fsm->name, osmo_quote_str(id, -1)); return -EINVAL; } osmo_talloc_replace_string(fi, (char **)&fi->id, id); diff --git a/tests/fsm/fsm_test.err b/tests/fsm/fsm_test.err index c4ee46f..3e01d48 100644 --- a/tests/fsm/fsm_test.err +++ b/tests/fsm/fsm_test.err @@ -38,12 +38,12 @@ osmo_fsm_inst_find_by_name("Test_FSM(arbitrary_id)") == fi osmo_fsm_inst_find_by_id("arbitrary_id") == fi osmo_fsm_inst_update_id("") -Attempting to allocate FSM instance of type 'Test_FSM' with illegal identifier '' +Attempting to set illegal id for FSM instance of type 'Test_FSM': ""  rc == -22, ok osmo_fsm_inst_name() == "Test_FSM(arbitrary_id)" osmo_fsm_inst_find_by_name("Test_FSM(arbitrary_id)") == fi osmo_fsm_inst_update_id("invalid.id") -Attempting to allocate FSM instance of type 'Test_FSM' with illegal identifier 'invalid.id' +Attempting to set illegal id for FSM instance of type 'Test_FSM': "invalid.id"  rc == -22, ok osmo_fsm_inst_name() == "Test_FSM(arbitrary_id)" osmo_fsm_inst_find_by_name("Test_FSM(arbitrary_id)") == fi -- To view, visit https://gerrit.osmocom.org/7682 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: I770fc460de21faa42b403f694e853e8da01c4bef Gerrit-PatchSet: 2 Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder From gerrit-no-reply at lists.osmocom.org Mon Apr 9 15:57:45 2018 From: gerrit-no-reply at lists.osmocom.org (Neels Hofmeyr) Date: Mon, 9 Apr 2018 15:57:45 +0000 Subject: [MERGED] libosmocore[master]: fsm: id: properly set name in case of NULL id In-Reply-To: References: Message-ID: Neels Hofmeyr has submitted this change and it was merged. Change subject: fsm: id: properly set name in case of NULL id ...................................................................... fsm: id: properly set name in case of NULL id Since alloc relies on osmo_fsm_inst_update_id() to set the name, never skip that. In osmo_fsm_inst_alloc(), we allow passing a NULL id, and in osmo_fsm_inst_update_id(), we set the name without id if id is NULL. Change-Id: I6d6b09a811b82770818f19b189a57d9fc4a8133b --- M src/fsm.c M tests/fsm/fsm_test.c M tests/fsm/fsm_test.err 3 files changed, 4 insertions(+), 19 deletions(-) Approvals: Harald Welte: Looks good to me, approved diff --git a/src/fsm.c b/src/fsm.c index 88de011..9bbf870 100644 --- a/src/fsm.c +++ b/src/fsm.c @@ -263,11 +263,9 @@ fi->log_level = log_level; osmo_timer_setup(&fi->timer, fsm_tmr_cb, fi); - if (id) { - if (osmo_fsm_inst_update_id(fi, id) < 0) { - talloc_free(fi); - return NULL; - } + if (osmo_fsm_inst_update_id(fi, id) < 0) { + talloc_free(fi); + return NULL; } INIT_LLIST_HEAD(&fi->proc.children); diff --git a/tests/fsm/fsm_test.c b/tests/fsm/fsm_test.c index 0f29a2e..859b78d 100644 --- a/tests/fsm/fsm_test.c +++ b/tests/fsm/fsm_test.c @@ -221,20 +221,7 @@ /* allocate FSM instance without id, there should be a name without id */ fi = osmo_fsm_inst_alloc(&fsm, g_ctx, NULL, LOGL_DEBUG, NULL); OSMO_ASSERT(fi); - /* CURRENT BUG: here I want to just do assert_name("Test_FSM"); - * but when allocated with a NULL id, the fsm's name remains unset. Hence: */ - { - const char *expected_name = "Test_FSM"; - const char *name = osmo_fsm_inst_name(fi); - fprintf(stderr, " osmo_fsm_inst_name() == %s\n", osmo_quote_str(name, -1)); - if (safe_strcmp(name, expected_name)) { - fprintf(stderr, " ERROR: expected %s\n", osmo_quote_str(expected_name, -1)); - OSMO_ASSERT(false); - } - OSMO_ASSERT(osmo_fsm_inst_find_by_name(&fsm, "Test_FSM") == NULL); /* <- ERROR */ - fprintf(stderr, " osmo_fsm_inst_find_by_name(%s) == NULL\n", osmo_quote_str(expected_name, -1)); - } change_id("my_id"); change_id("another_id"); diff --git a/tests/fsm/fsm_test.err b/tests/fsm/fsm_test.err index bc159bd..c4ee46f 100644 --- a/tests/fsm/fsm_test.err +++ b/tests/fsm/fsm_test.err @@ -13,7 +13,7 @@ --- test_id_api() Test_FSM{NULL}: Allocated  osmo_fsm_inst_name() == "Test_FSM" - osmo_fsm_inst_find_by_name("Test_FSM") == NULL + osmo_fsm_inst_find_by_name("Test_FSM") == fi osmo_fsm_inst_update_id("my_id") rc == 0, ok osmo_fsm_inst_name() == "Test_FSM(my_id)" -- To view, visit https://gerrit.osmocom.org/7627 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: I6d6b09a811b82770818f19b189a57d9fc4a8133b Gerrit-PatchSet: 3 Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Neels Hofmeyr From gerrit-no-reply at lists.osmocom.org Mon Apr 9 15:57:45 2018 From: gerrit-no-reply at lists.osmocom.org (Neels Hofmeyr) Date: Mon, 9 Apr 2018 15:57:45 +0000 Subject: [MERGED] libosmocore[master]: fsm_test: more thoroughly test FSM inst ids and names In-Reply-To: References: Message-ID: Neels Hofmeyr has submitted this change and it was merged. Change subject: fsm_test: more thoroughly test FSM inst ids and names ...................................................................... fsm_test: more thoroughly test FSM inst ids and names Place id and name testing in its separate section, test_id_api(). Add a test that actually allocates an FSM instance with a NULL id, which is allowed, but uncovers a bug of an unset FSM instance name. osmo_fsm_inst_name() falls back to the fsm struct's name on NULL, but osmo_fsm_inst_find_by_name() fails to match if the instance's name is NULL (and until recently even crashed). Show this in fsm_test.c with loud comments. Add test to clear the id by passing NULL. Add test for setting an empty id. Add test for setting an invalid identifier (osmo_identifier_valid() == false). Change-Id: I646ed918576ce196c395dc5f42a1507c52ace2c5 --- M tests/fsm/fsm_test.c M tests/fsm/fsm_test.err 2 files changed, 138 insertions(+), 7 deletions(-) Approvals: Harald Welte: Looks good to me, approved diff --git a/tests/fsm/fsm_test.c b/tests/fsm/fsm_test.c index ef7bfe3..0f29a2e 100644 --- a/tests/fsm/fsm_test.c +++ b/tests/fsm/fsm_test.c @@ -3,6 +3,7 @@ #include #include #include +#include #include #include @@ -16,6 +17,12 @@ static void *g_ctx; +static int safe_strcmp(const char *a, const char *b) +{ + if (!a || !b) + return a == b ? 0 : 1; + return strcmp(a, b); +} enum test_fsm_states { ST_NULL = 0, @@ -118,7 +125,7 @@ struct ctrl_cmd *cmd; cmd = exec_ctrl_cmd(cmdstr); - if (strcmp(cmd->reply, expres)) { + if (safe_strcmp(cmd->reply, expres)) { fprintf(stderr, "Reply '%s' doesn't match expected '%s'\n", cmd->reply, expres); OSMO_ASSERT(0); } @@ -165,6 +172,89 @@ return fi; } +static void test_id_api() +{ + struct osmo_fsm_inst *fi; + + fprintf(stderr, "\n--- %s()\n", __func__); + +/* Assert the instance has this name and can be looked up by it */ +#define assert_name(expected_name) \ +do { \ + const char *name = osmo_fsm_inst_name(fi); \ + fprintf(stderr, " osmo_fsm_inst_name() == %s\n", osmo_quote_str(name, -1)); \ + if (safe_strcmp(name, expected_name)) { \ + fprintf(stderr, " ERROR: expected %s\n", osmo_quote_str(expected_name, -1)); \ + OSMO_ASSERT(false); \ + } \ + OSMO_ASSERT(osmo_fsm_inst_find_by_name(&fsm, expected_name) == fi); \ + fprintf(stderr, " osmo_fsm_inst_find_by_name(%s) == fi\n", osmo_quote_str(expected_name, -1)); \ +} while(0) + +/* Assert the instance can be looked up by this id string */ +#define assert_id(expected_id) \ +do { \ + OSMO_ASSERT(osmo_fsm_inst_find_by_id(&fsm, expected_id) == fi); \ + fprintf(stderr, " osmo_fsm_inst_find_by_id(%s) == fi\n", osmo_quote_str(expected_id, -1)); \ +} while(0) + +/* Update the id, assert the proper rc, and expect a resulting fsm inst name + lookup */ +#define test_id(new_id, expect_rc, expect_name_suffix) do { \ + int rc; \ + fprintf(stderr, "osmo_fsm_inst_update_id(%s)\n", osmo_quote_str(new_id, -1)); \ + rc = osmo_fsm_inst_update_id(fi, new_id); \ + fprintf(stderr, " rc == %d", rc); \ + if (rc == (expect_rc)) \ + fprintf(stderr, ", ok\n"); \ + else { \ + fprintf(stderr, ", ERROR: expected rc == %d\n", expect_rc); \ + OSMO_ASSERT(rc == expect_rc); \ + } \ + assert_name("Test_FSM" expect_name_suffix); \ + }while (0) + +/* Successfully set a new id, along with name and id lookup assertions */ +#define change_id(new_id) \ + test_id(new_id, 0, "(" new_id ")"); \ + assert_id(new_id) + + /* allocate FSM instance without id, there should be a name without id */ + fi = osmo_fsm_inst_alloc(&fsm, g_ctx, NULL, LOGL_DEBUG, NULL); + OSMO_ASSERT(fi); + /* CURRENT BUG: here I want to just do + assert_name("Test_FSM"); + * but when allocated with a NULL id, the fsm's name remains unset. Hence: */ + { + const char *expected_name = "Test_FSM"; + const char *name = osmo_fsm_inst_name(fi); + fprintf(stderr, " osmo_fsm_inst_name() == %s\n", osmo_quote_str(name, -1)); + if (safe_strcmp(name, expected_name)) { + fprintf(stderr, " ERROR: expected %s\n", osmo_quote_str(expected_name, -1)); + OSMO_ASSERT(false); + } + OSMO_ASSERT(osmo_fsm_inst_find_by_name(&fsm, "Test_FSM") == NULL); /* <- ERROR */ + fprintf(stderr, " osmo_fsm_inst_find_by_name(%s) == NULL\n", osmo_quote_str(expected_name, -1)); + } + + change_id("my_id"); + change_id("another_id"); + + test_id(NULL, 0, ""); + /* clear already cleared id */ + test_id(NULL, 0, ""); + + change_id("arbitrary_id"); + + /* clear id by empty string doesn't work */ + test_id("", -EINVAL, "(arbitrary_id)"); + + test_id("invalid.id", -EINVAL, "(arbitrary_id)"); + + fprintf(stderr, "\n--- %s() done\n\n", __func__); + + osmo_fsm_inst_term(fi, OSMO_FSM_TERM_REQUEST, NULL); +} + static const struct log_info_cat default_categories[] = { [DMAIN] = { .name = "DMAIN", @@ -198,17 +288,14 @@ OSMO_ASSERT(osmo_fsm_inst_find_by_name(&fsm, "my_id") == NULL); finst = foo(); - OSMO_ASSERT(osmo_fsm_inst_find_by_id(&fsm, "my_id") == finst); - OSMO_ASSERT(osmo_fsm_inst_find_by_name(&fsm, "Test_FSM(my_id)") == finst); - OSMO_ASSERT(osmo_fsm_inst_update_id(finst, "another_id") == 0); - OSMO_ASSERT(osmo_fsm_inst_find_by_id(&fsm, "another_id") == finst); - OSMO_ASSERT(osmo_fsm_inst_find_by_name(&fsm, "Test_FSM(another_id)") == finst); - OSMO_ASSERT(osmo_fsm_inst_update_id(finst, "my_id") == 0); while (main_loop_run) { osmo_select_main(0); } osmo_fsm_inst_free(finst); + + test_id_api(); + osmo_fsm_unregister(&fsm); exit(0); } diff --git a/tests/fsm/fsm_test.err b/tests/fsm/fsm_test.err index facc9f7..bc159bd 100644 --- a/tests/fsm/fsm_test.err +++ b/tests/fsm/fsm_test.err @@ -9,4 +9,48 @@ Test_FSM(my_id){TWO}: Timeout of T2342 Timer Test_FSM(my_id){TWO}: Deallocated + +--- test_id_api() +Test_FSM{NULL}: Allocated + osmo_fsm_inst_name() == "Test_FSM" + osmo_fsm_inst_find_by_name("Test_FSM") == NULL +osmo_fsm_inst_update_id("my_id") + rc == 0, ok + osmo_fsm_inst_name() == "Test_FSM(my_id)" + osmo_fsm_inst_find_by_name("Test_FSM(my_id)") == fi + osmo_fsm_inst_find_by_id("my_id") == fi +osmo_fsm_inst_update_id("another_id") + rc == 0, ok + osmo_fsm_inst_name() == "Test_FSM(another_id)" + osmo_fsm_inst_find_by_name("Test_FSM(another_id)") == fi + osmo_fsm_inst_find_by_id("another_id") == fi +osmo_fsm_inst_update_id(NULL) + rc == 0, ok + osmo_fsm_inst_name() == "Test_FSM" + osmo_fsm_inst_find_by_name("Test_FSM") == fi +osmo_fsm_inst_update_id(NULL) + rc == 0, ok + osmo_fsm_inst_name() == "Test_FSM" + osmo_fsm_inst_find_by_name("Test_FSM") == fi +osmo_fsm_inst_update_id("arbitrary_id") + rc == 0, ok + osmo_fsm_inst_name() == "Test_FSM(arbitrary_id)" + osmo_fsm_inst_find_by_name("Test_FSM(arbitrary_id)") == fi + osmo_fsm_inst_find_by_id("arbitrary_id") == fi +osmo_fsm_inst_update_id("") +Attempting to allocate FSM instance of type 'Test_FSM' with illegal identifier '' + rc == -22, ok + osmo_fsm_inst_name() == "Test_FSM(arbitrary_id)" + osmo_fsm_inst_find_by_name("Test_FSM(arbitrary_id)") == fi +osmo_fsm_inst_update_id("invalid.id") +Attempting to allocate FSM instance of type 'Test_FSM' with illegal identifier 'invalid.id' + rc == -22, ok + osmo_fsm_inst_name() == "Test_FSM(arbitrary_id)" + osmo_fsm_inst_find_by_name("Test_FSM(arbitrary_id)") == fi + +--- test_id_api() done + +Test_FSM(arbitrary_id){NULL}: Terminating (cause = OSMO_FSM_TERM_REQUEST) +Test_FSM(arbitrary_id){NULL}: Freeing instance +Test_FSM(arbitrary_id){NULL}: Deallocated  \ No newline at end of file -- To view, visit https://gerrit.osmocom.org/7681 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: I646ed918576ce196c395dc5f42a1507c52ace2c5 Gerrit-PatchSet: 2 Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder From gerrit-no-reply at lists.osmocom.org Mon Apr 9 15:57:46 2018 From: gerrit-no-reply at lists.osmocom.org (Neels Hofmeyr) Date: Mon, 9 Apr 2018 15:57:46 +0000 Subject: [MERGED] libosmocore[master]: osmo_fsm_inst_find_by_name(): guard against strcmp(NULL) In-Reply-To: References: Message-ID: Neels Hofmeyr has submitted this change and it was merged. Change subject: osmo_fsm_inst_find_by_name(): guard against strcmp(NULL) ...................................................................... osmo_fsm_inst_find_by_name(): guard against strcmp(NULL) strcmp() *must not* be passed NULL pointers, or we hit: ../../../src/libosmocore/src/fsm.c:123:8: runtime error: null pointer passed as argument 2, which is declared to never be null ASAN:DEADLYSIGNAL (Or, alternatively, a segfault.) If any of the search string or an FSM instance's name string should be NULL, simply never match. Technically, an FSM should never have a NULL name, but a current bug actually allows this (pass NULL id to alloc), which will be addressed by an upcoming patch. To test for it, we need to first make sure this here doesn't segfault. Change-Id: I2e5f82c06d1a4727bd93e955366e3b62b2df1b32 --- M src/fsm.c 1 file changed, 5 insertions(+), 0 deletions(-) Approvals: Harald Welte: Looks good to me, approved diff --git a/src/fsm.c b/src/fsm.c index c5256da..88de011 100644 --- a/src/fsm.c +++ b/src/fsm.c @@ -119,7 +119,12 @@ { struct osmo_fsm_inst *fi; + if (!name) + return NULL; + llist_for_each_entry(fi, &fsm->instances, list) { + if (!fi->name) + continue; if (!strcmp(name, fi->name)) return fi; } -- To view, visit https://gerrit.osmocom.org/7680 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: I2e5f82c06d1a4727bd93e955366e3b62b2df1b32 Gerrit-PatchSet: 2 Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder From gerrit-no-reply at lists.osmocom.org Mon Apr 9 15:57:46 2018 From: gerrit-no-reply at lists.osmocom.org (Neels Hofmeyr) Date: Mon, 9 Apr 2018 15:57:46 +0000 Subject: [MERGED] libosmocore[master]: fsm_test: terminate the main loop instead of exit on timeout In-Reply-To: References: Message-ID: Neels Hofmeyr has submitted this change and it was merged. Change subject: fsm_test: terminate the main loop instead of exit on timeout ...................................................................... fsm_test: terminate the main loop instead of exit on timeout In fsm_test.c, we have FSM instance cleanup after the select main loop, but we exit(0) in the timer cb; hence the final code is never called. Rather clean up the instance and hence also test that, by using a global flag to exit the main loop upon timeout. Adjust expected stderr output. BTW, in a subsequent commit, I want to move the fsm instance id testing to below the main loop, to more clearly group the tested bits. Change-Id: Ia47811ffcc1bd68d2630c86be7ab98fc1f338773 --- M tests/fsm/fsm_test.c M tests/fsm/fsm_test.err 2 files changed, 7 insertions(+), 2 deletions(-) Approvals: Harald Welte: Looks good to me, approved diff --git a/tests/fsm/fsm_test.c b/tests/fsm/fsm_test.c index d7b08ae..ef7bfe3 100644 --- a/tests/fsm/fsm_test.c +++ b/tests/fsm/fsm_test.c @@ -60,13 +60,17 @@ } } +static bool main_loop_run = true; + static int test_fsm_tmr_cb(struct osmo_fsm_inst *fi) { OSMO_ASSERT(fi->T == 2342); OSMO_ASSERT(fi->state == ST_TWO); LOGP(DMAIN, LOGL_INFO, "Timer\n"); - exit(0); + main_loop_run = false; + + return 0; } static struct osmo_fsm_state test_fsm_states[] = { @@ -201,7 +205,7 @@ OSMO_ASSERT(osmo_fsm_inst_find_by_name(&fsm, "Test_FSM(another_id)") == finst); OSMO_ASSERT(osmo_fsm_inst_update_id(finst, "my_id") == 0); - while (1) { + while (main_loop_run) { osmo_select_main(0); } osmo_fsm_inst_free(finst); diff --git a/tests/fsm/fsm_test.err b/tests/fsm/fsm_test.err index 153963f..facc9f7 100644 --- a/tests/fsm/fsm_test.err +++ b/tests/fsm/fsm_test.err @@ -8,4 +8,5 @@ Test_FSM(my_id){ONE}: state_chg to TWO Test_FSM(my_id){TWO}: Timeout of T2342 Timer +Test_FSM(my_id){TWO}: Deallocated  \ No newline at end of file -- To view, visit https://gerrit.osmocom.org/7679 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: Ia47811ffcc1bd68d2630c86be7ab98fc1f338773 Gerrit-PatchSet: 2 Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder From gerrit-no-reply at lists.osmocom.org Mon Apr 9 16:03:18 2018 From: gerrit-no-reply at lists.osmocom.org (Neels Hofmeyr) Date: Mon, 9 Apr 2018 16:03:18 +0000 Subject: osmo-msc[master]: ussd.h: cosmetic: move comment to a proper place In-Reply-To: References: Message-ID: Patch Set 1: we put comments for functions typically in the .c file, by the implementation of the function. .h files are usually plain listings of the API without comments. -- To view, visit https://gerrit.osmocom.org/7672 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I6b0d1d9e1a1b1ffb71cb9905e74f6fad2333bb65 Gerrit-PatchSet: 1 Gerrit-Project: osmo-msc Gerrit-Branch: master Gerrit-Owner: Vadim Yanitskiy Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Neels Hofmeyr Gerrit-Reviewer: Vadim Yanitskiy Gerrit-HasComments: No From jenkins at lists.osmocom.org Mon Apr 9 16:04:30 2018 From: jenkins at lists.osmocom.org (jenkins at lists.osmocom.org) Date: Mon, 9 Apr 2018 16:04:30 +0000 (UTC) Subject: =?UTF-8?Q?Build_failed_in_Jenkins:_master-osmo-bts_=C2=BB_lc15, origin/?= =?UTF-8?Q?nrw/litecell15-next,default,osmocom-master-debian9_#487?= Message-ID: <412538316.193.1523289870679.JavaMail.jenkins@jenkins.osmocom.org> See ------------------------------------------ [...truncated 87.56 KB...] checking for suffix of object files... o checking whether we are using the GNU C compiler... yes checking whether gcc accepts -g... yes checking for gcc option to accept ISO C89... none needed checking whether gcc understands -c and -o together... yes checking for style of include used by make... GNU checking dependency style of gcc... gcc3 checking build system type... x86_64-pc-linux-gnu checking host system type... x86_64-pc-linux-gnu checking how to print strings... printf checking for a sed that does not truncate output... /bin/sed checking for grep that handles long lines and -e... /bin/grep checking for egrep... /bin/grep -E checking for fgrep... /bin/grep -F checking for ld used by gcc... /usr/bin/ld checking if the linker (/usr/bin/ld) is GNU ld... yes checking for BSD- or MS-compatible name lister (nm)... /usr/bin/nm -B checking the name lister (/usr/bin/nm -B) interface... BSD nm checking whether ln -s works... yes checking the maximum length of command line arguments... 1572864 checking how to convert x86_64-pc-linux-gnu file names to x86_64-pc-linux-gnu format... func_convert_file_noop checking how to convert x86_64-pc-linux-gnu file names to toolchain format... func_convert_file_noop checking for /usr/bin/ld option to reload object files... -r checking for objdump... objdump checking how to recognize dependent libraries... pass_all checking for dlltool... no checking how to associate runtime and link libraries... printf %s\n checking for ar... ar checking for archiver @FILE support... @ checking for strip... strip checking for ranlib... ranlib checking command to parse /usr/bin/nm -B output from gcc object... ok checking for sysroot... no checking for a working dd... /bin/dd checking how to truncate binary pipes... /bin/dd bs=4096 count=1 checking for mt... mt checking if mt is a manifest tool... no checking how to run the C preprocessor... gcc -E checking for ANSI C header files... yes checking for sys/types.h... yes checking for sys/stat.h... yes checking for stdlib.h... yes checking for string.h... yes checking for memory.h... yes checking for strings.h... yes checking for inttypes.h... yes checking for stdint.h... yes checking for unistd.h... yes checking for dlfcn.h... yes checking for objdir... .libs checking if gcc supports -fno-rtti -fno-exceptions... no checking for gcc option to produce PIC... -fPIC -DPIC checking if gcc PIC flag -fPIC -DPIC works... yes checking if gcc static flag -static works... yes checking if gcc supports -c -o file.o... yes checking if gcc supports -c -o file.o... (cached) yes checking whether the gcc linker (/usr/bin/ld -m elf_x86_64) supports shared libraries... yes checking whether -lc should be explicitly linked in... no checking dynamic linker characteristics... GNU/Linux ld.so checking how to hardcode library paths into programs... immediate checking whether stripping libraries is possible... yes checking if libtool supports shared libraries... yes checking whether to build shared libraries... yes checking whether to build static libraries... yes checking for pkg-config... /usr/bin/pkg-config checking for pkg-config... /usr/bin/pkg-config checking pkg-config is at least version 0.20... yes checking if gcc supports -fvisibility=hidden... yes checking for LIBOSMOCORE... yes checking for LIBOSMOVTY... yes checking for LIBOSMOGSM... yes checking for ORTP... yes checking dahdi/user.h usability... no checking dahdi/user.h presence... no checking for dahdi/user.h... no configure: WARNING: DAHDI input driver will not be built CFLAGS="-g -O2 -Wall" CPPFLAGS=" -Wall" checking that generated files are newer than configure... done configure: creating ./config.status config.status: creating libosmoabis.pc config.status: creating libosmotrau.pc config.status: creating include/Makefile config.status: creating src/Makefile config.status: creating tests/Makefile config.status: creating Makefile config.status: creating config.h config.status: executing tests/atconfig commands config.status: executing depfiles commands config.status: executing libtool commands + make -j 8 install echo 0.3.2.104-db07 > .version-t && mv .version-t .version make install-recursive make[1]: Entering directory ' Making install in include make[2]: Entering directory ' make[3]: Entering directory ' make[3]: Nothing to be done for 'install-exec-am'. /bin/mkdir -p ' /bin/mkdir -p ' /usr/bin/install -c -m 644 osmocom/abis/ipa.h osmocom/abis/trau_frame.h osmocom/abis/ipa_proxy.h osmocom/abis/ipaccess.h osmocom/abis/abis.h osmocom/abis/subchan_demux.h osmocom/abis/e1_input.h osmocom/abis/lapd.h osmocom/abis/lapd_pcap.h osmocom/abis/unixsocket_proto.h ' /bin/mkdir -p ' /usr/bin/install -c -m 644 osmocom/trau/osmo_ortp.h ' make[3]: Leaving directory ' make[2]: Leaving directory ' Making install in src make[2]: Entering directory ' CC init.lo CC e1_input_vty.lo CC e1_input.lo CC ipa_proxy.lo CC subchan_demux.lo CC trau_frame.lo CC input/dahdi.lo CC input/ipa.lo CC input/ipaccess.lo CC input/lapd.lo CC input/lapd_pcap.lo CC input/misdn.lo CC input/rs232.lo CC input/unixsocket.lo CC trau/libosmotrau_la-osmo_ortp.lo trau/osmo_ortp.c:205:9: note: #pragma message: Using internal ortp API: rtp_session_rtcp_rec #pragma message ("Using internal ortp API: rtp_session_rtcp_rec") ^~~~~~~ In file included from trau/osmo_ortp.c:43:0: trau/osmo_ortp.c: In function ?osmo_rtp_socket_create?: ../config.h:65:34: warning: passing argument 4 of ?rtp_session_signal_connect? makes integer from pointer without a cast [-Wint-conversion] #define RTP_SIGNAL_PTR_CAST(arg) (void*)(arg) ^ trau/osmo_ortp.c:355:8: note: in expansion of macro ?RTP_SIGNAL_PTR_CAST? RTP_SIGNAL_PTR_CAST(rs)); ^~~~~~~~~~~~~~~~~~~ In file included from /usr/include/ortp/ortp.h:68:0, from trau/osmo_ortp.c:38: /usr/include/ortp/rtpsession.h:271:17: note: expected ?long unsigned int? but argument is of type ?void *? ORTP_PUBLIC int rtp_session_signal_connect(RtpSession *session,const char *signal_name, RtpCallback cb, unsigned long user_data); ^~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from trau/osmo_ortp.c:43:0: ../config.h:65:34: warning: passing argument 4 of ?rtp_session_signal_connect? makes integer from pointer without a cast [-Wint-conversion] #define RTP_SIGNAL_PTR_CAST(arg) (void*)(arg) ^ trau/osmo_ortp.c:359:8: note: in expansion of macro ?RTP_SIGNAL_PTR_CAST? RTP_SIGNAL_PTR_CAST(rs)); ^~~~~~~~~~~~~~~~~~~ In file included from /usr/include/ortp/ortp.h:68:0, from trau/osmo_ortp.c:38: /usr/include/ortp/rtpsession.h:271:17: note: expected ?long unsigned int? but argument is of type ?void *? ORTP_PUBLIC int rtp_session_signal_connect(RtpSession *session,const char *signal_name, RtpCallback cb, unsigned long user_data); ^~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from trau/osmo_ortp.c:43:0: ../config.h:65:34: warning: passing argument 4 of ?rtp_session_signal_connect? makes integer from pointer without a cast [-Wint-conversion] #define RTP_SIGNAL_PTR_CAST(arg) (void*)(arg) ^ trau/osmo_ortp.c:363:8: note: in expansion of macro ?RTP_SIGNAL_PTR_CAST? RTP_SIGNAL_PTR_CAST(rs)); ^~~~~~~~~~~~~~~~~~~ In file included from /usr/include/ortp/ortp.h:68:0, from trau/osmo_ortp.c:38: /usr/include/ortp/rtpsession.h:271:17: note: expected ?long unsigned int? but argument is of type ?void *? ORTP_PUBLIC int rtp_session_signal_connect(RtpSession *session,const char *signal_name, RtpCallback cb, unsigned long user_data); ^~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from trau/osmo_ortp.c:43:0: ../config.h:65:34: warning: passing argument 4 of ?rtp_session_signal_connect? makes integer from pointer without a cast [-Wint-conversion] #define RTP_SIGNAL_PTR_CAST(arg) (void*)(arg) ^ trau/osmo_ortp.c:367:8: note: in expansion of macro ?RTP_SIGNAL_PTR_CAST? RTP_SIGNAL_PTR_CAST(rs)); ^~~~~~~~~~~~~~~~~~~ In file included from /usr/include/ortp/ortp.h:68:0, from trau/osmo_ortp.c:38: /usr/include/ortp/rtpsession.h:271:17: note: expected ?long unsigned int? but argument is of type ?void *? ORTP_PUBLIC int rtp_session_signal_connect(RtpSession *session,const char *signal_name, RtpCallback cb, unsigned long user_data); ^~~~~~~~~~~~~~~~~~~~~~~~~~ CCLD libosmoabis.la CCLD libosmotrau.la ar: `u' modifier ignored since `D' is the default (see `U') ar: `u' modifier ignored since `D' is the default (see `U') make[3]: Entering directory ' make[3]: Nothing to be done for 'install-data-am'. /bin/mkdir -p ' /bin/bash ../libtool --mode=install /usr/bin/install -c libosmoabis.la libosmotrau.la ' libtool: install: /usr/bin/install -c .libs/libosmoabis.so.6.0.0 libtool: install: (cd && { ln -s -f libosmoabis.so.6.0.0 libosmoabis.so.6 || { rm -f libosmoabis.so.6 && ln -s libosmoabis.so.6.0.0 libosmoabis.so.6; }; }) libtool: install: (cd && { ln -s -f libosmoabis.so.6.0.0 libosmoabis.so || { rm -f libosmoabis.so && ln -s libosmoabis.so.6.0.0 libosmoabis.so; }; }) libtool: install: /usr/bin/install -c .libs/libosmoabis.lai libtool: install: /usr/bin/install -c .libs/libosmotrau.so.2.0.0 libtool: install: (cd && { ln -s -f libosmotrau.so.2.0.0 libosmotrau.so.2 || { rm -f libosmotrau.so.2 && ln -s libosmotrau.so.2.0.0 libosmotrau.so.2; }; }) libtool: install: (cd && { ln -s -f libosmotrau.so.2.0.0 libosmotrau.so || { rm -f libosmotrau.so && ln -s libosmotrau.so.2.0.0 libosmotrau.so; }; }) libtool: install: /usr/bin/install -c .libs/libosmotrau.lai libtool: install: /usr/bin/install -c .libs/libosmoabis.a libtool: install: chmod 644 libtool: install: ranlib libtool: install: /usr/bin/install -c .libs/libosmotrau.a libtool: install: chmod 644 libtool: install: ranlib libtool: finish: PATH="/usr/local/bin:/usr/bin:/bin:/usr/games:/home/osmocom-build/bin:/sbin" ldconfig -n ---------------------------------------------------------------------- Libraries have been installed in: If you ever happen to want to link against installed libraries in a given directory, LIBDIR, you must either use libtool, and specify the full pathname of the library, or use the '-LLIBDIR' flag during linking and do at least one of the following: - add LIBDIR to the 'LD_LIBRARY_PATH' environment variable during execution - add LIBDIR to the 'LD_RUN_PATH' environment variable during linking - use the '-Wl,-rpath -Wl,LIBDIR' linker flag - have your system administrator add LIBDIR to '/etc/ld.so.conf' See any operating system documentation about shared libraries for more information, such as the ld(1) and ld.so(8) manual pages. ---------------------------------------------------------------------- make[3]: Leaving directory ' make[2]: Leaving directory ' Making install in tests make[2]: Entering directory ' make[3]: Entering directory ' make[3]: Nothing to be done for 'install-exec-am'. make[3]: Nothing to be done for 'install-data-am'. make[3]: Leaving directory ' make[2]: Leaving directory ' make[2]: Entering directory ' make[3]: Entering directory ' make[3]: Nothing to be done for 'install-exec-am'. /bin/mkdir -p ' /usr/bin/install -c -m 644 libosmoabis.pc libosmotrau.pc ' make[3]: Leaving directory ' make[2]: Leaving directory ' make[1]: Leaving directory ' + STOW_DIR= stow --restow libosmo-abis + cd + osmo-layer1-headers.sh lc15 origin/nrw/litecell15-next + uri=https://gitlab.com/nrw_litecell15/litecell15-fw + version=origin/nrw/litecell15 + [ -n origin/nrw/litecell15-next ] + [ origin/nrw/litecell15-next != master ] + version=origin/nrw/litecell15-next + test -d layer1-headers + git clone https://gitlab.com/nrw_litecell15/litecell15-fw layer1-headers Cloning into 'layer1-headers'... + cd layer1-headers + git fetch origin + git checkout -f origin/nrw/litecell15-next error: pathspec 'origin/nrw/litecell15-next' did not match any file(s) known to git. Build step 'Execute shell' marked build as failure [WARNINGS]Skipping publisher since build result is FAILURE From jenkins at lists.osmocom.org Mon Apr 9 16:06:26 2018 From: jenkins at lists.osmocom.org (jenkins at lists.osmocom.org) Date: Mon, 9 Apr 2018 16:06:26 +0000 (UTC) Subject: =?UTF-8?Q?Build_failed_in_Jenkins:_master-osmo-hlr_=C2=BB_a1=3Ddefau?= =?UTF-8?Q?lt,a2=3Ddefault,a3=3Ddefault,osmocom-master-debian9_#432?= Message-ID: <1511305260.194.1523289986350.JavaMail.jenkins@jenkins.osmocom.org> See ------------------------------------------ [...truncated 27.08 KB...] checking for objdir... .libs checking if gcc supports -fno-rtti -fno-exceptions... no checking for gcc option to produce PIC... -fPIC -DPIC checking if gcc PIC flag -fPIC -DPIC works... yes checking if gcc static flag -static works... yes checking if gcc supports -c -o file.o... yes checking if gcc supports -c -o file.o... (cached) yes checking whether the gcc linker (/usr/bin/ld -m elf_x86_64) supports shared libraries... yes checking whether -lc should be explicitly linked in... no checking dynamic linker characteristics... GNU/Linux ld.so checking how to hardcode library paths into programs... immediate checking whether stripping libraries is possible... yes checking if libtool supports shared libraries... yes checking whether to build shared libraries... yes checking whether to build static libraries... no checking for pkg-config... /usr/bin/pkg-config checking for pkg-config... /usr/bin/pkg-config checking pkg-config is at least version 0.20... yes checking for ANSI C header files... (cached) yes checking execinfo.h usability... yes checking execinfo.h presence... yes checking for execinfo.h... yes checking sys/select.h usability... yes checking sys/select.h presence... yes checking for sys/select.h... yes checking sys/socket.h usability... yes checking sys/socket.h presence... yes checking for sys/socket.h... yes checking syslog.h usability... yes checking syslog.h presence... yes checking for syslog.h... yes checking ctype.h usability... yes checking ctype.h presence... yes checking for ctype.h... yes checking netinet/tcp.h usability... yes checking netinet/tcp.h presence... yes checking for netinet/tcp.h... yes checking for size_t... yes checking for working alloca.h... yes checking for alloca... yes checking for library containing dlopen... -ldl checking for backtrace in -lexecinfo... no checking for doxygen... (cached) false checking whether SYS_getrandom is declared... yes checking if gcc supports -fvisibility=hidden... yes checking whether struct tm has tm_gmtoff member... yes checking for TALLOC... yes checking for PCSC... yes checking for LIBGNUTLS... yes checking whether C compiler accepts -mavx2... yes checking whether C compiler accepts -mssse3... yes checking whether C compiler accepts -msse4.1... yes checking whether gcc has __builtin_cpu_supports built-in... yes CFLAGS="-g -O2 -DBUILDING_LIBOSMOCORE -Wall" CPPFLAGS=" -DBUILDING_LIBOSMOCORE -Wall" checking that generated files are newer than configure... done configure: creating ./config.status config.status: creating libosmocore.pc config.status: creating libosmocodec.pc config.status: creating libosmocoding.pc config.status: creating libosmovty.pc config.status: creating libosmogsm.pc config.status: creating libosmogb.pc config.status: creating libosmoctrl.pc config.status: creating libosmosim.pc config.status: creating include/Makefile config.status: creating src/Makefile config.status: creating src/vty/Makefile config.status: creating src/codec/Makefile config.status: creating src/coding/Makefile config.status: creating src/sim/Makefile config.status: creating src/gsm/Makefile config.status: creating src/gb/Makefile config.status: creating src/ctrl/Makefile config.status: creating src/pseudotalloc/Makefile config.status: creating tests/Makefile config.status: creating tests/atlocal config.status: creating utils/Makefile config.status: creating Doxyfile.core config.status: creating Doxyfile.gsm config.status: creating Doxyfile.vty config.status: creating Doxyfile.codec config.status: creating Doxyfile.coding config.status: creating Doxyfile.gb config.status: creating Makefile config.status: creating config.h config.status: executing tests/atconfig commands config.status: executing depfiles commands config.status: executing libtool commands + make -j 8 install echo 0.10.2.254-aead2 > .version-t && mv .version-t .version make install-recursive make[1]: Entering directory ' Making install in include make[2]: Entering directory ' GEN osmocom/gsm/gsm0503.h Generating header file... Generate 'xcch' declaration Generate 'rach' declaration Generate 'rach_ext' declaration Generate 'sch' declaration Generate 'cs2' declaration Generate 'cs3' declaration Generate 'cs2_np' declaration Generate 'cs3_np' declaration Generate 'tch_afs_12_2' declaration Generate 'tch_afs_10_2' declaration Generate 'tch_afs_7_95' declaration Generate 'tch_afs_7_4' declaration Generate 'tch_afs_6_7' declaration Generate 'tch_afs_5_9' declaration Generate 'tch_afs_5_15' declaration Generate 'tch_afs_4_75' declaration Generate 'tch_fr' declaration Generate 'tch_hr' declaration Generate 'tch_ahs_7_95' declaration Generate 'tch_ahs_7_4' declaration Generate 'tch_ahs_6_7' declaration Generate 'tch_ahs_5_9' declaration Generate 'tch_ahs_5_15' declaration Generate 'tch_ahs_4_75' declaration Generate 'mcs1_dl_hdr' declaration Generate 'mcs1_ul_hdr' declaration Generate 'mcs1' declaration Generate 'mcs2' declaration Generate 'mcs3' declaration Generate 'mcs4' declaration Generate 'mcs5_dl_hdr' declaration Generate 'mcs5_ul_hdr' declaration Generate 'mcs5' declaration Generate 'mcs6' declaration Generate 'mcs7_dl_hdr' declaration Generate 'mcs7_ul_hdr' declaration Generate 'mcs7' declaration Generate 'mcs8' declaration Generate 'mcs9' declaration Generation complete. make install-am make[3]: Entering directory ' GEN osmocom/core/bit32gen.h GEN osmocom/core/bit16gen.h GEN osmocom/core/bit64gen.h GEN osmocom/core/crc16gen.h GEN osmocom/core/crc32gen.h GEN osmocom/core/crc64gen.h GEN osmocom/core/crc8gen.h GEN osmocom/core/bit32gen.h GEN osmocom/core/crc16gen.h GEN osmocom/core/bit16gen.h GEN osmocom/core/crc32gen.h GEN osmocom/core/crc64gen.h GEN osmocom/core/bit64gen.h GEN osmocom/core/crc8gen.h make[4]: Entering directory ' make[4]: Nothing to be done for 'install-exec-am'. /bin/mkdir -p ' /bin/mkdir -p ' /usr/bin/install -c -m 644 osmocom/core/application.h osmocom/core/backtrace.h osmocom/core/bit16gen.h osmocom/core/bit32gen.h osmocom/core/bit64gen.h osmocom/core/bits.h osmocom/core/bitvec.h osmocom/core/bitcomp.h osmocom/core/byteswap.h osmocom/core/conv.h osmocom/core/counter.h osmocom/core/crc16.h osmocom/core/crc16gen.h osmocom/core/crc32gen.h osmocom/core/crc64gen.h osmocom/core/crc8gen.h osmocom/core/crcgen.h osmocom/core/endian.h osmocom/core/defs.h osmocom/core/fsm.h osmocom/core/gsmtap.h osmocom/core/gsmtap_util.h osmocom/core/linuxlist.h osmocom/core/linuxrbtree.h osmocom/core/logging.h osmocom/core/loggingrb.h osmocom/core/stats.h osmocom/core/macaddr.h osmocom/core/msgb.h osmocom/core/panic.h osmocom/core/prbs.h osmocom/core/prim.h osmocom/core/process.h osmocom/core/rate_ctr.h osmocom/core/stat_item.h osmocom/core/select.h osmocom/core/sercomm.h osmocom/core/signal.h osmocom/core/socket.h osmocom/core/statistics.h ' /bin/mkdir -p ' /usr/bin/install -c -m 644 osmocom/coding/gsm0503_tables.h osmocom/coding/gsm0503_parity.h osmocom/coding/gsm0503_mapping.h osmocom/coding/gsm0503_interleaving.h osmocom/coding/gsm0503_coding.h ' /bin/mkdir -p ' /usr/bin/install -c -m 644 osmocom/core/strrb.h osmocom/core/talloc.h osmocom/core/timer.h osmocom/core/timer_compat.h osmocom/core/utils.h osmocom/core/write_queue.h osmocom/core/plugin.h osmocom/core/msgfile.h osmocom/core/serial.h ' /bin/mkdir -p ' /usr/bin/install -c -m 644 osmocom/vty/buffer.h osmocom/vty/command.h osmocom/vty/logging.h osmocom/vty/stats.h osmocom/vty/misc.h osmocom/vty/telnet_interface.h osmocom/vty/vector.h osmocom/vty/vty.h osmocom/vty/ports.h ' /bin/mkdir -p ' /usr/bin/install -c -m 644 osmocom/gsm/protocol/gsm_03_40.h osmocom/gsm/protocol/gsm_03_41.h osmocom/gsm/protocol/gsm_04_08.h osmocom/gsm/protocol/gsm_04_08_gprs.h osmocom/gsm/protocol/gsm_04_11.h osmocom/gsm/protocol/gsm_04_12.h osmocom/gsm/protocol/gsm_04_14.h osmocom/gsm/protocol/gsm_04_80.h osmocom/gsm/protocol/gsm_08_08.h osmocom/gsm/protocol/gsm_08_58.h osmocom/gsm/protocol/gsm_09_02.h osmocom/gsm/protocol/gsm_12_21.h osmocom/gsm/protocol/gsm_23_003.h osmocom/gsm/protocol/gsm_44_318.h osmocom/gsm/protocol/ipaccess.h osmocom/gsm/protocol/smpp34_osmocom.h ' /bin/mkdir -p ' /usr/bin/install -c -m 644 osmocom/sim/class_tables.h osmocom/sim/sim.h ' /bin/mkdir -p ' /usr/bin/install -c -m 644 osmocom/gprs/gprs_bssgp.h osmocom/gprs/gprs_bssgp_bss.h osmocom/gprs/gprs_msgb.h osmocom/gprs/gprs_ns.h osmocom/gprs/gprs_ns_frgre.h osmocom/gprs/gprs_rlc.h ' /bin/mkdir -p ' /usr/bin/install -c -m 644 osmocom/crypt/auth.h osmocom/crypt/gprs_cipher.h ' /bin/mkdir -p ' /usr/bin/install -c -m 644 osmocom/gsm/a5.h osmocom/gsm/abis_nm.h osmocom/gsm/apn.h osmocom/gsm/bts_features.h osmocom/gsm/comp128.h osmocom/gsm/comp128v23.h osmocom/gsm/bitvec_gsm.h osmocom/gsm/gan.h osmocom/gsm/gsm0341.h osmocom/gsm/gsm0411_smc.h osmocom/gsm/gsm0411_smr.h osmocom/gsm/gsm0411_utils.h osmocom/gsm/gsm0480.h osmocom/gsm/gsm0502.h osmocom/gsm/gsm0503.h osmocom/gsm/gsm0808.h osmocom/gsm/gsm0808_utils.h osmocom/gsm/gsm23003.h osmocom/gsm/gsm48.h osmocom/gsm/gsm48_ie.h osmocom/gsm/gsm_utils.h osmocom/gsm/gsup.h osmocom/gsm/ipa.h osmocom/gsm/lapd_core.h osmocom/gsm/lapdm.h osmocom/gsm/meas_rep.h osmocom/gsm/mncc.h osmocom/gsm/prim.h osmocom/gsm/l1sap.h osmocom/gsm/oap.h osmocom/gsm/rsl.h osmocom/gsm/rxlev_stat.h osmocom/gsm/sysinfo.h osmocom/gsm/tlv.h ' /bin/mkdir -p ' /usr/bin/install -c -m 644 osmocom/ctrl/control_cmd.h osmocom/ctrl/control_if.h osmocom/ctrl/ports.h osmocom/ctrl/control_vty.h ' /bin/mkdir -p ' /usr/bin/install -c -m 644 osmocom/gprs/protocol/gsm_04_60.h osmocom/gprs/protocol/gsm_08_16.h osmocom/gprs/protocol/gsm_08_18.h ' /bin/mkdir -p ' /usr/bin/install -c -m 644 osmocom/codec/ecu.h osmocom/codec/codec.h osmocom/codec/gsm610_bits.h ' make[4]: Leaving directory ' make[3]: Leaving directory ' make[2]: Leaving directory ' Making install in src make[2]: Entering directory ' GEN crc8gen.c GEN crc16gen.c GEN crc32gen.c GEN crc64gen.c make install-am make[3]: Entering directory ' CC timer.lo CC timer_gettimeofday.lo CC timer_clockgettime.lo CC select.lo CC signal.lo CC bits.lo CC bitvec.lo CC msgb.lo CC bitcomp.lo CC counter.lo CC fsm.lo CC write_queue.lo CC utils.lo CC socket.lo CC logging.lo CC logging_syslog.lo CC logging_gsmtap.lo CC rate_ctr.lo CC gsmtap_util.lo CC crc16.lo CC panic.lo CC backtrace.lo CC conv.lo CC application.lo CC rbtree.lo CC strrb.lo CC loggingrb.lo CC crc8gen.lo CC crc16gen.lo CC crc32gen.lo CC crc64gen.lo CC macaddr.lo CC stat_item.lo CC stats.lo CC stats_statsd.lo CC prim.lo CC conv_acc.lo CC conv_acc_generic.lo CC sercomm.lo CC prbs.lo CC conv_acc_sse.lo CC conv_acc_sse_avx.lo CC plugin.lo /bin/bash: line 2: 27967 Segmentation fault /bin/bash ../libtool --silent --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I.. -I../include -I../include -DBUILDING_LIBOSMOCORE -Wall -Wall -mssse3 -mavx2 -msse4.1 -g -O2 -DBUILDING_LIBOSMOCORE -Wall -MT conv_acc_sse_avx.lo -MD -MP -MF $depbase.Tpo -c -o conv_acc_sse_avx.lo conv_acc_sse_avx.c Makefile:545: recipe for target 'conv_acc_sse_avx.lo' failed make[3]: *** [conv_acc_sse_avx.lo] Error 139 make[3]: *** Waiting for unfinished jobs.... make[3]: Leaving directory ' Makefile:649: recipe for target 'install' failed make[2]: *** [install] Error 2 make[2]: Leaving directory ' Makefile:600: recipe for target 'install-recursive' failed make[1]: *** [install-recursive] Error 1 make[1]: Leaving directory ' Makefile:899: recipe for target 'install' failed make: *** [install] Error 2 Build step 'Execute shell' marked build as failure [WARNINGS]Skipping publisher since build result is FAILURE From gerrit-no-reply at lists.osmocom.org Mon Apr 9 16:07:01 2018 From: gerrit-no-reply at lists.osmocom.org (Neels Hofmeyr) Date: Mon, 9 Apr 2018 16:07:01 +0000 Subject: osmo-msc[master]: libmsc/gsm_04_80.c: drop unused 'in_msg' argument In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+1 (2 comments) https://gerrit.osmocom.org/#/c/7674/1/include/osmocom/msc/gsm_04_80.h File include/osmocom/msc/gsm_04_80.h: Line 10: const char* response_text, const struct ss_request *req); (I would rather keep the same indenting style as below, and for added bonus just modify the single line so the patch touches as few lines as possible) https://gerrit.osmocom.org/#/c/7674/1/src/libmsc/ussd.c File src/libmsc/ussd.c: Line 44: const struct ss_request *req) (again, indent: rather stay with the style of surrounding code. Most editors do that indenting automatically) -- To view, visit https://gerrit.osmocom.org/7674 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I4248ebf8626d3f7f0bf273fd20cc4f64e979938b Gerrit-PatchSet: 1 Gerrit-Project: osmo-msc Gerrit-Branch: master Gerrit-Owner: Vadim Yanitskiy Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Neels Hofmeyr Gerrit-HasComments: Yes From gerrit-no-reply at lists.osmocom.org Mon Apr 9 16:08:42 2018 From: gerrit-no-reply at lists.osmocom.org (Stefan Sperling) Date: Mon, 9 Apr 2018 16:08:42 +0000 Subject: [PATCH] osmo-bsc[master]: fix initialization of acc ramping In-Reply-To: References: Message-ID: Hello Jenkins Builder, I'd like you to reexamine a change. Please visit https://gerrit.osmocom.org/7691 to look at the new patch set (#3). fix initialization of acc ramping Remove a redundant call to acc_ramp_init() during bootstrap_bts(). ACC ramping state is already initialized during VTY config parsing, and bootstrap_bts() accidentally disabled ACC ramping again even if it was enabled in the configuration. This bug was introduced in last-minute refactoring during review of https://gerrit.osmocom.org/#/c/6324/ when the acc_ramping_enabled flag was moved from struct gsm_bts to the acc_ramp structure itself. Also remove an acc_ramp_init() call in bootstrap_rsl(). It is no longer needed as it serves no purpose other than initializing the bitmasks of barred ACCs. To ensure that ACC ramping configuration provided to the BTS via system information stays correct, we move the call to acc_ramp_start(), which has the same effect on barred ACCs, further up. Change-Id: Ib7d99c9d3d5d424e21bb7710f719c42f9aef3e95 Fixes: 6442e4327b1100ecfed7a242e397ac37b7529bea Related: OS#2591 --- M src/libbsc/bsc_init.c 1 file changed, 4 insertions(+), 10 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-bsc refs/changes/91/7691/3 diff --git a/src/libbsc/bsc_init.c b/src/libbsc/bsc_init.c index ba8b8e6..d1173e0 100644 --- a/src/libbsc/bsc_init.c +++ b/src/libbsc/bsc_init.c @@ -332,16 +332,13 @@ trx->bts->location_area_code, trx->bts->cell_identity, trx->bts->bsic); - /* - * Re-initialize ACC ramping to ensure ACCs are barred/allowed - * according to our current VTY configuration. - */ - acc_ramp_init(&trx->bts->acc_ramp, acc_ramp_is_enabled(&trx->bts->acc_ramp), trx->bts); - if (trx->bts->type == GSM_BTS_TYPE_NOKIA_SITE) { rsl_nokia_si_begin(trx); } + /* Configure ACC ramping before sending system information to BTS. */ + if (acc_ramp_is_enabled(&trx->bts->acc_ramp)) + acc_ramp_start(&trx->bts->acc_ramp); gsm_bts_trx_set_system_infos(trx); if (trx->bts->type == GSM_BTS_TYPE_NOKIA_SITE) { @@ -354,9 +351,6 @@ generate_ma_for_ts(&trx->ts[i]); dyn_ts_init(&trx->ts[i]); } - - if (acc_ramp_is_enabled(&trx->bts->acc_ramp)) - acc_ramp_start(&trx->bts->acc_ramp); } /* Callback function to be called every time we receive a signal from INPUT */ @@ -539,7 +533,7 @@ bts->chan_load_samples_idx = 0; - acc_ramp_init(&bts->acc_ramp, false, bts); + /* ACC ramping is initialized from vty/config */ /* Initialize the BTS state */ gsm_bts_mo_reset(bts); -- To view, visit https://gerrit.osmocom.org/7691 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newpatchset Gerrit-Change-Id: Ib7d99c9d3d5d424e21bb7710f719c42f9aef3e95 Gerrit-PatchSet: 3 Gerrit-Project: osmo-bsc Gerrit-Branch: master Gerrit-Owner: Stefan Sperling Gerrit-Reviewer: Jenkins Builder From jenkins at lists.osmocom.org Mon Apr 9 16:11:12 2018 From: jenkins at lists.osmocom.org (jenkins at lists.osmocom.org) Date: Mon, 9 Apr 2018 16:11:12 +0000 (UTC) Subject: =?UTF-8?Q?Jenkins_build_is_back_to_normal_:_master-osmo-hlr_=C2=BB_a1=3Dd?= =?UTF-8?Q?efault,a2=3Ddefault,a3=3Ddefault,osmocom-master-debian9_#433?= In-Reply-To: <1511305260.194.1523289986350.JavaMail.jenkins@jenkins.osmocom.org> References: <1511305260.194.1523289986350.JavaMail.jenkins@jenkins.osmocom.org> Message-ID: <1694081513.195.1523290272640.JavaMail.jenkins@jenkins.osmocom.org> See From gerrit-no-reply at lists.osmocom.org Mon Apr 9 16:11:37 2018 From: gerrit-no-reply at lists.osmocom.org (Stefan Sperling) Date: Mon, 9 Apr 2018 16:11:37 +0000 Subject: [PATCH] openbsc[master]: fix initialization of acc ramping In-Reply-To: References: Message-ID: Hello Jenkins Builder, I'd like you to reexamine a change. Please visit https://gerrit.osmocom.org/7692 to look at the new patch set (#2). fix initialization of acc ramping Remove a redundant call to acc_ramp_init() during bootstrap_bts(). ACC ramping state is already initialized during VTY config parsing, and bootstrap_bts() accidentally disabled ACC ramping again even if it was enabled in the configuration. This bug was introduced in last-minute refactoring during review of https://gerrit.osmocom.org/#/c/6324/ when the acc_ramping_enabled flag was moved from struct gsm_bts to the acc_ramp structure itself. Also remove an acc_ramp_init() call in bootstrap_rsl(). It is no longer needed as it serves no purpose other than initializing the bitmasks of barred ACCs. To ensure that ACC ramping configuration provided to the BTS via system information stays correct, we move the call to acc_ramp_start(), which has the same effect on barred ACCs, further up. Port of osmo-bsc commit f34fb4828249eab44b4515e0e54b3ee0491d0051 Fixes: 8469818e33ef81e9f707a0c4dd13d7b91ecf83f5 Related: OS#2591 Change-Id: I5834fd953e65b8453dee0a7751d5a4cae12be83a --- M openbsc/src/libbsc/bsc_init.c 1 file changed, 4 insertions(+), 4 deletions(-) git pull ssh://gerrit.osmocom.org:29418/openbsc refs/changes/92/7692/2 diff --git a/openbsc/src/libbsc/bsc_init.c b/openbsc/src/libbsc/bsc_init.c index 9389c43..6147257 100644 --- a/openbsc/src/libbsc/bsc_init.c +++ b/openbsc/src/libbsc/bsc_init.c @@ -321,6 +321,9 @@ rsl_nokia_si_begin(trx); } + /* Configure ACC ramping before sending system information to BTS. */ + if (acc_ramp_is_enabled(&trx->bts->acc_ramp)) + acc_ramp_start(&trx->bts->acc_ramp); gsm_bts_trx_set_system_infos(trx); if (trx->bts->type == GSM_BTS_TYPE_NOKIA_SITE) { @@ -331,9 +334,6 @@ for (i = 0; i < ARRAY_SIZE(trx->ts); i++) generate_ma_for_ts(&trx->ts[i]); - - if (acc_ramp_is_enabled(&trx->bts->acc_ramp)) - acc_ramp_start(&trx->bts->acc_ramp); } /* Callback function to be called every time we receive a signal from INPUT */ @@ -521,7 +521,7 @@ bts->chan_load_samples_idx = 0; - acc_ramp_init(&bts->acc_ramp, false, bts); + /* ACC ramping is initialized from vty/config */ /* Initialize the BTS state */ gsm_bts_mo_reset(bts); -- To view, visit https://gerrit.osmocom.org/7692 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newpatchset Gerrit-Change-Id: I5834fd953e65b8453dee0a7751d5a4cae12be83a Gerrit-PatchSet: 2 Gerrit-Project: openbsc Gerrit-Branch: master Gerrit-Owner: Stefan Sperling Gerrit-Reviewer: Jenkins Builder From gerrit-no-reply at lists.osmocom.org Mon Apr 9 16:20:47 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Mon, 9 Apr 2018 16:20:47 +0000 Subject: osmo-bsc[master]: fix initialization of acc ramping In-Reply-To: References: Message-ID: Patch Set 3: Code-Review+1 -- To view, visit https://gerrit.osmocom.org/7691 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Ib7d99c9d3d5d424e21bb7710f719c42f9aef3e95 Gerrit-PatchSet: 3 Gerrit-Project: osmo-bsc Gerrit-Branch: master Gerrit-Owner: Stefan Sperling Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Pau Espin Pedrol Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Mon Apr 9 16:20:50 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Mon, 9 Apr 2018 16:20:50 +0000 Subject: openbsc[master]: fix initialization of acc ramping In-Reply-To: References: Message-ID: Patch Set 2: Code-Review+1 -- To view, visit https://gerrit.osmocom.org/7692 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I5834fd953e65b8453dee0a7751d5a4cae12be83a Gerrit-PatchSet: 2 Gerrit-Project: openbsc Gerrit-Branch: master Gerrit-Owner: Stefan Sperling Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Pau Espin Pedrol Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Mon Apr 9 16:33:18 2018 From: gerrit-no-reply at lists.osmocom.org (Stefan Sperling) Date: Mon, 9 Apr 2018 16:33:18 +0000 Subject: [PATCH] openbsc[master]: fix a format string error in bts_update_t3122_chan_load() Message-ID: Review at https://gerrit.osmocom.org/7693 fix a format string error in bts_update_t3122_chan_load() In a debug log message, an unsigned 64-bit value was printed with %lu but it should be printed with PRIu64 from inttypes.h instead. Port of osmo-bsc commit 5b6aa650f1a6df22ec99797bd3635ea791998a88 https://gerrit.osmocom.org/#/c/7687/ Change-Id: Ia29feec023117734e4f50ae3487871e715821fed --- M openbsc/src/libbsc/chan_alloc.c 1 file changed, 2 insertions(+), 1 deletion(-) git pull ssh://gerrit.osmocom.org:29418/openbsc refs/changes/93/7693/1 diff --git a/openbsc/src/libbsc/chan_alloc.c b/openbsc/src/libbsc/chan_alloc.c index 5fa20af..c4bc949 100644 --- a/openbsc/src/libbsc/chan_alloc.c +++ b/openbsc/src/libbsc/chan_alloc.c @@ -24,6 +24,7 @@ #include #include #include +#include #include #include @@ -607,7 +608,7 @@ /* Log channel load average. */ load = ((used / total) * 100); - LOGP(DRLL, LOGL_DEBUG, "(bts=%d) channel load average is %lu.%.2lu%%\n", + LOGP(DRLL, LOGL_DEBUG, "(bts=%d) channel load average is %"PRIu64".%.2"PRIu64"%%\n", bts->nr, (load & 0xffffff00) >> 8, (load & 0xff) / 10); bts->chan_load_avg = ((load & 0xffffff00) >> 8); OSMO_ASSERT(bts->chan_load_avg <= 100); -- To view, visit https://gerrit.osmocom.org/7693 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Ia29feec023117734e4f50ae3487871e715821fed Gerrit-PatchSet: 1 Gerrit-Project: openbsc Gerrit-Branch: master Gerrit-Owner: Stefan Sperling From gerrit-no-reply at lists.osmocom.org Mon Apr 9 16:34:00 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Mon, 9 Apr 2018 16:34:00 +0000 Subject: openbsc[master]: fix a format string error in bts_update_t3122_chan_load() In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+1 -- To view, visit https://gerrit.osmocom.org/7693 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Ia29feec023117734e4f50ae3487871e715821fed Gerrit-PatchSet: 1 Gerrit-Project: openbsc Gerrit-Branch: master Gerrit-Owner: Stefan Sperling Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Pau Espin Pedrol Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Mon Apr 9 16:53:24 2018 From: gerrit-no-reply at lists.osmocom.org (Vadim Yanitskiy) Date: Mon, 9 Apr 2018 16:53:24 +0000 Subject: [PATCH] osmo-msc[master]: ussd.h: cosmetic: remove useless comment In-Reply-To: References: Message-ID: Hello Harald Welte, Jenkins Builder, I'd like you to reexamine a change. Please visit https://gerrit.osmocom.org/7672 to look at the new patch set (#2). ussd.h: cosmetic: remove useless comment We usually put comments for functions in *.c files, while header files are usually plain listings of the API without comments. Change-Id: I6b0d1d9e1a1b1ffb71cb9905e74f6fad2333bb65 --- M include/osmocom/msc/ussd.h 1 file changed, 0 insertions(+), 2 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-msc refs/changes/72/7672/2 diff --git a/include/osmocom/msc/ussd.h b/include/osmocom/msc/ussd.h index 2665468..84a3d6a 100644 --- a/include/osmocom/msc/ussd.h +++ b/include/osmocom/msc/ussd.h @@ -1,8 +1,6 @@ #ifndef _USSD_H #define _USSD_H -/* Handler function for mobile-originated USSD messages */ - #include int handle_rcv_ussd(struct gsm_subscriber_connection *conn, struct msgb *msg); -- To view, visit https://gerrit.osmocom.org/7672 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newpatchset Gerrit-Change-Id: I6b0d1d9e1a1b1ffb71cb9905e74f6fad2333bb65 Gerrit-PatchSet: 2 Gerrit-Project: osmo-msc Gerrit-Branch: master Gerrit-Owner: Vadim Yanitskiy Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Neels Hofmeyr Gerrit-Reviewer: Vadim Yanitskiy From gerrit-no-reply at lists.osmocom.org Mon Apr 9 16:53:24 2018 From: gerrit-no-reply at lists.osmocom.org (Vadim Yanitskiy) Date: Mon, 9 Apr 2018 16:53:24 +0000 Subject: [PATCH] osmo-msc[master]: VTY: add USSD processing back-end configuration In-Reply-To: References: Message-ID: Hello Jenkins Builder, I'd like you to reexamine a change. Please visit https://gerrit.osmocom.org/7677 to look at the new patch set (#2). VTY: add USSD processing back-end configuration This change is a preparation for the upcoming remote USSD processing back-end support. It extends the VTY in order to allow one to choose preferred USSD handler. At the moment, the following handlers are available: OsmoMSC# configure terminal OsmoMSC(config)# ussd OsmoMSC(config-ussd)# handler none Do not handle USSD requests internal Built-in USSD handlers (e.g. *#100#) Please note that the internal back-end (good old *#100#) is still used by default due to the compatibility reasons. Change-Id: I0b3c5ccea4054113e8e23109b1ab68d9f0e18497 --- M doc/examples/osmo-msc/osmo-msc.cfg M doc/examples/osmo-msc/osmo-msc_custom-sccp.cfg M doc/examples/osmo-msc/osmo-msc_multi-cs7.cfg M include/osmocom/msc/gsm_data.h M include/osmocom/msc/ussd.h M include/osmocom/msc/vty.h M src/libmsc/msc_vty.c M src/libmsc/ussd.c M src/osmo-msc/msc_main.c M tests/msc_vlr/msc_vlr_tests.c 10 files changed, 176 insertions(+), 19 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-msc refs/changes/77/7677/2 diff --git a/doc/examples/osmo-msc/osmo-msc.cfg b/doc/examples/osmo-msc/osmo-msc.cfg index 91c9eee..9fa2977 100644 --- a/doc/examples/osmo-msc/osmo-msc.cfg +++ b/doc/examples/osmo-msc/osmo-msc.cfg @@ -17,3 +17,5 @@ assign-tmsi auth-tuple-max-reuse-count 3 auth-tuple-reuse-on-error 1 +ussd + handler internal diff --git a/doc/examples/osmo-msc/osmo-msc_custom-sccp.cfg b/doc/examples/osmo-msc/osmo-msc_custom-sccp.cfg index 0b9fd2a..d012f16 100644 --- a/doc/examples/osmo-msc/osmo-msc_custom-sccp.cfg +++ b/doc/examples/osmo-msc/osmo-msc_custom-sccp.cfg @@ -23,3 +23,5 @@ cs7-instance-iu 0 mgw remote-ip 10.23.24.1 assign-tmsi +ussd + handler internal diff --git a/doc/examples/osmo-msc/osmo-msc_multi-cs7.cfg b/doc/examples/osmo-msc/osmo-msc_multi-cs7.cfg index 44ac3f8..b2c0c1d 100644 --- a/doc/examples/osmo-msc/osmo-msc_multi-cs7.cfg +++ b/doc/examples/osmo-msc/osmo-msc_multi-cs7.cfg @@ -25,3 +25,5 @@ cs7-instance-iu 1 mgw remote-ip 10.23.24.1 assign-tmsi +ussd + handler internal diff --git a/include/osmocom/msc/gsm_data.h b/include/osmocom/msc/gsm_data.h index f3e1b94..1ba03e3 100644 --- a/include/osmocom/msc/gsm_data.h +++ b/include/osmocom/msc/gsm_data.h @@ -14,6 +14,7 @@ #include #include +#include #include #include #include @@ -321,6 +322,11 @@ /* MSISDN to which to route MO emergency calls */ char *route_to_msisdn; } emergency; + + struct { + /* USSD handler, e.g. internal */ + enum ussd_handler_type handler; + } ussd; }; struct osmo_esme; diff --git a/include/osmocom/msc/ussd.h b/include/osmocom/msc/ussd.h index bc4227b..6c821b1 100644 --- a/include/osmocom/msc/ussd.h +++ b/include/osmocom/msc/ussd.h @@ -2,4 +2,18 @@ #include +enum ussd_handler_type { + /* Do not handle USSD requests */ + USSD_HANDLER_NONE = 0, + /* Built-in USSD handlers (e.g. *#100#) */ + USSD_HANDLER_INTERNAL, +}; + +/* Forward declarations to avoid mutual include */ +struct gsm_subscriber_connection; +struct gsm_network; + +int ussd_init(struct gsm_network *net); +void ussd_shutdown(struct gsm_network *net); + int handle_rcv_ussd(struct gsm_subscriber_connection *conn, struct msgb *msg); diff --git a/include/osmocom/msc/vty.h b/include/osmocom/msc/vty.h index 6a55df7..068683f 100644 --- a/include/osmocom/msc/vty.h +++ b/include/osmocom/msc/vty.h @@ -23,6 +23,7 @@ SMPP_NODE, SMPP_ESME_NODE, HLR_NODE, + USSD_NODE, }; int bsc_vty_init_extra(void); diff --git a/src/libmsc/msc_vty.c b/src/libmsc/msc_vty.c index 33613e9..e5887fe 100644 --- a/src/libmsc/msc_vty.c +++ b/src/libmsc/msc_vty.c @@ -47,6 +47,7 @@ #include #include #include +#include #include #include #include @@ -1380,6 +1381,61 @@ return CMD_SUCCESS; } +static struct cmd_node ussd_node = { + USSD_NODE, + "%s(config-ussd)# ", + 1, +}; + +DEFUN(cfg_ussd, cfg_ussd_cmd, + "ussd", "Configure USSD handling") +{ + vty->node = USSD_NODE; + return CMD_SUCCESS; +} + +#define USSD_HANDLERS "(none|internal)" +#define USSD_HANDLERS_HELP \ + "Do not handle USSD requests\n" \ + "Built-in USSD handlers (e.g. *#100#)\n" + +DEFUN(cfg_ussd_handler, cfg_ussd_handler_cmd, + "handler " USSD_HANDLERS, + "USSD processing back-end\n" + USSD_HANDLERS_HELP) +{ + const char *handler_str = argv[0]; + + /* Parse handler type */ + if (!strcasecmp(handler_str, "none")) + gsmnet->ussd.handler = USSD_HANDLER_NONE; + else if (!strcasecmp(handler_str, "internal")) + gsmnet->ussd.handler = USSD_HANDLER_INTERNAL; + else { + vty_out(vty, "Incorrect USSD handler%s", VTY_NEWLINE); + return CMD_WARNING; + } + + return CMD_SUCCESS; +} + +static int config_write_ussd(struct vty *vty) +{ + vty_out(vty, "ussd%s", VTY_NEWLINE); + + vty_out(vty, " handler "); + switch (gsmnet->ussd.handler) { + case USSD_HANDLER_NONE: + vty_out(vty, "none%s", VTY_NEWLINE); + break; + case USSD_HANDLER_INTERNAL: + vty_out(vty, "internal%s", VTY_NEWLINE); + break; + } + + return CMD_SUCCESS; +} + void msc_vty_init(struct gsm_network *msc_network) { OSMO_ASSERT(gsmnet == NULL); @@ -1461,4 +1517,8 @@ install_node(&hlr_node, config_write_hlr); install_element(HLR_NODE, &cfg_hlr_remote_ip_cmd); install_element(HLR_NODE, &cfg_hlr_remote_port_cmd); + + install_element(CONFIG_NODE, &cfg_ussd_cmd); + install_node(&ussd_node, config_write_ussd); + install_element(USSD_NODE, &cfg_ussd_handler_cmd); } diff --git a/src/libmsc/ussd.c b/src/libmsc/ussd.c index e7f7e5d..9b929d0 100644 --- a/src/libmsc/ussd.c +++ b/src/libmsc/ussd.c @@ -34,7 +34,11 @@ #include #include #include +#include #include + +static int (*ussd_handler)(struct gsm_subscriber_connection *conn, + const struct ss_request *req) = NULL; /* Declarations of USSD strings to be recognised */ const char USSD_TEXT_OWN_NUMBER[] = "*#100#"; @@ -52,6 +56,43 @@ /* Need trailing CR as EOT character */ snprintf(response_string, sizeof(response_string), "Your extension is %s\r", own_number); return gsm0480_send_ussd_response(conn, response_string, req); +} + +static int ussd_handler_internal(struct gsm_subscriber_connection *conn, + const struct ss_request *req) +{ + int rc; + + /* Interrogation or releaseComplete? */ + if (req->ussd_text[0] == '\0' || req->ussd_text[0] == 0xFF) { + if (req->ss_code > 0) { + /* Assume interrogateSS or modification of it and reject */ + rc = gsm0480_send_ussd_reject(conn, req); + return rc; + } + /* Still assuming a Release-Complete and returning */ + return 0; + } + + msc_subscr_conn_communicating(conn); + if (!strcmp(USSD_TEXT_OWN_NUMBER, (const char *)req->ussd_text)) { + DEBUGP(DMM, "USSD: Own number requested\n"); + rc = send_own_number(conn, req); + } else { + DEBUGP(DMM, "Unhandled USSD %s\n", req->ussd_text); + rc = gsm0480_send_ussd_reject(conn, req); + } + + return rc; +} + +static int ussd_handler_dummy(struct gsm_subscriber_connection *conn, + const struct ss_request *req) +{ + DEBUGP(DMM, "USSD support disabled, rejecting request\n"); + + /* FIXME: use a proper problem code */ + return gsm0480_send_ussd_reject(conn, req); } /* Entrypoint - handler function common to all mobile-originated USSDs */ @@ -77,25 +118,31 @@ return rc; } - /* Interrogation or releaseComplete? */ - if (req.ussd_text[0] == '\0' || req.ussd_text[0] == 0xFF) { - if (req.ss_code > 0) { - /* Assume interrogateSS or modification of it and reject */ - rc = gsm0480_send_ussd_reject(conn, &req); - return rc; - } - /* Still assuming a Release-Complete and returning */ - return 0; + OSMO_ASSERT(ussd_handler); + return ussd_handler(conn, &req); +} + +int ussd_init(struct gsm_network *net) +{ + /* Choose USSD connection handler */ + switch (net->ussd.handler) { + case USSD_HANDLER_INTERNAL: + ussd_handler = ussd_handler_internal; + break; + case USSD_HANDLER_NONE: + default: + ussd_handler = ussd_handler_dummy; + break; } - msc_subscr_conn_communicating(conn); - if (!strcmp(USSD_TEXT_OWN_NUMBER, (const char *)req.ussd_text)) { - DEBUGP(DMM, "USSD: Own number requested\n"); - rc = send_own_number(conn, &req); - } else { - DEBUGP(DMM, "Unhandled USSD %s\n", req.ussd_text); - rc = gsm0480_send_ussd_reject(conn, &req); - } + return 0; +} - return rc; +void ussd_shutdown(struct gsm_network *net) +{ + /** + * Do nothing for now + * TODO: close connection with external USSD gateway + * TODO: close all active USSD connections + */ } diff --git a/src/osmo-msc/msc_main.c b/src/osmo-msc/msc_main.c index 85a8fe1..4e8e275 100644 --- a/src/osmo-msc/msc_main.c +++ b/src/osmo-msc/msc_main.c @@ -55,6 +55,7 @@ #include #include #include +#include #include #include #include @@ -215,12 +216,22 @@ mgcp_client_conf_init(&net->mgw.conf); + /* USSD: let's keep *#100# available by default */ + net->ussd.handler = USSD_HANDLER_INTERNAL; + return net; } void msc_network_shutdown(struct gsm_network *net) { - /* nothing here yet */ + /** + * Prevent NULL pointer dereference, + * e.g. when called before initialization... + */ + OSMO_ASSERT(net); + + /* Shutdown USSD */ + ussd_shutdown(net); } static struct gsm_network *msc_network = NULL; @@ -620,6 +631,13 @@ return -1; } + /* Initialize USSD */ + rc = ussd_init(msc_network); + if (rc) { + printf("Failed to initialize USSD.\n"); + return -1; + } + /* seed the PRNG */ srand(time(NULL)); /* TODO: is this used for crypto?? Improve randomness, at least we diff --git a/tests/msc_vlr/msc_vlr_tests.c b/tests/msc_vlr/msc_vlr_tests.c index 7c54057..a19ab3b 100644 --- a/tests/msc_vlr/msc_vlr_tests.c +++ b/tests/msc_vlr/msc_vlr_tests.c @@ -926,6 +926,9 @@ net->vlr->ops.tx_auth_rej = fake_vlr_tx_auth_rej; net->vlr->ops.set_ciph_mode = fake_vlr_tx_ciph_mode_cmd; + /* USSD: let's keep *#100# available by default */ + net->ussd.handler = USSD_HANDLER_INTERNAL; + return net; } @@ -954,6 +957,8 @@ msc_subscr_conn_init(); + ussd_init(net); + clear_vlr(); if (optind >= argc) -- To view, visit https://gerrit.osmocom.org/7677 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newpatchset Gerrit-Change-Id: I0b3c5ccea4054113e8e23109b1ab68d9f0e18497 Gerrit-PatchSet: 2 Gerrit-Project: osmo-msc Gerrit-Branch: master Gerrit-Owner: Vadim Yanitskiy Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder From gerrit-no-reply at lists.osmocom.org Mon Apr 9 16:54:58 2018 From: gerrit-no-reply at lists.osmocom.org (Vadim Yanitskiy) Date: Mon, 9 Apr 2018 16:54:58 +0000 Subject: osmo-msc[master]: VTY: add USSD processing back-end configuration In-Reply-To: References: Message-ID: Patch Set 2: > Let's call it "internal", not " local", to use the same naming as > for mncc handlers Done. Also I've updated the configuration examples. -- To view, visit https://gerrit.osmocom.org/7677 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I0b3c5ccea4054113e8e23109b1ab68d9f0e18497 Gerrit-PatchSet: 2 Gerrit-Project: osmo-msc Gerrit-Branch: master Gerrit-Owner: Vadim Yanitskiy Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Vadim Yanitskiy Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Mon Apr 9 16:55:30 2018 From: gerrit-no-reply at lists.osmocom.org (Vadim Yanitskiy) Date: Mon, 9 Apr 2018 16:55:30 +0000 Subject: osmo-msc[master]: ussd.h: cosmetic: remove useless comment In-Reply-To: References: Message-ID: Patch Set 2: > we put comments for functions typically in the .c file, by the > implementation of the function. .h files are usually plain listings > of the API without comments. Neels, ok, removed. -- To view, visit https://gerrit.osmocom.org/7672 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I6b0d1d9e1a1b1ffb71cb9905e74f6fad2333bb65 Gerrit-PatchSet: 2 Gerrit-Project: osmo-msc Gerrit-Branch: master Gerrit-Owner: Vadim Yanitskiy Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Neels Hofmeyr Gerrit-Reviewer: Vadim Yanitskiy Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Mon Apr 9 17:00:44 2018 From: gerrit-no-reply at lists.osmocom.org (Vadim Yanitskiy) Date: Mon, 9 Apr 2018 17:00:44 +0000 Subject: osmo-msc[master]: libmsc/gsm_04_80.c: drop unused 'in_msg' argument In-Reply-To: References: Message-ID: Patch Set 2: About indenting style, personally I don't like this style. This occupies the potential space, that could be used for listing arguments, by useless spaces and tabs just in order to make the code look aligned... Also, some parts of this code are to be modified in the near future, so I would not care too much about it. -- To view, visit https://gerrit.osmocom.org/7674 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I4248ebf8626d3f7f0bf273fd20cc4f64e979938b Gerrit-PatchSet: 2 Gerrit-Project: osmo-msc Gerrit-Branch: master Gerrit-Owner: Vadim Yanitskiy Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Neels Hofmeyr Gerrit-Reviewer: Vadim Yanitskiy Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Mon Apr 9 17:20:27 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Mon, 9 Apr 2018 17:20:27 +0000 Subject: [PATCH] osmo-msc[master]: Permit any Sender MSISDN when sending SMS from VTY Message-ID: Review at https://gerrit.osmocom.org/7694 Permit any Sender MSISDN when sending SMS from VTY In the old days, OsmoNITB couldn't process any SMS that wasn't between two subscribers on the same NITB. We've long re-worked the internals in order to process SMS with arbitrary sender MSISDN (e.g. from SMPP). However, the VTY command "subscriber ... sms" was never updated, it seems. Change-Id: I62b17e0a67989484415f0df2c8cb4ff1f94dbf2b Closes: OS#3151 --- M include/osmocom/msc/gsm_04_11.h M src/libmsc/gsm_04_11.c M src/libmsc/msc_vty.c M tests/msc_vlr/msc_vlr_tests.c 4 files changed, 32 insertions(+), 26 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-msc refs/changes/94/7694/1 diff --git a/include/osmocom/msc/gsm_04_11.h b/include/osmocom/msc/gsm_04_11.h index 3305e3e..e3ff4ba 100644 --- a/include/osmocom/msc/gsm_04_11.h +++ b/include/osmocom/msc/gsm_04_11.h @@ -34,7 +34,7 @@ struct gsm_sms *sms_alloc(void); void sms_free(struct gsm_sms *sms); struct gsm_sms *sms_from_text(struct vlr_subscr *receiver, - struct vlr_subscr *sender, + const char *sender_msisdn, int dcs, const char *text); void _gsm411_sms_trans_free(struct gsm_trans *trans); diff --git a/src/libmsc/gsm_04_11.c b/src/libmsc/gsm_04_11.c index aa60490..077c8d8 100644 --- a/src/libmsc/gsm_04_11.c +++ b/src/libmsc/gsm_04_11.c @@ -82,7 +82,7 @@ } struct gsm_sms *sms_from_text(struct vlr_subscr *receiver, - struct vlr_subscr *sender, + const char *sender_msisdn, int dcs, const char *text) { struct gsm_sms *sms = sms_alloc(); @@ -93,7 +93,7 @@ sms->receiver = vlr_subscr_get(receiver); OSMO_STRLCPY_ARRAY(sms->text, text); - OSMO_STRLCPY_ARRAY(sms->src.addr, sender->msisdn); + OSMO_STRLCPY_ARRAY(sms->src.addr, sender_msisdn); sms->reply_path_req = 0; sms->status_rep_req = 0; sms->ud_hdr_ind = 0; diff --git a/src/libmsc/msc_vty.c b/src/libmsc/msc_vty.c index 33613e9..84d4d14 100644 --- a/src/libmsc/msc_vty.c +++ b/src/libmsc/msc_vty.c @@ -705,13 +705,13 @@ } static int _send_sms_str(struct vlr_subscr *receiver, - struct vlr_subscr *sender, + const char *sender_msisdn, char *str, uint8_t tp_pid) { struct gsm_network *net = receiver->vlr->user_ctx; struct gsm_sms *sms; - sms = sms_from_text(receiver, sender, 0, str); + sms = sms_from_text(receiver, sender_msisdn, 0, str); sms->protocol_id = tp_pid; /* store in database for the queue */ @@ -813,7 +813,7 @@ SUBSCR_HELP "SMS Operations\n" SUBSCR_HELP "Send SMS\n" "Actual SMS Text\n") { struct vlr_subscr *vsub = get_vsub_by_argv(gsmnet, argv[0], argv[1]); - struct vlr_subscr *sender = get_vsub_by_argv(gsmnet, argv[2], argv[3]); + const char *sender_msisdn; char *str; int rc; @@ -824,21 +824,24 @@ goto err; } - if (!sender) { - vty_out(vty, "%% No sender found for %s %s%s", - argv[2], argv[3], VTY_NEWLINE); - rc = CMD_WARNING; - goto err; + if (!strcmp(argv[2], "msisdn")) + sender_msisdn = argv[3]; + else { + struct vlr_subscr *sender = get_vsub_by_argv(gsmnet, argv[2], argv[3]); + if (!sender) { + vty_out(vty, "%% No sender found for %s %s%s", argv[2], argv[3], VTY_NEWLINE); + rc = CMD_WARNING; + goto err; + } + sender_msisdn = sender->msisdn; + vlr_subscr_put(sender); } str = argv_concat(argv, argc, 4); - rc = _send_sms_str(vsub, sender, str, 0); + rc = _send_sms_str(vsub, sender_msisdn, str, 0); talloc_free(str); err: - if (sender) - vlr_subscr_put(sender); - if (vsub) vlr_subscr_put(vsub); @@ -852,7 +855,7 @@ SUBSCR_HELP "Silent SMS Operations\n" SUBSCR_HELP "Send SMS\n" "Actual SMS Text\n") { struct vlr_subscr *vsub = get_vsub_by_argv(gsmnet, argv[0], argv[1]); - struct vlr_subscr *sender = get_vsub_by_argv(gsmnet, argv[2], argv[3]); + const char *sender_msisdn; char *str; int rc; @@ -863,21 +866,24 @@ goto err; } - if (!sender) { - vty_out(vty, "%% No sender found for %s %s%s", - argv[2], argv[3], VTY_NEWLINE); - rc = CMD_WARNING; - goto err; + if (!strcmp(argv[2], "msisdn")) { + sender_msisdn = argv[3]; + } else { + struct vlr_subscr *sender = get_vsub_by_argv(gsmnet, argv[2], argv[3]); + if (!sender) { + vty_out(vty, "%% No sender found for %s %s%s", argv[2], argv[3], VTY_NEWLINE); + rc = CMD_WARNING; + goto err; + } + sender_msisdn = sender->msisdn; + vlr_subscr_put(sender); } str = argv_concat(argv, argc, 4); - rc = _send_sms_str(vsub, sender, str, 64); + rc = _send_sms_str(vsub, sender_msisdn, str, 64); talloc_free(str); err: - if (sender) - vlr_subscr_put(sender); - if (vsub) vlr_subscr_put(vsub); diff --git a/tests/msc_vlr/msc_vlr_tests.c b/tests/msc_vlr/msc_vlr_tests.c index 7c54057..45ab5e1 100644 --- a/tests/msc_vlr/msc_vlr_tests.c +++ b/tests/msc_vlr/msc_vlr_tests.c @@ -294,7 +294,7 @@ struct vlr_subscr *sender, char *str) { - struct gsm_sms *sms = sms_from_text(receiver, sender, 0, str); + struct gsm_sms *sms = sms_from_text(receiver, sender->msisdn, 0, str); gsm411_send_sms_subscr(receiver, sms); } -- To view, visit https://gerrit.osmocom.org/7694 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I62b17e0a67989484415f0df2c8cb4ff1f94dbf2b Gerrit-PatchSet: 1 Gerrit-Project: osmo-msc Gerrit-Branch: master Gerrit-Owner: Harald Welte From gerrit-no-reply at lists.osmocom.org Mon Apr 9 17:26:38 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Mon, 9 Apr 2018 17:26:38 +0000 Subject: osmo-msc[master]: VTY: add USSD processing back-end configuration In-Reply-To: References: Message-ID: Patch Set 2: I think this may end up being too inflexible. For MNCC, it makes sense to distinguish between "internal" and "external socket": Both can deal with voice calls to all (reachable) subscribers. For SMS, we have any number of ESMEs, and we can configure prefix-based matches to look up the respective ESMEs when delivering SMS, which is flexible. For USSD, I don't think the internal handler would ever have much more than the *#100#, particularly not as we're introducing an external interface now. As the USSD external interface doesn't support multiple different external USSD applications (we want to stay close to MAP for new interfaces), it's not possible to do something like we do with ESMEs. So in short, I think we should simply have a binary flag that decides whether the internal *#100# should be enabled or disabled, and anything beyond that should always unconditionally be forwarded via GSUP to the HLR (or any future MAP gateway). The HLR can then decide how to handle those USSD messages and offer whatever non-3GPP external interfaces/APIS and route based on pattern matching, etc. What do you think? -- To view, visit https://gerrit.osmocom.org/7677 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I0b3c5ccea4054113e8e23109b1ab68d9f0e18497 Gerrit-PatchSet: 2 Gerrit-Project: osmo-msc Gerrit-Branch: master Gerrit-Owner: Vadim Yanitskiy Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Vadim Yanitskiy Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Mon Apr 9 17:26:48 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Mon, 9 Apr 2018 17:26:48 +0000 Subject: osmo-msc[master]: ussd.h: cosmetic: remove useless comment In-Reply-To: References: Message-ID: Patch Set 2: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7672 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I6b0d1d9e1a1b1ffb71cb9905e74f6fad2333bb65 Gerrit-PatchSet: 2 Gerrit-Project: osmo-msc Gerrit-Branch: master Gerrit-Owner: Vadim Yanitskiy Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Neels Hofmeyr Gerrit-Reviewer: Vadim Yanitskiy Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Mon Apr 9 17:28:31 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Mon, 9 Apr 2018 17:28:31 +0000 Subject: osmo-msc[master]: Permit any Sender MSISDN when sending SMS from VTY In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+1 -- To view, visit https://gerrit.osmocom.org/7694 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I62b17e0a67989484415f0df2c8cb4ff1f94dbf2b Gerrit-PatchSet: 1 Gerrit-Project: osmo-msc Gerrit-Branch: master Gerrit-Owner: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Pau Espin Pedrol Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Mon Apr 9 17:28:56 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Mon, 9 Apr 2018 17:28:56 +0000 Subject: osmo-msc[master]: libmsc/gsm_04_80.c: drop unused 'in_msg' argument In-Reply-To: References: Message-ID: Patch Set 1: > About indenting style, personally I don't like this style. [..] Everyone of course has their own preference, and everyone is entitled to have that. However, in any software project it is generally good if there is a common style to be followed by all the code, as it enhances readability across the project. It doesn't really matter which style it is, just as long as everyone is following it. In Osmocom, we indent additional argument to the point behind the opening parenthesis. So I would like to ask you to follow that, thanks! -- To view, visit https://gerrit.osmocom.org/7674 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I4248ebf8626d3f7f0bf273fd20cc4f64e979938b Gerrit-PatchSet: 1 Gerrit-Project: osmo-msc Gerrit-Branch: master Gerrit-Owner: Vadim Yanitskiy Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Neels Hofmeyr Gerrit-Reviewer: Vadim Yanitskiy Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Mon Apr 9 17:30:22 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Mon, 9 Apr 2018 17:30:22 +0000 Subject: osmo-ttcn3-hacks[master]: improve failure diagnostics in TC_vty_msisdn_isd HLR test In-Reply-To: References: Message-ID: Patch Set 2: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7684 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Ib0809617cca621cc22f29b078828057fd49f27e5 Gerrit-PatchSet: 2 Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Owner: Stefan Sperling Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Mon Apr 9 17:30:28 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Mon, 9 Apr 2018 17:30:28 +0000 Subject: [MERGED] osmo-ttcn3-hacks[master]: improve failure diagnostics in TC_vty_msisdn_isd HLR test In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: improve failure diagnostics in TC_vty_msisdn_isd HLR test ...................................................................... improve failure diagnostics in TC_vty_msisdn_isd HLR test Check for reception of an Insert Subscriber Data with outdated MSISDN. This happened to me while working on a fix for issue OS#2785, and it seems to be an easy mistake implementations can make. Catch this situation in the test and log an explicit message about the problem. Related: OS#2785 Change-Id: Ib0809617cca621cc22f29b078828057fd49f27e5 --- M hlr/HLR_Tests.ttcn 1 file changed, 4 insertions(+), 0 deletions(-) Approvals: Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/hlr/HLR_Tests.ttcn b/hlr/HLR_Tests.ttcn index 8b21626..90a00bf 100644 --- a/hlr/HLR_Tests.ttcn +++ b/hlr/HLR_Tests.ttcn @@ -480,6 +480,10 @@ sub.msisdn := new_msisdn; setverdict(pass); } + [] GSUP.receive(tr_GSUP_ISD_REQ(sub.imsi, sub.msisdn)) { + log("received ISD req with old MSISDN"); + setverdict(fail); + } [] GSUP.receive { repeat; } [] T.timeout { setverdict(fail, "Timeout waiting for ISD.req"); -- To view, visit https://gerrit.osmocom.org/7684 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: Ib0809617cca621cc22f29b078828057fd49f27e5 Gerrit-PatchSet: 2 Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Owner: Stefan Sperling Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder From gerrit-no-reply at lists.osmocom.org Mon Apr 9 17:30:53 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Mon, 9 Apr 2018 17:30:53 +0000 Subject: libosmocore[master]: fix issue on big endian architecture In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7666 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I4a09d2d8ccf155e70a3977ae1747758b6bc5125e Gerrit-PatchSet: 1 Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Owner: Thorsten Alteholz Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Vadim Yanitskiy Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Mon Apr 9 17:32:10 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Mon, 9 Apr 2018 17:32:10 +0000 Subject: libosmocore[master]: fix issue on big endian architecture In-Reply-To: References: Message-ID: Patch Set 1: thanks. I think however that there are *many* more big endian related problems all over the Osmocom code base. So I'd not be surprised if you run into all kinds of trouble on such systems (e.g. PPC, MIPS). Fixes are appreciated, but nobody of the core developers is using any related big endian hardware, so there's not even manual testing for it. -- To view, visit https://gerrit.osmocom.org/7666 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I4a09d2d8ccf155e70a3977ae1747758b6bc5125e Gerrit-PatchSet: 1 Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Owner: Thorsten Alteholz Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Vadim Yanitskiy Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Mon Apr 9 17:32:11 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Mon, 9 Apr 2018 17:32:11 +0000 Subject: [MERGED] libosmocore[master]: fix issue on big endian architecture In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: fix issue on big endian architecture ...................................................................... fix issue on big endian architecture OSMO_IS_LITTLE_ENDIAN is always defined and has a value of either 0 or 1 as a result in byteswap.h the corresponding swap functions will be always called, independent of the endianess Signed-off-by: Thorsten Alteholz Change-Id: I4a09d2d8ccf155e70a3977ae1747758b6bc5125e --- M include/osmocom/core/byteswap.h 1 file changed, 1 insertion(+), 1 deletion(-) Approvals: Vadim Yanitskiy: Looks good to me, but someone else must approve Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/include/osmocom/core/byteswap.h b/include/osmocom/core/byteswap.h index 1ea5b3d..cecdc63 100644 --- a/include/osmocom/core/byteswap.h +++ b/include/osmocom/core/byteswap.h @@ -32,7 +32,7 @@ return out; } -#ifdef OSMO_IS_LITTLE_ENDIAN +#if OSMO_IS_LITTLE_ENDIAN == 1 #define osmo_ntohl(x) osmo_swab32(x) #define osmo_ntohs(x) osmo_swab16(x) #define osmo_htonl(x) osmo_swab32(x) -- To view, visit https://gerrit.osmocom.org/7666 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: I4a09d2d8ccf155e70a3977ae1747758b6bc5125e Gerrit-PatchSet: 2 Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Owner: Thorsten Alteholz Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Vadim Yanitskiy From gerrit-no-reply at lists.osmocom.org Mon Apr 9 17:32:21 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Mon, 9 Apr 2018 17:32:21 +0000 Subject: meta-telephony[201705]: openbsc: enable smpp In-Reply-To: References: Message-ID: Patch Set 1: Verified+1 -- To view, visit https://gerrit.osmocom.org/7659 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I20c77346e4894d6d146863fd79f6d27ef12cb3ee Gerrit-PatchSet: 1 Gerrit-Project: meta-telephony Gerrit-Branch: 201705 Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Harald Welte Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Mon Apr 9 17:32:23 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Mon, 9 Apr 2018 17:32:23 +0000 Subject: meta-telephony[201705]: openbsc: remove c-ares dependency In-Reply-To: References: Message-ID: Patch Set 1: Verified+1 -- To view, visit https://gerrit.osmocom.org/7660 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I1bee6e0132252d0e5adc3517908dcf05021547ea Gerrit-PatchSet: 1 Gerrit-Project: meta-telephony Gerrit-Branch: 201705 Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Harald Welte Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Mon Apr 9 17:32:26 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Mon, 9 Apr 2018 17:32:26 +0000 Subject: [MERGED] meta-telephony[201705]: openbsc: remove c-ares dependency In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: openbsc: remove c-ares dependency ...................................................................... openbsc: remove c-ares dependency Since openbsc ed03661871ac8ee1715c04390d25631537b084ac, the c-ares dependency has been removed. Change-Id: I1bee6e0132252d0e5adc3517908dcf05021547ea --- M recipes-osmocom/openbsc/openbsc.inc 1 file changed, 1 insertion(+), 1 deletion(-) Approvals: Harald Welte: Looks good to me, approved; Verified diff --git a/recipes-osmocom/openbsc/openbsc.inc b/recipes-osmocom/openbsc/openbsc.inc index 90a0398..ba0d75c 100644 --- a/recipes-osmocom/openbsc/openbsc.inc +++ b/recipes-osmocom/openbsc/openbsc.inc @@ -1,5 +1,5 @@ DESCRIPTION = "OpenBSC a Free Software GSM BaseStationController" -DEPENDS = "libdbi libosmocore libosmo-sccp libosmo-abis libosmo-netif osmo-ggsn libsmpp34 bcg729 libgsm libpcap c-ares" +DEPENDS = "libdbi libosmocore libosmo-sccp libosmo-abis libosmo-netif osmo-ggsn libsmpp34 bcg729 libgsm libpcap" HOMEPAGE = "http://openbsc.osmocom.org/" LICENSE = "AGPLv3+" LIC_FILES_CHKSUM = "file://COPYING;md5=73f1eb20517c55bf9493b7dd6e480788" -- To view, visit https://gerrit.osmocom.org/7660 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: I1bee6e0132252d0e5adc3517908dcf05021547ea Gerrit-PatchSet: 1 Gerrit-Project: meta-telephony Gerrit-Branch: 201705 Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Harald Welte From gerrit-no-reply at lists.osmocom.org Mon Apr 9 17:32:26 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Mon, 9 Apr 2018 17:32:26 +0000 Subject: [MERGED] meta-telephony[201705]: openbsc: enable smpp In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: openbsc: enable smpp ...................................................................... openbsc: enable smpp libsmpp34 was listed in DEPENDS but it's use was not enabled. Change-Id: I20c77346e4894d6d146863fd79f6d27ef12cb3ee --- M recipes-osmocom/openbsc/openbsc.inc 1 file changed, 2 insertions(+), 2 deletions(-) Approvals: Harald Welte: Looks good to me, approved; Verified diff --git a/recipes-osmocom/openbsc/openbsc.inc b/recipes-osmocom/openbsc/openbsc.inc index 3c1b98f..90a0398 100644 --- a/recipes-osmocom/openbsc/openbsc.inc +++ b/recipes-osmocom/openbsc/openbsc.inc @@ -11,10 +11,10 @@ file://osmo-bsc-sccplite.service \ " -INC_PR = "r24.${META_TELEPHONY_OSMO_INC}" +INC_PR = "r25.${META_TELEPHONY_OSMO_INC}" -EXTRA_OECONF += "--enable-osmo-bsc --enable-mgcp-transcoding --with-g729" +EXTRA_OECONF += "--enable-osmo-bsc --enable-smpp --enable-mgcp-transcoding --with-g729" inherit autotools update-rc.d pkgconfig -- To view, visit https://gerrit.osmocom.org/7659 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: I20c77346e4894d6d146863fd79f6d27ef12cb3ee Gerrit-PatchSet: 1 Gerrit-Project: meta-telephony Gerrit-Branch: 201705 Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Harald Welte From gerrit-no-reply at lists.osmocom.org Mon Apr 9 17:35:55 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Mon, 9 Apr 2018 17:35:55 +0000 Subject: osmo-hlr[master]: notify GSUP clients when HLR subscriber information changes In-Reply-To: References: Message-ID: Patch Set 1: (1 comment) https://gerrit.osmocom.org/#/c/7685/1/src/hlr.c File src/hlr.c: Line 49: /* Trigger 'Insert Subscriber Data' messages to all connected GSUP clients. to all GSUP clients is ok for now, as we only expect a single MSC+SGSN to be connected. However, in larger scale networks we should check to update only those MSC/SGSN which are listed in the subscriber data as the "current serving VLR/SGSN" for that subscriber. I believe we already have those fields in our database model, not sure if they're already populated though. In any case, we should at least have a a FIXME here to keep remembering something must be done in the future to avoid ISD into VLRs/SGSNs that are not even serving the subscriber. At that point, the respective "vlr_subscriber" would be allocated/created in them, despite the subscriber not existing. -- To view, visit https://gerrit.osmocom.org/7685 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Iffe1d7afb9fc7dbae542f70bbf5391ddc08a14b4 Gerrit-PatchSet: 1 Gerrit-Project: osmo-hlr Gerrit-Branch: master Gerrit-Owner: Stefan Sperling Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-HasComments: Yes From gerrit-no-reply at lists.osmocom.org Mon Apr 9 17:36:14 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Mon, 9 Apr 2018 17:36:14 +0000 Subject: osmo-ttcn3-hacks[master]: update expected HLR test results to prevent unexpected 'pass' In-Reply-To: References: Message-ID: Patch Set 2: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7686 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Ie8cfbef5a0adcb927917b0623f89309479a60001 Gerrit-PatchSet: 2 Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Owner: Stefan Sperling Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Mon Apr 9 17:37:00 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Mon, 9 Apr 2018 17:37:00 +0000 Subject: osmo-bsc[master]: fix a format string error in bts_update_t3122_chan_load() In-Reply-To: References: Message-ID: Patch Set 2: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7687 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I09bb519e68886e650647b1369fd49d1964e76c7e Gerrit-PatchSet: 2 Gerrit-Project: osmo-bsc Gerrit-Branch: master Gerrit-Owner: Stefan Sperling Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Pau Espin Pedrol Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Mon Apr 9 17:37:06 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Mon, 9 Apr 2018 17:37:06 +0000 Subject: openbsc[master]: fix a format string error in bts_update_t3122_chan_load() In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7693 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Ia29feec023117734e4f50ae3487871e715821fed Gerrit-PatchSet: 1 Gerrit-Project: openbsc Gerrit-Branch: master Gerrit-Owner: Stefan Sperling Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Pau Espin Pedrol Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Mon Apr 9 17:37:08 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Mon, 9 Apr 2018 17:37:08 +0000 Subject: [MERGED] openbsc[master]: fix a format string error in bts_update_t3122_chan_load() In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: fix a format string error in bts_update_t3122_chan_load() ...................................................................... fix a format string error in bts_update_t3122_chan_load() In a debug log message, an unsigned 64-bit value was printed with %lu but it should be printed with PRIu64 from inttypes.h instead. Port of osmo-bsc commit 5b6aa650f1a6df22ec99797bd3635ea791998a88 https://gerrit.osmocom.org/#/c/7687/ Change-Id: Ia29feec023117734e4f50ae3487871e715821fed --- M openbsc/src/libbsc/chan_alloc.c 1 file changed, 2 insertions(+), 1 deletion(-) Approvals: Pau Espin Pedrol: Looks good to me, but someone else must approve Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/openbsc/src/libbsc/chan_alloc.c b/openbsc/src/libbsc/chan_alloc.c index 5fa20af..c4bc949 100644 --- a/openbsc/src/libbsc/chan_alloc.c +++ b/openbsc/src/libbsc/chan_alloc.c @@ -24,6 +24,7 @@ #include #include #include +#include #include #include @@ -607,7 +608,7 @@ /* Log channel load average. */ load = ((used / total) * 100); - LOGP(DRLL, LOGL_DEBUG, "(bts=%d) channel load average is %lu.%.2lu%%\n", + LOGP(DRLL, LOGL_DEBUG, "(bts=%d) channel load average is %"PRIu64".%.2"PRIu64"%%\n", bts->nr, (load & 0xffffff00) >> 8, (load & 0xff) / 10); bts->chan_load_avg = ((load & 0xffffff00) >> 8); OSMO_ASSERT(bts->chan_load_avg <= 100); -- To view, visit https://gerrit.osmocom.org/7693 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: Ia29feec023117734e4f50ae3487871e715821fed Gerrit-PatchSet: 1 Gerrit-Project: openbsc Gerrit-Branch: master Gerrit-Owner: Stefan Sperling Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Pau Espin Pedrol From gerrit-no-reply at lists.osmocom.org Mon Apr 9 17:37:11 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Mon, 9 Apr 2018 17:37:11 +0000 Subject: [MERGED] osmo-bsc[master]: fix a format string error in bts_update_t3122_chan_load() In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: fix a format string error in bts_update_t3122_chan_load() ...................................................................... fix a format string error in bts_update_t3122_chan_load() In a debug log message, an unsigned 64-bit value was printed with %lu but it should be printed with PRIu64 from inttypes.h instead. Change-Id: I09bb519e68886e650647b1369fd49d1964e76c7e --- M src/libbsc/chan_alloc.c 1 file changed, 2 insertions(+), 1 deletion(-) Approvals: Pau Espin Pedrol: Looks good to me, but someone else must approve Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/src/libbsc/chan_alloc.c b/src/libbsc/chan_alloc.c index 284cb21..a08fdee 100644 --- a/src/libbsc/chan_alloc.c +++ b/src/libbsc/chan_alloc.c @@ -24,6 +24,7 @@ #include #include #include +#include #include #include @@ -660,7 +661,7 @@ /* Log channel load average. */ load = ((used / total) * 100); - LOGP(DRLL, LOGL_DEBUG, "(bts=%d) channel load average is %lu.%.2lu%%\n", + LOGP(DRLL, LOGL_DEBUG, "(bts=%d) channel load average is %"PRIu64".%.2"PRIu64"%%\n", bts->nr, (load & 0xffffff00) >> 8, (load & 0xff) / 10); bts->chan_load_avg = ((load & 0xffffff00) >> 8); OSMO_ASSERT(bts->chan_load_avg <= 100); -- To view, visit https://gerrit.osmocom.org/7687 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: I09bb519e68886e650647b1369fd49d1964e76c7e Gerrit-PatchSet: 2 Gerrit-Project: osmo-bsc Gerrit-Branch: master Gerrit-Owner: Stefan Sperling Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Pau Espin Pedrol From jenkins at lists.osmocom.org Mon Apr 9 17:37:55 2018 From: jenkins at lists.osmocom.org (jenkins at lists.osmocom.org) Date: Mon, 9 Apr 2018 17:37:55 +0000 (UTC) Subject: =?UTF-8?Q?Build_failed_in_Jenkins:_master-osmo-gmr_=C2=BB_a1=3Ddefau?= =?UTF-8?Q?lt,a2=3Ddefault,a3=3Ddefault,osmocom-master-debian9_#349?= Message-ID: <809358727.196.1523295475084.JavaMail.jenkins@jenkins.osmocom.org> See ------------------------------------------ Started by upstream project "master-osmo-gmr" build number 349 originally caused by: Started by upstream project "master-libosmocore" build number 199 originally caused by: Started by an SCM change Building remotely on build2-deb9build-ansible (ttcn3 osmo-gsm-tester-build osmocom-gerrit-debian9 osmocom-master-debian9 coverity) in workspace > git rev-parse --is-inside-work-tree # timeout=10 Fetching changes from the remote Git repository > git config remote.origin.url git://git.osmocom.org/osmo-gmr # timeout=10 Fetching upstream changes from git://git.osmocom.org/osmo-gmr > git --version # timeout=10 > git fetch --tags --progress git://git.osmocom.org/osmo-gmr +refs/heads/*:refs/remotes/origin/* Checking out Revision adb8cc6aa9453dfc339de53ae641067136a031ec (refs/remotes/origin/master) > git config core.sparsecheckout # timeout=10 > git checkout -f adb8cc6aa9453dfc339de53ae641067136a031ec Commit message: "Add contrib/jenkins.sh script, like other osmo-* repositories" > git rev-list --no-walk adb8cc6aa9453dfc339de53ae641067136a031ec # timeout=10 [osmocom-master-debian9] $ /bin/sh -xe /tmp/jenkins4539616154744402206.sh + ./contrib/jenkins.sh + base= + deps= + inst= + export deps inst + osmo-clean-workspace.sh + chmod -R +w . + git checkout -f HEAD + git clean -dxf -e -e layer1-headers Skipping repository deps/libosmocore + [ -d ] + git -C checkout -f HEAD error: pathspec 'HEAD' did not match any file(s) known to git. Build step 'Execute shell' marked build as failure [WARNINGS]Skipping publisher since build result is FAILURE From gerrit-no-reply at lists.osmocom.org Mon Apr 9 17:38:04 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Mon, 9 Apr 2018 17:38:04 +0000 Subject: osmo-msc[master]: DTAP: Ensure proper DLCI is used in MSC-originated DTAP In-Reply-To: References: Message-ID: Patch Set 2: Verified+1 -- To view, visit https://gerrit.osmocom.org/7690 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: If511b20f52575054cab1346d99a8cb68d827fdbf Gerrit-PatchSet: 2 Gerrit-Project: osmo-msc Gerrit-Branch: master Gerrit-Owner: Harald Welte Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Mon Apr 9 17:38:51 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Mon, 9 Apr 2018 17:38:51 +0000 Subject: osmo-bsc[master]: fix initialization of acc ramping In-Reply-To: References: Message-ID: Patch Set 3: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7691 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Ib7d99c9d3d5d424e21bb7710f719c42f9aef3e95 Gerrit-PatchSet: 3 Gerrit-Project: osmo-bsc Gerrit-Branch: master Gerrit-Owner: Stefan Sperling Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Pau Espin Pedrol Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Mon Apr 9 17:38:53 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Mon, 9 Apr 2018 17:38:53 +0000 Subject: openbsc[master]: fix initialization of acc ramping In-Reply-To: References: Message-ID: Patch Set 2: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7692 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I5834fd953e65b8453dee0a7751d5a4cae12be83a Gerrit-PatchSet: 2 Gerrit-Project: openbsc Gerrit-Branch: master Gerrit-Owner: Stefan Sperling Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Pau Espin Pedrol Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Mon Apr 9 17:38:54 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Mon, 9 Apr 2018 17:38:54 +0000 Subject: [MERGED] openbsc[master]: fix initialization of acc ramping In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: fix initialization of acc ramping ...................................................................... fix initialization of acc ramping Remove a redundant call to acc_ramp_init() during bootstrap_bts(). ACC ramping state is already initialized during VTY config parsing, and bootstrap_bts() accidentally disabled ACC ramping again even if it was enabled in the configuration. This bug was introduced in last-minute refactoring during review of https://gerrit.osmocom.org/#/c/6324/ when the acc_ramping_enabled flag was moved from struct gsm_bts to the acc_ramp structure itself. Also remove an acc_ramp_init() call in bootstrap_rsl(). It is no longer needed as it serves no purpose other than initializing the bitmasks of barred ACCs. To ensure that ACC ramping configuration provided to the BTS via system information stays correct, we move the call to acc_ramp_start(), which has the same effect on barred ACCs, further up. Port of osmo-bsc commit f34fb4828249eab44b4515e0e54b3ee0491d0051 Fixes: 8469818e33ef81e9f707a0c4dd13d7b91ecf83f5 Related: OS#2591 Change-Id: I5834fd953e65b8453dee0a7751d5a4cae12be83a --- M openbsc/src/libbsc/bsc_init.c 1 file changed, 4 insertions(+), 4 deletions(-) Approvals: Pau Espin Pedrol: Looks good to me, but someone else must approve Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/openbsc/src/libbsc/bsc_init.c b/openbsc/src/libbsc/bsc_init.c index 9389c43..6147257 100644 --- a/openbsc/src/libbsc/bsc_init.c +++ b/openbsc/src/libbsc/bsc_init.c @@ -321,6 +321,9 @@ rsl_nokia_si_begin(trx); } + /* Configure ACC ramping before sending system information to BTS. */ + if (acc_ramp_is_enabled(&trx->bts->acc_ramp)) + acc_ramp_start(&trx->bts->acc_ramp); gsm_bts_trx_set_system_infos(trx); if (trx->bts->type == GSM_BTS_TYPE_NOKIA_SITE) { @@ -331,9 +334,6 @@ for (i = 0; i < ARRAY_SIZE(trx->ts); i++) generate_ma_for_ts(&trx->ts[i]); - - if (acc_ramp_is_enabled(&trx->bts->acc_ramp)) - acc_ramp_start(&trx->bts->acc_ramp); } /* Callback function to be called every time we receive a signal from INPUT */ @@ -521,7 +521,7 @@ bts->chan_load_samples_idx = 0; - acc_ramp_init(&bts->acc_ramp, false, bts); + /* ACC ramping is initialized from vty/config */ /* Initialize the BTS state */ gsm_bts_mo_reset(bts); -- To view, visit https://gerrit.osmocom.org/7692 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: I5834fd953e65b8453dee0a7751d5a4cae12be83a Gerrit-PatchSet: 3 Gerrit-Project: openbsc Gerrit-Branch: master Gerrit-Owner: Stefan Sperling Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Pau Espin Pedrol From gerrit-no-reply at lists.osmocom.org Mon Apr 9 17:38:56 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Mon, 9 Apr 2018 17:38:56 +0000 Subject: [MERGED] osmo-bsc[master]: fix initialization of acc ramping In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: fix initialization of acc ramping ...................................................................... fix initialization of acc ramping Remove a redundant call to acc_ramp_init() during bootstrap_bts(). ACC ramping state is already initialized during VTY config parsing, and bootstrap_bts() accidentally disabled ACC ramping again even if it was enabled in the configuration. This bug was introduced in last-minute refactoring during review of https://gerrit.osmocom.org/#/c/6324/ when the acc_ramping_enabled flag was moved from struct gsm_bts to the acc_ramp structure itself. Also remove an acc_ramp_init() call in bootstrap_rsl(). It is no longer needed as it serves no purpose other than initializing the bitmasks of barred ACCs. To ensure that ACC ramping configuration provided to the BTS via system information stays correct, we move the call to acc_ramp_start(), which has the same effect on barred ACCs, further up. Change-Id: Ib7d99c9d3d5d424e21bb7710f719c42f9aef3e95 Fixes: 6442e4327b1100ecfed7a242e397ac37b7529bea Related: OS#2591 --- M src/libbsc/bsc_init.c 1 file changed, 4 insertions(+), 10 deletions(-) Approvals: Pau Espin Pedrol: Looks good to me, but someone else must approve Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/src/libbsc/bsc_init.c b/src/libbsc/bsc_init.c index ba8b8e6..d1173e0 100644 --- a/src/libbsc/bsc_init.c +++ b/src/libbsc/bsc_init.c @@ -332,16 +332,13 @@ trx->bts->location_area_code, trx->bts->cell_identity, trx->bts->bsic); - /* - * Re-initialize ACC ramping to ensure ACCs are barred/allowed - * according to our current VTY configuration. - */ - acc_ramp_init(&trx->bts->acc_ramp, acc_ramp_is_enabled(&trx->bts->acc_ramp), trx->bts); - if (trx->bts->type == GSM_BTS_TYPE_NOKIA_SITE) { rsl_nokia_si_begin(trx); } + /* Configure ACC ramping before sending system information to BTS. */ + if (acc_ramp_is_enabled(&trx->bts->acc_ramp)) + acc_ramp_start(&trx->bts->acc_ramp); gsm_bts_trx_set_system_infos(trx); if (trx->bts->type == GSM_BTS_TYPE_NOKIA_SITE) { @@ -354,9 +351,6 @@ generate_ma_for_ts(&trx->ts[i]); dyn_ts_init(&trx->ts[i]); } - - if (acc_ramp_is_enabled(&trx->bts->acc_ramp)) - acc_ramp_start(&trx->bts->acc_ramp); } /* Callback function to be called every time we receive a signal from INPUT */ @@ -539,7 +533,7 @@ bts->chan_load_samples_idx = 0; - acc_ramp_init(&bts->acc_ramp, false, bts); + /* ACC ramping is initialized from vty/config */ /* Initialize the BTS state */ gsm_bts_mo_reset(bts); -- To view, visit https://gerrit.osmocom.org/7691 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: Ib7d99c9d3d5d424e21bb7710f719c42f9aef3e95 Gerrit-PatchSet: 4 Gerrit-Project: osmo-bsc Gerrit-Branch: master Gerrit-Owner: Stefan Sperling Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Pau Espin Pedrol From gerrit-no-reply at lists.osmocom.org Mon Apr 9 17:40:06 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Mon, 9 Apr 2018 17:40:06 +0000 Subject: osmo-msc[master]: libmsc/ussd.c: cosmetic: correct logging level In-Reply-To: References: Message-ID: Patch Set 2: My point is that we're actually reporting a parser error here, not an "unhandled message". "unhandled" sounds to me like "unhandled because there's no USSD code present". -- To view, visit https://gerrit.osmocom.org/7675 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: If6c270fae54ce79c2708c99d7762ce6ff71f43d9 Gerrit-PatchSet: 2 Gerrit-Project: osmo-msc Gerrit-Branch: master Gerrit-Owner: Vadim Yanitskiy Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Vadim Yanitskiy Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Mon Apr 9 17:41:10 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Mon, 9 Apr 2018 17:41:10 +0000 Subject: osmo-msc[master]: libmsc/ussd.c: cosmetic: correct logging level In-Reply-To: References: Message-ID: Patch Set 2: > The MS is getting rejected in such cases. what do you mean with "the MS is rejected"? do we send a proper error message, as required by the relevant spec (typically the "procedures" part) in case of the MS sending a message the MSC doesn't understand? -- To view, visit https://gerrit.osmocom.org/7675 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: If6c270fae54ce79c2708c99d7762ce6ff71f43d9 Gerrit-PatchSet: 2 Gerrit-Project: osmo-msc Gerrit-Branch: master Gerrit-Owner: Vadim Yanitskiy Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Vadim Yanitskiy Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Mon Apr 9 17:41:21 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Mon, 9 Apr 2018 17:41:21 +0000 Subject: [MERGED] osmo-ttcn3-hacks[master]: update expected HLR test results to prevent unexpected 'pass' In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: update expected HLR test results to prevent unexpected 'pass' ...................................................................... update expected HLR test results to prevent unexpected 'pass' With https://gerrit.osmocom.org/#/c/7685/ the test TC_vty_msisdn_isd is now passing. Update expected log output accordingly. Change-Id: Ie8cfbef5a0adcb927917b0623f89309479a60001 Depends: Iffe1d7afb9fc7dbae542f70bbf5391ddc08a14b4 Related: OS#2785 --- M hlr/expected-results.log 1 file changed, 4 insertions(+), 9 deletions(-) Approvals: Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/hlr/expected-results.log b/hlr/expected-results.log index be8000c..4d95479 100644 --- a/hlr/expected-results.log +++ b/hlr/expected-results.log @@ -1,8 +1,8 @@ - - + + Unexpected SAI ERROR Cause - HLR_Tests.ttcn:558 HLR_Tests control part + HLR_Tests.ttcn:562 HLR_Tests control part HLR_Tests.ttcn:364 TC_gsup_sai_err_invalid_imsi testcase @@ -11,12 +11,7 @@ - - Timeout waiting for ISD.req - HLR_Tests.ttcn:564 HLR_Tests control part - HLR_Tests.ttcn:485 TC_vty_msisdn_isd testcase - - + -- To view, visit https://gerrit.osmocom.org/7686 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: Ie8cfbef5a0adcb927917b0623f89309479a60001 Gerrit-PatchSet: 3 Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Owner: Stefan Sperling Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder From jenkins at lists.osmocom.org Mon Apr 9 17:41:24 2018 From: jenkins at lists.osmocom.org (jenkins at lists.osmocom.org) Date: Mon, 9 Apr 2018 17:41:24 +0000 (UTC) Subject: =?UTF-8?Q?Jenkins_build_is_back_to_norm?= =?UTF-8?Q?al_:_master-osmo-bts_=C2=BB_lc15,or?= =?UTF-8?Q?igin/nrw/litecell15-next,default,osmocom-master-debian9_#488?= In-Reply-To: <412538316.193.1523289870679.JavaMail.jenkins@jenkins.osmocom.org> References: <412538316.193.1523289870679.JavaMail.jenkins@jenkins.osmocom.org> Message-ID: <2121706190.197.1523295684132.JavaMail.jenkins@jenkins.osmocom.org> See From gerrit-no-reply at lists.osmocom.org Mon Apr 9 17:41:50 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Mon, 9 Apr 2018 17:41:50 +0000 Subject: osmo-msc[master]: libmsc/gsm_04_80.c: drop unused 'in_msg' argument In-Reply-To: References: Message-ID: Patch Set 2: Code-Review+1 -- To view, visit https://gerrit.osmocom.org/7674 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I4248ebf8626d3f7f0bf273fd20cc4f64e979938b Gerrit-PatchSet: 2 Gerrit-Project: osmo-msc Gerrit-Branch: master Gerrit-Owner: Vadim Yanitskiy Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Neels Hofmeyr Gerrit-Reviewer: Vadim Yanitskiy Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Mon Apr 9 18:02:45 2018 From: gerrit-no-reply at lists.osmocom.org (Vadim Yanitskiy) Date: Mon, 9 Apr 2018 18:02:45 +0000 Subject: osmo-msc[master]: libmsc/ussd.c: cosmetic: correct logging level In-Reply-To: References: Message-ID: Patch Set 2: > My point is that we're actually reporting a parser error here, not > an "unhandled message". "unhandled" sounds to me like "unhandled > because there's no USSD code present". I am not the author of the original logging message. As I pointed out, the gsm0480_decode_ss_request() may return 1 either in case of parsing error, either in case if there's no USSD code present, either in case of any other internal API problem :/ The main idea of this change is just to make such cases *visible* for the OsmoMSC user. Usually, 'error' logging level is used, so an USSD-request could be rejected without any traces in the logging output. -- To view, visit https://gerrit.osmocom.org/7675 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: If6c270fae54ce79c2708c99d7762ce6ff71f43d9 Gerrit-PatchSet: 2 Gerrit-Project: osmo-msc Gerrit-Branch: master Gerrit-Owner: Vadim Yanitskiy Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Vadim Yanitskiy Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Mon Apr 9 18:08:56 2018 From: gerrit-no-reply at lists.osmocom.org (Vadim Yanitskiy) Date: Mon, 9 Apr 2018 18:08:56 +0000 Subject: osmo-msc[master]: libmsc/ussd.c: cosmetic: correct logging level In-Reply-To: References: Message-ID: Patch Set 2: > > The MS is getting rejected in such cases. > > what do you mean with "the MS is rejected"? I mean that a GSM 04.80 message with REJECT component is sent. > do we send a proper > error message, as required by the relevant spec (typically the > "procedures" part) in case of the MS sending a message the MSC > doesn't understand? At the moment, we don't. The hard-coded GSM_0480_GEN_PROB_CODE_UNRECOGNISED problem code is always sent. I am going to add an argument to this function in order to allow specifying required problem code. But this is the topic for a separate change. -- To view, visit https://gerrit.osmocom.org/7675 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: If6c270fae54ce79c2708c99d7762ce6ff71f43d9 Gerrit-PatchSet: 2 Gerrit-Project: osmo-msc Gerrit-Branch: master Gerrit-Owner: Vadim Yanitskiy Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Vadim Yanitskiy Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Mon Apr 9 18:15:57 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Mon, 9 Apr 2018 18:15:57 +0000 Subject: [PATCH] osmo-ttcn3-hacks[master]: WIP: SMPP codec for TITAN Message-ID: Review at https://gerrit.osmocom.org/7695 WIP: SMPP codec for TITAN Change-Id: Ib1952ffa0cbc915ab4c088da03fec2da4258b47c --- A library/SMPP_Types.ttcn 1 file changed, 520 insertions(+), 0 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-ttcn3-hacks refs/changes/95/7695/1 diff --git a/library/SMPP_Types.ttcn b/library/SMPP_Types.ttcn new file mode 100644 index 0000000..45bca92 --- /dev/null +++ b/library/SMPP_Types.ttcn @@ -0,0 +1,520 @@ +module SMPP_Types { + +import from General_Types all; +import from Osmocom_Types all; + +type record SMPP_PDU { + /* Header */ + uint32_t cmd_len, + OCT4 cmd_id, + SMPP_CmdStatus cmd_status, + uint32_t seq_nr, + /* Mandatory part (non-TLV) */ + SMPP_MandPars mand optional, + /* Optional part (TLV) */ + SMPP_TLVs opt optional +} with { + variant (cmd_len) "LENGTHTO(cmd_len,cmd_id,cmd_status,seq_nr,mand,opt)" + variant (mand) "CROSSTAG( + bind_transmitter, cmd_id = SMPP_CMD_BIND_TRANSMITTER; + bind_transmitter_resp, cmd_id = SMPP_CMD_BIND_TRANSMITTER_RESP; + bind_receiver, cmd_id = SMPP_CMD_BIND_RECEIVER; + bind_receiver_resp, cmd_id = SMPP_CMD_BIND_RECEIVER_RESP; + bind_transceiver, cmd_id = SMPP_CMD_BIND_TRANSCEIVER; + bind_transceiver_resp, cmd_id = SMPP_CMD_BIND_TRANSCEIVER_RESP; + outbind, cmd_id = SMPP_CMD_OUTBIND; + submit_sm, cmd_id = SMPP_CMD_SUBMIT_SM; + submit_sm_resp, cmd_id = SMPP_CMD_SUBMIT_SM_RESP; + deliver_sm, cmd_id = SMPP_CMD_DELIVER_SM; + deliver_sm_resp, cmd_id = SMPP_CMD_DELIVER_SM_RESP; + alert_notif, cmd_id = SMPP_CMD_ALERT_NOTIFICATION; + )" +} + + +type union SMPP_MandPars { + SMPP_Bind_MandPars bind_transmitter, + SMPP_BindResp_MandPars bind_transmitter_resp, + SMPP_Bind_MandPars bind_receiver, + SMPP_BindResp_MandPars bind_receiver_resp, + SMPP_Bind_MandPars bind_transceiver, + SMPP_BindResp_MandPars bind_transceiver_resp, + SMPP_Outbind_MandPars outbind, + SMPP_SubmitSM_MandPars submit_sm, + SMPP_SubmitSMResp_MandPars submit_sm_resp, + /* FIXME */ + SMPP_DeliverSM_MandPars deliver_sm, + SMPP_DeliverSMResp_MandPars deliver_sm_resp, + /* FIXME */ + SMPP_AlertNotif_MandPars alert_notif +}; + +/* 4.1.1, 4.1.3, 4.1.5 */ +type record SMPP_Bind_MandPars { + COctetString system_id, + COctetString password, + COctetString system_type, + OCT1 interface_version, + SMPP_TON addr_ton, + SMPP_NPI addr_npi, + COctetString addr_range +} + +/* 4.1.2, 4.1.4, 4.1.6 */ +type record SMPP_BindResp_MandPars { + COctetString system_id +} + +/* 4.1.7 */ +type record SMPP_Outbind_MandPars { + COctetString system_id, + COctetString password +} + +/* 4.4.1 Submit SM */ +type record SMPP_SubmitSM_MandPars { + COctetString service_type, + SMPP_TON source_addr_ton, + SMPP_NPI source_addr_npi, + COctetString source_addr, + SMPP_TON dest_addr_ton, + SMPP_NPI dest_addr_npi, + COctetString dest_addr, + OCT1 esm_class, + OCT1 protocol_id, + OCT1 priority_flag, + COctetString schedule_delivery_time, + COctetString validity_period, + OCT1 registered_delivery, + SMPP_DCS data_coding, + OCT1 sm_default_msg_id, + uint8_t sm_length, + octetstring short_message +} with { variant (sm_length) "LENGTHTO(short_message)" }; + +/* 4.4.2 */ +type record SMPP_SubmitSMResp_MandPars { + COctetString message_id +} + +/* 4.6.1 */ +type record SMPP_DeliverSM_MandPars { + COctetString service_type, + SMPP_TON source_addr_ton, + SMPP_NPI source_addr_npi, + COctetString source_addr, + SMPP_TON dest_addr_ton, + SMPP_NPI dest_addr_npi, + COctetString dest_addr, + OCT1 esm_class, + OCT1 protocol_id, + OCT1 priority_flag, + COctetString schedule_delivery_time, + COctetString validity_period, + OCT1 registered_delivery, + OCT1 replace_if_present_flag, + SMPP_DCS data_coding, + OCT1 sm_default_msg_id, + uint8_t sm_length, + octetstring short_message +} with { variant (sm_length) "LENGTHTO(short_message)" }; + +/* 4.6.2 */ +type record SMPP_DeliverSMResp_MandPars { + COctetString message_id +} + +/* 4.12.1 */ +type record SMPP_AlertNotif_MandPars { + SMPP_TON source_addr_ton, + SMPP_NPI source_addr_npi, + COctetString source_addr, + SMPP_TON esme_addr_ton, + SMPP_NPI esme_addr_npi, + COctetString esme_addr +} + + +/* 5.1.2.1 */ +/* +type enumerated SMPP_CmdId { + SMPP_CMD_GENERIC_NACK ('00000000'O), + SMPP_CMD_BIND_RECEIVER ('00000001'O), + SMPP_CMD_BIND_RECEIVER_RESP ('80000001'O), + SMPP_CMD_BIND_TRANSMITTER ('00000002'O), + SMPP_CMD_BIND_TRANSMITTER_RESP ('80000002'O), + SMPP_CMD_QUERY_SM ('00000003'O), + SMPP_CMD_QUERY_SM_RESP ('80000003'O), + SMPP_CMD_SUBMIT_SM ('00000004'O), + SMPP_CMD_SUBMIT_SM_RESP ('80000004'O), + SMPP_CMD_DELIVER_SM ('00000005'O), + SMPP_CMD_DELIVER_SM_RESP ('80000005'O), + SMPP_CMD_UNBIND ('00000006'O), + SMPP_CMD_UNBIND_RESP ('80000006'O), + SMPP_CMD_REPLACE_SM ('00000007'O), + SMPP_CMD_REPLACE_SM_RESP ('80000007'O), + SMPP_CMD_CANCEL_SM ('00000008'O), + SMPP_CMD_CANCEL_SM_RESP ('80000008'O), + SMPP_CMD_BIND_TRANSCEIVER ('00000009'O), + SMPP_CMD_BIND_TRANSCEIVER_RESP ('80000009'O), + + SMPP_CMD_OUTBIND ('0000000B'O), + + SMPP_CMD_BIND_ENQUIRE_LINK ('00000015'O), + SMPP_CMD_BIND_ENQUIRE_LINK_RESP ('80000015'O), + + SMPP_CMD_SUBMIT_MULTI ('00000021'O), + SMPP_CMD_SUBMIT_MULTI_RESP ('80000021'O), + + SMPP_CMD_ALERT_NOTIFICATION ('00000102'O), + + SMPP_CMD_DATA_SM ('00000103'O), + SMPP_CMD_DATA_SM_RESP ('80000103'O) +} with { variant "FIELDLENGTH(32)" }; +*/ +const OCT4 SMPP_CMD_GENERIC_NACK := '80000000'O; +const OCT4 SMPP_CMD_BIND_RECEIVER := '00000001'O; +const OCT4 SMPP_CMD_BIND_RECEIVER_RESP := '80000001'O; +const OCT4 SMPP_CMD_BIND_TRANSMITTER := '00000002'O; +const OCT4 SMPP_CMD_BIND_TRANSMITTER_RESP := '80000002'O; +const OCT4 SMPP_CMD_QUERY_SM := '00000003'O; +const OCT4 SMPP_CMD_QUERY_SM_RESP := '80000003'O; +const OCT4 SMPP_CMD_SUBMIT_SM := '00000004'O; +const OCT4 SMPP_CMD_SUBMIT_SM_RESP := '80000004'O; +const OCT4 SMPP_CMD_DELIVER_SM := '00000005'O; +const OCT4 SMPP_CMD_DELIVER_SM_RESP := '80000005'O; +const OCT4 SMPP_CMD_UNBIND := '00000006'O; +const OCT4 SMPP_CMD_UNBIND_RESP := '80000006'O; +const OCT4 SMPP_CMD_REPLACE_SM := '00000007'O; +const OCT4 SMPP_CMD_REPLACE_SM_RESP := '80000007'O; +const OCT4 SMPP_CMD_CANCEL_SM := '00000008'O; +const OCT4 SMPP_CMD_CANCEL_SM_RESP := '00000008'O; +const OCT4 SMPP_CMD_BIND_TRANSCEIVER := '00000009'O; +const OCT4 SMPP_CMD_BIND_TRANSCEIVER_RESP := '80000009'O; +const OCT4 SMPP_CMD_OUTBIND := '0000000B'O; +const OCT4 SMPP_CMD_ENQUIRE_LINK := '00000015'O; +const OCT4 SMPP_CMD_ENQUIRE_LINK_RESP := '80000015'O; +const OCT4 SMPP_CMD_SUBMIT_MULTI := '00000021'O; +const OCT4 SMPP_CMD_SUBMIT_MULTI_RESP := '80000021'O; +const OCT4 SMPP_CMD_ALERT_NOTIFICATION := '00000102'O; +const OCT4 SMPP_CMD_DATA_SM := '00000103'O; +const OCT4 SMPP_CMD_DATA_SM_RESP := '80000103'O; + +/* 5.1.3 */ +type enumerated SMPP_CmdStatus { + ESME_ROK ('00000000'O), + ESME_RINVMSGLEN ('00000001'O), + ESME_RINVCMDLEN ('00000002'O), + ESME_RINVCMDID ('00000003'O), + ESME_RINVBNDSTS ('00000004'O), + ESME_RALYBND ('00000005'O), + ESME_RINVPRTFLG ('00000006'O), + ESME_RINVREGDLVFLG ('00000007'O), + ESME_RSYSERR ('00000008'O), + ESME_RINVSRCADR ('0000000A'O), + ESME_RINVDSTADR ('0000000B'O), + ESME_RINVMSGID ('0000000C'O), + ESME_RBINDFAIL ('0000000D'O), + ESME_RINVPASWD ('0000000E'O), + ESME_RINVSYSID ('0000000F'O), + ESME_RCANCELFAIL ('00000011'O), + ESME_RREPLACEFAIL ('00000013'O), + ESME_RMSGQFUL ('00000014'O), + ESME_RINVSERTYP ('00000015'O), + ESME_RINVNUMDESTS ('00000033'O), + ESME_RINVDLNAME ('00000034'O), + ESME_RINVDESTFLAG ('00000040'O), + ESME_RINVSUBREP ('00000042'O), + ESME_RINVESMCLASS ('00000043'O), + ESME_RCNTSUBDL ('00000044'O), + ESME_RSUBMITFAIL ('00000045'O), + ESME_RINVSRCTON ('00000048'O), + ESME_RINVSRCNPI ('00000049'O), + ESME_RINVDSTTON ('00000050'O), + ESME_RINVDSTNPI ('00000051'O), + ESME_RINVSYSTYP ('00000053'O), + ESME_RINVREPFLAG ('00000054'O), + ESME_RINVNUMMSGS ('00000055'O), + ESME_RTHROTTLED ('00000058'O), + ESME_RINVSCHED ('00000061'O), + ESME_RINVEXPIRY ('00000062'O), + ESME_RINVDFTMSGID ('00000063'O), + ESME_RX_T_APPN ('00000064'O), + ESME_RX_P_APPN ('00000065'O), + ESME_RX_R_APPN ('00000066'O), + ESME_RQUERYFAIL ('00000067'O), + ESME_RINVOPTPARSTREAM ('000000C0'O), + ESME_ROPTPARNOTALLWD ('000000C1'O), + ESME_RINVPARLEN ('000000C2'O), + ESME_RMISSINGOPTPARAM ('000000C3'O), + ESME_RINVOPTPARAMVAL ('000000C4'O), + ESME_RDELIVERYFAILURE ('000000FE'O), + ESME_RUNKNOWNERR ('000000FF'O) + +} with { variant "FIELDLENGTH(32)" }; + +/* 5.2.4 */ +const OCT1 SMPP_VERSION_34 := '34'O; + +/* 5.2.5 */ +type enumerated SMPP_TON { + SMPP_TON_UNKNOWN ('00000000'B), + SMPP_TON_INTERNATIONAL ('00000001'O), + SMPP_TON_NATIONAL ('00000010'O), + SMPP_TON_NETWORK_SPECIFIC ('00000011'O), + SMPP_TON_SUBSCRIBER_NUMBER ('00000100'O), + SMPP_TON_ABBREVIATED ('00000110'O) +} with { variant "FIELDLENGTH(8)" }; + +/* 5.2.6 */ +type enumerated SMPP_NPI { + SMPP_NPI_UNKNOWN ('00000000'O), + SMPP_NPI_ISDN_E164 ('00000001'O), + SMPP_NPI_DATA_X121 ('00000011'O), + SMPP_NPI_TELEX_F69 ('00000100'O), + SMPP_NPI_MOBILE_E212 ('00000110'O), + SMPP_NPI_NATIONAL ('00001000'O), + SMPP_NPI_PRIVATE ('00001001'O), + SMPP_NPI_ERMES ('00001010'O), + SMPP_NPI_INTERNET ('00001110'O), + SMPP_NPI_WAP_CLIENT_ID ('00010010'O) +} with { variant "FIELDLENGTH(8)" }; + +/* 5.2.19 */ +type enumerated SMPP_DCS { + SMPP_DCS_SMSC_DEFAULT ('00000000'O), + SMPP_DCS_IA5_ASCII ('00000001'O), + SMPP_DCS_OCTET_UNSPEC_2 ('00000010'O), + SMPP_DCS_LATIN1_8859_1 ('00000011'O), + SMPP_DCS_OCTET_UNSPEC_4 ('00000100'O), + SMPP_DCS_JIS_X0208 ('00000101'O), + SMPP_DCS_CYRILLIC_8859_5 ('00000110'O), + SMPP_DCS_HEBREW_8859_8 ('00000111'O), + SMPP_DCS_UCS2_IEC10646 ('00001000'O), + SMPP_DCS_PICTOGRAM ('00001001'O), + SMPP_DCS_ISO_2022_JP ('00001010'O), + SMPP_DCS_EXT_KANJI_JIS_X0212 ('00001101'O), + SMPP_DCS_KS_C_5601 ('00001110'O) + /* FIXME: GSM MWI / message class */ +} with { variant "FIELDLENGTH(8)" }; + + +/* 5.2.28 */ +type enumerated SMPP_MessageState { + SMPP_MSTATE_ENROUTE (1), + SMPP_MSTATE_DELIVERED (2), + SMPP_MSTATE_EXPIRED (3), + SMPP_MSTATE_DELETED (4), + SMPP_MSTATE_UNDELIVERABLE (5), + SMPP_MSTATE_ACCEPTED (6), + SMPP_MSTATE_UNKNOWN (7), + SMPP_MSTATE_REJECTED (8) +} with { variant "FIELDLENGTH(8)" }; + +/* 5.3.2 */ +type enumerated SMPP_IEI { + SMPP_IEI_dest_addr_subunit ('0005'O), + SMPP_IEI_dest_network_type ('0006'O), + SMPP_IEI_dest_bearer_type ('0007'O), + SMPP_IEI_dest_telematics_id ('0008'O), + SMPP_IEI_source_addr_subunit ('000D'O), + SMPP_IEI_source_network_type ('000E'O), + SMPP_IEI_source_bearer_type ('000F'O), + SMPP_IEI_source_telematics_id ('0010'O), + SMPP_IEI_qos_time_to_live ('0017'O), + SMPP_IEI_payload_type ('0019'O), + SMPP_IEI_additional_status_info_text ('001D'O), + SMPP_IEI_receipted_message_id ('001E'O), + SMPP_IEI_ms_msg_wait_facilities ('0030'O), + SMPP_IEI_privacy_indicator ('0201'O), + SMPP_IEI_source_subaddress ('0202'O), + SMPP_IEI_dest_subaddress ('0203'O), + SMPP_IEI_user_message_reference ('0204'O), + SMPP_IEI_user_response_code ('0205'O), + SMPP_IEI_source_port ('020A'O), + SMPP_IEI_destination_port ('020B'O), + SMPP_IEI_sar_msg_ref_num ('020C'O), + SMPP_IEI_language_indicator ('020D'O), + SMPP_IEI_sar_total_segments ('020E'O), + SMPP_IEI_sar_segment_seqnum ('020F'O), + SMPP_IEI_SC_interface_version ('0210'O), + SMPP_IEI_callback_num_pres_ind ('0302'O), + SMPP_IEI_callback_num_atag ('0303'O), + SMPP_IEI_number_of_messages ('0304'O), + SMPP_IEI_callback_num ('0381'O), + SMPP_IEI_dpf_result ('0420'O), + SMPP_IEI_set_dpf ('0421'O), + SMPP_IEI_ms_availability_status ('0422'O), + SMPP_IEI_network_error_code ('0423'O), + SMPP_IEI_message_payload ('0424'O), + SMPP_IEI_delivery_failure_reason ('0425'O), + SMPP_IEI_more_messages_to_send ('0426'O), + SMPP_IEI_message_state ('0427'O), + SMPP_IEI_ussd_service_op ('0501'O), + SMPP_IEI_display_time ('1201'O), + SMPP_IEI_sms_signal ('1203'O), + SMPP_IEI_ms_validity ('1204'O), + SMPP_IEI_alert_on_message_delivery ('130C'O), + SMPP_IEI_its_reply_type ('1380'O), + SMPP_IEI_its_session_info ('1383'O) +} with { variant "FIELDLENGTH(16)" }; + +type record of SMPP_TLV SMPP_TLVs; + +type record SMPP_TLV { + SMPP_IEI tag, + uint16_t len, + SMPP_IE_Body val +} with { + variant (len) "LENGTHTO(val)" + variant (val) "CROSSTAG( + dest_addr_subunit, tag = SMPP_IEI_dest_addr_subunit; + source_addr_subunit, tag = SMPP_IEI_source_addr_subunit; + dest_network_type, tag = SMPP_IEI_dest_network_type; + source_network_type, tag = SMPP_IEI_source_network_type; + dest_bearer_type, tag = SMPP_IEI_dest_bearer_type; + source_bearer_type, tag = SMPP_IEI_source_bearer_type; + dest_telematics_id, tag = SMPP_IEI_dest_telematics_id; + source_telematics_id, tag = SMPP_IEI_source_telematics_id; + qos_time_to_live, tag = SMPP_IEI_qos_time_to_live; + payload_type, tag = SMPP_IEI_payload_type; + additional_status_info_text, tag = SMPP_IEI_additional_status_info_text; + receipted_message_id, tag = SMPP_IEI_receipted_message_id; + ms_msg_wait_facilities, tag = SMPP_IEI_ms_msg_wait_facilities; + privacy_indicator, tag = SMPP_IEI_privacy_indicator; + source_subaddress, tag = SMPP_IEI_source_subaddress; + dest_subaddress, tag = SMPP_IEI_dest_subaddress; + user_message_reference, tag = SMPP_IEI_user_message_reference; + user_response_code, tag = SMPP_IEI_user_response_code; + language_indicator, tag = SMPP_IEI_language_indicator; + source_port, tag = SMPP_IEI_source_port; + destination_port, tag = SMPP_IEI_destination_port; + sar_msg_ref_num, tag = SMPP_IEI_sar_msg_ref_num; + sar_total_segments, tag = SMPP_IEI_sar_total_segments; + sc_interface_version, tag = SMPP_IEI_SC_interface_version; + display_time, tag = SMPP_IEI_display_time; + ms_validity, tag = SMPP_IEI_ms_validity; + dpf_result, tag = SMPP_IEI_dpf_result; + set_dpf, tag = SMPP_IEI_set_dpf; + ms_availability_status, tag = SMPP_IEI_ms_availability_status; + message_payload, tag = SMPP_IEI_message_payload; + delivery_failure_reason , tag = SMPP_IEI_delivery_failure_reason; + more_messages_to_send, tag = SMPP_IEI_more_messages_to_send; + message_state, tag = SMPP_IEI_message_state; + callback_num, tag = SMPP_IEI_callback_num; + callback_num_pres_ind, tag = SMPP_IEI_callback_num_pres_ind; + callback_num_atag, tag = SMPP_IEI_callback_num_atag; + number_of_messages, tag = SMPP_IEI_number_of_messages; + sms_signal, tag = SMPP_IEI_sms_signal; + its_reply_type, tag = SMPP_IEI_its_reply_type; + its_session_info, tag = SMPP_IEI_its_session_info; + ussd_service_op, tag = SMPP_IEI_ussd_service_op; + other, OTHERWISE; + )" +}; + +type union SMPP_IE_Body { + SMPP_Subunit dest_addr_subunit, + SMPP_Subunit source_addr_subunit, + SMPP_NetworkType dest_network_type, + SMPP_NetworkType source_network_type, + SMPP_BearerType dest_bearer_type, + SMPP_BearerType source_bearer_type, + uint16_t dest_telematics_id, + uint16_t source_telematics_id, + uint32_t qos_time_to_live, + uint8_t payload_type, + COctetString additional_status_info_text, + COctetString receipted_message_id, + BIT8 ms_msg_wait_facilities, + uint8_t privacy_indicator, + octetstring source_subaddress, + octetstring dest_subaddress, + uint16_t user_message_reference, + uint8_t user_response_code, + uint8_t language_indicator, + uint16_t source_port, + uint16_t destination_port, + uint16_t sar_msg_ref_num, + uint8_t sar_total_segments, + OCT1 sc_interface_version, + uint8_t display_time, + uint8_t ms_validity, + uint8_t dpf_result, + uint8_t set_dpf, + SMPP_MsAvailStatus ms_availability_status, + octetstring message_payload, + uint8_t delivery_failure_reason, + uint8_t more_messages_to_send, + SMPP_MessageState message_state, + octetstring callback_num, + BIT8 callback_num_pres_ind, + octetstring callback_num_atag, + uint8_t number_of_messages, + uint16_t sms_signal, + uint8_t its_reply_type, + OCT2 its_session_info, + OCT1 ussd_service_op, + octetstring other +} + +/* 5.3.2.1 */ +type enumerated SMPP_Subunit { + SMPP_SUBUNIT_UNKNOWN ('00'O), + SMPP_SUBUNIT_MS_DISPLAY ('01'O), + SMPP_SUBUNIT_MOBILE_EQUIPMENT ('02'O), + SMPP_SUBUNIT_SMART_CARD_1 ('03'O), + SMPP_SUBINIT_EXTERNAL_1 ('04'O) +} with { variant "FIELDLENGTH(8)" }; + +/*5.3.2.3 */ +type enumerated SMPP_NetworkType { + SMPP_NETT_UNKNOWN ('00'O), + SMPP_NETT_GSM ('01'O), + SMPP_NETT_ANSI136_TDMA ('02'O), + SMPP_NETT_IS95_CDMA ('03'O), + SMPP_NETT_PDC ('04'O), + SMPP_NETT_PHS ('05'O), + SMPP_NETT_IDEN ('06'O), + SMPP_NETT_AMPS ('07'O), + SMPP_NETT_PAGING ('08'O) +} with { variant "FIELDLENGTH(8)" }; + +/* 6.3.2.5 */ +type enumerated SMPP_BearerType { + SMPP_BEART_UNKNOWN ('00'O), + SMPP_BEART_SMS ('01'O), + SMPP_BEART_CSD ('02'O), + SMPP_BEART_PACKET_DATA ('03'O), + SMPP_BEART_USSD ('04'O), + SMPP_BEART_CDPD ('05'O), + SMPP_BEART_DATATAC ('06'O), + SMPP_BEART_FLEX ('07'O), + SMPP_BEART_CELL_BROADCAST ('08'O) +} with { variant "FIELDLENGTH(8)" }; + + +/* 5.3.2.30 */ +type enumerated SMPP_MsAvailStatus { + SMPP_MS_AVAIL_AVAILABLE ('00'O), + SMPP_MS_AVAIL_DENIED ('01'O), + SMPP_MS_AVAIL_UNAVAILABLE ('02'O) +} with { variant "FIELDLENGTH(8)" }; + +/* 5.3.2.31 */ +type record SMPP_NetErrCode { + SMPP_NetErrCodeType net_type, + uint16_t err_code +} with { variant "" }; +type enumerated SMPP_NetErrCodeType { + SMPP_ERR_NETT_ANSI136 ('01'O), + SMPP_ERR_NETT_IS95 ('02'O), + SMPP_ERR_NETT_GSM ('03'O), + SMPP_ERR_NETT_RESERVED ('04'O) +} with { variant "FIELDLENGTH(8)" }; + + +type octetstring COctetString; /* FIXME: How to express this in "RAW" syntax? */ + + +} with { encode "RAW" }; -- To view, visit https://gerrit.osmocom.org/7695 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Ib1952ffa0cbc915ab4c088da03fec2da4258b47c Gerrit-PatchSet: 1 Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Owner: Harald Welte From gerrit-no-reply at lists.osmocom.org Mon Apr 9 18:15:58 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Mon, 9 Apr 2018 18:15:58 +0000 Subject: [PATCH] osmo-ttcn3-hacks[master]: L3_Templates: Introudce constants for tiFlag Message-ID: Review at https://gerrit.osmocom.org/7696 L3_Templates: Introudce constants for tiFlag ... this makes the code more readable/understandable. Change-Id: Ic06eb2016eb9979b8556366e4a909f3c0336aa92 --- M library/L3_Templates.ttcn M msc/gen_links.sh M msc/regen_makefile.sh 3 files changed, 29 insertions(+), 21 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-ttcn3-hacks refs/changes/96/7696/1 diff --git a/library/L3_Templates.ttcn b/library/L3_Templates.ttcn index a2b872c..3203b0e 100644 --- a/library/L3_Templates.ttcn +++ b/library/L3_Templates.ttcn @@ -19,6 +19,9 @@ import from MobileL3_GMM_SM_Types all; //import from MobileL3_SMS_Types all; +/* TS 24.007 Table 11.3 TI Flag */ +const BIT1 c_TIF_ORIG := '0'B; +const BIT1 c_TIF_REPL := '1'B; type enumerated CmServiceType { CM_TYPE_MO_CALL ('0001'B), @@ -704,7 +707,7 @@ tiOrSkip := { transactionId := { tio := int2bit(tid, 3), - tiFlag := '0'B, + tiFlag := c_TIF_ORIG, tIExtension := omit } } @@ -776,7 +779,7 @@ tiOrSkip := { transactionId := { tio := int2bit(tid, 3), - tiFlag := '0'B, + tiFlag := c_TIF_ORIG, tIExtension := omit } }, @@ -818,7 +821,7 @@ tiOrSkip := { transactionId := { tio := int2bit(tid, 3), - tiFlag := '0'B, + tiFlag := c_TIF_ORIG, tIExtension := omit } }, @@ -890,7 +893,7 @@ tiOrSkip := { transactionId := { tio := int2bit(tid, 3), - tiFlag := '1'B, + tiFlag := c_TIF_REPL, tIExtension := omit } }, @@ -912,7 +915,7 @@ tiOrSkip := { transactionId := { tio := int2bit(tid, 3), - tiFlag := '1'B, + tiFlag := c_TIF_REPL, tIExtension := omit } }, @@ -934,7 +937,7 @@ tiOrSkip := { transactionId := { tio := int2bit(tid, 3), - tiFlag := '1'B, + tiFlag := c_TIF_REPL, tIExtension := omit } }, @@ -958,7 +961,7 @@ tiOrSkip := { transactionId := { tio := int2bit(tid, 3), - tiFlag := '1'B, + tiFlag := c_TIF_REPL, tIExtension := omit } }, @@ -982,7 +985,7 @@ tiOrSkip := { transactionId := { tio := int2bit(tid, 3), - tiFlag := '0'B, + tiFlag := c_TIF_ORIG, tIExtension := omit } }, @@ -1001,7 +1004,7 @@ tiOrSkip := { transactionId := { tio := int2bit(tid, 3), - tiFlag := '0'B, + tiFlag := c_TIF_ORIG, tIExtension := omit } }, @@ -1202,7 +1205,7 @@ tiOrSkip := { transactionId := { tio := int2bit(tid, 3), - tiFlag := '1'B, /* response from destination */ + tiFlag := c_TIF_REPL, /* response from destination */ tIExtension := omit } }, @@ -1231,7 +1234,7 @@ tiOrSkip := { transactionId := { tio := int2bit(tid, 3), - tiFlag := '0'B, /* from originator */ + tiFlag := c_TIF_ORIG, /* from originator */ tIExtension := omit } }, @@ -1887,7 +1890,7 @@ tiOrSkip := { transactionId := { tio := tid, - tiFlag := '0'B, + tiFlag := c_TIF_ORIG, tIExtension := omit } }, @@ -1920,7 +1923,7 @@ tiOrSkip := { transactionId := { tio := tid, - tiFlag := '1'B, + tiFlag := c_TIF_REPL, tIExtension := omit } }, @@ -1945,7 +1948,7 @@ tiOrSkip := { transactionId := { tio := tid, - tiFlag := '1'B, + tiFlag := c_TIF_REPL, tIExtension := omit } }, @@ -1979,7 +1982,7 @@ tiOrSkip := { transactionId := { tio := tid, - tiFlag := '0'B, + tiFlag := c_TIF_ORIG, tIExtension := omit } }, @@ -2012,7 +2015,7 @@ tiOrSkip := { transactionId := { tio := tid, - tiFlag := '1'B, + tiFlag := c_TIF_REPL, tIExtension := omit } }, @@ -2046,7 +2049,7 @@ tiOrSkip := { transactionId := { tio := tid, - tiFlag := '1'B, + tiFlag := c_TIF_REPL, tIExtension := omit } }, @@ -2079,7 +2082,7 @@ tiOrSkip := { transactionId := { tio := tid, - tiFlag := '1'B, + tiFlag := c_TIF_REPL, tIExtension := omit } }, @@ -2101,7 +2104,7 @@ tiOrSkip := { transactionId := { tio := tid, - tiFlag := '0'B, + tiFlag := c_TIF_ORIG, tIExtension := omit } }, @@ -2123,7 +2126,7 @@ tiOrSkip := { transactionId := { tio := tid, - tiFlag := '0'B, + tiFlag := c_TIF_ORIG, tIExtension := omit } }, diff --git a/msc/gen_links.sh b/msc/gen_links.sh index efb3770..6dea043 100755 --- a/msc/gen_links.sh +++ b/msc/gen_links.sh @@ -66,6 +66,11 @@ FILES="TELNETasp_PT.cc TELNETasp_PT.hh TELNETasp_PortType.ttcn" gen_links $DIR $FILES +DIR=$BASEDIR/titan.ProtocolModules.SMPP/src +FILES="SMPP_EncDec.cc SMPP_Types.ttcn" +gen_links $DIR $FILES + + DIR=../library FILES="General_Types.ttcn GSM_Types.ttcn Osmocom_Types.ttcn MNCC_Types.ttcn MNCC_EncDec.cc MNCC_CodecPort.ttcn mncc.h MNCC_Emulation.ttcn Osmocom_VTY_Functions.ttcn Native_Functions.ttcn Native_FunctionDefs.cc " FILES+="IPA_Types.ttcn IPA_Emulation.ttcnpp IPA_CodecPort.ttcn IPA_CodecPort_CtrlFunct.ttcn IPA_CodecPort_CtrlFunctDef.cc GSUP_Types.ttcn GSUP_Emulation.ttcn " diff --git a/msc/regen_makefile.sh b/msc/regen_makefile.sh index c3db4e7..29b3f05 100755 --- a/msc/regen_makefile.sh +++ b/msc/regen_makefile.sh @@ -1,6 +1,6 @@ #!/bin/sh -FILES="*.ttcn *.ttcnpp SCCP_EncDec.cc SCTPasp_PT.cc TCCConversion.cc TCCInterface.cc UD_PT.cc MNCC_EncDec.cc IPL4asp_PT.cc IPL4asp_discovery.cc SDP_EncDec.cc RTP_EncDec.cc IPA_CodecPort_CtrlFunctDef.cc RTP_CodecPort_CtrlFunctDef.cc MGCP_CodecPort_CtrlFunctDef.cc TELNETasp_PT.cc Native_FunctionDefs.cc *.c" +FILES="*.ttcn *.ttcnpp SCCP_EncDec.cc SCTPasp_PT.cc TCCConversion.cc TCCInterface.cc UD_PT.cc MNCC_EncDec.cc IPL4asp_PT.cc IPL4asp_discovery.cc SDP_EncDec.cc RTP_EncDec.cc IPA_CodecPort_CtrlFunctDef.cc RTP_CodecPort_CtrlFunctDef.cc MGCP_CodecPort_CtrlFunctDef.cc TELNETasp_PT.cc Native_FunctionDefs.cc SMPP_EncDec.cc *.c" export CPPFLAGS_TTCN3="-DIPA_EMULATION_MGCP -DIPA_EMULATION_GSUP -DUSE_MTP3_DISTRIBUTOR" -- To view, visit https://gerrit.osmocom.org/7696 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Ic06eb2016eb9979b8556366e4a909f3c0336aa92 Gerrit-PatchSet: 1 Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Owner: Harald Welte From gerrit-no-reply at lists.osmocom.org Mon Apr 9 18:15:58 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Mon, 9 Apr 2018 18:15:58 +0000 Subject: [PATCH] osmo-ttcn3-hacks[master]: msc: generate mobile identity inside f_establish_fully() Message-ID: Review at https://gerrit.osmocom.org/7697 msc: generate mobile identity inside f_establish_fully() This reduces the code duplication in every caller of the function. Change-Id: Iaa071b131a8ff372d70677c8622d227f88e9ea53 --- M msc/BSC_ConnectionHandler.ttcn M msc/MSC_Tests.ttcn 2 files changed, 20 insertions(+), 32 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-ttcn3-hacks refs/changes/97/7697/1 diff --git a/msc/BSC_ConnectionHandler.ttcn b/msc/BSC_ConnectionHandler.ttcn index 62eddf3..73368a2 100644 --- a/msc/BSC_ConnectionHandler.ttcn +++ b/msc/BSC_ConnectionHandler.ttcn @@ -190,9 +190,18 @@ }; /* helper function to fully establish a dedicated channel */ -function f_establish_fully(MobileIdentityLV mi, EstablishType etype := EST_TYPE_MO_CALL) +function f_establish_fully(EstablishType etype := EST_TYPE_MO_CALL) runs on BSC_ConnHdlr { var PDU_ML3_MS_NW l3_info; + var MobileIdentityLV mi; + + /* If we have a TMSI, use TMSI instead of IMSI */ + if (ispresent(g_pars.tmsi)) { + mi := valueof(ts_MI_TMSI_LV(g_pars.tmsi)); + } else { + mi := valueof(ts_MI_IMSI_LV(g_pars.imsi)); + } + select (etype) { case (EST_TYPE_MO_CALL) { l3_info := valueof(ts_CM_SERV_REQ(CM_TYPE_MO_CALL, mi)); @@ -408,7 +417,6 @@ function f_mt_call_establish(inout CallParameters cpars) runs on BSC_ConnHdlr { - var MobileIdentityLV mi; var MNCC_PDU mncc; var MgcpCommand mgcp_cmd; @@ -421,13 +429,7 @@ /* BSC <- MSC: Expect paging. FIXME: By TMSI or not? */ BSSAP.receive(tr_BSSMAP_Paging(g_pars.imsi)); - /* If we have a TMSI, use TMSI instead of IMSI */ - if (ispresent(g_pars.tmsi)) { - mi := valueof(ts_MI_TMSI_LV(g_pars.tmsi)); - } else { - mi := valueof(ts_MI_IMSI_LV(g_pars.imsi)); - } - f_establish_fully(mi, EST_TYPE_PAG_RESP); + f_establish_fully(EST_TYPE_PAG_RESP); /* MS <- MSC: Expect CC SETUP */ BSSAP.receive(tr_PDU_DTAP_MT(tr_ML3_MT_CC_SETUP(cpars.transaction_id, *, cpars.called_party))); @@ -498,21 +500,14 @@ function f_mo_call_establish(inout CallParameters cpars) runs on BSC_ConnHdlr { - var MobileIdentityLV mi; var MNCC_PDU mncc; var MgcpCommand mgcp_cmd; var boolean respond_to_dlcx; - /* If we have a TMSI, use TMSI instead of IMSI */ - if (ispresent(g_pars.tmsi)) { - mi := valueof(ts_MI_TMSI_LV(g_pars.tmsi)); - } else { - mi := valueof(ts_MI_IMSI_LV(g_pars.imsi)); - } if (cpars.emergency) { - f_establish_fully(mi, EST_TYPE_EMERG_CALL); + f_establish_fully(EST_TYPE_EMERG_CALL); } else { - f_establish_fully(mi, EST_TYPE_MO_CALL); + f_establish_fully(EST_TYPE_MO_CALL); } /* Create MNCC and MGCP expect */ @@ -664,18 +659,11 @@ runs on BSC_ConnHdlr { timer T := 1.0; - var MobileIdentityLV mi; var MNCC_PDU mncc; var MgcpCommand mgcp_cmd; var template PDU_ML3_MS_NW dtmf_dtap; - /* If we have a TMSI, use TMSI instead of IMSI */ - if (ispresent(g_pars.tmsi)) { - mi := valueof(ts_MI_TMSI_LV(g_pars.tmsi)); - } else { - mi := valueof(ts_MI_IMSI_LV(g_pars.imsi)); - } - f_establish_fully(mi); + f_establish_fully(); /* Create MNCC and MGCP expect */ f_create_mncc_expect(hex2str(cpars.called_party)); diff --git a/msc/MSC_Tests.ttcn b/msc/MSC_Tests.ttcn index 6ec08bb..503f98b 100644 --- a/msc/MSC_Tests.ttcn +++ b/msc/MSC_Tests.ttcn @@ -1137,7 +1137,7 @@ f_perform_lu(); - f_establish_fully(valueof(ts_MI_IMSI_LV(g_pars.imsi))); + f_establish_fully(); f_expect_clear(); } testcase TC_establish_and_nothing() runs on MTC_CT { @@ -1156,7 +1156,7 @@ f_perform_lu(); - f_establish_fully(valueof(ts_MI_IMSI_LV(g_pars.imsi))); + f_establish_fully(); f_create_mncc_expect(hex2str(cpars.called_party)); f_create_mgcp_expect(ExpectCriteria:{omit,omit,omit}); @@ -1181,7 +1181,7 @@ f_perform_lu(); - f_establish_fully(valueof(ts_MI_IMSI_LV(g_pars.imsi))); + f_establish_fully(); f_create_mncc_expect(hex2str(cpars.called_party)); f_create_mgcp_expect(ExpectCriteria:{omit,omit,omit}); @@ -1220,7 +1220,7 @@ f_perform_lu(); - f_establish_fully(valueof(ts_MI_IMSI_LV(g_pars.imsi))); + f_establish_fully(); f_create_mncc_expect(hex2str(cpars.called_party)); f_create_mgcp_expect(ExpectCriteria:{omit,omit,omit}); @@ -1312,7 +1312,7 @@ /* MSC->BSC: expect PAGING from MSC */ BSSAP.receive(tr_BSSMAP_Paging(g_pars.imsi)); /* MS -> MSC: PAGING RESPONSE */ - f_establish_fully(valueof(ts_MI_IMSI_LV(g_pars.imsi)), EST_TYPE_PAG_RESP); + f_establish_fully(EST_TYPE_PAG_RESP); f_create_mgcp_expect(ExpectCriteria:{omit,omit,omit}); @@ -1737,7 +1737,7 @@ f_perform_lu(); - f_establish_fully(valueof(ts_MI_IMSI_LV(g_pars.imsi))); + f_establish_fully(); f_create_mncc_expect(hex2str(cpars.called_party)); f_create_mgcp_expect(ExpectCriteria:{omit,omit,omit}); -- To view, visit https://gerrit.osmocom.org/7697 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Iaa071b131a8ff372d70677c8622d227f88e9ea53 Gerrit-PatchSet: 1 Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Owner: Harald Welte From gerrit-no-reply at lists.osmocom.org Mon Apr 9 18:15:59 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Mon, 9 Apr 2018 18:15:59 +0000 Subject: [PATCH] osmo-ttcn3-hacks[master]: msc: Initial SMS testing (MO + MT SMS, successful case, no S... Message-ID: Review at https://gerrit.osmocom.org/7698 msc: Initial SMS testing (MO + MT SMS, successful case, no SMPP) Change-Id: I707330454ffab87daebf22ba83e6ba2873996424 --- M library/L3_Templates.ttcn M msc/BSC_ConnectionHandler.ttcn M msc/MSC_Tests.ttcn 3 files changed, 502 insertions(+), 3 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-ttcn3-hacks refs/changes/98/7698/1 diff --git a/library/L3_Templates.ttcn b/library/L3_Templates.ttcn index 3203b0e..3304662 100644 --- a/library/L3_Templates.ttcn +++ b/library/L3_Templates.ttcn @@ -2,7 +2,7 @@ /* L3 Templates, building on top of MobileL3*_Types from Ericsson. * - * (C) 2017 by Harald Welte + * (C) 2017-2018 by Harald Welte * All rights reserved. * * Released under the terms of GNU General Public License, Version 2 or @@ -17,7 +17,7 @@ import from MobileL3_RRM_Types all; import from MobileL3_CC_Types all; import from MobileL3_GMM_SM_Types all; -//import from MobileL3_SMS_Types all; +import from MobileL3_SMS_Types all; /* TS 24.007 Table 11.3 TI Flag */ const BIT1 c_TIF_ORIG := '0'B; @@ -2168,4 +2168,284 @@ with { extension "prototype(convert) encode(RAW)" }; + +/* SMS TPDU Layer */ + +template (value) TPDU_RP_DATA_MS_SGSN ts_SMS_SUBMIT(OCT1 msg_ref, template (value) TP_DA dst_addr, + template (value) OCT1 pid, template (value) OCT1 dcs, + integer length_ind, octetstring user_data) := { + sMS_SUBMIT := { + tP_MTI := '01'B, /* SUBMIT */ + tP_RD := '1'B, /* reject duplicates */ + tP_VPF := '00'B, /* not present */ + tP_SRR := '0'B, /* no status report requested */ + tP_UDHI := '0'B, /* no user data header in UD */ + tP_RP := '0'B, /* no reply path */ + tP_MR := msg_ref, + tP_DA := dst_addr, + tP_PID := pid, + tP_DCS := dcs, + tP_VP := omit, + tP_UDL_UD := { + tP_LengthIndicator := length_ind, + tP_UD := user_data + } + } +} + +template TPDU_RP_DATA_SGSN_MS tr_SMS_DELIVER(template TP_OA src_addr := ?, + template octetstring user_data := ?, + template OCT1 pid := ?, template OCT1 dcs := ?, + template BIT1 mms := ? + ) := { + sMS_DELIVER := { + tP_MTI := '00'B, /* DELIVER */ + tP_MMS := mms, /* more messages to send */ + tP_LP := ?, /* ?!? */ + tP_Spare := '0'B, + tP_SRI := '0'B, /* status report indication */ + tP_UDHI := '0'B, /* no user data header in UD */ + tP_RP := '0'B, /* no reply path */ + tP_OA := src_addr, + tP_PID := pid, + tP_DCS := dcs, + tP_SCTS := ?, + tP_UDL_UD := { + tP_LengthIndicator := ?, + tP_UD := user_data + } + } +} + +/* RP Layer */ + +private function ts_RpOrig(template (omit) RP_NumberingPlan_and_NumberDigits rp_orig) +return RP_OriginatorAddressLV { + var RP_OriginatorAddressLV ret; + if (istemplatekind(rp_orig, "omit")) { + ret := { 0, omit }; + } else { + ret := { 0, valueof(rp_orig) }; + } + return ret; +} + +private function ts_RpDst(template (omit) RP_NumberingPlan_and_NumberDigits rp_dst) +return RP_DestinationAddressLV { + var RP_DestinationAddressLV ret; + if (istemplatekind(rp_dst, "omit")) { + ret := { 0, omit }; + } else { + ret := { 0, valueof(rp_dst) }; + } + return ret; +} + +template (value) RPDU_MS_SGSN ts_RP_DATA_MO(OCT1 msg_ref, + template (omit) RP_NumberingPlan_and_NumberDigits rp_orig, + template (omit) RP_NumberingPlan_and_NumberDigits rp_dst, + template (value) TPDU_RP_DATA_MS_SGSN tpdu) := { + rP_DATA_MS_SGSN := { + rP_MTI := '000'B, + rP_Spare := '00000'B, + rP_MessageReference := msg_ref, + rP_OriginatorAddress := ts_RpOrig(rp_orig), + rP_DestinationAddress := ts_RpDst(rp_dst), + rP_User_Data := { + rP_LengthIndicator := 0, /* overwritten */ + rP_TPDU := tpdu + } + } +} + +template RPDU_SGSN_MS tr_RP_DATA_MT(template OCT1 msg_ref, + template RP_NumberingPlan_and_NumberDigits rp_orig, + template RP_NumberingPlan_and_NumberDigits rp_dst, + template TPDU_RP_DATA_SGSN_MS tpdu) := { + rP_DATA_SGSN_MS := { + rP_MTI := '001'B, + rP_Spare := '00000'B, + rP_MessageReference := msg_ref, + rP_OriginatorAddress := { ?, rp_orig }, + rP_DestinationAddress := { ?, rp_dst }, + rP_User_Data := { + rP_LengthIndicator := ?, + rP_TPDU := tpdu + } + + } +} + +template (value) RPDU_MS_SGSN ts_RP_ACK_MO(OCT1 msg_ref) := { + rP_ACK_MS_SGSN := { + rP_MTI := '010'B, + rP_Spare := '00000'B, + rP_MessageReference := msg_ref, + rP_User_Data := omit /* FIXME: report */ + } +} + +template RPDU_SGSN_MS tr_RP_ACK_MT(template OCT1 msg_ref) := { + rP_ACK_SGSN_MS := { + rP_MTI := '011'B, + rP_Spare := '00000'B, + rP_MessageReference := msg_ref, + rP_User_Data := omit /* FIXME: report */ + } +} + +template (value) RPDU_MS_SGSN ts_RP_ERROR_MO(OCT1 msg_ref, uint7_t cause) := { + rP_ERROR_MS_SGSN := { + rP_MTI := '100'B, + rP_Spare := '00000'B, + rP_Message_Reference := msg_ref, + rP_CauseLV := { + rP_LengthIndicator := 0, /* overwritten */ + rP_CauseV := { + causeValue := int2bit(cause, 7), + ext := '0'B + }, + rP_diagnisticField := omit + }, + rP_User_Data := omit /* FIXME: report */ + } +} + +private function f_cause_or_wc(template uint7_t cause) return template BIT7 { + if (istemplatekind(cause, "?")) { + return ?; + } else if (istemplatekind(cause, "*")) { + return *; + } else { + return int2bit(valueof(cause), 7); + } +} + +template RPDU_SGSN_MS tr_RP_ERROR_MT(template OCT1 msg_ref, template uint7_t cause) := { + rP_ERROR_SGSN_MS := { + rP_MTI := '101'B, + rP_Spare := '00000'B, + rP_Message_Reference := msg_ref, + rP_CauseLV := { + rP_LengthIndicator := 0, /* overwritten */ + rP_CauseV := { + causeValue := f_cause_or_wc(cause), + ext := '0'B + }, + rP_diagnisticField := omit + }, + rP_User_Data := omit /* FIXME: report */ + } +} + + +template (value) RPDU_MS_SGSN ts_RP_SMMA_MO(OCT1 msg_ref) := { + rP_SMMA := { + rP_MTI := '110'B, + rP_Spare := '00000'B, + rP_MessageReference := msg_ref + } +} + + + + +/* CP Layer */ + +template (value) L3_SMS_MS_SGSN ts_CP_DATA_MO(template (value) RPDU_MS_SGSN rpdu) := { + cP_DATA := { + cP_messageType := '00000001'B, + cP_User_Data := { + lengthIndicator := 0, /* overwritten */ + cP_RPDU := rpdu + } + } +} + +template (value) L3_SMS_MS_SGSN ts_CP_ACK_MO := { + cP_ACK := { + cP_messageType := '00000100'B + } +} + +template (value) L3_SMS_MS_SGSN ts_CP_ERROR_MO(OCT1 cause) := { + cP_ERROR := { + cP_messageType := '00010000'B, + cP_Cause := { + causeValue := cause + } + } +} + +template L3_SMS_SGSN_MS tr_CP_DATA_MT(template RPDU_SGSN_MS rpdu) := { + cP_DATA := { + cP_messageType := '00000001'B, + cP_User_Data := { + lengthIndicator := ?, + cP_RPDU := rpdu + } + } +} + +template L3_SMS_SGSN_MS tr_CP_ACK_MT := { + cP_ACK := { + cP_messageType := '00000100'B + } +} + +template L3_SMS_SGSN_MS tr_CP_ERROR_MT(template OCT1 cause) := { + cP_ERROR := { + cP_messageType := '00010000'B, + cP_Cause := { + causeValue := cause + } + } +} + +/* L3 Wrapper */ + +template (value) PDU_ML3_MS_NW ts_ML3_MO_SMS(uint3_t tid, BIT1 ti_flag, + template (value) L3_SMS_MS_SGSN sms_mo) := { + discriminator := '1001'B, + tiOrSkip := { + transactionId := { + tio := int2bit(tid, 3), + tiFlag := ti_flag, + tIExtension := omit + } + }, + msgs := { + sms := sms_mo + } +} + +private function f_tid_or_wc(template uint3_t tid) return template BIT3 { + var template BIT3 ret; + if (istemplatekind(tid, "*")) { + return *; + } else if (istemplatekind(tid, "?")) { + return ?; + } else { + return int2bit(valueof(tid), 3); + } +} + +template PDU_ML3_NW_MS tr_ML3_MT_SMS(template uint3_t tid, template BIT1 ti_flag, + template L3_SMS_SGSN_MS sms_mt) := { + discriminator := '1001'B, + tiOrSkip := { + transactionId := { + tio := f_tid_or_wc(tid), + tiFlag := ti_flag, + tIExtension := omit + } + }, + msgs := { + sms := sms_mt + } +} + + + + } diff --git a/msc/BSC_ConnectionHandler.ttcn b/msc/BSC_ConnectionHandler.ttcn index 73368a2..733daab 100644 --- a/msc/BSC_ConnectionHandler.ttcn +++ b/msc/BSC_ConnectionHandler.ttcn @@ -25,6 +25,7 @@ import from MobileL3_CommonIE_Types all; import from MobileL3_MM_Types all; import from MobileL3_CC_Types all; +import from MobileL3_SMS_Types all; import from L3_Templates all; import from L3_Common all; @@ -186,7 +187,8 @@ type enumerated EstablishType { EST_TYPE_MO_CALL, EST_TYPE_EMERG_CALL, - EST_TYPE_PAG_RESP + EST_TYPE_PAG_RESP, + EST_TYPE_MO_SMS }; /* helper function to fully establish a dedicated channel */ @@ -211,6 +213,9 @@ } case (EST_TYPE_PAG_RESP) { l3_info := valueof(ts_PAG_RESP(mi)); + } + case (EST_TYPE_MO_SMS) { + l3_info := valueof(ts_CM_SERV_REQ(CM_TYPE_MO_SMS, mi)); } } @@ -742,6 +747,146 @@ } } +type record SmsParametersTp { + OCT1 msg_ref, + TP_DA da, + OCT1 pid, + OCT1 dcs, + integer udl, + octetstring ud +} +type record SmsParametersRp { + OCT1 msg_ref, + RP_NumberingPlan_and_NumberDigits orig optional, + RP_NumberingPlan_and_NumberDigits dest optional +} +type record SmsParameters { + SmsParametersTp tp, + SmsParametersRp rp, + uint3_t tid, + OCT1 dlci, + uint7_t exp_rp_err optional +} + +template (value) TP_DA ts_TP_DA(BIT4 npl, BIT3 ton, hexstring addr) := { + tP_DA_NoPad := { + tP_LengthIndicator := 0, /* overwritten */ + tP_NumberingPlanID := npl, + tP_TypeOfNumber := ton, + tp_Spare := '0'B, + tP_DAValue := addr + } +} + +template (value) SmsParameters t_SmsPars(hexstring tp_daddr := '12345'H) := { + tp := { + msg_ref := '23'O, + da := ts_TP_DA('0000'B, '000'B, tp_daddr), + pid := '00'O, + dcs := '00'O, + udl := 0, + ud := ''O + }, + rp := { + msg_ref := '42'O, + orig := omit, + dest := { '0000'B, '000'B, '0'B, '98765'H } + }, + tid := 0, + dlci := '03'O, + exp_rp_err := omit +} + +private altstep as_other_sms() runs on BSC_ConnHdlr { + [] BSSAP.receive(tr_PDU_DTAP_MT(tr_ML3_MT_SMS(?, ?, ?), ?)) { + setverdict(fail, "Unexpected SMS related PDU from MSC"); + self.stop; + } +} + +/* Submit a MO-SMS over an already existing (and authenticated, ...) DTAP connection */ +function f_mo_sms(inout SmsParameters spars) +runs on BSC_ConnHdlr { + var template (value) TPDU_RP_DATA_MS_SGSN tp_mo; + var template (value) RPDU_MS_SGSN rp_mo; + var template (value) PDU_ML3_MS_NW l3_mo; + + var template TPDU_RP_DATA_SGSN_MS tp_mt; + var template RPDU_SGSN_MS rp_mt; + var template PDU_ML3_NW_MS l3_mt; + + var default d := activate(as_other_sms()); + + tp_mo := ts_SMS_SUBMIT(spars.tp.msg_ref, spars.tp.da, spars.tp.pid, spars.tp.dcs, + spars.tp.udl, spars.tp.ud); + rp_mo := ts_RP_DATA_MO(spars.rp.msg_ref, spars.rp.orig, spars.rp.dest, tp_mo); + l3_mo := ts_ML3_MO_SMS(spars.tid, c_TIF_ORIG, ts_CP_DATA_MO(rp_mo)); + BSSAP.send(ts_PDU_DTAP_MO(l3_mo, spars.dlci, true)); + /* receive CP-ACK for CP-DATA above */ + BSSAP.receive(tr_PDU_DTAP_MT(tr_ML3_MT_SMS(spars.tid, c_TIF_REPL, tr_CP_ACK_MT), spars.dlci)); + + if (ispresent(spars.exp_rp_err)) { + /* expect an RP-ERROR message from MSC with given cause */ + rp_mt := tr_RP_ERROR_MT(spars.rp.msg_ref, spars.exp_rp_err); + l3_mt := tr_ML3_MT_SMS(spars.tid, c_TIF_REPL, tr_CP_DATA_MT(rp_mt)); + BSSAP.receive(tr_PDU_DTAP_MT(l3_mt, spars.dlci)); + /* send CP-ACK for CP-DATA just received */ + l3_mo := ts_ML3_MO_SMS(spars.tid, c_TIF_ORIG, ts_CP_ACK_MO); + BSSAP.send(ts_PDU_DTAP_MO(l3_mo, spars.dlci, true)); + } else { + /* expect RP-ACK for RP-DATA */ + rp_mt := tr_RP_ACK_MT(spars.rp.msg_ref); + l3_mt := tr_ML3_MT_SMS(spars.tid, c_TIF_REPL, tr_CP_DATA_MT(rp_mt)); + BSSAP.receive(tr_PDU_DTAP_MT(l3_mt, spars.dlci)); + /* send CP-ACO for CP-DATA just received */ + l3_mo := ts_ML3_MO_SMS(spars.tid, c_TIF_ORIG, ts_CP_ACK_MO); + BSSAP.send(ts_PDU_DTAP_MO(l3_mo, spars.dlci, true)); + } + deactivate(d); + setverdict(pass); +} + +/* receive MT-SMS delivered from the MSC/SMSC over an already existing DTAP connection */ +function f_mt_sms(inout SmsParameters spars) +runs on BSC_ConnHdlr { + var template (value) TPDU_RP_DATA_MS_SGSN tp_mo; + var template (value) RPDU_MS_SGSN rp_mo; + var template (value) PDU_ML3_MS_NW l3_mo; + + var template TPDU_RP_DATA_SGSN_MS tp_mt; + var template RPDU_SGSN_MS rp_mt; + var template PDU_ML3_NW_MS l3_mt; + + var PDU_DTAP_MT dtap_mt; + + var default d := activate(as_other_sms()); + + /* Expect CP-DATA(RP-DATA(SMS-DELIVER)) */ + tp_mt := tr_SMS_DELIVER(?, spars.tp.ud, spars.tp.pid, spars.tp.dcs, ?); + rp_mt := tr_RP_DATA_MT(?, ?, omit, tp_mt); + l3_mt := tr_ML3_MT_SMS(?, c_TIF_ORIG, tr_CP_DATA_MT(rp_mt)); + BSSAP.receive(tr_PDU_DTAP_MT(l3_mt, spars.dlci)) -> value dtap_mt; + /* Extract relevant identifiers */ + spars.tid := bit2int(dtap_mt.dtap.tiOrSkip.transactionId.tio); + spars.rp.msg_ref := dtap_mt.dtap.msgs.sms.cP_DATA.cP_User_Data.cP_RPDU.rP_DATA_SGSN_MS.rP_MessageReference; + + /* send CP-ACK for CP-DATA just received */ + l3_mo := ts_ML3_MO_SMS(spars.tid, c_TIF_REPL, ts_CP_ACK_MO); + BSSAP.send(ts_PDU_DTAP_MO(l3_mo, spars.dlci, true)); + + /* send RP-ACK for RP-DATA */ + rp_mo := ts_RP_ACK_MO(spars.rp.msg_ref); + l3_mo := ts_ML3_MO_SMS(spars.tid, c_TIF_REPL, ts_CP_DATA_MO(rp_mo)); + BSSAP.send(ts_PDU_DTAP_MO(l3_mo, spars.dlci, true)); + + /* expect CP-ACK for CP-DATA(RP-ACK) just sent */ + l3_mt := tr_ML3_MT_SMS(spars.tid, c_TIF_REPL, tr_CP_ACK_MT); + BSSAP.receive(tr_PDU_DTAP_MT(l3_mt, spars.dlci)); + + deactivate(d); + setverdict(pass); +} + diff --git a/msc/MSC_Tests.ttcn b/msc/MSC_Tests.ttcn index 503f98b..b5108c7 100644 --- a/msc/MSC_Tests.ttcn +++ b/msc/MSC_Tests.ttcn @@ -1815,6 +1815,77 @@ setverdict(pass); } +/* LU followed by MO SMS */ +private function f_tc_lu_and_mo_sms(charstring id, BSC_ConnHdlrPars pars) runs on BSC_ConnHdlr { + var SmsParameters spars := valueof(t_SmsPars); + + f_init_handler(pars); + + /* Perform location update and call */ + f_perform_lu(); + + f_establish_fully(EST_TYPE_MO_SMS); + + //spars.exp_rp_err := 96; /* invalid mandatory information */ + f_mo_sms(spars); + + f_expect_clear(); +} +testcase TC_lu_and_mo_sms() runs on MTC_CT { + var BSC_ConnHdlr vc_conn; + f_init(); + vc_conn := f_start_handler(refers(f_tc_lu_and_mo_sms), 42); + vc_conn.done; +} + +private function f_vty_sms_send(charstring imsi, charstring msisdn, charstring text) +runs on MTC_CT { + f_vty_transceive(MSCVTY, "subscriber imsi "&imsi&" sms sender msisdn "&msisdn&" send "&text); +} + +/* LU followed by MT SMS */ +private function f_tc_lu_and_mt_sms(charstring id, BSC_ConnHdlrPars pars) runs on BSC_ConnHdlr { + var SmsParameters spars := valueof(t_SmsPars); + var OCT4 tmsi; + + f_init_handler(pars); + + /* Perform location update and call */ + f_perform_lu(); + + /* register an 'expect' for given IMSI (+TMSI) */ + if (isvalue(g_pars.tmsi)) { + tmsi := g_pars.tmsi; + } else { + tmsi := 'FFFFFFFF'O; + } + f_bssmap_register_imsi(g_pars.imsi, tmsi); + + /* FIXME: actually cause MSC to send a SMS via VTY or SMPP */ + + /* MSC->BSC: expect PAGING from MSC */ + BSSAP.receive(tr_BSSMAP_Paging(g_pars.imsi)); + /* Establish DTAP / BSSAP / SCCP connection */ + f_establish_fully(EST_TYPE_PAG_RESP); + + spars.tp.ud := 'C8329BFD064D9B53'O; + f_mt_sms(spars); + + f_expect_clear(); +} +testcase TC_lu_and_mt_sms() runs on MTC_CT { + var BSC_ConnHdlrPars pars; + var BSC_ConnHdlr vc_conn; + f_init(); + pars := f_init_pars(43); + vc_conn := f_start_handler_with_pars(refers(f_tc_lu_and_mt_sms), pars); + f_sleep(2.0); + f_vty_sms_send(hex2str(pars.imsi), "2342", "Hello SMS"); + vc_conn.done; +} + + + /* TODO: * continue to send repeated MO signalling messages to keep channel open: does MSC tmeout? * malformed messages (missing IE, invalid message type): properly rejected? @@ -1876,6 +1947,9 @@ execute( TC_lu_and_mt_call() ); + execute( TC_lu_and_mo_sms() ); + execute( TC_lu_and_mt_sms() ); + /* Run this last: at the time of writing this test crashes the MSC */ execute( TC_lu_imsi_auth_tmsi_encr_3_1_log_msc_debug() ); } -- To view, visit https://gerrit.osmocom.org/7698 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I707330454ffab87daebf22ba83e6ba2873996424 Gerrit-PatchSet: 1 Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Owner: Harald Welte From gerrit-no-reply at lists.osmocom.org Mon Apr 9 18:19:01 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Mon, 9 Apr 2018 18:19:01 +0000 Subject: [ABANDON] osmo-ttcn3-hacks[master]: WIP: SMPP codec for TITAN In-Reply-To: References: Message-ID: Harald Welte has abandoned this change. Change subject: WIP: SMPP codec for TITAN ...................................................................... Abandoned Ericsson has released a complete SMPP codec. no need to reinvent the wheel. -- To view, visit https://gerrit.osmocom.org/7695 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: abandon Gerrit-Change-Id: Ib1952ffa0cbc915ab4c088da03fec2da4258b47c Gerrit-PatchSet: 1 Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Owner: Harald Welte Gerrit-Reviewer: Jenkins Builder From gerrit-no-reply at lists.osmocom.org Mon Apr 9 18:19:23 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Mon, 9 Apr 2018 18:19:23 +0000 Subject: osmo-ttcn3-hacks[master]: L3_Templates: Introudce constants for tiFlag In-Reply-To: References: Message-ID: Patch Set 2: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7696 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Ic06eb2016eb9979b8556366e4a909f3c0336aa92 Gerrit-PatchSet: 2 Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Owner: Harald Welte Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Mon Apr 9 18:19:33 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Mon, 9 Apr 2018 18:19:33 +0000 Subject: osmo-ttcn3-hacks[master]: msc: generate mobile identity inside f_establish_fully() In-Reply-To: References: Message-ID: Patch Set 2: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7697 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Iaa071b131a8ff372d70677c8622d227f88e9ea53 Gerrit-PatchSet: 2 Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Owner: Harald Welte Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Mon Apr 9 18:19:36 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Mon, 9 Apr 2018 18:19:36 +0000 Subject: [MERGED] osmo-ttcn3-hacks[master]: msc: generate mobile identity inside f_establish_fully() In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: msc: generate mobile identity inside f_establish_fully() ...................................................................... msc: generate mobile identity inside f_establish_fully() This reduces the code duplication in every caller of the function. Change-Id: Iaa071b131a8ff372d70677c8622d227f88e9ea53 --- M msc/BSC_ConnectionHandler.ttcn M msc/MSC_Tests.ttcn 2 files changed, 20 insertions(+), 32 deletions(-) Approvals: Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/msc/BSC_ConnectionHandler.ttcn b/msc/BSC_ConnectionHandler.ttcn index 62eddf3..73368a2 100644 --- a/msc/BSC_ConnectionHandler.ttcn +++ b/msc/BSC_ConnectionHandler.ttcn @@ -190,9 +190,18 @@ }; /* helper function to fully establish a dedicated channel */ -function f_establish_fully(MobileIdentityLV mi, EstablishType etype := EST_TYPE_MO_CALL) +function f_establish_fully(EstablishType etype := EST_TYPE_MO_CALL) runs on BSC_ConnHdlr { var PDU_ML3_MS_NW l3_info; + var MobileIdentityLV mi; + + /* If we have a TMSI, use TMSI instead of IMSI */ + if (ispresent(g_pars.tmsi)) { + mi := valueof(ts_MI_TMSI_LV(g_pars.tmsi)); + } else { + mi := valueof(ts_MI_IMSI_LV(g_pars.imsi)); + } + select (etype) { case (EST_TYPE_MO_CALL) { l3_info := valueof(ts_CM_SERV_REQ(CM_TYPE_MO_CALL, mi)); @@ -408,7 +417,6 @@ function f_mt_call_establish(inout CallParameters cpars) runs on BSC_ConnHdlr { - var MobileIdentityLV mi; var MNCC_PDU mncc; var MgcpCommand mgcp_cmd; @@ -421,13 +429,7 @@ /* BSC <- MSC: Expect paging. FIXME: By TMSI or not? */ BSSAP.receive(tr_BSSMAP_Paging(g_pars.imsi)); - /* If we have a TMSI, use TMSI instead of IMSI */ - if (ispresent(g_pars.tmsi)) { - mi := valueof(ts_MI_TMSI_LV(g_pars.tmsi)); - } else { - mi := valueof(ts_MI_IMSI_LV(g_pars.imsi)); - } - f_establish_fully(mi, EST_TYPE_PAG_RESP); + f_establish_fully(EST_TYPE_PAG_RESP); /* MS <- MSC: Expect CC SETUP */ BSSAP.receive(tr_PDU_DTAP_MT(tr_ML3_MT_CC_SETUP(cpars.transaction_id, *, cpars.called_party))); @@ -498,21 +500,14 @@ function f_mo_call_establish(inout CallParameters cpars) runs on BSC_ConnHdlr { - var MobileIdentityLV mi; var MNCC_PDU mncc; var MgcpCommand mgcp_cmd; var boolean respond_to_dlcx; - /* If we have a TMSI, use TMSI instead of IMSI */ - if (ispresent(g_pars.tmsi)) { - mi := valueof(ts_MI_TMSI_LV(g_pars.tmsi)); - } else { - mi := valueof(ts_MI_IMSI_LV(g_pars.imsi)); - } if (cpars.emergency) { - f_establish_fully(mi, EST_TYPE_EMERG_CALL); + f_establish_fully(EST_TYPE_EMERG_CALL); } else { - f_establish_fully(mi, EST_TYPE_MO_CALL); + f_establish_fully(EST_TYPE_MO_CALL); } /* Create MNCC and MGCP expect */ @@ -664,18 +659,11 @@ runs on BSC_ConnHdlr { timer T := 1.0; - var MobileIdentityLV mi; var MNCC_PDU mncc; var MgcpCommand mgcp_cmd; var template PDU_ML3_MS_NW dtmf_dtap; - /* If we have a TMSI, use TMSI instead of IMSI */ - if (ispresent(g_pars.tmsi)) { - mi := valueof(ts_MI_TMSI_LV(g_pars.tmsi)); - } else { - mi := valueof(ts_MI_IMSI_LV(g_pars.imsi)); - } - f_establish_fully(mi); + f_establish_fully(); /* Create MNCC and MGCP expect */ f_create_mncc_expect(hex2str(cpars.called_party)); diff --git a/msc/MSC_Tests.ttcn b/msc/MSC_Tests.ttcn index 6ec08bb..503f98b 100644 --- a/msc/MSC_Tests.ttcn +++ b/msc/MSC_Tests.ttcn @@ -1137,7 +1137,7 @@ f_perform_lu(); - f_establish_fully(valueof(ts_MI_IMSI_LV(g_pars.imsi))); + f_establish_fully(); f_expect_clear(); } testcase TC_establish_and_nothing() runs on MTC_CT { @@ -1156,7 +1156,7 @@ f_perform_lu(); - f_establish_fully(valueof(ts_MI_IMSI_LV(g_pars.imsi))); + f_establish_fully(); f_create_mncc_expect(hex2str(cpars.called_party)); f_create_mgcp_expect(ExpectCriteria:{omit,omit,omit}); @@ -1181,7 +1181,7 @@ f_perform_lu(); - f_establish_fully(valueof(ts_MI_IMSI_LV(g_pars.imsi))); + f_establish_fully(); f_create_mncc_expect(hex2str(cpars.called_party)); f_create_mgcp_expect(ExpectCriteria:{omit,omit,omit}); @@ -1220,7 +1220,7 @@ f_perform_lu(); - f_establish_fully(valueof(ts_MI_IMSI_LV(g_pars.imsi))); + f_establish_fully(); f_create_mncc_expect(hex2str(cpars.called_party)); f_create_mgcp_expect(ExpectCriteria:{omit,omit,omit}); @@ -1312,7 +1312,7 @@ /* MSC->BSC: expect PAGING from MSC */ BSSAP.receive(tr_BSSMAP_Paging(g_pars.imsi)); /* MS -> MSC: PAGING RESPONSE */ - f_establish_fully(valueof(ts_MI_IMSI_LV(g_pars.imsi)), EST_TYPE_PAG_RESP); + f_establish_fully(EST_TYPE_PAG_RESP); f_create_mgcp_expect(ExpectCriteria:{omit,omit,omit}); @@ -1737,7 +1737,7 @@ f_perform_lu(); - f_establish_fully(valueof(ts_MI_IMSI_LV(g_pars.imsi))); + f_establish_fully(); f_create_mncc_expect(hex2str(cpars.called_party)); f_create_mgcp_expect(ExpectCriteria:{omit,omit,omit}); -- To view, visit https://gerrit.osmocom.org/7697 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: Iaa071b131a8ff372d70677c8622d227f88e9ea53 Gerrit-PatchSet: 3 Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Owner: Harald Welte Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder From gerrit-no-reply at lists.osmocom.org Mon Apr 9 18:19:36 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Mon, 9 Apr 2018 18:19:36 +0000 Subject: [MERGED] osmo-ttcn3-hacks[master]: L3_Templates: Introudce constants for tiFlag In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: L3_Templates: Introudce constants for tiFlag ...................................................................... L3_Templates: Introudce constants for tiFlag ... this makes the code more readable/understandable. Change-Id: Ic06eb2016eb9979b8556366e4a909f3c0336aa92 --- M library/L3_Templates.ttcn M msc/gen_links.sh M msc/regen_makefile.sh 3 files changed, 29 insertions(+), 21 deletions(-) Approvals: Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/library/L3_Templates.ttcn b/library/L3_Templates.ttcn index a2b872c..3203b0e 100644 --- a/library/L3_Templates.ttcn +++ b/library/L3_Templates.ttcn @@ -19,6 +19,9 @@ import from MobileL3_GMM_SM_Types all; //import from MobileL3_SMS_Types all; +/* TS 24.007 Table 11.3 TI Flag */ +const BIT1 c_TIF_ORIG := '0'B; +const BIT1 c_TIF_REPL := '1'B; type enumerated CmServiceType { CM_TYPE_MO_CALL ('0001'B), @@ -704,7 +707,7 @@ tiOrSkip := { transactionId := { tio := int2bit(tid, 3), - tiFlag := '0'B, + tiFlag := c_TIF_ORIG, tIExtension := omit } } @@ -776,7 +779,7 @@ tiOrSkip := { transactionId := { tio := int2bit(tid, 3), - tiFlag := '0'B, + tiFlag := c_TIF_ORIG, tIExtension := omit } }, @@ -818,7 +821,7 @@ tiOrSkip := { transactionId := { tio := int2bit(tid, 3), - tiFlag := '0'B, + tiFlag := c_TIF_ORIG, tIExtension := omit } }, @@ -890,7 +893,7 @@ tiOrSkip := { transactionId := { tio := int2bit(tid, 3), - tiFlag := '1'B, + tiFlag := c_TIF_REPL, tIExtension := omit } }, @@ -912,7 +915,7 @@ tiOrSkip := { transactionId := { tio := int2bit(tid, 3), - tiFlag := '1'B, + tiFlag := c_TIF_REPL, tIExtension := omit } }, @@ -934,7 +937,7 @@ tiOrSkip := { transactionId := { tio := int2bit(tid, 3), - tiFlag := '1'B, + tiFlag := c_TIF_REPL, tIExtension := omit } }, @@ -958,7 +961,7 @@ tiOrSkip := { transactionId := { tio := int2bit(tid, 3), - tiFlag := '1'B, + tiFlag := c_TIF_REPL, tIExtension := omit } }, @@ -982,7 +985,7 @@ tiOrSkip := { transactionId := { tio := int2bit(tid, 3), - tiFlag := '0'B, + tiFlag := c_TIF_ORIG, tIExtension := omit } }, @@ -1001,7 +1004,7 @@ tiOrSkip := { transactionId := { tio := int2bit(tid, 3), - tiFlag := '0'B, + tiFlag := c_TIF_ORIG, tIExtension := omit } }, @@ -1202,7 +1205,7 @@ tiOrSkip := { transactionId := { tio := int2bit(tid, 3), - tiFlag := '1'B, /* response from destination */ + tiFlag := c_TIF_REPL, /* response from destination */ tIExtension := omit } }, @@ -1231,7 +1234,7 @@ tiOrSkip := { transactionId := { tio := int2bit(tid, 3), - tiFlag := '0'B, /* from originator */ + tiFlag := c_TIF_ORIG, /* from originator */ tIExtension := omit } }, @@ -1887,7 +1890,7 @@ tiOrSkip := { transactionId := { tio := tid, - tiFlag := '0'B, + tiFlag := c_TIF_ORIG, tIExtension := omit } }, @@ -1920,7 +1923,7 @@ tiOrSkip := { transactionId := { tio := tid, - tiFlag := '1'B, + tiFlag := c_TIF_REPL, tIExtension := omit } }, @@ -1945,7 +1948,7 @@ tiOrSkip := { transactionId := { tio := tid, - tiFlag := '1'B, + tiFlag := c_TIF_REPL, tIExtension := omit } }, @@ -1979,7 +1982,7 @@ tiOrSkip := { transactionId := { tio := tid, - tiFlag := '0'B, + tiFlag := c_TIF_ORIG, tIExtension := omit } }, @@ -2012,7 +2015,7 @@ tiOrSkip := { transactionId := { tio := tid, - tiFlag := '1'B, + tiFlag := c_TIF_REPL, tIExtension := omit } }, @@ -2046,7 +2049,7 @@ tiOrSkip := { transactionId := { tio := tid, - tiFlag := '1'B, + tiFlag := c_TIF_REPL, tIExtension := omit } }, @@ -2079,7 +2082,7 @@ tiOrSkip := { transactionId := { tio := tid, - tiFlag := '1'B, + tiFlag := c_TIF_REPL, tIExtension := omit } }, @@ -2101,7 +2104,7 @@ tiOrSkip := { transactionId := { tio := tid, - tiFlag := '0'B, + tiFlag := c_TIF_ORIG, tIExtension := omit } }, @@ -2123,7 +2126,7 @@ tiOrSkip := { transactionId := { tio := tid, - tiFlag := '0'B, + tiFlag := c_TIF_ORIG, tIExtension := omit } }, diff --git a/msc/gen_links.sh b/msc/gen_links.sh index efb3770..6dea043 100755 --- a/msc/gen_links.sh +++ b/msc/gen_links.sh @@ -66,6 +66,11 @@ FILES="TELNETasp_PT.cc TELNETasp_PT.hh TELNETasp_PortType.ttcn" gen_links $DIR $FILES +DIR=$BASEDIR/titan.ProtocolModules.SMPP/src +FILES="SMPP_EncDec.cc SMPP_Types.ttcn" +gen_links $DIR $FILES + + DIR=../library FILES="General_Types.ttcn GSM_Types.ttcn Osmocom_Types.ttcn MNCC_Types.ttcn MNCC_EncDec.cc MNCC_CodecPort.ttcn mncc.h MNCC_Emulation.ttcn Osmocom_VTY_Functions.ttcn Native_Functions.ttcn Native_FunctionDefs.cc " FILES+="IPA_Types.ttcn IPA_Emulation.ttcnpp IPA_CodecPort.ttcn IPA_CodecPort_CtrlFunct.ttcn IPA_CodecPort_CtrlFunctDef.cc GSUP_Types.ttcn GSUP_Emulation.ttcn " diff --git a/msc/regen_makefile.sh b/msc/regen_makefile.sh index c3db4e7..29b3f05 100755 --- a/msc/regen_makefile.sh +++ b/msc/regen_makefile.sh @@ -1,6 +1,6 @@ #!/bin/sh -FILES="*.ttcn *.ttcnpp SCCP_EncDec.cc SCTPasp_PT.cc TCCConversion.cc TCCInterface.cc UD_PT.cc MNCC_EncDec.cc IPL4asp_PT.cc IPL4asp_discovery.cc SDP_EncDec.cc RTP_EncDec.cc IPA_CodecPort_CtrlFunctDef.cc RTP_CodecPort_CtrlFunctDef.cc MGCP_CodecPort_CtrlFunctDef.cc TELNETasp_PT.cc Native_FunctionDefs.cc *.c" +FILES="*.ttcn *.ttcnpp SCCP_EncDec.cc SCTPasp_PT.cc TCCConversion.cc TCCInterface.cc UD_PT.cc MNCC_EncDec.cc IPL4asp_PT.cc IPL4asp_discovery.cc SDP_EncDec.cc RTP_EncDec.cc IPA_CodecPort_CtrlFunctDef.cc RTP_CodecPort_CtrlFunctDef.cc MGCP_CodecPort_CtrlFunctDef.cc TELNETasp_PT.cc Native_FunctionDefs.cc SMPP_EncDec.cc *.c" export CPPFLAGS_TTCN3="-DIPA_EMULATION_MGCP -DIPA_EMULATION_GSUP -DUSE_MTP3_DISTRIBUTOR" -- To view, visit https://gerrit.osmocom.org/7696 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: Ic06eb2016eb9979b8556366e4a909f3c0336aa92 Gerrit-PatchSet: 3 Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Owner: Harald Welte Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder From gerrit-no-reply at lists.osmocom.org Mon Apr 9 18:19:55 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Mon, 9 Apr 2018 18:19:55 +0000 Subject: osmo-msc[master]: DTAP: Ensure proper DLCI is used in MSC-originated DTAP In-Reply-To: References: Message-ID: Patch Set 2: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7690 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: If511b20f52575054cab1346d99a8cb68d827fdbf Gerrit-PatchSet: 2 Gerrit-Project: osmo-msc Gerrit-Branch: master Gerrit-Owner: Harald Welte Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Mon Apr 9 18:19:58 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Mon, 9 Apr 2018 18:19:58 +0000 Subject: osmo-msc[master]: Permit any Sender MSISDN when sending SMS from VTY In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7694 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I62b17e0a67989484415f0df2c8cb4ff1f94dbf2b Gerrit-PatchSet: 1 Gerrit-Project: osmo-msc Gerrit-Branch: master Gerrit-Owner: Harald Welte Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Pau Espin Pedrol Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Mon Apr 9 18:19:59 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Mon, 9 Apr 2018 18:19:59 +0000 Subject: [MERGED] osmo-msc[master]: Permit any Sender MSISDN when sending SMS from VTY In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: Permit any Sender MSISDN when sending SMS from VTY ...................................................................... Permit any Sender MSISDN when sending SMS from VTY In the old days, OsmoNITB couldn't process any SMS that wasn't between two subscribers on the same NITB. We've long re-worked the internals in order to process SMS with arbitrary sender MSISDN (e.g. from SMPP). However, the VTY command "subscriber ... sms" was never updated, it seems. Change-Id: I62b17e0a67989484415f0df2c8cb4ff1f94dbf2b Closes: OS#3151 --- M include/osmocom/msc/gsm_04_11.h M src/libmsc/gsm_04_11.c M src/libmsc/msc_vty.c M tests/msc_vlr/msc_vlr_tests.c 4 files changed, 32 insertions(+), 26 deletions(-) Approvals: Pau Espin Pedrol: Looks good to me, but someone else must approve Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/include/osmocom/msc/gsm_04_11.h b/include/osmocom/msc/gsm_04_11.h index 3305e3e..e3ff4ba 100644 --- a/include/osmocom/msc/gsm_04_11.h +++ b/include/osmocom/msc/gsm_04_11.h @@ -34,7 +34,7 @@ struct gsm_sms *sms_alloc(void); void sms_free(struct gsm_sms *sms); struct gsm_sms *sms_from_text(struct vlr_subscr *receiver, - struct vlr_subscr *sender, + const char *sender_msisdn, int dcs, const char *text); void _gsm411_sms_trans_free(struct gsm_trans *trans); diff --git a/src/libmsc/gsm_04_11.c b/src/libmsc/gsm_04_11.c index aa60490..077c8d8 100644 --- a/src/libmsc/gsm_04_11.c +++ b/src/libmsc/gsm_04_11.c @@ -82,7 +82,7 @@ } struct gsm_sms *sms_from_text(struct vlr_subscr *receiver, - struct vlr_subscr *sender, + const char *sender_msisdn, int dcs, const char *text) { struct gsm_sms *sms = sms_alloc(); @@ -93,7 +93,7 @@ sms->receiver = vlr_subscr_get(receiver); OSMO_STRLCPY_ARRAY(sms->text, text); - OSMO_STRLCPY_ARRAY(sms->src.addr, sender->msisdn); + OSMO_STRLCPY_ARRAY(sms->src.addr, sender_msisdn); sms->reply_path_req = 0; sms->status_rep_req = 0; sms->ud_hdr_ind = 0; diff --git a/src/libmsc/msc_vty.c b/src/libmsc/msc_vty.c index 33613e9..84d4d14 100644 --- a/src/libmsc/msc_vty.c +++ b/src/libmsc/msc_vty.c @@ -705,13 +705,13 @@ } static int _send_sms_str(struct vlr_subscr *receiver, - struct vlr_subscr *sender, + const char *sender_msisdn, char *str, uint8_t tp_pid) { struct gsm_network *net = receiver->vlr->user_ctx; struct gsm_sms *sms; - sms = sms_from_text(receiver, sender, 0, str); + sms = sms_from_text(receiver, sender_msisdn, 0, str); sms->protocol_id = tp_pid; /* store in database for the queue */ @@ -813,7 +813,7 @@ SUBSCR_HELP "SMS Operations\n" SUBSCR_HELP "Send SMS\n" "Actual SMS Text\n") { struct vlr_subscr *vsub = get_vsub_by_argv(gsmnet, argv[0], argv[1]); - struct vlr_subscr *sender = get_vsub_by_argv(gsmnet, argv[2], argv[3]); + const char *sender_msisdn; char *str; int rc; @@ -824,21 +824,24 @@ goto err; } - if (!sender) { - vty_out(vty, "%% No sender found for %s %s%s", - argv[2], argv[3], VTY_NEWLINE); - rc = CMD_WARNING; - goto err; + if (!strcmp(argv[2], "msisdn")) + sender_msisdn = argv[3]; + else { + struct vlr_subscr *sender = get_vsub_by_argv(gsmnet, argv[2], argv[3]); + if (!sender) { + vty_out(vty, "%% No sender found for %s %s%s", argv[2], argv[3], VTY_NEWLINE); + rc = CMD_WARNING; + goto err; + } + sender_msisdn = sender->msisdn; + vlr_subscr_put(sender); } str = argv_concat(argv, argc, 4); - rc = _send_sms_str(vsub, sender, str, 0); + rc = _send_sms_str(vsub, sender_msisdn, str, 0); talloc_free(str); err: - if (sender) - vlr_subscr_put(sender); - if (vsub) vlr_subscr_put(vsub); @@ -852,7 +855,7 @@ SUBSCR_HELP "Silent SMS Operations\n" SUBSCR_HELP "Send SMS\n" "Actual SMS Text\n") { struct vlr_subscr *vsub = get_vsub_by_argv(gsmnet, argv[0], argv[1]); - struct vlr_subscr *sender = get_vsub_by_argv(gsmnet, argv[2], argv[3]); + const char *sender_msisdn; char *str; int rc; @@ -863,21 +866,24 @@ goto err; } - if (!sender) { - vty_out(vty, "%% No sender found for %s %s%s", - argv[2], argv[3], VTY_NEWLINE); - rc = CMD_WARNING; - goto err; + if (!strcmp(argv[2], "msisdn")) { + sender_msisdn = argv[3]; + } else { + struct vlr_subscr *sender = get_vsub_by_argv(gsmnet, argv[2], argv[3]); + if (!sender) { + vty_out(vty, "%% No sender found for %s %s%s", argv[2], argv[3], VTY_NEWLINE); + rc = CMD_WARNING; + goto err; + } + sender_msisdn = sender->msisdn; + vlr_subscr_put(sender); } str = argv_concat(argv, argc, 4); - rc = _send_sms_str(vsub, sender, str, 64); + rc = _send_sms_str(vsub, sender_msisdn, str, 64); talloc_free(str); err: - if (sender) - vlr_subscr_put(sender); - if (vsub) vlr_subscr_put(vsub); diff --git a/tests/msc_vlr/msc_vlr_tests.c b/tests/msc_vlr/msc_vlr_tests.c index 7c54057..45ab5e1 100644 --- a/tests/msc_vlr/msc_vlr_tests.c +++ b/tests/msc_vlr/msc_vlr_tests.c @@ -294,7 +294,7 @@ struct vlr_subscr *sender, char *str) { - struct gsm_sms *sms = sms_from_text(receiver, sender, 0, str); + struct gsm_sms *sms = sms_from_text(receiver, sender->msisdn, 0, str); gsm411_send_sms_subscr(receiver, sms); } -- To view, visit https://gerrit.osmocom.org/7694 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: I62b17e0a67989484415f0df2c8cb4ff1f94dbf2b Gerrit-PatchSet: 1 Gerrit-Project: osmo-msc Gerrit-Branch: master Gerrit-Owner: Harald Welte Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Pau Espin Pedrol From gerrit-no-reply at lists.osmocom.org Mon Apr 9 18:20:00 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Mon, 9 Apr 2018 18:20:00 +0000 Subject: [MERGED] osmo-msc[master]: DTAP: Ensure proper DLCI is used in MSC-originated DTAP In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: DTAP: Ensure proper DLCI is used in MSC-originated DTAP ...................................................................... DTAP: Ensure proper DLCI is used in MSC-originated DTAP The DLCI field of the DTAP header indicates the SAPI as well as the data link (main DCCH or SACCH). We must make sure to use the correct DLCI when sending DTAP to the BSC. We achieve this by * storing the DLCI in the msgb->cb while parsing the DTAP header * storing the received DLCI (from msgb->cb) in the transaction for mobile-originated transactions * using the trans->dlci to sent msgb->cb when transmitting L3 * filling the DTAP DLCI value from msgb->cb when transmitting DTAP For MSC-originated transactions, we choose a DLCI value corresponding to the service (SAPI=0 for CC, SAPI=3 for SMS) and store that in trans->dlci. Closes: OS#3150 Change-Id: If511b20f52575054cab1346d99a8cb68d827fdbf --- M include/osmocom/msc/gsm_data.h M include/osmocom/msc/transaction.h M src/libmsc/a_iface.c M src/libmsc/a_iface_bssap.c M src/libmsc/gsm_04_08.c M src/libmsc/gsm_04_11.c 6 files changed, 16 insertions(+), 4 deletions(-) Approvals: Harald Welte: Looks good to me, approved; Verified diff --git a/include/osmocom/msc/gsm_data.h b/include/osmocom/msc/gsm_data.h index f3e1b94..6f0aca4 100644 --- a/include/osmocom/msc/gsm_data.h +++ b/include/osmocom/msc/gsm_data.h @@ -20,7 +20,8 @@ #include "gsm_data_shared.h" - +/* TS 48.008 DLCI containing DCCH/ACCH + SAPI */ +#define OMSC_LINKID_CB(__msgb) (__msgb)->cb[3] /** annotations for msgb ownership */ #define __uses diff --git a/include/osmocom/msc/transaction.h b/include/osmocom/msc/transaction.h index 272fb3b..63b1cc5 100644 --- a/include/osmocom/msc/transaction.h +++ b/include/osmocom/msc/transaction.h @@ -31,6 +31,9 @@ /* The current transaction ID */ uint8_t transaction_id; + /* The DLCI (DCCH/ACCH + SAPI) of this transaction */ + uint8_t dlci; + /* To whom we belong, unique identifier of remote MM entity */ struct vlr_subscr *vsub; diff --git a/src/libmsc/a_iface.c b/src/libmsc/a_iface.c index 2b1baf0..6f2000e 100644 --- a/src/libmsc/a_iface.c +++ b/src/libmsc/a_iface.c @@ -145,14 +145,13 @@ struct gsm_subscriber_connection *conn; struct msgb *msg_resp; - /* FIXME: Set this to some meaninful value! */ - uint8_t link_id = 0x00; + uint8_t link_id = OMSC_LINKID_CB(msg); OSMO_ASSERT(msg); conn = (struct gsm_subscriber_connection *)msg->dst; OSMO_ASSERT(conn); OSMO_ASSERT(conn->a.scu); - LOGPCONN(conn, LOGL_DEBUG, "Passing DTAP message from MSC to BSC\n"); + LOGPCONN(conn, LOGL_DEBUG, "Passing DTAP message (DLCI=0x%02x) from MSC to BSC\n", link_id); msg->l3h = msg->data; msg_resp = gsm0808_create_dtap(msg, link_id); diff --git a/src/libmsc/a_iface_bssap.c b/src/libmsc/a_iface_bssap.c index 1665e23..d0d6bc0 100644 --- a/src/libmsc/a_iface_bssap.c +++ b/src/libmsc/a_iface_bssap.c @@ -610,6 +610,7 @@ { struct gsm_network *network = a_conn_info->network; struct gsm_subscriber_connection *conn; + struct dtap_header *dtap = (struct dtap_header *) msg->l2h; conn = subscr_conn_lookup_a(network, a_conn_info->conn_id); if (!conn) { @@ -620,6 +621,7 @@ /* msc_dtap expects the dtap payload in l3h */ msg->l3h = msg->l2h + 3; + OMSC_LINKID_CB(msg) = dtap->link_id; /* Forward dtap payload into the msc */ msc_dtap(conn, conn->a.conn_id, msg); diff --git a/src/libmsc/gsm_04_08.c b/src/libmsc/gsm_04_08.c index a90ff17..e5ddb44 100644 --- a/src/libmsc/gsm_04_08.c +++ b/src/libmsc/gsm_04_08.c @@ -164,6 +164,7 @@ * work that the caller no longer has to do */ if (trans) { gh->proto_discr = trans->protocol | (trans->transaction_id << 4); + OMSC_LINKID_CB(msg) = trans->dlci; } return msc_tx_dtap(conn, msg); @@ -3110,6 +3111,7 @@ /* Assign conn */ trans->conn = msc_subscr_conn_get(conn, MSC_CONN_USE_TRANS_CC); + trans->dlci = 0x00; /* SAPI=0, not SACCH */ vlr_subscr_put(vsub); } else { /* update the subscriber we deal with */ @@ -3262,6 +3264,7 @@ } /* Assign transaction */ trans->conn = msc_subscr_conn_get(conn, MSC_CONN_USE_TRANS_CC); + trans->dlci = OMSC_LINKID_CB(msg); /* DLCI as received from BSC */ cm_service_request_concludes(conn, msg); } diff --git a/src/libmsc/gsm_04_11.c b/src/libmsc/gsm_04_11.c index f82aa6d..aa60490 100644 --- a/src/libmsc/gsm_04_11.c +++ b/src/libmsc/gsm_04_11.c @@ -137,6 +137,7 @@ /* Outgoing needs the highest bit set */ gh->proto_discr = trans->protocol | (trans->transaction_id<<4); gh->msg_type = msg_type; + OMSC_LINKID_CB(msg) = trans->dlci; DEBUGP(DLSMS, "sending CP message (trans=%x)\n", trans->transaction_id); @@ -947,6 +948,7 @@ gsm411_rl_recv, gsm411_mn_send); trans->conn = msc_subscr_conn_get(conn, MSC_CONN_USE_TRANS_SMS); + trans->dlci = OMSC_LINKID_CB(msg); /* DLCI as received from BSC */ new_trans = 1; cm_service_request_concludes(conn, msg); @@ -1029,6 +1031,8 @@ trans->sms.sms = sms; trans->conn = msc_subscr_conn_get(conn, MSC_CONN_USE_TRANS_SMS); + trans->dlci = 0x03; + /* FIXME: specify SACCH in case we already have active TCH */ /* Hardcode SMSC Originating Address for now */ data = (uint8_t *)msgb_put(msg, 8); -- To view, visit https://gerrit.osmocom.org/7690 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: If511b20f52575054cab1346d99a8cb68d827fdbf Gerrit-PatchSet: 2 Gerrit-Project: osmo-msc Gerrit-Branch: master Gerrit-Owner: Harald Welte Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder From gerrit-no-reply at lists.osmocom.org Mon Apr 9 18:42:30 2018 From: gerrit-no-reply at lists.osmocom.org (Neels Hofmeyr) Date: Mon, 9 Apr 2018 18:42:30 +0000 Subject: osmo-msc[master]: VTY: add USSD processing back-end configuration In-Reply-To: References: Message-ID: Patch Set 1: (7 comments) I guess if you agree with harald's comment, then most of this will go away anyway, but here goes: https://gerrit.osmocom.org/#/c/7677/1/include/osmocom/msc/ussd.h File include/osmocom/msc/ussd.h: Line 12: /* Forward declarations to avoid mutual include */ (I'd drop the comment, we do this all the time, so everyone knows why anyway) https://gerrit.osmocom.org/#/c/7677/1/src/libmsc/msc_vty.c File src/libmsc/msc_vty.c: Line 1384: static struct cmd_node ussd_node = { How much USSD config will follow? Does it really warrant a new sub-node? Line 1414: else { the vty does pretty tight input checking, you will *never* get any other string than exactly "none" or "local" here. No need for the else. Line 1429: vty_out(vty, "none%s", VTY_NEWLINE); (in case you remove the sub-node, you could write nothing if "none" is the default.) https://gerrit.osmocom.org/#/c/7677/1/src/libmsc/ussd.c File src/libmsc/ussd.c: Line 41: const struct ss_request *req) = NULL; If external handlers will show up in the future, they need to be able to provide their handler function, so this function type should be a typedef in a .h file. However, the choice of enum values to configure which ussd handler is active looks like there will be no external handler in a modular "function-pointery" way. It feels a bit overkill to have both enum and function pointer: either have a publicly configurable function pointer, or an enum value and switch() on that value when handling ussd. Line 142: { If there's going to be a shutdown and a choice of multiple handlers, there probably need to be shutdown functions per handler? So instead of just one handler function, you'd need a struct of function pointers, a bit like struct vlr_ops. https://gerrit.osmocom.org/#/c/7677/1/src/osmo-msc/msc_main.c File src/osmo-msc/msc_main.c: Line 634: /* Initialize USSD */ ("init_ussd" pretty much says it all, right?) -- To view, visit https://gerrit.osmocom.org/7677 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I0b3c5ccea4054113e8e23109b1ab68d9f0e18497 Gerrit-PatchSet: 1 Gerrit-Project: osmo-msc Gerrit-Branch: master Gerrit-Owner: Vadim Yanitskiy Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Neels Hofmeyr Gerrit-Reviewer: Vadim Yanitskiy Gerrit-HasComments: Yes From gerrit-no-reply at lists.osmocom.org Mon Apr 9 18:43:37 2018 From: gerrit-no-reply at lists.osmocom.org (Vadim Yanitskiy) Date: Mon, 9 Apr 2018 18:43:37 +0000 Subject: [PATCH] osmo-msc[master]: libmsc/gsm_04_80.c: drop unused 'in_msg' argument In-Reply-To: References: Message-ID: Hello Neels Hofmeyr, Harald Welte, Jenkins Builder, I'd like you to reexamine a change. Please visit https://gerrit.osmocom.org/7674 to look at the new patch set (#3). libmsc/gsm_04_80.c: drop unused 'in_msg' argument It isn't used, so no need to pass it. Change-Id: I4248ebf8626d3f7f0bf273fd20cc4f64e979938b --- M include/osmocom/msc/gsm_04_80.h M src/libmsc/gsm_04_80.c M src/libmsc/ussd.c 3 files changed, 9 insertions(+), 11 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-msc refs/changes/74/7674/3 diff --git a/include/osmocom/msc/gsm_04_80.h b/include/osmocom/msc/gsm_04_80.h index 7da45a0..dedf243 100644 --- a/include/osmocom/msc/gsm_04_80.h +++ b/include/osmocom/msc/gsm_04_80.h @@ -7,10 +7,9 @@ struct gsm_subscriber_connection; int gsm0480_send_ussd_response(struct gsm_subscriber_connection *conn, - const struct msgb *in_msg, const char* response_text, + const char* response_text, const struct ss_request *req); int gsm0480_send_ussd_reject(struct gsm_subscriber_connection *conn, - const struct msgb *msg, const struct ss_request *request); int msc_send_ussd_notify(struct gsm_subscriber_connection *conn, int level, diff --git a/src/libmsc/gsm_04_80.c b/src/libmsc/gsm_04_80.c index 37e058c..12b41a1 100644 --- a/src/libmsc/gsm_04_80.c +++ b/src/libmsc/gsm_04_80.c @@ -62,8 +62,7 @@ /* Send response to a mobile-originated ProcessUnstructuredSS-Request */ int gsm0480_send_ussd_response(struct gsm_subscriber_connection *conn, - const struct msgb *in_msg, const char *response_text, - const struct ss_request *req) + const char *response_text, const struct ss_request *req) { struct msgb *msg = gsm48_msgb_alloc_name("GSM 04.08 USSD RSP"); struct gsm48_hdr *gh; @@ -110,7 +109,6 @@ } int gsm0480_send_ussd_reject(struct gsm_subscriber_connection *conn, - const struct msgb *in_msg, const struct ss_request *req) { struct msgb *msg = gsm48_msgb_alloc_name("GSM 04.08 USSD REJ"); diff --git a/src/libmsc/ussd.c b/src/libmsc/ussd.c index eeab52a..748cfbb 100644 --- a/src/libmsc/ussd.c +++ b/src/libmsc/ussd.c @@ -40,7 +40,8 @@ const char USSD_TEXT_OWN_NUMBER[] = "*#100#"; /* A network-specific handler function */ -static int send_own_number(struct gsm_subscriber_connection *conn, const struct msgb *msg, const struct ss_request *req) +static int send_own_number(struct gsm_subscriber_connection *conn, + const struct ss_request *req) { char *own_number = conn->vsub->msisdn; char response_string[GSM_EXTENSION_LENGTH + 20]; @@ -50,7 +51,7 @@ /* Need trailing CR as EOT character */ snprintf(response_string, sizeof(response_string), "Your extension is %s\r", own_number); - return gsm0480_send_ussd_response(conn, msg, response_string, req); + return gsm0480_send_ussd_response(conn, response_string, req); } /* Entrypoint - handler function common to all mobile-originated USSDs */ @@ -72,7 +73,7 @@ rc = gsm0480_decode_ss_request(gh, msgb_l3len(msg), &req); if (!rc) { DEBUGP(DMM, "Unhandled SS\n"); - rc = gsm0480_send_ussd_reject(conn, msg, &req); + rc = gsm0480_send_ussd_reject(conn, &req); return rc; } @@ -80,7 +81,7 @@ if (req.ussd_text[0] == '\0' || req.ussd_text[0] == 0xFF) { if (req.ss_code > 0) { /* Assume interrogateSS or modification of it and reject */ - rc = gsm0480_send_ussd_reject(conn, msg, &req); + rc = gsm0480_send_ussd_reject(conn, &req); return rc; } /* Still assuming a Release-Complete and returning */ @@ -90,10 +91,10 @@ msc_subscr_conn_communicating(conn); if (!strcmp(USSD_TEXT_OWN_NUMBER, (const char *)req.ussd_text)) { DEBUGP(DMM, "USSD: Own number requested\n"); - rc = send_own_number(conn, msg, &req); + rc = send_own_number(conn, &req); } else { DEBUGP(DMM, "Unhandled USSD %s\n", req.ussd_text); - rc = gsm0480_send_ussd_reject(conn, msg, &req); + rc = gsm0480_send_ussd_reject(conn, &req); } return rc; -- To view, visit https://gerrit.osmocom.org/7674 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newpatchset Gerrit-Change-Id: I4248ebf8626d3f7f0bf273fd20cc4f64e979938b Gerrit-PatchSet: 3 Gerrit-Project: osmo-msc Gerrit-Branch: master Gerrit-Owner: Vadim Yanitskiy Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Neels Hofmeyr Gerrit-Reviewer: Vadim Yanitskiy From gerrit-no-reply at lists.osmocom.org Mon Apr 9 18:43:37 2018 From: gerrit-no-reply at lists.osmocom.org (Vadim Yanitskiy) Date: Mon, 9 Apr 2018 18:43:37 +0000 Subject: [PATCH] osmo-msc[master]: libmsc/ussd.c: cosmetic: correct log level and message In-Reply-To: References: Message-ID: Hello Jenkins Builder, I'd like you to reexamine a change. Please visit https://gerrit.osmocom.org/7675 to look at the new patch set (#3). libmsc/ussd.c: cosmetic: correct log level and message Change-Id: If6c270fae54ce79c2708c99d7762ce6ff71f43d9 --- M src/libmsc/ussd.c 1 file changed, 2 insertions(+), 1 deletion(-) git pull ssh://gerrit.osmocom.org:29418/osmo-msc refs/changes/75/7675/3 diff --git a/src/libmsc/ussd.c b/src/libmsc/ussd.c index 748cfbb..ab59571 100644 --- a/src/libmsc/ussd.c +++ b/src/libmsc/ussd.c @@ -72,7 +72,8 @@ gh = msgb_l3(msg); rc = gsm0480_decode_ss_request(gh, msgb_l3len(msg), &req); if (!rc) { - DEBUGP(DMM, "Unhandled SS\n"); + LOGP(DMM, LOGL_ERROR, "SS/USSD message parsing error, " + "rejecting request...\n"); rc = gsm0480_send_ussd_reject(conn, &req); return rc; } -- To view, visit https://gerrit.osmocom.org/7675 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newpatchset Gerrit-Change-Id: If6c270fae54ce79c2708c99d7762ce6ff71f43d9 Gerrit-PatchSet: 3 Gerrit-Project: osmo-msc Gerrit-Branch: master Gerrit-Owner: Vadim Yanitskiy Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Vadim Yanitskiy From gerrit-no-reply at lists.osmocom.org Mon Apr 9 18:43:37 2018 From: gerrit-no-reply at lists.osmocom.org (Vadim Yanitskiy) Date: Mon, 9 Apr 2018 18:43:37 +0000 Subject: [PATCH] osmo-msc[master]: libmsc/ussd: don't overwrite rc if decoding failed In-Reply-To: References: Message-ID: Hello Harald Welte, Jenkins Builder, I'd like you to reexamine a change. Please visit https://gerrit.osmocom.org/7676 to look at the new patch set (#3). libmsc/ussd: don't overwrite rc if decoding failed Change-Id: I344e4b3a9aad617686a7ddbdeae5780fd8b07e58 --- M src/libmsc/ussd.c 1 file changed, 3 insertions(+), 2 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-msc refs/changes/76/7676/3 diff --git a/src/libmsc/ussd.c b/src/libmsc/ussd.c index ab59571..fe1610f 100644 --- a/src/libmsc/ussd.c +++ b/src/libmsc/ussd.c @@ -74,8 +74,9 @@ if (!rc) { LOGP(DMM, LOGL_ERROR, "SS/USSD message parsing error, " "rejecting request...\n"); - rc = gsm0480_send_ussd_reject(conn, &req); - return rc; + gsm0480_send_ussd_reject(conn, &req); + /* The GSM 04.80 API uses inverted codes (0 means error) */ + return -EPROTO; } /* Interrogation or releaseComplete? */ -- To view, visit https://gerrit.osmocom.org/7676 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newpatchset Gerrit-Change-Id: I344e4b3a9aad617686a7ddbdeae5780fd8b07e58 Gerrit-PatchSet: 3 Gerrit-Project: osmo-msc Gerrit-Branch: master Gerrit-Owner: Vadim Yanitskiy Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder From gerrit-no-reply at lists.osmocom.org Mon Apr 9 18:46:17 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Mon, 9 Apr 2018 18:46:17 +0000 Subject: osmo-msc[master]: libmsc/gsm_04_80.c: drop unused 'in_msg' argument In-Reply-To: References: Message-ID: Patch Set 3: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7674 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I4248ebf8626d3f7f0bf273fd20cc4f64e979938b Gerrit-PatchSet: 3 Gerrit-Project: osmo-msc Gerrit-Branch: master Gerrit-Owner: Vadim Yanitskiy Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Neels Hofmeyr Gerrit-Reviewer: Vadim Yanitskiy Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Mon Apr 9 18:46:55 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Mon, 9 Apr 2018 18:46:55 +0000 Subject: osmo-msc[master]: libmsc/ussd.c: cosmetic: correct log level and message In-Reply-To: References: Message-ID: Patch Set 3: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7675 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: If6c270fae54ce79c2708c99d7762ce6ff71f43d9 Gerrit-PatchSet: 3 Gerrit-Project: osmo-msc Gerrit-Branch: master Gerrit-Owner: Vadim Yanitskiy Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Vadim Yanitskiy Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Mon Apr 9 18:55:46 2018 From: gerrit-no-reply at lists.osmocom.org (Vadim Yanitskiy) Date: Mon, 9 Apr 2018 18:55:46 +0000 Subject: osmo-msc[master]: VTY: add USSD processing back-end configuration In-Reply-To: References: Message-ID: Patch Set 1: (3 comments) https://gerrit.osmocom.org/#/c/7677/1/src/libmsc/msc_vty.c File src/libmsc/msc_vty.c: Line 1384: static struct cmd_node ussd_node = { > How much USSD config will follow? Does it really warrant a new sub-node? My initial idea was to also add GSUP related configuration here. I was going to init a separate GSUP client and use it to connect to the external USSD handler (GSUP server). Now I understood that this is stupid idea, and I can reuse the existing link between both MSC and HLR... Not MSC should connect to a USSD gateway, but the gateway itself should connect to HLR. So, probably, we can avoid having a separate node. Line 1414: else { > the vty does pretty tight input checking, you will *never* get any other st Ok, thanks for a tip! I'll drop this branch. https://gerrit.osmocom.org/#/c/7677/1/src/osmo-msc/msc_main.c File src/osmo-msc/msc_main.c: Line 634: /* Initialize USSD */ > ("init_ussd" pretty much says it all, right?) Probably, it's my bad habit to comment each code block... -- To view, visit https://gerrit.osmocom.org/7677 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I0b3c5ccea4054113e8e23109b1ab68d9f0e18497 Gerrit-PatchSet: 1 Gerrit-Project: osmo-msc Gerrit-Branch: master Gerrit-Owner: Vadim Yanitskiy Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Neels Hofmeyr Gerrit-Reviewer: Vadim Yanitskiy Gerrit-HasComments: Yes From gerrit-no-reply at lists.osmocom.org Mon Apr 9 18:57:33 2018 From: gerrit-no-reply at lists.osmocom.org (Vadim Yanitskiy) Date: Mon, 9 Apr 2018 18:57:33 +0000 Subject: [MERGED] osmo-msc[master]: libmsc/ussd.c: cosmetic: correct log level and message In-Reply-To: References: Message-ID: Vadim Yanitskiy has submitted this change and it was merged. Change subject: libmsc/ussd.c: cosmetic: correct log level and message ...................................................................... libmsc/ussd.c: cosmetic: correct log level and message Change-Id: If6c270fae54ce79c2708c99d7762ce6ff71f43d9 --- M src/libmsc/ussd.c 1 file changed, 2 insertions(+), 1 deletion(-) Approvals: Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/src/libmsc/ussd.c b/src/libmsc/ussd.c index 748cfbb..ab59571 100644 --- a/src/libmsc/ussd.c +++ b/src/libmsc/ussd.c @@ -72,7 +72,8 @@ gh = msgb_l3(msg); rc = gsm0480_decode_ss_request(gh, msgb_l3len(msg), &req); if (!rc) { - DEBUGP(DMM, "Unhandled SS\n"); + LOGP(DMM, LOGL_ERROR, "SS/USSD message parsing error, " + "rejecting request...\n"); rc = gsm0480_send_ussd_reject(conn, &req); return rc; } -- To view, visit https://gerrit.osmocom.org/7675 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: If6c270fae54ce79c2708c99d7762ce6ff71f43d9 Gerrit-PatchSet: 4 Gerrit-Project: osmo-msc Gerrit-Branch: master Gerrit-Owner: Vadim Yanitskiy Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Vadim Yanitskiy From gerrit-no-reply at lists.osmocom.org Mon Apr 9 18:57:34 2018 From: gerrit-no-reply at lists.osmocom.org (Vadim Yanitskiy) Date: Mon, 9 Apr 2018 18:57:34 +0000 Subject: [MERGED] osmo-msc[master]: libmsc/gsm_04_80.c: drop unused 'in_msg' argument In-Reply-To: References: Message-ID: Vadim Yanitskiy has submitted this change and it was merged. Change subject: libmsc/gsm_04_80.c: drop unused 'in_msg' argument ...................................................................... libmsc/gsm_04_80.c: drop unused 'in_msg' argument It isn't used, so no need to pass it. Change-Id: I4248ebf8626d3f7f0bf273fd20cc4f64e979938b --- M include/osmocom/msc/gsm_04_80.h M src/libmsc/gsm_04_80.c M src/libmsc/ussd.c 3 files changed, 9 insertions(+), 11 deletions(-) Approvals: Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/include/osmocom/msc/gsm_04_80.h b/include/osmocom/msc/gsm_04_80.h index 7da45a0..dedf243 100644 --- a/include/osmocom/msc/gsm_04_80.h +++ b/include/osmocom/msc/gsm_04_80.h @@ -7,10 +7,9 @@ struct gsm_subscriber_connection; int gsm0480_send_ussd_response(struct gsm_subscriber_connection *conn, - const struct msgb *in_msg, const char* response_text, + const char* response_text, const struct ss_request *req); int gsm0480_send_ussd_reject(struct gsm_subscriber_connection *conn, - const struct msgb *msg, const struct ss_request *request); int msc_send_ussd_notify(struct gsm_subscriber_connection *conn, int level, diff --git a/src/libmsc/gsm_04_80.c b/src/libmsc/gsm_04_80.c index 37e058c..12b41a1 100644 --- a/src/libmsc/gsm_04_80.c +++ b/src/libmsc/gsm_04_80.c @@ -62,8 +62,7 @@ /* Send response to a mobile-originated ProcessUnstructuredSS-Request */ int gsm0480_send_ussd_response(struct gsm_subscriber_connection *conn, - const struct msgb *in_msg, const char *response_text, - const struct ss_request *req) + const char *response_text, const struct ss_request *req) { struct msgb *msg = gsm48_msgb_alloc_name("GSM 04.08 USSD RSP"); struct gsm48_hdr *gh; @@ -110,7 +109,6 @@ } int gsm0480_send_ussd_reject(struct gsm_subscriber_connection *conn, - const struct msgb *in_msg, const struct ss_request *req) { struct msgb *msg = gsm48_msgb_alloc_name("GSM 04.08 USSD REJ"); diff --git a/src/libmsc/ussd.c b/src/libmsc/ussd.c index eeab52a..748cfbb 100644 --- a/src/libmsc/ussd.c +++ b/src/libmsc/ussd.c @@ -40,7 +40,8 @@ const char USSD_TEXT_OWN_NUMBER[] = "*#100#"; /* A network-specific handler function */ -static int send_own_number(struct gsm_subscriber_connection *conn, const struct msgb *msg, const struct ss_request *req) +static int send_own_number(struct gsm_subscriber_connection *conn, + const struct ss_request *req) { char *own_number = conn->vsub->msisdn; char response_string[GSM_EXTENSION_LENGTH + 20]; @@ -50,7 +51,7 @@ /* Need trailing CR as EOT character */ snprintf(response_string, sizeof(response_string), "Your extension is %s\r", own_number); - return gsm0480_send_ussd_response(conn, msg, response_string, req); + return gsm0480_send_ussd_response(conn, response_string, req); } /* Entrypoint - handler function common to all mobile-originated USSDs */ @@ -72,7 +73,7 @@ rc = gsm0480_decode_ss_request(gh, msgb_l3len(msg), &req); if (!rc) { DEBUGP(DMM, "Unhandled SS\n"); - rc = gsm0480_send_ussd_reject(conn, msg, &req); + rc = gsm0480_send_ussd_reject(conn, &req); return rc; } @@ -80,7 +81,7 @@ if (req.ussd_text[0] == '\0' || req.ussd_text[0] == 0xFF) { if (req.ss_code > 0) { /* Assume interrogateSS or modification of it and reject */ - rc = gsm0480_send_ussd_reject(conn, msg, &req); + rc = gsm0480_send_ussd_reject(conn, &req); return rc; } /* Still assuming a Release-Complete and returning */ @@ -90,10 +91,10 @@ msc_subscr_conn_communicating(conn); if (!strcmp(USSD_TEXT_OWN_NUMBER, (const char *)req.ussd_text)) { DEBUGP(DMM, "USSD: Own number requested\n"); - rc = send_own_number(conn, msg, &req); + rc = send_own_number(conn, &req); } else { DEBUGP(DMM, "Unhandled USSD %s\n", req.ussd_text); - rc = gsm0480_send_ussd_reject(conn, msg, &req); + rc = gsm0480_send_ussd_reject(conn, &req); } return rc; -- To view, visit https://gerrit.osmocom.org/7674 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: I4248ebf8626d3f7f0bf273fd20cc4f64e979938b Gerrit-PatchSet: 4 Gerrit-Project: osmo-msc Gerrit-Branch: master Gerrit-Owner: Vadim Yanitskiy Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Neels Hofmeyr Gerrit-Reviewer: Vadim Yanitskiy From gerrit-no-reply at lists.osmocom.org Mon Apr 9 18:57:34 2018 From: gerrit-no-reply at lists.osmocom.org (Vadim Yanitskiy) Date: Mon, 9 Apr 2018 18:57:34 +0000 Subject: [MERGED] osmo-msc[master]: ussd.h: cosmetic: remove useless comment In-Reply-To: References: Message-ID: Vadim Yanitskiy has submitted this change and it was merged. Change subject: ussd.h: cosmetic: remove useless comment ...................................................................... ussd.h: cosmetic: remove useless comment We usually put comments for functions in *.c files, while header files are usually plain listings of the API without comments. Change-Id: I6b0d1d9e1a1b1ffb71cb9905e74f6fad2333bb65 --- M include/osmocom/msc/ussd.h 1 file changed, 0 insertions(+), 2 deletions(-) Approvals: Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/include/osmocom/msc/ussd.h b/include/osmocom/msc/ussd.h index 2665468..84a3d6a 100644 --- a/include/osmocom/msc/ussd.h +++ b/include/osmocom/msc/ussd.h @@ -1,8 +1,6 @@ #ifndef _USSD_H #define _USSD_H -/* Handler function for mobile-originated USSD messages */ - #include int handle_rcv_ussd(struct gsm_subscriber_connection *conn, struct msgb *msg); -- To view, visit https://gerrit.osmocom.org/7672 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: I6b0d1d9e1a1b1ffb71cb9905e74f6fad2333bb65 Gerrit-PatchSet: 3 Gerrit-Project: osmo-msc Gerrit-Branch: master Gerrit-Owner: Vadim Yanitskiy Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Neels Hofmeyr Gerrit-Reviewer: Vadim Yanitskiy From gerrit-no-reply at lists.osmocom.org Mon Apr 9 18:57:34 2018 From: gerrit-no-reply at lists.osmocom.org (Vadim Yanitskiy) Date: Mon, 9 Apr 2018 18:57:34 +0000 Subject: [MERGED] osmo-msc[master]: ussd.h: cosmetic: use '#pragma once' include guard In-Reply-To: References: Message-ID: Vadim Yanitskiy has submitted this change and it was merged. Change subject: ussd.h: cosmetic: use '#pragma once' include guard ...................................................................... ussd.h: cosmetic: use '#pragma once' include guard Change-Id: I0e78aa946b8e6bc7c31534751b2ee5c867bfd490 --- M include/osmocom/msc/ussd.h 1 file changed, 1 insertion(+), 4 deletions(-) Approvals: Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/include/osmocom/msc/ussd.h b/include/osmocom/msc/ussd.h index 84a3d6a..bc4227b 100644 --- a/include/osmocom/msc/ussd.h +++ b/include/osmocom/msc/ussd.h @@ -1,8 +1,5 @@ -#ifndef _USSD_H -#define _USSD_H +#pragma once #include int handle_rcv_ussd(struct gsm_subscriber_connection *conn, struct msgb *msg); - -#endif -- To view, visit https://gerrit.osmocom.org/7673 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: I0e78aa946b8e6bc7c31534751b2ee5c867bfd490 Gerrit-PatchSet: 3 Gerrit-Project: osmo-msc Gerrit-Branch: master Gerrit-Owner: Vadim Yanitskiy Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Vadim Yanitskiy From gerrit-no-reply at lists.osmocom.org Mon Apr 9 19:15:20 2018 From: gerrit-no-reply at lists.osmocom.org (Vadim Yanitskiy) Date: Mon, 9 Apr 2018 19:15:20 +0000 Subject: [PATCH] osmo-msc[master]: libmsc/ussd: implement basic USSD session management Message-ID: Review at https://gerrit.osmocom.org/7699 libmsc/ussd: implement basic USSD session management During some long period, including the OpenBSC time, the USSD processing code was (and still is) pretty trivial, so there was no transaction management, nor connection reference counting. Meanwhile, according to GSM TS 04.10, section 2.2.6 "Multiple supplementary service invocations", call independent SS/USSD transactions can exist in parallel with other CM-Layer and MM transactions. Several call independent SS/USSD transactions can be used simultaneously. Thus, a single USSD session is identified by: - MM / CM connection (pointer address), - Transaction ID (see TS GSM 04.08). This change introduces a new structure, named 'ussd_session', that corresponds to a single SS/USSD-session, and allows a subscriber to have a few concurrent sessions in parallel. Also, this facilitates the further implementation of network originated SS/USSD-sessions, and the development of external USSD interface. Change-Id: I21c6777cb88f1f4f80f75dcd39734e952bd4e8b0 --- M include/osmocom/msc/ussd.h M src/libmsc/transaction.c M src/libmsc/ussd.c M tests/msc_vlr/msc_vlr_test_authen_reuse.err M tests/msc_vlr/msc_vlr_test_gsm_authen.err M tests/msc_vlr/msc_vlr_test_gsm_ciph.err M tests/msc_vlr/msc_vlr_test_no_authen.err M tests/msc_vlr/msc_vlr_test_reject_concurrency.err M tests/msc_vlr/msc_vlr_test_umts_authen.err 9 files changed, 486 insertions(+), 134 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-msc refs/changes/99/7699/1 diff --git a/include/osmocom/msc/ussd.h b/include/osmocom/msc/ussd.h index 6c821b1..b4144ab 100644 --- a/include/osmocom/msc/ussd.h +++ b/include/osmocom/msc/ussd.h @@ -12,6 +12,40 @@ /* Forward declarations to avoid mutual include */ struct gsm_subscriber_connection; struct gsm_network; +struct gsm_trans; + +struct ussd_session { + /** + * GSM TS 04.10, section 2.2.6 "Multiple supplementary service + * invocations" says: Call independent SS transactions can exist + * in parallel with other CM-Layer and MM transactions. Several + * call independent SS transactions can be used simultaneously. + * + * So, a single USSD session is identified by: + * + * - MM / CM connection (pointer address), + * - Transaction ID (see TS GSM 04.08). + * + * Multiple operations may be sent on the same transaction + * (see session), and are identified by Invoke ID. + */ + struct gsm_subscriber_connection *conn; + struct gsm_trans *trans; + + /* A link to the global sessions list */ + struct llist_head list; + /* An unique session ID */ + uint32_t sid; +}; + +uint32_t ussd_session_id_gen(void); +struct ussd_session *ussd_session_alloc(struct gsm_network *net); +void ussd_session_free(struct ussd_session *session); + +struct ussd_session *ussd_session_get_by_sid(uint32_t sid); +struct ussd_session *ussd_session_get( + struct gsm_subscriber_connection *conn, + struct gsm_trans *trans); int ussd_init(struct gsm_network *net); void ussd_shutdown(struct gsm_network *net); diff --git a/src/libmsc/transaction.c b/src/libmsc/transaction.c index 5b033dc..f3da003 100644 --- a/src/libmsc/transaction.c +++ b/src/libmsc/transaction.c @@ -137,6 +137,9 @@ _gsm411_sms_trans_free(trans); conn_usage_token = MSC_CONN_USE_TRANS_SMS; break; + case GSM48_PDISC_NC_SS: + conn_usage_token = MSC_CONN_USE_TRANS_USSD; + break; } if (trans->paging_request) { diff --git a/src/libmsc/ussd.c b/src/libmsc/ussd.c index 22d1ba8..7f72a65 100644 --- a/src/libmsc/ussd.c +++ b/src/libmsc/ussd.c @@ -3,6 +3,7 @@ /* (C) 2008-2009 by Harald Welte * (C) 2008, 2009 by Holger Hans Peter Freyther * (C) 2009 by Mike Haben + * (C) 2018 by Vadim Yanitskiy * * All Rights Reserved * @@ -29,6 +30,9 @@ #include #include +#include +#include + #include #include #include @@ -36,9 +40,102 @@ #include #include #include +#include -static int (*ussd_handler)(struct gsm_subscriber_connection *conn, +static int (*ussd_handler)(struct ussd_session *session, const struct ss_request *req) = NULL; + +/* Global sessions list */ +static LLIST_HEAD(ussd_active_sessions); + +uint32_t ussd_session_id_gen(void) +{ + static uint32_t sid_src = 0; + return sid_src++; +} + +struct ussd_session *ussd_session_alloc(struct gsm_network *net) +{ + struct ussd_session *session; + + DEBUGP(DMM, "Allocate a new USSD session\n"); + + /* Allocate a new session */ + session = talloc_zero(net, struct ussd_session); + if (!session) + return NULL; + + /* Generate unique session ID */ + session->sid = ussd_session_id_gen(); + talloc_set_name(session, "ussd_session_%u", session->sid); + + /* Add to the session list */ + llist_add_tail(&session->list, &ussd_active_sessions); + + return session; +} + +struct ussd_session *ussd_session_get_by_sid(uint32_t sid) +{ + struct ussd_session *session; + + /* Iterate over all existing sessions */ + llist_for_each_entry(session, &ussd_active_sessions, list) { + /* Compare session ID */ + if (session->sid != sid) + continue; + + DEBUGP(DMM, "Found a USSD session (sid=%u)\n", session->sid); + return session; + } + + return NULL; +} + +struct ussd_session *ussd_session_get( + struct gsm_subscriber_connection *conn, + struct gsm_trans *trans) +{ + struct ussd_session *session; + + /* Prevent NULL-pointer dereference */ + OSMO_ASSERT(conn); + OSMO_ASSERT(trans); + + /* Iterate over all existing sessions */ + llist_for_each_entry(session, &ussd_active_sessions, list) { + /* MM / CM connection */ + if (session->conn != conn) + continue; + + /* Transaction ID */ + if (session->trans != trans) + continue; + + DEBUGP(DMM, "Found a USSD session for subscriber %s " + "(trans_id=%x, sid=%u)\n", vlr_subscr_name(conn->vsub), + session->trans->transaction_id, session->sid); + return session; + } + + return NULL; +} + +void ussd_session_free(struct ussd_session *session) +{ + DEBUGP(DMM, "Deallocate an USSD session\n"); + + /* Prevent NULL-pointer dereference */ + OSMO_ASSERT(session); + + /* Free transaction if any */ + if (session->trans) + trans_free(session->trans); + + /* Unlink and free */ + llist_del(&session->list); + talloc_free(session); +} /* Declarations of USSD strings to be recognised */ const char USSD_TEXT_OWN_NUMBER[] = "*#100#"; @@ -58,7 +155,7 @@ return gsm0480_send_ussd_response(conn, response_string, req); } -static int ussd_handler_internal(struct gsm_subscriber_connection *conn, +static int ussd_handler_internal(struct ussd_session *session, const struct ss_request *req) { int rc; @@ -67,50 +164,63 @@ if (req->ussd_text[0] == '\0' || req->ussd_text[0] == 0xFF) { if (req->ss_code > 0) { /* Assume interrogateSS or modification of it and reject */ - rc = gsm0480_send_ussd_reject(conn, req); + rc = gsm0480_send_ussd_reject(session->conn, req); return rc; } /* Still assuming a Release-Complete and returning */ return 0; } - msc_subscr_conn_communicating(conn); if (!strcmp(USSD_TEXT_OWN_NUMBER, (const char *)req->ussd_text)) { DEBUGP(DMM, "USSD: Own number requested\n"); - rc = send_own_number(conn, req); + rc = send_own_number(session->conn, req); } else { DEBUGP(DMM, "Unhandled USSD %s\n", req->ussd_text); - rc = gsm0480_send_ussd_reject(conn, req); + rc = gsm0480_send_ussd_reject(session->conn, req); } + + /* No need to keep session anymore */ + ussd_session_free(session); return rc; } -static int ussd_handler_dummy(struct gsm_subscriber_connection *conn, +static int ussd_handler_dummy(struct ussd_session *session, const struct ss_request *req) { + int rc; + DEBUGP(DMM, "USSD support disabled, rejecting request\n"); /* FIXME: use a proper problem code */ - return gsm0480_send_ussd_reject(conn, req); + rc = gsm0480_send_ussd_reject(session->conn, req); + + /* No need to keep session anymore */ + ussd_session_free(session); + + return rc; } /* Entrypoint - handler function common to all mobile-originated USSDs */ int handle_rcv_ussd(struct gsm_subscriber_connection *conn, struct msgb *msg) { - int rc; + struct gsm48_hdr *gh = msgb_l3(msg); + struct ussd_session *session; + struct gsm_trans *trans; struct ss_request req; - struct gsm48_hdr *gh; + uint8_t pdisc, tid; + int rc; - /* TODO: Use subscriber_connection ref-counting if we ever want - * to keep the connection alive due ot ongoing USSD exchange. - * As we answer everytying synchronously so far, there's no need - * yet */ + pdisc = gsm48_hdr_pdisc(gh); + tid = gsm48_hdr_trans_id_flip_ti(gh); + trans = trans_find_by_id(conn, pdisc, tid); - cm_service_request_concludes(conn, msg); + DEBUGP(DMM, "Received SS/USSD data (trans_id=%x)\n", tid); + + /* Make sure we have subscriber data */ + OSMO_ASSERT(conn->vsub); memset(&req, 0, sizeof(req)); - gh = msgb_l3(msg); rc = gsm0480_decode_ss_request(gh, msgb_l3len(msg), &req); if (!rc) { LOGP(DMM, LOGL_ERROR, "SS/USSD message parsing error, " @@ -120,8 +230,45 @@ return -EPROTO; } + /* Allocate a new transaction if required */ + if (!trans) { + DEBUGP(DMM, " -> (new transaction)\n"); + + trans = trans_alloc(conn->network, conn->vsub, pdisc, tid, 0); + if (!trans) { + LOGP(DMM, LOGL_ERROR, " -> No memory for trans\n"); + /* FIXME: send some error message */ + return -ENOMEM; + } + + trans->conn = msc_subscr_conn_get(conn, MSC_CONN_USE_TRANS_USSD); + cm_service_request_concludes(conn, msg); + } + + /* Attempt to find a session for this connection */ + session = ussd_session_get(conn, trans); + if (!session) { + /* Allocate a new session */ + session = ussd_session_alloc(conn->network); + if (!session) { + LOGP(DMM, LOGL_ERROR, " -> No memory for session\n"); + /* FIXME: send some error message */ + return -ENOMEM; + } + + /* Associate the current session data */ + session->trans = trans; + session->conn = conn; + } + OSMO_ASSERT(ussd_handler); - return ussd_handler(conn, &req); + rc = ussd_handler(session, &req); + if (rc) + return rc; + + msc_subscr_conn_communicating(conn); + + return 0; } int ussd_init(struct gsm_network *net) @@ -142,9 +289,16 @@ void ussd_shutdown(struct gsm_network *net) { + struct ussd_session *session, *session_next; + /** - * Do nothing for now * TODO: close connection with external USSD gateway - * TODO: close all active USSD connections */ + + /* Close all active USSD connections */ + llist_for_each_entry_safe(session, session_next, + &ussd_active_sessions, list) { + /* Unlink and free */ + ussd_session_free(session); + } } diff --git a/tests/msc_vlr/msc_vlr_test_authen_reuse.err b/tests/msc_vlr/msc_vlr_test_authen_reuse.err index e96fce8..c397974 100644 --- a/tests/msc_vlr/msc_vlr_test_authen_reuse.err +++ b/tests/msc_vlr/msc_vlr_test_authen_reuse.err @@ -258,17 +258,24 @@ MSC <--RAN_GERAN_A-- MS: NCSS:0x3b DREF MSISDN:42342: MSC conn use + dtap == 2 (0x6) DRLL Dispatching 04.08 message NCSS:0x3b (0xb:0x3b) +DMM Received SS/USSD data (trans_id=8) +DMM -> (new transaction) +DCC (ti 08 sub MSISDN:42342 callref 0) New transaction +DREF VLR subscr MSISDN:42342 usage increases to: 3 +DREF MSISDN:42342: MSC conn use + trans_ussd == 3 (0x26) DMM MSISDN:42342: rx msg NCSS:0x3b: received_cm_service_request changes to false -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING +DMM Allocate a new USSD session DMM USSD: Own number requested DMM MSISDN:42342: MSISDN = 42342 DMSC msc_tx 43 bytes to MSISDN:42342 via RAN_GERAN_A - DTAP --RAN_GERAN_A--> MS: NCSS:0x2a: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d - DTAP matches expected message -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_RELEASE_WHEN_UNUSED -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_COMMUNICATING}: subscr_conn_fsm_release_when_unused: releasing conn -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_COMMUNICATING}: state_chg to SUBSCR_CONN_S_RELEASED +DMM Deallocate an USSD session +DREF VLR subscr MSISDN:42342 usage decreases to: 2 +DREF MSISDN:42342: MSC conn use - trans_ussd == 2 (0x6) +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_RELEASE_WHEN_UNUSED +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: subscr_conn_fsm_release_when_unused: releasing conn +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT) DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_DONE}: Removing from parent Subscr_Conn(901700000010650) @@ -379,17 +386,24 @@ MSC <--RAN_GERAN_A-- MS: NCSS:0x3b DREF MSISDN:42342: MSC conn use + dtap == 2 (0x6) DRLL Dispatching 04.08 message NCSS:0x3b (0xb:0x3b) +DMM Received SS/USSD data (trans_id=8) +DMM -> (new transaction) +DCC (ti 08 sub MSISDN:42342 callref 0) New transaction +DREF VLR subscr MSISDN:42342 usage increases to: 3 +DREF MSISDN:42342: MSC conn use + trans_ussd == 3 (0x26) DMM MSISDN:42342: rx msg NCSS:0x3b: received_cm_service_request changes to false -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING +DMM Allocate a new USSD session DMM USSD: Own number requested DMM MSISDN:42342: MSISDN = 42342 DMSC msc_tx 43 bytes to MSISDN:42342 via RAN_GERAN_A - DTAP --RAN_GERAN_A--> MS: NCSS:0x2a: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d - DTAP matches expected message -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_RELEASE_WHEN_UNUSED -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_COMMUNICATING}: subscr_conn_fsm_release_when_unused: releasing conn -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_COMMUNICATING}: state_chg to SUBSCR_CONN_S_RELEASED +DMM Deallocate an USSD session +DREF VLR subscr MSISDN:42342 usage decreases to: 2 +DREF MSISDN:42342: MSC conn use - trans_ussd == 2 (0x6) +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_RELEASE_WHEN_UNUSED +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: subscr_conn_fsm_release_when_unused: releasing conn +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT) DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_DONE}: Removing from parent Subscr_Conn(901700000010650) @@ -708,17 +722,24 @@ MSC <--RAN_UTRAN_IU-- MS: NCSS:0x3b DREF MSISDN:42342: MSC conn use + dtap == 2 (0x6) DRLL Dispatching 04.08 message NCSS:0x3b (0xb:0x3b) +DMM Received SS/USSD data (trans_id=8) +DMM -> (new transaction) +DCC (ti 08 sub MSISDN:42342 callref 0) New transaction +DREF VLR subscr MSISDN:42342 usage increases to: 3 +DREF MSISDN:42342: MSC conn use + trans_ussd == 3 (0x26) DMM MSISDN:42342: rx msg NCSS:0x3b: received_cm_service_request changes to false -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING +DMM Allocate a new USSD session DMM USSD: Own number requested DMM MSISDN:42342: MSISDN = 42342 DMSC msc_tx 43 bytes to MSISDN:42342 via RAN_UTRAN_IU - DTAP --RAN_UTRAN_IU--> MS: NCSS:0x2a: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d - DTAP matches expected message -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_RELEASE_WHEN_UNUSED -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_COMMUNICATING}: subscr_conn_fsm_release_when_unused: releasing conn -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_COMMUNICATING}: state_chg to SUBSCR_CONN_S_RELEASED +DMM Deallocate an USSD session +DREF VLR subscr MSISDN:42342 usage decreases to: 2 +DREF MSISDN:42342: MSC conn use - trans_ussd == 2 (0x6) +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_RELEASE_WHEN_UNUSED +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: subscr_conn_fsm_release_when_unused: releasing conn +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT) DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_DONE}: Removing from parent Subscr_Conn(901700000010650) @@ -839,17 +860,24 @@ MSC <--RAN_UTRAN_IU-- MS: NCSS:0x3b DREF MSISDN:42342: MSC conn use + dtap == 2 (0x6) DRLL Dispatching 04.08 message NCSS:0x3b (0xb:0x3b) +DMM Received SS/USSD data (trans_id=8) +DMM -> (new transaction) +DCC (ti 08 sub MSISDN:42342 callref 0) New transaction +DREF VLR subscr MSISDN:42342 usage increases to: 3 +DREF MSISDN:42342: MSC conn use + trans_ussd == 3 (0x26) DMM MSISDN:42342: rx msg NCSS:0x3b: received_cm_service_request changes to false -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING +DMM Allocate a new USSD session DMM USSD: Own number requested DMM MSISDN:42342: MSISDN = 42342 DMSC msc_tx 43 bytes to MSISDN:42342 via RAN_UTRAN_IU - DTAP --RAN_UTRAN_IU--> MS: NCSS:0x2a: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d - DTAP matches expected message -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_RELEASE_WHEN_UNUSED -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_COMMUNICATING}: subscr_conn_fsm_release_when_unused: releasing conn -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_COMMUNICATING}: state_chg to SUBSCR_CONN_S_RELEASED +DMM Deallocate an USSD session +DREF VLR subscr MSISDN:42342 usage decreases to: 2 +DREF MSISDN:42342: MSC conn use - trans_ussd == 2 (0x6) +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_RELEASE_WHEN_UNUSED +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: subscr_conn_fsm_release_when_unused: releasing conn +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT) DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_DONE}: Removing from parent Subscr_Conn(901700000010650) @@ -1146,17 +1174,24 @@ MSC <--RAN_GERAN_A-- MS: NCSS:0x3b DREF MSISDN:42342: MSC conn use + dtap == 2 (0x6) DRLL Dispatching 04.08 message NCSS:0x3b (0xb:0x3b) +DMM Received SS/USSD data (trans_id=8) +DMM -> (new transaction) +DCC (ti 08 sub MSISDN:42342 callref 0) New transaction +DREF VLR subscr MSISDN:42342 usage increases to: 3 +DREF MSISDN:42342: MSC conn use + trans_ussd == 3 (0x26) DMM MSISDN:42342: rx msg NCSS:0x3b: received_cm_service_request changes to false -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING +DMM Allocate a new USSD session DMM USSD: Own number requested DMM MSISDN:42342: MSISDN = 42342 DMSC msc_tx 43 bytes to MSISDN:42342 via RAN_GERAN_A - DTAP --RAN_GERAN_A--> MS: NCSS:0x2a: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d - DTAP matches expected message -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_RELEASE_WHEN_UNUSED -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_COMMUNICATING}: subscr_conn_fsm_release_when_unused: releasing conn -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_COMMUNICATING}: state_chg to SUBSCR_CONN_S_RELEASED +DMM Deallocate an USSD session +DREF VLR subscr MSISDN:42342 usage decreases to: 2 +DREF MSISDN:42342: MSC conn use - trans_ussd == 2 (0x6) +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_RELEASE_WHEN_UNUSED +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: subscr_conn_fsm_release_when_unused: releasing conn +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT) DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_DONE}: Removing from parent Subscr_Conn(901700000010650) @@ -1253,17 +1288,24 @@ MSC <--RAN_GERAN_A-- MS: NCSS:0x3b DREF MSISDN:42342: MSC conn use + dtap == 2 (0x6) DRLL Dispatching 04.08 message NCSS:0x3b (0xb:0x3b) +DMM Received SS/USSD data (trans_id=8) +DMM -> (new transaction) +DCC (ti 08 sub MSISDN:42342 callref 0) New transaction +DREF VLR subscr MSISDN:42342 usage increases to: 3 +DREF MSISDN:42342: MSC conn use + trans_ussd == 3 (0x26) DMM MSISDN:42342: rx msg NCSS:0x3b: received_cm_service_request changes to false -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING +DMM Allocate a new USSD session DMM USSD: Own number requested DMM MSISDN:42342: MSISDN = 42342 DMSC msc_tx 43 bytes to MSISDN:42342 via RAN_GERAN_A - DTAP --RAN_GERAN_A--> MS: NCSS:0x2a: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d - DTAP matches expected message -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_RELEASE_WHEN_UNUSED -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_COMMUNICATING}: subscr_conn_fsm_release_when_unused: releasing conn -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_COMMUNICATING}: state_chg to SUBSCR_CONN_S_RELEASED +DMM Deallocate an USSD session +DREF VLR subscr MSISDN:42342 usage decreases to: 2 +DREF MSISDN:42342: MSC conn use - trans_ussd == 2 (0x6) +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_RELEASE_WHEN_UNUSED +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: subscr_conn_fsm_release_when_unused: releasing conn +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT) DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_DONE}: Removing from parent Subscr_Conn(901700000010650) @@ -1360,17 +1402,24 @@ MSC <--RAN_GERAN_A-- MS: NCSS:0x3b DREF MSISDN:42342: MSC conn use + dtap == 2 (0x6) DRLL Dispatching 04.08 message NCSS:0x3b (0xb:0x3b) +DMM Received SS/USSD data (trans_id=8) +DMM -> (new transaction) +DCC (ti 08 sub MSISDN:42342 callref 0) New transaction +DREF VLR subscr MSISDN:42342 usage increases to: 3 +DREF MSISDN:42342: MSC conn use + trans_ussd == 3 (0x26) DMM MSISDN:42342: rx msg NCSS:0x3b: received_cm_service_request changes to false -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING +DMM Allocate a new USSD session DMM USSD: Own number requested DMM MSISDN:42342: MSISDN = 42342 DMSC msc_tx 43 bytes to MSISDN:42342 via RAN_GERAN_A - DTAP --RAN_GERAN_A--> MS: NCSS:0x2a: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d - DTAP matches expected message -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_RELEASE_WHEN_UNUSED -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_COMMUNICATING}: subscr_conn_fsm_release_when_unused: releasing conn -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_COMMUNICATING}: state_chg to SUBSCR_CONN_S_RELEASED +DMM Deallocate an USSD session +DREF VLR subscr MSISDN:42342 usage decreases to: 2 +DREF MSISDN:42342: MSC conn use - trans_ussd == 2 (0x6) +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_RELEASE_WHEN_UNUSED +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: subscr_conn_fsm_release_when_unused: releasing conn +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT) DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_DONE}: Removing from parent Subscr_Conn(901700000010650) @@ -1689,17 +1738,24 @@ MSC <--RAN_UTRAN_IU-- MS: NCSS:0x3b DREF MSISDN:42342: MSC conn use + dtap == 2 (0x6) DRLL Dispatching 04.08 message NCSS:0x3b (0xb:0x3b) +DMM Received SS/USSD data (trans_id=8) +DMM -> (new transaction) +DCC (ti 08 sub MSISDN:42342 callref 0) New transaction +DREF VLR subscr MSISDN:42342 usage increases to: 3 +DREF MSISDN:42342: MSC conn use + trans_ussd == 3 (0x26) DMM MSISDN:42342: rx msg NCSS:0x3b: received_cm_service_request changes to false -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING +DMM Allocate a new USSD session DMM USSD: Own number requested DMM MSISDN:42342: MSISDN = 42342 DMSC msc_tx 43 bytes to MSISDN:42342 via RAN_UTRAN_IU - DTAP --RAN_UTRAN_IU--> MS: NCSS:0x2a: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d - DTAP matches expected message -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_RELEASE_WHEN_UNUSED -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_COMMUNICATING}: subscr_conn_fsm_release_when_unused: releasing conn -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_COMMUNICATING}: state_chg to SUBSCR_CONN_S_RELEASED +DMM Deallocate an USSD session +DREF VLR subscr MSISDN:42342 usage decreases to: 2 +DREF MSISDN:42342: MSC conn use - trans_ussd == 2 (0x6) +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_RELEASE_WHEN_UNUSED +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: subscr_conn_fsm_release_when_unused: releasing conn +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT) DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_DONE}: Removing from parent Subscr_Conn(901700000010650) @@ -1806,17 +1862,24 @@ MSC <--RAN_UTRAN_IU-- MS: NCSS:0x3b DREF MSISDN:42342: MSC conn use + dtap == 2 (0x6) DRLL Dispatching 04.08 message NCSS:0x3b (0xb:0x3b) +DMM Received SS/USSD data (trans_id=8) +DMM -> (new transaction) +DCC (ti 08 sub MSISDN:42342 callref 0) New transaction +DREF VLR subscr MSISDN:42342 usage increases to: 3 +DREF MSISDN:42342: MSC conn use + trans_ussd == 3 (0x26) DMM MSISDN:42342: rx msg NCSS:0x3b: received_cm_service_request changes to false -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING +DMM Allocate a new USSD session DMM USSD: Own number requested DMM MSISDN:42342: MSISDN = 42342 DMSC msc_tx 43 bytes to MSISDN:42342 via RAN_UTRAN_IU - DTAP --RAN_UTRAN_IU--> MS: NCSS:0x2a: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d - DTAP matches expected message -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_RELEASE_WHEN_UNUSED -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_COMMUNICATING}: subscr_conn_fsm_release_when_unused: releasing conn -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_COMMUNICATING}: state_chg to SUBSCR_CONN_S_RELEASED +DMM Deallocate an USSD session +DREF VLR subscr MSISDN:42342 usage decreases to: 2 +DREF MSISDN:42342: MSC conn use - trans_ussd == 2 (0x6) +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_RELEASE_WHEN_UNUSED +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: subscr_conn_fsm_release_when_unused: releasing conn +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT) DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_DONE}: Removing from parent Subscr_Conn(901700000010650) @@ -1923,17 +1986,24 @@ MSC <--RAN_UTRAN_IU-- MS: NCSS:0x3b DREF MSISDN:42342: MSC conn use + dtap == 2 (0x6) DRLL Dispatching 04.08 message NCSS:0x3b (0xb:0x3b) +DMM Received SS/USSD data (trans_id=8) +DMM -> (new transaction) +DCC (ti 08 sub MSISDN:42342 callref 0) New transaction +DREF VLR subscr MSISDN:42342 usage increases to: 3 +DREF MSISDN:42342: MSC conn use + trans_ussd == 3 (0x26) DMM MSISDN:42342: rx msg NCSS:0x3b: received_cm_service_request changes to false -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING +DMM Allocate a new USSD session DMM USSD: Own number requested DMM MSISDN:42342: MSISDN = 42342 DMSC msc_tx 43 bytes to MSISDN:42342 via RAN_UTRAN_IU - DTAP --RAN_UTRAN_IU--> MS: NCSS:0x2a: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d - DTAP matches expected message -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_RELEASE_WHEN_UNUSED -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_COMMUNICATING}: subscr_conn_fsm_release_when_unused: releasing conn -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_COMMUNICATING}: state_chg to SUBSCR_CONN_S_RELEASED +DMM Deallocate an USSD session +DREF VLR subscr MSISDN:42342 usage decreases to: 2 +DREF MSISDN:42342: MSC conn use - trans_ussd == 2 (0x6) +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_RELEASE_WHEN_UNUSED +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: subscr_conn_fsm_release_when_unused: releasing conn +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT) DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_DONE}: Removing from parent Subscr_Conn(901700000010650) @@ -2244,17 +2314,24 @@ MSC <--RAN_GERAN_A-- MS: NCSS:0x3b DREF MSISDN:42342: MSC conn use + dtap == 2 (0x6) DRLL Dispatching 04.08 message NCSS:0x3b (0xb:0x3b) +DMM Received SS/USSD data (trans_id=8) +DMM -> (new transaction) +DCC (ti 08 sub MSISDN:42342 callref 0) New transaction +DREF VLR subscr MSISDN:42342 usage increases to: 3 +DREF MSISDN:42342: MSC conn use + trans_ussd == 3 (0x26) DMM MSISDN:42342: rx msg NCSS:0x3b: received_cm_service_request changes to false -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING +DMM Allocate a new USSD session DMM USSD: Own number requested DMM MSISDN:42342: MSISDN = 42342 DMSC msc_tx 43 bytes to MSISDN:42342 via RAN_GERAN_A - DTAP --RAN_GERAN_A--> MS: NCSS:0x2a: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d - DTAP matches expected message -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_RELEASE_WHEN_UNUSED -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_COMMUNICATING}: subscr_conn_fsm_release_when_unused: releasing conn -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_COMMUNICATING}: state_chg to SUBSCR_CONN_S_RELEASED +DMM Deallocate an USSD session +DREF VLR subscr MSISDN:42342 usage decreases to: 2 +DREF MSISDN:42342: MSC conn use - trans_ussd == 2 (0x6) +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_RELEASE_WHEN_UNUSED +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: subscr_conn_fsm_release_when_unused: releasing conn +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT) DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_DONE}: Removing from parent Subscr_Conn(901700000010650) @@ -2587,17 +2664,24 @@ MSC <--RAN_UTRAN_IU-- MS: NCSS:0x3b DREF MSISDN:42342: MSC conn use + dtap == 2 (0x6) DRLL Dispatching 04.08 message NCSS:0x3b (0xb:0x3b) +DMM Received SS/USSD data (trans_id=8) +DMM -> (new transaction) +DCC (ti 08 sub MSISDN:42342 callref 0) New transaction +DREF VLR subscr MSISDN:42342 usage increases to: 3 +DREF MSISDN:42342: MSC conn use + trans_ussd == 3 (0x26) DMM MSISDN:42342: rx msg NCSS:0x3b: received_cm_service_request changes to false -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING +DMM Allocate a new USSD session DMM USSD: Own number requested DMM MSISDN:42342: MSISDN = 42342 DMSC msc_tx 43 bytes to MSISDN:42342 via RAN_UTRAN_IU - DTAP --RAN_UTRAN_IU--> MS: NCSS:0x2a: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d - DTAP matches expected message -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_RELEASE_WHEN_UNUSED -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_COMMUNICATING}: subscr_conn_fsm_release_when_unused: releasing conn -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_COMMUNICATING}: state_chg to SUBSCR_CONN_S_RELEASED +DMM Deallocate an USSD session +DREF VLR subscr MSISDN:42342 usage decreases to: 2 +DREF MSISDN:42342: MSC conn use - trans_ussd == 2 (0x6) +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_RELEASE_WHEN_UNUSED +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: subscr_conn_fsm_release_when_unused: releasing conn +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT) DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_DONE}: Removing from parent Subscr_Conn(901700000010650) diff --git a/tests/msc_vlr/msc_vlr_test_gsm_authen.err b/tests/msc_vlr/msc_vlr_test_gsm_authen.err index 35bda27..469d93a 100644 --- a/tests/msc_vlr/msc_vlr_test_gsm_authen.err +++ b/tests/msc_vlr/msc_vlr_test_gsm_authen.err @@ -251,17 +251,24 @@ MSC <--RAN_GERAN_A-- MS: NCSS:0x3b DREF MSISDN:46071: MSC conn use + dtap == 2 (0x6) DRLL Dispatching 04.08 message NCSS:0x3b (0xb:0x3b) +DMM Received SS/USSD data (trans_id=8) +DMM -> (new transaction) +DCC (ti 08 sub MSISDN:46071 callref 0) New transaction +DREF VLR subscr MSISDN:46071 usage increases to: 3 +DREF MSISDN:46071: MSC conn use + trans_ussd == 3 (0x26) DMM MSISDN:46071: rx msg NCSS:0x3b: received_cm_service_request changes to false -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING +DMM Allocate a new USSD session DMM USSD: Own number requested DMM MSISDN:46071: MSISDN = 46071 DMSC msc_tx 43 bytes to MSISDN:46071 via RAN_GERAN_A - DTAP --RAN_GERAN_A--> MS: NCSS:0x2a: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d27310cd06bbc51a0d - DTAP matches expected message -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_RELEASE_WHEN_UNUSED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_COMMUNICATING}: subscr_conn_fsm_release_when_unused: releasing conn -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_COMMUNICATING}: state_chg to SUBSCR_CONN_S_RELEASED +DMM Deallocate an USSD session +DREF VLR subscr MSISDN:46071 usage decreases to: 2 +DREF MSISDN:46071: MSC conn use - trans_ussd == 2 (0x6) +DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_RELEASE_WHEN_UNUSED +DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: subscr_conn_fsm_release_when_unused: releasing conn +DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT) DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_DONE}: Removing from parent Subscr_Conn(901700000004620) @@ -736,17 +743,24 @@ MSC <--RAN_GERAN_A-- MS: NCSS:0x3b DREF MSISDN:46071: MSC conn use + dtap == 2 (0x6) DRLL Dispatching 04.08 message NCSS:0x3b (0xb:0x3b) +DMM Received SS/USSD data (trans_id=8) +DMM -> (new transaction) +DCC (ti 08 sub MSISDN:46071 callref 0) New transaction +DREF VLR subscr MSISDN:46071 usage increases to: 3 +DREF MSISDN:46071: MSC conn use + trans_ussd == 3 (0x26) DMM MSISDN:46071: rx msg NCSS:0x3b: received_cm_service_request changes to false -DMM Subscr_Conn(50462976){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING -DMM Subscr_Conn(50462976){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING +DMM Allocate a new USSD session DMM USSD: Own number requested DMM MSISDN:46071: MSISDN = 46071 DMSC msc_tx 43 bytes to MSISDN:46071 via RAN_GERAN_A - DTAP --RAN_GERAN_A--> MS: NCSS:0x2a: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d27310cd06bbc51a0d - DTAP matches expected message -DMM Subscr_Conn(50462976){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_RELEASE_WHEN_UNUSED -DMM Subscr_Conn(50462976){SUBSCR_CONN_S_COMMUNICATING}: subscr_conn_fsm_release_when_unused: releasing conn -DMM Subscr_Conn(50462976){SUBSCR_CONN_S_COMMUNICATING}: state_chg to SUBSCR_CONN_S_RELEASED +DMM Deallocate an USSD session +DREF VLR subscr MSISDN:46071 usage decreases to: 2 +DREF MSISDN:46071: MSC conn use - trans_ussd == 2 (0x6) +DMM Subscr_Conn(50462976){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_RELEASE_WHEN_UNUSED +DMM Subscr_Conn(50462976){SUBSCR_CONN_S_ACCEPTED}: subscr_conn_fsm_release_when_unused: releasing conn +DMM Subscr_Conn(50462976){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn(50462976){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT) DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_DONE}: Removing from parent Subscr_Conn(50462976) @@ -1805,17 +1819,24 @@ MSC <--RAN_GERAN_A-- MS: NCSS:0x3b DREF MSISDN:42342: MSC conn use + dtap == 2 (0x6) DRLL Dispatching 04.08 message NCSS:0x3b (0xb:0x3b) +DMM Received SS/USSD data (trans_id=8) +DMM -> (new transaction) +DCC (ti 08 sub MSISDN:42342 callref 0) New transaction +DREF VLR subscr MSISDN:42342 usage increases to: 3 +DREF MSISDN:42342: MSC conn use + trans_ussd == 3 (0x26) DMM MSISDN:42342: rx msg NCSS:0x3b: received_cm_service_request changes to false -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING +DMM Allocate a new USSD session DMM USSD: Own number requested DMM MSISDN:42342: MSISDN = 42342 DMSC msc_tx 43 bytes to MSISDN:42342 via RAN_GERAN_A - DTAP --RAN_GERAN_A--> MS: NCSS:0x2a: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d - DTAP matches expected message -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_RELEASE_WHEN_UNUSED -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_COMMUNICATING}: subscr_conn_fsm_release_when_unused: releasing conn -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_COMMUNICATING}: state_chg to SUBSCR_CONN_S_RELEASED +DMM Deallocate an USSD session +DREF VLR subscr MSISDN:42342 usage decreases to: 2 +DREF MSISDN:42342: MSC conn use - trans_ussd == 2 (0x6) +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_RELEASE_WHEN_UNUSED +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: subscr_conn_fsm_release_when_unused: releasing conn +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT) DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_DONE}: Removing from parent Subscr_Conn(901700000010650) diff --git a/tests/msc_vlr/msc_vlr_test_gsm_ciph.err b/tests/msc_vlr/msc_vlr_test_gsm_ciph.err index 632f13e..322f775 100644 --- a/tests/msc_vlr/msc_vlr_test_gsm_ciph.err +++ b/tests/msc_vlr/msc_vlr_test_gsm_ciph.err @@ -277,17 +277,24 @@ MSC <--RAN_GERAN_A-- MS: NCSS:0x3b DREF MSISDN:46071: MSC conn use + dtap == 2 (0x6) DRLL Dispatching 04.08 message NCSS:0x3b (0xb:0x3b) +DMM Received SS/USSD data (trans_id=8) +DMM -> (new transaction) +DCC (ti 08 sub MSISDN:46071 callref 0) New transaction +DREF VLR subscr MSISDN:46071 usage increases to: 3 +DREF MSISDN:46071: MSC conn use + trans_ussd == 3 (0x26) DMM MSISDN:46071: rx msg NCSS:0x3b: received_cm_service_request changes to false -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING +DMM Allocate a new USSD session DMM USSD: Own number requested DMM MSISDN:46071: MSISDN = 46071 DMSC msc_tx 43 bytes to MSISDN:46071 via RAN_GERAN_A - DTAP --RAN_GERAN_A--> MS: NCSS:0x2a: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d27310cd06bbc51a0d - DTAP matches expected message -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_RELEASE_WHEN_UNUSED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_COMMUNICATING}: subscr_conn_fsm_release_when_unused: releasing conn -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_COMMUNICATING}: state_chg to SUBSCR_CONN_S_RELEASED +DMM Deallocate an USSD session +DREF VLR subscr MSISDN:46071 usage decreases to: 2 +DREF MSISDN:46071: MSC conn use - trans_ussd == 2 (0x6) +DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_RELEASE_WHEN_UNUSED +DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: subscr_conn_fsm_release_when_unused: releasing conn +DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT) DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_DONE}: Removing from parent Subscr_Conn(901700000004620) @@ -811,17 +818,24 @@ MSC <--RAN_GERAN_A-- MS: NCSS:0x3b DREF MSISDN:46071: MSC conn use + dtap == 2 (0x6) DRLL Dispatching 04.08 message NCSS:0x3b (0xb:0x3b) +DMM Received SS/USSD data (trans_id=8) +DMM -> (new transaction) +DCC (ti 08 sub MSISDN:46071 callref 0) New transaction +DREF VLR subscr MSISDN:46071 usage increases to: 3 +DREF MSISDN:46071: MSC conn use + trans_ussd == 3 (0x26) DMM MSISDN:46071: rx msg NCSS:0x3b: received_cm_service_request changes to false -DMM Subscr_Conn(50462976){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING -DMM Subscr_Conn(50462976){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING +DMM Allocate a new USSD session DMM USSD: Own number requested DMM MSISDN:46071: MSISDN = 46071 DMSC msc_tx 43 bytes to MSISDN:46071 via RAN_GERAN_A - DTAP --RAN_GERAN_A--> MS: NCSS:0x2a: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d27310cd06bbc51a0d - DTAP matches expected message -DMM Subscr_Conn(50462976){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_RELEASE_WHEN_UNUSED -DMM Subscr_Conn(50462976){SUBSCR_CONN_S_COMMUNICATING}: subscr_conn_fsm_release_when_unused: releasing conn -DMM Subscr_Conn(50462976){SUBSCR_CONN_S_COMMUNICATING}: state_chg to SUBSCR_CONN_S_RELEASED +DMM Deallocate an USSD session +DREF VLR subscr MSISDN:46071 usage decreases to: 2 +DREF MSISDN:46071: MSC conn use - trans_ussd == 2 (0x6) +DMM Subscr_Conn(50462976){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_RELEASE_WHEN_UNUSED +DMM Subscr_Conn(50462976){SUBSCR_CONN_S_ACCEPTED}: subscr_conn_fsm_release_when_unused: releasing conn +DMM Subscr_Conn(50462976){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn(50462976){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT) DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_DONE}: Removing from parent Subscr_Conn(50462976) @@ -1979,17 +1993,24 @@ MSC <--RAN_GERAN_A-- MS: NCSS:0x3b DREF MSISDN:42342: MSC conn use + dtap == 2 (0x6) DRLL Dispatching 04.08 message NCSS:0x3b (0xb:0x3b) +DMM Received SS/USSD data (trans_id=8) +DMM -> (new transaction) +DCC (ti 08 sub MSISDN:42342 callref 0) New transaction +DREF VLR subscr MSISDN:42342 usage increases to: 3 +DREF MSISDN:42342: MSC conn use + trans_ussd == 3 (0x26) DMM MSISDN:42342: rx msg NCSS:0x3b: received_cm_service_request changes to false -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING +DMM Allocate a new USSD session DMM USSD: Own number requested DMM MSISDN:42342: MSISDN = 42342 DMSC msc_tx 43 bytes to MSISDN:42342 via RAN_GERAN_A - DTAP --RAN_GERAN_A--> MS: NCSS:0x2a: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d - DTAP matches expected message -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_RELEASE_WHEN_UNUSED -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_COMMUNICATING}: subscr_conn_fsm_release_when_unused: releasing conn -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_COMMUNICATING}: state_chg to SUBSCR_CONN_S_RELEASED +DMM Deallocate an USSD session +DREF VLR subscr MSISDN:42342 usage decreases to: 2 +DREF MSISDN:42342: MSC conn use - trans_ussd == 2 (0x6) +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_RELEASE_WHEN_UNUSED +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: subscr_conn_fsm_release_when_unused: releasing conn +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT) DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_DONE}: Removing from parent Subscr_Conn(901700000010650) diff --git a/tests/msc_vlr/msc_vlr_test_no_authen.err b/tests/msc_vlr/msc_vlr_test_no_authen.err index be2d537..fdba38f 100644 --- a/tests/msc_vlr/msc_vlr_test_no_authen.err +++ b/tests/msc_vlr/msc_vlr_test_no_authen.err @@ -165,17 +165,24 @@ MSC <--RAN_GERAN_A-- MS: NCSS:0x3b DREF MSISDN:46071: MSC conn use + dtap == 2 (0x6) DRLL Dispatching 04.08 message NCSS:0x3b (0xb:0x3b) +DMM Received SS/USSD data (trans_id=8) +DMM -> (new transaction) +DCC (ti 08 sub MSISDN:46071 callref 0) New transaction +DREF VLR subscr MSISDN:46071 usage increases to: 3 +DREF MSISDN:46071: MSC conn use + trans_ussd == 3 (0x26) DMM MSISDN:46071: rx msg NCSS:0x3b: received_cm_service_request changes to false -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING +DMM Allocate a new USSD session DMM USSD: Own number requested DMM MSISDN:46071: MSISDN = 46071 DMSC msc_tx 43 bytes to MSISDN:46071 via RAN_GERAN_A - DTAP --RAN_GERAN_A--> MS: NCSS:0x2a: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d27310cd06bbc51a0d - DTAP matches expected message -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_RELEASE_WHEN_UNUSED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_COMMUNICATING}: subscr_conn_fsm_release_when_unused: releasing conn -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_COMMUNICATING}: state_chg to SUBSCR_CONN_S_RELEASED +DMM Deallocate an USSD session +DREF VLR subscr MSISDN:46071 usage decreases to: 2 +DREF MSISDN:46071: MSC conn use - trans_ussd == 2 (0x6) +DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_RELEASE_WHEN_UNUSED +DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: subscr_conn_fsm_release_when_unused: releasing conn +DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT) DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_DONE}: Removing from parent Subscr_Conn(901700000004620) @@ -526,17 +533,24 @@ MSC <--RAN_GERAN_A-- MS: NCSS:0x3b DREF MSISDN:46071: MSC conn use + dtap == 2 (0x6) DRLL Dispatching 04.08 message NCSS:0x3b (0xb:0x3b) +DMM Received SS/USSD data (trans_id=8) +DMM -> (new transaction) +DCC (ti 08 sub MSISDN:46071 callref 0) New transaction +DREF VLR subscr MSISDN:46071 usage increases to: 3 +DREF MSISDN:46071: MSC conn use + trans_ussd == 3 (0x26) DMM MSISDN:46071: rx msg NCSS:0x3b: received_cm_service_request changes to false -DMM Subscr_Conn(50462976){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING -DMM Subscr_Conn(50462976){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING +DMM Allocate a new USSD session DMM USSD: Own number requested DMM MSISDN:46071: MSISDN = 46071 DMSC msc_tx 43 bytes to MSISDN:46071 via RAN_GERAN_A - DTAP --RAN_GERAN_A--> MS: NCSS:0x2a: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d27310cd06bbc51a0d - DTAP matches expected message -DMM Subscr_Conn(50462976){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_RELEASE_WHEN_UNUSED -DMM Subscr_Conn(50462976){SUBSCR_CONN_S_COMMUNICATING}: subscr_conn_fsm_release_when_unused: releasing conn -DMM Subscr_Conn(50462976){SUBSCR_CONN_S_COMMUNICATING}: state_chg to SUBSCR_CONN_S_RELEASED +DMM Deallocate an USSD session +DREF VLR subscr MSISDN:46071 usage decreases to: 2 +DREF MSISDN:46071: MSC conn use - trans_ussd == 2 (0x6) +DMM Subscr_Conn(50462976){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_RELEASE_WHEN_UNUSED +DMM Subscr_Conn(50462976){SUBSCR_CONN_S_ACCEPTED}: subscr_conn_fsm_release_when_unused: releasing conn +DMM Subscr_Conn(50462976){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn(50462976){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT) DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_DONE}: Removing from parent Subscr_Conn(50462976) diff --git a/tests/msc_vlr/msc_vlr_test_reject_concurrency.err b/tests/msc_vlr/msc_vlr_test_reject_concurrency.err index bd7b47c..abcf50c 100644 --- a/tests/msc_vlr/msc_vlr_test_reject_concurrency.err +++ b/tests/msc_vlr/msc_vlr_test_reject_concurrency.err @@ -1096,17 +1096,24 @@ MSC <--RAN_GERAN_A-- MS: NCSS:0x3b DREF MSISDN:46071: MSC conn use + dtap == 2 (0x6) DRLL Dispatching 04.08 message NCSS:0x3b (0xb:0x3b) +DMM Received SS/USSD data (trans_id=8) +DMM -> (new transaction) +DCC (ti 08 sub MSISDN:46071 callref 0) New transaction +DREF VLR subscr MSISDN:46071 usage increases to: 3 +DREF MSISDN:46071: MSC conn use + trans_ussd == 3 (0x26) DMM MSISDN:46071: rx msg NCSS:0x3b: received_cm_service_request changes to false -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING +DMM Allocate a new USSD session DMM USSD: Own number requested DMM MSISDN:46071: MSISDN = 46071 DMSC msc_tx 43 bytes to MSISDN:46071 via RAN_GERAN_A - DTAP --RAN_GERAN_A--> MS: NCSS:0x2a: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d27310cd06bbc51a0d - DTAP matches expected message -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_RELEASE_WHEN_UNUSED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_COMMUNICATING}: subscr_conn_fsm_release_when_unused: releasing conn -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_COMMUNICATING}: state_chg to SUBSCR_CONN_S_RELEASED +DMM Deallocate an USSD session +DREF VLR subscr MSISDN:46071 usage decreases to: 2 +DREF MSISDN:46071: MSC conn use - trans_ussd == 2 (0x6) +DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_RELEASE_WHEN_UNUSED +DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: subscr_conn_fsm_release_when_unused: releasing conn +DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT) DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_DONE}: Removing from parent Subscr_Conn(901700000004620) diff --git a/tests/msc_vlr/msc_vlr_test_umts_authen.err b/tests/msc_vlr/msc_vlr_test_umts_authen.err index ddfbb11..b3cdc60 100644 --- a/tests/msc_vlr/msc_vlr_test_umts_authen.err +++ b/tests/msc_vlr/msc_vlr_test_umts_authen.err @@ -264,17 +264,24 @@ MSC <--RAN_GERAN_A-- MS: NCSS:0x3b DREF MSISDN:42342: MSC conn use + dtap == 2 (0x6) DRLL Dispatching 04.08 message NCSS:0x3b (0xb:0x3b) +DMM Received SS/USSD data (trans_id=8) +DMM -> (new transaction) +DCC (ti 08 sub MSISDN:42342 callref 0) New transaction +DREF VLR subscr MSISDN:42342 usage increases to: 3 +DREF MSISDN:42342: MSC conn use + trans_ussd == 3 (0x26) DMM MSISDN:42342: rx msg NCSS:0x3b: received_cm_service_request changes to false -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING +DMM Allocate a new USSD session DMM USSD: Own number requested DMM MSISDN:42342: MSISDN = 42342 DMSC msc_tx 43 bytes to MSISDN:42342 via RAN_GERAN_A - DTAP --RAN_GERAN_A--> MS: NCSS:0x2a: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d - DTAP matches expected message -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_RELEASE_WHEN_UNUSED -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_COMMUNICATING}: subscr_conn_fsm_release_when_unused: releasing conn -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_COMMUNICATING}: state_chg to SUBSCR_CONN_S_RELEASED +DMM Deallocate an USSD session +DREF VLR subscr MSISDN:42342 usage decreases to: 2 +DREF MSISDN:42342: MSC conn use - trans_ussd == 2 (0x6) +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_RELEASE_WHEN_UNUSED +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: subscr_conn_fsm_release_when_unused: releasing conn +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT) DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_DONE}: Removing from parent Subscr_Conn(901700000010650) @@ -749,17 +756,24 @@ MSC <--RAN_UTRAN_IU-- MS: NCSS:0x3b DREF MSISDN:42342: MSC conn use + dtap == 2 (0x6) DRLL Dispatching 04.08 message NCSS:0x3b (0xb:0x3b) +DMM Received SS/USSD data (trans_id=8) +DMM -> (new transaction) +DCC (ti 08 sub MSISDN:42342 callref 0) New transaction +DREF VLR subscr MSISDN:42342 usage increases to: 3 +DREF MSISDN:42342: MSC conn use + trans_ussd == 3 (0x26) DMM MSISDN:42342: rx msg NCSS:0x3b: received_cm_service_request changes to false -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING +DMM Allocate a new USSD session DMM USSD: Own number requested DMM MSISDN:42342: MSISDN = 42342 DMSC msc_tx 43 bytes to MSISDN:42342 via RAN_UTRAN_IU - DTAP --RAN_UTRAN_IU--> MS: NCSS:0x2a: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d - DTAP matches expected message -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_RELEASE_WHEN_UNUSED -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_COMMUNICATING}: subscr_conn_fsm_release_when_unused: releasing conn -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_COMMUNICATING}: state_chg to SUBSCR_CONN_S_RELEASED +DMM Deallocate an USSD session +DREF VLR subscr MSISDN:42342 usage decreases to: 2 +DREF MSISDN:42342: MSC conn use - trans_ussd == 2 (0x6) +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_RELEASE_WHEN_UNUSED +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: subscr_conn_fsm_release_when_unused: releasing conn +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT) DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_DONE}: Removing from parent Subscr_Conn(901700000010650) -- To view, visit https://gerrit.osmocom.org/7699 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I21c6777cb88f1f4f80f75dcd39734e952bd4e8b0 Gerrit-PatchSet: 1 Gerrit-Project: osmo-msc Gerrit-Branch: master Gerrit-Owner: Vadim Yanitskiy From gerrit-no-reply at lists.osmocom.org Mon Apr 9 19:19:06 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Mon, 9 Apr 2018 19:19:06 +0000 Subject: osmo-msc[master]: libmsc/ussd: don't overwrite rc if decoding failed In-Reply-To: References: Message-ID: Patch Set 4: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7676 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I344e4b3a9aad617686a7ddbdeae5780fd8b07e58 Gerrit-PatchSet: 4 Gerrit-Project: osmo-msc Gerrit-Branch: master Gerrit-Owner: Vadim Yanitskiy Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-HasComments: No From jenkins at lists.osmocom.org Mon Apr 9 19:20:12 2018 From: jenkins at lists.osmocom.org (jenkins at lists.osmocom.org) Date: Mon, 9 Apr 2018 19:20:12 +0000 (UTC) Subject: =?UTF-8?Q?Jenkins_build_is_back_to_normal_:_master-osmo-gmr_=C2=BB_a1=3Dd?= =?UTF-8?Q?efault,a2=3Ddefault,a3=3Ddefault,osmocom-master-debian9_#350?= In-Reply-To: <809358727.196.1523295475084.JavaMail.jenkins@jenkins.osmocom.org> References: <809358727.196.1523295475084.JavaMail.jenkins@jenkins.osmocom.org> Message-ID: <1226090860.199.1523301612372.JavaMail.jenkins@jenkins.osmocom.org> See From gerrit-no-reply at lists.osmocom.org Mon Apr 9 19:32:42 2018 From: gerrit-no-reply at lists.osmocom.org (Vadim Yanitskiy) Date: Mon, 9 Apr 2018 19:32:42 +0000 Subject: [PATCH] libosmocore[master]: GSUP: add USSD messages support according to 3GPP TS 09.02 In-Reply-To: References: Message-ID: Hello Harald Welte, Jenkins Builder, I'd like you to reexamine a change. Please visit https://gerrit.osmocom.org/7600 to look at the new patch set (#4). GSUP: add USSD messages support according to 3GPP TS 09.02 In order to be able to transfer USSD messages via GSUP, this change introduces the new message types: - OSMO_GSUP_MSGT_PROC_USS_REQ, - OSMO_GSUP_MSGT_USS_REQ, - OSMO_GSUP_MSGT_USS_NOTIFY, which correspond to MAP message types defined by 3GPP TS 09.02 "Mobile Application Part (MAP) specification". The 'osmo_gsup_message' structure was extended with a child structure that represents a single decoded and/or to be encoded SS/USSD message. Change-Id: Ie17a78043a35fffbdd59e80fd2b2da39cce5e532 Related: OS#1597 --- M TODO-RELEASE M include/osmocom/gsm/gsup.h M src/gsm/gsup.c M tests/gsup/gsup_test.c M tests/gsup/gsup_test.err M tests/gsup/gsup_test.ok 6 files changed, 289 insertions(+), 11 deletions(-) git pull ssh://gerrit.osmocom.org:29418/libosmocore refs/changes/00/7600/4 diff --git a/TODO-RELEASE b/TODO-RELEASE index 65b0fa8..a7cc302 100644 --- a/TODO-RELEASE +++ b/TODO-RELEASE @@ -15,3 +15,4 @@ ussd_data_len, and ussd_data_dcs => ABI changed gsup gsup.h the 'osmo_gsup_message' struct extended with session information => ABI changed + SS/USSD information => ABI changed diff --git a/include/osmocom/gsm/gsup.h b/include/osmocom/gsm/gsup.h index 08f89e1..a152fde 100644 --- a/include/osmocom/gsm/gsup.h +++ b/include/osmocom/gsm/gsup.h @@ -93,6 +93,18 @@ */ OSMO_GSUP_SESSION_ID_IE = 0x30, OSMO_GSUP_SESSION_STATE_IE = 0x31, + + /** + * 3GPP TS 09.02 "Mobile Application Part (MAP) specification", + * Section 7.6.4 "Supplementary services parameters" + * Section 7.6.3 "Subscriber management parameters" + * Section 7.6.1 "Common parameters" + */ + OSMO_GSUP_SS_INFO_IE = 0x35, + OSMO_GSUP_SS_INVOKE_ID_IE = 0x36, + OSMO_GSUP_SS_ALERTING_PATTERN_IE = 0x37, + OSMO_GSUP_USSD_STRING_DCS_IE = 0x38, + OSMO_GSUP_USSD_STRING_IE = 0x39, }; /*! GSUP message type */ @@ -135,6 +147,42 @@ OSMO_GSUP_MSGT_SESSION_ID_REQUEST = 0b00100000, OSMO_GSUP_MSGT_SESSION_ID_ERROR = 0b00100001, OSMO_GSUP_MSGT_SESSION_ID_RESULT = 0b00100010, + + /** + * 3GPP TS 09.02 "Mobile Application Part (MAP) specification", + * Section 11 "Supplementary services related services", + * Call independent supplementary services + */ + + /** + * Section 11.9 "MAP_PROCESS_UNSTRUCTURED_SS_REQUEST service" + * Is used to relay information in order to allow unstructured + * supplementary service operation. + */ + OSMO_GSUP_MSGT_PROC_USS_REQ_REQUEST = 0b00100100, + OSMO_GSUP_MSGT_PROC_USS_REQ_ERROR = 0b00100101, + OSMO_GSUP_MSGT_PROC_USS_REQ_RESULT = 0b00100110, + + /** + * Section 11.10 "MAP_UNSTRUCTURED_SS_REQUEST service" + * Is used when the invoking entity requires information + * from the mobile user, in connection with unstructured + * supplementary service handling. + */ + OSMO_GSUP_MSGT_USS_REQ_REQUEST = 0b00101000, + OSMO_GSUP_MSGT_USS_REQ_ERROR = 0b00101001, + OSMO_GSUP_MSGT_USS_REQ_RESULT = 0b00101010, + + + /** + * Section 11.11 "MAP_UNSTRUCTURED_SS_NOTIFY service" + * Is used when the invoking entity requires a notification + * to be sent to the mobile user, in connection with + * unstructured supplementary services handling. + */ + OSMO_GSUP_MSGT_USS_NOTIFY_REQUEST = 0b00101100, + OSMO_GSUP_MSGT_USS_NOTIFY_ERROR = 0b00101101, + OSMO_GSUP_MSGT_USS_NOTIFY_RESULT = 0b00101110, }; #define OSMO_GSUP_IS_MSGT_REQUEST(msgt) (((msgt) & 0b00000011) == 0b00) @@ -190,6 +238,22 @@ size_t pdp_charg_enc_len; }; +/*! parsed/decoded SS/USSD information */ +struct osmo_gsup_ss_info { + /*! Should this IE be taken into account? */ + bool have_info; + /*! Invoke ID, helps to relate the response to request */ + uint32_t invoke_id; + /*! USSD request or response string DCS (Data Coding Scheme) */ + uint8_t ussd_string_dcs; + /*! USSD request or response string length */ + size_t ussd_string_len; + /*! USSD request or response string */ + const uint8_t *ussd_string; + /*! SS notification alerting pattern */ + const uint8_t *ss_ap; +}; + /*! parsed/decoded GSUP protocol message */ struct osmo_gsup_message { enum osmo_gsup_message_type message_type; @@ -211,10 +275,9 @@ enum osmo_gsup_cn_domain cn_domain; const uint8_t *pdp_charg_enc; size_t pdp_charg_enc_len; - - /*! Session management fields */ enum osmo_gsup_session_state session_state; uint32_t session_id; + struct osmo_gsup_ss_info ss_info; }; int osmo_gsup_decode(const uint8_t *data, size_t data_len, diff --git a/src/gsm/gsup.c b/src/gsm/gsup.c index 78818c5..a31c272 100644 --- a/src/gsm/gsup.c +++ b/src/gsm/gsup.c @@ -67,6 +67,18 @@ OSMO_VALUE_STRING(OSMO_GSUP_MSGT_SESSION_ID_ERROR), OSMO_VALUE_STRING(OSMO_GSUP_MSGT_SESSION_ID_RESULT), + OSMO_VALUE_STRING(OSMO_GSUP_MSGT_PROC_USS_REQ_REQUEST), + OSMO_VALUE_STRING(OSMO_GSUP_MSGT_PROC_USS_REQ_ERROR), + OSMO_VALUE_STRING(OSMO_GSUP_MSGT_PROC_USS_REQ_RESULT), + + OSMO_VALUE_STRING(OSMO_GSUP_MSGT_USS_REQ_REQUEST), + OSMO_VALUE_STRING(OSMO_GSUP_MSGT_USS_REQ_ERROR), + OSMO_VALUE_STRING(OSMO_GSUP_MSGT_USS_REQ_RESULT), + + OSMO_VALUE_STRING(OSMO_GSUP_MSGT_USS_NOTIFY_REQUEST), + OSMO_VALUE_STRING(OSMO_GSUP_MSGT_USS_NOTIFY_ERROR), + OSMO_VALUE_STRING(OSMO_GSUP_MSGT_USS_NOTIFY_RESULT), + { 0, NULL } }; @@ -213,6 +225,54 @@ "GSUP IE type %d, length %zu invalid in PDP info\n", iei, value_len); return -1; +} + +static int decode_ss_info(uint8_t *data, size_t data_len, + struct osmo_gsup_ss_info *ss_info) +{ + enum osmo_gsup_iei iei; + size_t value_len; + uint8_t *value; + uint8_t tag; + int rc; + + /* SS/USSD message parts */ + while (data_len > 0) { + rc = osmo_shift_tlv(&data, &data_len, &tag, &value, &value_len); + if (rc < 0) + return -GMM_CAUSE_PROTO_ERR_UNSPEC; + + iei = tag; + + switch (iei) { + case OSMO_GSUP_SS_INVOKE_ID_IE: + ss_info->invoke_id = osmo_decode_big_endian(value, value_len); + break; + + case OSMO_GSUP_SS_ALERTING_PATTERN_IE: + ss_info->ss_ap = value; + break; + + case OSMO_GSUP_USSD_STRING_DCS_IE: + ss_info->ussd_string_dcs = *value; + break; + + case OSMO_GSUP_USSD_STRING_IE: + ss_info->ussd_string_len = value_len; + ss_info->ussd_string = value; + break; + + default: + LOGP(DLGSUP, LOGL_ERROR, + "GSUP IE type %d not expected in SS/USSD info\n", iei); + continue; + } + } + + /* Indicate that SS/USSD information was decoded */ + ss_info->have_info = true; + + return 0; } /*! Decode (parse) a GSUP message @@ -398,6 +458,12 @@ gsup_msg->session_state = *value; break; + case OSMO_GSUP_SS_INFO_IE: + rc = decode_ss_info(value, value_len, &gsup_msg->ss_info); + if (rc < 0) + return rc; + break; + default: LOGP(DLGSUP, LOGL_NOTICE, "GSUP IE type %d unknown\n", iei); @@ -479,6 +545,38 @@ msgb_tlv_put(msg, OSMO_GSUP_RES_IE, auth_vector->res_len, auth_vector->res); + } + + /* Update length field */ + *len_field = msgb_length(msg) - old_len; +} + +static void encode_ss_info(struct msgb *msg, enum osmo_gsup_iei iei, + const struct osmo_gsup_ss_info *ss_info) +{ + uint8_t *len_field; + size_t old_len, len; + + len_field = msgb_tlv_put(msg, iei, 0, NULL) - 1; + old_len = msgb_length(msg); + + /* Invoke ID (uint32_t => 4 bytes) */ + len = sizeof(ss_info->invoke_id); + msgb_tlv_put(msg, OSMO_GSUP_SS_INVOKE_ID_IE, + len, osmo_encode_big_endian(ss_info->invoke_id, len)); + + /* Alerting pattern in case of SS Notification */ + if (ss_info->ss_ap) { + msgb_tlv_put(msg, OSMO_GSUP_SS_ALERTING_PATTERN_IE, + sizeof(uint8_t), ss_info->ss_ap); + } + + /* If preset, USSD string and its DCS (Data Coding Scheme) */ + if (ss_info->ussd_string && ss_info->ussd_string_len > 0) { + msgb_tlv_put(msg, OSMO_GSUP_USSD_STRING_DCS_IE, + sizeof(ss_info->ussd_string_dcs), &ss_info->ussd_string_dcs); + msgb_tlv_put(msg, OSMO_GSUP_USSD_STRING_IE, + ss_info->ussd_string_len, ss_info->ussd_string); } /* Update length field */ @@ -585,6 +683,9 @@ msgb_tlv_put(msg, OSMO_GSUP_SESSION_STATE_IE, sizeof(u8), &u8); } + if (gsup_msg->ss_info.have_info) + encode_ss_info(msg, OSMO_GSUP_SS_INFO_IE, &gsup_msg->ss_info); + return 0; } diff --git a/tests/gsup/gsup_test.c b/tests/gsup/gsup_test.c index fb17e15..ea92fdd 100644 --- a/tests/gsup/gsup_test.c +++ b/tests/gsup/gsup_test.c @@ -185,6 +185,88 @@ 0x31, 0x01, 0x01, }; + static const uint8_t send_ussd_req[] = { + 0x24, /* OSMO_GSUP_MSGT_PROC_USS_REQ_REQUEST */ + TEST_IMSI_IE, + + /* Session ID and state */ + 0x30, 0x04, 0xde, 0xad, 0xbe, 0xef, + 0x31, 0x01, 0x01, + + /* SS/USSD information IE */ + 0x35, 0x11, + /* Invoke ID */ + 0x36, 0x04, 0xde, 0xad, 0xbe, 0xef, + + /** + * DCS (Data Coding Scheme) + * Coding Group: the GSM 7 bit default alphabet + * Language: Language unspecified + */ + 0x38, 0x01, 0x0f, + + /* USSD string: "*#100#" */ + 0x39, 0x06, + 0xaa, 0x51, 0x0c, 0x06, 0x1b, 0x01, + }; + + static const uint8_t send_ussd_res[] = { + 0x26, /* OSMO_GSUP_MSGT_PROC_USS_REQ_RESULT */ + TEST_IMSI_IE, + + /* Session ID and state */ + 0x30, 0x04, 0xde, 0xad, 0xbe, 0xef, + 0x31, 0x01, 0x03, + + /* SS/USSD information IE */ + 0x35, 0x21, + /* Invoke ID */ + 0x36, 0x04, 0xde, 0xad, 0xbe, 0xef, + + /** + * DCS (Data Coding Scheme) + * Coding Group: the GSM 7 bit default alphabet + * Language: Language unspecified + */ + 0x38, 0x01, 0x0f, + + /* USSD string: "Your extension is 01393" */ + 0x39, 0x16, + 0xd9, 0x77, 0x5d, 0x0e, 0x2a, 0xe3, 0xe9, 0x65, + 0xf7, 0x3c, 0xfd, 0x76, 0x83, 0xd2, 0x73, 0x10, + 0x2c, 0x36, 0xcb, 0xcd, 0x1a, 0x0d, + }; + + static const uint8_t send_ussd_ntf[] = { + 0x2c, /* OSMO_GSUP_MSGT_USS_NOTIFY_REQUEST */ + TEST_IMSI_IE, + + /* Session ID and state */ + 0x30, 0x04, 0xde, 0xad, 0xbe, 0xef, + 0x31, 0x01, 0x03, + + /* SS/USSD information IE */ + 0x35, 0x24, + /* Invoke ID */ + 0x36, 0x04, 0xde, 0xad, 0xbe, 0xef, + + /* Alerting pattern */ + 0x37, 0x01, 0xff, + + /** + * DCS (Data Coding Scheme) + * Coding Group: the GSM 7 bit default alphabet + * Language: Language unspecified + */ + 0x38, 0x01, 0x0f, + + /* USSD string: "Your extension is 01393" */ + 0x39, 0x16, + 0xd9, 0x77, 0x5d, 0x0e, 0x2a, 0xe3, 0xe9, 0x65, + 0xf7, 0x3c, 0xfd, 0x76, 0x83, 0xd2, 0x73, 0x10, + 0x2c, 0x36, 0xcb, 0xcd, 0x1a, 0x0d, + }; + static const struct test { char *name; const uint8_t *data; @@ -222,6 +304,12 @@ send_session_id_req, sizeof(send_session_id_req)}, {"Session ID response", send_session_id_res, sizeof(send_session_id_res)}, + {"USSD Request", + send_ussd_req, sizeof(send_ussd_req)}, + {"USSD Result", + send_ussd_res, sizeof(send_ussd_res)}, + {"USSD Notify", + send_ussd_ntf, sizeof(send_ussd_ntf)}, }; printf("Test GSUP message decoding/encoding\n"); @@ -285,7 +373,11 @@ osmo_hexdump(t->data + j, ie_end - j)); OSMO_ASSERT(j <= ie_end - 2); - OSMO_ASSERT(t->data[j+0] <= OSMO_GSUP_SESSION_STATE_IE); + /** + * FIXME: share the maximal IE value somehow + * in order to avoid manual updating of this + */ + OSMO_ASSERT(t->data[j+0] <= OSMO_GSUP_USSD_STRING_IE); OSMO_ASSERT(t->data[j+1] <= ie_end - j - 2); ie_end = j; diff --git a/tests/gsup/gsup_test.err b/tests/gsup/gsup_test.err index 6e56b95..1e7e00f 100644 --- a/tests/gsup/gsup_test.err +++ b/tests/gsup/gsup_test.err @@ -46,6 +46,15 @@ generated message: 22 01 08 21 43 65 87 09 21 43 f5 30 04 de ad be ef 31 01 01 original message: 22 01 08 21 43 65 87 09 21 43 f5 30 04 de ad be ef 31 01 01 IMSI: 123456789012345 + generated message: 24 01 08 21 43 65 87 09 21 43 f5 30 04 de ad be ef 31 01 01 35 11 36 04 de ad be ef 38 01 0f 39 06 aa 51 0c 06 1b 01 + original message: 24 01 08 21 43 65 87 09 21 43 f5 30 04 de ad be ef 31 01 01 35 11 36 04 de ad be ef 38 01 0f 39 06 aa 51 0c 06 1b 01 + IMSI: 123456789012345 + generated message: 26 01 08 21 43 65 87 09 21 43 f5 30 04 de ad be ef 31 01 03 35 21 36 04 de ad be ef 38 01 0f 39 16 d9 77 5d 0e 2a e3 e9 65 f7 3c fd 76 83 d2 73 10 2c 36 cb cd 1a 0d + original message: 26 01 08 21 43 65 87 09 21 43 f5 30 04 de ad be ef 31 01 03 35 21 36 04 de ad be ef 38 01 0f 39 16 d9 77 5d 0e 2a e3 e9 65 f7 3c fd 76 83 d2 73 10 2c 36 cb cd 1a 0d + IMSI: 123456789012345 + generated message: 2c 01 08 21 43 65 87 09 21 43 f5 30 04 de ad be ef 31 01 03 35 24 36 04 de ad be ef 37 01 ff 38 01 0f 39 16 d9 77 5d 0e 2a e3 e9 65 f7 3c fd 76 83 d2 73 10 2c 36 cb cd 1a 0d + original message: 2c 01 08 21 43 65 87 09 21 43 f5 30 04 de ad be ef 31 01 03 35 24 36 04 de ad be ef 37 01 ff 38 01 0f 39 16 d9 77 5d 0e 2a e3 e9 65 f7 3c fd 76 83 d2 73 10 2c 36 cb cd 1a 0d + IMSI: 123456789012345 message 0: tested 11 truncations, 11 parse failures message 1: tested 14 truncations, 13 parse failures message 2: tested 83 truncations, 81 parse failures @@ -62,20 +71,26 @@ message 13: tested 45 truncations, 43 parse failures message 14: tested 11 truncations, 11 parse failures message 15: tested 20 truncations, 18 parse failures + message 16: tested 39 truncations, 36 parse failures + message 17: tested 55 truncations, 52 parse failures + message 18: tested 58 truncations, 55 parse failures DLGSUP Stopping DLGSUP logging message 0: tested 2816 modifications, 510 parse failures - message 1: tested 3584 modifications, 768 parse failures + message 1: tested 3584 modifications, 769 parse failures message 2: tested 21248 modifications, 2571 parse failures message 3: tested 2816 modifications, 510 parse failures - message 4: tested 3584 modifications, 768 parse failures - message 5: tested 20736 modifications, 4010 parse failures - message 6: tested 3584 modifications, 769 parse failures - message 7: tested 3584 modifications, 768 parse failures + message 4: tested 3584 modifications, 769 parse failures + message 5: tested 20736 modifications, 4013 parse failures + message 6: tested 3584 modifications, 770 parse failures + message 7: tested 3584 modifications, 769 parse failures message 8: tested 2816 modifications, 510 parse failures message 9: tested 2816 modifications, 510 parse failures - message 10: tested 3584 modifications, 768 parse failures + message 10: tested 3584 modifications, 769 parse failures message 11: tested 3328 modifications, 767 parse failures message 12: tested 54016 modifications, 4622 parse failures - message 13: tested 11520 modifications, 1026 parse failures + message 13: tested 11520 modifications, 1028 parse failures message 14: tested 2816 modifications, 510 parse failures - message 15: tested 5120 modifications, 1026 parse failures + message 15: tested 5120 modifications, 1028 parse failures + message 16: tested 9984 modifications, 2036 parse failures + message 17: tested 14080 modifications, 2036 parse failures + message 18: tested 14848 modifications, 2285 parse failures diff --git a/tests/gsup/gsup_test.ok b/tests/gsup/gsup_test.ok index 960e516..adc5a96 100644 --- a/tests/gsup/gsup_test.ok +++ b/tests/gsup/gsup_test.ok @@ -31,4 +31,10 @@ Session ID request OK Testing Session ID response Session ID response OK + Testing USSD Request + USSD Request OK + Testing USSD Result + USSD Result OK + Testing USSD Notify + USSD Notify OK Done. -- To view, visit https://gerrit.osmocom.org/7600 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newpatchset Gerrit-Change-Id: Ie17a78043a35fffbdd59e80fd2b2da39cce5e532 Gerrit-PatchSet: 4 Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Owner: Vadim Yanitskiy Gerrit-Reviewer: Alexander Chemeris Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Vadim Yanitskiy From gerrit-no-reply at lists.osmocom.org Mon Apr 9 19:32:45 2018 From: gerrit-no-reply at lists.osmocom.org (Vadim Yanitskiy) Date: Mon, 9 Apr 2018 19:32:45 +0000 Subject: [PATCH] libosmocore[master]: GSUP: implement simple session management support Message-ID: Review at https://gerrit.osmocom.org/7700 GSUP: implement simple session management support Unlike TCAP/MAP, GSUP is just a transport layer without the dialogue/context. This makes impossible to have a session based communication (e.g. USSD) over GSUP. This change introduces two new IEs: - OSMO_GSUP_SESSION_ID_IE, - OSMO_GSUP_SESSION_STATE_IE, which can be used to indicate that the message is related to a session with given ID, and to manage a session state, i.e. initiate, continue, and finish. Also, this change introduces a group of new messages intended for requesting a new (unused) session ID before its initiation. Change-Id: I1cee271fed0284a134ffed103c0d4bebbcfde2a8 Related: OS#1597 --- M TODO-RELEASE M include/osmocom/gsm/gsup.h M src/gsm/gsup.c M tests/gsup/gsup_test.c M tests/gsup/gsup_test.err M tests/gsup/gsup_test.ok 6 files changed, 96 insertions(+), 1 deletion(-) git pull ssh://gerrit.osmocom.org:29418/libosmocore refs/changes/00/7700/1 diff --git a/TODO-RELEASE b/TODO-RELEASE index 16496d6..65b0fa8 100644 --- a/TODO-RELEASE +++ b/TODO-RELEASE @@ -13,3 +13,5 @@ fsm fsmc / fsm.h added callback for graceful exit => ABI changed gsm gsm0480.c / gsm0480.h the 'ss_request' struct extended with ussd_data, ussd_data_len, and ussd_data_dcs => ABI changed +gsup gsup.h the 'osmo_gsup_message' struct extended with + session information => ABI changed diff --git a/include/osmocom/gsm/gsup.h b/include/osmocom/gsm/gsup.h index 1a8a3b2..08f89e1 100644 --- a/include/osmocom/gsm/gsup.h +++ b/include/osmocom/gsm/gsup.h @@ -81,6 +81,18 @@ OSMO_GSUP_AUTS_IE = 0x26, OSMO_GSUP_RES_IE = 0x27, OSMO_GSUP_CN_DOMAIN_IE = 0x28, + + /** + * Session management + * + * SESSION_ID is used to distinguish between concurrent + * sessions, and shall be unique for each active one. + * + * SESSION_STATE indicates the current state of a session, + * see the 'osmo_gsup_session_state' enum for details. + */ + OSMO_GSUP_SESSION_ID_IE = 0x30, + OSMO_GSUP_SESSION_STATE_IE = 0x31, }; /*! GSUP message type */ @@ -110,6 +122,19 @@ OSMO_GSUP_MSGT_LOCATION_CANCEL_REQUEST = 0b00011100, OSMO_GSUP_MSGT_LOCATION_CANCEL_ERROR = 0b00011101, OSMO_GSUP_MSGT_LOCATION_CANCEL_RESULT = 0b00011110, + + /** + * Unlike TCAP/MAP, GSUP is just a transport layer without the + * dialogue/context. The following messages are intended for + * session-based communications, e.g. USSD over GSUP. + * + * This message can be used by one of two communicating + * entries in order to request a new (unused) session ID + * before initiating a new session. + */ + OSMO_GSUP_MSGT_SESSION_ID_REQUEST = 0b00100000, + OSMO_GSUP_MSGT_SESSION_ID_ERROR = 0b00100001, + OSMO_GSUP_MSGT_SESSION_ID_RESULT = 0b00100010, }; #define OSMO_GSUP_IS_MSGT_REQUEST(msgt) (((msgt) & 0b00000011) == 0b00) @@ -129,6 +154,17 @@ enum osmo_gsup_cn_domain { OSMO_GSUP_CN_DOMAIN_PS = 1, OSMO_GSUP_CN_DOMAIN_CS = 2, +}; + +enum osmo_gsup_session_state { + /* Undefined session state */ + OSMO_GSUP_SESSION_STATE_NONE = 0x00, + /* Request to initiate a new session */ + OSMO_GSUP_SESSION_STATE_BEGIN = 0x01, + /* Communication within the existing session */ + OSMO_GSUP_SESSION_STATE_CONTINUE = 0x02, + /* Indication of the session end */ + OSMO_GSUP_SESSION_STATE_END = 0x03, }; /*! parsed/decoded PDP context information */ @@ -175,6 +211,10 @@ enum osmo_gsup_cn_domain cn_domain; const uint8_t *pdp_charg_enc; size_t pdp_charg_enc_len; + + /*! Session management fields */ + enum osmo_gsup_session_state session_state; + uint32_t session_id; }; int osmo_gsup_decode(const uint8_t *data, size_t data_len, diff --git a/src/gsm/gsup.c b/src/gsm/gsup.c index b6ac56d..78818c5 100644 --- a/src/gsm/gsup.c +++ b/src/gsm/gsup.c @@ -62,6 +62,11 @@ OSMO_VALUE_STRING(OSMO_GSUP_MSGT_LOCATION_CANCEL_REQUEST), OSMO_VALUE_STRING(OSMO_GSUP_MSGT_LOCATION_CANCEL_ERROR), OSMO_VALUE_STRING(OSMO_GSUP_MSGT_LOCATION_CANCEL_RESULT), + + OSMO_VALUE_STRING(OSMO_GSUP_MSGT_SESSION_ID_REQUEST), + OSMO_VALUE_STRING(OSMO_GSUP_MSGT_SESSION_ID_ERROR), + OSMO_VALUE_STRING(OSMO_GSUP_MSGT_SESSION_ID_RESULT), + { 0, NULL } }; @@ -385,6 +390,14 @@ gsup_msg->pdp_charg_enc_len = value_len; break; + case OSMO_GSUP_SESSION_ID_IE: + gsup_msg->session_id = osmo_decode_big_endian(value, value_len); + break; + + case OSMO_GSUP_SESSION_STATE_IE: + gsup_msg->session_state = *value; + break; + default: LOGP(DLGSUP, LOGL_NOTICE, "GSUP IE type %d unknown\n", iei); @@ -564,6 +577,14 @@ gsup_msg->pdp_charg_enc_len, gsup_msg->pdp_charg_enc); } + if ((u8 = gsup_msg->session_state)) { + size_t len = sizeof(gsup_msg->session_id); + uint8_t *sid = osmo_encode_big_endian(gsup_msg->session_id, len); + + msgb_tlv_put(msg, OSMO_GSUP_SESSION_ID_IE, len, sid); + msgb_tlv_put(msg, OSMO_GSUP_SESSION_STATE_IE, sizeof(u8), &u8); + } + return 0; } diff --git a/tests/gsup/gsup_test.c b/tests/gsup/gsup_test.c index b55f1d9..fb17e15 100644 --- a/tests/gsup/gsup_test.c +++ b/tests/gsup/gsup_test.c @@ -171,6 +171,20 @@ 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, }; + static const uint8_t send_session_id_req[] = { + 0x20, /* OSMO_GSUP_MSGT_SESSION_ID_REQUEST */ + TEST_IMSI_IE, + }; + + static const uint8_t send_session_id_res[] = { + 0x22, /* OSMO_GSUP_MSGT_SESSION_ID_RESULT */ + TEST_IMSI_IE, + + /* Session ID and state */ + 0x30, 0x04, 0xde, 0xad, 0xbe, 0xef, + 0x31, 0x01, 0x01, + }; + static const struct test { char *name; const uint8_t *data; @@ -204,6 +218,10 @@ send_auth_info_res_umts, sizeof(send_auth_info_res_umts)}, {"Send Authentication Info Request with AUTS and RAND (UMTS)", send_auth_info_req_auts, sizeof(send_auth_info_req_auts)}, + {"Session ID request", + send_session_id_req, sizeof(send_session_id_req)}, + {"Session ID response", + send_session_id_res, sizeof(send_session_id_res)}, }; printf("Test GSUP message decoding/encoding\n"); @@ -267,7 +285,7 @@ osmo_hexdump(t->data + j, ie_end - j)); OSMO_ASSERT(j <= ie_end - 2); - OSMO_ASSERT(t->data[j+0] <= OSMO_GSUP_CN_DOMAIN_IE); + OSMO_ASSERT(t->data[j+0] <= OSMO_GSUP_SESSION_STATE_IE); OSMO_ASSERT(t->data[j+1] <= ie_end - j - 2); ie_end = j; diff --git a/tests/gsup/gsup_test.err b/tests/gsup/gsup_test.err index 05c64fe..6e56b95 100644 --- a/tests/gsup/gsup_test.err +++ b/tests/gsup/gsup_test.err @@ -40,6 +40,12 @@ generated message: 08 01 08 21 43 65 87 09 21 43 f5 26 0e 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 20 10 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f 10 original message: 08 01 08 21 43 65 87 09 21 43 f5 26 0e 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 20 10 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f 10 IMSI: 123456789012345 + generated message: 20 01 08 21 43 65 87 09 21 43 f5 + original message: 20 01 08 21 43 65 87 09 21 43 f5 + IMSI: 123456789012345 + generated message: 22 01 08 21 43 65 87 09 21 43 f5 30 04 de ad be ef 31 01 01 + original message: 22 01 08 21 43 65 87 09 21 43 f5 30 04 de ad be ef 31 01 01 + IMSI: 123456789012345 message 0: tested 11 truncations, 11 parse failures message 1: tested 14 truncations, 13 parse failures message 2: tested 83 truncations, 81 parse failures @@ -54,6 +60,8 @@ message 11: tested 13 truncations, 12 parse failures message 12: tested 211 truncations, 209 parse failures message 13: tested 45 truncations, 43 parse failures + message 14: tested 11 truncations, 11 parse failures + message 15: tested 20 truncations, 18 parse failures DLGSUP Stopping DLGSUP logging message 0: tested 2816 modifications, 510 parse failures message 1: tested 3584 modifications, 768 parse failures @@ -69,3 +77,5 @@ message 11: tested 3328 modifications, 767 parse failures message 12: tested 54016 modifications, 4622 parse failures message 13: tested 11520 modifications, 1026 parse failures + message 14: tested 2816 modifications, 510 parse failures + message 15: tested 5120 modifications, 1026 parse failures diff --git a/tests/gsup/gsup_test.ok b/tests/gsup/gsup_test.ok index 49a85ba..960e516 100644 --- a/tests/gsup/gsup_test.ok +++ b/tests/gsup/gsup_test.ok @@ -27,4 +27,8 @@ Send Authentication Info Result with IK, CK, AUTN and RES (UMTS) OK Testing Send Authentication Info Request with AUTS and RAND (UMTS) Send Authentication Info Request with AUTS and RAND (UMTS) OK + Testing Session ID request + Session ID request OK + Testing Session ID response + Session ID response OK Done. -- To view, visit https://gerrit.osmocom.org/7700 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I1cee271fed0284a134ffed103c0d4bebbcfde2a8 Gerrit-PatchSet: 1 Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Owner: Vadim Yanitskiy From gerrit-no-reply at lists.osmocom.org Mon Apr 9 20:11:11 2018 From: gerrit-no-reply at lists.osmocom.org (Neels Hofmeyr) Date: Mon, 9 Apr 2018 20:11:11 +0000 Subject: osmo-msc[master]: libmsc/ussd: implement basic USSD session management In-Reply-To: References: Message-ID: Patch Set 1: Code-Review-1 (15 comments) https://gerrit.osmocom.org/#/c/7699/1/include/osmocom/msc/ussd.h File include/osmocom/msc/ussd.h: Line 33: struct gsm_trans *trans; a gsm_trans always belongs to a conn. Do you really need a separate conn pointer? Can there be a valid ussd_session without a trans? Line 35: /* A link to the global sessions list */ more like an entry within the global sessions list Line 41: uint32_t ussd_session_id_gen(void); (this could remain static in ussd.c) Line 48: struct gsm_trans *trans); again, you shouldn't need both conn and trans https://gerrit.osmocom.org/#/c/7699/1/src/libmsc/ussd.c File src/libmsc/ussd.c: Line 61: DEBUGP(DMM, "Allocate a new USSD session\n"); When reading this in the log, I'd immediately want to know: for which subscriber?? Even besides mere logging, it makes sense to always firmly associate a ussd session with a given subscriber, or even with a conn. You will always have at least a vlr_subscr first and then allocate a USSD session for that subscr, right? Even better would be to even have a gsm_subscriber_connection before allocating ussd. Then talloc that ussd session as child of that conn, not child of the network. How are the semantics of USSD sessions? Line 88: DEBUGP(DMM, "Found a USSD session (sid=%u)\n", session->sid); log context (vlr_subscr_name()) Line 103: OSMO_ASSERT(trans); I think you could just rely on the calling code to not pass NULL. Line 117: session->trans->transaction_id, session->sid); we commonly log the context first, then the message; and when logging hex, prepend a 0x to make it clear, like: (subscr %s, trans_id=0x%x, sid=%u) Found USSD session Line 126: DEBUGP(DMM, "Deallocate an USSD session\n"); log context Line 129: OSMO_ASSERT(session); if we pass a NULL in here, osmo-msc would crash on the assert, taking down all active connections. Decide: * it is valid to pass NULL into ussd_session_free(). Then if (!session) return; i.e. don't crash, just ignore. OR * it is invalid to pass NULL in here. Then simply never do that and also don't assert nor check it here. Line 183: ussd_session_free(session); wait, a ussd_session is discarded basically right upon receiving the USSD request, in all cases? Does it never live past the first rx of SS Request? If we, for example, were to pass the request on to the HLR, we'd have to asynchronously wait for the HLR's response to reply, and only then discard. I'm getting the impression ussd_session should not be a separate struct, but rather be a third part of the cc,sms union in struct gsm_trans. Then make use of the common transaction alloc and teardown API. For example, if the BSC decides to suddenly send a BSSMAP Clear Request, the subscr_conn.c wants to free all transactions. Will it know that a ussd_session is associated with a trans? If the ussd session *is* a gsm_trans, then it certainly will. Also, IMHO, if a session was allocated outside of the handler, the deallocation should also happen outside. Line 218: DEBUGP(DMM, "Received SS/USSD data (trans_id=%x)\n", tid); log context, and the same multiple times below Line 221: OSMO_ASSERT(conn->vsub); you can assume that conn->vsub is always populated when you're as far as handling DTAP https://gerrit.osmocom.org/#/c/7699/1/tests/msc_vlr/msc_vlr_test_authen_reuse.err File tests/msc_vlr/msc_vlr_test_authen_reuse.err: Line 263: DCC (ti 08 sub MSISDN:42342 callref 0) New transaction read above three log lines. the first two have incomplete or no context, and are basically obsolete once the third is logged. One time you log 'trans_id=8', then you log 'ti 08'. What is 08, octal representation? Line 268: DMM USSD: Own number requested This above (probably very old) log line might have gotten you the idea that we don't need context ;) -- To view, visit https://gerrit.osmocom.org/7699 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I21c6777cb88f1f4f80f75dcd39734e952bd4e8b0 Gerrit-PatchSet: 1 Gerrit-Project: osmo-msc Gerrit-Branch: master Gerrit-Owner: Vadim Yanitskiy Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Neels Hofmeyr Gerrit-HasComments: Yes From gerrit-no-reply at lists.osmocom.org Mon Apr 9 20:19:48 2018 From: gerrit-no-reply at lists.osmocom.org (Neels Hofmeyr) Date: Mon, 9 Apr 2018 20:19:48 +0000 Subject: osmo-msc[master]: libmsc/ussd: implement basic USSD session management In-Reply-To: References: Message-ID: Patch Set 1: (1 comment) https://gerrit.osmocom.org/#/c/7699/1/src/libmsc/ussd.c File src/libmsc/ussd.c: Line 129: OSMO_ASSERT(session); > if we pass a NULL in here, osmo-msc would crash on the assert, taking down btw, I made the same mistake recently and you hit that in OS#3125 -- remember the crash on OSMO_ASSERT(conn->conn_fsm) ;) -- To view, visit https://gerrit.osmocom.org/7699 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I21c6777cb88f1f4f80f75dcd39734e952bd4e8b0 Gerrit-PatchSet: 1 Gerrit-Project: osmo-msc Gerrit-Branch: master Gerrit-Owner: Vadim Yanitskiy Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Neels Hofmeyr Gerrit-HasComments: Yes From gerrit-no-reply at lists.osmocom.org Mon Apr 9 20:53:21 2018 From: gerrit-no-reply at lists.osmocom.org (Neels Hofmeyr) Date: Mon, 9 Apr 2018 20:53:21 +0000 Subject: osmo-msc[master]: libmsc/ussd: implement basic USSD session management In-Reply-To: References: Message-ID: Patch Set 1: (1 comment) https://gerrit.osmocom.org/#/c/7699/1/tests/msc_vlr/msc_vlr_test_authen_reuse.err File tests/msc_vlr/msc_vlr_test_authen_reuse.err: Line 263: DCC (ti 08 sub MSISDN:42342 callref 0) New transaction > read above three log lines. the first two have incomplete or no context, an (hm, seems that 'ti 08' is also in old code) -- To view, visit https://gerrit.osmocom.org/7699 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I21c6777cb88f1f4f80f75dcd39734e952bd4e8b0 Gerrit-PatchSet: 1 Gerrit-Project: osmo-msc Gerrit-Branch: master Gerrit-Owner: Vadim Yanitskiy Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Neels Hofmeyr Gerrit-HasComments: Yes From gerrit-no-reply at lists.osmocom.org Mon Apr 9 20:54:40 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Mon, 9 Apr 2018 20:54:40 +0000 Subject: osmo-ttcn3-hacks[master]: msc: Initial SMS testing (MO + MT SMS, successful case, no S... In-Reply-To: References: Message-ID: Patch Set 3: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7698 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I707330454ffab87daebf22ba83e6ba2873996424 Gerrit-PatchSet: 3 Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Owner: Harald Welte Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Mon Apr 9 20:54:48 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Mon, 9 Apr 2018 20:54:48 +0000 Subject: [MERGED] osmo-ttcn3-hacks[master]: msc: Initial SMS testing (MO + MT SMS, successful case, no S... In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: msc: Initial SMS testing (MO + MT SMS, successful case, no SMPP) ...................................................................... msc: Initial SMS testing (MO + MT SMS, successful case, no SMPP) Change-Id: I707330454ffab87daebf22ba83e6ba2873996424 --- M library/L3_Templates.ttcn M msc/BSC_ConnectionHandler.ttcn M msc/MSC_Tests.ttcn 3 files changed, 502 insertions(+), 3 deletions(-) Approvals: Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/library/L3_Templates.ttcn b/library/L3_Templates.ttcn index 3203b0e..3304662 100644 --- a/library/L3_Templates.ttcn +++ b/library/L3_Templates.ttcn @@ -2,7 +2,7 @@ /* L3 Templates, building on top of MobileL3*_Types from Ericsson. * - * (C) 2017 by Harald Welte + * (C) 2017-2018 by Harald Welte * All rights reserved. * * Released under the terms of GNU General Public License, Version 2 or @@ -17,7 +17,7 @@ import from MobileL3_RRM_Types all; import from MobileL3_CC_Types all; import from MobileL3_GMM_SM_Types all; -//import from MobileL3_SMS_Types all; +import from MobileL3_SMS_Types all; /* TS 24.007 Table 11.3 TI Flag */ const BIT1 c_TIF_ORIG := '0'B; @@ -2168,4 +2168,284 @@ with { extension "prototype(convert) encode(RAW)" }; + +/* SMS TPDU Layer */ + +template (value) TPDU_RP_DATA_MS_SGSN ts_SMS_SUBMIT(OCT1 msg_ref, template (value) TP_DA dst_addr, + template (value) OCT1 pid, template (value) OCT1 dcs, + integer length_ind, octetstring user_data) := { + sMS_SUBMIT := { + tP_MTI := '01'B, /* SUBMIT */ + tP_RD := '1'B, /* reject duplicates */ + tP_VPF := '00'B, /* not present */ + tP_SRR := '0'B, /* no status report requested */ + tP_UDHI := '0'B, /* no user data header in UD */ + tP_RP := '0'B, /* no reply path */ + tP_MR := msg_ref, + tP_DA := dst_addr, + tP_PID := pid, + tP_DCS := dcs, + tP_VP := omit, + tP_UDL_UD := { + tP_LengthIndicator := length_ind, + tP_UD := user_data + } + } +} + +template TPDU_RP_DATA_SGSN_MS tr_SMS_DELIVER(template TP_OA src_addr := ?, + template octetstring user_data := ?, + template OCT1 pid := ?, template OCT1 dcs := ?, + template BIT1 mms := ? + ) := { + sMS_DELIVER := { + tP_MTI := '00'B, /* DELIVER */ + tP_MMS := mms, /* more messages to send */ + tP_LP := ?, /* ?!? */ + tP_Spare := '0'B, + tP_SRI := '0'B, /* status report indication */ + tP_UDHI := '0'B, /* no user data header in UD */ + tP_RP := '0'B, /* no reply path */ + tP_OA := src_addr, + tP_PID := pid, + tP_DCS := dcs, + tP_SCTS := ?, + tP_UDL_UD := { + tP_LengthIndicator := ?, + tP_UD := user_data + } + } +} + +/* RP Layer */ + +private function ts_RpOrig(template (omit) RP_NumberingPlan_and_NumberDigits rp_orig) +return RP_OriginatorAddressLV { + var RP_OriginatorAddressLV ret; + if (istemplatekind(rp_orig, "omit")) { + ret := { 0, omit }; + } else { + ret := { 0, valueof(rp_orig) }; + } + return ret; +} + +private function ts_RpDst(template (omit) RP_NumberingPlan_and_NumberDigits rp_dst) +return RP_DestinationAddressLV { + var RP_DestinationAddressLV ret; + if (istemplatekind(rp_dst, "omit")) { + ret := { 0, omit }; + } else { + ret := { 0, valueof(rp_dst) }; + } + return ret; +} + +template (value) RPDU_MS_SGSN ts_RP_DATA_MO(OCT1 msg_ref, + template (omit) RP_NumberingPlan_and_NumberDigits rp_orig, + template (omit) RP_NumberingPlan_and_NumberDigits rp_dst, + template (value) TPDU_RP_DATA_MS_SGSN tpdu) := { + rP_DATA_MS_SGSN := { + rP_MTI := '000'B, + rP_Spare := '00000'B, + rP_MessageReference := msg_ref, + rP_OriginatorAddress := ts_RpOrig(rp_orig), + rP_DestinationAddress := ts_RpDst(rp_dst), + rP_User_Data := { + rP_LengthIndicator := 0, /* overwritten */ + rP_TPDU := tpdu + } + } +} + +template RPDU_SGSN_MS tr_RP_DATA_MT(template OCT1 msg_ref, + template RP_NumberingPlan_and_NumberDigits rp_orig, + template RP_NumberingPlan_and_NumberDigits rp_dst, + template TPDU_RP_DATA_SGSN_MS tpdu) := { + rP_DATA_SGSN_MS := { + rP_MTI := '001'B, + rP_Spare := '00000'B, + rP_MessageReference := msg_ref, + rP_OriginatorAddress := { ?, rp_orig }, + rP_DestinationAddress := { ?, rp_dst }, + rP_User_Data := { + rP_LengthIndicator := ?, + rP_TPDU := tpdu + } + + } +} + +template (value) RPDU_MS_SGSN ts_RP_ACK_MO(OCT1 msg_ref) := { + rP_ACK_MS_SGSN := { + rP_MTI := '010'B, + rP_Spare := '00000'B, + rP_MessageReference := msg_ref, + rP_User_Data := omit /* FIXME: report */ + } +} + +template RPDU_SGSN_MS tr_RP_ACK_MT(template OCT1 msg_ref) := { + rP_ACK_SGSN_MS := { + rP_MTI := '011'B, + rP_Spare := '00000'B, + rP_MessageReference := msg_ref, + rP_User_Data := omit /* FIXME: report */ + } +} + +template (value) RPDU_MS_SGSN ts_RP_ERROR_MO(OCT1 msg_ref, uint7_t cause) := { + rP_ERROR_MS_SGSN := { + rP_MTI := '100'B, + rP_Spare := '00000'B, + rP_Message_Reference := msg_ref, + rP_CauseLV := { + rP_LengthIndicator := 0, /* overwritten */ + rP_CauseV := { + causeValue := int2bit(cause, 7), + ext := '0'B + }, + rP_diagnisticField := omit + }, + rP_User_Data := omit /* FIXME: report */ + } +} + +private function f_cause_or_wc(template uint7_t cause) return template BIT7 { + if (istemplatekind(cause, "?")) { + return ?; + } else if (istemplatekind(cause, "*")) { + return *; + } else { + return int2bit(valueof(cause), 7); + } +} + +template RPDU_SGSN_MS tr_RP_ERROR_MT(template OCT1 msg_ref, template uint7_t cause) := { + rP_ERROR_SGSN_MS := { + rP_MTI := '101'B, + rP_Spare := '00000'B, + rP_Message_Reference := msg_ref, + rP_CauseLV := { + rP_LengthIndicator := 0, /* overwritten */ + rP_CauseV := { + causeValue := f_cause_or_wc(cause), + ext := '0'B + }, + rP_diagnisticField := omit + }, + rP_User_Data := omit /* FIXME: report */ + } +} + + +template (value) RPDU_MS_SGSN ts_RP_SMMA_MO(OCT1 msg_ref) := { + rP_SMMA := { + rP_MTI := '110'B, + rP_Spare := '00000'B, + rP_MessageReference := msg_ref + } +} + + + + +/* CP Layer */ + +template (value) L3_SMS_MS_SGSN ts_CP_DATA_MO(template (value) RPDU_MS_SGSN rpdu) := { + cP_DATA := { + cP_messageType := '00000001'B, + cP_User_Data := { + lengthIndicator := 0, /* overwritten */ + cP_RPDU := rpdu + } + } +} + +template (value) L3_SMS_MS_SGSN ts_CP_ACK_MO := { + cP_ACK := { + cP_messageType := '00000100'B + } +} + +template (value) L3_SMS_MS_SGSN ts_CP_ERROR_MO(OCT1 cause) := { + cP_ERROR := { + cP_messageType := '00010000'B, + cP_Cause := { + causeValue := cause + } + } +} + +template L3_SMS_SGSN_MS tr_CP_DATA_MT(template RPDU_SGSN_MS rpdu) := { + cP_DATA := { + cP_messageType := '00000001'B, + cP_User_Data := { + lengthIndicator := ?, + cP_RPDU := rpdu + } + } +} + +template L3_SMS_SGSN_MS tr_CP_ACK_MT := { + cP_ACK := { + cP_messageType := '00000100'B + } +} + +template L3_SMS_SGSN_MS tr_CP_ERROR_MT(template OCT1 cause) := { + cP_ERROR := { + cP_messageType := '00010000'B, + cP_Cause := { + causeValue := cause + } + } +} + +/* L3 Wrapper */ + +template (value) PDU_ML3_MS_NW ts_ML3_MO_SMS(uint3_t tid, BIT1 ti_flag, + template (value) L3_SMS_MS_SGSN sms_mo) := { + discriminator := '1001'B, + tiOrSkip := { + transactionId := { + tio := int2bit(tid, 3), + tiFlag := ti_flag, + tIExtension := omit + } + }, + msgs := { + sms := sms_mo + } +} + +private function f_tid_or_wc(template uint3_t tid) return template BIT3 { + var template BIT3 ret; + if (istemplatekind(tid, "*")) { + return *; + } else if (istemplatekind(tid, "?")) { + return ?; + } else { + return int2bit(valueof(tid), 3); + } +} + +template PDU_ML3_NW_MS tr_ML3_MT_SMS(template uint3_t tid, template BIT1 ti_flag, + template L3_SMS_SGSN_MS sms_mt) := { + discriminator := '1001'B, + tiOrSkip := { + transactionId := { + tio := f_tid_or_wc(tid), + tiFlag := ti_flag, + tIExtension := omit + } + }, + msgs := { + sms := sms_mt + } +} + + + + } diff --git a/msc/BSC_ConnectionHandler.ttcn b/msc/BSC_ConnectionHandler.ttcn index 73368a2..733daab 100644 --- a/msc/BSC_ConnectionHandler.ttcn +++ b/msc/BSC_ConnectionHandler.ttcn @@ -25,6 +25,7 @@ import from MobileL3_CommonIE_Types all; import from MobileL3_MM_Types all; import from MobileL3_CC_Types all; +import from MobileL3_SMS_Types all; import from L3_Templates all; import from L3_Common all; @@ -186,7 +187,8 @@ type enumerated EstablishType { EST_TYPE_MO_CALL, EST_TYPE_EMERG_CALL, - EST_TYPE_PAG_RESP + EST_TYPE_PAG_RESP, + EST_TYPE_MO_SMS }; /* helper function to fully establish a dedicated channel */ @@ -211,6 +213,9 @@ } case (EST_TYPE_PAG_RESP) { l3_info := valueof(ts_PAG_RESP(mi)); + } + case (EST_TYPE_MO_SMS) { + l3_info := valueof(ts_CM_SERV_REQ(CM_TYPE_MO_SMS, mi)); } } @@ -742,6 +747,146 @@ } } +type record SmsParametersTp { + OCT1 msg_ref, + TP_DA da, + OCT1 pid, + OCT1 dcs, + integer udl, + octetstring ud +} +type record SmsParametersRp { + OCT1 msg_ref, + RP_NumberingPlan_and_NumberDigits orig optional, + RP_NumberingPlan_and_NumberDigits dest optional +} +type record SmsParameters { + SmsParametersTp tp, + SmsParametersRp rp, + uint3_t tid, + OCT1 dlci, + uint7_t exp_rp_err optional +} + +template (value) TP_DA ts_TP_DA(BIT4 npl, BIT3 ton, hexstring addr) := { + tP_DA_NoPad := { + tP_LengthIndicator := 0, /* overwritten */ + tP_NumberingPlanID := npl, + tP_TypeOfNumber := ton, + tp_Spare := '0'B, + tP_DAValue := addr + } +} + +template (value) SmsParameters t_SmsPars(hexstring tp_daddr := '12345'H) := { + tp := { + msg_ref := '23'O, + da := ts_TP_DA('0000'B, '000'B, tp_daddr), + pid := '00'O, + dcs := '00'O, + udl := 0, + ud := ''O + }, + rp := { + msg_ref := '42'O, + orig := omit, + dest := { '0000'B, '000'B, '0'B, '98765'H } + }, + tid := 0, + dlci := '03'O, + exp_rp_err := omit +} + +private altstep as_other_sms() runs on BSC_ConnHdlr { + [] BSSAP.receive(tr_PDU_DTAP_MT(tr_ML3_MT_SMS(?, ?, ?), ?)) { + setverdict(fail, "Unexpected SMS related PDU from MSC"); + self.stop; + } +} + +/* Submit a MO-SMS over an already existing (and authenticated, ...) DTAP connection */ +function f_mo_sms(inout SmsParameters spars) +runs on BSC_ConnHdlr { + var template (value) TPDU_RP_DATA_MS_SGSN tp_mo; + var template (value) RPDU_MS_SGSN rp_mo; + var template (value) PDU_ML3_MS_NW l3_mo; + + var template TPDU_RP_DATA_SGSN_MS tp_mt; + var template RPDU_SGSN_MS rp_mt; + var template PDU_ML3_NW_MS l3_mt; + + var default d := activate(as_other_sms()); + + tp_mo := ts_SMS_SUBMIT(spars.tp.msg_ref, spars.tp.da, spars.tp.pid, spars.tp.dcs, + spars.tp.udl, spars.tp.ud); + rp_mo := ts_RP_DATA_MO(spars.rp.msg_ref, spars.rp.orig, spars.rp.dest, tp_mo); + l3_mo := ts_ML3_MO_SMS(spars.tid, c_TIF_ORIG, ts_CP_DATA_MO(rp_mo)); + BSSAP.send(ts_PDU_DTAP_MO(l3_mo, spars.dlci, true)); + /* receive CP-ACK for CP-DATA above */ + BSSAP.receive(tr_PDU_DTAP_MT(tr_ML3_MT_SMS(spars.tid, c_TIF_REPL, tr_CP_ACK_MT), spars.dlci)); + + if (ispresent(spars.exp_rp_err)) { + /* expect an RP-ERROR message from MSC with given cause */ + rp_mt := tr_RP_ERROR_MT(spars.rp.msg_ref, spars.exp_rp_err); + l3_mt := tr_ML3_MT_SMS(spars.tid, c_TIF_REPL, tr_CP_DATA_MT(rp_mt)); + BSSAP.receive(tr_PDU_DTAP_MT(l3_mt, spars.dlci)); + /* send CP-ACK for CP-DATA just received */ + l3_mo := ts_ML3_MO_SMS(spars.tid, c_TIF_ORIG, ts_CP_ACK_MO); + BSSAP.send(ts_PDU_DTAP_MO(l3_mo, spars.dlci, true)); + } else { + /* expect RP-ACK for RP-DATA */ + rp_mt := tr_RP_ACK_MT(spars.rp.msg_ref); + l3_mt := tr_ML3_MT_SMS(spars.tid, c_TIF_REPL, tr_CP_DATA_MT(rp_mt)); + BSSAP.receive(tr_PDU_DTAP_MT(l3_mt, spars.dlci)); + /* send CP-ACO for CP-DATA just received */ + l3_mo := ts_ML3_MO_SMS(spars.tid, c_TIF_ORIG, ts_CP_ACK_MO); + BSSAP.send(ts_PDU_DTAP_MO(l3_mo, spars.dlci, true)); + } + deactivate(d); + setverdict(pass); +} + +/* receive MT-SMS delivered from the MSC/SMSC over an already existing DTAP connection */ +function f_mt_sms(inout SmsParameters spars) +runs on BSC_ConnHdlr { + var template (value) TPDU_RP_DATA_MS_SGSN tp_mo; + var template (value) RPDU_MS_SGSN rp_mo; + var template (value) PDU_ML3_MS_NW l3_mo; + + var template TPDU_RP_DATA_SGSN_MS tp_mt; + var template RPDU_SGSN_MS rp_mt; + var template PDU_ML3_NW_MS l3_mt; + + var PDU_DTAP_MT dtap_mt; + + var default d := activate(as_other_sms()); + + /* Expect CP-DATA(RP-DATA(SMS-DELIVER)) */ + tp_mt := tr_SMS_DELIVER(?, spars.tp.ud, spars.tp.pid, spars.tp.dcs, ?); + rp_mt := tr_RP_DATA_MT(?, ?, omit, tp_mt); + l3_mt := tr_ML3_MT_SMS(?, c_TIF_ORIG, tr_CP_DATA_MT(rp_mt)); + BSSAP.receive(tr_PDU_DTAP_MT(l3_mt, spars.dlci)) -> value dtap_mt; + /* Extract relevant identifiers */ + spars.tid := bit2int(dtap_mt.dtap.tiOrSkip.transactionId.tio); + spars.rp.msg_ref := dtap_mt.dtap.msgs.sms.cP_DATA.cP_User_Data.cP_RPDU.rP_DATA_SGSN_MS.rP_MessageReference; + + /* send CP-ACK for CP-DATA just received */ + l3_mo := ts_ML3_MO_SMS(spars.tid, c_TIF_REPL, ts_CP_ACK_MO); + BSSAP.send(ts_PDU_DTAP_MO(l3_mo, spars.dlci, true)); + + /* send RP-ACK for RP-DATA */ + rp_mo := ts_RP_ACK_MO(spars.rp.msg_ref); + l3_mo := ts_ML3_MO_SMS(spars.tid, c_TIF_REPL, ts_CP_DATA_MO(rp_mo)); + BSSAP.send(ts_PDU_DTAP_MO(l3_mo, spars.dlci, true)); + + /* expect CP-ACK for CP-DATA(RP-ACK) just sent */ + l3_mt := tr_ML3_MT_SMS(spars.tid, c_TIF_REPL, tr_CP_ACK_MT); + BSSAP.receive(tr_PDU_DTAP_MT(l3_mt, spars.dlci)); + + deactivate(d); + setverdict(pass); +} + diff --git a/msc/MSC_Tests.ttcn b/msc/MSC_Tests.ttcn index 503f98b..b5108c7 100644 --- a/msc/MSC_Tests.ttcn +++ b/msc/MSC_Tests.ttcn @@ -1815,6 +1815,77 @@ setverdict(pass); } +/* LU followed by MO SMS */ +private function f_tc_lu_and_mo_sms(charstring id, BSC_ConnHdlrPars pars) runs on BSC_ConnHdlr { + var SmsParameters spars := valueof(t_SmsPars); + + f_init_handler(pars); + + /* Perform location update and call */ + f_perform_lu(); + + f_establish_fully(EST_TYPE_MO_SMS); + + //spars.exp_rp_err := 96; /* invalid mandatory information */ + f_mo_sms(spars); + + f_expect_clear(); +} +testcase TC_lu_and_mo_sms() runs on MTC_CT { + var BSC_ConnHdlr vc_conn; + f_init(); + vc_conn := f_start_handler(refers(f_tc_lu_and_mo_sms), 42); + vc_conn.done; +} + +private function f_vty_sms_send(charstring imsi, charstring msisdn, charstring text) +runs on MTC_CT { + f_vty_transceive(MSCVTY, "subscriber imsi "&imsi&" sms sender msisdn "&msisdn&" send "&text); +} + +/* LU followed by MT SMS */ +private function f_tc_lu_and_mt_sms(charstring id, BSC_ConnHdlrPars pars) runs on BSC_ConnHdlr { + var SmsParameters spars := valueof(t_SmsPars); + var OCT4 tmsi; + + f_init_handler(pars); + + /* Perform location update and call */ + f_perform_lu(); + + /* register an 'expect' for given IMSI (+TMSI) */ + if (isvalue(g_pars.tmsi)) { + tmsi := g_pars.tmsi; + } else { + tmsi := 'FFFFFFFF'O; + } + f_bssmap_register_imsi(g_pars.imsi, tmsi); + + /* FIXME: actually cause MSC to send a SMS via VTY or SMPP */ + + /* MSC->BSC: expect PAGING from MSC */ + BSSAP.receive(tr_BSSMAP_Paging(g_pars.imsi)); + /* Establish DTAP / BSSAP / SCCP connection */ + f_establish_fully(EST_TYPE_PAG_RESP); + + spars.tp.ud := 'C8329BFD064D9B53'O; + f_mt_sms(spars); + + f_expect_clear(); +} +testcase TC_lu_and_mt_sms() runs on MTC_CT { + var BSC_ConnHdlrPars pars; + var BSC_ConnHdlr vc_conn; + f_init(); + pars := f_init_pars(43); + vc_conn := f_start_handler_with_pars(refers(f_tc_lu_and_mt_sms), pars); + f_sleep(2.0); + f_vty_sms_send(hex2str(pars.imsi), "2342", "Hello SMS"); + vc_conn.done; +} + + + /* TODO: * continue to send repeated MO signalling messages to keep channel open: does MSC tmeout? * malformed messages (missing IE, invalid message type): properly rejected? @@ -1876,6 +1947,9 @@ execute( TC_lu_and_mt_call() ); + execute( TC_lu_and_mo_sms() ); + execute( TC_lu_and_mt_sms() ); + /* Run this last: at the time of writing this test crashes the MSC */ execute( TC_lu_imsi_auth_tmsi_encr_3_1_log_msc_debug() ); } -- To view, visit https://gerrit.osmocom.org/7698 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: I707330454ffab87daebf22ba83e6ba2873996424 Gerrit-PatchSet: 3 Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Owner: Harald Welte Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder From gerrit-no-reply at lists.osmocom.org Mon Apr 9 20:55:05 2018 From: gerrit-no-reply at lists.osmocom.org (dexter) Date: Mon, 9 Apr 2018 20:55:05 +0000 Subject: [PATCH] osmo-bts[master]: WIP: l1_utils: increase size of octphy_cid_vals[] to 51 Message-ID: Review at https://gerrit.osmocom.org/7701 WIP: l1_utils: increase size of octphy_cid_vals[] to 51 *** WORK IN PROGRESS: DO NOT MERGE UNTIL CHECKED BACK WITH OCTASIC *** The size of the array octphy_cid_vals[] is currently set to 37, which also matches the amount of elements defined in l1_utils.c. For some reason the array size needs to be increased up to 51. - increase array size of octply_cid_vals[] from 37 to 51. Change-Id: Ib3872cae36a76d93cb478a55e6fc3b03a9c6caaf Related: SYS#4139 Patch-by: Octasic inc. --- M src/osmo-bts-octphy/l1_utils.c M src/osmo-bts-octphy/l1_utils.h 2 files changed, 2 insertions(+), 2 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-bts refs/changes/01/7701/1 diff --git a/src/osmo-bts-octphy/l1_utils.c b/src/osmo-bts-octphy/l1_utils.c index 8a8e155..df69259 100644 --- a/src/osmo-bts-octphy/l1_utils.c +++ b/src/osmo-bts-octphy/l1_utils.c @@ -80,7 +80,7 @@ { 0, NULL } }; -const struct value_string octphy_cid_vals[37] = { +const struct value_string octphy_cid_vals[51] = { { cOCTVC1_GSM_MSG_TRX_OPEN_CID, "TRX-OPEN" }, { cOCTVC1_GSM_MSG_TRX_CLOSE_CID, "TRX-CLOSE" }, { cOCTVC1_GSM_MSG_TRX_STATUS_CID, "TRX-STATUS" }, diff --git a/src/osmo-bts-octphy/l1_utils.h b/src/osmo-bts-octphy/l1_utils.h index d1a8717..9b2025f 100644 --- a/src/osmo-bts-octphy/l1_utils.h +++ b/src/osmo-bts-octphy/l1_utils.h @@ -5,5 +5,5 @@ const struct value_string octphy_l1sapi_names[23]; const struct value_string octphy_dir_names[5]; const struct value_string octphy_clkmgr_state_vals[8]; -const struct value_string octphy_cid_vals[37]; +const struct value_string octphy_cid_vals[51]; const struct value_string octphy_eid_vals[7]; -- To view, visit https://gerrit.osmocom.org/7701 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Ib3872cae36a76d93cb478a55e6fc3b03a9c6caaf Gerrit-PatchSet: 1 Gerrit-Project: osmo-bts Gerrit-Branch: master Gerrit-Owner: dexter From gerrit-no-reply at lists.osmocom.org Tue Apr 10 00:15:20 2018 From: gerrit-no-reply at lists.osmocom.org (Neels Hofmeyr) Date: Tue, 10 Apr 2018 00:15:20 +0000 Subject: [PATCH] osmo-msc[master]: trans_free: drop bad assertion Message-ID: Review at https://gerrit.osmocom.org/7702 trans_free: drop bad assertion I assumed that trans_free() would always be called before freeing the FSM. But the actual conn free dance that tries to make sure a release is triggered from all directions actually may run into a situation where conn->fi is NULL. The situation is described in OS#3125. For now simply drop the assert. The subscr conn and FSM dealloc will soon be glued firmly together; but I want to add a test against OS#3062 before that, and that would also hit above assertion. Related: OS#3125 OS#3062 Change-Id: I5c30e0f9545fb76615776ff6cc16b56aeb5b043a --- M src/libmsc/transaction.c 1 file changed, 0 insertions(+), 3 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-msc refs/changes/02/7702/1 diff --git a/src/libmsc/transaction.c b/src/libmsc/transaction.c index 5b033dc..66b929a 100644 --- a/src/libmsc/transaction.c +++ b/src/libmsc/transaction.c @@ -158,9 +158,6 @@ trans->conn = NULL; talloc_free(trans); - /* trans_free() should always happen while the fi is still around. */ - OSMO_ASSERT(conn->fi); - /* Possibly this was the last transaction used by this conn. */ subscr_conn_release_when_unused(conn); } -- To view, visit https://gerrit.osmocom.org/7702 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I5c30e0f9545fb76615776ff6cc16b56aeb5b043a Gerrit-PatchSet: 1 Gerrit-Project: osmo-msc Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr From gerrit-no-reply at lists.osmocom.org Tue Apr 10 00:15:21 2018 From: gerrit-no-reply at lists.osmocom.org (Neels Hofmeyr) Date: Tue, 10 Apr 2018 00:15:21 +0000 Subject: [PATCH] osmo-msc[master]: msc_vlr_test_call: reproduce OS#3062 Message-ID: Review at https://gerrit.osmocom.org/7703 msc_vlr_test_call: reproduce OS#3062 Change-Id: Ice7197b48d4e163a3c4d97b559fdcd7e88c4107e --- M tests/msc_vlr/msc_vlr_test_call.c M tests/msc_vlr/msc_vlr_test_call.err M tests/msc_vlr/msc_vlr_tests.c M tests/msc_vlr/msc_vlr_tests.h 4 files changed, 436 insertions(+), 0 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-msc refs/changes/03/7703/1 diff --git a/tests/msc_vlr/msc_vlr_test_call.c b/tests/msc_vlr/msc_vlr_test_call.c index 6359865..9d4126e 100644 --- a/tests/msc_vlr/msc_vlr_test_call.c +++ b/tests/msc_vlr/msc_vlr_test_call.c @@ -31,6 +31,12 @@ mncc_tx_to_cc(net, msg_type, mncc); } +static void on_call_release_mncc_sends_to_cc(uint32_t msg_type, struct gsm_mncc *mncc) +{ + mncc->msg_type = msg_type; + on_call_release_mncc_sends_to_cc_data = mncc; +} + #define IMSI "901700000010650" static void standard_lu() @@ -334,6 +340,80 @@ comment_end(); } +static void test_call_mt2() +{ + struct gsm_mncc mncc = { + .imsi = IMSI, + .callref = 0x423, + }; + + comment_start(); + + fake_time_start(); + + standard_lu(); + + BTW("after a while, MNCC asks us to setup a call, causing Paging"); + + paging_expect_imsi(IMSI); + paging_sent = false; + mncc_sends_to_cc(MNCC_SETUP_REQ, &mncc); + + VERBOSE_ASSERT(paging_sent, == true, "%d"); + VERBOSE_ASSERT(paging_stopped, == false, "%d"); + + btw("MS replies with Paging Response, and VLR sends Auth Request"); + auth_request_sent = false; + auth_request_expect_rand = "c187a53a5e6b9d573cac7c74451fd46d"; + auth_request_expect_autn = "1843a645b98d00005b2d666af46c45d9"; + ms_sends_msg("062707" + "03575886" /* classmark 2 */ + "089910070000106005" /* IMSI */); + VERBOSE_ASSERT(auth_request_sent, == true, "%d"); + + btw("MS sends Authen Response, VLR accepts and sends SecurityModeControl"); + expect_security_mode_ctrl(NULL, "1159ec926a50e98c034a6b7d7c9f418d"); + ms_sends_msg("0554" "7db47cf7" "2104" "f81e4dc7"); /* 2nd vector's res, s.a. */ + VERBOSE_ASSERT(security_mode_ctrl_sent, == true, "%d"); + + btw("MS sends SecurityModeControl acceptance, VLR accepts, sends CC Setup"); + dtap_expect_tx("0305" /* CC: Setup */); + ms_sends_security_mode_complete(); + VERBOSE_ASSERT(paging_stopped, == true, "%d"); + + cc_to_mncc_expect_tx(IMSI, MNCC_CALL_CONF_IND); + ms_sends_msg("8348" /* CC: Call Confirmed */ + "0406600402000581" /* Bearer Capability */ + "15020100" /* Call Control Capabilities */ + "40080402600400021f00" /* Supported Codec List */); + OSMO_ASSERT(cc_to_mncc_tx_confirmed); + + fake_time_passes(1, 23); + + cc_to_mncc_expect_tx("", MNCC_ALERT_IND); + ms_sends_msg("8381" /* CC: Alerting */); + OSMO_ASSERT(cc_to_mncc_tx_confirmed); + + fake_time_passes(15, 23); + + btw("The call failed, the BSC sends a BSSMAP Clear Request"); + on_call_release_mncc_sends_to_cc(MNCC_REL_REQ, &mncc); + cc_to_mncc_expect_tx("", MNCC_REL_CNF); + dtap_expect_tx("032d"); /* CC: Release */ + expect_iu_release(); + msc_clear_request(g_conn, 0); + OSMO_ASSERT(cc_to_mncc_tx_confirmed); + OSMO_ASSERT(iu_release_sent); + + EXPECT_CONN_COUNT(0); + + /* Make sure a pending release timer doesn't fire later to access freed data */ + fake_time_passes(15, 23); + + clear_vlr(); + comment_end(); +} + static void test_call_mo_to_unknown() { struct gsm_mncc mncc = { @@ -497,6 +577,7 @@ msc_vlr_test_func_t msc_vlr_tests[] = { test_call_mo, test_call_mt, + test_call_mt2, test_call_mo_to_unknown, test_call_mo_to_unknown_timeout, NULL diff --git a/tests/msc_vlr/msc_vlr_test_call.err b/tests/msc_vlr/msc_vlr_test_call.err index 281f418..6142464 100644 --- a/tests/msc_vlr/msc_vlr_test_call.err +++ b/tests/msc_vlr/msc_vlr_test_call.err @@ -757,6 +757,352 @@ full talloc report on 'msgb' (total 0 bytes in 1 blocks) talloc_total_blocks(tall_bsc_ctx) == 12 +===== test_call_mt2 +- Total time passed: 0.000000 s +- Location Update request causes a GSUP Send Auth Info request to HLR + MSC <--RAN_UTRAN_IU-- MS: GSM48_MT_MM_LOC_UPD_REQUEST + new conn +DREF unknown: MSC conn use + compl_l3 == 1 (0x1) +DRLL Dispatching 04.08 message GSM48_MT_MM_LOC_UPD_REQUEST (0x5:0x8) +DREF unknown: MSC conn use + fsm == 2 (0x5) +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Allocated +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Updated ID from LU +DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000010650 type=NORMAL +DMM LU/new-LAC: 23/23 +DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_IDLE}: Allocated +DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_IDLE}: is child of Subscr_Conn(901700000010650) +DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_IDLE}: rev=R99 net=UTRAN Auth+Ciph +DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA +DREF VLR subscr unknown usage increases to: 1 +DVLR set IMSI on subscriber; IMSI=901700000010650 id=901700000010650 +DVLR New subscr, IMSI: 901700000010650 +DREF VLR subscr IMSI:901700000010650 usage increases to: 2 +DREF VLR subscr IMSI:901700000010650 usage decreases to: 1 +DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_IDLE}: vlr_loc_upd_node1() +DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_AUTH +DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_NEEDS_AUTH}: Allocated +DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_NEEDS_AUTH}: is child of vlr_lu_fsm(901700000010650) +DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_NEEDS_AUTH}: Received Event VLR_AUTH_E_START +DVLR GSUP tx: 08010809710000000156f0 +GSUP --> HLR: OSMO_GSUP_MSGT_SEND_AUTH_INFO_REQUEST: 08010809710000000156f0 +DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_NEEDS_AUTH_WAIT_AI +DMM IMSI:901700000010650: subscr_conn_release_when_unused: conn still being established (SUBSCR_CONN_S_NEW) +DREF IMSI:901700000010650: MSC conn use - compl_l3 == 1 (0x4) + lu_result_sent == 0 +- from HLR, rx _SEND_AUTH_INFO_RESULT; VLR sends Auth Req to MS +<-- GSUP rx OSMO_GSUP_MSGT_SEND_AUTH_INFO_RESULT: 0a010809710000000156f00362201039fa2f4e3d523d8619a73b4f65c3e14d21049b36efdf2208059a4f668f6fbe39231027497388b6cb044648f396aa155b95ef2410f64735036e5871319c679f4742a75ea125108704f5ba55f30000d2ee44b22c8ea9192708e229c19e791f2e4103622010c187a53a5e6b9d573cac7c74451fd46d210485aa31302208d3d50a000bf04f6e23101159ec926a50e98c034a6b7d7c9f418d2410df3a03d9ca5335641efc8e36d76cd20b25101843a645b98d00005b2d666af46c45d927087db47cf7f81e4dc703622010efa9c29a9742148d5c9070348716e1bb210469d5f9fb22083df176f0c29f1a3d2310eb50e770ddcc3060101d2f43b6c2b884241076542abce5ff9345b0e8947f4c6e019c2510f9375e6d41e1000096e7fe4ff1c27e392708706f996719ba609c03622010f023d5a3b24726e0631b64b3840f82532104d570c03f2208ec011be8919883d62310c4e58af4ba43f3bcd904e16984f086d724100593f65e752e5cb7f473862bda05aa0a2510541ff1f077270000c5ea00d658bc7e9a27083fd26072eaa2a04d036220102f8f90c780d6a9c0c53da7ac57b6707e2104b072446f220823f39f9f425ad6e6231065af0527fda95b0dc5ae4aa515cdf32f2410537c3b35a3b13b08d08eeb28098f45cc25104bf4e564f75300009bc796706bc6574427080edb0eadbea94ac2 +DVLR GSUP rx 511: 0a010809710000000156f00362201039fa2f4e3d523d8619a73b4f65c3e14d21049b36efdf2208059a4f668f6fbe39231027497388b6cb044648f396aa155b95ef2410f64735036e5871319c679f4742a75ea125108704f5ba55f30000d2ee44b22c8ea9192708e229c19e791f2e4103622010c187a53a5e6b9d573cac7c74451fd46d210485aa31302208d3d50a000bf04f6e23101159ec926a50e98c034a6b7d7c9f418d2410df3a03d9ca5335641efc8e36d76cd20b25101843a645b98d00005b2d666af46c45d927087db47cf7f81e4dc703622010efa9c29a9742148d5c9070348716e1bb210469d5f9fb22083df176f0c29f1a3d2310eb50e770ddcc3060101d2f43b6c2b884241076542abce5ff9345b0e8947f4c6e019c2510f9375e6d41e1000096e7fe4ff1c27e392708706f996719ba609c03622010f023d5a3b24726e0631b64b3840f82532104d570c03f2208ec011be8919883d62310c4e58af4ba43f3bcd904e16984f086d724100593f65e752e5cb7f473862bda05aa0a2510541ff1f077270000c5ea00d658bc7e9a27083fd26072eaa2a04d036220102f8f90c780d6a9c0c53da7ac57b6707e2104b072446f220823f39f9f425ad6e6231065af0527fda95b0dc5ae4aa515cdf32f2410537c3b35a3b13b08d08eeb28098f45cc25104bf4e564f75300009bc796706bc6574427080edb0eadbea94ac2 +DREF VLR subscr IMSI:901700000010650 usage increases to: 2 +DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: Received Event VLR_AUTH_E_HLR_SAI_ACK +DVLR SUBSCR(IMSI:901700000010650) Received 5 auth tuples +DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: state_chg to VLR_SUB_AS_WAIT_RESP +DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=1 key_seq=0 -- will use UMTS AKA (is_r99=yes, at->vec.auth_types=0x3) +- sending UMTS Auth Request for IMSI:901700000010650: tuple use_count=1 key_seq=0 auth_types=0x3 and... +- ...rand=39fa2f4e3d523d8619a73b4f65c3e14d +- ...autn=8704f5ba55f30000d2ee44b22c8ea919 +- ...expecting res=e229c19e791f2e41 +DREF VLR subscr IMSI:901700000010650 usage decreases to: 1 +<-- GSUP rx OSMO_GSUP_MSGT_SEND_AUTH_INFO_RESULT: vlr_gsupc_read_cb() returns 0 + auth_request_sent == 1 + lu_result_sent == 0 +- MS sends Authen Response, VLR accepts and sends SecurityModeControl + MSC <--RAN_UTRAN_IU-- MS: GSM48_MT_MM_AUTH_RESP +DREF IMSI:901700000010650: MSC conn use + dtap == 2 (0x6) +DRLL Dispatching 04.08 message GSM48_MT_MM_AUTH_RESP (0x5:0x14) +DMM IMSI:901700000010650: MM UMTS AUTHENTICATION RESPONSE (res = e229c19e791f2e41) +DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP +DVLR SUBSCR(IMSI:901700000010650) AUTH on UTRAN received RES: e229c19e791f2e41 (8 bytes) +DVLR SUBSCR(IMSI:901700000010650) AUTH established UMTS security context +DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result VLR_AUTH_RES_PASSED +DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED +DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) +DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_AUTHENTICATED}: Removing from parent vlr_lu_fsm(901700000010650) +DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_AUTHENTICATED}: Freeing instance +DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_AUTHENTICATED}: Deallocated +DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_WAIT_AUTH}: Received Event VLR_ULA_E_AUTH_RES +DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_post_auth() +DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_WAIT_AUTH}: Set Ciphering Mode +DMM -> SECURITY MODE CONTROL IMSI:901700000010650 +- sending SecurityModeControl for UE ctx 42 send_ck=0 new_key=1 +- ...ik=27497388b6cb044648f396aa155b95ef +DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_WAIT_AUTH}: state_chg to VLR_ULA_S_WAIT_CIPH +DMM IMSI:901700000010650: subscr_conn_release_when_unused: conn still being established (SUBSCR_CONN_S_NEW) +DREF IMSI:901700000010650: MSC conn use - dtap == 1 (0x4) + security_mode_ctrl_sent == 1 + lu_result_sent == 0 +- MS sends SecurityModeControl acceptance, VLR accepts and sends GSUP LU Req to HLR +DMM <- SECURITY MODE COMPLETE IMSI:901700000010650 +DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_WAIT_CIPH}: Received Event VLR_ULA_E_CIPH_RES +DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_WAIT_CIPH}: vlr_loc_upd_post_ciph() +DIUCS IMSI:901700000010650: tx CommonID 901700000010650 +- Iu Common ID --RAN_UTRAN_IU--> MS (IMSI=901700000010650) +DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_WAIT_CIPH}: vlr_loc_upd_node_4() +DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_WAIT_CIPH}: state_chg to VLR_ULA_S_WAIT_HLR_UPD +DVLR upd_hlr_vlr_fsm(901700000010650){UPD_HLR_VLR_S_INIT}: Allocated +DVLR upd_hlr_vlr_fsm(901700000010650){UPD_HLR_VLR_S_INIT}: is child of vlr_lu_fsm(901700000010650) +DVLR upd_hlr_vlr_fsm(901700000010650){UPD_HLR_VLR_S_INIT}: Received Event UPD_HLR_VLR_E_START +DVLR GSUP tx: 04010809710000000156f0 +GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000000156f0 +DVLR upd_hlr_vlr_fsm(901700000010650){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA + gsup_tx_confirmed == 1 + lu_result_sent == 0 +- HLR sends _INSERT_DATA_REQUEST, VLR responds with _INSERT_DATA_RESULT +<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: 10010809710000000156f00804032443f2 +DVLR GSUP rx 17: 10010809710000000156f00804032443f2 +DREF VLR subscr IMSI:901700000010650 usage increases to: 2 +DVLR IMSI:901700000010650 has MSISDN:42342 +DVLR SUBSCR(MSISDN:42342) VLR: update for IMSI=901700000010650 (MSISDN=42342, used=2) +DVLR GSUP tx: 12010809710000000156f0 +GSUP --> HLR: OSMO_GSUP_MSGT_INSERT_DATA_RESULT: 12010809710000000156f0 +DREF VLR subscr MSISDN:42342 usage decreases to: 1 +<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: vlr_gsupc_read_cb() returns 0 + lu_result_sent == 0 +- HLR also sends GSUP _UPDATE_LOCATION_RESULT +<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: 06010809710000000156f0 +DVLR GSUP rx 11: 06010809710000000156f0 +DREF VLR subscr MSISDN:42342 usage increases to: 2 +DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_HLR_LU_RES +DVLR upd_hlr_vlr_fsm(901700000010650){UPD_HLR_VLR_S_WAIT_FOR_DATA}: Received Event UPD_HLR_VLR_E_UPD_LOC_ACK +DVLR upd_hlr_vlr_fsm(901700000010650){UPD_HLR_VLR_S_WAIT_FOR_DATA}: state_chg to UPD_HLR_VLR_S_DONE +DVLR upd_hlr_vlr_fsm(901700000010650){UPD_HLR_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR) +DVLR upd_hlr_vlr_fsm(901700000010650){UPD_HLR_VLR_S_DONE}: Removing from parent vlr_lu_fsm(901700000010650) +DVLR upd_hlr_vlr_fsm(901700000010650){UPD_HLR_VLR_S_DONE}: Freeing instance +DVLR upd_hlr_vlr_fsm(901700000010650){UPD_HLR_VLR_S_DONE}: Deallocated +DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_UPD_HLR_COMPL +DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_WAIT_HLR_UPD}: state_chg to VLR_ULA_S_WAIT_LU_COMPL +DVLR lu_compl_vlr_fsm(901700000010650){LU_COMPL_VLR_S_INIT}: Allocated +DVLR lu_compl_vlr_fsm(901700000010650){LU_COMPL_VLR_S_INIT}: is child of vlr_lu_fsm(901700000010650) +DVLR lu_compl_vlr_fsm(901700000010650){LU_COMPL_VLR_S_INIT}: Received Event LU_COMPL_VLR_E_START +DVLR lu_compl_vlr_fsm(901700000010650){LU_COMPL_VLR_S_INIT}: state_chg to LU_COMPL_VLR_S_WAIT_SUB_PRES +DVLR sub_pres_vlr_fsm(901700000010650){SUB_PRES_VLR_S_INIT}: Allocated +DVLR sub_pres_vlr_fsm(901700000010650){SUB_PRES_VLR_S_INIT}: is child of lu_compl_vlr_fsm(901700000010650) +DVLR sub_pres_vlr_fsm(901700000010650){SUB_PRES_VLR_S_INIT}: Received Event SUB_PRES_VLR_E_START +DVLR sub_pres_vlr_fsm(901700000010650){SUB_PRES_VLR_S_INIT}: state_chg to SUB_PRES_VLR_S_DONE +DVLR sub_pres_vlr_fsm(901700000010650){SUB_PRES_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR) +DVLR sub_pres_vlr_fsm(901700000010650){SUB_PRES_VLR_S_DONE}: Removing from parent lu_compl_vlr_fsm(901700000010650) +DVLR sub_pres_vlr_fsm(901700000010650){SUB_PRES_VLR_S_DONE}: Freeing instance +DVLR sub_pres_vlr_fsm(901700000010650){SUB_PRES_VLR_S_DONE}: Deallocated +DVLR lu_compl_vlr_fsm(901700000010650){LU_COMPL_VLR_S_WAIT_SUB_PRES}: Received Event LU_COMPL_VLR_E_SUB_PRES_COMPL +DVLR lu_compl_vlr_fsm(901700000010650){LU_COMPL_VLR_S_WAIT_SUB_PRES}: lu_compl_vlr_new_tmsi() +DVLR lu_compl_vlr_fsm(901700000010650){LU_COMPL_VLR_S_WAIT_SUB_PRES}: state_chg to LU_COMPL_VLR_S_WAIT_TMSI_CNF +- sending LU Accept for MSISDN:42342, with TMSI 0x03020100 +DREF VLR subscr MSISDN:42342 usage decreases to: 1 +<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0 + lu_result_sent == 1 +- a LU Accept with a new TMSI was sent, waiting for TMSI Realloc Compl + llist_count(&net->subscr_conns) == 1 +msc_subscr_conn_is_accepted() == false +- MS sends TMSI Realloc Complete + MSC <--RAN_UTRAN_IU-- MS: GSM48_MT_MM_TMSI_REALL_COMPL +DREF MSISDN:42342: MSC conn use + dtap == 2 (0x6) +DRLL Dispatching 04.08 message GSM48_MT_MM_TMSI_REALL_COMPL (0x5:0x1b) +DMM TMSI Reallocation Completed. Subscriber: MSISDN:42342 +DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_NEW_TMSI_ACK +DVLR lu_compl_vlr_fsm(901700000010650){LU_COMPL_VLR_S_WAIT_TMSI_CNF}: Received Event LU_COMPL_VLR_E_NEW_TMSI_ACK +DREF VLR subscr MSISDN:42342 usage increases to: 2 +DVLR lu_compl_vlr_fsm(901700000010650){LU_COMPL_VLR_S_WAIT_TMSI_CNF}: state_chg to LU_COMPL_VLR_S_DONE +DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_LU_COMPL_SUCCESS +DVLR lu_compl_vlr_fsm(901700000010650){LU_COMPL_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT) +DVLR lu_compl_vlr_fsm(901700000010650){LU_COMPL_VLR_S_DONE}: Removing from parent vlr_lu_fsm(901700000010650) +DVLR lu_compl_vlr_fsm(901700000010650){LU_COMPL_VLR_S_DONE}: Freeing instance +DVLR lu_compl_vlr_fsm(901700000010650){LU_COMPL_VLR_S_DONE}: Deallocated +DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_RELEASE_WHEN_UNUSED +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: subscr_conn_fsm_release_when_unused: releasing conn +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_RELEASED +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) +DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT) +DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_DONE}: Removing from parent Subscr_Conn(901700000010650) +DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT +DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_DONE}: Freeing instance +DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_DONE}: Deallocated +DMM msc_subscr_conn_close(vsub=MSISDN:42342, cause=2): no conn fsm, releasing directly without release event. +- Iu Release --RAN_UTRAN_IU--> MS +DREF MSISDN:42342: MSC conn use - fsm == 1 (0x2) +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Freeing instance +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Deallocated +DREF MSISDN:42342: MSC conn use - dtap == 0 (0x0) +DRLL subscr MSISDN:42342: Freeing subscriber connection +DREF VLR subscr MSISDN:42342 usage decreases to: 1 + iu_release_sent == 1 +- LU was successful, and the conn has already been closed + llist_count(&net->subscr_conns) == 0 +DREF VLR subscr MSISDN:42342 usage increases to: 2 + vsub != NULL == 1 + strcmp(vsub->imsi, IMSI) == 0 + vsub->lac == 23 +DREF VLR subscr MSISDN:42342 usage decreases to: 1 +--- +- after a while, MNCC asks us to setup a call, causing Paging +DMNCC receive message MNCC_SETUP_REQ +DREF VLR subscr MSISDN:42342 usage increases to: 2 +DCC (ti ff sub MSISDN:42342 callref 423) New transaction +DREF VLR subscr MSISDN:42342 usage increases to: 3 +DMM Subscriber MSISDN:42342 not paged yet, start paging. + RAN_UTRAN_IU sends out paging request to IMSI 901700000010650, TMSI 0x03020100, LAC 23 + strcmp(paging_expecting_imsi, imsi) == 0 +DREF VLR subscr MSISDN:42342 usage increases to: 4 +DREF VLR subscr MSISDN:42342 usage decreases to: 3 + paging_sent == 1 + paging_stopped == 0 +- MS replies with Paging Response, and VLR sends Auth Request + MSC <--RAN_UTRAN_IU-- MS: GSM48_MT_RR_PAG_RESP + new conn +DREF unknown: MSC conn use + compl_l3 == 1 (0x1) +DRLL Dispatching 04.08 message GSM48_MT_RR_PAG_RESP (0x6:0x27) +DRR PAGING RESPONSE: MI(IMSI)=901700000010650 +DREF unknown: MSC conn use + fsm == 2 (0x5) +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Allocated +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Updated ID from PAGING_RESP +DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: Allocated +DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: is child of Subscr_Conn(901700000010650) +DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: rev=R99 net=UTRAN Auth+Ciph +DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: Received Event PR_ARQ_E_START +DREF VLR subscr MSISDN:42342 usage increases to: 4 +DREF VLR subscr MSISDN:42342 usage increases to: 5 +DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: proc_arq_vlr_fn_post_imsi() +DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: state_chg to PR_ARQ_S_WAIT_AUTH +DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_NEEDS_AUTH}: Allocated +DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_NEEDS_AUTH}: is child of Process_Access_Request_VLR(901700000010650) +DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_NEEDS_AUTH}: Received Event VLR_AUTH_E_START +DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_WAIT_RESP +DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=1 key_seq=1 -- will use UMTS AKA (is_r99=yes, at->vec.auth_types=0x3) +- sending UMTS Auth Request for MSISDN:42342: tuple use_count=1 key_seq=1 auth_types=0x3 and... +- ...rand=c187a53a5e6b9d573cac7c74451fd46d +- ...autn=1843a645b98d00005b2d666af46c45d9 +- ...expecting res=7db47cf7f81e4dc7 +DREF VLR subscr MSISDN:42342 usage decreases to: 4 +DMM MSISDN:42342: subscr_conn_release_when_unused: conn still being established (SUBSCR_CONN_S_NEW) +DREF MSISDN:42342: MSC conn use - compl_l3 == 1 (0x4) + auth_request_sent == 1 +- MS sends Authen Response, VLR accepts and sends SecurityModeControl + MSC <--RAN_UTRAN_IU-- MS: GSM48_MT_MM_AUTH_RESP +DREF MSISDN:42342: MSC conn use + dtap == 2 (0x6) +DRLL Dispatching 04.08 message GSM48_MT_MM_AUTH_RESP (0x5:0x14) +DMM MSISDN:42342: MM UMTS AUTHENTICATION RESPONSE (res = 7db47cf7f81e4dc7) +DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP +DVLR SUBSCR(MSISDN:42342) AUTH on UTRAN received RES: 7db47cf7f81e4dc7 (8 bytes) +DVLR SUBSCR(MSISDN:42342) AUTH established UMTS security context +DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result VLR_AUTH_RES_PASSED +DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED +DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) +DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_AUTHENTICATED}: Removing from parent Process_Access_Request_VLR(901700000010650) +DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_AUTHENTICATED}: Freeing instance +DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_AUTHENTICATED}: Deallocated +DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_WAIT_AUTH}: Received Event PR_ARQ_E_AUTH_RES +DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_WAIT_AUTH}: got VLR_AUTH_RES_PASSED +DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2() +DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_WAIT_AUTH}: Set Ciphering Mode +DMM -> SECURITY MODE CONTROL MSISDN:42342 +- sending SecurityModeControl for UE ctx 42 send_ck=0 new_key=1 +- ...ik=1159ec926a50e98c034a6b7d7c9f418d +DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_WAIT_AUTH}: state_chg to PR_ARQ_S_WAIT_CIPH +DMM MSISDN:42342: subscr_conn_release_when_unused: conn still being established (SUBSCR_CONN_S_NEW) +DREF MSISDN:42342: MSC conn use - dtap == 1 (0x4) + security_mode_ctrl_sent == 1 +- MS sends SecurityModeControl acceptance, VLR accepts, sends CC Setup +DMM <- SECURITY MODE COMPLETE MSISDN:42342 +DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_WAIT_CIPH}: Received Event PR_ARQ_E_CIPH_RES +DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_node2_post_ciph() +DIUCS MSISDN:42342: tx CommonID 901700000010650 +- Iu Common ID --RAN_UTRAN_IU--> MS (IMSI=901700000010650) +DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_node2_post_vlr() +DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_pres() +DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_trace() +DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_imei() +DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_WAIT_CIPH}: proc_arq_fsm_done(VLR_PR_ARQ_RES_PASSED) +DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_WAIT_CIPH}: state_chg to PR_ARQ_S_DONE +DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED +DPAG Paging success for MSISDN:42342 (event=0) +DPAG Calling paging cbfn. +DCC Paging subscr 42342 succeeded! +DREF MSISDN:42342: MSC conn use + trans_cc == 2 (0xc) +DCC starting timer T303 with 30 seconds +DCC (ti 00 sub MSISDN:42342) new state NULL -> CALL_PRESENT +DMSC msc_tx 2 bytes to MSISDN:42342 via RAN_UTRAN_IU +- DTAP --RAN_UTRAN_IU--> MS: GSM48_MT_CC_SETUP: 0305 +- DTAP matches expected message +DREF VLR subscr MSISDN:42342 usage decreases to: 3 +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_RELEASE_WHEN_UNUSED +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: subscr_conn_fsm_release_when_unused: connection still has active transaction: CC + paging_stopped == 1 + MSC <--RAN_UTRAN_IU-- MS: GSM48_MT_CC_CALL_CONF +DREF MSISDN:42342: MSC conn use + dtap == 3 (0xe) +DRLL Dispatching 04.08 message GSM48_MT_CC_CALL_CONF (0x3:0x8) +DCC stopping pending timer T303 +DCC starting timer T310 with 30 seconds +DCC (ti 00 sub MSISDN:42342) new state CALL_PRESENT -> MO_TERM_CALL_CONF + MS <--Call Assignment-- MSC: subscr=MSISDN:42342 callref=0x423 +DMNCC transmit message MNCC_CALL_CONF_IND +DCC Sending 'MNCC_CALL_CONF_IND' to MNCC. + MSC --> MNCC: callref 0x423: MNCC_CALL_CONF_IND +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_RELEASE_WHEN_UNUSED +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_COMMUNICATING}: subscr_conn_fsm_release_when_unused: connection still has active transaction: CC +DREF MSISDN:42342: MSC conn use - dtap == 2 (0xc) +- Total time passed: 1.000023 s + MSC <--RAN_UTRAN_IU-- MS: GSM48_MT_CC_ALERTING +DREF MSISDN:42342: MSC conn use + dtap == 3 (0xe) +DRLL Dispatching 04.08 message GSM48_MT_CC_ALERTING (0x3:0x1) +DCC stopping pending timer T310 +DCC starting timer T301 with 180 seconds +DCC (ti 00 sub MSISDN:42342) new state MO_TERM_CALL_CONF -> CALL_RECEIVED +DMNCC transmit message MNCC_ALERT_IND +DCC Sending 'MNCC_ALERT_IND' to MNCC. + MSC --> MNCC: callref 0x423: MNCC_ALERT_IND +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_COMMUNICATING +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_RELEASE_WHEN_UNUSED +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_COMMUNICATING}: subscr_conn_fsm_release_when_unused: connection still has active transaction: CC +DREF MSISDN:42342: MSC conn use - dtap == 2 (0xc) +- Total time passed: 16.000046 s +- The call failed, the BSC sends a BSSMAP Clear Request +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_CN_CLOSE +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_COMMUNICATING}: state_chg to SUBSCR_CONN_S_RELEASED +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) +DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT) +DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_DONE}: Removing from parent Subscr_Conn(901700000010650) +DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_DONE}: Freeing instance +DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_DONE}: Deallocated +DMM msc_subscr_conn_close(vsub=MSISDN:42342, cause=2): no conn fsm, releasing directly without release event. +DCC stopping pending timer T301 + MS <--Call Release-- MSC: subscr=MSISDN:42342 callref=0x423 +DMNCC receive message MNCC_REL_REQ +DCC (ti 00 sub 42342) Received 'MNCC_REL_REQ' from MNCC in state 7 (CALL_RECEIVED) +DCC starting timer T308 with 10 seconds +DCC (ti 00 sub MSISDN:42342) new state CALL_RECEIVED -> RELEASE_REQ +DMSC msc_tx 2 bytes to MSISDN:42342 via RAN_UTRAN_IU +- DTAP --RAN_UTRAN_IU--> MS: GSM48_MT_CC_RELEASE: 032d +- DTAP matches expected message +DMNCC transmit message MNCC_REL_CNF +DCC Sending 'MNCC_REL_CNF' to MNCC. + MSC --> MNCC: callref 0x423: MNCC_REL_CNF +DCC (ti 00 sub MSISDN:42342) new state RELEASE_REQ -> NULL +DCC MSISDN:42342 Timer 0x308 is still running while discarding transaction -- this is a bug: we were still expecting a response but are freeing the transaction anyway +DREF VLR subscr MSISDN:42342 usage decreases to: 2 +DREF MSISDN:42342: MSC conn use - trans_cc == 1 (0x4) +- Iu Release --RAN_UTRAN_IU--> MS +DREF MSISDN:42342: MSC conn use - fsm == 0 (0x0) +DRLL subscr MSISDN:42342: Freeing subscriber connection +DREF VLR subscr MSISDN:42342 usage decreases to: 1 +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Freeing instance +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Deallocated + llist_count(&net->subscr_conns) == 0 +- Total time passed: 31.000069 s +DREF freeing VLR subscr MSISDN:42342 +===== test_call_mt2: SUCCESS + +full talloc report on 'msgb' (total 0 bytes in 1 blocks) +talloc_total_blocks(tall_bsc_ctx) == 12 + ===== test_call_mo_to_unknown - Total time passed: 0.000000 s - Location Update request causes a GSUP Send Auth Info request to HLR diff --git a/tests/msc_vlr/msc_vlr_tests.c b/tests/msc_vlr/msc_vlr_tests.c index 45ab5e1..cb716a8 100644 --- a/tests/msc_vlr/msc_vlr_tests.c +++ b/tests/msc_vlr/msc_vlr_tests.c @@ -616,12 +616,19 @@ return 0; } +struct gsm_mncc *on_call_release_mncc_sends_to_cc_data = NULL; + /* override, requires '-Wl,--wrap=msc_mgcp_call_release' */ void __real_msc_mgcp_call_release(struct gsm_trans *trans); void __wrap_msc_mgcp_call_release(struct gsm_trans *trans) { log("MS <--Call Release-- MSC: subscr=%s callref=0x%x", vlr_subscr_name(trans->vsub), trans->callref); + if (on_call_release_mncc_sends_to_cc_data) { + mncc_tx_to_cc(trans->net, on_call_release_mncc_sends_to_cc_data->msg_type, + on_call_release_mncc_sends_to_cc_data); + on_call_release_mncc_sends_to_cc_data = NULL; + } } static int fake_vlr_tx_lu_acc(void *msc_conn_ref, uint32_t send_tmsi) diff --git a/tests/msc_vlr/msc_vlr_tests.h b/tests/msc_vlr/msc_vlr_tests.h index 858936c..15df9ec 100644 --- a/tests/msc_vlr/msc_vlr_tests.h +++ b/tests/msc_vlr/msc_vlr_tests.h @@ -112,6 +112,8 @@ extern bool cc_to_mncc_tx_confirmed; extern uint32_t cc_to_mncc_tx_got_callref; +extern struct gsm_mncc *on_call_release_mncc_sends_to_cc_data; + static inline void expect_iu_release() { iu_release_expected = true; -- To view, visit https://gerrit.osmocom.org/7703 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Ice7197b48d4e163a3c4d97b559fdcd7e88c4107e Gerrit-PatchSet: 1 Gerrit-Project: osmo-msc Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr From gerrit-no-reply at lists.osmocom.org Tue Apr 10 00:15:22 2018 From: gerrit-no-reply at lists.osmocom.org (Neels Hofmeyr) Date: Tue, 10 Apr 2018 00:15:22 +0000 Subject: [PATCH] osmo-msc[master]: CC: intentionally release T308 on BSSMAP Clear Request from BSC Message-ID: Review at https://gerrit.osmocom.org/7704 CC: intentionally release T308 on BSSMAP Clear Request from BSC So far we hit a running T308 during CC release when caused by a BSSMAP Clear Request, and we loudly log that as error. However, now I understand that T308 is a direct cause of the dispatch of a REL IND towards MNCC, which is used to indicate teardown to MNCC. So during _gsm48_cc_trans_free(), we first clear all timers, then invoke mncc_release_ind() which starts another timer (useful for graceful CC Release, but in this code path the intention is immediate release). Simply immediately cancel the timer again and release the conn. A separate question is whether a BSSMAP Clear Request should be less aggressive in releasing the connections; i.e. instead of calling trans_free() all around, to rather ask each transaction to "please stop soon", somehow. Related: OS#3062 Change-Id: I231fdb574a086a206321148474cbdc7ca9cf39f0 --- M src/libmsc/gsm_04_08.c M src/libmsc/transaction.c M tests/msc_vlr/msc_vlr_test_call.err 3 files changed, 4 insertions(+), 10 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-msc refs/changes/04/7704/1 diff --git a/src/libmsc/gsm_04_08.c b/src/libmsc/gsm_04_08.c index e5ddb44..f29c0b6 100644 --- a/src/libmsc/gsm_04_08.c +++ b/src/libmsc/gsm_04_08.c @@ -1422,6 +1422,9 @@ mncc_release_ind(trans->net, trans, trans->callref, GSM48_CAUSE_LOC_PRN_S_LU, GSM48_CC_CAUSE_RESOURCE_UNAVAIL); + /* This is a final freeing of the transaction. The MNCC release may have triggered the + * T308 release timer, but we don't have the luxury of graceful CC Release here. */ + gsm48_stop_cc_timer(trans); } if (trans->cc.state != GSM_CSTATE_NULL) new_cc_state(trans, GSM_CSTATE_NULL); diff --git a/src/libmsc/transaction.c b/src/libmsc/transaction.c index 66b929a..147099e 100644 --- a/src/libmsc/transaction.c +++ b/src/libmsc/transaction.c @@ -122,15 +122,6 @@ switch (trans->protocol) { case GSM48_PDISC_CC: _gsm48_cc_trans_free(trans); - if (osmo_timer_pending(&trans->cc.timer)) { - LOGP(DCC, LOGL_ERROR, - "%s Timer 0x%x is still running while discarding transaction" - " -- this is a bug: we were still expecting a response but" - " are freeing the transaction anyway\n", - vlr_subscr_name(trans->conn->vsub), trans->cc.Tcurrent); - osmo_timer_del(&trans->cc.timer); - trans->cc.Tcurrent = 0; - } conn_usage_token = MSC_CONN_USE_TRANS_CC; break; case GSM48_PDISC_SMS: diff --git a/tests/msc_vlr/msc_vlr_test_call.err b/tests/msc_vlr/msc_vlr_test_call.err index 6142464..1b8002b 100644 --- a/tests/msc_vlr/msc_vlr_test_call.err +++ b/tests/msc_vlr/msc_vlr_test_call.err @@ -1085,8 +1085,8 @@ DMNCC transmit message MNCC_REL_CNF DCC Sending 'MNCC_REL_CNF' to MNCC. MSC --> MNCC: callref 0x423: MNCC_REL_CNF +DCC stopping pending timer T308 DCC (ti 00 sub MSISDN:42342) new state RELEASE_REQ -> NULL -DCC MSISDN:42342 Timer 0x308 is still running while discarding transaction -- this is a bug: we were still expecting a response but are freeing the transaction anyway DREF VLR subscr MSISDN:42342 usage decreases to: 2 DREF MSISDN:42342: MSC conn use - trans_cc == 1 (0x4) - Iu Release --RAN_UTRAN_IU--> MS -- To view, visit https://gerrit.osmocom.org/7704 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I231fdb574a086a206321148474cbdc7ca9cf39f0 Gerrit-PatchSet: 1 Gerrit-Project: osmo-msc Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr From gerrit-no-reply at lists.osmocom.org Tue Apr 10 00:15:23 2018 From: gerrit-no-reply at lists.osmocom.org (Neels Hofmeyr) Date: Tue, 10 Apr 2018 00:15:23 +0000 Subject: [PATCH] osmo-msc[master]: refactor subscr_conn and subscr_conn_fsm de-/alloc Message-ID: Review at https://gerrit.osmocom.org/7705 refactor subscr_conn and subscr_conn_fsm de-/alloc Refactor: 1. Glue the gsm_subscriber_connection alloc to the subscr_conn_fsm. 2. Add separate AUTH_CIPH state to the FSM. 3. Use conn->use_count to trigger conn release. 4. Add separate RELEASING state to the FSM. 5. Add rate counters for each of the three Complete Layer 3 types. Details: 1. Glue the gsm_subscriber_connection alloc to the subscr_conn_fsm. Historically, a gsm_subscriber_connection was allocated in libbsc land, and only upon Complete Layer 3 did libmsc add the fsm instance. After splitting openbsc.git into a separate osmo-msc, this is no longer necessary, hence: Closely tie gsm_subscriber_connection allocation to the subscr_conn_fsm instance: talloc the conn as a child of the FSM instance, and discard the conn as soon as the FSM terminates. 2. Add separate AUTH_CIPH state to the FSM. Decoding the Complete Layer 3 message is distinctly separate from waiting for the VLR FSMs to conclude. Use the NEW state as "we don't know if this is a valid message yet", and the AUTH_CIPH state as "evaluating, don't release". A profound effect of this: should we for any odd reason fail to leave the FSM's NEW state, the conn will be released right at the end of msc_compl_l3(), without needing to trigger release in each code path. 3. Use conn->use_count to trigger conn release. Before, the FSM itself would hold a use count on the conn, and hence we would need to ask it whether it is ready to release the conn yet by dispatching events, to achieve a use_count decrement. Instead, unite the FSM instance and conn, and do not hold a use count by the FSM. Hence, trigger an FSM "UNUSED" event only when the use_count reaches zero. As long as use counts are done correctly, the FSM will terminate correctly. These exceptions: - The new AUTH_CIPH state explicitly ignores UNUSED events, since we expect the use count to reach zero while evaluating Authentication and Ciphering. (I experimented with holding a use count by AUTH_CIPH onenter() and releasing by onleave(), but the use count and thus the conn are released before the next state can initiate transactions that would increment the use count again. Same thing for the VLR FSMs holding a use count, they should be done before we advance to the next state. The easiest is to simply expect zero use count during the AUTH_CIPH state.) - A CM Service Request means that even though the MSC would be through with all it wants to do, we shall still wait for a request to follow from the MS. Hence the FSM holds a use count on itself while a CM Service is pending. - While waiting for a Release/Clear Complete, the FSM holds a use count on itself. 4. Add separate RELEASING state to the FSM. If we decide to release for other reasons than a use count reaching zero, we still need to be able to wait for the msc_dtap() use count on the conn to release. (An upcoming patch will further use the RELEASING state to properly wait for Clear Complete / Release Complete messages.) 5. Add rate counters for each of the three Complete Layer 3 types. Besides LU, also count CM Service Request and Paging Response acceptance/rejections. Without these counters, only very few of the auth+ciph outcomes actually show in the counters. Related: OS#3122 Change-Id: I55feb379e176a96a831e105b86202b17a0ffe889 --- M include/osmocom/msc/gsm_data.h M include/osmocom/msc/osmo_msc.h M src/libmsc/gsm_04_08.c M src/libmsc/msc_ifaces.c M src/libmsc/osmo_msc.c M src/libmsc/subscr_conn.c M src/libmsc/transaction.c M tests/msc_vlr/msc_vlr_test_authen_reuse.err M tests/msc_vlr/msc_vlr_test_call.err M tests/msc_vlr/msc_vlr_test_gsm_authen.err M tests/msc_vlr/msc_vlr_test_gsm_ciph.err M tests/msc_vlr/msc_vlr_test_hlr_reject.err M tests/msc_vlr/msc_vlr_test_hlr_timeout.err M tests/msc_vlr/msc_vlr_test_ms_timeout.err M tests/msc_vlr/msc_vlr_test_no_authen.err M tests/msc_vlr/msc_vlr_test_reject_concurrency.err M tests/msc_vlr/msc_vlr_test_rest.c M tests/msc_vlr/msc_vlr_test_rest.err M tests/msc_vlr/msc_vlr_test_umts_authen.err M tests/msc_vlr/msc_vlr_tests.c 20 files changed, 3,576 insertions(+), 2,937 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-msc refs/changes/05/7705/1 -- To view, visit https://gerrit.osmocom.org/7705 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I55feb379e176a96a831e105b86202b17a0ffe889 Gerrit-PatchSet: 1 Gerrit-Project: osmo-msc Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr From gerrit-no-reply at lists.osmocom.org Tue Apr 10 00:15:23 2018 From: gerrit-no-reply at lists.osmocom.org (Neels Hofmeyr) Date: Tue, 10 Apr 2018 00:15:23 +0000 Subject: [PATCH] osmo-msc[master]: properly receive BSSMAP Clear Complete and Iu Release Complete Message-ID: Review at https://gerrit.osmocom.org/7706 properly receive BSSMAP Clear Complete and Iu Release Complete When sending a BSSMAP Clear or Iu Release, do not immediately discard the conn, but wait until a BSSMAP Clear Complete / Iu Release Complete has been received. Hence we will no longer show in the log that an incoming Release/Clear Complete belongs to an unknown subscriber, but will still be around to properly log the release. Related: OS#3122 Change-Id: Ie4c6aaba3866d6e5b98004e8870a215e8cf8ffc1 --- M include/osmocom/msc/gsm_data.h M include/osmocom/msc/osmo_msc.h M src/libmsc/a_iface_bssap.c M src/libmsc/iucs_ranap.c M src/libmsc/subscr_conn.c M tests/msc_vlr/msc_vlr_test_authen_reuse.c M tests/msc_vlr/msc_vlr_test_authen_reuse.err M tests/msc_vlr/msc_vlr_test_call.c M tests/msc_vlr/msc_vlr_test_call.err M tests/msc_vlr/msc_vlr_test_gsm_authen.c M tests/msc_vlr/msc_vlr_test_gsm_authen.err M tests/msc_vlr/msc_vlr_test_gsm_ciph.c M tests/msc_vlr/msc_vlr_test_gsm_ciph.err M tests/msc_vlr/msc_vlr_test_hlr_reject.c M tests/msc_vlr/msc_vlr_test_hlr_reject.err M tests/msc_vlr/msc_vlr_test_hlr_timeout.c M tests/msc_vlr/msc_vlr_test_hlr_timeout.err M tests/msc_vlr/msc_vlr_test_ms_timeout.c M tests/msc_vlr/msc_vlr_test_ms_timeout.err M tests/msc_vlr/msc_vlr_test_no_authen.c M tests/msc_vlr/msc_vlr_test_no_authen.err M tests/msc_vlr/msc_vlr_test_reject_concurrency.c M tests/msc_vlr/msc_vlr_test_reject_concurrency.err M tests/msc_vlr/msc_vlr_test_rest.c M tests/msc_vlr/msc_vlr_test_rest.err M tests/msc_vlr/msc_vlr_test_umts_authen.c M tests/msc_vlr/msc_vlr_test_umts_authen.err M tests/msc_vlr/msc_vlr_tests.c M tests/msc_vlr/msc_vlr_tests.h 29 files changed, 922 insertions(+), 570 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-msc refs/changes/06/7706/1 diff --git a/include/osmocom/msc/gsm_data.h b/include/osmocom/msc/gsm_data.h index 4cfe08d..c5e7aaf 100644 --- a/include/osmocom/msc/gsm_data.h +++ b/include/osmocom/msc/gsm_data.h @@ -148,6 +148,7 @@ struct { struct ranap_ue_conn_ctx *ue_ctx; uint8_t rab_id; + bool waiting_for_release_complete; } iu; struct { @@ -164,6 +165,8 @@ * to reference the SCCP connection that is * associated with this subscriber connection */ uint32_t conn_id; + + bool waiting_for_clear_complete; } a; }; diff --git a/include/osmocom/msc/osmo_msc.h b/include/osmocom/msc/osmo_msc.h index f7d89a2..ba5ef98 100644 --- a/include/osmocom/msc/osmo_msc.h +++ b/include/osmocom/msc/osmo_msc.h @@ -77,8 +77,12 @@ void msc_subscr_conn_communicating(struct gsm_subscriber_connection *conn); void msc_subscr_conn_close(struct gsm_subscriber_connection *conn, uint32_t cause); +void msc_subscr_conn_mo_close(struct gsm_subscriber_connection *conn, uint32_t cause); bool msc_subscr_conn_in_release(struct gsm_subscriber_connection *conn); +void msc_subscr_conn_rx_bssmap_clear_complete(struct gsm_subscriber_connection *conn); +void msc_subscr_conn_rx_iu_release_complete(struct gsm_subscriber_connection *conn); + enum msc_subscr_conn_use { MSC_CONN_USE_UNTRACKED = -1, MSC_CONN_USE_COMPL_L3, diff --git a/src/libmsc/a_iface_bssap.c b/src/libmsc/a_iface_bssap.c index d0d6bc0..87ccf05 100644 --- a/src/libmsc/a_iface_bssap.c +++ b/src/libmsc/a_iface_bssap.c @@ -239,11 +239,16 @@ /* Endpoint to handle BSSMAP clear complete */ static int bssmap_rx_clear_complete(struct osmo_sccp_user *scu, - const struct a_conn_info *a_conn_info, struct msgb *msg) + const struct a_conn_info *a_conn_info, + struct gsm_subscriber_connection *conn) { int rc; - LOGP(DMSC, LOGL_INFO, "Rx BSSMAP CLEAR COMPLETE, releasing SCCP connection\n"); + LOGPCONN(conn, LOGL_INFO, "Rx BSSMAP CLEAR COMPLETE, releasing SCCP connection\n"); + + if (conn) + msc_subscr_conn_rx_bssmap_clear_complete(conn); + rc = osmo_sccp_tx_disconn(scu, a_conn_info->conn_id, NULL, SCCP_RELEASE_CAUSE_END_USER_ORIGINATED); @@ -568,8 +573,6 @@ switch (msg_type) { case BSS_MAP_MSG_COMPLETE_LAYER_3: return bssmap_rx_l3_compl(scu, a_conn_info, msg, &tp); - case BSS_MAP_MSG_CLEAR_COMPLETE: - return bssmap_rx_clear_complete(scu, a_conn_info, msg); default: break; } @@ -577,6 +580,13 @@ conn = subscr_conn_lookup_a(a_conn_info->network, a_conn_info->conn_id); if (!conn) { LOGP(DBSSAP, LOGL_ERROR, "Couldn't find subscr_conn for conn_id=%d\n", a_conn_info->conn_id); + /* We expect a Clear Complete to come in on a valid conn. But if for some reason we still + * have the SCCP connection while the subscriber connection data is already gone, at + * least close the SCCP conn. */ + + if (msg_type == BSS_MAP_MSG_CLEAR_COMPLETE) + return bssmap_rx_clear_complete(scu, a_conn_info, NULL); + return -EINVAL; } @@ -585,6 +595,8 @@ switch (msg_type) { case BSS_MAP_MSG_CLEAR_RQST: return bssmap_rx_clear_rqst(conn, msg, &tp); + case BSS_MAP_MSG_CLEAR_COMPLETE: + return bssmap_rx_clear_complete(scu, a_conn_info, conn); case BSS_MAP_MSG_CLASSMARK_UPDATE: return bssmap_rx_classmark_upd(conn, msg, &tp); case BSS_MAP_MSG_CIPHER_MODE_COMPLETE: diff --git a/src/libmsc/iucs_ranap.c b/src/libmsc/iucs_ranap.c index 57cd50e..ec0b569 100644 --- a/src/libmsc/iucs_ranap.c +++ b/src/libmsc/iucs_ranap.c @@ -117,7 +117,7 @@ case RANAP_IU_EVENT_LINK_INVALIDATED: LOGP(DIUCS, LOGL_INFO, "IuCS release for %s\n", vlr_subscr_name(conn->vsub)); - msc_subscr_conn_close(conn, 0); + msc_subscr_conn_rx_iu_release_complete(conn); return 0; case RANAP_IU_EVENT_SECURITY_MODE_COMPLETE: diff --git a/src/libmsc/subscr_conn.c b/src/libmsc/subscr_conn.c index 0b2b6d6..420a9ea 100644 --- a/src/libmsc/subscr_conn.c +++ b/src/libmsc/subscr_conn.c @@ -255,7 +255,9 @@ { struct gsm_subscriber_connection *conn = fi->priv; - /* While we're still checking on release, prevent a last use count decrement from deallocating */ + /* Use count for either conn->a.waiting_for_clear_complete or + * conn->iu.waiting_for_release_complete. 'get' it early, so we don't deallocate after tearing + * down active transactions. */ msc_subscr_conn_get(conn, MSC_CONN_USE_RELEASE); /* Cancel pending CM Service Requests */ @@ -273,9 +275,21 @@ switch (conn->via_ran) { case RAN_UTRAN_IU: ranap_iu_tx_release(conn->iu.ue_ctx, NULL); + if (conn->iu.waiting_for_release_complete) { + LOGPFSML(fi, LOGL_ERROR, + "Unexpected: conn is already waiting for Iu Release Complete\n"); + break; + } + conn->iu.waiting_for_release_complete = true; break; case RAN_GERAN_A: a_iface_tx_clear_cmd(conn); + if (conn->a.waiting_for_clear_complete) { + LOGPFSML(fi, LOGL_ERROR, + "Unexpected: conn is already waiting for BSSMAP Clear Complete\n"); + break; + } + conn->a.waiting_for_clear_complete = true; break; default: LOGP(DMM, LOGL_ERROR, "%s: Unknown RAN type, cannot tx release/clear\n", @@ -283,11 +297,6 @@ msc_subscr_conn_put(conn, MSC_CONN_USE_RELEASE); break; } - - /* FIXME: keep the conn until the Iu Release Outcome is - * received from the UE, or a timeout expires. For now, the log - * says "unknown UE" for each release outcome. */ - msc_subscr_conn_put(conn, MSC_CONN_USE_RELEASE); } static void subscr_conn_fsm_releasing(struct osmo_fsm_inst *fi, uint32_t event, void *data) @@ -452,7 +461,7 @@ osmo_fsm_inst_dispatch(conn->fi, SUBSCR_CONN_E_RELEASE_WHEN_UNUSED, NULL); } -void msc_subscr_conn_close(struct gsm_subscriber_connection *conn, uint32_t cause) +static void conn_close(struct gsm_subscriber_connection *conn, uint32_t cause, uint32_t event) { if (!conn) { LOGP(DMM, LOGL_ERROR, "Cannot release NULL connection\n"); @@ -463,11 +472,23 @@ __func__, vlr_subscr_name(conn->vsub), cause); return; } - osmo_fsm_inst_dispatch(conn->fi, SUBSCR_CONN_E_CN_CLOSE, &cause); + osmo_fsm_inst_dispatch(conn->fi, event, &cause); +} + +void msc_subscr_conn_close(struct gsm_subscriber_connection *conn, uint32_t cause) +{ + return conn_close(conn, cause, SUBSCR_CONN_E_CN_CLOSE); +} + +void msc_subscr_conn_mo_close(struct gsm_subscriber_connection *conn, uint32_t cause) +{ + return conn_close(conn, cause, SUBSCR_CONN_E_MO_CLOSE); } bool msc_subscr_conn_in_release(struct gsm_subscriber_connection *conn) { + if (!conn || !conn->fi) + return true; if (conn->fi->state == SUBSCR_CONN_S_RELEASING) return true; if (conn->fi->state == SUBSCR_CONN_S_RELEASED) @@ -487,7 +508,8 @@ return true; } -/* Indicate that *some* communication is happening with the phone. */ +/* Indicate that *some* communication is happening with the phone, so that the conn FSM no longer times + * out to release within a few seconds. */ void msc_subscr_conn_communicating(struct gsm_subscriber_connection *conn) { osmo_fsm_inst_dispatch(conn->fi, SUBSCR_CONN_E_COMMUNICATING, NULL); @@ -540,6 +562,7 @@ return conn->fi->state == SUBSCR_CONN_S_AUTH_CIPH; } + const struct value_string complete_layer3_type_names[] = { { COMPLETE_LAYER3_NONE, "NONE" }, { COMPLETE_LAYER3_LU, "LU" }, @@ -555,3 +578,30 @@ osmo_fsm_inst_update_id(conn->fi, id); LOGPFSML(conn->fi, LOGL_DEBUG, "Updated ID from %s\n", complete_layer3_type_name(from)); } + +static void rx_close_complete(struct gsm_subscriber_connection *conn, const char *label, bool *flag) +{ + if (!conn) + return; + if (!msc_subscr_conn_in_release(conn)) { + LOGPFSML(conn->fi, LOGL_ERROR, "Received unexpected %s, discarding right now\n", + label); + trans_conn_closed(conn); + osmo_fsm_inst_term(conn->fi, OSMO_FSM_TERM_ERROR, NULL); + return; + } + if (*flag) { + *flag = false; + msc_subscr_conn_put(conn, MSC_CONN_USE_RELEASE); + } +} + +void msc_subscr_conn_rx_bssmap_clear_complete(struct gsm_subscriber_connection *conn) +{ + rx_close_complete(conn, "BSSMAP Clear Complete", &conn->a.waiting_for_clear_complete); +} + +void msc_subscr_conn_rx_iu_release_complete(struct gsm_subscriber_connection *conn) +{ + rx_close_complete(conn, "Iu Release Complete", &conn->iu.waiting_for_release_complete); +} diff --git a/tests/msc_vlr/msc_vlr_test_authen_reuse.c b/tests/msc_vlr/msc_vlr_test_authen_reuse.c index c9a9d09..389837a 100644 --- a/tests/msc_vlr/msc_vlr_test_authen_reuse.c +++ b/tests/msc_vlr/msc_vlr_test_authen_reuse.c @@ -25,19 +25,6 @@ #include "msc_vlr_tests.h" -#define ASSERT_RELEASE_CLEAR(via_ran) \ - switch (via_ran) { \ - case RAN_GERAN_A: \ - VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); \ - break; \ - case RAN_UTRAN_IU: \ - VERBOSE_ASSERT(iu_release_sent, == true, "%d"); \ - break; \ - default: \ - OSMO_ASSERT(false); \ - break; \ - } - static void _test_auth_reuse(enum ran_type via_ran, int set_max_reuse_count, int loop_requests_without_hlr, @@ -144,6 +131,7 @@ expect_release_clear(via_ran); ms_sends_msg("055b"); ASSERT_RELEASE_CLEAR(via_ran); + bss_rnc_sends_release_clear_complete(via_ran); btw("LU was successful, and the conn has already been closed"); EXPECT_CONN_COUNT(0); @@ -195,6 +183,7 @@ ms_sends_msg("0b3b1c15a11302010002013b300b04010f0406aa510c061b017f0100"); OSMO_ASSERT(dtap_tx_confirmed); ASSERT_RELEASE_CLEAR(via_ran); + bss_rnc_sends_release_clear_complete(via_ran); btw("all requests serviced, conn has been released"); EXPECT_CONN_COUNT(0); @@ -269,6 +258,7 @@ ms_sends_msg("0b3b1c15a11302010002013b300b04010f0406aa510c061b017f0100"); OSMO_ASSERT(dtap_tx_confirmed); ASSERT_RELEASE_CLEAR(via_ran); + bss_rnc_sends_release_clear_complete(via_ran); btw("all requests serviced, conn has been released"); EXPECT_CONN_COUNT(0); @@ -279,6 +269,7 @@ ms_sends_msg("050130" "089910070000106005" /* IMSI */); ASSERT_RELEASE_CLEAR(via_ran); + bss_rnc_sends_release_clear_complete(via_ran); EXPECT_CONN_COUNT(0); clear_vlr(); diff --git a/tests/msc_vlr/msc_vlr_test_authen_reuse.err b/tests/msc_vlr/msc_vlr_test_authen_reuse.err index 193eb81..5e9649c 100644 --- a/tests/msc_vlr/msc_vlr_test_authen_reuse.err +++ b/tests/msc_vlr/msc_vlr_test_authen_reuse.err @@ -165,8 +165,10 @@ DREF VLR subscr MSISDN:42342 usage increases to: 3 DREF VLR subscr MSISDN:42342 usage decreases to: 2 - BSSAP Clear --RAN_GERAN_A--> MS -DREF MSISDN:42342: MSC conn use - release == 1 (0x2) -DREF MSISDN:42342: MSC conn use - dtap == 0 (0x0) +DREF MSISDN:42342: MSC conn use - dtap == 1 (0x100) + bssap_clear_sent == 1 +- BSS sends BSSMAP Clear Complete +DREF MSISDN:42342: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) @@ -179,7 +181,6 @@ DREF VLR subscr MSISDN:42342 usage decreases to: 1 DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Deallocated - bssap_clear_sent == 1 - LU was successful, and the conn has already been closed llist_count(&net->subscr_conns) == 0 --- @@ -275,6 +276,8 @@ DREF VLR subscr MSISDN:42342 usage increases to: 3 DREF VLR subscr MSISDN:42342 usage decreases to: 2 - BSSAP Clear --RAN_GERAN_A--> MS + bssap_clear_sent == 1 +- BSS sends BSSMAP Clear Complete DREF MSISDN:42342: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED @@ -287,7 +290,6 @@ DREF VLR subscr MSISDN:42342 usage decreases to: 1 DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Deallocated - bssap_clear_sent == 1 - all requests serviced, conn has been released llist_count(&net->subscr_conns) == 0 --- @@ -397,6 +399,8 @@ DREF VLR subscr MSISDN:42342 usage increases to: 3 DREF VLR subscr MSISDN:42342 usage decreases to: 2 - BSSAP Clear --RAN_GERAN_A--> MS + bssap_clear_sent == 1 +- BSS sends BSSMAP Clear Complete DREF MSISDN:42342: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED @@ -409,7 +413,6 @@ DREF VLR subscr MSISDN:42342 usage decreases to: 1 DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Deallocated - bssap_clear_sent == 1 - all requests serviced, conn has been released llist_count(&net->subscr_conns) == 0 --- @@ -430,15 +433,16 @@ DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASING DREF unknown: MSC conn use + release == 2 (0x101) - BSSAP Clear --RAN_GERAN_A--> MS -DREF unknown: MSC conn use - release == 1 (0x1) -DREF unknown: MSC conn use - compl_l3 == 0 (0x0) +DREF unknown: MSC conn use - compl_l3 == 1 (0x100) + bssap_clear_sent == 1 +- BSS sends BSSMAP Clear Complete +DREF unknown: MSC conn use - release == 0 (0x0) DMM Subscr_Conn{SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn{SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DRLL Freeing subscriber connection with NULL subscriber DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Deallocated - bssap_clear_sent == 1 llist_count(&net->subscr_conns) == 0 ===== test_auth_use_twice_geran: SUCCESS @@ -621,8 +625,10 @@ DREF VLR subscr MSISDN:42342 usage increases to: 3 DREF VLR subscr MSISDN:42342 usage decreases to: 2 - Iu Release --RAN_UTRAN_IU--> MS -DREF MSISDN:42342: MSC conn use - release == 1 (0x2) -DREF MSISDN:42342: MSC conn use - dtap == 0 (0x0) +DREF MSISDN:42342: MSC conn use - dtap == 1 (0x100) + iu_release_sent == 1 +- RNC sends Iu Release Complete +DREF MSISDN:42342: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) @@ -635,7 +641,6 @@ DREF VLR subscr MSISDN:42342 usage decreases to: 1 DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Deallocated - iu_release_sent == 1 - LU was successful, and the conn has already been closed llist_count(&net->subscr_conns) == 0 --- @@ -744,6 +749,8 @@ DREF VLR subscr MSISDN:42342 usage increases to: 3 DREF VLR subscr MSISDN:42342 usage decreases to: 2 - Iu Release --RAN_UTRAN_IU--> MS + iu_release_sent == 1 +- RNC sends Iu Release Complete DREF MSISDN:42342: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED @@ -756,7 +763,6 @@ DREF VLR subscr MSISDN:42342 usage decreases to: 1 DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Deallocated - iu_release_sent == 1 - all requests serviced, conn has been released llist_count(&net->subscr_conns) == 0 --- @@ -879,6 +885,8 @@ DREF VLR subscr MSISDN:42342 usage increases to: 3 DREF VLR subscr MSISDN:42342 usage decreases to: 2 - Iu Release --RAN_UTRAN_IU--> MS + iu_release_sent == 1 +- RNC sends Iu Release Complete DREF MSISDN:42342: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED @@ -891,7 +899,6 @@ DREF VLR subscr MSISDN:42342 usage decreases to: 1 DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Deallocated - iu_release_sent == 1 - all requests serviced, conn has been released llist_count(&net->subscr_conns) == 0 --- @@ -912,15 +919,16 @@ DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASING DREF unknown: MSC conn use + release == 2 (0x101) - Iu Release --RAN_UTRAN_IU--> MS -DREF unknown: MSC conn use - release == 1 (0x1) -DREF unknown: MSC conn use - compl_l3 == 0 (0x0) +DREF unknown: MSC conn use - compl_l3 == 1 (0x100) + iu_release_sent == 1 +- RNC sends Iu Release Complete +DREF unknown: MSC conn use - release == 0 (0x0) DMM Subscr_Conn{SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn{SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DRLL Freeing subscriber connection with NULL subscriber DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Deallocated - iu_release_sent == 1 llist_count(&net->subscr_conns) == 0 ===== test_auth_use_twice_utran: SUCCESS @@ -1091,8 +1099,10 @@ DREF VLR subscr MSISDN:42342 usage increases to: 3 DREF VLR subscr MSISDN:42342 usage decreases to: 2 - BSSAP Clear --RAN_GERAN_A--> MS -DREF MSISDN:42342: MSC conn use - release == 1 (0x2) -DREF MSISDN:42342: MSC conn use - dtap == 0 (0x0) +DREF MSISDN:42342: MSC conn use - dtap == 1 (0x100) + bssap_clear_sent == 1 +- BSS sends BSSMAP Clear Complete +DREF MSISDN:42342: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) @@ -1105,7 +1115,6 @@ DREF VLR subscr MSISDN:42342 usage decreases to: 1 DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Deallocated - bssap_clear_sent == 1 - LU was successful, and the conn has already been closed llist_count(&net->subscr_conns) == 0 --- @@ -1201,6 +1210,8 @@ DREF VLR subscr MSISDN:42342 usage increases to: 3 DREF VLR subscr MSISDN:42342 usage decreases to: 2 - BSSAP Clear --RAN_GERAN_A--> MS + bssap_clear_sent == 1 +- BSS sends BSSMAP Clear Complete DREF MSISDN:42342: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED @@ -1213,7 +1224,6 @@ DREF VLR subscr MSISDN:42342 usage decreases to: 1 DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Deallocated - bssap_clear_sent == 1 - all requests serviced, conn has been released llist_count(&net->subscr_conns) == 0 --- @@ -1309,6 +1319,8 @@ DREF VLR subscr MSISDN:42342 usage increases to: 3 DREF VLR subscr MSISDN:42342 usage decreases to: 2 - BSSAP Clear --RAN_GERAN_A--> MS + bssap_clear_sent == 1 +- BSS sends BSSMAP Clear Complete DREF MSISDN:42342: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED @@ -1321,7 +1333,6 @@ DREF VLR subscr MSISDN:42342 usage decreases to: 1 DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Deallocated - bssap_clear_sent == 1 - all requests serviced, conn has been released llist_count(&net->subscr_conns) == 0 --- @@ -1417,6 +1428,8 @@ DREF VLR subscr MSISDN:42342 usage increases to: 3 DREF VLR subscr MSISDN:42342 usage decreases to: 2 - BSSAP Clear --RAN_GERAN_A--> MS + bssap_clear_sent == 1 +- BSS sends BSSMAP Clear Complete DREF MSISDN:42342: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED @@ -1429,7 +1442,6 @@ DREF VLR subscr MSISDN:42342 usage decreases to: 1 DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Deallocated - bssap_clear_sent == 1 - all requests serviced, conn has been released llist_count(&net->subscr_conns) == 0 --- @@ -1450,15 +1462,16 @@ DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASING DREF unknown: MSC conn use + release == 2 (0x101) - BSSAP Clear --RAN_GERAN_A--> MS -DREF unknown: MSC conn use - release == 1 (0x1) -DREF unknown: MSC conn use - compl_l3 == 0 (0x0) +DREF unknown: MSC conn use - compl_l3 == 1 (0x100) + bssap_clear_sent == 1 +- BSS sends BSSMAP Clear Complete +DREF unknown: MSC conn use - release == 0 (0x0) DMM Subscr_Conn{SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn{SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DRLL Freeing subscriber connection with NULL subscriber DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Deallocated - bssap_clear_sent == 1 llist_count(&net->subscr_conns) == 0 ===== test_auth_use_infinitely_geran: SUCCESS @@ -1641,8 +1654,10 @@ DREF VLR subscr MSISDN:42342 usage increases to: 3 DREF VLR subscr MSISDN:42342 usage decreases to: 2 - Iu Release --RAN_UTRAN_IU--> MS -DREF MSISDN:42342: MSC conn use - release == 1 (0x2) -DREF MSISDN:42342: MSC conn use - dtap == 0 (0x0) +DREF MSISDN:42342: MSC conn use - dtap == 1 (0x100) + iu_release_sent == 1 +- RNC sends Iu Release Complete +DREF MSISDN:42342: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) @@ -1655,7 +1670,6 @@ DREF VLR subscr MSISDN:42342 usage decreases to: 1 DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Deallocated - iu_release_sent == 1 - LU was successful, and the conn has already been closed llist_count(&net->subscr_conns) == 0 --- @@ -1764,6 +1778,8 @@ DREF VLR subscr MSISDN:42342 usage increases to: 3 DREF VLR subscr MSISDN:42342 usage decreases to: 2 - Iu Release --RAN_UTRAN_IU--> MS + iu_release_sent == 1 +- RNC sends Iu Release Complete DREF MSISDN:42342: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED @@ -1776,7 +1792,6 @@ DREF VLR subscr MSISDN:42342 usage decreases to: 1 DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Deallocated - iu_release_sent == 1 - all requests serviced, conn has been released llist_count(&net->subscr_conns) == 0 --- @@ -1885,6 +1900,8 @@ DREF VLR subscr MSISDN:42342 usage increases to: 3 DREF VLR subscr MSISDN:42342 usage decreases to: 2 - Iu Release --RAN_UTRAN_IU--> MS + iu_release_sent == 1 +- RNC sends Iu Release Complete DREF MSISDN:42342: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED @@ -1897,7 +1914,6 @@ DREF VLR subscr MSISDN:42342 usage decreases to: 1 DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Deallocated - iu_release_sent == 1 - all requests serviced, conn has been released llist_count(&net->subscr_conns) == 0 --- @@ -2006,6 +2022,8 @@ DREF VLR subscr MSISDN:42342 usage increases to: 3 DREF VLR subscr MSISDN:42342 usage decreases to: 2 - Iu Release --RAN_UTRAN_IU--> MS + iu_release_sent == 1 +- RNC sends Iu Release Complete DREF MSISDN:42342: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED @@ -2018,7 +2036,6 @@ DREF VLR subscr MSISDN:42342 usage decreases to: 1 DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Deallocated - iu_release_sent == 1 - all requests serviced, conn has been released llist_count(&net->subscr_conns) == 0 --- @@ -2039,15 +2056,16 @@ DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASING DREF unknown: MSC conn use + release == 2 (0x101) - Iu Release --RAN_UTRAN_IU--> MS -DREF unknown: MSC conn use - release == 1 (0x1) -DREF unknown: MSC conn use - compl_l3 == 0 (0x0) +DREF unknown: MSC conn use - compl_l3 == 1 (0x100) + iu_release_sent == 1 +- RNC sends Iu Release Complete +DREF unknown: MSC conn use - release == 0 (0x0) DMM Subscr_Conn{SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn{SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DRLL Freeing subscriber connection with NULL subscriber DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Deallocated - iu_release_sent == 1 llist_count(&net->subscr_conns) == 0 ===== test_auth_use_infinitely_utran: SUCCESS @@ -2218,8 +2236,10 @@ DREF VLR subscr MSISDN:42342 usage increases to: 3 DREF VLR subscr MSISDN:42342 usage decreases to: 2 - BSSAP Clear --RAN_GERAN_A--> MS -DREF MSISDN:42342: MSC conn use - release == 1 (0x2) -DREF MSISDN:42342: MSC conn use - dtap == 0 (0x0) +DREF MSISDN:42342: MSC conn use - dtap == 1 (0x100) + bssap_clear_sent == 1 +- BSS sends BSSMAP Clear Complete +DREF MSISDN:42342: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) @@ -2232,7 +2252,6 @@ DREF VLR subscr MSISDN:42342 usage decreases to: 1 DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Deallocated - bssap_clear_sent == 1 - LU was successful, and the conn has already been closed llist_count(&net->subscr_conns) == 0 --- @@ -2342,6 +2361,8 @@ DREF VLR subscr MSISDN:42342 usage increases to: 3 DREF VLR subscr MSISDN:42342 usage decreases to: 2 - BSSAP Clear --RAN_GERAN_A--> MS + bssap_clear_sent == 1 +- BSS sends BSSMAP Clear Complete DREF MSISDN:42342: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED @@ -2354,7 +2375,6 @@ DREF VLR subscr MSISDN:42342 usage decreases to: 1 DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Deallocated - bssap_clear_sent == 1 - all requests serviced, conn has been released llist_count(&net->subscr_conns) == 0 --- @@ -2375,15 +2395,16 @@ DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASING DREF unknown: MSC conn use + release == 2 (0x101) - BSSAP Clear --RAN_GERAN_A--> MS -DREF unknown: MSC conn use - release == 1 (0x1) -DREF unknown: MSC conn use - compl_l3 == 0 (0x0) +DREF unknown: MSC conn use - compl_l3 == 1 (0x100) + bssap_clear_sent == 1 +- BSS sends BSSMAP Clear Complete +DREF unknown: MSC conn use - release == 0 (0x0) DMM Subscr_Conn{SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn{SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DRLL Freeing subscriber connection with NULL subscriber DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Deallocated - bssap_clear_sent == 1 llist_count(&net->subscr_conns) == 0 ===== test_no_auth_reuse_geran: SUCCESS @@ -2566,8 +2587,10 @@ DREF VLR subscr MSISDN:42342 usage increases to: 3 DREF VLR subscr MSISDN:42342 usage decreases to: 2 - Iu Release --RAN_UTRAN_IU--> MS -DREF MSISDN:42342: MSC conn use - release == 1 (0x2) -DREF MSISDN:42342: MSC conn use - dtap == 0 (0x0) +DREF MSISDN:42342: MSC conn use - dtap == 1 (0x100) + iu_release_sent == 1 +- RNC sends Iu Release Complete +DREF MSISDN:42342: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) @@ -2580,7 +2603,6 @@ DREF VLR subscr MSISDN:42342 usage decreases to: 1 DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Deallocated - iu_release_sent == 1 - LU was successful, and the conn has already been closed llist_count(&net->subscr_conns) == 0 --- @@ -2703,6 +2725,8 @@ DREF VLR subscr MSISDN:42342 usage increases to: 3 DREF VLR subscr MSISDN:42342 usage decreases to: 2 - Iu Release --RAN_UTRAN_IU--> MS + iu_release_sent == 1 +- RNC sends Iu Release Complete DREF MSISDN:42342: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED @@ -2715,7 +2739,6 @@ DREF VLR subscr MSISDN:42342 usage decreases to: 1 DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Deallocated - iu_release_sent == 1 - all requests serviced, conn has been released llist_count(&net->subscr_conns) == 0 --- @@ -2736,15 +2759,16 @@ DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASING DREF unknown: MSC conn use + release == 2 (0x101) - Iu Release --RAN_UTRAN_IU--> MS -DREF unknown: MSC conn use - release == 1 (0x1) -DREF unknown: MSC conn use - compl_l3 == 0 (0x0) +DREF unknown: MSC conn use - compl_l3 == 1 (0x100) + iu_release_sent == 1 +- RNC sends Iu Release Complete +DREF unknown: MSC conn use - release == 0 (0x0) DMM Subscr_Conn{SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn{SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DRLL Freeing subscriber connection with NULL subscriber DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Deallocated - iu_release_sent == 1 llist_count(&net->subscr_conns) == 0 ===== test_no_auth_reuse_utran: SUCCESS diff --git a/tests/msc_vlr/msc_vlr_test_call.c b/tests/msc_vlr/msc_vlr_test_call.c index 9d4126e..50bf174 100644 --- a/tests/msc_vlr/msc_vlr_test_call.c +++ b/tests/msc_vlr/msc_vlr_test_call.c @@ -148,6 +148,7 @@ VERBOSE_ASSERT(iu_release_sent, == true, "%d"); \ btw("LU was successful, and the conn has already been closed"); + rnc_sends_release_complete(); EXPECT_CONN_COUNT(0); vsub = vlr_subscr_find_by_imsi(net->vlr, IMSI); @@ -252,6 +253,7 @@ OSMO_ASSERT(cc_to_mncc_tx_confirmed); OSMO_ASSERT(iu_release_sent); + rnc_sends_release_complete(); EXPECT_CONN_COUNT(0); clear_vlr(); comment_end(); @@ -335,6 +337,7 @@ OSMO_ASSERT(cc_to_mncc_tx_confirmed); OSMO_ASSERT(iu_release_sent); + rnc_sends_release_complete(); EXPECT_CONN_COUNT(0); clear_vlr(); comment_end(); @@ -405,6 +408,7 @@ OSMO_ASSERT(cc_to_mncc_tx_confirmed); OSMO_ASSERT(iu_release_sent); + rnc_sends_release_complete(); EXPECT_CONN_COUNT(0); /* Make sure a pending release timer doesn't fire later to access freed data */ @@ -488,6 +492,7 @@ OSMO_ASSERT(iu_release_sent); OSMO_ASSERT(cc_to_mncc_tx_confirmed); + rnc_sends_release_complete(); EXPECT_CONN_COUNT(0); clear_vlr(); comment_end(); @@ -568,6 +573,7 @@ OSMO_ASSERT(cc_to_mncc_tx_confirmed); OSMO_ASSERT(iu_release_sent); + rnc_sends_release_complete(); EXPECT_CONN_COUNT(0); clear_vlr(); comment_end(); diff --git a/tests/msc_vlr/msc_vlr_test_call.err b/tests/msc_vlr/msc_vlr_test_call.err index 1da80d9..2cb697c 100644 --- a/tests/msc_vlr/msc_vlr_test_call.err +++ b/tests/msc_vlr/msc_vlr_test_call.err @@ -162,8 +162,11 @@ DREF VLR subscr MSISDN:42342 usage increases to: 3 DREF VLR subscr MSISDN:42342 usage decreases to: 2 - Iu Release --RAN_UTRAN_IU--> MS -DREF MSISDN:42342: MSC conn use - release == 1 (0x2) -DREF MSISDN:42342: MSC conn use - dtap == 0 (0x0) +DREF MSISDN:42342: MSC conn use - dtap == 1 (0x100) + iu_release_sent == 1 +- LU was successful, and the conn has already been closed +- RNC sends Iu Release Complete +DREF MSISDN:42342: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) @@ -176,8 +179,6 @@ DREF VLR subscr MSISDN:42342 usage decreases to: 1 DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Deallocated - iu_release_sent == 1 -- LU was successful, and the conn has already been closed llist_count(&net->subscr_conns) == 0 DREF VLR subscr MSISDN:42342 usage increases to: 2 vsub != NULL == 1 @@ -359,6 +360,7 @@ DREF VLR subscr MSISDN:42342 usage increases to: 3 DREF VLR subscr MSISDN:42342 usage decreases to: 2 - Iu Release --RAN_UTRAN_IU--> MS +- RNC sends Iu Release Complete DREF MSISDN:42342: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED @@ -539,8 +541,11 @@ DREF VLR subscr MSISDN:42342 usage increases to: 3 DREF VLR subscr MSISDN:42342 usage decreases to: 2 - Iu Release --RAN_UTRAN_IU--> MS -DREF MSISDN:42342: MSC conn use - release == 1 (0x2) -DREF MSISDN:42342: MSC conn use - dtap == 0 (0x0) +DREF MSISDN:42342: MSC conn use - dtap == 1 (0x100) + iu_release_sent == 1 +- LU was successful, and the conn has already been closed +- RNC sends Iu Release Complete +DREF MSISDN:42342: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) @@ -553,8 +558,6 @@ DREF VLR subscr MSISDN:42342 usage decreases to: 1 DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Deallocated - iu_release_sent == 1 -- LU was successful, and the conn has already been closed llist_count(&net->subscr_conns) == 0 DREF VLR subscr MSISDN:42342 usage increases to: 2 vsub != NULL == 1 @@ -741,6 +744,7 @@ DREF VLR subscr MSISDN:42342 usage increases to: 3 DREF VLR subscr MSISDN:42342 usage decreases to: 2 - Iu Release --RAN_UTRAN_IU--> MS +- RNC sends Iu Release Complete DREF MSISDN:42342: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED @@ -921,8 +925,11 @@ DREF VLR subscr MSISDN:42342 usage increases to: 3 DREF VLR subscr MSISDN:42342 usage decreases to: 2 - Iu Release --RAN_UTRAN_IU--> MS -DREF MSISDN:42342: MSC conn use - release == 1 (0x2) -DREF MSISDN:42342: MSC conn use - dtap == 0 (0x0) +DREF MSISDN:42342: MSC conn use - dtap == 1 (0x100) + iu_release_sent == 1 +- LU was successful, and the conn has already been closed +- RNC sends Iu Release Complete +DREF MSISDN:42342: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) @@ -935,8 +942,6 @@ DREF VLR subscr MSISDN:42342 usage decreases to: 1 DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Deallocated - iu_release_sent == 1 -- LU was successful, and the conn has already been closed llist_count(&net->subscr_conns) == 0 DREF VLR subscr MSISDN:42342 usage increases to: 2 vsub != NULL == 1 @@ -1091,6 +1096,7 @@ DREF VLR subscr MSISDN:42342 usage decreases to: 2 DREF MSISDN:42342: MSC conn use - trans_cc == 1 (0x100) - Iu Release --RAN_UTRAN_IU--> MS +- RNC sends Iu Release Complete DREF MSISDN:42342: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED @@ -1272,8 +1278,11 @@ DREF VLR subscr MSISDN:42342 usage increases to: 3 DREF VLR subscr MSISDN:42342 usage decreases to: 2 - Iu Release --RAN_UTRAN_IU--> MS -DREF MSISDN:42342: MSC conn use - release == 1 (0x2) -DREF MSISDN:42342: MSC conn use - dtap == 0 (0x0) +DREF MSISDN:42342: MSC conn use - dtap == 1 (0x100) + iu_release_sent == 1 +- LU was successful, and the conn has already been closed +- RNC sends Iu Release Complete +DREF MSISDN:42342: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) @@ -1286,8 +1295,6 @@ DREF VLR subscr MSISDN:42342 usage decreases to: 1 DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Deallocated - iu_release_sent == 1 -- LU was successful, and the conn has already been closed llist_count(&net->subscr_conns) == 0 DREF VLR subscr MSISDN:42342 usage increases to: 2 vsub != NULL == 1 @@ -1435,6 +1442,7 @@ DREF VLR subscr MSISDN:42342 usage increases to: 3 DREF VLR subscr MSISDN:42342 usage decreases to: 2 - Iu Release --RAN_UTRAN_IU--> MS +- RNC sends Iu Release Complete DREF MSISDN:42342: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED @@ -1615,8 +1623,11 @@ DREF VLR subscr MSISDN:42342 usage increases to: 3 DREF VLR subscr MSISDN:42342 usage decreases to: 2 - Iu Release --RAN_UTRAN_IU--> MS -DREF MSISDN:42342: MSC conn use - release == 1 (0x2) -DREF MSISDN:42342: MSC conn use - dtap == 0 (0x0) +DREF MSISDN:42342: MSC conn use - dtap == 1 (0x100) + iu_release_sent == 1 +- LU was successful, and the conn has already been closed +- RNC sends Iu Release Complete +DREF MSISDN:42342: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) @@ -1629,8 +1640,6 @@ DREF VLR subscr MSISDN:42342 usage decreases to: 1 DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Deallocated - iu_release_sent == 1 -- LU was successful, and the conn has already been closed llist_count(&net->subscr_conns) == 0 DREF VLR subscr MSISDN:42342 usage increases to: 2 vsub != NULL == 1 @@ -1775,6 +1784,7 @@ DREF VLR subscr MSISDN:42342 usage increases to: 3 DREF VLR subscr MSISDN:42342 usage decreases to: 2 - Iu Release --RAN_UTRAN_IU--> MS +- RNC sends Iu Release Complete DREF MSISDN:42342: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED diff --git a/tests/msc_vlr/msc_vlr_test_gsm_authen.c b/tests/msc_vlr/msc_vlr_test_gsm_authen.c index 5176306..a863d90 100644 --- a/tests/msc_vlr/msc_vlr_test_gsm_authen.c +++ b/tests/msc_vlr/msc_vlr_test_gsm_authen.c @@ -91,6 +91,7 @@ btw("LU was successful, and the conn has already been closed"); VERBOSE_ASSERT(lu_result_sent, == RES_ACCEPT, "%d"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); BTW("after a while, a new conn sends a CM Service Request. VLR responds with Auth Req, 2nd auth vector"); @@ -121,6 +122,7 @@ VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); btw("all requests serviced, conn has been released"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); BTW("an SMS is sent, MS is paged"); @@ -203,6 +205,7 @@ VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); btw("SMS is done, conn is gone"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); BTW("subscriber detaches"); @@ -210,6 +213,7 @@ ms_sends_msg("050130089910070000006402"); VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); clear_vlr(); comment_end(); @@ -300,6 +304,7 @@ VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); btw("LU was successful, and the conn has already been closed"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); btw("Subscriber has the new TMSI"); @@ -338,6 +343,7 @@ VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); btw("all requests serviced, conn has been released"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); BTW("an SMS is sent, MS is paged"); @@ -420,6 +426,7 @@ VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); btw("SMS is done, conn is gone"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); /* TODO: when the subscriber detaches, the vlr_subscr gets @@ -429,6 +436,7 @@ expect_bssap_clear(); ms_sends_msg("050130" "05f4" "03020100"); VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); */ @@ -476,6 +484,7 @@ VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); btw("LU was successful, and the conn has already been closed"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); btw("subscriber has the new TMSI"); @@ -491,6 +500,7 @@ ms_sends_msg("050130" "05f4" "07060504"); VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); clear_vlr(); comment_end(); @@ -576,6 +586,7 @@ btw("LU was successful, and the conn has already been closed"); VERBOSE_ASSERT(lu_result_sent, == RES_ACCEPT, "%d"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); btw("Subscriber has the IMEI"); @@ -589,6 +600,7 @@ ms_sends_msg("050130089910070000006402"); VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); clear_vlr(); comment_end(); @@ -693,6 +705,7 @@ VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); btw("LU was successful, and the conn has already been closed"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); btw("Subscriber has the IMEI and TMSI"); @@ -707,6 +720,7 @@ ms_sends_msg("050130" "05f4" "03020100"); VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); clear_vlr(); comment_end(); @@ -793,6 +807,7 @@ btw("LU was successful, and the conn has already been closed"); VERBOSE_ASSERT(lu_result_sent, == RES_ACCEPT, "%d"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); BTW("after a while, a new conn sends a CM Service Request. VLR responds with Auth Req, 2nd auth vector"); @@ -826,6 +841,7 @@ VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); btw("all requests serviced, conn has been released"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); BTW("an SMS is sent, MS is paged"); @@ -911,6 +927,7 @@ VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); btw("SMS is done, conn is gone"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); BTW("subscriber detaches"); @@ -919,6 +936,7 @@ "089910070000106005" /* IMSI */); VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); clear_vlr(); comment_end(); @@ -979,6 +997,7 @@ ms_sends_msg("05542d8b2c"); VERBOSE_ASSERT(lu_result_sent, == RES_REJECT, "%d"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); clear_vlr(); comment_end(); diff --git a/tests/msc_vlr/msc_vlr_test_gsm_authen.err b/tests/msc_vlr/msc_vlr_test_gsm_authen.err index f212cfc..5897ce0 100644 --- a/tests/msc_vlr/msc_vlr_test_gsm_authen.err +++ b/tests/msc_vlr/msc_vlr_test_gsm_authen.err @@ -151,6 +151,12 @@ DREF VLR subscr MSISDN:46071 usage increases to: 4 DREF VLR subscr MSISDN:46071 usage decreases to: 3 - BSSAP Clear --RAN_GERAN_A--> MS +DREF VLR subscr MSISDN:46071 usage decreases to: 2 +<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0 + bssap_clear_sent == 1 +- LU was successful, and the conn has already been closed + lu_result_sent == 1 +- BSS sends BSSMAP Clear Complete DREF MSISDN:46071: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED @@ -161,14 +167,9 @@ DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Freeing instance DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Deallocated DRLL MSISDN:46071: Freeing subscriber connection -DREF VLR subscr MSISDN:46071 usage decreases to: 2 +DREF VLR subscr MSISDN:46071 usage decreases to: 1 DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated -DREF VLR subscr MSISDN:46071 usage decreases to: 1 -<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0 - bssap_clear_sent == 1 -- LU was successful, and the conn has already been closed - lu_result_sent == 1 llist_count(&net->subscr_conns) == 0 --- - after a while, a new conn sends a CM Service Request. VLR responds with Auth Req, 2nd auth vector @@ -268,6 +269,9 @@ DREF VLR subscr MSISDN:46071 usage increases to: 3 DREF VLR subscr MSISDN:46071 usage decreases to: 2 - BSSAP Clear --RAN_GERAN_A--> MS + bssap_clear_sent == 1 +- all requests serviced, conn has been released +- BSS sends BSSMAP Clear Complete DREF MSISDN:46071: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED @@ -280,8 +284,6 @@ DREF VLR subscr MSISDN:46071 usage decreases to: 1 DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated - bssap_clear_sent == 1 -- all requests serviced, conn has been released llist_count(&net->subscr_conns) == 0 --- - an SMS is sent, MS is paged @@ -414,6 +416,10 @@ DREF VLR subscr MSISDN:46071 usage increases to: 3 DREF VLR subscr MSISDN:46071 usage decreases to: 2 - BSSAP Clear --RAN_GERAN_A--> MS + dtap_tx_confirmed == 1 + bssap_clear_sent == 1 +- SMS is done, conn is gone +- BSS sends BSSMAP Clear Complete DREF MSISDN:46071: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED @@ -426,9 +432,6 @@ DREF VLR subscr MSISDN:46071 usage decreases to: 1 DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated - dtap_tx_confirmed == 1 - bssap_clear_sent == 1 -- SMS is done, conn is gone llist_count(&net->subscr_conns) == 0 --- - subscriber detaches @@ -448,15 +451,16 @@ DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASING DREF unknown: MSC conn use + release == 2 (0x101) - BSSAP Clear --RAN_GERAN_A--> MS -DREF unknown: MSC conn use - release == 1 (0x1) -DREF unknown: MSC conn use - compl_l3 == 0 (0x0) +DREF unknown: MSC conn use - compl_l3 == 1 (0x100) + bssap_clear_sent == 1 +- BSS sends BSSMAP Clear Complete +DREF unknown: MSC conn use - release == 0 (0x0) DMM Subscr_Conn{SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn{SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DRLL Freeing subscriber connection with NULL subscriber DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Deallocated - bssap_clear_sent == 1 llist_count(&net->subscr_conns) == 0 ===== test_gsm_authen: SUCCESS @@ -644,8 +648,11 @@ DREF VLR subscr MSISDN:46071 usage increases to: 3 DREF VLR subscr MSISDN:46071 usage decreases to: 2 - BSSAP Clear --RAN_GERAN_A--> MS -DREF MSISDN:46071: MSC conn use - release == 1 (0x2) -DREF MSISDN:46071: MSC conn use - dtap == 0 (0x0) +DREF MSISDN:46071: MSC conn use - dtap == 1 (0x100) + bssap_clear_sent == 1 +- LU was successful, and the conn has already been closed +- BSS sends BSSMAP Clear Complete +DREF MSISDN:46071: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) @@ -658,8 +665,6 @@ DREF VLR subscr MSISDN:46071 usage decreases to: 1 DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated - bssap_clear_sent == 1 -- LU was successful, and the conn has already been closed llist_count(&net->subscr_conns) == 0 - Subscriber has the new TMSI DREF VLR subscr MSISDN:46071 usage increases to: 2 @@ -766,6 +771,9 @@ DREF VLR subscr MSISDN:46071 usage increases to: 3 DREF VLR subscr MSISDN:46071 usage decreases to: 2 - BSSAP Clear --RAN_GERAN_A--> MS + bssap_clear_sent == 1 +- all requests serviced, conn has been released +- BSS sends BSSMAP Clear Complete DREF MSISDN:46071: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(50462976){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(50462976){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED @@ -778,8 +786,6 @@ DREF VLR subscr MSISDN:46071 usage decreases to: 1 DMM Subscr_Conn(50462976){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(50462976){SUBSCR_CONN_S_RELEASED}: Deallocated - bssap_clear_sent == 1 -- all requests serviced, conn has been released llist_count(&net->subscr_conns) == 0 --- - an SMS is sent, MS is paged @@ -912,6 +918,10 @@ DREF VLR subscr MSISDN:46071 usage increases to: 3 DREF VLR subscr MSISDN:46071 usage decreases to: 2 - BSSAP Clear --RAN_GERAN_A--> MS + dtap_tx_confirmed == 1 + bssap_clear_sent == 1 +- SMS is done, conn is gone +- BSS sends BSSMAP Clear Complete DREF MSISDN:46071: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(50462976){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(50462976){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED @@ -924,9 +934,6 @@ DREF VLR subscr MSISDN:46071 usage decreases to: 1 DMM Subscr_Conn(50462976){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(50462976){SUBSCR_CONN_S_RELEASED}: Deallocated - dtap_tx_confirmed == 1 - bssap_clear_sent == 1 -- SMS is done, conn is gone llist_count(&net->subscr_conns) == 0 --- - subscriber sends LU Request, this time with the TMSI @@ -1076,8 +1083,11 @@ DREF VLR subscr MSISDN:46071 usage increases to: 3 DREF VLR subscr MSISDN:46071 usage decreases to: 2 - BSSAP Clear --RAN_GERAN_A--> MS -DREF MSISDN:46071: MSC conn use - release == 1 (0x2) -DREF MSISDN:46071: MSC conn use - dtap == 0 (0x0) +DREF MSISDN:46071: MSC conn use - dtap == 1 (0x100) + bssap_clear_sent == 1 +- LU was successful, and the conn has already been closed +- BSS sends BSSMAP Clear Complete +DREF MSISDN:46071: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(50462976){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(50462976){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn(50462976){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) @@ -1090,8 +1100,6 @@ DREF VLR subscr MSISDN:46071 usage decreases to: 1 DMM Subscr_Conn(50462976){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(50462976){SUBSCR_CONN_S_RELEASED}: Deallocated - bssap_clear_sent == 1 -- LU was successful, and the conn has already been closed llist_count(&net->subscr_conns) == 0 - subscriber has the new TMSI DREF VLR subscr MSISDN:46071 usage increases to: 2 @@ -1118,15 +1126,16 @@ DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASING DREF unknown: MSC conn use + release == 2 (0x101) - BSSAP Clear --RAN_GERAN_A--> MS -DREF unknown: MSC conn use - release == 1 (0x1) -DREF unknown: MSC conn use - compl_l3 == 0 (0x0) +DREF unknown: MSC conn use - compl_l3 == 1 (0x100) + bssap_clear_sent == 1 +- BSS sends BSSMAP Clear Complete +DREF unknown: MSC conn use - release == 0 (0x0) DMM Subscr_Conn{SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn{SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DRLL Freeing subscriber connection with NULL subscriber DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Deallocated - bssap_clear_sent == 1 llist_count(&net->subscr_conns) == 0 ===== test_gsm_authen_tmsi: SUCCESS @@ -1312,8 +1321,12 @@ DREF VLR subscr MSISDN:46071 usage increases to: 3 DREF VLR subscr MSISDN:46071 usage decreases to: 2 - BSSAP Clear --RAN_GERAN_A--> MS -DREF MSISDN:46071: MSC conn use - release == 1 (0x2) -DREF MSISDN:46071: MSC conn use - dtap == 0 (0x0) +DREF MSISDN:46071: MSC conn use - dtap == 1 (0x100) + bssap_clear_sent == 1 +- LU was successful, and the conn has already been closed + lu_result_sent == 1 +- BSS sends BSSMAP Clear Complete +DREF MSISDN:46071: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) @@ -1326,9 +1339,6 @@ DREF VLR subscr MSISDN:46071 usage decreases to: 1 DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated - bssap_clear_sent == 1 -- LU was successful, and the conn has already been closed - lu_result_sent == 1 llist_count(&net->subscr_conns) == 0 - Subscriber has the IMEI DREF VLR subscr MSISDN:46071 usage increases to: 2 @@ -1352,15 +1362,16 @@ DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASING DREF unknown: MSC conn use + release == 2 (0x101) - BSSAP Clear --RAN_GERAN_A--> MS -DREF unknown: MSC conn use - release == 1 (0x1) -DREF unknown: MSC conn use - compl_l3 == 0 (0x0) +DREF unknown: MSC conn use - compl_l3 == 1 (0x100) + bssap_clear_sent == 1 +- BSS sends BSSMAP Clear Complete +DREF unknown: MSC conn use - release == 0 (0x0) DMM Subscr_Conn{SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn{SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DRLL Freeing subscriber connection with NULL subscriber DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Deallocated - bssap_clear_sent == 1 llist_count(&net->subscr_conns) == 0 ===== test_gsm_authen_imei: SUCCESS @@ -1578,8 +1589,11 @@ DREF VLR subscr MSISDN:46071 usage increases to: 3 DREF VLR subscr MSISDN:46071 usage decreases to: 2 - BSSAP Clear --RAN_GERAN_A--> MS -DREF MSISDN:46071: MSC conn use - release == 1 (0x2) -DREF MSISDN:46071: MSC conn use - dtap == 0 (0x0) +DREF MSISDN:46071: MSC conn use - dtap == 1 (0x100) + bssap_clear_sent == 1 +- LU was successful, and the conn has already been closed +- BSS sends BSSMAP Clear Complete +DREF MSISDN:46071: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) @@ -1592,8 +1606,6 @@ DREF VLR subscr MSISDN:46071 usage decreases to: 1 DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated - bssap_clear_sent == 1 -- LU was successful, and the conn has already been closed llist_count(&net->subscr_conns) == 0 - Subscriber has the IMEI and TMSI DREF VLR subscr MSISDN:46071 usage increases to: 2 @@ -1618,15 +1630,16 @@ DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASING DREF unknown: MSC conn use + release == 2 (0x101) - BSSAP Clear --RAN_GERAN_A--> MS -DREF unknown: MSC conn use - release == 1 (0x1) -DREF unknown: MSC conn use - compl_l3 == 0 (0x0) +DREF unknown: MSC conn use - compl_l3 == 1 (0x100) + bssap_clear_sent == 1 +- BSS sends BSSMAP Clear Complete +DREF unknown: MSC conn use - release == 0 (0x0) DMM Subscr_Conn{SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn{SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DRLL Freeing subscriber connection with NULL subscriber DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Deallocated - bssap_clear_sent == 1 llist_count(&net->subscr_conns) == 0 ===== test_gsm_authen_tmsi_imei: SUCCESS @@ -1764,6 +1777,12 @@ DREF VLR subscr MSISDN:42342 usage increases to: 4 DREF VLR subscr MSISDN:42342 usage decreases to: 3 - BSSAP Clear --RAN_GERAN_A--> MS +DREF VLR subscr MSISDN:42342 usage decreases to: 2 +<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0 + bssap_clear_sent == 1 +- LU was successful, and the conn has already been closed + lu_result_sent == 1 +- BSS sends BSSMAP Clear Complete DREF MSISDN:42342: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED @@ -1774,14 +1793,9 @@ DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_DONE}: Freeing instance DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_DONE}: Deallocated DRLL MSISDN:42342: Freeing subscriber connection -DREF VLR subscr MSISDN:42342 usage decreases to: 2 +DREF VLR subscr MSISDN:42342 usage decreases to: 1 DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Deallocated -DREF VLR subscr MSISDN:42342 usage decreases to: 1 -<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0 - bssap_clear_sent == 1 -- LU was successful, and the conn has already been closed - lu_result_sent == 1 llist_count(&net->subscr_conns) == 0 --- - after a while, a new conn sends a CM Service Request. VLR responds with Auth Req, 2nd auth vector @@ -1881,6 +1895,9 @@ DREF VLR subscr MSISDN:42342 usage increases to: 3 DREF VLR subscr MSISDN:42342 usage decreases to: 2 - BSSAP Clear --RAN_GERAN_A--> MS + bssap_clear_sent == 1 +- all requests serviced, conn has been released +- BSS sends BSSMAP Clear Complete DREF MSISDN:42342: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED @@ -1893,8 +1910,6 @@ DREF VLR subscr MSISDN:42342 usage decreases to: 1 DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Deallocated - bssap_clear_sent == 1 -- all requests serviced, conn has been released llist_count(&net->subscr_conns) == 0 --- - an SMS is sent, MS is paged @@ -2027,6 +2042,10 @@ DREF VLR subscr MSISDN:42342 usage increases to: 3 DREF VLR subscr MSISDN:42342 usage decreases to: 2 - BSSAP Clear --RAN_GERAN_A--> MS + dtap_tx_confirmed == 1 + bssap_clear_sent == 1 +- SMS is done, conn is gone +- BSS sends BSSMAP Clear Complete DREF MSISDN:42342: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED @@ -2039,9 +2058,6 @@ DREF VLR subscr MSISDN:42342 usage decreases to: 1 DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Deallocated - dtap_tx_confirmed == 1 - bssap_clear_sent == 1 -- SMS is done, conn is gone llist_count(&net->subscr_conns) == 0 --- - subscriber detaches @@ -2061,15 +2077,16 @@ DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASING DREF unknown: MSC conn use + release == 2 (0x101) - BSSAP Clear --RAN_GERAN_A--> MS -DREF unknown: MSC conn use - release == 1 (0x1) -DREF unknown: MSC conn use - compl_l3 == 0 (0x0) +DREF unknown: MSC conn use - compl_l3 == 1 (0x100) + bssap_clear_sent == 1 +- BSS sends BSSMAP Clear Complete +DREF unknown: MSC conn use - release == 0 (0x0) DMM Subscr_Conn{SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn{SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DRLL Freeing subscriber connection with NULL subscriber DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Deallocated - bssap_clear_sent == 1 llist_count(&net->subscr_conns) == 0 ===== test_gsm_milenage_authen: SUCCESS @@ -2171,8 +2188,10 @@ DREF VLR subscr IMSI:901700000004620 usage increases to: 2 DREF VLR subscr IMSI:901700000004620 usage decreases to: 1 - BSSAP Clear --RAN_GERAN_A--> MS -DREF IMSI:901700000004620: MSC conn use - release == 1 (0x2) -DREF IMSI:901700000004620: MSC conn use - dtap == 0 (0x0) +DREF IMSI:901700000004620: MSC conn use - dtap == 1 (0x100) + lu_result_sent == 2 +- BSS sends BSSMAP Clear Complete +DREF IMSI:901700000004620: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) @@ -2186,7 +2205,6 @@ DREF freeing VLR subscr IMSI:901700000004620 DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated - lu_result_sent == 2 llist_count(&net->subscr_conns) == 0 ===== test_wrong_sres_length: SUCCESS diff --git a/tests/msc_vlr/msc_vlr_test_gsm_ciph.c b/tests/msc_vlr/msc_vlr_test_gsm_ciph.c index 8a05b3f..b426981 100644 --- a/tests/msc_vlr/msc_vlr_test_gsm_ciph.c +++ b/tests/msc_vlr/msc_vlr_test_gsm_ciph.c @@ -93,6 +93,7 @@ btw("LU was successful, and the conn has already been closed"); VERBOSE_ASSERT(lu_result_sent, == RES_ACCEPT, "%d"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); BTW("after a while, a new conn sends a CM Service Request. VLR responds with Auth Req, 2nd auth vector"); @@ -132,6 +133,7 @@ VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); btw("all requests serviced, conn has been released"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); BTW("an SMS is sent, MS is paged"); @@ -223,6 +225,7 @@ VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); btw("SMS is done, conn is gone"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); BTW("subscriber detaches"); @@ -230,6 +233,7 @@ ms_sends_msg("050130089910070000006402"); VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); clear_vlr(); comment_end(); @@ -323,6 +327,7 @@ VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); btw("LU was successful, and the conn has already been closed"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); btw("Subscriber has the new TMSI"); @@ -371,6 +376,7 @@ VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); btw("all requests serviced, conn has been released"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); BTW("an SMS is sent, MS is paged"); @@ -462,6 +468,7 @@ VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); btw("SMS is done, conn is gone"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); BTW("subscriber detaches, using TMSI"); @@ -469,6 +476,7 @@ ms_sends_msg("050130" "05f4" "03020100"); VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); clear_vlr(); comment_end(); @@ -558,6 +566,7 @@ btw("LU was successful, and the conn has already been closed"); VERBOSE_ASSERT(lu_result_sent, == RES_ACCEPT, "%d"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); btw("Subscriber has the IMEI"); @@ -571,6 +580,7 @@ ms_sends_msg("050130089910070000006402"); VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); clear_vlr(); comment_end(); @@ -662,6 +672,7 @@ btw("LU was successful, and the conn has already been closed"); VERBOSE_ASSERT(lu_result_sent, == RES_ACCEPT, "%d"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); BTW("subscriber detaches"); @@ -669,6 +680,7 @@ ms_sends_msg("050130089910070000006402"); VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); clear_vlr(); comment_end(); @@ -775,6 +787,7 @@ VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); btw("LU was successful, and the conn has already been closed"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); btw("Subscriber has the IMEI and TMSI"); @@ -789,6 +802,7 @@ ms_sends_msg("050130" "05f4" "03020100"); VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); clear_vlr(); comment_end(); @@ -923,6 +937,7 @@ btw("LU was successful, and the conn has already been closed"); VERBOSE_ASSERT(lu_result_sent, == RES_ACCEPT, "%d"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); BTW("after a while, a new conn sends a CM Service Request. VLR responds with *UMTS AKA* Auth Req, 2nd auth vector"); @@ -961,6 +976,7 @@ VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); btw("all requests serviced, conn has been released"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); BTW("an SMS is sent, MS is paged"); @@ -1031,6 +1047,7 @@ VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); btw("SMS is done, conn is gone"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); BTW("subscriber detaches"); @@ -1039,6 +1056,7 @@ "089910070000106005" /* IMSI */); VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); clear_vlr(); comment_end(); @@ -1091,6 +1109,7 @@ OSMO_ASSERT(!cipher_mode_cmd_sent); VERBOSE_ASSERT(lu_result_sent, == RES_REJECT, "%d"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); clear_vlr(); comment_end(); diff --git a/tests/msc_vlr/msc_vlr_test_gsm_ciph.err b/tests/msc_vlr/msc_vlr_test_gsm_ciph.err index 9d90260..2d5670d 100644 --- a/tests/msc_vlr/msc_vlr_test_gsm_ciph.err +++ b/tests/msc_vlr/msc_vlr_test_gsm_ciph.err @@ -155,6 +155,12 @@ DREF VLR subscr MSISDN:46071 usage increases to: 4 DREF VLR subscr MSISDN:46071 usage decreases to: 3 - BSSAP Clear --RAN_GERAN_A--> MS +DREF VLR subscr MSISDN:46071 usage decreases to: 2 +<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0 + bssap_clear_sent == 1 +- LU was successful, and the conn has already been closed + lu_result_sent == 1 +- BSS sends BSSMAP Clear Complete DREF MSISDN:46071: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED @@ -165,14 +171,9 @@ DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Freeing instance DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Deallocated DRLL MSISDN:46071: Freeing subscriber connection -DREF VLR subscr MSISDN:46071 usage decreases to: 2 +DREF VLR subscr MSISDN:46071 usage decreases to: 1 DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated -DREF VLR subscr MSISDN:46071 usage decreases to: 1 -<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0 - bssap_clear_sent == 1 -- LU was successful, and the conn has already been closed - lu_result_sent == 1 llist_count(&net->subscr_conns) == 0 --- - after a while, a new conn sends a CM Service Request. VLR responds with Auth Req, 2nd auth vector @@ -297,6 +298,9 @@ DREF VLR subscr MSISDN:46071 usage increases to: 3 DREF VLR subscr MSISDN:46071 usage decreases to: 2 - BSSAP Clear --RAN_GERAN_A--> MS + bssap_clear_sent == 1 +- all requests serviced, conn has been released +- BSS sends BSSMAP Clear Complete DREF MSISDN:46071: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED @@ -309,8 +313,6 @@ DREF VLR subscr MSISDN:46071 usage decreases to: 1 DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated - bssap_clear_sent == 1 -- all requests serviced, conn has been released llist_count(&net->subscr_conns) == 0 --- - an SMS is sent, MS is paged @@ -468,6 +470,10 @@ DREF VLR subscr MSISDN:46071 usage increases to: 3 DREF VLR subscr MSISDN:46071 usage decreases to: 2 - BSSAP Clear --RAN_GERAN_A--> MS + dtap_tx_confirmed == 1 + bssap_clear_sent == 1 +- SMS is done, conn is gone +- BSS sends BSSMAP Clear Complete DREF MSISDN:46071: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED @@ -480,9 +486,6 @@ DREF VLR subscr MSISDN:46071 usage decreases to: 1 DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated - dtap_tx_confirmed == 1 - bssap_clear_sent == 1 -- SMS is done, conn is gone llist_count(&net->subscr_conns) == 0 --- - subscriber detaches @@ -502,15 +505,16 @@ DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASING DREF unknown: MSC conn use + release == 2 (0x101) - BSSAP Clear --RAN_GERAN_A--> MS -DREF unknown: MSC conn use - release == 1 (0x1) -DREF unknown: MSC conn use - compl_l3 == 0 (0x0) +DREF unknown: MSC conn use - compl_l3 == 1 (0x100) + bssap_clear_sent == 1 +- BSS sends BSSMAP Clear Complete +DREF unknown: MSC conn use - release == 0 (0x0) DMM Subscr_Conn{SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn{SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DRLL Freeing subscriber connection with NULL subscriber DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Deallocated - bssap_clear_sent == 1 llist_count(&net->subscr_conns) == 0 ===== test_ciph: SUCCESS @@ -703,8 +707,11 @@ DREF VLR subscr MSISDN:46071 usage increases to: 3 DREF VLR subscr MSISDN:46071 usage decreases to: 2 - BSSAP Clear --RAN_GERAN_A--> MS -DREF MSISDN:46071: MSC conn use - release == 1 (0x2) -DREF MSISDN:46071: MSC conn use - dtap == 0 (0x0) +DREF MSISDN:46071: MSC conn use - dtap == 1 (0x100) + bssap_clear_sent == 1 +- LU was successful, and the conn has already been closed +- BSS sends BSSMAP Clear Complete +DREF MSISDN:46071: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) @@ -717,8 +724,6 @@ DREF VLR subscr MSISDN:46071 usage decreases to: 1 DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated - bssap_clear_sent == 1 -- LU was successful, and the conn has already been closed llist_count(&net->subscr_conns) == 0 - Subscriber has the new TMSI DREF VLR subscr MSISDN:46071 usage increases to: 2 @@ -850,6 +855,9 @@ DREF VLR subscr MSISDN:46071 usage increases to: 3 DREF VLR subscr MSISDN:46071 usage decreases to: 2 - BSSAP Clear --RAN_GERAN_A--> MS + bssap_clear_sent == 1 +- all requests serviced, conn has been released +- BSS sends BSSMAP Clear Complete DREF MSISDN:46071: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(50462976){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(50462976){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED @@ -862,8 +870,6 @@ DREF VLR subscr MSISDN:46071 usage decreases to: 1 DMM Subscr_Conn(50462976){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(50462976){SUBSCR_CONN_S_RELEASED}: Deallocated - bssap_clear_sent == 1 -- all requests serviced, conn has been released llist_count(&net->subscr_conns) == 0 --- - an SMS is sent, MS is paged @@ -1021,6 +1027,10 @@ DREF VLR subscr MSISDN:46071 usage increases to: 3 DREF VLR subscr MSISDN:46071 usage decreases to: 2 - BSSAP Clear --RAN_GERAN_A--> MS + dtap_tx_confirmed == 1 + bssap_clear_sent == 1 +- SMS is done, conn is gone +- BSS sends BSSMAP Clear Complete DREF MSISDN:46071: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(50462976){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(50462976){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED @@ -1033,9 +1043,6 @@ DREF VLR subscr MSISDN:46071 usage decreases to: 1 DMM Subscr_Conn(50462976){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(50462976){SUBSCR_CONN_S_RELEASED}: Deallocated - dtap_tx_confirmed == 1 - bssap_clear_sent == 1 -- SMS is done, conn is gone llist_count(&net->subscr_conns) == 0 --- - subscriber detaches, using TMSI @@ -1055,15 +1062,16 @@ DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASING DREF unknown: MSC conn use + release == 2 (0x101) - BSSAP Clear --RAN_GERAN_A--> MS -DREF unknown: MSC conn use - release == 1 (0x1) -DREF unknown: MSC conn use - compl_l3 == 0 (0x0) +DREF unknown: MSC conn use - compl_l3 == 1 (0x100) + bssap_clear_sent == 1 +- BSS sends BSSMAP Clear Complete +DREF unknown: MSC conn use - release == 0 (0x0) DMM Subscr_Conn{SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn{SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DRLL Freeing subscriber connection with NULL subscriber DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Deallocated - bssap_clear_sent == 1 llist_count(&net->subscr_conns) == 0 ===== test_ciph_tmsi: SUCCESS @@ -1253,8 +1261,12 @@ DREF VLR subscr MSISDN:46071 usage increases to: 3 DREF VLR subscr MSISDN:46071 usage decreases to: 2 - BSSAP Clear --RAN_GERAN_A--> MS -DREF MSISDN:46071: MSC conn use - release == 1 (0x2) -DREF MSISDN:46071: MSC conn use - dtap == 0 (0x0) +DREF MSISDN:46071: MSC conn use - dtap == 1 (0x100) + bssap_clear_sent == 1 +- LU was successful, and the conn has already been closed + lu_result_sent == 1 +- BSS sends BSSMAP Clear Complete +DREF MSISDN:46071: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) @@ -1267,9 +1279,6 @@ DREF VLR subscr MSISDN:46071 usage decreases to: 1 DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated - bssap_clear_sent == 1 -- LU was successful, and the conn has already been closed - lu_result_sent == 1 llist_count(&net->subscr_conns) == 0 - Subscriber has the IMEI DREF VLR subscr MSISDN:46071 usage increases to: 2 @@ -1293,15 +1302,16 @@ DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASING DREF unknown: MSC conn use + release == 2 (0x101) - BSSAP Clear --RAN_GERAN_A--> MS -DREF unknown: MSC conn use - release == 1 (0x1) -DREF unknown: MSC conn use - compl_l3 == 0 (0x0) +DREF unknown: MSC conn use - compl_l3 == 1 (0x100) + bssap_clear_sent == 1 +- BSS sends BSSMAP Clear Complete +DREF unknown: MSC conn use - release == 0 (0x0) DMM Subscr_Conn{SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn{SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DRLL Freeing subscriber connection with NULL subscriber DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Deallocated - bssap_clear_sent == 1 llist_count(&net->subscr_conns) == 0 ===== test_ciph_imei: SUCCESS @@ -1483,6 +1493,12 @@ DREF VLR subscr MSISDN:46071 usage increases to: 4 DREF VLR subscr MSISDN:46071 usage decreases to: 3 - BSSAP Clear --RAN_GERAN_A--> MS +DREF VLR subscr MSISDN:46071 usage decreases to: 2 +<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0 + bssap_clear_sent == 1 +- LU was successful, and the conn has already been closed + lu_result_sent == 1 +- BSS sends BSSMAP Clear Complete DREF MSISDN:46071: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED @@ -1493,14 +1509,9 @@ DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Freeing instance DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Deallocated DRLL MSISDN:46071: Freeing subscriber connection -DREF VLR subscr MSISDN:46071 usage decreases to: 2 +DREF VLR subscr MSISDN:46071 usage decreases to: 1 DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated -DREF VLR subscr MSISDN:46071 usage decreases to: 1 -<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0 - bssap_clear_sent == 1 -- LU was successful, and the conn has already been closed - lu_result_sent == 1 llist_count(&net->subscr_conns) == 0 --- - subscriber detaches @@ -1520,15 +1531,16 @@ DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASING DREF unknown: MSC conn use + release == 2 (0x101) - BSSAP Clear --RAN_GERAN_A--> MS -DREF unknown: MSC conn use - release == 1 (0x1) -DREF unknown: MSC conn use - compl_l3 == 0 (0x0) +DREF unknown: MSC conn use - compl_l3 == 1 (0x100) + bssap_clear_sent == 1 +- BSS sends BSSMAP Clear Complete +DREF unknown: MSC conn use - release == 0 (0x0) DMM Subscr_Conn{SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn{SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DRLL Freeing subscriber connection with NULL subscriber DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Deallocated - bssap_clear_sent == 1 llist_count(&net->subscr_conns) == 0 ===== test_ciph_imeisv: SUCCESS @@ -1750,8 +1762,11 @@ DREF VLR subscr MSISDN:46071 usage increases to: 3 DREF VLR subscr MSISDN:46071 usage decreases to: 2 - BSSAP Clear --RAN_GERAN_A--> MS -DREF MSISDN:46071: MSC conn use - release == 1 (0x2) -DREF MSISDN:46071: MSC conn use - dtap == 0 (0x0) +DREF MSISDN:46071: MSC conn use - dtap == 1 (0x100) + bssap_clear_sent == 1 +- LU was successful, and the conn has already been closed +- BSS sends BSSMAP Clear Complete +DREF MSISDN:46071: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) @@ -1764,8 +1779,6 @@ DREF VLR subscr MSISDN:46071 usage decreases to: 1 DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated - bssap_clear_sent == 1 -- LU was successful, and the conn has already been closed llist_count(&net->subscr_conns) == 0 - Subscriber has the IMEI and TMSI DREF VLR subscr MSISDN:46071 usage increases to: 2 @@ -1790,15 +1803,16 @@ DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASING DREF unknown: MSC conn use + release == 2 (0x101) - BSSAP Clear --RAN_GERAN_A--> MS -DREF unknown: MSC conn use - release == 1 (0x1) -DREF unknown: MSC conn use - compl_l3 == 0 (0x0) +DREF unknown: MSC conn use - compl_l3 == 1 (0x100) + bssap_clear_sent == 1 +- BSS sends BSSMAP Clear Complete +DREF unknown: MSC conn use - release == 0 (0x0) DMM Subscr_Conn{SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn{SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DRLL Freeing subscriber connection with NULL subscriber DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Deallocated - bssap_clear_sent == 1 llist_count(&net->subscr_conns) == 0 ===== test_ciph_tmsi_imei: SUCCESS @@ -1948,6 +1962,12 @@ DREF VLR subscr MSISDN:42342 usage increases to: 4 DREF VLR subscr MSISDN:42342 usage decreases to: 3 - BSSAP Clear --RAN_GERAN_A--> MS +DREF VLR subscr MSISDN:42342 usage decreases to: 2 +<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0 + bssap_clear_sent == 1 +- LU was successful, and the conn has already been closed + lu_result_sent == 1 +- BSS sends BSSMAP Clear Complete DREF MSISDN:42342: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED @@ -1958,14 +1978,9 @@ DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_DONE}: Freeing instance DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_DONE}: Deallocated DRLL MSISDN:42342: Freeing subscriber connection -DREF VLR subscr MSISDN:42342 usage decreases to: 2 +DREF VLR subscr MSISDN:42342 usage decreases to: 1 DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Deallocated -DREF VLR subscr MSISDN:42342 usage decreases to: 1 -<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0 - bssap_clear_sent == 1 -- LU was successful, and the conn has already been closed - lu_result_sent == 1 llist_count(&net->subscr_conns) == 0 --- - after a while, a new conn sends a CM Service Request. VLR responds with *UMTS AKA* Auth Req, 2nd auth vector @@ -2080,6 +2095,9 @@ DREF VLR subscr MSISDN:42342 usage increases to: 3 DREF VLR subscr MSISDN:42342 usage decreases to: 2 - BSSAP Clear --RAN_GERAN_A--> MS + bssap_clear_sent == 1 +- all requests serviced, conn has been released +- BSS sends BSSMAP Clear Complete DREF MSISDN:42342: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED @@ -2092,8 +2110,6 @@ DREF VLR subscr MSISDN:42342 usage decreases to: 1 DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Deallocated - bssap_clear_sent == 1 -- all requests serviced, conn has been released llist_count(&net->subscr_conns) == 0 --- - an SMS is sent, MS is paged @@ -2241,6 +2257,10 @@ DREF VLR subscr MSISDN:42342 usage increases to: 3 DREF VLR subscr MSISDN:42342 usage decreases to: 2 - BSSAP Clear --RAN_GERAN_A--> MS + dtap_tx_confirmed == 1 + bssap_clear_sent == 1 +- SMS is done, conn is gone +- BSS sends BSSMAP Clear Complete DREF MSISDN:42342: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED @@ -2253,9 +2273,6 @@ DREF VLR subscr MSISDN:42342 usage decreases to: 1 DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Deallocated - dtap_tx_confirmed == 1 - bssap_clear_sent == 1 -- SMS is done, conn is gone llist_count(&net->subscr_conns) == 0 --- - subscriber detaches @@ -2275,15 +2292,16 @@ DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASING DREF unknown: MSC conn use + release == 2 (0x101) - BSSAP Clear --RAN_GERAN_A--> MS -DREF unknown: MSC conn use - release == 1 (0x1) -DREF unknown: MSC conn use - compl_l3 == 0 (0x0) +DREF unknown: MSC conn use - compl_l3 == 1 (0x100) + bssap_clear_sent == 1 +- BSS sends BSSMAP Clear Complete +DREF unknown: MSC conn use - release == 0 (0x0) DMM Subscr_Conn{SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn{SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DRLL Freeing subscriber connection with NULL subscriber DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Deallocated - bssap_clear_sent == 1 llist_count(&net->subscr_conns) == 0 ===== test_gsm_ciph_in_umts_env: SUCCESS @@ -2369,8 +2387,10 @@ DREF VLR subscr IMSI:901700000004620 usage increases to: 2 DREF VLR subscr IMSI:901700000004620 usage decreases to: 1 - BSSAP Clear --RAN_GERAN_A--> MS -DREF IMSI:901700000004620: MSC conn use - release == 1 (0x2) -DREF IMSI:901700000004620: MSC conn use - dtap == 0 (0x0) +DREF IMSI:901700000004620: MSC conn use - dtap == 1 (0x100) + lu_result_sent == 2 +- BSS sends BSSMAP Clear Complete +DREF IMSI:901700000004620: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) @@ -2384,7 +2404,6 @@ DREF freeing VLR subscr IMSI:901700000004620 DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated - lu_result_sent == 2 llist_count(&net->subscr_conns) == 0 ===== test_a5_3_not_supported: SUCCESS diff --git a/tests/msc_vlr/msc_vlr_test_hlr_reject.c b/tests/msc_vlr/msc_vlr_test_hlr_reject.c index 8532f8e..8dfe1f4 100644 --- a/tests/msc_vlr/msc_vlr_test_hlr_reject.c +++ b/tests/msc_vlr/msc_vlr_test_hlr_reject.c @@ -44,6 +44,7 @@ VERBOSE_ASSERT(lu_result_sent, == RES_REJECT, "%d"); VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); clear_vlr(); comment_end(); @@ -70,6 +71,7 @@ VERBOSE_ASSERT(lu_result_sent, == RES_REJECT, "%d"); VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); clear_vlr(); comment_end(); @@ -128,6 +130,7 @@ btw("LU was successful, and the conn has already been closed"); VERBOSE_ASSERT(lu_result_sent, == RES_ACCEPT, "%d"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); @@ -157,6 +160,7 @@ VERBOSE_ASSERT(lu_result_sent, == RES_REJECT, "%d"); VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); clear_vlr(); comment_end(); @@ -215,6 +219,7 @@ btw("LU was successful, and the conn has already been closed"); VERBOSE_ASSERT(lu_result_sent, == RES_ACCEPT, "%d"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); @@ -245,6 +250,7 @@ VERBOSE_ASSERT(lu_result_sent, == RES_REJECT, "%d"); VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); clear_vlr(); comment_end(); @@ -277,6 +283,7 @@ VERBOSE_ASSERT(lu_result_sent, == RES_REJECT, "%d"); VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); clear_vlr(); comment_end(); @@ -335,6 +342,7 @@ btw("LU was successful, and the conn has already been closed"); VERBOSE_ASSERT(lu_result_sent, == RES_ACCEPT, "%d"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); @@ -379,6 +387,7 @@ btw("LU was successful, and the conn has already been closed"); VERBOSE_ASSERT(lu_result_sent, == RES_ACCEPT, "%d"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); clear_vlr(); @@ -402,6 +411,7 @@ NULL); VERBOSE_ASSERT(lu_result_sent, == RES_REJECT, "%d"); VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); clear_vlr(); @@ -429,6 +439,7 @@ btw("LU was successful, and the conn has already been closed"); VERBOSE_ASSERT(lu_result_sent, == RES_ACCEPT, "%d"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); clear_vlr(); comment_end(); diff --git a/tests/msc_vlr/msc_vlr_test_hlr_reject.err b/tests/msc_vlr/msc_vlr_test_hlr_reject.err index 28e15aa..959b58c 100644 --- a/tests/msc_vlr/msc_vlr_test_hlr_reject.err +++ b/tests/msc_vlr/msc_vlr_test_hlr_reject.err @@ -55,6 +55,12 @@ DREF VLR subscr IMSI:901700000004620 usage increases to: 3 DREF VLR subscr IMSI:901700000004620 usage decreases to: 2 - BSSAP Clear --RAN_GERAN_A--> MS +DREF VLR subscr IMSI:901700000004620 usage decreases to: 1 +<-- GSUP rx OSMO_GSUP_MSGT_SEND_AUTH_INFO_ERROR: vlr_gsupc_read_cb() returns 0 + auth_request_sent == 0 + lu_result_sent == 2 + bssap_clear_sent == 1 +- BSS sends BSSMAP Clear Complete DREF IMSI:901700000004620: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED @@ -65,15 +71,10 @@ DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Freeing instance DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Deallocated DRLL IMSI:901700000004620: Freeing subscriber connection -DREF VLR subscr IMSI:901700000004620 usage decreases to: 1 -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated DREF VLR subscr IMSI:901700000004620 usage decreases to: 0 DREF freeing VLR subscr IMSI:901700000004620 -<-- GSUP rx OSMO_GSUP_MSGT_SEND_AUTH_INFO_ERROR: vlr_gsupc_read_cb() returns 0 - auth_request_sent == 0 - lu_result_sent == 2 - bssap_clear_sent == 1 +DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance +DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated llist_count(&net->subscr_conns) == 0 ===== test_hlr_rej_auth_info_unknown_imsi: SUCCESS @@ -134,6 +135,12 @@ DREF VLR subscr IMSI:901700000004620 usage increases to: 3 DREF VLR subscr IMSI:901700000004620 usage decreases to: 2 - BSSAP Clear --RAN_GERAN_A--> MS +DREF VLR subscr IMSI:901700000004620 usage decreases to: 1 +<-- GSUP rx OSMO_GSUP_MSGT_SEND_AUTH_INFO_ERROR: vlr_gsupc_read_cb() returns 0 + auth_request_sent == 0 + lu_result_sent == 2 + bssap_clear_sent == 1 +- BSS sends BSSMAP Clear Complete DREF IMSI:901700000004620: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED @@ -144,15 +151,10 @@ DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Freeing instance DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Deallocated DRLL IMSI:901700000004620: Freeing subscriber connection -DREF VLR subscr IMSI:901700000004620 usage decreases to: 1 -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated DREF VLR subscr IMSI:901700000004620 usage decreases to: 0 DREF freeing VLR subscr IMSI:901700000004620 -<-- GSUP rx OSMO_GSUP_MSGT_SEND_AUTH_INFO_ERROR: vlr_gsupc_read_cb() returns 0 - auth_request_sent == 0 - lu_result_sent == 2 - bssap_clear_sent == 1 +DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance +DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated llist_count(&net->subscr_conns) == 0 ===== test_hlr_rej_auth_info_net_fail: SUCCESS @@ -292,6 +294,12 @@ DREF VLR subscr MSISDN:46071 usage increases to: 4 DREF VLR subscr MSISDN:46071 usage decreases to: 3 - BSSAP Clear --RAN_GERAN_A--> MS +DREF VLR subscr MSISDN:46071 usage decreases to: 2 +<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0 + bssap_clear_sent == 1 +- LU was successful, and the conn has already been closed + lu_result_sent == 1 +- BSS sends BSSMAP Clear Complete DREF MSISDN:46071: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED @@ -302,14 +310,9 @@ DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Freeing instance DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Deallocated DRLL MSISDN:46071: Freeing subscriber connection -DREF VLR subscr MSISDN:46071 usage decreases to: 2 +DREF VLR subscr MSISDN:46071 usage decreases to: 1 DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated -DREF VLR subscr MSISDN:46071 usage decreases to: 1 -<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0 - bssap_clear_sent == 1 -- LU was successful, and the conn has already been closed - lu_result_sent == 1 llist_count(&net->subscr_conns) == 0 --- - Now one auth tuple is available, but used. @@ -445,6 +448,12 @@ DREF VLR subscr MSISDN:46071 usage increases to: 4 DREF VLR subscr MSISDN:46071 usage decreases to: 3 - BSSAP Clear --RAN_GERAN_A--> MS +DREF VLR subscr MSISDN:46071 usage decreases to: 2 +<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0 + bssap_clear_sent == 1 +- LU was successful, and the conn has already been closed + lu_result_sent == 1 +- BSS sends BSSMAP Clear Complete DREF MSISDN:46071: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED @@ -455,14 +464,9 @@ DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Freeing instance DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Deallocated DRLL MSISDN:46071: Freeing subscriber connection -DREF VLR subscr MSISDN:46071 usage decreases to: 2 +DREF VLR subscr MSISDN:46071 usage decreases to: 1 DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated -DREF VLR subscr MSISDN:46071 usage decreases to: 1 -<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0 - bssap_clear_sent == 1 -- LU was successful, and the conn has already been closed - lu_result_sent == 1 llist_count(&net->subscr_conns) == 0 DREF freeing VLR subscr MSISDN:46071 ===== test_hlr_rej_auth_info_net_fail_reuse_tuples: SUCCESS @@ -603,6 +607,12 @@ DREF VLR subscr MSISDN:46071 usage increases to: 4 DREF VLR subscr MSISDN:46071 usage decreases to: 3 - BSSAP Clear --RAN_GERAN_A--> MS +DREF VLR subscr MSISDN:46071 usage decreases to: 2 +<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0 + bssap_clear_sent == 1 +- LU was successful, and the conn has already been closed + lu_result_sent == 1 +- BSS sends BSSMAP Clear Complete DREF MSISDN:46071: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED @@ -613,14 +623,9 @@ DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Freeing instance DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Deallocated DRLL MSISDN:46071: Freeing subscriber connection -DREF VLR subscr MSISDN:46071 usage decreases to: 2 +DREF VLR subscr MSISDN:46071 usage decreases to: 1 DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated -DREF VLR subscr MSISDN:46071 usage decreases to: 1 -<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0 - bssap_clear_sent == 1 -- LU was successful, and the conn has already been closed - lu_result_sent == 1 llist_count(&net->subscr_conns) == 0 --- - Now one auth tuple is available, but used. @@ -680,6 +685,12 @@ DREF VLR subscr MSISDN:46071 usage increases to: 4 DREF VLR subscr MSISDN:46071 usage decreases to: 3 - BSSAP Clear --RAN_GERAN_A--> MS +DREF VLR subscr MSISDN:46071 usage decreases to: 2 +<-- GSUP rx OSMO_GSUP_MSGT_SEND_AUTH_INFO_ERROR: vlr_gsupc_read_cb() returns 0 + auth_request_sent == 0 + lu_result_sent == 2 + bssap_clear_sent == 1 +- BSS sends BSSMAP Clear Complete DREF MSISDN:46071: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED @@ -690,14 +701,9 @@ DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Freeing instance DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Deallocated DRLL MSISDN:46071: Freeing subscriber connection -DREF VLR subscr MSISDN:46071 usage decreases to: 2 +DREF VLR subscr MSISDN:46071 usage decreases to: 1 DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated -DREF VLR subscr MSISDN:46071 usage decreases to: 1 -<-- GSUP rx OSMO_GSUP_MSGT_SEND_AUTH_INFO_ERROR: vlr_gsupc_read_cb() returns 0 - auth_request_sent == 0 - lu_result_sent == 2 - bssap_clear_sent == 1 llist_count(&net->subscr_conns) == 0 DREF freeing VLR subscr MSISDN:46071 ===== test_hlr_rej_auth_info_net_fail_no_reuse_tuples: SUCCESS @@ -838,6 +844,12 @@ DREF VLR subscr MSISDN:46071 usage increases to: 4 DREF VLR subscr MSISDN:46071 usage decreases to: 3 - BSSAP Clear --RAN_GERAN_A--> MS +DREF VLR subscr MSISDN:46071 usage decreases to: 2 +<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0 + bssap_clear_sent == 1 +- LU was successful, and the conn has already been closed + lu_result_sent == 1 +- BSS sends BSSMAP Clear Complete DREF MSISDN:46071: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED @@ -848,14 +860,9 @@ DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Freeing instance DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Deallocated DRLL MSISDN:46071: Freeing subscriber connection -DREF VLR subscr MSISDN:46071 usage decreases to: 2 +DREF VLR subscr MSISDN:46071 usage decreases to: 1 DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated -DREF VLR subscr MSISDN:46071 usage decreases to: 1 -<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0 - bssap_clear_sent == 1 -- LU was successful, and the conn has already been closed - lu_result_sent == 1 llist_count(&net->subscr_conns) == 0 --- - Now one auth tuple is available, but used. @@ -916,6 +923,12 @@ DREF VLR subscr MSISDN:46071 usage increases to: 4 DREF VLR subscr MSISDN:46071 usage decreases to: 3 - BSSAP Clear --RAN_GERAN_A--> MS +DREF VLR subscr MSISDN:46071 usage decreases to: 2 +<-- GSUP rx OSMO_GSUP_MSGT_SEND_AUTH_INFO_ERROR: vlr_gsupc_read_cb() returns 0 + auth_request_sent == 0 + lu_result_sent == 2 + bssap_clear_sent == 1 +- BSS sends BSSMAP Clear Complete DREF MSISDN:46071: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED @@ -926,14 +939,9 @@ DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Freeing instance DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Deallocated DRLL MSISDN:46071: Freeing subscriber connection -DREF VLR subscr MSISDN:46071 usage decreases to: 2 +DREF VLR subscr MSISDN:46071 usage decreases to: 1 DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated -DREF VLR subscr MSISDN:46071 usage decreases to: 1 -<-- GSUP rx OSMO_GSUP_MSGT_SEND_AUTH_INFO_ERROR: vlr_gsupc_read_cb() returns 0 - auth_request_sent == 0 - lu_result_sent == 2 - bssap_clear_sent == 1 llist_count(&net->subscr_conns) == 0 DREF freeing VLR subscr MSISDN:46071 ===== test_hlr_rej_auth_info_unkown_imsi_no_reuse_tuples: SUCCESS @@ -994,6 +1002,12 @@ DREF VLR subscr IMSI:901700000004620 usage increases to: 3 DREF VLR subscr IMSI:901700000004620 usage decreases to: 2 - BSSAP Clear --RAN_GERAN_A--> MS +DREF VLR subscr IMSI:901700000004620 usage decreases to: 1 +<-- GSUP rx OSMO_GSUP_MSGT_SEND_AUTH_INFO_RESULT: vlr_gsupc_read_cb() returns 0 + auth_request_sent == 0 + lu_result_sent == 2 + bssap_clear_sent == 1 +- BSS sends BSSMAP Clear Complete DREF IMSI:901700000004620: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED @@ -1004,15 +1018,10 @@ DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Freeing instance DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Deallocated DRLL IMSI:901700000004620: Freeing subscriber connection -DREF VLR subscr IMSI:901700000004620 usage decreases to: 1 -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated DREF VLR subscr IMSI:901700000004620 usage decreases to: 0 DREF freeing VLR subscr IMSI:901700000004620 -<-- GSUP rx OSMO_GSUP_MSGT_SEND_AUTH_INFO_RESULT: vlr_gsupc_read_cb() returns 0 - auth_request_sent == 0 - lu_result_sent == 2 - bssap_clear_sent == 1 +DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance +DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated llist_count(&net->subscr_conns) == 0 ===== test_hlr_acc_but_no_auth_tuples: SUCCESS @@ -1076,6 +1085,11 @@ DREF VLR subscr IMSI:901700000004620 usage increases to: 3 DREF VLR subscr IMSI:901700000004620 usage decreases to: 2 - BSSAP Clear --RAN_GERAN_A--> MS +DREF VLR subscr IMSI:901700000004620 usage decreases to: 1 +<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_ERROR: vlr_gsupc_read_cb() returns 0 + lu_result_sent == 2 + bssap_clear_sent == 1 +- BSS sends BSSMAP Clear Complete DREF IMSI:901700000004620: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED @@ -1086,14 +1100,10 @@ DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Freeing instance DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Deallocated DRLL IMSI:901700000004620: Freeing subscriber connection -DREF VLR subscr IMSI:901700000004620 usage decreases to: 1 -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated DREF VLR subscr IMSI:901700000004620 usage decreases to: 0 DREF freeing VLR subscr IMSI:901700000004620 -<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_ERROR: vlr_gsupc_read_cb() returns 0 - lu_result_sent == 2 - bssap_clear_sent == 1 +DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance +DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated llist_count(&net->subscr_conns) == 0 ===== test_hlr_rej_lu: SUCCESS @@ -1179,6 +1189,12 @@ DREF VLR subscr IMSI:901700000004620 usage increases to: 4 DREF VLR subscr IMSI:901700000004620 usage decreases to: 3 - BSSAP Clear --RAN_GERAN_A--> MS +DREF VLR subscr IMSI:901700000004620 usage decreases to: 2 +<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0 + bssap_clear_sent == 1 +- LU was successful, and the conn has already been closed + lu_result_sent == 1 +- BSS sends BSSMAP Clear Complete DREF IMSI:901700000004620: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED @@ -1189,14 +1205,9 @@ DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Freeing instance DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Deallocated DRLL IMSI:901700000004620: Freeing subscriber connection -DREF VLR subscr IMSI:901700000004620 usage decreases to: 2 +DREF VLR subscr IMSI:901700000004620 usage decreases to: 1 DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated -DREF VLR subscr IMSI:901700000004620 usage decreases to: 1 -<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0 - bssap_clear_sent == 1 -- LU was successful, and the conn has already been closed - lu_result_sent == 1 llist_count(&net->subscr_conns) == 0 DREF freeing VLR subscr IMSI:901700000004620 ===== test_hlr_no_insert_data: SUCCESS diff --git a/tests/msc_vlr/msc_vlr_test_hlr_timeout.c b/tests/msc_vlr/msc_vlr_test_hlr_timeout.c index 610b388..ce3f3d0 100644 --- a/tests/msc_vlr/msc_vlr_test_hlr_timeout.c +++ b/tests/msc_vlr/msc_vlr_test_hlr_timeout.c @@ -57,6 +57,7 @@ fake_time_passes(1, 235); btw("SUBSCR_CONN_TIMEOUT has passed, conn is gone."); VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); VERBOSE_ASSERT(lu_result_sent, == RES_REJECT, "%d"); @@ -104,6 +105,7 @@ fake_time_passes(1, 235); btw("SUBSCR_CONN_TIMEOUT has passed, conn is gone."); VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); VERBOSE_ASSERT(lu_result_sent, == RES_REJECT, "%d"); diff --git a/tests/msc_vlr/msc_vlr_test_hlr_timeout.err b/tests/msc_vlr/msc_vlr_test_hlr_timeout.err index 883141c..45c6a6f 100644 --- a/tests/msc_vlr/msc_vlr_test_hlr_timeout.err +++ b/tests/msc_vlr/msc_vlr_test_hlr_timeout.err @@ -62,6 +62,9 @@ DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: Event SUBSCR_CONN_E_CN_CLOSE not permitted DREF VLR subscr IMSI:901700000004620 usage decreases to: 1 - BSSAP Clear --RAN_GERAN_A--> MS +- SUBSCR_CONN_TIMEOUT has passed, conn is gone. + bssap_clear_sent == 1 +- BSS sends BSSMAP Clear Complete DREF IMSI:901700000004620: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED @@ -80,8 +83,6 @@ DREF freeing VLR subscr IMSI:901700000004620 DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated -- SUBSCR_CONN_TIMEOUT has passed, conn is gone. - bssap_clear_sent == 1 llist_count(&net->subscr_conns) == 0 lu_result_sent == 2 ===== test_hlr_timeout_lu_auth_info: SUCCESS @@ -169,6 +170,9 @@ DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: Event SUBSCR_CONN_E_CN_CLOSE not permitted DREF VLR subscr MSISDN:46071 usage decreases to: 1 - BSSAP Clear --RAN_GERAN_A--> MS +- SUBSCR_CONN_TIMEOUT has passed, conn is gone. + bssap_clear_sent == 1 +- BSS sends BSSMAP Clear Complete DREF MSISDN:46071: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED @@ -187,8 +191,6 @@ DREF freeing VLR subscr MSISDN:46071 DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated -- SUBSCR_CONN_TIMEOUT has passed, conn is gone. - bssap_clear_sent == 1 llist_count(&net->subscr_conns) == 0 lu_result_sent == 2 ===== test_hlr_timeout_lu_upd_loc_result: SUCCESS diff --git a/tests/msc_vlr/msc_vlr_test_ms_timeout.c b/tests/msc_vlr/msc_vlr_test_ms_timeout.c index a36027c..c5ab059 100644 --- a/tests/msc_vlr/msc_vlr_test_ms_timeout.c +++ b/tests/msc_vlr/msc_vlr_test_ms_timeout.c @@ -77,6 +77,7 @@ fake_time_passes(1, 235); btw("SUBSCR_CONN_TIMEOUT has passed, conn is gone."); VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); VERBOSE_ASSERT(lu_result_sent, == RES_REJECT, "%d"); @@ -140,6 +141,7 @@ btw("LU was successful, and the conn has already been closed"); VERBOSE_ASSERT(lu_result_sent, == RES_ACCEPT, "%d"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); BTW("after a while, a new conn sends a CM Service Request. VLR responds with Auth Req, 2nd auth vector"); @@ -175,6 +177,7 @@ fake_time_passes(1, 235); btw("SUBSCR_CONN_TIMEOUT has passed, conn is gone."); VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); VERBOSE_ASSERT(cm_service_result_sent, == RES_REJECT, "%d"); @@ -212,6 +215,7 @@ btw("LU was successful, and the conn has already been closed"); VERBOSE_ASSERT(lu_result_sent, == RES_ACCEPT, "%d"); VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); BTW("an SMS is sent, MS is paged"); @@ -282,6 +286,7 @@ vsub = vlr_subscr_find_by_imsi(net->vlr, imsi); OSMO_ASSERT(!vsub); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); clear_vlr(); comment_end(); diff --git a/tests/msc_vlr/msc_vlr_test_ms_timeout.err b/tests/msc_vlr/msc_vlr_test_ms_timeout.err index a3950ed..82786ff 100644 --- a/tests/msc_vlr/msc_vlr_test_ms_timeout.err +++ b/tests/msc_vlr/msc_vlr_test_ms_timeout.err @@ -82,6 +82,9 @@ DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: Event SUBSCR_CONN_E_CN_CLOSE not permitted DREF VLR subscr IMSI:901700000004620 usage decreases to: 1 - BSSAP Clear --RAN_GERAN_A--> MS +- SUBSCR_CONN_TIMEOUT has passed, conn is gone. + bssap_clear_sent == 1 +- BSS sends BSSMAP Clear Complete DREF IMSI:901700000004620: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED @@ -100,8 +103,6 @@ DREF freeing VLR subscr IMSI:901700000004620 DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated -- SUBSCR_CONN_TIMEOUT has passed, conn is gone. - bssap_clear_sent == 1 llist_count(&net->subscr_conns) == 0 lu_result_sent == 2 ===== test_ms_timeout_lu_auth_resp: SUCCESS @@ -241,6 +242,12 @@ DREF VLR subscr MSISDN:46071 usage increases to: 4 DREF VLR subscr MSISDN:46071 usage decreases to: 3 - BSSAP Clear --RAN_GERAN_A--> MS +DREF VLR subscr MSISDN:46071 usage decreases to: 2 +<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0 + bssap_clear_sent == 1 +- LU was successful, and the conn has already been closed + lu_result_sent == 1 +- BSS sends BSSMAP Clear Complete DREF MSISDN:46071: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED @@ -251,14 +258,9 @@ DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Freeing instance DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Deallocated DRLL MSISDN:46071: Freeing subscriber connection -DREF VLR subscr MSISDN:46071 usage decreases to: 2 +DREF VLR subscr MSISDN:46071 usage decreases to: 1 DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated -DREF VLR subscr MSISDN:46071 usage decreases to: 1 -<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0 - bssap_clear_sent == 1 -- LU was successful, and the conn has already been closed - lu_result_sent == 1 llist_count(&net->subscr_conns) == 0 --- - after a while, a new conn sends a CM Service Request. VLR responds with Auth Req, 2nd auth vector @@ -327,6 +329,9 @@ DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: Event SUBSCR_CONN_E_CN_CLOSE not permitted DREF VLR subscr MSISDN:46071 usage decreases to: 2 - BSSAP Clear --RAN_GERAN_A--> MS +- SUBSCR_CONN_TIMEOUT has passed, conn is gone. + bssap_clear_sent == 1 +- BSS sends BSSMAP Clear Complete DREF MSISDN:46071: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED @@ -343,8 +348,6 @@ DREF VLR subscr MSISDN:46071 usage decreases to: 1 DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated -- SUBSCR_CONN_TIMEOUT has passed, conn is gone. - bssap_clear_sent == 1 llist_count(&net->subscr_conns) == 0 cm_service_result_sent == 2 DREF freeing VLR subscr MSISDN:46071 @@ -444,6 +447,12 @@ DREF VLR subscr MSISDN:46071 usage increases to: 4 DREF VLR subscr MSISDN:46071 usage decreases to: 3 - BSSAP Clear --RAN_GERAN_A--> MS +DREF VLR subscr MSISDN:46071 usage decreases to: 2 +<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0 +- LU was successful, and the conn has already been closed + lu_result_sent == 1 + bssap_clear_sent == 1 +- BSS sends BSSMAP Clear Complete DREF MSISDN:46071: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED @@ -454,14 +463,9 @@ DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Freeing instance DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Deallocated DRLL MSISDN:46071: Freeing subscriber connection -DREF VLR subscr MSISDN:46071 usage decreases to: 2 +DREF VLR subscr MSISDN:46071 usage decreases to: 1 DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated -DREF VLR subscr MSISDN:46071 usage decreases to: 1 -<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0 -- LU was successful, and the conn has already been closed - lu_result_sent == 1 - bssap_clear_sent == 1 llist_count(&net->subscr_conns) == 0 --- - an SMS is sent, MS is paged @@ -533,16 +537,17 @@ DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASING DREF unknown: MSC conn use + release == 2 (0x101) - BSSAP Clear --RAN_GERAN_A--> MS -DREF unknown: MSC conn use - release == 1 (0x1) -DREF unknown: MSC conn use - compl_l3 == 0 (0x0) +DREF unknown: MSC conn use - compl_l3 == 1 (0x100) + bssap_clear_sent == 1 + paging_stopped == 1 +- BSS sends BSSMAP Clear Complete +DREF unknown: MSC conn use - release == 0 (0x0) DMM Subscr_Conn{SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn{SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DRLL Freeing subscriber connection with NULL subscriber DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Deallocated - bssap_clear_sent == 1 - paging_stopped == 1 llist_count(&net->subscr_conns) == 0 ===== test_ms_timeout_paging: SUCCESS diff --git a/tests/msc_vlr/msc_vlr_test_no_authen.c b/tests/msc_vlr/msc_vlr_test_no_authen.c index b20f9d7..cd61fa1 100644 --- a/tests/msc_vlr/msc_vlr_test_no_authen.c +++ b/tests/msc_vlr/msc_vlr_test_no_authen.c @@ -59,6 +59,8 @@ btw("LU was successful, and the conn has already been closed"); VERBOSE_ASSERT(lu_result_sent, == RES_ACCEPT, "%d"); VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); + + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); BTW("after a while, a new conn sends a CM Service Request"); @@ -78,6 +80,7 @@ VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); btw("all requests serviced, conn has been released"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); BTW("an SMS is sent, MS is paged"); @@ -150,6 +153,7 @@ VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); btw("SMS is done, conn is gone"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); BTW("subscriber detaches"); @@ -157,6 +161,7 @@ ms_sends_msg("050130089910070000006402"); VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); clear_vlr(); comment_end(); @@ -213,6 +218,7 @@ VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); btw("LU was successful, and the conn has already been closed"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); btw("Subscriber has the new TMSI"); @@ -239,6 +245,7 @@ VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); btw("all requests serviced, conn has been released"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); BTW("an SMS is sent, MS is paged using above TMSI"); @@ -311,6 +318,7 @@ VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); btw("SMS is done, conn is gone"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); /* TODO: when the subscriber detaches, the vlr_subscr gets @@ -362,6 +370,7 @@ VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); btw("LU was successful, and the conn has already been closed"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); btw("subscriber has the new TMSI"); @@ -377,6 +386,7 @@ ms_sends_msg("050130" "05f4" "07060504"); VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); clear_vlr(); comment_end(); @@ -432,6 +442,7 @@ btw("LU was successful, and the conn has already been closed"); VERBOSE_ASSERT(lu_result_sent, == RES_ACCEPT, "%d"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); btw("Subscriber has the IMEI"); @@ -445,6 +456,7 @@ ms_sends_msg("050130089910070000006402"); VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); clear_vlr(); comment_end(); @@ -508,6 +520,7 @@ btw("LU was successful, and the conn has already been closed"); VERBOSE_ASSERT(lu_result_sent, == RES_ACCEPT, "%d"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); btw("Subscriber has the IMEI and TMSI"); @@ -522,6 +535,7 @@ ms_sends_msg("050130089910070000006402"); VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); clear_vlr(); comment_end(); @@ -576,6 +590,7 @@ btw("LU was successful, and the conn has already been closed"); VERBOSE_ASSERT(lu_result_sent, == RES_ACCEPT, "%d"); VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); BTW("subscriber detaches"); @@ -583,6 +598,7 @@ ms_sends_msg("050130089910070000006402"); VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); clear_vlr(); comment_end(); @@ -648,6 +664,7 @@ btw("LU was successful, and the conn has already been closed"); VERBOSE_ASSERT(lu_result_sent, == RES_ACCEPT, "%d"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); btw("Subscriber has the IMEI"); @@ -661,6 +678,7 @@ ms_sends_msg("050130089910070000006402"); VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); clear_vlr(); comment_end(); @@ -729,6 +747,7 @@ VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); btw("LU was successful, and the conn has already been closed"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); @@ -784,6 +803,7 @@ VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); btw("LU was successful, and the conn has already been closed"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); btw("subscriber has the new TMSI"); @@ -799,6 +819,7 @@ ms_sends_msg("050130" "05f4" "07060504"); VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); clear_vlr(); comment_end(); @@ -874,6 +895,7 @@ btw("LU was successful, and the conn has already been closed"); VERBOSE_ASSERT(lu_result_sent, == RES_ACCEPT, "%d"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); btw("Subscriber has the IMEISV, IMEI and TMSI"); @@ -889,6 +911,7 @@ ms_sends_msg("050130089910070000006402"); VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); clear_vlr(); comment_end(); diff --git a/tests/msc_vlr/msc_vlr_test_no_authen.err b/tests/msc_vlr/msc_vlr_test_no_authen.err index 5cd2fa3..c71f04a 100644 --- a/tests/msc_vlr/msc_vlr_test_no_authen.err +++ b/tests/msc_vlr/msc_vlr_test_no_authen.err @@ -103,6 +103,12 @@ DREF VLR subscr MSISDN:46071 usage increases to: 4 DREF VLR subscr MSISDN:46071 usage decreases to: 3 - BSSAP Clear --RAN_GERAN_A--> MS +DREF VLR subscr MSISDN:46071 usage decreases to: 2 +<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0 +- LU was successful, and the conn has already been closed + lu_result_sent == 1 + bssap_clear_sent == 1 +- BSS sends BSSMAP Clear Complete DREF MSISDN:46071: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED @@ -113,14 +119,9 @@ DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Freeing instance DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Deallocated DRLL MSISDN:46071: Freeing subscriber connection -DREF VLR subscr MSISDN:46071 usage decreases to: 2 +DREF VLR subscr MSISDN:46071 usage decreases to: 1 DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated -DREF VLR subscr MSISDN:46071 usage decreases to: 1 -<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0 -- LU was successful, and the conn has already been closed - lu_result_sent == 1 - bssap_clear_sent == 1 llist_count(&net->subscr_conns) == 0 --- - after a while, a new conn sends a CM Service Request @@ -180,6 +181,10 @@ DREF VLR subscr MSISDN:46071 usage increases to: 3 DREF VLR subscr MSISDN:46071 usage decreases to: 2 - BSSAP Clear --RAN_GERAN_A--> MS + dtap_tx_confirmed == 1 + bssap_clear_sent == 1 +- all requests serviced, conn has been released +- BSS sends BSSMAP Clear Complete DREF MSISDN:46071: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED @@ -192,9 +197,6 @@ DREF VLR subscr MSISDN:46071 usage decreases to: 1 DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated - dtap_tx_confirmed == 1 - bssap_clear_sent == 1 -- all requests serviced, conn has been released llist_count(&net->subscr_conns) == 0 --- - an SMS is sent, MS is paged @@ -287,6 +289,10 @@ DREF VLR subscr MSISDN:46071 usage increases to: 3 DREF VLR subscr MSISDN:46071 usage decreases to: 2 - BSSAP Clear --RAN_GERAN_A--> MS + dtap_tx_confirmed == 1 + bssap_clear_sent == 1 +- SMS is done, conn is gone +- BSS sends BSSMAP Clear Complete DREF MSISDN:46071: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED @@ -299,9 +305,6 @@ DREF VLR subscr MSISDN:46071 usage decreases to: 1 DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated - dtap_tx_confirmed == 1 - bssap_clear_sent == 1 -- SMS is done, conn is gone llist_count(&net->subscr_conns) == 0 --- - subscriber detaches @@ -321,15 +324,16 @@ DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASING DREF unknown: MSC conn use + release == 2 (0x101) - BSSAP Clear --RAN_GERAN_A--> MS -DREF unknown: MSC conn use - release == 1 (0x1) -DREF unknown: MSC conn use - compl_l3 == 0 (0x0) +DREF unknown: MSC conn use - compl_l3 == 1 (0x100) + bssap_clear_sent == 1 +- BSS sends BSSMAP Clear Complete +DREF unknown: MSC conn use - release == 0 (0x0) DMM Subscr_Conn{SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn{SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DRLL Freeing subscriber connection with NULL subscriber DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Deallocated - bssap_clear_sent == 1 llist_count(&net->subscr_conns) == 0 ===== test_no_authen: SUCCESS @@ -469,8 +473,11 @@ DREF VLR subscr MSISDN:46071 usage increases to: 3 DREF VLR subscr MSISDN:46071 usage decreases to: 2 - BSSAP Clear --RAN_GERAN_A--> MS -DREF MSISDN:46071: MSC conn use - release == 1 (0x2) -DREF MSISDN:46071: MSC conn use - dtap == 0 (0x0) +DREF MSISDN:46071: MSC conn use - dtap == 1 (0x100) + bssap_clear_sent == 1 +- LU was successful, and the conn has already been closed +- BSS sends BSSMAP Clear Complete +DREF MSISDN:46071: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) @@ -483,8 +490,6 @@ DREF VLR subscr MSISDN:46071 usage decreases to: 1 DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated - bssap_clear_sent == 1 -- LU was successful, and the conn has already been closed llist_count(&net->subscr_conns) == 0 - Subscriber has the new TMSI DREF VLR subscr MSISDN:46071 usage increases to: 2 @@ -551,6 +556,9 @@ DREF VLR subscr MSISDN:46071 usage increases to: 3 DREF VLR subscr MSISDN:46071 usage decreases to: 2 - BSSAP Clear --RAN_GERAN_A--> MS + bssap_clear_sent == 1 +- all requests serviced, conn has been released +- BSS sends BSSMAP Clear Complete DREF MSISDN:46071: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(50462976){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(50462976){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED @@ -563,8 +571,6 @@ DREF VLR subscr MSISDN:46071 usage decreases to: 1 DMM Subscr_Conn(50462976){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(50462976){SUBSCR_CONN_S_RELEASED}: Deallocated - bssap_clear_sent == 1 -- all requests serviced, conn has been released llist_count(&net->subscr_conns) == 0 --- - an SMS is sent, MS is paged using above TMSI @@ -657,6 +663,10 @@ DREF VLR subscr MSISDN:46071 usage increases to: 3 DREF VLR subscr MSISDN:46071 usage decreases to: 2 - BSSAP Clear --RAN_GERAN_A--> MS + dtap_tx_confirmed == 1 + bssap_clear_sent == 1 +- SMS is done, conn is gone +- BSS sends BSSMAP Clear Complete DREF MSISDN:46071: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(50462976){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(50462976){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED @@ -669,9 +679,6 @@ DREF VLR subscr MSISDN:46071 usage decreases to: 1 DMM Subscr_Conn(50462976){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(50462976){SUBSCR_CONN_S_RELEASED}: Deallocated - dtap_tx_confirmed == 1 - bssap_clear_sent == 1 -- SMS is done, conn is gone llist_count(&net->subscr_conns) == 0 --- - subscriber sends LU Request, this time with the TMSI @@ -804,8 +811,11 @@ DREF VLR subscr MSISDN:46071 usage increases to: 3 DREF VLR subscr MSISDN:46071 usage decreases to: 2 - BSSAP Clear --RAN_GERAN_A--> MS -DREF MSISDN:46071: MSC conn use - release == 1 (0x2) -DREF MSISDN:46071: MSC conn use - dtap == 0 (0x0) +DREF MSISDN:46071: MSC conn use - dtap == 1 (0x100) + bssap_clear_sent == 1 +- LU was successful, and the conn has already been closed +- BSS sends BSSMAP Clear Complete +DREF MSISDN:46071: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(50462976){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(50462976){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn(50462976){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) @@ -818,8 +828,6 @@ DREF VLR subscr MSISDN:46071 usage decreases to: 1 DMM Subscr_Conn(50462976){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(50462976){SUBSCR_CONN_S_RELEASED}: Deallocated - bssap_clear_sent == 1 -- LU was successful, and the conn has already been closed llist_count(&net->subscr_conns) == 0 - subscriber has the new TMSI DREF VLR subscr MSISDN:46071 usage increases to: 2 @@ -846,15 +854,16 @@ DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASING DREF unknown: MSC conn use + release == 2 (0x101) - BSSAP Clear --RAN_GERAN_A--> MS -DREF unknown: MSC conn use - release == 1 (0x1) -DREF unknown: MSC conn use - compl_l3 == 0 (0x0) +DREF unknown: MSC conn use - compl_l3 == 1 (0x100) + bssap_clear_sent == 1 +- BSS sends BSSMAP Clear Complete +DREF unknown: MSC conn use - release == 0 (0x0) DMM Subscr_Conn{SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn{SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DRLL Freeing subscriber connection with NULL subscriber DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Deallocated - bssap_clear_sent == 1 llist_count(&net->subscr_conns) == 0 ===== test_no_authen_tmsi: SUCCESS @@ -992,8 +1001,12 @@ DREF VLR subscr MSISDN:46071 usage increases to: 3 DREF VLR subscr MSISDN:46071 usage decreases to: 2 - BSSAP Clear --RAN_GERAN_A--> MS -DREF MSISDN:46071: MSC conn use - release == 1 (0x2) -DREF MSISDN:46071: MSC conn use - dtap == 0 (0x0) +DREF MSISDN:46071: MSC conn use - dtap == 1 (0x100) + bssap_clear_sent == 1 +- LU was successful, and the conn has already been closed + lu_result_sent == 1 +- BSS sends BSSMAP Clear Complete +DREF MSISDN:46071: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) @@ -1006,9 +1019,6 @@ DREF VLR subscr MSISDN:46071 usage decreases to: 1 DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated - bssap_clear_sent == 1 -- LU was successful, and the conn has already been closed - lu_result_sent == 1 llist_count(&net->subscr_conns) == 0 - Subscriber has the IMEI DREF VLR subscr MSISDN:46071 usage increases to: 2 @@ -1032,15 +1042,16 @@ DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASING DREF unknown: MSC conn use + release == 2 (0x101) - BSSAP Clear --RAN_GERAN_A--> MS -DREF unknown: MSC conn use - release == 1 (0x1) -DREF unknown: MSC conn use - compl_l3 == 0 (0x0) +DREF unknown: MSC conn use - compl_l3 == 1 (0x100) + bssap_clear_sent == 1 +- BSS sends BSSMAP Clear Complete +DREF unknown: MSC conn use - release == 0 (0x0) DMM Subscr_Conn{SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn{SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DRLL Freeing subscriber connection with NULL subscriber DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Deallocated - bssap_clear_sent == 1 llist_count(&net->subscr_conns) == 0 ===== test_no_authen_imei: SUCCESS @@ -1203,8 +1214,12 @@ DREF VLR subscr MSISDN:46071 usage increases to: 3 DREF VLR subscr MSISDN:46071 usage decreases to: 2 - BSSAP Clear --RAN_GERAN_A--> MS -DREF MSISDN:46071: MSC conn use - release == 1 (0x2) -DREF MSISDN:46071: MSC conn use - dtap == 0 (0x0) +DREF MSISDN:46071: MSC conn use - dtap == 1 (0x100) + bssap_clear_sent == 1 +- LU was successful, and the conn has already been closed + lu_result_sent == 1 +- BSS sends BSSMAP Clear Complete +DREF MSISDN:46071: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) @@ -1217,9 +1232,6 @@ DREF VLR subscr MSISDN:46071 usage decreases to: 1 DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated - bssap_clear_sent == 1 -- LU was successful, and the conn has already been closed - lu_result_sent == 1 llist_count(&net->subscr_conns) == 0 - Subscriber has the IMEI and TMSI DREF VLR subscr MSISDN:46071 usage increases to: 2 @@ -1244,15 +1256,16 @@ DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASING DREF unknown: MSC conn use + release == 2 (0x101) - BSSAP Clear --RAN_GERAN_A--> MS -DREF unknown: MSC conn use - release == 1 (0x1) -DREF unknown: MSC conn use - compl_l3 == 0 (0x0) +DREF unknown: MSC conn use - compl_l3 == 1 (0x100) + bssap_clear_sent == 1 +- BSS sends BSSMAP Clear Complete +DREF unknown: MSC conn use - release == 0 (0x0) DMM Subscr_Conn{SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn{SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DRLL Freeing subscriber connection with NULL subscriber DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Deallocated - bssap_clear_sent == 1 llist_count(&net->subscr_conns) == 0 ===== test_no_authen_tmsi_imei: SUCCESS @@ -1379,6 +1392,12 @@ DREF VLR subscr MSISDN:46071 usage increases to: 4 DREF VLR subscr MSISDN:46071 usage decreases to: 3 - BSSAP Clear --RAN_GERAN_A--> MS +DREF VLR subscr MSISDN:46071 usage decreases to: 2 +<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0 +- LU was successful, and the conn has already been closed + lu_result_sent == 1 + bssap_clear_sent == 1 +- BSS sends BSSMAP Clear Complete DREF MSISDN:46071: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED @@ -1389,14 +1408,9 @@ DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Freeing instance DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Deallocated DRLL MSISDN:46071: Freeing subscriber connection -DREF VLR subscr MSISDN:46071 usage decreases to: 2 +DREF VLR subscr MSISDN:46071 usage decreases to: 1 DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated -DREF VLR subscr MSISDN:46071 usage decreases to: 1 -<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0 -- LU was successful, and the conn has already been closed - lu_result_sent == 1 - bssap_clear_sent == 1 llist_count(&net->subscr_conns) == 0 --- - subscriber detaches @@ -1416,15 +1430,16 @@ DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASING DREF unknown: MSC conn use + release == 2 (0x101) - BSSAP Clear --RAN_GERAN_A--> MS -DREF unknown: MSC conn use - release == 1 (0x1) -DREF unknown: MSC conn use - compl_l3 == 0 (0x0) +DREF unknown: MSC conn use - compl_l3 == 1 (0x100) + bssap_clear_sent == 1 +- BSS sends BSSMAP Clear Complete +DREF unknown: MSC conn use - release == 0 (0x0) DMM Subscr_Conn{SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn{SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DRLL Freeing subscriber connection with NULL subscriber DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Deallocated - bssap_clear_sent == 1 llist_count(&net->subscr_conns) == 0 ===== test_no_authen_imeisv: SUCCESS @@ -1580,8 +1595,12 @@ DREF VLR subscr MSISDN:46071 usage increases to: 3 DREF VLR subscr MSISDN:46071 usage decreases to: 2 - BSSAP Clear --RAN_GERAN_A--> MS -DREF MSISDN:46071: MSC conn use - release == 1 (0x2) -DREF MSISDN:46071: MSC conn use - dtap == 0 (0x0) +DREF MSISDN:46071: MSC conn use - dtap == 1 (0x100) + bssap_clear_sent == 1 +- LU was successful, and the conn has already been closed + lu_result_sent == 1 +- BSS sends BSSMAP Clear Complete +DREF MSISDN:46071: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) @@ -1594,9 +1613,6 @@ DREF VLR subscr MSISDN:46071 usage decreases to: 1 DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated - bssap_clear_sent == 1 -- LU was successful, and the conn has already been closed - lu_result_sent == 1 llist_count(&net->subscr_conns) == 0 - Subscriber has the IMEI DREF VLR subscr MSISDN:46071 usage increases to: 2 @@ -1620,15 +1636,16 @@ DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASING DREF unknown: MSC conn use + release == 2 (0x101) - BSSAP Clear --RAN_GERAN_A--> MS -DREF unknown: MSC conn use - release == 1 (0x1) -DREF unknown: MSC conn use - compl_l3 == 0 (0x0) +DREF unknown: MSC conn use - compl_l3 == 1 (0x100) + bssap_clear_sent == 1 +- BSS sends BSSMAP Clear Complete +DREF unknown: MSC conn use - release == 0 (0x0) DMM Subscr_Conn{SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn{SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DRLL Freeing subscriber connection with NULL subscriber DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Deallocated - bssap_clear_sent == 1 llist_count(&net->subscr_conns) == 0 ===== test_no_authen_imeisv_imei: SUCCESS @@ -1786,8 +1803,11 @@ DREF VLR subscr MSISDN:46071 usage increases to: 3 DREF VLR subscr MSISDN:46071 usage decreases to: 2 - BSSAP Clear --RAN_GERAN_A--> MS -DREF MSISDN:46071: MSC conn use - release == 1 (0x2) -DREF MSISDN:46071: MSC conn use - dtap == 0 (0x0) +DREF MSISDN:46071: MSC conn use - dtap == 1 (0x100) + bssap_clear_sent == 1 +- LU was successful, and the conn has already been closed +- BSS sends BSSMAP Clear Complete +DREF MSISDN:46071: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) @@ -1800,8 +1820,6 @@ DREF VLR subscr MSISDN:46071 usage decreases to: 1 DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated - bssap_clear_sent == 1 -- LU was successful, and the conn has already been closed llist_count(&net->subscr_conns) == 0 --- - subscriber sends LU Request, this time with the TMSI @@ -1952,8 +1970,11 @@ DREF VLR subscr MSISDN:46071 usage increases to: 3 DREF VLR subscr MSISDN:46071 usage decreases to: 2 - BSSAP Clear --RAN_GERAN_A--> MS -DREF MSISDN:46071: MSC conn use - release == 1 (0x2) -DREF MSISDN:46071: MSC conn use - dtap == 0 (0x0) +DREF MSISDN:46071: MSC conn use - dtap == 1 (0x100) + bssap_clear_sent == 1 +- LU was successful, and the conn has already been closed +- BSS sends BSSMAP Clear Complete +DREF MSISDN:46071: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) @@ -1966,8 +1987,6 @@ DREF VLR subscr MSISDN:46071 usage decreases to: 1 DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated - bssap_clear_sent == 1 -- LU was successful, and the conn has already been closed llist_count(&net->subscr_conns) == 0 - subscriber has the new TMSI DREF VLR subscr MSISDN:46071 usage increases to: 2 @@ -1994,15 +2013,16 @@ DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASING DREF unknown: MSC conn use + release == 2 (0x101) - BSSAP Clear --RAN_GERAN_A--> MS -DREF unknown: MSC conn use - release == 1 (0x1) -DREF unknown: MSC conn use - compl_l3 == 0 (0x0) +DREF unknown: MSC conn use - compl_l3 == 1 (0x100) + bssap_clear_sent == 1 +- BSS sends BSSMAP Clear Complete +DREF unknown: MSC conn use - release == 0 (0x0) DMM Subscr_Conn{SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn{SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DRLL Freeing subscriber connection with NULL subscriber DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Deallocated - bssap_clear_sent == 1 llist_count(&net->subscr_conns) == 0 ===== test_no_authen_imeisv_tmsi: SUCCESS @@ -2183,8 +2203,12 @@ DREF VLR subscr MSISDN:46071 usage increases to: 3 DREF VLR subscr MSISDN:46071 usage decreases to: 2 - BSSAP Clear --RAN_GERAN_A--> MS -DREF MSISDN:46071: MSC conn use - release == 1 (0x2) -DREF MSISDN:46071: MSC conn use - dtap == 0 (0x0) +DREF MSISDN:46071: MSC conn use - dtap == 1 (0x100) + bssap_clear_sent == 1 +- LU was successful, and the conn has already been closed + lu_result_sent == 1 +- BSS sends BSSMAP Clear Complete +DREF MSISDN:46071: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) @@ -2197,9 +2221,6 @@ DREF VLR subscr MSISDN:46071 usage decreases to: 1 DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated - bssap_clear_sent == 1 -- LU was successful, and the conn has already been closed - lu_result_sent == 1 llist_count(&net->subscr_conns) == 0 - Subscriber has the IMEISV, IMEI and TMSI DREF VLR subscr MSISDN:46071 usage increases to: 2 @@ -2225,15 +2246,16 @@ DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASING DREF unknown: MSC conn use + release == 2 (0x101) - BSSAP Clear --RAN_GERAN_A--> MS -DREF unknown: MSC conn use - release == 1 (0x1) -DREF unknown: MSC conn use - compl_l3 == 0 (0x0) +DREF unknown: MSC conn use - compl_l3 == 1 (0x100) + bssap_clear_sent == 1 +- BSS sends BSSMAP Clear Complete +DREF unknown: MSC conn use - release == 0 (0x0) DMM Subscr_Conn{SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn{SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DRLL Freeing subscriber connection with NULL subscriber DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Deallocated - bssap_clear_sent == 1 llist_count(&net->subscr_conns) == 0 ===== test_no_authen_imeisv_tmsi_imei: SUCCESS diff --git a/tests/msc_vlr/msc_vlr_test_reject_concurrency.c b/tests/msc_vlr/msc_vlr_test_reject_concurrency.c index ceab109..cf9d8c9 100644 --- a/tests/msc_vlr/msc_vlr_test_reject_concurrency.c +++ b/tests/msc_vlr/msc_vlr_test_reject_concurrency.c @@ -43,6 +43,7 @@ ms_sends_msg("050802008168000130089910070000006402"); VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); VERBOSE_ASSERT(lu_result_sent, == RES_REJECT, "%d"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(1); @@ -61,6 +62,7 @@ btw("LU was successful, and the conn has already been closed"); VERBOSE_ASSERT(lu_result_sent, == RES_ACCEPT, "%d"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); clear_vlr(); @@ -93,6 +95,7 @@ btw("LU was successful, and the conn has already been closed"); VERBOSE_ASSERT(lu_result_sent, == RES_ACCEPT, "%d"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); } @@ -182,8 +185,10 @@ expect_bssap_clear(); ms_sends_msg("890106020041020000"); VERBOSE_ASSERT(dtap_tx_confirmed, == true, "%d"); - if (expect_clear) + if (expect_clear) { VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); + bss_sends_clear_complete(); + } btw("SMS is done"); EXPECT_CONN_COUNT(expect_conn_count); @@ -265,6 +270,7 @@ expect_bssap_clear(); ms_sends_msg("050130089910070000006402"); VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); clear_vlr(); @@ -288,6 +294,7 @@ expect_bssap_clear(); ms_sends_msg("050130089910070000006402"); VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); clear_vlr(); @@ -313,6 +320,7 @@ VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); btw("all requests serviced, conn has been released"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); clear_vlr(); @@ -377,6 +385,7 @@ expect_bssap_clear(); ms_sends_msg("050130089910070000006402"); VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); clear_vlr(); diff --git a/tests/msc_vlr/msc_vlr_test_reject_concurrency.err b/tests/msc_vlr/msc_vlr_test_reject_concurrency.err index 7dca53f..0d9ef5b 100644 --- a/tests/msc_vlr/msc_vlr_test_reject_concurrency.err +++ b/tests/msc_vlr/msc_vlr_test_reject_concurrency.err @@ -59,10 +59,13 @@ DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASING DREF unknown: MSC conn use + release == 2 (0x101) - BSSAP Clear --RAN_GERAN_A--> MS -DREF unknown: MSC conn use - release == 1 (0x1) DREF VLR subscr IMSI:901700000004620 usage decreases to: 1 DRR 901700000004620: internal error during Location Updating attempt -DREF unknown: MSC conn use - compl_l3 == 0 (0x0) +DREF unknown: MSC conn use - compl_l3 == 1 (0x100) + bssap_clear_sent == 1 + lu_result_sent == 2 +- BSS sends BSSMAP Clear Complete +DREF unknown: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) @@ -74,8 +77,6 @@ DRLL Freeing subscriber connection with NULL subscriber DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated - bssap_clear_sent == 1 - lu_result_sent == 2 llist_count(&net->subscr_conns) == 1 --- - The first connection can still complete its LU @@ -133,6 +134,12 @@ DREF VLR subscr MSISDN:46071 usage increases to: 4 DREF VLR subscr MSISDN:46071 usage decreases to: 3 - BSSAP Clear --RAN_GERAN_A--> MS +DREF VLR subscr MSISDN:46071 usage decreases to: 2 +<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0 + bssap_clear_sent == 1 +- LU was successful, and the conn has already been closed + lu_result_sent == 1 +- BSS sends BSSMAP Clear Complete DREF MSISDN:46071: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED @@ -143,14 +150,9 @@ DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Freeing instance DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Deallocated DRLL MSISDN:46071: Freeing subscriber connection -DREF VLR subscr MSISDN:46071 usage decreases to: 2 +DREF VLR subscr MSISDN:46071 usage decreases to: 1 DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated -DREF VLR subscr MSISDN:46071 usage decreases to: 1 -<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0 - bssap_clear_sent == 1 -- LU was successful, and the conn has already been closed - lu_result_sent == 1 llist_count(&net->subscr_conns) == 0 DREF freeing VLR subscr MSISDN:46071 ===== test_reject_2nd_conn: SUCCESS @@ -262,6 +264,12 @@ DREF VLR subscr MSISDN:46071 usage increases to: 4 DREF VLR subscr MSISDN:46071 usage decreases to: 3 - BSSAP Clear --RAN_GERAN_A--> MS +DREF VLR subscr MSISDN:46071 usage decreases to: 2 +<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0 + bssap_clear_sent == 1 +- LU was successful, and the conn has already been closed + lu_result_sent == 1 +- BSS sends BSSMAP Clear Complete DREF MSISDN:46071: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED @@ -272,14 +280,9 @@ DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Freeing instance DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Deallocated DRLL MSISDN:46071: Freeing subscriber connection -DREF VLR subscr MSISDN:46071 usage decreases to: 2 +DREF VLR subscr MSISDN:46071 usage decreases to: 1 DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated -DREF VLR subscr MSISDN:46071 usage decreases to: 1 -<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0 - bssap_clear_sent == 1 -- LU was successful, and the conn has already been closed - lu_result_sent == 1 llist_count(&net->subscr_conns) == 0 DREF freeing VLR subscr MSISDN:46071 ===== test_reject_lu_during_lu: SUCCESS @@ -398,6 +401,12 @@ DREF VLR subscr MSISDN:46071 usage increases to: 4 DREF VLR subscr MSISDN:46071 usage decreases to: 3 - BSSAP Clear --RAN_GERAN_A--> MS +DREF VLR subscr MSISDN:46071 usage decreases to: 2 +<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0 + bssap_clear_sent == 1 +- LU was successful, and the conn has already been closed + lu_result_sent == 1 +- BSS sends BSSMAP Clear Complete DREF MSISDN:46071: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED @@ -408,14 +417,9 @@ DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Freeing instance DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Deallocated DRLL MSISDN:46071: Freeing subscriber connection -DREF VLR subscr MSISDN:46071 usage decreases to: 2 +DREF VLR subscr MSISDN:46071 usage decreases to: 1 DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated -DREF VLR subscr MSISDN:46071 usage decreases to: 1 -<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0 - bssap_clear_sent == 1 -- LU was successful, and the conn has already been closed - lu_result_sent == 1 llist_count(&net->subscr_conns) == 0 DREF freeing VLR subscr MSISDN:46071 ===== test_reject_cm_during_lu: SUCCESS @@ -527,6 +531,12 @@ DREF VLR subscr MSISDN:46071 usage increases to: 4 DREF VLR subscr MSISDN:46071 usage decreases to: 3 - BSSAP Clear --RAN_GERAN_A--> MS +DREF VLR subscr MSISDN:46071 usage decreases to: 2 +<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0 + bssap_clear_sent == 1 +- LU was successful, and the conn has already been closed + lu_result_sent == 1 +- BSS sends BSSMAP Clear Complete DREF MSISDN:46071: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED @@ -537,14 +547,9 @@ DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Freeing instance DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Deallocated DRLL MSISDN:46071: Freeing subscriber connection -DREF VLR subscr MSISDN:46071 usage decreases to: 2 +DREF VLR subscr MSISDN:46071 usage decreases to: 1 DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated -DREF VLR subscr MSISDN:46071 usage decreases to: 1 -<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0 - bssap_clear_sent == 1 -- LU was successful, and the conn has already been closed - lu_result_sent == 1 llist_count(&net->subscr_conns) == 0 DREF freeing VLR subscr MSISDN:46071 ===== test_reject_paging_resp_during_lu: SUCCESS @@ -645,6 +650,12 @@ DREF VLR subscr MSISDN:46071 usage increases to: 4 DREF VLR subscr MSISDN:46071 usage decreases to: 3 - BSSAP Clear --RAN_GERAN_A--> MS +DREF VLR subscr MSISDN:46071 usage decreases to: 2 +<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0 + bssap_clear_sent == 1 +- LU was successful, and the conn has already been closed + lu_result_sent == 1 +- BSS sends BSSMAP Clear Complete DREF MSISDN:46071: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED @@ -655,14 +666,9 @@ DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Freeing instance DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Deallocated DRLL MSISDN:46071: Freeing subscriber connection -DREF VLR subscr MSISDN:46071 usage decreases to: 2 +DREF VLR subscr MSISDN:46071 usage decreases to: 1 DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated -DREF VLR subscr MSISDN:46071 usage decreases to: 1 -<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0 - bssap_clear_sent == 1 -- LU was successful, and the conn has already been closed - lu_result_sent == 1 llist_count(&net->subscr_conns) == 0 --- - Subscriber does a normal CM Service Request @@ -727,11 +733,13 @@ DREF VLR subscr MSISDN:46071 usage increases to: 4 DREF VLR subscr MSISDN:46071 usage decreases to: 3 - BSSAP Clear --RAN_GERAN_A--> MS -DREF MSISDN:46071: MSC conn use - release == 1 (0x2) DREF VLR subscr MSISDN:46071 usage decreases to: 2 DREF VLR subscr MSISDN:46071 usage decreases to: 1 -DMM msc_subscr_conn_close(vsub=MSISDN:46071, cause=0): already in release, ignore. -DREF MSISDN:46071: MSC conn use - dtap == 0 (0x0) +DMM conn_close(vsub=MSISDN:46071, cause=0): already in release, ignore. +DREF MSISDN:46071: MSC conn use - dtap == 1 (0x100) + bssap_clear_sent == 1 +- BSS sends BSSMAP Clear Complete +DREF MSISDN:46071: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) @@ -740,7 +748,6 @@ DREF freeing VLR subscr MSISDN:46071 DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated - bssap_clear_sent == 1 llist_count(&net->subscr_conns) == 0 ===== test_reject_lu_during_cm: SUCCESS @@ -840,6 +847,12 @@ DREF VLR subscr MSISDN:46071 usage increases to: 4 DREF VLR subscr MSISDN:46071 usage decreases to: 3 - BSSAP Clear --RAN_GERAN_A--> MS +DREF VLR subscr MSISDN:46071 usage decreases to: 2 +<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0 + bssap_clear_sent == 1 +- LU was successful, and the conn has already been closed + lu_result_sent == 1 +- BSS sends BSSMAP Clear Complete DREF MSISDN:46071: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED @@ -850,14 +863,9 @@ DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Freeing instance DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Deallocated DRLL MSISDN:46071: Freeing subscriber connection -DREF VLR subscr MSISDN:46071 usage decreases to: 2 +DREF VLR subscr MSISDN:46071 usage decreases to: 1 DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated -DREF VLR subscr MSISDN:46071 usage decreases to: 1 -<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0 - bssap_clear_sent == 1 -- LU was successful, and the conn has already been closed - lu_result_sent == 1 llist_count(&net->subscr_conns) == 0 --- - Subscriber does a normal CM Service Request @@ -925,11 +933,13 @@ DREF VLR subscr MSISDN:46071 usage increases to: 4 DREF VLR subscr MSISDN:46071 usage decreases to: 3 - BSSAP Clear --RAN_GERAN_A--> MS -DREF MSISDN:46071: MSC conn use - release == 1 (0x2) DREF VLR subscr MSISDN:46071 usage decreases to: 2 DREF VLR subscr MSISDN:46071 usage decreases to: 1 -DMM msc_subscr_conn_close(vsub=MSISDN:46071, cause=0): already in release, ignore. -DREF MSISDN:46071: MSC conn use - dtap == 0 (0x0) +DMM conn_close(vsub=MSISDN:46071, cause=0): already in release, ignore. +DREF MSISDN:46071: MSC conn use - dtap == 1 (0x100) + bssap_clear_sent == 1 +- BSS sends BSSMAP Clear Complete +DREF MSISDN:46071: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) @@ -938,7 +948,6 @@ DREF freeing VLR subscr MSISDN:46071 DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated - bssap_clear_sent == 1 llist_count(&net->subscr_conns) == 0 ===== test_reject_cm_during_cm: SUCCESS @@ -1038,6 +1047,12 @@ DREF VLR subscr MSISDN:46071 usage increases to: 4 DREF VLR subscr MSISDN:46071 usage decreases to: 3 - BSSAP Clear --RAN_GERAN_A--> MS +DREF VLR subscr MSISDN:46071 usage decreases to: 2 +<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0 + bssap_clear_sent == 1 +- LU was successful, and the conn has already been closed + lu_result_sent == 1 +- BSS sends BSSMAP Clear Complete DREF MSISDN:46071: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED @@ -1048,14 +1063,9 @@ DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Freeing instance DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Deallocated DRLL MSISDN:46071: Freeing subscriber connection -DREF VLR subscr MSISDN:46071 usage decreases to: 2 +DREF VLR subscr MSISDN:46071 usage decreases to: 1 DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated -DREF VLR subscr MSISDN:46071 usage decreases to: 1 -<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0 - bssap_clear_sent == 1 -- LU was successful, and the conn has already been closed - lu_result_sent == 1 llist_count(&net->subscr_conns) == 0 --- - Subscriber does a normal CM Service Request @@ -1125,6 +1135,9 @@ DREF VLR subscr MSISDN:46071 usage increases to: 3 DREF VLR subscr MSISDN:46071 usage decreases to: 2 - BSSAP Clear --RAN_GERAN_A--> MS + bssap_clear_sent == 1 +- all requests serviced, conn has been released +- BSS sends BSSMAP Clear Complete DREF MSISDN:46071: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED @@ -1137,8 +1150,6 @@ DREF VLR subscr MSISDN:46071 usage decreases to: 1 DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated - bssap_clear_sent == 1 -- all requests serviced, conn has been released llist_count(&net->subscr_conns) == 0 DREF freeing VLR subscr MSISDN:46071 ===== test_reject_paging_resp_during_cm: SUCCESS @@ -1239,6 +1250,12 @@ DREF VLR subscr MSISDN:46071 usage increases to: 4 DREF VLR subscr MSISDN:46071 usage decreases to: 3 - BSSAP Clear --RAN_GERAN_A--> MS +DREF VLR subscr MSISDN:46071 usage decreases to: 2 +<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0 + bssap_clear_sent == 1 +- LU was successful, and the conn has already been closed + lu_result_sent == 1 +- BSS sends BSSMAP Clear Complete DREF MSISDN:46071: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED @@ -1249,14 +1266,9 @@ DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Freeing instance DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Deallocated DRLL MSISDN:46071: Freeing subscriber connection -DREF VLR subscr MSISDN:46071 usage decreases to: 2 +DREF VLR subscr MSISDN:46071 usage decreases to: 1 DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated -DREF VLR subscr MSISDN:46071 usage decreases to: 1 -<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0 - bssap_clear_sent == 1 -- LU was successful, and the conn has already been closed - lu_result_sent == 1 llist_count(&net->subscr_conns) == 0 --- - an SMS is sent, MS is paged @@ -1350,6 +1362,9 @@ DREF VLR subscr MSISDN:46071 usage increases to: 3 DREF VLR subscr MSISDN:46071 usage decreases to: 2 - BSSAP Clear --RAN_GERAN_A--> MS + dtap_tx_confirmed == 1 + bssap_clear_sent == 1 +- BSS sends BSSMAP Clear Complete DREF MSISDN:46071: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED @@ -1362,8 +1377,6 @@ DREF VLR subscr MSISDN:46071 usage decreases to: 1 DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated - dtap_tx_confirmed == 1 - bssap_clear_sent == 1 - SMS is done llist_count(&net->subscr_conns) == 0 DREF freeing VLR subscr MSISDN:46071 @@ -1465,6 +1478,12 @@ DREF VLR subscr MSISDN:46071 usage increases to: 4 DREF VLR subscr MSISDN:46071 usage decreases to: 3 - BSSAP Clear --RAN_GERAN_A--> MS +DREF VLR subscr MSISDN:46071 usage decreases to: 2 +<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0 + bssap_clear_sent == 1 +- LU was successful, and the conn has already been closed + lu_result_sent == 1 +- BSS sends BSSMAP Clear Complete DREF MSISDN:46071: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED @@ -1475,14 +1494,9 @@ DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Freeing instance DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Deallocated DRLL MSISDN:46071: Freeing subscriber connection -DREF VLR subscr MSISDN:46071 usage decreases to: 2 +DREF VLR subscr MSISDN:46071 usage decreases to: 1 DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated -DREF VLR subscr MSISDN:46071 usage decreases to: 1 -<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0 - bssap_clear_sent == 1 -- LU was successful, and the conn has already been closed - lu_result_sent == 1 llist_count(&net->subscr_conns) == 0 --- - an SMS is sent, MS is paged @@ -1597,11 +1611,13 @@ DREF VLR subscr MSISDN:46071 usage increases to: 4 DREF VLR subscr MSISDN:46071 usage decreases to: 3 - BSSAP Clear --RAN_GERAN_A--> MS -DREF MSISDN:46071: MSC conn use - release == 1 (0x2) DREF VLR subscr MSISDN:46071 usage decreases to: 2 DREF VLR subscr MSISDN:46071 usage decreases to: 1 -DMM msc_subscr_conn_close(vsub=MSISDN:46071, cause=0): already in release, ignore. -DREF MSISDN:46071: MSC conn use - dtap == 0 (0x0) +DMM conn_close(vsub=MSISDN:46071, cause=0): already in release, ignore. +DREF MSISDN:46071: MSC conn use - dtap == 1 (0x100) + bssap_clear_sent == 1 +- BSS sends BSSMAP Clear Complete +DREF MSISDN:46071: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) @@ -1610,7 +1626,6 @@ DREF freeing VLR subscr MSISDN:46071 DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated - bssap_clear_sent == 1 llist_count(&net->subscr_conns) == 0 ===== test_accept_cm_during_paging_resp: SUCCESS @@ -1710,6 +1725,12 @@ DREF VLR subscr MSISDN:46071 usage increases to: 4 DREF VLR subscr MSISDN:46071 usage decreases to: 3 - BSSAP Clear --RAN_GERAN_A--> MS +DREF VLR subscr MSISDN:46071 usage decreases to: 2 +<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0 + bssap_clear_sent == 1 +- LU was successful, and the conn has already been closed + lu_result_sent == 1 +- BSS sends BSSMAP Clear Complete DREF MSISDN:46071: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED @@ -1720,14 +1741,9 @@ DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Freeing instance DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Deallocated DRLL MSISDN:46071: Freeing subscriber connection -DREF VLR subscr MSISDN:46071 usage decreases to: 2 +DREF VLR subscr MSISDN:46071 usage decreases to: 1 DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated -DREF VLR subscr MSISDN:46071 usage decreases to: 1 -<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0 - bssap_clear_sent == 1 -- LU was successful, and the conn has already been closed - lu_result_sent == 1 llist_count(&net->subscr_conns) == 0 --- - an SMS is sent, MS is paged @@ -1819,6 +1835,9 @@ DREF VLR subscr MSISDN:46071 usage increases to: 3 DREF VLR subscr MSISDN:46071 usage decreases to: 2 - BSSAP Clear --RAN_GERAN_A--> MS + dtap_tx_confirmed == 1 + bssap_clear_sent == 1 +- BSS sends BSSMAP Clear Complete DREF MSISDN:46071: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED @@ -1831,8 +1850,6 @@ DREF VLR subscr MSISDN:46071 usage decreases to: 1 DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated - dtap_tx_confirmed == 1 - bssap_clear_sent == 1 - SMS is done llist_count(&net->subscr_conns) == 0 DREF freeing VLR subscr MSISDN:46071 diff --git a/tests/msc_vlr/msc_vlr_test_rest.c b/tests/msc_vlr/msc_vlr_test_rest.c index 0233047..aef1df5 100644 --- a/tests/msc_vlr/msc_vlr_test_rest.c +++ b/tests/msc_vlr/msc_vlr_test_rest.c @@ -55,6 +55,7 @@ expect_bssap_clear(); osmo_fsm_inst_dispatch(g_conn->fi, SUBSCR_CONN_E_CN_CLOSE, NULL); VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); clear_vlr(); @@ -71,6 +72,7 @@ VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); btw("conn was released"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); clear_vlr(); @@ -107,6 +109,7 @@ btw("LU was successful, and the conn has already been closed"); VERBOSE_ASSERT(lu_result_sent, == RES_ACCEPT, "%d"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); @@ -137,6 +140,7 @@ btw("LU was successful, and the conn has already been closed"); VERBOSE_ASSERT(lu_result_sent, == RES_ACCEPT, "%d"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); BTW("subscriber detaches"); @@ -144,6 +148,7 @@ ms_sends_msg("050130089910070000006402"); VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); clear_vlr(); comment_end(); @@ -185,6 +190,7 @@ btw("LU was successful, and the conn has already been closed"); VERBOSE_ASSERT(lu_result_sent, == RES_ACCEPT, "%d"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); clear_vlr(); comment_end(); diff --git a/tests/msc_vlr/msc_vlr_test_rest.err b/tests/msc_vlr/msc_vlr_test_rest.err index 2f09760..683e914 100644 --- a/tests/msc_vlr/msc_vlr_test_rest.err +++ b/tests/msc_vlr/msc_vlr_test_rest.err @@ -31,6 +31,8 @@ DREF VLR subscr unknown usage increases to: 2 DREF VLR subscr unknown usage decreases to: 1 - BSSAP Clear --RAN_GERAN_A--> MS + bssap_clear_sent == 1 +- BSS sends BSSMAP Clear Complete DREF unknown: MSC conn use - release == 0 (0x0) DMM Subscr_Conn{SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn{SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED @@ -42,7 +44,6 @@ DREF freeing VLR subscr unknown DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Deallocated - bssap_clear_sent == 1 llist_count(&net->subscr_conns) == 0 ===== test_early_stage: SUCCESS @@ -70,10 +71,13 @@ DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASING DREF unknown: MSC conn use + release == 2 (0x101) - BSSAP Clear --RAN_GERAN_A--> MS -DREF unknown: MSC conn use - release == 1 (0x1) DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_COMPLETE_LAYER_3 DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: Event SUBSCR_CONN_E_COMPLETE_LAYER_3 not permitted -DREF unknown: MSC conn use - compl_l3 == 0 (0x0) +DREF unknown: MSC conn use - compl_l3 == 1 (0x100) + bssap_clear_sent == 1 +- conn was released +- BSS sends BSSMAP Clear Complete +DREF unknown: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) @@ -84,8 +88,6 @@ DRLL Freeing subscriber connection with NULL subscriber DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated - bssap_clear_sent == 1 -- conn was released llist_count(&net->subscr_conns) == 0 ===== test_cm_service_without_lu: SUCCESS @@ -194,6 +196,12 @@ DREF VLR subscr MSISDN:46071 usage increases to: 4 DREF VLR subscr MSISDN:46071 usage decreases to: 3 - BSSAP Clear --RAN_GERAN_A--> MS +DREF VLR subscr MSISDN:46071 usage decreases to: 2 +<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0 + bssap_clear_sent == 1 +- LU was successful, and the conn has already been closed + lu_result_sent == 1 +- BSS sends BSSMAP Clear Complete DREF MSISDN:46071: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED @@ -204,14 +212,9 @@ DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Freeing instance DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Deallocated DRLL MSISDN:46071: Freeing subscriber connection -DREF VLR subscr MSISDN:46071 usage decreases to: 2 +DREF VLR subscr MSISDN:46071 usage decreases to: 1 DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated -DREF VLR subscr MSISDN:46071 usage decreases to: 1 -<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0 - bssap_clear_sent == 1 -- LU was successful, and the conn has already been closed - lu_result_sent == 1 llist_count(&net->subscr_conns) == 0 --- - verify that the MS can send another LU request @@ -313,6 +316,12 @@ DREF VLR subscr MSISDN:46071 usage increases to: 4 DREF VLR subscr MSISDN:46071 usage decreases to: 3 - BSSAP Clear --RAN_GERAN_A--> MS +DREF VLR subscr MSISDN:46071 usage decreases to: 2 +<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0 + bssap_clear_sent == 1 +- LU was successful, and the conn has already been closed + lu_result_sent == 1 +- BSS sends BSSMAP Clear Complete DREF MSISDN:46071: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED @@ -323,14 +332,9 @@ DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Freeing instance DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Deallocated DRLL MSISDN:46071: Freeing subscriber connection -DREF VLR subscr MSISDN:46071 usage decreases to: 2 +DREF VLR subscr MSISDN:46071 usage decreases to: 1 DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated -DREF VLR subscr MSISDN:46071 usage decreases to: 1 -<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0 - bssap_clear_sent == 1 -- LU was successful, and the conn has already been closed - lu_result_sent == 1 llist_count(&net->subscr_conns) == 0 --- - subscriber detaches @@ -350,15 +354,16 @@ DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASING DREF unknown: MSC conn use + release == 2 (0x101) - BSSAP Clear --RAN_GERAN_A--> MS -DREF unknown: MSC conn use - release == 1 (0x1) -DREF unknown: MSC conn use - compl_l3 == 0 (0x0) +DREF unknown: MSC conn use - compl_l3 == 1 (0x100) + bssap_clear_sent == 1 +- BSS sends BSSMAP Clear Complete +DREF unknown: MSC conn use - release == 0 (0x0) DMM Subscr_Conn{SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn{SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DRLL Freeing subscriber connection with NULL subscriber DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Deallocated - bssap_clear_sent == 1 llist_count(&net->subscr_conns) == 0 ===== test_two_lu: SUCCESS @@ -493,6 +498,12 @@ DREF VLR subscr MSISDN:46071 usage increases to: 4 DREF VLR subscr MSISDN:46071 usage decreases to: 3 - BSSAP Clear --RAN_GERAN_A--> MS +DREF VLR subscr MSISDN:46071 usage decreases to: 2 +<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0 + bssap_clear_sent == 1 +- LU was successful, and the conn has already been closed + lu_result_sent == 1 +- BSS sends BSSMAP Clear Complete DREF MSISDN:46071: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(591536962){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(591536962){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED @@ -503,14 +514,9 @@ DVLR vlr_lu_fsm(591536962){VLR_ULA_S_DONE}: Freeing instance DVLR vlr_lu_fsm(591536962){VLR_ULA_S_DONE}: Deallocated DRLL MSISDN:46071: Freeing subscriber connection -DREF VLR subscr MSISDN:46071 usage decreases to: 2 +DREF VLR subscr MSISDN:46071 usage decreases to: 1 DMM Subscr_Conn(591536962){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(591536962){SUBSCR_CONN_S_RELEASED}: Deallocated -DREF VLR subscr MSISDN:46071 usage decreases to: 1 -<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0 - bssap_clear_sent == 1 -- LU was successful, and the conn has already been closed - lu_result_sent == 1 llist_count(&net->subscr_conns) == 0 DREF freeing VLR subscr MSISDN:46071 ===== test_lu_unknown_tmsi: SUCCESS diff --git a/tests/msc_vlr/msc_vlr_test_umts_authen.c b/tests/msc_vlr/msc_vlr_test_umts_authen.c index 7b410df..42d406c 100644 --- a/tests/msc_vlr/msc_vlr_test_umts_authen.c +++ b/tests/msc_vlr/msc_vlr_test_umts_authen.c @@ -23,19 +23,6 @@ #include "msc_vlr_tests.h" -#define ASSERT_RELEASE_CLEAR(via_ran) \ - switch (via_ran) { \ - case RAN_GERAN_A: \ - VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); \ - break; \ - case RAN_UTRAN_IU: \ - VERBOSE_ASSERT(iu_release_sent, == true, "%d"); \ - break; \ - default: \ - OSMO_ASSERT(false); \ - break; \ - } - static void _test_umts_authen(enum ran_type via_ran) { struct vlr_subscr *vsub; @@ -183,6 +170,7 @@ expect_release_clear(via_ran); ms_sends_msg("055b"); ASSERT_RELEASE_CLEAR(via_ran); + bss_rnc_sends_release_clear_complete(via_ran); btw("LU was successful, and the conn has already been closed"); EXPECT_CONN_COUNT(0); @@ -229,6 +217,7 @@ ms_sends_msg("0b3b1c15a11302010002013b300b04010f0406aa510c061b017f0100"); OSMO_ASSERT(dtap_tx_confirmed); ASSERT_RELEASE_CLEAR(via_ran); + bss_rnc_sends_release_clear_complete(via_ran); btw("all requests serviced, conn has been released"); EXPECT_CONN_COUNT(0); @@ -308,6 +297,7 @@ ms_sends_msg("890106020041020000"); VERBOSE_ASSERT(dtap_tx_confirmed, == true, "%d"); ASSERT_RELEASE_CLEAR(via_ran); + bss_rnc_sends_release_clear_complete(via_ran); btw("SMS is done, conn is gone"); EXPECT_CONN_COUNT(0); @@ -317,6 +307,7 @@ ms_sends_msg("050130" "089910070000106005" /* IMSI */); ASSERT_RELEASE_CLEAR(via_ran); + bss_rnc_sends_release_clear_complete(via_ran); EXPECT_CONN_COUNT(0); clear_vlr(); @@ -551,6 +542,7 @@ expect_release_clear(via_ran); ms_sends_msg("055b"); ASSERT_RELEASE_CLEAR(via_ran); + bss_rnc_sends_release_clear_complete(via_ran); btw("LU was successful, and the conn has already been closed"); EXPECT_CONN_COUNT(0); @@ -652,6 +644,7 @@ ms_sends_msg("0554" "e229c19e" "2103" "791f2e" /* nipped one byte */); VERBOSE_ASSERT(lu_result_sent, == RES_REJECT, "%d"); ASSERT_RELEASE_CLEAR(via_ran); + bss_rnc_sends_release_clear_complete(via_ran); EXPECT_CONN_COUNT(0); clear_vlr(); @@ -751,6 +744,7 @@ ms_sends_msg("0554" "e229c19e" "2105" "791f2e4123" /* added one byte */); VERBOSE_ASSERT(lu_result_sent, == RES_REJECT, "%d"); ASSERT_RELEASE_CLEAR(via_ran); + bss_rnc_sends_release_clear_complete(via_ran); EXPECT_CONN_COUNT(0); clear_vlr(); @@ -855,6 +849,7 @@ ms_sends_msg("0554" "e229c19e" /* Only the SRES half of the RES */); VERBOSE_ASSERT(lu_result_sent, == RES_REJECT, "%d"); ASSERT_RELEASE_CLEAR(via_ran); + bss_rnc_sends_release_clear_complete(via_ran); EXPECT_CONN_COUNT(0); clear_vlr(); diff --git a/tests/msc_vlr/msc_vlr_test_umts_authen.err b/tests/msc_vlr/msc_vlr_test_umts_authen.err index 9e0186e..fe687a1 100644 --- a/tests/msc_vlr/msc_vlr_test_umts_authen.err +++ b/tests/msc_vlr/msc_vlr_test_umts_authen.err @@ -165,8 +165,10 @@ DREF VLR subscr MSISDN:42342 usage increases to: 3 DREF VLR subscr MSISDN:42342 usage decreases to: 2 - BSSAP Clear --RAN_GERAN_A--> MS -DREF MSISDN:42342: MSC conn use - release == 1 (0x2) -DREF MSISDN:42342: MSC conn use - dtap == 0 (0x0) +DREF MSISDN:42342: MSC conn use - dtap == 1 (0x100) + bssap_clear_sent == 1 +- BSS sends BSSMAP Clear Complete +DREF MSISDN:42342: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) @@ -179,7 +181,6 @@ DREF VLR subscr MSISDN:42342 usage decreases to: 1 DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Deallocated - bssap_clear_sent == 1 - LU was successful, and the conn has already been closed llist_count(&net->subscr_conns) == 0 --- @@ -281,6 +282,8 @@ DREF VLR subscr MSISDN:42342 usage increases to: 3 DREF VLR subscr MSISDN:42342 usage decreases to: 2 - BSSAP Clear --RAN_GERAN_A--> MS + bssap_clear_sent == 1 +- BSS sends BSSMAP Clear Complete DREF MSISDN:42342: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED @@ -293,7 +296,6 @@ DREF VLR subscr MSISDN:42342 usage decreases to: 1 DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Deallocated - bssap_clear_sent == 1 - all requests serviced, conn has been released llist_count(&net->subscr_conns) == 0 --- @@ -428,6 +430,9 @@ DREF VLR subscr MSISDN:42342 usage increases to: 3 DREF VLR subscr MSISDN:42342 usage decreases to: 2 - BSSAP Clear --RAN_GERAN_A--> MS + dtap_tx_confirmed == 1 + bssap_clear_sent == 1 +- BSS sends BSSMAP Clear Complete DREF MSISDN:42342: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED @@ -440,8 +445,6 @@ DREF VLR subscr MSISDN:42342 usage decreases to: 1 DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Deallocated - dtap_tx_confirmed == 1 - bssap_clear_sent == 1 - SMS is done, conn is gone llist_count(&net->subscr_conns) == 0 --- @@ -462,15 +465,16 @@ DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASING DREF unknown: MSC conn use + release == 2 (0x101) - BSSAP Clear --RAN_GERAN_A--> MS -DREF unknown: MSC conn use - release == 1 (0x1) -DREF unknown: MSC conn use - compl_l3 == 0 (0x0) +DREF unknown: MSC conn use - compl_l3 == 1 (0x100) + bssap_clear_sent == 1 +- BSS sends BSSMAP Clear Complete +DREF unknown: MSC conn use - release == 0 (0x0) DMM Subscr_Conn{SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn{SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DRLL Freeing subscriber connection with NULL subscriber DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Deallocated - bssap_clear_sent == 1 llist_count(&net->subscr_conns) == 0 ===== test_umts_authen_geran: SUCCESS @@ -653,8 +657,10 @@ DREF VLR subscr MSISDN:42342 usage increases to: 3 DREF VLR subscr MSISDN:42342 usage decreases to: 2 - Iu Release --RAN_UTRAN_IU--> MS -DREF MSISDN:42342: MSC conn use - release == 1 (0x2) -DREF MSISDN:42342: MSC conn use - dtap == 0 (0x0) +DREF MSISDN:42342: MSC conn use - dtap == 1 (0x100) + iu_release_sent == 1 +- RNC sends Iu Release Complete +DREF MSISDN:42342: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) @@ -667,7 +673,6 @@ DREF VLR subscr MSISDN:42342 usage decreases to: 1 DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Deallocated - iu_release_sent == 1 - LU was successful, and the conn has already been closed llist_count(&net->subscr_conns) == 0 --- @@ -782,6 +787,8 @@ DREF VLR subscr MSISDN:42342 usage increases to: 3 DREF VLR subscr MSISDN:42342 usage decreases to: 2 - Iu Release --RAN_UTRAN_IU--> MS + iu_release_sent == 1 +- RNC sends Iu Release Complete DREF MSISDN:42342: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED @@ -794,7 +801,6 @@ DREF VLR subscr MSISDN:42342 usage decreases to: 1 DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Deallocated - iu_release_sent == 1 - all requests serviced, conn has been released llist_count(&net->subscr_conns) == 0 --- @@ -942,6 +948,9 @@ DREF VLR subscr MSISDN:42342 usage increases to: 3 DREF VLR subscr MSISDN:42342 usage decreases to: 2 - Iu Release --RAN_UTRAN_IU--> MS + dtap_tx_confirmed == 1 + iu_release_sent == 1 +- RNC sends Iu Release Complete DREF MSISDN:42342: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED @@ -954,8 +963,6 @@ DREF VLR subscr MSISDN:42342 usage decreases to: 1 DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Deallocated - dtap_tx_confirmed == 1 - iu_release_sent == 1 - SMS is done, conn is gone llist_count(&net->subscr_conns) == 0 --- @@ -976,15 +983,16 @@ DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASING DREF unknown: MSC conn use + release == 2 (0x101) - Iu Release --RAN_UTRAN_IU--> MS -DREF unknown: MSC conn use - release == 1 (0x1) -DREF unknown: MSC conn use - compl_l3 == 0 (0x0) +DREF unknown: MSC conn use - compl_l3 == 1 (0x100) + iu_release_sent == 1 +- RNC sends Iu Release Complete +DREF unknown: MSC conn use - release == 0 (0x0) DMM Subscr_Conn{SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn{SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DRLL Freeing subscriber connection with NULL subscriber DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Deallocated - iu_release_sent == 1 llist_count(&net->subscr_conns) == 0 ===== test_umts_authen_utran: SUCCESS @@ -1186,8 +1194,10 @@ DREF VLR subscr MSISDN:42342 usage increases to: 3 DREF VLR subscr MSISDN:42342 usage decreases to: 2 - BSSAP Clear --RAN_GERAN_A--> MS -DREF MSISDN:42342: MSC conn use - release == 1 (0x2) -DREF MSISDN:42342: MSC conn use - dtap == 0 (0x0) +DREF MSISDN:42342: MSC conn use - dtap == 1 (0x100) + bssap_clear_sent == 1 +- BSS sends BSSMAP Clear Complete +DREF MSISDN:42342: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) @@ -1200,7 +1210,6 @@ DREF VLR subscr MSISDN:42342 usage decreases to: 1 DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Deallocated - bssap_clear_sent == 1 - LU was successful, and the conn has already been closed llist_count(&net->subscr_conns) == 0 DREF freeing VLR subscr MSISDN:42342 @@ -1416,8 +1425,10 @@ DREF VLR subscr MSISDN:42342 usage increases to: 3 DREF VLR subscr MSISDN:42342 usage decreases to: 2 - Iu Release --RAN_UTRAN_IU--> MS -DREF MSISDN:42342: MSC conn use - release == 1 (0x2) -DREF MSISDN:42342: MSC conn use - dtap == 0 (0x0) +DREF MSISDN:42342: MSC conn use - dtap == 1 (0x100) + iu_release_sent == 1 +- RNC sends Iu Release Complete +DREF MSISDN:42342: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) @@ -1430,7 +1441,6 @@ DREF VLR subscr MSISDN:42342 usage decreases to: 1 DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Deallocated - iu_release_sent == 1 - LU was successful, and the conn has already been closed llist_count(&net->subscr_conns) == 0 DREF freeing VLR subscr MSISDN:42342 @@ -1513,8 +1523,11 @@ DREF VLR subscr IMSI:901700000010650 usage increases to: 2 DREF VLR subscr IMSI:901700000010650 usage decreases to: 1 - BSSAP Clear --RAN_GERAN_A--> MS -DREF IMSI:901700000010650: MSC conn use - release == 1 (0x2) -DREF IMSI:901700000010650: MSC conn use - dtap == 0 (0x0) +DREF IMSI:901700000010650: MSC conn use - dtap == 1 (0x100) + lu_result_sent == 2 + bssap_clear_sent == 1 +- BSS sends BSSMAP Clear Complete +DREF IMSI:901700000010650: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) @@ -1528,8 +1541,6 @@ DREF freeing VLR subscr IMSI:901700000010650 DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Deallocated - lu_result_sent == 2 - bssap_clear_sent == 1 llist_count(&net->subscr_conns) == 0 ===== test_umts_authen_too_short_res_geran: SUCCESS @@ -1610,8 +1621,11 @@ DREF VLR subscr IMSI:901700000010650 usage increases to: 2 DREF VLR subscr IMSI:901700000010650 usage decreases to: 1 - Iu Release --RAN_UTRAN_IU--> MS -DREF IMSI:901700000010650: MSC conn use - release == 1 (0x2) -DREF IMSI:901700000010650: MSC conn use - dtap == 0 (0x0) +DREF IMSI:901700000010650: MSC conn use - dtap == 1 (0x100) + lu_result_sent == 2 + iu_release_sent == 1 +- RNC sends Iu Release Complete +DREF IMSI:901700000010650: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) @@ -1625,8 +1639,6 @@ DREF freeing VLR subscr IMSI:901700000010650 DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Deallocated - lu_result_sent == 2 - iu_release_sent == 1 llist_count(&net->subscr_conns) == 0 ===== test_umts_authen_too_short_res_utran: SUCCESS @@ -1707,8 +1719,11 @@ DREF VLR subscr IMSI:901700000010650 usage increases to: 2 DREF VLR subscr IMSI:901700000010650 usage decreases to: 1 - BSSAP Clear --RAN_GERAN_A--> MS -DREF IMSI:901700000010650: MSC conn use - release == 1 (0x2) -DREF IMSI:901700000010650: MSC conn use - dtap == 0 (0x0) +DREF IMSI:901700000010650: MSC conn use - dtap == 1 (0x100) + lu_result_sent == 2 + bssap_clear_sent == 1 +- BSS sends BSSMAP Clear Complete +DREF IMSI:901700000010650: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) @@ -1722,8 +1737,6 @@ DREF freeing VLR subscr IMSI:901700000010650 DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Deallocated - lu_result_sent == 2 - bssap_clear_sent == 1 llist_count(&net->subscr_conns) == 0 ===== test_umts_authen_too_long_res_geran: SUCCESS @@ -1804,8 +1817,11 @@ DREF VLR subscr IMSI:901700000010650 usage increases to: 2 DREF VLR subscr IMSI:901700000010650 usage decreases to: 1 - Iu Release --RAN_UTRAN_IU--> MS -DREF IMSI:901700000010650: MSC conn use - release == 1 (0x2) -DREF IMSI:901700000010650: MSC conn use - dtap == 0 (0x0) +DREF IMSI:901700000010650: MSC conn use - dtap == 1 (0x100) + lu_result_sent == 2 + iu_release_sent == 1 +- RNC sends Iu Release Complete +DREF IMSI:901700000010650: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) @@ -1819,8 +1835,6 @@ DREF freeing VLR subscr IMSI:901700000010650 DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Deallocated - lu_result_sent == 2 - iu_release_sent == 1 llist_count(&net->subscr_conns) == 0 ===== test_umts_authen_too_long_res_utran: SUCCESS @@ -1901,8 +1915,11 @@ DREF VLR subscr IMSI:901700000010650 usage increases to: 2 DREF VLR subscr IMSI:901700000010650 usage decreases to: 1 - BSSAP Clear --RAN_GERAN_A--> MS -DREF IMSI:901700000010650: MSC conn use - release == 1 (0x2) -DREF IMSI:901700000010650: MSC conn use - dtap == 0 (0x0) +DREF IMSI:901700000010650: MSC conn use - dtap == 1 (0x100) + lu_result_sent == 2 + bssap_clear_sent == 1 +- BSS sends BSSMAP Clear Complete +DREF IMSI:901700000010650: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) @@ -1916,8 +1933,6 @@ DREF freeing VLR subscr IMSI:901700000010650 DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Deallocated - lu_result_sent == 2 - bssap_clear_sent == 1 llist_count(&net->subscr_conns) == 0 ===== test_umts_authen_only_sres_geran: SUCCESS @@ -1998,8 +2013,11 @@ DREF VLR subscr IMSI:901700000010650 usage increases to: 2 DREF VLR subscr IMSI:901700000010650 usage decreases to: 1 - Iu Release --RAN_UTRAN_IU--> MS -DREF IMSI:901700000010650: MSC conn use - release == 1 (0x2) -DREF IMSI:901700000010650: MSC conn use - dtap == 0 (0x0) +DREF IMSI:901700000010650: MSC conn use - dtap == 1 (0x100) + lu_result_sent == 2 + iu_release_sent == 1 +- RNC sends Iu Release Complete +DREF IMSI:901700000010650: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) @@ -2013,8 +2031,6 @@ DREF freeing VLR subscr IMSI:901700000010650 DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Deallocated - lu_result_sent == 2 - iu_release_sent == 1 llist_count(&net->subscr_conns) == 0 ===== test_umts_authen_only_sres_utran: SUCCESS diff --git a/tests/msc_vlr/msc_vlr_tests.c b/tests/msc_vlr/msc_vlr_tests.c index 915f282..eda3ea1 100644 --- a/tests/msc_vlr/msc_vlr_tests.c +++ b/tests/msc_vlr/msc_vlr_tests.c @@ -795,6 +795,22 @@ msc_rx_sec_mode_compl(g_conn); } +void bss_sends_clear_complete() +{ + btw("BSS sends BSSMAP Clear Complete"); + OSMO_ASSERT(g_conn); + OSMO_ASSERT(g_conn->via_ran == RAN_GERAN_A); + msc_subscr_conn_rx_bssmap_clear_complete(g_conn); +} + +void rnc_sends_release_complete() +{ + btw("RNC sends Iu Release Complete"); + OSMO_ASSERT(g_conn); + OSMO_ASSERT(g_conn->via_ran == RAN_UTRAN_IU); + msc_subscr_conn_rx_iu_release_complete(g_conn); +} + const struct timeval fake_time_start_time = { 123, 456 }; void fake_time_start() diff --git a/tests/msc_vlr/msc_vlr_tests.h b/tests/msc_vlr/msc_vlr_tests.h index 15df9ec..a29e870 100644 --- a/tests/msc_vlr/msc_vlr_tests.h +++ b/tests/msc_vlr/msc_vlr_tests.h @@ -166,6 +166,9 @@ struct vlr_subscr *sender, char *str); +void bss_sends_clear_complete(); +void rnc_sends_release_complete(); + void thwart_rx_non_initial_requests(); #define EXPECT_ACCEPTED(expect_accepted) do { \ @@ -223,3 +226,31 @@ } while (0) extern const struct timeval fake_time_start_time; + +#define ASSERT_RELEASE_CLEAR(via_ran) \ + switch (via_ran) { \ + case RAN_GERAN_A: \ + VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); \ + break; \ + case RAN_UTRAN_IU: \ + VERBOSE_ASSERT(iu_release_sent, == true, "%d"); \ + break; \ + default: \ + OSMO_ASSERT(false); \ + break; \ + } + +static inline void bss_rnc_sends_release_clear_complete(enum ran_type via_ran) +{ + switch (via_ran) { + case RAN_GERAN_A: + bss_sends_clear_complete(); + return; + case RAN_UTRAN_IU: + rnc_sends_release_complete(); + return; + default: + OSMO_ASSERT(false); + break; + } +} -- To view, visit https://gerrit.osmocom.org/7706 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Ie4c6aaba3866d6e5b98004e8870a215e8cf8ffc1 Gerrit-PatchSet: 1 Gerrit-Project: osmo-msc Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr From gerrit-no-reply at lists.osmocom.org Tue Apr 10 00:15:24 2018 From: gerrit-no-reply at lists.osmocom.org (Neels Hofmeyr) Date: Tue, 10 Apr 2018 00:15:24 +0000 Subject: [PATCH] osmo-msc[master]: fix BSC Clear Request Message-ID: Review at https://gerrit.osmocom.org/7707 fix BSC Clear Request On receiving a Clear Request, don't send a Clear Command "out of band", let the FSM do the release handling by invoking msc_subscr_conn_mo_close(). Fixes: ttcn3 MSC_Tests.TC_lu_clear_request Change-Id: I168b889ac7989641cc679b781dcffb87ff13a710 --- M src/libmsc/a_iface_bssap.c 1 file changed, 2 insertions(+), 8 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-msc refs/changes/07/7707/1 diff --git a/src/libmsc/a_iface_bssap.c b/src/libmsc/a_iface_bssap.c index 87ccf05..6d5848a 100644 --- a/src/libmsc/a_iface_bssap.c +++ b/src/libmsc/a_iface_bssap.c @@ -216,8 +216,6 @@ static int bssmap_rx_clear_rqst(struct gsm_subscriber_connection *conn, struct msgb *msg, struct tlv_parsed *tp) { - int rc; - struct msgb *msg_resp; uint8_t cause; LOGPCONN(conn, LOGL_INFO, "Rx BSSMAP CLEAR REQUEST\n"); @@ -228,13 +226,9 @@ } cause = TLVP_VAL(tp, GSM0808_IE_CAUSE)[0]; - /* Respond with clear command */ - msg_resp = gsm0808_create_clear_command(GSM0808_CAUSE_CALL_CONTROL); - rc = osmo_sccp_tx_data_msg(conn->a.scu, conn->a.conn_id, msg_resp); + msc_subscr_conn_mo_close(conn, cause); - msc_clear_request(conn, cause); - - return rc; + return 0; } /* Endpoint to handle BSSMAP clear complete */ -- To view, visit https://gerrit.osmocom.org/7707 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I168b889ac7989641cc679b781dcffb87ff13a710 Gerrit-PatchSet: 1 Gerrit-Project: osmo-msc Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr From gerrit-no-reply at lists.osmocom.org Tue Apr 10 00:15:24 2018 From: gerrit-no-reply at lists.osmocom.org (Neels Hofmeyr) Date: Tue, 10 Apr 2018 00:15:24 +0000 Subject: [PATCH] osmo-msc[master]: cosmetic: embed compl_l3_type in FSM id Message-ID: Review at https://gerrit.osmocom.org/7708 cosmetic: embed compl_l3_type in FSM id In the subscr_conn_fsm instance's ID, include the Complete Layer 3 type, so that we can see on the first glance whether a state transition belongs to MO or MT. The huge patch is due to the cosmetic change affecting nearly every single log line in the msc_vlr_tests, by nature of changing the FSM's ID. Related: OS#3122 Change-Id: I2a7e27e0f16df1872dcda64cb928c3b8528ea3f7 --- M src/libmsc/subscr_conn.c M tests/msc_vlr/msc_vlr_test_authen_reuse.err M tests/msc_vlr/msc_vlr_test_call.err M tests/msc_vlr/msc_vlr_test_gsm_authen.err M tests/msc_vlr/msc_vlr_test_gsm_ciph.err M tests/msc_vlr/msc_vlr_test_hlr_reject.err M tests/msc_vlr/msc_vlr_test_hlr_timeout.err M tests/msc_vlr/msc_vlr_test_ms_timeout.err M tests/msc_vlr/msc_vlr_test_no_authen.err M tests/msc_vlr/msc_vlr_test_reject_concurrency.err M tests/msc_vlr/msc_vlr_test_rest.err M tests/msc_vlr/msc_vlr_test_umts_authen.err 12 files changed, 7,132 insertions(+), 7,132 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-msc refs/changes/08/7708/1 -- To view, visit https://gerrit.osmocom.org/7708 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I2a7e27e0f16df1872dcda64cb928c3b8528ea3f7 Gerrit-PatchSet: 1 Gerrit-Project: osmo-msc Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr From gerrit-no-reply at lists.osmocom.org Tue Apr 10 00:15:24 2018 From: gerrit-no-reply at lists.osmocom.org (Neels Hofmeyr) Date: Tue, 10 Apr 2018 00:15:24 +0000 Subject: [PATCH] osmo-msc[master]: refactor VLR FSM result handling Message-ID: Review at https://gerrit.osmocom.org/7709 refactor VLR FSM result handling Instead of keeping separate enums for FSM results and translating between those and the actual 04.08 reject causes that will ultimately reach the MS, just pass enum gsm48_reject_value cause codes around everywhere. Collapse some VLR *_timeout() and *_cancel() api to just *_cancel() with a gsm48 cause arg. (Hopefully) improve a few reject causes, but otherwise just aim for more transparent decisions on which cause value is used, for future fixes of returned causes. Depends: I6661f139e68a498fb1bef10c266c2f064b72774a (libosmocore) Change-Id: I27bf8d68737ff1f8dc6d11fb1eac3d391aab0cb1 --- M include/osmocom/msc/vlr.h M src/libmsc/gsm_04_08.c M src/libmsc/subscr_conn.c M src/libvlr/vlr.c M src/libvlr/vlr_access_req_fsm.c M src/libvlr/vlr_auth_fsm.c M src/libvlr/vlr_auth_fsm.h M src/libvlr/vlr_lu_fsm.c M tests/msc_vlr/msc_vlr_test_authen_reuse.err M tests/msc_vlr/msc_vlr_test_call.err M tests/msc_vlr/msc_vlr_test_gsm_authen.err M tests/msc_vlr/msc_vlr_test_gsm_ciph.err M tests/msc_vlr/msc_vlr_test_hlr_reject.err M tests/msc_vlr/msc_vlr_test_hlr_timeout.err M tests/msc_vlr/msc_vlr_test_ms_timeout.err M tests/msc_vlr/msc_vlr_test_no_authen.err M tests/msc_vlr/msc_vlr_test_reject_concurrency.c M tests/msc_vlr/msc_vlr_test_reject_concurrency.err M tests/msc_vlr/msc_vlr_test_rest.err M tests/msc_vlr/msc_vlr_test_umts_authen.err M tests/msc_vlr/msc_vlr_tests.c 21 files changed, 487 insertions(+), 512 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-msc refs/changes/09/7709/1 diff --git a/include/osmocom/msc/vlr.h b/include/osmocom/msc/vlr.h index 96bfa2f..0a9ef6f 100644 --- a/include/osmocom/msc/vlr.h +++ b/include/osmocom/msc/vlr.h @@ -170,8 +170,6 @@ } cs; }; -enum vlr_proc_arq_result; - enum vlr_ciph { VLR_CIPH_NONE, /*< A5/0, no encryption */ VLR_CIPH_A5_1, /*< A5/1, encryption */ @@ -208,9 +206,9 @@ int (*tx_id_req)(void *msc_conn_ref, uint8_t mi_type); int (*tx_lu_acc)(void *msc_conn_ref, uint32_t send_tmsi); - int (*tx_lu_rej)(void *msc_conn_ref, uint8_t cause); + int (*tx_lu_rej)(void *msc_conn_ref, enum gsm48_reject_value cause); int (*tx_cm_serv_acc)(void *msc_conn_ref); - int (*tx_cm_serv_rej)(void *msc_conn_ref, enum vlr_proc_arq_result result); + int (*tx_cm_serv_rej)(void *msc_conn_ref, enum gsm48_reject_value cause); int (*set_ciph_mode)(void *msc_conn_ref, bool umts_aka, bool retrieve_imeisv); @@ -275,7 +273,9 @@ bool is_r99, bool is_utran, bool assign_tmsi); -void vlr_loc_update_conn_timeout(struct osmo_fsm_inst *fi); +void vlr_loc_update_cancel(struct osmo_fsm_inst *fi, + enum osmo_fsm_term_cause fsm_cause, + uint8_t gsm48_cause); /* tell the VLR that the subscriber connection is gone */ int vlr_subscr_disconnected(struct vlr_subscr *vsub); @@ -288,7 +288,6 @@ void vlr_subscr_rx_ciph_res(struct vlr_subscr *vsub, struct vlr_ciph_result *res); int vlr_subscr_rx_tmsi_reall_compl(struct vlr_subscr *vsub); int vlr_subscr_rx_imsi_detach(struct vlr_subscr *vsub); -void vlr_subscr_conn_timeout(struct vlr_subscr *vsub); struct vlr_instance *vlr_alloc(void *ctx, const struct vlr_ops *ops); int vlr_start(const char *gsup_unit_name, struct vlr_instance *vlr, @@ -376,28 +375,12 @@ int vlr_subscr_changed(struct vlr_subscr *vsub); int vlr_subscr_purge(struct vlr_subscr *vsub) __attribute__((warn_unused_result)); -void vlr_subscr_cancel(struct vlr_subscr *vsub, enum gsm48_gmm_cause cause); +void vlr_subscr_cancel_attach_fsm(struct vlr_subscr *vsub, + enum osmo_fsm_term_cause fsm_cause, + uint8_t gsm48_cause); /* Process Acccess Request FSM */ - -enum vlr_proc_arq_result { - VLR_PR_ARQ_RES_NONE, - VLR_PR_ARQ_RES_SYSTEM_FAILURE, - VLR_PR_ARQ_RES_ILLEGAL_SUBSCR, - VLR_PR_ARQ_RES_UNIDENT_SUBSCR, - VLR_PR_ARQ_RES_ROAMING_NOTALLOWED, - VLR_PR_ARQ_RES_ILLEGAL_EQUIP, - VLR_PR_ARQ_RES_UNKNOWN_ERROR, - VLR_PR_ARQ_RES_TIMEOUT, - VLR_PR_ARQ_RES_PASSED, -}; - -extern const struct value_string vlr_proc_arq_result_names[]; -static inline const char *vlr_proc_arq_result_name(enum vlr_proc_arq_result res) -{ - return get_value_string(vlr_proc_arq_result_names, res); -} enum proc_arq_vlr_event { PR_ARQ_E_START, @@ -431,7 +414,9 @@ bool ciphering_required, bool is_r99, bool is_utran); -void vlr_parq_conn_timeout(struct osmo_fsm_inst *fi); +void vlr_parq_cancel(struct osmo_fsm_inst *fi, + enum osmo_fsm_term_cause fsm_cause, + enum gsm48_reject_value gsm48_cause); void vlr_parq_fsm_init(void); diff --git a/src/libmsc/gsm_04_08.c b/src/libmsc/gsm_04_08.c index b51fd16..2b8e4c1 100644 --- a/src/libmsc/gsm_04_08.c +++ b/src/libmsc/gsm_04_08.c @@ -644,7 +644,7 @@ } static int msc_vlr_tx_cm_serv_acc(void *msc_conn_ref); -static int msc_vlr_tx_cm_serv_rej(void *msc_conn_ref, enum vlr_proc_arq_result result); +static int msc_vlr_tx_cm_serv_rej(void *msc_conn_ref, enum gsm48_reject_value result); static int cm_serv_reuse_conn(struct gsm_subscriber_connection *conn, const uint8_t *mi_lv) { @@ -675,7 +675,7 @@ LOGP(DMM, LOGL_ERROR, "%s: CM Service Request with mismatching mobile identity: %s %s\n", vlr_subscr_name(conn->vsub), gsm48_mi_type_name(mi_type), mi_string); - msc_vlr_tx_cm_serv_rej(conn, VLR_PR_ARQ_RES_ILLEGAL_SUBSCR); + msc_vlr_tx_cm_serv_rej(conn, GSM48_REJECT_ILLEGAL_MS); return -EINVAL; accept_reuse: @@ -774,7 +774,7 @@ if (msc_subscr_conn_is_establishing_auth_ciph(conn)) { LOGP(DMM, LOGL_ERROR, "Cannot accept CM Service Request, conn already busy establishing authenticity\n"); - msc_vlr_tx_cm_serv_rej(conn, VLR_PR_ARQ_RES_UNKNOWN_ERROR); + msc_vlr_tx_cm_serv_rej(conn, GSM48_REJECT_CONGESTION); return -EINVAL; /* or should we accept and note down the service request anyway? */ } @@ -3576,7 +3576,7 @@ } /* VLR asks us to transmit a Location Update Reject */ -static int msc_vlr_tx_lu_rej(void *msc_conn_ref, uint8_t cause) +static int msc_vlr_tx_lu_rej(void *msc_conn_ref, enum gsm48_reject_value cause) { struct gsm_subscriber_connection *conn = msc_conn_ref; return gsm0408_loc_upd_rej(conn, cause); @@ -3605,35 +3605,10 @@ } /* VLR asks us to transmit a CM Service Reject */ -static int msc_vlr_tx_cm_serv_rej(void *msc_conn_ref, enum vlr_proc_arq_result result) +static int msc_vlr_tx_cm_serv_rej(void *msc_conn_ref, enum gsm48_reject_value cause) { - uint8_t cause; struct gsm_subscriber_connection *conn = msc_conn_ref; int rc; - - switch (result) { - default: - case VLR_PR_ARQ_RES_NONE: - case VLR_PR_ARQ_RES_SYSTEM_FAILURE: - case VLR_PR_ARQ_RES_UNKNOWN_ERROR: - cause = GSM48_REJECT_NETWORK_FAILURE; - break; - case VLR_PR_ARQ_RES_ILLEGAL_SUBSCR: - cause = GSM48_REJECT_LOC_NOT_ALLOWED; - break; - case VLR_PR_ARQ_RES_UNIDENT_SUBSCR: - cause = GSM48_REJECT_INVALID_MANDANTORY_INF; - break; - case VLR_PR_ARQ_RES_ROAMING_NOTALLOWED: - cause = GSM48_REJECT_ROAMING_NOT_ALLOWED; - break; - case VLR_PR_ARQ_RES_ILLEGAL_EQUIP: - cause = GSM48_REJECT_ILLEGAL_MS; - break; - case VLR_PR_ARQ_RES_TIMEOUT: - cause = GSM48_REJECT_CONGESTION; - break; - }; rc = msc_gsm48_tx_mm_serv_rej(conn, cause); diff --git a/src/libmsc/subscr_conn.c b/src/libmsc/subscr_conn.c index bf21e29..94fb34d 100644 --- a/src/libmsc/subscr_conn.c +++ b/src/libmsc/subscr_conn.c @@ -98,8 +98,11 @@ static void log_close_event(struct osmo_fsm_inst *fi, uint32_t event, void *data) { - if (data) - LOGPFSML(fi, LOGL_DEBUG, "Close event, cause %u\n", *(uint32_t*)data); + enum gsm48_reject_value *cause = data; + /* The close event itself is logged by the FSM. We can only add the cause value, if present. */ + if (!cause || !*cause) + return; + LOGPFSML(fi, LOGL_NOTICE, "Close event, cause: %s\n", gsm48_reject_value_name(*cause)); } static void subscr_conn_fsm_new(struct osmo_fsm_inst *fi, uint32_t event, void *data) @@ -245,7 +248,7 @@ LOGPFSML(fi, LOGL_ERROR, "Timeout while releasing, discarding right now\n"); osmo_fsm_inst_term(fi, OSMO_FSM_TERM_TIMEOUT, NULL); } else { - uint32_t cause = GSM_CAUSE_NET_FAIL; + enum gsm48_reject_value cause = GSM48_REJECT_CONGESTION; osmo_fsm_inst_dispatch(fi, SUBSCR_CONN_E_CN_CLOSE, &cause); } return 0; @@ -267,7 +270,7 @@ } /* Cancel all VLR FSMs, if any */ - vlr_subscr_conn_timeout(conn->vsub); + vlr_subscr_cancel_attach_fsm(conn->vsub, OSMO_FSM_TERM_ERROR, GSM48_REJECT_CONGESTION); /* If we're closing in a middle of a trans, we need to clean up */ trans_conn_closed(conn); diff --git a/src/libvlr/vlr.c b/src/libvlr/vlr.c index 3e14593..2d232be 100644 --- a/src/libvlr/vlr.c +++ b/src/libvlr/vlr.c @@ -271,23 +271,19 @@ return vlr_subscr_tx_gsup_message(vsub, &gsup_msg); } -void vlr_subscr_cancel(struct vlr_subscr *vsub, enum gsm48_gmm_cause cause) +void vlr_subscr_cancel_attach_fsm(struct vlr_subscr *vsub, + enum osmo_fsm_term_cause fsm_cause, + uint8_t gsm48_cause) { if (!vsub) return; - if (vsub->lu_fsm) { - if (vsub->lu_fsm->state == VLR_ULA_S_WAIT_HLR_UPD) - osmo_fsm_inst_dispatch(vsub->lu_fsm, - VLR_ULA_E_HLR_LU_RES, - (void*)&cause); - else - osmo_fsm_inst_term(vsub->lu_fsm, OSMO_FSM_TERM_ERROR, - 0); - } - + vlr_subscr_get(vsub); + if (vsub->lu_fsm) + vlr_loc_update_cancel(vsub->lu_fsm, fsm_cause, gsm48_cause); if (vsub->proc_arq_fsm) - osmo_fsm_inst_term(vsub->proc_arq_fsm, OSMO_FSM_TERM_ERROR, 0); + vlr_parq_cancel(vsub->proc_arq_fsm, fsm_cause, gsm48_cause); + vlr_subscr_put(vsub); } /* Call vlr_subscr_cancel(), then completely drop the entry from the VLR */ @@ -803,10 +799,111 @@ return 0; } +static void gmm_cause_to_fsm_and_mm_cause(enum gsm48_gmm_cause gmm_cause, + enum osmo_fsm_term_cause *fsm_cause_p, + enum gsm48_reject_value *gsm48_rej_p) +{ + enum osmo_fsm_term_cause fsm_cause = OSMO_FSM_TERM_ERROR; + enum gsm48_reject_value gsm48_rej = GSM48_REJECT_NETWORK_FAILURE; + switch (gmm_cause) { + case GMM_CAUSE_IMSI_UNKNOWN: + gsm48_rej = GSM48_REJECT_IMSI_UNKNOWN_IN_HLR; + break; + case GMM_CAUSE_ILLEGAL_MS: + gsm48_rej = GSM48_REJECT_ILLEGAL_MS; + break; + case GMM_CAUSE_IMEI_NOT_ACCEPTED: + gsm48_rej = GSM48_REJECT_IMEI_NOT_ACCEPTED; + break; + case GMM_CAUSE_ILLEGAL_ME: + gsm48_rej = GSM48_REJECT_ILLEGAL_ME; + break; + case GMM_CAUSE_GPRS_NOTALLOWED: + gsm48_rej = GSM48_REJECT_GPRS_NOT_ALLOWED; + break; + case GMM_CAUSE_GPRS_OTHER_NOTALLOWED: + gsm48_rej = GSM48_REJECT_SERVICES_NOT_ALLOWED; + break; + case GMM_CAUSE_MS_ID_NOT_DERIVED: + gsm48_rej = GSM48_REJECT_MS_IDENTITY_NOT_DERVIVABLE; + break; + case GMM_CAUSE_IMPL_DETACHED: + gsm48_rej = GSM48_REJECT_IMPLICITLY_DETACHED; + break; + case GMM_CAUSE_PLMN_NOTALLOWED: + gsm48_rej = GSM48_REJECT_PLMN_NOT_ALLOWED; + break; + case GMM_CAUSE_LA_NOTALLOWED: + gsm48_rej = GSM48_REJECT_LOC_NOT_ALLOWED; + break; + case GMM_CAUSE_ROAMING_NOTALLOWED: + gsm48_rej = GSM48_REJECT_ROAMING_NOT_ALLOWED; + break; + case GMM_CAUSE_NO_GPRS_PLMN: + gsm48_rej = GSM48_REJECT_GPRS_NOT_ALLOWED_IN_PLMN; + break; + case GMM_CAUSE_MSC_TEMP_NOTREACH: + gsm48_rej = GSM48_REJECT_MSC_TMP_NOT_REACHABLE; + break; + case GMM_CAUSE_SYNC_FAIL: + gsm48_rej = GSM48_REJECT_SYNCH_FAILURE; + break; + case GMM_CAUSE_CONGESTION: + gsm48_rej = GSM48_REJECT_CONGESTION; + break; + case GMM_CAUSE_SEM_INCORR_MSG: + gsm48_rej = GSM48_REJECT_INCORRECT_MESSAGE; + break; + case GMM_CAUSE_INV_MAND_INFO: + gsm48_rej = GSM48_REJECT_INVALID_MANDANTORY_INF; + break; + case GMM_CAUSE_MSGT_NOTEXIST_NOTIMPL: + gsm48_rej = GSM48_REJECT_MSG_TYPE_NOT_IMPLEMENTED; + break; + case GMM_CAUSE_MSGT_INCOMP_P_STATE: + gsm48_rej = GSM48_REJECT_MSG_TYPE_NOT_COMPATIBLE; + break; + case GMM_CAUSE_IE_NOTEXIST_NOTIMPL: + gsm48_rej = GSM48_REJECT_INF_ELEME_NOT_IMPLEMENTED; + break; + case GMM_CAUSE_COND_IE_ERR: + gsm48_rej = GSM48_REJECT_CONDTIONAL_IE_ERROR; + break; + case GMM_CAUSE_MSG_INCOMP_P_STATE: + gsm48_rej = GSM48_REJECT_MSG_NOT_COMPATIBLE; + break; + case GMM_CAUSE_PROTO_ERR_UNSPEC: + gsm48_rej = GSM48_REJECT_PROTOCOL_ERROR; + break; + + case GMM_CAUSE_NO_SUIT_CELL_IN_LA: + case GMM_CAUSE_MAC_FAIL: + case GMM_CAUSE_GSM_AUTH_UNACCEPT: + case GMM_CAUSE_NOT_AUTH_FOR_CSG: + case GMM_CAUSE_SMS_VIA_GPRS_IN_RA: + case GMM_CAUSE_NO_PDP_ACTIVATED: + case GMM_CAUSE_NET_FAIL: + gsm48_rej = GSM48_REJECT_NETWORK_FAILURE; + break; + } + switch (gmm_cause) { + /* refine any error causes here? */ + default: + fsm_cause = OSMO_FSM_TERM_ERROR; + break; + } + if (fsm_cause_p) + *fsm_cause_p = fsm_cause; + if (gsm48_rej_p) + *gsm48_rej_p = gsm48_rej; +} + /* Handle LOCATION CANCEL request from HLR */ static int vlr_subscr_handle_cancel_req(struct vlr_subscr *vsub, struct osmo_gsup_message *gsup_msg) { + enum gsm48_reject_value gsm48_rej; + enum osmo_fsm_term_cause fsm_cause; struct osmo_gsup_message gsup_reply = {0}; int rc, is_update_procedure = !gsup_msg->cancel_type || gsup_msg->cancel_type == OSMO_GSUP_CANCEL_TYPE_UPDATE; @@ -818,7 +915,8 @@ gsup_reply.message_type = OSMO_GSUP_MSGT_LOCATION_CANCEL_RESULT; rc = vlr_subscr_tx_gsup_message(vsub, &gsup_reply); - vlr_subscr_cancel(vsub, gsup_msg->cause); + gmm_cause_to_fsm_and_mm_cause(gsup_msg->cause, &fsm_cause, &gsm48_rej); + vlr_subscr_cancel_attach_fsm(vsub, fsm_cause, gsm48_rej); return rc; } @@ -998,7 +1096,7 @@ int vlr_subscr_rx_imsi_detach(struct vlr_subscr *vsub) { /* paranoia: should any LU or PARQ FSMs still be running, stop them. */ - vlr_subscr_cancel(vsub, GMM_CAUSE_IMPL_DETACHED); + vlr_subscr_cancel_attach_fsm(vsub, OSMO_FSM_TERM_ERROR, GSM48_REJECT_CONGESTION); vsub->imsi_detached_flag = true; @@ -1015,15 +1113,7 @@ */ void vlr_subscr_conn_timeout(struct vlr_subscr *vsub) { - if (!vsub) - return; - - vlr_subscr_get(vsub); - if (vsub->lu_fsm) - vlr_loc_update_conn_timeout(vsub->lu_fsm); - if (vsub->proc_arq_fsm) - vlr_parq_conn_timeout(vsub->proc_arq_fsm); - vlr_subscr_put(vsub); + vlr_subscr_cancel_attach_fsm(vsub, OSMO_FSM_TERM_TIMEOUT, GSM48_REJECT_CONGESTION); } struct vlr_instance *vlr_alloc(void *ctx, const struct vlr_ops *ops) diff --git a/src/libvlr/vlr_access_req_fsm.c b/src/libvlr/vlr_access_req_fsm.c index 3845f26..dd95821 100644 --- a/src/libvlr/vlr_access_req_fsm.c +++ b/src/libvlr/vlr_access_req_fsm.c @@ -36,19 +36,6 @@ * Process_Access_Request_VLR, TS 29.002 Chapter 25.4.2 ***********************************************************************/ -const struct value_string vlr_proc_arq_result_names[] = { - OSMO_VALUE_STRING(VLR_PR_ARQ_RES_NONE), - OSMO_VALUE_STRING(VLR_PR_ARQ_RES_SYSTEM_FAILURE), - OSMO_VALUE_STRING(VLR_PR_ARQ_RES_ILLEGAL_SUBSCR), - OSMO_VALUE_STRING(VLR_PR_ARQ_RES_UNIDENT_SUBSCR), - OSMO_VALUE_STRING(VLR_PR_ARQ_RES_ROAMING_NOTALLOWED), - OSMO_VALUE_STRING(VLR_PR_ARQ_RES_ILLEGAL_EQUIP), - OSMO_VALUE_STRING(VLR_PR_ARQ_RES_UNKNOWN_ERROR), - OSMO_VALUE_STRING(VLR_PR_ARQ_RES_TIMEOUT), - OSMO_VALUE_STRING(VLR_PR_ARQ_RES_PASSED), - { 0, NULL } -}; - static const struct value_string proc_arq_vlr_event_names[] = { OSMO_VALUE_STRING(PR_ARQ_E_START), OSMO_VALUE_STRING(PR_ARQ_E_ID_IMSI), @@ -73,7 +60,7 @@ void *parent_event_data; enum vlr_parq_type type; - enum vlr_proc_arq_result result; + enum gsm48_reject_value result; /*< 0 on success */ bool by_tmsi; char imsi[16]; uint32_t tmsi; @@ -97,15 +84,20 @@ vlr->ops.subscr_assoc(par->msc_conn_ref, par->vsub); } +static const char *vlr_proc_arq_result_name(const struct osmo_fsm_inst *fi) +{ + struct proc_arq_priv *par = fi->priv; + return par->result? gsm48_reject_value_name(par->result) : "PASSED"; +} + #define proc_arq_fsm_done(fi, res) _proc_arq_fsm_done(fi, res, __FILE__, __LINE__) static void _proc_arq_fsm_done(struct osmo_fsm_inst *fi, - enum vlr_proc_arq_result res, + enum gsm48_reject_value gsm48_rej, const char *file, int line) { struct proc_arq_priv *par = fi->priv; - LOGPFSMSRC(fi, file, line, "proc_arq_fsm_done(%s)\n", - vlr_proc_arq_result_name(res)); - par->result = res; + par->result = gsm48_rej; + LOGPFSMSRC(fi, file, line, "proc_arq_fsm_done(%s)\n", vlr_proc_arq_result_name(fi)); osmo_fsm_inst_state_chg(fi, PR_ARQ_S_DONE, 0, 0); } @@ -115,10 +107,9 @@ struct proc_arq_priv *par = fi->priv; bool success; int rc; - LOGPFSM(fi, "Process Access Request result: %s\n", - vlr_proc_arq_result_name(par->result)); + LOGPFSM(fi, "Process Access Request result: %s\n", vlr_proc_arq_result_name(fi)); - success = (par->result == VLR_PR_ARQ_RES_PASSED); + success = (par->result == 0); /* It would be logical to first dispatch the success event to the * parent FSM, but that could start actions that send messages to the @@ -184,7 +175,7 @@ return; } - proc_arq_fsm_done(fi, VLR_PR_ARQ_RES_PASSED); + proc_arq_fsm_done(fi, 0); } static void _proc_arq_vlr_post_trace(struct osmo_fsm_inst *fi) @@ -228,13 +219,13 @@ if (!vsub->sub_dataconf_by_hlr_ind) { /* Set User Error: Unidentified Subscriber */ - proc_arq_fsm_done(fi, VLR_PR_ARQ_RES_UNIDENT_SUBSCR); + proc_arq_fsm_done(fi, GSM48_REJECT_IMSI_UNKNOWN_IN_HLR); return; } /* We don't feature location area specific blocking (yet). */ if (0 /* roaming not allowed in LA */) { /* Set User Error: Roaming not allowed in this LA */ - proc_arq_fsm_done(fi, VLR_PR_ARQ_RES_ROAMING_NOTALLOWED); + proc_arq_fsm_done(fi, GSM48_REJECT_ROAMING_NOT_ALLOWED); return; } vsub->imsi_detached_flag = false; @@ -302,7 +293,7 @@ break; default: LOGPFSML(fi, LOGL_ERROR, "Cannot start ciphering, security context is not established\n"); - proc_arq_fsm_done(fi, VLR_PR_ARQ_RES_SYSTEM_FAILURE); + proc_arq_fsm_done(fi, GSM48_REJECT_NETWORK_FAILURE); return; } @@ -312,7 +303,7 @@ vsub->vlr->cfg.retrieve_imeisv_ciphered)) { LOGPFSML(fi, LOGL_ERROR, "Failed to send Ciphering Mode Command\n"); - proc_arq_fsm_done(fi, VLR_PR_ARQ_RES_SYSTEM_FAILURE); + proc_arq_fsm_done(fi, GSM48_REJECT_NETWORK_FAILURE); return; } @@ -377,7 +368,7 @@ " terminating the other FSM.\n", vlr_subscr_name(vsub)); proc_arq_fsm_done(vsub->proc_arq_fsm, - VLR_PR_ARQ_RES_SYSTEM_FAILURE); + GSM48_REJECT_NETWORK_FAILURE); } vsub->proc_arq_fsm = fi; assoc_par_with_subscr(fi, vsub); @@ -390,7 +381,7 @@ if (!par->by_tmsi) { /* We couldn't find a subscriber even by IMSI, * Set User Error: Unidentified Subscriber */ - proc_arq_fsm_done(fi, VLR_PR_ARQ_RES_UNIDENT_SUBSCR); + proc_arq_fsm_done(fi, GSM48_REJECT_MS_IDENTITY_NOT_DERVIVABLE); return; } else { /* TMSI was included, are we permitted to use it? */ @@ -401,7 +392,7 @@ return; } else { /* Set User Error: Unidentified Subscriber */ - proc_arq_fsm_done(fi, VLR_PR_ARQ_RES_UNIDENT_SUBSCR); + proc_arq_fsm_done(fi, GSM48_REJECT_MS_IDENTITY_NOT_DERVIVABLE); return; } } @@ -420,7 +411,7 @@ vsub = vlr_subscr_find_by_imsi(vlr, par->imsi); if (!vsub) { /* Set User Error: Unidentified Subscriber */ - proc_arq_fsm_done(fi, VLR_PR_ARQ_RES_UNIDENT_SUBSCR); + proc_arq_fsm_done(fi, GSM48_REJECT_MS_IDENTITY_NOT_DERVIVABLE); return; } assoc_par_with_subscr(fi, vsub); @@ -432,43 +423,17 @@ static void proc_arq_vlr_fn_w_auth(struct osmo_fsm_inst *fi, uint32_t event, void *data) { - enum vlr_auth_fsm_result res; - enum vlr_proc_arq_result ret; + enum gsm48_reject_value *cause = data; OSMO_ASSERT(event == PR_ARQ_E_AUTH_RES); - res = data ? *(enum vlr_auth_fsm_result*)data : -1; - LOGPFSM(fi, "got %s\n", vlr_auth_fsm_result_name(res)); - - switch (res) { - case VLR_AUTH_RES_PASSED: - /* Node 2 */ - _proc_arq_vlr_node2(fi); + if (!cause || *cause) { + proc_arq_fsm_done(fi, cause? *cause : GSM48_REJECT_NETWORK_FAILURE); return; - case VLR_AUTH_RES_ABORTED: - /* Error */ - ret = VLR_PR_ARQ_RES_UNKNOWN_ERROR; - break; - case VLR_AUTH_RES_UNKNOWN_SUBSCR: - /* Set User Error: Unidentified Subscriber */ - ret = VLR_PR_ARQ_RES_UNIDENT_SUBSCR; - break; - case VLR_AUTH_RES_AUTH_FAILED: - /* Set User Error: Illegal Subscriber */ - ret = VLR_PR_ARQ_RES_ILLEGAL_SUBSCR; - break; - case VLR_AUTH_RES_PROC_ERR: - /* Set User Error: System failure */ - ret = VLR_PR_ARQ_RES_SYSTEM_FAILURE; - break; - default: - LOGPFSML(fi, LOGL_ERROR, "Unexpected vlr_auth_fsm_result value: %d (data=%p)\n", res, data); - ret = VLR_PR_ARQ_RES_UNKNOWN_ERROR; - break; } - /* send process_access_req response to caller, enter error state */ - proc_arq_fsm_done(fi, ret); + /* Node 2 */ + _proc_arq_vlr_node2(fi); } static void proc_arq_vlr_fn_w_ciph(struct osmo_fsm_inst *fi, @@ -490,12 +455,12 @@ break; case VLR_CIPH_REJECT: LOGPFSM(fi, "ciphering rejected\n"); - proc_arq_fsm_done(fi, VLR_PR_ARQ_RES_ILLEGAL_SUBSCR); + proc_arq_fsm_done(fi, GSM48_REJECT_ILLEGAL_MS); return; default: LOGPFSML(fi, LOGL_ERROR, "invalid ciphering result: %d\n", res.cause); - proc_arq_fsm_done(fi, VLR_PR_ARQ_RES_ILLEGAL_SUBSCR); + proc_arq_fsm_done(fi, GSM48_REJECT_ILLEGAL_MS); return; } @@ -549,7 +514,7 @@ OSMO_ASSERT(event == PR_ARQ_E_TMSI_ACK); /* FIXME: check confirmation? unfreeze? */ - proc_arq_fsm_done(fi, VLR_PR_ARQ_RES_PASSED); + proc_arq_fsm_done(fi, 0); } static const struct osmo_fsm_state proc_arq_vlr_states[] = { @@ -722,8 +687,7 @@ case GSM_MI_TYPE_IMEI: /* TODO: IMEI (emergency call) */ default: - /* FIXME: directly send reject? */ - proc_arq_fsm_done(fi, VLR_PR_ARQ_RES_UNIDENT_SUBSCR); + proc_arq_fsm_done(fi, GSM48_REJECT_MS_IDENTITY_NOT_DERVIVABLE); return; } @@ -732,12 +696,14 @@ /* Gracefully terminate an FSM created by vlr_proc_acc_req() in case of * external timeout (i.e. from MSC). */ -void vlr_parq_conn_timeout(struct osmo_fsm_inst *fi) +void vlr_parq_cancel(struct osmo_fsm_inst *fi, + enum osmo_fsm_term_cause fsm_cause, + enum gsm48_reject_value gsm48_cause) { if (!fi || fi->state == PR_ARQ_S_DONE) return; - LOGPFSM(fi, "Connection timed out\n"); - proc_arq_fsm_done(fi, VLR_PR_ARQ_RES_TIMEOUT); + LOGPFSM(fi, "Cancel: %s\n", osmo_fsm_term_cause_name(fsm_cause)); + proc_arq_fsm_done(fi, gsm48_cause); } diff --git a/src/libvlr/vlr_auth_fsm.c b/src/libvlr/vlr_auth_fsm.c index f001eac..d5a8555 100644 --- a/src/libvlr/vlr_auth_fsm.c +++ b/src/libvlr/vlr_auth_fsm.c @@ -42,15 +42,6 @@ { 0, NULL } }; -const struct value_string vlr_auth_fsm_result_names[] = { - OSMO_VALUE_STRING(VLR_AUTH_RES_ABORTED), - OSMO_VALUE_STRING(VLR_AUTH_RES_UNKNOWN_SUBSCR), - OSMO_VALUE_STRING(VLR_AUTH_RES_PROC_ERR), - OSMO_VALUE_STRING(VLR_AUTH_RES_AUTH_FAILED), - OSMO_VALUE_STRING(VLR_AUTH_RES_PASSED), - {0, NULL} -}; - /* private state of the auth_fsm_instance */ struct auth_fsm_priv { struct vlr_subscr *vsub; @@ -239,23 +230,30 @@ } } +static const char *vlr_auth_fsm_result_name(enum gsm48_reject_value result) +{ + if (!result) + return "PASSED"; + return get_value_string(gsm48_gmm_cause_names, result); +} + /* Terminate the Auth FSM Instance and notify parent */ -static void auth_fsm_term(struct osmo_fsm_inst *fi, enum vlr_auth_fsm_result res) +static void auth_fsm_term(struct osmo_fsm_inst *fi, enum gsm48_reject_value result) { struct auth_fsm_priv *afp = fi->priv; struct vlr_subscr *vsub = afp->vsub; LOGPFSM(fi, "Authentication terminating with result %s\n", - vlr_auth_fsm_result_name(res)); + vlr_auth_fsm_result_name(result)); /* Do one final state transition (mostly for logging purpose) */ - if (res == VLR_AUTH_RES_PASSED) + if (!result) osmo_fsm_inst_state_chg(fi, VLR_SUB_AS_AUTHENTICATED, 0, 0); else osmo_fsm_inst_state_chg(fi, VLR_SUB_AS_AUTH_FAILED, 0, 0); /* return the result to the parent FSM */ - osmo_fsm_inst_term(fi, OSMO_FSM_TERM_REGULAR, &res); + osmo_fsm_inst_term(fi, OSMO_FSM_TERM_REGULAR, &result); vsub->auth_fsm = NULL; } @@ -274,7 +272,7 @@ LOGPFSML(fi, LOGL_ERROR, "A previous check ensured that an" " auth tuple was available, but now there is in fact" " none.\n"); - auth_fsm_term(fi, VLR_AUTH_RES_PROC_ERR); + auth_fsm_term(fi, GSM48_REJECT_NETWORK_FAILURE); return -1; } @@ -350,7 +348,7 @@ goto pass; } /* result = procedure error */ - auth_fsm_term(fi, VLR_AUTH_RES_PROC_ERR); + auth_fsm_term(fi, GSM48_REJECT_NETWORK_FAILURE); return; } @@ -362,8 +360,8 @@ case VLR_AUTH_E_HLR_SAI_NACK: auth_fsm_term(fi, gsup->cause == GMM_CAUSE_IMSI_UNKNOWN? - VLR_AUTH_RES_UNKNOWN_SUBSCR - : VLR_AUTH_RES_PROC_ERR); + GSM48_REJECT_IMSI_UNKNOWN_IN_HLR + : GSM48_REJECT_NETWORK_FAILURE); break; } @@ -396,10 +394,10 @@ VLR_SUB_AS_WAIT_ID_IMSI, vlr_timer(vlr, 3270), 3270); } else { - auth_fsm_term(fi, VLR_AUTH_RES_AUTH_FAILED); + auth_fsm_term(fi, GSM48_REJECT_ILLEGAL_MS); } } else { - auth_fsm_term(fi, VLR_AUTH_RES_PASSED); + auth_fsm_term(fi, 0); } break; case VLR_AUTH_E_MS_AUTH_FAIL: @@ -411,7 +409,7 @@ VLR_SUB_AS_NEEDS_AUTH_WAIT_SAI_RESYNC, GSM_29002_TIMER_M, 0); } else - auth_fsm_term(fi, VLR_AUTH_RES_AUTH_FAILED); + auth_fsm_term(fi, GSM48_REJECT_ILLEGAL_MS); break; } } @@ -431,7 +429,7 @@ gsup->cause != GMM_CAUSE_IMSI_UNKNOWN) || (event == VLR_AUTH_E_HLR_SAI_ABORT)) { /* result = procedure error */ - auth_fsm_term(fi, VLR_AUTH_RES_PROC_ERR); + auth_fsm_term(fi, GSM48_REJECT_NETWORK_FAILURE); } switch (event) { case VLR_AUTH_E_HLR_SAI_ACK: @@ -441,8 +439,8 @@ case VLR_AUTH_E_HLR_SAI_NACK: auth_fsm_term(fi, gsup->cause == GMM_CAUSE_IMSI_UNKNOWN? - VLR_AUTH_RES_UNKNOWN_SUBSCR - : VLR_AUTH_RES_PROC_ERR); + GSM48_REJECT_IMSI_UNKNOWN_IN_HLR + : GSM48_REJECT_NETWORK_FAILURE); break; } @@ -476,16 +474,16 @@ vlr_timer(vlr, 3270), 3270); } else { /* Result = Aborted */ - auth_fsm_term(fi, VLR_AUTH_RES_ABORTED); + auth_fsm_term(fi, GSM48_REJECT_SYNCH_FAILURE); } } else { /* Result = Pass */ - auth_fsm_term(fi, VLR_AUTH_RES_PASSED); + auth_fsm_term(fi, 0); } break; case VLR_AUTH_E_MS_AUTH_FAIL: /* Second failure: Result = Fail */ - auth_fsm_term(fi, VLR_AUTH_RES_AUTH_FAILED); + auth_fsm_term(fi, GSM48_REJECT_SYNCH_FAILURE); break; } } diff --git a/src/libvlr/vlr_auth_fsm.h b/src/libvlr/vlr_auth_fsm.h index 226435f..618462f 100644 --- a/src/libvlr/vlr_auth_fsm.h +++ b/src/libvlr/vlr_auth_fsm.h @@ -11,21 +11,6 @@ const uint8_t *auts; }; -/* Result communicated back to parent FMS */ -enum vlr_auth_fsm_result { - VLR_AUTH_RES_ABORTED, - VLR_AUTH_RES_UNKNOWN_SUBSCR, - VLR_AUTH_RES_PROC_ERR, - VLR_AUTH_RES_AUTH_FAILED, - VLR_AUTH_RES_PASSED, -}; - -extern const struct value_string vlr_auth_fsm_result_names[]; -static inline const char *vlr_auth_fsm_result_name(enum vlr_auth_fsm_result val) -{ - return get_value_string(vlr_auth_fsm_result_names, val); -} - enum vlr_fsm_auth_event { VLR_AUTH_E_START, /* TS 23.018 OAS_VLR1(2): SendAuthInfo ACK from HLR */ diff --git a/src/libvlr/vlr_lu_fsm.c b/src/libvlr/vlr_lu_fsm.c index 908e0e3..3073bd6 100644 --- a/src/libvlr/vlr_lu_fsm.c +++ b/src/libvlr/vlr_lu_fsm.c @@ -741,11 +741,10 @@ _lu_fsm_done(fi, VLR_FSM_RESULT_SUCCESS); } -static void lu_fsm_failure(struct osmo_fsm_inst *fi, uint8_t rej_cause) +static void lu_fsm_failure(struct osmo_fsm_inst *fi, enum gsm48_reject_value rej_cause) { struct lu_fsm_priv *lfp = lu_fsm_fi_priv(fi); - if (rej_cause) - lfp->vlr->ops.tx_lu_rej(lfp->msc_conn_ref, rej_cause); + lfp->vlr->ops.tx_lu_rej(lfp->msc_conn_ref, rej_cause ? : GSM48_REJECT_NETWORK_FAILURE); _lu_fsm_done(fi, VLR_FSM_RESULT_FAILURE); } @@ -1097,44 +1096,19 @@ void *data) { struct lu_fsm_priv *lfp = lu_fsm_fi_priv(fi); - enum vlr_auth_fsm_result *res = data; - uint8_t rej_cause = 0; + enum gsm48_reject_value *res = data; OSMO_ASSERT(event == VLR_ULA_E_AUTH_RES); lfp->upd_hlr_vlr_fsm = NULL; - if (res) { - switch (*res) { - case VLR_AUTH_RES_PASSED: - /* Result == Pass */ - vlr_loc_upd_post_auth(fi); - return; - case VLR_AUTH_RES_ABORTED: - /* go to Idle with no response */ - rej_cause = 0; - break; - case VLR_AUTH_RES_UNKNOWN_SUBSCR: - /* FIXME: delete subscribe record */ - rej_cause = GSM48_REJECT_IMSI_UNKNOWN_IN_HLR; - break; - case VLR_AUTH_RES_AUTH_FAILED: - /* cause = illegal subscriber */ - rej_cause = GSM48_REJECT_ILLEGAL_MS; - break; - case VLR_AUTH_RES_PROC_ERR: - /* cause = system failure */ - rej_cause = GSM48_REJECT_NETWORK_FAILURE; - break; - default: - LOGPFSML(fi, LOGL_ERROR, "event without effect: %s\n", - osmo_fsm_event_name(fi->fsm, event)); - break; - } - } else - rej_cause = GSM48_REJECT_NETWORK_FAILURE; + if (!res || *res) { + lu_fsm_failure(fi, res? *res : GSM48_REJECT_NETWORK_FAILURE); + return; + } - lu_fsm_failure(fi, rej_cause); + /* Result == Pass */ + vlr_loc_upd_post_auth(fi); } static void lu_fsm_wait_ciph(struct osmo_fsm_inst *fi, uint32_t event, @@ -1489,14 +1463,20 @@ return fi; } -/* Gracefully terminate an FSM created by vlr_loc_update() in case of external - * timeout (i.e. from MSC). */ -void vlr_loc_update_conn_timeout(struct osmo_fsm_inst *fi) +void vlr_loc_update_cancel(struct osmo_fsm_inst *fi, + enum osmo_fsm_term_cause fsm_cause, + uint8_t gsm48_cause) { - if (!fi || fi->state == VLR_ULA_S_DONE) - return; - LOGPFSM(fi, "Connection timed out\n"); - lu_fsm_failure(fi, GSM48_REJECT_CONGESTION); + struct lu_fsm_priv *lfp; + + OSMO_ASSERT(fi); + OSMO_ASSERT(fi->fsm == &vlr_lu_fsm); + + lfp = fi->priv; + lfp->rej_cause = gsm48_cause; + + if (fi->state != VLR_ULA_S_DONE) + lu_fsm_failure(fi, gsm48_cause); } void vlr_lu_fsm_init(void) diff --git a/tests/msc_vlr/msc_vlr_test_authen_reuse.err b/tests/msc_vlr/msc_vlr_test_authen_reuse.err index ddd48eb..7ac510b 100644 --- a/tests/msc_vlr/msc_vlr_test_authen_reuse.err +++ b/tests/msc_vlr/msc_vlr_test_authen_reuse.err @@ -58,7 +58,7 @@ DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP DVLR SUBSCR(IMSI:901700000010650) AUTH on GERAN received SRES/RES: e229c19e791f2e41 (8 bytes) DVLR SUBSCR(IMSI:901700000010650) AUTH established UMTS security context -DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result VLR_AUTH_RES_PASSED +DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Removing from parent vlr_lu_fsm(LU:901700000010650) @@ -230,23 +230,22 @@ DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP DVLR SUBSCR(MSISDN:42342) AUTH on GERAN received SRES/RES: e229c19e791f2e41 (8 bytes) DVLR SUBSCR(MSISDN:42342) AUTH established UMTS security context -DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result VLR_AUTH_RES_PASSED +DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Removing from parent Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650) DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Freeing instance DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Deallocated DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: Received Event PR_ARQ_E_AUTH_RES -DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: got VLR_AUTH_RES_PASSED DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2() DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2_post_ciph() DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2_post_vlr() DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_post_pres() DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_post_trace() DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_post_imei() -DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: proc_arq_fsm_done(VLR_PR_ARQ_RES_PASSED) +DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: proc_arq_fsm_done(PASSED) DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: state_chg to PR_ARQ_S_DONE -DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED +DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_DONE}: Process Access Request result: PASSED - sending CM Service Accept for MSISDN:42342 DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_AUTH_CIPH}: Received Event SUBSCR_CONN_E_ACCEPTED DREF MSISDN:42342: MSC conn use + cm_service == 2 (0xa) @@ -353,23 +352,22 @@ DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP DVLR SUBSCR(MSISDN:42342) AUTH on GERAN received SRES/RES: 7db47cf7f81e4dc7 (8 bytes) DVLR SUBSCR(MSISDN:42342) AUTH established UMTS security context -DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result VLR_AUTH_RES_PASSED +DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Removing from parent Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650) DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Freeing instance DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Deallocated DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: Received Event PR_ARQ_E_AUTH_RES -DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: got VLR_AUTH_RES_PASSED DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2() DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2_post_ciph() DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2_post_vlr() DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_post_pres() DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_post_trace() DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_post_imei() -DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: proc_arq_fsm_done(VLR_PR_ARQ_RES_PASSED) +DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: proc_arq_fsm_done(PASSED) DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: state_chg to PR_ARQ_S_DONE -DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED +DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_DONE}: Process Access Request result: PASSED - sending CM Service Accept for MSISDN:42342 DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_AUTH_CIPH}: Received Event SUBSCR_CONN_E_ACCEPTED DREF MSISDN:42342: MSC conn use + cm_service == 2 (0xa) @@ -425,11 +423,12 @@ DMM IMSI DETACH INDICATION: MI(IMSI)=901700000010650 DREF VLR subscr MSISDN:42342 usage increases to: 2 DMM IMSI DETACH for MSISDN:42342 +DREF VLR subscr MSISDN:42342 usage increases to: 3 +DREF VLR subscr MSISDN:42342 usage decreases to: 2 DREF VLR subscr MSISDN:42342 usage decreases to: 1 DREF VLR subscr MSISDN:42342 usage decreases to: 0 DREF freeing VLR subscr MSISDN:42342 DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_CN_CLOSE -DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: Close event, cause 0 DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASING DREF unknown: MSC conn use + release == 2 (0x101) - BSSAP Clear --RAN_GERAN_A--> MS @@ -506,7 +505,7 @@ DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP DVLR SUBSCR(IMSI:901700000010650) AUTH on UTRAN received RES: e229c19e791f2e41 (8 bytes) DVLR SUBSCR(IMSI:901700000010650) AUTH established UMTS security context -DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result VLR_AUTH_RES_PASSED +DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Removing from parent vlr_lu_fsm(LU:901700000010650) @@ -690,14 +689,13 @@ DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP DVLR SUBSCR(MSISDN:42342) AUTH on UTRAN received RES: e229c19e791f2e41 (8 bytes) DVLR SUBSCR(MSISDN:42342) AUTH established UMTS security context -DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result VLR_AUTH_RES_PASSED +DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Removing from parent Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650) DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Freeing instance DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Deallocated DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: Received Event PR_ARQ_E_AUTH_RES -DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: got VLR_AUTH_RES_PASSED DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2() DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: Set Ciphering Mode DMM -> SECURITY MODE CONTROL MSISDN:42342 @@ -719,9 +717,9 @@ DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_pres() DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_trace() DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_imei() -DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_CIPH}: proc_arq_fsm_done(VLR_PR_ARQ_RES_PASSED) +DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_CIPH}: proc_arq_fsm_done(PASSED) DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_CIPH}: state_chg to PR_ARQ_S_DONE -DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED +DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_DONE}: Process Access Request result: PASSED DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_AUTH_CIPH}: Received Event SUBSCR_CONN_E_ACCEPTED DREF MSISDN:42342: MSC conn use + cm_service == 1 (0x8) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_AUTH_CIPH}: state_chg to SUBSCR_CONN_S_ACCEPTED @@ -826,14 +824,13 @@ DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP DVLR SUBSCR(MSISDN:42342) AUTH on UTRAN received RES: 7db47cf7f81e4dc7 (8 bytes) DVLR SUBSCR(MSISDN:42342) AUTH established UMTS security context -DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result VLR_AUTH_RES_PASSED +DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Removing from parent Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650) DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Freeing instance DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Deallocated DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: Received Event PR_ARQ_E_AUTH_RES -DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: got VLR_AUTH_RES_PASSED DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2() DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: Set Ciphering Mode DMM -> SECURITY MODE CONTROL MSISDN:42342 @@ -855,9 +852,9 @@ DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_pres() DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_trace() DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_imei() -DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_CIPH}: proc_arq_fsm_done(VLR_PR_ARQ_RES_PASSED) +DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_CIPH}: proc_arq_fsm_done(PASSED) DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_CIPH}: state_chg to PR_ARQ_S_DONE -DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED +DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_DONE}: Process Access Request result: PASSED DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_AUTH_CIPH}: Received Event SUBSCR_CONN_E_ACCEPTED DREF MSISDN:42342: MSC conn use + cm_service == 1 (0x8) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_AUTH_CIPH}: state_chg to SUBSCR_CONN_S_ACCEPTED @@ -911,11 +908,12 @@ DMM IMSI DETACH INDICATION: MI(IMSI)=901700000010650 DREF VLR subscr MSISDN:42342 usage increases to: 2 DMM IMSI DETACH for MSISDN:42342 +DREF VLR subscr MSISDN:42342 usage increases to: 3 +DREF VLR subscr MSISDN:42342 usage decreases to: 2 DREF VLR subscr MSISDN:42342 usage decreases to: 1 DREF VLR subscr MSISDN:42342 usage decreases to: 0 DREF freeing VLR subscr MSISDN:42342 DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_CN_CLOSE -DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: Close event, cause 0 DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASING DREF unknown: MSC conn use + release == 2 (0x101) - Iu Release --RAN_UTRAN_IU--> MS @@ -992,7 +990,7 @@ DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP DVLR SUBSCR(IMSI:901700000010650) AUTH on GERAN received SRES/RES: e229c19e791f2e41 (8 bytes) DVLR SUBSCR(IMSI:901700000010650) AUTH established UMTS security context -DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result VLR_AUTH_RES_PASSED +DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Removing from parent vlr_lu_fsm(LU:901700000010650) @@ -1164,23 +1162,22 @@ DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP DVLR SUBSCR(MSISDN:42342) AUTH on GERAN received SRES/RES: e229c19e791f2e41 (8 bytes) DVLR SUBSCR(MSISDN:42342) AUTH established UMTS security context -DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result VLR_AUTH_RES_PASSED +DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Removing from parent Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650) DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Freeing instance DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Deallocated DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: Received Event PR_ARQ_E_AUTH_RES -DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: got VLR_AUTH_RES_PASSED DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2() DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2_post_ciph() DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2_post_vlr() DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_post_pres() DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_post_trace() DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_post_imei() -DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: proc_arq_fsm_done(VLR_PR_ARQ_RES_PASSED) +DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: proc_arq_fsm_done(PASSED) DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: state_chg to PR_ARQ_S_DONE -DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED +DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_DONE}: Process Access Request result: PASSED - sending CM Service Accept for MSISDN:42342 DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_AUTH_CIPH}: Received Event SUBSCR_CONN_E_ACCEPTED DREF MSISDN:42342: MSC conn use + cm_service == 2 (0xa) @@ -1273,23 +1270,22 @@ DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP DVLR SUBSCR(MSISDN:42342) AUTH on GERAN received SRES/RES: e229c19e791f2e41 (8 bytes) DVLR SUBSCR(MSISDN:42342) AUTH established UMTS security context -DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result VLR_AUTH_RES_PASSED +DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Removing from parent Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650) DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Freeing instance DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Deallocated DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: Received Event PR_ARQ_E_AUTH_RES -DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: got VLR_AUTH_RES_PASSED DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2() DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2_post_ciph() DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2_post_vlr() DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_post_pres() DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_post_trace() DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_post_imei() -DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: proc_arq_fsm_done(VLR_PR_ARQ_RES_PASSED) +DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: proc_arq_fsm_done(PASSED) DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: state_chg to PR_ARQ_S_DONE -DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED +DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_DONE}: Process Access Request result: PASSED - sending CM Service Accept for MSISDN:42342 DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_AUTH_CIPH}: Received Event SUBSCR_CONN_E_ACCEPTED DREF MSISDN:42342: MSC conn use + cm_service == 2 (0xa) @@ -1382,23 +1378,22 @@ DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP DVLR SUBSCR(MSISDN:42342) AUTH on GERAN received SRES/RES: e229c19e791f2e41 (8 bytes) DVLR SUBSCR(MSISDN:42342) AUTH established UMTS security context -DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result VLR_AUTH_RES_PASSED +DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Removing from parent Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650) DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Freeing instance DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Deallocated DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: Received Event PR_ARQ_E_AUTH_RES -DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: got VLR_AUTH_RES_PASSED DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2() DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2_post_ciph() DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2_post_vlr() DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_post_pres() DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_post_trace() DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_post_imei() -DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: proc_arq_fsm_done(VLR_PR_ARQ_RES_PASSED) +DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: proc_arq_fsm_done(PASSED) DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: state_chg to PR_ARQ_S_DONE -DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED +DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_DONE}: Process Access Request result: PASSED - sending CM Service Accept for MSISDN:42342 DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_AUTH_CIPH}: Received Event SUBSCR_CONN_E_ACCEPTED DREF MSISDN:42342: MSC conn use + cm_service == 2 (0xa) @@ -1454,11 +1449,12 @@ DMM IMSI DETACH INDICATION: MI(IMSI)=901700000010650 DREF VLR subscr MSISDN:42342 usage increases to: 2 DMM IMSI DETACH for MSISDN:42342 +DREF VLR subscr MSISDN:42342 usage increases to: 3 +DREF VLR subscr MSISDN:42342 usage decreases to: 2 DREF VLR subscr MSISDN:42342 usage decreases to: 1 DREF VLR subscr MSISDN:42342 usage decreases to: 0 DREF freeing VLR subscr MSISDN:42342 DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_CN_CLOSE -DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: Close event, cause 0 DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASING DREF unknown: MSC conn use + release == 2 (0x101) - BSSAP Clear --RAN_GERAN_A--> MS @@ -1535,7 +1531,7 @@ DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP DVLR SUBSCR(IMSI:901700000010650) AUTH on UTRAN received RES: e229c19e791f2e41 (8 bytes) DVLR SUBSCR(IMSI:901700000010650) AUTH established UMTS security context -DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result VLR_AUTH_RES_PASSED +DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Removing from parent vlr_lu_fsm(LU:901700000010650) @@ -1719,14 +1715,13 @@ DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP DVLR SUBSCR(MSISDN:42342) AUTH on UTRAN received RES: e229c19e791f2e41 (8 bytes) DVLR SUBSCR(MSISDN:42342) AUTH established UMTS security context -DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result VLR_AUTH_RES_PASSED +DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Removing from parent Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650) DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Freeing instance DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Deallocated DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: Received Event PR_ARQ_E_AUTH_RES -DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: got VLR_AUTH_RES_PASSED DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2() DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: Set Ciphering Mode DMM -> SECURITY MODE CONTROL MSISDN:42342 @@ -1748,9 +1743,9 @@ DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_pres() DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_trace() DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_imei() -DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_CIPH}: proc_arq_fsm_done(VLR_PR_ARQ_RES_PASSED) +DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_CIPH}: proc_arq_fsm_done(PASSED) DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_CIPH}: state_chg to PR_ARQ_S_DONE -DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED +DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_DONE}: Process Access Request result: PASSED DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_AUTH_CIPH}: Received Event SUBSCR_CONN_E_ACCEPTED DREF MSISDN:42342: MSC conn use + cm_service == 1 (0x8) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_AUTH_CIPH}: state_chg to SUBSCR_CONN_S_ACCEPTED @@ -1841,14 +1836,13 @@ DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP DVLR SUBSCR(MSISDN:42342) AUTH on UTRAN received RES: e229c19e791f2e41 (8 bytes) DVLR SUBSCR(MSISDN:42342) AUTH established UMTS security context -DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result VLR_AUTH_RES_PASSED +DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Removing from parent Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650) DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Freeing instance DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Deallocated DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: Received Event PR_ARQ_E_AUTH_RES -DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: got VLR_AUTH_RES_PASSED DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2() DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: Set Ciphering Mode DMM -> SECURITY MODE CONTROL MSISDN:42342 @@ -1870,9 +1864,9 @@ DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_pres() DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_trace() DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_imei() -DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_CIPH}: proc_arq_fsm_done(VLR_PR_ARQ_RES_PASSED) +DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_CIPH}: proc_arq_fsm_done(PASSED) DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_CIPH}: state_chg to PR_ARQ_S_DONE -DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED +DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_DONE}: Process Access Request result: PASSED DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_AUTH_CIPH}: Received Event SUBSCR_CONN_E_ACCEPTED DREF MSISDN:42342: MSC conn use + cm_service == 1 (0x8) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_AUTH_CIPH}: state_chg to SUBSCR_CONN_S_ACCEPTED @@ -1963,14 +1957,13 @@ DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP DVLR SUBSCR(MSISDN:42342) AUTH on UTRAN received RES: e229c19e791f2e41 (8 bytes) DVLR SUBSCR(MSISDN:42342) AUTH established UMTS security context -DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result VLR_AUTH_RES_PASSED +DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Removing from parent Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650) DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Freeing instance DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Deallocated DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: Received Event PR_ARQ_E_AUTH_RES -DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: got VLR_AUTH_RES_PASSED DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2() DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: Set Ciphering Mode DMM -> SECURITY MODE CONTROL MSISDN:42342 @@ -1992,9 +1985,9 @@ DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_pres() DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_trace() DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_imei() -DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_CIPH}: proc_arq_fsm_done(VLR_PR_ARQ_RES_PASSED) +DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_CIPH}: proc_arq_fsm_done(PASSED) DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_CIPH}: state_chg to PR_ARQ_S_DONE -DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED +DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_DONE}: Process Access Request result: PASSED DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_AUTH_CIPH}: Received Event SUBSCR_CONN_E_ACCEPTED DREF MSISDN:42342: MSC conn use + cm_service == 1 (0x8) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_AUTH_CIPH}: state_chg to SUBSCR_CONN_S_ACCEPTED @@ -2048,11 +2041,12 @@ DMM IMSI DETACH INDICATION: MI(IMSI)=901700000010650 DREF VLR subscr MSISDN:42342 usage increases to: 2 DMM IMSI DETACH for MSISDN:42342 +DREF VLR subscr MSISDN:42342 usage increases to: 3 +DREF VLR subscr MSISDN:42342 usage decreases to: 2 DREF VLR subscr MSISDN:42342 usage decreases to: 1 DREF VLR subscr MSISDN:42342 usage decreases to: 0 DREF freeing VLR subscr MSISDN:42342 DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_CN_CLOSE -DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: Close event, cause 0 DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASING DREF unknown: MSC conn use + release == 2 (0x101) - Iu Release --RAN_UTRAN_IU--> MS @@ -2129,7 +2123,7 @@ DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP DVLR SUBSCR(IMSI:901700000010650) AUTH on GERAN received SRES/RES: e229c19e791f2e41 (8 bytes) DVLR SUBSCR(IMSI:901700000010650) AUTH established UMTS security context -DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result VLR_AUTH_RES_PASSED +DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Removing from parent vlr_lu_fsm(LU:901700000010650) @@ -2315,23 +2309,22 @@ DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP DVLR SUBSCR(MSISDN:42342) AUTH on GERAN received SRES/RES: 7db47cf7f81e4dc7 (8 bytes) DVLR SUBSCR(MSISDN:42342) AUTH established UMTS security context -DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result VLR_AUTH_RES_PASSED +DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Removing from parent Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650) DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Freeing instance DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Deallocated DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: Received Event PR_ARQ_E_AUTH_RES -DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: got VLR_AUTH_RES_PASSED DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2() DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2_post_ciph() DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2_post_vlr() DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_post_pres() DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_post_trace() DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_post_imei() -DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: proc_arq_fsm_done(VLR_PR_ARQ_RES_PASSED) +DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: proc_arq_fsm_done(PASSED) DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: state_chg to PR_ARQ_S_DONE -DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED +DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_DONE}: Process Access Request result: PASSED - sending CM Service Accept for MSISDN:42342 DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_AUTH_CIPH}: Received Event SUBSCR_CONN_E_ACCEPTED DREF MSISDN:42342: MSC conn use + cm_service == 2 (0xa) @@ -2387,11 +2380,12 @@ DMM IMSI DETACH INDICATION: MI(IMSI)=901700000010650 DREF VLR subscr MSISDN:42342 usage increases to: 2 DMM IMSI DETACH for MSISDN:42342 +DREF VLR subscr MSISDN:42342 usage increases to: 3 +DREF VLR subscr MSISDN:42342 usage decreases to: 2 DREF VLR subscr MSISDN:42342 usage decreases to: 1 DREF VLR subscr MSISDN:42342 usage decreases to: 0 DREF freeing VLR subscr MSISDN:42342 DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_CN_CLOSE -DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: Close event, cause 0 DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASING DREF unknown: MSC conn use + release == 2 (0x101) - BSSAP Clear --RAN_GERAN_A--> MS @@ -2468,7 +2462,7 @@ DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP DVLR SUBSCR(IMSI:901700000010650) AUTH on UTRAN received RES: e229c19e791f2e41 (8 bytes) DVLR SUBSCR(IMSI:901700000010650) AUTH established UMTS security context -DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result VLR_AUTH_RES_PASSED +DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Removing from parent vlr_lu_fsm(LU:901700000010650) @@ -2666,14 +2660,13 @@ DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP DVLR SUBSCR(MSISDN:42342) AUTH on UTRAN received RES: 7db47cf7f81e4dc7 (8 bytes) DVLR SUBSCR(MSISDN:42342) AUTH established UMTS security context -DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result VLR_AUTH_RES_PASSED +DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Removing from parent Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650) DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Freeing instance DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Deallocated DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: Received Event PR_ARQ_E_AUTH_RES -DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: got VLR_AUTH_RES_PASSED DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2() DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: Set Ciphering Mode DMM -> SECURITY MODE CONTROL MSISDN:42342 @@ -2695,9 +2688,9 @@ DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_pres() DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_trace() DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_imei() -DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_CIPH}: proc_arq_fsm_done(VLR_PR_ARQ_RES_PASSED) +DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_CIPH}: proc_arq_fsm_done(PASSED) DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_CIPH}: state_chg to PR_ARQ_S_DONE -DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED +DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_DONE}: Process Access Request result: PASSED DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_AUTH_CIPH}: Received Event SUBSCR_CONN_E_ACCEPTED DREF MSISDN:42342: MSC conn use + cm_service == 1 (0x8) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_AUTH_CIPH}: state_chg to SUBSCR_CONN_S_ACCEPTED @@ -2751,11 +2744,12 @@ DMM IMSI DETACH INDICATION: MI(IMSI)=901700000010650 DREF VLR subscr MSISDN:42342 usage increases to: 2 DMM IMSI DETACH for MSISDN:42342 +DREF VLR subscr MSISDN:42342 usage increases to: 3 +DREF VLR subscr MSISDN:42342 usage decreases to: 2 DREF VLR subscr MSISDN:42342 usage decreases to: 1 DREF VLR subscr MSISDN:42342 usage decreases to: 0 DREF freeing VLR subscr MSISDN:42342 DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_CN_CLOSE -DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: Close event, cause 0 DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASING DREF unknown: MSC conn use + release == 2 (0x101) - Iu Release --RAN_UTRAN_IU--> MS diff --git a/tests/msc_vlr/msc_vlr_test_call.err b/tests/msc_vlr/msc_vlr_test_call.err index 4956616..1918357 100644 --- a/tests/msc_vlr/msc_vlr_test_call.err +++ b/tests/msc_vlr/msc_vlr_test_call.err @@ -59,7 +59,7 @@ DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP DVLR SUBSCR(IMSI:901700000010650) AUTH on UTRAN received RES: e229c19e791f2e41 (8 bytes) DVLR SUBSCR(IMSI:901700000010650) AUTH established UMTS security context -DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result VLR_AUTH_RES_PASSED +DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Removing from parent vlr_lu_fsm(LU:901700000010650) @@ -229,14 +229,13 @@ DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP DVLR SUBSCR(MSISDN:42342) AUTH on UTRAN received RES: 7db47cf7f81e4dc7 (8 bytes) DVLR SUBSCR(MSISDN:42342) AUTH established UMTS security context -DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result VLR_AUTH_RES_PASSED +DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Removing from parent Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650) DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Freeing instance DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Deallocated DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: Received Event PR_ARQ_E_AUTH_RES -DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: got VLR_AUTH_RES_PASSED DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2() DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: Set Ciphering Mode DMM -> SECURITY MODE CONTROL MSISDN:42342 @@ -258,9 +257,9 @@ DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_pres() DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_trace() DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_imei() -DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_CIPH}: proc_arq_fsm_done(VLR_PR_ARQ_RES_PASSED) +DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_CIPH}: proc_arq_fsm_done(PASSED) DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_CIPH}: state_chg to PR_ARQ_S_DONE -DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED +DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_DONE}: Process Access Request result: PASSED DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_AUTH_CIPH}: Received Event SUBSCR_CONN_E_ACCEPTED DREF MSISDN:42342: MSC conn use + cm_service == 1 (0x8) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_AUTH_CIPH}: state_chg to SUBSCR_CONN_S_ACCEPTED @@ -438,7 +437,7 @@ DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP DVLR SUBSCR(IMSI:901700000010650) AUTH on UTRAN received RES: e229c19e791f2e41 (8 bytes) DVLR SUBSCR(IMSI:901700000010650) AUTH established UMTS security context -DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result VLR_AUTH_RES_PASSED +DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Removing from parent vlr_lu_fsm(LU:901700000010650) @@ -617,14 +616,13 @@ DVLR VLR_Authenticate(PAGING_RESP:901700000010650){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP DVLR SUBSCR(MSISDN:42342) AUTH on UTRAN received RES: 7db47cf7f81e4dc7 (8 bytes) DVLR SUBSCR(MSISDN:42342) AUTH established UMTS security context -DVLR VLR_Authenticate(PAGING_RESP:901700000010650){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result VLR_AUTH_RES_PASSED +DVLR VLR_Authenticate(PAGING_RESP:901700000010650){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED DVLR VLR_Authenticate(PAGING_RESP:901700000010650){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED DVLR VLR_Authenticate(PAGING_RESP:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DVLR VLR_Authenticate(PAGING_RESP:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Removing from parent Process_Access_Request_VLR(PAGING_RESP:901700000010650) DVLR VLR_Authenticate(PAGING_RESP:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Freeing instance DVLR VLR_Authenticate(PAGING_RESP:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Deallocated DVLR Process_Access_Request_VLR(PAGING_RESP:901700000010650){PR_ARQ_S_WAIT_AUTH}: Received Event PR_ARQ_E_AUTH_RES -DVLR Process_Access_Request_VLR(PAGING_RESP:901700000010650){PR_ARQ_S_WAIT_AUTH}: got VLR_AUTH_RES_PASSED DVLR Process_Access_Request_VLR(PAGING_RESP:901700000010650){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2() DVLR Process_Access_Request_VLR(PAGING_RESP:901700000010650){PR_ARQ_S_WAIT_AUTH}: Set Ciphering Mode DMM -> SECURITY MODE CONTROL MSISDN:42342 @@ -645,9 +643,9 @@ DVLR Process_Access_Request_VLR(PAGING_RESP:901700000010650){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_pres() DVLR Process_Access_Request_VLR(PAGING_RESP:901700000010650){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_trace() DVLR Process_Access_Request_VLR(PAGING_RESP:901700000010650){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_imei() -DVLR Process_Access_Request_VLR(PAGING_RESP:901700000010650){PR_ARQ_S_WAIT_CIPH}: proc_arq_fsm_done(VLR_PR_ARQ_RES_PASSED) +DVLR Process_Access_Request_VLR(PAGING_RESP:901700000010650){PR_ARQ_S_WAIT_CIPH}: proc_arq_fsm_done(PASSED) DVLR Process_Access_Request_VLR(PAGING_RESP:901700000010650){PR_ARQ_S_WAIT_CIPH}: state_chg to PR_ARQ_S_DONE -DVLR Process_Access_Request_VLR(PAGING_RESP:901700000010650){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED +DVLR Process_Access_Request_VLR(PAGING_RESP:901700000010650){PR_ARQ_S_DONE}: Process Access Request result: PASSED DMM Subscr_Conn(PAGING_RESP:901700000010650){SUBSCR_CONN_S_AUTH_CIPH}: Received Event SUBSCR_CONN_E_ACCEPTED DPAG Paging success for MSISDN:42342 (event=0) DPAG Calling paging cbfn. @@ -822,7 +820,7 @@ DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP DVLR SUBSCR(IMSI:901700000010650) AUTH on UTRAN received RES: e229c19e791f2e41 (8 bytes) DVLR SUBSCR(IMSI:901700000010650) AUTH established UMTS security context -DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result VLR_AUTH_RES_PASSED +DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Removing from parent vlr_lu_fsm(LU:901700000010650) @@ -1001,14 +999,13 @@ DVLR VLR_Authenticate(PAGING_RESP:901700000010650){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP DVLR SUBSCR(MSISDN:42342) AUTH on UTRAN received RES: 7db47cf7f81e4dc7 (8 bytes) DVLR SUBSCR(MSISDN:42342) AUTH established UMTS security context -DVLR VLR_Authenticate(PAGING_RESP:901700000010650){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result VLR_AUTH_RES_PASSED +DVLR VLR_Authenticate(PAGING_RESP:901700000010650){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED DVLR VLR_Authenticate(PAGING_RESP:901700000010650){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED DVLR VLR_Authenticate(PAGING_RESP:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DVLR VLR_Authenticate(PAGING_RESP:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Removing from parent Process_Access_Request_VLR(PAGING_RESP:901700000010650) DVLR VLR_Authenticate(PAGING_RESP:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Freeing instance DVLR VLR_Authenticate(PAGING_RESP:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Deallocated DVLR Process_Access_Request_VLR(PAGING_RESP:901700000010650){PR_ARQ_S_WAIT_AUTH}: Received Event PR_ARQ_E_AUTH_RES -DVLR Process_Access_Request_VLR(PAGING_RESP:901700000010650){PR_ARQ_S_WAIT_AUTH}: got VLR_AUTH_RES_PASSED DVLR Process_Access_Request_VLR(PAGING_RESP:901700000010650){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2() DVLR Process_Access_Request_VLR(PAGING_RESP:901700000010650){PR_ARQ_S_WAIT_AUTH}: Set Ciphering Mode DMM -> SECURITY MODE CONTROL MSISDN:42342 @@ -1029,9 +1026,9 @@ DVLR Process_Access_Request_VLR(PAGING_RESP:901700000010650){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_pres() DVLR Process_Access_Request_VLR(PAGING_RESP:901700000010650){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_trace() DVLR Process_Access_Request_VLR(PAGING_RESP:901700000010650){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_imei() -DVLR Process_Access_Request_VLR(PAGING_RESP:901700000010650){PR_ARQ_S_WAIT_CIPH}: proc_arq_fsm_done(VLR_PR_ARQ_RES_PASSED) +DVLR Process_Access_Request_VLR(PAGING_RESP:901700000010650){PR_ARQ_S_WAIT_CIPH}: proc_arq_fsm_done(PASSED) DVLR Process_Access_Request_VLR(PAGING_RESP:901700000010650){PR_ARQ_S_WAIT_CIPH}: state_chg to PR_ARQ_S_DONE -DVLR Process_Access_Request_VLR(PAGING_RESP:901700000010650){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED +DVLR Process_Access_Request_VLR(PAGING_RESP:901700000010650){PR_ARQ_S_DONE}: Process Access Request result: PASSED DMM Subscr_Conn(PAGING_RESP:901700000010650){SUBSCR_CONN_S_AUTH_CIPH}: Received Event SUBSCR_CONN_E_ACCEPTED DPAG Paging success for MSISDN:42342 (event=0) DPAG Calling paging cbfn. @@ -1074,7 +1071,6 @@ - Total time passed: 16.000046 s - The call failed, the BSC sends a BSSMAP Clear Request DMM Subscr_Conn(PAGING_RESP:901700000010650){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_CN_CLOSE -DMM Subscr_Conn(PAGING_RESP:901700000010650){SUBSCR_CONN_S_COMMUNICATING}: Close event, cause 0 DMM Subscr_Conn(PAGING_RESP:901700000010650){SUBSCR_CONN_S_COMMUNICATING}: state_chg to SUBSCR_CONN_S_RELEASING DREF MSISDN:42342: MSC conn use + release == 2 (0x110) DREF VLR subscr MSISDN:42342 usage increases to: 4 @@ -1175,7 +1171,7 @@ DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP DVLR SUBSCR(IMSI:901700000010650) AUTH on UTRAN received RES: e229c19e791f2e41 (8 bytes) DVLR SUBSCR(IMSI:901700000010650) AUTH established UMTS security context -DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result VLR_AUTH_RES_PASSED +DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Removing from parent vlr_lu_fsm(LU:901700000010650) @@ -1345,14 +1341,13 @@ DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP DVLR SUBSCR(MSISDN:42342) AUTH on UTRAN received RES: 7db47cf7f81e4dc7 (8 bytes) DVLR SUBSCR(MSISDN:42342) AUTH established UMTS security context -DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result VLR_AUTH_RES_PASSED +DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Removing from parent Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650) DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Freeing instance DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Deallocated DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: Received Event PR_ARQ_E_AUTH_RES -DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: got VLR_AUTH_RES_PASSED DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2() DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: Set Ciphering Mode DMM -> SECURITY MODE CONTROL MSISDN:42342 @@ -1374,9 +1369,9 @@ DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_pres() DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_trace() DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_imei() -DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_CIPH}: proc_arq_fsm_done(VLR_PR_ARQ_RES_PASSED) +DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_CIPH}: proc_arq_fsm_done(PASSED) DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_CIPH}: state_chg to PR_ARQ_S_DONE -DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED +DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_DONE}: Process Access Request result: PASSED DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_AUTH_CIPH}: Received Event SUBSCR_CONN_E_ACCEPTED DREF MSISDN:42342: MSC conn use + cm_service == 1 (0x8) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_AUTH_CIPH}: state_chg to SUBSCR_CONN_S_ACCEPTED @@ -1520,7 +1515,7 @@ DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP DVLR SUBSCR(IMSI:901700000010650) AUTH on UTRAN received RES: e229c19e791f2e41 (8 bytes) DVLR SUBSCR(IMSI:901700000010650) AUTH established UMTS security context -DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result VLR_AUTH_RES_PASSED +DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Removing from parent vlr_lu_fsm(LU:901700000010650) @@ -1690,14 +1685,13 @@ DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP DVLR SUBSCR(MSISDN:42342) AUTH on UTRAN received RES: 7db47cf7f81e4dc7 (8 bytes) DVLR SUBSCR(MSISDN:42342) AUTH established UMTS security context -DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result VLR_AUTH_RES_PASSED +DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Removing from parent Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650) DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Freeing instance DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Deallocated DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: Received Event PR_ARQ_E_AUTH_RES -DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: got VLR_AUTH_RES_PASSED DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2() DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: Set Ciphering Mode DMM -> SECURITY MODE CONTROL MSISDN:42342 @@ -1719,9 +1713,9 @@ DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_pres() DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_trace() DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_imei() -DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_CIPH}: proc_arq_fsm_done(VLR_PR_ARQ_RES_PASSED) +DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_CIPH}: proc_arq_fsm_done(PASSED) DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_CIPH}: state_chg to PR_ARQ_S_DONE -DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED +DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_DONE}: Process Access Request result: PASSED DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_AUTH_CIPH}: Received Event SUBSCR_CONN_E_ACCEPTED DREF MSISDN:42342: MSC conn use + cm_service == 1 (0x8) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_AUTH_CIPH}: state_chg to SUBSCR_CONN_S_ACCEPTED diff --git a/tests/msc_vlr/msc_vlr_test_gsm_authen.err b/tests/msc_vlr/msc_vlr_test_gsm_authen.err index a34fd91..24a085f 100644 --- a/tests/msc_vlr/msc_vlr_test_gsm_authen.err +++ b/tests/msc_vlr/msc_vlr_test_gsm_authen.err @@ -76,7 +76,7 @@ DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP DVLR SUBSCR(IMSI:901700000004620) AUTH on GERAN received SRES/RES: 2d8b2c3e (4 bytes) DVLR SUBSCR(IMSI:901700000004620) AUTH established GSM security context -DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result VLR_AUTH_RES_PASSED +DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_AUTHENTICATED}: Removing from parent vlr_lu_fsm(LU:901700000004620) @@ -223,23 +223,22 @@ DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000004620){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP DVLR SUBSCR(MSISDN:46071) AUTH on GERAN received SRES/RES: 20bde240 (4 bytes) DVLR SUBSCR(MSISDN:46071) AUTH established GSM security context -DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000004620){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result VLR_AUTH_RES_PASSED +DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000004620){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000004620){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000004620){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000004620){VLR_SUB_AS_AUTHENTICATED}: Removing from parent Process_Access_Request_VLR(CM_SERVICE_REQ:901700000004620) DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000004620){VLR_SUB_AS_AUTHENTICATED}: Freeing instance DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000004620){VLR_SUB_AS_AUTHENTICATED}: Deallocated DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000004620){PR_ARQ_S_WAIT_AUTH}: Received Event PR_ARQ_E_AUTH_RES -DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000004620){PR_ARQ_S_WAIT_AUTH}: got VLR_AUTH_RES_PASSED DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000004620){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2() DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000004620){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2_post_ciph() DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000004620){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2_post_vlr() DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000004620){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_post_pres() DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000004620){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_post_trace() DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000004620){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_post_imei() -DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000004620){PR_ARQ_S_WAIT_AUTH}: proc_arq_fsm_done(VLR_PR_ARQ_RES_PASSED) +DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000004620){PR_ARQ_S_WAIT_AUTH}: proc_arq_fsm_done(PASSED) DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000004620){PR_ARQ_S_WAIT_AUTH}: state_chg to PR_ARQ_S_DONE -DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000004620){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED +DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000004620){PR_ARQ_S_DONE}: Process Access Request result: PASSED - sending CM Service Accept for MSISDN:46071 DMM Subscr_Conn(CM_SERVICE_REQ:901700000004620){SUBSCR_CONN_S_AUTH_CIPH}: Received Event SUBSCR_CONN_E_ACCEPTED DREF MSISDN:46071: MSC conn use + cm_service == 2 (0xa) @@ -352,23 +351,22 @@ DVLR VLR_Authenticate(PAGING_RESP:901700000004620){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP DVLR SUBSCR(MSISDN:46071) AUTH on GERAN received SRES/RES: a29514ae (4 bytes) DVLR SUBSCR(MSISDN:46071) AUTH established GSM security context -DVLR VLR_Authenticate(PAGING_RESP:901700000004620){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result VLR_AUTH_RES_PASSED +DVLR VLR_Authenticate(PAGING_RESP:901700000004620){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED DVLR VLR_Authenticate(PAGING_RESP:901700000004620){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED DVLR VLR_Authenticate(PAGING_RESP:901700000004620){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DVLR VLR_Authenticate(PAGING_RESP:901700000004620){VLR_SUB_AS_AUTHENTICATED}: Removing from parent Process_Access_Request_VLR(PAGING_RESP:901700000004620) DVLR VLR_Authenticate(PAGING_RESP:901700000004620){VLR_SUB_AS_AUTHENTICATED}: Freeing instance DVLR VLR_Authenticate(PAGING_RESP:901700000004620){VLR_SUB_AS_AUTHENTICATED}: Deallocated DVLR Process_Access_Request_VLR(PAGING_RESP:901700000004620){PR_ARQ_S_WAIT_AUTH}: Received Event PR_ARQ_E_AUTH_RES -DVLR Process_Access_Request_VLR(PAGING_RESP:901700000004620){PR_ARQ_S_WAIT_AUTH}: got VLR_AUTH_RES_PASSED DVLR Process_Access_Request_VLR(PAGING_RESP:901700000004620){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2() DVLR Process_Access_Request_VLR(PAGING_RESP:901700000004620){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2_post_ciph() DVLR Process_Access_Request_VLR(PAGING_RESP:901700000004620){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2_post_vlr() DVLR Process_Access_Request_VLR(PAGING_RESP:901700000004620){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_post_pres() DVLR Process_Access_Request_VLR(PAGING_RESP:901700000004620){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_post_trace() DVLR Process_Access_Request_VLR(PAGING_RESP:901700000004620){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_post_imei() -DVLR Process_Access_Request_VLR(PAGING_RESP:901700000004620){PR_ARQ_S_WAIT_AUTH}: proc_arq_fsm_done(VLR_PR_ARQ_RES_PASSED) +DVLR Process_Access_Request_VLR(PAGING_RESP:901700000004620){PR_ARQ_S_WAIT_AUTH}: proc_arq_fsm_done(PASSED) DVLR Process_Access_Request_VLR(PAGING_RESP:901700000004620){PR_ARQ_S_WAIT_AUTH}: state_chg to PR_ARQ_S_DONE -DVLR Process_Access_Request_VLR(PAGING_RESP:901700000004620){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED +DVLR Process_Access_Request_VLR(PAGING_RESP:901700000004620){PR_ARQ_S_DONE}: Process Access Request result: PASSED DMM Subscr_Conn(PAGING_RESP:901700000004620){SUBSCR_CONN_S_AUTH_CIPH}: Received Event SUBSCR_CONN_E_ACCEPTED DPAG Paging success for MSISDN:46071 (event=0) DPAG Calling paging cbfn. @@ -443,11 +441,12 @@ DMM IMSI DETACH INDICATION: MI(IMSI)=901700000004620 DREF VLR subscr MSISDN:46071 usage increases to: 2 DMM IMSI DETACH for MSISDN:46071 +DREF VLR subscr MSISDN:46071 usage increases to: 3 +DREF VLR subscr MSISDN:46071 usage decreases to: 2 DREF VLR subscr MSISDN:46071 usage decreases to: 1 DREF VLR subscr MSISDN:46071 usage decreases to: 0 DREF freeing VLR subscr MSISDN:46071 DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_CN_CLOSE -DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: Close event, cause 0 DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASING DREF unknown: MSC conn use + release == 2 (0x101) - BSSAP Clear --RAN_GERAN_A--> MS @@ -542,7 +541,7 @@ DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP DVLR SUBSCR(IMSI:901700000004620) AUTH on GERAN received SRES/RES: 2d8b2c3e (4 bytes) DVLR SUBSCR(IMSI:901700000004620) AUTH established GSM security context -DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result VLR_AUTH_RES_PASSED +DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_AUTHENTICATED}: Removing from parent vlr_lu_fsm(LU:901700000004620) @@ -725,23 +724,22 @@ DVLR VLR_Authenticate(CM_SERVICE_REQ:50462976){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP DVLR SUBSCR(MSISDN:46071) AUTH on GERAN received SRES/RES: 20bde240 (4 bytes) DVLR SUBSCR(MSISDN:46071) AUTH established GSM security context -DVLR VLR_Authenticate(CM_SERVICE_REQ:50462976){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result VLR_AUTH_RES_PASSED +DVLR VLR_Authenticate(CM_SERVICE_REQ:50462976){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED DVLR VLR_Authenticate(CM_SERVICE_REQ:50462976){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED DVLR VLR_Authenticate(CM_SERVICE_REQ:50462976){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DVLR VLR_Authenticate(CM_SERVICE_REQ:50462976){VLR_SUB_AS_AUTHENTICATED}: Removing from parent Process_Access_Request_VLR(CM_SERVICE_REQ:50462976) DVLR VLR_Authenticate(CM_SERVICE_REQ:50462976){VLR_SUB_AS_AUTHENTICATED}: Freeing instance DVLR VLR_Authenticate(CM_SERVICE_REQ:50462976){VLR_SUB_AS_AUTHENTICATED}: Deallocated DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:50462976){PR_ARQ_S_WAIT_AUTH}: Received Event PR_ARQ_E_AUTH_RES -DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:50462976){PR_ARQ_S_WAIT_AUTH}: got VLR_AUTH_RES_PASSED DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:50462976){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2() DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:50462976){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2_post_ciph() DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:50462976){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2_post_vlr() DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:50462976){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_post_pres() DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:50462976){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_post_trace() DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:50462976){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_post_imei() -DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:50462976){PR_ARQ_S_WAIT_AUTH}: proc_arq_fsm_done(VLR_PR_ARQ_RES_PASSED) +DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:50462976){PR_ARQ_S_WAIT_AUTH}: proc_arq_fsm_done(PASSED) DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:50462976){PR_ARQ_S_WAIT_AUTH}: state_chg to PR_ARQ_S_DONE -DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:50462976){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED +DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:50462976){PR_ARQ_S_DONE}: Process Access Request result: PASSED - sending CM Service Accept for MSISDN:46071 DMM Subscr_Conn(CM_SERVICE_REQ:50462976){SUBSCR_CONN_S_AUTH_CIPH}: Received Event SUBSCR_CONN_E_ACCEPTED DREF MSISDN:46071: MSC conn use + cm_service == 2 (0xa) @@ -854,23 +852,22 @@ DVLR VLR_Authenticate(PAGING_RESP:50462976){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP DVLR SUBSCR(MSISDN:46071) AUTH on GERAN received SRES/RES: a29514ae (4 bytes) DVLR SUBSCR(MSISDN:46071) AUTH established GSM security context -DVLR VLR_Authenticate(PAGING_RESP:50462976){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result VLR_AUTH_RES_PASSED +DVLR VLR_Authenticate(PAGING_RESP:50462976){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED DVLR VLR_Authenticate(PAGING_RESP:50462976){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED DVLR VLR_Authenticate(PAGING_RESP:50462976){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DVLR VLR_Authenticate(PAGING_RESP:50462976){VLR_SUB_AS_AUTHENTICATED}: Removing from parent Process_Access_Request_VLR(PAGING_RESP:50462976) DVLR VLR_Authenticate(PAGING_RESP:50462976){VLR_SUB_AS_AUTHENTICATED}: Freeing instance DVLR VLR_Authenticate(PAGING_RESP:50462976){VLR_SUB_AS_AUTHENTICATED}: Deallocated DVLR Process_Access_Request_VLR(PAGING_RESP:50462976){PR_ARQ_S_WAIT_AUTH}: Received Event PR_ARQ_E_AUTH_RES -DVLR Process_Access_Request_VLR(PAGING_RESP:50462976){PR_ARQ_S_WAIT_AUTH}: got VLR_AUTH_RES_PASSED DVLR Process_Access_Request_VLR(PAGING_RESP:50462976){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2() DVLR Process_Access_Request_VLR(PAGING_RESP:50462976){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2_post_ciph() DVLR Process_Access_Request_VLR(PAGING_RESP:50462976){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2_post_vlr() DVLR Process_Access_Request_VLR(PAGING_RESP:50462976){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_post_pres() DVLR Process_Access_Request_VLR(PAGING_RESP:50462976){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_post_trace() DVLR Process_Access_Request_VLR(PAGING_RESP:50462976){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_post_imei() -DVLR Process_Access_Request_VLR(PAGING_RESP:50462976){PR_ARQ_S_WAIT_AUTH}: proc_arq_fsm_done(VLR_PR_ARQ_RES_PASSED) +DVLR Process_Access_Request_VLR(PAGING_RESP:50462976){PR_ARQ_S_WAIT_AUTH}: proc_arq_fsm_done(PASSED) DVLR Process_Access_Request_VLR(PAGING_RESP:50462976){PR_ARQ_S_WAIT_AUTH}: state_chg to PR_ARQ_S_DONE -DVLR Process_Access_Request_VLR(PAGING_RESP:50462976){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED +DVLR Process_Access_Request_VLR(PAGING_RESP:50462976){PR_ARQ_S_DONE}: Process Access Request result: PASSED DMM Subscr_Conn(PAGING_RESP:50462976){SUBSCR_CONN_S_AUTH_CIPH}: Received Event SUBSCR_CONN_E_ACCEPTED DPAG Paging success for MSISDN:46071 (event=0) DPAG Calling paging cbfn. @@ -978,7 +975,7 @@ DVLR VLR_Authenticate(LU:50462976){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP DVLR SUBSCR(MSISDN:46071) AUTH on GERAN received SRES/RES: 5afc8d72 (4 bytes) DVLR SUBSCR(MSISDN:46071) AUTH established GSM security context -DVLR VLR_Authenticate(LU:50462976){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result VLR_AUTH_RES_PASSED +DVLR VLR_Authenticate(LU:50462976){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED DVLR VLR_Authenticate(LU:50462976){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED DVLR VLR_Authenticate(LU:50462976){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DVLR VLR_Authenticate(LU:50462976){VLR_SUB_AS_AUTHENTICATED}: Removing from parent vlr_lu_fsm(LU:50462976) @@ -1118,11 +1115,12 @@ DMM IMSI DETACH INDICATION: MI(TMSI)=117835012 DREF VLR subscr MSISDN:46071 usage increases to: 2 DMM IMSI DETACH for MSISDN:46071 +DREF VLR subscr MSISDN:46071 usage increases to: 3 +DREF VLR subscr MSISDN:46071 usage decreases to: 2 DREF VLR subscr MSISDN:46071 usage decreases to: 1 DREF VLR subscr MSISDN:46071 usage decreases to: 0 DREF freeing VLR subscr MSISDN:46071 DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_CN_CLOSE -DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: Close event, cause 0 DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASING DREF unknown: MSC conn use + release == 2 (0x101) - BSSAP Clear --RAN_GERAN_A--> MS @@ -1217,7 +1215,7 @@ DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP DVLR SUBSCR(IMSI:901700000004620) AUTH on GERAN received SRES/RES: 2d8b2c3e (4 bytes) DVLR SUBSCR(IMSI:901700000004620) AUTH established GSM security context -DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result VLR_AUTH_RES_PASSED +DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_AUTHENTICATED}: Removing from parent vlr_lu_fsm(LU:901700000004620) @@ -1354,11 +1352,12 @@ DMM IMSI DETACH INDICATION: MI(IMSI)=901700000004620 DREF VLR subscr MSISDN:46071 usage increases to: 2 DMM IMSI DETACH for MSISDN:46071 +DREF VLR subscr MSISDN:46071 usage increases to: 3 +DREF VLR subscr MSISDN:46071 usage decreases to: 2 DREF VLR subscr MSISDN:46071 usage decreases to: 1 DREF VLR subscr MSISDN:46071 usage decreases to: 0 DREF freeing VLR subscr MSISDN:46071 DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_CN_CLOSE -DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: Close event, cause 0 DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASING DREF unknown: MSC conn use + release == 2 (0x101) - BSSAP Clear --RAN_GERAN_A--> MS @@ -1453,7 +1452,7 @@ DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP DVLR SUBSCR(IMSI:901700000004620) AUTH on GERAN received SRES/RES: 2d8b2c3e (4 bytes) DVLR SUBSCR(IMSI:901700000004620) AUTH established GSM security context -DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result VLR_AUTH_RES_PASSED +DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_AUTHENTICATED}: Removing from parent vlr_lu_fsm(LU:901700000004620) @@ -1622,11 +1621,12 @@ DMM IMSI DETACH INDICATION: MI(TMSI)=50462976 DREF VLR subscr MSISDN:46071 usage increases to: 2 DMM IMSI DETACH for MSISDN:46071 +DREF VLR subscr MSISDN:46071 usage increases to: 3 +DREF VLR subscr MSISDN:46071 usage decreases to: 2 DREF VLR subscr MSISDN:46071 usage decreases to: 1 DREF VLR subscr MSISDN:46071 usage decreases to: 0 DREF freeing VLR subscr MSISDN:46071 DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_CN_CLOSE -DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: Close event, cause 0 DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASING DREF unknown: MSC conn use + release == 2 (0x101) - BSSAP Clear --RAN_GERAN_A--> MS @@ -1702,7 +1702,7 @@ DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP DVLR SUBSCR(IMSI:901700000010650) AUTH on GERAN received SRES/RES: 9b36efdf (4 bytes) DVLR SUBSCR(IMSI:901700000010650) AUTH established GSM security context -DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result VLR_AUTH_RES_PASSED +DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Removing from parent vlr_lu_fsm(LU:901700000010650) @@ -1849,23 +1849,22 @@ DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP DVLR SUBSCR(MSISDN:42342) AUTH on GERAN received SRES/RES: 85aa3130 (4 bytes) DVLR SUBSCR(MSISDN:42342) AUTH established GSM security context -DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result VLR_AUTH_RES_PASSED +DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Removing from parent Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650) DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Freeing instance DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Deallocated DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: Received Event PR_ARQ_E_AUTH_RES -DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: got VLR_AUTH_RES_PASSED DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2() DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2_post_ciph() DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2_post_vlr() DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_post_pres() DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_post_trace() DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_post_imei() -DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: proc_arq_fsm_done(VLR_PR_ARQ_RES_PASSED) +DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: proc_arq_fsm_done(PASSED) DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: state_chg to PR_ARQ_S_DONE -DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED +DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_DONE}: Process Access Request result: PASSED - sending CM Service Accept for MSISDN:42342 DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_AUTH_CIPH}: Received Event SUBSCR_CONN_E_ACCEPTED DREF MSISDN:42342: MSC conn use + cm_service == 2 (0xa) @@ -1978,23 +1977,22 @@ DVLR VLR_Authenticate(PAGING_RESP:901700000010650){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP DVLR SUBSCR(MSISDN:42342) AUTH on GERAN received SRES/RES: 69d5f9fb (4 bytes) DVLR SUBSCR(MSISDN:42342) AUTH established GSM security context -DVLR VLR_Authenticate(PAGING_RESP:901700000010650){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result VLR_AUTH_RES_PASSED +DVLR VLR_Authenticate(PAGING_RESP:901700000010650){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED DVLR VLR_Authenticate(PAGING_RESP:901700000010650){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED DVLR VLR_Authenticate(PAGING_RESP:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DVLR VLR_Authenticate(PAGING_RESP:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Removing from parent Process_Access_Request_VLR(PAGING_RESP:901700000010650) DVLR VLR_Authenticate(PAGING_RESP:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Freeing instance DVLR VLR_Authenticate(PAGING_RESP:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Deallocated DVLR Process_Access_Request_VLR(PAGING_RESP:901700000010650){PR_ARQ_S_WAIT_AUTH}: Received Event PR_ARQ_E_AUTH_RES -DVLR Process_Access_Request_VLR(PAGING_RESP:901700000010650){PR_ARQ_S_WAIT_AUTH}: got VLR_AUTH_RES_PASSED DVLR Process_Access_Request_VLR(PAGING_RESP:901700000010650){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2() DVLR Process_Access_Request_VLR(PAGING_RESP:901700000010650){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2_post_ciph() DVLR Process_Access_Request_VLR(PAGING_RESP:901700000010650){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2_post_vlr() DVLR Process_Access_Request_VLR(PAGING_RESP:901700000010650){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_post_pres() DVLR Process_Access_Request_VLR(PAGING_RESP:901700000010650){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_post_trace() DVLR Process_Access_Request_VLR(PAGING_RESP:901700000010650){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_post_imei() -DVLR Process_Access_Request_VLR(PAGING_RESP:901700000010650){PR_ARQ_S_WAIT_AUTH}: proc_arq_fsm_done(VLR_PR_ARQ_RES_PASSED) +DVLR Process_Access_Request_VLR(PAGING_RESP:901700000010650){PR_ARQ_S_WAIT_AUTH}: proc_arq_fsm_done(PASSED) DVLR Process_Access_Request_VLR(PAGING_RESP:901700000010650){PR_ARQ_S_WAIT_AUTH}: state_chg to PR_ARQ_S_DONE -DVLR Process_Access_Request_VLR(PAGING_RESP:901700000010650){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED +DVLR Process_Access_Request_VLR(PAGING_RESP:901700000010650){PR_ARQ_S_DONE}: Process Access Request result: PASSED DMM Subscr_Conn(PAGING_RESP:901700000010650){SUBSCR_CONN_S_AUTH_CIPH}: Received Event SUBSCR_CONN_E_ACCEPTED DPAG Paging success for MSISDN:42342 (event=0) DPAG Calling paging cbfn. @@ -2069,11 +2067,12 @@ DMM IMSI DETACH INDICATION: MI(IMSI)=901700000010650 DREF VLR subscr MSISDN:42342 usage increases to: 2 DMM IMSI DETACH for MSISDN:42342 +DREF VLR subscr MSISDN:42342 usage increases to: 3 +DREF VLR subscr MSISDN:42342 usage decreases to: 2 DREF VLR subscr MSISDN:42342 usage decreases to: 1 DREF VLR subscr MSISDN:42342 usage decreases to: 0 DREF freeing VLR subscr MSISDN:42342 DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_CN_CLOSE -DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: Close event, cause 0 DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASING DREF unknown: MSC conn use + release == 2 (0x101) - BSSAP Clear --RAN_GERAN_A--> MS @@ -2171,7 +2170,7 @@ DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP DVLR SUBSCR(IMSI:901700000004620) AUTH on GERAN received SRES/RES: (0 bytes) DVLR SUBSCR(IMSI:901700000004620) AUTH SRES/RES missing -DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result VLR_AUTH_RES_AUTH_FAILED +DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result Illegal MS DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTH_FAILED DVLR GSUP tx: 0b010809710000004026f0 GSUP --> HLR: OSMO_GSUP_MSGT_AUTH_FAIL_REPORT: 0b010809710000004026f0 diff --git a/tests/msc_vlr/msc_vlr_test_gsm_ciph.err b/tests/msc_vlr/msc_vlr_test_gsm_ciph.err index 6f3c7ab..d5ddb6a 100644 --- a/tests/msc_vlr/msc_vlr_test_gsm_ciph.err +++ b/tests/msc_vlr/msc_vlr_test_gsm_ciph.err @@ -57,7 +57,7 @@ DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP DVLR SUBSCR(IMSI:901700000004620) AUTH on GERAN received SRES/RES: 2d8b2c3e (4 bytes) DVLR SUBSCR(IMSI:901700000004620) AUTH established GSM security context -DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result VLR_AUTH_RES_PASSED +DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_AUTHENTICATED}: Removing from parent vlr_lu_fsm(LU:901700000004620) @@ -227,14 +227,13 @@ DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000004620){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP DVLR SUBSCR(MSISDN:46071) AUTH on GERAN received SRES/RES: 20bde240 (4 bytes) DVLR SUBSCR(MSISDN:46071) AUTH established GSM security context -DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000004620){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result VLR_AUTH_RES_PASSED +DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000004620){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000004620){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000004620){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000004620){VLR_SUB_AS_AUTHENTICATED}: Removing from parent Process_Access_Request_VLR(CM_SERVICE_REQ:901700000004620) DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000004620){VLR_SUB_AS_AUTHENTICATED}: Freeing instance DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000004620){VLR_SUB_AS_AUTHENTICATED}: Deallocated DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000004620){PR_ARQ_S_WAIT_AUTH}: Received Event PR_ARQ_E_AUTH_RES -DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000004620){PR_ARQ_S_WAIT_AUTH}: got VLR_AUTH_RES_PASSED DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000004620){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2() DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000004620){PR_ARQ_S_WAIT_AUTH}: Set Ciphering Mode DMM -> CIPHER MODE COMMAND MSISDN:46071 @@ -268,9 +267,9 @@ DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000004620){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_pres() DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000004620){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_trace() DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000004620){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_imei() -DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000004620){PR_ARQ_S_WAIT_CIPH}: proc_arq_fsm_done(VLR_PR_ARQ_RES_PASSED) +DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000004620){PR_ARQ_S_WAIT_CIPH}: proc_arq_fsm_done(PASSED) DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000004620){PR_ARQ_S_WAIT_CIPH}: state_chg to PR_ARQ_S_DONE -DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000004620){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED +DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000004620){PR_ARQ_S_DONE}: Process Access Request result: PASSED DMM Subscr_Conn(CM_SERVICE_REQ:901700000004620){SUBSCR_CONN_S_AUTH_CIPH}: Received Event SUBSCR_CONN_E_ACCEPTED DREF MSISDN:46071: MSC conn use + cm_service == 1 (0x8) DMM Subscr_Conn(CM_SERVICE_REQ:901700000004620){SUBSCR_CONN_S_AUTH_CIPH}: state_chg to SUBSCR_CONN_S_ACCEPTED @@ -381,14 +380,13 @@ DVLR VLR_Authenticate(PAGING_RESP:901700000004620){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP DVLR SUBSCR(MSISDN:46071) AUTH on GERAN received SRES/RES: a29514ae (4 bytes) DVLR SUBSCR(MSISDN:46071) AUTH established GSM security context -DVLR VLR_Authenticate(PAGING_RESP:901700000004620){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result VLR_AUTH_RES_PASSED +DVLR VLR_Authenticate(PAGING_RESP:901700000004620){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED DVLR VLR_Authenticate(PAGING_RESP:901700000004620){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED DVLR VLR_Authenticate(PAGING_RESP:901700000004620){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DVLR VLR_Authenticate(PAGING_RESP:901700000004620){VLR_SUB_AS_AUTHENTICATED}: Removing from parent Process_Access_Request_VLR(PAGING_RESP:901700000004620) DVLR VLR_Authenticate(PAGING_RESP:901700000004620){VLR_SUB_AS_AUTHENTICATED}: Freeing instance DVLR VLR_Authenticate(PAGING_RESP:901700000004620){VLR_SUB_AS_AUTHENTICATED}: Deallocated DVLR Process_Access_Request_VLR(PAGING_RESP:901700000004620){PR_ARQ_S_WAIT_AUTH}: Received Event PR_ARQ_E_AUTH_RES -DVLR Process_Access_Request_VLR(PAGING_RESP:901700000004620){PR_ARQ_S_WAIT_AUTH}: got VLR_AUTH_RES_PASSED DVLR Process_Access_Request_VLR(PAGING_RESP:901700000004620){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2() DVLR Process_Access_Request_VLR(PAGING_RESP:901700000004620){PR_ARQ_S_WAIT_AUTH}: Set Ciphering Mode DMM -> CIPHER MODE COMMAND MSISDN:46071 @@ -421,9 +419,9 @@ DVLR Process_Access_Request_VLR(PAGING_RESP:901700000004620){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_pres() DVLR Process_Access_Request_VLR(PAGING_RESP:901700000004620){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_trace() DVLR Process_Access_Request_VLR(PAGING_RESP:901700000004620){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_imei() -DVLR Process_Access_Request_VLR(PAGING_RESP:901700000004620){PR_ARQ_S_WAIT_CIPH}: proc_arq_fsm_done(VLR_PR_ARQ_RES_PASSED) +DVLR Process_Access_Request_VLR(PAGING_RESP:901700000004620){PR_ARQ_S_WAIT_CIPH}: proc_arq_fsm_done(PASSED) DVLR Process_Access_Request_VLR(PAGING_RESP:901700000004620){PR_ARQ_S_WAIT_CIPH}: state_chg to PR_ARQ_S_DONE -DVLR Process_Access_Request_VLR(PAGING_RESP:901700000004620){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED +DVLR Process_Access_Request_VLR(PAGING_RESP:901700000004620){PR_ARQ_S_DONE}: Process Access Request result: PASSED DMM Subscr_Conn(PAGING_RESP:901700000004620){SUBSCR_CONN_S_AUTH_CIPH}: Received Event SUBSCR_CONN_E_ACCEPTED DPAG Paging success for MSISDN:46071 (event=0) DPAG Calling paging cbfn. @@ -497,11 +495,12 @@ DMM IMSI DETACH INDICATION: MI(IMSI)=901700000004620 DREF VLR subscr MSISDN:46071 usage increases to: 2 DMM IMSI DETACH for MSISDN:46071 +DREF VLR subscr MSISDN:46071 usage increases to: 3 +DREF VLR subscr MSISDN:46071 usage decreases to: 2 DREF VLR subscr MSISDN:46071 usage decreases to: 1 DREF VLR subscr MSISDN:46071 usage decreases to: 0 DREF freeing VLR subscr MSISDN:46071 DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_CN_CLOSE -DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: Close event, cause 0 DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASING DREF unknown: MSC conn use + release == 2 (0x101) - BSSAP Clear --RAN_GERAN_A--> MS @@ -577,7 +576,7 @@ DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP DVLR SUBSCR(IMSI:901700000004620) AUTH on GERAN received SRES/RES: 2d8b2c3e (4 bytes) DVLR SUBSCR(IMSI:901700000004620) AUTH established GSM security context -DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result VLR_AUTH_RES_PASSED +DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_AUTHENTICATED}: Removing from parent vlr_lu_fsm(LU:901700000004620) @@ -784,14 +783,13 @@ DVLR VLR_Authenticate(CM_SERVICE_REQ:50462976){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP DVLR SUBSCR(MSISDN:46071) AUTH on GERAN received SRES/RES: 20bde240 (4 bytes) DVLR SUBSCR(MSISDN:46071) AUTH established GSM security context -DVLR VLR_Authenticate(CM_SERVICE_REQ:50462976){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result VLR_AUTH_RES_PASSED +DVLR VLR_Authenticate(CM_SERVICE_REQ:50462976){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED DVLR VLR_Authenticate(CM_SERVICE_REQ:50462976){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED DVLR VLR_Authenticate(CM_SERVICE_REQ:50462976){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DVLR VLR_Authenticate(CM_SERVICE_REQ:50462976){VLR_SUB_AS_AUTHENTICATED}: Removing from parent Process_Access_Request_VLR(CM_SERVICE_REQ:50462976) DVLR VLR_Authenticate(CM_SERVICE_REQ:50462976){VLR_SUB_AS_AUTHENTICATED}: Freeing instance DVLR VLR_Authenticate(CM_SERVICE_REQ:50462976){VLR_SUB_AS_AUTHENTICATED}: Deallocated DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:50462976){PR_ARQ_S_WAIT_AUTH}: Received Event PR_ARQ_E_AUTH_RES -DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:50462976){PR_ARQ_S_WAIT_AUTH}: got VLR_AUTH_RES_PASSED DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:50462976){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2() DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:50462976){PR_ARQ_S_WAIT_AUTH}: Set Ciphering Mode DMM -> CIPHER MODE COMMAND MSISDN:46071 @@ -825,9 +823,9 @@ DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:50462976){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_pres() DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:50462976){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_trace() DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:50462976){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_imei() -DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:50462976){PR_ARQ_S_WAIT_CIPH}: proc_arq_fsm_done(VLR_PR_ARQ_RES_PASSED) +DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:50462976){PR_ARQ_S_WAIT_CIPH}: proc_arq_fsm_done(PASSED) DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:50462976){PR_ARQ_S_WAIT_CIPH}: state_chg to PR_ARQ_S_DONE -DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:50462976){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED +DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:50462976){PR_ARQ_S_DONE}: Process Access Request result: PASSED DMM Subscr_Conn(CM_SERVICE_REQ:50462976){SUBSCR_CONN_S_AUTH_CIPH}: Received Event SUBSCR_CONN_E_ACCEPTED DREF MSISDN:46071: MSC conn use + cm_service == 1 (0x8) DMM Subscr_Conn(CM_SERVICE_REQ:50462976){SUBSCR_CONN_S_AUTH_CIPH}: state_chg to SUBSCR_CONN_S_ACCEPTED @@ -938,14 +936,13 @@ DVLR VLR_Authenticate(PAGING_RESP:50462976){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP DVLR SUBSCR(MSISDN:46071) AUTH on GERAN received SRES/RES: a29514ae (4 bytes) DVLR SUBSCR(MSISDN:46071) AUTH established GSM security context -DVLR VLR_Authenticate(PAGING_RESP:50462976){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result VLR_AUTH_RES_PASSED +DVLR VLR_Authenticate(PAGING_RESP:50462976){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED DVLR VLR_Authenticate(PAGING_RESP:50462976){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED DVLR VLR_Authenticate(PAGING_RESP:50462976){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DVLR VLR_Authenticate(PAGING_RESP:50462976){VLR_SUB_AS_AUTHENTICATED}: Removing from parent Process_Access_Request_VLR(PAGING_RESP:50462976) DVLR VLR_Authenticate(PAGING_RESP:50462976){VLR_SUB_AS_AUTHENTICATED}: Freeing instance DVLR VLR_Authenticate(PAGING_RESP:50462976){VLR_SUB_AS_AUTHENTICATED}: Deallocated DVLR Process_Access_Request_VLR(PAGING_RESP:50462976){PR_ARQ_S_WAIT_AUTH}: Received Event PR_ARQ_E_AUTH_RES -DVLR Process_Access_Request_VLR(PAGING_RESP:50462976){PR_ARQ_S_WAIT_AUTH}: got VLR_AUTH_RES_PASSED DVLR Process_Access_Request_VLR(PAGING_RESP:50462976){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2() DVLR Process_Access_Request_VLR(PAGING_RESP:50462976){PR_ARQ_S_WAIT_AUTH}: Set Ciphering Mode DMM -> CIPHER MODE COMMAND MSISDN:46071 @@ -978,9 +975,9 @@ DVLR Process_Access_Request_VLR(PAGING_RESP:50462976){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_pres() DVLR Process_Access_Request_VLR(PAGING_RESP:50462976){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_trace() DVLR Process_Access_Request_VLR(PAGING_RESP:50462976){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_imei() -DVLR Process_Access_Request_VLR(PAGING_RESP:50462976){PR_ARQ_S_WAIT_CIPH}: proc_arq_fsm_done(VLR_PR_ARQ_RES_PASSED) +DVLR Process_Access_Request_VLR(PAGING_RESP:50462976){PR_ARQ_S_WAIT_CIPH}: proc_arq_fsm_done(PASSED) DVLR Process_Access_Request_VLR(PAGING_RESP:50462976){PR_ARQ_S_WAIT_CIPH}: state_chg to PR_ARQ_S_DONE -DVLR Process_Access_Request_VLR(PAGING_RESP:50462976){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED +DVLR Process_Access_Request_VLR(PAGING_RESP:50462976){PR_ARQ_S_DONE}: Process Access Request result: PASSED DMM Subscr_Conn(PAGING_RESP:50462976){SUBSCR_CONN_S_AUTH_CIPH}: Received Event SUBSCR_CONN_E_ACCEPTED DPAG Paging success for MSISDN:46071 (event=0) DPAG Calling paging cbfn. @@ -1054,11 +1051,12 @@ DMM IMSI DETACH INDICATION: MI(TMSI)=50462976 DREF VLR subscr MSISDN:46071 usage increases to: 2 DMM IMSI DETACH for MSISDN:46071 +DREF VLR subscr MSISDN:46071 usage increases to: 3 +DREF VLR subscr MSISDN:46071 usage decreases to: 2 DREF VLR subscr MSISDN:46071 usage decreases to: 1 DREF VLR subscr MSISDN:46071 usage decreases to: 0 DREF freeing VLR subscr MSISDN:46071 DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_CN_CLOSE -DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: Close event, cause 0 DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASING DREF unknown: MSC conn use + release == 2 (0x101) - BSSAP Clear --RAN_GERAN_A--> MS @@ -1134,7 +1132,7 @@ DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP DVLR SUBSCR(IMSI:901700000004620) AUTH on GERAN received SRES/RES: 2d8b2c3e (4 bytes) DVLR SUBSCR(IMSI:901700000004620) AUTH established GSM security context -DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result VLR_AUTH_RES_PASSED +DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_AUTHENTICATED}: Removing from parent vlr_lu_fsm(LU:901700000004620) @@ -1294,11 +1292,12 @@ DMM IMSI DETACH INDICATION: MI(IMSI)=901700000004620 DREF VLR subscr MSISDN:46071 usage increases to: 2 DMM IMSI DETACH for MSISDN:46071 +DREF VLR subscr MSISDN:46071 usage increases to: 3 +DREF VLR subscr MSISDN:46071 usage decreases to: 2 DREF VLR subscr MSISDN:46071 usage decreases to: 1 DREF VLR subscr MSISDN:46071 usage decreases to: 0 DREF freeing VLR subscr MSISDN:46071 DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_CN_CLOSE -DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: Close event, cause 0 DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASING DREF unknown: MSC conn use + release == 2 (0x101) - BSSAP Clear --RAN_GERAN_A--> MS @@ -1374,7 +1373,7 @@ DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP DVLR SUBSCR(IMSI:901700000004620) AUTH on GERAN received SRES/RES: 2d8b2c3e (4 bytes) DVLR SUBSCR(IMSI:901700000004620) AUTH established GSM security context -DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result VLR_AUTH_RES_PASSED +DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_AUTHENTICATED}: Removing from parent vlr_lu_fsm(LU:901700000004620) @@ -1523,11 +1522,12 @@ DMM IMSI DETACH INDICATION: MI(IMSI)=901700000004620 DREF VLR subscr MSISDN:46071 usage increases to: 2 DMM IMSI DETACH for MSISDN:46071 +DREF VLR subscr MSISDN:46071 usage increases to: 3 +DREF VLR subscr MSISDN:46071 usage decreases to: 2 DREF VLR subscr MSISDN:46071 usage decreases to: 1 DREF VLR subscr MSISDN:46071 usage decreases to: 0 DREF freeing VLR subscr MSISDN:46071 DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_CN_CLOSE -DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: Close event, cause 0 DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASING DREF unknown: MSC conn use + release == 2 (0x101) - BSSAP Clear --RAN_GERAN_A--> MS @@ -1603,7 +1603,7 @@ DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP DVLR SUBSCR(IMSI:901700000004620) AUTH on GERAN received SRES/RES: 2d8b2c3e (4 bytes) DVLR SUBSCR(IMSI:901700000004620) AUTH established GSM security context -DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result VLR_AUTH_RES_PASSED +DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_AUTHENTICATED}: Removing from parent vlr_lu_fsm(LU:901700000004620) @@ -1795,11 +1795,12 @@ DMM IMSI DETACH INDICATION: MI(TMSI)=50462976 DREF VLR subscr MSISDN:46071 usage increases to: 2 DMM IMSI DETACH for MSISDN:46071 +DREF VLR subscr MSISDN:46071 usage increases to: 3 +DREF VLR subscr MSISDN:46071 usage decreases to: 2 DREF VLR subscr MSISDN:46071 usage decreases to: 1 DREF VLR subscr MSISDN:46071 usage decreases to: 0 DREF freeing VLR subscr MSISDN:46071 DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_CN_CLOSE -DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: Close event, cause 0 DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASING DREF unknown: MSC conn use + release == 2 (0x101) - BSSAP Clear --RAN_GERAN_A--> MS @@ -1876,7 +1877,7 @@ DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP DVLR SUBSCR(IMSI:901700000010650) AUTH on GERAN received SRES/RES: dacc4b26 (4 bytes) DVLR SUBSCR(IMSI:901700000010650) AUTH established GSM security context -DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result VLR_AUTH_RES_PASSED +DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Removing from parent vlr_lu_fsm(LU:901700000010650) @@ -2035,14 +2036,13 @@ DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP DVLR SUBSCR(MSISDN:42342) AUTH on GERAN received SRES/RES: 2fb4cfad (4 bytes) DVLR SUBSCR(MSISDN:42342) AUTH established GSM security context -DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result VLR_AUTH_RES_PASSED +DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Removing from parent Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650) DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Freeing instance DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Deallocated DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: Received Event PR_ARQ_E_AUTH_RES -DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: got VLR_AUTH_RES_PASSED DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2() DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: Set Ciphering Mode DMM -> CIPHER MODE COMMAND MSISDN:42342 @@ -2065,9 +2065,9 @@ DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_pres() DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_trace() DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_imei() -DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_CIPH}: proc_arq_fsm_done(VLR_PR_ARQ_RES_PASSED) +DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_CIPH}: proc_arq_fsm_done(PASSED) DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_CIPH}: state_chg to PR_ARQ_S_DONE -DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED +DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_DONE}: Process Access Request result: PASSED DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_AUTH_CIPH}: Received Event SUBSCR_CONN_E_ACCEPTED DREF MSISDN:42342: MSC conn use + cm_service == 1 (0x8) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_AUTH_CIPH}: state_chg to SUBSCR_CONN_S_ACCEPTED @@ -2179,14 +2179,13 @@ DVLR VLR_Authenticate(PAGING_RESP:901700000010650){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP DVLR SUBSCR(MSISDN:42342) AUTH on GERAN received SRES/RES: 0ff61e0f (4 bytes) DVLR SUBSCR(MSISDN:42342) AUTH established GSM security context -DVLR VLR_Authenticate(PAGING_RESP:901700000010650){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result VLR_AUTH_RES_PASSED +DVLR VLR_Authenticate(PAGING_RESP:901700000010650){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED DVLR VLR_Authenticate(PAGING_RESP:901700000010650){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED DVLR VLR_Authenticate(PAGING_RESP:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DVLR VLR_Authenticate(PAGING_RESP:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Removing from parent Process_Access_Request_VLR(PAGING_RESP:901700000010650) DVLR VLR_Authenticate(PAGING_RESP:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Freeing instance DVLR VLR_Authenticate(PAGING_RESP:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Deallocated DVLR Process_Access_Request_VLR(PAGING_RESP:901700000010650){PR_ARQ_S_WAIT_AUTH}: Received Event PR_ARQ_E_AUTH_RES -DVLR Process_Access_Request_VLR(PAGING_RESP:901700000010650){PR_ARQ_S_WAIT_AUTH}: got VLR_AUTH_RES_PASSED DVLR Process_Access_Request_VLR(PAGING_RESP:901700000010650){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2() DVLR Process_Access_Request_VLR(PAGING_RESP:901700000010650){PR_ARQ_S_WAIT_AUTH}: Set Ciphering Mode DMM -> CIPHER MODE COMMAND MSISDN:42342 @@ -2208,9 +2207,9 @@ DVLR Process_Access_Request_VLR(PAGING_RESP:901700000010650){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_pres() DVLR Process_Access_Request_VLR(PAGING_RESP:901700000010650){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_trace() DVLR Process_Access_Request_VLR(PAGING_RESP:901700000010650){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_imei() -DVLR Process_Access_Request_VLR(PAGING_RESP:901700000010650){PR_ARQ_S_WAIT_CIPH}: proc_arq_fsm_done(VLR_PR_ARQ_RES_PASSED) +DVLR Process_Access_Request_VLR(PAGING_RESP:901700000010650){PR_ARQ_S_WAIT_CIPH}: proc_arq_fsm_done(PASSED) DVLR Process_Access_Request_VLR(PAGING_RESP:901700000010650){PR_ARQ_S_WAIT_CIPH}: state_chg to PR_ARQ_S_DONE -DVLR Process_Access_Request_VLR(PAGING_RESP:901700000010650){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED +DVLR Process_Access_Request_VLR(PAGING_RESP:901700000010650){PR_ARQ_S_DONE}: Process Access Request result: PASSED DMM Subscr_Conn(PAGING_RESP:901700000010650){SUBSCR_CONN_S_AUTH_CIPH}: Received Event SUBSCR_CONN_E_ACCEPTED DPAG Paging success for MSISDN:42342 (event=0) DPAG Calling paging cbfn. @@ -2284,11 +2283,12 @@ DMM IMSI DETACH INDICATION: MI(IMSI)=901700000010650 DREF VLR subscr MSISDN:42342 usage increases to: 2 DMM IMSI DETACH for MSISDN:42342 +DREF VLR subscr MSISDN:42342 usage increases to: 3 +DREF VLR subscr MSISDN:42342 usage decreases to: 2 DREF VLR subscr MSISDN:42342 usage decreases to: 1 DREF VLR subscr MSISDN:42342 usage decreases to: 0 DREF freeing VLR subscr MSISDN:42342 DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_CN_CLOSE -DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: Close event, cause 0 DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASING DREF unknown: MSC conn use + release == 2 (0x101) - BSSAP Clear --RAN_GERAN_A--> MS @@ -2365,7 +2365,7 @@ DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP DVLR SUBSCR(IMSI:901700000004620) AUTH on GERAN received SRES/RES: 2d8b2c3e (4 bytes) DVLR SUBSCR(IMSI:901700000004620) AUTH established GSM security context -DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result VLR_AUTH_RES_PASSED +DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_AUTHENTICATED}: Removing from parent vlr_lu_fsm(LU:901700000004620) diff --git a/tests/msc_vlr/msc_vlr_test_hlr_reject.err b/tests/msc_vlr/msc_vlr_test_hlr_reject.err index eda3be7..ac191be 100644 --- a/tests/msc_vlr/msc_vlr_test_hlr_reject.err +++ b/tests/msc_vlr/msc_vlr_test_hlr_reject.err @@ -40,7 +40,7 @@ DREF VLR subscr IMSI:901700000004620 usage increases to: 2 DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: Received Event VLR_AUTH_E_HLR_SAI_NACK DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: GSUP: rx Auth Info Error cause: 2: IMSI unknown in HLR -DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: Authentication terminating with result VLR_AUTH_RES_UNKNOWN_SUBSCR +DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: Authentication terminating with result IMSI unknown in HLR DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: state_chg to VLR_SUB_AS_AUTH_FAILED DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_AUTH_FAILED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_AUTH_FAILED}: Removing from parent vlr_lu_fsm(LU:901700000004620) @@ -120,7 +120,7 @@ DREF VLR subscr IMSI:901700000004620 usage increases to: 2 DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: Received Event VLR_AUTH_E_HLR_SAI_NACK DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: GSUP: rx Auth Info Error cause: 17: Network failure -DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: Authentication terminating with result VLR_AUTH_RES_PROC_ERR +DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: Authentication terminating with result Network failure DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: state_chg to VLR_SUB_AS_AUTH_FAILED DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_AUTH_FAILED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_AUTH_FAILED}: Removing from parent vlr_lu_fsm(LU:901700000004620) @@ -219,7 +219,7 @@ DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP DVLR SUBSCR(IMSI:901700000004620) AUTH on GERAN received SRES/RES: 2d8b2c3e (4 bytes) DVLR SUBSCR(IMSI:901700000004620) AUTH established GSM security context -DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result VLR_AUTH_RES_PASSED +DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_AUTHENTICATED}: Removing from parent vlr_lu_fsm(LU:901700000004620) @@ -374,7 +374,7 @@ DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP DVLR SUBSCR(MSISDN:46071) AUTH on GERAN received SRES/RES: 2d8b2c3e (4 bytes) DVLR SUBSCR(MSISDN:46071) AUTH established GSM security context -DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result VLR_AUTH_RES_PASSED +DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_AUTHENTICATED}: Removing from parent vlr_lu_fsm(LU:901700000004620) @@ -532,7 +532,7 @@ DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP DVLR SUBSCR(IMSI:901700000004620) AUTH on GERAN received SRES/RES: 2d8b2c3e (4 bytes) DVLR SUBSCR(IMSI:901700000004620) AUTH established GSM security context -DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result VLR_AUTH_RES_PASSED +DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_AUTHENTICATED}: Removing from parent vlr_lu_fsm(LU:901700000004620) @@ -670,7 +670,7 @@ DREF VLR subscr MSISDN:46071 usage increases to: 3 DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: Received Event VLR_AUTH_E_HLR_SAI_NACK DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: GSUP: rx Auth Info Error cause: 17: Network failure -DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: Authentication terminating with result VLR_AUTH_RES_PROC_ERR +DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: Authentication terminating with result Network failure DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: state_chg to VLR_SUB_AS_AUTH_FAILED DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_AUTH_FAILED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_AUTH_FAILED}: Removing from parent vlr_lu_fsm(LU:901700000004620) @@ -769,7 +769,7 @@ DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP DVLR SUBSCR(IMSI:901700000004620) AUTH on GERAN received SRES/RES: 2d8b2c3e (4 bytes) DVLR SUBSCR(IMSI:901700000004620) AUTH established GSM security context -DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result VLR_AUTH_RES_PASSED +DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_AUTHENTICATED}: Removing from parent vlr_lu_fsm(LU:901700000004620) @@ -908,7 +908,7 @@ DREF VLR subscr MSISDN:46071 usage increases to: 3 DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: Received Event VLR_AUTH_E_HLR_SAI_NACK DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: GSUP: rx Auth Info Error cause: 2: IMSI unknown in HLR -DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: Authentication terminating with result VLR_AUTH_RES_UNKNOWN_SUBSCR +DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: Authentication terminating with result IMSI unknown in HLR DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: state_chg to VLR_SUB_AS_AUTH_FAILED DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_AUTH_FAILED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_AUTH_FAILED}: Removing from parent vlr_lu_fsm(LU:901700000004620) @@ -987,7 +987,7 @@ DVLR GSUP rx 11: 0a010809710000004026f0 DREF VLR subscr IMSI:901700000004620 usage increases to: 2 DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: Received Event VLR_AUTH_E_HLR_SAI_ACK -DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: Authentication terminating with result VLR_AUTH_RES_PROC_ERR +DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: Authentication terminating with result Network failure DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: state_chg to VLR_SUB_AS_AUTH_FAILED DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_AUTH_FAILED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_AUTH_FAILED}: Removing from parent vlr_lu_fsm(LU:901700000004620) diff --git a/tests/msc_vlr/msc_vlr_test_hlr_timeout.err b/tests/msc_vlr/msc_vlr_test_hlr_timeout.err index f4d10a3..646f078 100644 --- a/tests/msc_vlr/msc_vlr_test_hlr_timeout.err +++ b/tests/msc_vlr/msc_vlr_test_hlr_timeout.err @@ -51,11 +51,10 @@ - Total time passed: 5.001598 s DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_AUTH_CIPH}: Timeout of T0 DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_AUTH_CIPH}: Received Event SUBSCR_CONN_E_CN_CLOSE -DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_AUTH_CIPH}: Close event, cause 38 +DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_AUTH_CIPH}: Close event, cause: CONGESTION DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_AUTH_CIPH}: state_chg to SUBSCR_CONN_S_RELEASING DREF IMSI:901700000004620: MSC conn use + release == 1 (0x100) DREF VLR subscr IMSI:901700000004620 usage increases to: 2 -DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_WAIT_AUTH}: Connection timed out - sending LU Reject for IMSI:901700000004620, cause 22 DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_WAIT_AUTH}: state_chg to VLR_ULA_S_DONE DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_CN_CLOSE @@ -159,11 +158,10 @@ - Total time passed: 5.001598 s DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_AUTH_CIPH}: Timeout of T0 DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_AUTH_CIPH}: Received Event SUBSCR_CONN_E_CN_CLOSE -DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_AUTH_CIPH}: Close event, cause 38 +DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_AUTH_CIPH}: Close event, cause: CONGESTION DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_AUTH_CIPH}: state_chg to SUBSCR_CONN_S_RELEASING DREF MSISDN:46071: MSC conn use + release == 1 (0x100) DREF VLR subscr MSISDN:46071 usage increases to: 2 -DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_WAIT_HLR_UPD}: Connection timed out - sending LU Reject for MSISDN:46071, cause 22 DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_WAIT_HLR_UPD}: state_chg to VLR_ULA_S_DONE DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_CN_CLOSE diff --git a/tests/msc_vlr/msc_vlr_test_ms_timeout.err b/tests/msc_vlr/msc_vlr_test_ms_timeout.err index b16feaf..a6f5411 100644 --- a/tests/msc_vlr/msc_vlr_test_ms_timeout.err +++ b/tests/msc_vlr/msc_vlr_test_ms_timeout.err @@ -71,11 +71,10 @@ - Total time passed: 5.001598 s DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_AUTH_CIPH}: Timeout of T0 DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_AUTH_CIPH}: Received Event SUBSCR_CONN_E_CN_CLOSE -DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_AUTH_CIPH}: Close event, cause 38 +DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_AUTH_CIPH}: Close event, cause: CONGESTION DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_AUTH_CIPH}: state_chg to SUBSCR_CONN_S_RELEASING DREF IMSI:901700000004620: MSC conn use + release == 1 (0x100) DREF VLR subscr IMSI:901700000004620 usage increases to: 2 -DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_WAIT_AUTH}: Connection timed out - sending LU Reject for IMSI:901700000004620, cause 22 DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_WAIT_AUTH}: state_chg to VLR_ULA_S_DONE DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_CN_CLOSE @@ -167,7 +166,7 @@ DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP DVLR SUBSCR(IMSI:901700000004620) AUTH on GERAN received SRES/RES: 2d8b2c3e (4 bytes) DVLR SUBSCR(IMSI:901700000004620) AUTH established GSM security context -DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result VLR_AUTH_RES_PASSED +DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_AUTHENTICATED}: Removing from parent vlr_lu_fsm(LU:901700000004620) @@ -316,15 +315,15 @@ - Total time passed: 5.001598 s DMM Subscr_Conn(CM_SERVICE_REQ:901700000004620){SUBSCR_CONN_S_AUTH_CIPH}: Timeout of T0 DMM Subscr_Conn(CM_SERVICE_REQ:901700000004620){SUBSCR_CONN_S_AUTH_CIPH}: Received Event SUBSCR_CONN_E_CN_CLOSE -DMM Subscr_Conn(CM_SERVICE_REQ:901700000004620){SUBSCR_CONN_S_AUTH_CIPH}: Close event, cause 38 +DMM Subscr_Conn(CM_SERVICE_REQ:901700000004620){SUBSCR_CONN_S_AUTH_CIPH}: Close event, cause: CONGESTION DMM Subscr_Conn(CM_SERVICE_REQ:901700000004620){SUBSCR_CONN_S_AUTH_CIPH}: state_chg to SUBSCR_CONN_S_RELEASING DREF MSISDN:46071: MSC conn use + release == 1 (0x100) DREF VLR subscr MSISDN:46071 usage increases to: 3 -DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000004620){PR_ARQ_S_WAIT_AUTH}: Connection timed out -DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000004620){PR_ARQ_S_WAIT_AUTH}: proc_arq_fsm_done(VLR_PR_ARQ_RES_TIMEOUT) +DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000004620){PR_ARQ_S_WAIT_AUTH}: Cancel: OSMO_FSM_TERM_ERROR +DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000004620){PR_ARQ_S_WAIT_AUTH}: proc_arq_fsm_done(CONGESTION) DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000004620){PR_ARQ_S_WAIT_AUTH}: state_chg to PR_ARQ_S_DONE -DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000004620){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_TIMEOUT -- sending CM Service Reject for MSISDN:46071, result VLR_PR_ARQ_RES_TIMEOUT +DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000004620){PR_ARQ_S_DONE}: Process Access Request result: CONGESTION +- sending CM Service Reject for MSISDN:46071, cause: CONGESTION DMM Subscr_Conn(CM_SERVICE_REQ:901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_CN_CLOSE DMM Subscr_Conn(CM_SERVICE_REQ:901700000004620){SUBSCR_CONN_S_RELEASING}: Event SUBSCR_CONN_E_CN_CLOSE not permitted DREF VLR subscr MSISDN:46071 usage decreases to: 2 @@ -529,11 +528,12 @@ DPAG Calling paging cbfn. DREF VLR subscr MSISDN:46071 usage decreases to: 3 DREF VLR subscr MSISDN:46071 usage decreases to: 2 +DREF VLR subscr MSISDN:46071 usage increases to: 3 +DREF VLR subscr MSISDN:46071 usage decreases to: 2 DREF VLR subscr MSISDN:46071 usage decreases to: 1 DREF VLR subscr MSISDN:46071 usage decreases to: 0 DREF freeing VLR subscr MSISDN:46071 DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_CN_CLOSE -DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: Close event, cause 0 DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASING DREF unknown: MSC conn use + release == 2 (0x101) - BSSAP Clear --RAN_GERAN_A--> MS diff --git a/tests/msc_vlr/msc_vlr_test_no_authen.err b/tests/msc_vlr/msc_vlr_test_no_authen.err index f0d9c50..90bf697 100644 --- a/tests/msc_vlr/msc_vlr_test_no_authen.err +++ b/tests/msc_vlr/msc_vlr_test_no_authen.err @@ -145,9 +145,9 @@ DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000004620){PR_ARQ_S_INIT}: _proc_arq_vlr_post_pres() DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000004620){PR_ARQ_S_INIT}: _proc_arq_vlr_post_trace() DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000004620){PR_ARQ_S_INIT}: _proc_arq_vlr_post_imei() -DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000004620){PR_ARQ_S_INIT}: proc_arq_fsm_done(VLR_PR_ARQ_RES_PASSED) +DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000004620){PR_ARQ_S_INIT}: proc_arq_fsm_done(PASSED) DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000004620){PR_ARQ_S_INIT}: state_chg to PR_ARQ_S_DONE -DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000004620){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED +DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000004620){PR_ARQ_S_DONE}: Process Access Request result: PASSED - sending CM Service Accept for MSISDN:46071 DMM Subscr_Conn(CM_SERVICE_REQ:901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED DREF MSISDN:46071: MSC conn use + cm_service == 2 (0x9) @@ -236,9 +236,9 @@ DVLR Process_Access_Request_VLR(PAGING_RESP:901700000004620){PR_ARQ_S_INIT}: _proc_arq_vlr_post_pres() DVLR Process_Access_Request_VLR(PAGING_RESP:901700000004620){PR_ARQ_S_INIT}: _proc_arq_vlr_post_trace() DVLR Process_Access_Request_VLR(PAGING_RESP:901700000004620){PR_ARQ_S_INIT}: _proc_arq_vlr_post_imei() -DVLR Process_Access_Request_VLR(PAGING_RESP:901700000004620){PR_ARQ_S_INIT}: proc_arq_fsm_done(VLR_PR_ARQ_RES_PASSED) +DVLR Process_Access_Request_VLR(PAGING_RESP:901700000004620){PR_ARQ_S_INIT}: proc_arq_fsm_done(PASSED) DVLR Process_Access_Request_VLR(PAGING_RESP:901700000004620){PR_ARQ_S_INIT}: state_chg to PR_ARQ_S_DONE -DVLR Process_Access_Request_VLR(PAGING_RESP:901700000004620){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED +DVLR Process_Access_Request_VLR(PAGING_RESP:901700000004620){PR_ARQ_S_DONE}: Process Access Request result: PASSED DMM Subscr_Conn(PAGING_RESP:901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED DPAG Paging success for MSISDN:46071 (event=0) DPAG Calling paging cbfn. @@ -316,11 +316,12 @@ DMM IMSI DETACH INDICATION: MI(IMSI)=901700000004620 DREF VLR subscr MSISDN:46071 usage increases to: 2 DMM IMSI DETACH for MSISDN:46071 +DREF VLR subscr MSISDN:46071 usage increases to: 3 +DREF VLR subscr MSISDN:46071 usage decreases to: 2 DREF VLR subscr MSISDN:46071 usage decreases to: 1 DREF VLR subscr MSISDN:46071 usage decreases to: 0 DREF freeing VLR subscr MSISDN:46071 DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_CN_CLOSE -DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: Close event, cause 0 DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASING DREF unknown: MSC conn use + release == 2 (0x101) - BSSAP Clear --RAN_GERAN_A--> MS @@ -520,9 +521,9 @@ DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:50462976){PR_ARQ_S_INIT}: _proc_arq_vlr_post_pres() DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:50462976){PR_ARQ_S_INIT}: _proc_arq_vlr_post_trace() DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:50462976){PR_ARQ_S_INIT}: _proc_arq_vlr_post_imei() -DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:50462976){PR_ARQ_S_INIT}: proc_arq_fsm_done(VLR_PR_ARQ_RES_PASSED) +DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:50462976){PR_ARQ_S_INIT}: proc_arq_fsm_done(PASSED) DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:50462976){PR_ARQ_S_INIT}: state_chg to PR_ARQ_S_DONE -DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:50462976){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED +DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:50462976){PR_ARQ_S_DONE}: Process Access Request result: PASSED - sending CM Service Accept for MSISDN:46071 DMM Subscr_Conn(CM_SERVICE_REQ:50462976){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED DREF MSISDN:46071: MSC conn use + cm_service == 2 (0x9) @@ -610,9 +611,9 @@ DVLR Process_Access_Request_VLR(PAGING_RESP:50462976){PR_ARQ_S_INIT}: _proc_arq_vlr_post_pres() DVLR Process_Access_Request_VLR(PAGING_RESP:50462976){PR_ARQ_S_INIT}: _proc_arq_vlr_post_trace() DVLR Process_Access_Request_VLR(PAGING_RESP:50462976){PR_ARQ_S_INIT}: _proc_arq_vlr_post_imei() -DVLR Process_Access_Request_VLR(PAGING_RESP:50462976){PR_ARQ_S_INIT}: proc_arq_fsm_done(VLR_PR_ARQ_RES_PASSED) +DVLR Process_Access_Request_VLR(PAGING_RESP:50462976){PR_ARQ_S_INIT}: proc_arq_fsm_done(PASSED) DVLR Process_Access_Request_VLR(PAGING_RESP:50462976){PR_ARQ_S_INIT}: state_chg to PR_ARQ_S_DONE -DVLR Process_Access_Request_VLR(PAGING_RESP:50462976){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED +DVLR Process_Access_Request_VLR(PAGING_RESP:50462976){PR_ARQ_S_DONE}: Process Access Request result: PASSED DMM Subscr_Conn(PAGING_RESP:50462976){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED DPAG Paging success for MSISDN:46071 (event=0) DPAG Calling paging cbfn. @@ -846,11 +847,12 @@ DMM IMSI DETACH INDICATION: MI(TMSI)=117835012 DREF VLR subscr MSISDN:46071 usage increases to: 2 DMM IMSI DETACH for MSISDN:46071 +DREF VLR subscr MSISDN:46071 usage increases to: 3 +DREF VLR subscr MSISDN:46071 usage decreases to: 2 DREF VLR subscr MSISDN:46071 usage decreases to: 1 DREF VLR subscr MSISDN:46071 usage decreases to: 0 DREF freeing VLR subscr MSISDN:46071 DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_CN_CLOSE -DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: Close event, cause 0 DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASING DREF unknown: MSC conn use + release == 2 (0x101) - BSSAP Clear --RAN_GERAN_A--> MS @@ -1034,11 +1036,12 @@ DMM IMSI DETACH INDICATION: MI(IMSI)=901700000004620 DREF VLR subscr MSISDN:46071 usage increases to: 2 DMM IMSI DETACH for MSISDN:46071 +DREF VLR subscr MSISDN:46071 usage increases to: 3 +DREF VLR subscr MSISDN:46071 usage decreases to: 2 DREF VLR subscr MSISDN:46071 usage decreases to: 1 DREF VLR subscr MSISDN:46071 usage decreases to: 0 DREF freeing VLR subscr MSISDN:46071 DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_CN_CLOSE -DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: Close event, cause 0 DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASING DREF unknown: MSC conn use + release == 2 (0x101) - BSSAP Clear --RAN_GERAN_A--> MS @@ -1248,11 +1251,12 @@ DMM IMSI DETACH INDICATION: MI(IMSI)=901700000004620 DREF VLR subscr MSISDN:46071 usage increases to: 2 DMM IMSI DETACH for MSISDN:46071 +DREF VLR subscr MSISDN:46071 usage increases to: 3 +DREF VLR subscr MSISDN:46071 usage decreases to: 2 DREF VLR subscr MSISDN:46071 usage decreases to: 1 DREF VLR subscr MSISDN:46071 usage decreases to: 0 DREF freeing VLR subscr MSISDN:46071 DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_CN_CLOSE -DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: Close event, cause 0 DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASING DREF unknown: MSC conn use + release == 2 (0x101) - BSSAP Clear --RAN_GERAN_A--> MS @@ -1422,11 +1426,12 @@ DMM IMSI DETACH INDICATION: MI(IMSI)=901700000004620 DREF VLR subscr MSISDN:46071 usage increases to: 2 DMM IMSI DETACH for MSISDN:46071 +DREF VLR subscr MSISDN:46071 usage increases to: 3 +DREF VLR subscr MSISDN:46071 usage decreases to: 2 DREF VLR subscr MSISDN:46071 usage decreases to: 1 DREF VLR subscr MSISDN:46071 usage decreases to: 0 DREF freeing VLR subscr MSISDN:46071 DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_CN_CLOSE -DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: Close event, cause 0 DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASING DREF unknown: MSC conn use + release == 2 (0x101) - BSSAP Clear --RAN_GERAN_A--> MS @@ -1628,11 +1633,12 @@ DMM IMSI DETACH INDICATION: MI(IMSI)=901700000004620 DREF VLR subscr MSISDN:46071 usage increases to: 2 DMM IMSI DETACH for MSISDN:46071 +DREF VLR subscr MSISDN:46071 usage increases to: 3 +DREF VLR subscr MSISDN:46071 usage decreases to: 2 DREF VLR subscr MSISDN:46071 usage decreases to: 1 DREF VLR subscr MSISDN:46071 usage decreases to: 0 DREF freeing VLR subscr MSISDN:46071 DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_CN_CLOSE -DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: Close event, cause 0 DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASING DREF unknown: MSC conn use + release == 2 (0x101) - BSSAP Clear --RAN_GERAN_A--> MS @@ -2005,11 +2011,12 @@ DMM IMSI DETACH INDICATION: MI(TMSI)=117835012 DREF VLR subscr MSISDN:46071 usage increases to: 2 DMM IMSI DETACH for MSISDN:46071 +DREF VLR subscr MSISDN:46071 usage increases to: 3 +DREF VLR subscr MSISDN:46071 usage decreases to: 2 DREF VLR subscr MSISDN:46071 usage decreases to: 1 DREF VLR subscr MSISDN:46071 usage decreases to: 0 DREF freeing VLR subscr MSISDN:46071 DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_CN_CLOSE -DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: Close event, cause 0 DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASING DREF unknown: MSC conn use + release == 2 (0x101) - BSSAP Clear --RAN_GERAN_A--> MS @@ -2238,11 +2245,12 @@ DMM IMSI DETACH INDICATION: MI(IMSI)=901700000004620 DREF VLR subscr MSISDN:46071 usage increases to: 2 DMM IMSI DETACH for MSISDN:46071 +DREF VLR subscr MSISDN:46071 usage increases to: 3 +DREF VLR subscr MSISDN:46071 usage decreases to: 2 DREF VLR subscr MSISDN:46071 usage decreases to: 1 DREF VLR subscr MSISDN:46071 usage decreases to: 0 DREF freeing VLR subscr MSISDN:46071 DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_CN_CLOSE -DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: Close event, cause 0 DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASING DREF unknown: MSC conn use + release == 2 (0x101) - BSSAP Clear --RAN_GERAN_A--> MS diff --git a/tests/msc_vlr/msc_vlr_test_reject_concurrency.c b/tests/msc_vlr/msc_vlr_test_reject_concurrency.c index cf9d8c9..ea8c32c 100644 --- a/tests/msc_vlr/msc_vlr_test_reject_concurrency.c +++ b/tests/msc_vlr/msc_vlr_test_reject_concurrency.c @@ -220,7 +220,7 @@ BTW("A CM Service Request in the middle of a LU is rejected"); cm_service_result_sent = RES_NONE; - dtap_expect_tx("052211"); + dtap_expect_tx("052216"); ms_sends_msg("05247803305886089910070000006402"); VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d"); VERBOSE_ASSERT(cm_service_result_sent, == RES_NONE, "%d"); diff --git a/tests/msc_vlr/msc_vlr_test_reject_concurrency.err b/tests/msc_vlr/msc_vlr_test_reject_concurrency.err index 563ff3d..bc14fa4 100644 --- a/tests/msc_vlr/msc_vlr_test_reject_concurrency.err +++ b/tests/msc_vlr/msc_vlr_test_reject_concurrency.err @@ -334,9 +334,9 @@ DRLL Dispatching 04.08 message GSM48_MT_MM_CM_SERV_REQ (0x5:0x24) DMM <- CM SERVICE REQUEST serv_type=0x08 MI(IMSI)=901700000004620 DMM Cannot accept CM Service Request, conn already busy establishing authenticity -DMM -> CM SERVICE Reject cause: 17 +DMM -> CM SERVICE Reject cause: 22 DMSC msc_tx 3 bytes to IMSI:901700000004620 via RAN_GERAN_A -- DTAP --RAN_GERAN_A--> MS: GSM48_MT_MM_CM_SERV_REJ: 052211 +- DTAP --RAN_GERAN_A--> MS: GSM48_MT_MM_CM_SERV_REJ: 052216 - DTAP matches expected message DREF IMSI:901700000004620: MSC conn use - dtap == 0 (0x0) DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_AUTH_CIPH}: Received Event SUBSCR_CONN_E_UNUSED @@ -692,9 +692,9 @@ DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000004620){PR_ARQ_S_INIT}: _proc_arq_vlr_post_pres() DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000004620){PR_ARQ_S_INIT}: _proc_arq_vlr_post_trace() DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000004620){PR_ARQ_S_INIT}: _proc_arq_vlr_post_imei() -DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000004620){PR_ARQ_S_INIT}: proc_arq_fsm_done(VLR_PR_ARQ_RES_PASSED) +DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000004620){PR_ARQ_S_INIT}: proc_arq_fsm_done(PASSED) DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000004620){PR_ARQ_S_INIT}: state_chg to PR_ARQ_S_DONE -DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000004620){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED +DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000004620){PR_ARQ_S_DONE}: Process Access Request result: PASSED - sending CM Service Accept for MSISDN:46071 DMM Subscr_Conn(CM_SERVICE_REQ:901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED DREF MSISDN:46071: MSC conn use + cm_service == 2 (0x9) @@ -722,20 +722,17 @@ DMM IMSI DETACH INDICATION: MI(IMSI)=901700000004620 DREF VLR subscr MSISDN:46071 usage increases to: 3 DMM IMSI DETACH for MSISDN:46071 -DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000004620){PR_ARQ_S_DONE}: Terminating (cause = OSMO_FSM_TERM_ERROR) -DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000004620){PR_ARQ_S_DONE}: Removing from parent Subscr_Conn(CM_SERVICE_REQ:901700000004620) -DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000004620){PR_ARQ_S_DONE}: Freeing instance -DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000004620){PR_ARQ_S_DONE}: Deallocated +DREF VLR subscr MSISDN:46071 usage increases to: 4 +DREF VLR subscr MSISDN:46071 usage decreases to: 3 +DREF VLR subscr MSISDN:46071 usage decreases to: 2 +DREF VLR subscr MSISDN:46071 usage decreases to: 1 DMM Subscr_Conn(CM_SERVICE_REQ:901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_CN_CLOSE DMM Subscr_Conn(CM_SERVICE_REQ:901700000004620){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_RELEASING DREF MSISDN:46071: MSC conn use + release == 3 (0x10a) DREF MSISDN:46071: MSC conn use - cm_service == 2 (0x102) -DREF VLR subscr MSISDN:46071 usage increases to: 4 -DREF VLR subscr MSISDN:46071 usage decreases to: 3 -- BSSAP Clear --RAN_GERAN_A--> MS -DREF VLR subscr MSISDN:46071 usage decreases to: 2 +DREF VLR subscr MSISDN:46071 usage increases to: 2 DREF VLR subscr MSISDN:46071 usage decreases to: 1 -DMM conn_close(vsub=MSISDN:46071, cause=0): already in release, ignore. +- BSSAP Clear --RAN_GERAN_A--> MS DREF MSISDN:46071: MSC conn use - dtap == 1 (0x100) bssap_clear_sent == 1 - BSS sends BSSMAP Clear Complete @@ -743,6 +740,10 @@ DMM Subscr_Conn(CM_SERVICE_REQ:901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(CM_SERVICE_REQ:901700000004620){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn(CM_SERVICE_REQ:901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) +DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000004620){PR_ARQ_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT) +DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000004620){PR_ARQ_S_DONE}: Removing from parent Subscr_Conn(CM_SERVICE_REQ:901700000004620) +DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000004620){PR_ARQ_S_DONE}: Freeing instance +DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000004620){PR_ARQ_S_DONE}: Deallocated DRLL MSISDN:46071: Freeing subscriber connection DREF VLR subscr MSISDN:46071 usage decreases to: 0 DREF freeing VLR subscr MSISDN:46071 @@ -889,9 +890,9 @@ DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000004620){PR_ARQ_S_INIT}: _proc_arq_vlr_post_pres() DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000004620){PR_ARQ_S_INIT}: _proc_arq_vlr_post_trace() DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000004620){PR_ARQ_S_INIT}: _proc_arq_vlr_post_imei() -DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000004620){PR_ARQ_S_INIT}: proc_arq_fsm_done(VLR_PR_ARQ_RES_PASSED) +DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000004620){PR_ARQ_S_INIT}: proc_arq_fsm_done(PASSED) DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000004620){PR_ARQ_S_INIT}: state_chg to PR_ARQ_S_DONE -DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000004620){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED +DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000004620){PR_ARQ_S_DONE}: Process Access Request result: PASSED - sending CM Service Accept for MSISDN:46071 DMM Subscr_Conn(CM_SERVICE_REQ:901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED DREF MSISDN:46071: MSC conn use + cm_service == 2 (0x9) @@ -922,20 +923,17 @@ DMM IMSI DETACH INDICATION: MI(IMSI)=901700000004620 DREF VLR subscr MSISDN:46071 usage increases to: 3 DMM IMSI DETACH for MSISDN:46071 -DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000004620){PR_ARQ_S_DONE}: Terminating (cause = OSMO_FSM_TERM_ERROR) -DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000004620){PR_ARQ_S_DONE}: Removing from parent Subscr_Conn(CM_SERVICE_REQ:901700000004620) -DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000004620){PR_ARQ_S_DONE}: Freeing instance -DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000004620){PR_ARQ_S_DONE}: Deallocated +DREF VLR subscr MSISDN:46071 usage increases to: 4 +DREF VLR subscr MSISDN:46071 usage decreases to: 3 +DREF VLR subscr MSISDN:46071 usage decreases to: 2 +DREF VLR subscr MSISDN:46071 usage decreases to: 1 DMM Subscr_Conn(CM_SERVICE_REQ:901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_CN_CLOSE DMM Subscr_Conn(CM_SERVICE_REQ:901700000004620){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_RELEASING DREF MSISDN:46071: MSC conn use + release == 3 (0x10a) DREF MSISDN:46071: MSC conn use - cm_service == 2 (0x102) -DREF VLR subscr MSISDN:46071 usage increases to: 4 -DREF VLR subscr MSISDN:46071 usage decreases to: 3 -- BSSAP Clear --RAN_GERAN_A--> MS -DREF VLR subscr MSISDN:46071 usage decreases to: 2 +DREF VLR subscr MSISDN:46071 usage increases to: 2 DREF VLR subscr MSISDN:46071 usage decreases to: 1 -DMM conn_close(vsub=MSISDN:46071, cause=0): already in release, ignore. +- BSSAP Clear --RAN_GERAN_A--> MS DREF MSISDN:46071: MSC conn use - dtap == 1 (0x100) bssap_clear_sent == 1 - BSS sends BSSMAP Clear Complete @@ -943,6 +941,10 @@ DMM Subscr_Conn(CM_SERVICE_REQ:901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(CM_SERVICE_REQ:901700000004620){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn(CM_SERVICE_REQ:901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) +DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000004620){PR_ARQ_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT) +DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000004620){PR_ARQ_S_DONE}: Removing from parent Subscr_Conn(CM_SERVICE_REQ:901700000004620) +DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000004620){PR_ARQ_S_DONE}: Freeing instance +DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000004620){PR_ARQ_S_DONE}: Deallocated DRLL MSISDN:46071: Freeing subscriber connection DREF VLR subscr MSISDN:46071 usage decreases to: 0 DREF freeing VLR subscr MSISDN:46071 @@ -1089,9 +1091,9 @@ DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000004620){PR_ARQ_S_INIT}: _proc_arq_vlr_post_pres() DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000004620){PR_ARQ_S_INIT}: _proc_arq_vlr_post_trace() DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000004620){PR_ARQ_S_INIT}: _proc_arq_vlr_post_imei() -DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000004620){PR_ARQ_S_INIT}: proc_arq_fsm_done(VLR_PR_ARQ_RES_PASSED) +DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000004620){PR_ARQ_S_INIT}: proc_arq_fsm_done(PASSED) DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000004620){PR_ARQ_S_INIT}: state_chg to PR_ARQ_S_DONE -DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000004620){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED +DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000004620){PR_ARQ_S_DONE}: Process Access Request result: PASSED - sending CM Service Accept for MSISDN:46071 DMM Subscr_Conn(CM_SERVICE_REQ:901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED DREF MSISDN:46071: MSC conn use + cm_service == 2 (0x9) @@ -1304,9 +1306,9 @@ DVLR Process_Access_Request_VLR(PAGING_RESP:901700000004620){PR_ARQ_S_INIT}: _proc_arq_vlr_post_pres() DVLR Process_Access_Request_VLR(PAGING_RESP:901700000004620){PR_ARQ_S_INIT}: _proc_arq_vlr_post_trace() DVLR Process_Access_Request_VLR(PAGING_RESP:901700000004620){PR_ARQ_S_INIT}: _proc_arq_vlr_post_imei() -DVLR Process_Access_Request_VLR(PAGING_RESP:901700000004620){PR_ARQ_S_INIT}: proc_arq_fsm_done(VLR_PR_ARQ_RES_PASSED) +DVLR Process_Access_Request_VLR(PAGING_RESP:901700000004620){PR_ARQ_S_INIT}: proc_arq_fsm_done(PASSED) DVLR Process_Access_Request_VLR(PAGING_RESP:901700000004620){PR_ARQ_S_INIT}: state_chg to PR_ARQ_S_DONE -DVLR Process_Access_Request_VLR(PAGING_RESP:901700000004620){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED +DVLR Process_Access_Request_VLR(PAGING_RESP:901700000004620){PR_ARQ_S_DONE}: Process Access Request result: PASSED DMM Subscr_Conn(PAGING_RESP:901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED DPAG Paging success for MSISDN:46071 (event=0) DPAG Calling paging cbfn. @@ -1532,9 +1534,9 @@ DVLR Process_Access_Request_VLR(PAGING_RESP:901700000004620){PR_ARQ_S_INIT}: _proc_arq_vlr_post_pres() DVLR Process_Access_Request_VLR(PAGING_RESP:901700000004620){PR_ARQ_S_INIT}: _proc_arq_vlr_post_trace() DVLR Process_Access_Request_VLR(PAGING_RESP:901700000004620){PR_ARQ_S_INIT}: _proc_arq_vlr_post_imei() -DVLR Process_Access_Request_VLR(PAGING_RESP:901700000004620){PR_ARQ_S_INIT}: proc_arq_fsm_done(VLR_PR_ARQ_RES_PASSED) +DVLR Process_Access_Request_VLR(PAGING_RESP:901700000004620){PR_ARQ_S_INIT}: proc_arq_fsm_done(PASSED) DVLR Process_Access_Request_VLR(PAGING_RESP:901700000004620){PR_ARQ_S_INIT}: state_chg to PR_ARQ_S_DONE -DVLR Process_Access_Request_VLR(PAGING_RESP:901700000004620){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED +DVLR Process_Access_Request_VLR(PAGING_RESP:901700000004620){PR_ARQ_S_DONE}: Process Access Request result: PASSED DMM Subscr_Conn(PAGING_RESP:901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED DPAG Paging success for MSISDN:46071 (event=0) DPAG Calling paging cbfn. @@ -1600,20 +1602,17 @@ DMM IMSI DETACH INDICATION: MI(IMSI)=901700000004620 DREF VLR subscr MSISDN:46071 usage increases to: 3 DMM IMSI DETACH for MSISDN:46071 -DVLR Process_Access_Request_VLR(PAGING_RESP:901700000004620){PR_ARQ_S_DONE}: Terminating (cause = OSMO_FSM_TERM_ERROR) -DVLR Process_Access_Request_VLR(PAGING_RESP:901700000004620){PR_ARQ_S_DONE}: Removing from parent Subscr_Conn(PAGING_RESP:901700000004620) -DVLR Process_Access_Request_VLR(PAGING_RESP:901700000004620){PR_ARQ_S_DONE}: Freeing instance -DVLR Process_Access_Request_VLR(PAGING_RESP:901700000004620){PR_ARQ_S_DONE}: Deallocated +DREF VLR subscr MSISDN:46071 usage increases to: 4 +DREF VLR subscr MSISDN:46071 usage decreases to: 3 +DREF VLR subscr MSISDN:46071 usage decreases to: 2 +DREF VLR subscr MSISDN:46071 usage decreases to: 1 DMM Subscr_Conn(PAGING_RESP:901700000004620){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_CN_CLOSE DMM Subscr_Conn(PAGING_RESP:901700000004620){SUBSCR_CONN_S_COMMUNICATING}: state_chg to SUBSCR_CONN_S_RELEASING DREF MSISDN:46071: MSC conn use + release == 3 (0x10a) DREF MSISDN:46071: MSC conn use - cm_service == 2 (0x102) -DREF VLR subscr MSISDN:46071 usage increases to: 4 -DREF VLR subscr MSISDN:46071 usage decreases to: 3 -- BSSAP Clear --RAN_GERAN_A--> MS -DREF VLR subscr MSISDN:46071 usage decreases to: 2 +DREF VLR subscr MSISDN:46071 usage increases to: 2 DREF VLR subscr MSISDN:46071 usage decreases to: 1 -DMM conn_close(vsub=MSISDN:46071, cause=0): already in release, ignore. +- BSSAP Clear --RAN_GERAN_A--> MS DREF MSISDN:46071: MSC conn use - dtap == 1 (0x100) bssap_clear_sent == 1 - BSS sends BSSMAP Clear Complete @@ -1621,6 +1620,10 @@ DMM Subscr_Conn(PAGING_RESP:901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(PAGING_RESP:901700000004620){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn(PAGING_RESP:901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) +DVLR Process_Access_Request_VLR(PAGING_RESP:901700000004620){PR_ARQ_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT) +DVLR Process_Access_Request_VLR(PAGING_RESP:901700000004620){PR_ARQ_S_DONE}: Removing from parent Subscr_Conn(PAGING_RESP:901700000004620) +DVLR Process_Access_Request_VLR(PAGING_RESP:901700000004620){PR_ARQ_S_DONE}: Freeing instance +DVLR Process_Access_Request_VLR(PAGING_RESP:901700000004620){PR_ARQ_S_DONE}: Deallocated DRLL MSISDN:46071: Freeing subscriber connection DREF VLR subscr MSISDN:46071 usage decreases to: 0 DREF freeing VLR subscr MSISDN:46071 @@ -1779,9 +1782,9 @@ DVLR Process_Access_Request_VLR(PAGING_RESP:901700000004620){PR_ARQ_S_INIT}: _proc_arq_vlr_post_pres() DVLR Process_Access_Request_VLR(PAGING_RESP:901700000004620){PR_ARQ_S_INIT}: _proc_arq_vlr_post_trace() DVLR Process_Access_Request_VLR(PAGING_RESP:901700000004620){PR_ARQ_S_INIT}: _proc_arq_vlr_post_imei() -DVLR Process_Access_Request_VLR(PAGING_RESP:901700000004620){PR_ARQ_S_INIT}: proc_arq_fsm_done(VLR_PR_ARQ_RES_PASSED) +DVLR Process_Access_Request_VLR(PAGING_RESP:901700000004620){PR_ARQ_S_INIT}: proc_arq_fsm_done(PASSED) DVLR Process_Access_Request_VLR(PAGING_RESP:901700000004620){PR_ARQ_S_INIT}: state_chg to PR_ARQ_S_DONE -DVLR Process_Access_Request_VLR(PAGING_RESP:901700000004620){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED +DVLR Process_Access_Request_VLR(PAGING_RESP:901700000004620){PR_ARQ_S_DONE}: Process Access Request result: PASSED DMM Subscr_Conn(PAGING_RESP:901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED DPAG Paging success for MSISDN:46071 (event=0) DPAG Calling paging cbfn. diff --git a/tests/msc_vlr/msc_vlr_test_rest.err b/tests/msc_vlr/msc_vlr_test_rest.err index ff0a27e..d9c69e4 100644 --- a/tests/msc_vlr/msc_vlr_test_rest.err +++ b/tests/msc_vlr/msc_vlr_test_rest.err @@ -63,10 +63,10 @@ DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000004620){PR_ARQ_S_INIT}: is child of Subscr_Conn(CM_SERVICE_REQ:901700000004620) DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000004620){PR_ARQ_S_INIT}: rev=GSM net=GERAN (no Auth) DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000004620){PR_ARQ_S_INIT}: Received Event PR_ARQ_E_START -DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000004620){PR_ARQ_S_INIT}: proc_arq_fsm_done(VLR_PR_ARQ_RES_UNIDENT_SUBSCR) +DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000004620){PR_ARQ_S_INIT}: proc_arq_fsm_done(MS_IDENTITY_NOT_DERVIVABLE) DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000004620){PR_ARQ_S_INIT}: state_chg to PR_ARQ_S_DONE -DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000004620){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_UNIDENT_SUBSCR -- sending CM Service Reject for unknown, result VLR_PR_ARQ_RES_UNIDENT_SUBSCR +DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000004620){PR_ARQ_S_DONE}: Process Access Request result: MS_IDENTITY_NOT_DERVIVABLE +- sending CM Service Reject for unknown, cause: MS_IDENTITY_NOT_DERVIVABLE DMM Subscr_Conn(CM_SERVICE_REQ:901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_CN_CLOSE DMM Subscr_Conn(CM_SERVICE_REQ:901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASING DREF unknown: MSC conn use + release == 2 (0x101) @@ -346,11 +346,12 @@ DMM IMSI DETACH INDICATION: MI(IMSI)=901700000004620 DREF VLR subscr MSISDN:46071 usage increases to: 2 DMM IMSI DETACH for MSISDN:46071 +DREF VLR subscr MSISDN:46071 usage increases to: 3 +DREF VLR subscr MSISDN:46071 usage decreases to: 2 DREF VLR subscr MSISDN:46071 usage decreases to: 1 DREF VLR subscr MSISDN:46071 usage decreases to: 0 DREF freeing VLR subscr MSISDN:46071 DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_CN_CLOSE -DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: Close event, cause 0 DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASING DREF unknown: MSC conn use + release == 2 (0x101) - BSSAP Clear --RAN_GERAN_A--> MS diff --git a/tests/msc_vlr/msc_vlr_test_umts_authen.err b/tests/msc_vlr/msc_vlr_test_umts_authen.err index 9063104..e460fd1 100644 --- a/tests/msc_vlr/msc_vlr_test_umts_authen.err +++ b/tests/msc_vlr/msc_vlr_test_umts_authen.err @@ -58,7 +58,7 @@ DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP DVLR SUBSCR(IMSI:901700000010650) AUTH on GERAN received SRES/RES: e229c19e791f2e41 (8 bytes) DVLR SUBSCR(IMSI:901700000010650) AUTH established UMTS security context -DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result VLR_AUTH_RES_PASSED +DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Removing from parent vlr_lu_fsm(LU:901700000010650) @@ -236,23 +236,22 @@ DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP DVLR SUBSCR(MSISDN:42342) AUTH on GERAN received SRES/RES: 7db47cf7f81e4dc7 (8 bytes) DVLR SUBSCR(MSISDN:42342) AUTH established UMTS security context -DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result VLR_AUTH_RES_PASSED +DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Removing from parent Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650) DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Freeing instance DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Deallocated DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: Received Event PR_ARQ_E_AUTH_RES -DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: got VLR_AUTH_RES_PASSED DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2() DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2_post_ciph() DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2_post_vlr() DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_post_pres() DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_post_trace() DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_post_imei() -DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: proc_arq_fsm_done(VLR_PR_ARQ_RES_PASSED) +DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: proc_arq_fsm_done(PASSED) DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: state_chg to PR_ARQ_S_DONE -DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED +DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_DONE}: Process Access Request result: PASSED - sending CM Service Accept for MSISDN:42342 DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_AUTH_CIPH}: Received Event SUBSCR_CONN_E_ACCEPTED DREF MSISDN:42342: MSC conn use + cm_service == 2 (0xa) @@ -366,23 +365,22 @@ DVLR VLR_Authenticate(PAGING_RESP:901700000010650){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP DVLR SUBSCR(MSISDN:42342) AUTH on GERAN received SRES/RES: 706f996719ba609c (8 bytes) DVLR SUBSCR(MSISDN:42342) AUTH established UMTS security context -DVLR VLR_Authenticate(PAGING_RESP:901700000010650){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result VLR_AUTH_RES_PASSED +DVLR VLR_Authenticate(PAGING_RESP:901700000010650){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED DVLR VLR_Authenticate(PAGING_RESP:901700000010650){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED DVLR VLR_Authenticate(PAGING_RESP:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DVLR VLR_Authenticate(PAGING_RESP:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Removing from parent Process_Access_Request_VLR(PAGING_RESP:901700000010650) DVLR VLR_Authenticate(PAGING_RESP:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Freeing instance DVLR VLR_Authenticate(PAGING_RESP:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Deallocated DVLR Process_Access_Request_VLR(PAGING_RESP:901700000010650){PR_ARQ_S_WAIT_AUTH}: Received Event PR_ARQ_E_AUTH_RES -DVLR Process_Access_Request_VLR(PAGING_RESP:901700000010650){PR_ARQ_S_WAIT_AUTH}: got VLR_AUTH_RES_PASSED DVLR Process_Access_Request_VLR(PAGING_RESP:901700000010650){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2() DVLR Process_Access_Request_VLR(PAGING_RESP:901700000010650){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2_post_ciph() DVLR Process_Access_Request_VLR(PAGING_RESP:901700000010650){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2_post_vlr() DVLR Process_Access_Request_VLR(PAGING_RESP:901700000010650){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_post_pres() DVLR Process_Access_Request_VLR(PAGING_RESP:901700000010650){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_post_trace() DVLR Process_Access_Request_VLR(PAGING_RESP:901700000010650){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_post_imei() -DVLR Process_Access_Request_VLR(PAGING_RESP:901700000010650){PR_ARQ_S_WAIT_AUTH}: proc_arq_fsm_done(VLR_PR_ARQ_RES_PASSED) +DVLR Process_Access_Request_VLR(PAGING_RESP:901700000010650){PR_ARQ_S_WAIT_AUTH}: proc_arq_fsm_done(PASSED) DVLR Process_Access_Request_VLR(PAGING_RESP:901700000010650){PR_ARQ_S_WAIT_AUTH}: state_chg to PR_ARQ_S_DONE -DVLR Process_Access_Request_VLR(PAGING_RESP:901700000010650){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED +DVLR Process_Access_Request_VLR(PAGING_RESP:901700000010650){PR_ARQ_S_DONE}: Process Access Request result: PASSED DMM Subscr_Conn(PAGING_RESP:901700000010650){SUBSCR_CONN_S_AUTH_CIPH}: Received Event SUBSCR_CONN_E_ACCEPTED DPAG Paging success for MSISDN:42342 (event=0) DPAG Calling paging cbfn. @@ -457,11 +455,12 @@ DMM IMSI DETACH INDICATION: MI(IMSI)=901700000010650 DREF VLR subscr MSISDN:42342 usage increases to: 2 DMM IMSI DETACH for MSISDN:42342 +DREF VLR subscr MSISDN:42342 usage increases to: 3 +DREF VLR subscr MSISDN:42342 usage decreases to: 2 DREF VLR subscr MSISDN:42342 usage decreases to: 1 DREF VLR subscr MSISDN:42342 usage decreases to: 0 DREF freeing VLR subscr MSISDN:42342 DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_CN_CLOSE -DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: Close event, cause 0 DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASING DREF unknown: MSC conn use + release == 2 (0x101) - BSSAP Clear --RAN_GERAN_A--> MS @@ -538,7 +537,7 @@ DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP DVLR SUBSCR(IMSI:901700000010650) AUTH on UTRAN received RES: e229c19e791f2e41 (8 bytes) DVLR SUBSCR(IMSI:901700000010650) AUTH established UMTS security context -DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result VLR_AUTH_RES_PASSED +DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Removing from parent vlr_lu_fsm(LU:901700000010650) @@ -728,14 +727,13 @@ DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP DVLR SUBSCR(MSISDN:42342) AUTH on UTRAN received RES: 7db47cf7f81e4dc7 (8 bytes) DVLR SUBSCR(MSISDN:42342) AUTH established UMTS security context -DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result VLR_AUTH_RES_PASSED +DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Removing from parent Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650) DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Freeing instance DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Deallocated DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: Received Event PR_ARQ_E_AUTH_RES -DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: got VLR_AUTH_RES_PASSED DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2() DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: Set Ciphering Mode DMM -> SECURITY MODE CONTROL MSISDN:42342 @@ -757,9 +755,9 @@ DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_pres() DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_trace() DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_imei() -DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_CIPH}: proc_arq_fsm_done(VLR_PR_ARQ_RES_PASSED) +DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_CIPH}: proc_arq_fsm_done(PASSED) DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_CIPH}: state_chg to PR_ARQ_S_DONE -DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED +DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_DONE}: Process Access Request result: PASSED DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_AUTH_CIPH}: Received Event SUBSCR_CONN_E_ACCEPTED DREF MSISDN:42342: MSC conn use + cm_service == 1 (0x8) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_AUTH_CIPH}: state_chg to SUBSCR_CONN_S_ACCEPTED @@ -871,14 +869,13 @@ DVLR VLR_Authenticate(PAGING_RESP:901700000010650){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP DVLR SUBSCR(MSISDN:42342) AUTH on UTRAN received RES: 706f996719ba609c (8 bytes) DVLR SUBSCR(MSISDN:42342) AUTH established UMTS security context -DVLR VLR_Authenticate(PAGING_RESP:901700000010650){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result VLR_AUTH_RES_PASSED +DVLR VLR_Authenticate(PAGING_RESP:901700000010650){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED DVLR VLR_Authenticate(PAGING_RESP:901700000010650){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED DVLR VLR_Authenticate(PAGING_RESP:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DVLR VLR_Authenticate(PAGING_RESP:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Removing from parent Process_Access_Request_VLR(PAGING_RESP:901700000010650) DVLR VLR_Authenticate(PAGING_RESP:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Freeing instance DVLR VLR_Authenticate(PAGING_RESP:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Deallocated DVLR Process_Access_Request_VLR(PAGING_RESP:901700000010650){PR_ARQ_S_WAIT_AUTH}: Received Event PR_ARQ_E_AUTH_RES -DVLR Process_Access_Request_VLR(PAGING_RESP:901700000010650){PR_ARQ_S_WAIT_AUTH}: got VLR_AUTH_RES_PASSED DVLR Process_Access_Request_VLR(PAGING_RESP:901700000010650){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2() DVLR Process_Access_Request_VLR(PAGING_RESP:901700000010650){PR_ARQ_S_WAIT_AUTH}: Set Ciphering Mode DMM -> SECURITY MODE CONTROL MSISDN:42342 @@ -900,9 +897,9 @@ DVLR Process_Access_Request_VLR(PAGING_RESP:901700000010650){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_pres() DVLR Process_Access_Request_VLR(PAGING_RESP:901700000010650){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_trace() DVLR Process_Access_Request_VLR(PAGING_RESP:901700000010650){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_imei() -DVLR Process_Access_Request_VLR(PAGING_RESP:901700000010650){PR_ARQ_S_WAIT_CIPH}: proc_arq_fsm_done(VLR_PR_ARQ_RES_PASSED) +DVLR Process_Access_Request_VLR(PAGING_RESP:901700000010650){PR_ARQ_S_WAIT_CIPH}: proc_arq_fsm_done(PASSED) DVLR Process_Access_Request_VLR(PAGING_RESP:901700000010650){PR_ARQ_S_WAIT_CIPH}: state_chg to PR_ARQ_S_DONE -DVLR Process_Access_Request_VLR(PAGING_RESP:901700000010650){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED +DVLR Process_Access_Request_VLR(PAGING_RESP:901700000010650){PR_ARQ_S_DONE}: Process Access Request result: PASSED DMM Subscr_Conn(PAGING_RESP:901700000010650){SUBSCR_CONN_S_AUTH_CIPH}: Received Event SUBSCR_CONN_E_ACCEPTED DPAG Paging success for MSISDN:42342 (event=0) DPAG Calling paging cbfn. @@ -975,11 +972,12 @@ DMM IMSI DETACH INDICATION: MI(IMSI)=901700000010650 DREF VLR subscr MSISDN:42342 usage increases to: 2 DMM IMSI DETACH for MSISDN:42342 +DREF VLR subscr MSISDN:42342 usage increases to: 3 +DREF VLR subscr MSISDN:42342 usage decreases to: 2 DREF VLR subscr MSISDN:42342 usage decreases to: 1 DREF VLR subscr MSISDN:42342 usage decreases to: 0 DREF freeing VLR subscr MSISDN:42342 DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_CN_CLOSE -DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: Close event, cause 0 DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASING DREF unknown: MSC conn use + release == 2 (0x101) - Iu Release --RAN_UTRAN_IU--> MS @@ -1087,7 +1085,7 @@ DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_WAIT_RESP_RESYNC}: Received Event VLR_AUTH_E_MS_AUTH_RESP DVLR SUBSCR(IMSI:901700000010650) AUTH on GERAN received SRES/RES: 1df5f0b4f22b696e (8 bytes) DVLR SUBSCR(IMSI:901700000010650) AUTH established UMTS security context -DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_WAIT_RESP_RESYNC}: Authentication terminating with result VLR_AUTH_RES_PASSED +DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_WAIT_RESP_RESYNC}: Authentication terminating with result PASSED DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_WAIT_RESP_RESYNC}: state_chg to VLR_SUB_AS_AUTHENTICATED DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Removing from parent vlr_lu_fsm(LU:901700000010650) @@ -1306,7 +1304,7 @@ DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_WAIT_RESP_RESYNC}: Received Event VLR_AUTH_E_MS_AUTH_RESP DVLR SUBSCR(IMSI:901700000010650) AUTH on UTRAN received RES: 1df5f0b4f22b696e (8 bytes) DVLR SUBSCR(IMSI:901700000010650) AUTH established UMTS security context -DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_WAIT_RESP_RESYNC}: Authentication terminating with result VLR_AUTH_RES_PASSED +DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_WAIT_RESP_RESYNC}: Authentication terminating with result PASSED DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_WAIT_RESP_RESYNC}: state_chg to VLR_SUB_AS_AUTHENTICATED DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Removing from parent vlr_lu_fsm(LU:901700000010650) @@ -1506,7 +1504,7 @@ DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP DVLR SUBSCR(IMSI:901700000010650) AUTH on GERAN received SRES/RES: e229c19e791f2e (7 bytes) DVLR SUBSCR(IMSI:901700000010650) AUTH SRES/RES has invalid length: 7. Expected either 4 (GSM AKA) or 8 (UMTS AKA) -DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result VLR_AUTH_RES_AUTH_FAILED +DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result Illegal MS DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTH_FAILED DVLR GSUP tx: 0b010809710000000156f0 GSUP --> HLR: OSMO_GSUP_MSGT_AUTH_FAIL_REPORT: 0b010809710000000156f0 @@ -1604,7 +1602,7 @@ DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP DVLR SUBSCR(IMSI:901700000010650) AUTH on UTRAN received RES: e229c19e791f2e (7 bytes) DVLR SUBSCR(IMSI:901700000010650) AUTH RES has invalid length: 7. Expected 8 (UMTS AKA) -DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result VLR_AUTH_RES_AUTH_FAILED +DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result Illegal MS DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTH_FAILED DVLR GSUP tx: 0b010809710000000156f0 GSUP --> HLR: OSMO_GSUP_MSGT_AUTH_FAIL_REPORT: 0b010809710000000156f0 @@ -1702,7 +1700,7 @@ DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP DVLR SUBSCR(IMSI:901700000010650) AUTH on GERAN received SRES/RES: e229c19e791f2e4123 (9 bytes) DVLR SUBSCR(IMSI:901700000010650) AUTH SRES/RES has invalid length: 9. Expected either 4 (GSM AKA) or 8 (UMTS AKA) -DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result VLR_AUTH_RES_AUTH_FAILED +DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result Illegal MS DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTH_FAILED DVLR GSUP tx: 0b010809710000000156f0 GSUP --> HLR: OSMO_GSUP_MSGT_AUTH_FAIL_REPORT: 0b010809710000000156f0 @@ -1800,7 +1798,7 @@ DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP DVLR SUBSCR(IMSI:901700000010650) AUTH on UTRAN received RES: e229c19e791f2e4123 (9 bytes) DVLR SUBSCR(IMSI:901700000010650) AUTH RES has invalid length: 9. Expected 8 (UMTS AKA) -DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result VLR_AUTH_RES_AUTH_FAILED +DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result Illegal MS DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTH_FAILED DVLR GSUP tx: 0b010809710000000156f0 GSUP --> HLR: OSMO_GSUP_MSGT_AUTH_FAIL_REPORT: 0b010809710000000156f0 @@ -1898,7 +1896,7 @@ DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP DVLR SUBSCR(IMSI:901700000010650) AUTH on GERAN received SRES/RES: e229c19e (4 bytes) DVLR SUBSCR(IMSI:901700000010650) GSM AUTH failure: mismatching sres (expected sres=9b 36 ef df ) -DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result VLR_AUTH_RES_AUTH_FAILED +DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result Illegal MS DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTH_FAILED DVLR GSUP tx: 0b010809710000000156f0 GSUP --> HLR: OSMO_GSUP_MSGT_AUTH_FAIL_REPORT: 0b010809710000000156f0 @@ -1996,7 +1994,7 @@ DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP DVLR SUBSCR(IMSI:901700000010650) AUTH on UTRAN received RES: e229c19e (4 bytes) DVLR SUBSCR(IMSI:901700000010650) AUTH via UTRAN, cannot allow GSM AKA (MS is R99 capable, vec has UMTS AKA tokens, res_len=4 is INVALID on UTRAN) -DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result VLR_AUTH_RES_AUTH_FAILED +DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result Illegal MS DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTH_FAILED DVLR GSUP tx: 0b010809710000000156f0 GSUP --> HLR: OSMO_GSUP_MSGT_AUTH_FAIL_REPORT: 0b010809710000000156f0 diff --git a/tests/msc_vlr/msc_vlr_tests.c b/tests/msc_vlr/msc_vlr_tests.c index eda3ea1..5c01896 100644 --- a/tests/msc_vlr/msc_vlr_tests.c +++ b/tests/msc_vlr/msc_vlr_tests.c @@ -637,7 +637,7 @@ return 0; } -static int fake_vlr_tx_lu_rej(void *msc_conn_ref, uint8_t cause) +static int fake_vlr_tx_lu_rej(void *msc_conn_ref, enum gsm48_reject_value cause) { struct gsm_subscriber_connection *conn = msc_conn_ref; btw("sending LU Reject for %s, cause %u", vlr_subscr_name(conn->vsub), cause); @@ -653,13 +653,11 @@ return 0; } -static int fake_vlr_tx_cm_serv_rej(void *msc_conn_ref, - enum vlr_proc_arq_result result) +static int fake_vlr_tx_cm_serv_rej(void *msc_conn_ref, enum gsm48_reject_value cause) { struct gsm_subscriber_connection *conn = msc_conn_ref; - btw("sending CM Service Reject for %s, result %s", - vlr_subscr_name(conn->vsub), - vlr_proc_arq_result_name(result)); + btw("sending CM Service Reject for %s, cause: %s", + vlr_subscr_name(conn->vsub), gsm48_reject_value_name(cause)); cm_service_result_sent |= RES_REJECT; return 0; } -- To view, visit https://gerrit.osmocom.org/7709 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I27bf8d68737ff1f8dc6d11fb1eac3d391aab0cb1 Gerrit-PatchSet: 1 Gerrit-Project: osmo-msc Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr From gerrit-no-reply at lists.osmocom.org Tue Apr 10 00:15:24 2018 From: gerrit-no-reply at lists.osmocom.org (Neels Hofmeyr) Date: Tue, 10 Apr 2018 00:15:24 +0000 Subject: [PATCH] osmo-msc[master]: msc conn ref counts: log human readable list of conn owners Message-ID: Review at https://gerrit.osmocom.org/7710 msc conn ref counts: log human readable list of conn owners Change-Id: I2a09efafbdbdde0399238f7d79feea8612605201 --- M src/libmsc/osmo_msc.c M tests/msc_vlr/msc_vlr_test_authen_reuse.err M tests/msc_vlr/msc_vlr_test_call.err M tests/msc_vlr/msc_vlr_test_gsm_authen.err M tests/msc_vlr/msc_vlr_test_gsm_ciph.err M tests/msc_vlr/msc_vlr_test_hlr_reject.err M tests/msc_vlr/msc_vlr_test_hlr_timeout.err M tests/msc_vlr/msc_vlr_test_ms_timeout.err M tests/msc_vlr/msc_vlr_test_no_authen.err M tests/msc_vlr/msc_vlr_test_reject_concurrency.err M tests/msc_vlr/msc_vlr_test_rest.err M tests/msc_vlr/msc_vlr_test_umts_authen.err 12 files changed, 1,107 insertions(+), 1,076 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-msc refs/changes/10/7710/1 -- To view, visit https://gerrit.osmocom.org/7710 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I2a09efafbdbdde0399238f7d79feea8612605201 Gerrit-PatchSet: 1 Gerrit-Project: osmo-msc Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr From gerrit-no-reply at lists.osmocom.org Tue Apr 10 00:16:49 2018 From: gerrit-no-reply at lists.osmocom.org (Neels Hofmeyr) Date: Tue, 10 Apr 2018 00:16:49 +0000 Subject: [PATCH] osmo-ttcn3-hacks[master]: MNCC: don't delete call table entries Message-ID: Review at https://gerrit.osmocom.org/7711 MNCC: don't delete call table entries If we receive an MNCC_REL_ind, we still may want to reply with an MNCC_REL_cnf. If the REL_ind, however, already drops the call table entry, all I get is: "MNCC Call table not found by MNCC Call ID " The call table should be cleared on each f_mncc_init(), so I guess it's fine to just not delete entries during ongoing communication. Change-Id: I73ec066744475d3cc464e34854175f8cf14cf125 --- M library/MNCC_Emulation.ttcn 1 file changed, 0 insertions(+), 4 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-ttcn3-hacks refs/changes/11/7711/1 diff --git a/library/MNCC_Emulation.ttcn b/library/MNCC_Emulation.ttcn index 59e3e77..2b83e70 100644 --- a/library/MNCC_Emulation.ttcn +++ b/library/MNCC_Emulation.ttcn @@ -299,8 +299,6 @@ /* forward to respective client */ vc_conn := f_comp_by_call_id(call_id); MNCC_CLIENT.send(sd.data) to vc_conn; - /* remove from call table */ - f_call_table_del(call_id); } /* MNCC -> Client: call related messages */ @@ -325,8 +323,6 @@ var integer call_id := f_call_id_by_comp(vc_conn); /* forward to MNCC socket */ MNCC.send(t_SD_MNCC(g_mncc_ud_id, mncc)); - /* remove from call table */ - f_call_table_del(call_id); } /* Client -> MNCC Socket: Normal message */ -- To view, visit https://gerrit.osmocom.org/7711 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I73ec066744475d3cc464e34854175f8cf14cf125 Gerrit-PatchSet: 1 Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr From gerrit-no-reply at lists.osmocom.org Tue Apr 10 00:16:49 2018 From: gerrit-no-reply at lists.osmocom.org (Neels Hofmeyr) Date: Tue, 10 Apr 2018 00:16:49 +0000 Subject: [PATCH] osmo-ttcn3-hacks[master]: msc: add TC_mo_cc_bssmap_clear to catch OS#3062 Message-ID: Review at https://gerrit.osmocom.org/7712 msc: add TC_mo_cc_bssmap_clear to catch OS#3062 The test currently crashes osmo-msc, which is fixed by I5c30e0f9545fb76615776ff6cc16b56aeb5b043a (osmo-msc). Related: OS#3062 Change-Id: Ic80646e1fba37bb6163ca3a7eead7980b4ad7a51 --- M msc/MSC_Tests.ttcn 1 file changed, 40 insertions(+), 0 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-ttcn3-hacks refs/changes/12/7712/1 diff --git a/msc/MSC_Tests.ttcn b/msc/MSC_Tests.ttcn index b5108c7..f2f1f72 100644 --- a/msc/MSC_Tests.ttcn +++ b/msc/MSC_Tests.ttcn @@ -1884,6 +1884,45 @@ vc_conn.done; } +/* BSSMAP Clear Request in the middle of a call, see OS#3062 */ +private function f_tc_mo_cc_bssmap_clear(charstring id, BSC_ConnHdlrPars pars) runs on BSC_ConnHdlr { + f_init_handler(pars); + var CallParameters cpars := valueof(t_CallParams('12345'H, 0)); + var MNCC_PDU mncc; + var MgcpCommand mgcp_cmd; + + f_perform_lu(); + + f_establish_fully(); + f_create_mncc_expect(hex2str(cpars.called_party)); + f_create_mgcp_expect(ExpectCriteria:{omit,omit,omit}); + + BSSAP.send(ts_PDU_DTAP_MO(ts_ML3_MO_CC_SETUP(cpars.transaction_id, cpars.called_party))); + MNCC.receive(tr_MNCC_SETUP_ind(?, tr_MNCC_number(hex2str(cpars.called_party)))) -> value mncc; + cpars.mncc_callref := mncc.u.signal.callref; + MNCC.send(ts_MNCC_CALL_PROC_req(cpars.mncc_callref, cpars.mncc_bearer_cap)); + BSSAP.receive(tr_PDU_DTAP_MT(tr_ML3_MT_CC_CALL_PROC(cpars.transaction_id))); + + MNCC.send(ts_MNCC_ALERT_req(cpars.mncc_callref)); + BSSAP.receive(tr_PDU_DTAP_MT(tr_ML3_MT_CC_ALERTING(cpars.transaction_id))); + MGCP.receive(tr_CRCX); + + f_sleep(1.0); + BSSAP.send(ts_BSSMAP_ClearRequest(0)); + + MNCC.receive(tr_MNCC_REL_ind(?, ?)) -> value mncc; + MNCC.send(ts_MNCC_REL_cnf(cpars.mncc_callref, valueof(ts_MNCC_cause(47)))); + + BSSAP.receive(tr_BSSMAP_ClearCommand); + BSSAP.send(ts_BSSMAP_ClearComplete); +} +testcase TC_mo_cc_bssmap_clear() runs on MTC_CT { + var BSC_ConnHdlr vc_conn; + f_init(); + + vc_conn := f_start_handler(refers(f_tc_mo_cc_bssmap_clear), 43); + vc_conn.done; +} /* TODO: @@ -1952,6 +1991,7 @@ /* Run this last: at the time of writing this test crashes the MSC */ execute( TC_lu_imsi_auth_tmsi_encr_3_1_log_msc_debug() ); + execute( TC_mo_cc_bssmap_clear() ); } -- To view, visit https://gerrit.osmocom.org/7712 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Ic80646e1fba37bb6163ca3a7eead7980b4ad7a51 Gerrit-PatchSet: 1 Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr From gerrit-no-reply at lists.osmocom.org Tue Apr 10 00:17:15 2018 From: gerrit-no-reply at lists.osmocom.org (Neels Hofmeyr) Date: Tue, 10 Apr 2018 00:17:15 +0000 Subject: osmo-msc[master]: msc_vlr_test_call: reproduce OS#3062 In-Reply-To: References: Message-ID: Patch Set 1: note related ttcn3 test: https://gerrit.osmocom.org/7712 -- To view, visit https://gerrit.osmocom.org/7703 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Ice7197b48d4e163a3c4d97b559fdcd7e88c4107e Gerrit-PatchSet: 1 Gerrit-Project: osmo-msc Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Neels Hofmeyr Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Tue Apr 10 00:18:31 2018 From: gerrit-no-reply at lists.osmocom.org (Neels Hofmeyr) Date: Tue, 10 Apr 2018 00:18:31 +0000 Subject: [PATCH] osmo-msc[master]: msc_vlr_test_call: reproduce OS#3062 In-Reply-To: References: Message-ID: msc_vlr_test_call: reproduce OS#3062 A related ttcn3 test is added in Ic80646e1fba37bb6163ca3a7eead7980b4ad7a51 Related: OS#3062 Change-Id: Ice7197b48d4e163a3c4d97b559fdcd7e88c4107e --- M tests/msc_vlr/msc_vlr_test_call.c M tests/msc_vlr/msc_vlr_test_call.err M tests/msc_vlr/msc_vlr_tests.c M tests/msc_vlr/msc_vlr_tests.h 4 files changed, 436 insertions(+), 0 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-msc refs/changes/03/7703/2 diff --git a/tests/msc_vlr/msc_vlr_test_call.c b/tests/msc_vlr/msc_vlr_test_call.c index 6359865..9d4126e 100644 --- a/tests/msc_vlr/msc_vlr_test_call.c +++ b/tests/msc_vlr/msc_vlr_test_call.c @@ -31,6 +31,12 @@ mncc_tx_to_cc(net, msg_type, mncc); } +static void on_call_release_mncc_sends_to_cc(uint32_t msg_type, struct gsm_mncc *mncc) +{ + mncc->msg_type = msg_type; + on_call_release_mncc_sends_to_cc_data = mncc; +} + #define IMSI "901700000010650" static void standard_lu() @@ -334,6 +340,80 @@ comment_end(); } +static void test_call_mt2() +{ + struct gsm_mncc mncc = { + .imsi = IMSI, + .callref = 0x423, + }; + + comment_start(); + + fake_time_start(); + + standard_lu(); + + BTW("after a while, MNCC asks us to setup a call, causing Paging"); + + paging_expect_imsi(IMSI); + paging_sent = false; + mncc_sends_to_cc(MNCC_SETUP_REQ, &mncc); + + VERBOSE_ASSERT(paging_sent, == true, "%d"); + VERBOSE_ASSERT(paging_stopped, == false, "%d"); + + btw("MS replies with Paging Response, and VLR sends Auth Request"); + auth_request_sent = false; + auth_request_expect_rand = "c187a53a5e6b9d573cac7c74451fd46d"; + auth_request_expect_autn = "1843a645b98d00005b2d666af46c45d9"; + ms_sends_msg("062707" + "03575886" /* classmark 2 */ + "089910070000106005" /* IMSI */); + VERBOSE_ASSERT(auth_request_sent, == true, "%d"); + + btw("MS sends Authen Response, VLR accepts and sends SecurityModeControl"); + expect_security_mode_ctrl(NULL, "1159ec926a50e98c034a6b7d7c9f418d"); + ms_sends_msg("0554" "7db47cf7" "2104" "f81e4dc7"); /* 2nd vector's res, s.a. */ + VERBOSE_ASSERT(security_mode_ctrl_sent, == true, "%d"); + + btw("MS sends SecurityModeControl acceptance, VLR accepts, sends CC Setup"); + dtap_expect_tx("0305" /* CC: Setup */); + ms_sends_security_mode_complete(); + VERBOSE_ASSERT(paging_stopped, == true, "%d"); + + cc_to_mncc_expect_tx(IMSI, MNCC_CALL_CONF_IND); + ms_sends_msg("8348" /* CC: Call Confirmed */ + "0406600402000581" /* Bearer Capability */ + "15020100" /* Call Control Capabilities */ + "40080402600400021f00" /* Supported Codec List */); + OSMO_ASSERT(cc_to_mncc_tx_confirmed); + + fake_time_passes(1, 23); + + cc_to_mncc_expect_tx("", MNCC_ALERT_IND); + ms_sends_msg("8381" /* CC: Alerting */); + OSMO_ASSERT(cc_to_mncc_tx_confirmed); + + fake_time_passes(15, 23); + + btw("The call failed, the BSC sends a BSSMAP Clear Request"); + on_call_release_mncc_sends_to_cc(MNCC_REL_REQ, &mncc); + cc_to_mncc_expect_tx("", MNCC_REL_CNF); + dtap_expect_tx("032d"); /* CC: Release */ + expect_iu_release(); + msc_clear_request(g_conn, 0); + OSMO_ASSERT(cc_to_mncc_tx_confirmed); + OSMO_ASSERT(iu_release_sent); + + EXPECT_CONN_COUNT(0); + + /* Make sure a pending release timer doesn't fire later to access freed data */ + fake_time_passes(15, 23); + + clear_vlr(); + comment_end(); +} + static void test_call_mo_to_unknown() { struct gsm_mncc mncc = { @@ -497,6 +577,7 @@ msc_vlr_test_func_t msc_vlr_tests[] = { test_call_mo, test_call_mt, + test_call_mt2, test_call_mo_to_unknown, test_call_mo_to_unknown_timeout, NULL diff --git a/tests/msc_vlr/msc_vlr_test_call.err b/tests/msc_vlr/msc_vlr_test_call.err index 281f418..6142464 100644 --- a/tests/msc_vlr/msc_vlr_test_call.err +++ b/tests/msc_vlr/msc_vlr_test_call.err @@ -757,6 +757,352 @@ full talloc report on 'msgb' (total 0 bytes in 1 blocks) talloc_total_blocks(tall_bsc_ctx) == 12 +===== test_call_mt2 +- Total time passed: 0.000000 s +- Location Update request causes a GSUP Send Auth Info request to HLR + MSC <--RAN_UTRAN_IU-- MS: GSM48_MT_MM_LOC_UPD_REQUEST + new conn +DREF unknown: MSC conn use + compl_l3 == 1 (0x1) +DRLL Dispatching 04.08 message GSM48_MT_MM_LOC_UPD_REQUEST (0x5:0x8) +DREF unknown: MSC conn use + fsm == 2 (0x5) +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Allocated +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Updated ID from LU +DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000010650 type=NORMAL +DMM LU/new-LAC: 23/23 +DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_IDLE}: Allocated +DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_IDLE}: is child of Subscr_Conn(901700000010650) +DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_IDLE}: rev=R99 net=UTRAN Auth+Ciph +DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA +DREF VLR subscr unknown usage increases to: 1 +DVLR set IMSI on subscriber; IMSI=901700000010650 id=901700000010650 +DVLR New subscr, IMSI: 901700000010650 +DREF VLR subscr IMSI:901700000010650 usage increases to: 2 +DREF VLR subscr IMSI:901700000010650 usage decreases to: 1 +DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_IDLE}: vlr_loc_upd_node1() +DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_AUTH +DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_NEEDS_AUTH}: Allocated +DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_NEEDS_AUTH}: is child of vlr_lu_fsm(901700000010650) +DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_NEEDS_AUTH}: Received Event VLR_AUTH_E_START +DVLR GSUP tx: 08010809710000000156f0 +GSUP --> HLR: OSMO_GSUP_MSGT_SEND_AUTH_INFO_REQUEST: 08010809710000000156f0 +DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_NEEDS_AUTH_WAIT_AI +DMM IMSI:901700000010650: subscr_conn_release_when_unused: conn still being established (SUBSCR_CONN_S_NEW) +DREF IMSI:901700000010650: MSC conn use - compl_l3 == 1 (0x4) + lu_result_sent == 0 +- from HLR, rx _SEND_AUTH_INFO_RESULT; VLR sends Auth Req to MS +<-- GSUP rx OSMO_GSUP_MSGT_SEND_AUTH_INFO_RESULT: 0a010809710000000156f00362201039fa2f4e3d523d8619a73b4f65c3e14d21049b36efdf2208059a4f668f6fbe39231027497388b6cb044648f396aa155b95ef2410f64735036e5871319c679f4742a75ea125108704f5ba55f30000d2ee44b22c8ea9192708e229c19e791f2e4103622010c187a53a5e6b9d573cac7c74451fd46d210485aa31302208d3d50a000bf04f6e23101159ec926a50e98c034a6b7d7c9f418d2410df3a03d9ca5335641efc8e36d76cd20b25101843a645b98d00005b2d666af46c45d927087db47cf7f81e4dc703622010efa9c29a9742148d5c9070348716e1bb210469d5f9fb22083df176f0c29f1a3d2310eb50e770ddcc3060101d2f43b6c2b884241076542abce5ff9345b0e8947f4c6e019c2510f9375e6d41e1000096e7fe4ff1c27e392708706f996719ba609c03622010f023d5a3b24726e0631b64b3840f82532104d570c03f2208ec011be8919883d62310c4e58af4ba43f3bcd904e16984f086d724100593f65e752e5cb7f473862bda05aa0a2510541ff1f077270000c5ea00d658bc7e9a27083fd26072eaa2a04d036220102f8f90c780d6a9c0c53da7ac57b6707e2104b072446f220823f39f9f425ad6e6231065af0527fda95b0dc5ae4aa515cdf32f2410537c3b35a3b13b08d08eeb28098f45cc25104bf4e564f75300009bc796706bc6574427080edb0eadbea94ac2 +DVLR GSUP rx 511: 0a010809710000000156f00362201039fa2f4e3d523d8619a73b4f65c3e14d21049b36efdf2208059a4f668f6fbe39231027497388b6cb044648f396aa155b95ef2410f64735036e5871319c679f4742a75ea125108704f5ba55f30000d2ee44b22c8ea9192708e229c19e791f2e4103622010c187a53a5e6b9d573cac7c74451fd46d210485aa31302208d3d50a000bf04f6e23101159ec926a50e98c034a6b7d7c9f418d2410df3a03d9ca5335641efc8e36d76cd20b25101843a645b98d00005b2d666af46c45d927087db47cf7f81e4dc703622010efa9c29a9742148d5c9070348716e1bb210469d5f9fb22083df176f0c29f1a3d2310eb50e770ddcc3060101d2f43b6c2b884241076542abce5ff9345b0e8947f4c6e019c2510f9375e6d41e1000096e7fe4ff1c27e392708706f996719ba609c03622010f023d5a3b24726e0631b64b3840f82532104d570c03f2208ec011be8919883d62310c4e58af4ba43f3bcd904e16984f086d724100593f65e752e5cb7f473862bda05aa0a2510541ff1f077270000c5ea00d658bc7e9a27083fd26072eaa2a04d036220102f8f90c780d6a9c0c53da7ac57b6707e2104b072446f220823f39f9f425ad6e6231065af0527fda95b0dc5ae4aa515cdf32f2410537c3b35a3b13b08d08eeb28098f45cc25104bf4e564f75300009bc796706bc6574427080edb0eadbea94ac2 +DREF VLR subscr IMSI:901700000010650 usage increases to: 2 +DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: Received Event VLR_AUTH_E_HLR_SAI_ACK +DVLR SUBSCR(IMSI:901700000010650) Received 5 auth tuples +DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: state_chg to VLR_SUB_AS_WAIT_RESP +DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=1 key_seq=0 -- will use UMTS AKA (is_r99=yes, at->vec.auth_types=0x3) +- sending UMTS Auth Request for IMSI:901700000010650: tuple use_count=1 key_seq=0 auth_types=0x3 and... +- ...rand=39fa2f4e3d523d8619a73b4f65c3e14d +- ...autn=8704f5ba55f30000d2ee44b22c8ea919 +- ...expecting res=e229c19e791f2e41 +DREF VLR subscr IMSI:901700000010650 usage decreases to: 1 +<-- GSUP rx OSMO_GSUP_MSGT_SEND_AUTH_INFO_RESULT: vlr_gsupc_read_cb() returns 0 + auth_request_sent == 1 + lu_result_sent == 0 +- MS sends Authen Response, VLR accepts and sends SecurityModeControl + MSC <--RAN_UTRAN_IU-- MS: GSM48_MT_MM_AUTH_RESP +DREF IMSI:901700000010650: MSC conn use + dtap == 2 (0x6) +DRLL Dispatching 04.08 message GSM48_MT_MM_AUTH_RESP (0x5:0x14) +DMM IMSI:901700000010650: MM UMTS AUTHENTICATION RESPONSE (res = e229c19e791f2e41) +DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP +DVLR SUBSCR(IMSI:901700000010650) AUTH on UTRAN received RES: e229c19e791f2e41 (8 bytes) +DVLR SUBSCR(IMSI:901700000010650) AUTH established UMTS security context +DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result VLR_AUTH_RES_PASSED +DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED +DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) +DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_AUTHENTICATED}: Removing from parent vlr_lu_fsm(901700000010650) +DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_AUTHENTICATED}: Freeing instance +DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_AUTHENTICATED}: Deallocated +DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_WAIT_AUTH}: Received Event VLR_ULA_E_AUTH_RES +DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_post_auth() +DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_WAIT_AUTH}: Set Ciphering Mode +DMM -> SECURITY MODE CONTROL IMSI:901700000010650 +- sending SecurityModeControl for UE ctx 42 send_ck=0 new_key=1 +- ...ik=27497388b6cb044648f396aa155b95ef +DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_WAIT_AUTH}: state_chg to VLR_ULA_S_WAIT_CIPH +DMM IMSI:901700000010650: subscr_conn_release_when_unused: conn still being established (SUBSCR_CONN_S_NEW) +DREF IMSI:901700000010650: MSC conn use - dtap == 1 (0x4) + security_mode_ctrl_sent == 1 + lu_result_sent == 0 +- MS sends SecurityModeControl acceptance, VLR accepts and sends GSUP LU Req to HLR +DMM <- SECURITY MODE COMPLETE IMSI:901700000010650 +DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_WAIT_CIPH}: Received Event VLR_ULA_E_CIPH_RES +DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_WAIT_CIPH}: vlr_loc_upd_post_ciph() +DIUCS IMSI:901700000010650: tx CommonID 901700000010650 +- Iu Common ID --RAN_UTRAN_IU--> MS (IMSI=901700000010650) +DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_WAIT_CIPH}: vlr_loc_upd_node_4() +DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_WAIT_CIPH}: state_chg to VLR_ULA_S_WAIT_HLR_UPD +DVLR upd_hlr_vlr_fsm(901700000010650){UPD_HLR_VLR_S_INIT}: Allocated +DVLR upd_hlr_vlr_fsm(901700000010650){UPD_HLR_VLR_S_INIT}: is child of vlr_lu_fsm(901700000010650) +DVLR upd_hlr_vlr_fsm(901700000010650){UPD_HLR_VLR_S_INIT}: Received Event UPD_HLR_VLR_E_START +DVLR GSUP tx: 04010809710000000156f0 +GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000000156f0 +DVLR upd_hlr_vlr_fsm(901700000010650){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA + gsup_tx_confirmed == 1 + lu_result_sent == 0 +- HLR sends _INSERT_DATA_REQUEST, VLR responds with _INSERT_DATA_RESULT +<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: 10010809710000000156f00804032443f2 +DVLR GSUP rx 17: 10010809710000000156f00804032443f2 +DREF VLR subscr IMSI:901700000010650 usage increases to: 2 +DVLR IMSI:901700000010650 has MSISDN:42342 +DVLR SUBSCR(MSISDN:42342) VLR: update for IMSI=901700000010650 (MSISDN=42342, used=2) +DVLR GSUP tx: 12010809710000000156f0 +GSUP --> HLR: OSMO_GSUP_MSGT_INSERT_DATA_RESULT: 12010809710000000156f0 +DREF VLR subscr MSISDN:42342 usage decreases to: 1 +<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: vlr_gsupc_read_cb() returns 0 + lu_result_sent == 0 +- HLR also sends GSUP _UPDATE_LOCATION_RESULT +<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: 06010809710000000156f0 +DVLR GSUP rx 11: 06010809710000000156f0 +DREF VLR subscr MSISDN:42342 usage increases to: 2 +DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_HLR_LU_RES +DVLR upd_hlr_vlr_fsm(901700000010650){UPD_HLR_VLR_S_WAIT_FOR_DATA}: Received Event UPD_HLR_VLR_E_UPD_LOC_ACK +DVLR upd_hlr_vlr_fsm(901700000010650){UPD_HLR_VLR_S_WAIT_FOR_DATA}: state_chg to UPD_HLR_VLR_S_DONE +DVLR upd_hlr_vlr_fsm(901700000010650){UPD_HLR_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR) +DVLR upd_hlr_vlr_fsm(901700000010650){UPD_HLR_VLR_S_DONE}: Removing from parent vlr_lu_fsm(901700000010650) +DVLR upd_hlr_vlr_fsm(901700000010650){UPD_HLR_VLR_S_DONE}: Freeing instance +DVLR upd_hlr_vlr_fsm(901700000010650){UPD_HLR_VLR_S_DONE}: Deallocated +DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_UPD_HLR_COMPL +DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_WAIT_HLR_UPD}: state_chg to VLR_ULA_S_WAIT_LU_COMPL +DVLR lu_compl_vlr_fsm(901700000010650){LU_COMPL_VLR_S_INIT}: Allocated +DVLR lu_compl_vlr_fsm(901700000010650){LU_COMPL_VLR_S_INIT}: is child of vlr_lu_fsm(901700000010650) +DVLR lu_compl_vlr_fsm(901700000010650){LU_COMPL_VLR_S_INIT}: Received Event LU_COMPL_VLR_E_START +DVLR lu_compl_vlr_fsm(901700000010650){LU_COMPL_VLR_S_INIT}: state_chg to LU_COMPL_VLR_S_WAIT_SUB_PRES +DVLR sub_pres_vlr_fsm(901700000010650){SUB_PRES_VLR_S_INIT}: Allocated +DVLR sub_pres_vlr_fsm(901700000010650){SUB_PRES_VLR_S_INIT}: is child of lu_compl_vlr_fsm(901700000010650) +DVLR sub_pres_vlr_fsm(901700000010650){SUB_PRES_VLR_S_INIT}: Received Event SUB_PRES_VLR_E_START +DVLR sub_pres_vlr_fsm(901700000010650){SUB_PRES_VLR_S_INIT}: state_chg to SUB_PRES_VLR_S_DONE +DVLR sub_pres_vlr_fsm(901700000010650){SUB_PRES_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR) +DVLR sub_pres_vlr_fsm(901700000010650){SUB_PRES_VLR_S_DONE}: Removing from parent lu_compl_vlr_fsm(901700000010650) +DVLR sub_pres_vlr_fsm(901700000010650){SUB_PRES_VLR_S_DONE}: Freeing instance +DVLR sub_pres_vlr_fsm(901700000010650){SUB_PRES_VLR_S_DONE}: Deallocated +DVLR lu_compl_vlr_fsm(901700000010650){LU_COMPL_VLR_S_WAIT_SUB_PRES}: Received Event LU_COMPL_VLR_E_SUB_PRES_COMPL +DVLR lu_compl_vlr_fsm(901700000010650){LU_COMPL_VLR_S_WAIT_SUB_PRES}: lu_compl_vlr_new_tmsi() +DVLR lu_compl_vlr_fsm(901700000010650){LU_COMPL_VLR_S_WAIT_SUB_PRES}: state_chg to LU_COMPL_VLR_S_WAIT_TMSI_CNF +- sending LU Accept for MSISDN:42342, with TMSI 0x03020100 +DREF VLR subscr MSISDN:42342 usage decreases to: 1 +<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0 + lu_result_sent == 1 +- a LU Accept with a new TMSI was sent, waiting for TMSI Realloc Compl + llist_count(&net->subscr_conns) == 1 +msc_subscr_conn_is_accepted() == false +- MS sends TMSI Realloc Complete + MSC <--RAN_UTRAN_IU-- MS: GSM48_MT_MM_TMSI_REALL_COMPL +DREF MSISDN:42342: MSC conn use + dtap == 2 (0x6) +DRLL Dispatching 04.08 message GSM48_MT_MM_TMSI_REALL_COMPL (0x5:0x1b) +DMM TMSI Reallocation Completed. Subscriber: MSISDN:42342 +DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_NEW_TMSI_ACK +DVLR lu_compl_vlr_fsm(901700000010650){LU_COMPL_VLR_S_WAIT_TMSI_CNF}: Received Event LU_COMPL_VLR_E_NEW_TMSI_ACK +DREF VLR subscr MSISDN:42342 usage increases to: 2 +DVLR lu_compl_vlr_fsm(901700000010650){LU_COMPL_VLR_S_WAIT_TMSI_CNF}: state_chg to LU_COMPL_VLR_S_DONE +DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_LU_COMPL_SUCCESS +DVLR lu_compl_vlr_fsm(901700000010650){LU_COMPL_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT) +DVLR lu_compl_vlr_fsm(901700000010650){LU_COMPL_VLR_S_DONE}: Removing from parent vlr_lu_fsm(901700000010650) +DVLR lu_compl_vlr_fsm(901700000010650){LU_COMPL_VLR_S_DONE}: Freeing instance +DVLR lu_compl_vlr_fsm(901700000010650){LU_COMPL_VLR_S_DONE}: Deallocated +DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_RELEASE_WHEN_UNUSED +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: subscr_conn_fsm_release_when_unused: releasing conn +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_RELEASED +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) +DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT) +DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_DONE}: Removing from parent Subscr_Conn(901700000010650) +DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT +DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_DONE}: Freeing instance +DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_DONE}: Deallocated +DMM msc_subscr_conn_close(vsub=MSISDN:42342, cause=2): no conn fsm, releasing directly without release event. +- Iu Release --RAN_UTRAN_IU--> MS +DREF MSISDN:42342: MSC conn use - fsm == 1 (0x2) +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Freeing instance +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Deallocated +DREF MSISDN:42342: MSC conn use - dtap == 0 (0x0) +DRLL subscr MSISDN:42342: Freeing subscriber connection +DREF VLR subscr MSISDN:42342 usage decreases to: 1 + iu_release_sent == 1 +- LU was successful, and the conn has already been closed + llist_count(&net->subscr_conns) == 0 +DREF VLR subscr MSISDN:42342 usage increases to: 2 + vsub != NULL == 1 + strcmp(vsub->imsi, IMSI) == 0 + vsub->lac == 23 +DREF VLR subscr MSISDN:42342 usage decreases to: 1 +--- +- after a while, MNCC asks us to setup a call, causing Paging +DMNCC receive message MNCC_SETUP_REQ +DREF VLR subscr MSISDN:42342 usage increases to: 2 +DCC (ti ff sub MSISDN:42342 callref 423) New transaction +DREF VLR subscr MSISDN:42342 usage increases to: 3 +DMM Subscriber MSISDN:42342 not paged yet, start paging. + RAN_UTRAN_IU sends out paging request to IMSI 901700000010650, TMSI 0x03020100, LAC 23 + strcmp(paging_expecting_imsi, imsi) == 0 +DREF VLR subscr MSISDN:42342 usage increases to: 4 +DREF VLR subscr MSISDN:42342 usage decreases to: 3 + paging_sent == 1 + paging_stopped == 0 +- MS replies with Paging Response, and VLR sends Auth Request + MSC <--RAN_UTRAN_IU-- MS: GSM48_MT_RR_PAG_RESP + new conn +DREF unknown: MSC conn use + compl_l3 == 1 (0x1) +DRLL Dispatching 04.08 message GSM48_MT_RR_PAG_RESP (0x6:0x27) +DRR PAGING RESPONSE: MI(IMSI)=901700000010650 +DREF unknown: MSC conn use + fsm == 2 (0x5) +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Allocated +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Updated ID from PAGING_RESP +DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: Allocated +DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: is child of Subscr_Conn(901700000010650) +DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: rev=R99 net=UTRAN Auth+Ciph +DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: Received Event PR_ARQ_E_START +DREF VLR subscr MSISDN:42342 usage increases to: 4 +DREF VLR subscr MSISDN:42342 usage increases to: 5 +DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: proc_arq_vlr_fn_post_imsi() +DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: state_chg to PR_ARQ_S_WAIT_AUTH +DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_NEEDS_AUTH}: Allocated +DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_NEEDS_AUTH}: is child of Process_Access_Request_VLR(901700000010650) +DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_NEEDS_AUTH}: Received Event VLR_AUTH_E_START +DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_WAIT_RESP +DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=1 key_seq=1 -- will use UMTS AKA (is_r99=yes, at->vec.auth_types=0x3) +- sending UMTS Auth Request for MSISDN:42342: tuple use_count=1 key_seq=1 auth_types=0x3 and... +- ...rand=c187a53a5e6b9d573cac7c74451fd46d +- ...autn=1843a645b98d00005b2d666af46c45d9 +- ...expecting res=7db47cf7f81e4dc7 +DREF VLR subscr MSISDN:42342 usage decreases to: 4 +DMM MSISDN:42342: subscr_conn_release_when_unused: conn still being established (SUBSCR_CONN_S_NEW) +DREF MSISDN:42342: MSC conn use - compl_l3 == 1 (0x4) + auth_request_sent == 1 +- MS sends Authen Response, VLR accepts and sends SecurityModeControl + MSC <--RAN_UTRAN_IU-- MS: GSM48_MT_MM_AUTH_RESP +DREF MSISDN:42342: MSC conn use + dtap == 2 (0x6) +DRLL Dispatching 04.08 message GSM48_MT_MM_AUTH_RESP (0x5:0x14) +DMM MSISDN:42342: MM UMTS AUTHENTICATION RESPONSE (res = 7db47cf7f81e4dc7) +DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP +DVLR SUBSCR(MSISDN:42342) AUTH on UTRAN received RES: 7db47cf7f81e4dc7 (8 bytes) +DVLR SUBSCR(MSISDN:42342) AUTH established UMTS security context +DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result VLR_AUTH_RES_PASSED +DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED +DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) +DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_AUTHENTICATED}: Removing from parent Process_Access_Request_VLR(901700000010650) +DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_AUTHENTICATED}: Freeing instance +DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_AUTHENTICATED}: Deallocated +DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_WAIT_AUTH}: Received Event PR_ARQ_E_AUTH_RES +DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_WAIT_AUTH}: got VLR_AUTH_RES_PASSED +DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2() +DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_WAIT_AUTH}: Set Ciphering Mode +DMM -> SECURITY MODE CONTROL MSISDN:42342 +- sending SecurityModeControl for UE ctx 42 send_ck=0 new_key=1 +- ...ik=1159ec926a50e98c034a6b7d7c9f418d +DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_WAIT_AUTH}: state_chg to PR_ARQ_S_WAIT_CIPH +DMM MSISDN:42342: subscr_conn_release_when_unused: conn still being established (SUBSCR_CONN_S_NEW) +DREF MSISDN:42342: MSC conn use - dtap == 1 (0x4) + security_mode_ctrl_sent == 1 +- MS sends SecurityModeControl acceptance, VLR accepts, sends CC Setup +DMM <- SECURITY MODE COMPLETE MSISDN:42342 +DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_WAIT_CIPH}: Received Event PR_ARQ_E_CIPH_RES +DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_node2_post_ciph() +DIUCS MSISDN:42342: tx CommonID 901700000010650 +- Iu Common ID --RAN_UTRAN_IU--> MS (IMSI=901700000010650) +DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_node2_post_vlr() +DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_pres() +DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_trace() +DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_imei() +DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_WAIT_CIPH}: proc_arq_fsm_done(VLR_PR_ARQ_RES_PASSED) +DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_WAIT_CIPH}: state_chg to PR_ARQ_S_DONE +DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED +DPAG Paging success for MSISDN:42342 (event=0) +DPAG Calling paging cbfn. +DCC Paging subscr 42342 succeeded! +DREF MSISDN:42342: MSC conn use + trans_cc == 2 (0xc) +DCC starting timer T303 with 30 seconds +DCC (ti 00 sub MSISDN:42342) new state NULL -> CALL_PRESENT +DMSC msc_tx 2 bytes to MSISDN:42342 via RAN_UTRAN_IU +- DTAP --RAN_UTRAN_IU--> MS: GSM48_MT_CC_SETUP: 0305 +- DTAP matches expected message +DREF VLR subscr MSISDN:42342 usage decreases to: 3 +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_RELEASE_WHEN_UNUSED +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: subscr_conn_fsm_release_when_unused: connection still has active transaction: CC + paging_stopped == 1 + MSC <--RAN_UTRAN_IU-- MS: GSM48_MT_CC_CALL_CONF +DREF MSISDN:42342: MSC conn use + dtap == 3 (0xe) +DRLL Dispatching 04.08 message GSM48_MT_CC_CALL_CONF (0x3:0x8) +DCC stopping pending timer T303 +DCC starting timer T310 with 30 seconds +DCC (ti 00 sub MSISDN:42342) new state CALL_PRESENT -> MO_TERM_CALL_CONF + MS <--Call Assignment-- MSC: subscr=MSISDN:42342 callref=0x423 +DMNCC transmit message MNCC_CALL_CONF_IND +DCC Sending 'MNCC_CALL_CONF_IND' to MNCC. + MSC --> MNCC: callref 0x423: MNCC_CALL_CONF_IND +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_RELEASE_WHEN_UNUSED +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_COMMUNICATING}: subscr_conn_fsm_release_when_unused: connection still has active transaction: CC +DREF MSISDN:42342: MSC conn use - dtap == 2 (0xc) +- Total time passed: 1.000023 s + MSC <--RAN_UTRAN_IU-- MS: GSM48_MT_CC_ALERTING +DREF MSISDN:42342: MSC conn use + dtap == 3 (0xe) +DRLL Dispatching 04.08 message GSM48_MT_CC_ALERTING (0x3:0x1) +DCC stopping pending timer T310 +DCC starting timer T301 with 180 seconds +DCC (ti 00 sub MSISDN:42342) new state MO_TERM_CALL_CONF -> CALL_RECEIVED +DMNCC transmit message MNCC_ALERT_IND +DCC Sending 'MNCC_ALERT_IND' to MNCC. + MSC --> MNCC: callref 0x423: MNCC_ALERT_IND +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_COMMUNICATING +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_RELEASE_WHEN_UNUSED +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_COMMUNICATING}: subscr_conn_fsm_release_when_unused: connection still has active transaction: CC +DREF MSISDN:42342: MSC conn use - dtap == 2 (0xc) +- Total time passed: 16.000046 s +- The call failed, the BSC sends a BSSMAP Clear Request +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_CN_CLOSE +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_COMMUNICATING}: state_chg to SUBSCR_CONN_S_RELEASED +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) +DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT) +DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_DONE}: Removing from parent Subscr_Conn(901700000010650) +DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_DONE}: Freeing instance +DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_DONE}: Deallocated +DMM msc_subscr_conn_close(vsub=MSISDN:42342, cause=2): no conn fsm, releasing directly without release event. +DCC stopping pending timer T301 + MS <--Call Release-- MSC: subscr=MSISDN:42342 callref=0x423 +DMNCC receive message MNCC_REL_REQ +DCC (ti 00 sub 42342) Received 'MNCC_REL_REQ' from MNCC in state 7 (CALL_RECEIVED) +DCC starting timer T308 with 10 seconds +DCC (ti 00 sub MSISDN:42342) new state CALL_RECEIVED -> RELEASE_REQ +DMSC msc_tx 2 bytes to MSISDN:42342 via RAN_UTRAN_IU +- DTAP --RAN_UTRAN_IU--> MS: GSM48_MT_CC_RELEASE: 032d +- DTAP matches expected message +DMNCC transmit message MNCC_REL_CNF +DCC Sending 'MNCC_REL_CNF' to MNCC. + MSC --> MNCC: callref 0x423: MNCC_REL_CNF +DCC (ti 00 sub MSISDN:42342) new state RELEASE_REQ -> NULL +DCC MSISDN:42342 Timer 0x308 is still running while discarding transaction -- this is a bug: we were still expecting a response but are freeing the transaction anyway +DREF VLR subscr MSISDN:42342 usage decreases to: 2 +DREF MSISDN:42342: MSC conn use - trans_cc == 1 (0x4) +- Iu Release --RAN_UTRAN_IU--> MS +DREF MSISDN:42342: MSC conn use - fsm == 0 (0x0) +DRLL subscr MSISDN:42342: Freeing subscriber connection +DREF VLR subscr MSISDN:42342 usage decreases to: 1 +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Freeing instance +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Deallocated + llist_count(&net->subscr_conns) == 0 +- Total time passed: 31.000069 s +DREF freeing VLR subscr MSISDN:42342 +===== test_call_mt2: SUCCESS + +full talloc report on 'msgb' (total 0 bytes in 1 blocks) +talloc_total_blocks(tall_bsc_ctx) == 12 + ===== test_call_mo_to_unknown - Total time passed: 0.000000 s - Location Update request causes a GSUP Send Auth Info request to HLR diff --git a/tests/msc_vlr/msc_vlr_tests.c b/tests/msc_vlr/msc_vlr_tests.c index 45ab5e1..cb716a8 100644 --- a/tests/msc_vlr/msc_vlr_tests.c +++ b/tests/msc_vlr/msc_vlr_tests.c @@ -616,12 +616,19 @@ return 0; } +struct gsm_mncc *on_call_release_mncc_sends_to_cc_data = NULL; + /* override, requires '-Wl,--wrap=msc_mgcp_call_release' */ void __real_msc_mgcp_call_release(struct gsm_trans *trans); void __wrap_msc_mgcp_call_release(struct gsm_trans *trans) { log("MS <--Call Release-- MSC: subscr=%s callref=0x%x", vlr_subscr_name(trans->vsub), trans->callref); + if (on_call_release_mncc_sends_to_cc_data) { + mncc_tx_to_cc(trans->net, on_call_release_mncc_sends_to_cc_data->msg_type, + on_call_release_mncc_sends_to_cc_data); + on_call_release_mncc_sends_to_cc_data = NULL; + } } static int fake_vlr_tx_lu_acc(void *msc_conn_ref, uint32_t send_tmsi) diff --git a/tests/msc_vlr/msc_vlr_tests.h b/tests/msc_vlr/msc_vlr_tests.h index 858936c..15df9ec 100644 --- a/tests/msc_vlr/msc_vlr_tests.h +++ b/tests/msc_vlr/msc_vlr_tests.h @@ -112,6 +112,8 @@ extern bool cc_to_mncc_tx_confirmed; extern uint32_t cc_to_mncc_tx_got_callref; +extern struct gsm_mncc *on_call_release_mncc_sends_to_cc_data; + static inline void expect_iu_release() { iu_release_expected = true; -- To view, visit https://gerrit.osmocom.org/7703 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newpatchset Gerrit-Change-Id: Ice7197b48d4e163a3c4d97b559fdcd7e88c4107e Gerrit-PatchSet: 2 Gerrit-Project: osmo-msc Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Neels Hofmeyr From gerrit-no-reply at lists.osmocom.org Tue Apr 10 01:03:37 2018 From: gerrit-no-reply at lists.osmocom.org (Neels Hofmeyr) Date: Tue, 10 Apr 2018 01:03:37 +0000 Subject: [PATCH] osmo-msc[master]: CC: intentionally release T308 on BSSMAP Clear Request from BSC In-Reply-To: References: Message-ID: Hello Jenkins Builder, I'd like you to reexamine a change. Please visit https://gerrit.osmocom.org/7704 to look at the new patch set (#2). CC: intentionally release T308 on BSSMAP Clear Request from BSC So far we hit a running T308 during CC release when caused by a BSSMAP Clear Request, and we loudly log that as error. However, now I understand that T308 is a direct cause of the dispatch of a REL IND towards MNCC, which is used to indicate teardown to MNCC. So during _gsm48_cc_trans_free(), we first clear all timers, then invoke mncc_release_ind() which starts another timer (useful for graceful CC Release, but in this code path the intention is immediate release). Simply immediately cancel the timer again and release the conn. A separate question is whether a BSSMAP Clear Request should be less aggressive in releasing the connections; i.e. instead of calling trans_free() all around, to rather ask each transaction to "please stop soon", somehow. Related: OS#3062 Change-Id: I231fdb574a086a206321148474cbdc7ca9cf39f0 --- M src/libmsc/gsm_04_08.c M src/libmsc/transaction.c M tests/msc_vlr/msc_vlr_test_call.err 3 files changed, 4 insertions(+), 10 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-msc refs/changes/04/7704/2 diff --git a/src/libmsc/gsm_04_08.c b/src/libmsc/gsm_04_08.c index e5ddb44..f29c0b6 100644 --- a/src/libmsc/gsm_04_08.c +++ b/src/libmsc/gsm_04_08.c @@ -1422,6 +1422,9 @@ mncc_release_ind(trans->net, trans, trans->callref, GSM48_CAUSE_LOC_PRN_S_LU, GSM48_CC_CAUSE_RESOURCE_UNAVAIL); + /* This is a final freeing of the transaction. The MNCC release may have triggered the + * T308 release timer, but we don't have the luxury of graceful CC Release here. */ + gsm48_stop_cc_timer(trans); } if (trans->cc.state != GSM_CSTATE_NULL) new_cc_state(trans, GSM_CSTATE_NULL); diff --git a/src/libmsc/transaction.c b/src/libmsc/transaction.c index 66b929a..147099e 100644 --- a/src/libmsc/transaction.c +++ b/src/libmsc/transaction.c @@ -122,15 +122,6 @@ switch (trans->protocol) { case GSM48_PDISC_CC: _gsm48_cc_trans_free(trans); - if (osmo_timer_pending(&trans->cc.timer)) { - LOGP(DCC, LOGL_ERROR, - "%s Timer 0x%x is still running while discarding transaction" - " -- this is a bug: we were still expecting a response but" - " are freeing the transaction anyway\n", - vlr_subscr_name(trans->conn->vsub), trans->cc.Tcurrent); - osmo_timer_del(&trans->cc.timer); - trans->cc.Tcurrent = 0; - } conn_usage_token = MSC_CONN_USE_TRANS_CC; break; case GSM48_PDISC_SMS: diff --git a/tests/msc_vlr/msc_vlr_test_call.err b/tests/msc_vlr/msc_vlr_test_call.err index 6142464..1b8002b 100644 --- a/tests/msc_vlr/msc_vlr_test_call.err +++ b/tests/msc_vlr/msc_vlr_test_call.err @@ -1085,8 +1085,8 @@ DMNCC transmit message MNCC_REL_CNF DCC Sending 'MNCC_REL_CNF' to MNCC. MSC --> MNCC: callref 0x423: MNCC_REL_CNF +DCC stopping pending timer T308 DCC (ti 00 sub MSISDN:42342) new state RELEASE_REQ -> NULL -DCC MSISDN:42342 Timer 0x308 is still running while discarding transaction -- this is a bug: we were still expecting a response but are freeing the transaction anyway DREF VLR subscr MSISDN:42342 usage decreases to: 2 DREF MSISDN:42342: MSC conn use - trans_cc == 1 (0x4) - Iu Release --RAN_UTRAN_IU--> MS -- To view, visit https://gerrit.osmocom.org/7704 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newpatchset Gerrit-Change-Id: I231fdb574a086a206321148474cbdc7ca9cf39f0 Gerrit-PatchSet: 2 Gerrit-Project: osmo-msc Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr Gerrit-Reviewer: Jenkins Builder From gerrit-no-reply at lists.osmocom.org Tue Apr 10 01:03:37 2018 From: gerrit-no-reply at lists.osmocom.org (Neels Hofmeyr) Date: Tue, 10 Apr 2018 01:03:37 +0000 Subject: [PATCH] osmo-msc[master]: refactor subscr_conn and subscr_conn_fsm de-/alloc In-Reply-To: References: Message-ID: Hello Jenkins Builder, I'd like you to reexamine a change. Please visit https://gerrit.osmocom.org/7705 to look at the new patch set (#2). refactor subscr_conn and subscr_conn_fsm de-/alloc Refactor: 1. Glue the gsm_subscriber_connection alloc to the subscr_conn_fsm. 2. Add separate AUTH_CIPH state to the FSM. 3. Use conn->use_count to trigger conn release. 4. Add separate RELEASING state to the FSM. 5. Add rate counters for each of the three Complete Layer 3 types. Details: 1. Glue the gsm_subscriber_connection alloc to the subscr_conn_fsm. Historically, a gsm_subscriber_connection was allocated in libbsc land, and only upon Complete Layer 3 did libmsc add the fsm instance. After splitting openbsc.git into a separate osmo-msc, this is no longer necessary, hence: Closely tie gsm_subscriber_connection allocation to the subscr_conn_fsm instance: talloc the conn as a child of the FSM instance, and discard the conn as soon as the FSM terminates. 2. Add separate AUTH_CIPH state to the FSM. Decoding the Complete Layer 3 message is distinctly separate from waiting for the VLR FSMs to conclude. Use the NEW state as "we don't know if this is a valid message yet", and the AUTH_CIPH state as "evaluating, don't release". A profound effect of this: should we for any odd reason fail to leave the FSM's NEW state, the conn will be released right at the end of msc_compl_l3(), without needing to trigger release in each code path. 3. Use conn->use_count to trigger conn release. Before, the FSM itself would hold a use count on the conn, and hence we would need to ask it whether it is ready to release the conn yet by dispatching events, to achieve a use_count decrement. Instead, unite the FSM instance and conn, and do not hold a use count by the FSM. Hence, trigger an FSM "UNUSED" event only when the use_count reaches zero. As long as use counts are done correctly, the FSM will terminate correctly. These exceptions: - The new AUTH_CIPH state explicitly ignores UNUSED events, since we expect the use count to reach zero while evaluating Authentication and Ciphering. (I experimented with holding a use count by AUTH_CIPH onenter() and releasing by onleave(), but the use count and thus the conn are released before the next state can initiate transactions that would increment the use count again. Same thing for the VLR FSMs holding a use count, they should be done before we advance to the next state. The easiest is to simply expect zero use count during the AUTH_CIPH state.) - A CM Service Request means that even though the MSC would be through with all it wants to do, we shall still wait for a request to follow from the MS. Hence the FSM holds a use count on itself while a CM Service is pending. - While waiting for a Release/Clear Complete, the FSM holds a use count on itself. 4. Add separate RELEASING state to the FSM. If we decide to release for other reasons than a use count reaching zero, we still need to be able to wait for the msc_dtap() use count on the conn to release. (An upcoming patch will further use the RELEASING state to properly wait for Clear Complete / Release Complete messages.) 5. Add rate counters for each of the three Complete Layer 3 types. Besides LU, also count CM Service Request and Paging Response acceptance/rejections. Without these counters, only very few of the auth+ciph outcomes actually show in the counters. Related: OS#3122 Change-Id: I55feb379e176a96a831e105b86202b17a0ffe889 --- M include/osmocom/msc/gsm_data.h M include/osmocom/msc/osmo_msc.h M src/libmsc/gsm_04_08.c M src/libmsc/msc_ifaces.c M src/libmsc/osmo_msc.c M src/libmsc/subscr_conn.c M src/libmsc/transaction.c M tests/msc_vlr/msc_vlr_test_authen_reuse.err M tests/msc_vlr/msc_vlr_test_call.err M tests/msc_vlr/msc_vlr_test_gsm_authen.err M tests/msc_vlr/msc_vlr_test_gsm_ciph.err M tests/msc_vlr/msc_vlr_test_hlr_reject.err M tests/msc_vlr/msc_vlr_test_hlr_timeout.err M tests/msc_vlr/msc_vlr_test_ms_timeout.err M tests/msc_vlr/msc_vlr_test_no_authen.err M tests/msc_vlr/msc_vlr_test_reject_concurrency.err M tests/msc_vlr/msc_vlr_test_rest.c M tests/msc_vlr/msc_vlr_test_rest.err M tests/msc_vlr/msc_vlr_test_umts_authen.err M tests/msc_vlr/msc_vlr_tests.c 20 files changed, 3,580 insertions(+), 2,937 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-msc refs/changes/05/7705/2 -- To view, visit https://gerrit.osmocom.org/7705 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newpatchset Gerrit-Change-Id: I55feb379e176a96a831e105b86202b17a0ffe889 Gerrit-PatchSet: 2 Gerrit-Project: osmo-msc Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr Gerrit-Reviewer: Jenkins Builder From gerrit-no-reply at lists.osmocom.org Tue Apr 10 01:03:37 2018 From: gerrit-no-reply at lists.osmocom.org (Neels Hofmeyr) Date: Tue, 10 Apr 2018 01:03:37 +0000 Subject: [PATCH] osmo-msc[master]: properly receive BSSMAP Clear Complete and Iu Release Complete In-Reply-To: References: Message-ID: Hello Jenkins Builder, I'd like you to reexamine a change. Please visit https://gerrit.osmocom.org/7706 to look at the new patch set (#2). properly receive BSSMAP Clear Complete and Iu Release Complete When sending a BSSMAP Clear or Iu Release, do not immediately discard the conn, but wait until a BSSMAP Clear Complete / Iu Release Complete has been received. Hence we will no longer show in the log that an incoming Release/Clear Complete belongs to an unknown subscriber, but will still be around to properly log the release. Related: OS#3122 Change-Id: Ie4c6aaba3866d6e5b98004e8870a215e8cf8ffc1 --- M include/osmocom/msc/gsm_data.h M include/osmocom/msc/osmo_msc.h M src/libmsc/a_iface_bssap.c M src/libmsc/iucs_ranap.c M src/libmsc/osmo_msc.c M src/libmsc/subscr_conn.c M tests/msc_vlr/msc_vlr_test_authen_reuse.c M tests/msc_vlr/msc_vlr_test_authen_reuse.err M tests/msc_vlr/msc_vlr_test_call.c M tests/msc_vlr/msc_vlr_test_call.err M tests/msc_vlr/msc_vlr_test_gsm_authen.c M tests/msc_vlr/msc_vlr_test_gsm_authen.err M tests/msc_vlr/msc_vlr_test_gsm_ciph.c M tests/msc_vlr/msc_vlr_test_gsm_ciph.err M tests/msc_vlr/msc_vlr_test_hlr_reject.c M tests/msc_vlr/msc_vlr_test_hlr_reject.err M tests/msc_vlr/msc_vlr_test_hlr_timeout.c M tests/msc_vlr/msc_vlr_test_hlr_timeout.err M tests/msc_vlr/msc_vlr_test_ms_timeout.c M tests/msc_vlr/msc_vlr_test_ms_timeout.err M tests/msc_vlr/msc_vlr_test_no_authen.c M tests/msc_vlr/msc_vlr_test_no_authen.err M tests/msc_vlr/msc_vlr_test_reject_concurrency.c M tests/msc_vlr/msc_vlr_test_reject_concurrency.err M tests/msc_vlr/msc_vlr_test_rest.c M tests/msc_vlr/msc_vlr_test_rest.err M tests/msc_vlr/msc_vlr_test_umts_authen.c M tests/msc_vlr/msc_vlr_test_umts_authen.err M tests/msc_vlr/msc_vlr_tests.c M tests/msc_vlr/msc_vlr_tests.h 30 files changed, 931 insertions(+), 571 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-msc refs/changes/06/7706/2 diff --git a/include/osmocom/msc/gsm_data.h b/include/osmocom/msc/gsm_data.h index 4cfe08d..c5e7aaf 100644 --- a/include/osmocom/msc/gsm_data.h +++ b/include/osmocom/msc/gsm_data.h @@ -148,6 +148,7 @@ struct { struct ranap_ue_conn_ctx *ue_ctx; uint8_t rab_id; + bool waiting_for_release_complete; } iu; struct { @@ -164,6 +165,8 @@ * to reference the SCCP connection that is * associated with this subscriber connection */ uint32_t conn_id; + + bool waiting_for_clear_complete; } a; }; diff --git a/include/osmocom/msc/osmo_msc.h b/include/osmocom/msc/osmo_msc.h index f7d89a2..632b231 100644 --- a/include/osmocom/msc/osmo_msc.h +++ b/include/osmocom/msc/osmo_msc.h @@ -77,7 +77,11 @@ void msc_subscr_conn_communicating(struct gsm_subscriber_connection *conn); void msc_subscr_conn_close(struct gsm_subscriber_connection *conn, uint32_t cause); +void msc_subscr_conn_mo_close(struct gsm_subscriber_connection *conn, uint32_t cause); bool msc_subscr_conn_in_release(struct gsm_subscriber_connection *conn); + +void msc_subscr_conn_rx_bssmap_clear_complete(struct gsm_subscriber_connection *conn); +void msc_subscr_conn_rx_iu_release_complete(struct gsm_subscriber_connection *conn); enum msc_subscr_conn_use { MSC_CONN_USE_UNTRACKED = -1, @@ -107,6 +111,8 @@ void _msc_subscr_conn_put(struct gsm_subscriber_connection *conn, enum msc_subscr_conn_use balance_token, const char *file, int line); +bool msc_subscr_conn_used_by(struct gsm_subscriber_connection *conn, + enum msc_subscr_conn_use token); void msc_stop_paging(struct vlr_subscr *vsub); diff --git a/src/libmsc/a_iface_bssap.c b/src/libmsc/a_iface_bssap.c index d0d6bc0..87ccf05 100644 --- a/src/libmsc/a_iface_bssap.c +++ b/src/libmsc/a_iface_bssap.c @@ -239,11 +239,16 @@ /* Endpoint to handle BSSMAP clear complete */ static int bssmap_rx_clear_complete(struct osmo_sccp_user *scu, - const struct a_conn_info *a_conn_info, struct msgb *msg) + const struct a_conn_info *a_conn_info, + struct gsm_subscriber_connection *conn) { int rc; - LOGP(DMSC, LOGL_INFO, "Rx BSSMAP CLEAR COMPLETE, releasing SCCP connection\n"); + LOGPCONN(conn, LOGL_INFO, "Rx BSSMAP CLEAR COMPLETE, releasing SCCP connection\n"); + + if (conn) + msc_subscr_conn_rx_bssmap_clear_complete(conn); + rc = osmo_sccp_tx_disconn(scu, a_conn_info->conn_id, NULL, SCCP_RELEASE_CAUSE_END_USER_ORIGINATED); @@ -568,8 +573,6 @@ switch (msg_type) { case BSS_MAP_MSG_COMPLETE_LAYER_3: return bssmap_rx_l3_compl(scu, a_conn_info, msg, &tp); - case BSS_MAP_MSG_CLEAR_COMPLETE: - return bssmap_rx_clear_complete(scu, a_conn_info, msg); default: break; } @@ -577,6 +580,13 @@ conn = subscr_conn_lookup_a(a_conn_info->network, a_conn_info->conn_id); if (!conn) { LOGP(DBSSAP, LOGL_ERROR, "Couldn't find subscr_conn for conn_id=%d\n", a_conn_info->conn_id); + /* We expect a Clear Complete to come in on a valid conn. But if for some reason we still + * have the SCCP connection while the subscriber connection data is already gone, at + * least close the SCCP conn. */ + + if (msg_type == BSS_MAP_MSG_CLEAR_COMPLETE) + return bssmap_rx_clear_complete(scu, a_conn_info, NULL); + return -EINVAL; } @@ -585,6 +595,8 @@ switch (msg_type) { case BSS_MAP_MSG_CLEAR_RQST: return bssmap_rx_clear_rqst(conn, msg, &tp); + case BSS_MAP_MSG_CLEAR_COMPLETE: + return bssmap_rx_clear_complete(scu, a_conn_info, conn); case BSS_MAP_MSG_CLASSMARK_UPDATE: return bssmap_rx_classmark_upd(conn, msg, &tp); case BSS_MAP_MSG_CIPHER_MODE_COMPLETE: diff --git a/src/libmsc/iucs_ranap.c b/src/libmsc/iucs_ranap.c index 57cd50e..ec0b569 100644 --- a/src/libmsc/iucs_ranap.c +++ b/src/libmsc/iucs_ranap.c @@ -117,7 +117,7 @@ case RANAP_IU_EVENT_LINK_INVALIDATED: LOGP(DIUCS, LOGL_INFO, "IuCS release for %s\n", vlr_subscr_name(conn->vsub)); - msc_subscr_conn_close(conn, 0); + msc_subscr_conn_rx_iu_release_complete(conn); return 0; case RANAP_IU_EVENT_SECURITY_MODE_COMPLETE: diff --git a/src/libmsc/osmo_msc.c b/src/libmsc/osmo_msc.c index a5184b2..cc67a5a 100644 --- a/src/libmsc/osmo_msc.c +++ b/src/libmsc/osmo_msc.c @@ -283,6 +283,11 @@ osmo_fsm_inst_dispatch(conn->fi, SUBSCR_CONN_E_UNUSED, NULL); } +bool msc_subscr_conn_used_by(struct gsm_subscriber_connection *conn, enum msc_subscr_conn_use token) +{ + return conn && (conn->use_tokens & (1 << token)); +} + const struct value_string msc_subscr_conn_use_names[] = { {MSC_CONN_USE_UNTRACKED, "UNTRACKED"}, {MSC_CONN_USE_COMPL_L3, "compl_l3"}, diff --git a/src/libmsc/subscr_conn.c b/src/libmsc/subscr_conn.c index e3a6b24..1ca6b2d 100644 --- a/src/libmsc/subscr_conn.c +++ b/src/libmsc/subscr_conn.c @@ -260,8 +260,11 @@ { struct gsm_subscriber_connection *conn = fi->priv; - /* While we're still checking on release, prevent a last use count decrement from deallocating */ - msc_subscr_conn_get(conn, MSC_CONN_USE_RELEASE); + /* Use count for either conn->a.waiting_for_clear_complete or + * conn->iu.waiting_for_release_complete. 'get' it early, so we don't deallocate after tearing + * down active transactions. Safeguard against double-get (though it shouldn't happen). */ + if (!msc_subscr_conn_used_by(conn, MSC_CONN_USE_RELEASE)) + msc_subscr_conn_get(conn, MSC_CONN_USE_RELEASE); /* Cancel pending CM Service Requests */ if (conn->received_cm_service_request) { @@ -278,20 +281,27 @@ switch (conn->via_ran) { case RAN_GERAN_A: a_iface_tx_clear_cmd(conn); + if (conn->a.waiting_for_clear_complete) { + LOGPFSML(fi, LOGL_ERROR, + "Unexpected: conn is already waiting for BSSMAP Clear Complete\n"); + break; + } + conn->a.waiting_for_clear_complete = true; break; case RAN_UTRAN_IU: ranap_iu_tx_release(conn->iu.ue_ctx, NULL); + if (conn->iu.waiting_for_release_complete) { + LOGPFSML(fi, LOGL_ERROR, + "Unexpected: conn is already waiting for Iu Release Complete\n"); + break; + } + conn->iu.waiting_for_release_complete = true; break; default: LOGP(DMM, LOGL_ERROR, "%s: Unknown RAN type, cannot tx release/clear\n", vlr_subscr_name(conn->vsub)); break; } - - /* FIXME: keep the conn until the Iu Release Outcome is - * received from the UE, or a timeout expires. For now, the log - * says "unknown UE" for each release outcome. */ - msc_subscr_conn_put(conn, MSC_CONN_USE_RELEASE); } static void subscr_conn_fsm_releasing(struct osmo_fsm_inst *fi, uint32_t event, void *data) @@ -456,7 +466,7 @@ osmo_fsm_inst_dispatch(conn->fi, SUBSCR_CONN_E_RELEASE_WHEN_UNUSED, NULL); } -void msc_subscr_conn_close(struct gsm_subscriber_connection *conn, uint32_t cause) +static void conn_close(struct gsm_subscriber_connection *conn, uint32_t cause, uint32_t event) { if (!conn) { LOGP(DMM, LOGL_ERROR, "Cannot release NULL connection\n"); @@ -467,11 +477,23 @@ __func__, vlr_subscr_name(conn->vsub), cause); return; } - osmo_fsm_inst_dispatch(conn->fi, SUBSCR_CONN_E_CN_CLOSE, &cause); + osmo_fsm_inst_dispatch(conn->fi, event, &cause); +} + +void msc_subscr_conn_close(struct gsm_subscriber_connection *conn, uint32_t cause) +{ + return conn_close(conn, cause, SUBSCR_CONN_E_CN_CLOSE); +} + +void msc_subscr_conn_mo_close(struct gsm_subscriber_connection *conn, uint32_t cause) +{ + return conn_close(conn, cause, SUBSCR_CONN_E_MO_CLOSE); } bool msc_subscr_conn_in_release(struct gsm_subscriber_connection *conn) { + if (!conn || !conn->fi) + return true; if (conn->fi->state == SUBSCR_CONN_S_RELEASING) return true; if (conn->fi->state == SUBSCR_CONN_S_RELEASED) @@ -491,7 +513,8 @@ return true; } -/* Indicate that *some* communication is happening with the phone. */ +/* Indicate that *some* communication is happening with the phone, so that the conn FSM no longer times + * out to release within a few seconds. */ void msc_subscr_conn_communicating(struct gsm_subscriber_connection *conn) { osmo_fsm_inst_dispatch(conn->fi, SUBSCR_CONN_E_COMMUNICATING, NULL); @@ -544,6 +567,7 @@ return conn->fi->state == SUBSCR_CONN_S_AUTH_CIPH; } + const struct value_string complete_layer3_type_names[] = { { COMPLETE_LAYER3_NONE, "NONE" }, { COMPLETE_LAYER3_LU, "LU" }, @@ -559,3 +583,30 @@ osmo_fsm_inst_update_id(conn->fi, id); LOGPFSML(conn->fi, LOGL_DEBUG, "Updated ID from %s\n", complete_layer3_type_name(from)); } + +static void rx_close_complete(struct gsm_subscriber_connection *conn, const char *label, bool *flag) +{ + if (!conn) + return; + if (!msc_subscr_conn_in_release(conn)) { + LOGPFSML(conn->fi, LOGL_ERROR, "Received unexpected %s, discarding right now\n", + label); + trans_conn_closed(conn); + osmo_fsm_inst_term(conn->fi, OSMO_FSM_TERM_ERROR, NULL); + return; + } + if (*flag) { + *flag = false; + msc_subscr_conn_put(conn, MSC_CONN_USE_RELEASE); + } +} + +void msc_subscr_conn_rx_bssmap_clear_complete(struct gsm_subscriber_connection *conn) +{ + rx_close_complete(conn, "BSSMAP Clear Complete", &conn->a.waiting_for_clear_complete); +} + +void msc_subscr_conn_rx_iu_release_complete(struct gsm_subscriber_connection *conn) +{ + rx_close_complete(conn, "Iu Release Complete", &conn->iu.waiting_for_release_complete); +} diff --git a/tests/msc_vlr/msc_vlr_test_authen_reuse.c b/tests/msc_vlr/msc_vlr_test_authen_reuse.c index c9a9d09..389837a 100644 --- a/tests/msc_vlr/msc_vlr_test_authen_reuse.c +++ b/tests/msc_vlr/msc_vlr_test_authen_reuse.c @@ -25,19 +25,6 @@ #include "msc_vlr_tests.h" -#define ASSERT_RELEASE_CLEAR(via_ran) \ - switch (via_ran) { \ - case RAN_GERAN_A: \ - VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); \ - break; \ - case RAN_UTRAN_IU: \ - VERBOSE_ASSERT(iu_release_sent, == true, "%d"); \ - break; \ - default: \ - OSMO_ASSERT(false); \ - break; \ - } - static void _test_auth_reuse(enum ran_type via_ran, int set_max_reuse_count, int loop_requests_without_hlr, @@ -144,6 +131,7 @@ expect_release_clear(via_ran); ms_sends_msg("055b"); ASSERT_RELEASE_CLEAR(via_ran); + bss_rnc_sends_release_clear_complete(via_ran); btw("LU was successful, and the conn has already been closed"); EXPECT_CONN_COUNT(0); @@ -195,6 +183,7 @@ ms_sends_msg("0b3b1c15a11302010002013b300b04010f0406aa510c061b017f0100"); OSMO_ASSERT(dtap_tx_confirmed); ASSERT_RELEASE_CLEAR(via_ran); + bss_rnc_sends_release_clear_complete(via_ran); btw("all requests serviced, conn has been released"); EXPECT_CONN_COUNT(0); @@ -269,6 +258,7 @@ ms_sends_msg("0b3b1c15a11302010002013b300b04010f0406aa510c061b017f0100"); OSMO_ASSERT(dtap_tx_confirmed); ASSERT_RELEASE_CLEAR(via_ran); + bss_rnc_sends_release_clear_complete(via_ran); btw("all requests serviced, conn has been released"); EXPECT_CONN_COUNT(0); @@ -279,6 +269,7 @@ ms_sends_msg("050130" "089910070000106005" /* IMSI */); ASSERT_RELEASE_CLEAR(via_ran); + bss_rnc_sends_release_clear_complete(via_ran); EXPECT_CONN_COUNT(0); clear_vlr(); diff --git a/tests/msc_vlr/msc_vlr_test_authen_reuse.err b/tests/msc_vlr/msc_vlr_test_authen_reuse.err index 193eb81..5e9649c 100644 --- a/tests/msc_vlr/msc_vlr_test_authen_reuse.err +++ b/tests/msc_vlr/msc_vlr_test_authen_reuse.err @@ -165,8 +165,10 @@ DREF VLR subscr MSISDN:42342 usage increases to: 3 DREF VLR subscr MSISDN:42342 usage decreases to: 2 - BSSAP Clear --RAN_GERAN_A--> MS -DREF MSISDN:42342: MSC conn use - release == 1 (0x2) -DREF MSISDN:42342: MSC conn use - dtap == 0 (0x0) +DREF MSISDN:42342: MSC conn use - dtap == 1 (0x100) + bssap_clear_sent == 1 +- BSS sends BSSMAP Clear Complete +DREF MSISDN:42342: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) @@ -179,7 +181,6 @@ DREF VLR subscr MSISDN:42342 usage decreases to: 1 DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Deallocated - bssap_clear_sent == 1 - LU was successful, and the conn has already been closed llist_count(&net->subscr_conns) == 0 --- @@ -275,6 +276,8 @@ DREF VLR subscr MSISDN:42342 usage increases to: 3 DREF VLR subscr MSISDN:42342 usage decreases to: 2 - BSSAP Clear --RAN_GERAN_A--> MS + bssap_clear_sent == 1 +- BSS sends BSSMAP Clear Complete DREF MSISDN:42342: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED @@ -287,7 +290,6 @@ DREF VLR subscr MSISDN:42342 usage decreases to: 1 DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Deallocated - bssap_clear_sent == 1 - all requests serviced, conn has been released llist_count(&net->subscr_conns) == 0 --- @@ -397,6 +399,8 @@ DREF VLR subscr MSISDN:42342 usage increases to: 3 DREF VLR subscr MSISDN:42342 usage decreases to: 2 - BSSAP Clear --RAN_GERAN_A--> MS + bssap_clear_sent == 1 +- BSS sends BSSMAP Clear Complete DREF MSISDN:42342: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED @@ -409,7 +413,6 @@ DREF VLR subscr MSISDN:42342 usage decreases to: 1 DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Deallocated - bssap_clear_sent == 1 - all requests serviced, conn has been released llist_count(&net->subscr_conns) == 0 --- @@ -430,15 +433,16 @@ DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASING DREF unknown: MSC conn use + release == 2 (0x101) - BSSAP Clear --RAN_GERAN_A--> MS -DREF unknown: MSC conn use - release == 1 (0x1) -DREF unknown: MSC conn use - compl_l3 == 0 (0x0) +DREF unknown: MSC conn use - compl_l3 == 1 (0x100) + bssap_clear_sent == 1 +- BSS sends BSSMAP Clear Complete +DREF unknown: MSC conn use - release == 0 (0x0) DMM Subscr_Conn{SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn{SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DRLL Freeing subscriber connection with NULL subscriber DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Deallocated - bssap_clear_sent == 1 llist_count(&net->subscr_conns) == 0 ===== test_auth_use_twice_geran: SUCCESS @@ -621,8 +625,10 @@ DREF VLR subscr MSISDN:42342 usage increases to: 3 DREF VLR subscr MSISDN:42342 usage decreases to: 2 - Iu Release --RAN_UTRAN_IU--> MS -DREF MSISDN:42342: MSC conn use - release == 1 (0x2) -DREF MSISDN:42342: MSC conn use - dtap == 0 (0x0) +DREF MSISDN:42342: MSC conn use - dtap == 1 (0x100) + iu_release_sent == 1 +- RNC sends Iu Release Complete +DREF MSISDN:42342: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) @@ -635,7 +641,6 @@ DREF VLR subscr MSISDN:42342 usage decreases to: 1 DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Deallocated - iu_release_sent == 1 - LU was successful, and the conn has already been closed llist_count(&net->subscr_conns) == 0 --- @@ -744,6 +749,8 @@ DREF VLR subscr MSISDN:42342 usage increases to: 3 DREF VLR subscr MSISDN:42342 usage decreases to: 2 - Iu Release --RAN_UTRAN_IU--> MS + iu_release_sent == 1 +- RNC sends Iu Release Complete DREF MSISDN:42342: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED @@ -756,7 +763,6 @@ DREF VLR subscr MSISDN:42342 usage decreases to: 1 DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Deallocated - iu_release_sent == 1 - all requests serviced, conn has been released llist_count(&net->subscr_conns) == 0 --- @@ -879,6 +885,8 @@ DREF VLR subscr MSISDN:42342 usage increases to: 3 DREF VLR subscr MSISDN:42342 usage decreases to: 2 - Iu Release --RAN_UTRAN_IU--> MS + iu_release_sent == 1 +- RNC sends Iu Release Complete DREF MSISDN:42342: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED @@ -891,7 +899,6 @@ DREF VLR subscr MSISDN:42342 usage decreases to: 1 DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Deallocated - iu_release_sent == 1 - all requests serviced, conn has been released llist_count(&net->subscr_conns) == 0 --- @@ -912,15 +919,16 @@ DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASING DREF unknown: MSC conn use + release == 2 (0x101) - Iu Release --RAN_UTRAN_IU--> MS -DREF unknown: MSC conn use - release == 1 (0x1) -DREF unknown: MSC conn use - compl_l3 == 0 (0x0) +DREF unknown: MSC conn use - compl_l3 == 1 (0x100) + iu_release_sent == 1 +- RNC sends Iu Release Complete +DREF unknown: MSC conn use - release == 0 (0x0) DMM Subscr_Conn{SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn{SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DRLL Freeing subscriber connection with NULL subscriber DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Deallocated - iu_release_sent == 1 llist_count(&net->subscr_conns) == 0 ===== test_auth_use_twice_utran: SUCCESS @@ -1091,8 +1099,10 @@ DREF VLR subscr MSISDN:42342 usage increases to: 3 DREF VLR subscr MSISDN:42342 usage decreases to: 2 - BSSAP Clear --RAN_GERAN_A--> MS -DREF MSISDN:42342: MSC conn use - release == 1 (0x2) -DREF MSISDN:42342: MSC conn use - dtap == 0 (0x0) +DREF MSISDN:42342: MSC conn use - dtap == 1 (0x100) + bssap_clear_sent == 1 +- BSS sends BSSMAP Clear Complete +DREF MSISDN:42342: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) @@ -1105,7 +1115,6 @@ DREF VLR subscr MSISDN:42342 usage decreases to: 1 DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Deallocated - bssap_clear_sent == 1 - LU was successful, and the conn has already been closed llist_count(&net->subscr_conns) == 0 --- @@ -1201,6 +1210,8 @@ DREF VLR subscr MSISDN:42342 usage increases to: 3 DREF VLR subscr MSISDN:42342 usage decreases to: 2 - BSSAP Clear --RAN_GERAN_A--> MS + bssap_clear_sent == 1 +- BSS sends BSSMAP Clear Complete DREF MSISDN:42342: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED @@ -1213,7 +1224,6 @@ DREF VLR subscr MSISDN:42342 usage decreases to: 1 DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Deallocated - bssap_clear_sent == 1 - all requests serviced, conn has been released llist_count(&net->subscr_conns) == 0 --- @@ -1309,6 +1319,8 @@ DREF VLR subscr MSISDN:42342 usage increases to: 3 DREF VLR subscr MSISDN:42342 usage decreases to: 2 - BSSAP Clear --RAN_GERAN_A--> MS + bssap_clear_sent == 1 +- BSS sends BSSMAP Clear Complete DREF MSISDN:42342: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED @@ -1321,7 +1333,6 @@ DREF VLR subscr MSISDN:42342 usage decreases to: 1 DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Deallocated - bssap_clear_sent == 1 - all requests serviced, conn has been released llist_count(&net->subscr_conns) == 0 --- @@ -1417,6 +1428,8 @@ DREF VLR subscr MSISDN:42342 usage increases to: 3 DREF VLR subscr MSISDN:42342 usage decreases to: 2 - BSSAP Clear --RAN_GERAN_A--> MS + bssap_clear_sent == 1 +- BSS sends BSSMAP Clear Complete DREF MSISDN:42342: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED @@ -1429,7 +1442,6 @@ DREF VLR subscr MSISDN:42342 usage decreases to: 1 DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Deallocated - bssap_clear_sent == 1 - all requests serviced, conn has been released llist_count(&net->subscr_conns) == 0 --- @@ -1450,15 +1462,16 @@ DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASING DREF unknown: MSC conn use + release == 2 (0x101) - BSSAP Clear --RAN_GERAN_A--> MS -DREF unknown: MSC conn use - release == 1 (0x1) -DREF unknown: MSC conn use - compl_l3 == 0 (0x0) +DREF unknown: MSC conn use - compl_l3 == 1 (0x100) + bssap_clear_sent == 1 +- BSS sends BSSMAP Clear Complete +DREF unknown: MSC conn use - release == 0 (0x0) DMM Subscr_Conn{SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn{SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DRLL Freeing subscriber connection with NULL subscriber DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Deallocated - bssap_clear_sent == 1 llist_count(&net->subscr_conns) == 0 ===== test_auth_use_infinitely_geran: SUCCESS @@ -1641,8 +1654,10 @@ DREF VLR subscr MSISDN:42342 usage increases to: 3 DREF VLR subscr MSISDN:42342 usage decreases to: 2 - Iu Release --RAN_UTRAN_IU--> MS -DREF MSISDN:42342: MSC conn use - release == 1 (0x2) -DREF MSISDN:42342: MSC conn use - dtap == 0 (0x0) +DREF MSISDN:42342: MSC conn use - dtap == 1 (0x100) + iu_release_sent == 1 +- RNC sends Iu Release Complete +DREF MSISDN:42342: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) @@ -1655,7 +1670,6 @@ DREF VLR subscr MSISDN:42342 usage decreases to: 1 DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Deallocated - iu_release_sent == 1 - LU was successful, and the conn has already been closed llist_count(&net->subscr_conns) == 0 --- @@ -1764,6 +1778,8 @@ DREF VLR subscr MSISDN:42342 usage increases to: 3 DREF VLR subscr MSISDN:42342 usage decreases to: 2 - Iu Release --RAN_UTRAN_IU--> MS + iu_release_sent == 1 +- RNC sends Iu Release Complete DREF MSISDN:42342: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED @@ -1776,7 +1792,6 @@ DREF VLR subscr MSISDN:42342 usage decreases to: 1 DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Deallocated - iu_release_sent == 1 - all requests serviced, conn has been released llist_count(&net->subscr_conns) == 0 --- @@ -1885,6 +1900,8 @@ DREF VLR subscr MSISDN:42342 usage increases to: 3 DREF VLR subscr MSISDN:42342 usage decreases to: 2 - Iu Release --RAN_UTRAN_IU--> MS + iu_release_sent == 1 +- RNC sends Iu Release Complete DREF MSISDN:42342: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED @@ -1897,7 +1914,6 @@ DREF VLR subscr MSISDN:42342 usage decreases to: 1 DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Deallocated - iu_release_sent == 1 - all requests serviced, conn has been released llist_count(&net->subscr_conns) == 0 --- @@ -2006,6 +2022,8 @@ DREF VLR subscr MSISDN:42342 usage increases to: 3 DREF VLR subscr MSISDN:42342 usage decreases to: 2 - Iu Release --RAN_UTRAN_IU--> MS + iu_release_sent == 1 +- RNC sends Iu Release Complete DREF MSISDN:42342: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED @@ -2018,7 +2036,6 @@ DREF VLR subscr MSISDN:42342 usage decreases to: 1 DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Deallocated - iu_release_sent == 1 - all requests serviced, conn has been released llist_count(&net->subscr_conns) == 0 --- @@ -2039,15 +2056,16 @@ DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASING DREF unknown: MSC conn use + release == 2 (0x101) - Iu Release --RAN_UTRAN_IU--> MS -DREF unknown: MSC conn use - release == 1 (0x1) -DREF unknown: MSC conn use - compl_l3 == 0 (0x0) +DREF unknown: MSC conn use - compl_l3 == 1 (0x100) + iu_release_sent == 1 +- RNC sends Iu Release Complete +DREF unknown: MSC conn use - release == 0 (0x0) DMM Subscr_Conn{SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn{SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DRLL Freeing subscriber connection with NULL subscriber DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Deallocated - iu_release_sent == 1 llist_count(&net->subscr_conns) == 0 ===== test_auth_use_infinitely_utran: SUCCESS @@ -2218,8 +2236,10 @@ DREF VLR subscr MSISDN:42342 usage increases to: 3 DREF VLR subscr MSISDN:42342 usage decreases to: 2 - BSSAP Clear --RAN_GERAN_A--> MS -DREF MSISDN:42342: MSC conn use - release == 1 (0x2) -DREF MSISDN:42342: MSC conn use - dtap == 0 (0x0) +DREF MSISDN:42342: MSC conn use - dtap == 1 (0x100) + bssap_clear_sent == 1 +- BSS sends BSSMAP Clear Complete +DREF MSISDN:42342: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) @@ -2232,7 +2252,6 @@ DREF VLR subscr MSISDN:42342 usage decreases to: 1 DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Deallocated - bssap_clear_sent == 1 - LU was successful, and the conn has already been closed llist_count(&net->subscr_conns) == 0 --- @@ -2342,6 +2361,8 @@ DREF VLR subscr MSISDN:42342 usage increases to: 3 DREF VLR subscr MSISDN:42342 usage decreases to: 2 - BSSAP Clear --RAN_GERAN_A--> MS + bssap_clear_sent == 1 +- BSS sends BSSMAP Clear Complete DREF MSISDN:42342: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED @@ -2354,7 +2375,6 @@ DREF VLR subscr MSISDN:42342 usage decreases to: 1 DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Deallocated - bssap_clear_sent == 1 - all requests serviced, conn has been released llist_count(&net->subscr_conns) == 0 --- @@ -2375,15 +2395,16 @@ DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASING DREF unknown: MSC conn use + release == 2 (0x101) - BSSAP Clear --RAN_GERAN_A--> MS -DREF unknown: MSC conn use - release == 1 (0x1) -DREF unknown: MSC conn use - compl_l3 == 0 (0x0) +DREF unknown: MSC conn use - compl_l3 == 1 (0x100) + bssap_clear_sent == 1 +- BSS sends BSSMAP Clear Complete +DREF unknown: MSC conn use - release == 0 (0x0) DMM Subscr_Conn{SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn{SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DRLL Freeing subscriber connection with NULL subscriber DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Deallocated - bssap_clear_sent == 1 llist_count(&net->subscr_conns) == 0 ===== test_no_auth_reuse_geran: SUCCESS @@ -2566,8 +2587,10 @@ DREF VLR subscr MSISDN:42342 usage increases to: 3 DREF VLR subscr MSISDN:42342 usage decreases to: 2 - Iu Release --RAN_UTRAN_IU--> MS -DREF MSISDN:42342: MSC conn use - release == 1 (0x2) -DREF MSISDN:42342: MSC conn use - dtap == 0 (0x0) +DREF MSISDN:42342: MSC conn use - dtap == 1 (0x100) + iu_release_sent == 1 +- RNC sends Iu Release Complete +DREF MSISDN:42342: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) @@ -2580,7 +2603,6 @@ DREF VLR subscr MSISDN:42342 usage decreases to: 1 DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Deallocated - iu_release_sent == 1 - LU was successful, and the conn has already been closed llist_count(&net->subscr_conns) == 0 --- @@ -2703,6 +2725,8 @@ DREF VLR subscr MSISDN:42342 usage increases to: 3 DREF VLR subscr MSISDN:42342 usage decreases to: 2 - Iu Release --RAN_UTRAN_IU--> MS + iu_release_sent == 1 +- RNC sends Iu Release Complete DREF MSISDN:42342: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED @@ -2715,7 +2739,6 @@ DREF VLR subscr MSISDN:42342 usage decreases to: 1 DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Deallocated - iu_release_sent == 1 - all requests serviced, conn has been released llist_count(&net->subscr_conns) == 0 --- @@ -2736,15 +2759,16 @@ DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASING DREF unknown: MSC conn use + release == 2 (0x101) - Iu Release --RAN_UTRAN_IU--> MS -DREF unknown: MSC conn use - release == 1 (0x1) -DREF unknown: MSC conn use - compl_l3 == 0 (0x0) +DREF unknown: MSC conn use - compl_l3 == 1 (0x100) + iu_release_sent == 1 +- RNC sends Iu Release Complete +DREF unknown: MSC conn use - release == 0 (0x0) DMM Subscr_Conn{SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn{SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DRLL Freeing subscriber connection with NULL subscriber DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Deallocated - iu_release_sent == 1 llist_count(&net->subscr_conns) == 0 ===== test_no_auth_reuse_utran: SUCCESS diff --git a/tests/msc_vlr/msc_vlr_test_call.c b/tests/msc_vlr/msc_vlr_test_call.c index 9d4126e..50bf174 100644 --- a/tests/msc_vlr/msc_vlr_test_call.c +++ b/tests/msc_vlr/msc_vlr_test_call.c @@ -148,6 +148,7 @@ VERBOSE_ASSERT(iu_release_sent, == true, "%d"); \ btw("LU was successful, and the conn has already been closed"); + rnc_sends_release_complete(); EXPECT_CONN_COUNT(0); vsub = vlr_subscr_find_by_imsi(net->vlr, IMSI); @@ -252,6 +253,7 @@ OSMO_ASSERT(cc_to_mncc_tx_confirmed); OSMO_ASSERT(iu_release_sent); + rnc_sends_release_complete(); EXPECT_CONN_COUNT(0); clear_vlr(); comment_end(); @@ -335,6 +337,7 @@ OSMO_ASSERT(cc_to_mncc_tx_confirmed); OSMO_ASSERT(iu_release_sent); + rnc_sends_release_complete(); EXPECT_CONN_COUNT(0); clear_vlr(); comment_end(); @@ -405,6 +408,7 @@ OSMO_ASSERT(cc_to_mncc_tx_confirmed); OSMO_ASSERT(iu_release_sent); + rnc_sends_release_complete(); EXPECT_CONN_COUNT(0); /* Make sure a pending release timer doesn't fire later to access freed data */ @@ -488,6 +492,7 @@ OSMO_ASSERT(iu_release_sent); OSMO_ASSERT(cc_to_mncc_tx_confirmed); + rnc_sends_release_complete(); EXPECT_CONN_COUNT(0); clear_vlr(); comment_end(); @@ -568,6 +573,7 @@ OSMO_ASSERT(cc_to_mncc_tx_confirmed); OSMO_ASSERT(iu_release_sent); + rnc_sends_release_complete(); EXPECT_CONN_COUNT(0); clear_vlr(); comment_end(); diff --git a/tests/msc_vlr/msc_vlr_test_call.err b/tests/msc_vlr/msc_vlr_test_call.err index 1da80d9..2cb697c 100644 --- a/tests/msc_vlr/msc_vlr_test_call.err +++ b/tests/msc_vlr/msc_vlr_test_call.err @@ -162,8 +162,11 @@ DREF VLR subscr MSISDN:42342 usage increases to: 3 DREF VLR subscr MSISDN:42342 usage decreases to: 2 - Iu Release --RAN_UTRAN_IU--> MS -DREF MSISDN:42342: MSC conn use - release == 1 (0x2) -DREF MSISDN:42342: MSC conn use - dtap == 0 (0x0) +DREF MSISDN:42342: MSC conn use - dtap == 1 (0x100) + iu_release_sent == 1 +- LU was successful, and the conn has already been closed +- RNC sends Iu Release Complete +DREF MSISDN:42342: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) @@ -176,8 +179,6 @@ DREF VLR subscr MSISDN:42342 usage decreases to: 1 DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Deallocated - iu_release_sent == 1 -- LU was successful, and the conn has already been closed llist_count(&net->subscr_conns) == 0 DREF VLR subscr MSISDN:42342 usage increases to: 2 vsub != NULL == 1 @@ -359,6 +360,7 @@ DREF VLR subscr MSISDN:42342 usage increases to: 3 DREF VLR subscr MSISDN:42342 usage decreases to: 2 - Iu Release --RAN_UTRAN_IU--> MS +- RNC sends Iu Release Complete DREF MSISDN:42342: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED @@ -539,8 +541,11 @@ DREF VLR subscr MSISDN:42342 usage increases to: 3 DREF VLR subscr MSISDN:42342 usage decreases to: 2 - Iu Release --RAN_UTRAN_IU--> MS -DREF MSISDN:42342: MSC conn use - release == 1 (0x2) -DREF MSISDN:42342: MSC conn use - dtap == 0 (0x0) +DREF MSISDN:42342: MSC conn use - dtap == 1 (0x100) + iu_release_sent == 1 +- LU was successful, and the conn has already been closed +- RNC sends Iu Release Complete +DREF MSISDN:42342: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) @@ -553,8 +558,6 @@ DREF VLR subscr MSISDN:42342 usage decreases to: 1 DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Deallocated - iu_release_sent == 1 -- LU was successful, and the conn has already been closed llist_count(&net->subscr_conns) == 0 DREF VLR subscr MSISDN:42342 usage increases to: 2 vsub != NULL == 1 @@ -741,6 +744,7 @@ DREF VLR subscr MSISDN:42342 usage increases to: 3 DREF VLR subscr MSISDN:42342 usage decreases to: 2 - Iu Release --RAN_UTRAN_IU--> MS +- RNC sends Iu Release Complete DREF MSISDN:42342: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED @@ -921,8 +925,11 @@ DREF VLR subscr MSISDN:42342 usage increases to: 3 DREF VLR subscr MSISDN:42342 usage decreases to: 2 - Iu Release --RAN_UTRAN_IU--> MS -DREF MSISDN:42342: MSC conn use - release == 1 (0x2) -DREF MSISDN:42342: MSC conn use - dtap == 0 (0x0) +DREF MSISDN:42342: MSC conn use - dtap == 1 (0x100) + iu_release_sent == 1 +- LU was successful, and the conn has already been closed +- RNC sends Iu Release Complete +DREF MSISDN:42342: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) @@ -935,8 +942,6 @@ DREF VLR subscr MSISDN:42342 usage decreases to: 1 DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Deallocated - iu_release_sent == 1 -- LU was successful, and the conn has already been closed llist_count(&net->subscr_conns) == 0 DREF VLR subscr MSISDN:42342 usage increases to: 2 vsub != NULL == 1 @@ -1091,6 +1096,7 @@ DREF VLR subscr MSISDN:42342 usage decreases to: 2 DREF MSISDN:42342: MSC conn use - trans_cc == 1 (0x100) - Iu Release --RAN_UTRAN_IU--> MS +- RNC sends Iu Release Complete DREF MSISDN:42342: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED @@ -1272,8 +1278,11 @@ DREF VLR subscr MSISDN:42342 usage increases to: 3 DREF VLR subscr MSISDN:42342 usage decreases to: 2 - Iu Release --RAN_UTRAN_IU--> MS -DREF MSISDN:42342: MSC conn use - release == 1 (0x2) -DREF MSISDN:42342: MSC conn use - dtap == 0 (0x0) +DREF MSISDN:42342: MSC conn use - dtap == 1 (0x100) + iu_release_sent == 1 +- LU was successful, and the conn has already been closed +- RNC sends Iu Release Complete +DREF MSISDN:42342: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) @@ -1286,8 +1295,6 @@ DREF VLR subscr MSISDN:42342 usage decreases to: 1 DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Deallocated - iu_release_sent == 1 -- LU was successful, and the conn has already been closed llist_count(&net->subscr_conns) == 0 DREF VLR subscr MSISDN:42342 usage increases to: 2 vsub != NULL == 1 @@ -1435,6 +1442,7 @@ DREF VLR subscr MSISDN:42342 usage increases to: 3 DREF VLR subscr MSISDN:42342 usage decreases to: 2 - Iu Release --RAN_UTRAN_IU--> MS +- RNC sends Iu Release Complete DREF MSISDN:42342: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED @@ -1615,8 +1623,11 @@ DREF VLR subscr MSISDN:42342 usage increases to: 3 DREF VLR subscr MSISDN:42342 usage decreases to: 2 - Iu Release --RAN_UTRAN_IU--> MS -DREF MSISDN:42342: MSC conn use - release == 1 (0x2) -DREF MSISDN:42342: MSC conn use - dtap == 0 (0x0) +DREF MSISDN:42342: MSC conn use - dtap == 1 (0x100) + iu_release_sent == 1 +- LU was successful, and the conn has already been closed +- RNC sends Iu Release Complete +DREF MSISDN:42342: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) @@ -1629,8 +1640,6 @@ DREF VLR subscr MSISDN:42342 usage decreases to: 1 DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Deallocated - iu_release_sent == 1 -- LU was successful, and the conn has already been closed llist_count(&net->subscr_conns) == 0 DREF VLR subscr MSISDN:42342 usage increases to: 2 vsub != NULL == 1 @@ -1775,6 +1784,7 @@ DREF VLR subscr MSISDN:42342 usage increases to: 3 DREF VLR subscr MSISDN:42342 usage decreases to: 2 - Iu Release --RAN_UTRAN_IU--> MS +- RNC sends Iu Release Complete DREF MSISDN:42342: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED diff --git a/tests/msc_vlr/msc_vlr_test_gsm_authen.c b/tests/msc_vlr/msc_vlr_test_gsm_authen.c index 5176306..a863d90 100644 --- a/tests/msc_vlr/msc_vlr_test_gsm_authen.c +++ b/tests/msc_vlr/msc_vlr_test_gsm_authen.c @@ -91,6 +91,7 @@ btw("LU was successful, and the conn has already been closed"); VERBOSE_ASSERT(lu_result_sent, == RES_ACCEPT, "%d"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); BTW("after a while, a new conn sends a CM Service Request. VLR responds with Auth Req, 2nd auth vector"); @@ -121,6 +122,7 @@ VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); btw("all requests serviced, conn has been released"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); BTW("an SMS is sent, MS is paged"); @@ -203,6 +205,7 @@ VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); btw("SMS is done, conn is gone"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); BTW("subscriber detaches"); @@ -210,6 +213,7 @@ ms_sends_msg("050130089910070000006402"); VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); clear_vlr(); comment_end(); @@ -300,6 +304,7 @@ VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); btw("LU was successful, and the conn has already been closed"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); btw("Subscriber has the new TMSI"); @@ -338,6 +343,7 @@ VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); btw("all requests serviced, conn has been released"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); BTW("an SMS is sent, MS is paged"); @@ -420,6 +426,7 @@ VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); btw("SMS is done, conn is gone"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); /* TODO: when the subscriber detaches, the vlr_subscr gets @@ -429,6 +436,7 @@ expect_bssap_clear(); ms_sends_msg("050130" "05f4" "03020100"); VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); */ @@ -476,6 +484,7 @@ VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); btw("LU was successful, and the conn has already been closed"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); btw("subscriber has the new TMSI"); @@ -491,6 +500,7 @@ ms_sends_msg("050130" "05f4" "07060504"); VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); clear_vlr(); comment_end(); @@ -576,6 +586,7 @@ btw("LU was successful, and the conn has already been closed"); VERBOSE_ASSERT(lu_result_sent, == RES_ACCEPT, "%d"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); btw("Subscriber has the IMEI"); @@ -589,6 +600,7 @@ ms_sends_msg("050130089910070000006402"); VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); clear_vlr(); comment_end(); @@ -693,6 +705,7 @@ VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); btw("LU was successful, and the conn has already been closed"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); btw("Subscriber has the IMEI and TMSI"); @@ -707,6 +720,7 @@ ms_sends_msg("050130" "05f4" "03020100"); VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); clear_vlr(); comment_end(); @@ -793,6 +807,7 @@ btw("LU was successful, and the conn has already been closed"); VERBOSE_ASSERT(lu_result_sent, == RES_ACCEPT, "%d"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); BTW("after a while, a new conn sends a CM Service Request. VLR responds with Auth Req, 2nd auth vector"); @@ -826,6 +841,7 @@ VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); btw("all requests serviced, conn has been released"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); BTW("an SMS is sent, MS is paged"); @@ -911,6 +927,7 @@ VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); btw("SMS is done, conn is gone"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); BTW("subscriber detaches"); @@ -919,6 +936,7 @@ "089910070000106005" /* IMSI */); VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); clear_vlr(); comment_end(); @@ -979,6 +997,7 @@ ms_sends_msg("05542d8b2c"); VERBOSE_ASSERT(lu_result_sent, == RES_REJECT, "%d"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); clear_vlr(); comment_end(); diff --git a/tests/msc_vlr/msc_vlr_test_gsm_authen.err b/tests/msc_vlr/msc_vlr_test_gsm_authen.err index f212cfc..5897ce0 100644 --- a/tests/msc_vlr/msc_vlr_test_gsm_authen.err +++ b/tests/msc_vlr/msc_vlr_test_gsm_authen.err @@ -151,6 +151,12 @@ DREF VLR subscr MSISDN:46071 usage increases to: 4 DREF VLR subscr MSISDN:46071 usage decreases to: 3 - BSSAP Clear --RAN_GERAN_A--> MS +DREF VLR subscr MSISDN:46071 usage decreases to: 2 +<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0 + bssap_clear_sent == 1 +- LU was successful, and the conn has already been closed + lu_result_sent == 1 +- BSS sends BSSMAP Clear Complete DREF MSISDN:46071: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED @@ -161,14 +167,9 @@ DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Freeing instance DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Deallocated DRLL MSISDN:46071: Freeing subscriber connection -DREF VLR subscr MSISDN:46071 usage decreases to: 2 +DREF VLR subscr MSISDN:46071 usage decreases to: 1 DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated -DREF VLR subscr MSISDN:46071 usage decreases to: 1 -<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0 - bssap_clear_sent == 1 -- LU was successful, and the conn has already been closed - lu_result_sent == 1 llist_count(&net->subscr_conns) == 0 --- - after a while, a new conn sends a CM Service Request. VLR responds with Auth Req, 2nd auth vector @@ -268,6 +269,9 @@ DREF VLR subscr MSISDN:46071 usage increases to: 3 DREF VLR subscr MSISDN:46071 usage decreases to: 2 - BSSAP Clear --RAN_GERAN_A--> MS + bssap_clear_sent == 1 +- all requests serviced, conn has been released +- BSS sends BSSMAP Clear Complete DREF MSISDN:46071: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED @@ -280,8 +284,6 @@ DREF VLR subscr MSISDN:46071 usage decreases to: 1 DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated - bssap_clear_sent == 1 -- all requests serviced, conn has been released llist_count(&net->subscr_conns) == 0 --- - an SMS is sent, MS is paged @@ -414,6 +416,10 @@ DREF VLR subscr MSISDN:46071 usage increases to: 3 DREF VLR subscr MSISDN:46071 usage decreases to: 2 - BSSAP Clear --RAN_GERAN_A--> MS + dtap_tx_confirmed == 1 + bssap_clear_sent == 1 +- SMS is done, conn is gone +- BSS sends BSSMAP Clear Complete DREF MSISDN:46071: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED @@ -426,9 +432,6 @@ DREF VLR subscr MSISDN:46071 usage decreases to: 1 DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated - dtap_tx_confirmed == 1 - bssap_clear_sent == 1 -- SMS is done, conn is gone llist_count(&net->subscr_conns) == 0 --- - subscriber detaches @@ -448,15 +451,16 @@ DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASING DREF unknown: MSC conn use + release == 2 (0x101) - BSSAP Clear --RAN_GERAN_A--> MS -DREF unknown: MSC conn use - release == 1 (0x1) -DREF unknown: MSC conn use - compl_l3 == 0 (0x0) +DREF unknown: MSC conn use - compl_l3 == 1 (0x100) + bssap_clear_sent == 1 +- BSS sends BSSMAP Clear Complete +DREF unknown: MSC conn use - release == 0 (0x0) DMM Subscr_Conn{SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn{SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DRLL Freeing subscriber connection with NULL subscriber DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Deallocated - bssap_clear_sent == 1 llist_count(&net->subscr_conns) == 0 ===== test_gsm_authen: SUCCESS @@ -644,8 +648,11 @@ DREF VLR subscr MSISDN:46071 usage increases to: 3 DREF VLR subscr MSISDN:46071 usage decreases to: 2 - BSSAP Clear --RAN_GERAN_A--> MS -DREF MSISDN:46071: MSC conn use - release == 1 (0x2) -DREF MSISDN:46071: MSC conn use - dtap == 0 (0x0) +DREF MSISDN:46071: MSC conn use - dtap == 1 (0x100) + bssap_clear_sent == 1 +- LU was successful, and the conn has already been closed +- BSS sends BSSMAP Clear Complete +DREF MSISDN:46071: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) @@ -658,8 +665,6 @@ DREF VLR subscr MSISDN:46071 usage decreases to: 1 DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated - bssap_clear_sent == 1 -- LU was successful, and the conn has already been closed llist_count(&net->subscr_conns) == 0 - Subscriber has the new TMSI DREF VLR subscr MSISDN:46071 usage increases to: 2 @@ -766,6 +771,9 @@ DREF VLR subscr MSISDN:46071 usage increases to: 3 DREF VLR subscr MSISDN:46071 usage decreases to: 2 - BSSAP Clear --RAN_GERAN_A--> MS + bssap_clear_sent == 1 +- all requests serviced, conn has been released +- BSS sends BSSMAP Clear Complete DREF MSISDN:46071: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(50462976){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(50462976){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED @@ -778,8 +786,6 @@ DREF VLR subscr MSISDN:46071 usage decreases to: 1 DMM Subscr_Conn(50462976){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(50462976){SUBSCR_CONN_S_RELEASED}: Deallocated - bssap_clear_sent == 1 -- all requests serviced, conn has been released llist_count(&net->subscr_conns) == 0 --- - an SMS is sent, MS is paged @@ -912,6 +918,10 @@ DREF VLR subscr MSISDN:46071 usage increases to: 3 DREF VLR subscr MSISDN:46071 usage decreases to: 2 - BSSAP Clear --RAN_GERAN_A--> MS + dtap_tx_confirmed == 1 + bssap_clear_sent == 1 +- SMS is done, conn is gone +- BSS sends BSSMAP Clear Complete DREF MSISDN:46071: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(50462976){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(50462976){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED @@ -924,9 +934,6 @@ DREF VLR subscr MSISDN:46071 usage decreases to: 1 DMM Subscr_Conn(50462976){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(50462976){SUBSCR_CONN_S_RELEASED}: Deallocated - dtap_tx_confirmed == 1 - bssap_clear_sent == 1 -- SMS is done, conn is gone llist_count(&net->subscr_conns) == 0 --- - subscriber sends LU Request, this time with the TMSI @@ -1076,8 +1083,11 @@ DREF VLR subscr MSISDN:46071 usage increases to: 3 DREF VLR subscr MSISDN:46071 usage decreases to: 2 - BSSAP Clear --RAN_GERAN_A--> MS -DREF MSISDN:46071: MSC conn use - release == 1 (0x2) -DREF MSISDN:46071: MSC conn use - dtap == 0 (0x0) +DREF MSISDN:46071: MSC conn use - dtap == 1 (0x100) + bssap_clear_sent == 1 +- LU was successful, and the conn has already been closed +- BSS sends BSSMAP Clear Complete +DREF MSISDN:46071: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(50462976){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(50462976){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn(50462976){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) @@ -1090,8 +1100,6 @@ DREF VLR subscr MSISDN:46071 usage decreases to: 1 DMM Subscr_Conn(50462976){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(50462976){SUBSCR_CONN_S_RELEASED}: Deallocated - bssap_clear_sent == 1 -- LU was successful, and the conn has already been closed llist_count(&net->subscr_conns) == 0 - subscriber has the new TMSI DREF VLR subscr MSISDN:46071 usage increases to: 2 @@ -1118,15 +1126,16 @@ DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASING DREF unknown: MSC conn use + release == 2 (0x101) - BSSAP Clear --RAN_GERAN_A--> MS -DREF unknown: MSC conn use - release == 1 (0x1) -DREF unknown: MSC conn use - compl_l3 == 0 (0x0) +DREF unknown: MSC conn use - compl_l3 == 1 (0x100) + bssap_clear_sent == 1 +- BSS sends BSSMAP Clear Complete +DREF unknown: MSC conn use - release == 0 (0x0) DMM Subscr_Conn{SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn{SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DRLL Freeing subscriber connection with NULL subscriber DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Deallocated - bssap_clear_sent == 1 llist_count(&net->subscr_conns) == 0 ===== test_gsm_authen_tmsi: SUCCESS @@ -1312,8 +1321,12 @@ DREF VLR subscr MSISDN:46071 usage increases to: 3 DREF VLR subscr MSISDN:46071 usage decreases to: 2 - BSSAP Clear --RAN_GERAN_A--> MS -DREF MSISDN:46071: MSC conn use - release == 1 (0x2) -DREF MSISDN:46071: MSC conn use - dtap == 0 (0x0) +DREF MSISDN:46071: MSC conn use - dtap == 1 (0x100) + bssap_clear_sent == 1 +- LU was successful, and the conn has already been closed + lu_result_sent == 1 +- BSS sends BSSMAP Clear Complete +DREF MSISDN:46071: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) @@ -1326,9 +1339,6 @@ DREF VLR subscr MSISDN:46071 usage decreases to: 1 DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated - bssap_clear_sent == 1 -- LU was successful, and the conn has already been closed - lu_result_sent == 1 llist_count(&net->subscr_conns) == 0 - Subscriber has the IMEI DREF VLR subscr MSISDN:46071 usage increases to: 2 @@ -1352,15 +1362,16 @@ DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASING DREF unknown: MSC conn use + release == 2 (0x101) - BSSAP Clear --RAN_GERAN_A--> MS -DREF unknown: MSC conn use - release == 1 (0x1) -DREF unknown: MSC conn use - compl_l3 == 0 (0x0) +DREF unknown: MSC conn use - compl_l3 == 1 (0x100) + bssap_clear_sent == 1 +- BSS sends BSSMAP Clear Complete +DREF unknown: MSC conn use - release == 0 (0x0) DMM Subscr_Conn{SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn{SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DRLL Freeing subscriber connection with NULL subscriber DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Deallocated - bssap_clear_sent == 1 llist_count(&net->subscr_conns) == 0 ===== test_gsm_authen_imei: SUCCESS @@ -1578,8 +1589,11 @@ DREF VLR subscr MSISDN:46071 usage increases to: 3 DREF VLR subscr MSISDN:46071 usage decreases to: 2 - BSSAP Clear --RAN_GERAN_A--> MS -DREF MSISDN:46071: MSC conn use - release == 1 (0x2) -DREF MSISDN:46071: MSC conn use - dtap == 0 (0x0) +DREF MSISDN:46071: MSC conn use - dtap == 1 (0x100) + bssap_clear_sent == 1 +- LU was successful, and the conn has already been closed +- BSS sends BSSMAP Clear Complete +DREF MSISDN:46071: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) @@ -1592,8 +1606,6 @@ DREF VLR subscr MSISDN:46071 usage decreases to: 1 DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated - bssap_clear_sent == 1 -- LU was successful, and the conn has already been closed llist_count(&net->subscr_conns) == 0 - Subscriber has the IMEI and TMSI DREF VLR subscr MSISDN:46071 usage increases to: 2 @@ -1618,15 +1630,16 @@ DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASING DREF unknown: MSC conn use + release == 2 (0x101) - BSSAP Clear --RAN_GERAN_A--> MS -DREF unknown: MSC conn use - release == 1 (0x1) -DREF unknown: MSC conn use - compl_l3 == 0 (0x0) +DREF unknown: MSC conn use - compl_l3 == 1 (0x100) + bssap_clear_sent == 1 +- BSS sends BSSMAP Clear Complete +DREF unknown: MSC conn use - release == 0 (0x0) DMM Subscr_Conn{SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn{SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DRLL Freeing subscriber connection with NULL subscriber DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Deallocated - bssap_clear_sent == 1 llist_count(&net->subscr_conns) == 0 ===== test_gsm_authen_tmsi_imei: SUCCESS @@ -1764,6 +1777,12 @@ DREF VLR subscr MSISDN:42342 usage increases to: 4 DREF VLR subscr MSISDN:42342 usage decreases to: 3 - BSSAP Clear --RAN_GERAN_A--> MS +DREF VLR subscr MSISDN:42342 usage decreases to: 2 +<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0 + bssap_clear_sent == 1 +- LU was successful, and the conn has already been closed + lu_result_sent == 1 +- BSS sends BSSMAP Clear Complete DREF MSISDN:42342: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED @@ -1774,14 +1793,9 @@ DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_DONE}: Freeing instance DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_DONE}: Deallocated DRLL MSISDN:42342: Freeing subscriber connection -DREF VLR subscr MSISDN:42342 usage decreases to: 2 +DREF VLR subscr MSISDN:42342 usage decreases to: 1 DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Deallocated -DREF VLR subscr MSISDN:42342 usage decreases to: 1 -<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0 - bssap_clear_sent == 1 -- LU was successful, and the conn has already been closed - lu_result_sent == 1 llist_count(&net->subscr_conns) == 0 --- - after a while, a new conn sends a CM Service Request. VLR responds with Auth Req, 2nd auth vector @@ -1881,6 +1895,9 @@ DREF VLR subscr MSISDN:42342 usage increases to: 3 DREF VLR subscr MSISDN:42342 usage decreases to: 2 - BSSAP Clear --RAN_GERAN_A--> MS + bssap_clear_sent == 1 +- all requests serviced, conn has been released +- BSS sends BSSMAP Clear Complete DREF MSISDN:42342: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED @@ -1893,8 +1910,6 @@ DREF VLR subscr MSISDN:42342 usage decreases to: 1 DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Deallocated - bssap_clear_sent == 1 -- all requests serviced, conn has been released llist_count(&net->subscr_conns) == 0 --- - an SMS is sent, MS is paged @@ -2027,6 +2042,10 @@ DREF VLR subscr MSISDN:42342 usage increases to: 3 DREF VLR subscr MSISDN:42342 usage decreases to: 2 - BSSAP Clear --RAN_GERAN_A--> MS + dtap_tx_confirmed == 1 + bssap_clear_sent == 1 +- SMS is done, conn is gone +- BSS sends BSSMAP Clear Complete DREF MSISDN:42342: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED @@ -2039,9 +2058,6 @@ DREF VLR subscr MSISDN:42342 usage decreases to: 1 DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Deallocated - dtap_tx_confirmed == 1 - bssap_clear_sent == 1 -- SMS is done, conn is gone llist_count(&net->subscr_conns) == 0 --- - subscriber detaches @@ -2061,15 +2077,16 @@ DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASING DREF unknown: MSC conn use + release == 2 (0x101) - BSSAP Clear --RAN_GERAN_A--> MS -DREF unknown: MSC conn use - release == 1 (0x1) -DREF unknown: MSC conn use - compl_l3 == 0 (0x0) +DREF unknown: MSC conn use - compl_l3 == 1 (0x100) + bssap_clear_sent == 1 +- BSS sends BSSMAP Clear Complete +DREF unknown: MSC conn use - release == 0 (0x0) DMM Subscr_Conn{SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn{SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DRLL Freeing subscriber connection with NULL subscriber DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Deallocated - bssap_clear_sent == 1 llist_count(&net->subscr_conns) == 0 ===== test_gsm_milenage_authen: SUCCESS @@ -2171,8 +2188,10 @@ DREF VLR subscr IMSI:901700000004620 usage increases to: 2 DREF VLR subscr IMSI:901700000004620 usage decreases to: 1 - BSSAP Clear --RAN_GERAN_A--> MS -DREF IMSI:901700000004620: MSC conn use - release == 1 (0x2) -DREF IMSI:901700000004620: MSC conn use - dtap == 0 (0x0) +DREF IMSI:901700000004620: MSC conn use - dtap == 1 (0x100) + lu_result_sent == 2 +- BSS sends BSSMAP Clear Complete +DREF IMSI:901700000004620: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) @@ -2186,7 +2205,6 @@ DREF freeing VLR subscr IMSI:901700000004620 DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated - lu_result_sent == 2 llist_count(&net->subscr_conns) == 0 ===== test_wrong_sres_length: SUCCESS diff --git a/tests/msc_vlr/msc_vlr_test_gsm_ciph.c b/tests/msc_vlr/msc_vlr_test_gsm_ciph.c index 8a05b3f..b426981 100644 --- a/tests/msc_vlr/msc_vlr_test_gsm_ciph.c +++ b/tests/msc_vlr/msc_vlr_test_gsm_ciph.c @@ -93,6 +93,7 @@ btw("LU was successful, and the conn has already been closed"); VERBOSE_ASSERT(lu_result_sent, == RES_ACCEPT, "%d"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); BTW("after a while, a new conn sends a CM Service Request. VLR responds with Auth Req, 2nd auth vector"); @@ -132,6 +133,7 @@ VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); btw("all requests serviced, conn has been released"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); BTW("an SMS is sent, MS is paged"); @@ -223,6 +225,7 @@ VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); btw("SMS is done, conn is gone"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); BTW("subscriber detaches"); @@ -230,6 +233,7 @@ ms_sends_msg("050130089910070000006402"); VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); clear_vlr(); comment_end(); @@ -323,6 +327,7 @@ VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); btw("LU was successful, and the conn has already been closed"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); btw("Subscriber has the new TMSI"); @@ -371,6 +376,7 @@ VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); btw("all requests serviced, conn has been released"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); BTW("an SMS is sent, MS is paged"); @@ -462,6 +468,7 @@ VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); btw("SMS is done, conn is gone"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); BTW("subscriber detaches, using TMSI"); @@ -469,6 +476,7 @@ ms_sends_msg("050130" "05f4" "03020100"); VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); clear_vlr(); comment_end(); @@ -558,6 +566,7 @@ btw("LU was successful, and the conn has already been closed"); VERBOSE_ASSERT(lu_result_sent, == RES_ACCEPT, "%d"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); btw("Subscriber has the IMEI"); @@ -571,6 +580,7 @@ ms_sends_msg("050130089910070000006402"); VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); clear_vlr(); comment_end(); @@ -662,6 +672,7 @@ btw("LU was successful, and the conn has already been closed"); VERBOSE_ASSERT(lu_result_sent, == RES_ACCEPT, "%d"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); BTW("subscriber detaches"); @@ -669,6 +680,7 @@ ms_sends_msg("050130089910070000006402"); VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); clear_vlr(); comment_end(); @@ -775,6 +787,7 @@ VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); btw("LU was successful, and the conn has already been closed"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); btw("Subscriber has the IMEI and TMSI"); @@ -789,6 +802,7 @@ ms_sends_msg("050130" "05f4" "03020100"); VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); clear_vlr(); comment_end(); @@ -923,6 +937,7 @@ btw("LU was successful, and the conn has already been closed"); VERBOSE_ASSERT(lu_result_sent, == RES_ACCEPT, "%d"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); BTW("after a while, a new conn sends a CM Service Request. VLR responds with *UMTS AKA* Auth Req, 2nd auth vector"); @@ -961,6 +976,7 @@ VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); btw("all requests serviced, conn has been released"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); BTW("an SMS is sent, MS is paged"); @@ -1031,6 +1047,7 @@ VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); btw("SMS is done, conn is gone"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); BTW("subscriber detaches"); @@ -1039,6 +1056,7 @@ "089910070000106005" /* IMSI */); VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); clear_vlr(); comment_end(); @@ -1091,6 +1109,7 @@ OSMO_ASSERT(!cipher_mode_cmd_sent); VERBOSE_ASSERT(lu_result_sent, == RES_REJECT, "%d"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); clear_vlr(); comment_end(); diff --git a/tests/msc_vlr/msc_vlr_test_gsm_ciph.err b/tests/msc_vlr/msc_vlr_test_gsm_ciph.err index 9d90260..2d5670d 100644 --- a/tests/msc_vlr/msc_vlr_test_gsm_ciph.err +++ b/tests/msc_vlr/msc_vlr_test_gsm_ciph.err @@ -155,6 +155,12 @@ DREF VLR subscr MSISDN:46071 usage increases to: 4 DREF VLR subscr MSISDN:46071 usage decreases to: 3 - BSSAP Clear --RAN_GERAN_A--> MS +DREF VLR subscr MSISDN:46071 usage decreases to: 2 +<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0 + bssap_clear_sent == 1 +- LU was successful, and the conn has already been closed + lu_result_sent == 1 +- BSS sends BSSMAP Clear Complete DREF MSISDN:46071: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED @@ -165,14 +171,9 @@ DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Freeing instance DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Deallocated DRLL MSISDN:46071: Freeing subscriber connection -DREF VLR subscr MSISDN:46071 usage decreases to: 2 +DREF VLR subscr MSISDN:46071 usage decreases to: 1 DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated -DREF VLR subscr MSISDN:46071 usage decreases to: 1 -<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0 - bssap_clear_sent == 1 -- LU was successful, and the conn has already been closed - lu_result_sent == 1 llist_count(&net->subscr_conns) == 0 --- - after a while, a new conn sends a CM Service Request. VLR responds with Auth Req, 2nd auth vector @@ -297,6 +298,9 @@ DREF VLR subscr MSISDN:46071 usage increases to: 3 DREF VLR subscr MSISDN:46071 usage decreases to: 2 - BSSAP Clear --RAN_GERAN_A--> MS + bssap_clear_sent == 1 +- all requests serviced, conn has been released +- BSS sends BSSMAP Clear Complete DREF MSISDN:46071: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED @@ -309,8 +313,6 @@ DREF VLR subscr MSISDN:46071 usage decreases to: 1 DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated - bssap_clear_sent == 1 -- all requests serviced, conn has been released llist_count(&net->subscr_conns) == 0 --- - an SMS is sent, MS is paged @@ -468,6 +470,10 @@ DREF VLR subscr MSISDN:46071 usage increases to: 3 DREF VLR subscr MSISDN:46071 usage decreases to: 2 - BSSAP Clear --RAN_GERAN_A--> MS + dtap_tx_confirmed == 1 + bssap_clear_sent == 1 +- SMS is done, conn is gone +- BSS sends BSSMAP Clear Complete DREF MSISDN:46071: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED @@ -480,9 +486,6 @@ DREF VLR subscr MSISDN:46071 usage decreases to: 1 DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated - dtap_tx_confirmed == 1 - bssap_clear_sent == 1 -- SMS is done, conn is gone llist_count(&net->subscr_conns) == 0 --- - subscriber detaches @@ -502,15 +505,16 @@ DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASING DREF unknown: MSC conn use + release == 2 (0x101) - BSSAP Clear --RAN_GERAN_A--> MS -DREF unknown: MSC conn use - release == 1 (0x1) -DREF unknown: MSC conn use - compl_l3 == 0 (0x0) +DREF unknown: MSC conn use - compl_l3 == 1 (0x100) + bssap_clear_sent == 1 +- BSS sends BSSMAP Clear Complete +DREF unknown: MSC conn use - release == 0 (0x0) DMM Subscr_Conn{SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn{SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DRLL Freeing subscriber connection with NULL subscriber DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Deallocated - bssap_clear_sent == 1 llist_count(&net->subscr_conns) == 0 ===== test_ciph: SUCCESS @@ -703,8 +707,11 @@ DREF VLR subscr MSISDN:46071 usage increases to: 3 DREF VLR subscr MSISDN:46071 usage decreases to: 2 - BSSAP Clear --RAN_GERAN_A--> MS -DREF MSISDN:46071: MSC conn use - release == 1 (0x2) -DREF MSISDN:46071: MSC conn use - dtap == 0 (0x0) +DREF MSISDN:46071: MSC conn use - dtap == 1 (0x100) + bssap_clear_sent == 1 +- LU was successful, and the conn has already been closed +- BSS sends BSSMAP Clear Complete +DREF MSISDN:46071: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) @@ -717,8 +724,6 @@ DREF VLR subscr MSISDN:46071 usage decreases to: 1 DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated - bssap_clear_sent == 1 -- LU was successful, and the conn has already been closed llist_count(&net->subscr_conns) == 0 - Subscriber has the new TMSI DREF VLR subscr MSISDN:46071 usage increases to: 2 @@ -850,6 +855,9 @@ DREF VLR subscr MSISDN:46071 usage increases to: 3 DREF VLR subscr MSISDN:46071 usage decreases to: 2 - BSSAP Clear --RAN_GERAN_A--> MS + bssap_clear_sent == 1 +- all requests serviced, conn has been released +- BSS sends BSSMAP Clear Complete DREF MSISDN:46071: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(50462976){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(50462976){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED @@ -862,8 +870,6 @@ DREF VLR subscr MSISDN:46071 usage decreases to: 1 DMM Subscr_Conn(50462976){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(50462976){SUBSCR_CONN_S_RELEASED}: Deallocated - bssap_clear_sent == 1 -- all requests serviced, conn has been released llist_count(&net->subscr_conns) == 0 --- - an SMS is sent, MS is paged @@ -1021,6 +1027,10 @@ DREF VLR subscr MSISDN:46071 usage increases to: 3 DREF VLR subscr MSISDN:46071 usage decreases to: 2 - BSSAP Clear --RAN_GERAN_A--> MS + dtap_tx_confirmed == 1 + bssap_clear_sent == 1 +- SMS is done, conn is gone +- BSS sends BSSMAP Clear Complete DREF MSISDN:46071: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(50462976){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(50462976){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED @@ -1033,9 +1043,6 @@ DREF VLR subscr MSISDN:46071 usage decreases to: 1 DMM Subscr_Conn(50462976){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(50462976){SUBSCR_CONN_S_RELEASED}: Deallocated - dtap_tx_confirmed == 1 - bssap_clear_sent == 1 -- SMS is done, conn is gone llist_count(&net->subscr_conns) == 0 --- - subscriber detaches, using TMSI @@ -1055,15 +1062,16 @@ DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASING DREF unknown: MSC conn use + release == 2 (0x101) - BSSAP Clear --RAN_GERAN_A--> MS -DREF unknown: MSC conn use - release == 1 (0x1) -DREF unknown: MSC conn use - compl_l3 == 0 (0x0) +DREF unknown: MSC conn use - compl_l3 == 1 (0x100) + bssap_clear_sent == 1 +- BSS sends BSSMAP Clear Complete +DREF unknown: MSC conn use - release == 0 (0x0) DMM Subscr_Conn{SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn{SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DRLL Freeing subscriber connection with NULL subscriber DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Deallocated - bssap_clear_sent == 1 llist_count(&net->subscr_conns) == 0 ===== test_ciph_tmsi: SUCCESS @@ -1253,8 +1261,12 @@ DREF VLR subscr MSISDN:46071 usage increases to: 3 DREF VLR subscr MSISDN:46071 usage decreases to: 2 - BSSAP Clear --RAN_GERAN_A--> MS -DREF MSISDN:46071: MSC conn use - release == 1 (0x2) -DREF MSISDN:46071: MSC conn use - dtap == 0 (0x0) +DREF MSISDN:46071: MSC conn use - dtap == 1 (0x100) + bssap_clear_sent == 1 +- LU was successful, and the conn has already been closed + lu_result_sent == 1 +- BSS sends BSSMAP Clear Complete +DREF MSISDN:46071: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) @@ -1267,9 +1279,6 @@ DREF VLR subscr MSISDN:46071 usage decreases to: 1 DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated - bssap_clear_sent == 1 -- LU was successful, and the conn has already been closed - lu_result_sent == 1 llist_count(&net->subscr_conns) == 0 - Subscriber has the IMEI DREF VLR subscr MSISDN:46071 usage increases to: 2 @@ -1293,15 +1302,16 @@ DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASING DREF unknown: MSC conn use + release == 2 (0x101) - BSSAP Clear --RAN_GERAN_A--> MS -DREF unknown: MSC conn use - release == 1 (0x1) -DREF unknown: MSC conn use - compl_l3 == 0 (0x0) +DREF unknown: MSC conn use - compl_l3 == 1 (0x100) + bssap_clear_sent == 1 +- BSS sends BSSMAP Clear Complete +DREF unknown: MSC conn use - release == 0 (0x0) DMM Subscr_Conn{SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn{SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DRLL Freeing subscriber connection with NULL subscriber DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Deallocated - bssap_clear_sent == 1 llist_count(&net->subscr_conns) == 0 ===== test_ciph_imei: SUCCESS @@ -1483,6 +1493,12 @@ DREF VLR subscr MSISDN:46071 usage increases to: 4 DREF VLR subscr MSISDN:46071 usage decreases to: 3 - BSSAP Clear --RAN_GERAN_A--> MS +DREF VLR subscr MSISDN:46071 usage decreases to: 2 +<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0 + bssap_clear_sent == 1 +- LU was successful, and the conn has already been closed + lu_result_sent == 1 +- BSS sends BSSMAP Clear Complete DREF MSISDN:46071: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED @@ -1493,14 +1509,9 @@ DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Freeing instance DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Deallocated DRLL MSISDN:46071: Freeing subscriber connection -DREF VLR subscr MSISDN:46071 usage decreases to: 2 +DREF VLR subscr MSISDN:46071 usage decreases to: 1 DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated -DREF VLR subscr MSISDN:46071 usage decreases to: 1 -<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0 - bssap_clear_sent == 1 -- LU was successful, and the conn has already been closed - lu_result_sent == 1 llist_count(&net->subscr_conns) == 0 --- - subscriber detaches @@ -1520,15 +1531,16 @@ DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASING DREF unknown: MSC conn use + release == 2 (0x101) - BSSAP Clear --RAN_GERAN_A--> MS -DREF unknown: MSC conn use - release == 1 (0x1) -DREF unknown: MSC conn use - compl_l3 == 0 (0x0) +DREF unknown: MSC conn use - compl_l3 == 1 (0x100) + bssap_clear_sent == 1 +- BSS sends BSSMAP Clear Complete +DREF unknown: MSC conn use - release == 0 (0x0) DMM Subscr_Conn{SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn{SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DRLL Freeing subscriber connection with NULL subscriber DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Deallocated - bssap_clear_sent == 1 llist_count(&net->subscr_conns) == 0 ===== test_ciph_imeisv: SUCCESS @@ -1750,8 +1762,11 @@ DREF VLR subscr MSISDN:46071 usage increases to: 3 DREF VLR subscr MSISDN:46071 usage decreases to: 2 - BSSAP Clear --RAN_GERAN_A--> MS -DREF MSISDN:46071: MSC conn use - release == 1 (0x2) -DREF MSISDN:46071: MSC conn use - dtap == 0 (0x0) +DREF MSISDN:46071: MSC conn use - dtap == 1 (0x100) + bssap_clear_sent == 1 +- LU was successful, and the conn has already been closed +- BSS sends BSSMAP Clear Complete +DREF MSISDN:46071: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) @@ -1764,8 +1779,6 @@ DREF VLR subscr MSISDN:46071 usage decreases to: 1 DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated - bssap_clear_sent == 1 -- LU was successful, and the conn has already been closed llist_count(&net->subscr_conns) == 0 - Subscriber has the IMEI and TMSI DREF VLR subscr MSISDN:46071 usage increases to: 2 @@ -1790,15 +1803,16 @@ DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASING DREF unknown: MSC conn use + release == 2 (0x101) - BSSAP Clear --RAN_GERAN_A--> MS -DREF unknown: MSC conn use - release == 1 (0x1) -DREF unknown: MSC conn use - compl_l3 == 0 (0x0) +DREF unknown: MSC conn use - compl_l3 == 1 (0x100) + bssap_clear_sent == 1 +- BSS sends BSSMAP Clear Complete +DREF unknown: MSC conn use - release == 0 (0x0) DMM Subscr_Conn{SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn{SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DRLL Freeing subscriber connection with NULL subscriber DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Deallocated - bssap_clear_sent == 1 llist_count(&net->subscr_conns) == 0 ===== test_ciph_tmsi_imei: SUCCESS @@ -1948,6 +1962,12 @@ DREF VLR subscr MSISDN:42342 usage increases to: 4 DREF VLR subscr MSISDN:42342 usage decreases to: 3 - BSSAP Clear --RAN_GERAN_A--> MS +DREF VLR subscr MSISDN:42342 usage decreases to: 2 +<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0 + bssap_clear_sent == 1 +- LU was successful, and the conn has already been closed + lu_result_sent == 1 +- BSS sends BSSMAP Clear Complete DREF MSISDN:42342: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED @@ -1958,14 +1978,9 @@ DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_DONE}: Freeing instance DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_DONE}: Deallocated DRLL MSISDN:42342: Freeing subscriber connection -DREF VLR subscr MSISDN:42342 usage decreases to: 2 +DREF VLR subscr MSISDN:42342 usage decreases to: 1 DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Deallocated -DREF VLR subscr MSISDN:42342 usage decreases to: 1 -<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0 - bssap_clear_sent == 1 -- LU was successful, and the conn has already been closed - lu_result_sent == 1 llist_count(&net->subscr_conns) == 0 --- - after a while, a new conn sends a CM Service Request. VLR responds with *UMTS AKA* Auth Req, 2nd auth vector @@ -2080,6 +2095,9 @@ DREF VLR subscr MSISDN:42342 usage increases to: 3 DREF VLR subscr MSISDN:42342 usage decreases to: 2 - BSSAP Clear --RAN_GERAN_A--> MS + bssap_clear_sent == 1 +- all requests serviced, conn has been released +- BSS sends BSSMAP Clear Complete DREF MSISDN:42342: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED @@ -2092,8 +2110,6 @@ DREF VLR subscr MSISDN:42342 usage decreases to: 1 DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Deallocated - bssap_clear_sent == 1 -- all requests serviced, conn has been released llist_count(&net->subscr_conns) == 0 --- - an SMS is sent, MS is paged @@ -2241,6 +2257,10 @@ DREF VLR subscr MSISDN:42342 usage increases to: 3 DREF VLR subscr MSISDN:42342 usage decreases to: 2 - BSSAP Clear --RAN_GERAN_A--> MS + dtap_tx_confirmed == 1 + bssap_clear_sent == 1 +- SMS is done, conn is gone +- BSS sends BSSMAP Clear Complete DREF MSISDN:42342: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED @@ -2253,9 +2273,6 @@ DREF VLR subscr MSISDN:42342 usage decreases to: 1 DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Deallocated - dtap_tx_confirmed == 1 - bssap_clear_sent == 1 -- SMS is done, conn is gone llist_count(&net->subscr_conns) == 0 --- - subscriber detaches @@ -2275,15 +2292,16 @@ DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASING DREF unknown: MSC conn use + release == 2 (0x101) - BSSAP Clear --RAN_GERAN_A--> MS -DREF unknown: MSC conn use - release == 1 (0x1) -DREF unknown: MSC conn use - compl_l3 == 0 (0x0) +DREF unknown: MSC conn use - compl_l3 == 1 (0x100) + bssap_clear_sent == 1 +- BSS sends BSSMAP Clear Complete +DREF unknown: MSC conn use - release == 0 (0x0) DMM Subscr_Conn{SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn{SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DRLL Freeing subscriber connection with NULL subscriber DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Deallocated - bssap_clear_sent == 1 llist_count(&net->subscr_conns) == 0 ===== test_gsm_ciph_in_umts_env: SUCCESS @@ -2369,8 +2387,10 @@ DREF VLR subscr IMSI:901700000004620 usage increases to: 2 DREF VLR subscr IMSI:901700000004620 usage decreases to: 1 - BSSAP Clear --RAN_GERAN_A--> MS -DREF IMSI:901700000004620: MSC conn use - release == 1 (0x2) -DREF IMSI:901700000004620: MSC conn use - dtap == 0 (0x0) +DREF IMSI:901700000004620: MSC conn use - dtap == 1 (0x100) + lu_result_sent == 2 +- BSS sends BSSMAP Clear Complete +DREF IMSI:901700000004620: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) @@ -2384,7 +2404,6 @@ DREF freeing VLR subscr IMSI:901700000004620 DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated - lu_result_sent == 2 llist_count(&net->subscr_conns) == 0 ===== test_a5_3_not_supported: SUCCESS diff --git a/tests/msc_vlr/msc_vlr_test_hlr_reject.c b/tests/msc_vlr/msc_vlr_test_hlr_reject.c index 8532f8e..8dfe1f4 100644 --- a/tests/msc_vlr/msc_vlr_test_hlr_reject.c +++ b/tests/msc_vlr/msc_vlr_test_hlr_reject.c @@ -44,6 +44,7 @@ VERBOSE_ASSERT(lu_result_sent, == RES_REJECT, "%d"); VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); clear_vlr(); comment_end(); @@ -70,6 +71,7 @@ VERBOSE_ASSERT(lu_result_sent, == RES_REJECT, "%d"); VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); clear_vlr(); comment_end(); @@ -128,6 +130,7 @@ btw("LU was successful, and the conn has already been closed"); VERBOSE_ASSERT(lu_result_sent, == RES_ACCEPT, "%d"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); @@ -157,6 +160,7 @@ VERBOSE_ASSERT(lu_result_sent, == RES_REJECT, "%d"); VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); clear_vlr(); comment_end(); @@ -215,6 +219,7 @@ btw("LU was successful, and the conn has already been closed"); VERBOSE_ASSERT(lu_result_sent, == RES_ACCEPT, "%d"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); @@ -245,6 +250,7 @@ VERBOSE_ASSERT(lu_result_sent, == RES_REJECT, "%d"); VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); clear_vlr(); comment_end(); @@ -277,6 +283,7 @@ VERBOSE_ASSERT(lu_result_sent, == RES_REJECT, "%d"); VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); clear_vlr(); comment_end(); @@ -335,6 +342,7 @@ btw("LU was successful, and the conn has already been closed"); VERBOSE_ASSERT(lu_result_sent, == RES_ACCEPT, "%d"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); @@ -379,6 +387,7 @@ btw("LU was successful, and the conn has already been closed"); VERBOSE_ASSERT(lu_result_sent, == RES_ACCEPT, "%d"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); clear_vlr(); @@ -402,6 +411,7 @@ NULL); VERBOSE_ASSERT(lu_result_sent, == RES_REJECT, "%d"); VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); clear_vlr(); @@ -429,6 +439,7 @@ btw("LU was successful, and the conn has already been closed"); VERBOSE_ASSERT(lu_result_sent, == RES_ACCEPT, "%d"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); clear_vlr(); comment_end(); diff --git a/tests/msc_vlr/msc_vlr_test_hlr_reject.err b/tests/msc_vlr/msc_vlr_test_hlr_reject.err index 28e15aa..959b58c 100644 --- a/tests/msc_vlr/msc_vlr_test_hlr_reject.err +++ b/tests/msc_vlr/msc_vlr_test_hlr_reject.err @@ -55,6 +55,12 @@ DREF VLR subscr IMSI:901700000004620 usage increases to: 3 DREF VLR subscr IMSI:901700000004620 usage decreases to: 2 - BSSAP Clear --RAN_GERAN_A--> MS +DREF VLR subscr IMSI:901700000004620 usage decreases to: 1 +<-- GSUP rx OSMO_GSUP_MSGT_SEND_AUTH_INFO_ERROR: vlr_gsupc_read_cb() returns 0 + auth_request_sent == 0 + lu_result_sent == 2 + bssap_clear_sent == 1 +- BSS sends BSSMAP Clear Complete DREF IMSI:901700000004620: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED @@ -65,15 +71,10 @@ DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Freeing instance DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Deallocated DRLL IMSI:901700000004620: Freeing subscriber connection -DREF VLR subscr IMSI:901700000004620 usage decreases to: 1 -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated DREF VLR subscr IMSI:901700000004620 usage decreases to: 0 DREF freeing VLR subscr IMSI:901700000004620 -<-- GSUP rx OSMO_GSUP_MSGT_SEND_AUTH_INFO_ERROR: vlr_gsupc_read_cb() returns 0 - auth_request_sent == 0 - lu_result_sent == 2 - bssap_clear_sent == 1 +DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance +DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated llist_count(&net->subscr_conns) == 0 ===== test_hlr_rej_auth_info_unknown_imsi: SUCCESS @@ -134,6 +135,12 @@ DREF VLR subscr IMSI:901700000004620 usage increases to: 3 DREF VLR subscr IMSI:901700000004620 usage decreases to: 2 - BSSAP Clear --RAN_GERAN_A--> MS +DREF VLR subscr IMSI:901700000004620 usage decreases to: 1 +<-- GSUP rx OSMO_GSUP_MSGT_SEND_AUTH_INFO_ERROR: vlr_gsupc_read_cb() returns 0 + auth_request_sent == 0 + lu_result_sent == 2 + bssap_clear_sent == 1 +- BSS sends BSSMAP Clear Complete DREF IMSI:901700000004620: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED @@ -144,15 +151,10 @@ DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Freeing instance DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Deallocated DRLL IMSI:901700000004620: Freeing subscriber connection -DREF VLR subscr IMSI:901700000004620 usage decreases to: 1 -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated DREF VLR subscr IMSI:901700000004620 usage decreases to: 0 DREF freeing VLR subscr IMSI:901700000004620 -<-- GSUP rx OSMO_GSUP_MSGT_SEND_AUTH_INFO_ERROR: vlr_gsupc_read_cb() returns 0 - auth_request_sent == 0 - lu_result_sent == 2 - bssap_clear_sent == 1 +DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance +DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated llist_count(&net->subscr_conns) == 0 ===== test_hlr_rej_auth_info_net_fail: SUCCESS @@ -292,6 +294,12 @@ DREF VLR subscr MSISDN:46071 usage increases to: 4 DREF VLR subscr MSISDN:46071 usage decreases to: 3 - BSSAP Clear --RAN_GERAN_A--> MS +DREF VLR subscr MSISDN:46071 usage decreases to: 2 +<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0 + bssap_clear_sent == 1 +- LU was successful, and the conn has already been closed + lu_result_sent == 1 +- BSS sends BSSMAP Clear Complete DREF MSISDN:46071: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED @@ -302,14 +310,9 @@ DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Freeing instance DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Deallocated DRLL MSISDN:46071: Freeing subscriber connection -DREF VLR subscr MSISDN:46071 usage decreases to: 2 +DREF VLR subscr MSISDN:46071 usage decreases to: 1 DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated -DREF VLR subscr MSISDN:46071 usage decreases to: 1 -<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0 - bssap_clear_sent == 1 -- LU was successful, and the conn has already been closed - lu_result_sent == 1 llist_count(&net->subscr_conns) == 0 --- - Now one auth tuple is available, but used. @@ -445,6 +448,12 @@ DREF VLR subscr MSISDN:46071 usage increases to: 4 DREF VLR subscr MSISDN:46071 usage decreases to: 3 - BSSAP Clear --RAN_GERAN_A--> MS +DREF VLR subscr MSISDN:46071 usage decreases to: 2 +<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0 + bssap_clear_sent == 1 +- LU was successful, and the conn has already been closed + lu_result_sent == 1 +- BSS sends BSSMAP Clear Complete DREF MSISDN:46071: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED @@ -455,14 +464,9 @@ DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Freeing instance DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Deallocated DRLL MSISDN:46071: Freeing subscriber connection -DREF VLR subscr MSISDN:46071 usage decreases to: 2 +DREF VLR subscr MSISDN:46071 usage decreases to: 1 DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated -DREF VLR subscr MSISDN:46071 usage decreases to: 1 -<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0 - bssap_clear_sent == 1 -- LU was successful, and the conn has already been closed - lu_result_sent == 1 llist_count(&net->subscr_conns) == 0 DREF freeing VLR subscr MSISDN:46071 ===== test_hlr_rej_auth_info_net_fail_reuse_tuples: SUCCESS @@ -603,6 +607,12 @@ DREF VLR subscr MSISDN:46071 usage increases to: 4 DREF VLR subscr MSISDN:46071 usage decreases to: 3 - BSSAP Clear --RAN_GERAN_A--> MS +DREF VLR subscr MSISDN:46071 usage decreases to: 2 +<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0 + bssap_clear_sent == 1 +- LU was successful, and the conn has already been closed + lu_result_sent == 1 +- BSS sends BSSMAP Clear Complete DREF MSISDN:46071: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED @@ -613,14 +623,9 @@ DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Freeing instance DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Deallocated DRLL MSISDN:46071: Freeing subscriber connection -DREF VLR subscr MSISDN:46071 usage decreases to: 2 +DREF VLR subscr MSISDN:46071 usage decreases to: 1 DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated -DREF VLR subscr MSISDN:46071 usage decreases to: 1 -<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0 - bssap_clear_sent == 1 -- LU was successful, and the conn has already been closed - lu_result_sent == 1 llist_count(&net->subscr_conns) == 0 --- - Now one auth tuple is available, but used. @@ -680,6 +685,12 @@ DREF VLR subscr MSISDN:46071 usage increases to: 4 DREF VLR subscr MSISDN:46071 usage decreases to: 3 - BSSAP Clear --RAN_GERAN_A--> MS +DREF VLR subscr MSISDN:46071 usage decreases to: 2 +<-- GSUP rx OSMO_GSUP_MSGT_SEND_AUTH_INFO_ERROR: vlr_gsupc_read_cb() returns 0 + auth_request_sent == 0 + lu_result_sent == 2 + bssap_clear_sent == 1 +- BSS sends BSSMAP Clear Complete DREF MSISDN:46071: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED @@ -690,14 +701,9 @@ DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Freeing instance DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Deallocated DRLL MSISDN:46071: Freeing subscriber connection -DREF VLR subscr MSISDN:46071 usage decreases to: 2 +DREF VLR subscr MSISDN:46071 usage decreases to: 1 DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated -DREF VLR subscr MSISDN:46071 usage decreases to: 1 -<-- GSUP rx OSMO_GSUP_MSGT_SEND_AUTH_INFO_ERROR: vlr_gsupc_read_cb() returns 0 - auth_request_sent == 0 - lu_result_sent == 2 - bssap_clear_sent == 1 llist_count(&net->subscr_conns) == 0 DREF freeing VLR subscr MSISDN:46071 ===== test_hlr_rej_auth_info_net_fail_no_reuse_tuples: SUCCESS @@ -838,6 +844,12 @@ DREF VLR subscr MSISDN:46071 usage increases to: 4 DREF VLR subscr MSISDN:46071 usage decreases to: 3 - BSSAP Clear --RAN_GERAN_A--> MS +DREF VLR subscr MSISDN:46071 usage decreases to: 2 +<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0 + bssap_clear_sent == 1 +- LU was successful, and the conn has already been closed + lu_result_sent == 1 +- BSS sends BSSMAP Clear Complete DREF MSISDN:46071: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED @@ -848,14 +860,9 @@ DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Freeing instance DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Deallocated DRLL MSISDN:46071: Freeing subscriber connection -DREF VLR subscr MSISDN:46071 usage decreases to: 2 +DREF VLR subscr MSISDN:46071 usage decreases to: 1 DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated -DREF VLR subscr MSISDN:46071 usage decreases to: 1 -<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0 - bssap_clear_sent == 1 -- LU was successful, and the conn has already been closed - lu_result_sent == 1 llist_count(&net->subscr_conns) == 0 --- - Now one auth tuple is available, but used. @@ -916,6 +923,12 @@ DREF VLR subscr MSISDN:46071 usage increases to: 4 DREF VLR subscr MSISDN:46071 usage decreases to: 3 - BSSAP Clear --RAN_GERAN_A--> MS +DREF VLR subscr MSISDN:46071 usage decreases to: 2 +<-- GSUP rx OSMO_GSUP_MSGT_SEND_AUTH_INFO_ERROR: vlr_gsupc_read_cb() returns 0 + auth_request_sent == 0 + lu_result_sent == 2 + bssap_clear_sent == 1 +- BSS sends BSSMAP Clear Complete DREF MSISDN:46071: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED @@ -926,14 +939,9 @@ DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Freeing instance DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Deallocated DRLL MSISDN:46071: Freeing subscriber connection -DREF VLR subscr MSISDN:46071 usage decreases to: 2 +DREF VLR subscr MSISDN:46071 usage decreases to: 1 DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated -DREF VLR subscr MSISDN:46071 usage decreases to: 1 -<-- GSUP rx OSMO_GSUP_MSGT_SEND_AUTH_INFO_ERROR: vlr_gsupc_read_cb() returns 0 - auth_request_sent == 0 - lu_result_sent == 2 - bssap_clear_sent == 1 llist_count(&net->subscr_conns) == 0 DREF freeing VLR subscr MSISDN:46071 ===== test_hlr_rej_auth_info_unkown_imsi_no_reuse_tuples: SUCCESS @@ -994,6 +1002,12 @@ DREF VLR subscr IMSI:901700000004620 usage increases to: 3 DREF VLR subscr IMSI:901700000004620 usage decreases to: 2 - BSSAP Clear --RAN_GERAN_A--> MS +DREF VLR subscr IMSI:901700000004620 usage decreases to: 1 +<-- GSUP rx OSMO_GSUP_MSGT_SEND_AUTH_INFO_RESULT: vlr_gsupc_read_cb() returns 0 + auth_request_sent == 0 + lu_result_sent == 2 + bssap_clear_sent == 1 +- BSS sends BSSMAP Clear Complete DREF IMSI:901700000004620: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED @@ -1004,15 +1018,10 @@ DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Freeing instance DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Deallocated DRLL IMSI:901700000004620: Freeing subscriber connection -DREF VLR subscr IMSI:901700000004620 usage decreases to: 1 -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated DREF VLR subscr IMSI:901700000004620 usage decreases to: 0 DREF freeing VLR subscr IMSI:901700000004620 -<-- GSUP rx OSMO_GSUP_MSGT_SEND_AUTH_INFO_RESULT: vlr_gsupc_read_cb() returns 0 - auth_request_sent == 0 - lu_result_sent == 2 - bssap_clear_sent == 1 +DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance +DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated llist_count(&net->subscr_conns) == 0 ===== test_hlr_acc_but_no_auth_tuples: SUCCESS @@ -1076,6 +1085,11 @@ DREF VLR subscr IMSI:901700000004620 usage increases to: 3 DREF VLR subscr IMSI:901700000004620 usage decreases to: 2 - BSSAP Clear --RAN_GERAN_A--> MS +DREF VLR subscr IMSI:901700000004620 usage decreases to: 1 +<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_ERROR: vlr_gsupc_read_cb() returns 0 + lu_result_sent == 2 + bssap_clear_sent == 1 +- BSS sends BSSMAP Clear Complete DREF IMSI:901700000004620: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED @@ -1086,14 +1100,10 @@ DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Freeing instance DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Deallocated DRLL IMSI:901700000004620: Freeing subscriber connection -DREF VLR subscr IMSI:901700000004620 usage decreases to: 1 -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated DREF VLR subscr IMSI:901700000004620 usage decreases to: 0 DREF freeing VLR subscr IMSI:901700000004620 -<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_ERROR: vlr_gsupc_read_cb() returns 0 - lu_result_sent == 2 - bssap_clear_sent == 1 +DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance +DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated llist_count(&net->subscr_conns) == 0 ===== test_hlr_rej_lu: SUCCESS @@ -1179,6 +1189,12 @@ DREF VLR subscr IMSI:901700000004620 usage increases to: 4 DREF VLR subscr IMSI:901700000004620 usage decreases to: 3 - BSSAP Clear --RAN_GERAN_A--> MS +DREF VLR subscr IMSI:901700000004620 usage decreases to: 2 +<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0 + bssap_clear_sent == 1 +- LU was successful, and the conn has already been closed + lu_result_sent == 1 +- BSS sends BSSMAP Clear Complete DREF IMSI:901700000004620: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED @@ -1189,14 +1205,9 @@ DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Freeing instance DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Deallocated DRLL IMSI:901700000004620: Freeing subscriber connection -DREF VLR subscr IMSI:901700000004620 usage decreases to: 2 +DREF VLR subscr IMSI:901700000004620 usage decreases to: 1 DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated -DREF VLR subscr IMSI:901700000004620 usage decreases to: 1 -<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0 - bssap_clear_sent == 1 -- LU was successful, and the conn has already been closed - lu_result_sent == 1 llist_count(&net->subscr_conns) == 0 DREF freeing VLR subscr IMSI:901700000004620 ===== test_hlr_no_insert_data: SUCCESS diff --git a/tests/msc_vlr/msc_vlr_test_hlr_timeout.c b/tests/msc_vlr/msc_vlr_test_hlr_timeout.c index 610b388..ce3f3d0 100644 --- a/tests/msc_vlr/msc_vlr_test_hlr_timeout.c +++ b/tests/msc_vlr/msc_vlr_test_hlr_timeout.c @@ -57,6 +57,7 @@ fake_time_passes(1, 235); btw("SUBSCR_CONN_TIMEOUT has passed, conn is gone."); VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); VERBOSE_ASSERT(lu_result_sent, == RES_REJECT, "%d"); @@ -104,6 +105,7 @@ fake_time_passes(1, 235); btw("SUBSCR_CONN_TIMEOUT has passed, conn is gone."); VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); VERBOSE_ASSERT(lu_result_sent, == RES_REJECT, "%d"); diff --git a/tests/msc_vlr/msc_vlr_test_hlr_timeout.err b/tests/msc_vlr/msc_vlr_test_hlr_timeout.err index 883141c..45c6a6f 100644 --- a/tests/msc_vlr/msc_vlr_test_hlr_timeout.err +++ b/tests/msc_vlr/msc_vlr_test_hlr_timeout.err @@ -62,6 +62,9 @@ DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: Event SUBSCR_CONN_E_CN_CLOSE not permitted DREF VLR subscr IMSI:901700000004620 usage decreases to: 1 - BSSAP Clear --RAN_GERAN_A--> MS +- SUBSCR_CONN_TIMEOUT has passed, conn is gone. + bssap_clear_sent == 1 +- BSS sends BSSMAP Clear Complete DREF IMSI:901700000004620: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED @@ -80,8 +83,6 @@ DREF freeing VLR subscr IMSI:901700000004620 DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated -- SUBSCR_CONN_TIMEOUT has passed, conn is gone. - bssap_clear_sent == 1 llist_count(&net->subscr_conns) == 0 lu_result_sent == 2 ===== test_hlr_timeout_lu_auth_info: SUCCESS @@ -169,6 +170,9 @@ DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: Event SUBSCR_CONN_E_CN_CLOSE not permitted DREF VLR subscr MSISDN:46071 usage decreases to: 1 - BSSAP Clear --RAN_GERAN_A--> MS +- SUBSCR_CONN_TIMEOUT has passed, conn is gone. + bssap_clear_sent == 1 +- BSS sends BSSMAP Clear Complete DREF MSISDN:46071: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED @@ -187,8 +191,6 @@ DREF freeing VLR subscr MSISDN:46071 DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated -- SUBSCR_CONN_TIMEOUT has passed, conn is gone. - bssap_clear_sent == 1 llist_count(&net->subscr_conns) == 0 lu_result_sent == 2 ===== test_hlr_timeout_lu_upd_loc_result: SUCCESS diff --git a/tests/msc_vlr/msc_vlr_test_ms_timeout.c b/tests/msc_vlr/msc_vlr_test_ms_timeout.c index a36027c..c5ab059 100644 --- a/tests/msc_vlr/msc_vlr_test_ms_timeout.c +++ b/tests/msc_vlr/msc_vlr_test_ms_timeout.c @@ -77,6 +77,7 @@ fake_time_passes(1, 235); btw("SUBSCR_CONN_TIMEOUT has passed, conn is gone."); VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); VERBOSE_ASSERT(lu_result_sent, == RES_REJECT, "%d"); @@ -140,6 +141,7 @@ btw("LU was successful, and the conn has already been closed"); VERBOSE_ASSERT(lu_result_sent, == RES_ACCEPT, "%d"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); BTW("after a while, a new conn sends a CM Service Request. VLR responds with Auth Req, 2nd auth vector"); @@ -175,6 +177,7 @@ fake_time_passes(1, 235); btw("SUBSCR_CONN_TIMEOUT has passed, conn is gone."); VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); VERBOSE_ASSERT(cm_service_result_sent, == RES_REJECT, "%d"); @@ -212,6 +215,7 @@ btw("LU was successful, and the conn has already been closed"); VERBOSE_ASSERT(lu_result_sent, == RES_ACCEPT, "%d"); VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); BTW("an SMS is sent, MS is paged"); @@ -282,6 +286,7 @@ vsub = vlr_subscr_find_by_imsi(net->vlr, imsi); OSMO_ASSERT(!vsub); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); clear_vlr(); comment_end(); diff --git a/tests/msc_vlr/msc_vlr_test_ms_timeout.err b/tests/msc_vlr/msc_vlr_test_ms_timeout.err index a3950ed..82786ff 100644 --- a/tests/msc_vlr/msc_vlr_test_ms_timeout.err +++ b/tests/msc_vlr/msc_vlr_test_ms_timeout.err @@ -82,6 +82,9 @@ DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: Event SUBSCR_CONN_E_CN_CLOSE not permitted DREF VLR subscr IMSI:901700000004620 usage decreases to: 1 - BSSAP Clear --RAN_GERAN_A--> MS +- SUBSCR_CONN_TIMEOUT has passed, conn is gone. + bssap_clear_sent == 1 +- BSS sends BSSMAP Clear Complete DREF IMSI:901700000004620: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED @@ -100,8 +103,6 @@ DREF freeing VLR subscr IMSI:901700000004620 DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated -- SUBSCR_CONN_TIMEOUT has passed, conn is gone. - bssap_clear_sent == 1 llist_count(&net->subscr_conns) == 0 lu_result_sent == 2 ===== test_ms_timeout_lu_auth_resp: SUCCESS @@ -241,6 +242,12 @@ DREF VLR subscr MSISDN:46071 usage increases to: 4 DREF VLR subscr MSISDN:46071 usage decreases to: 3 - BSSAP Clear --RAN_GERAN_A--> MS +DREF VLR subscr MSISDN:46071 usage decreases to: 2 +<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0 + bssap_clear_sent == 1 +- LU was successful, and the conn has already been closed + lu_result_sent == 1 +- BSS sends BSSMAP Clear Complete DREF MSISDN:46071: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED @@ -251,14 +258,9 @@ DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Freeing instance DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Deallocated DRLL MSISDN:46071: Freeing subscriber connection -DREF VLR subscr MSISDN:46071 usage decreases to: 2 +DREF VLR subscr MSISDN:46071 usage decreases to: 1 DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated -DREF VLR subscr MSISDN:46071 usage decreases to: 1 -<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0 - bssap_clear_sent == 1 -- LU was successful, and the conn has already been closed - lu_result_sent == 1 llist_count(&net->subscr_conns) == 0 --- - after a while, a new conn sends a CM Service Request. VLR responds with Auth Req, 2nd auth vector @@ -327,6 +329,9 @@ DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: Event SUBSCR_CONN_E_CN_CLOSE not permitted DREF VLR subscr MSISDN:46071 usage decreases to: 2 - BSSAP Clear --RAN_GERAN_A--> MS +- SUBSCR_CONN_TIMEOUT has passed, conn is gone. + bssap_clear_sent == 1 +- BSS sends BSSMAP Clear Complete DREF MSISDN:46071: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED @@ -343,8 +348,6 @@ DREF VLR subscr MSISDN:46071 usage decreases to: 1 DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated -- SUBSCR_CONN_TIMEOUT has passed, conn is gone. - bssap_clear_sent == 1 llist_count(&net->subscr_conns) == 0 cm_service_result_sent == 2 DREF freeing VLR subscr MSISDN:46071 @@ -444,6 +447,12 @@ DREF VLR subscr MSISDN:46071 usage increases to: 4 DREF VLR subscr MSISDN:46071 usage decreases to: 3 - BSSAP Clear --RAN_GERAN_A--> MS +DREF VLR subscr MSISDN:46071 usage decreases to: 2 +<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0 +- LU was successful, and the conn has already been closed + lu_result_sent == 1 + bssap_clear_sent == 1 +- BSS sends BSSMAP Clear Complete DREF MSISDN:46071: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED @@ -454,14 +463,9 @@ DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Freeing instance DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Deallocated DRLL MSISDN:46071: Freeing subscriber connection -DREF VLR subscr MSISDN:46071 usage decreases to: 2 +DREF VLR subscr MSISDN:46071 usage decreases to: 1 DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated -DREF VLR subscr MSISDN:46071 usage decreases to: 1 -<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0 -- LU was successful, and the conn has already been closed - lu_result_sent == 1 - bssap_clear_sent == 1 llist_count(&net->subscr_conns) == 0 --- - an SMS is sent, MS is paged @@ -533,16 +537,17 @@ DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASING DREF unknown: MSC conn use + release == 2 (0x101) - BSSAP Clear --RAN_GERAN_A--> MS -DREF unknown: MSC conn use - release == 1 (0x1) -DREF unknown: MSC conn use - compl_l3 == 0 (0x0) +DREF unknown: MSC conn use - compl_l3 == 1 (0x100) + bssap_clear_sent == 1 + paging_stopped == 1 +- BSS sends BSSMAP Clear Complete +DREF unknown: MSC conn use - release == 0 (0x0) DMM Subscr_Conn{SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn{SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DRLL Freeing subscriber connection with NULL subscriber DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Deallocated - bssap_clear_sent == 1 - paging_stopped == 1 llist_count(&net->subscr_conns) == 0 ===== test_ms_timeout_paging: SUCCESS diff --git a/tests/msc_vlr/msc_vlr_test_no_authen.c b/tests/msc_vlr/msc_vlr_test_no_authen.c index b20f9d7..cd61fa1 100644 --- a/tests/msc_vlr/msc_vlr_test_no_authen.c +++ b/tests/msc_vlr/msc_vlr_test_no_authen.c @@ -59,6 +59,8 @@ btw("LU was successful, and the conn has already been closed"); VERBOSE_ASSERT(lu_result_sent, == RES_ACCEPT, "%d"); VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); + + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); BTW("after a while, a new conn sends a CM Service Request"); @@ -78,6 +80,7 @@ VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); btw("all requests serviced, conn has been released"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); BTW("an SMS is sent, MS is paged"); @@ -150,6 +153,7 @@ VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); btw("SMS is done, conn is gone"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); BTW("subscriber detaches"); @@ -157,6 +161,7 @@ ms_sends_msg("050130089910070000006402"); VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); clear_vlr(); comment_end(); @@ -213,6 +218,7 @@ VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); btw("LU was successful, and the conn has already been closed"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); btw("Subscriber has the new TMSI"); @@ -239,6 +245,7 @@ VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); btw("all requests serviced, conn has been released"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); BTW("an SMS is sent, MS is paged using above TMSI"); @@ -311,6 +318,7 @@ VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); btw("SMS is done, conn is gone"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); /* TODO: when the subscriber detaches, the vlr_subscr gets @@ -362,6 +370,7 @@ VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); btw("LU was successful, and the conn has already been closed"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); btw("subscriber has the new TMSI"); @@ -377,6 +386,7 @@ ms_sends_msg("050130" "05f4" "07060504"); VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); clear_vlr(); comment_end(); @@ -432,6 +442,7 @@ btw("LU was successful, and the conn has already been closed"); VERBOSE_ASSERT(lu_result_sent, == RES_ACCEPT, "%d"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); btw("Subscriber has the IMEI"); @@ -445,6 +456,7 @@ ms_sends_msg("050130089910070000006402"); VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); clear_vlr(); comment_end(); @@ -508,6 +520,7 @@ btw("LU was successful, and the conn has already been closed"); VERBOSE_ASSERT(lu_result_sent, == RES_ACCEPT, "%d"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); btw("Subscriber has the IMEI and TMSI"); @@ -522,6 +535,7 @@ ms_sends_msg("050130089910070000006402"); VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); clear_vlr(); comment_end(); @@ -576,6 +590,7 @@ btw("LU was successful, and the conn has already been closed"); VERBOSE_ASSERT(lu_result_sent, == RES_ACCEPT, "%d"); VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); BTW("subscriber detaches"); @@ -583,6 +598,7 @@ ms_sends_msg("050130089910070000006402"); VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); clear_vlr(); comment_end(); @@ -648,6 +664,7 @@ btw("LU was successful, and the conn has already been closed"); VERBOSE_ASSERT(lu_result_sent, == RES_ACCEPT, "%d"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); btw("Subscriber has the IMEI"); @@ -661,6 +678,7 @@ ms_sends_msg("050130089910070000006402"); VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); clear_vlr(); comment_end(); @@ -729,6 +747,7 @@ VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); btw("LU was successful, and the conn has already been closed"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); @@ -784,6 +803,7 @@ VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); btw("LU was successful, and the conn has already been closed"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); btw("subscriber has the new TMSI"); @@ -799,6 +819,7 @@ ms_sends_msg("050130" "05f4" "07060504"); VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); clear_vlr(); comment_end(); @@ -874,6 +895,7 @@ btw("LU was successful, and the conn has already been closed"); VERBOSE_ASSERT(lu_result_sent, == RES_ACCEPT, "%d"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); btw("Subscriber has the IMEISV, IMEI and TMSI"); @@ -889,6 +911,7 @@ ms_sends_msg("050130089910070000006402"); VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); clear_vlr(); comment_end(); diff --git a/tests/msc_vlr/msc_vlr_test_no_authen.err b/tests/msc_vlr/msc_vlr_test_no_authen.err index 5cd2fa3..c71f04a 100644 --- a/tests/msc_vlr/msc_vlr_test_no_authen.err +++ b/tests/msc_vlr/msc_vlr_test_no_authen.err @@ -103,6 +103,12 @@ DREF VLR subscr MSISDN:46071 usage increases to: 4 DREF VLR subscr MSISDN:46071 usage decreases to: 3 - BSSAP Clear --RAN_GERAN_A--> MS +DREF VLR subscr MSISDN:46071 usage decreases to: 2 +<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0 +- LU was successful, and the conn has already been closed + lu_result_sent == 1 + bssap_clear_sent == 1 +- BSS sends BSSMAP Clear Complete DREF MSISDN:46071: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED @@ -113,14 +119,9 @@ DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Freeing instance DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Deallocated DRLL MSISDN:46071: Freeing subscriber connection -DREF VLR subscr MSISDN:46071 usage decreases to: 2 +DREF VLR subscr MSISDN:46071 usage decreases to: 1 DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated -DREF VLR subscr MSISDN:46071 usage decreases to: 1 -<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0 -- LU was successful, and the conn has already been closed - lu_result_sent == 1 - bssap_clear_sent == 1 llist_count(&net->subscr_conns) == 0 --- - after a while, a new conn sends a CM Service Request @@ -180,6 +181,10 @@ DREF VLR subscr MSISDN:46071 usage increases to: 3 DREF VLR subscr MSISDN:46071 usage decreases to: 2 - BSSAP Clear --RAN_GERAN_A--> MS + dtap_tx_confirmed == 1 + bssap_clear_sent == 1 +- all requests serviced, conn has been released +- BSS sends BSSMAP Clear Complete DREF MSISDN:46071: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED @@ -192,9 +197,6 @@ DREF VLR subscr MSISDN:46071 usage decreases to: 1 DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated - dtap_tx_confirmed == 1 - bssap_clear_sent == 1 -- all requests serviced, conn has been released llist_count(&net->subscr_conns) == 0 --- - an SMS is sent, MS is paged @@ -287,6 +289,10 @@ DREF VLR subscr MSISDN:46071 usage increases to: 3 DREF VLR subscr MSISDN:46071 usage decreases to: 2 - BSSAP Clear --RAN_GERAN_A--> MS + dtap_tx_confirmed == 1 + bssap_clear_sent == 1 +- SMS is done, conn is gone +- BSS sends BSSMAP Clear Complete DREF MSISDN:46071: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED @@ -299,9 +305,6 @@ DREF VLR subscr MSISDN:46071 usage decreases to: 1 DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated - dtap_tx_confirmed == 1 - bssap_clear_sent == 1 -- SMS is done, conn is gone llist_count(&net->subscr_conns) == 0 --- - subscriber detaches @@ -321,15 +324,16 @@ DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASING DREF unknown: MSC conn use + release == 2 (0x101) - BSSAP Clear --RAN_GERAN_A--> MS -DREF unknown: MSC conn use - release == 1 (0x1) -DREF unknown: MSC conn use - compl_l3 == 0 (0x0) +DREF unknown: MSC conn use - compl_l3 == 1 (0x100) + bssap_clear_sent == 1 +- BSS sends BSSMAP Clear Complete +DREF unknown: MSC conn use - release == 0 (0x0) DMM Subscr_Conn{SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn{SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DRLL Freeing subscriber connection with NULL subscriber DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Deallocated - bssap_clear_sent == 1 llist_count(&net->subscr_conns) == 0 ===== test_no_authen: SUCCESS @@ -469,8 +473,11 @@ DREF VLR subscr MSISDN:46071 usage increases to: 3 DREF VLR subscr MSISDN:46071 usage decreases to: 2 - BSSAP Clear --RAN_GERAN_A--> MS -DREF MSISDN:46071: MSC conn use - release == 1 (0x2) -DREF MSISDN:46071: MSC conn use - dtap == 0 (0x0) +DREF MSISDN:46071: MSC conn use - dtap == 1 (0x100) + bssap_clear_sent == 1 +- LU was successful, and the conn has already been closed +- BSS sends BSSMAP Clear Complete +DREF MSISDN:46071: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) @@ -483,8 +490,6 @@ DREF VLR subscr MSISDN:46071 usage decreases to: 1 DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated - bssap_clear_sent == 1 -- LU was successful, and the conn has already been closed llist_count(&net->subscr_conns) == 0 - Subscriber has the new TMSI DREF VLR subscr MSISDN:46071 usage increases to: 2 @@ -551,6 +556,9 @@ DREF VLR subscr MSISDN:46071 usage increases to: 3 DREF VLR subscr MSISDN:46071 usage decreases to: 2 - BSSAP Clear --RAN_GERAN_A--> MS + bssap_clear_sent == 1 +- all requests serviced, conn has been released +- BSS sends BSSMAP Clear Complete DREF MSISDN:46071: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(50462976){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(50462976){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED @@ -563,8 +571,6 @@ DREF VLR subscr MSISDN:46071 usage decreases to: 1 DMM Subscr_Conn(50462976){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(50462976){SUBSCR_CONN_S_RELEASED}: Deallocated - bssap_clear_sent == 1 -- all requests serviced, conn has been released llist_count(&net->subscr_conns) == 0 --- - an SMS is sent, MS is paged using above TMSI @@ -657,6 +663,10 @@ DREF VLR subscr MSISDN:46071 usage increases to: 3 DREF VLR subscr MSISDN:46071 usage decreases to: 2 - BSSAP Clear --RAN_GERAN_A--> MS + dtap_tx_confirmed == 1 + bssap_clear_sent == 1 +- SMS is done, conn is gone +- BSS sends BSSMAP Clear Complete DREF MSISDN:46071: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(50462976){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(50462976){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED @@ -669,9 +679,6 @@ DREF VLR subscr MSISDN:46071 usage decreases to: 1 DMM Subscr_Conn(50462976){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(50462976){SUBSCR_CONN_S_RELEASED}: Deallocated - dtap_tx_confirmed == 1 - bssap_clear_sent == 1 -- SMS is done, conn is gone llist_count(&net->subscr_conns) == 0 --- - subscriber sends LU Request, this time with the TMSI @@ -804,8 +811,11 @@ DREF VLR subscr MSISDN:46071 usage increases to: 3 DREF VLR subscr MSISDN:46071 usage decreases to: 2 - BSSAP Clear --RAN_GERAN_A--> MS -DREF MSISDN:46071: MSC conn use - release == 1 (0x2) -DREF MSISDN:46071: MSC conn use - dtap == 0 (0x0) +DREF MSISDN:46071: MSC conn use - dtap == 1 (0x100) + bssap_clear_sent == 1 +- LU was successful, and the conn has already been closed +- BSS sends BSSMAP Clear Complete +DREF MSISDN:46071: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(50462976){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(50462976){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn(50462976){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) @@ -818,8 +828,6 @@ DREF VLR subscr MSISDN:46071 usage decreases to: 1 DMM Subscr_Conn(50462976){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(50462976){SUBSCR_CONN_S_RELEASED}: Deallocated - bssap_clear_sent == 1 -- LU was successful, and the conn has already been closed llist_count(&net->subscr_conns) == 0 - subscriber has the new TMSI DREF VLR subscr MSISDN:46071 usage increases to: 2 @@ -846,15 +854,16 @@ DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASING DREF unknown: MSC conn use + release == 2 (0x101) - BSSAP Clear --RAN_GERAN_A--> MS -DREF unknown: MSC conn use - release == 1 (0x1) -DREF unknown: MSC conn use - compl_l3 == 0 (0x0) +DREF unknown: MSC conn use - compl_l3 == 1 (0x100) + bssap_clear_sent == 1 +- BSS sends BSSMAP Clear Complete +DREF unknown: MSC conn use - release == 0 (0x0) DMM Subscr_Conn{SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn{SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DRLL Freeing subscriber connection with NULL subscriber DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Deallocated - bssap_clear_sent == 1 llist_count(&net->subscr_conns) == 0 ===== test_no_authen_tmsi: SUCCESS @@ -992,8 +1001,12 @@ DREF VLR subscr MSISDN:46071 usage increases to: 3 DREF VLR subscr MSISDN:46071 usage decreases to: 2 - BSSAP Clear --RAN_GERAN_A--> MS -DREF MSISDN:46071: MSC conn use - release == 1 (0x2) -DREF MSISDN:46071: MSC conn use - dtap == 0 (0x0) +DREF MSISDN:46071: MSC conn use - dtap == 1 (0x100) + bssap_clear_sent == 1 +- LU was successful, and the conn has already been closed + lu_result_sent == 1 +- BSS sends BSSMAP Clear Complete +DREF MSISDN:46071: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) @@ -1006,9 +1019,6 @@ DREF VLR subscr MSISDN:46071 usage decreases to: 1 DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated - bssap_clear_sent == 1 -- LU was successful, and the conn has already been closed - lu_result_sent == 1 llist_count(&net->subscr_conns) == 0 - Subscriber has the IMEI DREF VLR subscr MSISDN:46071 usage increases to: 2 @@ -1032,15 +1042,16 @@ DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASING DREF unknown: MSC conn use + release == 2 (0x101) - BSSAP Clear --RAN_GERAN_A--> MS -DREF unknown: MSC conn use - release == 1 (0x1) -DREF unknown: MSC conn use - compl_l3 == 0 (0x0) +DREF unknown: MSC conn use - compl_l3 == 1 (0x100) + bssap_clear_sent == 1 +- BSS sends BSSMAP Clear Complete +DREF unknown: MSC conn use - release == 0 (0x0) DMM Subscr_Conn{SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn{SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DRLL Freeing subscriber connection with NULL subscriber DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Deallocated - bssap_clear_sent == 1 llist_count(&net->subscr_conns) == 0 ===== test_no_authen_imei: SUCCESS @@ -1203,8 +1214,12 @@ DREF VLR subscr MSISDN:46071 usage increases to: 3 DREF VLR subscr MSISDN:46071 usage decreases to: 2 - BSSAP Clear --RAN_GERAN_A--> MS -DREF MSISDN:46071: MSC conn use - release == 1 (0x2) -DREF MSISDN:46071: MSC conn use - dtap == 0 (0x0) +DREF MSISDN:46071: MSC conn use - dtap == 1 (0x100) + bssap_clear_sent == 1 +- LU was successful, and the conn has already been closed + lu_result_sent == 1 +- BSS sends BSSMAP Clear Complete +DREF MSISDN:46071: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) @@ -1217,9 +1232,6 @@ DREF VLR subscr MSISDN:46071 usage decreases to: 1 DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated - bssap_clear_sent == 1 -- LU was successful, and the conn has already been closed - lu_result_sent == 1 llist_count(&net->subscr_conns) == 0 - Subscriber has the IMEI and TMSI DREF VLR subscr MSISDN:46071 usage increases to: 2 @@ -1244,15 +1256,16 @@ DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASING DREF unknown: MSC conn use + release == 2 (0x101) - BSSAP Clear --RAN_GERAN_A--> MS -DREF unknown: MSC conn use - release == 1 (0x1) -DREF unknown: MSC conn use - compl_l3 == 0 (0x0) +DREF unknown: MSC conn use - compl_l3 == 1 (0x100) + bssap_clear_sent == 1 +- BSS sends BSSMAP Clear Complete +DREF unknown: MSC conn use - release == 0 (0x0) DMM Subscr_Conn{SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn{SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DRLL Freeing subscriber connection with NULL subscriber DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Deallocated - bssap_clear_sent == 1 llist_count(&net->subscr_conns) == 0 ===== test_no_authen_tmsi_imei: SUCCESS @@ -1379,6 +1392,12 @@ DREF VLR subscr MSISDN:46071 usage increases to: 4 DREF VLR subscr MSISDN:46071 usage decreases to: 3 - BSSAP Clear --RAN_GERAN_A--> MS +DREF VLR subscr MSISDN:46071 usage decreases to: 2 +<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0 +- LU was successful, and the conn has already been closed + lu_result_sent == 1 + bssap_clear_sent == 1 +- BSS sends BSSMAP Clear Complete DREF MSISDN:46071: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED @@ -1389,14 +1408,9 @@ DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Freeing instance DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Deallocated DRLL MSISDN:46071: Freeing subscriber connection -DREF VLR subscr MSISDN:46071 usage decreases to: 2 +DREF VLR subscr MSISDN:46071 usage decreases to: 1 DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated -DREF VLR subscr MSISDN:46071 usage decreases to: 1 -<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0 -- LU was successful, and the conn has already been closed - lu_result_sent == 1 - bssap_clear_sent == 1 llist_count(&net->subscr_conns) == 0 --- - subscriber detaches @@ -1416,15 +1430,16 @@ DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASING DREF unknown: MSC conn use + release == 2 (0x101) - BSSAP Clear --RAN_GERAN_A--> MS -DREF unknown: MSC conn use - release == 1 (0x1) -DREF unknown: MSC conn use - compl_l3 == 0 (0x0) +DREF unknown: MSC conn use - compl_l3 == 1 (0x100) + bssap_clear_sent == 1 +- BSS sends BSSMAP Clear Complete +DREF unknown: MSC conn use - release == 0 (0x0) DMM Subscr_Conn{SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn{SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DRLL Freeing subscriber connection with NULL subscriber DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Deallocated - bssap_clear_sent == 1 llist_count(&net->subscr_conns) == 0 ===== test_no_authen_imeisv: SUCCESS @@ -1580,8 +1595,12 @@ DREF VLR subscr MSISDN:46071 usage increases to: 3 DREF VLR subscr MSISDN:46071 usage decreases to: 2 - BSSAP Clear --RAN_GERAN_A--> MS -DREF MSISDN:46071: MSC conn use - release == 1 (0x2) -DREF MSISDN:46071: MSC conn use - dtap == 0 (0x0) +DREF MSISDN:46071: MSC conn use - dtap == 1 (0x100) + bssap_clear_sent == 1 +- LU was successful, and the conn has already been closed + lu_result_sent == 1 +- BSS sends BSSMAP Clear Complete +DREF MSISDN:46071: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) @@ -1594,9 +1613,6 @@ DREF VLR subscr MSISDN:46071 usage decreases to: 1 DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated - bssap_clear_sent == 1 -- LU was successful, and the conn has already been closed - lu_result_sent == 1 llist_count(&net->subscr_conns) == 0 - Subscriber has the IMEI DREF VLR subscr MSISDN:46071 usage increases to: 2 @@ -1620,15 +1636,16 @@ DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASING DREF unknown: MSC conn use + release == 2 (0x101) - BSSAP Clear --RAN_GERAN_A--> MS -DREF unknown: MSC conn use - release == 1 (0x1) -DREF unknown: MSC conn use - compl_l3 == 0 (0x0) +DREF unknown: MSC conn use - compl_l3 == 1 (0x100) + bssap_clear_sent == 1 +- BSS sends BSSMAP Clear Complete +DREF unknown: MSC conn use - release == 0 (0x0) DMM Subscr_Conn{SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn{SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DRLL Freeing subscriber connection with NULL subscriber DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Deallocated - bssap_clear_sent == 1 llist_count(&net->subscr_conns) == 0 ===== test_no_authen_imeisv_imei: SUCCESS @@ -1786,8 +1803,11 @@ DREF VLR subscr MSISDN:46071 usage increases to: 3 DREF VLR subscr MSISDN:46071 usage decreases to: 2 - BSSAP Clear --RAN_GERAN_A--> MS -DREF MSISDN:46071: MSC conn use - release == 1 (0x2) -DREF MSISDN:46071: MSC conn use - dtap == 0 (0x0) +DREF MSISDN:46071: MSC conn use - dtap == 1 (0x100) + bssap_clear_sent == 1 +- LU was successful, and the conn has already been closed +- BSS sends BSSMAP Clear Complete +DREF MSISDN:46071: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) @@ -1800,8 +1820,6 @@ DREF VLR subscr MSISDN:46071 usage decreases to: 1 DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated - bssap_clear_sent == 1 -- LU was successful, and the conn has already been closed llist_count(&net->subscr_conns) == 0 --- - subscriber sends LU Request, this time with the TMSI @@ -1952,8 +1970,11 @@ DREF VLR subscr MSISDN:46071 usage increases to: 3 DREF VLR subscr MSISDN:46071 usage decreases to: 2 - BSSAP Clear --RAN_GERAN_A--> MS -DREF MSISDN:46071: MSC conn use - release == 1 (0x2) -DREF MSISDN:46071: MSC conn use - dtap == 0 (0x0) +DREF MSISDN:46071: MSC conn use - dtap == 1 (0x100) + bssap_clear_sent == 1 +- LU was successful, and the conn has already been closed +- BSS sends BSSMAP Clear Complete +DREF MSISDN:46071: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) @@ -1966,8 +1987,6 @@ DREF VLR subscr MSISDN:46071 usage decreases to: 1 DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated - bssap_clear_sent == 1 -- LU was successful, and the conn has already been closed llist_count(&net->subscr_conns) == 0 - subscriber has the new TMSI DREF VLR subscr MSISDN:46071 usage increases to: 2 @@ -1994,15 +2013,16 @@ DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASING DREF unknown: MSC conn use + release == 2 (0x101) - BSSAP Clear --RAN_GERAN_A--> MS -DREF unknown: MSC conn use - release == 1 (0x1) -DREF unknown: MSC conn use - compl_l3 == 0 (0x0) +DREF unknown: MSC conn use - compl_l3 == 1 (0x100) + bssap_clear_sent == 1 +- BSS sends BSSMAP Clear Complete +DREF unknown: MSC conn use - release == 0 (0x0) DMM Subscr_Conn{SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn{SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DRLL Freeing subscriber connection with NULL subscriber DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Deallocated - bssap_clear_sent == 1 llist_count(&net->subscr_conns) == 0 ===== test_no_authen_imeisv_tmsi: SUCCESS @@ -2183,8 +2203,12 @@ DREF VLR subscr MSISDN:46071 usage increases to: 3 DREF VLR subscr MSISDN:46071 usage decreases to: 2 - BSSAP Clear --RAN_GERAN_A--> MS -DREF MSISDN:46071: MSC conn use - release == 1 (0x2) -DREF MSISDN:46071: MSC conn use - dtap == 0 (0x0) +DREF MSISDN:46071: MSC conn use - dtap == 1 (0x100) + bssap_clear_sent == 1 +- LU was successful, and the conn has already been closed + lu_result_sent == 1 +- BSS sends BSSMAP Clear Complete +DREF MSISDN:46071: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) @@ -2197,9 +2221,6 @@ DREF VLR subscr MSISDN:46071 usage decreases to: 1 DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated - bssap_clear_sent == 1 -- LU was successful, and the conn has already been closed - lu_result_sent == 1 llist_count(&net->subscr_conns) == 0 - Subscriber has the IMEISV, IMEI and TMSI DREF VLR subscr MSISDN:46071 usage increases to: 2 @@ -2225,15 +2246,16 @@ DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASING DREF unknown: MSC conn use + release == 2 (0x101) - BSSAP Clear --RAN_GERAN_A--> MS -DREF unknown: MSC conn use - release == 1 (0x1) -DREF unknown: MSC conn use - compl_l3 == 0 (0x0) +DREF unknown: MSC conn use - compl_l3 == 1 (0x100) + bssap_clear_sent == 1 +- BSS sends BSSMAP Clear Complete +DREF unknown: MSC conn use - release == 0 (0x0) DMM Subscr_Conn{SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn{SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DRLL Freeing subscriber connection with NULL subscriber DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Deallocated - bssap_clear_sent == 1 llist_count(&net->subscr_conns) == 0 ===== test_no_authen_imeisv_tmsi_imei: SUCCESS diff --git a/tests/msc_vlr/msc_vlr_test_reject_concurrency.c b/tests/msc_vlr/msc_vlr_test_reject_concurrency.c index ceab109..cf9d8c9 100644 --- a/tests/msc_vlr/msc_vlr_test_reject_concurrency.c +++ b/tests/msc_vlr/msc_vlr_test_reject_concurrency.c @@ -43,6 +43,7 @@ ms_sends_msg("050802008168000130089910070000006402"); VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); VERBOSE_ASSERT(lu_result_sent, == RES_REJECT, "%d"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(1); @@ -61,6 +62,7 @@ btw("LU was successful, and the conn has already been closed"); VERBOSE_ASSERT(lu_result_sent, == RES_ACCEPT, "%d"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); clear_vlr(); @@ -93,6 +95,7 @@ btw("LU was successful, and the conn has already been closed"); VERBOSE_ASSERT(lu_result_sent, == RES_ACCEPT, "%d"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); } @@ -182,8 +185,10 @@ expect_bssap_clear(); ms_sends_msg("890106020041020000"); VERBOSE_ASSERT(dtap_tx_confirmed, == true, "%d"); - if (expect_clear) + if (expect_clear) { VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); + bss_sends_clear_complete(); + } btw("SMS is done"); EXPECT_CONN_COUNT(expect_conn_count); @@ -265,6 +270,7 @@ expect_bssap_clear(); ms_sends_msg("050130089910070000006402"); VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); clear_vlr(); @@ -288,6 +294,7 @@ expect_bssap_clear(); ms_sends_msg("050130089910070000006402"); VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); clear_vlr(); @@ -313,6 +320,7 @@ VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); btw("all requests serviced, conn has been released"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); clear_vlr(); @@ -377,6 +385,7 @@ expect_bssap_clear(); ms_sends_msg("050130089910070000006402"); VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); clear_vlr(); diff --git a/tests/msc_vlr/msc_vlr_test_reject_concurrency.err b/tests/msc_vlr/msc_vlr_test_reject_concurrency.err index 7dca53f..0d9ef5b 100644 --- a/tests/msc_vlr/msc_vlr_test_reject_concurrency.err +++ b/tests/msc_vlr/msc_vlr_test_reject_concurrency.err @@ -59,10 +59,13 @@ DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASING DREF unknown: MSC conn use + release == 2 (0x101) - BSSAP Clear --RAN_GERAN_A--> MS -DREF unknown: MSC conn use - release == 1 (0x1) DREF VLR subscr IMSI:901700000004620 usage decreases to: 1 DRR 901700000004620: internal error during Location Updating attempt -DREF unknown: MSC conn use - compl_l3 == 0 (0x0) +DREF unknown: MSC conn use - compl_l3 == 1 (0x100) + bssap_clear_sent == 1 + lu_result_sent == 2 +- BSS sends BSSMAP Clear Complete +DREF unknown: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) @@ -74,8 +77,6 @@ DRLL Freeing subscriber connection with NULL subscriber DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated - bssap_clear_sent == 1 - lu_result_sent == 2 llist_count(&net->subscr_conns) == 1 --- - The first connection can still complete its LU @@ -133,6 +134,12 @@ DREF VLR subscr MSISDN:46071 usage increases to: 4 DREF VLR subscr MSISDN:46071 usage decreases to: 3 - BSSAP Clear --RAN_GERAN_A--> MS +DREF VLR subscr MSISDN:46071 usage decreases to: 2 +<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0 + bssap_clear_sent == 1 +- LU was successful, and the conn has already been closed + lu_result_sent == 1 +- BSS sends BSSMAP Clear Complete DREF MSISDN:46071: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED @@ -143,14 +150,9 @@ DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Freeing instance DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Deallocated DRLL MSISDN:46071: Freeing subscriber connection -DREF VLR subscr MSISDN:46071 usage decreases to: 2 +DREF VLR subscr MSISDN:46071 usage decreases to: 1 DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated -DREF VLR subscr MSISDN:46071 usage decreases to: 1 -<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0 - bssap_clear_sent == 1 -- LU was successful, and the conn has already been closed - lu_result_sent == 1 llist_count(&net->subscr_conns) == 0 DREF freeing VLR subscr MSISDN:46071 ===== test_reject_2nd_conn: SUCCESS @@ -262,6 +264,12 @@ DREF VLR subscr MSISDN:46071 usage increases to: 4 DREF VLR subscr MSISDN:46071 usage decreases to: 3 - BSSAP Clear --RAN_GERAN_A--> MS +DREF VLR subscr MSISDN:46071 usage decreases to: 2 +<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0 + bssap_clear_sent == 1 +- LU was successful, and the conn has already been closed + lu_result_sent == 1 +- BSS sends BSSMAP Clear Complete DREF MSISDN:46071: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED @@ -272,14 +280,9 @@ DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Freeing instance DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Deallocated DRLL MSISDN:46071: Freeing subscriber connection -DREF VLR subscr MSISDN:46071 usage decreases to: 2 +DREF VLR subscr MSISDN:46071 usage decreases to: 1 DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated -DREF VLR subscr MSISDN:46071 usage decreases to: 1 -<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0 - bssap_clear_sent == 1 -- LU was successful, and the conn has already been closed - lu_result_sent == 1 llist_count(&net->subscr_conns) == 0 DREF freeing VLR subscr MSISDN:46071 ===== test_reject_lu_during_lu: SUCCESS @@ -398,6 +401,12 @@ DREF VLR subscr MSISDN:46071 usage increases to: 4 DREF VLR subscr MSISDN:46071 usage decreases to: 3 - BSSAP Clear --RAN_GERAN_A--> MS +DREF VLR subscr MSISDN:46071 usage decreases to: 2 +<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0 + bssap_clear_sent == 1 +- LU was successful, and the conn has already been closed + lu_result_sent == 1 +- BSS sends BSSMAP Clear Complete DREF MSISDN:46071: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED @@ -408,14 +417,9 @@ DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Freeing instance DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Deallocated DRLL MSISDN:46071: Freeing subscriber connection -DREF VLR subscr MSISDN:46071 usage decreases to: 2 +DREF VLR subscr MSISDN:46071 usage decreases to: 1 DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated -DREF VLR subscr MSISDN:46071 usage decreases to: 1 -<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0 - bssap_clear_sent == 1 -- LU was successful, and the conn has already been closed - lu_result_sent == 1 llist_count(&net->subscr_conns) == 0 DREF freeing VLR subscr MSISDN:46071 ===== test_reject_cm_during_lu: SUCCESS @@ -527,6 +531,12 @@ DREF VLR subscr MSISDN:46071 usage increases to: 4 DREF VLR subscr MSISDN:46071 usage decreases to: 3 - BSSAP Clear --RAN_GERAN_A--> MS +DREF VLR subscr MSISDN:46071 usage decreases to: 2 +<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0 + bssap_clear_sent == 1 +- LU was successful, and the conn has already been closed + lu_result_sent == 1 +- BSS sends BSSMAP Clear Complete DREF MSISDN:46071: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED @@ -537,14 +547,9 @@ DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Freeing instance DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Deallocated DRLL MSISDN:46071: Freeing subscriber connection -DREF VLR subscr MSISDN:46071 usage decreases to: 2 +DREF VLR subscr MSISDN:46071 usage decreases to: 1 DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated -DREF VLR subscr MSISDN:46071 usage decreases to: 1 -<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0 - bssap_clear_sent == 1 -- LU was successful, and the conn has already been closed - lu_result_sent == 1 llist_count(&net->subscr_conns) == 0 DREF freeing VLR subscr MSISDN:46071 ===== test_reject_paging_resp_during_lu: SUCCESS @@ -645,6 +650,12 @@ DREF VLR subscr MSISDN:46071 usage increases to: 4 DREF VLR subscr MSISDN:46071 usage decreases to: 3 - BSSAP Clear --RAN_GERAN_A--> MS +DREF VLR subscr MSISDN:46071 usage decreases to: 2 +<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0 + bssap_clear_sent == 1 +- LU was successful, and the conn has already been closed + lu_result_sent == 1 +- BSS sends BSSMAP Clear Complete DREF MSISDN:46071: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED @@ -655,14 +666,9 @@ DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Freeing instance DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Deallocated DRLL MSISDN:46071: Freeing subscriber connection -DREF VLR subscr MSISDN:46071 usage decreases to: 2 +DREF VLR subscr MSISDN:46071 usage decreases to: 1 DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated -DREF VLR subscr MSISDN:46071 usage decreases to: 1 -<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0 - bssap_clear_sent == 1 -- LU was successful, and the conn has already been closed - lu_result_sent == 1 llist_count(&net->subscr_conns) == 0 --- - Subscriber does a normal CM Service Request @@ -727,11 +733,13 @@ DREF VLR subscr MSISDN:46071 usage increases to: 4 DREF VLR subscr MSISDN:46071 usage decreases to: 3 - BSSAP Clear --RAN_GERAN_A--> MS -DREF MSISDN:46071: MSC conn use - release == 1 (0x2) DREF VLR subscr MSISDN:46071 usage decreases to: 2 DREF VLR subscr MSISDN:46071 usage decreases to: 1 -DMM msc_subscr_conn_close(vsub=MSISDN:46071, cause=0): already in release, ignore. -DREF MSISDN:46071: MSC conn use - dtap == 0 (0x0) +DMM conn_close(vsub=MSISDN:46071, cause=0): already in release, ignore. +DREF MSISDN:46071: MSC conn use - dtap == 1 (0x100) + bssap_clear_sent == 1 +- BSS sends BSSMAP Clear Complete +DREF MSISDN:46071: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) @@ -740,7 +748,6 @@ DREF freeing VLR subscr MSISDN:46071 DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated - bssap_clear_sent == 1 llist_count(&net->subscr_conns) == 0 ===== test_reject_lu_during_cm: SUCCESS @@ -840,6 +847,12 @@ DREF VLR subscr MSISDN:46071 usage increases to: 4 DREF VLR subscr MSISDN:46071 usage decreases to: 3 - BSSAP Clear --RAN_GERAN_A--> MS +DREF VLR subscr MSISDN:46071 usage decreases to: 2 +<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0 + bssap_clear_sent == 1 +- LU was successful, and the conn has already been closed + lu_result_sent == 1 +- BSS sends BSSMAP Clear Complete DREF MSISDN:46071: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED @@ -850,14 +863,9 @@ DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Freeing instance DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Deallocated DRLL MSISDN:46071: Freeing subscriber connection -DREF VLR subscr MSISDN:46071 usage decreases to: 2 +DREF VLR subscr MSISDN:46071 usage decreases to: 1 DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated -DREF VLR subscr MSISDN:46071 usage decreases to: 1 -<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0 - bssap_clear_sent == 1 -- LU was successful, and the conn has already been closed - lu_result_sent == 1 llist_count(&net->subscr_conns) == 0 --- - Subscriber does a normal CM Service Request @@ -925,11 +933,13 @@ DREF VLR subscr MSISDN:46071 usage increases to: 4 DREF VLR subscr MSISDN:46071 usage decreases to: 3 - BSSAP Clear --RAN_GERAN_A--> MS -DREF MSISDN:46071: MSC conn use - release == 1 (0x2) DREF VLR subscr MSISDN:46071 usage decreases to: 2 DREF VLR subscr MSISDN:46071 usage decreases to: 1 -DMM msc_subscr_conn_close(vsub=MSISDN:46071, cause=0): already in release, ignore. -DREF MSISDN:46071: MSC conn use - dtap == 0 (0x0) +DMM conn_close(vsub=MSISDN:46071, cause=0): already in release, ignore. +DREF MSISDN:46071: MSC conn use - dtap == 1 (0x100) + bssap_clear_sent == 1 +- BSS sends BSSMAP Clear Complete +DREF MSISDN:46071: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) @@ -938,7 +948,6 @@ DREF freeing VLR subscr MSISDN:46071 DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated - bssap_clear_sent == 1 llist_count(&net->subscr_conns) == 0 ===== test_reject_cm_during_cm: SUCCESS @@ -1038,6 +1047,12 @@ DREF VLR subscr MSISDN:46071 usage increases to: 4 DREF VLR subscr MSISDN:46071 usage decreases to: 3 - BSSAP Clear --RAN_GERAN_A--> MS +DREF VLR subscr MSISDN:46071 usage decreases to: 2 +<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0 + bssap_clear_sent == 1 +- LU was successful, and the conn has already been closed + lu_result_sent == 1 +- BSS sends BSSMAP Clear Complete DREF MSISDN:46071: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED @@ -1048,14 +1063,9 @@ DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Freeing instance DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Deallocated DRLL MSISDN:46071: Freeing subscriber connection -DREF VLR subscr MSISDN:46071 usage decreases to: 2 +DREF VLR subscr MSISDN:46071 usage decreases to: 1 DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated -DREF VLR subscr MSISDN:46071 usage decreases to: 1 -<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0 - bssap_clear_sent == 1 -- LU was successful, and the conn has already been closed - lu_result_sent == 1 llist_count(&net->subscr_conns) == 0 --- - Subscriber does a normal CM Service Request @@ -1125,6 +1135,9 @@ DREF VLR subscr MSISDN:46071 usage increases to: 3 DREF VLR subscr MSISDN:46071 usage decreases to: 2 - BSSAP Clear --RAN_GERAN_A--> MS + bssap_clear_sent == 1 +- all requests serviced, conn has been released +- BSS sends BSSMAP Clear Complete DREF MSISDN:46071: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED @@ -1137,8 +1150,6 @@ DREF VLR subscr MSISDN:46071 usage decreases to: 1 DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated - bssap_clear_sent == 1 -- all requests serviced, conn has been released llist_count(&net->subscr_conns) == 0 DREF freeing VLR subscr MSISDN:46071 ===== test_reject_paging_resp_during_cm: SUCCESS @@ -1239,6 +1250,12 @@ DREF VLR subscr MSISDN:46071 usage increases to: 4 DREF VLR subscr MSISDN:46071 usage decreases to: 3 - BSSAP Clear --RAN_GERAN_A--> MS +DREF VLR subscr MSISDN:46071 usage decreases to: 2 +<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0 + bssap_clear_sent == 1 +- LU was successful, and the conn has already been closed + lu_result_sent == 1 +- BSS sends BSSMAP Clear Complete DREF MSISDN:46071: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED @@ -1249,14 +1266,9 @@ DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Freeing instance DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Deallocated DRLL MSISDN:46071: Freeing subscriber connection -DREF VLR subscr MSISDN:46071 usage decreases to: 2 +DREF VLR subscr MSISDN:46071 usage decreases to: 1 DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated -DREF VLR subscr MSISDN:46071 usage decreases to: 1 -<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0 - bssap_clear_sent == 1 -- LU was successful, and the conn has already been closed - lu_result_sent == 1 llist_count(&net->subscr_conns) == 0 --- - an SMS is sent, MS is paged @@ -1350,6 +1362,9 @@ DREF VLR subscr MSISDN:46071 usage increases to: 3 DREF VLR subscr MSISDN:46071 usage decreases to: 2 - BSSAP Clear --RAN_GERAN_A--> MS + dtap_tx_confirmed == 1 + bssap_clear_sent == 1 +- BSS sends BSSMAP Clear Complete DREF MSISDN:46071: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED @@ -1362,8 +1377,6 @@ DREF VLR subscr MSISDN:46071 usage decreases to: 1 DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated - dtap_tx_confirmed == 1 - bssap_clear_sent == 1 - SMS is done llist_count(&net->subscr_conns) == 0 DREF freeing VLR subscr MSISDN:46071 @@ -1465,6 +1478,12 @@ DREF VLR subscr MSISDN:46071 usage increases to: 4 DREF VLR subscr MSISDN:46071 usage decreases to: 3 - BSSAP Clear --RAN_GERAN_A--> MS +DREF VLR subscr MSISDN:46071 usage decreases to: 2 +<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0 + bssap_clear_sent == 1 +- LU was successful, and the conn has already been closed + lu_result_sent == 1 +- BSS sends BSSMAP Clear Complete DREF MSISDN:46071: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED @@ -1475,14 +1494,9 @@ DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Freeing instance DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Deallocated DRLL MSISDN:46071: Freeing subscriber connection -DREF VLR subscr MSISDN:46071 usage decreases to: 2 +DREF VLR subscr MSISDN:46071 usage decreases to: 1 DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated -DREF VLR subscr MSISDN:46071 usage decreases to: 1 -<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0 - bssap_clear_sent == 1 -- LU was successful, and the conn has already been closed - lu_result_sent == 1 llist_count(&net->subscr_conns) == 0 --- - an SMS is sent, MS is paged @@ -1597,11 +1611,13 @@ DREF VLR subscr MSISDN:46071 usage increases to: 4 DREF VLR subscr MSISDN:46071 usage decreases to: 3 - BSSAP Clear --RAN_GERAN_A--> MS -DREF MSISDN:46071: MSC conn use - release == 1 (0x2) DREF VLR subscr MSISDN:46071 usage decreases to: 2 DREF VLR subscr MSISDN:46071 usage decreases to: 1 -DMM msc_subscr_conn_close(vsub=MSISDN:46071, cause=0): already in release, ignore. -DREF MSISDN:46071: MSC conn use - dtap == 0 (0x0) +DMM conn_close(vsub=MSISDN:46071, cause=0): already in release, ignore. +DREF MSISDN:46071: MSC conn use - dtap == 1 (0x100) + bssap_clear_sent == 1 +- BSS sends BSSMAP Clear Complete +DREF MSISDN:46071: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) @@ -1610,7 +1626,6 @@ DREF freeing VLR subscr MSISDN:46071 DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated - bssap_clear_sent == 1 llist_count(&net->subscr_conns) == 0 ===== test_accept_cm_during_paging_resp: SUCCESS @@ -1710,6 +1725,12 @@ DREF VLR subscr MSISDN:46071 usage increases to: 4 DREF VLR subscr MSISDN:46071 usage decreases to: 3 - BSSAP Clear --RAN_GERAN_A--> MS +DREF VLR subscr MSISDN:46071 usage decreases to: 2 +<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0 + bssap_clear_sent == 1 +- LU was successful, and the conn has already been closed + lu_result_sent == 1 +- BSS sends BSSMAP Clear Complete DREF MSISDN:46071: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED @@ -1720,14 +1741,9 @@ DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Freeing instance DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Deallocated DRLL MSISDN:46071: Freeing subscriber connection -DREF VLR subscr MSISDN:46071 usage decreases to: 2 +DREF VLR subscr MSISDN:46071 usage decreases to: 1 DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated -DREF VLR subscr MSISDN:46071 usage decreases to: 1 -<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0 - bssap_clear_sent == 1 -- LU was successful, and the conn has already been closed - lu_result_sent == 1 llist_count(&net->subscr_conns) == 0 --- - an SMS is sent, MS is paged @@ -1819,6 +1835,9 @@ DREF VLR subscr MSISDN:46071 usage increases to: 3 DREF VLR subscr MSISDN:46071 usage decreases to: 2 - BSSAP Clear --RAN_GERAN_A--> MS + dtap_tx_confirmed == 1 + bssap_clear_sent == 1 +- BSS sends BSSMAP Clear Complete DREF MSISDN:46071: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED @@ -1831,8 +1850,6 @@ DREF VLR subscr MSISDN:46071 usage decreases to: 1 DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated - dtap_tx_confirmed == 1 - bssap_clear_sent == 1 - SMS is done llist_count(&net->subscr_conns) == 0 DREF freeing VLR subscr MSISDN:46071 diff --git a/tests/msc_vlr/msc_vlr_test_rest.c b/tests/msc_vlr/msc_vlr_test_rest.c index 0233047..aef1df5 100644 --- a/tests/msc_vlr/msc_vlr_test_rest.c +++ b/tests/msc_vlr/msc_vlr_test_rest.c @@ -55,6 +55,7 @@ expect_bssap_clear(); osmo_fsm_inst_dispatch(g_conn->fi, SUBSCR_CONN_E_CN_CLOSE, NULL); VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); clear_vlr(); @@ -71,6 +72,7 @@ VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); btw("conn was released"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); clear_vlr(); @@ -107,6 +109,7 @@ btw("LU was successful, and the conn has already been closed"); VERBOSE_ASSERT(lu_result_sent, == RES_ACCEPT, "%d"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); @@ -137,6 +140,7 @@ btw("LU was successful, and the conn has already been closed"); VERBOSE_ASSERT(lu_result_sent, == RES_ACCEPT, "%d"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); BTW("subscriber detaches"); @@ -144,6 +148,7 @@ ms_sends_msg("050130089910070000006402"); VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); clear_vlr(); comment_end(); @@ -185,6 +190,7 @@ btw("LU was successful, and the conn has already been closed"); VERBOSE_ASSERT(lu_result_sent, == RES_ACCEPT, "%d"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); clear_vlr(); comment_end(); diff --git a/tests/msc_vlr/msc_vlr_test_rest.err b/tests/msc_vlr/msc_vlr_test_rest.err index 2f09760..683e914 100644 --- a/tests/msc_vlr/msc_vlr_test_rest.err +++ b/tests/msc_vlr/msc_vlr_test_rest.err @@ -31,6 +31,8 @@ DREF VLR subscr unknown usage increases to: 2 DREF VLR subscr unknown usage decreases to: 1 - BSSAP Clear --RAN_GERAN_A--> MS + bssap_clear_sent == 1 +- BSS sends BSSMAP Clear Complete DREF unknown: MSC conn use - release == 0 (0x0) DMM Subscr_Conn{SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn{SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED @@ -42,7 +44,6 @@ DREF freeing VLR subscr unknown DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Deallocated - bssap_clear_sent == 1 llist_count(&net->subscr_conns) == 0 ===== test_early_stage: SUCCESS @@ -70,10 +71,13 @@ DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASING DREF unknown: MSC conn use + release == 2 (0x101) - BSSAP Clear --RAN_GERAN_A--> MS -DREF unknown: MSC conn use - release == 1 (0x1) DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_COMPLETE_LAYER_3 DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: Event SUBSCR_CONN_E_COMPLETE_LAYER_3 not permitted -DREF unknown: MSC conn use - compl_l3 == 0 (0x0) +DREF unknown: MSC conn use - compl_l3 == 1 (0x100) + bssap_clear_sent == 1 +- conn was released +- BSS sends BSSMAP Clear Complete +DREF unknown: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) @@ -84,8 +88,6 @@ DRLL Freeing subscriber connection with NULL subscriber DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated - bssap_clear_sent == 1 -- conn was released llist_count(&net->subscr_conns) == 0 ===== test_cm_service_without_lu: SUCCESS @@ -194,6 +196,12 @@ DREF VLR subscr MSISDN:46071 usage increases to: 4 DREF VLR subscr MSISDN:46071 usage decreases to: 3 - BSSAP Clear --RAN_GERAN_A--> MS +DREF VLR subscr MSISDN:46071 usage decreases to: 2 +<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0 + bssap_clear_sent == 1 +- LU was successful, and the conn has already been closed + lu_result_sent == 1 +- BSS sends BSSMAP Clear Complete DREF MSISDN:46071: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED @@ -204,14 +212,9 @@ DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Freeing instance DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Deallocated DRLL MSISDN:46071: Freeing subscriber connection -DREF VLR subscr MSISDN:46071 usage decreases to: 2 +DREF VLR subscr MSISDN:46071 usage decreases to: 1 DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated -DREF VLR subscr MSISDN:46071 usage decreases to: 1 -<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0 - bssap_clear_sent == 1 -- LU was successful, and the conn has already been closed - lu_result_sent == 1 llist_count(&net->subscr_conns) == 0 --- - verify that the MS can send another LU request @@ -313,6 +316,12 @@ DREF VLR subscr MSISDN:46071 usage increases to: 4 DREF VLR subscr MSISDN:46071 usage decreases to: 3 - BSSAP Clear --RAN_GERAN_A--> MS +DREF VLR subscr MSISDN:46071 usage decreases to: 2 +<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0 + bssap_clear_sent == 1 +- LU was successful, and the conn has already been closed + lu_result_sent == 1 +- BSS sends BSSMAP Clear Complete DREF MSISDN:46071: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED @@ -323,14 +332,9 @@ DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Freeing instance DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Deallocated DRLL MSISDN:46071: Freeing subscriber connection -DREF VLR subscr MSISDN:46071 usage decreases to: 2 +DREF VLR subscr MSISDN:46071 usage decreases to: 1 DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated -DREF VLR subscr MSISDN:46071 usage decreases to: 1 -<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0 - bssap_clear_sent == 1 -- LU was successful, and the conn has already been closed - lu_result_sent == 1 llist_count(&net->subscr_conns) == 0 --- - subscriber detaches @@ -350,15 +354,16 @@ DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASING DREF unknown: MSC conn use + release == 2 (0x101) - BSSAP Clear --RAN_GERAN_A--> MS -DREF unknown: MSC conn use - release == 1 (0x1) -DREF unknown: MSC conn use - compl_l3 == 0 (0x0) +DREF unknown: MSC conn use - compl_l3 == 1 (0x100) + bssap_clear_sent == 1 +- BSS sends BSSMAP Clear Complete +DREF unknown: MSC conn use - release == 0 (0x0) DMM Subscr_Conn{SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn{SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DRLL Freeing subscriber connection with NULL subscriber DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Deallocated - bssap_clear_sent == 1 llist_count(&net->subscr_conns) == 0 ===== test_two_lu: SUCCESS @@ -493,6 +498,12 @@ DREF VLR subscr MSISDN:46071 usage increases to: 4 DREF VLR subscr MSISDN:46071 usage decreases to: 3 - BSSAP Clear --RAN_GERAN_A--> MS +DREF VLR subscr MSISDN:46071 usage decreases to: 2 +<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0 + bssap_clear_sent == 1 +- LU was successful, and the conn has already been closed + lu_result_sent == 1 +- BSS sends BSSMAP Clear Complete DREF MSISDN:46071: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(591536962){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(591536962){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED @@ -503,14 +514,9 @@ DVLR vlr_lu_fsm(591536962){VLR_ULA_S_DONE}: Freeing instance DVLR vlr_lu_fsm(591536962){VLR_ULA_S_DONE}: Deallocated DRLL MSISDN:46071: Freeing subscriber connection -DREF VLR subscr MSISDN:46071 usage decreases to: 2 +DREF VLR subscr MSISDN:46071 usage decreases to: 1 DMM Subscr_Conn(591536962){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(591536962){SUBSCR_CONN_S_RELEASED}: Deallocated -DREF VLR subscr MSISDN:46071 usage decreases to: 1 -<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0 - bssap_clear_sent == 1 -- LU was successful, and the conn has already been closed - lu_result_sent == 1 llist_count(&net->subscr_conns) == 0 DREF freeing VLR subscr MSISDN:46071 ===== test_lu_unknown_tmsi: SUCCESS diff --git a/tests/msc_vlr/msc_vlr_test_umts_authen.c b/tests/msc_vlr/msc_vlr_test_umts_authen.c index 7b410df..42d406c 100644 --- a/tests/msc_vlr/msc_vlr_test_umts_authen.c +++ b/tests/msc_vlr/msc_vlr_test_umts_authen.c @@ -23,19 +23,6 @@ #include "msc_vlr_tests.h" -#define ASSERT_RELEASE_CLEAR(via_ran) \ - switch (via_ran) { \ - case RAN_GERAN_A: \ - VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); \ - break; \ - case RAN_UTRAN_IU: \ - VERBOSE_ASSERT(iu_release_sent, == true, "%d"); \ - break; \ - default: \ - OSMO_ASSERT(false); \ - break; \ - } - static void _test_umts_authen(enum ran_type via_ran) { struct vlr_subscr *vsub; @@ -183,6 +170,7 @@ expect_release_clear(via_ran); ms_sends_msg("055b"); ASSERT_RELEASE_CLEAR(via_ran); + bss_rnc_sends_release_clear_complete(via_ran); btw("LU was successful, and the conn has already been closed"); EXPECT_CONN_COUNT(0); @@ -229,6 +217,7 @@ ms_sends_msg("0b3b1c15a11302010002013b300b04010f0406aa510c061b017f0100"); OSMO_ASSERT(dtap_tx_confirmed); ASSERT_RELEASE_CLEAR(via_ran); + bss_rnc_sends_release_clear_complete(via_ran); btw("all requests serviced, conn has been released"); EXPECT_CONN_COUNT(0); @@ -308,6 +297,7 @@ ms_sends_msg("890106020041020000"); VERBOSE_ASSERT(dtap_tx_confirmed, == true, "%d"); ASSERT_RELEASE_CLEAR(via_ran); + bss_rnc_sends_release_clear_complete(via_ran); btw("SMS is done, conn is gone"); EXPECT_CONN_COUNT(0); @@ -317,6 +307,7 @@ ms_sends_msg("050130" "089910070000106005" /* IMSI */); ASSERT_RELEASE_CLEAR(via_ran); + bss_rnc_sends_release_clear_complete(via_ran); EXPECT_CONN_COUNT(0); clear_vlr(); @@ -551,6 +542,7 @@ expect_release_clear(via_ran); ms_sends_msg("055b"); ASSERT_RELEASE_CLEAR(via_ran); + bss_rnc_sends_release_clear_complete(via_ran); btw("LU was successful, and the conn has already been closed"); EXPECT_CONN_COUNT(0); @@ -652,6 +644,7 @@ ms_sends_msg("0554" "e229c19e" "2103" "791f2e" /* nipped one byte */); VERBOSE_ASSERT(lu_result_sent, == RES_REJECT, "%d"); ASSERT_RELEASE_CLEAR(via_ran); + bss_rnc_sends_release_clear_complete(via_ran); EXPECT_CONN_COUNT(0); clear_vlr(); @@ -751,6 +744,7 @@ ms_sends_msg("0554" "e229c19e" "2105" "791f2e4123" /* added one byte */); VERBOSE_ASSERT(lu_result_sent, == RES_REJECT, "%d"); ASSERT_RELEASE_CLEAR(via_ran); + bss_rnc_sends_release_clear_complete(via_ran); EXPECT_CONN_COUNT(0); clear_vlr(); @@ -855,6 +849,7 @@ ms_sends_msg("0554" "e229c19e" /* Only the SRES half of the RES */); VERBOSE_ASSERT(lu_result_sent, == RES_REJECT, "%d"); ASSERT_RELEASE_CLEAR(via_ran); + bss_rnc_sends_release_clear_complete(via_ran); EXPECT_CONN_COUNT(0); clear_vlr(); diff --git a/tests/msc_vlr/msc_vlr_test_umts_authen.err b/tests/msc_vlr/msc_vlr_test_umts_authen.err index 9e0186e..fe687a1 100644 --- a/tests/msc_vlr/msc_vlr_test_umts_authen.err +++ b/tests/msc_vlr/msc_vlr_test_umts_authen.err @@ -165,8 +165,10 @@ DREF VLR subscr MSISDN:42342 usage increases to: 3 DREF VLR subscr MSISDN:42342 usage decreases to: 2 - BSSAP Clear --RAN_GERAN_A--> MS -DREF MSISDN:42342: MSC conn use - release == 1 (0x2) -DREF MSISDN:42342: MSC conn use - dtap == 0 (0x0) +DREF MSISDN:42342: MSC conn use - dtap == 1 (0x100) + bssap_clear_sent == 1 +- BSS sends BSSMAP Clear Complete +DREF MSISDN:42342: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) @@ -179,7 +181,6 @@ DREF VLR subscr MSISDN:42342 usage decreases to: 1 DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Deallocated - bssap_clear_sent == 1 - LU was successful, and the conn has already been closed llist_count(&net->subscr_conns) == 0 --- @@ -281,6 +282,8 @@ DREF VLR subscr MSISDN:42342 usage increases to: 3 DREF VLR subscr MSISDN:42342 usage decreases to: 2 - BSSAP Clear --RAN_GERAN_A--> MS + bssap_clear_sent == 1 +- BSS sends BSSMAP Clear Complete DREF MSISDN:42342: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED @@ -293,7 +296,6 @@ DREF VLR subscr MSISDN:42342 usage decreases to: 1 DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Deallocated - bssap_clear_sent == 1 - all requests serviced, conn has been released llist_count(&net->subscr_conns) == 0 --- @@ -428,6 +430,9 @@ DREF VLR subscr MSISDN:42342 usage increases to: 3 DREF VLR subscr MSISDN:42342 usage decreases to: 2 - BSSAP Clear --RAN_GERAN_A--> MS + dtap_tx_confirmed == 1 + bssap_clear_sent == 1 +- BSS sends BSSMAP Clear Complete DREF MSISDN:42342: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED @@ -440,8 +445,6 @@ DREF VLR subscr MSISDN:42342 usage decreases to: 1 DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Deallocated - dtap_tx_confirmed == 1 - bssap_clear_sent == 1 - SMS is done, conn is gone llist_count(&net->subscr_conns) == 0 --- @@ -462,15 +465,16 @@ DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASING DREF unknown: MSC conn use + release == 2 (0x101) - BSSAP Clear --RAN_GERAN_A--> MS -DREF unknown: MSC conn use - release == 1 (0x1) -DREF unknown: MSC conn use - compl_l3 == 0 (0x0) +DREF unknown: MSC conn use - compl_l3 == 1 (0x100) + bssap_clear_sent == 1 +- BSS sends BSSMAP Clear Complete +DREF unknown: MSC conn use - release == 0 (0x0) DMM Subscr_Conn{SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn{SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DRLL Freeing subscriber connection with NULL subscriber DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Deallocated - bssap_clear_sent == 1 llist_count(&net->subscr_conns) == 0 ===== test_umts_authen_geran: SUCCESS @@ -653,8 +657,10 @@ DREF VLR subscr MSISDN:42342 usage increases to: 3 DREF VLR subscr MSISDN:42342 usage decreases to: 2 - Iu Release --RAN_UTRAN_IU--> MS -DREF MSISDN:42342: MSC conn use - release == 1 (0x2) -DREF MSISDN:42342: MSC conn use - dtap == 0 (0x0) +DREF MSISDN:42342: MSC conn use - dtap == 1 (0x100) + iu_release_sent == 1 +- RNC sends Iu Release Complete +DREF MSISDN:42342: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) @@ -667,7 +673,6 @@ DREF VLR subscr MSISDN:42342 usage decreases to: 1 DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Deallocated - iu_release_sent == 1 - LU was successful, and the conn has already been closed llist_count(&net->subscr_conns) == 0 --- @@ -782,6 +787,8 @@ DREF VLR subscr MSISDN:42342 usage increases to: 3 DREF VLR subscr MSISDN:42342 usage decreases to: 2 - Iu Release --RAN_UTRAN_IU--> MS + iu_release_sent == 1 +- RNC sends Iu Release Complete DREF MSISDN:42342: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED @@ -794,7 +801,6 @@ DREF VLR subscr MSISDN:42342 usage decreases to: 1 DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Deallocated - iu_release_sent == 1 - all requests serviced, conn has been released llist_count(&net->subscr_conns) == 0 --- @@ -942,6 +948,9 @@ DREF VLR subscr MSISDN:42342 usage increases to: 3 DREF VLR subscr MSISDN:42342 usage decreases to: 2 - Iu Release --RAN_UTRAN_IU--> MS + dtap_tx_confirmed == 1 + iu_release_sent == 1 +- RNC sends Iu Release Complete DREF MSISDN:42342: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED @@ -954,8 +963,6 @@ DREF VLR subscr MSISDN:42342 usage decreases to: 1 DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Deallocated - dtap_tx_confirmed == 1 - iu_release_sent == 1 - SMS is done, conn is gone llist_count(&net->subscr_conns) == 0 --- @@ -976,15 +983,16 @@ DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASING DREF unknown: MSC conn use + release == 2 (0x101) - Iu Release --RAN_UTRAN_IU--> MS -DREF unknown: MSC conn use - release == 1 (0x1) -DREF unknown: MSC conn use - compl_l3 == 0 (0x0) +DREF unknown: MSC conn use - compl_l3 == 1 (0x100) + iu_release_sent == 1 +- RNC sends Iu Release Complete +DREF unknown: MSC conn use - release == 0 (0x0) DMM Subscr_Conn{SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn{SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DRLL Freeing subscriber connection with NULL subscriber DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Deallocated - iu_release_sent == 1 llist_count(&net->subscr_conns) == 0 ===== test_umts_authen_utran: SUCCESS @@ -1186,8 +1194,10 @@ DREF VLR subscr MSISDN:42342 usage increases to: 3 DREF VLR subscr MSISDN:42342 usage decreases to: 2 - BSSAP Clear --RAN_GERAN_A--> MS -DREF MSISDN:42342: MSC conn use - release == 1 (0x2) -DREF MSISDN:42342: MSC conn use - dtap == 0 (0x0) +DREF MSISDN:42342: MSC conn use - dtap == 1 (0x100) + bssap_clear_sent == 1 +- BSS sends BSSMAP Clear Complete +DREF MSISDN:42342: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) @@ -1200,7 +1210,6 @@ DREF VLR subscr MSISDN:42342 usage decreases to: 1 DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Deallocated - bssap_clear_sent == 1 - LU was successful, and the conn has already been closed llist_count(&net->subscr_conns) == 0 DREF freeing VLR subscr MSISDN:42342 @@ -1416,8 +1425,10 @@ DREF VLR subscr MSISDN:42342 usage increases to: 3 DREF VLR subscr MSISDN:42342 usage decreases to: 2 - Iu Release --RAN_UTRAN_IU--> MS -DREF MSISDN:42342: MSC conn use - release == 1 (0x2) -DREF MSISDN:42342: MSC conn use - dtap == 0 (0x0) +DREF MSISDN:42342: MSC conn use - dtap == 1 (0x100) + iu_release_sent == 1 +- RNC sends Iu Release Complete +DREF MSISDN:42342: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) @@ -1430,7 +1441,6 @@ DREF VLR subscr MSISDN:42342 usage decreases to: 1 DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Deallocated - iu_release_sent == 1 - LU was successful, and the conn has already been closed llist_count(&net->subscr_conns) == 0 DREF freeing VLR subscr MSISDN:42342 @@ -1513,8 +1523,11 @@ DREF VLR subscr IMSI:901700000010650 usage increases to: 2 DREF VLR subscr IMSI:901700000010650 usage decreases to: 1 - BSSAP Clear --RAN_GERAN_A--> MS -DREF IMSI:901700000010650: MSC conn use - release == 1 (0x2) -DREF IMSI:901700000010650: MSC conn use - dtap == 0 (0x0) +DREF IMSI:901700000010650: MSC conn use - dtap == 1 (0x100) + lu_result_sent == 2 + bssap_clear_sent == 1 +- BSS sends BSSMAP Clear Complete +DREF IMSI:901700000010650: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) @@ -1528,8 +1541,6 @@ DREF freeing VLR subscr IMSI:901700000010650 DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Deallocated - lu_result_sent == 2 - bssap_clear_sent == 1 llist_count(&net->subscr_conns) == 0 ===== test_umts_authen_too_short_res_geran: SUCCESS @@ -1610,8 +1621,11 @@ DREF VLR subscr IMSI:901700000010650 usage increases to: 2 DREF VLR subscr IMSI:901700000010650 usage decreases to: 1 - Iu Release --RAN_UTRAN_IU--> MS -DREF IMSI:901700000010650: MSC conn use - release == 1 (0x2) -DREF IMSI:901700000010650: MSC conn use - dtap == 0 (0x0) +DREF IMSI:901700000010650: MSC conn use - dtap == 1 (0x100) + lu_result_sent == 2 + iu_release_sent == 1 +- RNC sends Iu Release Complete +DREF IMSI:901700000010650: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) @@ -1625,8 +1639,6 @@ DREF freeing VLR subscr IMSI:901700000010650 DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Deallocated - lu_result_sent == 2 - iu_release_sent == 1 llist_count(&net->subscr_conns) == 0 ===== test_umts_authen_too_short_res_utran: SUCCESS @@ -1707,8 +1719,11 @@ DREF VLR subscr IMSI:901700000010650 usage increases to: 2 DREF VLR subscr IMSI:901700000010650 usage decreases to: 1 - BSSAP Clear --RAN_GERAN_A--> MS -DREF IMSI:901700000010650: MSC conn use - release == 1 (0x2) -DREF IMSI:901700000010650: MSC conn use - dtap == 0 (0x0) +DREF IMSI:901700000010650: MSC conn use - dtap == 1 (0x100) + lu_result_sent == 2 + bssap_clear_sent == 1 +- BSS sends BSSMAP Clear Complete +DREF IMSI:901700000010650: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) @@ -1722,8 +1737,6 @@ DREF freeing VLR subscr IMSI:901700000010650 DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Deallocated - lu_result_sent == 2 - bssap_clear_sent == 1 llist_count(&net->subscr_conns) == 0 ===== test_umts_authen_too_long_res_geran: SUCCESS @@ -1804,8 +1817,11 @@ DREF VLR subscr IMSI:901700000010650 usage increases to: 2 DREF VLR subscr IMSI:901700000010650 usage decreases to: 1 - Iu Release --RAN_UTRAN_IU--> MS -DREF IMSI:901700000010650: MSC conn use - release == 1 (0x2) -DREF IMSI:901700000010650: MSC conn use - dtap == 0 (0x0) +DREF IMSI:901700000010650: MSC conn use - dtap == 1 (0x100) + lu_result_sent == 2 + iu_release_sent == 1 +- RNC sends Iu Release Complete +DREF IMSI:901700000010650: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) @@ -1819,8 +1835,6 @@ DREF freeing VLR subscr IMSI:901700000010650 DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Deallocated - lu_result_sent == 2 - iu_release_sent == 1 llist_count(&net->subscr_conns) == 0 ===== test_umts_authen_too_long_res_utran: SUCCESS @@ -1901,8 +1915,11 @@ DREF VLR subscr IMSI:901700000010650 usage increases to: 2 DREF VLR subscr IMSI:901700000010650 usage decreases to: 1 - BSSAP Clear --RAN_GERAN_A--> MS -DREF IMSI:901700000010650: MSC conn use - release == 1 (0x2) -DREF IMSI:901700000010650: MSC conn use - dtap == 0 (0x0) +DREF IMSI:901700000010650: MSC conn use - dtap == 1 (0x100) + lu_result_sent == 2 + bssap_clear_sent == 1 +- BSS sends BSSMAP Clear Complete +DREF IMSI:901700000010650: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) @@ -1916,8 +1933,6 @@ DREF freeing VLR subscr IMSI:901700000010650 DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Deallocated - lu_result_sent == 2 - bssap_clear_sent == 1 llist_count(&net->subscr_conns) == 0 ===== test_umts_authen_only_sres_geran: SUCCESS @@ -1998,8 +2013,11 @@ DREF VLR subscr IMSI:901700000010650 usage increases to: 2 DREF VLR subscr IMSI:901700000010650 usage decreases to: 1 - Iu Release --RAN_UTRAN_IU--> MS -DREF IMSI:901700000010650: MSC conn use - release == 1 (0x2) -DREF IMSI:901700000010650: MSC conn use - dtap == 0 (0x0) +DREF IMSI:901700000010650: MSC conn use - dtap == 1 (0x100) + lu_result_sent == 2 + iu_release_sent == 1 +- RNC sends Iu Release Complete +DREF IMSI:901700000010650: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) @@ -2013,8 +2031,6 @@ DREF freeing VLR subscr IMSI:901700000010650 DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Deallocated - lu_result_sent == 2 - iu_release_sent == 1 llist_count(&net->subscr_conns) == 0 ===== test_umts_authen_only_sres_utran: SUCCESS diff --git a/tests/msc_vlr/msc_vlr_tests.c b/tests/msc_vlr/msc_vlr_tests.c index 915f282..eda3ea1 100644 --- a/tests/msc_vlr/msc_vlr_tests.c +++ b/tests/msc_vlr/msc_vlr_tests.c @@ -795,6 +795,22 @@ msc_rx_sec_mode_compl(g_conn); } +void bss_sends_clear_complete() +{ + btw("BSS sends BSSMAP Clear Complete"); + OSMO_ASSERT(g_conn); + OSMO_ASSERT(g_conn->via_ran == RAN_GERAN_A); + msc_subscr_conn_rx_bssmap_clear_complete(g_conn); +} + +void rnc_sends_release_complete() +{ + btw("RNC sends Iu Release Complete"); + OSMO_ASSERT(g_conn); + OSMO_ASSERT(g_conn->via_ran == RAN_UTRAN_IU); + msc_subscr_conn_rx_iu_release_complete(g_conn); +} + const struct timeval fake_time_start_time = { 123, 456 }; void fake_time_start() diff --git a/tests/msc_vlr/msc_vlr_tests.h b/tests/msc_vlr/msc_vlr_tests.h index 15df9ec..a29e870 100644 --- a/tests/msc_vlr/msc_vlr_tests.h +++ b/tests/msc_vlr/msc_vlr_tests.h @@ -166,6 +166,9 @@ struct vlr_subscr *sender, char *str); +void bss_sends_clear_complete(); +void rnc_sends_release_complete(); + void thwart_rx_non_initial_requests(); #define EXPECT_ACCEPTED(expect_accepted) do { \ @@ -223,3 +226,31 @@ } while (0) extern const struct timeval fake_time_start_time; + +#define ASSERT_RELEASE_CLEAR(via_ran) \ + switch (via_ran) { \ + case RAN_GERAN_A: \ + VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); \ + break; \ + case RAN_UTRAN_IU: \ + VERBOSE_ASSERT(iu_release_sent, == true, "%d"); \ + break; \ + default: \ + OSMO_ASSERT(false); \ + break; \ + } + +static inline void bss_rnc_sends_release_clear_complete(enum ran_type via_ran) +{ + switch (via_ran) { + case RAN_GERAN_A: + bss_sends_clear_complete(); + return; + case RAN_UTRAN_IU: + rnc_sends_release_complete(); + return; + default: + OSMO_ASSERT(false); + break; + } +} -- To view, visit https://gerrit.osmocom.org/7706 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newpatchset Gerrit-Change-Id: Ie4c6aaba3866d6e5b98004e8870a215e8cf8ffc1 Gerrit-PatchSet: 2 Gerrit-Project: osmo-msc Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr Gerrit-Reviewer: Jenkins Builder From gerrit-no-reply at lists.osmocom.org Tue Apr 10 01:04:44 2018 From: gerrit-no-reply at lists.osmocom.org (Neels Hofmeyr) Date: Tue, 10 Apr 2018 01:04:44 +0000 Subject: osmo-msc[master]: msc_vlr_test_call: reproduce OS#3062 In-Reply-To: References: Message-ID: Patch Set 2: Verified+1 add V+1 manually, the jenkins result wasn't counted -- To view, visit https://gerrit.osmocom.org/7703 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Ice7197b48d4e163a3c4d97b559fdcd7e88c4107e Gerrit-PatchSet: 2 Gerrit-Project: osmo-msc Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Neels Hofmeyr Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Tue Apr 10 01:09:46 2018 From: gerrit-no-reply at lists.osmocom.org (Neels Hofmeyr) Date: Tue, 10 Apr 2018 01:09:46 +0000 Subject: osmo-msc[master]: VTY: add USSD processing back-end configuration In-Reply-To: References: Message-ID: Patch Set 1: (1 comment) https://gerrit.osmocom.org/#/c/7677/1/src/osmo-msc/msc_main.c File src/osmo-msc/msc_main.c: Line 634: /* Initialize USSD */ > Probably, it's my bad habit to comment each code block... it's in many computer science syllabi as well: "comment every code block! even if it exactly copies the words of the code itself!" -- also happens with API docs a lot: "get_frblxztrf(): Get the Frblxztrf." -- useless clutter :) -- To view, visit https://gerrit.osmocom.org/7677 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I0b3c5ccea4054113e8e23109b1ab68d9f0e18497 Gerrit-PatchSet: 1 Gerrit-Project: osmo-msc Gerrit-Branch: master Gerrit-Owner: Vadim Yanitskiy Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Neels Hofmeyr Gerrit-Reviewer: Vadim Yanitskiy Gerrit-HasComments: Yes From gerrit-no-reply at lists.osmocom.org Tue Apr 10 05:53:53 2018 From: gerrit-no-reply at lists.osmocom.org (Stefan Sperling) Date: Tue, 10 Apr 2018 05:53:53 +0000 Subject: osmo-hlr[master]: notify GSUP clients when HLR subscriber information changes In-Reply-To: References: Message-ID: Patch Set 1: > (1 comment) Subscriber entries in the DB contain a vlr_number and sgsn_number. It seems those are only set, I cannot find code which reads them back. I'll add a comment as you suggest. -- To view, visit https://gerrit.osmocom.org/7685 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Iffe1d7afb9fc7dbae542f70bbf5391ddc08a14b4 Gerrit-PatchSet: 1 Gerrit-Project: osmo-hlr Gerrit-Branch: master Gerrit-Owner: Stefan Sperling Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Stefan Sperling Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Tue Apr 10 05:58:30 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Tue, 10 Apr 2018 05:58:30 +0000 Subject: osmo-msc[master]: trans_free: drop bad assertion In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7702 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I5c30e0f9545fb76615776ff6cc16b56aeb5b043a Gerrit-PatchSet: 1 Gerrit-Project: osmo-msc Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Tue Apr 10 05:58:52 2018 From: gerrit-no-reply at lists.osmocom.org (Stefan Sperling) Date: Tue, 10 Apr 2018 05:58:52 +0000 Subject: [PATCH] osmo-hlr[master]: notify GSUP clients when HLR subscriber information changes In-Reply-To: References: Message-ID: Hello Jenkins Builder, I'd like you to reexamine a change. Please visit https://gerrit.osmocom.org/7685 to look at the new patch set (#2). notify GSUP clients when HLR subscriber information changes Add a function which triggers subscriber update notifications to all connected GSUP clients, and invoke it when the MSISDN of a subscriber is changed via VTY. This makes the TTCN3 HLR test TC_vty_msisdn_isd pass. Note that the new function currently relies on implementation details of the Location Update Operation (luop) code. Because of this we currently log a slightly misleading message when the updated Insert Subscriber Data message is sent: "luop.c:161 LU OP state change: LU RECEIVED -> ISD SENT" This message is misleading because, in fact, no location update message was received from a GSUP client at that moment. So while this change fixes the externally visible behaviour, we may want to follow this up with some refactoring to avoid relying on luop internals. It seems acceptable to do that in a separate step since such a change will be more involved and harder to review. We may want to trigger such notifications in other situations as well. This is left for future work, too. There are no TTCN3 test cases for other situations yet, as far as I can see. Related: OS#2785 Change-Id: Iffe1d7afb9fc7dbae542f70bbf5391ddc08a14b4 --- M src/hlr.c M src/hlr.h M src/hlr_vty_subscr.c 3 files changed, 40 insertions(+), 0 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-hlr refs/changes/85/7685/2 diff --git a/src/hlr.c b/src/hlr.c index 838b1bc..4fbc268 100644 --- a/src/hlr.c +++ b/src/hlr.c @@ -46,6 +46,38 @@ static struct hlr *g_hlr; +/* Trigger 'Insert Subscriber Data' messages to all connected GSUP clients. + * + * FIXME: In order to support large-scale networks this function should skip + * VLRs/SGSNs which do not currently serve the subscriber. + * + * \param[in] subscr A subscriber we have new data to send for. + */ +void +osmo_hlr_subscriber_update_notify(struct hlr_subscriber *subscr) +{ + struct osmo_gsup_conn *co; + + if (g_hlr->gs == NULL) + return; + + llist_for_each_entry(co, &g_hlr->gs->clients, list) { + struct lu_operation *luop = lu_op_alloc_conn(co); + if (!luop) { + LOGP(DMAIN, LOGL_ERROR, + "IMSI='%s': Cannot notify GSUP client, cannot allocate lu_operation," + " for %s:%u\n", subscr->imsi, + co && co->conn && co->conn->server? co->conn->server->addr : "unset", + co && co->conn && co->conn->server? co->conn->server->port : 0); + continue; + } + luop->subscr = *subscr; + luop->state = LU_S_LU_RECEIVED; /* Pretend we received a location update. */ + lu_op_tx_insert_subscr_data(luop); + lu_op_free(luop); + } +} + /*********************************************************************** * Send Auth Info handling ***********************************************************************/ diff --git a/src/hlr.h b/src/hlr.h index f63bc2b..368a052 100644 --- a/src/hlr.h +++ b/src/hlr.h @@ -38,3 +38,7 @@ /* Local bind addr */ char *gsup_bind_addr; }; + +struct hlr_subscriber; + +void osmo_hlr_subscriber_update_notify(struct hlr_subscriber *subscr); diff --git a/src/hlr_vty_subscr.c b/src/hlr_vty_subscr.c index 7191a1c..4092a8f 100644 --- a/src/hlr_vty_subscr.c +++ b/src/hlr_vty_subscr.c @@ -257,6 +257,10 @@ vty_out(vty, "%% Updated subscriber IMSI='%s' to MSISDN='%s'%s", subscr.imsi, msisdn, VTY_NEWLINE); + + if (db_subscr_get_by_msisdn(g_hlr->dbc, msisdn, &subscr) == 0) + osmo_hlr_subscriber_update_notify(&subscr); + return CMD_SUCCESS; } -- To view, visit https://gerrit.osmocom.org/7685 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newpatchset Gerrit-Change-Id: Iffe1d7afb9fc7dbae542f70bbf5391ddc08a14b4 Gerrit-PatchSet: 2 Gerrit-Project: osmo-hlr Gerrit-Branch: master Gerrit-Owner: Stefan Sperling Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Stefan Sperling From gerrit-no-reply at lists.osmocom.org Tue Apr 10 05:59:10 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Tue, 10 Apr 2018 05:59:10 +0000 Subject: osmo-msc[master]: msc_vlr_test_call: reproduce OS#3062 In-Reply-To: References: Message-ID: Patch Set 2: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7703 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Ice7197b48d4e163a3c4d97b559fdcd7e88c4107e Gerrit-PatchSet: 2 Gerrit-Project: osmo-msc Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Neels Hofmeyr Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Tue Apr 10 06:01:04 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Tue, 10 Apr 2018 06:01:04 +0000 Subject: osmo-msc[master]: fix BSC Clear Request In-Reply-To: References: Message-ID: Patch Set 2: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7707 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I168b889ac7989641cc679b781dcffb87ff13a710 Gerrit-PatchSet: 2 Gerrit-Project: osmo-msc Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Tue Apr 10 06:02:18 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Tue, 10 Apr 2018 06:02:18 +0000 Subject: osmo-msc[master]: cosmetic: embed compl_l3_type in FSM id In-Reply-To: References: Message-ID: Patch Set 2: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7708 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I2a7e27e0f16df1872dcda64cb928c3b8528ea3f7 Gerrit-PatchSet: 2 Gerrit-Project: osmo-msc Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Tue Apr 10 06:02:58 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Tue, 10 Apr 2018 06:02:58 +0000 Subject: osmo-msc[master]: msc conn ref counts: log human readable list of conn owners In-Reply-To: References: Message-ID: Patch Set 2: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7710 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I2a09efafbdbdde0399238f7d79feea8612605201 Gerrit-PatchSet: 2 Gerrit-Project: osmo-msc Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Tue Apr 10 10:01:43 2018 From: gerrit-no-reply at lists.osmocom.org (Neels Hofmeyr) Date: Tue, 10 Apr 2018 10:01:43 +0000 Subject: osmo-hlr[master]: notify GSUP clients when HLR subscriber information changes In-Reply-To: References: Message-ID: Patch Set 2: Code-Review+2 (1 comment) about that FIXME, I think there should also be an issue about that, lest we forget the FIXME. https://gerrit.osmocom.org/#/c/7685/1/src/hlr.h File src/hlr.h: Line 42: struct hlr_subscriber; (we usually place opaque declarations like this after the #include block) -- To view, visit https://gerrit.osmocom.org/7685 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Iffe1d7afb9fc7dbae542f70bbf5391ddc08a14b4 Gerrit-PatchSet: 2 Gerrit-Project: osmo-hlr Gerrit-Branch: master Gerrit-Owner: Stefan Sperling Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Neels Hofmeyr Gerrit-Reviewer: Stefan Sperling Gerrit-HasComments: Yes From gerrit-no-reply at lists.osmocom.org Tue Apr 10 10:50:02 2018 From: gerrit-no-reply at lists.osmocom.org (Neels Hofmeyr) Date: Tue, 10 Apr 2018 10:50:02 +0000 Subject: [MERGED] osmo-msc[master]: trans_free: drop bad assertion In-Reply-To: References: Message-ID: Neels Hofmeyr has submitted this change and it was merged. Change subject: trans_free: drop bad assertion ...................................................................... trans_free: drop bad assertion I assumed that trans_free() would always be called before freeing the FSM. But the actual conn free dance that tries to make sure a release is triggered from all directions actually may run into a situation where conn->fi is NULL. The situation is described in OS#3125. For now simply drop the assert. The subscr conn and FSM dealloc will soon be glued firmly together; but I want to add a test against OS#3062 before that, and that would also hit above assertion. Related: OS#3125 OS#3062 Change-Id: I5c30e0f9545fb76615776ff6cc16b56aeb5b043a --- M src/libmsc/transaction.c 1 file changed, 0 insertions(+), 3 deletions(-) Approvals: Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/src/libmsc/transaction.c b/src/libmsc/transaction.c index 5b033dc..66b929a 100644 --- a/src/libmsc/transaction.c +++ b/src/libmsc/transaction.c @@ -158,9 +158,6 @@ trans->conn = NULL; talloc_free(trans); - /* trans_free() should always happen while the fi is still around. */ - OSMO_ASSERT(conn->fi); - /* Possibly this was the last transaction used by this conn. */ subscr_conn_release_when_unused(conn); } -- To view, visit https://gerrit.osmocom.org/7702 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: I5c30e0f9545fb76615776ff6cc16b56aeb5b043a Gerrit-PatchSet: 1 Gerrit-Project: osmo-msc Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Neels Hofmeyr From gerrit-no-reply at lists.osmocom.org Tue Apr 10 10:50:16 2018 From: gerrit-no-reply at lists.osmocom.org (Neels Hofmeyr) Date: Tue, 10 Apr 2018 10:50:16 +0000 Subject: [MERGED] osmo-msc[master]: msc_vlr_test_call: reproduce OS#3062 In-Reply-To: References: Message-ID: Neels Hofmeyr has submitted this change and it was merged. Change subject: msc_vlr_test_call: reproduce OS#3062 ...................................................................... msc_vlr_test_call: reproduce OS#3062 A related ttcn3 test is added in Ic80646e1fba37bb6163ca3a7eead7980b4ad7a51 Related: OS#3062 Change-Id: Ice7197b48d4e163a3c4d97b559fdcd7e88c4107e --- M tests/msc_vlr/msc_vlr_test_call.c M tests/msc_vlr/msc_vlr_test_call.err M tests/msc_vlr/msc_vlr_tests.c M tests/msc_vlr/msc_vlr_tests.h 4 files changed, 436 insertions(+), 0 deletions(-) Approvals: Neels Hofmeyr: Verified Harald Welte: Looks good to me, approved diff --git a/tests/msc_vlr/msc_vlr_test_call.c b/tests/msc_vlr/msc_vlr_test_call.c index 6359865..9d4126e 100644 --- a/tests/msc_vlr/msc_vlr_test_call.c +++ b/tests/msc_vlr/msc_vlr_test_call.c @@ -31,6 +31,12 @@ mncc_tx_to_cc(net, msg_type, mncc); } +static void on_call_release_mncc_sends_to_cc(uint32_t msg_type, struct gsm_mncc *mncc) +{ + mncc->msg_type = msg_type; + on_call_release_mncc_sends_to_cc_data = mncc; +} + #define IMSI "901700000010650" static void standard_lu() @@ -334,6 +340,80 @@ comment_end(); } +static void test_call_mt2() +{ + struct gsm_mncc mncc = { + .imsi = IMSI, + .callref = 0x423, + }; + + comment_start(); + + fake_time_start(); + + standard_lu(); + + BTW("after a while, MNCC asks us to setup a call, causing Paging"); + + paging_expect_imsi(IMSI); + paging_sent = false; + mncc_sends_to_cc(MNCC_SETUP_REQ, &mncc); + + VERBOSE_ASSERT(paging_sent, == true, "%d"); + VERBOSE_ASSERT(paging_stopped, == false, "%d"); + + btw("MS replies with Paging Response, and VLR sends Auth Request"); + auth_request_sent = false; + auth_request_expect_rand = "c187a53a5e6b9d573cac7c74451fd46d"; + auth_request_expect_autn = "1843a645b98d00005b2d666af46c45d9"; + ms_sends_msg("062707" + "03575886" /* classmark 2 */ + "089910070000106005" /* IMSI */); + VERBOSE_ASSERT(auth_request_sent, == true, "%d"); + + btw("MS sends Authen Response, VLR accepts and sends SecurityModeControl"); + expect_security_mode_ctrl(NULL, "1159ec926a50e98c034a6b7d7c9f418d"); + ms_sends_msg("0554" "7db47cf7" "2104" "f81e4dc7"); /* 2nd vector's res, s.a. */ + VERBOSE_ASSERT(security_mode_ctrl_sent, == true, "%d"); + + btw("MS sends SecurityModeControl acceptance, VLR accepts, sends CC Setup"); + dtap_expect_tx("0305" /* CC: Setup */); + ms_sends_security_mode_complete(); + VERBOSE_ASSERT(paging_stopped, == true, "%d"); + + cc_to_mncc_expect_tx(IMSI, MNCC_CALL_CONF_IND); + ms_sends_msg("8348" /* CC: Call Confirmed */ + "0406600402000581" /* Bearer Capability */ + "15020100" /* Call Control Capabilities */ + "40080402600400021f00" /* Supported Codec List */); + OSMO_ASSERT(cc_to_mncc_tx_confirmed); + + fake_time_passes(1, 23); + + cc_to_mncc_expect_tx("", MNCC_ALERT_IND); + ms_sends_msg("8381" /* CC: Alerting */); + OSMO_ASSERT(cc_to_mncc_tx_confirmed); + + fake_time_passes(15, 23); + + btw("The call failed, the BSC sends a BSSMAP Clear Request"); + on_call_release_mncc_sends_to_cc(MNCC_REL_REQ, &mncc); + cc_to_mncc_expect_tx("", MNCC_REL_CNF); + dtap_expect_tx("032d"); /* CC: Release */ + expect_iu_release(); + msc_clear_request(g_conn, 0); + OSMO_ASSERT(cc_to_mncc_tx_confirmed); + OSMO_ASSERT(iu_release_sent); + + EXPECT_CONN_COUNT(0); + + /* Make sure a pending release timer doesn't fire later to access freed data */ + fake_time_passes(15, 23); + + clear_vlr(); + comment_end(); +} + static void test_call_mo_to_unknown() { struct gsm_mncc mncc = { @@ -497,6 +577,7 @@ msc_vlr_test_func_t msc_vlr_tests[] = { test_call_mo, test_call_mt, + test_call_mt2, test_call_mo_to_unknown, test_call_mo_to_unknown_timeout, NULL diff --git a/tests/msc_vlr/msc_vlr_test_call.err b/tests/msc_vlr/msc_vlr_test_call.err index 281f418..6142464 100644 --- a/tests/msc_vlr/msc_vlr_test_call.err +++ b/tests/msc_vlr/msc_vlr_test_call.err @@ -757,6 +757,352 @@ full talloc report on 'msgb' (total 0 bytes in 1 blocks) talloc_total_blocks(tall_bsc_ctx) == 12 +===== test_call_mt2 +- Total time passed: 0.000000 s +- Location Update request causes a GSUP Send Auth Info request to HLR + MSC <--RAN_UTRAN_IU-- MS: GSM48_MT_MM_LOC_UPD_REQUEST + new conn +DREF unknown: MSC conn use + compl_l3 == 1 (0x1) +DRLL Dispatching 04.08 message GSM48_MT_MM_LOC_UPD_REQUEST (0x5:0x8) +DREF unknown: MSC conn use + fsm == 2 (0x5) +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Allocated +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Updated ID from LU +DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000010650 type=NORMAL +DMM LU/new-LAC: 23/23 +DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_IDLE}: Allocated +DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_IDLE}: is child of Subscr_Conn(901700000010650) +DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_IDLE}: rev=R99 net=UTRAN Auth+Ciph +DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA +DREF VLR subscr unknown usage increases to: 1 +DVLR set IMSI on subscriber; IMSI=901700000010650 id=901700000010650 +DVLR New subscr, IMSI: 901700000010650 +DREF VLR subscr IMSI:901700000010650 usage increases to: 2 +DREF VLR subscr IMSI:901700000010650 usage decreases to: 1 +DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_IDLE}: vlr_loc_upd_node1() +DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_AUTH +DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_NEEDS_AUTH}: Allocated +DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_NEEDS_AUTH}: is child of vlr_lu_fsm(901700000010650) +DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_NEEDS_AUTH}: Received Event VLR_AUTH_E_START +DVLR GSUP tx: 08010809710000000156f0 +GSUP --> HLR: OSMO_GSUP_MSGT_SEND_AUTH_INFO_REQUEST: 08010809710000000156f0 +DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_NEEDS_AUTH_WAIT_AI +DMM IMSI:901700000010650: subscr_conn_release_when_unused: conn still being established (SUBSCR_CONN_S_NEW) +DREF IMSI:901700000010650: MSC conn use - compl_l3 == 1 (0x4) + lu_result_sent == 0 +- from HLR, rx _SEND_AUTH_INFO_RESULT; VLR sends Auth Req to MS +<-- GSUP rx OSMO_GSUP_MSGT_SEND_AUTH_INFO_RESULT: 0a010809710000000156f00362201039fa2f4e3d523d8619a73b4f65c3e14d21049b36efdf2208059a4f668f6fbe39231027497388b6cb044648f396aa155b95ef2410f64735036e5871319c679f4742a75ea125108704f5ba55f30000d2ee44b22c8ea9192708e229c19e791f2e4103622010c187a53a5e6b9d573cac7c74451fd46d210485aa31302208d3d50a000bf04f6e23101159ec926a50e98c034a6b7d7c9f418d2410df3a03d9ca5335641efc8e36d76cd20b25101843a645b98d00005b2d666af46c45d927087db47cf7f81e4dc703622010efa9c29a9742148d5c9070348716e1bb210469d5f9fb22083df176f0c29f1a3d2310eb50e770ddcc3060101d2f43b6c2b884241076542abce5ff9345b0e8947f4c6e019c2510f9375e6d41e1000096e7fe4ff1c27e392708706f996719ba609c03622010f023d5a3b24726e0631b64b3840f82532104d570c03f2208ec011be8919883d62310c4e58af4ba43f3bcd904e16984f086d724100593f65e752e5cb7f473862bda05aa0a2510541ff1f077270000c5ea00d658bc7e9a27083fd26072eaa2a04d036220102f8f90c780d6a9c0c53da7ac57b6707e2104b072446f220823f39f9f425ad6e6231065af0527fda95b0dc5ae4aa515cdf32f2410537c3b35a3b13b08d08eeb28098f45cc25104bf4e564f75300009bc796706bc6574427080edb0eadbea94ac2 +DVLR GSUP rx 511: 0a010809710000000156f00362201039fa2f4e3d523d8619a73b4f65c3e14d21049b36efdf2208059a4f668f6fbe39231027497388b6cb044648f396aa155b95ef2410f64735036e5871319c679f4742a75ea125108704f5ba55f30000d2ee44b22c8ea9192708e229c19e791f2e4103622010c187a53a5e6b9d573cac7c74451fd46d210485aa31302208d3d50a000bf04f6e23101159ec926a50e98c034a6b7d7c9f418d2410df3a03d9ca5335641efc8e36d76cd20b25101843a645b98d00005b2d666af46c45d927087db47cf7f81e4dc703622010efa9c29a9742148d5c9070348716e1bb210469d5f9fb22083df176f0c29f1a3d2310eb50e770ddcc3060101d2f43b6c2b884241076542abce5ff9345b0e8947f4c6e019c2510f9375e6d41e1000096e7fe4ff1c27e392708706f996719ba609c03622010f023d5a3b24726e0631b64b3840f82532104d570c03f2208ec011be8919883d62310c4e58af4ba43f3bcd904e16984f086d724100593f65e752e5cb7f473862bda05aa0a2510541ff1f077270000c5ea00d658bc7e9a27083fd26072eaa2a04d036220102f8f90c780d6a9c0c53da7ac57b6707e2104b072446f220823f39f9f425ad6e6231065af0527fda95b0dc5ae4aa515cdf32f2410537c3b35a3b13b08d08eeb28098f45cc25104bf4e564f75300009bc796706bc6574427080edb0eadbea94ac2 +DREF VLR subscr IMSI:901700000010650 usage increases to: 2 +DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: Received Event VLR_AUTH_E_HLR_SAI_ACK +DVLR SUBSCR(IMSI:901700000010650) Received 5 auth tuples +DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: state_chg to VLR_SUB_AS_WAIT_RESP +DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=1 key_seq=0 -- will use UMTS AKA (is_r99=yes, at->vec.auth_types=0x3) +- sending UMTS Auth Request for IMSI:901700000010650: tuple use_count=1 key_seq=0 auth_types=0x3 and... +- ...rand=39fa2f4e3d523d8619a73b4f65c3e14d +- ...autn=8704f5ba55f30000d2ee44b22c8ea919 +- ...expecting res=e229c19e791f2e41 +DREF VLR subscr IMSI:901700000010650 usage decreases to: 1 +<-- GSUP rx OSMO_GSUP_MSGT_SEND_AUTH_INFO_RESULT: vlr_gsupc_read_cb() returns 0 + auth_request_sent == 1 + lu_result_sent == 0 +- MS sends Authen Response, VLR accepts and sends SecurityModeControl + MSC <--RAN_UTRAN_IU-- MS: GSM48_MT_MM_AUTH_RESP +DREF IMSI:901700000010650: MSC conn use + dtap == 2 (0x6) +DRLL Dispatching 04.08 message GSM48_MT_MM_AUTH_RESP (0x5:0x14) +DMM IMSI:901700000010650: MM UMTS AUTHENTICATION RESPONSE (res = e229c19e791f2e41) +DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP +DVLR SUBSCR(IMSI:901700000010650) AUTH on UTRAN received RES: e229c19e791f2e41 (8 bytes) +DVLR SUBSCR(IMSI:901700000010650) AUTH established UMTS security context +DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result VLR_AUTH_RES_PASSED +DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED +DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) +DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_AUTHENTICATED}: Removing from parent vlr_lu_fsm(901700000010650) +DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_AUTHENTICATED}: Freeing instance +DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_AUTHENTICATED}: Deallocated +DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_WAIT_AUTH}: Received Event VLR_ULA_E_AUTH_RES +DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_post_auth() +DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_WAIT_AUTH}: Set Ciphering Mode +DMM -> SECURITY MODE CONTROL IMSI:901700000010650 +- sending SecurityModeControl for UE ctx 42 send_ck=0 new_key=1 +- ...ik=27497388b6cb044648f396aa155b95ef +DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_WAIT_AUTH}: state_chg to VLR_ULA_S_WAIT_CIPH +DMM IMSI:901700000010650: subscr_conn_release_when_unused: conn still being established (SUBSCR_CONN_S_NEW) +DREF IMSI:901700000010650: MSC conn use - dtap == 1 (0x4) + security_mode_ctrl_sent == 1 + lu_result_sent == 0 +- MS sends SecurityModeControl acceptance, VLR accepts and sends GSUP LU Req to HLR +DMM <- SECURITY MODE COMPLETE IMSI:901700000010650 +DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_WAIT_CIPH}: Received Event VLR_ULA_E_CIPH_RES +DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_WAIT_CIPH}: vlr_loc_upd_post_ciph() +DIUCS IMSI:901700000010650: tx CommonID 901700000010650 +- Iu Common ID --RAN_UTRAN_IU--> MS (IMSI=901700000010650) +DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_WAIT_CIPH}: vlr_loc_upd_node_4() +DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_WAIT_CIPH}: state_chg to VLR_ULA_S_WAIT_HLR_UPD +DVLR upd_hlr_vlr_fsm(901700000010650){UPD_HLR_VLR_S_INIT}: Allocated +DVLR upd_hlr_vlr_fsm(901700000010650){UPD_HLR_VLR_S_INIT}: is child of vlr_lu_fsm(901700000010650) +DVLR upd_hlr_vlr_fsm(901700000010650){UPD_HLR_VLR_S_INIT}: Received Event UPD_HLR_VLR_E_START +DVLR GSUP tx: 04010809710000000156f0 +GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000000156f0 +DVLR upd_hlr_vlr_fsm(901700000010650){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA + gsup_tx_confirmed == 1 + lu_result_sent == 0 +- HLR sends _INSERT_DATA_REQUEST, VLR responds with _INSERT_DATA_RESULT +<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: 10010809710000000156f00804032443f2 +DVLR GSUP rx 17: 10010809710000000156f00804032443f2 +DREF VLR subscr IMSI:901700000010650 usage increases to: 2 +DVLR IMSI:901700000010650 has MSISDN:42342 +DVLR SUBSCR(MSISDN:42342) VLR: update for IMSI=901700000010650 (MSISDN=42342, used=2) +DVLR GSUP tx: 12010809710000000156f0 +GSUP --> HLR: OSMO_GSUP_MSGT_INSERT_DATA_RESULT: 12010809710000000156f0 +DREF VLR subscr MSISDN:42342 usage decreases to: 1 +<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: vlr_gsupc_read_cb() returns 0 + lu_result_sent == 0 +- HLR also sends GSUP _UPDATE_LOCATION_RESULT +<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: 06010809710000000156f0 +DVLR GSUP rx 11: 06010809710000000156f0 +DREF VLR subscr MSISDN:42342 usage increases to: 2 +DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_HLR_LU_RES +DVLR upd_hlr_vlr_fsm(901700000010650){UPD_HLR_VLR_S_WAIT_FOR_DATA}: Received Event UPD_HLR_VLR_E_UPD_LOC_ACK +DVLR upd_hlr_vlr_fsm(901700000010650){UPD_HLR_VLR_S_WAIT_FOR_DATA}: state_chg to UPD_HLR_VLR_S_DONE +DVLR upd_hlr_vlr_fsm(901700000010650){UPD_HLR_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR) +DVLR upd_hlr_vlr_fsm(901700000010650){UPD_HLR_VLR_S_DONE}: Removing from parent vlr_lu_fsm(901700000010650) +DVLR upd_hlr_vlr_fsm(901700000010650){UPD_HLR_VLR_S_DONE}: Freeing instance +DVLR upd_hlr_vlr_fsm(901700000010650){UPD_HLR_VLR_S_DONE}: Deallocated +DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_UPD_HLR_COMPL +DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_WAIT_HLR_UPD}: state_chg to VLR_ULA_S_WAIT_LU_COMPL +DVLR lu_compl_vlr_fsm(901700000010650){LU_COMPL_VLR_S_INIT}: Allocated +DVLR lu_compl_vlr_fsm(901700000010650){LU_COMPL_VLR_S_INIT}: is child of vlr_lu_fsm(901700000010650) +DVLR lu_compl_vlr_fsm(901700000010650){LU_COMPL_VLR_S_INIT}: Received Event LU_COMPL_VLR_E_START +DVLR lu_compl_vlr_fsm(901700000010650){LU_COMPL_VLR_S_INIT}: state_chg to LU_COMPL_VLR_S_WAIT_SUB_PRES +DVLR sub_pres_vlr_fsm(901700000010650){SUB_PRES_VLR_S_INIT}: Allocated +DVLR sub_pres_vlr_fsm(901700000010650){SUB_PRES_VLR_S_INIT}: is child of lu_compl_vlr_fsm(901700000010650) +DVLR sub_pres_vlr_fsm(901700000010650){SUB_PRES_VLR_S_INIT}: Received Event SUB_PRES_VLR_E_START +DVLR sub_pres_vlr_fsm(901700000010650){SUB_PRES_VLR_S_INIT}: state_chg to SUB_PRES_VLR_S_DONE +DVLR sub_pres_vlr_fsm(901700000010650){SUB_PRES_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR) +DVLR sub_pres_vlr_fsm(901700000010650){SUB_PRES_VLR_S_DONE}: Removing from parent lu_compl_vlr_fsm(901700000010650) +DVLR sub_pres_vlr_fsm(901700000010650){SUB_PRES_VLR_S_DONE}: Freeing instance +DVLR sub_pres_vlr_fsm(901700000010650){SUB_PRES_VLR_S_DONE}: Deallocated +DVLR lu_compl_vlr_fsm(901700000010650){LU_COMPL_VLR_S_WAIT_SUB_PRES}: Received Event LU_COMPL_VLR_E_SUB_PRES_COMPL +DVLR lu_compl_vlr_fsm(901700000010650){LU_COMPL_VLR_S_WAIT_SUB_PRES}: lu_compl_vlr_new_tmsi() +DVLR lu_compl_vlr_fsm(901700000010650){LU_COMPL_VLR_S_WAIT_SUB_PRES}: state_chg to LU_COMPL_VLR_S_WAIT_TMSI_CNF +- sending LU Accept for MSISDN:42342, with TMSI 0x03020100 +DREF VLR subscr MSISDN:42342 usage decreases to: 1 +<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0 + lu_result_sent == 1 +- a LU Accept with a new TMSI was sent, waiting for TMSI Realloc Compl + llist_count(&net->subscr_conns) == 1 +msc_subscr_conn_is_accepted() == false +- MS sends TMSI Realloc Complete + MSC <--RAN_UTRAN_IU-- MS: GSM48_MT_MM_TMSI_REALL_COMPL +DREF MSISDN:42342: MSC conn use + dtap == 2 (0x6) +DRLL Dispatching 04.08 message GSM48_MT_MM_TMSI_REALL_COMPL (0x5:0x1b) +DMM TMSI Reallocation Completed. Subscriber: MSISDN:42342 +DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_NEW_TMSI_ACK +DVLR lu_compl_vlr_fsm(901700000010650){LU_COMPL_VLR_S_WAIT_TMSI_CNF}: Received Event LU_COMPL_VLR_E_NEW_TMSI_ACK +DREF VLR subscr MSISDN:42342 usage increases to: 2 +DVLR lu_compl_vlr_fsm(901700000010650){LU_COMPL_VLR_S_WAIT_TMSI_CNF}: state_chg to LU_COMPL_VLR_S_DONE +DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_LU_COMPL_SUCCESS +DVLR lu_compl_vlr_fsm(901700000010650){LU_COMPL_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT) +DVLR lu_compl_vlr_fsm(901700000010650){LU_COMPL_VLR_S_DONE}: Removing from parent vlr_lu_fsm(901700000010650) +DVLR lu_compl_vlr_fsm(901700000010650){LU_COMPL_VLR_S_DONE}: Freeing instance +DVLR lu_compl_vlr_fsm(901700000010650){LU_COMPL_VLR_S_DONE}: Deallocated +DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_RELEASE_WHEN_UNUSED +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: subscr_conn_fsm_release_when_unused: releasing conn +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_RELEASED +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) +DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT) +DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_DONE}: Removing from parent Subscr_Conn(901700000010650) +DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT +DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_DONE}: Freeing instance +DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_DONE}: Deallocated +DMM msc_subscr_conn_close(vsub=MSISDN:42342, cause=2): no conn fsm, releasing directly without release event. +- Iu Release --RAN_UTRAN_IU--> MS +DREF MSISDN:42342: MSC conn use - fsm == 1 (0x2) +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Freeing instance +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Deallocated +DREF MSISDN:42342: MSC conn use - dtap == 0 (0x0) +DRLL subscr MSISDN:42342: Freeing subscriber connection +DREF VLR subscr MSISDN:42342 usage decreases to: 1 + iu_release_sent == 1 +- LU was successful, and the conn has already been closed + llist_count(&net->subscr_conns) == 0 +DREF VLR subscr MSISDN:42342 usage increases to: 2 + vsub != NULL == 1 + strcmp(vsub->imsi, IMSI) == 0 + vsub->lac == 23 +DREF VLR subscr MSISDN:42342 usage decreases to: 1 +--- +- after a while, MNCC asks us to setup a call, causing Paging +DMNCC receive message MNCC_SETUP_REQ +DREF VLR subscr MSISDN:42342 usage increases to: 2 +DCC (ti ff sub MSISDN:42342 callref 423) New transaction +DREF VLR subscr MSISDN:42342 usage increases to: 3 +DMM Subscriber MSISDN:42342 not paged yet, start paging. + RAN_UTRAN_IU sends out paging request to IMSI 901700000010650, TMSI 0x03020100, LAC 23 + strcmp(paging_expecting_imsi, imsi) == 0 +DREF VLR subscr MSISDN:42342 usage increases to: 4 +DREF VLR subscr MSISDN:42342 usage decreases to: 3 + paging_sent == 1 + paging_stopped == 0 +- MS replies with Paging Response, and VLR sends Auth Request + MSC <--RAN_UTRAN_IU-- MS: GSM48_MT_RR_PAG_RESP + new conn +DREF unknown: MSC conn use + compl_l3 == 1 (0x1) +DRLL Dispatching 04.08 message GSM48_MT_RR_PAG_RESP (0x6:0x27) +DRR PAGING RESPONSE: MI(IMSI)=901700000010650 +DREF unknown: MSC conn use + fsm == 2 (0x5) +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Allocated +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Updated ID from PAGING_RESP +DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: Allocated +DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: is child of Subscr_Conn(901700000010650) +DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: rev=R99 net=UTRAN Auth+Ciph +DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: Received Event PR_ARQ_E_START +DREF VLR subscr MSISDN:42342 usage increases to: 4 +DREF VLR subscr MSISDN:42342 usage increases to: 5 +DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: proc_arq_vlr_fn_post_imsi() +DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: state_chg to PR_ARQ_S_WAIT_AUTH +DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_NEEDS_AUTH}: Allocated +DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_NEEDS_AUTH}: is child of Process_Access_Request_VLR(901700000010650) +DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_NEEDS_AUTH}: Received Event VLR_AUTH_E_START +DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_WAIT_RESP +DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=1 key_seq=1 -- will use UMTS AKA (is_r99=yes, at->vec.auth_types=0x3) +- sending UMTS Auth Request for MSISDN:42342: tuple use_count=1 key_seq=1 auth_types=0x3 and... +- ...rand=c187a53a5e6b9d573cac7c74451fd46d +- ...autn=1843a645b98d00005b2d666af46c45d9 +- ...expecting res=7db47cf7f81e4dc7 +DREF VLR subscr MSISDN:42342 usage decreases to: 4 +DMM MSISDN:42342: subscr_conn_release_when_unused: conn still being established (SUBSCR_CONN_S_NEW) +DREF MSISDN:42342: MSC conn use - compl_l3 == 1 (0x4) + auth_request_sent == 1 +- MS sends Authen Response, VLR accepts and sends SecurityModeControl + MSC <--RAN_UTRAN_IU-- MS: GSM48_MT_MM_AUTH_RESP +DREF MSISDN:42342: MSC conn use + dtap == 2 (0x6) +DRLL Dispatching 04.08 message GSM48_MT_MM_AUTH_RESP (0x5:0x14) +DMM MSISDN:42342: MM UMTS AUTHENTICATION RESPONSE (res = 7db47cf7f81e4dc7) +DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP +DVLR SUBSCR(MSISDN:42342) AUTH on UTRAN received RES: 7db47cf7f81e4dc7 (8 bytes) +DVLR SUBSCR(MSISDN:42342) AUTH established UMTS security context +DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result VLR_AUTH_RES_PASSED +DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED +DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) +DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_AUTHENTICATED}: Removing from parent Process_Access_Request_VLR(901700000010650) +DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_AUTHENTICATED}: Freeing instance +DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_AUTHENTICATED}: Deallocated +DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_WAIT_AUTH}: Received Event PR_ARQ_E_AUTH_RES +DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_WAIT_AUTH}: got VLR_AUTH_RES_PASSED +DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2() +DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_WAIT_AUTH}: Set Ciphering Mode +DMM -> SECURITY MODE CONTROL MSISDN:42342 +- sending SecurityModeControl for UE ctx 42 send_ck=0 new_key=1 +- ...ik=1159ec926a50e98c034a6b7d7c9f418d +DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_WAIT_AUTH}: state_chg to PR_ARQ_S_WAIT_CIPH +DMM MSISDN:42342: subscr_conn_release_when_unused: conn still being established (SUBSCR_CONN_S_NEW) +DREF MSISDN:42342: MSC conn use - dtap == 1 (0x4) + security_mode_ctrl_sent == 1 +- MS sends SecurityModeControl acceptance, VLR accepts, sends CC Setup +DMM <- SECURITY MODE COMPLETE MSISDN:42342 +DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_WAIT_CIPH}: Received Event PR_ARQ_E_CIPH_RES +DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_node2_post_ciph() +DIUCS MSISDN:42342: tx CommonID 901700000010650 +- Iu Common ID --RAN_UTRAN_IU--> MS (IMSI=901700000010650) +DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_node2_post_vlr() +DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_pres() +DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_trace() +DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_imei() +DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_WAIT_CIPH}: proc_arq_fsm_done(VLR_PR_ARQ_RES_PASSED) +DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_WAIT_CIPH}: state_chg to PR_ARQ_S_DONE +DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED +DPAG Paging success for MSISDN:42342 (event=0) +DPAG Calling paging cbfn. +DCC Paging subscr 42342 succeeded! +DREF MSISDN:42342: MSC conn use + trans_cc == 2 (0xc) +DCC starting timer T303 with 30 seconds +DCC (ti 00 sub MSISDN:42342) new state NULL -> CALL_PRESENT +DMSC msc_tx 2 bytes to MSISDN:42342 via RAN_UTRAN_IU +- DTAP --RAN_UTRAN_IU--> MS: GSM48_MT_CC_SETUP: 0305 +- DTAP matches expected message +DREF VLR subscr MSISDN:42342 usage decreases to: 3 +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_RELEASE_WHEN_UNUSED +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: subscr_conn_fsm_release_when_unused: connection still has active transaction: CC + paging_stopped == 1 + MSC <--RAN_UTRAN_IU-- MS: GSM48_MT_CC_CALL_CONF +DREF MSISDN:42342: MSC conn use + dtap == 3 (0xe) +DRLL Dispatching 04.08 message GSM48_MT_CC_CALL_CONF (0x3:0x8) +DCC stopping pending timer T303 +DCC starting timer T310 with 30 seconds +DCC (ti 00 sub MSISDN:42342) new state CALL_PRESENT -> MO_TERM_CALL_CONF + MS <--Call Assignment-- MSC: subscr=MSISDN:42342 callref=0x423 +DMNCC transmit message MNCC_CALL_CONF_IND +DCC Sending 'MNCC_CALL_CONF_IND' to MNCC. + MSC --> MNCC: callref 0x423: MNCC_CALL_CONF_IND +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_RELEASE_WHEN_UNUSED +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_COMMUNICATING}: subscr_conn_fsm_release_when_unused: connection still has active transaction: CC +DREF MSISDN:42342: MSC conn use - dtap == 2 (0xc) +- Total time passed: 1.000023 s + MSC <--RAN_UTRAN_IU-- MS: GSM48_MT_CC_ALERTING +DREF MSISDN:42342: MSC conn use + dtap == 3 (0xe) +DRLL Dispatching 04.08 message GSM48_MT_CC_ALERTING (0x3:0x1) +DCC stopping pending timer T310 +DCC starting timer T301 with 180 seconds +DCC (ti 00 sub MSISDN:42342) new state MO_TERM_CALL_CONF -> CALL_RECEIVED +DMNCC transmit message MNCC_ALERT_IND +DCC Sending 'MNCC_ALERT_IND' to MNCC. + MSC --> MNCC: callref 0x423: MNCC_ALERT_IND +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_COMMUNICATING +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_RELEASE_WHEN_UNUSED +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_COMMUNICATING}: subscr_conn_fsm_release_when_unused: connection still has active transaction: CC +DREF MSISDN:42342: MSC conn use - dtap == 2 (0xc) +- Total time passed: 16.000046 s +- The call failed, the BSC sends a BSSMAP Clear Request +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_CN_CLOSE +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_COMMUNICATING}: state_chg to SUBSCR_CONN_S_RELEASED +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) +DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT) +DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_DONE}: Removing from parent Subscr_Conn(901700000010650) +DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_DONE}: Freeing instance +DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_DONE}: Deallocated +DMM msc_subscr_conn_close(vsub=MSISDN:42342, cause=2): no conn fsm, releasing directly without release event. +DCC stopping pending timer T301 + MS <--Call Release-- MSC: subscr=MSISDN:42342 callref=0x423 +DMNCC receive message MNCC_REL_REQ +DCC (ti 00 sub 42342) Received 'MNCC_REL_REQ' from MNCC in state 7 (CALL_RECEIVED) +DCC starting timer T308 with 10 seconds +DCC (ti 00 sub MSISDN:42342) new state CALL_RECEIVED -> RELEASE_REQ +DMSC msc_tx 2 bytes to MSISDN:42342 via RAN_UTRAN_IU +- DTAP --RAN_UTRAN_IU--> MS: GSM48_MT_CC_RELEASE: 032d +- DTAP matches expected message +DMNCC transmit message MNCC_REL_CNF +DCC Sending 'MNCC_REL_CNF' to MNCC. + MSC --> MNCC: callref 0x423: MNCC_REL_CNF +DCC (ti 00 sub MSISDN:42342) new state RELEASE_REQ -> NULL +DCC MSISDN:42342 Timer 0x308 is still running while discarding transaction -- this is a bug: we were still expecting a response but are freeing the transaction anyway +DREF VLR subscr MSISDN:42342 usage decreases to: 2 +DREF MSISDN:42342: MSC conn use - trans_cc == 1 (0x4) +- Iu Release --RAN_UTRAN_IU--> MS +DREF MSISDN:42342: MSC conn use - fsm == 0 (0x0) +DRLL subscr MSISDN:42342: Freeing subscriber connection +DREF VLR subscr MSISDN:42342 usage decreases to: 1 +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Freeing instance +DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Deallocated + llist_count(&net->subscr_conns) == 0 +- Total time passed: 31.000069 s +DREF freeing VLR subscr MSISDN:42342 +===== test_call_mt2: SUCCESS + +full talloc report on 'msgb' (total 0 bytes in 1 blocks) +talloc_total_blocks(tall_bsc_ctx) == 12 + ===== test_call_mo_to_unknown - Total time passed: 0.000000 s - Location Update request causes a GSUP Send Auth Info request to HLR diff --git a/tests/msc_vlr/msc_vlr_tests.c b/tests/msc_vlr/msc_vlr_tests.c index 45ab5e1..cb716a8 100644 --- a/tests/msc_vlr/msc_vlr_tests.c +++ b/tests/msc_vlr/msc_vlr_tests.c @@ -616,12 +616,19 @@ return 0; } +struct gsm_mncc *on_call_release_mncc_sends_to_cc_data = NULL; + /* override, requires '-Wl,--wrap=msc_mgcp_call_release' */ void __real_msc_mgcp_call_release(struct gsm_trans *trans); void __wrap_msc_mgcp_call_release(struct gsm_trans *trans) { log("MS <--Call Release-- MSC: subscr=%s callref=0x%x", vlr_subscr_name(trans->vsub), trans->callref); + if (on_call_release_mncc_sends_to_cc_data) { + mncc_tx_to_cc(trans->net, on_call_release_mncc_sends_to_cc_data->msg_type, + on_call_release_mncc_sends_to_cc_data); + on_call_release_mncc_sends_to_cc_data = NULL; + } } static int fake_vlr_tx_lu_acc(void *msc_conn_ref, uint32_t send_tmsi) diff --git a/tests/msc_vlr/msc_vlr_tests.h b/tests/msc_vlr/msc_vlr_tests.h index 858936c..15df9ec 100644 --- a/tests/msc_vlr/msc_vlr_tests.h +++ b/tests/msc_vlr/msc_vlr_tests.h @@ -112,6 +112,8 @@ extern bool cc_to_mncc_tx_confirmed; extern uint32_t cc_to_mncc_tx_got_callref; +extern struct gsm_mncc *on_call_release_mncc_sends_to_cc_data; + static inline void expect_iu_release() { iu_release_expected = true; -- To view, visit https://gerrit.osmocom.org/7703 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: Ice7197b48d4e163a3c4d97b559fdcd7e88c4107e Gerrit-PatchSet: 2 Gerrit-Project: osmo-msc Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Neels Hofmeyr From gerrit-no-reply at lists.osmocom.org Tue Apr 10 11:07:11 2018 From: gerrit-no-reply at lists.osmocom.org (Neels Hofmeyr) Date: Tue, 10 Apr 2018 11:07:11 +0000 Subject: [PATCH] libosmocore[master]: deprecate PLMN de-/coding functions incapable of 3-digit MNC... Message-ID: Review at https://gerrit.osmocom.org/7713 deprecate PLMN de-/coding functions incapable of 3-digit MNC with leading zeros All our projects have seen patches to move to 3-digit MNC handling. Furthermore, since our builds no longer break from deprecation warnings, I shall no longer refrain from deprecating old API. Change-Id: I55dfaf7ce74870de44120b26c42d45bb7b184341 --- M include/osmocom/gsm/gsm0808.h M include/osmocom/gsm/gsm48.h 2 files changed, 12 insertions(+), 7 deletions(-) git pull ssh://gerrit.osmocom.org:29418/libosmocore refs/changes/13/7713/1 diff --git a/include/osmocom/gsm/gsm0808.h b/include/osmocom/gsm/gsm0808.h index bbde1a5..369d713 100644 --- a/include/osmocom/gsm/gsm0808.h +++ b/include/osmocom/gsm/gsm0808.h @@ -33,11 +33,12 @@ struct gsm0808_cell_id_list2; struct msgb *gsm0808_create_layer3(struct msgb *msg_l3, uint16_t nc, - uint16_t cc, int lac, uint16_t _ci); + uint16_t cc, int lac, uint16_t _ci) + OSMO_DEPRECATED("Use gsm0808_create_layer3_2() instead, to not lose leading zeros in the MNC"); struct msgb *gsm0808_create_layer3_aoip(const struct msgb *msg_l3, uint16_t nc, uint16_t cc, int lac, uint16_t _ci, - const struct gsm0808_speech_codec_list - *scl); + const struct gsm0808_speech_codec_list *scl) + OSMO_DEPRECATED("Use gsm0808_create_layer3_2() instead, to not lose leading zeros in the MNC"); struct msgb *gsm0808_create_layer3_2(const struct msgb *msg_l3, const struct osmo_cell_global_id *cell, const struct gsm0808_speech_codec_list *scl); struct msgb *gsm0808_create_reset(void); diff --git a/include/osmocom/gsm/gsm48.h b/include/osmocom/gsm/gsm48.h index 7c66a20..cfae83d 100644 --- a/include/osmocom/gsm/gsm48.h +++ b/include/osmocom/gsm/gsm48.h @@ -35,10 +35,12 @@ const char *osmo_rai_name(const struct gprs_ra_id *rai); int gsm48_decode_lai(struct gsm48_loc_area_id *lai, uint16_t *mcc, - uint16_t *mnc, uint16_t *lac); + uint16_t *mnc, uint16_t *lac) + OSMO_DEPRECATED("Use gsm48_decode_lai2() instead, to not lose leading zeros in the MNC"); void gsm48_decode_lai2(const struct gsm48_loc_area_id *lai, struct osmo_location_area_id *decoded); void gsm48_generate_lai(struct gsm48_loc_area_id *lai48, uint16_t mcc, - uint16_t mnc, uint16_t lac); + uint16_t mnc, uint16_t lac) + OSMO_DEPRECATED("Use gsm48_generate_lai2() instead, to not lose leading zeros in the MNC"); void gsm48_generate_lai2(struct gsm48_loc_area_id *lai48, const struct osmo_location_area_id *lai); int gsm48_generate_mid_from_tmsi(uint8_t *buf, uint32_t tmsi); @@ -57,5 +59,7 @@ int gsm48_number_of_paging_subchannels(struct gsm48_control_channel_descr *chan_desc); -void gsm48_mcc_mnc_to_bcd(uint8_t *bcd_dst, uint16_t mcc, uint16_t mnc); -void gsm48_mcc_mnc_from_bcd(uint8_t *bcd_src, uint16_t *mcc, uint16_t *mnc); +void gsm48_mcc_mnc_to_bcd(uint8_t *bcd_dst, uint16_t mcc, uint16_t mnc) + OSMO_DEPRECATED("Use osmo_plmn_to_bcd() instead, to not lose leading zeros in the MNC"); +void gsm48_mcc_mnc_from_bcd(uint8_t *bcd_src, uint16_t *mcc, uint16_t *mnc) + OSMO_DEPRECATED("Use osmo_plmn_from_bcd() instead, to not lose leading zeros in the MNC"); -- To view, visit https://gerrit.osmocom.org/7713 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I55dfaf7ce74870de44120b26c42d45bb7b184341 Gerrit-PatchSet: 1 Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr From gerrit-no-reply at lists.osmocom.org Tue Apr 10 11:08:02 2018 From: gerrit-no-reply at lists.osmocom.org (Neels Hofmeyr) Date: Tue, 10 Apr 2018 11:08:02 +0000 Subject: [PATCH] libosmocore[master]: avoid warning in gsm0808_create_layer3 Message-ID: Review at https://gerrit.osmocom.org/7714 avoid warning in gsm0808_create_layer3 Change-Id: Ie098af4fc9640240196eda10fd61edcb3a872455 --- M src/gsm/gsm0808.c 1 file changed, 11 insertions(+), 1 deletion(-) git pull ssh://gerrit.osmocom.org:29418/libosmocore refs/changes/14/7714/1 diff --git a/src/gsm/gsm0808.c b/src/gsm/gsm0808.c index 27ea035..e6a581c 100644 --- a/src/gsm/gsm0808.c +++ b/src/gsm/gsm0808.c @@ -120,7 +120,17 @@ struct msgb *gsm0808_create_layer3(struct msgb *msg_l3, uint16_t nc, uint16_t cc, int lac, uint16_t _ci) { - return gsm0808_create_layer3_aoip(msg_l3, nc, cc, lac, _ci, NULL); + struct osmo_cell_global_id cgi = { + .lai = { + .plmn = { + .mcc = cc, + .mnc = nc, + }, + .lac = lac, + }, + .cell_identity = _ci, + }; + return gsm0808_create_layer3_2(msg_l3, &cgi, NULL); } /*! Create BSSMAP RESET message -- To view, visit https://gerrit.osmocom.org/7714 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Ie098af4fc9640240196eda10fd61edcb3a872455 Gerrit-PatchSet: 1 Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr From gerrit-no-reply at lists.osmocom.org Tue Apr 10 11:08:26 2018 From: gerrit-no-reply at lists.osmocom.org (Vadim Yanitskiy) Date: Tue, 10 Apr 2018 11:08:26 +0000 Subject: [PATCH] docker-playground[master]: ttcn3-bts-test/jenkins.sh: fix fake_trx.py path Message-ID: Review at https://gerrit.osmocom.org/7715 ttcn3-bts-test/jenkins.sh: fix fake_trx.py path Change-Id: Ie9931651d477dc95c561a5ed554d5360b465d4da --- M ttcn3-bts-test/jenkins.sh 1 file changed, 1 insertion(+), 1 deletion(-) git pull ssh://gerrit.osmocom.org:29418/docker-playground refs/changes/15/7715/1 diff --git a/ttcn3-bts-test/jenkins.sh b/ttcn3-bts-test/jenkins.sh index e54fcbe..00bcde4 100755 --- a/ttcn3-bts-test/jenkins.sh +++ b/ttcn3-bts-test/jenkins.sh @@ -39,7 +39,7 @@ --network $NET_NAME --ip 172.18.9.21 \ --name ${BUILD_TAG}-fake_trx -d \ $REPO_USER/osmocom-bb-trxcon \ - /tmp/osmocom-bb/src/target/fake_trx/fake_trx.py -R 172.18.9.20 -r 172.18.9.22 + /tmp/osmocom-bb/src/target/trx_toolkit/fake_trx.py -R 172.18.9.20 -r 172.18.9.22 echo Starting container with trxcon docker run --rm \ -- To view, visit https://gerrit.osmocom.org/7715 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Ie9931651d477dc95c561a5ed554d5360b465d4da Gerrit-PatchSet: 1 Gerrit-Project: docker-playground Gerrit-Branch: master Gerrit-Owner: Vadim Yanitskiy From gerrit-no-reply at lists.osmocom.org Tue Apr 10 11:16:23 2018 From: gerrit-no-reply at lists.osmocom.org (Neels Hofmeyr) Date: Tue, 10 Apr 2018 11:16:23 +0000 Subject: docker-playground[master]: ttcn3-bts-test/jenkins.sh: fix fake_trx.py path In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 Verified+1 -- To view, visit https://gerrit.osmocom.org/7715 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Ie9931651d477dc95c561a5ed554d5360b465d4da Gerrit-PatchSet: 1 Gerrit-Project: docker-playground Gerrit-Branch: master Gerrit-Owner: Vadim Yanitskiy Gerrit-Reviewer: Neels Hofmeyr Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Tue Apr 10 11:16:24 2018 From: gerrit-no-reply at lists.osmocom.org (Neels Hofmeyr) Date: Tue, 10 Apr 2018 11:16:24 +0000 Subject: [MERGED] docker-playground[master]: ttcn3-bts-test/jenkins.sh: fix fake_trx.py path In-Reply-To: References: Message-ID: Neels Hofmeyr has submitted this change and it was merged. Change subject: ttcn3-bts-test/jenkins.sh: fix fake_trx.py path ...................................................................... ttcn3-bts-test/jenkins.sh: fix fake_trx.py path Change-Id: Ie9931651d477dc95c561a5ed554d5360b465d4da --- M ttcn3-bts-test/jenkins.sh 1 file changed, 1 insertion(+), 1 deletion(-) Approvals: Neels Hofmeyr: Looks good to me, approved; Verified diff --git a/ttcn3-bts-test/jenkins.sh b/ttcn3-bts-test/jenkins.sh index e54fcbe..00bcde4 100755 --- a/ttcn3-bts-test/jenkins.sh +++ b/ttcn3-bts-test/jenkins.sh @@ -39,7 +39,7 @@ --network $NET_NAME --ip 172.18.9.21 \ --name ${BUILD_TAG}-fake_trx -d \ $REPO_USER/osmocom-bb-trxcon \ - /tmp/osmocom-bb/src/target/fake_trx/fake_trx.py -R 172.18.9.20 -r 172.18.9.22 + /tmp/osmocom-bb/src/target/trx_toolkit/fake_trx.py -R 172.18.9.20 -r 172.18.9.22 echo Starting container with trxcon docker run --rm \ -- To view, visit https://gerrit.osmocom.org/7715 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: Ie9931651d477dc95c561a5ed554d5360b465d4da Gerrit-PatchSet: 1 Gerrit-Project: docker-playground Gerrit-Branch: master Gerrit-Owner: Vadim Yanitskiy Gerrit-Reviewer: Neels Hofmeyr From gerrit-no-reply at lists.osmocom.org Tue Apr 10 11:47:24 2018 From: gerrit-no-reply at lists.osmocom.org (lynxis lazus) Date: Tue, 10 Apr 2018 11:47:24 +0000 Subject: osmo-ci[master]: add docker-cleanup.sh script In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+1 (2 comments) LGTM. Some nitpicks. https://gerrit.osmocom.org/#/c/7655/1/scripts/docker-cleanup.sh File scripts/docker-cleanup.sh: PS1, Line 4: ` nitpicks: shellcheck says: - $() instead of ``. `` are legacy - \^osmocom-build could be replaced with ^osmocom-build PS1, Line 6: $f shellcheck: use "$f" instead. -- To view, visit https://gerrit.osmocom.org/7655 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I688b952578507a9cc28fe682221b5c7e3a245519 Gerrit-PatchSet: 1 Gerrit-Project: osmo-ci Gerrit-Branch: master Gerrit-Owner: Harald Welte Gerrit-Reviewer: lynxis lazus Gerrit-HasComments: Yes From gerrit-no-reply at lists.osmocom.org Tue Apr 10 11:51:19 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Tue, 10 Apr 2018 11:51:19 +0000 Subject: osmo-ci[master]: add docker-cleanup.sh script In-Reply-To: References: Message-ID: Patch Set 1: i've merely attached the script we use in production on the non-ansible nodes. pleas take it from here. -- To view, visit https://gerrit.osmocom.org/7655 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I688b952578507a9cc28fe682221b5c7e3a245519 Gerrit-PatchSet: 1 Gerrit-Project: osmo-ci Gerrit-Branch: master Gerrit-Owner: Harald Welte Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: lynxis lazus Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Tue Apr 10 11:51:46 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Tue, 10 Apr 2018 11:51:46 +0000 Subject: libosmocore[master]: deprecate PLMN de-/coding functions incapable of 3-digit MNC... In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7713 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I55dfaf7ce74870de44120b26c42d45bb7b184341 Gerrit-PatchSet: 1 Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Tue Apr 10 11:52:01 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Tue, 10 Apr 2018 11:52:01 +0000 Subject: libosmocore[master]: avoid warning in gsm0808_create_layer3 In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7714 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Ie098af4fc9640240196eda10fd61edcb3a872455 Gerrit-PatchSet: 1 Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Tue Apr 10 11:52:55 2018 From: gerrit-no-reply at lists.osmocom.org (lynxis lazus) Date: Tue, 10 Apr 2018 11:52:55 +0000 Subject: [PATCH] osmo-ci[master]: ansible: docker: cleanup old docker images Message-ID: Review at https://gerrit.osmocom.org/7716 ansible: docker: cleanup old docker images Change-Id: I77fe38775b3f6055691bbf654de4019916b75fd7 --- M ansible/roles/docker/tasks/main.yml 1 file changed, 8 insertions(+), 0 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-ci refs/changes/16/7716/1 diff --git a/ansible/roles/docker/tasks/main.yml b/ansible/roles/docker/tasks/main.yml index 1603175..ea1b24c 100644 --- a/ansible/roles/docker/tasks/main.yml +++ b/ansible/roles/docker/tasks/main.yml @@ -26,3 +26,11 @@ name: "{{ jenkins_user }}" groups: docker append: yes + +- name: cleanup old docker images + cron: + name: cleanup-docker-images + minute: 0 + hour: 2 + user: "{{ jenkins_user }}" + job: "test -x /home/{{ jenkins_user }}/osmo-ci/scripts/docker-cleanup.sh && /home/{{ jenkins_user }}/osmo-ci/scripts/docker-cleanup.sh >/dev/null" -- To view, visit https://gerrit.osmocom.org/7716 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I77fe38775b3f6055691bbf654de4019916b75fd7 Gerrit-PatchSet: 1 Gerrit-Project: osmo-ci Gerrit-Branch: master Gerrit-Owner: lynxis lazus From gerrit-no-reply at lists.osmocom.org Tue Apr 10 11:53:17 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Tue, 10 Apr 2018 11:53:17 +0000 Subject: osmo-ttcn3-hacks[master]: MNCC: don't delete call table entries In-Reply-To: References: Message-ID: Patch Set 1: I don't like this, sorry :( After having lots of basic tests in place, it's very likely that we will start executing more of them in parallel in the near future, at which point 16 entries in the call table will very soon run out if they're not being cleaned up anymore. -- To view, visit https://gerrit.osmocom.org/7711 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I73ec066744475d3cc464e34854175f8cf14cf125 Gerrit-PatchSet: 1 Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Tue Apr 10 11:53:44 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Tue, 10 Apr 2018 11:53:44 +0000 Subject: osmo-ttcn3-hacks[master]: msc: add TC_mo_cc_bssmap_clear to catch OS#3062 In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7712 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Ic80646e1fba37bb6163ca3a7eead7980b4ad7a51 Gerrit-PatchSet: 1 Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Tue Apr 10 11:54:07 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Tue, 10 Apr 2018 11:54:07 +0000 Subject: osmo-ci[master]: ansible: docker: cleanup old docker images In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7716 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I77fe38775b3f6055691bbf654de4019916b75fd7 Gerrit-PatchSet: 1 Gerrit-Project: osmo-ci Gerrit-Branch: master Gerrit-Owner: lynxis lazus Gerrit-Reviewer: Harald Welte Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Tue Apr 10 11:55:08 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Tue, 10 Apr 2018 11:55:08 +0000 Subject: osmo-ci[master]: ansible: docker: cleanup old docker images In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+1 this is only once per night. We've seen this is insufficient on heavy activity on build nodes in the past. I think I wrote it somewhere already (redmine ticket?) that we need this more frequently, like every 6 or 12 hours -- To view, visit https://gerrit.osmocom.org/7716 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I77fe38775b3f6055691bbf654de4019916b75fd7 Gerrit-PatchSet: 1 Gerrit-Project: osmo-ci Gerrit-Branch: master Gerrit-Owner: lynxis lazus Gerrit-Reviewer: Harald Welte Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Tue Apr 10 11:59:49 2018 From: gerrit-no-reply at lists.osmocom.org (lynxis lazus) Date: Tue, 10 Apr 2018 11:59:49 +0000 Subject: [PATCH] osmo-ci[master]: ansible: docker: cleanup old docker images In-Reply-To: References: Message-ID: Hello Harald Welte, I'd like you to reexamine a change. Please visit https://gerrit.osmocom.org/7716 to look at the new patch set (#2). ansible: docker: cleanup old docker images Change-Id: I77fe38775b3f6055691bbf654de4019916b75fd7 --- M ansible/roles/docker/tasks/main.yml 1 file changed, 8 insertions(+), 0 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-ci refs/changes/16/7716/2 diff --git a/ansible/roles/docker/tasks/main.yml b/ansible/roles/docker/tasks/main.yml index 1603175..0a58a2c 100644 --- a/ansible/roles/docker/tasks/main.yml +++ b/ansible/roles/docker/tasks/main.yml @@ -26,3 +26,11 @@ name: "{{ jenkins_user }}" groups: docker append: yes + +- name: cleanup old docker images + cron: + name: cleanup-docker-images + minute: 0 + hour: '*/3' + user: "{{ jenkins_user }}" + job: "test -x /home/{{ jenkins_user }}/osmo-ci/scripts/docker-cleanup.sh && /home/{{ jenkins_user }}/osmo-ci/scripts/docker-cleanup.sh >/dev/null" -- To view, visit https://gerrit.osmocom.org/7716 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newpatchset Gerrit-Change-Id: I77fe38775b3f6055691bbf654de4019916b75fd7 Gerrit-PatchSet: 2 Gerrit-Project: osmo-ci Gerrit-Branch: master Gerrit-Owner: lynxis lazus Gerrit-Reviewer: Harald Welte From gerrit-no-reply at lists.osmocom.org Tue Apr 10 12:00:56 2018 From: gerrit-no-reply at lists.osmocom.org (lynxis lazus) Date: Tue, 10 Apr 2018 12:00:56 +0000 Subject: [PATCH] osmo-ci[master]: ansible: docker: cleanup old docker images In-Reply-To: References: Message-ID: Hello Harald Welte, I'd like you to reexamine a change. Please visit https://gerrit.osmocom.org/7716 to look at the new patch set (#3). ansible: docker: cleanup old docker images Fixes: OS#3144 Change-Id: I77fe38775b3f6055691bbf654de4019916b75fd7 --- M ansible/roles/docker/tasks/main.yml 1 file changed, 8 insertions(+), 0 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-ci refs/changes/16/7716/3 diff --git a/ansible/roles/docker/tasks/main.yml b/ansible/roles/docker/tasks/main.yml index 1603175..0a58a2c 100644 --- a/ansible/roles/docker/tasks/main.yml +++ b/ansible/roles/docker/tasks/main.yml @@ -26,3 +26,11 @@ name: "{{ jenkins_user }}" groups: docker append: yes + +- name: cleanup old docker images + cron: + name: cleanup-docker-images + minute: 0 + hour: '*/3' + user: "{{ jenkins_user }}" + job: "test -x /home/{{ jenkins_user }}/osmo-ci/scripts/docker-cleanup.sh && /home/{{ jenkins_user }}/osmo-ci/scripts/docker-cleanup.sh >/dev/null" -- To view, visit https://gerrit.osmocom.org/7716 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newpatchset Gerrit-Change-Id: I77fe38775b3f6055691bbf654de4019916b75fd7 Gerrit-PatchSet: 3 Gerrit-Project: osmo-ci Gerrit-Branch: master Gerrit-Owner: lynxis lazus Gerrit-Reviewer: Harald Welte From gerrit-no-reply at lists.osmocom.org Tue Apr 10 12:47:27 2018 From: gerrit-no-reply at lists.osmocom.org (lynxis lazus) Date: Tue, 10 Apr 2018 12:47:27 +0000 Subject: [PATCH] osmo-ci[master]: jobs: update-osmo-* reformat a list to be human readable Message-ID: Review at https://gerrit.osmocom.org/7717 jobs: update-osmo-* reformat a list to be human readable Change-Id: Ic64463d3974fdbf3967e67a77c75490d7ca80fb7 --- M jobs/update-osmo-ci-on-slaves.yml M jobs/update-osmo-python-on-slaves.yml 2 files changed, 20 insertions(+), 2 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-ci refs/changes/17/7717/1 diff --git a/jobs/update-osmo-ci-on-slaves.yml b/jobs/update-osmo-ci-on-slaves.yml index 5dcb544..9601b1c 100644 --- a/jobs/update-osmo-ci-on-slaves.yml +++ b/jobs/update-osmo-ci-on-slaves.yml @@ -5,7 +5,16 @@ - axis: type: slave name: label - values: [ OsmocomBuild1, build1-debian9-lxc, build2-deb8build, admin2-deb8build, admin2-deb9build, host2-deb8build-ansible, host2-deb9build-ansible, build2-deb8build-ansible, build2-deb9build-ansible ] + values: + - OsmocomBuild1 + - build1-debian9-lxc + - build2-deb8build + - admin2-deb8build + - admin2-deb9build + - host2-deb8build-ansible + - host2-deb9build-ansible + - build2-deb8build-ansible + - build2-deb9build-ansible properties: - build-discarder: days-to-keep: 30 diff --git a/jobs/update-osmo-python-on-slaves.yml b/jobs/update-osmo-python-on-slaves.yml index 554a273..322ed57 100644 --- a/jobs/update-osmo-python-on-slaves.yml +++ b/jobs/update-osmo-python-on-slaves.yml @@ -5,7 +5,16 @@ - axis: type: slave name: label - values: [ OsmocomBuild1, build1-debian9-lxc, build2-deb8build, admin2-deb8build, admin2-deb9build, host2-deb8build-ansible, host2-deb9build-ansible, build2-deb8build-ansible, build2-deb9build-ansible ] + values: + - OsmocomBuild1 + - build1-debian9-lxc + - build2-deb8build + - admin2-deb8build + - admin2-deb9build + - host2-deb8build-ansible + - host2-deb9build-ansible + - build2-deb8build-ansible + - build2-deb9build-ansible properties: - build-discarder: days-to-keep: 30 -- To view, visit https://gerrit.osmocom.org/7717 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Ic64463d3974fdbf3967e67a77c75490d7ca80fb7 Gerrit-PatchSet: 1 Gerrit-Project: osmo-ci Gerrit-Branch: master Gerrit-Owner: lynxis lazus From gerrit-no-reply at lists.osmocom.org Tue Apr 10 12:47:29 2018 From: gerrit-no-reply at lists.osmocom.org (lynxis lazus) Date: Tue, 10 Apr 2018 12:47:29 +0000 Subject: [PATCH] osmo-ci[master]: jobs: update-osmo*: remove non-existent node build2-deb8build Message-ID: Review at https://gerrit.osmocom.org/7718 jobs: update-osmo*: remove non-existent node build2-deb8build The jobs will stall when trying to handle a non-existent node Change-Id: Id9f25d8a5f6d0521e2b70884f46de5dee14d8092 --- M jobs/update-osmo-ci-on-slaves.yml M jobs/update-osmo-python-on-slaves.yml 2 files changed, 0 insertions(+), 2 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-ci refs/changes/18/7718/1 diff --git a/jobs/update-osmo-ci-on-slaves.yml b/jobs/update-osmo-ci-on-slaves.yml index 9601b1c..98f5c40 100644 --- a/jobs/update-osmo-ci-on-slaves.yml +++ b/jobs/update-osmo-ci-on-slaves.yml @@ -8,7 +8,6 @@ values: - OsmocomBuild1 - build1-debian9-lxc - - build2-deb8build - admin2-deb8build - admin2-deb9build - host2-deb8build-ansible diff --git a/jobs/update-osmo-python-on-slaves.yml b/jobs/update-osmo-python-on-slaves.yml index 322ed57..7a74393 100644 --- a/jobs/update-osmo-python-on-slaves.yml +++ b/jobs/update-osmo-python-on-slaves.yml @@ -8,7 +8,6 @@ values: - OsmocomBuild1 - build1-debian9-lxc - - build2-deb8build - admin2-deb8build - admin2-deb9build - host2-deb8build-ansible -- To view, visit https://gerrit.osmocom.org/7718 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Id9f25d8a5f6d0521e2b70884f46de5dee14d8092 Gerrit-PatchSet: 1 Gerrit-Project: osmo-ci Gerrit-Branch: master Gerrit-Owner: lynxis lazus From gerrit-no-reply at lists.osmocom.org Tue Apr 10 13:09:02 2018 From: gerrit-no-reply at lists.osmocom.org (lynxis lazus) Date: Tue, 10 Apr 2018 13:09:02 +0000 Subject: [PATCH] docker-playground[master]: add .gitreview Message-ID: Review at https://gerrit.osmocom.org/7719 add .gitreview Allows `git review` to automatic setup gerrit Change-Id: I179c02d38496bf3d408020db7f0baf79ee064705 --- A .gitreview 1 file changed, 3 insertions(+), 0 deletions(-) git pull ssh://gerrit.osmocom.org:29418/docker-playground refs/changes/19/7719/1 diff --git a/.gitreview b/.gitreview new file mode 100644 index 0000000..6a6092f --- /dev/null +++ b/.gitreview @@ -0,0 +1,3 @@ +[gerrit] +host=gerrit.osmocom.org +project=docker-playground -- To view, visit https://gerrit.osmocom.org/7719 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I179c02d38496bf3d408020db7f0baf79ee064705 Gerrit-PatchSet: 1 Gerrit-Project: docker-playground Gerrit-Branch: master Gerrit-Owner: lynxis lazus From gerrit-no-reply at lists.osmocom.org Tue Apr 10 13:09:02 2018 From: gerrit-no-reply at lists.osmocom.org (lynxis lazus) Date: Tue, 10 Apr 2018 13:09:02 +0000 Subject: [PATCH] docker-playground[master]: Makefile: use $USER/image when depending on a generated image Message-ID: Review at https://gerrit.osmocom.org/7720 Makefile: use $USER/image when depending on a generated image Te make scripts will generate docker images like "$username/foobar-test". When depending on an previous image, the $username must match or the build will about with image not found. Change-Id: Ied42c3e1de9a2ffaca22ba4cd02e6a398e48e97d --- M m3ua-test/Dockerfile M make/Makefile M sua-test/Dockerfile 3 files changed, 5 insertions(+), 3 deletions(-) git pull ssh://gerrit.osmocom.org:29418/docker-playground refs/changes/20/7720/1 diff --git a/m3ua-test/Dockerfile b/m3ua-test/Dockerfile index edd139a..ba5d17d 100644 --- a/m3ua-test/Dockerfile +++ b/m3ua-test/Dockerfile @@ -1,4 +1,5 @@ -FROM laforge/sigtran-tests +ARG USER=osmocom-build +FROM $USER/sigtran-tests MAINTAINER Harald Welte diff --git a/make/Makefile b/make/Makefile index 21614a8..f492d60 100644 --- a/make/Makefile +++ b/make/Makefile @@ -40,7 +40,7 @@ docker-build: .release - docker build -t $(IMAGE):latest . + docker build --build-arg USER=$(USERNAME) -t $(IMAGE):latest . @DOCKER_MAJOR=$(shell docker -v | sed -e 's/.*version //' -e 's/,.*//' | cut -d\. -f1) ; \ DOCKER_MINOR=$(shell docker -v | sed -e 's/.*version //' -e 's/,.*//' | cut -d\. -f2) ; \ diff --git a/sua-test/Dockerfile b/sua-test/Dockerfile index 141497e..f7f071a 100644 --- a/sua-test/Dockerfile +++ b/sua-test/Dockerfile @@ -1,4 +1,5 @@ -FROM laforge/sigtran-tests +ARG USER=osmocom-build +FROM $USER/sigtran-tests MAINTAINER Harald Welte -- To view, visit https://gerrit.osmocom.org/7720 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Ied42c3e1de9a2ffaca22ba4cd02e6a398e48e97d Gerrit-PatchSet: 1 Gerrit-Project: docker-playground Gerrit-Branch: master Gerrit-Owner: lynxis lazus From gerrit-no-reply at lists.osmocom.org Tue Apr 10 13:09:03 2018 From: gerrit-no-reply at lists.osmocom.org (lynxis lazus) Date: Tue, 10 Apr 2018 13:09:03 +0000 Subject: [PATCH] docker-playground[master]: jenkins-common: move workspace to /tmp/jenkins when build ou... Message-ID: Review at https://gerrit.osmocom.org/7721 jenkins-common: move workspace to /tmp/jenkins when build outside jenkins When users building the scripts, the WORKSPACE variable must be set. Increase the overview of created folders and files by using a subdirectory in /tmp Change-Id: I8a139ef2d23dd8115191e51e86ef0346cb97e4cf --- M jenkins-common.sh 1 file changed, 2 insertions(+), 1 deletion(-) git pull ssh://gerrit.osmocom.org:29418/docker-playground refs/changes/21/7721/1 diff --git a/jenkins-common.sh b/jenkins-common.sh index 4acc6af..8797790 100644 --- a/jenkins-common.sh +++ b/jenkins-common.sh @@ -21,7 +21,8 @@ # non-jenkins execution: put logs in /tmp if [ "x$WORKSPACE" = "x" ]; then - WORKSPACE=/tmp + WORKSPACE=/tmp/jenkins + mkdir -p "$WORKSPACE" fi # non-jenkins execution: put logs in /tmp -- To view, visit https://gerrit.osmocom.org/7721 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I8a139ef2d23dd8115191e51e86ef0346cb97e4cf Gerrit-PatchSet: 1 Gerrit-Project: docker-playground Gerrit-Branch: master Gerrit-Owner: lynxis lazus From gerrit-no-reply at lists.osmocom.org Tue Apr 10 13:11:09 2018 From: gerrit-no-reply at lists.osmocom.org (lynxis lazus) Date: Tue, 10 Apr 2018 13:11:09 +0000 Subject: docker-playground[master]: Makefile: use $USER/image when depending on a generated image In-Reply-To: References: Message-ID: Patch Set 1: This is the last patch required to move nplab- to the new build slaves. -- To view, visit https://gerrit.osmocom.org/7720 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Ied42c3e1de9a2ffaca22ba4cd02e6a398e48e97d Gerrit-PatchSet: 1 Gerrit-Project: docker-playground Gerrit-Branch: master Gerrit-Owner: lynxis lazus Gerrit-Reviewer: lynxis lazus Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Tue Apr 10 14:36:14 2018 From: gerrit-no-reply at lists.osmocom.org (Stefan Sperling) Date: Tue, 10 Apr 2018 14:36:14 +0000 Subject: [PATCH] osmo-bsc[master]: only log actual access control class ramping changes Message-ID: Review at https://gerrit.osmocom.org/7722 only log actual access control class ramping changes Silence log messages about no-op changes to access granted to access control classes. For example, these always occur while configuration files are being loaded. Change-Id: I37580f4058f6e3a21d338234b1e22ea46f9538c6 Related: OS#2591 --- M src/libbsc/acc_ramp.c 1 file changed, 4 insertions(+), 2 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-bsc refs/changes/22/7722/1 diff --git a/src/libbsc/acc_ramp.c b/src/libbsc/acc_ramp.c index 7cace4b..5d35842 100644 --- a/src/libbsc/acc_ramp.c +++ b/src/libbsc/acc_ramp.c @@ -42,14 +42,16 @@ static void allow_one_acc(struct acc_ramp *acc_ramp, unsigned int acc) { OSMO_ASSERT(acc >= 0 && acc <= 9); - LOGP(DRSL, LOGL_DEBUG, "(bts=%d) ACC RAMP: allowing Access Control Class %u\n", acc_ramp->bts->nr, acc); + if (acc_ramp->barred_accs & (1 << acc)) + LOGP(DRSL, LOGL_DEBUG, "(bts=%d) ACC RAMP: allowing Access Control Class %u\n", acc_ramp->bts->nr, acc); acc_ramp->barred_accs &= ~(1 << acc); } static void barr_one_acc(struct acc_ramp *acc_ramp, unsigned int acc) { OSMO_ASSERT(acc >= 0 && acc <= 9); - LOGP(DRSL, LOGL_DEBUG, "(bts=%d) ACC RAMP: barring Access Control Class %u\n", acc_ramp->bts->nr, acc); + if ((acc_ramp->barred_accs & (1 << acc)) == 0) + LOGP(DRSL, LOGL_DEBUG, "(bts=%d) ACC RAMP: barring Access Control Class %u\n", acc_ramp->bts->nr, acc); acc_ramp->barred_accs |= (1 << acc); } -- To view, visit https://gerrit.osmocom.org/7722 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I37580f4058f6e3a21d338234b1e22ea46f9538c6 Gerrit-PatchSet: 1 Gerrit-Project: osmo-bsc Gerrit-Branch: master Gerrit-Owner: Stefan Sperling From gerrit-no-reply at lists.osmocom.org Tue Apr 10 14:44:36 2018 From: gerrit-no-reply at lists.osmocom.org (Stefan Sperling) Date: Tue, 10 Apr 2018 14:44:36 +0000 Subject: [PATCH] osmo-bsc[master]: ensure that acc_ramp_init() is only called once Message-ID: Review at https://gerrit.osmocom.org/7723 ensure that acc_ramp_init() is only called once There are plans to register signal handlers in acc_ramp_init(). Once we do that, the acc_ramp_init() function should only be called once to avoid duplicate signal handlers on the handler list. However, the acc_ramp_init() function currently serves a dual-purpose: 1) Initialize the acc_ramp structure for a bts 2) Enable or disable ACC ramping Add new functions to support use case 2, and call acc_ramp_init() just once while reading the configuration file. The VTY commands which enable/disable ACC ramping use the new APIs instead. Also, rename acc_ramp_start() to acc_ramp_trigger() and tweak its semantics so that it can always be called regardless of what the current configuration settings are. This prepares us for triggering ACC ramping upon events other than "RSL link-up". Change-Id: Ia25bff85d9e5c277da76bffa11d31972e9fdc323 Related: OS2591 --- M include/osmocom/bsc/acc_ramp.h M src/libbsc/acc_ramp.c M src/libbsc/bsc_init.c M src/libbsc/bsc_vty.c 4 files changed, 53 insertions(+), 33 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-bsc refs/changes/23/7723/1 diff --git a/include/osmocom/bsc/acc_ramp.h b/include/osmocom/bsc/acc_ramp.h index cb063bf..abb16a6 100644 --- a/include/osmocom/bsc/acc_ramp.h +++ b/include/osmocom/bsc/acc_ramp.h @@ -141,9 +141,11 @@ rach_control->t3 |= acc_ramp_get_barred_t3(acc_ramp); } -void acc_ramp_init(struct acc_ramp *acc_ramp, bool enable, struct gsm_bts *bts); +void acc_ramp_enable(struct acc_ramp *acc_ramp); +void acc_ramp_disable(struct acc_ramp *acc_ramp); +void acc_ramp_init(struct acc_ramp *acc_ramp, struct gsm_bts *bts); int acc_ramp_set_step_size(struct acc_ramp *acc_ramp, unsigned int step_size); int acc_ramp_set_step_interval(struct acc_ramp *acc_ramp, unsigned int step_interval); void acc_ramp_set_step_interval_dynamic(struct acc_ramp *acc_ramp); -void acc_ramp_start(struct acc_ramp *acc_ramp); +void acc_ramp_trigger(struct acc_ramp *acc_ramp); void acc_ramp_abort(struct acc_ramp *acc_ramp); diff --git a/src/libbsc/acc_ramp.c b/src/libbsc/acc_ramp.c index 7cace4b..e60f638 100644 --- a/src/libbsc/acc_ramp.c +++ b/src/libbsc/acc_ramp.c @@ -71,6 +71,25 @@ } } +/*! + * Enable ACC ramping. Ramping begins when acc_ramp_start() is called. + * \param[in] acc_ramp Pointer to acc_ramp structure. + */ +void acc_ramp_enable(struct acc_ramp *acc_ramp) +{ + acc_ramp->acc_ramping_enabled = true; +} + +/*! + * Disable ACC ramping. + * An ACC ramping process in progress will continue unless acc_ramp_abort() is called as well. + * \param[in] acc_ramp Pointer to acc_ramp structure. + */ +void acc_ramp_disable(struct acc_ramp *acc_ramp) +{ + acc_ramp->acc_ramping_enabled = false; +} + static unsigned int get_next_step_interval(struct acc_ramp *acc_ramp) { struct gsm_bts *bts = acc_ramp->bts; @@ -138,28 +157,20 @@ * Initialize an acc_ramp data structure. * Storage for this structure must be provided by the caller. * - * If ACC ramping is enabled, all ACCs are denied by default. - * A subsequent call to acc_ramp_start() will begin the ramping process. - * If ACC ramping is disabled, all ACCs will be allowed by default, - * and there is no need to do anything else. + * By default, ACC ramping is disabled and all ACCs are allowed. * * \param[in] acc_ramp Pointer to acc_ramp structure to be initialized. - * \param[in] enable Indicates whether ACC ramping should be enabled or disabled. * \param[in] bts BTS which uses this ACC ramp data structure. */ -void acc_ramp_init(struct acc_ramp *acc_ramp, bool enable, struct gsm_bts *bts) +void acc_ramp_init(struct acc_ramp *acc_ramp, struct gsm_bts *bts) { acc_ramp->bts = bts; - acc_ramp->acc_ramping_enabled = enable; + acc_ramp_disable(acc_ramp); acc_ramp->step_size = ACC_RAMP_STEP_SIZE_DEFAULT; acc_ramp->step_interval_sec = ACC_RAMP_STEP_INTERVAL_MIN; acc_ramp->step_interval_is_fixed = false; + allow_all_enabled_accs(acc_ramp); osmo_timer_setup(&acc_ramp->step_timer, do_acc_ramping_step, acc_ramp); - - if (acc_ramp->acc_ramping_enabled) - barr_all_enabled_accs(acc_ramp); - else - allow_all_enabled_accs(acc_ramp); } /*! @@ -209,27 +220,33 @@ } /*! - * Begin the ramping process. Perform at least one ramping step to allow 'step_size' ACCs. - * If 'step_size' is ACC_RAMP_STEP_SIZE_MAX, all ACCs will be allowed immediately. + * Determine if ACC ramping should be started according to configuration, and + * if ACC ramping is enabled, begin the ramping process. + * Perform at least one ramping step to allow 'step_size' ACCs. + * If 'step_size' is ACC_RAMP_STEP_SIZE_MAX, or if ACC ramping is disabled, + * all ACCs will be allowed immediately. * \param[in] acc_ramp Pointer to acc_ramp structure. */ -void acc_ramp_start(struct acc_ramp *acc_ramp) +void acc_ramp_trigger(struct acc_ramp *acc_ramp) { - /* Abort any previously running ramping process. */ + /* Abort any previously running ramping process and allow all available ACCs. */ acc_ramp_abort(acc_ramp); - /* Set all availble ACCs to barred and start ramping up. */ - barr_all_enabled_accs(acc_ramp); - do_acc_ramping_step(acc_ramp); + if (acc_ramp_is_enabled(acc_ramp)) { + /* Set all available ACCs to barred and start ramping up. */ + barr_all_enabled_accs(acc_ramp); + do_acc_ramping_step(acc_ramp); + } } /*! - * Abort the ramping process. If ramping is disabled or has already finished, - * then this function has no effect. + * Abort the ramping process and allow all available ACCs immediately. * \param[in] acc_ramp Pointer to acc_ramp structure. */ void acc_ramp_abort(struct acc_ramp *acc_ramp) { if (osmo_timer_pending(&acc_ramp->step_timer)) osmo_timer_del(&acc_ramp->step_timer); + + allow_all_enabled_accs(acc_ramp); } diff --git a/src/libbsc/bsc_init.c b/src/libbsc/bsc_init.c index d1173e0..c357105 100644 --- a/src/libbsc/bsc_init.c +++ b/src/libbsc/bsc_init.c @@ -336,9 +336,12 @@ rsl_nokia_si_begin(trx); } - /* Configure ACC ramping before sending system information to BTS. */ - if (acc_ramp_is_enabled(&trx->bts->acc_ramp)) - acc_ramp_start(&trx->bts->acc_ramp); + /* + * Trigger ACC ramping before sending system information to BTS. + * This ensures that RACH control in system information is configured correctly. + */ + acc_ramp_trigger(&trx->bts->acc_ramp); + gsm_bts_trx_set_system_infos(trx); if (trx->bts->type == GSM_BTS_TYPE_NOKIA_SITE) { diff --git a/src/libbsc/bsc_vty.c b/src/libbsc/bsc_vty.c index 13e123b..797358d 100644 --- a/src/libbsc/bsc_vty.c +++ b/src/libbsc/bsc_vty.c @@ -1915,7 +1915,7 @@ * Initalize bts->acc_ramp here. Else we could segfault while * processing a configuration file with ACC ramping settings. */ - acc_ramp_init(&bts->acc_ramp, false, bts); + acc_ramp_init(&bts->acc_ramp, bts); } else bts = gsm_bts_num(gsmnet, bts_nr); @@ -3275,7 +3275,7 @@ { struct gsm_bts *bts = vty->index; - acc_ramp_init(&bts->acc_ramp, true, bts); + acc_ramp_enable(&bts->acc_ramp); /* ACC ramping takes effect when the BTS reconnects. */ return CMD_SUCCESS; @@ -3288,11 +3288,9 @@ { struct gsm_bts *bts = vty->index; - if (acc_ramp_is_enabled(&bts->acc_ramp)) { - acc_ramp_abort(&bts->acc_ramp); - acc_ramp_init(&bts->acc_ramp, false, bts); - gsm_bts_set_system_infos(bts); - } + acc_ramp_abort(&bts->acc_ramp); + acc_ramp_disable(&bts->acc_ramp); + gsm_bts_set_system_infos(bts); return CMD_SUCCESS; } -- To view, visit https://gerrit.osmocom.org/7723 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Ia25bff85d9e5c277da76bffa11d31972e9fdc323 Gerrit-PatchSet: 1 Gerrit-Project: osmo-bsc Gerrit-Branch: master Gerrit-Owner: Stefan Sperling From gerrit-no-reply at lists.osmocom.org Tue Apr 10 14:56:40 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Tue, 10 Apr 2018 14:56:40 +0000 Subject: osmo-ci[master]: ansible: docker: cleanup old docker images In-Reply-To: References: Message-ID: Patch Set 3: Code-Review+2 Verified+1 -- To view, visit https://gerrit.osmocom.org/7716 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I77fe38775b3f6055691bbf654de4019916b75fd7 Gerrit-PatchSet: 3 Gerrit-Project: osmo-ci Gerrit-Branch: master Gerrit-Owner: lynxis lazus Gerrit-Reviewer: Harald Welte Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Tue Apr 10 14:56:44 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Tue, 10 Apr 2018 14:56:44 +0000 Subject: [MERGED] osmo-ci[master]: ansible: docker: cleanup old docker images In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: ansible: docker: cleanup old docker images ...................................................................... ansible: docker: cleanup old docker images Fixes: OS#3144 Change-Id: I77fe38775b3f6055691bbf654de4019916b75fd7 --- M ansible/roles/docker/tasks/main.yml 1 file changed, 8 insertions(+), 0 deletions(-) Approvals: Harald Welte: Looks good to me, approved; Verified diff --git a/ansible/roles/docker/tasks/main.yml b/ansible/roles/docker/tasks/main.yml index 1603175..0a58a2c 100644 --- a/ansible/roles/docker/tasks/main.yml +++ b/ansible/roles/docker/tasks/main.yml @@ -26,3 +26,11 @@ name: "{{ jenkins_user }}" groups: docker append: yes + +- name: cleanup old docker images + cron: + name: cleanup-docker-images + minute: 0 + hour: '*/3' + user: "{{ jenkins_user }}" + job: "test -x /home/{{ jenkins_user }}/osmo-ci/scripts/docker-cleanup.sh && /home/{{ jenkins_user }}/osmo-ci/scripts/docker-cleanup.sh >/dev/null" -- To view, visit https://gerrit.osmocom.org/7716 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: I77fe38775b3f6055691bbf654de4019916b75fd7 Gerrit-PatchSet: 3 Gerrit-Project: osmo-ci Gerrit-Branch: master Gerrit-Owner: lynxis lazus Gerrit-Reviewer: Harald Welte From gerrit-no-reply at lists.osmocom.org Tue Apr 10 14:57:26 2018 From: gerrit-no-reply at lists.osmocom.org (lynxis lazus) Date: Tue, 10 Apr 2018 14:57:26 +0000 Subject: [PATCH] osmo-ci[master]: osmocom-jenkins-slave: call fstrim periodically Message-ID: Review at https://gerrit.osmocom.org/7724 osmocom-jenkins-slave: call fstrim periodically Change-Id: I82c497f476abf43148e8d7c027f53b87b5a738fb --- M ansible/hosts M ansible/roles/osmocom-jenkins-slave/defaults/main.yml M ansible/roles/osmocom-jenkins-slave/tasks/main.yml 3 files changed, 13 insertions(+), 3 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-ci refs/changes/24/7724/1 diff --git a/ansible/hosts b/ansible/hosts index ea5dea4..57896a9 100644 --- a/ansible/hosts +++ b/ansible/hosts @@ -11,8 +11,8 @@ [jenkins-slaves] admin2-deb8build ansible_host=2a01:4f8:13b:828::1:400 -admin2-deb9build ansible_host=2a01:4f8:13b:828::1:300 +admin2-deb9build ansible_host=2a01:4f8:13b:828::1:300 osmocom_jenkins_slave_fstrim=True build2-deb8build-ansible ansible_host=2a01:4f8:10b:2ad9::1:7 -build2-deb9build-ansible ansible_host=2a01:4f8:10b:2ad9::1:6 +build2-deb9build-ansible ansible_host=2a01:4f8:10b:2ad9::1:6 osmocom_jenkins_slave_fstrim=True host2-deb8build-ansible ansible_host=2a01:4f8:120:8470::1:2 -host2-deb9build-ansible ansible_host=2a01:4f8:120:8470::1:3 +host2-deb9build-ansible ansible_host=2a01:4f8:120:8470::1:3 osmocom_jenkins_slave_fstrim=True diff --git a/ansible/roles/osmocom-jenkins-slave/defaults/main.yml b/ansible/roles/osmocom-jenkins-slave/defaults/main.yml index 3f2fa8a..e32b5a0 100644 --- a/ansible/roles/osmocom-jenkins-slave/defaults/main.yml +++ b/ansible/roles/osmocom-jenkins-slave/defaults/main.yml @@ -9,3 +9,6 @@ # Setup the ttcn3 requirements ttcn3_slave: true + +# call fstrim peridically +osmocom_jenkins_slave_fstrim: false diff --git a/ansible/roles/osmocom-jenkins-slave/tasks/main.yml b/ansible/roles/osmocom-jenkins-slave/tasks/main.yml index 805a81e..45637f1 100644 --- a/ansible/roles/osmocom-jenkins-slave/tasks/main.yml +++ b/ansible/roles/osmocom-jenkins-slave/tasks/main.yml @@ -106,3 +106,10 @@ copy: src: gitconfig dest: "/home/{{ jenkins_user }}/.gitconfig" + +- name: call fstrim periodically + cron: + name: "fstrim" + hour: "*/12" + job: "fstrim / >/dev/null 2>/dev/null || true" + when: osmocom_jenkins_slave_fstrim -- To view, visit https://gerrit.osmocom.org/7724 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I82c497f476abf43148e8d7c027f53b87b5a738fb Gerrit-PatchSet: 1 Gerrit-Project: osmo-ci Gerrit-Branch: master Gerrit-Owner: lynxis lazus From jenkins at lists.osmocom.org Tue Apr 10 15:07:17 2018 From: jenkins at lists.osmocom.org (jenkins at lists.osmocom.org) Date: Tue, 10 Apr 2018 15:07:17 +0000 (UTC) Subject: =?UTF-8?Q?Build_failed_in_Jenkins:_master-osmo-gsm-manuals_=C2=BB_a?= =?UTF-8?Q?1=3Ddefault,a2=3Ddefault,a3=3Ddefault,admin2-deb9build_#104?= Message-ID: <688697491.232.1523372837614.JavaMail.jenkins@jenkins.osmocom.org> See ------------------------------------------ Started by upstream project "master-osmo-gsm-manuals" build number 104 originally caused by: Started by timer Building remotely on admin2-deb9build (osmo-gsm-tester-build osmocom-gerrit-debian9 osmocom-master-debian9 coverity) in workspace [ssh-agent] Looking for ssh-agent implementation... [ssh-agent] Exec ssh-agent (binary ssh-agent on a remote machine) $ ssh-agent SSH_AUTH_SOCK=/tmp/ssh-hImVWrm4ZWmt/agent.1374 SSH_AGENT_PID=1376 [ssh-agent] Started. $ ssh-add Identity added: ( [ssh-agent] Using credentials api Cloning the remote Git repository Cloning repository git://git.osmocom.org/osmo-gsm-manuals > git init # timeout=10 Fetching upstream changes from git://git.osmocom.org/osmo-gsm-manuals > git --version # timeout=10 > git fetch --tags --progress git://git.osmocom.org/osmo-gsm-manuals +refs/heads/*:refs/remotes/origin/* > git config remote.origin.url git://git.osmocom.org/osmo-gsm-manuals # timeout=10 > git config --add remote.origin.fetch +refs/heads/*:refs/remotes/origin/* # timeout=10 > git config remote.origin.url git://git.osmocom.org/osmo-gsm-manuals # timeout=10 Fetching upstream changes from git://git.osmocom.org/osmo-gsm-manuals > git fetch --tags --progress git://git.osmocom.org/osmo-gsm-manuals +refs/heads/*:refs/remotes/origin/* Checking out Revision d5b6a78b9f38c07ce231e195b9bce627e74b160d (refs/remotes/origin/master) > git config core.sparsecheckout # timeout=10 > git checkout -f d5b6a78b9f38c07ce231e195b9bce627e74b160d Commit message: "message sequence charts for GSM <-> SIP codec selection" First time build. Skipping changelog. [admin2-deb9build] $ /bin/sh -xe /tmp/jenkins7127676175858053446.sh + ./contrib/jenkins.sh --publish + publish=--publish + base= + deps= + export deps + osmo-clean-workspace.sh + chmod -R +w . + git checkout -f HEAD + git clean -dxf + [ -d ] + [ -d layer1-headers ] + mkdir + cd + osmo-deps.sh libosmocore + project=libosmocore + branch=master + git branch -a + grep -c remotes/origin/master$ + [ x1 != x0 ] + branch=origin/master + test -d libosmocore + git clone git://git.osmocom.org/libosmocore libosmocore Cloning into 'libosmocore'... + cd libosmocore + git fetch --tags origin + git fetch origin + deps= osmo-clean-workspace.sh + chmod -R +w . + git checkout -f HEAD Your branch is up-to-date with 'origin/master'. + git clean -dxf + [ -d ] + [ -d layer1-headers ] + git checkout -f origin/master Note: checking out 'origin/master'. You are in 'detached HEAD' state. You can look around, make experimental changes and commit them, and you can discard any commits you make in this state without impacting any branches by performing another checkout. If you want to create a new branch to retain commits you create, you may do so (now or later) by using -b with the checkout command again. Example: git checkout -b HEAD is now at cefce668... fix issue on big endian architecture + git rev-parse HEAD cefce6688b00f05013cc869b2f6ecb080eeb9da4 + cd + make -j 4 LIBOSMO_DIR= Binary 'packetdiag' not found in path, please install nwdiag. Makefile:84: recipe for target 'check-deps' failed make: *** [check-deps] Error 1 Build step 'Execute shell' marked build as failure $ ssh-agent -k unset SSH_AUTH_SOCK; unset SSH_AGENT_PID; echo Agent pid 1376 killed; [ssh-agent] Stopped. [WARNINGS] Skipping publisher since build result is FAILURE From jenkins at lists.osmocom.org Tue Apr 10 15:10:05 2018 From: jenkins at lists.osmocom.org (jenkins at lists.osmocom.org) Date: Tue, 10 Apr 2018 15:10:05 +0000 (UTC) Subject: =?UTF-8?Q?Build_failed_in_Jenkins:_master-asn1c_=C2=BB_a1=3Ddefaul?= =?UTF-8?Q?t,a2=3Ddefault,a3=3Ddefault,osmocom-master-debian9_#83?= In-Reply-To: <592338669.191.1523286606487.JavaMail.jenkins@jenkins.osmocom.org> References: <592338669.191.1523286606487.JavaMail.jenkins@jenkins.osmocom.org> Message-ID: <242652371.233.1523373005247.JavaMail.jenkins@jenkins.osmocom.org> See ------------------------------------------ [...truncated 3.66 KB...] + ./configure checking build system type... x86_64-unknown-linux-gnu checking host system type... x86_64-unknown-linux-gnu checking target system type... x86_64-unknown-linux-gnu checking for a BSD-compatible install... /usr/bin/install -c checking whether build environment is sane... yes checking for gawk... gawk checking whether make sets $(MAKE)... yes checking whether to enable maintainer-specific portions of Makefiles... no checking for style of include used by make... GNU checking for gcc... gcc checking for C compiler default output file name... a.out checking whether the C compiler works... yes checking whether we are cross compiling... no checking for suffix of executables... checking for suffix of object files... o checking whether we are using the GNU C compiler... yes checking whether gcc accepts -g... yes checking for gcc option to accept ISO C89... none needed checking dependency style of gcc... gcc3 checking for a sed that does not truncate output... /bin/sed checking for grep that handles long lines and -e... /bin/grep checking for egrep... /bin/grep -E checking for ld used by gcc... /usr/bin/ld checking if the linker (/usr/bin/ld) is GNU ld... yes checking for /usr/bin/ld option to reload object files... -r checking for BSD-compatible nm... /usr/bin/nm -B checking whether ln -s works... yes checking how to recognise dependent libraries... pass_all checking how to run the C preprocessor... gcc -E checking for ANSI C header files... yes checking for sys/types.h... yes checking for sys/stat.h... yes checking for stdlib.h... yes checking for string.h... yes checking for memory.h... yes checking for strings.h... yes checking for inttypes.h... yes checking for stdint.h... yes checking for unistd.h... yes checking dlfcn.h usability... yes checking dlfcn.h presence... yes checking for dlfcn.h... yes checking for g++... g++ checking whether we are using the GNU C++ compiler... yes checking whether g++ accepts -g... yes checking dependency style of g++... gcc3 checking how to run the C++ preprocessor... g++ -E checking for g77... no checking for f77... no checking for xlf... no checking for frt... no checking for pgf77... no checking for cf77... no checking for fort77... no checking for fl32... no checking for af77... no checking for f90... no checking for xlf90... no checking for pgf90... no checking for pghpf... no checking for epcf90... no checking for gfortran... no checking for g95... no checking for f95... no checking for fort... no checking for xlf95... no checking for ifort... no checking for ifc... no checking for efc... no checking for pgf95... no checking for lf95... no checking for ftn... no checking whether we are using the GNU Fortran 77 compiler... no checking whether accepts -g... no checking the maximum length of command line arguments... 32768 checking command to parse /usr/bin/nm -B output from gcc object... ok checking for objdir... .libs checking for ar... ar checking for ranlib... ranlib checking for strip... strip checking if gcc supports -fno-rtti -fno-exceptions... no checking for gcc option to produce PIC... -fPIC checking if gcc PIC flag -fPIC works... yes checking if gcc static flag -static works... yes checking if gcc supports -c -o file.o... yes checking whether the gcc linker (/usr/bin/ld -m elf_x86_64) supports shared libraries... yes checking whether -lc should be explicitly linked in... no checking dynamic linker characteristics... GNU/Linux ld.so checking how to hardcode library paths into programs... immediate checking whether stripping libraries is possible... yes checking if libtool supports shared libraries... yes checking whether to build shared libraries... yes checking whether to build static libraries... yes configure: creating libtool appending configuration tag "CXX" to libtool checking for ld used by g++... /usr/bin/ld -m elf_x86_64 checking if the linker (/usr/bin/ld -m elf_x86_64) is GNU ld... yes checking whether the g++ linker (/usr/bin/ld -m elf_x86_64) supports shared libraries... yes checking for g++ option to produce PIC... -fPIC checking if g++ PIC flag -fPIC works... yes checking if g++ static flag -static works... yes checking if g++ supports -c -o file.o... yes checking whether the g++ linker (/usr/bin/ld -m elf_x86_64) supports shared libraries... yes checking dynamic linker characteristics... GNU/Linux ld.so checking how to hardcode library paths into programs... immediate appending configuration tag "F77" to libtool checking for autoconf... /usr/bin/autoconf checking for autoheader... /usr/bin/autoheader checking for gcc... (cached) gcc checking whether we are using the GNU C compiler... (cached) yes checking whether gcc accepts -g... (cached) yes checking for gcc option to accept ISO C89... (cached) none needed checking dependency style of gcc... (cached) gcc3 checking how to run the C preprocessor... gcc -E checking for a BSD-compatible install... /usr/bin/install -c checking whether ln -s works... yes checking whether make sets $(MAKE)... (cached) yes checking for bison... bison -y checking for flex... flex checking for yywrap in -lfl... yes checking lex output file root... lex.yy checking whether yytext is a pointer... yes checking for ar... /usr/bin/ar checking for ANSI C header files... (cached) yes checking sys/param.h usability... yes checking sys/param.h presence... yes checking for sys/param.h... yes checking whether byte ordering is bigendian... no checking for off_t... yes checking for size_t... yes checking whether struct tm is in sys/time.h or time.h... time.h checking for intmax_t... yes checking for library containing getopt... none required checking for strtoimax... yes checking for strtoll... yes checking for mergesort... no checking for mkstemps... yes configure: creating ./config.status config.status: creating skeletons/standard-modules/Makefile config.status: creating skeletons/tests/Makefile config.status: creating libasn1compiler/Makefile config.status: creating libasn1parser/Makefile config.status: creating libasn1print/Makefile config.status: creating asn1c/webcgi/Makefile config.status: creating asn1c/tests/Makefile config.status: creating libasn1fix/Makefile config.status: creating skeletons/Makefile config.status: creating examples/Makefile config.status: creating tests/Makefile config.status: creating asn1c/Makefile config.status: creating doc/Makefile config.status: creating asn1c.spec config.status: creating Makefile config.status: creating config.h config.status: executing depfiles commands + make -j 4 make all-recursive make[1]: Entering directory ' Making all in libasn1parser make[2]: Entering directory ' if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1parser.lo -MD -MP -MF ".deps/asn1parser.Tpo" -c -o asn1parser.lo asn1parser.c; \ then mv -f ".deps/asn1parser.Tpo" ".deps/asn1parser.Plo"; else rm -f ".deps/asn1parser.Tpo"; exit 1; fi bison -y -p asn1p_ -d asn1p_y.y if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_l.lo -MD -MP -MF ".deps/asn1p_l.Tpo" -c -o asn1p_l.lo asn1p_l.c; \ then mv -f ".deps/asn1p_l.Tpo" ".deps/asn1p_l.Plo"; else rm -f ".deps/asn1p_l.Tpo"; exit 1; fi if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_module.lo -MD -MP -MF ".deps/asn1p_module.Tpo" -c -o asn1p_module.lo asn1p_module.c; \ then mv -f ".deps/asn1p_module.Tpo" ".deps/asn1p_module.Plo"; else rm -f ".deps/asn1p_module.Tpo"; exit 1; fi asn1p_y.y: warning: 2 shift/reduce conflicts [-Wconflicts-sr] mkdir .libs gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_l.lo -MD -MP -MF .deps/asn1p_l.Tpo -c asn1p_l.c -fPIC -DPIC -o .libs/asn1p_l.o gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1parser.lo -MD -MP -MF .deps/asn1parser.Tpo -c asn1parser.c -fPIC -DPIC -o .libs/asn1parser.o gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_module.lo -MD -MP -MF .deps/asn1p_module.Tpo -c asn1p_module.c -fPIC -DPIC -o .libs/asn1p_module.o gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_module.lo -MD -MP -MF .deps/asn1p_module.Tpo -c asn1p_module.c -o asn1p_module.o >/dev/null 2>&1 asn1p_l.c:3521:12: warning: 'input' defined but not used [-Wunused-function] static int input() ^~~~~ gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1parser.lo -MD -MP -MF .deps/asn1parser.Tpo -c asn1parser.c -o asn1parser.o >/dev/null 2>&1 if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_oid.lo -MD -MP -MF ".deps/asn1p_oid.Tpo" -c -o asn1p_oid.lo asn1p_oid.c; \ then mv -f ".deps/asn1p_oid.Tpo" ".deps/asn1p_oid.Plo"; else rm -f ".deps/asn1p_oid.Tpo"; exit 1; fi if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_value.lo -MD -MP -MF ".deps/asn1p_value.Tpo" -c -o asn1p_value.lo asn1p_value.c; \ then mv -f ".deps/asn1p_value.Tpo" ".deps/asn1p_value.Plo"; else rm -f ".deps/asn1p_value.Tpo"; exit 1; fi gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_oid.lo -MD -MP -MF .deps/asn1p_oid.Tpo -c asn1p_oid.c -fPIC -DPIC -o .libs/asn1p_oid.o if test -f y.tab.h; then \ to=`echo "asn1p_y_H" | sed \ -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/' \ -e 's/[^ABCDEFGHIJKLMNOPQRSTUVWXYZ]/_/g'`; \ sed -e "/^#/!b" -e "s/Y_TAB_H/$to/g" -e "s|y\.tab\.h|asn1p_y.h|" \ y.tab.h >asn1p_y.ht; \ rm -f y.tab.h; \ if cmp -s asn1p_y.ht asn1p_y.h; then \ rm -f asn1p_y.ht ;\ else \ mv asn1p_y.ht asn1p_y.h; \ fi; \ fi if test -f y.output; then \ mv y.output asn1p_y.output; \ fi sed '/^#/ s|y\.tab\.c|asn1p_y.c|' y.tab.c >asn1p_y.ct && mv asn1p_y.ct asn1p_y.c rm -f y.tab.c if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_expr.lo -MD -MP -MF ".deps/asn1p_expr.Tpo" -c -o asn1p_expr.lo asn1p_expr.c; \ then mv -f ".deps/asn1p_expr.Tpo" ".deps/asn1p_expr.Plo"; else rm -f ".deps/asn1p_expr.Tpo"; exit 1; fi gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_value.lo -MD -MP -MF .deps/asn1p_value.Tpo -c asn1p_value.c -fPIC -DPIC -o .libs/asn1p_value.o gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_oid.lo -MD -MP -MF .deps/asn1p_oid.Tpo -c asn1p_oid.c -o asn1p_oid.o >/dev/null 2>&1 gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_expr.lo -MD -MP -MF .deps/asn1p_expr.Tpo -c asn1p_expr.c -fPIC -DPIC -o .libs/asn1p_expr.o gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_value.lo -MD -MP -MF .deps/asn1p_value.Tpo -c asn1p_value.c -o asn1p_value.o >/dev/null 2>&1 if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_xports.lo -MD -MP -MF ".deps/asn1p_xports.Tpo" -c -o asn1p_xports.lo asn1p_xports.c; \ then mv -f ".deps/asn1p_xports.Tpo" ".deps/asn1p_xports.Plo"; else rm -f ".deps/asn1p_xports.Tpo"; exit 1; fi gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_l.lo -MD -MP -MF .deps/asn1p_l.Tpo -c asn1p_l.c -o asn1p_l.o >/dev/null 2>&1 gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_expr.lo -MD -MP -MF .deps/asn1p_expr.Tpo -c asn1p_expr.c -o asn1p_expr.o >/dev/null 2>&1 gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_xports.lo -MD -MP -MF .deps/asn1p_xports.Tpo -c asn1p_xports.c -fPIC -DPIC -o .libs/asn1p_xports.o if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_constr.lo -MD -MP -MF ".deps/asn1p_constr.Tpo" -c -o asn1p_constr.lo asn1p_constr.c; \ then mv -f ".deps/asn1p_constr.Tpo" ".deps/asn1p_constr.Plo"; else rm -f ".deps/asn1p_constr.Tpo"; exit 1; fi gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_xports.lo -MD -MP -MF .deps/asn1p_xports.Tpo -c asn1p_xports.c -o asn1p_xports.o >/dev/null 2>&1 if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_param.lo -MD -MP -MF ".deps/asn1p_param.Tpo" -c -o asn1p_param.lo asn1p_param.c; \ then mv -f ".deps/asn1p_param.Tpo" ".deps/asn1p_param.Plo"; else rm -f ".deps/asn1p_param.Tpo"; exit 1; fi gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_constr.lo -MD -MP -MF .deps/asn1p_constr.Tpo -c asn1p_constr.c -fPIC -DPIC -o .libs/asn1p_constr.o if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_class.lo -MD -MP -MF ".deps/asn1p_class.Tpo" -c -o asn1p_class.lo asn1p_class.c; \ then mv -f ".deps/asn1p_class.Tpo" ".deps/asn1p_class.Plo"; else rm -f ".deps/asn1p_class.Tpo"; exit 1; fi gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_param.lo -MD -MP -MF .deps/asn1p_param.Tpo -c asn1p_param.c -fPIC -DPIC -o .libs/asn1p_param.o gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_class.lo -MD -MP -MF .deps/asn1p_class.Tpo -c asn1p_class.c -fPIC -DPIC -o .libs/asn1p_class.o gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_constr.lo -MD -MP -MF .deps/asn1p_constr.Tpo -c asn1p_constr.c -o asn1p_constr.o >/dev/null 2>&1 gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_param.lo -MD -MP -MF .deps/asn1p_param.Tpo -c asn1p_param.c -o asn1p_param.o >/dev/null 2>&1 if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_ref.lo -MD -MP -MF ".deps/asn1p_ref.Tpo" -c -o asn1p_ref.lo asn1p_ref.c; \ then mv -f ".deps/asn1p_ref.Tpo" ".deps/asn1p_ref.Plo"; else rm -f ".deps/asn1p_ref.Tpo"; exit 1; fi gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_class.lo -MD -MP -MF .deps/asn1p_class.Tpo -c asn1p_class.c -o asn1p_class.o >/dev/null 2>&1 if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_y.lo -MD -MP -MF ".deps/asn1p_y.Tpo" -c -o asn1p_y.lo asn1p_y.c; \ then mv -f ".deps/asn1p_y.Tpo" ".deps/asn1p_y.Plo"; else rm -f ".deps/asn1p_y.Tpo"; exit 1; fi gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_ref.lo -MD -MP -MF .deps/asn1p_ref.Tpo -c asn1p_ref.c -fPIC -DPIC -o .libs/asn1p_ref.o gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_y.lo -MD -MP -MF .deps/asn1p_y.Tpo -c asn1p_y.c -fPIC -DPIC -o .libs/asn1p_y.o asn1p_y.y: In function 'asn1p_parse': asn1p_y.y:357:13: error: 'param' undeclared (first use in this function) *(void **)param = $1; ^~~~~ asn1p_y.y:357:13: note: each undeclared identifier is reported only once for each function it appears in gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_ref.lo -MD -MP -MF .deps/asn1p_ref.Tpo -c asn1p_ref.c -o asn1p_ref.o >/dev/null 2>&1 Makefile:299: recipe for target 'asn1p_y.lo' failed make[2]: *** [asn1p_y.lo] Error 1 make[2]: *** Waiting for unfinished jobs.... make[2]: Leaving directory ' Makefile:302: recipe for target 'all-recursive' failed make[1]: *** [all-recursive] Error 1 make[1]: Leaving directory ' Makefile:212: recipe for target 'all' failed make: *** [all] Error 2 Build step 'Execute shell' marked build as failure [WARNINGS]Skipping publisher since build result is FAILURE From gerrit-no-reply at lists.osmocom.org Tue Apr 10 15:15:51 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Tue, 10 Apr 2018 15:15:51 +0000 Subject: osmo-ci[master]: osmocom-jenkins-slave: call fstrim periodically In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7724 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I82c497f476abf43148e8d7c027f53b87b5a738fb Gerrit-PatchSet: 1 Gerrit-Project: osmo-ci Gerrit-Branch: master Gerrit-Owner: lynxis lazus Gerrit-Reviewer: Harald Welte Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Tue Apr 10 15:16:29 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Tue, 10 Apr 2018 15:16:29 +0000 Subject: docker-playground[master]: Makefile: use $USER/image when depending on a generated image In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7720 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Ied42c3e1de9a2ffaca22ba4cd02e6a398e48e97d Gerrit-PatchSet: 1 Gerrit-Project: docker-playground Gerrit-Branch: master Gerrit-Owner: lynxis lazus Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: lynxis lazus Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Tue Apr 10 15:16:38 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Tue, 10 Apr 2018 15:16:38 +0000 Subject: docker-playground[master]: add .gitreview In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7719 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I179c02d38496bf3d408020db7f0baf79ee064705 Gerrit-PatchSet: 1 Gerrit-Project: docker-playground Gerrit-Branch: master Gerrit-Owner: lynxis lazus Gerrit-Reviewer: Harald Welte Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Tue Apr 10 15:16:44 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Tue, 10 Apr 2018 15:16:44 +0000 Subject: docker-playground[master]: add .gitreview In-Reply-To: References: Message-ID: Patch Set 1: Verified+1 -- To view, visit https://gerrit.osmocom.org/7719 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I179c02d38496bf3d408020db7f0baf79ee064705 Gerrit-PatchSet: 1 Gerrit-Project: docker-playground Gerrit-Branch: master Gerrit-Owner: lynxis lazus Gerrit-Reviewer: Harald Welte Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Tue Apr 10 15:16:45 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Tue, 10 Apr 2018 15:16:45 +0000 Subject: docker-playground[master]: Makefile: use $USER/image when depending on a generated image In-Reply-To: References: Message-ID: Patch Set 1: Verified+1 -- To view, visit https://gerrit.osmocom.org/7720 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Ied42c3e1de9a2ffaca22ba4cd02e6a398e48e97d Gerrit-PatchSet: 1 Gerrit-Project: docker-playground Gerrit-Branch: master Gerrit-Owner: lynxis lazus Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: lynxis lazus Gerrit-HasComments: No From jenkins at lists.osmocom.org Tue Apr 10 15:21:53 2018 From: jenkins at lists.osmocom.org (jenkins at lists.osmocom.org) Date: Tue, 10 Apr 2018 15:21:53 +0000 (UTC) Subject: =?UTF-8?Q?Build_failed_in_Jenkins:_master-osmo-gsm-manuals_=C2=BB_a?= =?UTF-8?Q?1=3Ddefault,a2=3Ddefault,a3=3Ddefault,admin2-deb9build_#105?= Message-ID: <669730396.234.1523373713502.JavaMail.jenkins@jenkins.osmocom.org> See ------------------------------------------ [...truncated 101.23 KB...] warning: failed to load external entity " warning: failed to load external entity " warning: failed to load external entity " warning: failed to load external entity " warning: failed to load external entity " warning: failed to load external entity " warning: failed to load external entity " warning: failed to load external entity " warning: failed to load external entity " warning: failed to load external entity " warning: failed to load external entity " warning: failed to load external entity " warning: failed to load external entity " warning: failed to load external entity " warning: failed to load external entity " warning: failed to load external entity " warning: failed to load external entity " warning: failed to load external entity " warning: failed to load external entity " warning: failed to load external entity " warning: failed to load external entity " + [ -n ] xsltproc ../vty_reference.xsl generated/combined.xml \ > generated/docbook_vty.xml dblatex -P draft.mode=no osmostp-vty-reference.xml Build the book set list... Build the listings... XSLT stylesheets DocBook - LaTeX 2e (0.3.9-3) =================================================== Stripping NS from DocBook 5/NG document. Processing stripped document. Build osmostp-vty-reference.pdf 'osmostp-vty-reference.pdf' successfully built make[1]: Leaving directory ' cd OsmocomBB; make make[1]: Entering directory ' a2x -L --asciidoc-opts="-f ../build/mscgen-filter.conf -f ../build/diag-filter.conf -f ../build/docinfo-releaseinfo.conf -f ../build/python2-filter.conf" --dblatex-opts="-s ../build/custom-dblatex.sty -P draft.mode=yes -P draft.watermark=0" -a docinfo -a revnumber="DRAFT v1-286-gd5b6" -a revdate="2018-Mar-26" osmocombb-usermanual.adoc || asciidoc -v -f ../build/mscgen-filter.conf -f ../build/diag-filter.conf -f ../build/docinfo-releaseinfo.conf -f ../build/python2-filter.conf osmocombb-usermanual.adoc make[1]: Leaving directory ' cd OsmoMGW; make make[1]: Entering directory ' ../build/vty_reference_combine.sh " \ ../common/vty_additions.xml \ vty/*additions*.xml xmllint --xinclude --postvalid --noout osmomgw-vty-reference.xml + mkdir -p generated + cp vty/mgw_vty_reference.xml generated/combined.xml + [ -n ../common/vty_additions.xml ] + realpath ../common/vty_additions.xml + addition= + shift + mv generated/combined.xml generated/combine_src.xml + xsltproc -o generated/combined.xml --stringparam with generated/combine_src.xml + [ -n vty/mgw_vty_additions.xml ] + realpath vty/mgw_vty_additions.xml + addition= + shift + mv generated/combined.xml generated/combine_src.xml + xsltproc -o generated/combined.xml --stringparam with generated/combine_src.xml + [ -n ] xsltproc ../vty_reference.xsl generated/combined.xml \ > generated/docbook_vty.xml dblatex -P draft.mode=no osmomgw-vty-reference.xml Build the book set list... Build the listings... XSLT stylesheets DocBook - LaTeX 2e (0.3.9-3) =================================================== Stripping NS from DocBook 5/NG document. Processing stripped document. Build osmomgw-vty-reference.pdf 'osmomgw-vty-reference.pdf' successfully built make[1]: Leaving directory ' cd OsmoTRX; make make[1]: Entering directory ' a2x -L --asciidoc-opts="-f ../build/mscgen-filter.conf -f ../build/diag-filter.conf -f ../build/docinfo-releaseinfo.conf -f ../build/python2-filter.conf" --dblatex-opts="-s ../build/custom-dblatex.sty -P draft.mode=yes -P draft.watermark=0" -a docinfo -a revnumber="DRAFT v1-286-gd5b6" -a revdate="2018-Mar-26" osmotrx-usermanual.adoc || asciidoc -v -f ../build/mscgen-filter.conf -f ../build/diag-filter.conf -f ../build/docinfo-releaseinfo.conf -f ../build/python2-filter.conf osmotrx-usermanual.adoc ../build/vty_reference_combine.sh " \ ../common/vty_additions.xml \ vty/*additions*.xml xmllint --xinclude --postvalid --noout osmotrx-vty-reference.xml + mkdir -p generated + cp vty/trx_vty_reference.xml generated/combined.xml + [ -n ../common/vty_additions.xml ] + realpath ../common/vty_additions.xml + addition= + shift + mv generated/combined.xml generated/combine_src.xml + xsltproc -o generated/combined.xml --stringparam with generated/combine_src.xml + [ -n vty/trx_vty_additions.xml ] + realpath vty/trx_vty_additions.xml + addition= + shift + mv generated/combined.xml generated/combine_src.xml + xsltproc -o generated/combined.xml --stringparam with generated/combine_src.xml + [ -n ] xsltproc ../vty_reference.xsl generated/combined.xml \ > generated/docbook_vty.xml dblatex -P draft.mode=no osmotrx-vty-reference.xml Build the book set list... Build the listings... XSLT stylesheets DocBook - LaTeX 2e (0.3.9-3) =================================================== Stripping NS from DocBook 5/NG document. Processing stripped document. Build osmotrx-vty-reference.pdf 'osmotrx-vty-reference.pdf' successfully built make[1]: Leaving directory ' + make -j 4 LIBOSMO_DIR= check cd OsmoBTS; make check make[1]: Entering directory ' asciidoc -v -f ../build/mscgen-filter.conf -f ../build/diag-filter.conf -f ../build/docinfo-releaseinfo.conf -f ../build/python2-filter.conf osmobts-usermanual.adoc > osmobts-usermanual.check 2>&1 asciidoc -v -f ../build/mscgen-filter.conf -f ../build/diag-filter.conf -f ../build/docinfo-releaseinfo.conf -f ../build/python2-filter.conf osmobts-abis.adoc > osmobts-abis.check 2>&1 asciidoc -v -f ../build/mscgen-filter.conf -f ../build/diag-filter.conf -f ../build/docinfo-releaseinfo.conf -f ../build/python2-filter.conf rtp-amr.adoc > rtp-amr.check 2>&1 # Make absolutely sure that the %.check target is updated. touch rtp-amr.check # Do print the WARNING output but return error if any was found # (grep -v would omit the WARNING output from the log). # Make absolutely sure that the %.check target is updated. touch osmobts-usermanual.check # Do print the WARNING output but return error if any was found # (grep -v would omit the WARNING output from the log). # Make absolutely sure that the %.check target is updated. touch osmobts-abis.check # Do print the WARNING output but return error if any was found # (grep -v would omit the WARNING output from the log). make[1]: Leaving directory ' cd OsmoNITB; make check make[1]: Entering directory ' asciidoc -v -f ../build/mscgen-filter.conf -f ../build/diag-filter.conf -f ../build/docinfo-releaseinfo.conf -f ../build/python2-filter.conf osmonitb-usermanual.adoc > osmonitb-usermanual.check 2>&1 # Make absolutely sure that the %.check target is updated. touch osmonitb-usermanual.check # Do print the WARNING output but return error if any was found # (grep -v would omit the WARNING output from the log). make[1]: Leaving directory ' cd OsmoBSC; make check make[1]: Entering directory ' asciidoc -v -f ../build/mscgen-filter.conf -f ../build/diag-filter.conf -f ../build/docinfo-releaseinfo.conf -f ../build/python2-filter.conf osmobsc-usermanual.adoc > osmobsc-usermanual.check 2>&1 asciidoc -v -f ../build/mscgen-filter.conf -f ../build/diag-filter.conf -f ../build/docinfo-releaseinfo.conf -f ../build/python2-filter.conf osmux-reference.adoc > osmux-reference.check 2>&1 asciidoc -v -f ../build/mscgen-filter.conf -f ../build/diag-filter.conf -f ../build/docinfo-releaseinfo.conf -f ../build/python2-filter.conf aoip-mgw-options.adoc > aoip-mgw-options.check 2>&1 # Make absolutely sure that the %.check target is updated. touch aoip-mgw-options.check # Do print the WARNING output but return error if any was found # (grep -v would omit the WARNING output from the log). # Make absolutely sure that the %.check target is updated. touch osmux-reference.check # Do print the WARNING output but return error if any was found # (grep -v would omit the WARNING output from the log). # Make absolutely sure that the %.check target is updated. touch osmobsc-usermanual.check # Do print the WARNING output but return error if any was found # (grep -v would omit the WARNING output from the log). make[1]: Leaving directory ' cd OsmoSGSN; make check make[1]: Entering directory ' asciidoc -v -f ../build/mscgen-filter.conf -f ../build/diag-filter.conf -f ../build/docinfo-releaseinfo.conf -f ../build/python2-filter.conf osmosgsn-usermanual.adoc > osmosgsn-usermanual.check 2>&1 # Make absolutely sure that the %.check target is updated. touch osmosgsn-usermanual.check # Do print the WARNING output but return error if any was found # (grep -v would omit the WARNING output from the log). make[1]: Leaving directory ' cd OsmoGGSN; make check make[1]: Entering directory ' asciidoc -v -f ../build/mscgen-filter.conf -f ../build/diag-filter.conf -f ../build/docinfo-releaseinfo.conf -f ../build/python2-filter.conf osmoggsn-usermanual.adoc > osmoggsn-usermanual.check 2>&1 # Make absolutely sure that the %.check target is updated. touch osmoggsn-usermanual.check # Do print the WARNING output but return error if any was found # (grep -v would omit the WARNING output from the log). make[1]: Leaving directory ' cd OsmoPCU; make check make[1]: Entering directory ' asciidoc -v -f ../build/mscgen-filter.conf -f ../build/diag-filter.conf -f ../build/docinfo-releaseinfo.conf -f ../build/python2-filter.conf osmopcu-usermanual.adoc > osmopcu-usermanual.check 2>&1 asciidoc -v -f ../build/mscgen-filter.conf -f ../build/diag-filter.conf -f ../build/docinfo-releaseinfo.conf -f ../build/python2-filter.conf osmopcu-gb.adoc > osmopcu-gb.check 2>&1 # Make absolutely sure that the %.check target is updated. touch osmopcu-gb.check # Do print the WARNING output but return error if any was found # (grep -v would omit the WARNING output from the log). # Make absolutely sure that the %.check target is updated. touch osmopcu-usermanual.check # Do print the WARNING output but return error if any was found # (grep -v would omit the WARNING output from the log). make[1]: Leaving directory ' cd OsmoSTP; make check make[1]: Entering directory ' asciidoc -v -f ../build/mscgen-filter.conf -f ../build/diag-filter.conf -f ../build/docinfo-releaseinfo.conf -f ../build/python2-filter.conf osmostp-usermanual.adoc > osmostp-usermanual.check 2>&1 # Make absolutely sure that the %.check target is updated. touch osmostp-usermanual.check # Do print the WARNING output but return error if any was found # (grep -v would omit the WARNING output from the log). make[1]: Leaving directory ' # These don't use asciidoc, so they have no 'make check' target: #cd OsmoMGCP; make check #cd OsmoNAT; make check #cd OsmoMGW; make check cd OsmoGSMTester; make check make[1]: Entering directory ' asciidoc -v -f ../build/mscgen-filter.conf -f ../build/diag-filter.conf -f ../build/docinfo-releaseinfo.conf -f ../build/python2-filter.conf osmo-gsm-tester-manual.adoc > osmo-gsm-tester-manual.check 2>&1 # Make absolutely sure that the %.check target is updated. touch osmo-gsm-tester-manual.check # Do print the WARNING output but return error if any was found # (grep -v would omit the WARNING output from the log). make[1]: Leaving directory ' cd OsmoMSC; make check make[1]: Entering directory ' asciidoc -v -f ../build/mscgen-filter.conf -f ../build/diag-filter.conf -f ../build/docinfo-releaseinfo.conf -f ../build/python2-filter.conf osmomsc-usermanual.adoc > osmomsc-usermanual.check 2>&1 # Make absolutely sure that the %.check target is updated. touch osmomsc-usermanual.check # Do print the WARNING output but return error if any was found # (grep -v would omit the WARNING output from the log). make[1]: Leaving directory ' cd OsmoHLR; make check make[1]: Entering directory ' asciidoc -v -f ../build/mscgen-filter.conf -f ../build/diag-filter.conf -f ../build/docinfo-releaseinfo.conf -f ../build/python2-filter.conf osmohlr-usermanual.adoc > osmohlr-usermanual.check 2>&1 # Make absolutely sure that the %.check target is updated. touch osmohlr-usermanual.check # Do print the WARNING output but return error if any was found # (grep -v would omit the WARNING output from the log). make[1]: Leaving directory ' cd OsmoSTP; make check make[1]: Entering directory ' make[1]: Nothing to be done for 'check'. make[1]: Leaving directory ' cd OsmocomBB; make check make[1]: Entering directory ' asciidoc -v -f ../build/mscgen-filter.conf -f ../build/diag-filter.conf -f ../build/docinfo-releaseinfo.conf -f ../build/python2-filter.conf osmocombb-usermanual.adoc > osmocombb-usermanual.check 2>&1 # Make absolutely sure that the %.check target is updated. touch osmocombb-usermanual.check # Do print the WARNING output but return error if any was found # (grep -v would omit the WARNING output from the log). make[1]: Leaving directory ' cd OsmoTRX; make check make[1]: Entering directory ' asciidoc -v -f ../build/mscgen-filter.conf -f ../build/diag-filter.conf -f ../build/docinfo-releaseinfo.conf -f ../build/python2-filter.conf osmotrx-usermanual.adoc > osmotrx-usermanual.check 2>&1 # Make absolutely sure that the %.check target is updated. touch osmotrx-usermanual.check # Do print the WARNING output but return error if any was found # (grep -v would omit the WARNING output from the log). make[1]: Leaving directory ' + [ x--publish = x--publish ] + mkdir out/ + cp OsmoBSC/aoip-mgw-options.pdf OsmoBSC/osmobsc-usermanual.pdf OsmoBSC/osmobsc-vty-reference.pdf OsmoBSC/osmux-reference.pdf OsmoBTS/osmobts-abis.pdf OsmoBTS/osmobts-usermanual.pdf OsmoBTS/osmobts-vty-reference.pdf OsmoBTS/rtp-amr.pdf OsmoGGSN/osmoggsn-usermanual.pdf OsmoGGSN/osmoggsn-vty-reference.pdf OsmoGSMTester/osmo-gsm-tester-manual.pdf OsmoHLR/osmohlr-usermanual.pdf OsmoHLR/osmohlr-vty-reference.pdf OsmoMGCP/osmomgcp-vty-reference.pdf OsmoMGW/osmomgw-vty-reference.pdf OsmoMSC/osmomsc-usermanual.pdf OsmoMSC/osmomsc-vty-reference.pdf OsmoNAT/osmonat-vty-reference.pdf OsmoNITB/osmonitb-usermanual.pdf OsmoNITB/osmonitb-vty-reference.pdf OsmoPCU/osmopcu-gb.pdf OsmoPCU/osmopcu-usermanual.pdf OsmoPCU/osmopcu-vty-reference.pdf OsmoSGSN/osmosgsn-usermanual.pdf OsmoSGSN/osmosgsn-vty-reference.pdf OsmoSTP/osmostp-usermanual.pdf OsmoSTP/osmostp-vty-reference.pdf OsmoTRX/osmotrx-usermanual.pdf OsmoTRX/osmotrx-vty-reference.pdf OsmocomBB/osmocombb-usermanual.pdf out/ + rsync -avz --delete -e ssh -p 48 ./out/ docs at osmocom.org:web-files/latest/ Host key verification failed. rsync: connection unexpectedly closed (0 bytes received so far) [sender] rsync error: unexplained error (code 255) at io.c(235) [sender=3.1.2] Build step 'Execute shell' marked build as failure $ ssh-agent -k unset SSH_AUTH_SOCK; unset SSH_AGENT_PID; echo Agent pid 20419 killed; [ssh-agent] Stopped. [WARNINGS] Skipping publisher since build result is FAILURE From jenkins at lists.osmocom.org Tue Apr 10 15:25:54 2018 From: jenkins at lists.osmocom.org (jenkins at lists.osmocom.org) Date: Tue, 10 Apr 2018 15:25:54 +0000 (UTC) Subject: =?UTF-8?Q?Jenkins_build_is_back_to_normal_:_master-osmo-gsm-manuals?= =?UTF-8?Q?_=C2=BB_a1=3Ddefault,a2=3Ddefault,a3=3D?= =?UTF-8?Q?default,admin2-deb9build_#106?= In-Reply-To: <669730396.234.1523373713502.JavaMail.jenkins@jenkins.osmocom.org> References: <669730396.234.1523373713502.JavaMail.jenkins@jenkins.osmocom.org> Message-ID: <651436307.235.1523373954399.JavaMail.jenkins@jenkins.osmocom.org> See From gerrit-no-reply at lists.osmocom.org Tue Apr 10 15:26:52 2018 From: gerrit-no-reply at lists.osmocom.org (lynxis lazus) Date: Tue, 10 Apr 2018 15:26:52 +0000 Subject: [PATCH] osmo-gsm-manuals[master]: jenkins.sh: add hostkey for osmocom.org:48 Message-ID: Review at https://gerrit.osmocom.org/7725 jenkins.sh: add hostkey for osmocom.org:48 Otherwise it will depend on a setting this up in a seperate step. This way it's more decoupled from the build host. Change-Id: Iea1f5810bc7d4370724fdd7eb875c9a27b3d82af --- M contrib/jenkins.sh 1 file changed, 8 insertions(+), 1 deletion(-) git pull ssh://gerrit.osmocom.org:29418/osmo-gsm-manuals refs/changes/25/7725/1 diff --git a/contrib/jenkins.sh b/contrib/jenkins.sh index 59fcfd7..5cd1c1f 100755 --- a/contrib/jenkins.sh +++ b/contrib/jenkins.sh @@ -22,7 +22,14 @@ if [ "x$publish" = "x--publish" ]; then mkdir out/ cp */*.pdf out/ - rsync -avz --delete -e "ssh -p 48" ./out/ docs at osmocom.org:web-files/latest/ + + cat > "$WORKSPACE/known_hosts" < From gerrit-no-reply at lists.osmocom.org Tue Apr 10 15:30:16 2018 From: gerrit-no-reply at lists.osmocom.org (lynxis lazus) Date: Tue, 10 Apr 2018 15:30:16 +0000 Subject: osmo-gsm-manuals[master]: jenkins.sh: add hostkey for osmocom.org:48 In-Reply-To: References: Message-ID: Patch Set 1: required to move the build job to a new host. -- To view, visit https://gerrit.osmocom.org/7725 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Iea1f5810bc7d4370724fdd7eb875c9a27b3d82af Gerrit-PatchSet: 1 Gerrit-Project: osmo-gsm-manuals Gerrit-Branch: master Gerrit-Owner: lynxis lazus Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: lynxis lazus Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Tue Apr 10 15:42:28 2018 From: gerrit-no-reply at lists.osmocom.org (lynxis lazus) Date: Tue, 10 Apr 2018 15:42:28 +0000 Subject: [PATCH] osmo-ci[master]: osmocom-jenkins-slave: install gsm-manual dependencies Message-ID: Review at https://gerrit.osmocom.org/7726 osmocom-jenkins-slave: install gsm-manual dependencies Change-Id: I3fa60bd986220e065b1e9eca4308f2b089d505d9 --- M ansible/roles/osmocom-jenkins-slave/tasks/main.yml 1 file changed, 3 insertions(+), 0 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-ci refs/changes/26/7726/1 diff --git a/ansible/roles/osmocom-jenkins-slave/tasks/main.yml b/ansible/roles/osmocom-jenkins-slave/tasks/main.yml index 805a81e..4d7b963 100644 --- a/ansible/roles/osmocom-jenkins-slave/tasks/main.yml +++ b/ansible/roles/osmocom-jenkins-slave/tasks/main.yml @@ -41,6 +41,9 @@ - python3-setuptools - stow - texinfo + # by gsm-manuals + - python-nwdiag + - python-pychart - name: install build dependencies and libraries apt: -- To view, visit https://gerrit.osmocom.org/7726 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I3fa60bd986220e065b1e9eca4308f2b089d505d9 Gerrit-PatchSet: 1 Gerrit-Project: osmo-ci Gerrit-Branch: master Gerrit-Owner: lynxis lazus From gerrit-no-reply at lists.osmocom.org Tue Apr 10 15:42:29 2018 From: gerrit-no-reply at lists.osmocom.org (lynxis lazus) Date: Tue, 10 Apr 2018 15:42:29 +0000 Subject: [PATCH] osmo-ci[master]: jobs: master-builds.yml: allow osmo-gsm-manuals to build any... Message-ID: Review at https://gerrit.osmocom.org/7727 jobs: master-builds.yml: allow osmo-gsm-manuals to build anywhere When https://gerrit.osmocom.org/#/c/7725/ has been merged, there is no need to limit this build to OsmocomApi. Change-Id: Ic5fe39b643e7a15dbfd2efd55dce78dde30cf099 --- M jobs/master-builds.yml 1 file changed, 7 insertions(+), 1 deletion(-) git pull ssh://gerrit.osmocom.org:29418/osmo-ci refs/changes/27/7727/1 diff --git a/jobs/master-builds.yml b/jobs/master-builds.yml index 79ce8c2..dff78fa 100644 --- a/jobs/master-builds.yml +++ b/jobs/master-builds.yml @@ -17,6 +17,7 @@ sequential: false # most common build invocation cmd: ./contrib/jenkins.sh + wrappers: [] trigger: # in alphabetical order @@ -206,10 +207,14 @@ - osmo-gsm-manuals: # publishing once is plenty - slave_axis: !!python/tuple [OsmocomBuild1] cmd: > # keep first line with less indent to preserve newlines ./contrib/jenkins.sh --publish + # requires to have a ssh-key credentials called "api" (Id) + wrappers: + - ssh-agent-credentials: + users: + - api - osmo-hlr @@ -385,5 +390,6 @@ - email: recipients: gerrit-log at lists.osmocom.org, laforge at gnumonks.org send-to-individuals: true + wrappers: '{obj:wrappers}' # vim: expandtab tabstop=2 shiftwidth=2 -- To view, visit https://gerrit.osmocom.org/7727 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Ic5fe39b643e7a15dbfd2efd55dce78dde30cf099 Gerrit-PatchSet: 1 Gerrit-Project: osmo-ci Gerrit-Branch: master Gerrit-Owner: lynxis lazus From gerrit-no-reply at lists.osmocom.org Tue Apr 10 15:58:17 2018 From: gerrit-no-reply at lists.osmocom.org (dexter) Date: Tue, 10 Apr 2018 15:58:17 +0000 Subject: [PATCH] osmo-pcu[master]: cosmetic: remove runaway semicolon Message-ID: Review at https://gerrit.osmocom.org/7728 cosmetic: remove runaway semicolon Change-Id: I33c335dc8d564a8357ffb5b1163c2c4b1a578b49 Related: SYS#4139 Patch-by: Octasic inc. --- M src/pcu_l1_if.cpp 1 file changed, 1 insertion(+), 1 deletion(-) git pull ssh://gerrit.osmocom.org:29418/osmo-pcu refs/changes/28/7728/1 diff --git a/src/pcu_l1_if.cpp b/src/pcu_l1_if.cpp index 85dbfb9..a9d17b6 100644 --- a/src/pcu_l1_if.cpp +++ b/src/pcu_l1_if.cpp @@ -630,6 +630,6 @@ msg_type); rc = -EINVAL; } -; + return rc; } -- To view, visit https://gerrit.osmocom.org/7728 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I33c335dc8d564a8357ffb5b1163c2c4b1a578b49 Gerrit-PatchSet: 1 Gerrit-Project: osmo-pcu Gerrit-Branch: master Gerrit-Owner: dexter From gerrit-no-reply at lists.osmocom.org Tue Apr 10 15:58:18 2018 From: gerrit-no-reply at lists.osmocom.org (dexter) Date: Tue, 10 Apr 2018 15:58:18 +0000 Subject: [PATCH] osmo-pcu[master]: pcu_l1_if: add frame number to log output Message-ID: Review at https://gerrit.osmocom.org/7729 pcu_l1_if: add frame number to log output Currently, the log output lacks the frame number. - make get_current_fn() public - add frame number to the log statements in pcu_l1_if.cpp Change-Id: Idce994dbf86a2bbf861907d75418a2a3867244db Related: SYS#4139 Patch-by: Octasic inc. --- M src/gsm_timer.cpp M src/gsm_timer.h M src/pcu_l1_if.cpp 3 files changed, 21 insertions(+), 10 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-pcu refs/changes/29/7729/1 diff --git a/src/gsm_timer.cpp b/src/gsm_timer.cpp index d3c59cb..f7901d4 100644 --- a/src/gsm_timer.cpp +++ b/src/gsm_timer.cpp @@ -43,7 +43,7 @@ * all time functions schedule based on the BTS they * are scheduled on. */ -static int get_current_fn() +int get_current_fn() { return BTS::main_bts()->current_frame_number(); } diff --git a/src/gsm_timer.h b/src/gsm_timer.h index fc42caf..cfabd0c 100644 --- a/src/gsm_timer.h +++ b/src/gsm_timer.h @@ -79,6 +79,12 @@ int osmo_gsm_timers_update(void); int osmo_gsm_timers_check(void); + +/* + * Get Current Frame Number + */ +int get_current_fn(); + /*! }@ */ #endif // GSM_TIMER_H diff --git a/src/pcu_l1_if.cpp b/src/pcu_l1_if.cpp index a9d17b6..4b54707 100644 --- a/src/pcu_l1_if.cpp +++ b/src/pcu_l1_if.cpp @@ -143,9 +143,10 @@ struct msgb *msg; struct gsm_pcu_if *pcu_prim; struct gsm_pcu_if_data *data_req; + int current_fn = get_current_fn(); LOGP(DL1IF, LOGL_DEBUG, "Sending data request: trx=%d ts=%d sapi=%d " - "arfcn=%d fn=%d block=%d data=%s\n", trx, ts, sapi, arfcn, fn, + "arfcn=%d fn=%d cur_fn=%d block=%d data=%s\n", trx, ts, sapi, arfcn, fn, current_fn, block_nr, osmo_hexdump(data, len)); msg = pcu_msgb_alloc(PCU_IF_MSG_DATA_REQ, 0); @@ -276,11 +277,12 @@ { struct gprs_rlcmac_bts *bts = bts_main_data(); int rc; + int current_fn = get_current_fn(); pcu_l1_meas meas; LOGP(DL1IF, LOGL_DEBUG, "Data indication received: sapi=%d arfcn=%d " - "block=%d data=%s\n", data_ind->sapi, - data_ind->arfcn, data_ind->block_nr, + "fn=%d cur_fn=%d block=%d data=%s\n", data_ind->sapi, + data_ind->arfcn, data_ind->fn, current_fn, data_ind->block_nr, osmo_hexdump(data_ind->data, data_ind->len)); switch (data_ind->sapi) { @@ -318,9 +320,10 @@ static int pcu_rx_data_cnf(struct gsm_pcu_if_data *data_cnf) { int rc = 0; + int current_fn = get_current_fn(); - LOGP(DL1IF, LOGL_DEBUG, "Data confirm received: sapi=%d fn=%d\n", - data_cnf->sapi, data_cnf->fn); + LOGP(DL1IF, LOGL_DEBUG, "Data confirm received: sapi=%d fn=%d cur_fn=%d\n", + data_cnf->sapi, data_cnf->fn, current_fn); switch (data_cnf->sapi) { case PCU_IF_SAPI_PCH: @@ -347,10 +350,11 @@ static int pcu_rx_rts_req(struct gsm_pcu_if_rts_req *rts_req) { int rc = 0; + int current_fn = get_current_fn(); LOGP(DL1IF, LOGL_DEBUG, "RTS request received: trx=%d ts=%d sapi=%d " - "arfcn=%d fn=%d block=%d\n", rts_req->trx_nr, rts_req->ts_nr, - rts_req->sapi, rts_req->arfcn, rts_req->fn, rts_req->block_nr); + "arfcn=%d fn=%d cur_fn=%d block=%d\n", rts_req->trx_nr, rts_req->ts_nr, + rts_req->sapi, rts_req->arfcn, rts_req->fn, current_fn, rts_req->block_nr); switch (rts_req->sapi) { case PCU_IF_SAPI_PDTCH: @@ -378,10 +382,11 @@ static int pcu_rx_rach_ind(struct gsm_pcu_if_rach_ind *rach_ind) { int rc = 0; + int current_fn = get_current_fn(); LOGP(DL1IF, LOGL_INFO, "RACH request received: sapi=%d " - "qta=%d, ra=%d, fn=%d\n", rach_ind->sapi, rach_ind->qta, - rach_ind->ra, rach_ind->fn); + "qta=%d, ra=%d, fn=%d, cur_fn=%d, is_11bit=%d\n", rach_ind->sapi, rach_ind->qta, + rach_ind->ra, rach_ind->fn, current_fn, rach_ind->is_11bit); switch (rach_ind->sapi) { case PCU_IF_SAPI_RACH: -- To view, visit https://gerrit.osmocom.org/7729 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Idce994dbf86a2bbf861907d75418a2a3867244db Gerrit-PatchSet: 1 Gerrit-Project: osmo-pcu Gerrit-Branch: master Gerrit-Owner: dexter From gerrit-no-reply at lists.osmocom.org Tue Apr 10 15:58:19 2018 From: gerrit-no-reply at lists.osmocom.org (dexter) Date: Tue, 10 Apr 2018 15:58:19 +0000 Subject: [PATCH] osmo-pcu[master]: tbf: add frame number to log output Message-ID: Review at https://gerrit.osmocom.org/7730 tbf: add frame number to log output Currently, the TBF timer log messages lack the frame number in the logoutput - Add frame number to TBF timer related log-statements Change-Id: I5a744dc5cd7c1de1baea13fffac026c83d091429 Related: SYS#4139 Patch-by: Octasic inc. --- M src/tbf.cpp 1 file changed, 11 insertions(+), 7 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-pcu refs/changes/30/7730/1 diff --git a/src/tbf.cpp b/src/tbf.cpp index 7036ea1..d5fbb3f 100644 --- a/src/tbf.cpp +++ b/src/tbf.cpp @@ -661,18 +661,20 @@ void gprs_rlcmac_tbf::t_start(enum tbf_timers t, uint32_t sec, uint32_t microsec, const char *reason, bool force, const char *file, unsigned line) { + int current_fn = get_current_fn(); + if (t >= T_MAX) { - LOGPSRC(DTBF, LOGL_ERROR, file, line, "%s attempting to start unknown timer %s [%s]\n", - tbf_name(this), get_value_string(tbf_timers_names, t), reason); + LOGPSRC(DTBF, LOGL_ERROR, file, line, "%s attempting to start unknown timer %s [%s], cur_fn=%d\n", + tbf_name(this), get_value_string(tbf_timers_names, t), reason, current_fn); return; } if (!force && osmo_timer_pending(&T[t])) return; - LOGPSRC(DTBF, LOGL_DEBUG, file, line, "%s %sstarting timer %s [%s] with %u sec. %u microsec.\n", + LOGPSRC(DTBF, LOGL_DEBUG, file, line, "%s %sstarting timer %s [%s] with %u sec. %u microsec, cur_fn=%d\n", tbf_name(this), osmo_timer_pending(&T[t]) ? "re" : "", - get_value_string(tbf_timers_names, t), reason, sec, microsec); + get_value_string(tbf_timers_names, t), reason, sec, microsec, current_fn); T[t].data = this; @@ -693,8 +695,8 @@ T[t].cb = cb_T3195; break; default: - LOGPSRC(DTBF, LOGL_ERROR, file, line, "%s attempting to set callback for unknown timer %s [%s]\n", - tbf_name(this), get_value_string(tbf_timers_names, t), reason); + LOGPSRC(DTBF, LOGL_ERROR, file, line, "%s attempting to set callback for unknown timer %s [%s], cur_fn=%d\n", + tbf_name(this), get_value_string(tbf_timers_names, t), reason, current_fn); } osmo_timer_schedule(&T[t], sec, microsec); @@ -1126,7 +1128,9 @@ void gprs_rlcmac_tbf::handle_timeout() { - LOGPTBF(this, LOGL_DEBUG, "timer 0 expired.\n"); + int current_fn = get_current_fn(); + + LOGPTBF(this, LOGL_DEBUG, "timer 0 expired. cur_fn=%d\n", current_fn); /* assignment */ if ((state_flags & (1 << GPRS_RLCMAC_FLAG_PACCH))) { -- To view, visit https://gerrit.osmocom.org/7730 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I5a744dc5cd7c1de1baea13fffac026c83d091429 Gerrit-PatchSet: 1 Gerrit-Project: osmo-pcu Gerrit-Branch: master Gerrit-Owner: dexter From gerrit-no-reply at lists.osmocom.org Tue Apr 10 15:58:19 2018 From: gerrit-no-reply at lists.osmocom.org (dexter) Date: Tue, 10 Apr 2018 15:58:19 +0000 Subject: [PATCH] osmo-pcu[master]: tbf: hex output of tbf data in log Message-ID: Review at https://gerrit.osmocom.org/7731 tbf: hex output of tbf data in log The log text of tbf_dl.cpip and tbf_ul.cpp only displays the length of the actual tbf data but not the content, which might be useful for debugging. - log tbf data in gprs_rlcmac_dl_tbf::append_data() - log tbf data in gprs_rlcmac_ul_tbf::assemble_forward_llc() Change-Id: I6c5adda8aaead00b1ba4359c34866e6842ea161f Related: SYS#4139 Patch-by: Octasic inc. --- M src/tbf_dl.cpp M src/tbf_ul.cpp 2 files changed, 4 insertions(+), 2 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-pcu refs/changes/31/7731/1 diff --git a/src/tbf_dl.cpp b/src/tbf_dl.cpp index dd24963..883849e 100644 --- a/src/tbf_dl.cpp +++ b/src/tbf_dl.cpp @@ -96,7 +96,8 @@ const uint16_t pdu_delay_csec, const uint8_t *data, const uint16_t len) { - LOGPTBFDL(this, LOGL_DEBUG, "appending %u bytes\n", len); + LOGPTBFDL(this, LOGL_DEBUG, "append, len[%u], data[%s]\n", + len, osmo_hexdump(data, len)); gprs_llc_queue::MetaInfo info; struct msgb *llc_msg = msgb_alloc(len, "llc_pdu_queue"); if (!llc_msg) diff --git a/src/tbf_ul.cpp b/src/tbf_ul.cpp index 02f4ddb..89cee2c 100644 --- a/src/tbf_ul.cpp +++ b/src/tbf_ul.cpp @@ -93,7 +93,8 @@ if (frame->is_complete) { /* send frame to SGSN */ - LOGPTBFUL(this, LOGL_DEBUG, "complete UL frame len=%d\n", m_llc.frame_length()); + LOGPTBFUL(this, LOGL_DEBUG, "complete UL frame len[%d], data[%s]\n", + m_llc.frame_length(), osmo_hexdump(m_llc.frame, m_llc.frame_length())); snd_ul_ud(); bts->llc_ul_bytes(m_llc.frame_length()); m_llc.reset(); -- To view, visit https://gerrit.osmocom.org/7731 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I6c5adda8aaead00b1ba4359c34866e6842ea161f Gerrit-PatchSet: 1 Gerrit-Project: osmo-pcu Gerrit-Branch: master Gerrit-Owner: dexter From gerrit-no-reply at lists.osmocom.org Tue Apr 10 15:58:42 2018 From: gerrit-no-reply at lists.osmocom.org (Stefan Sperling) Date: Tue, 10 Apr 2018 15:58:42 +0000 Subject: [PATCH] osmo-bsc[master]: trigger acc ramping based on trx rf-locked state Message-ID: Review at https://gerrit.osmocom.org/7732 trigger acc ramping based on trx rf-locked state Make ACC ramping listen to network management signals and trigger or abort ACC ramping based on the RF locked state of TRX 0. This works as expected with a virtphy setup when RF lock state is changed via VTY. However, this change still needs to be tested with a nanobts. It's also not quite clear yet whether operational state changes, as opposed to administrative ones, should be taken into account as well. Change-Id: I4124f1da3dadec003de45c1da8435506ee8f0a34 Depends: Ia25bff85d9e5c277da76bffa11d31972e9fdc323 --- M src/libbsc/acc_ramp.c M src/libbsc/bsc_vty.c 2 files changed, 46 insertions(+), 1 deletion(-) git pull ssh://gerrit.osmocom.org:29418/osmo-bsc refs/changes/32/7732/1 diff --git a/src/libbsc/acc_ramp.c b/src/libbsc/acc_ramp.c index e60f638..c1edfe2 100644 --- a/src/libbsc/acc_ramp.c +++ b/src/libbsc/acc_ramp.c @@ -26,6 +26,7 @@ #include #include #include +#include /* * Check if an ACC has been permanently barred for a BTS, @@ -153,6 +154,49 @@ osmo_timer_schedule(&acc_ramp->step_timer, get_next_step_interval(acc_ramp), 0); } +/* Implements osmo_signal_cbfn() -- trigger or abort ACC ramping upon changes RF lock state. */ +static int acc_ramp_nm_sig_cb(unsigned int subsys, unsigned int signal, void *handler_data, void *signal_data) +{ + struct nm_statechg_signal_data *nsd = signal_data; + uint8_t obj_class = nsd->obj_class; + struct gsm_nm_state *new_state = nsd->new_state; + struct acc_ramp *acc_ramp = handler_data; + struct gsm_bts_trx *trx = NULL; + + if (subsys != SS_NM) + return 0; + + if (signal != S_NM_STATECHG_ADM) + return 0; + + if (obj_class != NM_OC_RADIO_CARRIER) + return 0; + + trx = nsd->obj; + + /* We only care about state changes of the first TRX. */ + if (trx->nr != 0) + return 0; + + /* RSL must already be up. We cannot send RACH system information to the BTS otherwise. */ + if (trx->rsl_link == NULL) + return 0; + + /* Trigger or abort ACC ramping based on the new 'RF lock' state of this TRX. */ + switch (new_state->administrative) { + case NM_STATE_UNLOCKED: + acc_ramp_trigger(acc_ramp); + break; + case NM_STATE_LOCKED: + acc_ramp_abort(acc_ramp); + break; + default: + break; + } + + return 0; +} + /*! * Initialize an acc_ramp data structure. * Storage for this structure must be provided by the caller. @@ -171,6 +215,7 @@ acc_ramp->step_interval_is_fixed = false; allow_all_enabled_accs(acc_ramp); osmo_timer_setup(&acc_ramp->step_timer, do_acc_ramping_step, acc_ramp); + osmo_signal_register_handler(SS_NM, acc_ramp_nm_sig_cb, acc_ramp); } /*! diff --git a/src/libbsc/bsc_vty.c b/src/libbsc/bsc_vty.c index 797358d..68a474a 100644 --- a/src/libbsc/bsc_vty.c +++ b/src/libbsc/bsc_vty.c @@ -3277,7 +3277,7 @@ acc_ramp_enable(&bts->acc_ramp); - /* ACC ramping takes effect when the BTS reconnects. */ + /* ACC ramping takes effect when the BTS reconnects or RF administrative state changes to 'unlocked'. */ return CMD_SUCCESS; } -- To view, visit https://gerrit.osmocom.org/7732 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I4124f1da3dadec003de45c1da8435506ee8f0a34 Gerrit-PatchSet: 1 Gerrit-Project: osmo-bsc Gerrit-Branch: master Gerrit-Owner: Stefan Sperling From gerrit-no-reply at lists.osmocom.org Tue Apr 10 16:02:44 2018 From: gerrit-no-reply at lists.osmocom.org (Stefan Sperling) Date: Tue, 10 Apr 2018 16:02:44 +0000 Subject: [MERGED] osmo-hlr[master]: notify GSUP clients when HLR subscriber information changes In-Reply-To: References: Message-ID: Stefan Sperling has submitted this change and it was merged. Change subject: notify GSUP clients when HLR subscriber information changes ...................................................................... notify GSUP clients when HLR subscriber information changes Add a function which triggers subscriber update notifications to all connected GSUP clients, and invoke it when the MSISDN of a subscriber is changed via VTY. This makes the TTCN3 HLR test TC_vty_msisdn_isd pass. Note that the new function currently relies on implementation details of the Location Update Operation (luop) code. Because of this we currently log a slightly misleading message when the updated Insert Subscriber Data message is sent: "luop.c:161 LU OP state change: LU RECEIVED -> ISD SENT" This message is misleading because, in fact, no location update message was received from a GSUP client at that moment. So while this change fixes the externally visible behaviour, we may want to follow this up with some refactoring to avoid relying on luop internals. It seems acceptable to do that in a separate step since such a change will be more involved and harder to review. We may want to trigger such notifications in other situations as well. This is left for future work, too. There are no TTCN3 test cases for other situations yet, as far as I can see. Related: OS#2785 Change-Id: Iffe1d7afb9fc7dbae542f70bbf5391ddc08a14b4 --- M src/hlr.c M src/hlr.h M src/hlr_vty_subscr.c 3 files changed, 40 insertions(+), 0 deletions(-) Approvals: Neels Hofmeyr: Looks good to me, approved Jenkins Builder: Verified diff --git a/src/hlr.c b/src/hlr.c index 838b1bc..4fbc268 100644 --- a/src/hlr.c +++ b/src/hlr.c @@ -46,6 +46,38 @@ static struct hlr *g_hlr; +/* Trigger 'Insert Subscriber Data' messages to all connected GSUP clients. + * + * FIXME: In order to support large-scale networks this function should skip + * VLRs/SGSNs which do not currently serve the subscriber. + * + * \param[in] subscr A subscriber we have new data to send for. + */ +void +osmo_hlr_subscriber_update_notify(struct hlr_subscriber *subscr) +{ + struct osmo_gsup_conn *co; + + if (g_hlr->gs == NULL) + return; + + llist_for_each_entry(co, &g_hlr->gs->clients, list) { + struct lu_operation *luop = lu_op_alloc_conn(co); + if (!luop) { + LOGP(DMAIN, LOGL_ERROR, + "IMSI='%s': Cannot notify GSUP client, cannot allocate lu_operation," + " for %s:%u\n", subscr->imsi, + co && co->conn && co->conn->server? co->conn->server->addr : "unset", + co && co->conn && co->conn->server? co->conn->server->port : 0); + continue; + } + luop->subscr = *subscr; + luop->state = LU_S_LU_RECEIVED; /* Pretend we received a location update. */ + lu_op_tx_insert_subscr_data(luop); + lu_op_free(luop); + } +} + /*********************************************************************** * Send Auth Info handling ***********************************************************************/ diff --git a/src/hlr.h b/src/hlr.h index f63bc2b..368a052 100644 --- a/src/hlr.h +++ b/src/hlr.h @@ -38,3 +38,7 @@ /* Local bind addr */ char *gsup_bind_addr; }; + +struct hlr_subscriber; + +void osmo_hlr_subscriber_update_notify(struct hlr_subscriber *subscr); diff --git a/src/hlr_vty_subscr.c b/src/hlr_vty_subscr.c index 7191a1c..4092a8f 100644 --- a/src/hlr_vty_subscr.c +++ b/src/hlr_vty_subscr.c @@ -257,6 +257,10 @@ vty_out(vty, "%% Updated subscriber IMSI='%s' to MSISDN='%s'%s", subscr.imsi, msisdn, VTY_NEWLINE); + + if (db_subscr_get_by_msisdn(g_hlr->dbc, msisdn, &subscr) == 0) + osmo_hlr_subscriber_update_notify(&subscr); + return CMD_SUCCESS; } -- To view, visit https://gerrit.osmocom.org/7685 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: Iffe1d7afb9fc7dbae542f70bbf5391ddc08a14b4 Gerrit-PatchSet: 2 Gerrit-Project: osmo-hlr Gerrit-Branch: master Gerrit-Owner: Stefan Sperling Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Neels Hofmeyr Gerrit-Reviewer: Stefan Sperling From gerrit-no-reply at lists.osmocom.org Tue Apr 10 16:04:15 2018 From: gerrit-no-reply at lists.osmocom.org (lynxis lazus) Date: Tue, 10 Apr 2018 16:04:15 +0000 Subject: osmo-gsm-tester[master]: WIP.. see what is executed? Where is cdf_test In-Reply-To: References: Message-ID: Patch Set 1: @holger can please you abandon this review? -- To view, visit https://gerrit.osmocom.org/7492 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Ib9cd27c9d2628ad1d001ec57f6c80c3690df9a86 Gerrit-PatchSet: 1 Gerrit-Project: osmo-gsm-tester Gerrit-Branch: master Gerrit-Owner: Holger Freyther Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Pau Espin Pedrol Gerrit-Reviewer: lynxis lazus Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Tue Apr 10 16:05:13 2018 From: gerrit-no-reply at lists.osmocom.org (Holger Freyther) Date: Tue, 10 Apr 2018 16:05:13 +0000 Subject: [ABANDON] osmo-gsm-tester[master]: WIP.. see what is executed? Where is cdf_test In-Reply-To: References: Message-ID: Holger Freyther has abandoned this change. Change subject: WIP.. see what is executed? Where is cdf_test ...................................................................... Abandoned helped to show misconfiguration of the gerrit job.. -- To view, visit https://gerrit.osmocom.org/7492 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: abandon Gerrit-Change-Id: Ib9cd27c9d2628ad1d001ec57f6c80c3690df9a86 Gerrit-PatchSet: 1 Gerrit-Project: osmo-gsm-tester Gerrit-Branch: master Gerrit-Owner: Holger Freyther Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Pau Espin Pedrol Gerrit-Reviewer: lynxis lazus From gerrit-no-reply at lists.osmocom.org Tue Apr 10 16:09:32 2018 From: gerrit-no-reply at lists.osmocom.org (Stefan Sperling) Date: Tue, 10 Apr 2018 16:09:32 +0000 Subject: osmo-hlr[master]: notify GSUP clients when HLR subscriber information changes In-Reply-To: References: Message-ID: Patch Set 2: > (1 comment) > > about that FIXME, I think there should also be an issue about that, > lest we forget the FIXME. https://osmocom.org/issues/3154 -- To view, visit https://gerrit.osmocom.org/7685 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Iffe1d7afb9fc7dbae542f70bbf5391ddc08a14b4 Gerrit-PatchSet: 2 Gerrit-Project: osmo-hlr Gerrit-Branch: master Gerrit-Owner: Stefan Sperling Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Neels Hofmeyr Gerrit-Reviewer: Stefan Sperling Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Tue Apr 10 16:09:33 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Tue, 10 Apr 2018 16:09:33 +0000 Subject: osmo-pcu[master]: cosmetic: remove runaway semicolon In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7728 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I33c335dc8d564a8357ffb5b1163c2c4b1a578b49 Gerrit-PatchSet: 1 Gerrit-Project: osmo-pcu Gerrit-Branch: master Gerrit-Owner: dexter Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Tue Apr 10 16:10:10 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Tue, 10 Apr 2018 16:10:10 +0000 Subject: osmo-pcu[master]: pcu_l1_if: add frame number to log output In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7729 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Idce994dbf86a2bbf861907d75418a2a3867244db Gerrit-PatchSet: 1 Gerrit-Project: osmo-pcu Gerrit-Branch: master Gerrit-Owner: dexter Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Tue Apr 10 16:15:15 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Tue, 10 Apr 2018 16:15:15 +0000 Subject: osmo-pcu[master]: tbf: add frame number to log output In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7730 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I5a744dc5cd7c1de1baea13fffac026c83d091429 Gerrit-PatchSet: 1 Gerrit-Project: osmo-pcu Gerrit-Branch: master Gerrit-Owner: dexter Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Tue Apr 10 16:15:43 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Tue, 10 Apr 2018 16:15:43 +0000 Subject: osmo-pcu[master]: tbf: hex output of tbf data in log In-Reply-To: References: Message-ID: Patch Set 1: not entirely sure if we want to do this... -- To view, visit https://gerrit.osmocom.org/7731 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I6c5adda8aaead00b1ba4359c34866e6842ea161f Gerrit-PatchSet: 1 Gerrit-Project: osmo-pcu Gerrit-Branch: master Gerrit-Owner: dexter Gerrit-Reviewer: Harald Welte Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Tue Apr 10 16:16:09 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Tue, 10 Apr 2018 16:16:09 +0000 Subject: osmo-ci[master]: jobs: master-builds.yml: allow osmo-gsm-manuals to build any... In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7727 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Ic5fe39b643e7a15dbfd2efd55dce78dde30cf099 Gerrit-PatchSet: 1 Gerrit-Project: osmo-ci Gerrit-Branch: master Gerrit-Owner: lynxis lazus Gerrit-Reviewer: Harald Welte Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Tue Apr 10 16:16:22 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Tue, 10 Apr 2018 16:16:22 +0000 Subject: osmo-ci[master]: osmocom-jenkins-slave: install gsm-manual dependencies In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7726 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I3fa60bd986220e065b1e9eca4308f2b089d505d9 Gerrit-PatchSet: 1 Gerrit-Project: osmo-ci Gerrit-Branch: master Gerrit-Owner: lynxis lazus Gerrit-Reviewer: Harald Welte Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Tue Apr 10 16:16:59 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Tue, 10 Apr 2018 16:16:59 +0000 Subject: osmo-bsc[master]: ensure that acc_ramp_init() is only called once In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7723 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Ia25bff85d9e5c277da76bffa11d31972e9fdc323 Gerrit-PatchSet: 1 Gerrit-Project: osmo-bsc Gerrit-Branch: master Gerrit-Owner: Stefan Sperling Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Pau Espin Pedrol Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Tue Apr 10 16:17:25 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Tue, 10 Apr 2018 16:17:25 +0000 Subject: osmo-bsc[master]: trigger acc ramping based on trx rf-locked state In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7732 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I4124f1da3dadec003de45c1da8435506ee8f0a34 Gerrit-PatchSet: 1 Gerrit-Project: osmo-bsc Gerrit-Branch: master Gerrit-Owner: Stefan Sperling Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Pau Espin Pedrol Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Tue Apr 10 16:18:01 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Tue, 10 Apr 2018 16:18:01 +0000 Subject: osmo-gsm-manuals[master]: jenkins.sh: add hostkey for osmocom.org:48 In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7725 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Iea1f5810bc7d4370724fdd7eb875c9a27b3d82af Gerrit-PatchSet: 1 Gerrit-Project: osmo-gsm-manuals Gerrit-Branch: master Gerrit-Owner: lynxis lazus Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: lynxis lazus Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Tue Apr 10 16:18:28 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Tue, 10 Apr 2018 16:18:28 +0000 Subject: osmo-ci[master]: jobs: update-osmo*: remove non-existent node build2-deb8build In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7718 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Id9f25d8a5f6d0521e2b70884f46de5dee14d8092 Gerrit-PatchSet: 1 Gerrit-Project: osmo-ci Gerrit-Branch: master Gerrit-Owner: lynxis lazus Gerrit-Reviewer: Harald Welte Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Tue Apr 10 16:18:36 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Tue, 10 Apr 2018 16:18:36 +0000 Subject: [PATCH] libosmo-abis[master]: configure.ac: Fix condition check for RTP_SIGNAL_PTR_CAST de... Message-ID: Review at https://gerrit.osmocom.org/7733 configure.ac: Fix condition check for RTP_SIGNAL_PTR_CAST define While building libosmo-netif on a system with an old ortp (0.22), it was seen that warning related to RTP_SIGNAL_PTR_CAST not being correctly selected were being printed. The compilation didn't fail there as expected because the issue was being handled as a warning instead of an error, so the void* ptr case was always being selected. Change-Id: Ib5e7569e68fdb921c63e0c12e20e73aafbebda46 --- M configure.ac 1 file changed, 1 insertion(+), 1 deletion(-) git pull ssh://gerrit.osmocom.org:29418/libosmo-abis refs/changes/33/7733/1 diff --git a/configure.ac b/configure.ac index ce4bf39..05fbb12 100644 --- a/configure.ac +++ b/configure.ac @@ -110,7 +110,7 @@ CFLAGS=$_cflags_save _cflags_save=$CFLAGS -CFLAGS="$CFLAGS $ORTP_CFLAGS" +CFLAGS="$CFLAGS $ORTP_CFLAGS -Werror" AC_COMPILE_IFELSE( [AC_LANG_PROGRAM( [[#include -- To view, visit https://gerrit.osmocom.org/7733 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Ib5e7569e68fdb921c63e0c12e20e73aafbebda46 Gerrit-PatchSet: 1 Gerrit-Project: libosmo-abis Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol From gerrit-no-reply at lists.osmocom.org Tue Apr 10 16:18:55 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Tue, 10 Apr 2018 16:18:55 +0000 Subject: osmo-bsc[master]: only log actual access control class ramping changes In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7722 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I37580f4058f6e3a21d338234b1e22ea46f9538c6 Gerrit-PatchSet: 1 Gerrit-Project: osmo-bsc Gerrit-Branch: master Gerrit-Owner: Stefan Sperling Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Pau Espin Pedrol Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Tue Apr 10 16:29:22 2018 From: gerrit-no-reply at lists.osmocom.org (lynxis lazus) Date: Tue, 10 Apr 2018 16:29:22 +0000 Subject: [PATCH] osmo-ci[master]: ansible: hosts: gsm-tester: use ansible_host to have more re... Message-ID: Review at https://gerrit.osmocom.org/7734 ansible: hosts: gsm-tester: use ansible_host to have more readable ansible output Change-Id: Ia7b60ace8afd0e2cc47c535da1856d4f34fdd735 --- M ansible/hosts 1 file changed, 2 insertions(+), 4 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-ci refs/changes/34/7734/1 diff --git a/ansible/hosts b/ansible/hosts index ea5dea4..6964a71 100644 --- a/ansible/hosts +++ b/ansible/hosts @@ -1,8 +1,6 @@ [gsm-tester] -# rnd -10.9.25.101 -# production -10.9.25.107 +osmo-gsm-tester-rnd ansible_host=10.9.25.101 +osmo-gsm-tester-prod ansible_host=10.9.25.107 [coverity-slaves] admin2-deb9build ansible_host=2a01:4f8:13b:828::1:300 -- To view, visit https://gerrit.osmocom.org/7734 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Ia7b60ace8afd0e2cc47c535da1856d4f34fdd735 Gerrit-PatchSet: 1 Gerrit-Project: osmo-ci Gerrit-Branch: master Gerrit-Owner: lynxis lazus From gerrit-no-reply at lists.osmocom.org Tue Apr 10 16:29:23 2018 From: gerrit-no-reply at lists.osmocom.org (lynxis lazus) Date: Tue, 10 Apr 2018 16:29:23 +0000 Subject: [PATCH] osmo-ci[master]: ansible: add role udhcpd: setup a udhcpd server Message-ID: Review at https://gerrit.osmocom.org/7735 ansible: add role udhcpd: setup a udhcpd server Change-Id: Ia272ae9c2b245d0a06f84b91f50dd875d4488e02 --- A ansible/roles/udhcpd/README.md A ansible/roles/udhcpd/defaults/main.yml A ansible/roles/udhcpd/tasks/main.yml A ansible/roles/udhcpd/templates/etc/udhcpd.conf 4 files changed, 168 insertions(+), 0 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-ci refs/changes/35/7735/1 diff --git a/ansible/roles/udhcpd/README.md b/ansible/roles/udhcpd/README.md new file mode 100644 index 0000000..0d37661 --- /dev/null +++ b/ansible/roles/udhcpd/README.md @@ -0,0 +1,15 @@ +--- +Install and configure udhcpd. + +``` + - name: udhcpd + udhcpd_router: 10.42.42.1 + udhcpd_range_start: 10.42.42.230 + udhcpd_range_end: 10.42.42.230 + udhcpd_netmask: 255.255.255.0 + udhcpd_dns: 10.42.42.2 + udhcpd_interface: enp2s0 + udhcpd_static_leases: + - mac: 00:12:34:56:78:9a + ip: 10.42.42.53 +``` diff --git a/ansible/roles/udhcpd/defaults/main.yml b/ansible/roles/udhcpd/defaults/main.yml new file mode 100644 index 0000000..1f4ef47 --- /dev/null +++ b/ansible/roles/udhcpd/defaults/main.yml @@ -0,0 +1,16 @@ +--- + +udhcpd_range_start: 192.168.1.100 +udhcpd_range_end: 192.168.1.200 + +udhcpd_subnet: 255.255.255.0 +udhcpd_router: 192.168.1.1 +udhcpd_dns: "{{ udhcpd_router }}" + +# in seconds +# default: 10 days +udhcpd_lease_time: 864000 + +udhcpd_interface: eth0 + +udhcpd_static_leases: [] diff --git a/ansible/roles/udhcpd/tasks/main.yml b/ansible/roles/udhcpd/tasks/main.yml new file mode 100644 index 0000000..280a5ef --- /dev/null +++ b/ansible/roles/udhcpd/tasks/main.yml @@ -0,0 +1,14 @@ +--- +- name: udhcpd | update apt-cache + apt: + cache_valid_time: 3600 + update_cache: yes + +- name: udhcpd | install + apt: + name: udhcpd + +- name: configure udhcpd + template: + src: etc/udhcpd.conf + dest: /etc/udhcpd.conf diff --git a/ansible/roles/udhcpd/templates/etc/udhcpd.conf b/ansible/roles/udhcpd/templates/etc/udhcpd.conf new file mode 100644 index 0000000..d2df746 --- /dev/null +++ b/ansible/roles/udhcpd/templates/etc/udhcpd.conf @@ -0,0 +1,123 @@ +# {{ ansible_managed }} + +# The start and end of the IP lease block + +start {{ udhcpd_range_start }} #default: 192.168.0.20 +end {{ udhcpd_range_end }} #default: 192.168.0.254 + +opt dns {{ udhcpd_dns }} +option subnet {{ udhcpd_subnet }} +opt router {{ udhcpd_router }} +option domain local +option lease {{ udhcpd_lease_time }} # 10 days of seconds + + + +# The interface that udhcpd will use + +interface {{ udhcpd_interface }} #default: eth0 + + +# The maximim number of leases (includes addressesd reserved +# by OFFER's, DECLINE's, and ARP conficts + +#max_leases 254 #default: 254 + + +# If remaining is true (default), udhcpd will store the time +# remaining for each lease in the udhcpd leases file. This is +# for embedded systems that cannot keep time between reboots. +# If you set remaining to no, the absolute time that the lease +# expires at will be stored in the dhcpd.leases file. + +#remaining yes #default: yes + + +# The time period at which udhcpd will write out a dhcpd.leases +# file. If this is 0, udhcpd will never automatically write a +# lease file. (specified in seconds) + +#auto_time 7200 #default: 7200 (2 hours) + + +# The amount of time that an IP will be reserved (leased) for if a +# DHCP decline message is received (seconds). + +#decline_time 3600 #default: 3600 (1 hour) + + +# The amount of time that an IP will be reserved (leased) for if an +# ARP conflct occurs. (seconds + +#conflict_time 3600 #default: 3600 (1 hour) + + +# How long an offered address is reserved (leased) in seconds + +#offer_time 60 #default: 60 (1 minute) + +# If a lease to be given is below this value, the full lease time is +# instead used (seconds). + +#min_lease 60 #defult: 60 + + +# The location of the leases file + +#lease_file /var/lib/misc/udhcpd.leases #defualt: /var/lib/misc/udhcpd.leases + +# The location of the pid file +#pidfile /var/run/udhcpd.pid #default: /var/run/udhcpd.pid + +# Everytime udhcpd writes a leases file, the below script will be called. +# Useful for writing the lease file to flash every few hours. + +#notify_file #default: (no script) + +#notify_file dumpleases # <--- useful for debugging + +# The following are bootp specific options, setable by udhcpd. + +#siaddr 192.168.0.22 #default: 0.0.0.0 + +#sname zorak #default: (none) + +#boot_file /var/nfs_root #default: (none) + +# The remainer of options are DHCP options and can be specifed with the +# keyword 'opt' or 'option'. If an option can take multiple items, such +# as the dns option, they can be listed on the same line, or multiple +# lines. The only option with a default is 'lease'. + +# Currently supported options, for more info, see options.c +#opt subnet +#opt timezone +#opt router +#opt timesrv +#opt namesrv +#opt dns +#opt logsrv +#opt cookiesrv +#opt lprsrv +#opt bootsize +#opt domain +#opt swapsrv +#opt rootpath +#opt ipttl +#opt mtu +#opt broadcast +#opt wins +#opt lease +#opt ntpsrv +#opt tftp +#opt bootfile +#opt wpad +# opt wins 192.168.10.10 + +# Static leases map +#static_lease 00:60:08:11:CE:4E 192.168.0.54 +#static_lease 00:60:08:11:CE:3E 192.168.0.44 + +{% for lease in udhcpd_static_leases %} +static_lease {{ lease['mac'] }} {{ lease['ip'] }} +{% endfor %} -- To view, visit https://gerrit.osmocom.org/7735 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Ia272ae9c2b245d0a06f84b91f50dd875d4488e02 Gerrit-PatchSet: 1 Gerrit-Project: osmo-ci Gerrit-Branch: master Gerrit-Owner: lynxis lazus From gerrit-no-reply at lists.osmocom.org Tue Apr 10 16:29:23 2018 From: gerrit-no-reply at lists.osmocom.org (lynxis lazus) Date: Tue, 10 Apr 2018 16:29:23 +0000 Subject: [PATCH] osmo-ci[master]: ansible: setup-gsm-tester: use udhcpd as dhcp server Message-ID: Review at https://gerrit.osmocom.org/7736 ansible: setup-gsm-tester: use udhcpd as dhcp server Required for ip.access Change-Id: I5ae43ebcd3c87e625110d8ff6afa0476f4b1facf --- M ansible/setup-gsm-tester.yml 1 file changed, 9 insertions(+), 0 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-ci refs/changes/36/7736/1 diff --git a/ansible/setup-gsm-tester.yml b/ansible/setup-gsm-tester.yml index 8232102..a1a0389 100644 --- a/ansible/setup-gsm-tester.yml +++ b/ansible/setup-gsm-tester.yml @@ -37,3 +37,12 @@ generic_slave: false tags: - jenkins-slave + + - name: udhcpd + udhcpd_router: 10.42.42.1 + udhcpd_range_start: 10.42.42.230 + udhcpd_range_end: 10.42.42.235 + udhcpd_subnet: 255.255.255.0 + udhcpd_dns: 10.42.42.2 + udhcpd_interface: enp2s0 + # udhcpd_static_leases is set via host_vars/* -- To view, visit https://gerrit.osmocom.org/7736 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I5ae43ebcd3c87e625110d8ff6afa0476f4b1facf Gerrit-PatchSet: 1 Gerrit-Project: osmo-ci Gerrit-Branch: master Gerrit-Owner: lynxis lazus From gerrit-no-reply at lists.osmocom.org Tue Apr 10 16:29:23 2018 From: gerrit-no-reply at lists.osmocom.org (lynxis lazus) Date: Tue, 10 Apr 2018 16:29:23 +0000 Subject: [PATCH] osmo-ci[master]: ansible: gsm-tester-bts: install ip.access dependencies Message-ID: Review at https://gerrit.osmocom.org/7737 ansible: gsm-tester-bts: install ip.access dependencies Change-Id: I47f578c4b9bb7b1dc81ccf93a7e82a335f6968a2 --- A ansible/roles/gsm-tester-bts/README.md A ansible/roles/gsm-tester-bts/tasks/main.yml 2 files changed, 17 insertions(+), 0 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-ci refs/changes/37/7737/1 diff --git a/ansible/roles/gsm-tester-bts/README.md b/ansible/roles/gsm-tester-bts/README.md new file mode 100644 index 0000000..161d0c7 --- /dev/null +++ b/ansible/roles/gsm-tester-bts/README.md @@ -0,0 +1,3 @@ +# gsm-tester-bts + +Install and configure to use certain bts'. diff --git a/ansible/roles/gsm-tester-bts/tasks/main.yml b/ansible/roles/gsm-tester-bts/tasks/main.yml new file mode 100644 index 0000000..4430a01 --- /dev/null +++ b/ansible/roles/gsm-tester-bts/tasks/main.yml @@ -0,0 +1,14 @@ +--- +- name: gsm-tester-bts | update apt-cache + apt: + cache_valid_time: 3600 + update_cache: yes + +- name: gsm-tester-bts | ip.access install apt dependencies + apt: + name: python3-usb + +- name: gsm-tester-bts | ip.access install pip3 dependencies + pip: + name: pysispm + executable: pip3 -- To view, visit https://gerrit.osmocom.org/7737 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I47f578c4b9bb7b1dc81ccf93a7e82a335f6968a2 Gerrit-PatchSet: 1 Gerrit-Project: osmo-ci Gerrit-Branch: master Gerrit-Owner: lynxis lazus From gerrit-no-reply at lists.osmocom.org Tue Apr 10 16:29:24 2018 From: gerrit-no-reply at lists.osmocom.org (lynxis lazus) Date: Tue, 10 Apr 2018 16:29:24 +0000 Subject: [PATCH] osmo-ci[master]: ansible: gsm-tester: move usrp tasks to gsm-tester-bts Message-ID: Review at https://gerrit.osmocom.org/7738 ansible: gsm-tester: move usrp tasks to gsm-tester-bts Change-Id: I9caebed94c3473051b82e2cdc35f6dfb9f862084 --- M ansible/roles/gsm-tester-bts/tasks/main.yml M ansible/roles/gsm-tester-modems/tasks/main.yml 2 files changed, 22 insertions(+), 22 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-ci refs/changes/38/7738/1 diff --git a/ansible/roles/gsm-tester-bts/tasks/main.yml b/ansible/roles/gsm-tester-bts/tasks/main.yml index 4430a01..f51da6d 100644 --- a/ansible/roles/gsm-tester-bts/tasks/main.yml +++ b/ansible/roles/gsm-tester-bts/tasks/main.yml @@ -12,3 +12,25 @@ pip: name: pysispm executable: pip3 + +- name: gsm-tester-bts | usrp install apt dependecies + apt: + name: "{{ item }}" + cache_valid_time: 3600 + update_cache: yes + with_items: + - libuhd-dev + - uhd-host + register: uhd_installed + +- name: gsm-tester-bts | usrp download firmware + command: uhd_images_downloader + args: + creates: /usr/share/uhd/images + when: uhd_installed | changed + +- name: gsm-tester-bts | usrp allow jenkins to access + user: + name: jenkins + groups: usrp + append: yes diff --git a/ansible/roles/gsm-tester-modems/tasks/main.yml b/ansible/roles/gsm-tester-modems/tasks/main.yml index b766c73..81c6446 100644 --- a/ansible/roles/gsm-tester-modems/tasks/main.yml +++ b/ansible/roles/gsm-tester-modems/tasks/main.yml @@ -1,27 +1,5 @@ --- # modems -- name: install dependecies for usrp - apt: - name: "{{ item }}" - cache_valid_time: 3600 - update_cache: yes - with_items: - - libuhd-dev - - uhd-host - register: uhd_installed - -- name: download firmware for uhd/usrp - command: uhd_images_downloader - args: - creates: /usr/share/uhd/images - when: uhd_installed | changed - -- name: allow jenkins to access USRP - user: - name: jenkins - groups: usrp - append: yes - - name: install gobi2000 packages apt: name: gobi-loader -- To view, visit https://gerrit.osmocom.org/7738 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I9caebed94c3473051b82e2cdc35f6dfb9f862084 Gerrit-PatchSet: 1 Gerrit-Project: osmo-ci Gerrit-Branch: master Gerrit-Owner: lynxis lazus From gerrit-no-reply at lists.osmocom.org Tue Apr 10 16:29:24 2018 From: gerrit-no-reply at lists.osmocom.org (lynxis lazus) Date: Tue, 10 Apr 2018 16:29:24 +0000 Subject: [PATCH] osmo-ci[master]: ansible: gsm-tester-modems: improve name Message-ID: Review at https://gerrit.osmocom.org/7739 ansible: gsm-tester-modems: improve name Use same scheme as of gsm-tester-bts. This should improve readability. Change-Id: I4186baaf565442c96555b723622c93b1cbd9f4f7 --- M ansible/roles/gsm-tester-modems/tasks/main.yml 1 file changed, 3 insertions(+), 3 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-ci refs/changes/39/7739/1 diff --git a/ansible/roles/gsm-tester-modems/tasks/main.yml b/ansible/roles/gsm-tester-modems/tasks/main.yml index 81c6446..d2213c6 100644 --- a/ansible/roles/gsm-tester-modems/tasks/main.yml +++ b/ansible/roles/gsm-tester-modems/tasks/main.yml @@ -1,15 +1,15 @@ --- # modems -- name: install gobi2000 packages +- name: gsm-tester-modems | gobi install apt dependencies apt: name: gobi-loader cache_valid_time: 3600 update_cache: yes -- name: gobi firmwares +- name: gsm-tester-modems | gobi create firmware directory file: path=/lib/firmware/gobi state=directory -- name: copy gobi firmwares +- name: gsm-tester-modems | gobi copy firmwares if available copy: src: "{{ item.file }}" dest: "/lib/firmware/{{ item.file }}" -- To view, visit https://gerrit.osmocom.org/7739 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I4186baaf565442c96555b723622c93b1cbd9f4f7 Gerrit-PatchSet: 1 Gerrit-Project: osmo-ci Gerrit-Branch: master Gerrit-Owner: lynxis lazus From gerrit-no-reply at lists.osmocom.org Tue Apr 10 16:29:24 2018 From: gerrit-no-reply at lists.osmocom.org (lynxis lazus) Date: Tue, 10 Apr 2018 16:29:24 +0000 Subject: [PATCH] osmo-ci[master]: ansible: gsm-tester: install sispmctl to control usb power s... Message-ID: Review at https://gerrit.osmocom.org/7740 ansible: gsm-tester: install sispmctl to control usb power sockets Change-Id: Ie1af197d4b24e25196e10d2afa3ab8eea73ad729 --- M ansible/roles/gsm-tester/tasks/main.yml 1 file changed, 4 insertions(+), 0 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-ci refs/changes/40/7740/1 diff --git a/ansible/roles/gsm-tester/tasks/main.yml b/ansible/roles/gsm-tester/tasks/main.yml index b6de075..f7eb1ee 100644 --- a/ansible/roles/gsm-tester/tasks/main.yml +++ b/ansible/roles/gsm-tester/tasks/main.yml @@ -242,3 +242,7 @@ copy: content: "maxsize 10M" dest: /etc/logrotate.d/maxsize + +- name: install sispmctl (usb power socket) + apt: + name: sispmctl -- To view, visit https://gerrit.osmocom.org/7740 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Ie1af197d4b24e25196e10d2afa3ab8eea73ad729 Gerrit-PatchSet: 1 Gerrit-Project: osmo-ci Gerrit-Branch: master Gerrit-Owner: lynxis lazus From gerrit-no-reply at lists.osmocom.org Tue Apr 10 16:29:24 2018 From: gerrit-no-reply at lists.osmocom.org (lynxis lazus) Date: Tue, 10 Apr 2018 16:29:24 +0000 Subject: [PATCH] osmo-ci[master]: ansible: gsm-tester-bts: add OBS osmocom:nightly to install ... Message-ID: Review at https://gerrit.osmocom.org/7741 ansible: gsm-tester-bts: add OBS osmocom:nightly to install osmocom utilities Useful for admininistrators. Change-Id: I7b704d402c83db54401d1c06acb715cce821f2e4 --- A ansible/roles/gsm-tester-bts/files/Release.key M ansible/roles/gsm-tester-bts/tasks/main.yml 2 files changed, 39 insertions(+), 0 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-ci refs/changes/41/7741/1 diff --git a/ansible/roles/gsm-tester-bts/files/Release.key b/ansible/roles/gsm-tester-bts/files/Release.key new file mode 100644 index 0000000..e656238 --- /dev/null +++ b/ansible/roles/gsm-tester-bts/files/Release.key @@ -0,0 +1,20 @@ +-----BEGIN PGP PUBLIC KEY BLOCK----- +Version: GnuPG v1.4.5 (GNU/Linux) + +mQENBFJBt/wBCADAht3d/ilNuyzaXYw/QwTRvmjyoDvfXw+H/3Fvk1zlDZoiKPPc +a1wCVBINUZl7vYM2OXqbJwYa++JP2Q48xKSvC6thbRc/YLievkbcvTemf7IaREfl +CTjoYpoqXHa9kHMw1aALDm8CNU88jZmnV7v9L6hKkbYDxie+jpoj7D6B9JlxgNJ4 +5dQyRNsFGVcIl4Vplt1HyGc5Q5nQI/VgS2rlF/IOXmhRQBc4LEDdU8R2IKnkU4ee +S7TWanAigGAQhxGuCkS39/CWzc1DhLhjlNhBl/+RTPejkqJtAy00ZLps3+RqUN1Y +CU/Fsr7aRlYVGqQ/BlptwV0XQ2VVYJX2oEBBABEBAAG0MG5ldHdvcmsgT0JTIFBy +b2plY3QgPG5ldHdvcmtAYnVpbGQub3BlbnN1c2Uub3JnPokBPAQTAQIAJgUCWmMc +aQIbAwUJDEAUbQYLCQgHAwIEFQIIAwQWAgMBAh4BAheAAAoJEGLrGgkXKA3fjsoI +ALSXmXzFCpTxg8a6tvXkqddY/qAmeBMNUf7hslI9wN3leNmCrnuHS8TbHWYJZgtw +8M5fKL3aRQYaIiqqm1XOUF0OqwYNDj5V3y38mM68NYOkzgSP7foMwZp9Y0TlGhtI +L8weA+2RUjB4hwwGMAYMqkRZyKW3NhPqdlGGoXac1ilwEyGXFHdOLbkhtyS+P2yb +/EvaKIN5cMLzRZKeYgdp9WuAirV+yV/SDbgvabW098lrWhGLltlRRDQgMV883p8I +ERMI1wlLFZGnHL3mfBWGeQ24M/DaBOdXQDtfBLCJ9nGztmDBUb8i6GFWU7nD2TGi +8mYUsED1ZDwO/0jdvJ4gSluIRgQTEQIABgUCUkG3/AAKCRA7MBG3a51lIzhdAJ9v +d6XPffMZRcCGgDEY5OaTn/MsCQCgrXbeZpFJgnirSrc8rRonvzYFiF4= +=Gvly +-----END PGP PUBLIC KEY BLOCK----- diff --git a/ansible/roles/gsm-tester-bts/tasks/main.yml b/ansible/roles/gsm-tester-bts/tasks/main.yml index f51da6d..a08670a 100644 --- a/ansible/roles/gsm-tester-bts/tasks/main.yml +++ b/ansible/roles/gsm-tester-bts/tasks/main.yml @@ -34,3 +34,22 @@ name: jenkins groups: usrp append: yes + +- name: gsm-tester-bts | add apt-key of OBS network:osmocom:nightly + apt_key: + data: "{{ lookup('file', 'Release.key') }}" + state: present + +- name: gsm-tester-bts | add apt-repo of OBS network:osmocom:nightly + apt_repo: + name: obs_network_osmocom_latest + repo: "deb http://download.opensuse.org/repositories/network:/osmocom:/nightly/Debian_{{ ansible_distribution_major_version }}.0/ ./" + update_cache: yes + +- name: gsm-tester-bts | install osmocom utilities + apt: + name: "{{ item }}" + with_items: + - abisip-find + - osmo-bsc-ipaccess-utils + - osmo-bsc-bs11-utils -- To view, visit https://gerrit.osmocom.org/7741 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I7b704d402c83db54401d1c06acb715cce821f2e4 Gerrit-PatchSet: 1 Gerrit-Project: osmo-ci Gerrit-Branch: master Gerrit-Owner: lynxis lazus From gerrit-no-reply at lists.osmocom.org Tue Apr 10 16:58:28 2018 From: gerrit-no-reply at lists.osmocom.org (lynxis lazus) Date: Tue, 10 Apr 2018 16:58:28 +0000 Subject: [PATCH] osmo-ci[master]: jobs: gerrit-osmo-ttcn3-hacks: execute the job on a ttcn3 node Message-ID: Review at https://gerrit.osmocom.org/7742 jobs: gerrit-osmo-ttcn3-hacks: execute the job on a ttcn3 node Only ttcn3 nodes have the eclipse-titan compiler installed Change-Id: If946af8fa3f7bd2d13914c9895d3f74b58fdef24 --- M jobs/gerrit-verifications.yml 1 file changed, 1 insertion(+), 1 deletion(-) git pull ssh://gerrit.osmocom.org:29418/osmo-ci refs/changes/42/7742/1 diff --git a/jobs/gerrit-verifications.yml b/jobs/gerrit-verifications.yml index 54c99cc..640bde7 100644 --- a/jobs/gerrit-verifications.yml +++ b/jobs/gerrit-verifications.yml @@ -186,7 +186,7 @@ - osmo-ttcn3-hacks: repos_url: 'https://gerrit.osmocom.org/{repos}' - slave_axis: !!python/tuple [build2-deb9build] + slave_axis: !!python/tuple [ttcn3] cmd: > # keep first line with less indent to preserve newlines make clean; make deps-update && make compile -- To view, visit https://gerrit.osmocom.org/7742 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: If946af8fa3f7bd2d13914c9895d3f74b58fdef24 Gerrit-PatchSet: 1 Gerrit-Project: osmo-ci Gerrit-Branch: master Gerrit-Owner: lynxis lazus From gerrit-no-reply at lists.osmocom.org Tue Apr 10 17:02:30 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Tue, 10 Apr 2018 17:02:30 +0000 Subject: osmo-ci[master]: ansible: add role udhcpd: setup a udhcpd server In-Reply-To: References: Message-ID: Patch Set 1: (1 comment) https://gerrit.osmocom.org/#/c/7735/1/ansible/roles/udhcpd/defaults/main.yml File ansible/roles/udhcpd/defaults/main.yml: Line 16: udhcpd_static_leases: [] we are missing the leases here? - label: NanoBTS-ONW-1900 type: nanobts ipa_unit_id: 9 addr: 10.42.42.53 band: GSM-1900 power_supply: type: 'sispm' device: '01:01:4d:98:24' port: '1' - label: NanoBTS-ONW-900 type: nanobts ipa_unit_id: 10 addr: 10.42.42.54 band: GSM-900 power_supply: type: 'sispm' device: '01:01:4d:98:24' port: '2' -- To view, visit https://gerrit.osmocom.org/7735 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Ia272ae9c2b245d0a06f84b91f50dd875d4488e02 Gerrit-PatchSet: 1 Gerrit-Project: osmo-ci Gerrit-Branch: master Gerrit-Owner: lynxis lazus Gerrit-Reviewer: Pau Espin Pedrol Gerrit-HasComments: Yes From gerrit-no-reply at lists.osmocom.org Tue Apr 10 17:03:36 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Tue, 10 Apr 2018 17:03:36 +0000 Subject: osmo-ci[master]: ansible: setup-gsm-tester: use udhcpd as dhcp server In-Reply-To: References: Message-ID: Patch Set 1: (1 comment) https://gerrit.osmocom.org/#/c/7736/1/ansible/setup-gsm-tester.yml File ansible/setup-gsm-tester.yml: Line 48: # udhcpd_static_leases is set via host_vars/* I don't see any file added in host_vars here adding support for the leases in prod. -- To view, visit https://gerrit.osmocom.org/7736 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I5ae43ebcd3c87e625110d8ff6afa0476f4b1facf Gerrit-PatchSet: 1 Gerrit-Project: osmo-ci Gerrit-Branch: master Gerrit-Owner: lynxis lazus Gerrit-Reviewer: Pau Espin Pedrol Gerrit-HasComments: Yes From gerrit-no-reply at lists.osmocom.org Tue Apr 10 17:04:30 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Tue, 10 Apr 2018 17:04:30 +0000 Subject: osmo-ci[master]: ansible: gsm-tester-bts: install ip.access dependencies In-Reply-To: References: Message-ID: Patch Set 1: (1 comment) https://gerrit.osmocom.org/#/c/7737/1/ansible/roles/gsm-tester-bts/tasks/main.yml File ansible/roles/gsm-tester-bts/tasks/main.yml: Line 9: name: python3-usb why executable: pip3 is not defined here but it is below? -- To view, visit https://gerrit.osmocom.org/7737 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I47f578c4b9bb7b1dc81ccf93a7e82a335f6968a2 Gerrit-PatchSet: 1 Gerrit-Project: osmo-ci Gerrit-Branch: master Gerrit-Owner: lynxis lazus Gerrit-Reviewer: Pau Espin Pedrol Gerrit-HasComments: Yes From gerrit-no-reply at lists.osmocom.org Tue Apr 10 17:08:05 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Tue, 10 Apr 2018 17:08:05 +0000 Subject: osmo-ci[master]: ansible: gsm-tester: move usrp tasks to gsm-tester-bts In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+1 (1 comment) https://gerrit.osmocom.org/#/c/7738/1/ansible/roles/gsm-tester-bts/tasks/main.yml File ansible/roles/gsm-tester-bts/tasks/main.yml: Line 18: name: "{{ item }}" where does item come from in here? -- To view, visit https://gerrit.osmocom.org/7738 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I9caebed94c3473051b82e2cdc35f6dfb9f862084 Gerrit-PatchSet: 1 Gerrit-Project: osmo-ci Gerrit-Branch: master Gerrit-Owner: lynxis lazus Gerrit-Reviewer: Pau Espin Pedrol Gerrit-HasComments: Yes From gerrit-no-reply at lists.osmocom.org Tue Apr 10 17:08:26 2018 From: gerrit-no-reply at lists.osmocom.org (lynxis lazus) Date: Tue, 10 Apr 2018 17:08:26 +0000 Subject: osmo-ci[master]: ansible: gsm-tester-bts: install ip.access dependencies In-Reply-To: References: Message-ID: Patch Set 1: (2 comments) https://gerrit.osmocom.org/#/c/7737/1/ansible/roles/gsm-tester-bts/tasks/main.yml File ansible/roles/gsm-tester-bts/tasks/main.yml: Line 9: name: python3-usb > why executable: pip3 is not defined here but it is below? this is a package via apt Line 11: - name: gsm-tester-bts | ip.access install pip3 dependencies this is a package install via pip -- To view, visit https://gerrit.osmocom.org/7737 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I47f578c4b9bb7b1dc81ccf93a7e82a335f6968a2 Gerrit-PatchSet: 1 Gerrit-Project: osmo-ci Gerrit-Branch: master Gerrit-Owner: lynxis lazus Gerrit-Reviewer: Pau Espin Pedrol Gerrit-Reviewer: lynxis lazus Gerrit-HasComments: Yes From gerrit-no-reply at lists.osmocom.org Tue Apr 10 17:08:36 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Tue, 10 Apr 2018 17:08:36 +0000 Subject: osmo-ci[master]: ansible: gsm-tester-modems: improve name In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+1 -- To view, visit https://gerrit.osmocom.org/7739 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I4186baaf565442c96555b723622c93b1cbd9f4f7 Gerrit-PatchSet: 1 Gerrit-Project: osmo-ci Gerrit-Branch: master Gerrit-Owner: lynxis lazus Gerrit-Reviewer: Pau Espin Pedrol Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Tue Apr 10 17:08:49 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Tue, 10 Apr 2018 17:08:49 +0000 Subject: osmo-ci[master]: ansible: gsm-tester: install sispmctl to control usb power s... In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+1 -- To view, visit https://gerrit.osmocom.org/7740 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Ie1af197d4b24e25196e10d2afa3ab8eea73ad729 Gerrit-PatchSet: 1 Gerrit-Project: osmo-ci Gerrit-Branch: master Gerrit-Owner: lynxis lazus Gerrit-Reviewer: Pau Espin Pedrol Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Tue Apr 10 17:09:32 2018 From: gerrit-no-reply at lists.osmocom.org (lynxis lazus) Date: Tue, 10 Apr 2018 17:09:32 +0000 Subject: [PATCH] osmo-ci[master]: ansible: setup-gsm-tester: use udhcpd as dhcp server In-Reply-To: References: Message-ID: ansible: setup-gsm-tester: use udhcpd as dhcp server Required for ip.access Change-Id: I5ae43ebcd3c87e625110d8ff6afa0476f4b1facf --- A ansible/host_vars/osmo-gsm-tester-prod.yml A ansible/host_vars/osmo-gsm-tester-rnd.yml M ansible/setup-gsm-tester.yml 3 files changed, 19 insertions(+), 0 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-ci refs/changes/36/7736/2 diff --git a/ansible/host_vars/osmo-gsm-tester-prod.yml b/ansible/host_vars/osmo-gsm-tester-prod.yml new file mode 100644 index 0000000..e87d8fb --- /dev/null +++ b/ansible/host_vars/osmo-gsm-tester-prod.yml @@ -0,0 +1,6 @@ +--- +udhcpd_static_leases: + - mac: 00:02:95:00:52:ae + ip: 10.42.42.53 + - mac: 00:02:95:00:5a:a4 + ip: 10.42.42.54 diff --git a/ansible/host_vars/osmo-gsm-tester-rnd.yml b/ansible/host_vars/osmo-gsm-tester-rnd.yml new file mode 100644 index 0000000..b524752 --- /dev/null +++ b/ansible/host_vars/osmo-gsm-tester-rnd.yml @@ -0,0 +1,4 @@ +--- +udhcpd_static_leases: + - mac: 00:02:95:00:41:b3 + ip: 10.42.42.53 diff --git a/ansible/setup-gsm-tester.yml b/ansible/setup-gsm-tester.yml index 8232102..a1a0389 100644 --- a/ansible/setup-gsm-tester.yml +++ b/ansible/setup-gsm-tester.yml @@ -37,3 +37,12 @@ generic_slave: false tags: - jenkins-slave + + - name: udhcpd + udhcpd_router: 10.42.42.1 + udhcpd_range_start: 10.42.42.230 + udhcpd_range_end: 10.42.42.235 + udhcpd_subnet: 255.255.255.0 + udhcpd_dns: 10.42.42.2 + udhcpd_interface: enp2s0 + # udhcpd_static_leases is set via host_vars/* -- To view, visit https://gerrit.osmocom.org/7736 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newpatchset Gerrit-Change-Id: I5ae43ebcd3c87e625110d8ff6afa0476f4b1facf Gerrit-PatchSet: 2 Gerrit-Project: osmo-ci Gerrit-Branch: master Gerrit-Owner: lynxis lazus Gerrit-Reviewer: Pau Espin Pedrol From gerrit-no-reply at lists.osmocom.org Tue Apr 10 17:10:00 2018 From: gerrit-no-reply at lists.osmocom.org (lynxis lazus) Date: Tue, 10 Apr 2018 17:10:00 +0000 Subject: osmo-ci[master]: ansible: setup-gsm-tester: use udhcpd as dhcp server In-Reply-To: References: Message-ID: Patch Set 2: here they are. Thanks! -- To view, visit https://gerrit.osmocom.org/7736 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I5ae43ebcd3c87e625110d8ff6afa0476f4b1facf Gerrit-PatchSet: 2 Gerrit-Project: osmo-ci Gerrit-Branch: master Gerrit-Owner: lynxis lazus Gerrit-Reviewer: Pau Espin Pedrol Gerrit-Reviewer: lynxis lazus Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Tue Apr 10 17:10:02 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Tue, 10 Apr 2018 17:10:02 +0000 Subject: osmo-ci[master]: ansible: gsm-tester-bts: add OBS osmocom:nightly to install ... In-Reply-To: References: Message-ID: Patch Set 1: (1 comment) https://gerrit.osmocom.org/#/c/7741/1/ansible/roles/gsm-tester-bts/files/Release.key File ansible/roles/gsm-tester-bts/files/Release.key: Line 1: -----BEGIN PGP PUBLIC KEY BLOCK----- I think it's better to download it from OBS as specified in the Night Builds wiki page from osmocom's redmine. -- To view, visit https://gerrit.osmocom.org/7741 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I7b704d402c83db54401d1c06acb715cce821f2e4 Gerrit-PatchSet: 1 Gerrit-Project: osmo-ci Gerrit-Branch: master Gerrit-Owner: lynxis lazus Gerrit-Reviewer: Pau Espin Pedrol Gerrit-HasComments: Yes From gerrit-no-reply at lists.osmocom.org Tue Apr 10 17:10:41 2018 From: gerrit-no-reply at lists.osmocom.org (lynxis lazus) Date: Tue, 10 Apr 2018 17:10:41 +0000 Subject: osmo-ci[master]: ansible: gsm-tester: move usrp tasks to gsm-tester-bts In-Reply-To: References: Message-ID: Patch Set 1: (1 comment) https://gerrit.osmocom.org/#/c/7738/1/ansible/roles/gsm-tester-bts/tasks/main.yml File ansible/roles/gsm-tester-bts/tasks/main.yml: Line 21: with_items: from here -- To view, visit https://gerrit.osmocom.org/7738 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I9caebed94c3473051b82e2cdc35f6dfb9f862084 Gerrit-PatchSet: 1 Gerrit-Project: osmo-ci Gerrit-Branch: master Gerrit-Owner: lynxis lazus Gerrit-Reviewer: Pau Espin Pedrol Gerrit-Reviewer: lynxis lazus Gerrit-HasComments: Yes From gerrit-no-reply at lists.osmocom.org Tue Apr 10 17:11:21 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Tue, 10 Apr 2018 17:11:21 +0000 Subject: osmo-ci[master]: ansible: gsm-tester-bts: install ip.access dependencies In-Reply-To: References: Message-ID: Patch Set 1: (1 comment) https://gerrit.osmocom.org/#/c/7737/1/ansible/roles/gsm-tester-bts/tasks/main.yml File ansible/roles/gsm-tester-bts/tasks/main.yml: Line 11: - name: gsm-tester-bts | ip.access install pip3 dependencies > this is a package install via pip Indeed, sorry I didn't look close enough. -- To view, visit https://gerrit.osmocom.org/7737 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I47f578c4b9bb7b1dc81ccf93a7e82a335f6968a2 Gerrit-PatchSet: 1 Gerrit-Project: osmo-ci Gerrit-Branch: master Gerrit-Owner: lynxis lazus Gerrit-Reviewer: Pau Espin Pedrol Gerrit-Reviewer: lynxis lazus Gerrit-HasComments: Yes From gerrit-no-reply at lists.osmocom.org Tue Apr 10 17:11:28 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Tue, 10 Apr 2018 17:11:28 +0000 Subject: osmo-ci[master]: ansible: gsm-tester-bts: install ip.access dependencies In-Reply-To: References: Message-ID: Patch Set 2: Code-Review+1 -- To view, visit https://gerrit.osmocom.org/7737 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I47f578c4b9bb7b1dc81ccf93a7e82a335f6968a2 Gerrit-PatchSet: 2 Gerrit-Project: osmo-ci Gerrit-Branch: master Gerrit-Owner: lynxis lazus Gerrit-Reviewer: Pau Espin Pedrol Gerrit-Reviewer: lynxis lazus Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Tue Apr 10 17:13:04 2018 From: gerrit-no-reply at lists.osmocom.org (lynxis lazus) Date: Tue, 10 Apr 2018 17:13:04 +0000 Subject: osmo-ci[master]: ansible: gsm-tester-bts: add OBS osmocom:nightly to install ... In-Reply-To: References: Message-ID: Patch Set 1: (1 comment) https://gerrit.osmocom.org/#/c/7741/1/ansible/roles/gsm-tester-bts/files/Release.key File ansible/roles/gsm-tester-bts/files/Release.key: Line 1: -----BEGIN PGP PUBLIC KEY BLOCK----- > I think it's better to download it from OBS as specified in the Night Build I like to have an explicit downloaded Release.key or we could download it, but in this case we **should** pin the gpg-key to a specific fingerprint which is the same outcome. -- To view, visit https://gerrit.osmocom.org/7741 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I7b704d402c83db54401d1c06acb715cce821f2e4 Gerrit-PatchSet: 1 Gerrit-Project: osmo-ci Gerrit-Branch: master Gerrit-Owner: lynxis lazus Gerrit-Reviewer: Pau Espin Pedrol Gerrit-Reviewer: lynxis lazus Gerrit-HasComments: Yes From gerrit-no-reply at lists.osmocom.org Tue Apr 10 17:13:05 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Tue, 10 Apr 2018 17:13:05 +0000 Subject: osmo-ci[master]: ansible: setup-gsm-tester: use udhcpd as dhcp server In-Reply-To: References: Message-ID: Patch Set 2: Code-Review+1 -- To view, visit https://gerrit.osmocom.org/7736 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I5ae43ebcd3c87e625110d8ff6afa0476f4b1facf Gerrit-PatchSet: 2 Gerrit-Project: osmo-ci Gerrit-Branch: master Gerrit-Owner: lynxis lazus Gerrit-Reviewer: Pau Espin Pedrol Gerrit-Reviewer: lynxis lazus Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Tue Apr 10 17:16:09 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Tue, 10 Apr 2018 17:16:09 +0000 Subject: osmo-ci[master]: ansible: gsm-tester-bts: add OBS osmocom:nightly to install ... In-Reply-To: References: Message-ID: Patch Set 1: (1 comment) https://gerrit.osmocom.org/#/c/7741/1/ansible/roles/gsm-tester-bts/files/Release.key File ansible/roles/gsm-tester-bts/files/Release.key: Line 1: -----BEGIN PGP PUBLIC KEY BLOCK----- > I like to have an explicit downloaded Release.key or we could download it, Relying on the https certificate from OBS could be enough, but up to you :) -- To view, visit https://gerrit.osmocom.org/7741 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I7b704d402c83db54401d1c06acb715cce821f2e4 Gerrit-PatchSet: 1 Gerrit-Project: osmo-ci Gerrit-Branch: master Gerrit-Owner: lynxis lazus Gerrit-Reviewer: Pau Espin Pedrol Gerrit-Reviewer: lynxis lazus Gerrit-HasComments: Yes From gerrit-no-reply at lists.osmocom.org Tue Apr 10 17:16:14 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Tue, 10 Apr 2018 17:16:14 +0000 Subject: osmo-ci[master]: ansible: gsm-tester-bts: add OBS osmocom:nightly to install ... In-Reply-To: References: Message-ID: Patch Set 2: Code-Review+1 -- To view, visit https://gerrit.osmocom.org/7741 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I7b704d402c83db54401d1c06acb715cce821f2e4 Gerrit-PatchSet: 2 Gerrit-Project: osmo-ci Gerrit-Branch: master Gerrit-Owner: lynxis lazus Gerrit-Reviewer: Pau Espin Pedrol Gerrit-Reviewer: lynxis lazus Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Tue Apr 10 17:31:40 2018 From: gerrit-no-reply at lists.osmocom.org (Stefan Sperling) Date: Tue, 10 Apr 2018 17:31:40 +0000 Subject: [PATCH] osmo-hlr[master]: rewrite subscriber_update_notify() without calls into luop Message-ID: Review at https://gerrit.osmocom.org/7743 rewrite subscriber_update_notify() without calls into luop This function relied on implementation details of the luop code. Port what is necessary for an independent Insert Subscriber Data Tx operation from the luop code into this function. A next possible step would be to try to merge both of these into a common implementation, but that is left for future work. The TTCN3 test TC_vty_msisdn_isd is still passing (it currently triggers the "circuit switched domain" case because it does not advertise itself as an SGSN in the IPA unit name). Change-Id: I06c43ece2b48dc63d599000eb6d6d51e08963067 Related: OS#2785 --- M src/hlr.c 1 file changed, 76 insertions(+), 7 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-hlr refs/changes/43/7743/1 diff --git a/src/hlr.c b/src/hlr.c index 4fbc268..d06cf0a 100644 --- a/src/hlr.c +++ b/src/hlr.c @@ -62,19 +62,88 @@ return; llist_for_each_entry(co, &g_hlr->gs->clients, list) { - struct lu_operation *luop = lu_op_alloc_conn(co); - if (!luop) { + struct osmo_gsup_message gsup; + uint8_t *unit; + int unit_len; + uint8_t *peer; + int peer_len; + uint8_t msisdn_enc[43]; /* TODO use constant; TS 24.008 10.5.4.7 */ + bool is_ps; + uint8_t apn[APN_MAXLEN]; + int len; + struct msgb *msg_out; + + unit_len = osmo_gsup_conn_ccm_get(co, &unit, IPAC_IDTAG_UNITNAME); + if (unit_len < 0) { LOGP(DMAIN, LOGL_ERROR, - "IMSI='%s': Cannot notify GSUP client, cannot allocate lu_operation," + "IMSI='%s': Cannot notify GSUP client, cannot get unit name" " for %s:%u\n", subscr->imsi, co && co->conn && co->conn->server? co->conn->server->addr : "unset", co && co->conn && co->conn->server? co->conn->server->port : 0); continue; } - luop->subscr = *subscr; - luop->state = LU_S_LU_RECEIVED; /* Pretend we received a location update. */ - lu_op_tx_insert_subscr_data(luop); - lu_op_free(luop); + + peer_len = osmo_gsup_conn_ccm_get(co, &peer, IPAC_IDTAG_SERNR); + if (peer_len < 0) { + LOGP(DMAIN, LOGL_ERROR, + "IMSI='%s': Cannot notify GSUP client, cannot get peer address " + " for %s:%u\n", subscr->imsi, + co && co->conn && co->conn->server? co->conn->server->addr : "unset", + co && co->conn && co->conn->server? co->conn->server->port : 0); + continue; + } + + memset(&gsup, 0, sizeof(gsup)); + gsup.message_type = OSMO_GSUP_MSGT_INSERT_DATA_REQUEST; + osmo_strlcpy(gsup.imsi, subscr->imsi, GSM23003_IMSI_MAX_DIGITS + 1); + + len = gsm48_encode_bcd_number(msisdn_enc, sizeof(msisdn_enc), 0, subscr->msisdn); + if (len < 1) { + LOGP(DMAIN, LOGL_ERROR, "%s: Error: cannot encode MSISDN '%s'\n", + subscr->imsi, subscr->msisdn); + continue; + } + gsup.msisdn_enc = msisdn_enc; + gsup.msisdn_enc_len = len; + + /* XXX Cast to 'char *' avoids a "pointer targets differ in signedness" warning from GCC 7.2.0. */ + is_ps = (strncmp((char *)unit, "SGSN", 4) == 0); + gsup.cn_domain = is_ps ? OSMO_GSUP_CN_DOMAIN_PS : OSMO_GSUP_CN_DOMAIN_CS; + + if (gsup.cn_domain == OSMO_GSUP_CN_DOMAIN_PS) { + /* FIXME: PDP infos - use more fine-grained access control + instead of wildcard APN */ + len = osmo_apn_from_str(apn, sizeof(apn), "*"); + if (len > 0) { + gsup.pdp_infos[0].apn_enc = apn; + gsup.pdp_infos[0].apn_enc_len = len; + gsup.pdp_infos[0].have_info = 1; + gsup.num_pdp_infos = 1; + /* FIXME: use real value: */ + gsup.pdp_infos[0].context_id = 1; + } + } + + /* Send ISD to VLR/SGSN */ + msg_out = msgb_alloc_headroom(1024+16, 16, "GSUP ISD UPDATE"); + if (msg_out == NULL) { + LOGP(DMAIN, LOGL_ERROR, + "IMSI='%s': Cannot notify GSUP client; could not allocate msg buffer " + " for %s:%u\n", subscr->imsi, + co && co->conn && co->conn->server? co->conn->server->addr : "unset", + co && co->conn && co->conn->server? co->conn->server->port : 0); + continue; + } + + osmo_gsup_encode(msg_out, &gsup); + if (osmo_gsup_addr_send(g_hlr->gs, peer, peer_len, msg_out) < 0) { + LOGP(DMAIN, LOGL_ERROR, + "IMSI='%s': Cannot notify GSUP client; send operation failed " + " for %s:%u\n", subscr->imsi, + co && co->conn && co->conn->server? co->conn->server->addr : "unset", + co && co->conn && co->conn->server? co->conn->server->port : 0); + continue; + } } } -- To view, visit https://gerrit.osmocom.org/7743 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I06c43ece2b48dc63d599000eb6d6d51e08963067 Gerrit-PatchSet: 1 Gerrit-Project: osmo-hlr Gerrit-Branch: master Gerrit-Owner: Stefan Sperling From gerrit-no-reply at lists.osmocom.org Tue Apr 10 18:31:23 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Tue, 10 Apr 2018 18:31:23 +0000 Subject: osmo-bsc[master]: trigger acc ramping based on trx rf-locked state In-Reply-To: References: Message-ID: Patch Set 1: I'll review them this night/tomorrow -- To view, visit https://gerrit.osmocom.org/7732 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I4124f1da3dadec003de45c1da8435506ee8f0a34 Gerrit-PatchSet: 1 Gerrit-Project: osmo-bsc Gerrit-Branch: master Gerrit-Owner: Stefan Sperling Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Pau Espin Pedrol Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Tue Apr 10 23:22:29 2018 From: gerrit-no-reply at lists.osmocom.org (Neels Hofmeyr) Date: Tue, 10 Apr 2018 23:22:29 +0000 Subject: [PATCH] docker-playground[master]: ttcn3-bsc-test: bsc cfg: fix ARFCN-BSIC collisions Message-ID: Review at https://gerrit.osmocom.org/7744 ttcn3-bsc-test: bsc cfg: fix ARFCN-BSIC collisions All three BTS are configured for ARFCN 871 and BSIC 63, which causes trouble for handover tests. Set BSICs to 10, 11 and 12 (not 0,1,2 to mark the distinction from the cell_identity). It wasn't a problem so far since we cheated by passing the BTS target number from VTY. But as soon as we will start identifying handover target cells by ARFCN+BSIC exclusively, TC_ho_int would fall on its face without this patch. Change-Id: I29a117aa54aa06ca49646f25a08af8521832fd8d --- M ttcn3-bsc-test/osmo-bsc.cfg 1 file changed, 3 insertions(+), 3 deletions(-) git pull ssh://gerrit.osmocom.org:29418/docker-playground refs/changes/44/7744/1 diff --git a/ttcn3-bsc-test/osmo-bsc.cfg b/ttcn3-bsc-test/osmo-bsc.cfg index 610bdf3..9d5a9c3 100644 --- a/ttcn3-bsc-test/osmo-bsc.cfg +++ b/ttcn3-bsc-test/osmo-bsc.cfg @@ -79,7 +79,7 @@ location_area_code 1 dtx uplink force dtx downlink - base_station_id_code 63 + base_station_id_code 10 ms max power 15 cell reselection hysteresis 4 rxlev access min 0 @@ -169,7 +169,7 @@ location_area_code 2 dtx uplink force dtx downlink - base_station_id_code 63 + base_station_id_code 11 ms max power 15 cell reselection hysteresis 4 rxlev access min 0 @@ -259,7 +259,7 @@ location_area_code 1 dtx uplink force dtx downlink - base_station_id_code 63 + base_station_id_code 12 ms max power 15 cell reselection hysteresis 4 rxlev access min 0 -- To view, visit https://gerrit.osmocom.org/7744 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I29a117aa54aa06ca49646f25a08af8521832fd8d Gerrit-PatchSet: 1 Gerrit-Project: docker-playground Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr From gerrit-no-reply at lists.osmocom.org Tue Apr 10 23:24:29 2018 From: gerrit-no-reply at lists.osmocom.org (Neels Hofmeyr) Date: Tue, 10 Apr 2018 23:24:29 +0000 Subject: [PATCH] docker-playground[master]: ttcn3-bsc-test: bsc cfg: fix ARFCN-BSIC collisions In-Reply-To: References: Message-ID: ttcn3-bsc-test: bsc cfg: fix ARFCN-BSIC collisions All three BTS are configured for ARFCN 871 and BSIC 63, which causes trouble for handover tests. Set BSICs to 10, 11 and 12 (not 0,1,2 to mark the distinction from the cell_identity). It wasn't a problem so far since we cheated by passing the BTS target number from VTY. But as soon as we will start identifying handover target cells by ARFCN+BSIC exclusively, TC_ho_int would fall on its face without this patch. See also: osmo-ttcn3-hacks I2ea8889ea40953f5a23eab40db52585556a410bc Change-Id: I29a117aa54aa06ca49646f25a08af8521832fd8d --- M ttcn3-bsc-test/osmo-bsc.cfg 1 file changed, 3 insertions(+), 3 deletions(-) git pull ssh://gerrit.osmocom.org:29418/docker-playground refs/changes/44/7744/2 diff --git a/ttcn3-bsc-test/osmo-bsc.cfg b/ttcn3-bsc-test/osmo-bsc.cfg index 610bdf3..9d5a9c3 100644 --- a/ttcn3-bsc-test/osmo-bsc.cfg +++ b/ttcn3-bsc-test/osmo-bsc.cfg @@ -79,7 +79,7 @@ location_area_code 1 dtx uplink force dtx downlink - base_station_id_code 63 + base_station_id_code 10 ms max power 15 cell reselection hysteresis 4 rxlev access min 0 @@ -169,7 +169,7 @@ location_area_code 2 dtx uplink force dtx downlink - base_station_id_code 63 + base_station_id_code 11 ms max power 15 cell reselection hysteresis 4 rxlev access min 0 @@ -259,7 +259,7 @@ location_area_code 1 dtx uplink force dtx downlink - base_station_id_code 63 + base_station_id_code 12 ms max power 15 cell reselection hysteresis 4 rxlev access min 0 -- To view, visit https://gerrit.osmocom.org/7744 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newpatchset Gerrit-Change-Id: I29a117aa54aa06ca49646f25a08af8521832fd8d Gerrit-PatchSet: 2 Gerrit-Project: docker-playground Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr From gerrit-no-reply at lists.osmocom.org Tue Apr 10 23:25:26 2018 From: gerrit-no-reply at lists.osmocom.org (Neels Hofmeyr) Date: Tue, 10 Apr 2018 23:25:26 +0000 Subject: [PATCH] osmo-ttcn3-hacks[master]: bsc cfg: fix ARFCN-BSIC collisions Message-ID: Review at https://gerrit.osmocom.org/7745 bsc cfg: fix ARFCN-BSIC collisions All three BTS are configured for ARFCN 871 and BSIC 63, which causes trouble for handover tests. Set BSICs to 10, 11 and 12 (not 0,1,2 to mark the distinction from the cell_identity). It wasn't a problem so far since we cheated by passing the BTS target number from VTY. But as soon as we will start identifying handover target cells by ARFCN+BSIC exclusively, TC_ho_int would fall on its face without this patch. See also: docker-playground I29a117aa54aa06ca49646f25a08af8521832fd8d Change-Id: I2ea8889ea40953f5a23eab40db52585556a410bc --- M bsc/osmo-bsc.cfg 1 file changed, 3 insertions(+), 3 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-ttcn3-hacks refs/changes/45/7745/1 diff --git a/bsc/osmo-bsc.cfg b/bsc/osmo-bsc.cfg index 60cfcd7..fcf7179 100644 --- a/bsc/osmo-bsc.cfg +++ b/bsc/osmo-bsc.cfg @@ -74,7 +74,7 @@ location_area_code 1 dtx uplink force dtx downlink - base_station_id_code 63 + base_station_id_code 10 ms max power 15 cell reselection hysteresis 4 rxlev access min 0 @@ -164,7 +164,7 @@ location_area_code 1 dtx uplink force dtx downlink - base_station_id_code 63 + base_station_id_code 11 ms max power 15 cell reselection hysteresis 4 rxlev access min 0 @@ -254,7 +254,7 @@ location_area_code 2 dtx uplink force dtx downlink - base_station_id_code 63 + base_station_id_code 12 ms max power 15 cell reselection hysteresis 4 rxlev access min 0 -- To view, visit https://gerrit.osmocom.org/7745 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I2ea8889ea40953f5a23eab40db52585556a410bc Gerrit-PatchSet: 1 Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr From jenkins at lists.osmocom.org Tue Apr 10 23:59:55 2018 From: jenkins at lists.osmocom.org (jenkins at lists.osmocom.org) Date: Tue, 10 Apr 2018 23:59:55 +0000 (UTC) Subject: =?UTF-8?Q?Build_failed_in_Jenkins:_master-osmo-bts_=C2=BB_lc15, origin/?= =?UTF-8?Q?nrw/litecell15-next,default,osmocom-master-debian9_#493?= Message-ID: <278059194.240.1523404795969.JavaMail.jenkins@jenkins.osmocom.org> See ------------------------------------------ [...truncated 114.84 KB...] checking for suffix of executables... checking whether we are cross compiling... no checking for suffix of object files... o checking whether we are using the GNU C compiler... yes checking whether gcc accepts -g... yes checking for gcc option to accept ISO C89... none needed checking whether gcc understands -c and -o together... yes checking for style of include used by make... GNU checking dependency style of gcc... gcc3 checking build system type... x86_64-pc-linux-gnu checking host system type... x86_64-pc-linux-gnu checking how to print strings... printf checking for a sed that does not truncate output... /bin/sed checking for grep that handles long lines and -e... /bin/grep checking for egrep... /bin/grep -E checking for fgrep... /bin/grep -F checking for ld used by gcc... /usr/bin/ld checking if the linker (/usr/bin/ld) is GNU ld... yes checking for BSD- or MS-compatible name lister (nm)... /usr/bin/nm -B checking the name lister (/usr/bin/nm -B) interface... BSD nm checking whether ln -s works... yes checking the maximum length of command line arguments... 1572864 checking how to convert x86_64-pc-linux-gnu file names to x86_64-pc-linux-gnu format... func_convert_file_noop checking how to convert x86_64-pc-linux-gnu file names to toolchain format... func_convert_file_noop checking for /usr/bin/ld option to reload object files... -r checking for objdump... objdump checking how to recognize dependent libraries... pass_all checking for dlltool... no checking how to associate runtime and link libraries... printf %s\n checking for ar... ar checking for archiver @FILE support... @ checking for strip... strip checking for ranlib... ranlib checking command to parse /usr/bin/nm -B output from gcc object... ok checking for sysroot... no checking for a working dd... /bin/dd checking how to truncate binary pipes... /bin/dd bs=4096 count=1 checking for mt... mt checking if mt is a manifest tool... no checking how to run the C preprocessor... gcc -E checking for ANSI C header files... yes checking for sys/types.h... yes checking for sys/stat.h... yes checking for stdlib.h... yes checking for string.h... yes checking for memory.h... yes checking for strings.h... yes checking for inttypes.h... yes checking for stdint.h... yes checking for unistd.h... yes checking for dlfcn.h... yes checking for objdir... .libs checking if gcc supports -fno-rtti -fno-exceptions... no checking for gcc option to produce PIC... -fPIC -DPIC checking if gcc PIC flag -fPIC -DPIC works... yes checking if gcc static flag -static works... yes checking if gcc supports -c -o file.o... yes checking if gcc supports -c -o file.o... (cached) yes checking whether the gcc linker (/usr/bin/ld -m elf_x86_64) supports shared libraries... yes checking whether -lc should be explicitly linked in... no checking dynamic linker characteristics... GNU/Linux ld.so checking how to hardcode library paths into programs... immediate checking whether stripping libraries is possible... yes checking if libtool supports shared libraries... yes checking whether to build shared libraries... yes checking whether to build static libraries... yes checking for pkg-config... /usr/bin/pkg-config checking for pkg-config... /usr/bin/pkg-config checking pkg-config is at least version 0.20... yes checking if gcc supports -fvisibility=hidden... yes checking for LIBOSMOCORE... yes checking for LIBOSMOVTY... yes checking for LIBOSMOGSM... yes checking for ORTP... yes checking dahdi/user.h usability... no checking dahdi/user.h presence... no checking for dahdi/user.h... no configure: WARNING: DAHDI input driver will not be built CFLAGS="-g -O2 -Wall" CPPFLAGS=" -Wall" checking that generated files are newer than configure... done configure: creating ./config.status config.status: creating libosmoabis.pc config.status: creating libosmotrau.pc config.status: creating include/Makefile config.status: creating src/Makefile config.status: creating tests/Makefile config.status: creating Makefile config.status: creating config.h config.status: executing tests/atconfig commands config.status: executing depfiles commands config.status: executing libtool commands + make -j 8 install echo 0.3.2.104-db07 > .version-t && mv .version-t .version make install-recursive make[1]: Entering directory ' Making install in include make[2]: Entering directory ' make[3]: Entering directory ' make[3]: Nothing to be done for 'install-exec-am'. /bin/mkdir -p ' /bin/mkdir -p ' /usr/bin/install -c -m 644 osmocom/abis/ipa.h osmocom/abis/trau_frame.h osmocom/abis/ipa_proxy.h osmocom/abis/ipaccess.h osmocom/abis/abis.h osmocom/abis/subchan_demux.h osmocom/abis/e1_input.h osmocom/abis/lapd.h osmocom/abis/lapd_pcap.h osmocom/abis/unixsocket_proto.h ' /bin/mkdir -p ' /usr/bin/install -c -m 644 osmocom/trau/osmo_ortp.h ' make[3]: Leaving directory ' make[2]: Leaving directory ' Making install in src make[2]: Entering directory ' CC init.lo CC e1_input_vty.lo CC ipa_proxy.lo CC subchan_demux.lo CC e1_input.lo CC trau_frame.lo CC input/dahdi.lo CC input/ipa.lo CC input/ipaccess.lo CC input/lapd.lo CC input/lapd_pcap.lo CC input/misdn.lo CC input/rs232.lo CC input/unixsocket.lo CC trau/libosmotrau_la-osmo_ortp.lo trau/osmo_ortp.c:205:9: note: #pragma message: Using internal ortp API: rtp_session_rtcp_rec #pragma message ("Using internal ortp API: rtp_session_rtcp_rec") ^~~~~~~ In file included from trau/osmo_ortp.c:43:0: trau/osmo_ortp.c: In function ?osmo_rtp_socket_create?: ../config.h:65:34: warning: passing argument 4 of ?rtp_session_signal_connect? makes integer from pointer without a cast [-Wint-conversion] #define RTP_SIGNAL_PTR_CAST(arg) (void*)(arg) ^ trau/osmo_ortp.c:355:8: note: in expansion of macro ?RTP_SIGNAL_PTR_CAST? RTP_SIGNAL_PTR_CAST(rs)); ^~~~~~~~~~~~~~~~~~~ In file included from /usr/include/ortp/ortp.h:68:0, from trau/osmo_ortp.c:38: /usr/include/ortp/rtpsession.h:271:17: note: expected ?long unsigned int? but argument is of type ?void *? ORTP_PUBLIC int rtp_session_signal_connect(RtpSession *session,const char *signal_name, RtpCallback cb, unsigned long user_data); ^~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from trau/osmo_ortp.c:43:0: ../config.h:65:34: warning: passing argument 4 of ?rtp_session_signal_connect? makes integer from pointer without a cast [-Wint-conversion] #define RTP_SIGNAL_PTR_CAST(arg) (void*)(arg) ^ trau/osmo_ortp.c:359:8: note: in expansion of macro ?RTP_SIGNAL_PTR_CAST? RTP_SIGNAL_PTR_CAST(rs)); ^~~~~~~~~~~~~~~~~~~ In file included from /usr/include/ortp/ortp.h:68:0, from trau/osmo_ortp.c:38: /usr/include/ortp/rtpsession.h:271:17: note: expected ?long unsigned int? but argument is of type ?void *? ORTP_PUBLIC int rtp_session_signal_connect(RtpSession *session,const char *signal_name, RtpCallback cb, unsigned long user_data); ^~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from trau/osmo_ortp.c:43:0: ../config.h:65:34: warning: passing argument 4 of ?rtp_session_signal_connect? makes integer from pointer without a cast [-Wint-conversion] #define RTP_SIGNAL_PTR_CAST(arg) (void*)(arg) ^ trau/osmo_ortp.c:363:8: note: in expansion of macro ?RTP_SIGNAL_PTR_CAST? RTP_SIGNAL_PTR_CAST(rs)); ^~~~~~~~~~~~~~~~~~~ In file included from /usr/include/ortp/ortp.h:68:0, from trau/osmo_ortp.c:38: /usr/include/ortp/rtpsession.h:271:17: note: expected ?long unsigned int? but argument is of type ?void *? ORTP_PUBLIC int rtp_session_signal_connect(RtpSession *session,const char *signal_name, RtpCallback cb, unsigned long user_data); ^~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from trau/osmo_ortp.c:43:0: ../config.h:65:34: warning: passing argument 4 of ?rtp_session_signal_connect? makes integer from pointer without a cast [-Wint-conversion] #define RTP_SIGNAL_PTR_CAST(arg) (void*)(arg) ^ trau/osmo_ortp.c:367:8: note: in expansion of macro ?RTP_SIGNAL_PTR_CAST? RTP_SIGNAL_PTR_CAST(rs)); ^~~~~~~~~~~~~~~~~~~ In file included from /usr/include/ortp/ortp.h:68:0, from trau/osmo_ortp.c:38: /usr/include/ortp/rtpsession.h:271:17: note: expected ?long unsigned int? but argument is of type ?void *? ORTP_PUBLIC int rtp_session_signal_connect(RtpSession *session,const char *signal_name, RtpCallback cb, unsigned long user_data); ^~~~~~~~~~~~~~~~~~~~~~~~~~ CCLD libosmoabis.la CCLD libosmotrau.la ar: `u' modifier ignored since `D' is the default (see `U') ar: `u' modifier ignored since `D' is the default (see `U') make[3]: Entering directory ' make[3]: Nothing to be done for 'install-data-am'. /bin/mkdir -p ' /bin/bash ../libtool --mode=install /usr/bin/install -c libosmoabis.la libosmotrau.la ' libtool: install: /usr/bin/install -c .libs/libosmoabis.so.6.0.0 libtool: install: (cd && { ln -s -f libosmoabis.so.6.0.0 libosmoabis.so.6 || { rm -f libosmoabis.so.6 && ln -s libosmoabis.so.6.0.0 libosmoabis.so.6; }; }) libtool: install: (cd && { ln -s -f libosmoabis.so.6.0.0 libosmoabis.so || { rm -f libosmoabis.so && ln -s libosmoabis.so.6.0.0 libosmoabis.so; }; }) libtool: install: /usr/bin/install -c .libs/libosmoabis.lai libtool: install: /usr/bin/install -c .libs/libosmotrau.so.2.0.0 libtool: install: (cd && { ln -s -f libosmotrau.so.2.0.0 libosmotrau.so.2 || { rm -f libosmotrau.so.2 && ln -s libosmotrau.so.2.0.0 libosmotrau.so.2; }; }) libtool: install: (cd && { ln -s -f libosmotrau.so.2.0.0 libosmotrau.so || { rm -f libosmotrau.so && ln -s libosmotrau.so.2.0.0 libosmotrau.so; }; }) libtool: install: /usr/bin/install -c .libs/libosmotrau.lai libtool: install: /usr/bin/install -c .libs/libosmoabis.a libtool: install: chmod 644 libtool: install: ranlib libtool: install: /usr/bin/install -c .libs/libosmotrau.a libtool: install: chmod 644 libtool: install: ranlib libtool: finish: PATH="/usr/local/bin:/usr/bin:/bin:/usr/games:/home/osmocom-build/bin:/sbin" ldconfig -n ---------------------------------------------------------------------- Libraries have been installed in: If you ever happen to want to link against installed libraries in a given directory, LIBDIR, you must either use libtool, and specify the full pathname of the library, or use the '-LLIBDIR' flag during linking and do at least one of the following: - add LIBDIR to the 'LD_LIBRARY_PATH' environment variable during execution - add LIBDIR to the 'LD_RUN_PATH' environment variable during linking - use the '-Wl,-rpath -Wl,LIBDIR' linker flag - have your system administrator add LIBDIR to '/etc/ld.so.conf' See any operating system documentation about shared libraries for more information, such as the ld(1) and ld.so(8) manual pages. ---------------------------------------------------------------------- make[3]: Leaving directory ' make[2]: Leaving directory ' Making install in tests make[2]: Entering directory ' make[3]: Entering directory ' make[3]: Nothing to be done for 'install-exec-am'. make[3]: Nothing to be done for 'install-data-am'. make[3]: Leaving directory ' make[2]: Leaving directory ' make[2]: Entering directory ' make[3]: Entering directory ' make[3]: Nothing to be done for 'install-exec-am'. /bin/mkdir -p ' /usr/bin/install -c -m 644 libosmoabis.pc libosmotrau.pc ' make[3]: Leaving directory ' make[2]: Leaving directory ' make[1]: Leaving directory ' + STOW_DIR= stow --restow libosmo-abis + cd + osmo-layer1-headers.sh lc15 origin/nrw/litecell15-next + uri=https://gitlab.com/nrw_litecell15/litecell15-fw + version=origin/nrw/litecell15 + [ -n origin/nrw/litecell15-next ] + [ origin/nrw/litecell15-next != master ] + version=origin/nrw/litecell15-next + test -d layer1-headers + cd layer1-headers + git fetch origin + git checkout -f origin/nrw/litecell15-next error: pathspec 'origin/nrw/litecell15-next' did not match any file(s) known to git. Build step 'Execute shell' marked build as failure [WARNINGS]Skipping publisher since build result is FAILURE From jenkins at lists.osmocom.org Wed Apr 11 00:49:21 2018 From: jenkins at lists.osmocom.org (jenkins at lists.osmocom.org) Date: Wed, 11 Apr 2018 00:49:21 +0000 (UTC) Subject: =?UTF-8?Q?Jenkins_build_is_back_to_norm?= =?UTF-8?Q?al_:_master-osmo-bts_=C2=BB_lc15,or?= =?UTF-8?Q?igin/nrw/litecell15-next,default,osmocom-master-debian9_#494?= In-Reply-To: <278059194.240.1523404795969.JavaMail.jenkins@jenkins.osmocom.org> References: <278059194.240.1523404795969.JavaMail.jenkins@jenkins.osmocom.org> Message-ID: <1931086027.241.1523407761792.JavaMail.jenkins@jenkins.osmocom.org> See From gerrit-no-reply at lists.osmocom.org Wed Apr 11 01:22:34 2018 From: gerrit-no-reply at lists.osmocom.org (Neels Hofmeyr) Date: Wed, 11 Apr 2018 01:22:34 +0000 Subject: osmo-ttcn3-hacks[master]: MNCC: don't delete call table entries In-Reply-To: References: Message-ID: Patch Set 1: Seems to ma a test case shall decide when to clean up the call table entries. IIUC, it's impossible to derive what the test wants to do with the call and discard automatically in all the right places. So we'd make f_call_table_del() non-private and call that from test cases? -- To view, visit https://gerrit.osmocom.org/7711 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I73ec066744475d3cc464e34854175f8cf14cf125 Gerrit-PatchSet: 1 Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Neels Hofmeyr Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Wed Apr 11 05:53:43 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Wed, 11 Apr 2018 05:53:43 +0000 Subject: docker-playground[master]: ttcn3-bsc-test: bsc cfg: fix ARFCN-BSIC collisions In-Reply-To: References: Message-ID: Patch Set 2: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7744 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I29a117aa54aa06ca49646f25a08af8521832fd8d Gerrit-PatchSet: 2 Gerrit-Project: docker-playground Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr Gerrit-Reviewer: Harald Welte Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Wed Apr 11 05:53:46 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Wed, 11 Apr 2018 05:53:46 +0000 Subject: osmo-ttcn3-hacks[master]: bsc cfg: fix ARFCN-BSIC collisions In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7745 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I2ea8889ea40953f5a23eab40db52585556a410bc Gerrit-PatchSet: 1 Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Wed Apr 11 05:54:04 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Wed, 11 Apr 2018 05:54:04 +0000 Subject: [MERGED] osmo-ttcn3-hacks[master]: bsc cfg: fix ARFCN-BSIC collisions In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: bsc cfg: fix ARFCN-BSIC collisions ...................................................................... bsc cfg: fix ARFCN-BSIC collisions All three BTS are configured for ARFCN 871 and BSIC 63, which causes trouble for handover tests. Set BSICs to 10, 11 and 12 (not 0,1,2 to mark the distinction from the cell_identity). It wasn't a problem so far since we cheated by passing the BTS target number from VTY. But as soon as we will start identifying handover target cells by ARFCN+BSIC exclusively, TC_ho_int would fall on its face without this patch. See also: docker-playground I29a117aa54aa06ca49646f25a08af8521832fd8d Change-Id: I2ea8889ea40953f5a23eab40db52585556a410bc --- M bsc/osmo-bsc.cfg 1 file changed, 3 insertions(+), 3 deletions(-) Approvals: Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/bsc/osmo-bsc.cfg b/bsc/osmo-bsc.cfg index 60cfcd7..fcf7179 100644 --- a/bsc/osmo-bsc.cfg +++ b/bsc/osmo-bsc.cfg @@ -74,7 +74,7 @@ location_area_code 1 dtx uplink force dtx downlink - base_station_id_code 63 + base_station_id_code 10 ms max power 15 cell reselection hysteresis 4 rxlev access min 0 @@ -164,7 +164,7 @@ location_area_code 1 dtx uplink force dtx downlink - base_station_id_code 63 + base_station_id_code 11 ms max power 15 cell reselection hysteresis 4 rxlev access min 0 @@ -254,7 +254,7 @@ location_area_code 2 dtx uplink force dtx downlink - base_station_id_code 63 + base_station_id_code 12 ms max power 15 cell reselection hysteresis 4 rxlev access min 0 -- To view, visit https://gerrit.osmocom.org/7745 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: I2ea8889ea40953f5a23eab40db52585556a410bc Gerrit-PatchSet: 1 Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder From gerrit-no-reply at lists.osmocom.org Wed Apr 11 05:56:10 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Wed, 11 Apr 2018 05:56:10 +0000 Subject: osmo-ci[master]: ansible: hosts: gsm-tester: use ansible_host to have more re... In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7734 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Ia7b60ace8afd0e2cc47c535da1856d4f34fdd735 Gerrit-PatchSet: 1 Gerrit-Project: osmo-ci Gerrit-Branch: master Gerrit-Owner: lynxis lazus Gerrit-Reviewer: Harald Welte Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Wed Apr 11 05:56:42 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Wed, 11 Apr 2018 05:56:42 +0000 Subject: osmo-ci[master]: ansible: gsm-tester-modems: improve name In-Reply-To: References: Message-ID: Patch Set 2: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7739 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I4186baaf565442c96555b723622c93b1cbd9f4f7 Gerrit-PatchSet: 2 Gerrit-Project: osmo-ci Gerrit-Branch: master Gerrit-Owner: lynxis lazus Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Pau Espin Pedrol Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Wed Apr 11 05:56:56 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Wed, 11 Apr 2018 05:56:56 +0000 Subject: osmo-ci[master]: ansible: gsm-tester: install sispmctl to control usb power s... In-Reply-To: References: Message-ID: Patch Set 2: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7740 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Ie1af197d4b24e25196e10d2afa3ab8eea73ad729 Gerrit-PatchSet: 2 Gerrit-Project: osmo-ci Gerrit-Branch: master Gerrit-Owner: lynxis lazus Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Pau Espin Pedrol Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Wed Apr 11 05:57:16 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Wed, 11 Apr 2018 05:57:16 +0000 Subject: osmo-ci[master]: ansible: setup-gsm-tester: use udhcpd as dhcp server In-Reply-To: References: Message-ID: Patch Set 2: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7736 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I5ae43ebcd3c87e625110d8ff6afa0476f4b1facf Gerrit-PatchSet: 2 Gerrit-Project: osmo-ci Gerrit-Branch: master Gerrit-Owner: lynxis lazus Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Pau Espin Pedrol Gerrit-Reviewer: lynxis lazus Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Wed Apr 11 05:57:38 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Wed, 11 Apr 2018 05:57:38 +0000 Subject: osmo-ci[master]: ansible: gsm-tester-bts: install ip.access dependencies In-Reply-To: References: Message-ID: Patch Set 2: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7737 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I47f578c4b9bb7b1dc81ccf93a7e82a335f6968a2 Gerrit-PatchSet: 2 Gerrit-Project: osmo-ci Gerrit-Branch: master Gerrit-Owner: lynxis lazus Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Pau Espin Pedrol Gerrit-Reviewer: lynxis lazus Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Wed Apr 11 05:58:08 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Wed, 11 Apr 2018 05:58:08 +0000 Subject: osmo-ci[master]: ansible: gsm-tester: move usrp tasks to gsm-tester-bts In-Reply-To: References: Message-ID: Patch Set 2: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7738 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I9caebed94c3473051b82e2cdc35f6dfb9f862084 Gerrit-PatchSet: 2 Gerrit-Project: osmo-ci Gerrit-Branch: master Gerrit-Owner: lynxis lazus Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Pau Espin Pedrol Gerrit-Reviewer: lynxis lazus Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Wed Apr 11 05:58:34 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Wed, 11 Apr 2018 05:58:34 +0000 Subject: osmo-ci[master]: ansible: gsm-tester-bts: add OBS osmocom:nightly to install ... In-Reply-To: References: Message-ID: Patch Set 2: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7741 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I7b704d402c83db54401d1c06acb715cce821f2e4 Gerrit-PatchSet: 2 Gerrit-Project: osmo-ci Gerrit-Branch: master Gerrit-Owner: lynxis lazus Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Pau Espin Pedrol Gerrit-Reviewer: lynxis lazus Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Wed Apr 11 05:59:22 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Wed, 11 Apr 2018 05:59:22 +0000 Subject: osmo-ci[master]: jobs: gerrit-osmo-ttcn3-hacks: execute the job on a ttcn3 node In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 Verified+1 -- To view, visit https://gerrit.osmocom.org/7742 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: If946af8fa3f7bd2d13914c9895d3f74b58fdef24 Gerrit-PatchSet: 1 Gerrit-Project: osmo-ci Gerrit-Branch: master Gerrit-Owner: lynxis lazus Gerrit-Reviewer: Harald Welte Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Wed Apr 11 05:59:34 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Wed, 11 Apr 2018 05:59:34 +0000 Subject: [MERGED] osmo-ci[master]: jobs: gerrit-osmo-ttcn3-hacks: execute the job on a ttcn3 node In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: jobs: gerrit-osmo-ttcn3-hacks: execute the job on a ttcn3 node ...................................................................... jobs: gerrit-osmo-ttcn3-hacks: execute the job on a ttcn3 node Only ttcn3 nodes have the eclipse-titan compiler installed Change-Id: If946af8fa3f7bd2d13914c9895d3f74b58fdef24 --- M jobs/gerrit-verifications.yml 1 file changed, 1 insertion(+), 1 deletion(-) Approvals: Harald Welte: Looks good to me, approved; Verified diff --git a/jobs/gerrit-verifications.yml b/jobs/gerrit-verifications.yml index 54c99cc..640bde7 100644 --- a/jobs/gerrit-verifications.yml +++ b/jobs/gerrit-verifications.yml @@ -186,7 +186,7 @@ - osmo-ttcn3-hacks: repos_url: 'https://gerrit.osmocom.org/{repos}' - slave_axis: !!python/tuple [build2-deb9build] + slave_axis: !!python/tuple [ttcn3] cmd: > # keep first line with less indent to preserve newlines make clean; make deps-update && make compile -- To view, visit https://gerrit.osmocom.org/7742 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: If946af8fa3f7bd2d13914c9895d3f74b58fdef24 Gerrit-PatchSet: 1 Gerrit-Project: osmo-ci Gerrit-Branch: master Gerrit-Owner: lynxis lazus Gerrit-Reviewer: Harald Welte From gerrit-no-reply at lists.osmocom.org Wed Apr 11 06:00:15 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Wed, 11 Apr 2018 06:00:15 +0000 Subject: libosmo-abis[master]: configure.ac: Fix condition check for RTP_SIGNAL_PTR_CAST de... In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7733 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Ib5e7569e68fdb921c63e0c12e20e73aafbebda46 Gerrit-PatchSet: 1 Gerrit-Project: libosmo-abis Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Wed Apr 11 06:00:33 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Wed, 11 Apr 2018 06:00:33 +0000 Subject: [MERGED] libosmo-abis[master]: configure.ac: Fix condition check for RTP_SIGNAL_PTR_CAST de... In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: configure.ac: Fix condition check for RTP_SIGNAL_PTR_CAST define ...................................................................... configure.ac: Fix condition check for RTP_SIGNAL_PTR_CAST define While building libosmo-netif on a system with an old ortp (0.22), it was seen that warning related to RTP_SIGNAL_PTR_CAST not being correctly selected were being printed. The compilation didn't fail there as expected because the issue was being handled as a warning instead of an error, so the void* ptr case was always being selected. Change-Id: Ib5e7569e68fdb921c63e0c12e20e73aafbebda46 --- M configure.ac 1 file changed, 1 insertion(+), 1 deletion(-) Approvals: Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/configure.ac b/configure.ac index ce4bf39..05fbb12 100644 --- a/configure.ac +++ b/configure.ac @@ -110,7 +110,7 @@ CFLAGS=$_cflags_save _cflags_save=$CFLAGS -CFLAGS="$CFLAGS $ORTP_CFLAGS" +CFLAGS="$CFLAGS $ORTP_CFLAGS -Werror" AC_COMPILE_IFELSE( [AC_LANG_PROGRAM( [[#include -- To view, visit https://gerrit.osmocom.org/7733 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: Ib5e7569e68fdb921c63e0c12e20e73aafbebda46 Gerrit-PatchSet: 1 Gerrit-Project: libosmo-abis Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder From gerrit-no-reply at lists.osmocom.org Wed Apr 11 06:00:56 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Wed, 11 Apr 2018 06:00:56 +0000 Subject: osmo-ci[master]: jobs: update-osmo*: remove non-existent node build2-deb8build In-Reply-To: References: Message-ID: Patch Set 1: Verified+1 -- To view, visit https://gerrit.osmocom.org/7718 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Id9f25d8a5f6d0521e2b70884f46de5dee14d8092 Gerrit-PatchSet: 1 Gerrit-Project: osmo-ci Gerrit-Branch: master Gerrit-Owner: lynxis lazus Gerrit-Reviewer: Harald Welte Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Wed Apr 11 06:01:10 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Wed, 11 Apr 2018 06:01:10 +0000 Subject: osmo-ci[master]: jobs: update-osmo-* reformat a list to be human readable In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 Verified+1 -- To view, visit https://gerrit.osmocom.org/7717 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Ic64463d3974fdbf3967e67a77c75490d7ca80fb7 Gerrit-PatchSet: 1 Gerrit-Project: osmo-ci Gerrit-Branch: master Gerrit-Owner: lynxis lazus Gerrit-Reviewer: Harald Welte Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Wed Apr 11 06:01:38 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Wed, 11 Apr 2018 06:01:38 +0000 Subject: [MERGED] osmo-ci[master]: jobs: update-osmo-* reformat a list to be human readable In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: jobs: update-osmo-* reformat a list to be human readable ...................................................................... jobs: update-osmo-* reformat a list to be human readable Change-Id: Ic64463d3974fdbf3967e67a77c75490d7ca80fb7 --- M jobs/update-osmo-ci-on-slaves.yml M jobs/update-osmo-python-on-slaves.yml 2 files changed, 20 insertions(+), 2 deletions(-) Approvals: Harald Welte: Looks good to me, approved; Verified diff --git a/jobs/update-osmo-ci-on-slaves.yml b/jobs/update-osmo-ci-on-slaves.yml index 5dcb544..9601b1c 100644 --- a/jobs/update-osmo-ci-on-slaves.yml +++ b/jobs/update-osmo-ci-on-slaves.yml @@ -5,7 +5,16 @@ - axis: type: slave name: label - values: [ OsmocomBuild1, build1-debian9-lxc, build2-deb8build, admin2-deb8build, admin2-deb9build, host2-deb8build-ansible, host2-deb9build-ansible, build2-deb8build-ansible, build2-deb9build-ansible ] + values: + - OsmocomBuild1 + - build1-debian9-lxc + - build2-deb8build + - admin2-deb8build + - admin2-deb9build + - host2-deb8build-ansible + - host2-deb9build-ansible + - build2-deb8build-ansible + - build2-deb9build-ansible properties: - build-discarder: days-to-keep: 30 diff --git a/jobs/update-osmo-python-on-slaves.yml b/jobs/update-osmo-python-on-slaves.yml index 554a273..322ed57 100644 --- a/jobs/update-osmo-python-on-slaves.yml +++ b/jobs/update-osmo-python-on-slaves.yml @@ -5,7 +5,16 @@ - axis: type: slave name: label - values: [ OsmocomBuild1, build1-debian9-lxc, build2-deb8build, admin2-deb8build, admin2-deb9build, host2-deb8build-ansible, host2-deb9build-ansible, build2-deb8build-ansible, build2-deb9build-ansible ] + values: + - OsmocomBuild1 + - build1-debian9-lxc + - build2-deb8build + - admin2-deb8build + - admin2-deb9build + - host2-deb8build-ansible + - host2-deb9build-ansible + - build2-deb8build-ansible + - build2-deb9build-ansible properties: - build-discarder: days-to-keep: 30 -- To view, visit https://gerrit.osmocom.org/7717 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: Ic64463d3974fdbf3967e67a77c75490d7ca80fb7 Gerrit-PatchSet: 2 Gerrit-Project: osmo-ci Gerrit-Branch: master Gerrit-Owner: lynxis lazus Gerrit-Reviewer: Harald Welte From gerrit-no-reply at lists.osmocom.org Wed Apr 11 06:06:58 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Wed, 11 Apr 2018 06:06:58 +0000 Subject: osmo-ci[master]: add docker-cleanup.sh script In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 Verified+1 -- To view, visit https://gerrit.osmocom.org/7655 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I688b952578507a9cc28fe682221b5c7e3a245519 Gerrit-PatchSet: 1 Gerrit-Project: osmo-ci Gerrit-Branch: master Gerrit-Owner: Harald Welte Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: lynxis lazus Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Wed Apr 11 06:07:38 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Wed, 11 Apr 2018 06:07:38 +0000 Subject: [MERGED] osmo-ci[master]: add docker-cleanup.sh script In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: add docker-cleanup.sh script ...................................................................... add docker-cleanup.sh script This script should be executed regularly on all build slaves that have docker in order to discard unused images/layers. It would be a good idea to call "fstrim /" afterwards in order to get more SSD performance. However, the latter requires root access, and hence cannot be called by the 'osmocom-build' user and thus jenkins. Maybe we should install it as a cron job or systemd periodic timer job? Related: OS#3144 Change-Id: I688b952578507a9cc28fe682221b5c7e3a245519 --- A scripts/docker-cleanup.sh 1 file changed, 9 insertions(+), 0 deletions(-) Approvals: lynxis lazus: Looks good to me, but someone else must approve Harald Welte: Looks good to me, approved; Verified diff --git a/scripts/docker-cleanup.sh b/scripts/docker-cleanup.sh new file mode 100644 index 0000000..e7c7d1b --- /dev/null +++ b/scripts/docker-cleanup.sh @@ -0,0 +1,9 @@ +#!/bin/sh + +# delete all but the latest images +IMAGES=`docker image ls | grep \^osmocom-build | grep -v latest | awk -F ' ' '{print $1":"$2}'` +for f in $IMAGES; do + docker image rm $f +done + +docker image prune -f -- To view, visit https://gerrit.osmocom.org/7655 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: I688b952578507a9cc28fe682221b5c7e3a245519 Gerrit-PatchSet: 2 Gerrit-Project: osmo-ci Gerrit-Branch: master Gerrit-Owner: Harald Welte Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: lynxis lazus From gerrit-no-reply at lists.osmocom.org Wed Apr 11 08:57:26 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Wed, 11 Apr 2018 08:57:26 +0000 Subject: osmo-bsc[master]: ensure that acc_ramp_init() is only called once In-Reply-To: References: Message-ID: Patch Set 1: (5 comments) https://gerrit.osmocom.org/#/c/7723/1/include/osmocom/bsc/acc_ramp.h File include/osmocom/bsc/acc_ramp.h: Line 145: void acc_ramp_disable(struct acc_ramp *acc_ramp); I think it makes more sense to have it as one function, no need for two: acc_ramp_enabled_set(acc_ramp, bool enabled) This way it's easier to grep in code with 1 token to see where it is enabled or not,but not really required of course. In any case, the enable/disable could then be implemented as defines or static inline on top of acc_ramp_enabled_set, but I still prefer having only 1 function and use it everywhere. Even better, it can be set as a static inline as I see it's already done for similar stuff in here. https://gerrit.osmocom.org/#/c/7723/1/src/libbsc/acc_ramp.c File src/libbsc/acc_ramp.c: Line 34: static bool acc_is_enabled(struct gsm_bts *bts, unsigned int acc) Not directly related to this patch but: Use of same terminology (acc enabled/disabled) for different structs containing different information (permanent vs temporary due to ramping activation) is quite confusing. Line 120: if (acc_ramp->step_size == ACC_RAMP_STEP_SIZE_MAX) { I think we can drop this if and its contents completely in a follow up patch. It is not needed, it's handled fine by the generic code path, so no need to add code complexity for a really corner case scenario (since usually in that case you would actually just disable ramping). https://gerrit.osmocom.org/#/c/7723/1/src/libbsc/bsc_vty.c File src/libbsc/bsc_vty.c: Line 1918: acc_ramp_init(&bts->acc_ramp, bts); I think it really makes sense to move _init inside gsm_bts_alloc_register now, as it's only used at this time. Line 3278: acc_ramp_enable(&bts->acc_ramp); You want to dothe same in here (abort + set_system_infos) as you do in no_acc_ramping below. Imagine for instance if a vty cfg file contains "access-control-class-ramping" twice, or if someone enters "access-control-class-ramping" in the vty while a ramping is still in progress. -- To view, visit https://gerrit.osmocom.org/7723 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Ia25bff85d9e5c277da76bffa11d31972e9fdc323 Gerrit-PatchSet: 1 Gerrit-Project: osmo-bsc Gerrit-Branch: master Gerrit-Owner: Stefan Sperling Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Pau Espin Pedrol Gerrit-HasComments: Yes From gerrit-no-reply at lists.osmocom.org Wed Apr 11 08:57:43 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Wed, 11 Apr 2018 08:57:43 +0000 Subject: osmo-bsc[master]: ensure that acc_ramp_init() is only called once In-Reply-To: References: Message-ID: Patch Set 1: Code-Review-1 Not a hard -1, but let's wait for answers before merging. -- To view, visit https://gerrit.osmocom.org/7723 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Ia25bff85d9e5c277da76bffa11d31972e9fdc323 Gerrit-PatchSet: 1 Gerrit-Project: osmo-bsc Gerrit-Branch: master Gerrit-Owner: Stefan Sperling Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Pau Espin Pedrol Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Wed Apr 11 09:10:07 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Wed, 11 Apr 2018 09:10:07 +0000 Subject: osmo-bsc[master]: trigger acc ramping based on trx rf-locked state In-Reply-To: References: Message-ID: Patch Set 1: Code-Review-1 (4 comments) https://gerrit.osmocom.org/#/c/7732/1/src/libbsc/acc_ramp.c File src/libbsc/acc_ramp.c: Line 162: struct gsm_nm_state *new_state = nsd->new_state; You are deferring an expected nm_statechg_signal_data pointer before knowing if that's the correct signal (check for S_NM_STATECHG_ADM done below). Line 166: if (subsys != SS_NM) Is this really needed? we are only attaching the cb to the SS_NM subsystem right? either move to an ASSERT or drop it (preferred imho). Line 194: break; What about NM_STATE_SHUTDOWN and NM_STATE_NULL? Would be nice at least adding an explicit case for NM_STATE_SHUTDOWN, and maybe ASSERT on default. https://gerrit.osmocom.org/#/c/7732/1/src/libbsc/bsc_vty.c File src/libbsc/bsc_vty.c: Line 3280: /* ACC ramping takes effect when the BTS reconnects or RF administrative state changes to 'unlocked'. */ You can take the chance to improve the "BTS reconnects" part by adding reference to RSL link. -- To view, visit https://gerrit.osmocom.org/7732 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I4124f1da3dadec003de45c1da8435506ee8f0a34 Gerrit-PatchSet: 1 Gerrit-Project: osmo-bsc Gerrit-Branch: master Gerrit-Owner: Stefan Sperling Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Pau Espin Pedrol Gerrit-HasComments: Yes From gerrit-no-reply at lists.osmocom.org Wed Apr 11 10:40:33 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Wed, 11 Apr 2018 10:40:33 +0000 Subject: [PATCH] openbsc[master]: libbsc: set_net_mcc_mnc_apply: Fix memleak on parsing incorr... Message-ID: Review at https://gerrit.osmocom.org/7746 libbsc: set_net_mcc_mnc_apply: Fix memleak on parsing incorrect mcc mnc Change-Id: I507b0eced7d86f8e978012f6c19f728cd481196b --- M openbsc/src/libbsc/bsc_ctrl_commands.c 1 file changed, 2 insertions(+), 0 deletions(-) git pull ssh://gerrit.osmocom.org:29418/openbsc refs/changes/46/7746/1 diff --git a/openbsc/src/libbsc/bsc_ctrl_commands.c b/openbsc/src/libbsc/bsc_ctrl_commands.c index 8b8685a..e6c49d1 100644 --- a/openbsc/src/libbsc/bsc_ctrl_commands.c +++ b/openbsc/src/libbsc/bsc_ctrl_commands.c @@ -187,11 +187,13 @@ if (osmo_mcc_from_str(mcc_str, &plmn.mcc)) { cmd->reply = "Error while decoding MCC"; + talloc_free(tmp); return CTRL_CMD_ERROR; } if (osmo_mnc_from_str(mnc_str, &plmn.mnc, &plmn.mnc_3_digits)) { cmd->reply = "Error while decoding MNC"; + talloc_free(tmp); return CTRL_CMD_ERROR; } -- To view, visit https://gerrit.osmocom.org/7746 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I507b0eced7d86f8e978012f6c19f728cd481196b Gerrit-PatchSet: 1 Gerrit-Project: openbsc Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol From gerrit-no-reply at lists.osmocom.org Wed Apr 11 10:42:02 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Wed, 11 Apr 2018 10:42:02 +0000 Subject: [PATCH] osmo-bsc[master]: libbsc: set_net_mcc_mnc_apply: Fix memleak on parsing incorr... Message-ID: Review at https://gerrit.osmocom.org/7747 libbsc: set_net_mcc_mnc_apply: Fix memleak on parsing incorrect mcc mnc Change-Id: I43513e108dfba24efb091d56b3fdfdb0cd0af727 --- M src/libbsc/bsc_ctrl_commands.c 1 file changed, 2 insertions(+), 0 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-bsc refs/changes/47/7747/1 diff --git a/src/libbsc/bsc_ctrl_commands.c b/src/libbsc/bsc_ctrl_commands.c index 64f4589..171feaf 100644 --- a/src/libbsc/bsc_ctrl_commands.c +++ b/src/libbsc/bsc_ctrl_commands.c @@ -149,11 +149,13 @@ if (osmo_mcc_from_str(mcc_str, &plmn.mcc)) { cmd->reply = "Error while decoding MCC"; + talloc_free(tmp); return CTRL_CMD_ERROR; } if (osmo_mnc_from_str(mnc_str, &plmn.mnc, &plmn.mnc_3_digits)) { cmd->reply = "Error while decoding MNC"; + talloc_free(tmp); return CTRL_CMD_ERROR; } -- To view, visit https://gerrit.osmocom.org/7747 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I43513e108dfba24efb091d56b3fdfdb0cd0af727 Gerrit-PatchSet: 1 Gerrit-Project: osmo-bsc Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol From gerrit-no-reply at lists.osmocom.org Wed Apr 11 11:17:04 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Wed, 11 Apr 2018 11:17:04 +0000 Subject: [PATCH] osmo-bsc[master]: bsc_nat: ctrl: fix memleak on reply receival Message-ID: Review at https://gerrit.osmocom.org/7748 bsc_nat: ctrl: fix memleak on reply receival Change-Id: I163d4d12d8656628dc88ff3e59a4c3e53b760a0c --- M src/osmo-bsc_nat/bsc_nat_ctrl.c 1 file changed, 3 insertions(+), 4 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-bsc refs/changes/48/7748/1 diff --git a/src/osmo-bsc_nat/bsc_nat_ctrl.c b/src/osmo-bsc_nat/bsc_nat_ctrl.c index 93cdff3..9450741 100644 --- a/src/osmo-bsc_nat/bsc_nat_ctrl.c +++ b/src/osmo-bsc_nat/bsc_nat_ctrl.c @@ -103,7 +103,7 @@ { struct ctrl_cmd *cmd; struct bsc_cmd_list *pending; - char *var, *id; + char *var; cmd = ctrl_cmd_parse(bsc, msg); msgb_free(msg); @@ -143,13 +143,12 @@ /* Find the pending command */ pending = bsc_get_pending(bsc, cmd->id); if (pending) { - id = talloc_strdup(cmd, pending->cmd->id); - if (!id) { + osmo_talloc_replace_string(cmd, &cmd->id, pending->cmd->id); + if (!cmd->id) { cmd->type = CTRL_TYPE_ERROR; cmd->reply = "OOM"; goto err; } - cmd->id = id; ctrl_cmd_send(&pending->ccon->write_queue, cmd); bsc_nat_ctrl_del_pending(pending); } else { -- To view, visit https://gerrit.osmocom.org/7748 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I163d4d12d8656628dc88ff3e59a4c3e53b760a0c Gerrit-PatchSet: 1 Gerrit-Project: osmo-bsc Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol From gerrit-no-reply at lists.osmocom.org Wed Apr 11 11:17:09 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Wed, 11 Apr 2018 11:17:09 +0000 Subject: [PATCH] openbsc[master]: bsc_nat: ctrl: fix memleak on reply receival Message-ID: Review at https://gerrit.osmocom.org/7749 bsc_nat: ctrl: fix memleak on reply receival Change-Id: I146c4a561b0cd62779d60da3b55b96e24438bd89 --- M openbsc/src/osmo-bsc_nat/bsc_nat_ctrl.c 1 file changed, 3 insertions(+), 4 deletions(-) git pull ssh://gerrit.osmocom.org:29418/openbsc refs/changes/49/7749/1 diff --git a/openbsc/src/osmo-bsc_nat/bsc_nat_ctrl.c b/openbsc/src/osmo-bsc_nat/bsc_nat_ctrl.c index 128ea65..738ac87 100644 --- a/openbsc/src/osmo-bsc_nat/bsc_nat_ctrl.c +++ b/openbsc/src/osmo-bsc_nat/bsc_nat_ctrl.c @@ -102,7 +102,7 @@ { struct ctrl_cmd *cmd; struct bsc_cmd_list *pending; - char *var, *id; + char *var; cmd = ctrl_cmd_parse(bsc, msg); msgb_free(msg); @@ -142,13 +142,12 @@ /* Find the pending command */ pending = bsc_get_pending(bsc, cmd->id); if (pending) { - id = talloc_strdup(cmd, pending->cmd->id); - if (!id) { + osmo_talloc_replace_string(cmd, &cmd->id, pending->cmd->id); + if (!cmd->id) { cmd->type = CTRL_TYPE_ERROR; cmd->reply = "OOM"; goto err; } - cmd->id = id; ctrl_cmd_send(&pending->ccon->write_queue, cmd); bsc_nat_ctrl_del_pending(pending); } else { -- To view, visit https://gerrit.osmocom.org/7749 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I146c4a561b0cd62779d60da3b55b96e24438bd89 Gerrit-PatchSet: 1 Gerrit-Project: openbsc Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol From gerrit-no-reply at lists.osmocom.org Wed Apr 11 11:30:26 2018 From: gerrit-no-reply at lists.osmocom.org (Stefan Sperling) Date: Wed, 11 Apr 2018 11:30:26 +0000 Subject: osmo-bsc[master]: ensure that acc_ramp_init() is only called once In-Reply-To: References: Message-ID: Patch Set 1: (5 comments) https://gerrit.osmocom.org/#/c/7723/1/include/osmocom/bsc/acc_ramp.h File include/osmocom/bsc/acc_ramp.h: Line 145: void acc_ramp_disable(struct acc_ramp *acc_ramp); > I think it makes more sense to have it as one function, no need for two: Agreed. See next patch set. https://gerrit.osmocom.org/#/c/7723/1/src/libbsc/acc_ramp.c File src/libbsc/acc_ramp.c: Line 34: static bool acc_is_enabled(struct gsm_bts *bts, unsigned int acc) > Not directly related to this patch but: I will address this in a separate patch. Line 120: if (acc_ramp->step_size == ACC_RAMP_STEP_SIZE_MAX) { > I think we can drop this if and its contents completely in a follow up patc Sure. https://gerrit.osmocom.org/#/c/7723/1/src/libbsc/bsc_vty.c File src/libbsc/bsc_vty.c: Line 1918: acc_ramp_init(&bts->acc_ramp, bts); > I think it really makes sense to move _init inside gsm_bts_alloc_register n I agree. In the past moving acc_ramp related calls outside of libbsc was impossible because it created a chicken-and-egg depency loop between libcommon and libbsc. I just found out that libcommon has been merged into libbsc so this is no longer an issue. However, moving this acc_ramp_init() call today still creates build failures at link time because it ends up pulling additional symbols (e.g. from libvty) into the various programs under the tests/ directory. I know how to fix this but the necessary Makefile.am changes would at least double the size of this patch, so I'd rather leave it for later. Line 3278: acc_ramp_enable(&bts->acc_ramp); > You want to dothe same in here (abort + set_system_infos) as you do in no_a I don't understand what this would achieve. The 'enable' flag does not change any state related to an on-going ramping process. And setting system infos depends on the RSL link being up which is not the case while the config is being loaded. The effect of enabling this feature redundantly, via config file lines or via the VTY, should be a no-op because the feature is already enabled. So I think this is fine as it is. For clarity we could enable the feature only if ramping is not yet enabled, even though technically it already behaves as a no-op in this case (setting the flag to 'true' when it was already 'true'). See next patch set. -- To view, visit https://gerrit.osmocom.org/7723 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Ia25bff85d9e5c277da76bffa11d31972e9fdc323 Gerrit-PatchSet: 1 Gerrit-Project: osmo-bsc Gerrit-Branch: master Gerrit-Owner: Stefan Sperling Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Pau Espin Pedrol Gerrit-Reviewer: Stefan Sperling Gerrit-HasComments: Yes From gerrit-no-reply at lists.osmocom.org Wed Apr 11 11:30:47 2018 From: gerrit-no-reply at lists.osmocom.org (Stefan Sperling) Date: Wed, 11 Apr 2018 11:30:47 +0000 Subject: [PATCH] osmo-bsc[master]: ensure that acc_ramp_init() is only called once In-Reply-To: References: Message-ID: Hello Pau Espin Pedrol, Harald Welte, Jenkins Builder, I'd like you to reexamine a change. Please visit https://gerrit.osmocom.org/7723 to look at the new patch set (#2). ensure that acc_ramp_init() is only called once There are plans to register signal handlers in acc_ramp_init(). Once we do that, the acc_ramp_init() function should only be called once to avoid duplicate signal handlers on the handler list. However, the acc_ramp_init() function currently serves a dual-purpose: 1) Initialize the acc_ramp structure for a bts 2) Enable or disable ACC ramping Add new functions to support use case 2, and call acc_ramp_init() just once while reading the configuration file. The VTY commands which enable/disable ACC ramping use the new APIs instead. Also, rename acc_ramp_start() to acc_ramp_trigger() and tweak its semantics so that it can always be called regardless of what the current configuration settings are. This prepares us for triggering ACC ramping upon events other than "RSL link-up". Change-Id: Ia25bff85d9e5c277da76bffa11d31972e9fdc323 Related: OS2591 --- M include/osmocom/bsc/acc_ramp.h M src/libbsc/acc_ramp.c M src/libbsc/bsc_init.c M src/libbsc/bsc_vty.c 4 files changed, 43 insertions(+), 29 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-bsc refs/changes/23/7723/2 diff --git a/include/osmocom/bsc/acc_ramp.h b/include/osmocom/bsc/acc_ramp.h index cb063bf..efb12b0 100644 --- a/include/osmocom/bsc/acc_ramp.h +++ b/include/osmocom/bsc/acc_ramp.h @@ -79,6 +79,18 @@ }; /*! + * Enable or disable ACC ramping. + * When enabled, ramping begins once acc_ramp_start() is called. + * When disabled, an ACC ramping process in progress will continue + * unless acc_ramp_abort() is called as well. + * \param[in] acc_ramp Pointer to acc_ramp structure. + */ +static inline void acc_ramp_set_enabled(struct acc_ramp *acc_ramp, bool enable) +{ + acc_ramp->acc_ramping_enabled = enable; +} + +/*! * Return true if ACC ramping is currently enabled, else false. * \param[in] acc_ramp Pointer to acc_ramp structure. */ @@ -141,9 +153,9 @@ rach_control->t3 |= acc_ramp_get_barred_t3(acc_ramp); } -void acc_ramp_init(struct acc_ramp *acc_ramp, bool enable, struct gsm_bts *bts); +void acc_ramp_init(struct acc_ramp *acc_ramp, struct gsm_bts *bts); int acc_ramp_set_step_size(struct acc_ramp *acc_ramp, unsigned int step_size); int acc_ramp_set_step_interval(struct acc_ramp *acc_ramp, unsigned int step_interval); void acc_ramp_set_step_interval_dynamic(struct acc_ramp *acc_ramp); -void acc_ramp_start(struct acc_ramp *acc_ramp); +void acc_ramp_trigger(struct acc_ramp *acc_ramp); void acc_ramp_abort(struct acc_ramp *acc_ramp); diff --git a/src/libbsc/acc_ramp.c b/src/libbsc/acc_ramp.c index 7cace4b..aa4fd27 100644 --- a/src/libbsc/acc_ramp.c +++ b/src/libbsc/acc_ramp.c @@ -138,28 +138,20 @@ * Initialize an acc_ramp data structure. * Storage for this structure must be provided by the caller. * - * If ACC ramping is enabled, all ACCs are denied by default. - * A subsequent call to acc_ramp_start() will begin the ramping process. - * If ACC ramping is disabled, all ACCs will be allowed by default, - * and there is no need to do anything else. + * By default, ACC ramping is disabled and all ACCs are allowed. * * \param[in] acc_ramp Pointer to acc_ramp structure to be initialized. - * \param[in] enable Indicates whether ACC ramping should be enabled or disabled. * \param[in] bts BTS which uses this ACC ramp data structure. */ -void acc_ramp_init(struct acc_ramp *acc_ramp, bool enable, struct gsm_bts *bts) +void acc_ramp_init(struct acc_ramp *acc_ramp, struct gsm_bts *bts) { acc_ramp->bts = bts; - acc_ramp->acc_ramping_enabled = enable; + acc_ramp_set_enabled(acc_ramp, false); acc_ramp->step_size = ACC_RAMP_STEP_SIZE_DEFAULT; acc_ramp->step_interval_sec = ACC_RAMP_STEP_INTERVAL_MIN; acc_ramp->step_interval_is_fixed = false; + allow_all_enabled_accs(acc_ramp); osmo_timer_setup(&acc_ramp->step_timer, do_acc_ramping_step, acc_ramp); - - if (acc_ramp->acc_ramping_enabled) - barr_all_enabled_accs(acc_ramp); - else - allow_all_enabled_accs(acc_ramp); } /*! @@ -209,27 +201,33 @@ } /*! - * Begin the ramping process. Perform at least one ramping step to allow 'step_size' ACCs. - * If 'step_size' is ACC_RAMP_STEP_SIZE_MAX, all ACCs will be allowed immediately. + * Determine if ACC ramping should be started according to configuration, and + * if ACC ramping is enabled, begin the ramping process. + * Perform at least one ramping step to allow 'step_size' ACCs. + * If 'step_size' is ACC_RAMP_STEP_SIZE_MAX, or if ACC ramping is disabled, + * all ACCs will be allowed immediately. * \param[in] acc_ramp Pointer to acc_ramp structure. */ -void acc_ramp_start(struct acc_ramp *acc_ramp) +void acc_ramp_trigger(struct acc_ramp *acc_ramp) { - /* Abort any previously running ramping process. */ + /* Abort any previously running ramping process and allow all available ACCs. */ acc_ramp_abort(acc_ramp); - /* Set all availble ACCs to barred and start ramping up. */ - barr_all_enabled_accs(acc_ramp); - do_acc_ramping_step(acc_ramp); + if (acc_ramp_is_enabled(acc_ramp)) { + /* Set all available ACCs to barred and start ramping up. */ + barr_all_enabled_accs(acc_ramp); + do_acc_ramping_step(acc_ramp); + } } /*! - * Abort the ramping process. If ramping is disabled or has already finished, - * then this function has no effect. + * Abort the ramping process and allow all available ACCs immediately. * \param[in] acc_ramp Pointer to acc_ramp structure. */ void acc_ramp_abort(struct acc_ramp *acc_ramp) { if (osmo_timer_pending(&acc_ramp->step_timer)) osmo_timer_del(&acc_ramp->step_timer); + + allow_all_enabled_accs(acc_ramp); } diff --git a/src/libbsc/bsc_init.c b/src/libbsc/bsc_init.c index d1173e0..c357105 100644 --- a/src/libbsc/bsc_init.c +++ b/src/libbsc/bsc_init.c @@ -336,9 +336,12 @@ rsl_nokia_si_begin(trx); } - /* Configure ACC ramping before sending system information to BTS. */ - if (acc_ramp_is_enabled(&trx->bts->acc_ramp)) - acc_ramp_start(&trx->bts->acc_ramp); + /* + * Trigger ACC ramping before sending system information to BTS. + * This ensures that RACH control in system information is configured correctly. + */ + acc_ramp_trigger(&trx->bts->acc_ramp); + gsm_bts_trx_set_system_infos(trx); if (trx->bts->type == GSM_BTS_TYPE_NOKIA_SITE) { diff --git a/src/libbsc/bsc_vty.c b/src/libbsc/bsc_vty.c index 13e123b..521a36a 100644 --- a/src/libbsc/bsc_vty.c +++ b/src/libbsc/bsc_vty.c @@ -1915,7 +1915,7 @@ * Initalize bts->acc_ramp here. Else we could segfault while * processing a configuration file with ACC ramping settings. */ - acc_ramp_init(&bts->acc_ramp, false, bts); + acc_ramp_init(&bts->acc_ramp, bts); } else bts = gsm_bts_num(gsmnet, bts_nr); @@ -3275,7 +3275,8 @@ { struct gsm_bts *bts = vty->index; - acc_ramp_init(&bts->acc_ramp, true, bts); + if (!acc_ramp_is_enabled(&bts->acc_ramp)) + acc_ramp_set_enabled(&bts->acc_ramp, true); /* ACC ramping takes effect when the BTS reconnects. */ return CMD_SUCCESS; @@ -3290,7 +3291,7 @@ if (acc_ramp_is_enabled(&bts->acc_ramp)) { acc_ramp_abort(&bts->acc_ramp); - acc_ramp_init(&bts->acc_ramp, false, bts); + acc_ramp_set_enabled(&bts->acc_ramp, false); gsm_bts_set_system_infos(bts); } -- To view, visit https://gerrit.osmocom.org/7723 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newpatchset Gerrit-Change-Id: Ia25bff85d9e5c277da76bffa11d31972e9fdc323 Gerrit-PatchSet: 2 Gerrit-Project: osmo-bsc Gerrit-Branch: master Gerrit-Owner: Stefan Sperling Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Pau Espin Pedrol Gerrit-Reviewer: Stefan Sperling From gerrit-no-reply at lists.osmocom.org Wed Apr 11 11:38:26 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Wed, 11 Apr 2018 11:38:26 +0000 Subject: osmo-bsc[master]: ensure that acc_ramp_init() is only called once In-Reply-To: References: Message-ID: Patch Set 1: (2 comments) https://gerrit.osmocom.org/#/c/7723/1/src/libbsc/bsc_vty.c File src/libbsc/bsc_vty.c: Line 1918: acc_ramp_init(&bts->acc_ramp, bts); > I agree. It can be left for a later patch, no problem. Line 3278: acc_ramp_enable(&bts->acc_ramp); > I don't understand what this would achieve. The 'enable' flag does not chan Indeed you are right, no issue here. I was mixing it with previous version which may have had some related issues. -- To view, visit https://gerrit.osmocom.org/7723 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Ia25bff85d9e5c277da76bffa11d31972e9fdc323 Gerrit-PatchSet: 1 Gerrit-Project: osmo-bsc Gerrit-Branch: master Gerrit-Owner: Stefan Sperling Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Pau Espin Pedrol Gerrit-Reviewer: Stefan Sperling Gerrit-HasComments: Yes From gerrit-no-reply at lists.osmocom.org Wed Apr 11 11:39:19 2018 From: gerrit-no-reply at lists.osmocom.org (Stefan Sperling) Date: Wed, 11 Apr 2018 11:39:19 +0000 Subject: [PATCH] osmo-bsc[master]: rename helper functions in the acc ramp code to avoid confusion Message-ID: Review at https://gerrit.osmocom.org/7750 rename helper functions in the acc ramp code to avoid confusion The word 'enabled' was used in two contexts: Whether ACC ramp is enabled as a feature, and whether a particular access control class is permantly allowed/disallowed via VTY configuration. Rename some helper functions to avoid the use of the word 'enabled' in the latter context. Change-Id: Ia67e84270cd50f4c55b8cf616ca38b00482f765c Related: OS#2591 --- M src/libbsc/acc_ramp.c 1 file changed, 13 insertions(+), 13 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-bsc refs/changes/50/7750/1 diff --git a/src/libbsc/acc_ramp.c b/src/libbsc/acc_ramp.c index 7cace4b..aee47ca 100644 --- a/src/libbsc/acc_ramp.c +++ b/src/libbsc/acc_ramp.c @@ -31,12 +31,12 @@ * Check if an ACC has been permanently barred for a BTS, * e.g. with the 'rach access-control-class' VTY command. */ -static bool acc_is_enabled(struct gsm_bts *bts, unsigned int acc) +static bool acc_is_permanently_barred(struct gsm_bts *bts, unsigned int acc) { OSMO_ASSERT(acc >= 0 && acc <= 9); if (acc == 8 || acc == 9) - return (bts->si_common.rach_control.t2 & (1 << (acc - 8))) == 0; - return (bts->si_common.rach_control.t3 & (1 << (acc))) == 0; + return (bts->si_common.rach_control.t2 & (1 << (acc - 8))); + return (bts->si_common.rach_control.t3 & (1 << (acc))); } static void allow_one_acc(struct acc_ramp *acc_ramp, unsigned int acc) @@ -53,20 +53,20 @@ acc_ramp->barred_accs |= (1 << acc); } -static void barr_all_enabled_accs(struct acc_ramp *acc_ramp) +static void barr_all_accs(struct acc_ramp *acc_ramp) { unsigned int acc; for (acc = 0; acc < 10; acc++) { - if (acc_is_enabled(acc_ramp->bts, acc)) + if (!acc_is_permanently_barred(acc_ramp->bts, acc)) barr_one_acc(acc_ramp, acc); } } -static void allow_all_enabled_accs(struct acc_ramp *acc_ramp) +static void allow_all_accs(struct acc_ramp *acc_ramp) { unsigned int acc; for (acc = 0; acc < 10; acc++) { - if (acc_is_enabled(acc_ramp->bts, acc)) + if (!acc_is_permanently_barred(acc_ramp->bts, acc)) allow_one_acc(acc_ramp, acc); } } @@ -99,7 +99,7 @@ /* Shortcut in case we only do one ramping step. */ if (acc_ramp->step_size == ACC_RAMP_STEP_SIZE_MAX) { - allow_all_enabled_accs(acc_ramp); + allow_all_accs(acc_ramp); gsm_bts_set_system_infos(acc_ramp->bts); return; } @@ -110,14 +110,14 @@ if (idx > 0) { /* One of ACC0-ACC7 is still bared. */ unsigned int acc = idx - 1; - if (acc_is_enabled(acc_ramp->bts, acc)) + if (!acc_is_permanently_barred(acc_ramp->bts, acc)) allow_one_acc(acc_ramp, acc); } else { idx = ffs(acc_ramp_get_barred_t2(acc_ramp)); if (idx == 1 || idx == 2) { /* ACC8 or ACC9 is still barred. */ unsigned int acc = idx - 1 + 8; - if (acc_is_enabled(acc_ramp->bts, acc)) + if (!acc_is_permanently_barred(acc_ramp->bts, acc)) allow_one_acc(acc_ramp, acc); } else { /* All ACCs are now allowed. */ @@ -157,9 +157,9 @@ osmo_timer_setup(&acc_ramp->step_timer, do_acc_ramping_step, acc_ramp); if (acc_ramp->acc_ramping_enabled) - barr_all_enabled_accs(acc_ramp); + barr_all_accs(acc_ramp); else - allow_all_enabled_accs(acc_ramp); + allow_all_accs(acc_ramp); } /*! @@ -219,7 +219,7 @@ acc_ramp_abort(acc_ramp); /* Set all availble ACCs to barred and start ramping up. */ - barr_all_enabled_accs(acc_ramp); + barr_all_accs(acc_ramp); do_acc_ramping_step(acc_ramp); } -- To view, visit https://gerrit.osmocom.org/7750 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Ia67e84270cd50f4c55b8cf616ca38b00482f765c Gerrit-PatchSet: 1 Gerrit-Project: osmo-bsc Gerrit-Branch: master Gerrit-Owner: Stefan Sperling From gerrit-no-reply at lists.osmocom.org Wed Apr 11 11:40:23 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Wed, 11 Apr 2018 11:40:23 +0000 Subject: osmo-bsc[master]: ensure that acc_ramp_init() is only called once In-Reply-To: References: Message-ID: Patch Set 2: Code-Review+1 -- To view, visit https://gerrit.osmocom.org/7723 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Ia25bff85d9e5c277da76bffa11d31972e9fdc323 Gerrit-PatchSet: 2 Gerrit-Project: osmo-bsc Gerrit-Branch: master Gerrit-Owner: Stefan Sperling Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Pau Espin Pedrol Gerrit-Reviewer: Stefan Sperling Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Wed Apr 11 11:43:28 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Wed, 11 Apr 2018 11:43:28 +0000 Subject: osmo-bsc[master]: rename helper functions in the acc ramp code to avoid confusion In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+1 Great! -- To view, visit https://gerrit.osmocom.org/7750 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Ia67e84270cd50f4c55b8cf616ca38b00482f765c Gerrit-PatchSet: 1 Gerrit-Project: osmo-bsc Gerrit-Branch: master Gerrit-Owner: Stefan Sperling Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Pau Espin Pedrol Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Wed Apr 11 11:47:16 2018 From: gerrit-no-reply at lists.osmocom.org (Neels Hofmeyr) Date: Wed, 11 Apr 2018 11:47:16 +0000 Subject: docker-playground[master]: ttcn3-bsc-test: bsc cfg: fix ARFCN-BSIC collisions In-Reply-To: References: Message-ID: Patch Set 2: Verified+1 -- To view, visit https://gerrit.osmocom.org/7744 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I29a117aa54aa06ca49646f25a08af8521832fd8d Gerrit-PatchSet: 2 Gerrit-Project: docker-playground Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Neels Hofmeyr Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Wed Apr 11 11:47:18 2018 From: gerrit-no-reply at lists.osmocom.org (Neels Hofmeyr) Date: Wed, 11 Apr 2018 11:47:18 +0000 Subject: [MERGED] docker-playground[master]: ttcn3-bsc-test: bsc cfg: fix ARFCN-BSIC collisions In-Reply-To: References: Message-ID: Neels Hofmeyr has submitted this change and it was merged. Change subject: ttcn3-bsc-test: bsc cfg: fix ARFCN-BSIC collisions ...................................................................... ttcn3-bsc-test: bsc cfg: fix ARFCN-BSIC collisions All three BTS are configured for ARFCN 871 and BSIC 63, which causes trouble for handover tests. Set BSICs to 10, 11 and 12 (not 0,1,2 to mark the distinction from the cell_identity). It wasn't a problem so far since we cheated by passing the BTS target number from VTY. But as soon as we will start identifying handover target cells by ARFCN+BSIC exclusively, TC_ho_int would fall on its face without this patch. See also: osmo-ttcn3-hacks I2ea8889ea40953f5a23eab40db52585556a410bc Change-Id: I29a117aa54aa06ca49646f25a08af8521832fd8d --- M ttcn3-bsc-test/osmo-bsc.cfg 1 file changed, 3 insertions(+), 3 deletions(-) Approvals: Neels Hofmeyr: Verified Harald Welte: Looks good to me, approved diff --git a/ttcn3-bsc-test/osmo-bsc.cfg b/ttcn3-bsc-test/osmo-bsc.cfg index 610bdf3..9d5a9c3 100644 --- a/ttcn3-bsc-test/osmo-bsc.cfg +++ b/ttcn3-bsc-test/osmo-bsc.cfg @@ -79,7 +79,7 @@ location_area_code 1 dtx uplink force dtx downlink - base_station_id_code 63 + base_station_id_code 10 ms max power 15 cell reselection hysteresis 4 rxlev access min 0 @@ -169,7 +169,7 @@ location_area_code 2 dtx uplink force dtx downlink - base_station_id_code 63 + base_station_id_code 11 ms max power 15 cell reselection hysteresis 4 rxlev access min 0 @@ -259,7 +259,7 @@ location_area_code 1 dtx uplink force dtx downlink - base_station_id_code 63 + base_station_id_code 12 ms max power 15 cell reselection hysteresis 4 rxlev access min 0 -- To view, visit https://gerrit.osmocom.org/7744 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: I29a117aa54aa06ca49646f25a08af8521832fd8d Gerrit-PatchSet: 2 Gerrit-Project: docker-playground Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Neels Hofmeyr From gerrit-no-reply at lists.osmocom.org Wed Apr 11 11:47:34 2018 From: gerrit-no-reply at lists.osmocom.org (Neels Hofmeyr) Date: Wed, 11 Apr 2018 11:47:34 +0000 Subject: [MERGED] libosmocore[master]: avoid warning in gsm0808_create_layer3 In-Reply-To: References: Message-ID: Neels Hofmeyr has submitted this change and it was merged. Change subject: avoid warning in gsm0808_create_layer3 ...................................................................... avoid warning in gsm0808_create_layer3 Change-Id: Ie098af4fc9640240196eda10fd61edcb3a872455 --- M src/gsm/gsm0808.c 1 file changed, 11 insertions(+), 1 deletion(-) Approvals: Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/src/gsm/gsm0808.c b/src/gsm/gsm0808.c index 27ea035..e6a581c 100644 --- a/src/gsm/gsm0808.c +++ b/src/gsm/gsm0808.c @@ -120,7 +120,17 @@ struct msgb *gsm0808_create_layer3(struct msgb *msg_l3, uint16_t nc, uint16_t cc, int lac, uint16_t _ci) { - return gsm0808_create_layer3_aoip(msg_l3, nc, cc, lac, _ci, NULL); + struct osmo_cell_global_id cgi = { + .lai = { + .plmn = { + .mcc = cc, + .mnc = nc, + }, + .lac = lac, + }, + .cell_identity = _ci, + }; + return gsm0808_create_layer3_2(msg_l3, &cgi, NULL); } /*! Create BSSMAP RESET message -- To view, visit https://gerrit.osmocom.org/7714 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: Ie098af4fc9640240196eda10fd61edcb3a872455 Gerrit-PatchSet: 1 Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Neels Hofmeyr From gerrit-no-reply at lists.osmocom.org Wed Apr 11 11:47:35 2018 From: gerrit-no-reply at lists.osmocom.org (Neels Hofmeyr) Date: Wed, 11 Apr 2018 11:47:35 +0000 Subject: [MERGED] libosmocore[master]: deprecate PLMN de-/coding functions incapable of 3-digit MNC... In-Reply-To: References: Message-ID: Neels Hofmeyr has submitted this change and it was merged. Change subject: deprecate PLMN de-/coding functions incapable of 3-digit MNC with leading zeros ...................................................................... deprecate PLMN de-/coding functions incapable of 3-digit MNC with leading zeros All our projects have seen patches to move to 3-digit MNC handling. Furthermore, since our builds no longer break from deprecation warnings, I shall no longer refrain from deprecating old API. Change-Id: I55dfaf7ce74870de44120b26c42d45bb7b184341 --- M include/osmocom/gsm/gsm0808.h M include/osmocom/gsm/gsm48.h 2 files changed, 12 insertions(+), 7 deletions(-) Approvals: Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/include/osmocom/gsm/gsm0808.h b/include/osmocom/gsm/gsm0808.h index bbde1a5..369d713 100644 --- a/include/osmocom/gsm/gsm0808.h +++ b/include/osmocom/gsm/gsm0808.h @@ -33,11 +33,12 @@ struct gsm0808_cell_id_list2; struct msgb *gsm0808_create_layer3(struct msgb *msg_l3, uint16_t nc, - uint16_t cc, int lac, uint16_t _ci); + uint16_t cc, int lac, uint16_t _ci) + OSMO_DEPRECATED("Use gsm0808_create_layer3_2() instead, to not lose leading zeros in the MNC"); struct msgb *gsm0808_create_layer3_aoip(const struct msgb *msg_l3, uint16_t nc, uint16_t cc, int lac, uint16_t _ci, - const struct gsm0808_speech_codec_list - *scl); + const struct gsm0808_speech_codec_list *scl) + OSMO_DEPRECATED("Use gsm0808_create_layer3_2() instead, to not lose leading zeros in the MNC"); struct msgb *gsm0808_create_layer3_2(const struct msgb *msg_l3, const struct osmo_cell_global_id *cell, const struct gsm0808_speech_codec_list *scl); struct msgb *gsm0808_create_reset(void); diff --git a/include/osmocom/gsm/gsm48.h b/include/osmocom/gsm/gsm48.h index 7c66a20..cfae83d 100644 --- a/include/osmocom/gsm/gsm48.h +++ b/include/osmocom/gsm/gsm48.h @@ -35,10 +35,12 @@ const char *osmo_rai_name(const struct gprs_ra_id *rai); int gsm48_decode_lai(struct gsm48_loc_area_id *lai, uint16_t *mcc, - uint16_t *mnc, uint16_t *lac); + uint16_t *mnc, uint16_t *lac) + OSMO_DEPRECATED("Use gsm48_decode_lai2() instead, to not lose leading zeros in the MNC"); void gsm48_decode_lai2(const struct gsm48_loc_area_id *lai, struct osmo_location_area_id *decoded); void gsm48_generate_lai(struct gsm48_loc_area_id *lai48, uint16_t mcc, - uint16_t mnc, uint16_t lac); + uint16_t mnc, uint16_t lac) + OSMO_DEPRECATED("Use gsm48_generate_lai2() instead, to not lose leading zeros in the MNC"); void gsm48_generate_lai2(struct gsm48_loc_area_id *lai48, const struct osmo_location_area_id *lai); int gsm48_generate_mid_from_tmsi(uint8_t *buf, uint32_t tmsi); @@ -57,5 +59,7 @@ int gsm48_number_of_paging_subchannels(struct gsm48_control_channel_descr *chan_desc); -void gsm48_mcc_mnc_to_bcd(uint8_t *bcd_dst, uint16_t mcc, uint16_t mnc); -void gsm48_mcc_mnc_from_bcd(uint8_t *bcd_src, uint16_t *mcc, uint16_t *mnc); +void gsm48_mcc_mnc_to_bcd(uint8_t *bcd_dst, uint16_t mcc, uint16_t mnc) + OSMO_DEPRECATED("Use osmo_plmn_to_bcd() instead, to not lose leading zeros in the MNC"); +void gsm48_mcc_mnc_from_bcd(uint8_t *bcd_src, uint16_t *mcc, uint16_t *mnc) + OSMO_DEPRECATED("Use osmo_plmn_from_bcd() instead, to not lose leading zeros in the MNC"); -- To view, visit https://gerrit.osmocom.org/7713 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: I55dfaf7ce74870de44120b26c42d45bb7b184341 Gerrit-PatchSet: 1 Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Neels Hofmeyr From jenkins at lists.osmocom.org Wed Apr 11 11:54:16 2018 From: jenkins at lists.osmocom.org (jenkins at lists.osmocom.org) Date: Wed, 11 Apr 2018 11:54:16 +0000 (UTC) Subject: =?UTF-8?Q?Build_failed_in_Jenkins:_master-osmo-bts_=C2=BB_lc15, origin/?= =?UTF-8?Q?nrw/litecell15-next,default,osmocom-master-debian9_#496?= Message-ID: <1526478548.253.1523447656929.JavaMail.jenkins@jenkins.osmocom.org> See ------------------------------------------ [...truncated 112.80 KB...] + grep -c remotes/origin/master$ + [ x1 != x0 ] + branch=origin/master + test -d libosmo-abis + cd libosmo-abis + git fetch --tags origin >From git://git.osmocom.org/libosmo-abis db0700a..43b5b69 master -> origin/master + git fetch origin + deps= osmo-clean-workspace.sh + chmod -R +w . + git checkout -f HEAD + git clean -dxf + [ -d ] + [ -d layer1-headers ] + git checkout -f origin/master Previous HEAD position was db0700a... e1_input.h: Remove dead declaration of unexistent API ipaccess_setup HEAD is now at 43b5b69... configure.ac: Fix condition check for RTP_SIGNAL_PTR_CAST define + git rev-parse HEAD 43b5b69bb890441c7285541b36ef986063eab8cb + cd libosmo-abis + mkdir -p + autoreconf --install --force libtoolize: putting auxiliary files in AC_CONFIG_AUX_DIR, '.'. libtoolize: copying file './ltmain.sh' libtoolize: putting macros in AC_CONFIG_MACRO_DIRS, 'm4'. libtoolize: copying file 'm4/libtool.m4' libtoolize: copying file 'm4/ltoptions.m4' libtoolize: copying file 'm4/ltsugar.m4' libtoolize: copying file 'm4/ltversion.m4' libtoolize: copying file 'm4/lt~obsolete.m4' configure.ac:20: installing './compile' configure.ac:22: installing './config.guess' configure.ac:22: installing './config.sub' configure.ac:8: installing './install-sh' configure.ac:8: installing './missing' src/Makefile.am: installing './depcomp' + ./configure --prefix= checking for a BSD-compatible install... /usr/bin/install -c checking whether build environment is sane... yes checking for a thread-safe mkdir -p... /bin/mkdir -p checking for gawk... gawk checking whether make sets $(MAKE)... yes checking whether make supports nested variables... yes checking whether make supports nested variables... (cached) yes checking whether make sets $(MAKE)... (cached) yes checking for gcc... gcc checking whether the C compiler works... yes checking for C compiler default output file name... a.out checking for suffix of executables... checking whether we are cross compiling... no checking for suffix of object files... o checking whether we are using the GNU C compiler... yes checking whether gcc accepts -g... yes checking for gcc option to accept ISO C89... none needed checking whether gcc understands -c and -o together... yes checking for style of include used by make... GNU checking dependency style of gcc... gcc3 checking build system type... x86_64-pc-linux-gnu checking host system type... x86_64-pc-linux-gnu checking how to print strings... printf checking for a sed that does not truncate output... /bin/sed checking for grep that handles long lines and -e... /bin/grep checking for egrep... /bin/grep -E checking for fgrep... /bin/grep -F checking for ld used by gcc... /usr/bin/ld checking if the linker (/usr/bin/ld) is GNU ld... yes checking for BSD- or MS-compatible name lister (nm)... /usr/bin/nm -B checking the name lister (/usr/bin/nm -B) interface... BSD nm checking whether ln -s works... yes checking the maximum length of command line arguments... 1572864 checking how to convert x86_64-pc-linux-gnu file names to x86_64-pc-linux-gnu format... func_convert_file_noop checking how to convert x86_64-pc-linux-gnu file names to toolchain format... func_convert_file_noop checking for /usr/bin/ld option to reload object files... -r checking for objdump... objdump checking how to recognize dependent libraries... pass_all checking for dlltool... no checking how to associate runtime and link libraries... printf %s\n checking for ar... ar checking for archiver @FILE support... @ checking for strip... strip checking for ranlib... ranlib checking command to parse /usr/bin/nm -B output from gcc object... ok checking for sysroot... no checking for a working dd... /bin/dd checking how to truncate binary pipes... /bin/dd bs=4096 count=1 checking for mt... mt checking if mt is a manifest tool... no checking how to run the C preprocessor... gcc -E checking for ANSI C header files... yes checking for sys/types.h... yes checking for sys/stat.h... yes checking for stdlib.h... yes checking for string.h... yes checking for memory.h... yes checking for strings.h... yes checking for inttypes.h... yes checking for stdint.h... yes checking for unistd.h... yes checking for dlfcn.h... yes checking for objdir... .libs checking if gcc supports -fno-rtti -fno-exceptions... no checking for gcc option to produce PIC... -fPIC -DPIC checking if gcc PIC flag -fPIC -DPIC works... yes checking if gcc static flag -static works... yes checking if gcc supports -c -o file.o... yes checking if gcc supports -c -o file.o... (cached) yes checking whether the gcc linker (/usr/bin/ld -m elf_x86_64) supports shared libraries... yes checking whether -lc should be explicitly linked in... no checking dynamic linker characteristics... GNU/Linux ld.so checking how to hardcode library paths into programs... immediate checking whether stripping libraries is possible... yes checking if libtool supports shared libraries... yes checking whether to build shared libraries... yes checking whether to build static libraries... yes checking for pkg-config... /usr/bin/pkg-config checking for pkg-config... /usr/bin/pkg-config checking pkg-config is at least version 0.20... yes checking if gcc supports -fvisibility=hidden... yes checking for LIBOSMOCORE... yes checking for LIBOSMOVTY... yes checking for LIBOSMOGSM... yes checking for ORTP... yes checking dahdi/user.h usability... no checking dahdi/user.h presence... no checking for dahdi/user.h... no configure: WARNING: DAHDI input driver will not be built CFLAGS="-g -O2 -Wall" CPPFLAGS=" -Wall" checking that generated files are newer than configure... done configure: creating ./config.status config.status: creating libosmoabis.pc config.status: creating libosmotrau.pc config.status: creating include/Makefile config.status: creating src/Makefile config.status: creating tests/Makefile config.status: creating Makefile config.status: creating config.h config.status: executing tests/atconfig commands config.status: executing depfiles commands config.status: executing libtool commands + make -j 8 install echo 0.3.2.105-43b5 > .version-t && mv .version-t .version make install-recursive make[1]: Entering directory ' Making install in include make[2]: Entering directory ' make[3]: Entering directory ' make[3]: Nothing to be done for 'install-exec-am'. /bin/mkdir -p ' /bin/mkdir -p ' /usr/bin/install -c -m 644 osmocom/abis/ipa.h osmocom/abis/trau_frame.h osmocom/abis/ipa_proxy.h osmocom/abis/ipaccess.h osmocom/abis/abis.h osmocom/abis/subchan_demux.h osmocom/abis/e1_input.h osmocom/abis/lapd.h osmocom/abis/lapd_pcap.h osmocom/abis/unixsocket_proto.h ' /bin/mkdir -p ' /usr/bin/install -c -m 644 osmocom/trau/osmo_ortp.h ' make[3]: Leaving directory ' make[2]: Leaving directory ' Making install in src make[2]: Entering directory ' CC init.lo CC e1_input.lo CC e1_input_vty.lo CC ipa_proxy.lo CC trau_frame.lo CC subchan_demux.lo CC input/dahdi.lo CC input/ipa.lo CC input/ipaccess.lo CC input/lapd.lo CC input/lapd_pcap.lo CC input/misdn.lo CC input/rs232.lo CC trau/libosmotrau_la-osmo_ortp.lo CC input/unixsocket.lo trau/osmo_ortp.c:205:9: note: #pragma message: Using internal ortp API: rtp_session_rtcp_rec #pragma message ("Using internal ortp API: rtp_session_rtcp_rec") ^~~~~~~ CCLD libosmotrau.la CCLD libosmoabis.la ar: `u' modifier ignored since `D' is the default (see `U') ar: `u' modifier ignored since `D' is the default (see `U') make[3]: Entering directory ' make[3]: Nothing to be done for 'install-data-am'. /bin/mkdir -p ' /bin/bash ../libtool --mode=install /usr/bin/install -c libosmoabis.la libosmotrau.la ' libtool: install: /usr/bin/install -c .libs/libosmoabis.so.6.0.0 libtool: install: (cd && { ln -s -f libosmoabis.so.6.0.0 libosmoabis.so.6 || { rm -f libosmoabis.so.6 && ln -s libosmoabis.so.6.0.0 libosmoabis.so.6; }; }) libtool: install: (cd && { ln -s -f libosmoabis.so.6.0.0 libosmoabis.so || { rm -f libosmoabis.so && ln -s libosmoabis.so.6.0.0 libosmoabis.so; }; }) libtool: install: /usr/bin/install -c .libs/libosmoabis.lai libtool: install: /usr/bin/install -c .libs/libosmotrau.so.2.0.0 libtool: install: (cd && { ln -s -f libosmotrau.so.2.0.0 libosmotrau.so.2 || { rm -f libosmotrau.so.2 && ln -s libosmotrau.so.2.0.0 libosmotrau.so.2; }; }) libtool: install: (cd && { ln -s -f libosmotrau.so.2.0.0 libosmotrau.so || { rm -f libosmotrau.so && ln -s libosmotrau.so.2.0.0 libosmotrau.so; }; }) libtool: install: /usr/bin/install -c .libs/libosmotrau.lai libtool: install: /usr/bin/install -c .libs/libosmoabis.a libtool: install: chmod 644 libtool: install: ranlib libtool: install: /usr/bin/install -c .libs/libosmotrau.a libtool: install: chmod 644 libtool: install: ranlib libtool: finish: PATH="/usr/local/bin:/usr/bin:/bin:/usr/games:/home/osmocom-build/bin:/sbin" ldconfig -n ---------------------------------------------------------------------- Libraries have been installed in: If you ever happen to want to link against installed libraries in a given directory, LIBDIR, you must either use libtool, and specify the full pathname of the library, or use the '-LLIBDIR' flag during linking and do at least one of the following: - add LIBDIR to the 'LD_LIBRARY_PATH' environment variable during execution - add LIBDIR to the 'LD_RUN_PATH' environment variable during linking - use the '-Wl,-rpath -Wl,LIBDIR' linker flag - have your system administrator add LIBDIR to '/etc/ld.so.conf' See any operating system documentation about shared libraries for more information, such as the ld(1) and ld.so(8) manual pages. ---------------------------------------------------------------------- make[3]: Leaving directory ' make[2]: Leaving directory ' Making install in tests make[2]: Entering directory ' make[3]: Entering directory ' make[3]: Nothing to be done for 'install-exec-am'. make[3]: Nothing to be done for 'install-data-am'. make[3]: Leaving directory ' make[2]: Leaving directory ' make[2]: Entering directory ' make[3]: Entering directory ' make[3]: Nothing to be done for 'install-exec-am'. /bin/mkdir -p ' /usr/bin/install -c -m 644 libosmoabis.pc libosmotrau.pc ' make[3]: Leaving directory ' make[2]: Leaving directory ' make[1]: Leaving directory ' + STOW_DIR= stow --restow libosmo-abis + cd + osmo-layer1-headers.sh lc15 origin/nrw/litecell15-next + uri=https://gitlab.com/nrw_litecell15/litecell15-fw + version=origin/nrw/litecell15 + [ -n origin/nrw/litecell15-next ] + [ origin/nrw/litecell15-next != master ] + version=origin/nrw/litecell15-next + test -d layer1-headers + cd layer1-headers + git fetch origin + git checkout -f origin/nrw/litecell15-next error: pathspec 'origin/nrw/litecell15-next' did not match any file(s) known to git. Build step 'Execute shell' marked build as failure [WARNINGS]Skipping publisher since build result is FAILURE From gerrit-no-reply at lists.osmocom.org Wed Apr 11 12:01:59 2018 From: gerrit-no-reply at lists.osmocom.org (Stefan Sperling) Date: Wed, 11 Apr 2018 12:01:59 +0000 Subject: [PATCH] osmo-bsc[master]: trigger acc ramping based on trx rf-locked state In-Reply-To: References: Message-ID: Hello Pau Espin Pedrol, Harald Welte, Jenkins Builder, I'd like you to reexamine a change. Please visit https://gerrit.osmocom.org/7732 to look at the new patch set (#3). trigger acc ramping based on trx rf-locked state Make ACC ramping listen to network management signals and trigger or abort ACC ramping based on the RF locked state of TRX 0. This works as expected with a virtphy setup when RF lock state is changed via VTY. However, this change still needs to be tested with a nanobts. It's also not quite clear yet whether operational state changes, as opposed to administrative ones, should be taken into account as well. Change-Id: I4124f1da3dadec003de45c1da8435506ee8f0a34 Depends: Ia25bff85d9e5c277da76bffa11d31972e9fdc323 --- M src/libbsc/acc_ramp.c M src/libbsc/bsc_vty.c 2 files changed, 49 insertions(+), 1 deletion(-) git pull ssh://gerrit.osmocom.org:29418/osmo-bsc refs/changes/32/7732/3 diff --git a/src/libbsc/acc_ramp.c b/src/libbsc/acc_ramp.c index aa4fd27..a1dbdac 100644 --- a/src/libbsc/acc_ramp.c +++ b/src/libbsc/acc_ramp.c @@ -26,6 +26,7 @@ #include #include #include +#include /* * Check if an ACC has been permanently barred for a BTS, @@ -134,6 +135,49 @@ osmo_timer_schedule(&acc_ramp->step_timer, get_next_step_interval(acc_ramp), 0); } +/* Implements osmo_signal_cbfn() -- trigger or abort ACC ramping upon changes RF lock state. */ +static int acc_ramp_nm_sig_cb(unsigned int subsys, unsigned int signal, void *handler_data, void *signal_data) +{ + struct nm_statechg_signal_data *nsd = signal_data; + struct acc_ramp *acc_ramp = handler_data; + struct gsm_bts_trx *trx = NULL; + + if (signal != S_NM_STATECHG_ADM) + return 0; + + if (nsd->obj_class != NM_OC_RADIO_CARRIER) + return 0; + + trx = nsd->obj; + + /* We only care about state changes of the first TRX. */ + if (trx->nr != 0) + return 0; + + /* RSL must already be up. We cannot send RACH system information to the BTS otherwise. */ + if (trx->rsl_link == NULL) + return 0; + + /* Trigger or abort ACC ramping based on the new 'RF lock' state of this TRX. */ + switch (nsd->new_state->administrative) { + case NM_STATE_UNLOCKED: + acc_ramp_trigger(acc_ramp); + break; + case NM_STATE_LOCKED: + case NM_STATE_SHUTDOWN: + acc_ramp_abort(acc_ramp); + break; + case NM_STATE_NULL: + break; + default: + LOGP(DRSL, LOGL_NOTICE, "(bts=%d) ACC RAMP: unrecognized administrative state '0x%x' reported for TRX 0\n", + acc_ramp->bts->nr, nsd->new_state->administrative); + break; + } + + return 0; +} + /*! * Initialize an acc_ramp data structure. * Storage for this structure must be provided by the caller. @@ -152,6 +196,7 @@ acc_ramp->step_interval_is_fixed = false; allow_all_enabled_accs(acc_ramp); osmo_timer_setup(&acc_ramp->step_timer, do_acc_ramping_step, acc_ramp); + osmo_signal_register_handler(SS_NM, acc_ramp_nm_sig_cb, acc_ramp); } /*! diff --git a/src/libbsc/bsc_vty.c b/src/libbsc/bsc_vty.c index 521a36a..c8d1637 100644 --- a/src/libbsc/bsc_vty.c +++ b/src/libbsc/bsc_vty.c @@ -3278,7 +3278,10 @@ if (!acc_ramp_is_enabled(&bts->acc_ramp)) acc_ramp_set_enabled(&bts->acc_ramp, true); - /* ACC ramping takes effect when the BTS reconnects. */ + /* + * ACC ramping takes effect either when the BTS reconnects RSL, + * or when RF administrative state changes to 'unlocked'. + */ return CMD_SUCCESS; } -- To view, visit https://gerrit.osmocom.org/7732 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newpatchset Gerrit-Change-Id: I4124f1da3dadec003de45c1da8435506ee8f0a34 Gerrit-PatchSet: 3 Gerrit-Project: osmo-bsc Gerrit-Branch: master Gerrit-Owner: Stefan Sperling Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Pau Espin Pedrol From jenkins at lists.osmocom.org Wed Apr 11 12:02:42 2018 From: jenkins at lists.osmocom.org (jenkins at lists.osmocom.org) Date: Wed, 11 Apr 2018 12:02:42 +0000 (UTC) Subject: =?UTF-8?Q?Jenkins_build_is_back_to_normal_:_master-asn1c_=C2=BB_a1=3Dde?= =?UTF-8?Q?fault,a2=3Ddefault,a3=3Ddefault,osmocom-master-debian9_#87?= In-Reply-To: <242652371.233.1523373005247.JavaMail.jenkins@jenkins.osmocom.org> References: <242652371.233.1523373005247.JavaMail.jenkins@jenkins.osmocom.org> Message-ID: <498976950.254.1523448162186.JavaMail.jenkins@jenkins.osmocom.org> See From gerrit-no-reply at lists.osmocom.org Wed Apr 11 12:08:12 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Wed, 11 Apr 2018 12:08:12 +0000 Subject: osmo-bsc[master]: trigger acc ramping based on trx rf-locked state In-Reply-To: References: Message-ID: Patch Set 3: Code-Review+1 -- To view, visit https://gerrit.osmocom.org/7732 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I4124f1da3dadec003de45c1da8435506ee8f0a34 Gerrit-PatchSet: 3 Gerrit-Project: osmo-bsc Gerrit-Branch: master Gerrit-Owner: Stefan Sperling Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Pau Espin Pedrol Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Wed Apr 11 12:57:20 2018 From: gerrit-no-reply at lists.osmocom.org (Vadim Yanitskiy) Date: Wed, 11 Apr 2018 12:57:20 +0000 Subject: osmo-msc[master]: CC: intentionally release T308 on BSSMAP Clear Request from BSC In-Reply-To: References: Message-ID: Patch Set 2: Code-Review+1 -- To view, visit https://gerrit.osmocom.org/7704 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I231fdb574a086a206321148474cbdc7ca9cf39f0 Gerrit-PatchSet: 2 Gerrit-Project: osmo-msc Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Vadim Yanitskiy Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Wed Apr 11 13:14:54 2018 From: gerrit-no-reply at lists.osmocom.org (Neels Hofmeyr) Date: Wed, 11 Apr 2018 13:14:54 +0000 Subject: [PATCH] osmo-ttcn3-hacks[master]: fix build: don't clean out expected-results.log: rename to *... Message-ID: Review at https://gerrit.osmocom.org/7751 fix build: don't clean out expected-results.log: rename to *.xml 'make clean' as generated by ttcn3_makefilegen removes all *.log files, which of course cleans out expected-results.log, which should not happen. Since this is a junit XML file, rename the suffix to .xml. Change-Id: Ic334f6b758eef865e3a497aa430691a3ae696d25 --- R bsc/expected-results.xml R ggsn_tests/expected-results.xml R hlr/expected-results.xml R mgw/expected-results.xml R msc/expected-results.xml R sgsn/expected-results.xml R sip/expected-results.xml M start-testsuite.sh R sysinfo/expected-results.xml 9 files changed, 1 insertion(+), 1 deletion(-) git pull ssh://gerrit.osmocom.org:29418/osmo-ttcn3-hacks refs/changes/51/7751/1 diff --git a/bsc/expected-results.log b/bsc/expected-results.xml similarity index 100% rename from bsc/expected-results.log rename to bsc/expected-results.xml diff --git a/ggsn_tests/expected-results.log b/ggsn_tests/expected-results.xml similarity index 100% rename from ggsn_tests/expected-results.log rename to ggsn_tests/expected-results.xml diff --git a/hlr/expected-results.log b/hlr/expected-results.xml similarity index 100% rename from hlr/expected-results.log rename to hlr/expected-results.xml diff --git a/mgw/expected-results.log b/mgw/expected-results.xml similarity index 100% rename from mgw/expected-results.log rename to mgw/expected-results.xml diff --git a/msc/expected-results.log b/msc/expected-results.xml similarity index 100% rename from msc/expected-results.log rename to msc/expected-results.xml diff --git a/sgsn/expected-results.log b/sgsn/expected-results.xml similarity index 100% rename from sgsn/expected-results.log rename to sgsn/expected-results.xml diff --git a/sip/expected-results.log b/sip/expected-results.xml similarity index 100% rename from sip/expected-results.log rename to sip/expected-results.xml diff --git a/start-testsuite.sh b/start-testsuite.sh index 5b187fa..e2da8f0 100755 --- a/start-testsuite.sh +++ b/start-testsuite.sh @@ -23,7 +23,7 @@ LD_LIBRARY_PATH="$SUITE_DIR:/usr/lib/titan:/usr/ttcn3/lib" ttcn3_start $SUITE $CFG $TEST -expected="$SUITE_DIR/expected-results.log" +expected="$SUITE_DIR/expected-results.xml" if [ ! -f "$expected" ]; then echo "No expected results found, not comparing outcome. ($expected)" exit 0 diff --git a/sysinfo/expected-results.log b/sysinfo/expected-results.xml similarity index 100% rename from sysinfo/expected-results.log rename to sysinfo/expected-results.xml -- To view, visit https://gerrit.osmocom.org/7751 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Ic334f6b758eef865e3a497aa430691a3ae696d25 Gerrit-PatchSet: 1 Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr From gerrit-no-reply at lists.osmocom.org Wed Apr 11 13:58:29 2018 From: gerrit-no-reply at lists.osmocom.org (Neels Hofmeyr) Date: Wed, 11 Apr 2018 13:58:29 +0000 Subject: [PATCH] osmo-ttcn3-hacks[master]: add mask_expected_results.sh Message-ID: Review at https://gerrit.osmocom.org/7752 add mask_expected_results.sh Provide a script to mask timestamps and source file lines in expected results files: when updating expected changes, it is useful to see the exact semantic changes, not the timestamp and source file line changes in the git diff. Change-Id: I785e126b1f5afddd1b722bc5e922ed90970efa8a --- A mask_expected_results.sh 1 file changed, 7 insertions(+), 0 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-ttcn3-hacks refs/changes/52/7752/1 diff --git a/mask_expected_results.sh b/mask_expected_results.sh new file mode 100755 index 0000000..516bb13 --- /dev/null +++ b/mask_expected_results.sh @@ -0,0 +1,7 @@ +#!/bin/sh +# to prevent diffs due to timing and source file lines, mask some numbers + +for target in */expected-results.xml; do + sed -i "s/time='[^']*'/time='MASKED'/g" "$target" + sed -i "s/ttcn:[0-9]*/ttcn:MASKED/g" "$target" +done -- To view, visit https://gerrit.osmocom.org/7752 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I785e126b1f5afddd1b722bc5e922ed90970efa8a Gerrit-PatchSet: 1 Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr From gerrit-no-reply at lists.osmocom.org Wed Apr 11 13:58:29 2018 From: gerrit-no-reply at lists.osmocom.org (Neels Hofmeyr) Date: Wed, 11 Apr 2018 13:58:29 +0000 Subject: [PATCH] osmo-ttcn3-hacks[master]: mask timestamps and source file nrs in expected-results.xml ... Message-ID: Review at https://gerrit.osmocom.org/7753 mask timestamps and source file nrs in expected-results.xml files Prepare for upcoming updates with concise diffs. Change-Id: Ic9f006aa8db1b477598605e0525faeb229b03641 --- M bsc/expected-results.xml M ggsn_tests/expected-results.xml M hlr/expected-results.xml M mgw/expected-results.xml M msc/expected-results.xml M sgsn/expected-results.xml M sip/expected-results.xml M sysinfo/expected-results.xml 8 files changed, 280 insertions(+), 280 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-ttcn3-hacks refs/changes/53/7753/1 diff --git a/bsc/expected-results.xml b/bsc/expected-results.xml index 18a9a20..a2f9d47 100644 --- a/bsc/expected-results.xml +++ b/bsc/expected-results.xml @@ -1,95 +1,95 @@ - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + Timeout expecting { msg_disc := { msg_group := RSL_MDISC_CCHAN (6), transparent := false }, msg_type := RSL_MT_PAGING_CMD (21), ies := { { iei := ?, body := { chan_nr := { u := { ch0 := RSL_CHAN_NR_PCH_AGCH (18) }, tn := ? } } }, { iei := ?, body := { paging_group := ? } }, { iei := ?, body := { ms_identity := { len := ?, payload := ? } } }, * } } - BSC_Tests.ttcn:2203 BSC_Tests control part - BSC_Tests.ttcn:1131 TC_paging_imsi_nochan_lai testcase + BSC_Tests.ttcn:MASKED BSC_Tests control part + BSC_Tests.ttcn:MASKED TC_paging_imsi_nochan_lai testcase - + - - - - - - - - + + + + + + + + Received PAGING after A-RESET - BSC_Tests.ttcn:2212 BSC_Tests control part - BSC_Tests.ttcn:1306 TC_paging_imsi_a_reset testcase + BSC_Tests.ttcn:MASKED BSC_Tests control part + BSC_Tests.ttcn:MASKED TC_paging_imsi_a_reset testcase - - - - - - - - - - - - - - + + + + + + + + + + + + + + Timeout of T_guard - BSC_Tests.ttcn:2230 BSC_Tests control part - BSC_Tests.ttcn:2056 TC_bssmap_clear_does_not_cause_bssmap_reset testcase + BSC_Tests.ttcn:MASKED BSC_Tests control part + BSC_Tests.ttcn:MASKED TC_bssmap_clear_does_not_cause_bssmap_reset testcase - + Timeout of T_guard - BSC_Tests.ttcn:2231 BSC_Tests control part - BSC_Tests.ttcn:2115 TC_ms_rel_ind_does_not_cause_bssmap_reset testcase + BSC_Tests.ttcn:MASKED BSC_Tests control part + BSC_Tests.ttcn:MASKED TC_ms_rel_ind_does_not_cause_bssmap_reset testcase diff --git a/ggsn_tests/expected-results.xml b/ggsn_tests/expected-results.xml index bff953a..1e5da38 100644 --- a/ggsn_tests/expected-results.xml +++ b/ggsn_tests/expected-results.xml @@ -1,14 +1,14 @@ - - - - - - - - - - - - + + + + + + + + + + + + diff --git a/hlr/expected-results.xml b/hlr/expected-results.xml index 4d95479..94ea7cd 100644 --- a/hlr/expected-results.xml +++ b/hlr/expected-results.xml @@ -1,18 +1,18 @@ - - + + Unexpected SAI ERROR Cause - HLR_Tests.ttcn:562 HLR_Tests control part - HLR_Tests.ttcn:364 TC_gsup_sai_err_invalid_imsi testcase + HLR_Tests.ttcn:MASKED HLR_Tests control part + HLR_Tests.ttcn:MASKED TC_gsup_sai_err_invalid_imsi testcase - - - - - - - - - + + + + + + + + + diff --git a/mgw/expected-results.xml b/mgw/expected-results.xml index c67d5d9..0e9f0e8 100644 --- a/mgw/expected-results.xml +++ b/mgw/expected-results.xml @@ -1,36 +1,36 @@ - - + + no verdict - - - - - - - - - + + + + + + + + + - MGCP_Test.ttcn:887 MGCP_Test control part - MGCP_Test.ttcn:436 TC_crcx_illegal_double_lco testcase + MGCP_Test.ttcn:MASKED MGCP_Test control part + MGCP_Test.ttcn:MASKED TC_crcx_illegal_double_lco testcase - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + diff --git a/msc/expected-results.xml b/msc/expected-results.xml index 92c38a0..1512f47 100644 --- a/msc/expected-results.xml +++ b/msc/expected-results.xml @@ -1,115 +1,115 @@ - - - - - + + + + + Timeout waiting for ClearCommand/Release - MSC_Tests.ttcn:1829 MSC_Tests control part - MSC_Tests.ttcn:502 TC_lu_imsi_reject testcase + MSC_Tests.ttcn:MASKED MSC_Tests control part + MSC_Tests.ttcn:MASKED TC_lu_imsi_reject testcase - + Timeout waiting for ClearCommand/Release - MSC_Tests.ttcn:1830 MSC_Tests control part - MSC_Tests.ttcn:531 TC_lu_imsi_timeout_gsup testcase + MSC_Tests.ttcn:MASKED MSC_Tests control part + MSC_Tests.ttcn:MASKED TC_lu_imsi_timeout_gsup testcase - - - - - - + + + + + + Got a second Clear Command, only one expected - MSC_Tests.ttcn:1832 MSC_Tests control part - MSC_Tests.ttcn:704 TC_lu_clear_request testcase + MSC_Tests.ttcn:MASKED MSC_Tests control part + MSC_Tests.ttcn:MASKED TC_lu_clear_request testcase - - - - - - - + + + + + + + Timeout waiting for ClearCommand/Release - MSC_Tests.ttcn:1843 MSC_Tests control part - MSC_Tests.ttcn:903 TC_emerg_call_imei_reject testcase + MSC_Tests.ttcn:MASKED MSC_Tests control part + MSC_Tests.ttcn:MASKED TC_emerg_call_imei_reject testcase - - + + Timeout waiting for ClearCommand/Release - MSC_Tests.ttcn:1845 MSC_Tests control part - MSC_Tests.ttcn:940 TC_cm_serv_req_vgcs_reject testcase + MSC_Tests.ttcn:MASKED MSC_Tests control part + MSC_Tests.ttcn:MASKED TC_cm_serv_req_vgcs_reject testcase - + Timeout waiting for ClearCommand/Release - MSC_Tests.ttcn:1846 MSC_Tests control part - MSC_Tests.ttcn:961 TC_cm_serv_req_vbs_reject testcase + MSC_Tests.ttcn:MASKED MSC_Tests control part + MSC_Tests.ttcn:MASKED TC_cm_serv_req_vbs_reject testcase - + Timeout waiting for ClearCommand/Release - MSC_Tests.ttcn:1847 MSC_Tests control part - MSC_Tests.ttcn:982 TC_cm_serv_req_lcs_reject testcase + MSC_Tests.ttcn:MASKED MSC_Tests control part + MSC_Tests.ttcn:MASKED TC_cm_serv_req_lcs_reject testcase - + Timeout waiting for ClearCommand/Release - MSC_Tests.ttcn:1848 MSC_Tests control part - MSC_Tests.ttcn:1003 TC_cm_reest_req_reject testcase + MSC_Tests.ttcn:MASKED MSC_Tests control part + MSC_Tests.ttcn:MASKED TC_cm_reest_req_reject testcase - - - - + + + + Timeout waiting for ClearCommand or SCCP Release - MSC_Tests.ttcn:1852 MSC_Tests control part - MSC_Tests.ttcn:1125 TC_cl3_rnd_payload testcase + MSC_Tests.ttcn:MASKED MSC_Tests control part + MSC_Tests.ttcn:MASKED TC_cl3_rnd_payload testcase - + Timeout waiting for ClearCommand/Release - MSC_Tests.ttcn:1853 MSC_Tests control part - MSC_Tests.ttcn:1142 TC_establish_and_nothing testcase + MSC_Tests.ttcn:MASKED MSC_Tests control part + MSC_Tests.ttcn:MASKED TC_establish_and_nothing testcase - + Timeout waiting for ClearCommand/Release - MSC_Tests.ttcn:1854 MSC_Tests control part - MSC_Tests.ttcn:1166 TC_mo_setup_and_nothing testcase + MSC_Tests.ttcn:MASKED MSC_Tests control part + MSC_Tests.ttcn:MASKED TC_mo_setup_and_nothing testcase - - + + Timeout waiting for channel release - MSC_Tests.ttcn:1856 MSC_Tests control part - MSC_Tests.ttcn:1283 TC_mo_crcx_ran_reject testcase + MSC_Tests.ttcn:MASKED MSC_Tests control part + MSC_Tests.ttcn:MASKED TC_mo_crcx_ran_reject testcase - + Timeout waiting for channel release - MSC_Tests.ttcn:1857 MSC_Tests control part - MSC_Tests.ttcn:1380 TC_mt_crcx_ran_reject testcase + MSC_Tests.ttcn:MASKED MSC_Tests control part + MSC_Tests.ttcn:MASKED TC_mt_crcx_ran_reject testcase - - + + - - - - - - - - - - - + + + + + + + + + + + diff --git a/sgsn/expected-results.xml b/sgsn/expected-results.xml index 502dde8..49ab60c 100644 --- a/sgsn/expected-results.xml +++ b/sgsn/expected-results.xml @@ -1,54 +1,54 @@ - - - - - + + + + + Tguard timeout - SGSN_Tests.ttcn:1157 SGSN_Tests control part - SGSN_Tests.ttcn:480 TC_attach_auth_sai_timeout testcase + SGSN_Tests.ttcn:MASKED SGSN_Tests control part + SGSN_Tests.ttcn:MASKED TC_attach_auth_sai_timeout testcase - + Tguard timeout - SGSN_Tests.ttcn:1158 SGSN_Tests control part - SGSN_Tests.ttcn:501 TC_attach_auth_sai_reject testcase + SGSN_Tests.ttcn:MASKED SGSN_Tests control part + SGSN_Tests.ttcn:MASKED TC_attach_auth_sai_reject testcase - + Tguard timeout - SGSN_Tests.ttcn:1159 SGSN_Tests control part - SGSN_Tests.ttcn:529 TC_attach_gsup_lu_timeout testcase + SGSN_Tests.ttcn:MASKED SGSN_Tests control part + SGSN_Tests.ttcn:MASKED TC_attach_gsup_lu_timeout testcase - + Tguard timeout - SGSN_Tests.ttcn:1160 SGSN_Tests control part - SGSN_Tests.ttcn:558 TC_attach_gsup_lu_reject testcase + SGSN_Tests.ttcn:MASKED SGSN_Tests control part + SGSN_Tests.ttcn:MASKED TC_attach_gsup_lu_reject testcase - - - - - - + + + + + + Dynamic test case error: Error message was received from MC: The connect operation refers to test component with component reference 77, which has already terminated. - + Dynamic test case error: Error message was received from MC: The connect operation refers to test component with component reference 83, which has already terminated. - - - - - - - - + + + + + + + + Tguard timeout - SGSN_Tests.ttcn:1175 SGSN_Tests control part - SGSN_Tests.ttcn:1148 TC_attach_pdp_act_user_deact_mt testcase + SGSN_Tests.ttcn:MASKED SGSN_Tests control part + SGSN_Tests.ttcn:MASKED TC_attach_pdp_act_user_deact_mt testcase diff --git a/sip/expected-results.xml b/sip/expected-results.xml index 54123a5..c704f85 100644 --- a/sip/expected-results.xml +++ b/sip/expected-results.xml @@ -1,7 +1,7 @@ - - - - - + + + + + diff --git a/sysinfo/expected-results.xml b/sysinfo/expected-results.xml index cea6f54..db2787d 100644 --- a/sysinfo/expected-results.xml +++ b/sysinfo/expected-results.xml @@ -1,69 +1,69 @@ - - - - + + + + No SI messages for TC=0! - + No SI messages for TC=0! - + No SI messages for TC=0! - - Test.ttcn:162: Dynamic test case error: testcase.stop + + Test.ttcn:MASKED: Dynamic test case error: testcase.stop - - - Test.ttcn:162: Dynamic test case error: testcase.stop + + + Test.ttcn:MASKED: Dynamic test case error: testcase.stop - - Test.ttcn:162: Dynamic test case error: testcase.stop + + Test.ttcn:MASKED: Dynamic test case error: testcase.stop - - Test.ttcn:478: Dynamic test case error: testcase.stop + + Test.ttcn:MASKED: Dynamic test case error: testcase.stop - - Test.ttcn:478: Dynamic test case error: testcase.stop + + Test.ttcn:MASKED: Dynamic test case error: testcase.stop - - Test.ttcn:478: Dynamic test case error: testcase.stop + + Test.ttcn:MASKED: Dynamic test case error: testcase.stop - - Test.ttcn:478: Dynamic test case error: testcase.stop + + Test.ttcn:MASKED: Dynamic test case error: testcase.stop - - Test.ttcn:478: Dynamic test case error: testcase.stop + + Test.ttcn:MASKED: Dynamic test case error: testcase.stop - - Test.ttcn:478: Dynamic test case error: testcase.stop + + Test.ttcn:MASKED: Dynamic test case error: testcase.stop - - Test.ttcn:478: Dynamic test case error: testcase.stop + + Test.ttcn:MASKED: Dynamic test case error: testcase.stop - - Test.ttcn:478: Dynamic test case error: testcase.stop + + Test.ttcn:MASKED: Dynamic test case error: testcase.stop - - Test.ttcn:478: Dynamic test case error: testcase.stop + + Test.ttcn:MASKED: Dynamic test case error: testcase.stop - - Test.ttcn:478: Dynamic test case error: testcase.stop + + Test.ttcn:MASKED: Dynamic test case error: testcase.stop - - Test.ttcn:478: Dynamic test case error: testcase.stop + + Test.ttcn:MASKED: Dynamic test case error: testcase.stop - - Test.ttcn:478: Dynamic test case error: testcase.stop + + Test.ttcn:MASKED: Dynamic test case error: testcase.stop - - Test.ttcn:478: Dynamic test case error: testcase.stop + + Test.ttcn:MASKED: Dynamic test case error: testcase.stop -- To view, visit https://gerrit.osmocom.org/7753 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Ic9f006aa8db1b477598605e0525faeb229b03641 Gerrit-PatchSet: 1 Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr From gerrit-no-reply at lists.osmocom.org Wed Apr 11 13:58:30 2018 From: gerrit-no-reply at lists.osmocom.org (Neels Hofmeyr) Date: Wed, 11 Apr 2018 13:58:30 +0000 Subject: [PATCH] osmo-ttcn3-hacks[master]: add update_expected_results_from_jenkins.sh Message-ID: Review at https://gerrit.osmocom.org/7754 add update_expected_results_from_jenkins.sh Change-Id: Ib3ad8554fc59112c11325425ccd70ca1dbd8c123 --- A update_expected_results_from_jenkins.sh 1 file changed, 39 insertions(+), 0 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-ttcn3-hacks refs/changes/54/7754/1 diff --git a/update_expected_results_from_jenkins.sh b/update_expected_results_from_jenkins.sh new file mode 100755 index 0000000..ba0b912 --- /dev/null +++ b/update_expected_results_from_jenkins.sh @@ -0,0 +1,39 @@ +#!/bin/sh + +not_found="" + +for target in */expected-results.xml; do + project="$(basename "$(dirname "$target")")" + + # shims for naming exceptions + ws_path="ttcn3-${project}-test/ws/logs/${project}-tester" + if [ "x$project" = "xggsn_tests" ]; then + project="ggsn" + elif [ "x$project" = "xsysinfo" ]; then + ws_path="ttcn3-nitb-sysinfo/ws/logs/ttcn3-nitb-sysinfo" + fi + + # find out the junit-NN.xml name + dir_url="https://jenkins.osmocom.org/jenkins/job/$ws_path/" + junit_file="$(wget -q -O - "$dir_url" | grep 'junit-xml-[0-9]*\.log' | tail -n 1 | sed 's/.*\(junit-xml-[0-9]*\.log\).*/\1/')" + + # update + target_new="$target.new" + if ! wget -O "$target_new" "${dir_url}$junit_file"; then + not_found="$not_found $project" + rm -f "$target_new" + else + mv "$target_new" "$target" + fi +done + +./mask_expected_results.sh + +echo " + + MAKE SURE THE RESULTING CHANGES ARE SANE BEFORE COMMITTING! + +" +if [ -n "$not_found" ]; then + echo "Could not update: $not_found" +fi -- To view, visit https://gerrit.osmocom.org/7754 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Ib3ad8554fc59112c11325425ccd70ca1dbd8c123 Gerrit-PatchSet: 1 Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr From gerrit-no-reply at lists.osmocom.org Wed Apr 11 13:58:30 2018 From: gerrit-no-reply at lists.osmocom.org (Neels Hofmeyr) Date: Wed, 11 Apr 2018 13:58:30 +0000 Subject: [PATCH] osmo-ttcn3-hacks[master]: bsc, msc: update expected results Message-ID: Review at https://gerrit.osmocom.org/7755 bsc, msc: update expected results Mark TC_paging_imsi_a_reset fixed. Add various new tests. Change-Id: Ib3a36efeb086fd995d7dad4e040f5a46b1b1ca0a --- M bsc/expected-results.xml M msc/expected-results.xml 2 files changed, 14 insertions(+), 8 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-ttcn3-hacks refs/changes/55/7755/1 diff --git a/bsc/expected-results.xml b/bsc/expected-results.xml index a2f9d47..8cafaa5 100644 --- a/bsc/expected-results.xml +++ b/bsc/expected-results.xml @@ -1,5 +1,5 @@ - + @@ -61,12 +61,7 @@ - - Received PAGING after A-RESET - BSC_Tests.ttcn:MASKED BSC_Tests control part - BSC_Tests.ttcn:MASKED TC_paging_imsi_a_reset testcase - - + @@ -92,4 +87,8 @@ BSC_Tests.ttcn:MASKED TC_ms_rel_ind_does_not_cause_bssmap_reset testcase + + + + diff --git a/msc/expected-results.xml b/msc/expected-results.xml index 1512f47..551c71a 100644 --- a/msc/expected-results.xml +++ b/msc/expected-results.xml @@ -1,5 +1,5 @@ - + @@ -111,5 +111,12 @@ + + + Unexpected SMS related PDU from MSC + MSC_Tests.ttcn:MASKED MSC_Tests control part + MSC_Tests.ttcn:MASKED TC_lu_and_mt_sms testcase + + -- To view, visit https://gerrit.osmocom.org/7755 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Ib3a36efeb086fd995d7dad4e040f5a46b1b1ca0a Gerrit-PatchSet: 1 Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr From jenkins at lists.osmocom.org Wed Apr 11 14:33:20 2018 From: jenkins at lists.osmocom.org (jenkins at lists.osmocom.org) Date: Wed, 11 Apr 2018 14:33:20 +0000 (UTC) Subject: =?UTF-8?Q?Jenkins_build_is_back_to_norm?= =?UTF-8?Q?al_:_master-osmo-bts_=C2=BB_lc15,or?= =?UTF-8?Q?igin/nrw/litecell15-next,default,osmocom-master-debian9_#497?= In-Reply-To: <1526478548.253.1523447656929.JavaMail.jenkins@jenkins.osmocom.org> References: <1526478548.253.1523447656929.JavaMail.jenkins@jenkins.osmocom.org> Message-ID: <1622932880.256.1523457200581.JavaMail.jenkins@jenkins.osmocom.org> See From gerrit-no-reply at lists.osmocom.org Wed Apr 11 14:41:22 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Wed, 11 Apr 2018 14:41:22 +0000 Subject: [PATCH] osmo-bsc[master]: bsc_nat: forward_to_bsc: remove one level of indentation Message-ID: Review at https://gerrit.osmocom.org/7756 bsc_nat: forward_to_bsc: remove one level of indentation Change-Id: I12d86a45a6b2cdc3af7a7b6c28f8f337fa95c903 --- M src/osmo-bsc_nat/bsc_nat_ctrl.c 1 file changed, 50 insertions(+), 49 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-bsc refs/changes/56/7756/1 diff --git a/src/osmo-bsc_nat/bsc_nat_ctrl.c b/src/osmo-bsc_nat/bsc_nat_ctrl.c index 9450741..5f82a41 100644 --- a/src/osmo-bsc_nat/bsc_nat_ctrl.c +++ b/src/osmo-bsc_nat/bsc_nat_ctrl.c @@ -236,57 +236,58 @@ continue; if (!bsc->authenticated) continue; - if (bsc->cfg->nr == nr) { - /* Add pending command to list */ - pending = talloc_zero(bsc, struct bsc_cmd_list); - if (!pending) { - cmd->reply = "OOM"; - goto err; - } + if (bsc->cfg->nr != nr) + continue; - pending->nat_id = get_next_free_bsc_id(bsc); - if (pending->nat_id < 0) { - cmd->reply = "No free ID found"; - goto err; - } - - bsc_cmd = ctrl_cmd_cpy(bsc, cmd); - if (!bsc_cmd) { - cmd->reply = "Could not forward command"; - goto err; - } - - talloc_free(bsc_cmd->id); - bsc_cmd->id = talloc_asprintf(bsc_cmd, "%i", pending->nat_id); - if (!bsc_cmd->id) { - cmd->reply = "OOM"; - goto err; - } - - talloc_free(bsc_cmd->variable); - bsc_cmd->variable = talloc_strdup(bsc_cmd, bsc_variable); - if (!bsc_cmd->variable) { - cmd->reply = "OOM"; - goto err; - } - - if (ctrl_cmd_send(&bsc->write_queue, bsc_cmd)) { - cmd->reply = "Sending failed"; - goto err; - } - pending->ccon = cmd->ccon; - pending->ccon->closed_cb = ctrl_conn_closed_cb; - pending->cmd = cmd; - - /* Setup the timeout */ - osmo_timer_setup(&pending->timeout, pending_timeout_cb, - pending); - /* TODO: Make timeout configurable */ - osmo_timer_schedule(&pending->timeout, 10, 0); - llist_add_tail(&pending->list_entry, &bsc->cmd_pending); - - goto done; + /* Add pending command to list */ + pending = talloc_zero(bsc, struct bsc_cmd_list); + if (!pending) { + cmd->reply = "OOM"; + goto err; } + + pending->nat_id = get_next_free_bsc_id(bsc); + if (pending->nat_id < 0) { + cmd->reply = "No free ID found"; + goto err; + } + + bsc_cmd = ctrl_cmd_cpy(bsc, cmd); + if (!bsc_cmd) { + cmd->reply = "Could not forward command"; + goto err; + } + + talloc_free(bsc_cmd->id); + bsc_cmd->id = talloc_asprintf(bsc_cmd, "%i", pending->nat_id); + if (!bsc_cmd->id) { + cmd->reply = "OOM"; + goto err; + } + + talloc_free(bsc_cmd->variable); + bsc_cmd->variable = talloc_strdup(bsc_cmd, bsc_variable); + if (!bsc_cmd->variable) { + cmd->reply = "OOM"; + goto err; + } + + if (ctrl_cmd_send(&bsc->write_queue, bsc_cmd)) { + cmd->reply = "Sending failed"; + goto err; + } + pending->ccon = cmd->ccon; + pending->ccon->closed_cb = ctrl_conn_closed_cb; + pending->cmd = cmd; + + /* Setup the timeout */ + osmo_timer_setup(&pending->timeout, pending_timeout_cb, + pending); + /* TODO: Make timeout configurable */ + osmo_timer_schedule(&pending->timeout, 10, 0); + llist_add_tail(&pending->list_entry, &bsc->cmd_pending); + + goto done; } /* We end up here if there's no bsc to handle our LAC */ cmd->reply = "no BSC with this nr"; -- To view, visit https://gerrit.osmocom.org/7756 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I12d86a45a6b2cdc3af7a7b6c28f8f337fa95c903 Gerrit-PatchSet: 1 Gerrit-Project: osmo-bsc Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol From gerrit-no-reply at lists.osmocom.org Wed Apr 11 14:42:49 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Wed, 11 Apr 2018 14:42:49 +0000 Subject: [PATCH] openbsc[master]: bsc_nat: forward_to_bsc: remove one level of indentation Message-ID: Review at https://gerrit.osmocom.org/7757 bsc_nat: forward_to_bsc: remove one level of indentation Change-Id: I105be500399259a97ef711f17b4a51e72dc8cc53 --- M openbsc/src/osmo-bsc_nat/bsc_nat_ctrl.c 1 file changed, 50 insertions(+), 49 deletions(-) git pull ssh://gerrit.osmocom.org:29418/openbsc refs/changes/57/7757/1 diff --git a/openbsc/src/osmo-bsc_nat/bsc_nat_ctrl.c b/openbsc/src/osmo-bsc_nat/bsc_nat_ctrl.c index 738ac87..797ddf8 100644 --- a/openbsc/src/osmo-bsc_nat/bsc_nat_ctrl.c +++ b/openbsc/src/osmo-bsc_nat/bsc_nat_ctrl.c @@ -235,57 +235,58 @@ continue; if (!bsc->authenticated) continue; - if (bsc->cfg->nr == nr) { - /* Add pending command to list */ - pending = talloc_zero(bsc, struct bsc_cmd_list); - if (!pending) { - cmd->reply = "OOM"; - goto err; - } + if (bsc->cfg->nr != nr) + continue; - pending->nat_id = get_next_free_bsc_id(bsc); - if (pending->nat_id < 0) { - cmd->reply = "No free ID found"; - goto err; - } - - bsc_cmd = ctrl_cmd_cpy(bsc, cmd); - if (!bsc_cmd) { - cmd->reply = "Could not forward command"; - goto err; - } - - talloc_free(bsc_cmd->id); - bsc_cmd->id = talloc_asprintf(bsc_cmd, "%i", pending->nat_id); - if (!bsc_cmd->id) { - cmd->reply = "OOM"; - goto err; - } - - talloc_free(bsc_cmd->variable); - bsc_cmd->variable = talloc_strdup(bsc_cmd, bsc_variable); - if (!bsc_cmd->variable) { - cmd->reply = "OOM"; - goto err; - } - - if (ctrl_cmd_send(&bsc->write_queue, bsc_cmd)) { - cmd->reply = "Sending failed"; - goto err; - } - pending->ccon = cmd->ccon; - pending->ccon->closed_cb = ctrl_conn_closed_cb; - pending->cmd = cmd; - - /* Setup the timeout */ - osmo_timer_setup(&pending->timeout, pending_timeout_cb, - pending); - /* TODO: Make timeout configurable */ - osmo_timer_schedule(&pending->timeout, 10, 0); - llist_add_tail(&pending->list_entry, &bsc->cmd_pending); - - goto done; + /* Add pending command to list */ + pending = talloc_zero(bsc, struct bsc_cmd_list); + if (!pending) { + cmd->reply = "OOM"; + goto err; } + + pending->nat_id = get_next_free_bsc_id(bsc); + if (pending->nat_id < 0) { + cmd->reply = "No free ID found"; + goto err; + } + + bsc_cmd = ctrl_cmd_cpy(bsc, cmd); + if (!bsc_cmd) { + cmd->reply = "Could not forward command"; + goto err; + } + + talloc_free(bsc_cmd->id); + bsc_cmd->id = talloc_asprintf(bsc_cmd, "%i", pending->nat_id); + if (!bsc_cmd->id) { + cmd->reply = "OOM"; + goto err; + } + + talloc_free(bsc_cmd->variable); + bsc_cmd->variable = talloc_strdup(bsc_cmd, bsc_variable); + if (!bsc_cmd->variable) { + cmd->reply = "OOM"; + goto err; + } + + if (ctrl_cmd_send(&bsc->write_queue, bsc_cmd)) { + cmd->reply = "Sending failed"; + goto err; + } + pending->ccon = cmd->ccon; + pending->ccon->closed_cb = ctrl_conn_closed_cb; + pending->cmd = cmd; + + /* Setup the timeout */ + osmo_timer_setup(&pending->timeout, pending_timeout_cb, + pending); + /* TODO: Make timeout configurable */ + osmo_timer_schedule(&pending->timeout, 10, 0); + llist_add_tail(&pending->list_entry, &bsc->cmd_pending); + + goto done; } /* We end up here if there's no bsc to handle our LAC */ cmd->reply = "no BSC with this nr"; -- To view, visit https://gerrit.osmocom.org/7757 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I105be500399259a97ef711f17b4a51e72dc8cc53 Gerrit-PatchSet: 1 Gerrit-Project: openbsc Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol From gerrit-no-reply at lists.osmocom.org Wed Apr 11 15:11:16 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Wed, 11 Apr 2018 15:11:16 +0000 Subject: [PATCH] osmo-bsc[master]: bsc_nat: forward_to_bsc: Fix memleak on send failure Message-ID: Review at https://gerrit.osmocom.org/7758 bsc_nat: forward_to_bsc: Fix memleak on send failure Change-Id: I56235eb05e4beed1bf9151319b64d67de4718e36 --- M src/osmo-bsc_nat/bsc_nat_ctrl.c 1 file changed, 1 insertion(+), 0 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-bsc refs/changes/58/7758/1 diff --git a/src/osmo-bsc_nat/bsc_nat_ctrl.c b/src/osmo-bsc_nat/bsc_nat_ctrl.c index 5f82a41..eef7671 100644 --- a/src/osmo-bsc_nat/bsc_nat_ctrl.c +++ b/src/osmo-bsc_nat/bsc_nat_ctrl.c @@ -293,6 +293,7 @@ cmd->reply = "no BSC with this nr"; err: ret = CTRL_CMD_ERROR; + talloc_free(pending); done: talloc_free(bsc_cmd); return ret; -- To view, visit https://gerrit.osmocom.org/7758 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I56235eb05e4beed1bf9151319b64d67de4718e36 Gerrit-PatchSet: 1 Gerrit-Project: osmo-bsc Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol From gerrit-no-reply at lists.osmocom.org Wed Apr 11 15:12:13 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Wed, 11 Apr 2018 15:12:13 +0000 Subject: [PATCH] osmo-bsc[master]: bsc_nat: forward_to_bsc: Fix memleak on send failure In-Reply-To: References: Message-ID: bsc_nat: forward_to_bsc: Fix memleak on send failure Change-Id: I56235eb05e4beed1bf9151319b64d67de4718e36 --- M src/osmo-bsc_nat/bsc_nat_ctrl.c 1 file changed, 2 insertions(+), 1 deletion(-) git pull ssh://gerrit.osmocom.org:29418/osmo-bsc refs/changes/58/7758/2 diff --git a/src/osmo-bsc_nat/bsc_nat_ctrl.c b/src/osmo-bsc_nat/bsc_nat_ctrl.c index 5f82a41..5d551ac 100644 --- a/src/osmo-bsc_nat/bsc_nat_ctrl.c +++ b/src/osmo-bsc_nat/bsc_nat_ctrl.c @@ -220,7 +220,7 @@ int ret = CTRL_CMD_HANDLED; struct ctrl_cmd *bsc_cmd = NULL; struct bsc_connection *bsc; - struct bsc_cmd_list *pending; + struct bsc_cmd_list *pending = NULL; unsigned int nr; char *bsc_variable; @@ -293,6 +293,7 @@ cmd->reply = "no BSC with this nr"; err: ret = CTRL_CMD_ERROR; + talloc_free(pending); done: talloc_free(bsc_cmd); return ret; -- To view, visit https://gerrit.osmocom.org/7758 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newpatchset Gerrit-Change-Id: I56235eb05e4beed1bf9151319b64d67de4718e36 Gerrit-PatchSet: 2 Gerrit-Project: osmo-bsc Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Jenkins Builder From gerrit-no-reply at lists.osmocom.org Wed Apr 11 15:13:29 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Wed, 11 Apr 2018 15:13:29 +0000 Subject: [PATCH] openbsc[master]: bsc_nat: forward_to_bsc: Fix memleak on send failure Message-ID: Review at https://gerrit.osmocom.org/7759 bsc_nat: forward_to_bsc: Fix memleak on send failure Change-Id: If0dfae40f03db297eeb4e296daf5fe78ba53a11b --- M openbsc/src/osmo-bsc_nat/bsc_nat_ctrl.c 1 file changed, 2 insertions(+), 1 deletion(-) git pull ssh://gerrit.osmocom.org:29418/openbsc refs/changes/59/7759/1 diff --git a/openbsc/src/osmo-bsc_nat/bsc_nat_ctrl.c b/openbsc/src/osmo-bsc_nat/bsc_nat_ctrl.c index 797ddf8..d6bf1e5 100644 --- a/openbsc/src/osmo-bsc_nat/bsc_nat_ctrl.c +++ b/openbsc/src/osmo-bsc_nat/bsc_nat_ctrl.c @@ -219,7 +219,7 @@ int ret = CTRL_CMD_HANDLED; struct ctrl_cmd *bsc_cmd = NULL; struct bsc_connection *bsc; - struct bsc_cmd_list *pending; + struct bsc_cmd_list *pending = NULL; unsigned int nr; char *bsc_variable; @@ -292,6 +292,7 @@ cmd->reply = "no BSC with this nr"; err: ret = CTRL_CMD_ERROR; + talloc_free(pending); done: talloc_free(bsc_cmd); return ret; -- To view, visit https://gerrit.osmocom.org/7759 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: If0dfae40f03db297eeb4e296daf5fe78ba53a11b Gerrit-PatchSet: 1 Gerrit-Project: openbsc Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol From gerrit-no-reply at lists.osmocom.org Wed Apr 11 15:27:30 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Wed, 11 Apr 2018 15:27:30 +0000 Subject: [PATCH] osmo-bsc[master]: bsc_nat: Drop redundant ccon ptr in bsc_cmd_list Message-ID: Review at https://gerrit.osmocom.org/7760 bsc_nat: Drop redundant ccon ptr in bsc_cmd_list It can be obtained from cmd field, so no need to store it in pending. This way we simplify the ad-hoc struct bsc_cmd_list. Change-Id: I6de64fc128ad623ca30b9e6cebebaff8de18f95d --- M include/osmocom/bsc/bsc_nat.h M src/osmo-bsc_nat/bsc_nat_ctrl.c 2 files changed, 4 insertions(+), 8 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-bsc refs/changes/60/7760/1 diff --git a/include/osmocom/bsc/bsc_nat.h b/include/osmocom/bsc/bsc_nat.h index 452daf2..6146c00 100644 --- a/include/osmocom/bsc/bsc_nat.h +++ b/include/osmocom/bsc/bsc_nat.h @@ -70,9 +70,6 @@ /* The NATed ID used on the bsc_con*/ int nat_id; - /* The control connection from which the command originated */ - struct ctrl_connection *ccon; - /* The command from the control connection */ struct ctrl_cmd *cmd; }; diff --git a/src/osmo-bsc_nat/bsc_nat_ctrl.c b/src/osmo-bsc_nat/bsc_nat_ctrl.c index 5d551ac..7df3ca3 100644 --- a/src/osmo-bsc_nat/bsc_nat_ctrl.c +++ b/src/osmo-bsc_nat/bsc_nat_ctrl.c @@ -149,7 +149,7 @@ cmd->reply = "OOM"; goto err; } - ctrl_cmd_send(&pending->ccon->write_queue, cmd); + ctrl_cmd_send(&pending->cmd->ccon->write_queue, cmd); bsc_nat_ctrl_del_pending(pending); } else { /* We need to handle TRAPS here */ @@ -177,7 +177,7 @@ LOGP(DNAT, LOGL_ERROR, "Command timed out\n"); pending->cmd->type = CTRL_TYPE_ERROR; pending->cmd->reply = "Command timed out"; - ctrl_cmd_send(&pending->ccon->write_queue, pending->cmd); + ctrl_cmd_send(&pending->cmd->ccon->write_queue, pending->cmd); bsc_nat_ctrl_del_pending(pending); } @@ -189,7 +189,7 @@ llist_for_each_entry(bsc, &g_nat->bsc_connections, list_entry) { llist_for_each_entry_safe(pending, tmp, &bsc->cmd_pending, list_entry) { - if (pending->ccon == connection) + if (pending->cmd->ccon == connection) bsc_nat_ctrl_del_pending(pending); } } @@ -276,8 +276,7 @@ cmd->reply = "Sending failed"; goto err; } - pending->ccon = cmd->ccon; - pending->ccon->closed_cb = ctrl_conn_closed_cb; + cmd->ccon->closed_cb = ctrl_conn_closed_cb; pending->cmd = cmd; /* Setup the timeout */ -- To view, visit https://gerrit.osmocom.org/7760 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I6de64fc128ad623ca30b9e6cebebaff8de18f95d Gerrit-PatchSet: 1 Gerrit-Project: osmo-bsc Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol From gerrit-no-reply at lists.osmocom.org Wed Apr 11 15:33:30 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Wed, 11 Apr 2018 15:33:30 +0000 Subject: [PATCH] openbsc[master]: bsc_nat: Drop redundant ccon ptr in bsc_cmd_list Message-ID: Review at https://gerrit.osmocom.org/7761 bsc_nat: Drop redundant ccon ptr in bsc_cmd_list Change-Id: Ic2e4ca7d8eb4e8f71dc773b3f2c0f09709d90a94 --- M openbsc/include/openbsc/bsc_nat.h M openbsc/src/osmo-bsc_nat/bsc_nat.c M openbsc/src/osmo-bsc_nat/bsc_nat_ctrl.c 3 files changed, 5 insertions(+), 9 deletions(-) git pull ssh://gerrit.osmocom.org:29418/openbsc refs/changes/61/7761/1 diff --git a/openbsc/include/openbsc/bsc_nat.h b/openbsc/include/openbsc/bsc_nat.h index 94ab0e5..fad3804 100644 --- a/openbsc/include/openbsc/bsc_nat.h +++ b/openbsc/include/openbsc/bsc_nat.h @@ -70,9 +70,6 @@ /* The NATed ID used on the bsc_con*/ int nat_id; - /* The control connection from which the command originated */ - struct ctrl_connection *ccon; - /* The command from the control connection */ struct ctrl_cmd *cmd; }; diff --git a/openbsc/src/osmo-bsc_nat/bsc_nat.c b/openbsc/src/osmo-bsc_nat/bsc_nat.c index f83abe1..57b51a2 100644 --- a/openbsc/src/osmo-bsc_nat/bsc_nat.c +++ b/openbsc/src/osmo-bsc_nat/bsc_nat.c @@ -936,7 +936,7 @@ llist_for_each_entry_safe(cmd_entry, cmd_tmp, &connection->cmd_pending, list_entry) { cmd_entry->cmd->type = CTRL_TYPE_ERROR; cmd_entry->cmd->reply = "BSC closed the connection"; - ctrl_cmd_send(&cmd_entry->ccon->write_queue, cmd_entry->cmd); + ctrl_cmd_send(&cmd_entry->cmd->ccon->write_queue, cmd_entry->cmd); bsc_nat_ctrl_del_pending(cmd_entry); } diff --git a/openbsc/src/osmo-bsc_nat/bsc_nat_ctrl.c b/openbsc/src/osmo-bsc_nat/bsc_nat_ctrl.c index d6bf1e5..22c3608 100644 --- a/openbsc/src/osmo-bsc_nat/bsc_nat_ctrl.c +++ b/openbsc/src/osmo-bsc_nat/bsc_nat_ctrl.c @@ -148,7 +148,7 @@ cmd->reply = "OOM"; goto err; } - ctrl_cmd_send(&pending->ccon->write_queue, cmd); + ctrl_cmd_send(&pending->cmd->ccon->write_queue, cmd); bsc_nat_ctrl_del_pending(pending); } else { /* We need to handle TRAPS here */ @@ -176,7 +176,7 @@ LOGP(DNAT, LOGL_ERROR, "Command timed out\n"); pending->cmd->type = CTRL_TYPE_ERROR; pending->cmd->reply = "Command timed out"; - ctrl_cmd_send(&pending->ccon->write_queue, pending->cmd); + ctrl_cmd_send(&pending->cmd->ccon->write_queue, pending->cmd); bsc_nat_ctrl_del_pending(pending); } @@ -188,7 +188,7 @@ llist_for_each_entry(bsc, &g_nat->bsc_connections, list_entry) { llist_for_each_entry_safe(pending, tmp, &bsc->cmd_pending, list_entry) { - if (pending->ccon == connection) + if (pending->cmd->ccon == connection) bsc_nat_ctrl_del_pending(pending); } } @@ -275,8 +275,7 @@ cmd->reply = "Sending failed"; goto err; } - pending->ccon = cmd->ccon; - pending->ccon->closed_cb = ctrl_conn_closed_cb; + cmd->ccon->closed_cb = ctrl_conn_closed_cb; pending->cmd = cmd; /* Setup the timeout */ -- To view, visit https://gerrit.osmocom.org/7761 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Ic2e4ca7d8eb4e8f71dc773b3f2c0f09709d90a94 Gerrit-PatchSet: 1 Gerrit-Project: openbsc Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol From gerrit-no-reply at lists.osmocom.org Wed Apr 11 15:33:35 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Wed, 11 Apr 2018 15:33:35 +0000 Subject: [PATCH] osmo-bsc[master]: bsc_nat: Drop redundant ccon ptr in bsc_cmd_list In-Reply-To: References: Message-ID: bsc_nat: Drop redundant ccon ptr in bsc_cmd_list It can be obtained from cmd field, so no need to store it in pending. This way we simplify the ad-hoc struct bsc_cmd_list. Change-Id: I6de64fc128ad623ca30b9e6cebebaff8de18f95d --- M include/osmocom/bsc/bsc_nat.h M src/osmo-bsc_nat/bsc_nat.c M src/osmo-bsc_nat/bsc_nat_ctrl.c 3 files changed, 5 insertions(+), 9 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-bsc refs/changes/60/7760/2 diff --git a/include/osmocom/bsc/bsc_nat.h b/include/osmocom/bsc/bsc_nat.h index 452daf2..6146c00 100644 --- a/include/osmocom/bsc/bsc_nat.h +++ b/include/osmocom/bsc/bsc_nat.h @@ -70,9 +70,6 @@ /* The NATed ID used on the bsc_con*/ int nat_id; - /* The control connection from which the command originated */ - struct ctrl_connection *ccon; - /* The command from the control connection */ struct ctrl_cmd *cmd; }; diff --git a/src/osmo-bsc_nat/bsc_nat.c b/src/osmo-bsc_nat/bsc_nat.c index a5dbf97..af97c57 100644 --- a/src/osmo-bsc_nat/bsc_nat.c +++ b/src/osmo-bsc_nat/bsc_nat.c @@ -935,7 +935,7 @@ llist_for_each_entry_safe(cmd_entry, cmd_tmp, &connection->cmd_pending, list_entry) { cmd_entry->cmd->type = CTRL_TYPE_ERROR; cmd_entry->cmd->reply = "BSC closed the connection"; - ctrl_cmd_send(&cmd_entry->ccon->write_queue, cmd_entry->cmd); + ctrl_cmd_send(&cmd_entry->cmd->ccon->write_queue, cmd_entry->cmd); bsc_nat_ctrl_del_pending(cmd_entry); } diff --git a/src/osmo-bsc_nat/bsc_nat_ctrl.c b/src/osmo-bsc_nat/bsc_nat_ctrl.c index 5d551ac..7df3ca3 100644 --- a/src/osmo-bsc_nat/bsc_nat_ctrl.c +++ b/src/osmo-bsc_nat/bsc_nat_ctrl.c @@ -149,7 +149,7 @@ cmd->reply = "OOM"; goto err; } - ctrl_cmd_send(&pending->ccon->write_queue, cmd); + ctrl_cmd_send(&pending->cmd->ccon->write_queue, cmd); bsc_nat_ctrl_del_pending(pending); } else { /* We need to handle TRAPS here */ @@ -177,7 +177,7 @@ LOGP(DNAT, LOGL_ERROR, "Command timed out\n"); pending->cmd->type = CTRL_TYPE_ERROR; pending->cmd->reply = "Command timed out"; - ctrl_cmd_send(&pending->ccon->write_queue, pending->cmd); + ctrl_cmd_send(&pending->cmd->ccon->write_queue, pending->cmd); bsc_nat_ctrl_del_pending(pending); } @@ -189,7 +189,7 @@ llist_for_each_entry(bsc, &g_nat->bsc_connections, list_entry) { llist_for_each_entry_safe(pending, tmp, &bsc->cmd_pending, list_entry) { - if (pending->ccon == connection) + if (pending->cmd->ccon == connection) bsc_nat_ctrl_del_pending(pending); } } @@ -276,8 +276,7 @@ cmd->reply = "Sending failed"; goto err; } - pending->ccon = cmd->ccon; - pending->ccon->closed_cb = ctrl_conn_closed_cb; + cmd->ccon->closed_cb = ctrl_conn_closed_cb; pending->cmd = cmd; /* Setup the timeout */ -- To view, visit https://gerrit.osmocom.org/7760 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newpatchset Gerrit-Change-Id: I6de64fc128ad623ca30b9e6cebebaff8de18f95d Gerrit-PatchSet: 2 Gerrit-Project: osmo-bsc Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Jenkins Builder From gerrit-no-reply at lists.osmocom.org Wed Apr 11 15:45:41 2018 From: gerrit-no-reply at lists.osmocom.org (dexter) Date: Wed, 11 Apr 2018 15:45:41 +0000 Subject: [PATCH] osmo-msc[master]: msc_mgcp.c: log endpoint name instead of pointer Message-ID: Review at https://gerrit.osmocom.org/7762 msc_mgcp.c: log endpoint name instead of pointer The logtext currently logs the pointer (address) of the string variable that holds the endpoint name, rather then the endpoint name itself. - Use %s instead of %p in format string Change-Id: I01b3d07aeedd72be60361249a5bf80fbb68b7bb8 --- M src/libmsc/msc_mgcp.c 1 file changed, 3 insertions(+), 3 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-msc refs/changes/62/7762/1 diff --git a/src/libmsc/msc_mgcp.c b/src/libmsc/msc_mgcp.c index 3cd02c2..b0c68a5 100644 --- a/src/libmsc/msc_mgcp.c +++ b/src/libmsc/msc_mgcp.c @@ -274,7 +274,7 @@ OSMO_ASSERT(mgcp); LOGPFSML(fi, LOGL_DEBUG, - "CRCX/RAN: creating connection for the RAN side on MGW endpoint:%p...\n", mgcp_ctx->rtp_endpoint); + "CRCX/RAN: creating connection for the RAN side on MGW endpoint:%s...\n", mgcp_ctx->rtp_endpoint); /* Generate MGCP message string */ mgcp_msg = (struct mgcp_msg) { @@ -370,7 +370,7 @@ } LOGPFSML(fi, LOGL_DEBUG, - "CRCX/CN creating connection for the CN side on MGW endpoint:%p...\n", mgcp_ctx->rtp_endpoint); + "CRCX/CN creating connection for the CN side on MGW endpoint:%s...\n", mgcp_ctx->rtp_endpoint); /* Generate MGCP message string */ mgcp_msg = (struct mgcp_msg) { @@ -733,7 +733,7 @@ OSMO_ASSERT(mgcp); LOGPFSML(fi, LOGL_DEBUG, - "DLCX: removing connection for the RAN and CN side on MGW endpoint:%p...\n", mgcp_ctx->rtp_endpoint); + "DLCX: removing connection for the RAN and CN side on MGW endpoint:%s...\n", mgcp_ctx->rtp_endpoint); /* Generate MGCP message string */ mgcp_msg = (struct mgcp_msg) { -- To view, visit https://gerrit.osmocom.org/7762 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I01b3d07aeedd72be60361249a5bf80fbb68b7bb8 Gerrit-PatchSet: 1 Gerrit-Project: osmo-msc Gerrit-Branch: master Gerrit-Owner: dexter From gerrit-no-reply at lists.osmocom.org Wed Apr 11 15:45:41 2018 From: gerrit-no-reply at lists.osmocom.org (dexter) Date: Wed, 11 Apr 2018 15:45:41 +0000 Subject: [PATCH] osmo-msc[master]: msc_mgcp: do not send wildcarded DLCX messages Message-ID: Review at https://gerrit.osmocom.org/7763 msc_mgcp: do not send wildcarded DLCX messages If an error on the MGW side occurs, the MSC may send out a DLCX command that contains a wildcarded endpoint name. Wildcarded DLCX commands are legal in principle but not in the context of an error on a single endpoint. Apart from that osmo-mgw is (not yet) capable to handle wildcarded DLCX command. The problem is caused by a wrong error handling. When the first (RAN) CRCX fails the error handling logic tries to perform a DLCX, but since we did not receive a specific endpoint name yet, the buffer containing the endpoint name is still initalized with the wildcarded enpoint name, but the error handler and the code that generates the DLCX is not aware of that. - Perform a check in the error handler function that checks if a DLCX can be made (a specific endpoint name is set - Correct the flags in the code that handles the first CRCX so that no DLCX is requested in the case of error Related OS#2882 Change-Id: I64c2a82016d854ad446fd49a5d76a28324e8bd4b --- M src/libmsc/msc_mgcp.c 1 file changed, 25 insertions(+), 5 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-msc refs/changes/63/7763/1 diff --git a/src/libmsc/msc_mgcp.c b/src/libmsc/msc_mgcp.c index b0c68a5..7c49c6e 100644 --- a/src/libmsc/msc_mgcp.c +++ b/src/libmsc/msc_mgcp.c @@ -156,6 +156,7 @@ static void _handle_error(struct mgcp_ctx *mgcp_ctx, enum msc_mgcp_cause_code cause, bool dlcx, const char *file, int line) { + bool dlcx_possible = true; struct osmo_fsm_inst *fi; struct gsm_mncc mncc = { .msg_type = MNCC_REL_REQ, @@ -171,6 +172,14 @@ fi = mgcp_ctx->fsm; OSMO_ASSERT(fi); + /* Check if the endpoint identifier is a specific endpoint identifier, + * since in order to perform a DLCX we must know the specific + * identifier of the endpoint we want to release. If we do not have + * this information because of errornous communication we can not + * perform a DLCX. */ + if (strstr(mgcp_ctx->rtp_endpoint, "*")) + dlcx_possible = false; + LOGPFSMLSRC(mgcp_ctx->fsm, LOGL_ERROR, file, line, "%s -- graceful shutdown...\n", get_value_string(msc_mgcp_cause_codes_names, cause)); @@ -180,7 +189,7 @@ * where a DLCX does not make sense (e.g. the MGW times out), halting * directly is the better options. In those cases, the dlcx flag * should not be set */ - if (dlcx) { + if (dlcx && dlcx_possible) { /* Fast-forward the FSM into call state. In this state the FSM * expects either an EV_TEARDOWN or an EV_TEARDOWN_ERROR. When * one of the two events is received a DLCX will be send to @@ -273,6 +282,10 @@ mgcp = mgcp_ctx->mgcp; OSMO_ASSERT(mgcp); + /* NOTE: In case of error, we will not be able to perform any DLCX + * operation because until this point we do not have requested any + * endpoint yet. */ + LOGPFSML(fi, LOGL_DEBUG, "CRCX/RAN: creating connection for the RAN side on MGW endpoint:%s...\n", mgcp_ctx->rtp_endpoint); @@ -285,7 +298,7 @@ }; if (osmo_strlcpy(mgcp_msg.endpoint, mgcp_ctx->rtp_endpoint, sizeof(mgcp_msg.endpoint)) >= MGCP_ENDPOINT_MAXLEN) { - handle_error(mgcp_ctx, MGCP_ERR_TOOLONG, true); + handle_error(mgcp_ctx, MGCP_ERR_TOOLONG, false); return; } @@ -296,7 +309,7 @@ mgcp_ctx->mgw_pending_trans = mgcp_msg_trans_id(msg); rc = mgcp_client_tx(mgcp, msg, mgw_crcx_ran_resp_cb, mgcp_ctx); if (rc < 0) { - handle_error(mgcp_ctx, MGCP_ERR_MGW_TX_FAIL, true); + handle_error(mgcp_ctx, MGCP_ERR_MGW_TX_FAIL, false); return; } @@ -311,6 +324,13 @@ struct gsm_trans *trans; struct gsm_subscriber_connection *conn; + /* NOTE: In case of error, we will not be able to perform any DLCX + * operation because until we either get a parseable message that + * contains an error code (no endpoint is seized in those cases) + * or we get an unparseable message. In this case we can not be + * sure, but we also can not draw any assumptions from unparseable + * messages. */ + OSMO_ASSERT(mgcp_ctx); trans = mgcp_ctx->trans; OSMO_ASSERT(trans); @@ -320,7 +340,7 @@ if (r->head.response_code != 200) { LOGPFSML(mgcp_ctx->fsm, LOGL_ERROR, "CRCX/RAN: response yields error: %d %s\n", r->head.response_code, r->head.comment); - handle_error(mgcp_ctx, MGCP_ERR_MGW_FAIL, true); + handle_error(mgcp_ctx, MGCP_ERR_MGW_FAIL, false); return; } @@ -333,7 +353,7 @@ rc = mgcp_response_parse_params(r); if (rc) { LOGPFSML(mgcp_ctx->fsm, LOGL_ERROR, "CRCX/RAN: Cannot parse response\n"); - handle_error(mgcp_ctx, MGCP_ERR_MGW_INVAL_RESP, true); + handle_error(mgcp_ctx, MGCP_ERR_MGW_INVAL_RESP, false); return; } -- To view, visit https://gerrit.osmocom.org/7763 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I64c2a82016d854ad446fd49a5d76a28324e8bd4b Gerrit-PatchSet: 1 Gerrit-Project: osmo-msc Gerrit-Branch: master Gerrit-Owner: dexter From gerrit-no-reply at lists.osmocom.org Wed Apr 11 15:56:22 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Wed, 11 Apr 2018 15:56:22 +0000 Subject: [PATCH] openbsc[master]: bsc_nat: ctrl: Fix crash on receveing bsc reply Message-ID: Review at https://gerrit.osmocom.org/7764 bsc_nat: ctrl: Fix crash on receveing bsc reply Since libosmocore 7c0031fc8063771e604976233fb7b46d2b85c077, the cmd param passed to handlers in ctrl_handle_msg is always freed afterwards, thus it is owned by the same function. Avoid keeping it alive and accessing it later when it has already been freed. Related: OS#3157 Change-Id: Ib1e1fb79746d4a4f3e30254fdb7a7e851c2cd0e4 --- M openbsc/src/osmo-bsc_nat/bsc_nat_ctrl.c 1 file changed, 8 insertions(+), 2 deletions(-) git pull ssh://gerrit.osmocom.org:29418/openbsc refs/changes/64/7764/1 diff --git a/openbsc/src/osmo-bsc_nat/bsc_nat_ctrl.c b/openbsc/src/osmo-bsc_nat/bsc_nat_ctrl.c index 22c3608..61ac887 100644 --- a/openbsc/src/osmo-bsc_nat/bsc_nat_ctrl.c +++ b/openbsc/src/osmo-bsc_nat/bsc_nat_ctrl.c @@ -79,7 +79,6 @@ { llist_del(&pending->list_entry); osmo_timer_del(&pending->timeout); - talloc_free(pending->cmd); talloc_free(pending); } @@ -275,8 +274,15 @@ cmd->reply = "Sending failed"; goto err; } + + /* caller owns cmd param and will destroy it after we return */ + pending->cmd = ctrl_cmd_cpy(pending, cmd); + if (!pending->cmd) { + cmd->reply = "Could not answer command"; + goto err; + } cmd->ccon->closed_cb = ctrl_conn_closed_cb; - pending->cmd = cmd; + pending->cmd->ccon = cmd->ccon; /* Setup the timeout */ osmo_timer_setup(&pending->timeout, pending_timeout_cb, -- To view, visit https://gerrit.osmocom.org/7764 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Ib1e1fb79746d4a4f3e30254fdb7a7e851c2cd0e4 Gerrit-PatchSet: 1 Gerrit-Project: openbsc Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol From gerrit-no-reply at lists.osmocom.org Wed Apr 11 16:06:13 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Wed, 11 Apr 2018 16:06:13 +0000 Subject: [PATCH] osmo-bsc[master]: bsc_nat: ctrl: Fix crash on receveing bsc reply Message-ID: Review at https://gerrit.osmocom.org/7765 bsc_nat: ctrl: Fix crash on receveing bsc reply Since libosmocore 7c0031fc8063771e604976233fb7b46d2b85c077, the cmd param passed to handlers in ctrl_handle_msg is always freed afterwards, thus it is owned by the same function. Avoid keeping it alive and accessing it later when it has already been freed. Related: OS#3157 Change-Id: I764917f641b170597e405f1865b0f7b94bae1597 --- M src/osmo-bsc_nat/bsc_nat_ctrl.c 1 file changed, 8 insertions(+), 2 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-bsc refs/changes/65/7765/1 diff --git a/src/osmo-bsc_nat/bsc_nat_ctrl.c b/src/osmo-bsc_nat/bsc_nat_ctrl.c index 7df3ca3..75c0dfa 100644 --- a/src/osmo-bsc_nat/bsc_nat_ctrl.c +++ b/src/osmo-bsc_nat/bsc_nat_ctrl.c @@ -80,7 +80,6 @@ { llist_del(&pending->list_entry); osmo_timer_del(&pending->timeout); - talloc_free(pending->cmd); talloc_free(pending); } @@ -276,8 +275,15 @@ cmd->reply = "Sending failed"; goto err; } + + /* caller owns cmd param and will destroy it after we return */ + pending->cmd = ctrl_cmd_cpy(pending, cmd); + if (!pending->cmd) { + cmd->reply = "Could not answer command"; + goto err; + } cmd->ccon->closed_cb = ctrl_conn_closed_cb; - pending->cmd = cmd; + pending->cmd->ccon = cmd->ccon; /* Setup the timeout */ osmo_timer_setup(&pending->timeout, pending_timeout_cb, -- To view, visit https://gerrit.osmocom.org/7765 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I764917f641b170597e405f1865b0f7b94bae1597 Gerrit-PatchSet: 1 Gerrit-Project: osmo-bsc Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol From jenkins at lists.osmocom.org Wed Apr 11 16:09:42 2018 From: jenkins at lists.osmocom.org (jenkins at lists.osmocom.org) Date: Wed, 11 Apr 2018 16:09:42 +0000 (UTC) Subject: =?UTF-8?Q?Build_failed_in_Jenkins:_master-osmo-iuh_=C2=BB_a1=3Ddefau?= =?UTF-8?Q?lt,a2=3Ddefault,a3=3Ddefault,osmocom-master-debian9_#908?= Message-ID: <1457455654.258.1523462982422.JavaMail.jenkins@jenkins.osmocom.org> See ------------------------------------------ [...truncated 670.95 KB...] CC RANAP_BindingID.lo CC RANAP_BroadcastAssistanceDataDecipheringKeys.lo CC RANAP_Cause.lo CC RANAP_CauseMisc.lo CC RANAP_CauseNAS.lo CC RANAP_CauseProtocol.lo In file included from :8:0, from ../../include/osmocom/ranap/RANAP_AuthorisedPLMNs.h:14, from RANAP_AuthorisedPLMNs.c:7: ../../include/osmocom/ranap/RANAP_AuthorisedPLMNs.h:27:23: warning: ?struct MemberC? declared inside parameter list will not be visible outside of this definition or declaration A_SEQUENCE_OF(struct MemberC { ^ :17:16: note: in definition of macro ?A_SET_OF? void (*free)(type *); \ ^~~~ ../../include/osmocom/ranap/RANAP_AuthorisedPLMNs.h:27:2: note: in expansion of macro ?A_SEQUENCE_OF? A_SEQUENCE_OF(struct MemberC { ^~~~~~~~~~~~~ CC RANAP_CauseRadioNetwork.lo CC RANAP_CauseRadioNetworkExtension.lo CC RANAP_CauseNon-Standard.lo CC RANAP_CauseTransmissionNetwork.lo CC RANAP_Cell-Access-Mode.lo CC RANAP_CellBased.lo CC RANAP_CellIdList.lo CC RANAP_Cell-Id.lo CC RANAP_Cell-Capacity-Class-Value.lo CC RANAP_CellLoadInformation.lo CC RANAP_CellLoadInformationGroup.lo CC RANAP_CellType.lo CC RANAP_ClientType.lo CC RANAP_CriticalityDiagnostics.lo CC RANAP_CriticalityDiagnostics-IE-List.lo CC RANAP_MessageStructure.lo CC RANAP_CGI.lo CC RANAP_ChosenEncryptionAlgorithm.lo CC RANAP_ChosenIntegrityProtectionAlgorithm.lo In file included from :8:0, from ../../include/osmocom/ranap/RANAP_CriticalityDiagnostics-IE-List.h:14, from ../../include/osmocom/ranap/RANAP_CriticalityDiagnostics.h:17, from RANAP_CriticalityDiagnostics.c:7: ../../include/osmocom/ranap/RANAP_CriticalityDiagnostics-IE-List.h:28:23: warning: ?struct MemberG? declared inside parameter list will not be visible outside of this definition or declaration A_SEQUENCE_OF(struct MemberG { ^ :17:16: note: in definition of macro ?A_SET_OF? void (*free)(type *); \ ^~~~ ../../include/osmocom/ranap/RANAP_CriticalityDiagnostics-IE-List.h:28:2: note: in expansion of macro ?A_SEQUENCE_OF? A_SEQUENCE_OF(struct MemberG { ^~~~~~~~~~~~~ In file included from :8:0, from ../../include/osmocom/ranap/RANAP_CriticalityDiagnostics-IE-List.h:14, from RANAP_CriticalityDiagnostics-IE-List.c:7: ../../include/osmocom/ranap/RANAP_CriticalityDiagnostics-IE-List.h:28:23: warning: ?struct MemberG? declared inside parameter list will not be visible outside of this definition or declaration A_SEQUENCE_OF(struct MemberG { ^ :17:16: note: in definition of macro ?A_SET_OF? void (*free)(type *); \ ^~~~ ../../include/osmocom/ranap/RANAP_CriticalityDiagnostics-IE-List.h:28:2: note: in expansion of macro ?A_SEQUENCE_OF? A_SEQUENCE_OF(struct MemberG { ^~~~~~~~~~~~~ CC RANAP_CI.lo CC RANAP_ClassmarkInformation2.lo CC RANAP_ClassmarkInformation3.lo CC RANAP_CN-DomainIndicator.lo In file included from :8:0, from ../../include/osmocom/ranap/RANAP_MessageStructure.h:14, from RANAP_MessageStructure.c:7: ../../include/osmocom/ranap/RANAP_MessageStructure.h:27:23: warning: ?struct MemberL? declared inside parameter list will not be visible outside of this definition or declaration A_SEQUENCE_OF(struct MemberL { ^ :17:16: note: in definition of macro ?A_SET_OF? void (*free)(type *); \ ^~~~ ../../include/osmocom/ranap/RANAP_MessageStructure.h:27:2: note: in expansion of macro ?A_SEQUENCE_OF? A_SEQUENCE_OF(struct MemberL { ^~~~~~~~~~~~~ CC RANAP_CN-ID.lo CC RANAP_Correlation-ID.lo CC RANAP_CSFB-Information.lo CC RANAP_CSG-Id.lo CC RANAP_CSG-Membership-Status.lo CC RANAP_CSG-Id-List.lo CC RANAP_DataPDUType.lo CC RANAP_DataVolumeReference.lo CC RANAP_DataVolumeReportingIndication.lo CC RANAP_DCH-ID.lo CC RANAP_DeliveryOfErroneousSDU.lo CC RANAP_DeliveryOrder.lo CC RANAP_DeltaRAListofIdleModeUEs.lo CC RANAP_NewRAListofIdleModeUEs.lo CC RANAP_RAListwithNoIdleModeUEsAnyMore.lo CC RANAP_ForwardingIndication.lo CC RANAP_DL-GTP-PDU-SequenceNumber.lo CC RANAP_DL-N-PDU-SequenceNumber.lo CC RANAP_D-RNTI.lo CC RANAP_DRX-CycleLengthCoefficient.lo CC RANAP_DSCH-ID.lo CC RANAP_EARFCN-Extended.lo CC RANAP_E-DCH-MAC-d-Flow-ID.lo CC RANAP_ENB-ID.lo CC RANAP_EncryptionAlgorithm.lo CC RANAP_EncryptionInformation.lo CC RANAP_EncryptionKey.lo CC RANAP_End-Of-CSFB.lo CC RANAP_EquipmentsToBeTraced.lo CC RANAP_E-UTRAN-Service-Handover.lo CC RANAP_Event.lo CC RANAP_Event1F-Parameters.lo CC RANAP_Event1I-Parameters.lo CC RANAP_ExtendedGuaranteedBitrate.lo CC RANAP_ExtendedMaxBitrate.lo CC RANAP_ExtendedRNC-ID.lo CC RANAP_FrameSequenceNumber.lo CC RANAP_FrequenceLayerConvergenceFlag.lo CC RANAP_GANSS-PositioningDataSet.lo CC RANAP_GANSS-PositioningMethodAndUsage.lo CC RANAP_GeographicalArea.lo CC RANAP_GeographicalCoordinates.lo CC RANAP_GA-AltitudeAndDirection.lo CC RANAP_GA-EllipsoidArc.lo In file included from :8:0, from ../../include/osmocom/ranap/RANAP_IE-Extensions.h:15, from ../../include/osmocom/ranap/RANAP_GeographicalCoordinates.h:16, from ../../include/osmocom/ranap/RANAP_GA-Point.h:14, from ../../include/osmocom/ranap/RANAP_GeographicalArea.h:14, from RANAP_GeographicalArea.c:7: ../../include/osmocom/ranap/RANAP_GA-Polygon.h:26:23: warning: ?struct Member? declared inside parameter list will not be visible outside of this definition or declaration A_SEQUENCE_OF(struct Member { ^ :17:16: note: in definition of macro ?A_SET_OF? void (*free)(type *); \ ^~~~ ../../include/osmocom/ranap/RANAP_GA-Polygon.h:26:2: note: in expansion of macro ?A_SEQUENCE_OF? A_SEQUENCE_OF(struct Member { ^~~~~~~~~~~~~ CC RANAP_GA-Point.lo CC RANAP_GA-PointWithAltitude.lo CC RANAP_GA-PointWithAltitudeAndUncertaintyEllipsoid.lo CC RANAP_GA-PointWithUnCertainty.lo CC RANAP_GA-PointWithUnCertaintyEllipse.lo CC RANAP_GA-Polygon.lo CC RANAP_GA-UncertaintyEllipse.lo CC RANAP_GERAN-BSC-Container.lo CC RANAP_GERAN-Cell-ID.lo CC RANAP_GERAN-Classmark.lo CC RANAP_GlobalCN-ID.lo CC RANAP_GlobalRNC-ID.lo CC RANAP_GTP-TEI.lo In file included from :8:0, from ../../include/osmocom/ranap/RANAP_GA-Polygon.h:14, from RANAP_GA-Polygon.c:7: ../../include/osmocom/ranap/RANAP_GA-Polygon.h:26:23: warning: ?struct Member? declared inside parameter list will not be visible outside of this definition or declaration A_SEQUENCE_OF(struct Member { ^ :17:16: note: in definition of macro ?A_SET_OF? void (*free)(type *); \ ^~~~ ../../include/osmocom/ranap/RANAP_GA-Polygon.h:26:2: note: in expansion of macro ?A_SEQUENCE_OF? A_SEQUENCE_OF(struct Member { ^~~~~~~~~~~~~ CC RANAP_GuaranteedBitrate.lo CC RANAP_HigherBitratesThan16MbpsFlag.lo CC RANAP_HS-DSCH-MAC-d-Flow-ID.lo CC RANAP_IMEI.lo CC RANAP_IMEIGroup.lo CC RANAP_IMEIList.lo CC RANAP_IMEISV.lo CC RANAP_IMEISVGroup.lo CC RANAP_IMEISVList.lo CC RANAP_ImmediateMDT.lo CC RANAP_IMSI.lo CC RANAP_IncludeVelocity.lo CC RANAP_InformationExchangeID.lo CC RANAP_InformationExchangeType.lo CC RANAP_InformationRequested.lo CC RANAP_InformationRequestType.lo CC RANAP_InformationTransferID.lo CC RANAP_InformationTransferType.lo CC RANAP_IntegrityProtectionAlgorithm.lo CC RANAP_IntegrityProtectionInformation.lo CC RANAP_IntegrityProtectionKey.lo CC RANAP_InterSystemInformationTransferType.lo CC RANAP_InterSystemInformation-TransparentContainer.lo CC RANAP_IPMulticastAddress.lo CC RANAP_IuSignallingConnectionIdentifier.lo CC RANAP_IuTransportAssociation.lo CC RANAP_KeyStatus.lo CC RANAP_LA-LIST.lo CC RANAP_LAC.lo CC RANAP_LAI.lo CC RANAP_LastKnownServiceArea.lo CC RANAP_LastVisitedUTRANCell-Item.lo CC RANAP_LHN-ID.lo In file included from :8:0, from ../../include/osmocom/ranap/RANAP_LA-LIST.h:14, from RANAP_LA-LIST.c:7: ../../include/osmocom/ranap/RANAP_LA-LIST.h:27:23: warning: ?struct MemberA? declared inside parameter list will not be visible outside of this definition or declaration A_SEQUENCE_OF(struct MemberA { ^ :17:16: note: in definition of macro ?A_SET_OF? void (*free)(type *); \ ^~~~ ../../include/osmocom/ranap/RANAP_LA-LIST.h:27:2: note: in expansion of macro ?A_SEQUENCE_OF? A_SEQUENCE_OF(struct MemberA { ^~~~~~~~~~~~~ CC RANAP_Links-to-log.lo CC RANAP_ListOF-SNAs.lo CC RANAP_ListOfInterfacesToTrace.lo CC RANAP_InterfacesToTraceItem.lo CC RANAP_LoadValue.lo CC RANAP_LocationRelatedDataRequestType.lo CC RANAP_LocationRelatedDataRequestTypeSpecificToGERANIuMode.lo CC RANAP_LocationReportingTransferInformation.lo CC RANAP_ReportChangeOfSAI.lo CC RANAP_PeriodicReportingIndicator.lo CC RANAP_DirectReportingIndicator.lo CC RANAP_L3-Information.lo CC RANAP_M1Report.lo CC RANAP_M2Report.lo CC RANAP_M4Report.lo CC RANAP_M4-Collection-Parameters.lo CC RANAP_M4-Period.lo CC RANAP_M4-Threshold.lo CC RANAP_M5Report.lo CC RANAP_M5-Period.lo CC RANAP_M6Report.lo CC RANAP_M6-Period.lo CC RANAP_M7Report.lo CC RANAP_M7-Period.lo /bin/bash: line 1: 645 Illegal instruction /bin/bash ../../libtool --silent --tag=CC --mode=compile gcc -DPACKAGE_NAME=\"osmo-iuh\" -DPACKAGE_TARNAME=\"osmo-iuh\" -DPACKAGE_VERSION=\"0.2.0.57-cf5f\" -DPACKAGE_STRING=\"osmo-iuh\ 0.2.0.57-cf5f\" -DPACKAGE_BUGREPORT=\"openbsc at lists.osmocom.org\" -DPACKAGE_URL=\"\" -DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DHAVE_DLFCN_H=1 -DLT_OBJDIR=\".libs/\" -DPACKAGE=\"osmo-iuh\" -DVERSION=\"0.2.0.57-cf5f\" -DSTDC_HEADERS=1 -I. -fsanitize=address -fsanitize=undefined -Wall -I../../include -I -I -I -g -O2 -fsanitize=address -fsanitize=undefined -Wall -MT RANAP_M7-Period.lo -MD -MP -MF .deps/RANAP_M7-Period.Tpo -c -o RANAP_M7-Period.lo RANAP_M7-Period.c Makefile:2505: recipe for target 'RANAP_M7-Period.lo' failed make[4]: *** [RANAP_M7-Period.lo] Error 132 make[4]: *** Waiting for unfinished jobs.... make[4]: Leaving directory ' Makefile:641: recipe for target 'all-recursive' failed make[3]: *** [all-recursive] Error 1 make[3]: Leaving directory ' Makefile:453: recipe for target 'all' failed make[2]: *** [all] Error 2 make[2]: Leaving directory ' Makefile:454: recipe for target 'all-recursive' failed make[1]: *** [all-recursive] Error 1 make[1]: Leaving directory ' Makefile:378: recipe for target 'all' failed make: *** [all] Error 2 Build step 'Execute shell' marked build as failure [WARNINGS]Skipping publisher since build result is FAILURE From gerrit-no-reply at lists.osmocom.org Wed Apr 11 16:21:48 2018 From: gerrit-no-reply at lists.osmocom.org (dexter) Date: Wed, 11 Apr 2018 16:21:48 +0000 Subject: [PATCH] osmo-ttcn3-hacks[master]: MSC_Tests: fix TC_mo_crcx_ran_reject Message-ID: Review at https://gerrit.osmocom.org/7767 MSC_Tests: fix TC_mo_crcx_ran_reject The testcase intentionally responds to the RAN sided CRCX with a garbeled message to cause the MGCP handlin inside the MSC to fail. The MSC is then expected not to perform further MGCP operations since it did not get a proper response to the first CRCX, so the specific endpoint name is not known, eventually preventing from doing an MDCX. However, the testcase responds to incoming DLCX commands, instead setting the verdict to fail. Also the altstep that dispatches the message after the errornous MGCP response unconditionally catches all BSSAP messages before entering the sub-altstep as_clear_cmd_compl_disc() that handles the clearing of the connection. Eventually the clear command is never received in this sub-altstep. - Make sure the verdict is set to fail when an MGCP message is received after the errornous response to the CRCX. - Remove the unconditional BSSAP.receive in order to be able to dispatch the clear command properly - Update the expected-results.log file Change-Id: I806491741d310e4410f6cb4ce0309235e9bf4300 Related: OS#2882 --- M msc/MSC_Tests.ttcn M msc/expected-results.log 2 files changed, 82 insertions(+), 90 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-ttcn3-hacks refs/changes/67/7767/1 diff --git a/msc/MSC_Tests.ttcn b/msc/MSC_Tests.ttcn index 6ec08bb..7931b16 100644 --- a/msc/MSC_Tests.ttcn +++ b/msc/MSC_Tests.ttcn @@ -1267,17 +1267,14 @@ BSSAP.send(ts_PDU_DTAP_MO(ts_ML3_MO_CC_REL_COMPL(cpars.transaction_id))); repeat; } - [] BSSAP.receive { - repeat; - } [] MNCC.receive { repeat; } [] GSUP.receive { repeat; } - [] MGCP.receive(tr_DLCX(?)) -> value mgcp_cmd { - MGCP.send(ts_DLCX_ACK2(mgcp_cmd.line.trans_id)); - f_create_mgcp_delete_ep(cpars.mgcp_ep); - repeat; - } - [] MGCP.receive { repeat; } + /* Note: As we did not respond properly to the CRCX from the MSC we + * expect the MSC to omit any further MGCP operation (At least in the + * the current implementation, there is no recovery mechanism implemented + * and a DLCX can not be performed as the MSC does not know a specific + * endpoint yet. */ + [] MGCP.receive { setverdict(fail, "Unexpected MGCP message"); self.stop; } [] as_clear_cmd_compl_disc(); } } diff --git a/msc/expected-results.log b/msc/expected-results.log index 92c38a0..ebda8a4 100644 --- a/msc/expected-results.log +++ b/msc/expected-results.log @@ -1,115 +1,110 @@ - - - - - + + + + + Timeout waiting for ClearCommand/Release - MSC_Tests.ttcn:1829 MSC_Tests control part + MSC_Tests.ttcn:1832 MSC_Tests control part MSC_Tests.ttcn:502 TC_lu_imsi_reject testcase - + Timeout waiting for ClearCommand/Release - MSC_Tests.ttcn:1830 MSC_Tests control part + MSC_Tests.ttcn:1833 MSC_Tests control part MSC_Tests.ttcn:531 TC_lu_imsi_timeout_gsup testcase - - - - - - + + + + + + Got a second Clear Command, only one expected - MSC_Tests.ttcn:1832 MSC_Tests control part + MSC_Tests.ttcn:1839 MSC_Tests control part MSC_Tests.ttcn:704 TC_lu_clear_request testcase - - - - - - - - Timeout waiting for ClearCommand/Release - MSC_Tests.ttcn:1843 MSC_Tests control part - MSC_Tests.ttcn:903 TC_emerg_call_imei_reject testcase - - - - - Timeout waiting for ClearCommand/Release - MSC_Tests.ttcn:1845 MSC_Tests control part - MSC_Tests.ttcn:940 TC_cm_serv_req_vgcs_reject testcase - - - + + + + + + + Timeout waiting for ClearCommand/Release MSC_Tests.ttcn:1846 MSC_Tests control part - MSC_Tests.ttcn:961 TC_cm_serv_req_vbs_reject testcase + MSC_Tests.ttcn:909 TC_emerg_call_imei_reject testcase - - Timeout waiting for ClearCommand/Release - MSC_Tests.ttcn:1847 MSC_Tests control part - MSC_Tests.ttcn:982 TC_cm_serv_req_lcs_reject testcase - - - + + Timeout waiting for ClearCommand/Release MSC_Tests.ttcn:1848 MSC_Tests control part - MSC_Tests.ttcn:1003 TC_cm_reest_req_reject testcase + MSC_Tests.ttcn:946 TC_cm_serv_req_vgcs_reject testcase - - - - + + Timeout waiting for ClearCommand/Release + MSC_Tests.ttcn:1849 MSC_Tests control part + MSC_Tests.ttcn:967 TC_cm_serv_req_vbs_reject testcase + + + + Timeout waiting for ClearCommand/Release + MSC_Tests.ttcn:1850 MSC_Tests control part + MSC_Tests.ttcn:988 TC_cm_serv_req_lcs_reject testcase + + + + Timeout waiting for ClearCommand/Release + MSC_Tests.ttcn:1851 MSC_Tests control part + MSC_Tests.ttcn:1009 TC_cm_reest_req_reject testcase + + + + + + Timeout waiting for ClearCommand or SCCP Release - MSC_Tests.ttcn:1852 MSC_Tests control part - MSC_Tests.ttcn:1125 TC_cl3_rnd_payload testcase + MSC_Tests.ttcn:1855 MSC_Tests control part + MSC_Tests.ttcn:1131 TC_cl3_rnd_payload testcase - + Timeout waiting for ClearCommand/Release - MSC_Tests.ttcn:1853 MSC_Tests control part - MSC_Tests.ttcn:1142 TC_establish_and_nothing testcase - - - - Timeout waiting for ClearCommand/Release - MSC_Tests.ttcn:1854 MSC_Tests control part - MSC_Tests.ttcn:1166 TC_mo_setup_and_nothing testcase - - - - - Timeout waiting for channel release MSC_Tests.ttcn:1856 MSC_Tests control part - MSC_Tests.ttcn:1283 TC_mo_crcx_ran_reject testcase + MSC_Tests.ttcn:1148 TC_establish_and_nothing testcase - - Timeout waiting for channel release + + Timeout waiting for ClearCommand/Release MSC_Tests.ttcn:1857 MSC_Tests control part - MSC_Tests.ttcn:1380 TC_mt_crcx_ran_reject testcase + MSC_Tests.ttcn:1172 TC_mo_setup_and_nothing testcase - - + + + + Timeout waiting for channel release + MSC_Tests.ttcn:1860 MSC_Tests control part + MSC_Tests.ttcn:1383 TC_mt_crcx_ran_reject testcase + + + + - - - - - - - - - - - + + + + + + + + + + + -- To view, visit https://gerrit.osmocom.org/7767 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I806491741d310e4410f6cb4ce0309235e9bf4300 Gerrit-PatchSet: 1 Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Owner: dexter From gerrit-no-reply at lists.osmocom.org Wed Apr 11 16:38:08 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Wed, 11 Apr 2018 16:38:08 +0000 Subject: osmo-bsc[master]: trigger acc ramping based on trx rf-locked state In-Reply-To: References: Message-ID: Patch Set 3: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7732 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I4124f1da3dadec003de45c1da8435506ee8f0a34 Gerrit-PatchSet: 3 Gerrit-Project: osmo-bsc Gerrit-Branch: master Gerrit-Owner: Stefan Sperling Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Pau Espin Pedrol Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Wed Apr 11 16:38:34 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Wed, 11 Apr 2018 16:38:34 +0000 Subject: osmo-bsc[master]: ensure that acc_ramp_init() is only called once In-Reply-To: References: Message-ID: Patch Set 2: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7723 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Ia25bff85d9e5c277da76bffa11d31972e9fdc323 Gerrit-PatchSet: 2 Gerrit-Project: osmo-bsc Gerrit-Branch: master Gerrit-Owner: Stefan Sperling Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Pau Espin Pedrol Gerrit-Reviewer: Stefan Sperling Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Wed Apr 11 16:40:37 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Wed, 11 Apr 2018 16:40:37 +0000 Subject: osmo-ttcn3-hacks[master]: MSC_Tests: fix TC_mo_crcx_ran_reject In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7767 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I806491741d310e4410f6cb4ce0309235e9bf4300 Gerrit-PatchSet: 1 Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Owner: dexter Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Wed Apr 11 16:41:05 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Wed, 11 Apr 2018 16:41:05 +0000 Subject: osmo-bsc[master]: bsc_nat: ctrl: Fix crash on receveing bsc reply In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7765 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I764917f641b170597e405f1865b0f7b94bae1597 Gerrit-PatchSet: 1 Gerrit-Project: osmo-bsc Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Wed Apr 11 16:41:19 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Wed, 11 Apr 2018 16:41:19 +0000 Subject: osmo-bsc[master]: libbsc: set_net_mcc_mnc_apply: Fix memleak on parsing incorr... In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7747 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I43513e108dfba24efb091d56b3fdfdb0cd0af727 Gerrit-PatchSet: 1 Gerrit-Project: osmo-bsc Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Wed Apr 11 16:41:28 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Wed, 11 Apr 2018 16:41:28 +0000 Subject: osmo-bsc[master]: bsc_nat: ctrl: fix memleak on reply receival In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7748 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I163d4d12d8656628dc88ff3e59a4c3e53b760a0c Gerrit-PatchSet: 1 Gerrit-Project: osmo-bsc Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Wed Apr 11 16:41:34 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Wed, 11 Apr 2018 16:41:34 +0000 Subject: osmo-bsc[master]: bsc_nat: forward_to_bsc: remove one level of indentation In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7756 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I12d86a45a6b2cdc3af7a7b6c28f8f337fa95c903 Gerrit-PatchSet: 1 Gerrit-Project: osmo-bsc Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Wed Apr 11 16:41:36 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Wed, 11 Apr 2018 16:41:36 +0000 Subject: osmo-bsc[master]: bsc_nat: forward_to_bsc: Fix memleak on send failure In-Reply-To: References: Message-ID: Patch Set 2: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7758 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I56235eb05e4beed1bf9151319b64d67de4718e36 Gerrit-PatchSet: 2 Gerrit-Project: osmo-bsc Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Wed Apr 11 16:41:40 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Wed, 11 Apr 2018 16:41:40 +0000 Subject: osmo-bsc[master]: bsc_nat: Drop redundant ccon ptr in bsc_cmd_list In-Reply-To: References: Message-ID: Patch Set 2: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7760 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I6de64fc128ad623ca30b9e6cebebaff8de18f95d Gerrit-PatchSet: 2 Gerrit-Project: osmo-bsc Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Wed Apr 11 16:41:53 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Wed, 11 Apr 2018 16:41:53 +0000 Subject: openbsc[master]: libbsc: set_net_mcc_mnc_apply: Fix memleak on parsing incorr... In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7746 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I507b0eced7d86f8e978012f6c19f728cd481196b Gerrit-PatchSet: 1 Gerrit-Project: openbsc Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Wed Apr 11 16:41:55 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Wed, 11 Apr 2018 16:41:55 +0000 Subject: openbsc[master]: bsc_nat: ctrl: fix memleak on reply receival In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7749 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I146c4a561b0cd62779d60da3b55b96e24438bd89 Gerrit-PatchSet: 1 Gerrit-Project: openbsc Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Wed Apr 11 16:41:56 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Wed, 11 Apr 2018 16:41:56 +0000 Subject: openbsc[master]: bsc_nat: forward_to_bsc: remove one level of indentation In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7757 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I105be500399259a97ef711f17b4a51e72dc8cc53 Gerrit-PatchSet: 1 Gerrit-Project: openbsc Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Wed Apr 11 16:41:58 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Wed, 11 Apr 2018 16:41:58 +0000 Subject: openbsc[master]: bsc_nat: forward_to_bsc: Fix memleak on send failure In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7759 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: If0dfae40f03db297eeb4e296daf5fe78ba53a11b Gerrit-PatchSet: 1 Gerrit-Project: openbsc Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Wed Apr 11 16:42:01 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Wed, 11 Apr 2018 16:42:01 +0000 Subject: openbsc[master]: bsc_nat: Drop redundant ccon ptr in bsc_cmd_list In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7761 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Ic2e4ca7d8eb4e8f71dc773b3f2c0f09709d90a94 Gerrit-PatchSet: 1 Gerrit-Project: openbsc Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Wed Apr 11 16:42:03 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Wed, 11 Apr 2018 16:42:03 +0000 Subject: openbsc[master]: bsc_nat: ctrl: Fix crash on receveing bsc reply In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7764 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Ib1e1fb79746d4a4f3e30254fdb7a7e851c2cd0e4 Gerrit-PatchSet: 1 Gerrit-Project: openbsc Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Neels Hofmeyr Gerrit-Reviewer: daniel Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Wed Apr 11 16:43:35 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Wed, 11 Apr 2018 16:43:35 +0000 Subject: osmo-msc[master]: msc_mgcp: do not send wildcarded DLCX messages In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7763 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I64c2a82016d854ad446fd49a5d76a28324e8bd4b Gerrit-PatchSet: 1 Gerrit-Project: osmo-msc Gerrit-Branch: master Gerrit-Owner: dexter Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Wed Apr 11 16:43:51 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Wed, 11 Apr 2018 16:43:51 +0000 Subject: osmo-msc[master]: msc_mgcp.c: log endpoint name instead of pointer In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7762 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I01b3d07aeedd72be60361249a5bf80fbb68b7bb8 Gerrit-PatchSet: 1 Gerrit-Project: osmo-msc Gerrit-Branch: master Gerrit-Owner: dexter Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Wed Apr 11 16:43:54 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Wed, 11 Apr 2018 16:43:54 +0000 Subject: [MERGED] osmo-msc[master]: msc_mgcp.c: log endpoint name instead of pointer In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: msc_mgcp.c: log endpoint name instead of pointer ...................................................................... msc_mgcp.c: log endpoint name instead of pointer The logtext currently logs the pointer (address) of the string variable that holds the endpoint name, rather then the endpoint name itself. - Use %s instead of %p in format string Change-Id: I01b3d07aeedd72be60361249a5bf80fbb68b7bb8 --- M src/libmsc/msc_mgcp.c 1 file changed, 3 insertions(+), 3 deletions(-) Approvals: Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/src/libmsc/msc_mgcp.c b/src/libmsc/msc_mgcp.c index 3cd02c2..b0c68a5 100644 --- a/src/libmsc/msc_mgcp.c +++ b/src/libmsc/msc_mgcp.c @@ -274,7 +274,7 @@ OSMO_ASSERT(mgcp); LOGPFSML(fi, LOGL_DEBUG, - "CRCX/RAN: creating connection for the RAN side on MGW endpoint:%p...\n", mgcp_ctx->rtp_endpoint); + "CRCX/RAN: creating connection for the RAN side on MGW endpoint:%s...\n", mgcp_ctx->rtp_endpoint); /* Generate MGCP message string */ mgcp_msg = (struct mgcp_msg) { @@ -370,7 +370,7 @@ } LOGPFSML(fi, LOGL_DEBUG, - "CRCX/CN creating connection for the CN side on MGW endpoint:%p...\n", mgcp_ctx->rtp_endpoint); + "CRCX/CN creating connection for the CN side on MGW endpoint:%s...\n", mgcp_ctx->rtp_endpoint); /* Generate MGCP message string */ mgcp_msg = (struct mgcp_msg) { @@ -733,7 +733,7 @@ OSMO_ASSERT(mgcp); LOGPFSML(fi, LOGL_DEBUG, - "DLCX: removing connection for the RAN and CN side on MGW endpoint:%p...\n", mgcp_ctx->rtp_endpoint); + "DLCX: removing connection for the RAN and CN side on MGW endpoint:%s...\n", mgcp_ctx->rtp_endpoint); /* Generate MGCP message string */ mgcp_msg = (struct mgcp_msg) { -- To view, visit https://gerrit.osmocom.org/7762 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: I01b3d07aeedd72be60361249a5bf80fbb68b7bb8 Gerrit-PatchSet: 1 Gerrit-Project: osmo-msc Gerrit-Branch: master Gerrit-Owner: dexter Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder From gerrit-no-reply at lists.osmocom.org Wed Apr 11 16:43:55 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Wed, 11 Apr 2018 16:43:55 +0000 Subject: [MERGED] osmo-msc[master]: msc_mgcp: do not send wildcarded DLCX messages In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: msc_mgcp: do not send wildcarded DLCX messages ...................................................................... msc_mgcp: do not send wildcarded DLCX messages If an error on the MGW side occurs, the MSC may send out a DLCX command that contains a wildcarded endpoint name. Wildcarded DLCX commands are legal in principle but not in the context of an error on a single endpoint. Apart from that osmo-mgw is (not yet) capable to handle wildcarded DLCX command. The problem is caused by a wrong error handling. When the first (RAN) CRCX fails the error handling logic tries to perform a DLCX, but since we did not receive a specific endpoint name yet, the buffer containing the endpoint name is still initalized with the wildcarded enpoint name, but the error handler and the code that generates the DLCX is not aware of that. - Perform a check in the error handler function that checks if a DLCX can be made (a specific endpoint name is set - Correct the flags in the code that handles the first CRCX so that no DLCX is requested in the case of error Related OS#2882 Change-Id: I64c2a82016d854ad446fd49a5d76a28324e8bd4b --- M src/libmsc/msc_mgcp.c 1 file changed, 25 insertions(+), 5 deletions(-) Approvals: Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/src/libmsc/msc_mgcp.c b/src/libmsc/msc_mgcp.c index b0c68a5..7c49c6e 100644 --- a/src/libmsc/msc_mgcp.c +++ b/src/libmsc/msc_mgcp.c @@ -156,6 +156,7 @@ static void _handle_error(struct mgcp_ctx *mgcp_ctx, enum msc_mgcp_cause_code cause, bool dlcx, const char *file, int line) { + bool dlcx_possible = true; struct osmo_fsm_inst *fi; struct gsm_mncc mncc = { .msg_type = MNCC_REL_REQ, @@ -171,6 +172,14 @@ fi = mgcp_ctx->fsm; OSMO_ASSERT(fi); + /* Check if the endpoint identifier is a specific endpoint identifier, + * since in order to perform a DLCX we must know the specific + * identifier of the endpoint we want to release. If we do not have + * this information because of errornous communication we can not + * perform a DLCX. */ + if (strstr(mgcp_ctx->rtp_endpoint, "*")) + dlcx_possible = false; + LOGPFSMLSRC(mgcp_ctx->fsm, LOGL_ERROR, file, line, "%s -- graceful shutdown...\n", get_value_string(msc_mgcp_cause_codes_names, cause)); @@ -180,7 +189,7 @@ * where a DLCX does not make sense (e.g. the MGW times out), halting * directly is the better options. In those cases, the dlcx flag * should not be set */ - if (dlcx) { + if (dlcx && dlcx_possible) { /* Fast-forward the FSM into call state. In this state the FSM * expects either an EV_TEARDOWN or an EV_TEARDOWN_ERROR. When * one of the two events is received a DLCX will be send to @@ -273,6 +282,10 @@ mgcp = mgcp_ctx->mgcp; OSMO_ASSERT(mgcp); + /* NOTE: In case of error, we will not be able to perform any DLCX + * operation because until this point we do not have requested any + * endpoint yet. */ + LOGPFSML(fi, LOGL_DEBUG, "CRCX/RAN: creating connection for the RAN side on MGW endpoint:%s...\n", mgcp_ctx->rtp_endpoint); @@ -285,7 +298,7 @@ }; if (osmo_strlcpy(mgcp_msg.endpoint, mgcp_ctx->rtp_endpoint, sizeof(mgcp_msg.endpoint)) >= MGCP_ENDPOINT_MAXLEN) { - handle_error(mgcp_ctx, MGCP_ERR_TOOLONG, true); + handle_error(mgcp_ctx, MGCP_ERR_TOOLONG, false); return; } @@ -296,7 +309,7 @@ mgcp_ctx->mgw_pending_trans = mgcp_msg_trans_id(msg); rc = mgcp_client_tx(mgcp, msg, mgw_crcx_ran_resp_cb, mgcp_ctx); if (rc < 0) { - handle_error(mgcp_ctx, MGCP_ERR_MGW_TX_FAIL, true); + handle_error(mgcp_ctx, MGCP_ERR_MGW_TX_FAIL, false); return; } @@ -311,6 +324,13 @@ struct gsm_trans *trans; struct gsm_subscriber_connection *conn; + /* NOTE: In case of error, we will not be able to perform any DLCX + * operation because until we either get a parseable message that + * contains an error code (no endpoint is seized in those cases) + * or we get an unparseable message. In this case we can not be + * sure, but we also can not draw any assumptions from unparseable + * messages. */ + OSMO_ASSERT(mgcp_ctx); trans = mgcp_ctx->trans; OSMO_ASSERT(trans); @@ -320,7 +340,7 @@ if (r->head.response_code != 200) { LOGPFSML(mgcp_ctx->fsm, LOGL_ERROR, "CRCX/RAN: response yields error: %d %s\n", r->head.response_code, r->head.comment); - handle_error(mgcp_ctx, MGCP_ERR_MGW_FAIL, true); + handle_error(mgcp_ctx, MGCP_ERR_MGW_FAIL, false); return; } @@ -333,7 +353,7 @@ rc = mgcp_response_parse_params(r); if (rc) { LOGPFSML(mgcp_ctx->fsm, LOGL_ERROR, "CRCX/RAN: Cannot parse response\n"); - handle_error(mgcp_ctx, MGCP_ERR_MGW_INVAL_RESP, true); + handle_error(mgcp_ctx, MGCP_ERR_MGW_INVAL_RESP, false); return; } -- To view, visit https://gerrit.osmocom.org/7763 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: I64c2a82016d854ad446fd49a5d76a28324e8bd4b Gerrit-PatchSet: 1 Gerrit-Project: osmo-msc Gerrit-Branch: master Gerrit-Owner: dexter Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder From gerrit-no-reply at lists.osmocom.org Wed Apr 11 16:45:27 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Wed, 11 Apr 2018 16:45:27 +0000 Subject: osmo-ttcn3-hacks[master]: add update_expected_results_from_jenkins.sh In-Reply-To: References: Message-ID: Patch Set 1: I think this script deserves some usage documentation / comments? -- To view, visit https://gerrit.osmocom.org/7754 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Ib3ad8554fc59112c11325425ccd70ca1dbd8c123 Gerrit-PatchSet: 1 Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Wed Apr 11 16:45:46 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Wed, 11 Apr 2018 16:45:46 +0000 Subject: osmo-ttcn3-hacks[master]: fix build: don't clean out expected-results.log: rename to *... In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7751 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Ic334f6b758eef865e3a497aa430691a3ae696d25 Gerrit-PatchSet: 1 Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Wed Apr 11 16:46:05 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Wed, 11 Apr 2018 16:46:05 +0000 Subject: osmo-ttcn3-hacks[master]: add mask_expected_results.sh In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7752 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I785e126b1f5afddd1b722bc5e922ed90970efa8a Gerrit-PatchSet: 1 Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Wed Apr 11 16:46:54 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Wed, 11 Apr 2018 16:46:54 +0000 Subject: osmo-ttcn3-hacks[master]: add mask_expected_results.sh In-Reply-To: References: Message-ID: Patch Set 1: (1 comment) https://gerrit.osmocom.org/#/c/7752/1/mask_expected_results.sh File mask_expected_results.sh: Line 5: sed -i "s/time='[^']*'/time='MASKED'/g" "$target" does the "MASKED" still constitute valid Juni2-XML? Is there a DTD available somewhere for Junit2-XML? Did you try to validate it? -- To view, visit https://gerrit.osmocom.org/7752 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I785e126b1f5afddd1b722bc5e922ed90970efa8a Gerrit-PatchSet: 1 Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-HasComments: Yes From gerrit-no-reply at lists.osmocom.org Wed Apr 11 16:50:40 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Wed, 11 Apr 2018 16:50:40 +0000 Subject: osmo-ttcn3-hacks[master]: mask timestamps and source file nrs in expected-results.xml ... In-Reply-To: References: Message-ID: Patch Set 1: see my other comment. Not sure if this is still valid Junit2-XML. Various parsers might expect a float value, not some string? As the "time" attribute is an optional attribute AFAICT, it might be best to find or implement a way to suppress it being generated by titan in the first place? -- To view, visit https://gerrit.osmocom.org/7753 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Ic9f006aa8db1b477598605e0525faeb229b03641 Gerrit-PatchSet: 1 Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Wed Apr 11 16:50:59 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Wed, 11 Apr 2018 16:50:59 +0000 Subject: [MERGED] osmo-ttcn3-hacks[master]: MSC_Tests: fix TC_mo_crcx_ran_reject In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: MSC_Tests: fix TC_mo_crcx_ran_reject ...................................................................... MSC_Tests: fix TC_mo_crcx_ran_reject The testcase intentionally responds to the RAN sided CRCX with a garbeled message to cause the MGCP handlin inside the MSC to fail. The MSC is then expected not to perform further MGCP operations since it did not get a proper response to the first CRCX, so the specific endpoint name is not known, eventually preventing from doing an MDCX. However, the testcase responds to incoming DLCX commands, instead setting the verdict to fail. Also the altstep that dispatches the message after the errornous MGCP response unconditionally catches all BSSAP messages before entering the sub-altstep as_clear_cmd_compl_disc() that handles the clearing of the connection. Eventually the clear command is never received in this sub-altstep. - Make sure the verdict is set to fail when an MGCP message is received after the errornous response to the CRCX. - Remove the unconditional BSSAP.receive in order to be able to dispatch the clear command properly - Update the expected-results.log file Change-Id: I806491741d310e4410f6cb4ce0309235e9bf4300 Related: OS#2882 --- M msc/MSC_Tests.ttcn M msc/expected-results.log 2 files changed, 82 insertions(+), 90 deletions(-) Approvals: Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/msc/MSC_Tests.ttcn b/msc/MSC_Tests.ttcn index b5108c7..bb28c74 100644 --- a/msc/MSC_Tests.ttcn +++ b/msc/MSC_Tests.ttcn @@ -1267,17 +1267,14 @@ BSSAP.send(ts_PDU_DTAP_MO(ts_ML3_MO_CC_REL_COMPL(cpars.transaction_id))); repeat; } - [] BSSAP.receive { - repeat; - } [] MNCC.receive { repeat; } [] GSUP.receive { repeat; } - [] MGCP.receive(tr_DLCX(?)) -> value mgcp_cmd { - MGCP.send(ts_DLCX_ACK2(mgcp_cmd.line.trans_id)); - f_create_mgcp_delete_ep(cpars.mgcp_ep); - repeat; - } - [] MGCP.receive { repeat; } + /* Note: As we did not respond properly to the CRCX from the MSC we + * expect the MSC to omit any further MGCP operation (At least in the + * the current implementation, there is no recovery mechanism implemented + * and a DLCX can not be performed as the MSC does not know a specific + * endpoint yet. */ + [] MGCP.receive { setverdict(fail, "Unexpected MGCP message"); self.stop; } [] as_clear_cmd_compl_disc(); } } diff --git a/msc/expected-results.log b/msc/expected-results.log index 92c38a0..ebda8a4 100644 --- a/msc/expected-results.log +++ b/msc/expected-results.log @@ -1,115 +1,110 @@ - - - - - + + + + + Timeout waiting for ClearCommand/Release - MSC_Tests.ttcn:1829 MSC_Tests control part + MSC_Tests.ttcn:1832 MSC_Tests control part MSC_Tests.ttcn:502 TC_lu_imsi_reject testcase - + Timeout waiting for ClearCommand/Release - MSC_Tests.ttcn:1830 MSC_Tests control part + MSC_Tests.ttcn:1833 MSC_Tests control part MSC_Tests.ttcn:531 TC_lu_imsi_timeout_gsup testcase - - - - - - + + + + + + Got a second Clear Command, only one expected - MSC_Tests.ttcn:1832 MSC_Tests control part + MSC_Tests.ttcn:1839 MSC_Tests control part MSC_Tests.ttcn:704 TC_lu_clear_request testcase - - - - - - - - Timeout waiting for ClearCommand/Release - MSC_Tests.ttcn:1843 MSC_Tests control part - MSC_Tests.ttcn:903 TC_emerg_call_imei_reject testcase - - - - - Timeout waiting for ClearCommand/Release - MSC_Tests.ttcn:1845 MSC_Tests control part - MSC_Tests.ttcn:940 TC_cm_serv_req_vgcs_reject testcase - - - + + + + + + + Timeout waiting for ClearCommand/Release MSC_Tests.ttcn:1846 MSC_Tests control part - MSC_Tests.ttcn:961 TC_cm_serv_req_vbs_reject testcase + MSC_Tests.ttcn:909 TC_emerg_call_imei_reject testcase - - Timeout waiting for ClearCommand/Release - MSC_Tests.ttcn:1847 MSC_Tests control part - MSC_Tests.ttcn:982 TC_cm_serv_req_lcs_reject testcase - - - + + Timeout waiting for ClearCommand/Release MSC_Tests.ttcn:1848 MSC_Tests control part - MSC_Tests.ttcn:1003 TC_cm_reest_req_reject testcase + MSC_Tests.ttcn:946 TC_cm_serv_req_vgcs_reject testcase - - - - + + Timeout waiting for ClearCommand/Release + MSC_Tests.ttcn:1849 MSC_Tests control part + MSC_Tests.ttcn:967 TC_cm_serv_req_vbs_reject testcase + + + + Timeout waiting for ClearCommand/Release + MSC_Tests.ttcn:1850 MSC_Tests control part + MSC_Tests.ttcn:988 TC_cm_serv_req_lcs_reject testcase + + + + Timeout waiting for ClearCommand/Release + MSC_Tests.ttcn:1851 MSC_Tests control part + MSC_Tests.ttcn:1009 TC_cm_reest_req_reject testcase + + + + + + Timeout waiting for ClearCommand or SCCP Release - MSC_Tests.ttcn:1852 MSC_Tests control part - MSC_Tests.ttcn:1125 TC_cl3_rnd_payload testcase + MSC_Tests.ttcn:1855 MSC_Tests control part + MSC_Tests.ttcn:1131 TC_cl3_rnd_payload testcase - + Timeout waiting for ClearCommand/Release - MSC_Tests.ttcn:1853 MSC_Tests control part - MSC_Tests.ttcn:1142 TC_establish_and_nothing testcase - - - - Timeout waiting for ClearCommand/Release - MSC_Tests.ttcn:1854 MSC_Tests control part - MSC_Tests.ttcn:1166 TC_mo_setup_and_nothing testcase - - - - - Timeout waiting for channel release MSC_Tests.ttcn:1856 MSC_Tests control part - MSC_Tests.ttcn:1283 TC_mo_crcx_ran_reject testcase + MSC_Tests.ttcn:1148 TC_establish_and_nothing testcase - - Timeout waiting for channel release + + Timeout waiting for ClearCommand/Release MSC_Tests.ttcn:1857 MSC_Tests control part - MSC_Tests.ttcn:1380 TC_mt_crcx_ran_reject testcase + MSC_Tests.ttcn:1172 TC_mo_setup_and_nothing testcase - - + + + + Timeout waiting for channel release + MSC_Tests.ttcn:1860 MSC_Tests control part + MSC_Tests.ttcn:1383 TC_mt_crcx_ran_reject testcase + + + + - - - - - - - - - - - + + + + + + + + + + + -- To view, visit https://gerrit.osmocom.org/7767 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: I806491741d310e4410f6cb4ce0309235e9bf4300 Gerrit-PatchSet: 2 Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Owner: dexter Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder From gerrit-no-reply at lists.osmocom.org Wed Apr 11 16:51:17 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Wed, 11 Apr 2018 16:51:17 +0000 Subject: osmo-ci[master]: osmocom-jenkins-slave: install gsm-manual dependencies In-Reply-To: References: Message-ID: Patch Set 1: Verified+1 -- To view, visit https://gerrit.osmocom.org/7726 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I3fa60bd986220e065b1e9eca4308f2b089d505d9 Gerrit-PatchSet: 1 Gerrit-Project: osmo-ci Gerrit-Branch: master Gerrit-Owner: lynxis lazus Gerrit-Reviewer: Harald Welte Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Wed Apr 11 16:51:19 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Wed, 11 Apr 2018 16:51:19 +0000 Subject: osmo-ci[master]: jobs: master-builds.yml: allow osmo-gsm-manuals to build any... In-Reply-To: References: Message-ID: Patch Set 1: Verified+1 -- To view, visit https://gerrit.osmocom.org/7727 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Ic5fe39b643e7a15dbfd2efd55dce78dde30cf099 Gerrit-PatchSet: 1 Gerrit-Project: osmo-ci Gerrit-Branch: master Gerrit-Owner: lynxis lazus Gerrit-Reviewer: Harald Welte Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Wed Apr 11 16:51:24 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Wed, 11 Apr 2018 16:51:24 +0000 Subject: [MERGED] osmo-ci[master]: jobs: master-builds.yml: allow osmo-gsm-manuals to build any... In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: jobs: master-builds.yml: allow osmo-gsm-manuals to build anywhere ...................................................................... jobs: master-builds.yml: allow osmo-gsm-manuals to build anywhere When https://gerrit.osmocom.org/#/c/7725/ has been merged, there is no need to limit this build to OsmocomApi. Change-Id: Ic5fe39b643e7a15dbfd2efd55dce78dde30cf099 --- M jobs/master-builds.yml 1 file changed, 7 insertions(+), 1 deletion(-) Approvals: Harald Welte: Looks good to me, approved; Verified diff --git a/jobs/master-builds.yml b/jobs/master-builds.yml index 79ce8c2..dff78fa 100644 --- a/jobs/master-builds.yml +++ b/jobs/master-builds.yml @@ -17,6 +17,7 @@ sequential: false # most common build invocation cmd: ./contrib/jenkins.sh + wrappers: [] trigger: # in alphabetical order @@ -206,10 +207,14 @@ - osmo-gsm-manuals: # publishing once is plenty - slave_axis: !!python/tuple [OsmocomBuild1] cmd: > # keep first line with less indent to preserve newlines ./contrib/jenkins.sh --publish + # requires to have a ssh-key credentials called "api" (Id) + wrappers: + - ssh-agent-credentials: + users: + - api - osmo-hlr @@ -385,5 +390,6 @@ - email: recipients: gerrit-log at lists.osmocom.org, laforge at gnumonks.org send-to-individuals: true + wrappers: '{obj:wrappers}' # vim: expandtab tabstop=2 shiftwidth=2 -- To view, visit https://gerrit.osmocom.org/7727 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: Ic5fe39b643e7a15dbfd2efd55dce78dde30cf099 Gerrit-PatchSet: 2 Gerrit-Project: osmo-ci Gerrit-Branch: master Gerrit-Owner: lynxis lazus Gerrit-Reviewer: Harald Welte From gerrit-no-reply at lists.osmocom.org Wed Apr 11 16:51:24 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Wed, 11 Apr 2018 16:51:24 +0000 Subject: [MERGED] osmo-ci[master]: osmocom-jenkins-slave: install gsm-manual dependencies In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: osmocom-jenkins-slave: install gsm-manual dependencies ...................................................................... osmocom-jenkins-slave: install gsm-manual dependencies Change-Id: I3fa60bd986220e065b1e9eca4308f2b089d505d9 --- M ansible/roles/osmocom-jenkins-slave/tasks/main.yml 1 file changed, 3 insertions(+), 0 deletions(-) Approvals: Harald Welte: Looks good to me, approved; Verified diff --git a/ansible/roles/osmocom-jenkins-slave/tasks/main.yml b/ansible/roles/osmocom-jenkins-slave/tasks/main.yml index 805a81e..4d7b963 100644 --- a/ansible/roles/osmocom-jenkins-slave/tasks/main.yml +++ b/ansible/roles/osmocom-jenkins-slave/tasks/main.yml @@ -41,6 +41,9 @@ - python3-setuptools - stow - texinfo + # by gsm-manuals + - python-nwdiag + - python-pychart - name: install build dependencies and libraries apt: -- To view, visit https://gerrit.osmocom.org/7726 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: I3fa60bd986220e065b1e9eca4308f2b089d505d9 Gerrit-PatchSet: 2 Gerrit-Project: osmo-ci Gerrit-Branch: master Gerrit-Owner: lynxis lazus Gerrit-Reviewer: Harald Welte From gerrit-no-reply at lists.osmocom.org Wed Apr 11 16:52:06 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Wed, 11 Apr 2018 16:52:06 +0000 Subject: [MERGED] osmo-bsc[master]: only log actual access control class ramping changes In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: only log actual access control class ramping changes ...................................................................... only log actual access control class ramping changes Silence log messages about no-op changes to access granted to access control classes. For example, these always occur while configuration files are being loaded. Change-Id: I37580f4058f6e3a21d338234b1e22ea46f9538c6 Related: OS#2591 --- M src/libbsc/acc_ramp.c 1 file changed, 4 insertions(+), 2 deletions(-) Approvals: Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/src/libbsc/acc_ramp.c b/src/libbsc/acc_ramp.c index 7cace4b..5d35842 100644 --- a/src/libbsc/acc_ramp.c +++ b/src/libbsc/acc_ramp.c @@ -42,14 +42,16 @@ static void allow_one_acc(struct acc_ramp *acc_ramp, unsigned int acc) { OSMO_ASSERT(acc >= 0 && acc <= 9); - LOGP(DRSL, LOGL_DEBUG, "(bts=%d) ACC RAMP: allowing Access Control Class %u\n", acc_ramp->bts->nr, acc); + if (acc_ramp->barred_accs & (1 << acc)) + LOGP(DRSL, LOGL_DEBUG, "(bts=%d) ACC RAMP: allowing Access Control Class %u\n", acc_ramp->bts->nr, acc); acc_ramp->barred_accs &= ~(1 << acc); } static void barr_one_acc(struct acc_ramp *acc_ramp, unsigned int acc) { OSMO_ASSERT(acc >= 0 && acc <= 9); - LOGP(DRSL, LOGL_DEBUG, "(bts=%d) ACC RAMP: barring Access Control Class %u\n", acc_ramp->bts->nr, acc); + if ((acc_ramp->barred_accs & (1 << acc)) == 0) + LOGP(DRSL, LOGL_DEBUG, "(bts=%d) ACC RAMP: barring Access Control Class %u\n", acc_ramp->bts->nr, acc); acc_ramp->barred_accs |= (1 << acc); } -- To view, visit https://gerrit.osmocom.org/7722 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: I37580f4058f6e3a21d338234b1e22ea46f9538c6 Gerrit-PatchSet: 1 Gerrit-Project: osmo-bsc Gerrit-Branch: master Gerrit-Owner: Stefan Sperling Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Pau Espin Pedrol From gerrit-no-reply at lists.osmocom.org Wed Apr 11 16:52:43 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Wed, 11 Apr 2018 16:52:43 +0000 Subject: [MERGED] openbsc[master]: bsc_nat: ctrl: Fix crash on receveing bsc reply In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: bsc_nat: ctrl: Fix crash on receveing bsc reply ...................................................................... bsc_nat: ctrl: Fix crash on receveing bsc reply Since libosmocore 7c0031fc8063771e604976233fb7b46d2b85c077, the cmd param passed to handlers in ctrl_handle_msg is always freed afterwards, thus it is owned by the same function. Avoid keeping it alive and accessing it later when it has already been freed. Related: OS#3157 Change-Id: Ib1e1fb79746d4a4f3e30254fdb7a7e851c2cd0e4 --- M openbsc/src/osmo-bsc_nat/bsc_nat_ctrl.c 1 file changed, 8 insertions(+), 2 deletions(-) Approvals: Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/openbsc/src/osmo-bsc_nat/bsc_nat_ctrl.c b/openbsc/src/osmo-bsc_nat/bsc_nat_ctrl.c index 22c3608..61ac887 100644 --- a/openbsc/src/osmo-bsc_nat/bsc_nat_ctrl.c +++ b/openbsc/src/osmo-bsc_nat/bsc_nat_ctrl.c @@ -79,7 +79,6 @@ { llist_del(&pending->list_entry); osmo_timer_del(&pending->timeout); - talloc_free(pending->cmd); talloc_free(pending); } @@ -275,8 +274,15 @@ cmd->reply = "Sending failed"; goto err; } + + /* caller owns cmd param and will destroy it after we return */ + pending->cmd = ctrl_cmd_cpy(pending, cmd); + if (!pending->cmd) { + cmd->reply = "Could not answer command"; + goto err; + } cmd->ccon->closed_cb = ctrl_conn_closed_cb; - pending->cmd = cmd; + pending->cmd->ccon = cmd->ccon; /* Setup the timeout */ osmo_timer_setup(&pending->timeout, pending_timeout_cb, -- To view, visit https://gerrit.osmocom.org/7764 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: Ib1e1fb79746d4a4f3e30254fdb7a7e851c2cd0e4 Gerrit-PatchSet: 1 Gerrit-Project: openbsc Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Neels Hofmeyr Gerrit-Reviewer: daniel From gerrit-no-reply at lists.osmocom.org Wed Apr 11 16:52:44 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Wed, 11 Apr 2018 16:52:44 +0000 Subject: [MERGED] openbsc[master]: bsc_nat: Drop redundant ccon ptr in bsc_cmd_list In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: bsc_nat: Drop redundant ccon ptr in bsc_cmd_list ...................................................................... bsc_nat: Drop redundant ccon ptr in bsc_cmd_list Change-Id: Ic2e4ca7d8eb4e8f71dc773b3f2c0f09709d90a94 --- M openbsc/include/openbsc/bsc_nat.h M openbsc/src/osmo-bsc_nat/bsc_nat.c M openbsc/src/osmo-bsc_nat/bsc_nat_ctrl.c 3 files changed, 5 insertions(+), 9 deletions(-) Approvals: Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/openbsc/include/openbsc/bsc_nat.h b/openbsc/include/openbsc/bsc_nat.h index 94ab0e5..fad3804 100644 --- a/openbsc/include/openbsc/bsc_nat.h +++ b/openbsc/include/openbsc/bsc_nat.h @@ -70,9 +70,6 @@ /* The NATed ID used on the bsc_con*/ int nat_id; - /* The control connection from which the command originated */ - struct ctrl_connection *ccon; - /* The command from the control connection */ struct ctrl_cmd *cmd; }; diff --git a/openbsc/src/osmo-bsc_nat/bsc_nat.c b/openbsc/src/osmo-bsc_nat/bsc_nat.c index f83abe1..57b51a2 100644 --- a/openbsc/src/osmo-bsc_nat/bsc_nat.c +++ b/openbsc/src/osmo-bsc_nat/bsc_nat.c @@ -936,7 +936,7 @@ llist_for_each_entry_safe(cmd_entry, cmd_tmp, &connection->cmd_pending, list_entry) { cmd_entry->cmd->type = CTRL_TYPE_ERROR; cmd_entry->cmd->reply = "BSC closed the connection"; - ctrl_cmd_send(&cmd_entry->ccon->write_queue, cmd_entry->cmd); + ctrl_cmd_send(&cmd_entry->cmd->ccon->write_queue, cmd_entry->cmd); bsc_nat_ctrl_del_pending(cmd_entry); } diff --git a/openbsc/src/osmo-bsc_nat/bsc_nat_ctrl.c b/openbsc/src/osmo-bsc_nat/bsc_nat_ctrl.c index d6bf1e5..22c3608 100644 --- a/openbsc/src/osmo-bsc_nat/bsc_nat_ctrl.c +++ b/openbsc/src/osmo-bsc_nat/bsc_nat_ctrl.c @@ -148,7 +148,7 @@ cmd->reply = "OOM"; goto err; } - ctrl_cmd_send(&pending->ccon->write_queue, cmd); + ctrl_cmd_send(&pending->cmd->ccon->write_queue, cmd); bsc_nat_ctrl_del_pending(pending); } else { /* We need to handle TRAPS here */ @@ -176,7 +176,7 @@ LOGP(DNAT, LOGL_ERROR, "Command timed out\n"); pending->cmd->type = CTRL_TYPE_ERROR; pending->cmd->reply = "Command timed out"; - ctrl_cmd_send(&pending->ccon->write_queue, pending->cmd); + ctrl_cmd_send(&pending->cmd->ccon->write_queue, pending->cmd); bsc_nat_ctrl_del_pending(pending); } @@ -188,7 +188,7 @@ llist_for_each_entry(bsc, &g_nat->bsc_connections, list_entry) { llist_for_each_entry_safe(pending, tmp, &bsc->cmd_pending, list_entry) { - if (pending->ccon == connection) + if (pending->cmd->ccon == connection) bsc_nat_ctrl_del_pending(pending); } } @@ -275,8 +275,7 @@ cmd->reply = "Sending failed"; goto err; } - pending->ccon = cmd->ccon; - pending->ccon->closed_cb = ctrl_conn_closed_cb; + cmd->ccon->closed_cb = ctrl_conn_closed_cb; pending->cmd = cmd; /* Setup the timeout */ -- To view, visit https://gerrit.osmocom.org/7761 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: Ic2e4ca7d8eb4e8f71dc773b3f2c0f09709d90a94 Gerrit-PatchSet: 1 Gerrit-Project: openbsc Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder From gerrit-no-reply at lists.osmocom.org Wed Apr 11 16:52:45 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Wed, 11 Apr 2018 16:52:45 +0000 Subject: [MERGED] openbsc[master]: bsc_nat: forward_to_bsc: Fix memleak on send failure In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: bsc_nat: forward_to_bsc: Fix memleak on send failure ...................................................................... bsc_nat: forward_to_bsc: Fix memleak on send failure Change-Id: If0dfae40f03db297eeb4e296daf5fe78ba53a11b --- M openbsc/src/osmo-bsc_nat/bsc_nat_ctrl.c 1 file changed, 2 insertions(+), 1 deletion(-) Approvals: Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/openbsc/src/osmo-bsc_nat/bsc_nat_ctrl.c b/openbsc/src/osmo-bsc_nat/bsc_nat_ctrl.c index 797ddf8..d6bf1e5 100644 --- a/openbsc/src/osmo-bsc_nat/bsc_nat_ctrl.c +++ b/openbsc/src/osmo-bsc_nat/bsc_nat_ctrl.c @@ -219,7 +219,7 @@ int ret = CTRL_CMD_HANDLED; struct ctrl_cmd *bsc_cmd = NULL; struct bsc_connection *bsc; - struct bsc_cmd_list *pending; + struct bsc_cmd_list *pending = NULL; unsigned int nr; char *bsc_variable; @@ -292,6 +292,7 @@ cmd->reply = "no BSC with this nr"; err: ret = CTRL_CMD_ERROR; + talloc_free(pending); done: talloc_free(bsc_cmd); return ret; -- To view, visit https://gerrit.osmocom.org/7759 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: If0dfae40f03db297eeb4e296daf5fe78ba53a11b Gerrit-PatchSet: 1 Gerrit-Project: openbsc Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder From gerrit-no-reply at lists.osmocom.org Wed Apr 11 16:52:46 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Wed, 11 Apr 2018 16:52:46 +0000 Subject: [MERGED] openbsc[master]: bsc_nat: forward_to_bsc: remove one level of indentation In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: bsc_nat: forward_to_bsc: remove one level of indentation ...................................................................... bsc_nat: forward_to_bsc: remove one level of indentation Change-Id: I105be500399259a97ef711f17b4a51e72dc8cc53 --- M openbsc/src/osmo-bsc_nat/bsc_nat_ctrl.c 1 file changed, 50 insertions(+), 49 deletions(-) Approvals: Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/openbsc/src/osmo-bsc_nat/bsc_nat_ctrl.c b/openbsc/src/osmo-bsc_nat/bsc_nat_ctrl.c index 738ac87..797ddf8 100644 --- a/openbsc/src/osmo-bsc_nat/bsc_nat_ctrl.c +++ b/openbsc/src/osmo-bsc_nat/bsc_nat_ctrl.c @@ -235,57 +235,58 @@ continue; if (!bsc->authenticated) continue; - if (bsc->cfg->nr == nr) { - /* Add pending command to list */ - pending = talloc_zero(bsc, struct bsc_cmd_list); - if (!pending) { - cmd->reply = "OOM"; - goto err; - } + if (bsc->cfg->nr != nr) + continue; - pending->nat_id = get_next_free_bsc_id(bsc); - if (pending->nat_id < 0) { - cmd->reply = "No free ID found"; - goto err; - } - - bsc_cmd = ctrl_cmd_cpy(bsc, cmd); - if (!bsc_cmd) { - cmd->reply = "Could not forward command"; - goto err; - } - - talloc_free(bsc_cmd->id); - bsc_cmd->id = talloc_asprintf(bsc_cmd, "%i", pending->nat_id); - if (!bsc_cmd->id) { - cmd->reply = "OOM"; - goto err; - } - - talloc_free(bsc_cmd->variable); - bsc_cmd->variable = talloc_strdup(bsc_cmd, bsc_variable); - if (!bsc_cmd->variable) { - cmd->reply = "OOM"; - goto err; - } - - if (ctrl_cmd_send(&bsc->write_queue, bsc_cmd)) { - cmd->reply = "Sending failed"; - goto err; - } - pending->ccon = cmd->ccon; - pending->ccon->closed_cb = ctrl_conn_closed_cb; - pending->cmd = cmd; - - /* Setup the timeout */ - osmo_timer_setup(&pending->timeout, pending_timeout_cb, - pending); - /* TODO: Make timeout configurable */ - osmo_timer_schedule(&pending->timeout, 10, 0); - llist_add_tail(&pending->list_entry, &bsc->cmd_pending); - - goto done; + /* Add pending command to list */ + pending = talloc_zero(bsc, struct bsc_cmd_list); + if (!pending) { + cmd->reply = "OOM"; + goto err; } + + pending->nat_id = get_next_free_bsc_id(bsc); + if (pending->nat_id < 0) { + cmd->reply = "No free ID found"; + goto err; + } + + bsc_cmd = ctrl_cmd_cpy(bsc, cmd); + if (!bsc_cmd) { + cmd->reply = "Could not forward command"; + goto err; + } + + talloc_free(bsc_cmd->id); + bsc_cmd->id = talloc_asprintf(bsc_cmd, "%i", pending->nat_id); + if (!bsc_cmd->id) { + cmd->reply = "OOM"; + goto err; + } + + talloc_free(bsc_cmd->variable); + bsc_cmd->variable = talloc_strdup(bsc_cmd, bsc_variable); + if (!bsc_cmd->variable) { + cmd->reply = "OOM"; + goto err; + } + + if (ctrl_cmd_send(&bsc->write_queue, bsc_cmd)) { + cmd->reply = "Sending failed"; + goto err; + } + pending->ccon = cmd->ccon; + pending->ccon->closed_cb = ctrl_conn_closed_cb; + pending->cmd = cmd; + + /* Setup the timeout */ + osmo_timer_setup(&pending->timeout, pending_timeout_cb, + pending); + /* TODO: Make timeout configurable */ + osmo_timer_schedule(&pending->timeout, 10, 0); + llist_add_tail(&pending->list_entry, &bsc->cmd_pending); + + goto done; } /* We end up here if there's no bsc to handle our LAC */ cmd->reply = "no BSC with this nr"; -- To view, visit https://gerrit.osmocom.org/7757 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: I105be500399259a97ef711f17b4a51e72dc8cc53 Gerrit-PatchSet: 1 Gerrit-Project: openbsc Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder From gerrit-no-reply at lists.osmocom.org Wed Apr 11 16:52:46 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Wed, 11 Apr 2018 16:52:46 +0000 Subject: [MERGED] openbsc[master]: bsc_nat: ctrl: fix memleak on reply receival In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: bsc_nat: ctrl: fix memleak on reply receival ...................................................................... bsc_nat: ctrl: fix memleak on reply receival Change-Id: I146c4a561b0cd62779d60da3b55b96e24438bd89 --- M openbsc/src/osmo-bsc_nat/bsc_nat_ctrl.c 1 file changed, 3 insertions(+), 4 deletions(-) Approvals: Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/openbsc/src/osmo-bsc_nat/bsc_nat_ctrl.c b/openbsc/src/osmo-bsc_nat/bsc_nat_ctrl.c index 128ea65..738ac87 100644 --- a/openbsc/src/osmo-bsc_nat/bsc_nat_ctrl.c +++ b/openbsc/src/osmo-bsc_nat/bsc_nat_ctrl.c @@ -102,7 +102,7 @@ { struct ctrl_cmd *cmd; struct bsc_cmd_list *pending; - char *var, *id; + char *var; cmd = ctrl_cmd_parse(bsc, msg); msgb_free(msg); @@ -142,13 +142,12 @@ /* Find the pending command */ pending = bsc_get_pending(bsc, cmd->id); if (pending) { - id = talloc_strdup(cmd, pending->cmd->id); - if (!id) { + osmo_talloc_replace_string(cmd, &cmd->id, pending->cmd->id); + if (!cmd->id) { cmd->type = CTRL_TYPE_ERROR; cmd->reply = "OOM"; goto err; } - cmd->id = id; ctrl_cmd_send(&pending->ccon->write_queue, cmd); bsc_nat_ctrl_del_pending(pending); } else { -- To view, visit https://gerrit.osmocom.org/7749 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: I146c4a561b0cd62779d60da3b55b96e24438bd89 Gerrit-PatchSet: 1 Gerrit-Project: openbsc Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder From gerrit-no-reply at lists.osmocom.org Wed Apr 11 16:52:47 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Wed, 11 Apr 2018 16:52:47 +0000 Subject: [MERGED] openbsc[master]: libbsc: set_net_mcc_mnc_apply: Fix memleak on parsing incorr... In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: libbsc: set_net_mcc_mnc_apply: Fix memleak on parsing incorrect mcc mnc ...................................................................... libbsc: set_net_mcc_mnc_apply: Fix memleak on parsing incorrect mcc mnc Change-Id: I507b0eced7d86f8e978012f6c19f728cd481196b --- M openbsc/src/libbsc/bsc_ctrl_commands.c 1 file changed, 2 insertions(+), 0 deletions(-) Approvals: Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/openbsc/src/libbsc/bsc_ctrl_commands.c b/openbsc/src/libbsc/bsc_ctrl_commands.c index 8b8685a..e6c49d1 100644 --- a/openbsc/src/libbsc/bsc_ctrl_commands.c +++ b/openbsc/src/libbsc/bsc_ctrl_commands.c @@ -187,11 +187,13 @@ if (osmo_mcc_from_str(mcc_str, &plmn.mcc)) { cmd->reply = "Error while decoding MCC"; + talloc_free(tmp); return CTRL_CMD_ERROR; } if (osmo_mnc_from_str(mnc_str, &plmn.mnc, &plmn.mnc_3_digits)) { cmd->reply = "Error while decoding MNC"; + talloc_free(tmp); return CTRL_CMD_ERROR; } -- To view, visit https://gerrit.osmocom.org/7746 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: I507b0eced7d86f8e978012f6c19f728cd481196b Gerrit-PatchSet: 1 Gerrit-Project: openbsc Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder From gerrit-no-reply at lists.osmocom.org Wed Apr 11 16:52:49 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Wed, 11 Apr 2018 16:52:49 +0000 Subject: [MERGED] osmo-bsc[master]: bsc_nat: Drop redundant ccon ptr in bsc_cmd_list In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: bsc_nat: Drop redundant ccon ptr in bsc_cmd_list ...................................................................... bsc_nat: Drop redundant ccon ptr in bsc_cmd_list It can be obtained from cmd field, so no need to store it in pending. This way we simplify the ad-hoc struct bsc_cmd_list. Change-Id: I6de64fc128ad623ca30b9e6cebebaff8de18f95d --- M include/osmocom/bsc/bsc_nat.h M src/osmo-bsc_nat/bsc_nat.c M src/osmo-bsc_nat/bsc_nat_ctrl.c 3 files changed, 5 insertions(+), 9 deletions(-) Approvals: Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/include/osmocom/bsc/bsc_nat.h b/include/osmocom/bsc/bsc_nat.h index 452daf2..6146c00 100644 --- a/include/osmocom/bsc/bsc_nat.h +++ b/include/osmocom/bsc/bsc_nat.h @@ -70,9 +70,6 @@ /* The NATed ID used on the bsc_con*/ int nat_id; - /* The control connection from which the command originated */ - struct ctrl_connection *ccon; - /* The command from the control connection */ struct ctrl_cmd *cmd; }; diff --git a/src/osmo-bsc_nat/bsc_nat.c b/src/osmo-bsc_nat/bsc_nat.c index a5dbf97..af97c57 100644 --- a/src/osmo-bsc_nat/bsc_nat.c +++ b/src/osmo-bsc_nat/bsc_nat.c @@ -935,7 +935,7 @@ llist_for_each_entry_safe(cmd_entry, cmd_tmp, &connection->cmd_pending, list_entry) { cmd_entry->cmd->type = CTRL_TYPE_ERROR; cmd_entry->cmd->reply = "BSC closed the connection"; - ctrl_cmd_send(&cmd_entry->ccon->write_queue, cmd_entry->cmd); + ctrl_cmd_send(&cmd_entry->cmd->ccon->write_queue, cmd_entry->cmd); bsc_nat_ctrl_del_pending(cmd_entry); } diff --git a/src/osmo-bsc_nat/bsc_nat_ctrl.c b/src/osmo-bsc_nat/bsc_nat_ctrl.c index 5d551ac..7df3ca3 100644 --- a/src/osmo-bsc_nat/bsc_nat_ctrl.c +++ b/src/osmo-bsc_nat/bsc_nat_ctrl.c @@ -149,7 +149,7 @@ cmd->reply = "OOM"; goto err; } - ctrl_cmd_send(&pending->ccon->write_queue, cmd); + ctrl_cmd_send(&pending->cmd->ccon->write_queue, cmd); bsc_nat_ctrl_del_pending(pending); } else { /* We need to handle TRAPS here */ @@ -177,7 +177,7 @@ LOGP(DNAT, LOGL_ERROR, "Command timed out\n"); pending->cmd->type = CTRL_TYPE_ERROR; pending->cmd->reply = "Command timed out"; - ctrl_cmd_send(&pending->ccon->write_queue, pending->cmd); + ctrl_cmd_send(&pending->cmd->ccon->write_queue, pending->cmd); bsc_nat_ctrl_del_pending(pending); } @@ -189,7 +189,7 @@ llist_for_each_entry(bsc, &g_nat->bsc_connections, list_entry) { llist_for_each_entry_safe(pending, tmp, &bsc->cmd_pending, list_entry) { - if (pending->ccon == connection) + if (pending->cmd->ccon == connection) bsc_nat_ctrl_del_pending(pending); } } @@ -276,8 +276,7 @@ cmd->reply = "Sending failed"; goto err; } - pending->ccon = cmd->ccon; - pending->ccon->closed_cb = ctrl_conn_closed_cb; + cmd->ccon->closed_cb = ctrl_conn_closed_cb; pending->cmd = cmd; /* Setup the timeout */ -- To view, visit https://gerrit.osmocom.org/7760 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: I6de64fc128ad623ca30b9e6cebebaff8de18f95d Gerrit-PatchSet: 3 Gerrit-Project: osmo-bsc Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder From gerrit-no-reply at lists.osmocom.org Wed Apr 11 16:52:50 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Wed, 11 Apr 2018 16:52:50 +0000 Subject: [MERGED] osmo-bsc[master]: bsc_nat: forward_to_bsc: Fix memleak on send failure In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: bsc_nat: forward_to_bsc: Fix memleak on send failure ...................................................................... bsc_nat: forward_to_bsc: Fix memleak on send failure Change-Id: I56235eb05e4beed1bf9151319b64d67de4718e36 --- M src/osmo-bsc_nat/bsc_nat_ctrl.c 1 file changed, 2 insertions(+), 1 deletion(-) Approvals: Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/src/osmo-bsc_nat/bsc_nat_ctrl.c b/src/osmo-bsc_nat/bsc_nat_ctrl.c index 5f82a41..5d551ac 100644 --- a/src/osmo-bsc_nat/bsc_nat_ctrl.c +++ b/src/osmo-bsc_nat/bsc_nat_ctrl.c @@ -220,7 +220,7 @@ int ret = CTRL_CMD_HANDLED; struct ctrl_cmd *bsc_cmd = NULL; struct bsc_connection *bsc; - struct bsc_cmd_list *pending; + struct bsc_cmd_list *pending = NULL; unsigned int nr; char *bsc_variable; @@ -293,6 +293,7 @@ cmd->reply = "no BSC with this nr"; err: ret = CTRL_CMD_ERROR; + talloc_free(pending); done: talloc_free(bsc_cmd); return ret; -- To view, visit https://gerrit.osmocom.org/7758 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: I56235eb05e4beed1bf9151319b64d67de4718e36 Gerrit-PatchSet: 3 Gerrit-Project: osmo-bsc Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder From gerrit-no-reply at lists.osmocom.org Wed Apr 11 16:52:50 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Wed, 11 Apr 2018 16:52:50 +0000 Subject: [MERGED] osmo-bsc[master]: bsc_nat: forward_to_bsc: remove one level of indentation In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: bsc_nat: forward_to_bsc: remove one level of indentation ...................................................................... bsc_nat: forward_to_bsc: remove one level of indentation Change-Id: I12d86a45a6b2cdc3af7a7b6c28f8f337fa95c903 --- M src/osmo-bsc_nat/bsc_nat_ctrl.c 1 file changed, 50 insertions(+), 49 deletions(-) Approvals: Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/src/osmo-bsc_nat/bsc_nat_ctrl.c b/src/osmo-bsc_nat/bsc_nat_ctrl.c index 9450741..5f82a41 100644 --- a/src/osmo-bsc_nat/bsc_nat_ctrl.c +++ b/src/osmo-bsc_nat/bsc_nat_ctrl.c @@ -236,57 +236,58 @@ continue; if (!bsc->authenticated) continue; - if (bsc->cfg->nr == nr) { - /* Add pending command to list */ - pending = talloc_zero(bsc, struct bsc_cmd_list); - if (!pending) { - cmd->reply = "OOM"; - goto err; - } + if (bsc->cfg->nr != nr) + continue; - pending->nat_id = get_next_free_bsc_id(bsc); - if (pending->nat_id < 0) { - cmd->reply = "No free ID found"; - goto err; - } - - bsc_cmd = ctrl_cmd_cpy(bsc, cmd); - if (!bsc_cmd) { - cmd->reply = "Could not forward command"; - goto err; - } - - talloc_free(bsc_cmd->id); - bsc_cmd->id = talloc_asprintf(bsc_cmd, "%i", pending->nat_id); - if (!bsc_cmd->id) { - cmd->reply = "OOM"; - goto err; - } - - talloc_free(bsc_cmd->variable); - bsc_cmd->variable = talloc_strdup(bsc_cmd, bsc_variable); - if (!bsc_cmd->variable) { - cmd->reply = "OOM"; - goto err; - } - - if (ctrl_cmd_send(&bsc->write_queue, bsc_cmd)) { - cmd->reply = "Sending failed"; - goto err; - } - pending->ccon = cmd->ccon; - pending->ccon->closed_cb = ctrl_conn_closed_cb; - pending->cmd = cmd; - - /* Setup the timeout */ - osmo_timer_setup(&pending->timeout, pending_timeout_cb, - pending); - /* TODO: Make timeout configurable */ - osmo_timer_schedule(&pending->timeout, 10, 0); - llist_add_tail(&pending->list_entry, &bsc->cmd_pending); - - goto done; + /* Add pending command to list */ + pending = talloc_zero(bsc, struct bsc_cmd_list); + if (!pending) { + cmd->reply = "OOM"; + goto err; } + + pending->nat_id = get_next_free_bsc_id(bsc); + if (pending->nat_id < 0) { + cmd->reply = "No free ID found"; + goto err; + } + + bsc_cmd = ctrl_cmd_cpy(bsc, cmd); + if (!bsc_cmd) { + cmd->reply = "Could not forward command"; + goto err; + } + + talloc_free(bsc_cmd->id); + bsc_cmd->id = talloc_asprintf(bsc_cmd, "%i", pending->nat_id); + if (!bsc_cmd->id) { + cmd->reply = "OOM"; + goto err; + } + + talloc_free(bsc_cmd->variable); + bsc_cmd->variable = talloc_strdup(bsc_cmd, bsc_variable); + if (!bsc_cmd->variable) { + cmd->reply = "OOM"; + goto err; + } + + if (ctrl_cmd_send(&bsc->write_queue, bsc_cmd)) { + cmd->reply = "Sending failed"; + goto err; + } + pending->ccon = cmd->ccon; + pending->ccon->closed_cb = ctrl_conn_closed_cb; + pending->cmd = cmd; + + /* Setup the timeout */ + osmo_timer_setup(&pending->timeout, pending_timeout_cb, + pending); + /* TODO: Make timeout configurable */ + osmo_timer_schedule(&pending->timeout, 10, 0); + llist_add_tail(&pending->list_entry, &bsc->cmd_pending); + + goto done; } /* We end up here if there's no bsc to handle our LAC */ cmd->reply = "no BSC with this nr"; -- To view, visit https://gerrit.osmocom.org/7756 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: I12d86a45a6b2cdc3af7a7b6c28f8f337fa95c903 Gerrit-PatchSet: 2 Gerrit-Project: osmo-bsc Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder From gerrit-no-reply at lists.osmocom.org Wed Apr 11 16:52:50 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Wed, 11 Apr 2018 16:52:50 +0000 Subject: [MERGED] osmo-bsc[master]: bsc_nat: ctrl: fix memleak on reply receival In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: bsc_nat: ctrl: fix memleak on reply receival ...................................................................... bsc_nat: ctrl: fix memleak on reply receival Change-Id: I163d4d12d8656628dc88ff3e59a4c3e53b760a0c --- M src/osmo-bsc_nat/bsc_nat_ctrl.c 1 file changed, 3 insertions(+), 4 deletions(-) Approvals: Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/src/osmo-bsc_nat/bsc_nat_ctrl.c b/src/osmo-bsc_nat/bsc_nat_ctrl.c index 93cdff3..9450741 100644 --- a/src/osmo-bsc_nat/bsc_nat_ctrl.c +++ b/src/osmo-bsc_nat/bsc_nat_ctrl.c @@ -103,7 +103,7 @@ { struct ctrl_cmd *cmd; struct bsc_cmd_list *pending; - char *var, *id; + char *var; cmd = ctrl_cmd_parse(bsc, msg); msgb_free(msg); @@ -143,13 +143,12 @@ /* Find the pending command */ pending = bsc_get_pending(bsc, cmd->id); if (pending) { - id = talloc_strdup(cmd, pending->cmd->id); - if (!id) { + osmo_talloc_replace_string(cmd, &cmd->id, pending->cmd->id); + if (!cmd->id) { cmd->type = CTRL_TYPE_ERROR; cmd->reply = "OOM"; goto err; } - cmd->id = id; ctrl_cmd_send(&pending->ccon->write_queue, cmd); bsc_nat_ctrl_del_pending(pending); } else { -- To view, visit https://gerrit.osmocom.org/7748 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: I163d4d12d8656628dc88ff3e59a4c3e53b760a0c Gerrit-PatchSet: 2 Gerrit-Project: osmo-bsc Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder From gerrit-no-reply at lists.osmocom.org Wed Apr 11 16:52:50 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Wed, 11 Apr 2018 16:52:50 +0000 Subject: [MERGED] osmo-bsc[master]: libbsc: set_net_mcc_mnc_apply: Fix memleak on parsing incorr... In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: libbsc: set_net_mcc_mnc_apply: Fix memleak on parsing incorrect mcc mnc ...................................................................... libbsc: set_net_mcc_mnc_apply: Fix memleak on parsing incorrect mcc mnc Change-Id: I43513e108dfba24efb091d56b3fdfdb0cd0af727 --- M src/libbsc/bsc_ctrl_commands.c 1 file changed, 2 insertions(+), 0 deletions(-) Approvals: Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/src/libbsc/bsc_ctrl_commands.c b/src/libbsc/bsc_ctrl_commands.c index 64f4589..171feaf 100644 --- a/src/libbsc/bsc_ctrl_commands.c +++ b/src/libbsc/bsc_ctrl_commands.c @@ -149,11 +149,13 @@ if (osmo_mcc_from_str(mcc_str, &plmn.mcc)) { cmd->reply = "Error while decoding MCC"; + talloc_free(tmp); return CTRL_CMD_ERROR; } if (osmo_mnc_from_str(mnc_str, &plmn.mnc, &plmn.mnc_3_digits)) { cmd->reply = "Error while decoding MNC"; + talloc_free(tmp); return CTRL_CMD_ERROR; } -- To view, visit https://gerrit.osmocom.org/7747 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: I43513e108dfba24efb091d56b3fdfdb0cd0af727 Gerrit-PatchSet: 2 Gerrit-Project: osmo-bsc Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder From gerrit-no-reply at lists.osmocom.org Wed Apr 11 16:53:05 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Wed, 11 Apr 2018 16:53:05 +0000 Subject: [MERGED] osmo-bsc[master]: ensure that acc_ramp_init() is only called once In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: ensure that acc_ramp_init() is only called once ...................................................................... ensure that acc_ramp_init() is only called once There are plans to register signal handlers in acc_ramp_init(). Once we do that, the acc_ramp_init() function should only be called once to avoid duplicate signal handlers on the handler list. However, the acc_ramp_init() function currently serves a dual-purpose: 1) Initialize the acc_ramp structure for a bts 2) Enable or disable ACC ramping Add new functions to support use case 2, and call acc_ramp_init() just once while reading the configuration file. The VTY commands which enable/disable ACC ramping use the new APIs instead. Also, rename acc_ramp_start() to acc_ramp_trigger() and tweak its semantics so that it can always be called regardless of what the current configuration settings are. This prepares us for triggering ACC ramping upon events other than "RSL link-up". Change-Id: Ia25bff85d9e5c277da76bffa11d31972e9fdc323 Related: OS2591 --- M include/osmocom/bsc/acc_ramp.h M src/libbsc/acc_ramp.c M src/libbsc/bsc_init.c M src/libbsc/bsc_vty.c 4 files changed, 43 insertions(+), 29 deletions(-) Approvals: Pau Espin Pedrol: Looks good to me, but someone else must approve Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/include/osmocom/bsc/acc_ramp.h b/include/osmocom/bsc/acc_ramp.h index cb063bf..efb12b0 100644 --- a/include/osmocom/bsc/acc_ramp.h +++ b/include/osmocom/bsc/acc_ramp.h @@ -79,6 +79,18 @@ }; /*! + * Enable or disable ACC ramping. + * When enabled, ramping begins once acc_ramp_start() is called. + * When disabled, an ACC ramping process in progress will continue + * unless acc_ramp_abort() is called as well. + * \param[in] acc_ramp Pointer to acc_ramp structure. + */ +static inline void acc_ramp_set_enabled(struct acc_ramp *acc_ramp, bool enable) +{ + acc_ramp->acc_ramping_enabled = enable; +} + +/*! * Return true if ACC ramping is currently enabled, else false. * \param[in] acc_ramp Pointer to acc_ramp structure. */ @@ -141,9 +153,9 @@ rach_control->t3 |= acc_ramp_get_barred_t3(acc_ramp); } -void acc_ramp_init(struct acc_ramp *acc_ramp, bool enable, struct gsm_bts *bts); +void acc_ramp_init(struct acc_ramp *acc_ramp, struct gsm_bts *bts); int acc_ramp_set_step_size(struct acc_ramp *acc_ramp, unsigned int step_size); int acc_ramp_set_step_interval(struct acc_ramp *acc_ramp, unsigned int step_interval); void acc_ramp_set_step_interval_dynamic(struct acc_ramp *acc_ramp); -void acc_ramp_start(struct acc_ramp *acc_ramp); +void acc_ramp_trigger(struct acc_ramp *acc_ramp); void acc_ramp_abort(struct acc_ramp *acc_ramp); diff --git a/src/libbsc/acc_ramp.c b/src/libbsc/acc_ramp.c index 5d35842..31122df 100644 --- a/src/libbsc/acc_ramp.c +++ b/src/libbsc/acc_ramp.c @@ -140,28 +140,20 @@ * Initialize an acc_ramp data structure. * Storage for this structure must be provided by the caller. * - * If ACC ramping is enabled, all ACCs are denied by default. - * A subsequent call to acc_ramp_start() will begin the ramping process. - * If ACC ramping is disabled, all ACCs will be allowed by default, - * and there is no need to do anything else. + * By default, ACC ramping is disabled and all ACCs are allowed. * * \param[in] acc_ramp Pointer to acc_ramp structure to be initialized. - * \param[in] enable Indicates whether ACC ramping should be enabled or disabled. * \param[in] bts BTS which uses this ACC ramp data structure. */ -void acc_ramp_init(struct acc_ramp *acc_ramp, bool enable, struct gsm_bts *bts) +void acc_ramp_init(struct acc_ramp *acc_ramp, struct gsm_bts *bts) { acc_ramp->bts = bts; - acc_ramp->acc_ramping_enabled = enable; + acc_ramp_set_enabled(acc_ramp, false); acc_ramp->step_size = ACC_RAMP_STEP_SIZE_DEFAULT; acc_ramp->step_interval_sec = ACC_RAMP_STEP_INTERVAL_MIN; acc_ramp->step_interval_is_fixed = false; + allow_all_enabled_accs(acc_ramp); osmo_timer_setup(&acc_ramp->step_timer, do_acc_ramping_step, acc_ramp); - - if (acc_ramp->acc_ramping_enabled) - barr_all_enabled_accs(acc_ramp); - else - allow_all_enabled_accs(acc_ramp); } /*! @@ -211,27 +203,33 @@ } /*! - * Begin the ramping process. Perform at least one ramping step to allow 'step_size' ACCs. - * If 'step_size' is ACC_RAMP_STEP_SIZE_MAX, all ACCs will be allowed immediately. + * Determine if ACC ramping should be started according to configuration, and + * if ACC ramping is enabled, begin the ramping process. + * Perform at least one ramping step to allow 'step_size' ACCs. + * If 'step_size' is ACC_RAMP_STEP_SIZE_MAX, or if ACC ramping is disabled, + * all ACCs will be allowed immediately. * \param[in] acc_ramp Pointer to acc_ramp structure. */ -void acc_ramp_start(struct acc_ramp *acc_ramp) +void acc_ramp_trigger(struct acc_ramp *acc_ramp) { - /* Abort any previously running ramping process. */ + /* Abort any previously running ramping process and allow all available ACCs. */ acc_ramp_abort(acc_ramp); - /* Set all availble ACCs to barred and start ramping up. */ - barr_all_enabled_accs(acc_ramp); - do_acc_ramping_step(acc_ramp); + if (acc_ramp_is_enabled(acc_ramp)) { + /* Set all available ACCs to barred and start ramping up. */ + barr_all_enabled_accs(acc_ramp); + do_acc_ramping_step(acc_ramp); + } } /*! - * Abort the ramping process. If ramping is disabled or has already finished, - * then this function has no effect. + * Abort the ramping process and allow all available ACCs immediately. * \param[in] acc_ramp Pointer to acc_ramp structure. */ void acc_ramp_abort(struct acc_ramp *acc_ramp) { if (osmo_timer_pending(&acc_ramp->step_timer)) osmo_timer_del(&acc_ramp->step_timer); + + allow_all_enabled_accs(acc_ramp); } diff --git a/src/libbsc/bsc_init.c b/src/libbsc/bsc_init.c index d1173e0..c357105 100644 --- a/src/libbsc/bsc_init.c +++ b/src/libbsc/bsc_init.c @@ -336,9 +336,12 @@ rsl_nokia_si_begin(trx); } - /* Configure ACC ramping before sending system information to BTS. */ - if (acc_ramp_is_enabled(&trx->bts->acc_ramp)) - acc_ramp_start(&trx->bts->acc_ramp); + /* + * Trigger ACC ramping before sending system information to BTS. + * This ensures that RACH control in system information is configured correctly. + */ + acc_ramp_trigger(&trx->bts->acc_ramp); + gsm_bts_trx_set_system_infos(trx); if (trx->bts->type == GSM_BTS_TYPE_NOKIA_SITE) { diff --git a/src/libbsc/bsc_vty.c b/src/libbsc/bsc_vty.c index 13e123b..521a36a 100644 --- a/src/libbsc/bsc_vty.c +++ b/src/libbsc/bsc_vty.c @@ -1915,7 +1915,7 @@ * Initalize bts->acc_ramp here. Else we could segfault while * processing a configuration file with ACC ramping settings. */ - acc_ramp_init(&bts->acc_ramp, false, bts); + acc_ramp_init(&bts->acc_ramp, bts); } else bts = gsm_bts_num(gsmnet, bts_nr); @@ -3275,7 +3275,8 @@ { struct gsm_bts *bts = vty->index; - acc_ramp_init(&bts->acc_ramp, true, bts); + if (!acc_ramp_is_enabled(&bts->acc_ramp)) + acc_ramp_set_enabled(&bts->acc_ramp, true); /* ACC ramping takes effect when the BTS reconnects. */ return CMD_SUCCESS; @@ -3290,7 +3291,7 @@ if (acc_ramp_is_enabled(&bts->acc_ramp)) { acc_ramp_abort(&bts->acc_ramp); - acc_ramp_init(&bts->acc_ramp, false, bts); + acc_ramp_set_enabled(&bts->acc_ramp, false); gsm_bts_set_system_infos(bts); } -- To view, visit https://gerrit.osmocom.org/7723 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: Ia25bff85d9e5c277da76bffa11d31972e9fdc323 Gerrit-PatchSet: 3 Gerrit-Project: osmo-bsc Gerrit-Branch: master Gerrit-Owner: Stefan Sperling Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Pau Espin Pedrol Gerrit-Reviewer: Stefan Sperling From gerrit-no-reply at lists.osmocom.org Wed Apr 11 16:53:06 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Wed, 11 Apr 2018 16:53:06 +0000 Subject: [MERGED] osmo-bsc[master]: trigger acc ramping based on trx rf-locked state In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: trigger acc ramping based on trx rf-locked state ...................................................................... trigger acc ramping based on trx rf-locked state Make ACC ramping listen to network management signals and trigger or abort ACC ramping based on the RF locked state of TRX 0. This works as expected with a virtphy setup when RF lock state is changed via VTY. However, this change still needs to be tested with a nanobts. It's also not quite clear yet whether operational state changes, as opposed to administrative ones, should be taken into account as well. Change-Id: I4124f1da3dadec003de45c1da8435506ee8f0a34 Depends: Ia25bff85d9e5c277da76bffa11d31972e9fdc323 --- M src/libbsc/acc_ramp.c M src/libbsc/bsc_vty.c 2 files changed, 49 insertions(+), 1 deletion(-) Approvals: Pau Espin Pedrol: Looks good to me, but someone else must approve Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/src/libbsc/acc_ramp.c b/src/libbsc/acc_ramp.c index 31122df..54626ad 100644 --- a/src/libbsc/acc_ramp.c +++ b/src/libbsc/acc_ramp.c @@ -26,6 +26,7 @@ #include #include #include +#include /* * Check if an ACC has been permanently barred for a BTS, @@ -136,6 +137,49 @@ osmo_timer_schedule(&acc_ramp->step_timer, get_next_step_interval(acc_ramp), 0); } +/* Implements osmo_signal_cbfn() -- trigger or abort ACC ramping upon changes RF lock state. */ +static int acc_ramp_nm_sig_cb(unsigned int subsys, unsigned int signal, void *handler_data, void *signal_data) +{ + struct nm_statechg_signal_data *nsd = signal_data; + struct acc_ramp *acc_ramp = handler_data; + struct gsm_bts_trx *trx = NULL; + + if (signal != S_NM_STATECHG_ADM) + return 0; + + if (nsd->obj_class != NM_OC_RADIO_CARRIER) + return 0; + + trx = nsd->obj; + + /* We only care about state changes of the first TRX. */ + if (trx->nr != 0) + return 0; + + /* RSL must already be up. We cannot send RACH system information to the BTS otherwise. */ + if (trx->rsl_link == NULL) + return 0; + + /* Trigger or abort ACC ramping based on the new 'RF lock' state of this TRX. */ + switch (nsd->new_state->administrative) { + case NM_STATE_UNLOCKED: + acc_ramp_trigger(acc_ramp); + break; + case NM_STATE_LOCKED: + case NM_STATE_SHUTDOWN: + acc_ramp_abort(acc_ramp); + break; + case NM_STATE_NULL: + break; + default: + LOGP(DRSL, LOGL_NOTICE, "(bts=%d) ACC RAMP: unrecognized administrative state '0x%x' reported for TRX 0\n", + acc_ramp->bts->nr, nsd->new_state->administrative); + break; + } + + return 0; +} + /*! * Initialize an acc_ramp data structure. * Storage for this structure must be provided by the caller. @@ -154,6 +198,7 @@ acc_ramp->step_interval_is_fixed = false; allow_all_enabled_accs(acc_ramp); osmo_timer_setup(&acc_ramp->step_timer, do_acc_ramping_step, acc_ramp); + osmo_signal_register_handler(SS_NM, acc_ramp_nm_sig_cb, acc_ramp); } /*! diff --git a/src/libbsc/bsc_vty.c b/src/libbsc/bsc_vty.c index 521a36a..c8d1637 100644 --- a/src/libbsc/bsc_vty.c +++ b/src/libbsc/bsc_vty.c @@ -3278,7 +3278,10 @@ if (!acc_ramp_is_enabled(&bts->acc_ramp)) acc_ramp_set_enabled(&bts->acc_ramp, true); - /* ACC ramping takes effect when the BTS reconnects. */ + /* + * ACC ramping takes effect either when the BTS reconnects RSL, + * or when RF administrative state changes to 'unlocked'. + */ return CMD_SUCCESS; } -- To view, visit https://gerrit.osmocom.org/7732 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: I4124f1da3dadec003de45c1da8435506ee8f0a34 Gerrit-PatchSet: 4 Gerrit-Project: osmo-bsc Gerrit-Branch: master Gerrit-Owner: Stefan Sperling Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Pau Espin Pedrol From gerrit-no-reply at lists.osmocom.org Wed Apr 11 16:53:40 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Wed, 11 Apr 2018 16:53:40 +0000 Subject: [MERGED] osmo-pcu[master]: pcu_l1_if: add frame number to log output In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: pcu_l1_if: add frame number to log output ...................................................................... pcu_l1_if: add frame number to log output Currently, the log output lacks the frame number. - make get_current_fn() public - add frame number to the log statements in pcu_l1_if.cpp Change-Id: Idce994dbf86a2bbf861907d75418a2a3867244db Related: SYS#4139 Patch-by: Octasic inc. --- M src/gsm_timer.cpp M src/gsm_timer.h M src/pcu_l1_if.cpp 3 files changed, 21 insertions(+), 10 deletions(-) Approvals: Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/src/gsm_timer.cpp b/src/gsm_timer.cpp index d3c59cb..f7901d4 100644 --- a/src/gsm_timer.cpp +++ b/src/gsm_timer.cpp @@ -43,7 +43,7 @@ * all time functions schedule based on the BTS they * are scheduled on. */ -static int get_current_fn() +int get_current_fn() { return BTS::main_bts()->current_frame_number(); } diff --git a/src/gsm_timer.h b/src/gsm_timer.h index fc42caf..cfabd0c 100644 --- a/src/gsm_timer.h +++ b/src/gsm_timer.h @@ -79,6 +79,12 @@ int osmo_gsm_timers_update(void); int osmo_gsm_timers_check(void); + +/* + * Get Current Frame Number + */ +int get_current_fn(); + /*! }@ */ #endif // GSM_TIMER_H diff --git a/src/pcu_l1_if.cpp b/src/pcu_l1_if.cpp index a9d17b6..4b54707 100644 --- a/src/pcu_l1_if.cpp +++ b/src/pcu_l1_if.cpp @@ -143,9 +143,10 @@ struct msgb *msg; struct gsm_pcu_if *pcu_prim; struct gsm_pcu_if_data *data_req; + int current_fn = get_current_fn(); LOGP(DL1IF, LOGL_DEBUG, "Sending data request: trx=%d ts=%d sapi=%d " - "arfcn=%d fn=%d block=%d data=%s\n", trx, ts, sapi, arfcn, fn, + "arfcn=%d fn=%d cur_fn=%d block=%d data=%s\n", trx, ts, sapi, arfcn, fn, current_fn, block_nr, osmo_hexdump(data, len)); msg = pcu_msgb_alloc(PCU_IF_MSG_DATA_REQ, 0); @@ -276,11 +277,12 @@ { struct gprs_rlcmac_bts *bts = bts_main_data(); int rc; + int current_fn = get_current_fn(); pcu_l1_meas meas; LOGP(DL1IF, LOGL_DEBUG, "Data indication received: sapi=%d arfcn=%d " - "block=%d data=%s\n", data_ind->sapi, - data_ind->arfcn, data_ind->block_nr, + "fn=%d cur_fn=%d block=%d data=%s\n", data_ind->sapi, + data_ind->arfcn, data_ind->fn, current_fn, data_ind->block_nr, osmo_hexdump(data_ind->data, data_ind->len)); switch (data_ind->sapi) { @@ -318,9 +320,10 @@ static int pcu_rx_data_cnf(struct gsm_pcu_if_data *data_cnf) { int rc = 0; + int current_fn = get_current_fn(); - LOGP(DL1IF, LOGL_DEBUG, "Data confirm received: sapi=%d fn=%d\n", - data_cnf->sapi, data_cnf->fn); + LOGP(DL1IF, LOGL_DEBUG, "Data confirm received: sapi=%d fn=%d cur_fn=%d\n", + data_cnf->sapi, data_cnf->fn, current_fn); switch (data_cnf->sapi) { case PCU_IF_SAPI_PCH: @@ -347,10 +350,11 @@ static int pcu_rx_rts_req(struct gsm_pcu_if_rts_req *rts_req) { int rc = 0; + int current_fn = get_current_fn(); LOGP(DL1IF, LOGL_DEBUG, "RTS request received: trx=%d ts=%d sapi=%d " - "arfcn=%d fn=%d block=%d\n", rts_req->trx_nr, rts_req->ts_nr, - rts_req->sapi, rts_req->arfcn, rts_req->fn, rts_req->block_nr); + "arfcn=%d fn=%d cur_fn=%d block=%d\n", rts_req->trx_nr, rts_req->ts_nr, + rts_req->sapi, rts_req->arfcn, rts_req->fn, current_fn, rts_req->block_nr); switch (rts_req->sapi) { case PCU_IF_SAPI_PDTCH: @@ -378,10 +382,11 @@ static int pcu_rx_rach_ind(struct gsm_pcu_if_rach_ind *rach_ind) { int rc = 0; + int current_fn = get_current_fn(); LOGP(DL1IF, LOGL_INFO, "RACH request received: sapi=%d " - "qta=%d, ra=%d, fn=%d\n", rach_ind->sapi, rach_ind->qta, - rach_ind->ra, rach_ind->fn); + "qta=%d, ra=%d, fn=%d, cur_fn=%d, is_11bit=%d\n", rach_ind->sapi, rach_ind->qta, + rach_ind->ra, rach_ind->fn, current_fn, rach_ind->is_11bit); switch (rach_ind->sapi) { case PCU_IF_SAPI_RACH: -- To view, visit https://gerrit.osmocom.org/7729 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: Idce994dbf86a2bbf861907d75418a2a3867244db Gerrit-PatchSet: 1 Gerrit-Project: osmo-pcu Gerrit-Branch: master Gerrit-Owner: dexter Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder From gerrit-no-reply at lists.osmocom.org Wed Apr 11 16:53:41 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Wed, 11 Apr 2018 16:53:41 +0000 Subject: [MERGED] osmo-pcu[master]: cosmetic: remove runaway semicolon In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: cosmetic: remove runaway semicolon ...................................................................... cosmetic: remove runaway semicolon Change-Id: I33c335dc8d564a8357ffb5b1163c2c4b1a578b49 Related: SYS#4139 Patch-by: Octasic inc. --- M src/pcu_l1_if.cpp 1 file changed, 1 insertion(+), 1 deletion(-) Approvals: Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/src/pcu_l1_if.cpp b/src/pcu_l1_if.cpp index 85dbfb9..a9d17b6 100644 --- a/src/pcu_l1_if.cpp +++ b/src/pcu_l1_if.cpp @@ -630,6 +630,6 @@ msg_type); rc = -EINVAL; } -; + return rc; } -- To view, visit https://gerrit.osmocom.org/7728 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: I33c335dc8d564a8357ffb5b1163c2c4b1a578b49 Gerrit-PatchSet: 1 Gerrit-Project: osmo-pcu Gerrit-Branch: master Gerrit-Owner: dexter Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder From gerrit-no-reply at lists.osmocom.org Wed Apr 11 16:55:46 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Wed, 11 Apr 2018 16:55:46 +0000 Subject: osmo-ttcn3-hacks[master]: MNCC: don't delete call table entries In-Reply-To: References: Message-ID: Patch Set 1: > Seems to ma a test case shall decide when to clean up the call > table entries. > IIUC, it's impossible to derive what the test wants to do with the > call and discard automatically in all the right places. > So we'd make f_call_table_del() non-private and call that from test > cases? well "non-private" is not sufficient, you'd need to introduce a new "signature" for the "procedure port" as it is basically a RPC call between two components. But yes, feel free to do that (and change the existing tets to use that explicit delete). thanks! -- To view, visit https://gerrit.osmocom.org/7711 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I73ec066744475d3cc464e34854175f8cf14cf125 Gerrit-PatchSet: 1 Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Neels Hofmeyr Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Wed Apr 11 17:03:33 2018 From: gerrit-no-reply at lists.osmocom.org (lynxis lazus) Date: Wed, 11 Apr 2018 17:03:33 +0000 Subject: osmo-ci[master]: ansible: gsm-tester-bts: add OBS osmocom:nightly to install ... In-Reply-To: References: Message-ID: Patch Set 2: Verified+1 -- To view, visit https://gerrit.osmocom.org/7741 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I7b704d402c83db54401d1c06acb715cce821f2e4 Gerrit-PatchSet: 2 Gerrit-Project: osmo-ci Gerrit-Branch: master Gerrit-Owner: lynxis lazus Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Pau Espin Pedrol Gerrit-Reviewer: lynxis lazus Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Wed Apr 11 17:03:36 2018 From: gerrit-no-reply at lists.osmocom.org (lynxis lazus) Date: Wed, 11 Apr 2018 17:03:36 +0000 Subject: osmo-ci[master]: ansible: gsm-tester: move usrp tasks to gsm-tester-bts In-Reply-To: References: Message-ID: Patch Set 2: Verified+1 -- To view, visit https://gerrit.osmocom.org/7738 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I9caebed94c3473051b82e2cdc35f6dfb9f862084 Gerrit-PatchSet: 2 Gerrit-Project: osmo-ci Gerrit-Branch: master Gerrit-Owner: lynxis lazus Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Pau Espin Pedrol Gerrit-Reviewer: lynxis lazus Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Wed Apr 11 17:03:39 2018 From: gerrit-no-reply at lists.osmocom.org (lynxis lazus) Date: Wed, 11 Apr 2018 17:03:39 +0000 Subject: osmo-ci[master]: ansible: gsm-tester-bts: install ip.access dependencies In-Reply-To: References: Message-ID: Patch Set 2: Verified+1 -- To view, visit https://gerrit.osmocom.org/7737 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I47f578c4b9bb7b1dc81ccf93a7e82a335f6968a2 Gerrit-PatchSet: 2 Gerrit-Project: osmo-ci Gerrit-Branch: master Gerrit-Owner: lynxis lazus Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Pau Espin Pedrol Gerrit-Reviewer: lynxis lazus Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Wed Apr 11 17:03:41 2018 From: gerrit-no-reply at lists.osmocom.org (lynxis lazus) Date: Wed, 11 Apr 2018 17:03:41 +0000 Subject: osmo-ci[master]: ansible: setup-gsm-tester: use udhcpd as dhcp server In-Reply-To: References: Message-ID: Patch Set 2: Verified+1 -- To view, visit https://gerrit.osmocom.org/7736 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I5ae43ebcd3c87e625110d8ff6afa0476f4b1facf Gerrit-PatchSet: 2 Gerrit-Project: osmo-ci Gerrit-Branch: master Gerrit-Owner: lynxis lazus Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Pau Espin Pedrol Gerrit-Reviewer: lynxis lazus Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Wed Apr 11 17:03:42 2018 From: gerrit-no-reply at lists.osmocom.org (lynxis lazus) Date: Wed, 11 Apr 2018 17:03:42 +0000 Subject: osmo-ci[master]: ansible: gsm-tester: install sispmctl to control usb power s... In-Reply-To: References: Message-ID: Patch Set 2: Verified+1 -- To view, visit https://gerrit.osmocom.org/7740 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Ie1af197d4b24e25196e10d2afa3ab8eea73ad729 Gerrit-PatchSet: 2 Gerrit-Project: osmo-ci Gerrit-Branch: master Gerrit-Owner: lynxis lazus Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Pau Espin Pedrol Gerrit-Reviewer: lynxis lazus Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Wed Apr 11 17:03:45 2018 From: gerrit-no-reply at lists.osmocom.org (lynxis lazus) Date: Wed, 11 Apr 2018 17:03:45 +0000 Subject: osmo-ci[master]: ansible: gsm-tester-modems: improve name In-Reply-To: References: Message-ID: Patch Set 2: Verified+1 -- To view, visit https://gerrit.osmocom.org/7739 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I4186baaf565442c96555b723622c93b1cbd9f4f7 Gerrit-PatchSet: 2 Gerrit-Project: osmo-ci Gerrit-Branch: master Gerrit-Owner: lynxis lazus Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Pau Espin Pedrol Gerrit-Reviewer: lynxis lazus Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Wed Apr 11 17:03:51 2018 From: gerrit-no-reply at lists.osmocom.org (lynxis lazus) Date: Wed, 11 Apr 2018 17:03:51 +0000 Subject: osmo-ci[master]: ansible: hosts: gsm-tester: use ansible_host to have more re... In-Reply-To: References: Message-ID: Patch Set 1: Verified+1 -- To view, visit https://gerrit.osmocom.org/7734 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Ia7b60ace8afd0e2cc47c535da1856d4f34fdd735 Gerrit-PatchSet: 1 Gerrit-Project: osmo-ci Gerrit-Branch: master Gerrit-Owner: lynxis lazus Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: lynxis lazus Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Wed Apr 11 17:04:09 2018 From: gerrit-no-reply at lists.osmocom.org (lynxis lazus) Date: Wed, 11 Apr 2018 17:04:09 +0000 Subject: osmo-ci[master]: osmocom-jenkins-slave: call fstrim periodically In-Reply-To: References: Message-ID: Patch Set 1: Verified+1 -- To view, visit https://gerrit.osmocom.org/7724 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I82c497f476abf43148e8d7c027f53b87b5a738fb Gerrit-PatchSet: 1 Gerrit-Project: osmo-ci Gerrit-Branch: master Gerrit-Owner: lynxis lazus Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: lynxis lazus Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Wed Apr 11 17:04:52 2018 From: gerrit-no-reply at lists.osmocom.org (lynxis lazus) Date: Wed, 11 Apr 2018 17:04:52 +0000 Subject: osmo-ci[master]: ansible: add role udhcpd: setup a udhcpd server In-Reply-To: References: Message-ID: Patch Set 1: Verified+1 (1 comment) https://gerrit.osmocom.org/#/c/7735/1/ansible/roles/udhcpd/defaults/main.yml File ansible/roles/udhcpd/defaults/main.yml: Line 16: udhcpd_static_leases: [] > we are missing the leases here? no. this is the default value. it will be overridden from outside. see the host_vars in the other commit which is using this. -- To view, visit https://gerrit.osmocom.org/7735 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Ia272ae9c2b245d0a06f84b91f50dd875d4488e02 Gerrit-PatchSet: 1 Gerrit-Project: osmo-ci Gerrit-Branch: master Gerrit-Owner: lynxis lazus Gerrit-Reviewer: Pau Espin Pedrol Gerrit-Reviewer: lynxis lazus Gerrit-HasComments: Yes From gerrit-no-reply at lists.osmocom.org Wed Apr 11 17:07:53 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Wed, 11 Apr 2018 17:07:53 +0000 Subject: osmo-ci[master]: ansible: add role udhcpd: setup a udhcpd server In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7735 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Ia272ae9c2b245d0a06f84b91f50dd875d4488e02 Gerrit-PatchSet: 1 Gerrit-Project: osmo-ci Gerrit-Branch: master Gerrit-Owner: lynxis lazus Gerrit-Reviewer: Pau Espin Pedrol Gerrit-Reviewer: lynxis lazus Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Wed Apr 11 17:33:34 2018 From: gerrit-no-reply at lists.osmocom.org (Neels Hofmeyr) Date: Wed, 11 Apr 2018 17:33:34 +0000 Subject: [PATCH] osmo-ttcn3-hacks[master]: fix build: don't clean out expected-results.log: rename to *... In-Reply-To: References: Message-ID: Hello Harald Welte, Jenkins Builder, I'd like you to reexamine a change. Please visit https://gerrit.osmocom.org/7751 to look at the new patch set (#2). fix build: don't clean out expected-results.log: rename to *.xml 'make clean' as generated by ttcn3_makefilegen removes all *.log files, which of course cleans out expected-results.log, which should not happen. Since this is a junit XML file, rename the suffix to .xml. Change-Id: Ic334f6b758eef865e3a497aa430691a3ae696d25 --- R bsc/expected-results.xml R ggsn_tests/expected-results.xml R hlr/expected-results.xml R mgw/expected-results.xml R msc/expected-results.xml R sgsn/expected-results.xml R sip/expected-results.xml M start-testsuite.sh R sysinfo/expected-results.xml 9 files changed, 1 insertion(+), 1 deletion(-) git pull ssh://gerrit.osmocom.org:29418/osmo-ttcn3-hacks refs/changes/51/7751/2 diff --git a/bsc/expected-results.log b/bsc/expected-results.xml similarity index 100% rename from bsc/expected-results.log rename to bsc/expected-results.xml diff --git a/ggsn_tests/expected-results.log b/ggsn_tests/expected-results.xml similarity index 100% rename from ggsn_tests/expected-results.log rename to ggsn_tests/expected-results.xml diff --git a/hlr/expected-results.log b/hlr/expected-results.xml similarity index 100% rename from hlr/expected-results.log rename to hlr/expected-results.xml diff --git a/mgw/expected-results.log b/mgw/expected-results.xml similarity index 100% rename from mgw/expected-results.log rename to mgw/expected-results.xml diff --git a/msc/expected-results.log b/msc/expected-results.xml similarity index 100% rename from msc/expected-results.log rename to msc/expected-results.xml diff --git a/sgsn/expected-results.log b/sgsn/expected-results.xml similarity index 100% rename from sgsn/expected-results.log rename to sgsn/expected-results.xml diff --git a/sip/expected-results.log b/sip/expected-results.xml similarity index 100% rename from sip/expected-results.log rename to sip/expected-results.xml diff --git a/start-testsuite.sh b/start-testsuite.sh index 5b187fa..e2da8f0 100755 --- a/start-testsuite.sh +++ b/start-testsuite.sh @@ -23,7 +23,7 @@ LD_LIBRARY_PATH="$SUITE_DIR:/usr/lib/titan:/usr/ttcn3/lib" ttcn3_start $SUITE $CFG $TEST -expected="$SUITE_DIR/expected-results.log" +expected="$SUITE_DIR/expected-results.xml" if [ ! -f "$expected" ]; then echo "No expected results found, not comparing outcome. ($expected)" exit 0 diff --git a/sysinfo/expected-results.log b/sysinfo/expected-results.xml similarity index 100% rename from sysinfo/expected-results.log rename to sysinfo/expected-results.xml -- To view, visit https://gerrit.osmocom.org/7751 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newpatchset Gerrit-Change-Id: Ic334f6b758eef865e3a497aa430691a3ae696d25 Gerrit-PatchSet: 2 Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder From gerrit-no-reply at lists.osmocom.org Wed Apr 11 17:33:34 2018 From: gerrit-no-reply at lists.osmocom.org (Neels Hofmeyr) Date: Wed, 11 Apr 2018 17:33:34 +0000 Subject: [PATCH] osmo-ttcn3-hacks[master]: add mask_expected_results.sh In-Reply-To: References: Message-ID: Hello Harald Welte, Jenkins Builder, I'd like you to reexamine a change. Please visit https://gerrit.osmocom.org/7752 to look at the new patch set (#2). add mask_expected_results.sh Provide a script to mask timestamps and source file lines in expected results files: when updating expected changes, it is useful to see the exact semantic changes, not the timestamp and source file line changes in the git diff. Change-Id: I785e126b1f5afddd1b722bc5e922ed90970efa8a --- A mask_expected_results.sh 1 file changed, 7 insertions(+), 0 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-ttcn3-hacks refs/changes/52/7752/2 diff --git a/mask_expected_results.sh b/mask_expected_results.sh new file mode 100755 index 0000000..f679194 --- /dev/null +++ b/mask_expected_results.sh @@ -0,0 +1,7 @@ +#!/bin/sh +# to prevent diffs due to timing and source file lines, mask some numbers + +for target in */expected-results.xml; do + sed -i "s/time='[^']*'/time='MASKED'/g" "$target" + sed -i 's/ttcn:[0-9]\+/ttcn:MASKED/g' "$target" +done -- To view, visit https://gerrit.osmocom.org/7752 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newpatchset Gerrit-Change-Id: I785e126b1f5afddd1b722bc5e922ed90970efa8a Gerrit-PatchSet: 2 Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder From gerrit-no-reply at lists.osmocom.org Wed Apr 11 17:33:34 2018 From: gerrit-no-reply at lists.osmocom.org (Neels Hofmeyr) Date: Wed, 11 Apr 2018 17:33:34 +0000 Subject: [PATCH] osmo-ttcn3-hacks[master]: mask timestamps and source file nrs in expected-results.xml ... In-Reply-To: References: Message-ID: Hello Jenkins Builder, I'd like you to reexamine a change. Please visit https://gerrit.osmocom.org/7753 to look at the new patch set (#2). mask timestamps and source file nrs in expected-results.xml files Prepare for upcoming updates with concise diffs. Change-Id: Ic9f006aa8db1b477598605e0525faeb229b03641 --- M bsc/expected-results.xml M ggsn_tests/expected-results.xml M hlr/expected-results.xml M mgw/expected-results.xml M msc/expected-results.xml M sgsn/expected-results.xml M sip/expected-results.xml M sysinfo/expected-results.xml 8 files changed, 278 insertions(+), 278 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-ttcn3-hacks refs/changes/53/7753/2 diff --git a/bsc/expected-results.xml b/bsc/expected-results.xml index 18a9a20..a2f9d47 100644 --- a/bsc/expected-results.xml +++ b/bsc/expected-results.xml @@ -1,95 +1,95 @@ - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + Timeout expecting { msg_disc := { msg_group := RSL_MDISC_CCHAN (6), transparent := false }, msg_type := RSL_MT_PAGING_CMD (21), ies := { { iei := ?, body := { chan_nr := { u := { ch0 := RSL_CHAN_NR_PCH_AGCH (18) }, tn := ? } } }, { iei := ?, body := { paging_group := ? } }, { iei := ?, body := { ms_identity := { len := ?, payload := ? } } }, * } } - BSC_Tests.ttcn:2203 BSC_Tests control part - BSC_Tests.ttcn:1131 TC_paging_imsi_nochan_lai testcase + BSC_Tests.ttcn:MASKED BSC_Tests control part + BSC_Tests.ttcn:MASKED TC_paging_imsi_nochan_lai testcase - + - - - - - - - - + + + + + + + + Received PAGING after A-RESET - BSC_Tests.ttcn:2212 BSC_Tests control part - BSC_Tests.ttcn:1306 TC_paging_imsi_a_reset testcase + BSC_Tests.ttcn:MASKED BSC_Tests control part + BSC_Tests.ttcn:MASKED TC_paging_imsi_a_reset testcase - - - - - - - - - - - - - - + + + + + + + + + + + + + + Timeout of T_guard - BSC_Tests.ttcn:2230 BSC_Tests control part - BSC_Tests.ttcn:2056 TC_bssmap_clear_does_not_cause_bssmap_reset testcase + BSC_Tests.ttcn:MASKED BSC_Tests control part + BSC_Tests.ttcn:MASKED TC_bssmap_clear_does_not_cause_bssmap_reset testcase - + Timeout of T_guard - BSC_Tests.ttcn:2231 BSC_Tests control part - BSC_Tests.ttcn:2115 TC_ms_rel_ind_does_not_cause_bssmap_reset testcase + BSC_Tests.ttcn:MASKED BSC_Tests control part + BSC_Tests.ttcn:MASKED TC_ms_rel_ind_does_not_cause_bssmap_reset testcase diff --git a/ggsn_tests/expected-results.xml b/ggsn_tests/expected-results.xml index bff953a..1e5da38 100644 --- a/ggsn_tests/expected-results.xml +++ b/ggsn_tests/expected-results.xml @@ -1,14 +1,14 @@ - - - - - - - - - - - - + + + + + + + + + + + + diff --git a/hlr/expected-results.xml b/hlr/expected-results.xml index 4d95479..94ea7cd 100644 --- a/hlr/expected-results.xml +++ b/hlr/expected-results.xml @@ -1,18 +1,18 @@ - - + + Unexpected SAI ERROR Cause - HLR_Tests.ttcn:562 HLR_Tests control part - HLR_Tests.ttcn:364 TC_gsup_sai_err_invalid_imsi testcase + HLR_Tests.ttcn:MASKED HLR_Tests control part + HLR_Tests.ttcn:MASKED TC_gsup_sai_err_invalid_imsi testcase - - - - - - - - - + + + + + + + + + diff --git a/mgw/expected-results.xml b/mgw/expected-results.xml index c67d5d9..0e9f0e8 100644 --- a/mgw/expected-results.xml +++ b/mgw/expected-results.xml @@ -1,36 +1,36 @@ - - + + no verdict - - - - - - - - - + + + + + + + + + - MGCP_Test.ttcn:887 MGCP_Test control part - MGCP_Test.ttcn:436 TC_crcx_illegal_double_lco testcase + MGCP_Test.ttcn:MASKED MGCP_Test control part + MGCP_Test.ttcn:MASKED TC_crcx_illegal_double_lco testcase - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + diff --git a/msc/expected-results.xml b/msc/expected-results.xml index ebda8a4..54d1f5f 100644 --- a/msc/expected-results.xml +++ b/msc/expected-results.xml @@ -1,110 +1,110 @@ - - - - - + + + + + Timeout waiting for ClearCommand/Release - MSC_Tests.ttcn:1832 MSC_Tests control part - MSC_Tests.ttcn:502 TC_lu_imsi_reject testcase + MSC_Tests.ttcn:MASKED MSC_Tests control part + MSC_Tests.ttcn:MASKED TC_lu_imsi_reject testcase - + Timeout waiting for ClearCommand/Release - MSC_Tests.ttcn:1833 MSC_Tests control part - MSC_Tests.ttcn:531 TC_lu_imsi_timeout_gsup testcase + MSC_Tests.ttcn:MASKED MSC_Tests control part + MSC_Tests.ttcn:MASKED TC_lu_imsi_timeout_gsup testcase - - - - - - + + + + + + Got a second Clear Command, only one expected - MSC_Tests.ttcn:1839 MSC_Tests control part - MSC_Tests.ttcn:704 TC_lu_clear_request testcase + MSC_Tests.ttcn:MASKED MSC_Tests control part + MSC_Tests.ttcn:MASKED TC_lu_clear_request testcase - - - - - - - + + + + + + + Timeout waiting for ClearCommand/Release - MSC_Tests.ttcn:1846 MSC_Tests control part - MSC_Tests.ttcn:909 TC_emerg_call_imei_reject testcase + MSC_Tests.ttcn:MASKED MSC_Tests control part + MSC_Tests.ttcn:MASKED TC_emerg_call_imei_reject testcase - - + + Timeout waiting for ClearCommand/Release - MSC_Tests.ttcn:1848 MSC_Tests control part - MSC_Tests.ttcn:946 TC_cm_serv_req_vgcs_reject testcase + MSC_Tests.ttcn:MASKED MSC_Tests control part + MSC_Tests.ttcn:MASKED TC_cm_serv_req_vgcs_reject testcase - + Timeout waiting for ClearCommand/Release - MSC_Tests.ttcn:1849 MSC_Tests control part - MSC_Tests.ttcn:967 TC_cm_serv_req_vbs_reject testcase + MSC_Tests.ttcn:MASKED MSC_Tests control part + MSC_Tests.ttcn:MASKED TC_cm_serv_req_vbs_reject testcase - + Timeout waiting for ClearCommand/Release - MSC_Tests.ttcn:1850 MSC_Tests control part - MSC_Tests.ttcn:988 TC_cm_serv_req_lcs_reject testcase + MSC_Tests.ttcn:MASKED MSC_Tests control part + MSC_Tests.ttcn:MASKED TC_cm_serv_req_lcs_reject testcase - + Timeout waiting for ClearCommand/Release - MSC_Tests.ttcn:1851 MSC_Tests control part - MSC_Tests.ttcn:1009 TC_cm_reest_req_reject testcase + MSC_Tests.ttcn:MASKED MSC_Tests control part + MSC_Tests.ttcn:MASKED TC_cm_reest_req_reject testcase - - - - + + + + Timeout waiting for ClearCommand or SCCP Release - MSC_Tests.ttcn:1855 MSC_Tests control part - MSC_Tests.ttcn:1131 TC_cl3_rnd_payload testcase + MSC_Tests.ttcn:MASKED MSC_Tests control part + MSC_Tests.ttcn:MASKED TC_cl3_rnd_payload testcase - + Timeout waiting for ClearCommand/Release - MSC_Tests.ttcn:1856 MSC_Tests control part - MSC_Tests.ttcn:1148 TC_establish_and_nothing testcase + MSC_Tests.ttcn:MASKED MSC_Tests control part + MSC_Tests.ttcn:MASKED TC_establish_and_nothing testcase - + Timeout waiting for ClearCommand/Release - MSC_Tests.ttcn:1857 MSC_Tests control part - MSC_Tests.ttcn:1172 TC_mo_setup_and_nothing testcase + MSC_Tests.ttcn:MASKED MSC_Tests control part + MSC_Tests.ttcn:MASKED TC_mo_setup_and_nothing testcase - - - + + + Timeout waiting for channel release - MSC_Tests.ttcn:1860 MSC_Tests control part - MSC_Tests.ttcn:1383 TC_mt_crcx_ran_reject testcase + MSC_Tests.ttcn:MASKED MSC_Tests control part + MSC_Tests.ttcn:MASKED TC_mt_crcx_ran_reject testcase - - + + - - - - - - - - - - - + + + + + + + + + + + diff --git a/sgsn/expected-results.xml b/sgsn/expected-results.xml index 502dde8..49ab60c 100644 --- a/sgsn/expected-results.xml +++ b/sgsn/expected-results.xml @@ -1,54 +1,54 @@ - - - - - + + + + + Tguard timeout - SGSN_Tests.ttcn:1157 SGSN_Tests control part - SGSN_Tests.ttcn:480 TC_attach_auth_sai_timeout testcase + SGSN_Tests.ttcn:MASKED SGSN_Tests control part + SGSN_Tests.ttcn:MASKED TC_attach_auth_sai_timeout testcase - + Tguard timeout - SGSN_Tests.ttcn:1158 SGSN_Tests control part - SGSN_Tests.ttcn:501 TC_attach_auth_sai_reject testcase + SGSN_Tests.ttcn:MASKED SGSN_Tests control part + SGSN_Tests.ttcn:MASKED TC_attach_auth_sai_reject testcase - + Tguard timeout - SGSN_Tests.ttcn:1159 SGSN_Tests control part - SGSN_Tests.ttcn:529 TC_attach_gsup_lu_timeout testcase + SGSN_Tests.ttcn:MASKED SGSN_Tests control part + SGSN_Tests.ttcn:MASKED TC_attach_gsup_lu_timeout testcase - + Tguard timeout - SGSN_Tests.ttcn:1160 SGSN_Tests control part - SGSN_Tests.ttcn:558 TC_attach_gsup_lu_reject testcase + SGSN_Tests.ttcn:MASKED SGSN_Tests control part + SGSN_Tests.ttcn:MASKED TC_attach_gsup_lu_reject testcase - - - - - - + + + + + + Dynamic test case error: Error message was received from MC: The connect operation refers to test component with component reference 77, which has already terminated. - + Dynamic test case error: Error message was received from MC: The connect operation refers to test component with component reference 83, which has already terminated. - - - - - - - - + + + + + + + + Tguard timeout - SGSN_Tests.ttcn:1175 SGSN_Tests control part - SGSN_Tests.ttcn:1148 TC_attach_pdp_act_user_deact_mt testcase + SGSN_Tests.ttcn:MASKED SGSN_Tests control part + SGSN_Tests.ttcn:MASKED TC_attach_pdp_act_user_deact_mt testcase diff --git a/sip/expected-results.xml b/sip/expected-results.xml index 54123a5..c704f85 100644 --- a/sip/expected-results.xml +++ b/sip/expected-results.xml @@ -1,7 +1,7 @@ - - - - - + + + + + diff --git a/sysinfo/expected-results.xml b/sysinfo/expected-results.xml index cea6f54..db2787d 100644 --- a/sysinfo/expected-results.xml +++ b/sysinfo/expected-results.xml @@ -1,69 +1,69 @@ - - - - + + + + No SI messages for TC=0! - + No SI messages for TC=0! - + No SI messages for TC=0! - - Test.ttcn:162: Dynamic test case error: testcase.stop + + Test.ttcn:MASKED: Dynamic test case error: testcase.stop - - - Test.ttcn:162: Dynamic test case error: testcase.stop + + + Test.ttcn:MASKED: Dynamic test case error: testcase.stop - - Test.ttcn:162: Dynamic test case error: testcase.stop + + Test.ttcn:MASKED: Dynamic test case error: testcase.stop - - Test.ttcn:478: Dynamic test case error: testcase.stop + + Test.ttcn:MASKED: Dynamic test case error: testcase.stop - - Test.ttcn:478: Dynamic test case error: testcase.stop + + Test.ttcn:MASKED: Dynamic test case error: testcase.stop - - Test.ttcn:478: Dynamic test case error: testcase.stop + + Test.ttcn:MASKED: Dynamic test case error: testcase.stop - - Test.ttcn:478: Dynamic test case error: testcase.stop + + Test.ttcn:MASKED: Dynamic test case error: testcase.stop - - Test.ttcn:478: Dynamic test case error: testcase.stop + + Test.ttcn:MASKED: Dynamic test case error: testcase.stop - - Test.ttcn:478: Dynamic test case error: testcase.stop + + Test.ttcn:MASKED: Dynamic test case error: testcase.stop - - Test.ttcn:478: Dynamic test case error: testcase.stop + + Test.ttcn:MASKED: Dynamic test case error: testcase.stop - - Test.ttcn:478: Dynamic test case error: testcase.stop + + Test.ttcn:MASKED: Dynamic test case error: testcase.stop - - Test.ttcn:478: Dynamic test case error: testcase.stop + + Test.ttcn:MASKED: Dynamic test case error: testcase.stop - - Test.ttcn:478: Dynamic test case error: testcase.stop + + Test.ttcn:MASKED: Dynamic test case error: testcase.stop - - Test.ttcn:478: Dynamic test case error: testcase.stop + + Test.ttcn:MASKED: Dynamic test case error: testcase.stop - - Test.ttcn:478: Dynamic test case error: testcase.stop + + Test.ttcn:MASKED: Dynamic test case error: testcase.stop - - Test.ttcn:478: Dynamic test case error: testcase.stop + + Test.ttcn:MASKED: Dynamic test case error: testcase.stop -- To view, visit https://gerrit.osmocom.org/7753 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newpatchset Gerrit-Change-Id: Ic9f006aa8db1b477598605e0525faeb229b03641 Gerrit-PatchSet: 2 Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder From gerrit-no-reply at lists.osmocom.org Wed Apr 11 17:34:08 2018 From: gerrit-no-reply at lists.osmocom.org (Neels Hofmeyr) Date: Wed, 11 Apr 2018 17:34:08 +0000 Subject: osmo-ttcn3-hacks[master]: fix build: don't clean out expected-results.log: rename to *... In-Reply-To: References: Message-ID: Patch Set 2: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7751 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Ic334f6b758eef865e3a497aa430691a3ae696d25 Gerrit-PatchSet: 2 Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Neels Hofmeyr Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Wed Apr 11 17:34:09 2018 From: gerrit-no-reply at lists.osmocom.org (Neels Hofmeyr) Date: Wed, 11 Apr 2018 17:34:09 +0000 Subject: [MERGED] osmo-ttcn3-hacks[master]: fix build: don't clean out expected-results.log: rename to *... In-Reply-To: References: Message-ID: Neels Hofmeyr has submitted this change and it was merged. Change subject: fix build: don't clean out expected-results.log: rename to *.xml ...................................................................... fix build: don't clean out expected-results.log: rename to *.xml 'make clean' as generated by ttcn3_makefilegen removes all *.log files, which of course cleans out expected-results.log, which should not happen. Since this is a junit XML file, rename the suffix to .xml. Change-Id: Ic334f6b758eef865e3a497aa430691a3ae696d25 --- R bsc/expected-results.xml R ggsn_tests/expected-results.xml R hlr/expected-results.xml R mgw/expected-results.xml R msc/expected-results.xml R sgsn/expected-results.xml R sip/expected-results.xml M start-testsuite.sh R sysinfo/expected-results.xml 9 files changed, 1 insertion(+), 1 deletion(-) Approvals: Neels Hofmeyr: Looks good to me, approved Jenkins Builder: Verified diff --git a/bsc/expected-results.log b/bsc/expected-results.xml similarity index 100% rename from bsc/expected-results.log rename to bsc/expected-results.xml diff --git a/ggsn_tests/expected-results.log b/ggsn_tests/expected-results.xml similarity index 100% rename from ggsn_tests/expected-results.log rename to ggsn_tests/expected-results.xml diff --git a/hlr/expected-results.log b/hlr/expected-results.xml similarity index 100% rename from hlr/expected-results.log rename to hlr/expected-results.xml diff --git a/mgw/expected-results.log b/mgw/expected-results.xml similarity index 100% rename from mgw/expected-results.log rename to mgw/expected-results.xml diff --git a/msc/expected-results.log b/msc/expected-results.xml similarity index 100% rename from msc/expected-results.log rename to msc/expected-results.xml diff --git a/sgsn/expected-results.log b/sgsn/expected-results.xml similarity index 100% rename from sgsn/expected-results.log rename to sgsn/expected-results.xml diff --git a/sip/expected-results.log b/sip/expected-results.xml similarity index 100% rename from sip/expected-results.log rename to sip/expected-results.xml diff --git a/start-testsuite.sh b/start-testsuite.sh index 5b187fa..e2da8f0 100755 --- a/start-testsuite.sh +++ b/start-testsuite.sh @@ -23,7 +23,7 @@ LD_LIBRARY_PATH="$SUITE_DIR:/usr/lib/titan:/usr/ttcn3/lib" ttcn3_start $SUITE $CFG $TEST -expected="$SUITE_DIR/expected-results.log" +expected="$SUITE_DIR/expected-results.xml" if [ ! -f "$expected" ]; then echo "No expected results found, not comparing outcome. ($expected)" exit 0 diff --git a/sysinfo/expected-results.log b/sysinfo/expected-results.xml similarity index 100% rename from sysinfo/expected-results.log rename to sysinfo/expected-results.xml -- To view, visit https://gerrit.osmocom.org/7751 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: Ic334f6b758eef865e3a497aa430691a3ae696d25 Gerrit-PatchSet: 2 Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Neels Hofmeyr From gerrit-no-reply at lists.osmocom.org Wed Apr 11 17:36:47 2018 From: gerrit-no-reply at lists.osmocom.org (Neels Hofmeyr) Date: Wed, 11 Apr 2018 17:36:47 +0000 Subject: osmo-ttcn3-hacks[master]: add mask_expected_results.sh In-Reply-To: References: Message-ID: Patch Set 1: (1 comment) https://gerrit.osmocom.org/#/c/7752/1/mask_expected_results.sh File mask_expected_results.sh: Line 5: sed -i "s/time='[^']*'/time='MASKED'/g" "$target" > does the "MASKED" still constitute valid Juni2-XML? Is there a DTD availabl not sure if the timestamp number within the quotes is in fact validated by a DTD; But also this expected-results.xml will never end up being parsed in jenkins or anything other than compare-results.sh. Jenkins will still always see the exact test case's junit results with timestamps and line numbers. -- To view, visit https://gerrit.osmocom.org/7752 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I785e126b1f5afddd1b722bc5e922ed90970efa8a Gerrit-PatchSet: 1 Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Neels Hofmeyr Gerrit-HasComments: Yes From gerrit-no-reply at lists.osmocom.org Wed Apr 11 17:41:49 2018 From: gerrit-no-reply at lists.osmocom.org (Neels Hofmeyr) Date: Wed, 11 Apr 2018 17:41:49 +0000 Subject: osmo-ttcn3-hacks[master]: mask timestamps and source file nrs in expected-results.xml ... In-Reply-To: References: Message-ID: Patch Set 2: we still want the timings to show up in jenkins. The masking script only masks the expected-results.xml, for the sole purpose that updating the expected results by overwriting with a new file doesn't diff all over the place, but only exactly where we changed an expectation. The "real" junit xml files don't need to be masked. The compare-results.sh compares the unchanged junit xml against the masked expected-results.xml, and doesn't care about those attributes. If it's still a concern, I could also remove that attribute altogether. -- To view, visit https://gerrit.osmocom.org/7753 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Ic9f006aa8db1b477598605e0525faeb229b03641 Gerrit-PatchSet: 2 Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Neels Hofmeyr Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Wed Apr 11 17:42:19 2018 From: gerrit-no-reply at lists.osmocom.org (Neels Hofmeyr) Date: Wed, 11 Apr 2018 17:42:19 +0000 Subject: osmo-ttcn3-hacks[master]: add update_expected_results_from_jenkins.sh In-Reply-To: References: Message-ID: Patch Set 2: > I think this script deserves some usage documentation / comments? It's fire and forget, but agreed. -- To view, visit https://gerrit.osmocom.org/7754 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Ib3ad8554fc59112c11325425ccd70ca1dbd8c123 Gerrit-PatchSet: 2 Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Neels Hofmeyr Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Wed Apr 11 17:49:52 2018 From: gerrit-no-reply at lists.osmocom.org (Neels Hofmeyr) Date: Wed, 11 Apr 2018 17:49:52 +0000 Subject: [PATCH] osmo-ttcn3-hacks[master]: add update_expected_results_from_jenkins.sh In-Reply-To: References: Message-ID: Hello Jenkins Builder, I'd like you to reexamine a change. Please visit https://gerrit.osmocom.org/7754 to look at the new patch set (#3). add update_expected_results_from_jenkins.sh Change-Id: Ib3ad8554fc59112c11325425ccd70ca1dbd8c123 --- A update_expected_results_from_jenkins.sh 1 file changed, 53 insertions(+), 0 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-ttcn3-hacks refs/changes/54/7754/3 diff --git a/update_expected_results_from_jenkins.sh b/update_expected_results_from_jenkins.sh new file mode 100755 index 0000000..7677cff --- /dev/null +++ b/update_expected_results_from_jenkins.sh @@ -0,0 +1,53 @@ +#!/bin/sh + +# Download the latest junit xml results from the jenkins.osmocom.org workspaces. +# Usage: +# - have a clean git clone of osmo-ttcn3-hacks +# - have internet access to jenkins.osmocom.org +# - ./update_expected_results_from_jenkins.sh +# - git diff, make sure that you understand and approve of each and every change +# - git commit -a -m "update expected results" + +not_found="" + +if [ -n "$(git status | grep 'modified:')" ]; then + echo "Your git clone contains modifications! This is not recommended." + echo "Hit enter to continue anyway." + read enter_to_continue +fi + +for target in */expected-results.xml; do + project="$(basename "$(dirname "$target")")" + + # shims for naming exceptions + ws_path="ttcn3-${project}-test/ws/logs/${project}-tester" + if [ "x$project" = "xggsn_tests" ]; then + project="ggsn" + elif [ "x$project" = "xsysinfo" ]; then + ws_path="ttcn3-nitb-sysinfo/ws/logs/ttcn3-nitb-sysinfo" + fi + + # find out the junit-NN.xml name + dir_url="https://jenkins.osmocom.org/jenkins/job/$ws_path/" + junit_file="$(wget -q -O - "$dir_url" | grep 'junit-xml-[0-9]*\.log' | tail -n 1 | sed 's/.*\(junit-xml-[0-9]*\.log\).*/\1/')" + + # update + target_new="$target.new" + if ! wget -O "$target_new" "${dir_url}$junit_file"; then + not_found="$not_found $project" + rm -f "$target_new" + else + mv "$target_new" "$target" + fi +done + +./mask_expected_results.sh + +echo " + + MAKE SURE THE RESULTING CHANGES ARE SANE BEFORE COMMITTING! + +" +if [ -n "$not_found" ]; then + echo "Could not update: $not_found" +fi -- To view, visit https://gerrit.osmocom.org/7754 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newpatchset Gerrit-Change-Id: Ib3ad8554fc59112c11325425ccd70ca1dbd8c123 Gerrit-PatchSet: 3 Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Neels Hofmeyr From gerrit-no-reply at lists.osmocom.org Wed Apr 11 18:14:39 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Wed, 11 Apr 2018 18:14:39 +0000 Subject: [PATCH] libosmocore[master]: msgb: msgb_get: Drop unneeded tmp var Message-ID: Review at https://gerrit.osmocom.org/7768 msgb: msgb_get: Drop unneeded tmp var Change-Id: I27bb2ab59408c9cd1363b3b5acb2263128c55732 --- M include/osmocom/core/msgb.h 1 file changed, 1 insertion(+), 2 deletions(-) git pull ssh://gerrit.osmocom.org:29418/libosmocore refs/changes/68/7768/1 diff --git a/include/osmocom/core/msgb.h b/include/osmocom/core/msgb.h index 374ddbe..a983195 100644 --- a/include/osmocom/core/msgb.h +++ b/include/osmocom/core/msgb.h @@ -230,13 +230,12 @@ */ static inline unsigned char *msgb_get(struct msgb *msgb, unsigned int len) { - unsigned char *tmp = msgb->tail - len; if (msgb_length(msgb) < len) MSGB_ABORT(msgb, "msgb too small to get %u (len %u)\n", len, msgb_length(msgb)); msgb->tail -= len; msgb->len -= len; - return tmp; + return msgb->tail; } /*! remove uint8 from end of message -- To view, visit https://gerrit.osmocom.org/7768 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I27bb2ab59408c9cd1363b3b5acb2263128c55732 Gerrit-PatchSet: 1 Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol From gerrit-no-reply at lists.osmocom.org Wed Apr 11 18:14:40 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Wed, 11 Apr 2018 18:14:40 +0000 Subject: [PATCH] libosmocore[master]: msgb: msgb_pull: Abort when pulling more than avail size Message-ID: Review at https://gerrit.osmocom.org/7769 msgb: msgb_pull: Abort when pulling more than avail size Change-Id: I512ff2035ae7a929e6c96df82938cc1ddbcc4e2a --- M include/osmocom/core/msgb.h 1 file changed, 3 insertions(+), 0 deletions(-) git pull ssh://gerrit.osmocom.org:29418/libosmocore refs/changes/69/7769/1 diff --git a/include/osmocom/core/msgb.h b/include/osmocom/core/msgb.h index a983195..a8dc205 100644 --- a/include/osmocom/core/msgb.h +++ b/include/osmocom/core/msgb.h @@ -331,6 +331,9 @@ */ static inline unsigned char *msgb_pull(struct msgb *msgb, unsigned int len) { + if (msgb_length(msgb) < len) + MSGB_ABORT(msgb, "msgb too small to pull %u (len %u)\n", + len, msgb_length(msgb)); msgb->len -= len; return msgb->data += len; } -- To view, visit https://gerrit.osmocom.org/7769 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I512ff2035ae7a929e6c96df82938cc1ddbcc4e2a Gerrit-PatchSet: 1 Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol From gerrit-no-reply at lists.osmocom.org Wed Apr 11 18:57:44 2018 From: gerrit-no-reply at lists.osmocom.org (Stefan Sperling) Date: Wed, 11 Apr 2018 18:57:44 +0000 Subject: [PATCH] osmo-bsc[master]: trigger acc ramping on state-changed-event reports Message-ID: Review at https://gerrit.osmocom.org/7770 trigger acc ramping on state-changed-event reports Trigger ACC ramping not only when an Administrative State Change ACK is received from a BTS, but also when an administrative state change is reported for TRX 0 in a State Changed Event Report. This should allow ACC ramping to work with any BTS which reports an administrative state change to 'unlock' using either of these OML messages. Tested with a nanobts. The nanobts is known to send both of these OML messages in quick succession, so do not re-trigger ramping if it's already in progress. Change-Id: I097a113a3a63de02bcb8277020beb59cf485b176 Related: OS#2591 --- M src/libbsc/acc_ramp.c 1 file changed, 10 insertions(+), 2 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-bsc refs/changes/70/7770/1 diff --git a/src/libbsc/acc_ramp.c b/src/libbsc/acc_ramp.c index 54626ad..9e66f31 100644 --- a/src/libbsc/acc_ramp.c +++ b/src/libbsc/acc_ramp.c @@ -144,7 +144,8 @@ struct acc_ramp *acc_ramp = handler_data; struct gsm_bts_trx *trx = NULL; - if (signal != S_NM_STATECHG_ADM) + /* Handled signals map to an Administrative State Change ACK, or a State Changed Event Report. */ + if (signal != S_NM_STATECHG_ADM && signal != S_NM_STATECHG_OPER) return 0; if (nsd->obj_class != NM_OC_RADIO_CARRIER) @@ -163,7 +164,14 @@ /* Trigger or abort ACC ramping based on the new 'RF lock' state of this TRX. */ switch (nsd->new_state->administrative) { case NM_STATE_UNLOCKED: - acc_ramp_trigger(acc_ramp); + /* + * Do not re-trigger ACC ramping if ramping is already in progress. + * A BTS might send several "unlock" change events: One in the Administrative + * State Change ACK, and/or another in a State Changed Event Report. + * For instance, the nanobts is known to send both. + */ + if (!osmo_timer_pending(&acc_ramp->step_timer)) + acc_ramp_trigger(acc_ramp); break; case NM_STATE_LOCKED: case NM_STATE_SHUTDOWN: -- To view, visit https://gerrit.osmocom.org/7770 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I097a113a3a63de02bcb8277020beb59cf485b176 Gerrit-PatchSet: 1 Gerrit-Project: osmo-bsc Gerrit-Branch: master Gerrit-Owner: Stefan Sperling From gerrit-no-reply at lists.osmocom.org Wed Apr 11 19:03:25 2018 From: gerrit-no-reply at lists.osmocom.org (Stefan Sperling) Date: Wed, 11 Apr 2018 19:03:25 +0000 Subject: [PATCH] osmo-bsc[master]: rename helper functions in the acc ramp code to avoid confusion In-Reply-To: References: Message-ID: Hello Pau Espin Pedrol, Jenkins Builder, I'd like you to reexamine a change. Please visit https://gerrit.osmocom.org/7750 to look at the new patch set (#2). rename helper functions in the acc ramp code to avoid confusion The word 'enabled' was used in two contexts: Whether ACC ramp is enabled as a feature, and whether a particular access control class is permantly allowed/disallowed via VTY configuration. Rename some helper functions to avoid the use of the word 'enabled' in the latter context. Change-Id: Ia67e84270cd50f4c55b8cf616ca38b00482f765c Related: OS#2591 --- M src/libbsc/acc_ramp.c 1 file changed, 13 insertions(+), 13 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-bsc refs/changes/50/7750/2 diff --git a/src/libbsc/acc_ramp.c b/src/libbsc/acc_ramp.c index 54626ad..6d9be59 100644 --- a/src/libbsc/acc_ramp.c +++ b/src/libbsc/acc_ramp.c @@ -32,12 +32,12 @@ * Check if an ACC has been permanently barred for a BTS, * e.g. with the 'rach access-control-class' VTY command. */ -static bool acc_is_enabled(struct gsm_bts *bts, unsigned int acc) +static bool acc_is_permanently_barred(struct gsm_bts *bts, unsigned int acc) { OSMO_ASSERT(acc >= 0 && acc <= 9); if (acc == 8 || acc == 9) - return (bts->si_common.rach_control.t2 & (1 << (acc - 8))) == 0; - return (bts->si_common.rach_control.t3 & (1 << (acc))) == 0; + return (bts->si_common.rach_control.t2 & (1 << (acc - 8))); + return (bts->si_common.rach_control.t3 & (1 << (acc))); } static void allow_one_acc(struct acc_ramp *acc_ramp, unsigned int acc) @@ -56,20 +56,20 @@ acc_ramp->barred_accs |= (1 << acc); } -static void barr_all_enabled_accs(struct acc_ramp *acc_ramp) +static void barr_all_accs(struct acc_ramp *acc_ramp) { unsigned int acc; for (acc = 0; acc < 10; acc++) { - if (acc_is_enabled(acc_ramp->bts, acc)) + if (!acc_is_permanently_barred(acc_ramp->bts, acc)) barr_one_acc(acc_ramp, acc); } } -static void allow_all_enabled_accs(struct acc_ramp *acc_ramp) +static void allow_all_accs(struct acc_ramp *acc_ramp) { unsigned int acc; for (acc = 0; acc < 10; acc++) { - if (acc_is_enabled(acc_ramp->bts, acc)) + if (!acc_is_permanently_barred(acc_ramp->bts, acc)) allow_one_acc(acc_ramp, acc); } } @@ -102,7 +102,7 @@ /* Shortcut in case we only do one ramping step. */ if (acc_ramp->step_size == ACC_RAMP_STEP_SIZE_MAX) { - allow_all_enabled_accs(acc_ramp); + allow_all_accs(acc_ramp); gsm_bts_set_system_infos(acc_ramp->bts); return; } @@ -113,14 +113,14 @@ if (idx > 0) { /* One of ACC0-ACC7 is still bared. */ unsigned int acc = idx - 1; - if (acc_is_enabled(acc_ramp->bts, acc)) + if (!acc_is_permanently_barred(acc_ramp->bts, acc)) allow_one_acc(acc_ramp, acc); } else { idx = ffs(acc_ramp_get_barred_t2(acc_ramp)); if (idx == 1 || idx == 2) { /* ACC8 or ACC9 is still barred. */ unsigned int acc = idx - 1 + 8; - if (acc_is_enabled(acc_ramp->bts, acc)) + if (!acc_is_permanently_barred(acc_ramp->bts, acc)) allow_one_acc(acc_ramp, acc); } else { /* All ACCs are now allowed. */ @@ -196,7 +196,7 @@ acc_ramp->step_size = ACC_RAMP_STEP_SIZE_DEFAULT; acc_ramp->step_interval_sec = ACC_RAMP_STEP_INTERVAL_MIN; acc_ramp->step_interval_is_fixed = false; - allow_all_enabled_accs(acc_ramp); + allow_all_accs(acc_ramp); osmo_timer_setup(&acc_ramp->step_timer, do_acc_ramping_step, acc_ramp); osmo_signal_register_handler(SS_NM, acc_ramp_nm_sig_cb, acc_ramp); } @@ -262,7 +262,7 @@ if (acc_ramp_is_enabled(acc_ramp)) { /* Set all available ACCs to barred and start ramping up. */ - barr_all_enabled_accs(acc_ramp); + barr_all_accs(acc_ramp); do_acc_ramping_step(acc_ramp); } } @@ -276,5 +276,5 @@ if (osmo_timer_pending(&acc_ramp->step_timer)) osmo_timer_del(&acc_ramp->step_timer); - allow_all_enabled_accs(acc_ramp); + allow_all_accs(acc_ramp); } -- To view, visit https://gerrit.osmocom.org/7750 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newpatchset Gerrit-Change-Id: Ia67e84270cd50f4c55b8cf616ca38b00482f765c Gerrit-PatchSet: 2 Gerrit-Project: osmo-bsc Gerrit-Branch: master Gerrit-Owner: Stefan Sperling Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Pau Espin Pedrol From gerrit-no-reply at lists.osmocom.org Wed Apr 11 21:15:21 2018 From: gerrit-no-reply at lists.osmocom.org (Vadim Yanitskiy) Date: Wed, 11 Apr 2018 21:15:21 +0000 Subject: libosmocore[master]: msgb: msgb_get: Drop unneeded tmp var In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+1 -- To view, visit https://gerrit.osmocom.org/7768 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I27bb2ab59408c9cd1363b3b5acb2263128c55732 Gerrit-PatchSet: 1 Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Vadim Yanitskiy Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Wed Apr 11 21:16:30 2018 From: gerrit-no-reply at lists.osmocom.org (Vadim Yanitskiy) Date: Wed, 11 Apr 2018 21:16:30 +0000 Subject: libosmocore[master]: msgb: msgb_pull: Abort when pulling more than avail size In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+1 -- To view, visit https://gerrit.osmocom.org/7769 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I512ff2035ae7a929e6c96df82938cc1ddbcc4e2a Gerrit-PatchSet: 1 Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Vadim Yanitskiy Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Wed Apr 11 21:25:25 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Wed, 11 Apr 2018 21:25:25 +0000 Subject: libosmocore[master]: msgb: msgb_pull: Abort when pulling more than avail size In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7769 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I512ff2035ae7a929e6c96df82938cc1ddbcc4e2a Gerrit-PatchSet: 1 Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Vadim Yanitskiy Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Wed Apr 11 21:26:09 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Wed, 11 Apr 2018 21:26:09 +0000 Subject: libosmocore[master]: msgb: msgb_get: Drop unneeded tmp var In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7768 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I27bb2ab59408c9cd1363b3b5acb2263128c55732 Gerrit-PatchSet: 1 Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Vadim Yanitskiy Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Wed Apr 11 21:26:14 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Wed, 11 Apr 2018 21:26:14 +0000 Subject: [MERGED] libosmocore[master]: msgb: msgb_get: Drop unneeded tmp var In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: msgb: msgb_get: Drop unneeded tmp var ...................................................................... msgb: msgb_get: Drop unneeded tmp var Change-Id: I27bb2ab59408c9cd1363b3b5acb2263128c55732 --- M include/osmocom/core/msgb.h 1 file changed, 1 insertion(+), 2 deletions(-) Approvals: Vadim Yanitskiy: Looks good to me, but someone else must approve Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/include/osmocom/core/msgb.h b/include/osmocom/core/msgb.h index 374ddbe..a983195 100644 --- a/include/osmocom/core/msgb.h +++ b/include/osmocom/core/msgb.h @@ -230,13 +230,12 @@ */ static inline unsigned char *msgb_get(struct msgb *msgb, unsigned int len) { - unsigned char *tmp = msgb->tail - len; if (msgb_length(msgb) < len) MSGB_ABORT(msgb, "msgb too small to get %u (len %u)\n", len, msgb_length(msgb)); msgb->tail -= len; msgb->len -= len; - return tmp; + return msgb->tail; } /*! remove uint8 from end of message -- To view, visit https://gerrit.osmocom.org/7768 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: I27bb2ab59408c9cd1363b3b5acb2263128c55732 Gerrit-PatchSet: 1 Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Vadim Yanitskiy From gerrit-no-reply at lists.osmocom.org Wed Apr 11 21:26:14 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Wed, 11 Apr 2018 21:26:14 +0000 Subject: [MERGED] libosmocore[master]: msgb: msgb_pull: Abort when pulling more than avail size In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: msgb: msgb_pull: Abort when pulling more than avail size ...................................................................... msgb: msgb_pull: Abort when pulling more than avail size Change-Id: I512ff2035ae7a929e6c96df82938cc1ddbcc4e2a --- M include/osmocom/core/msgb.h 1 file changed, 3 insertions(+), 0 deletions(-) Approvals: Vadim Yanitskiy: Looks good to me, but someone else must approve Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/include/osmocom/core/msgb.h b/include/osmocom/core/msgb.h index a983195..a8dc205 100644 --- a/include/osmocom/core/msgb.h +++ b/include/osmocom/core/msgb.h @@ -331,6 +331,9 @@ */ static inline unsigned char *msgb_pull(struct msgb *msgb, unsigned int len) { + if (msgb_length(msgb) < len) + MSGB_ABORT(msgb, "msgb too small to pull %u (len %u)\n", + len, msgb_length(msgb)); msgb->len -= len; return msgb->data += len; } -- To view, visit https://gerrit.osmocom.org/7769 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: I512ff2035ae7a929e6c96df82938cc1ddbcc4e2a Gerrit-PatchSet: 1 Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Vadim Yanitskiy From gerrit-no-reply at lists.osmocom.org Wed Apr 11 21:26:47 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Wed, 11 Apr 2018 21:26:47 +0000 Subject: osmo-bsc[master]: rename helper functions in the acc ramp code to avoid confusion In-Reply-To: References: Message-ID: Patch Set 2: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7750 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Ia67e84270cd50f4c55b8cf616ca38b00482f765c Gerrit-PatchSet: 2 Gerrit-Project: osmo-bsc Gerrit-Branch: master Gerrit-Owner: Stefan Sperling Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Pau Espin Pedrol Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Wed Apr 11 21:26:49 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Wed, 11 Apr 2018 21:26:49 +0000 Subject: [MERGED] osmo-bsc[master]: rename helper functions in the acc ramp code to avoid confusion In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: rename helper functions in the acc ramp code to avoid confusion ...................................................................... rename helper functions in the acc ramp code to avoid confusion The word 'enabled' was used in two contexts: Whether ACC ramp is enabled as a feature, and whether a particular access control class is permantly allowed/disallowed via VTY configuration. Rename some helper functions to avoid the use of the word 'enabled' in the latter context. Change-Id: Ia67e84270cd50f4c55b8cf616ca38b00482f765c Related: OS#2591 --- M src/libbsc/acc_ramp.c 1 file changed, 13 insertions(+), 13 deletions(-) Approvals: Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/src/libbsc/acc_ramp.c b/src/libbsc/acc_ramp.c index 54626ad..6d9be59 100644 --- a/src/libbsc/acc_ramp.c +++ b/src/libbsc/acc_ramp.c @@ -32,12 +32,12 @@ * Check if an ACC has been permanently barred for a BTS, * e.g. with the 'rach access-control-class' VTY command. */ -static bool acc_is_enabled(struct gsm_bts *bts, unsigned int acc) +static bool acc_is_permanently_barred(struct gsm_bts *bts, unsigned int acc) { OSMO_ASSERT(acc >= 0 && acc <= 9); if (acc == 8 || acc == 9) - return (bts->si_common.rach_control.t2 & (1 << (acc - 8))) == 0; - return (bts->si_common.rach_control.t3 & (1 << (acc))) == 0; + return (bts->si_common.rach_control.t2 & (1 << (acc - 8))); + return (bts->si_common.rach_control.t3 & (1 << (acc))); } static void allow_one_acc(struct acc_ramp *acc_ramp, unsigned int acc) @@ -56,20 +56,20 @@ acc_ramp->barred_accs |= (1 << acc); } -static void barr_all_enabled_accs(struct acc_ramp *acc_ramp) +static void barr_all_accs(struct acc_ramp *acc_ramp) { unsigned int acc; for (acc = 0; acc < 10; acc++) { - if (acc_is_enabled(acc_ramp->bts, acc)) + if (!acc_is_permanently_barred(acc_ramp->bts, acc)) barr_one_acc(acc_ramp, acc); } } -static void allow_all_enabled_accs(struct acc_ramp *acc_ramp) +static void allow_all_accs(struct acc_ramp *acc_ramp) { unsigned int acc; for (acc = 0; acc < 10; acc++) { - if (acc_is_enabled(acc_ramp->bts, acc)) + if (!acc_is_permanently_barred(acc_ramp->bts, acc)) allow_one_acc(acc_ramp, acc); } } @@ -102,7 +102,7 @@ /* Shortcut in case we only do one ramping step. */ if (acc_ramp->step_size == ACC_RAMP_STEP_SIZE_MAX) { - allow_all_enabled_accs(acc_ramp); + allow_all_accs(acc_ramp); gsm_bts_set_system_infos(acc_ramp->bts); return; } @@ -113,14 +113,14 @@ if (idx > 0) { /* One of ACC0-ACC7 is still bared. */ unsigned int acc = idx - 1; - if (acc_is_enabled(acc_ramp->bts, acc)) + if (!acc_is_permanently_barred(acc_ramp->bts, acc)) allow_one_acc(acc_ramp, acc); } else { idx = ffs(acc_ramp_get_barred_t2(acc_ramp)); if (idx == 1 || idx == 2) { /* ACC8 or ACC9 is still barred. */ unsigned int acc = idx - 1 + 8; - if (acc_is_enabled(acc_ramp->bts, acc)) + if (!acc_is_permanently_barred(acc_ramp->bts, acc)) allow_one_acc(acc_ramp, acc); } else { /* All ACCs are now allowed. */ @@ -196,7 +196,7 @@ acc_ramp->step_size = ACC_RAMP_STEP_SIZE_DEFAULT; acc_ramp->step_interval_sec = ACC_RAMP_STEP_INTERVAL_MIN; acc_ramp->step_interval_is_fixed = false; - allow_all_enabled_accs(acc_ramp); + allow_all_accs(acc_ramp); osmo_timer_setup(&acc_ramp->step_timer, do_acc_ramping_step, acc_ramp); osmo_signal_register_handler(SS_NM, acc_ramp_nm_sig_cb, acc_ramp); } @@ -262,7 +262,7 @@ if (acc_ramp_is_enabled(acc_ramp)) { /* Set all available ACCs to barred and start ramping up. */ - barr_all_enabled_accs(acc_ramp); + barr_all_accs(acc_ramp); do_acc_ramping_step(acc_ramp); } } @@ -276,5 +276,5 @@ if (osmo_timer_pending(&acc_ramp->step_timer)) osmo_timer_del(&acc_ramp->step_timer); - allow_all_enabled_accs(acc_ramp); + allow_all_accs(acc_ramp); } -- To view, visit https://gerrit.osmocom.org/7750 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: Ia67e84270cd50f4c55b8cf616ca38b00482f765c Gerrit-PatchSet: 2 Gerrit-Project: osmo-bsc Gerrit-Branch: master Gerrit-Owner: Stefan Sperling Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Pau Espin Pedrol From gerrit-no-reply at lists.osmocom.org Wed Apr 11 21:27:45 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Wed, 11 Apr 2018 21:27:45 +0000 Subject: osmo-bsc[master]: trigger acc ramping on state-changed-event reports In-Reply-To: References: Message-ID: Patch Set 1: Please also test with osmo-bts -- To view, visit https://gerrit.osmocom.org/7770 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I097a113a3a63de02bcb8277020beb59cf485b176 Gerrit-PatchSet: 1 Gerrit-Project: osmo-bsc Gerrit-Branch: master Gerrit-Owner: Stefan Sperling Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Wed Apr 11 21:28:01 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Wed, 11 Apr 2018 21:28:01 +0000 Subject: osmo-ttcn3-hacks[master]: add mask_expected_results.sh In-Reply-To: References: Message-ID: Patch Set 2: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7752 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I785e126b1f5afddd1b722bc5e922ed90970efa8a Gerrit-PatchSet: 2 Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Neels Hofmeyr Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Wed Apr 11 21:28:05 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Wed, 11 Apr 2018 21:28:05 +0000 Subject: osmo-ttcn3-hacks[master]: mask timestamps and source file nrs in expected-results.xml ... In-Reply-To: References: Message-ID: Patch Set 2: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7753 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Ic9f006aa8db1b477598605e0525faeb229b03641 Gerrit-PatchSet: 2 Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Neels Hofmeyr Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Wed Apr 11 21:28:09 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Wed, 11 Apr 2018 21:28:09 +0000 Subject: osmo-ttcn3-hacks[master]: add update_expected_results_from_jenkins.sh In-Reply-To: References: Message-ID: Patch Set 3: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7754 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Ib3ad8554fc59112c11325425ccd70ca1dbd8c123 Gerrit-PatchSet: 3 Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Neels Hofmeyr Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Wed Apr 11 21:28:11 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Wed, 11 Apr 2018 21:28:11 +0000 Subject: osmo-ttcn3-hacks[master]: bsc, msc: update expected results In-Reply-To: References: Message-ID: Patch Set 3: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7755 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Ib3a36efeb086fd995d7dad4e040f5a46b1b1ca0a Gerrit-PatchSet: 3 Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Wed Apr 11 21:28:13 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Wed, 11 Apr 2018 21:28:13 +0000 Subject: [MERGED] osmo-ttcn3-hacks[master]: bsc, msc: update expected results In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: bsc, msc: update expected results ...................................................................... bsc, msc: update expected results Mark TC_paging_imsi_a_reset fixed. Add various new tests. Change-Id: Ib3a36efeb086fd995d7dad4e040f5a46b1b1ca0a --- M bsc/expected-results.xml M msc/expected-results.xml 2 files changed, 14 insertions(+), 8 deletions(-) Approvals: Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/bsc/expected-results.xml b/bsc/expected-results.xml index a2f9d47..8cafaa5 100644 --- a/bsc/expected-results.xml +++ b/bsc/expected-results.xml @@ -1,5 +1,5 @@ - + @@ -61,12 +61,7 @@ - - Received PAGING after A-RESET - BSC_Tests.ttcn:MASKED BSC_Tests control part - BSC_Tests.ttcn:MASKED TC_paging_imsi_a_reset testcase - - + @@ -92,4 +87,8 @@ BSC_Tests.ttcn:MASKED TC_ms_rel_ind_does_not_cause_bssmap_reset testcase + + + + diff --git a/msc/expected-results.xml b/msc/expected-results.xml index 54d1f5f..48ab12d 100644 --- a/msc/expected-results.xml +++ b/msc/expected-results.xml @@ -1,5 +1,5 @@ - + @@ -106,5 +106,12 @@ + + + Unexpected SMS related PDU from MSC + MSC_Tests.ttcn:MASKED MSC_Tests control part + MSC_Tests.ttcn:MASKED TC_lu_and_mt_sms testcase + + -- To view, visit https://gerrit.osmocom.org/7755 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: Ib3a36efeb086fd995d7dad4e040f5a46b1b1ca0a Gerrit-PatchSet: 3 Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder From gerrit-no-reply at lists.osmocom.org Wed Apr 11 21:28:13 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Wed, 11 Apr 2018 21:28:13 +0000 Subject: [MERGED] osmo-ttcn3-hacks[master]: add update_expected_results_from_jenkins.sh In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: add update_expected_results_from_jenkins.sh ...................................................................... add update_expected_results_from_jenkins.sh Change-Id: Ib3ad8554fc59112c11325425ccd70ca1dbd8c123 --- A update_expected_results_from_jenkins.sh 1 file changed, 53 insertions(+), 0 deletions(-) Approvals: Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/update_expected_results_from_jenkins.sh b/update_expected_results_from_jenkins.sh new file mode 100755 index 0000000..7677cff --- /dev/null +++ b/update_expected_results_from_jenkins.sh @@ -0,0 +1,53 @@ +#!/bin/sh + +# Download the latest junit xml results from the jenkins.osmocom.org workspaces. +# Usage: +# - have a clean git clone of osmo-ttcn3-hacks +# - have internet access to jenkins.osmocom.org +# - ./update_expected_results_from_jenkins.sh +# - git diff, make sure that you understand and approve of each and every change +# - git commit -a -m "update expected results" + +not_found="" + +if [ -n "$(git status | grep 'modified:')" ]; then + echo "Your git clone contains modifications! This is not recommended." + echo "Hit enter to continue anyway." + read enter_to_continue +fi + +for target in */expected-results.xml; do + project="$(basename "$(dirname "$target")")" + + # shims for naming exceptions + ws_path="ttcn3-${project}-test/ws/logs/${project}-tester" + if [ "x$project" = "xggsn_tests" ]; then + project="ggsn" + elif [ "x$project" = "xsysinfo" ]; then + ws_path="ttcn3-nitb-sysinfo/ws/logs/ttcn3-nitb-sysinfo" + fi + + # find out the junit-NN.xml name + dir_url="https://jenkins.osmocom.org/jenkins/job/$ws_path/" + junit_file="$(wget -q -O - "$dir_url" | grep 'junit-xml-[0-9]*\.log' | tail -n 1 | sed 's/.*\(junit-xml-[0-9]*\.log\).*/\1/')" + + # update + target_new="$target.new" + if ! wget -O "$target_new" "${dir_url}$junit_file"; then + not_found="$not_found $project" + rm -f "$target_new" + else + mv "$target_new" "$target" + fi +done + +./mask_expected_results.sh + +echo " + + MAKE SURE THE RESULTING CHANGES ARE SANE BEFORE COMMITTING! + +" +if [ -n "$not_found" ]; then + echo "Could not update: $not_found" +fi -- To view, visit https://gerrit.osmocom.org/7754 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: Ib3ad8554fc59112c11325425ccd70ca1dbd8c123 Gerrit-PatchSet: 3 Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Neels Hofmeyr From gerrit-no-reply at lists.osmocom.org Wed Apr 11 21:28:14 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Wed, 11 Apr 2018 21:28:14 +0000 Subject: [MERGED] osmo-ttcn3-hacks[master]: mask timestamps and source file nrs in expected-results.xml ... In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: mask timestamps and source file nrs in expected-results.xml files ...................................................................... mask timestamps and source file nrs in expected-results.xml files Prepare for upcoming updates with concise diffs. Change-Id: Ic9f006aa8db1b477598605e0525faeb229b03641 --- M bsc/expected-results.xml M ggsn_tests/expected-results.xml M hlr/expected-results.xml M mgw/expected-results.xml M msc/expected-results.xml M sgsn/expected-results.xml M sip/expected-results.xml M sysinfo/expected-results.xml 8 files changed, 278 insertions(+), 278 deletions(-) Approvals: Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/bsc/expected-results.xml b/bsc/expected-results.xml index 18a9a20..a2f9d47 100644 --- a/bsc/expected-results.xml +++ b/bsc/expected-results.xml @@ -1,95 +1,95 @@ - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + Timeout expecting { msg_disc := { msg_group := RSL_MDISC_CCHAN (6), transparent := false }, msg_type := RSL_MT_PAGING_CMD (21), ies := { { iei := ?, body := { chan_nr := { u := { ch0 := RSL_CHAN_NR_PCH_AGCH (18) }, tn := ? } } }, { iei := ?, body := { paging_group := ? } }, { iei := ?, body := { ms_identity := { len := ?, payload := ? } } }, * } } - BSC_Tests.ttcn:2203 BSC_Tests control part - BSC_Tests.ttcn:1131 TC_paging_imsi_nochan_lai testcase + BSC_Tests.ttcn:MASKED BSC_Tests control part + BSC_Tests.ttcn:MASKED TC_paging_imsi_nochan_lai testcase - + - - - - - - - - + + + + + + + + Received PAGING after A-RESET - BSC_Tests.ttcn:2212 BSC_Tests control part - BSC_Tests.ttcn:1306 TC_paging_imsi_a_reset testcase + BSC_Tests.ttcn:MASKED BSC_Tests control part + BSC_Tests.ttcn:MASKED TC_paging_imsi_a_reset testcase - - - - - - - - - - - - - - + + + + + + + + + + + + + + Timeout of T_guard - BSC_Tests.ttcn:2230 BSC_Tests control part - BSC_Tests.ttcn:2056 TC_bssmap_clear_does_not_cause_bssmap_reset testcase + BSC_Tests.ttcn:MASKED BSC_Tests control part + BSC_Tests.ttcn:MASKED TC_bssmap_clear_does_not_cause_bssmap_reset testcase - + Timeout of T_guard - BSC_Tests.ttcn:2231 BSC_Tests control part - BSC_Tests.ttcn:2115 TC_ms_rel_ind_does_not_cause_bssmap_reset testcase + BSC_Tests.ttcn:MASKED BSC_Tests control part + BSC_Tests.ttcn:MASKED TC_ms_rel_ind_does_not_cause_bssmap_reset testcase diff --git a/ggsn_tests/expected-results.xml b/ggsn_tests/expected-results.xml index bff953a..1e5da38 100644 --- a/ggsn_tests/expected-results.xml +++ b/ggsn_tests/expected-results.xml @@ -1,14 +1,14 @@ - - - - - - - - - - - - + + + + + + + + + + + + diff --git a/hlr/expected-results.xml b/hlr/expected-results.xml index 4d95479..94ea7cd 100644 --- a/hlr/expected-results.xml +++ b/hlr/expected-results.xml @@ -1,18 +1,18 @@ - - + + Unexpected SAI ERROR Cause - HLR_Tests.ttcn:562 HLR_Tests control part - HLR_Tests.ttcn:364 TC_gsup_sai_err_invalid_imsi testcase + HLR_Tests.ttcn:MASKED HLR_Tests control part + HLR_Tests.ttcn:MASKED TC_gsup_sai_err_invalid_imsi testcase - - - - - - - - - + + + + + + + + + diff --git a/mgw/expected-results.xml b/mgw/expected-results.xml index c67d5d9..0e9f0e8 100644 --- a/mgw/expected-results.xml +++ b/mgw/expected-results.xml @@ -1,36 +1,36 @@ - - + + no verdict - - - - - - - - - + + + + + + + + + - MGCP_Test.ttcn:887 MGCP_Test control part - MGCP_Test.ttcn:436 TC_crcx_illegal_double_lco testcase + MGCP_Test.ttcn:MASKED MGCP_Test control part + MGCP_Test.ttcn:MASKED TC_crcx_illegal_double_lco testcase - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + diff --git a/msc/expected-results.xml b/msc/expected-results.xml index ebda8a4..54d1f5f 100644 --- a/msc/expected-results.xml +++ b/msc/expected-results.xml @@ -1,110 +1,110 @@ - - - - - + + + + + Timeout waiting for ClearCommand/Release - MSC_Tests.ttcn:1832 MSC_Tests control part - MSC_Tests.ttcn:502 TC_lu_imsi_reject testcase + MSC_Tests.ttcn:MASKED MSC_Tests control part + MSC_Tests.ttcn:MASKED TC_lu_imsi_reject testcase - + Timeout waiting for ClearCommand/Release - MSC_Tests.ttcn:1833 MSC_Tests control part - MSC_Tests.ttcn:531 TC_lu_imsi_timeout_gsup testcase + MSC_Tests.ttcn:MASKED MSC_Tests control part + MSC_Tests.ttcn:MASKED TC_lu_imsi_timeout_gsup testcase - - - - - - + + + + + + Got a second Clear Command, only one expected - MSC_Tests.ttcn:1839 MSC_Tests control part - MSC_Tests.ttcn:704 TC_lu_clear_request testcase + MSC_Tests.ttcn:MASKED MSC_Tests control part + MSC_Tests.ttcn:MASKED TC_lu_clear_request testcase - - - - - - - + + + + + + + Timeout waiting for ClearCommand/Release - MSC_Tests.ttcn:1846 MSC_Tests control part - MSC_Tests.ttcn:909 TC_emerg_call_imei_reject testcase + MSC_Tests.ttcn:MASKED MSC_Tests control part + MSC_Tests.ttcn:MASKED TC_emerg_call_imei_reject testcase - - + + Timeout waiting for ClearCommand/Release - MSC_Tests.ttcn:1848 MSC_Tests control part - MSC_Tests.ttcn:946 TC_cm_serv_req_vgcs_reject testcase + MSC_Tests.ttcn:MASKED MSC_Tests control part + MSC_Tests.ttcn:MASKED TC_cm_serv_req_vgcs_reject testcase - + Timeout waiting for ClearCommand/Release - MSC_Tests.ttcn:1849 MSC_Tests control part - MSC_Tests.ttcn:967 TC_cm_serv_req_vbs_reject testcase + MSC_Tests.ttcn:MASKED MSC_Tests control part + MSC_Tests.ttcn:MASKED TC_cm_serv_req_vbs_reject testcase - + Timeout waiting for ClearCommand/Release - MSC_Tests.ttcn:1850 MSC_Tests control part - MSC_Tests.ttcn:988 TC_cm_serv_req_lcs_reject testcase + MSC_Tests.ttcn:MASKED MSC_Tests control part + MSC_Tests.ttcn:MASKED TC_cm_serv_req_lcs_reject testcase - + Timeout waiting for ClearCommand/Release - MSC_Tests.ttcn:1851 MSC_Tests control part - MSC_Tests.ttcn:1009 TC_cm_reest_req_reject testcase + MSC_Tests.ttcn:MASKED MSC_Tests control part + MSC_Tests.ttcn:MASKED TC_cm_reest_req_reject testcase - - - - + + + + Timeout waiting for ClearCommand or SCCP Release - MSC_Tests.ttcn:1855 MSC_Tests control part - MSC_Tests.ttcn:1131 TC_cl3_rnd_payload testcase + MSC_Tests.ttcn:MASKED MSC_Tests control part + MSC_Tests.ttcn:MASKED TC_cl3_rnd_payload testcase - + Timeout waiting for ClearCommand/Release - MSC_Tests.ttcn:1856 MSC_Tests control part - MSC_Tests.ttcn:1148 TC_establish_and_nothing testcase + MSC_Tests.ttcn:MASKED MSC_Tests control part + MSC_Tests.ttcn:MASKED TC_establish_and_nothing testcase - + Timeout waiting for ClearCommand/Release - MSC_Tests.ttcn:1857 MSC_Tests control part - MSC_Tests.ttcn:1172 TC_mo_setup_and_nothing testcase + MSC_Tests.ttcn:MASKED MSC_Tests control part + MSC_Tests.ttcn:MASKED TC_mo_setup_and_nothing testcase - - - + + + Timeout waiting for channel release - MSC_Tests.ttcn:1860 MSC_Tests control part - MSC_Tests.ttcn:1383 TC_mt_crcx_ran_reject testcase + MSC_Tests.ttcn:MASKED MSC_Tests control part + MSC_Tests.ttcn:MASKED TC_mt_crcx_ran_reject testcase - - + + - - - - - - - - - - - + + + + + + + + + + + diff --git a/sgsn/expected-results.xml b/sgsn/expected-results.xml index 502dde8..49ab60c 100644 --- a/sgsn/expected-results.xml +++ b/sgsn/expected-results.xml @@ -1,54 +1,54 @@ - - - - - + + + + + Tguard timeout - SGSN_Tests.ttcn:1157 SGSN_Tests control part - SGSN_Tests.ttcn:480 TC_attach_auth_sai_timeout testcase + SGSN_Tests.ttcn:MASKED SGSN_Tests control part + SGSN_Tests.ttcn:MASKED TC_attach_auth_sai_timeout testcase - + Tguard timeout - SGSN_Tests.ttcn:1158 SGSN_Tests control part - SGSN_Tests.ttcn:501 TC_attach_auth_sai_reject testcase + SGSN_Tests.ttcn:MASKED SGSN_Tests control part + SGSN_Tests.ttcn:MASKED TC_attach_auth_sai_reject testcase - + Tguard timeout - SGSN_Tests.ttcn:1159 SGSN_Tests control part - SGSN_Tests.ttcn:529 TC_attach_gsup_lu_timeout testcase + SGSN_Tests.ttcn:MASKED SGSN_Tests control part + SGSN_Tests.ttcn:MASKED TC_attach_gsup_lu_timeout testcase - + Tguard timeout - SGSN_Tests.ttcn:1160 SGSN_Tests control part - SGSN_Tests.ttcn:558 TC_attach_gsup_lu_reject testcase + SGSN_Tests.ttcn:MASKED SGSN_Tests control part + SGSN_Tests.ttcn:MASKED TC_attach_gsup_lu_reject testcase - - - - - - + + + + + + Dynamic test case error: Error message was received from MC: The connect operation refers to test component with component reference 77, which has already terminated. - + Dynamic test case error: Error message was received from MC: The connect operation refers to test component with component reference 83, which has already terminated. - - - - - - - - + + + + + + + + Tguard timeout - SGSN_Tests.ttcn:1175 SGSN_Tests control part - SGSN_Tests.ttcn:1148 TC_attach_pdp_act_user_deact_mt testcase + SGSN_Tests.ttcn:MASKED SGSN_Tests control part + SGSN_Tests.ttcn:MASKED TC_attach_pdp_act_user_deact_mt testcase diff --git a/sip/expected-results.xml b/sip/expected-results.xml index 54123a5..c704f85 100644 --- a/sip/expected-results.xml +++ b/sip/expected-results.xml @@ -1,7 +1,7 @@ - - - - - + + + + + diff --git a/sysinfo/expected-results.xml b/sysinfo/expected-results.xml index cea6f54..db2787d 100644 --- a/sysinfo/expected-results.xml +++ b/sysinfo/expected-results.xml @@ -1,69 +1,69 @@ - - - - + + + + No SI messages for TC=0! - + No SI messages for TC=0! - + No SI messages for TC=0! - - Test.ttcn:162: Dynamic test case error: testcase.stop + + Test.ttcn:MASKED: Dynamic test case error: testcase.stop - - - Test.ttcn:162: Dynamic test case error: testcase.stop + + + Test.ttcn:MASKED: Dynamic test case error: testcase.stop - - Test.ttcn:162: Dynamic test case error: testcase.stop + + Test.ttcn:MASKED: Dynamic test case error: testcase.stop - - Test.ttcn:478: Dynamic test case error: testcase.stop + + Test.ttcn:MASKED: Dynamic test case error: testcase.stop - - Test.ttcn:478: Dynamic test case error: testcase.stop + + Test.ttcn:MASKED: Dynamic test case error: testcase.stop - - Test.ttcn:478: Dynamic test case error: testcase.stop + + Test.ttcn:MASKED: Dynamic test case error: testcase.stop - - Test.ttcn:478: Dynamic test case error: testcase.stop + + Test.ttcn:MASKED: Dynamic test case error: testcase.stop - - Test.ttcn:478: Dynamic test case error: testcase.stop + + Test.ttcn:MASKED: Dynamic test case error: testcase.stop - - Test.ttcn:478: Dynamic test case error: testcase.stop + + Test.ttcn:MASKED: Dynamic test case error: testcase.stop - - Test.ttcn:478: Dynamic test case error: testcase.stop + + Test.ttcn:MASKED: Dynamic test case error: testcase.stop - - Test.ttcn:478: Dynamic test case error: testcase.stop + + Test.ttcn:MASKED: Dynamic test case error: testcase.stop - - Test.ttcn:478: Dynamic test case error: testcase.stop + + Test.ttcn:MASKED: Dynamic test case error: testcase.stop - - Test.ttcn:478: Dynamic test case error: testcase.stop + + Test.ttcn:MASKED: Dynamic test case error: testcase.stop - - Test.ttcn:478: Dynamic test case error: testcase.stop + + Test.ttcn:MASKED: Dynamic test case error: testcase.stop - - Test.ttcn:478: Dynamic test case error: testcase.stop + + Test.ttcn:MASKED: Dynamic test case error: testcase.stop - - Test.ttcn:478: Dynamic test case error: testcase.stop + + Test.ttcn:MASKED: Dynamic test case error: testcase.stop -- To view, visit https://gerrit.osmocom.org/7753 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: Ic9f006aa8db1b477598605e0525faeb229b03641 Gerrit-PatchSet: 2 Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Neels Hofmeyr From gerrit-no-reply at lists.osmocom.org Wed Apr 11 21:28:15 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Wed, 11 Apr 2018 21:28:15 +0000 Subject: [MERGED] osmo-ttcn3-hacks[master]: add mask_expected_results.sh In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: add mask_expected_results.sh ...................................................................... add mask_expected_results.sh Provide a script to mask timestamps and source file lines in expected results files: when updating expected changes, it is useful to see the exact semantic changes, not the timestamp and source file line changes in the git diff. Change-Id: I785e126b1f5afddd1b722bc5e922ed90970efa8a --- A mask_expected_results.sh 1 file changed, 7 insertions(+), 0 deletions(-) Approvals: Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/mask_expected_results.sh b/mask_expected_results.sh new file mode 100755 index 0000000..f679194 --- /dev/null +++ b/mask_expected_results.sh @@ -0,0 +1,7 @@ +#!/bin/sh +# to prevent diffs due to timing and source file lines, mask some numbers + +for target in */expected-results.xml; do + sed -i "s/time='[^']*'/time='MASKED'/g" "$target" + sed -i 's/ttcn:[0-9]\+/ttcn:MASKED/g' "$target" +done -- To view, visit https://gerrit.osmocom.org/7752 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: I785e126b1f5afddd1b722bc5e922ed90970efa8a Gerrit-PatchSet: 2 Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Neels Hofmeyr From gerrit-no-reply at lists.osmocom.org Wed Apr 11 21:28:31 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Wed, 11 Apr 2018 21:28:31 +0000 Subject: [MERGED] osmo-ci[master]: ansible: add role udhcpd: setup a udhcpd server In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: ansible: add role udhcpd: setup a udhcpd server ...................................................................... ansible: add role udhcpd: setup a udhcpd server Change-Id: Ia272ae9c2b245d0a06f84b91f50dd875d4488e02 --- A ansible/roles/udhcpd/README.md A ansible/roles/udhcpd/defaults/main.yml A ansible/roles/udhcpd/tasks/main.yml A ansible/roles/udhcpd/templates/etc/udhcpd.conf 4 files changed, 168 insertions(+), 0 deletions(-) Approvals: lynxis lazus: Verified Pau Espin Pedrol: Looks good to me, approved diff --git a/ansible/roles/udhcpd/README.md b/ansible/roles/udhcpd/README.md new file mode 100644 index 0000000..0d37661 --- /dev/null +++ b/ansible/roles/udhcpd/README.md @@ -0,0 +1,15 @@ +--- +Install and configure udhcpd. + +``` + - name: udhcpd + udhcpd_router: 10.42.42.1 + udhcpd_range_start: 10.42.42.230 + udhcpd_range_end: 10.42.42.230 + udhcpd_netmask: 255.255.255.0 + udhcpd_dns: 10.42.42.2 + udhcpd_interface: enp2s0 + udhcpd_static_leases: + - mac: 00:12:34:56:78:9a + ip: 10.42.42.53 +``` diff --git a/ansible/roles/udhcpd/defaults/main.yml b/ansible/roles/udhcpd/defaults/main.yml new file mode 100644 index 0000000..1f4ef47 --- /dev/null +++ b/ansible/roles/udhcpd/defaults/main.yml @@ -0,0 +1,16 @@ +--- + +udhcpd_range_start: 192.168.1.100 +udhcpd_range_end: 192.168.1.200 + +udhcpd_subnet: 255.255.255.0 +udhcpd_router: 192.168.1.1 +udhcpd_dns: "{{ udhcpd_router }}" + +# in seconds +# default: 10 days +udhcpd_lease_time: 864000 + +udhcpd_interface: eth0 + +udhcpd_static_leases: [] diff --git a/ansible/roles/udhcpd/tasks/main.yml b/ansible/roles/udhcpd/tasks/main.yml new file mode 100644 index 0000000..280a5ef --- /dev/null +++ b/ansible/roles/udhcpd/tasks/main.yml @@ -0,0 +1,14 @@ +--- +- name: udhcpd | update apt-cache + apt: + cache_valid_time: 3600 + update_cache: yes + +- name: udhcpd | install + apt: + name: udhcpd + +- name: configure udhcpd + template: + src: etc/udhcpd.conf + dest: /etc/udhcpd.conf diff --git a/ansible/roles/udhcpd/templates/etc/udhcpd.conf b/ansible/roles/udhcpd/templates/etc/udhcpd.conf new file mode 100644 index 0000000..d2df746 --- /dev/null +++ b/ansible/roles/udhcpd/templates/etc/udhcpd.conf @@ -0,0 +1,123 @@ +# {{ ansible_managed }} + +# The start and end of the IP lease block + +start {{ udhcpd_range_start }} #default: 192.168.0.20 +end {{ udhcpd_range_end }} #default: 192.168.0.254 + +opt dns {{ udhcpd_dns }} +option subnet {{ udhcpd_subnet }} +opt router {{ udhcpd_router }} +option domain local +option lease {{ udhcpd_lease_time }} # 10 days of seconds + + + +# The interface that udhcpd will use + +interface {{ udhcpd_interface }} #default: eth0 + + +# The maximim number of leases (includes addressesd reserved +# by OFFER's, DECLINE's, and ARP conficts + +#max_leases 254 #default: 254 + + +# If remaining is true (default), udhcpd will store the time +# remaining for each lease in the udhcpd leases file. This is +# for embedded systems that cannot keep time between reboots. +# If you set remaining to no, the absolute time that the lease +# expires at will be stored in the dhcpd.leases file. + +#remaining yes #default: yes + + +# The time period at which udhcpd will write out a dhcpd.leases +# file. If this is 0, udhcpd will never automatically write a +# lease file. (specified in seconds) + +#auto_time 7200 #default: 7200 (2 hours) + + +# The amount of time that an IP will be reserved (leased) for if a +# DHCP decline message is received (seconds). + +#decline_time 3600 #default: 3600 (1 hour) + + +# The amount of time that an IP will be reserved (leased) for if an +# ARP conflct occurs. (seconds + +#conflict_time 3600 #default: 3600 (1 hour) + + +# How long an offered address is reserved (leased) in seconds + +#offer_time 60 #default: 60 (1 minute) + +# If a lease to be given is below this value, the full lease time is +# instead used (seconds). + +#min_lease 60 #defult: 60 + + +# The location of the leases file + +#lease_file /var/lib/misc/udhcpd.leases #defualt: /var/lib/misc/udhcpd.leases + +# The location of the pid file +#pidfile /var/run/udhcpd.pid #default: /var/run/udhcpd.pid + +# Everytime udhcpd writes a leases file, the below script will be called. +# Useful for writing the lease file to flash every few hours. + +#notify_file #default: (no script) + +#notify_file dumpleases # <--- useful for debugging + +# The following are bootp specific options, setable by udhcpd. + +#siaddr 192.168.0.22 #default: 0.0.0.0 + +#sname zorak #default: (none) + +#boot_file /var/nfs_root #default: (none) + +# The remainer of options are DHCP options and can be specifed with the +# keyword 'opt' or 'option'. If an option can take multiple items, such +# as the dns option, they can be listed on the same line, or multiple +# lines. The only option with a default is 'lease'. + +# Currently supported options, for more info, see options.c +#opt subnet +#opt timezone +#opt router +#opt timesrv +#opt namesrv +#opt dns +#opt logsrv +#opt cookiesrv +#opt lprsrv +#opt bootsize +#opt domain +#opt swapsrv +#opt rootpath +#opt ipttl +#opt mtu +#opt broadcast +#opt wins +#opt lease +#opt ntpsrv +#opt tftp +#opt bootfile +#opt wpad +# opt wins 192.168.10.10 + +# Static leases map +#static_lease 00:60:08:11:CE:4E 192.168.0.54 +#static_lease 00:60:08:11:CE:3E 192.168.0.44 + +{% for lease in udhcpd_static_leases %} +static_lease {{ lease['mac'] }} {{ lease['ip'] }} +{% endfor %} -- To view, visit https://gerrit.osmocom.org/7735 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: Ia272ae9c2b245d0a06f84b91f50dd875d4488e02 Gerrit-PatchSet: 2 Gerrit-Project: osmo-ci Gerrit-Branch: master Gerrit-Owner: lynxis lazus Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Pau Espin Pedrol Gerrit-Reviewer: lynxis lazus From gerrit-no-reply at lists.osmocom.org Wed Apr 11 21:28:31 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Wed, 11 Apr 2018 21:28:31 +0000 Subject: [MERGED] osmo-ci[master]: ansible: hosts: gsm-tester: use ansible_host to have more re... In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: ansible: hosts: gsm-tester: use ansible_host to have more readable ansible output ...................................................................... ansible: hosts: gsm-tester: use ansible_host to have more readable ansible output Change-Id: Ia7b60ace8afd0e2cc47c535da1856d4f34fdd735 --- M ansible/hosts 1 file changed, 2 insertions(+), 4 deletions(-) Approvals: lynxis lazus: Verified Harald Welte: Looks good to me, approved diff --git a/ansible/hosts b/ansible/hosts index ea5dea4..6964a71 100644 --- a/ansible/hosts +++ b/ansible/hosts @@ -1,8 +1,6 @@ [gsm-tester] -# rnd -10.9.25.101 -# production -10.9.25.107 +osmo-gsm-tester-rnd ansible_host=10.9.25.101 +osmo-gsm-tester-prod ansible_host=10.9.25.107 [coverity-slaves] admin2-deb9build ansible_host=2a01:4f8:13b:828::1:300 -- To view, visit https://gerrit.osmocom.org/7734 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: Ia7b60ace8afd0e2cc47c535da1856d4f34fdd735 Gerrit-PatchSet: 2 Gerrit-Project: osmo-ci Gerrit-Branch: master Gerrit-Owner: lynxis lazus Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: lynxis lazus From gerrit-no-reply at lists.osmocom.org Wed Apr 11 21:28:31 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Wed, 11 Apr 2018 21:28:31 +0000 Subject: [MERGED] osmo-ci[master]: ansible: gsm-tester-modems: improve name In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: ansible: gsm-tester-modems: improve name ...................................................................... ansible: gsm-tester-modems: improve name Use same scheme as of gsm-tester-bts. This should improve readability. Change-Id: I4186baaf565442c96555b723622c93b1cbd9f4f7 --- M ansible/roles/gsm-tester-modems/tasks/main.yml 1 file changed, 3 insertions(+), 3 deletions(-) Approvals: lynxis lazus: Verified Pau Espin Pedrol: Looks good to me, but someone else must approve Harald Welte: Looks good to me, approved diff --git a/ansible/roles/gsm-tester-modems/tasks/main.yml b/ansible/roles/gsm-tester-modems/tasks/main.yml index 81c6446..d2213c6 100644 --- a/ansible/roles/gsm-tester-modems/tasks/main.yml +++ b/ansible/roles/gsm-tester-modems/tasks/main.yml @@ -1,15 +1,15 @@ --- # modems -- name: install gobi2000 packages +- name: gsm-tester-modems | gobi install apt dependencies apt: name: gobi-loader cache_valid_time: 3600 update_cache: yes -- name: gobi firmwares +- name: gsm-tester-modems | gobi create firmware directory file: path=/lib/firmware/gobi state=directory -- name: copy gobi firmwares +- name: gsm-tester-modems | gobi copy firmwares if available copy: src: "{{ item.file }}" dest: "/lib/firmware/{{ item.file }}" -- To view, visit https://gerrit.osmocom.org/7739 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: I4186baaf565442c96555b723622c93b1cbd9f4f7 Gerrit-PatchSet: 3 Gerrit-Project: osmo-ci Gerrit-Branch: master Gerrit-Owner: lynxis lazus Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Pau Espin Pedrol Gerrit-Reviewer: lynxis lazus From gerrit-no-reply at lists.osmocom.org Wed Apr 11 21:28:32 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Wed, 11 Apr 2018 21:28:32 +0000 Subject: [MERGED] osmo-ci[master]: ansible: gsm-tester: install sispmctl to control usb power s... In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: ansible: gsm-tester: install sispmctl to control usb power sockets ...................................................................... ansible: gsm-tester: install sispmctl to control usb power sockets Change-Id: Ie1af197d4b24e25196e10d2afa3ab8eea73ad729 --- M ansible/roles/gsm-tester/tasks/main.yml 1 file changed, 4 insertions(+), 0 deletions(-) Approvals: lynxis lazus: Verified Pau Espin Pedrol: Looks good to me, but someone else must approve Harald Welte: Looks good to me, approved diff --git a/ansible/roles/gsm-tester/tasks/main.yml b/ansible/roles/gsm-tester/tasks/main.yml index b6de075..f7eb1ee 100644 --- a/ansible/roles/gsm-tester/tasks/main.yml +++ b/ansible/roles/gsm-tester/tasks/main.yml @@ -242,3 +242,7 @@ copy: content: "maxsize 10M" dest: /etc/logrotate.d/maxsize + +- name: install sispmctl (usb power socket) + apt: + name: sispmctl -- To view, visit https://gerrit.osmocom.org/7740 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: Ie1af197d4b24e25196e10d2afa3ab8eea73ad729 Gerrit-PatchSet: 3 Gerrit-Project: osmo-ci Gerrit-Branch: master Gerrit-Owner: lynxis lazus Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Pau Espin Pedrol Gerrit-Reviewer: lynxis lazus From gerrit-no-reply at lists.osmocom.org Wed Apr 11 21:28:32 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Wed, 11 Apr 2018 21:28:32 +0000 Subject: [MERGED] osmo-ci[master]: ansible: setup-gsm-tester: use udhcpd as dhcp server In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: ansible: setup-gsm-tester: use udhcpd as dhcp server ...................................................................... ansible: setup-gsm-tester: use udhcpd as dhcp server Required for ip.access Change-Id: I5ae43ebcd3c87e625110d8ff6afa0476f4b1facf --- A ansible/host_vars/osmo-gsm-tester-prod.yml A ansible/host_vars/osmo-gsm-tester-rnd.yml M ansible/setup-gsm-tester.yml 3 files changed, 19 insertions(+), 0 deletions(-) Approvals: lynxis lazus: Verified Pau Espin Pedrol: Looks good to me, but someone else must approve Harald Welte: Looks good to me, approved diff --git a/ansible/host_vars/osmo-gsm-tester-prod.yml b/ansible/host_vars/osmo-gsm-tester-prod.yml new file mode 100644 index 0000000..e87d8fb --- /dev/null +++ b/ansible/host_vars/osmo-gsm-tester-prod.yml @@ -0,0 +1,6 @@ +--- +udhcpd_static_leases: + - mac: 00:02:95:00:52:ae + ip: 10.42.42.53 + - mac: 00:02:95:00:5a:a4 + ip: 10.42.42.54 diff --git a/ansible/host_vars/osmo-gsm-tester-rnd.yml b/ansible/host_vars/osmo-gsm-tester-rnd.yml new file mode 100644 index 0000000..b524752 --- /dev/null +++ b/ansible/host_vars/osmo-gsm-tester-rnd.yml @@ -0,0 +1,4 @@ +--- +udhcpd_static_leases: + - mac: 00:02:95:00:41:b3 + ip: 10.42.42.53 diff --git a/ansible/setup-gsm-tester.yml b/ansible/setup-gsm-tester.yml index 8232102..a1a0389 100644 --- a/ansible/setup-gsm-tester.yml +++ b/ansible/setup-gsm-tester.yml @@ -37,3 +37,12 @@ generic_slave: false tags: - jenkins-slave + + - name: udhcpd + udhcpd_router: 10.42.42.1 + udhcpd_range_start: 10.42.42.230 + udhcpd_range_end: 10.42.42.235 + udhcpd_subnet: 255.255.255.0 + udhcpd_dns: 10.42.42.2 + udhcpd_interface: enp2s0 + # udhcpd_static_leases is set via host_vars/* -- To view, visit https://gerrit.osmocom.org/7736 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: I5ae43ebcd3c87e625110d8ff6afa0476f4b1facf Gerrit-PatchSet: 3 Gerrit-Project: osmo-ci Gerrit-Branch: master Gerrit-Owner: lynxis lazus Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Pau Espin Pedrol Gerrit-Reviewer: lynxis lazus From gerrit-no-reply at lists.osmocom.org Wed Apr 11 21:28:32 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Wed, 11 Apr 2018 21:28:32 +0000 Subject: [MERGED] osmo-ci[master]: ansible: gsm-tester-bts: install ip.access dependencies In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: ansible: gsm-tester-bts: install ip.access dependencies ...................................................................... ansible: gsm-tester-bts: install ip.access dependencies Change-Id: I47f578c4b9bb7b1dc81ccf93a7e82a335f6968a2 --- A ansible/roles/gsm-tester-bts/README.md A ansible/roles/gsm-tester-bts/tasks/main.yml 2 files changed, 17 insertions(+), 0 deletions(-) Approvals: lynxis lazus: Verified Pau Espin Pedrol: Looks good to me, but someone else must approve Harald Welte: Looks good to me, approved diff --git a/ansible/roles/gsm-tester-bts/README.md b/ansible/roles/gsm-tester-bts/README.md new file mode 100644 index 0000000..161d0c7 --- /dev/null +++ b/ansible/roles/gsm-tester-bts/README.md @@ -0,0 +1,3 @@ +# gsm-tester-bts + +Install and configure to use certain bts'. diff --git a/ansible/roles/gsm-tester-bts/tasks/main.yml b/ansible/roles/gsm-tester-bts/tasks/main.yml new file mode 100644 index 0000000..4430a01 --- /dev/null +++ b/ansible/roles/gsm-tester-bts/tasks/main.yml @@ -0,0 +1,14 @@ +--- +- name: gsm-tester-bts | update apt-cache + apt: + cache_valid_time: 3600 + update_cache: yes + +- name: gsm-tester-bts | ip.access install apt dependencies + apt: + name: python3-usb + +- name: gsm-tester-bts | ip.access install pip3 dependencies + pip: + name: pysispm + executable: pip3 -- To view, visit https://gerrit.osmocom.org/7737 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: I47f578c4b9bb7b1dc81ccf93a7e82a335f6968a2 Gerrit-PatchSet: 3 Gerrit-Project: osmo-ci Gerrit-Branch: master Gerrit-Owner: lynxis lazus Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Pau Espin Pedrol Gerrit-Reviewer: lynxis lazus From gerrit-no-reply at lists.osmocom.org Wed Apr 11 21:28:32 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Wed, 11 Apr 2018 21:28:32 +0000 Subject: [MERGED] osmo-ci[master]: ansible: gsm-tester: move usrp tasks to gsm-tester-bts In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: ansible: gsm-tester: move usrp tasks to gsm-tester-bts ...................................................................... ansible: gsm-tester: move usrp tasks to gsm-tester-bts Change-Id: I9caebed94c3473051b82e2cdc35f6dfb9f862084 --- M ansible/roles/gsm-tester-bts/tasks/main.yml M ansible/roles/gsm-tester-modems/tasks/main.yml 2 files changed, 22 insertions(+), 22 deletions(-) Approvals: lynxis lazus: Verified Pau Espin Pedrol: Looks good to me, but someone else must approve Harald Welte: Looks good to me, approved diff --git a/ansible/roles/gsm-tester-bts/tasks/main.yml b/ansible/roles/gsm-tester-bts/tasks/main.yml index 4430a01..f51da6d 100644 --- a/ansible/roles/gsm-tester-bts/tasks/main.yml +++ b/ansible/roles/gsm-tester-bts/tasks/main.yml @@ -12,3 +12,25 @@ pip: name: pysispm executable: pip3 + +- name: gsm-tester-bts | usrp install apt dependecies + apt: + name: "{{ item }}" + cache_valid_time: 3600 + update_cache: yes + with_items: + - libuhd-dev + - uhd-host + register: uhd_installed + +- name: gsm-tester-bts | usrp download firmware + command: uhd_images_downloader + args: + creates: /usr/share/uhd/images + when: uhd_installed | changed + +- name: gsm-tester-bts | usrp allow jenkins to access + user: + name: jenkins + groups: usrp + append: yes diff --git a/ansible/roles/gsm-tester-modems/tasks/main.yml b/ansible/roles/gsm-tester-modems/tasks/main.yml index b766c73..81c6446 100644 --- a/ansible/roles/gsm-tester-modems/tasks/main.yml +++ b/ansible/roles/gsm-tester-modems/tasks/main.yml @@ -1,27 +1,5 @@ --- # modems -- name: install dependecies for usrp - apt: - name: "{{ item }}" - cache_valid_time: 3600 - update_cache: yes - with_items: - - libuhd-dev - - uhd-host - register: uhd_installed - -- name: download firmware for uhd/usrp - command: uhd_images_downloader - args: - creates: /usr/share/uhd/images - when: uhd_installed | changed - -- name: allow jenkins to access USRP - user: - name: jenkins - groups: usrp - append: yes - - name: install gobi2000 packages apt: name: gobi-loader -- To view, visit https://gerrit.osmocom.org/7738 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: I9caebed94c3473051b82e2cdc35f6dfb9f862084 Gerrit-PatchSet: 3 Gerrit-Project: osmo-ci Gerrit-Branch: master Gerrit-Owner: lynxis lazus Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Pau Espin Pedrol Gerrit-Reviewer: lynxis lazus From gerrit-no-reply at lists.osmocom.org Wed Apr 11 21:28:33 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Wed, 11 Apr 2018 21:28:33 +0000 Subject: [MERGED] osmo-ci[master]: ansible: gsm-tester-bts: add OBS osmocom:nightly to install ... In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: ansible: gsm-tester-bts: add OBS osmocom:nightly to install osmocom utilities ...................................................................... ansible: gsm-tester-bts: add OBS osmocom:nightly to install osmocom utilities Useful for admininistrators. Change-Id: I7b704d402c83db54401d1c06acb715cce821f2e4 --- A ansible/roles/gsm-tester-bts/files/Release.key M ansible/roles/gsm-tester-bts/tasks/main.yml 2 files changed, 39 insertions(+), 0 deletions(-) Approvals: lynxis lazus: Verified Pau Espin Pedrol: Looks good to me, but someone else must approve Harald Welte: Looks good to me, approved diff --git a/ansible/roles/gsm-tester-bts/files/Release.key b/ansible/roles/gsm-tester-bts/files/Release.key new file mode 100644 index 0000000..e656238 --- /dev/null +++ b/ansible/roles/gsm-tester-bts/files/Release.key @@ -0,0 +1,20 @@ +-----BEGIN PGP PUBLIC KEY BLOCK----- +Version: GnuPG v1.4.5 (GNU/Linux) + +mQENBFJBt/wBCADAht3d/ilNuyzaXYw/QwTRvmjyoDvfXw+H/3Fvk1zlDZoiKPPc +a1wCVBINUZl7vYM2OXqbJwYa++JP2Q48xKSvC6thbRc/YLievkbcvTemf7IaREfl +CTjoYpoqXHa9kHMw1aALDm8CNU88jZmnV7v9L6hKkbYDxie+jpoj7D6B9JlxgNJ4 +5dQyRNsFGVcIl4Vplt1HyGc5Q5nQI/VgS2rlF/IOXmhRQBc4LEDdU8R2IKnkU4ee +S7TWanAigGAQhxGuCkS39/CWzc1DhLhjlNhBl/+RTPejkqJtAy00ZLps3+RqUN1Y +CU/Fsr7aRlYVGqQ/BlptwV0XQ2VVYJX2oEBBABEBAAG0MG5ldHdvcmsgT0JTIFBy +b2plY3QgPG5ldHdvcmtAYnVpbGQub3BlbnN1c2Uub3JnPokBPAQTAQIAJgUCWmMc +aQIbAwUJDEAUbQYLCQgHAwIEFQIIAwQWAgMBAh4BAheAAAoJEGLrGgkXKA3fjsoI +ALSXmXzFCpTxg8a6tvXkqddY/qAmeBMNUf7hslI9wN3leNmCrnuHS8TbHWYJZgtw +8M5fKL3aRQYaIiqqm1XOUF0OqwYNDj5V3y38mM68NYOkzgSP7foMwZp9Y0TlGhtI +L8weA+2RUjB4hwwGMAYMqkRZyKW3NhPqdlGGoXac1ilwEyGXFHdOLbkhtyS+P2yb +/EvaKIN5cMLzRZKeYgdp9WuAirV+yV/SDbgvabW098lrWhGLltlRRDQgMV883p8I +ERMI1wlLFZGnHL3mfBWGeQ24M/DaBOdXQDtfBLCJ9nGztmDBUb8i6GFWU7nD2TGi +8mYUsED1ZDwO/0jdvJ4gSluIRgQTEQIABgUCUkG3/AAKCRA7MBG3a51lIzhdAJ9v +d6XPffMZRcCGgDEY5OaTn/MsCQCgrXbeZpFJgnirSrc8rRonvzYFiF4= +=Gvly +-----END PGP PUBLIC KEY BLOCK----- diff --git a/ansible/roles/gsm-tester-bts/tasks/main.yml b/ansible/roles/gsm-tester-bts/tasks/main.yml index f51da6d..a08670a 100644 --- a/ansible/roles/gsm-tester-bts/tasks/main.yml +++ b/ansible/roles/gsm-tester-bts/tasks/main.yml @@ -34,3 +34,22 @@ name: jenkins groups: usrp append: yes + +- name: gsm-tester-bts | add apt-key of OBS network:osmocom:nightly + apt_key: + data: "{{ lookup('file', 'Release.key') }}" + state: present + +- name: gsm-tester-bts | add apt-repo of OBS network:osmocom:nightly + apt_repo: + name: obs_network_osmocom_latest + repo: "deb http://download.opensuse.org/repositories/network:/osmocom:/nightly/Debian_{{ ansible_distribution_major_version }}.0/ ./" + update_cache: yes + +- name: gsm-tester-bts | install osmocom utilities + apt: + name: "{{ item }}" + with_items: + - abisip-find + - osmo-bsc-ipaccess-utils + - osmo-bsc-bs11-utils -- To view, visit https://gerrit.osmocom.org/7741 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: I7b704d402c83db54401d1c06acb715cce821f2e4 Gerrit-PatchSet: 3 Gerrit-Project: osmo-ci Gerrit-Branch: master Gerrit-Owner: lynxis lazus Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Pau Espin Pedrol Gerrit-Reviewer: lynxis lazus From gerrit-no-reply at lists.osmocom.org Wed Apr 11 21:28:47 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Wed, 11 Apr 2018 21:28:47 +0000 Subject: [MERGED] osmo-ci[master]: osmocom-jenkins-slave: call fstrim periodically In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: osmocom-jenkins-slave: call fstrim periodically ...................................................................... osmocom-jenkins-slave: call fstrim periodically Change-Id: I82c497f476abf43148e8d7c027f53b87b5a738fb --- M ansible/hosts M ansible/roles/osmocom-jenkins-slave/defaults/main.yml M ansible/roles/osmocom-jenkins-slave/tasks/main.yml 3 files changed, 13 insertions(+), 3 deletions(-) Approvals: lynxis lazus: Verified Harald Welte: Looks good to me, approved diff --git a/ansible/hosts b/ansible/hosts index 6964a71..4767b0c 100644 --- a/ansible/hosts +++ b/ansible/hosts @@ -9,8 +9,8 @@ [jenkins-slaves] admin2-deb8build ansible_host=2a01:4f8:13b:828::1:400 -admin2-deb9build ansible_host=2a01:4f8:13b:828::1:300 +admin2-deb9build ansible_host=2a01:4f8:13b:828::1:300 osmocom_jenkins_slave_fstrim=True build2-deb8build-ansible ansible_host=2a01:4f8:10b:2ad9::1:7 -build2-deb9build-ansible ansible_host=2a01:4f8:10b:2ad9::1:6 +build2-deb9build-ansible ansible_host=2a01:4f8:10b:2ad9::1:6 osmocom_jenkins_slave_fstrim=True host2-deb8build-ansible ansible_host=2a01:4f8:120:8470::1:2 -host2-deb9build-ansible ansible_host=2a01:4f8:120:8470::1:3 +host2-deb9build-ansible ansible_host=2a01:4f8:120:8470::1:3 osmocom_jenkins_slave_fstrim=True diff --git a/ansible/roles/osmocom-jenkins-slave/defaults/main.yml b/ansible/roles/osmocom-jenkins-slave/defaults/main.yml index 3f2fa8a..e32b5a0 100644 --- a/ansible/roles/osmocom-jenkins-slave/defaults/main.yml +++ b/ansible/roles/osmocom-jenkins-slave/defaults/main.yml @@ -9,3 +9,6 @@ # Setup the ttcn3 requirements ttcn3_slave: true + +# call fstrim peridically +osmocom_jenkins_slave_fstrim: false diff --git a/ansible/roles/osmocom-jenkins-slave/tasks/main.yml b/ansible/roles/osmocom-jenkins-slave/tasks/main.yml index 4d7b963..f8b29d8 100644 --- a/ansible/roles/osmocom-jenkins-slave/tasks/main.yml +++ b/ansible/roles/osmocom-jenkins-slave/tasks/main.yml @@ -109,3 +109,10 @@ copy: src: gitconfig dest: "/home/{{ jenkins_user }}/.gitconfig" + +- name: call fstrim periodically + cron: + name: "fstrim" + hour: "*/12" + job: "fstrim / >/dev/null 2>/dev/null || true" + when: osmocom_jenkins_slave_fstrim -- To view, visit https://gerrit.osmocom.org/7724 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: I82c497f476abf43148e8d7c027f53b87b5a738fb Gerrit-PatchSet: 2 Gerrit-Project: osmo-ci Gerrit-Branch: master Gerrit-Owner: lynxis lazus Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: lynxis lazus From gerrit-no-reply at lists.osmocom.org Wed Apr 11 21:31:27 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Wed, 11 Apr 2018 21:31:27 +0000 Subject: osmo-msc[master]: CC: intentionally release T308 on BSSMAP Clear Request from BSC In-Reply-To: References: Message-ID: Patch Set 2: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7704 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I231fdb574a086a206321148474cbdc7ca9cf39f0 Gerrit-PatchSet: 2 Gerrit-Project: osmo-msc Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Vadim Yanitskiy Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Wed Apr 11 21:32:27 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Wed, 11 Apr 2018 21:32:27 +0000 Subject: osmo-msc[master]: CC: intentionally release T308 on BSSMAP Clear Request from BSC In-Reply-To: References: Message-ID: Patch Set 2: If the bsc tells us the (radio) connection is gone , there would be no point in giving transactions more time to clean up. -- To view, visit https://gerrit.osmocom.org/7704 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I231fdb574a086a206321148474cbdc7ca9cf39f0 Gerrit-PatchSet: 2 Gerrit-Project: osmo-msc Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Vadim Yanitskiy Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Wed Apr 11 21:36:50 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Wed, 11 Apr 2018 21:36:50 +0000 Subject: osmo-msc[master]: refactor subscr_conn and subscr_conn_fsm de-/alloc In-Reply-To: References: Message-ID: Patch Set 2: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7705 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I55feb379e176a96a831e105b86202b17a0ffe889 Gerrit-PatchSet: 2 Gerrit-Project: osmo-msc Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Wed Apr 11 21:38:46 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Wed, 11 Apr 2018 21:38:46 +0000 Subject: osmo-msc[master]: properly receive BSSMAP Clear Complete and Iu Release Complete In-Reply-To: References: Message-ID: Patch Set 2: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7706 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Ie4c6aaba3866d6e5b98004e8870a215e8cf8ffc1 Gerrit-PatchSet: 2 Gerrit-Project: osmo-msc Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Wed Apr 11 21:39:45 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Wed, 11 Apr 2018 21:39:45 +0000 Subject: [MERGED] osmo-msc[master]: properly receive BSSMAP Clear Complete and Iu Release Complete In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: properly receive BSSMAP Clear Complete and Iu Release Complete ...................................................................... properly receive BSSMAP Clear Complete and Iu Release Complete When sending a BSSMAP Clear or Iu Release, do not immediately discard the conn, but wait until a BSSMAP Clear Complete / Iu Release Complete has been received. Hence we will no longer show in the log that an incoming Release/Clear Complete belongs to an unknown subscriber, but will still be around to properly log the release. Related: OS#3122 Change-Id: Ie4c6aaba3866d6e5b98004e8870a215e8cf8ffc1 --- M include/osmocom/msc/gsm_data.h M include/osmocom/msc/osmo_msc.h M src/libmsc/a_iface_bssap.c M src/libmsc/iucs_ranap.c M src/libmsc/osmo_msc.c M src/libmsc/subscr_conn.c M tests/msc_vlr/msc_vlr_test_authen_reuse.c M tests/msc_vlr/msc_vlr_test_authen_reuse.err M tests/msc_vlr/msc_vlr_test_call.c M tests/msc_vlr/msc_vlr_test_call.err M tests/msc_vlr/msc_vlr_test_gsm_authen.c M tests/msc_vlr/msc_vlr_test_gsm_authen.err M tests/msc_vlr/msc_vlr_test_gsm_ciph.c M tests/msc_vlr/msc_vlr_test_gsm_ciph.err M tests/msc_vlr/msc_vlr_test_hlr_reject.c M tests/msc_vlr/msc_vlr_test_hlr_reject.err M tests/msc_vlr/msc_vlr_test_hlr_timeout.c M tests/msc_vlr/msc_vlr_test_hlr_timeout.err M tests/msc_vlr/msc_vlr_test_ms_timeout.c M tests/msc_vlr/msc_vlr_test_ms_timeout.err M tests/msc_vlr/msc_vlr_test_no_authen.c M tests/msc_vlr/msc_vlr_test_no_authen.err M tests/msc_vlr/msc_vlr_test_reject_concurrency.c M tests/msc_vlr/msc_vlr_test_reject_concurrency.err M tests/msc_vlr/msc_vlr_test_rest.c M tests/msc_vlr/msc_vlr_test_rest.err M tests/msc_vlr/msc_vlr_test_umts_authen.c M tests/msc_vlr/msc_vlr_test_umts_authen.err M tests/msc_vlr/msc_vlr_tests.c M tests/msc_vlr/msc_vlr_tests.h 30 files changed, 931 insertions(+), 571 deletions(-) Approvals: Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/include/osmocom/msc/gsm_data.h b/include/osmocom/msc/gsm_data.h index 4cfe08d..c5e7aaf 100644 --- a/include/osmocom/msc/gsm_data.h +++ b/include/osmocom/msc/gsm_data.h @@ -148,6 +148,7 @@ struct { struct ranap_ue_conn_ctx *ue_ctx; uint8_t rab_id; + bool waiting_for_release_complete; } iu; struct { @@ -164,6 +165,8 @@ * to reference the SCCP connection that is * associated with this subscriber connection */ uint32_t conn_id; + + bool waiting_for_clear_complete; } a; }; diff --git a/include/osmocom/msc/osmo_msc.h b/include/osmocom/msc/osmo_msc.h index f7d89a2..632b231 100644 --- a/include/osmocom/msc/osmo_msc.h +++ b/include/osmocom/msc/osmo_msc.h @@ -77,7 +77,11 @@ void msc_subscr_conn_communicating(struct gsm_subscriber_connection *conn); void msc_subscr_conn_close(struct gsm_subscriber_connection *conn, uint32_t cause); +void msc_subscr_conn_mo_close(struct gsm_subscriber_connection *conn, uint32_t cause); bool msc_subscr_conn_in_release(struct gsm_subscriber_connection *conn); + +void msc_subscr_conn_rx_bssmap_clear_complete(struct gsm_subscriber_connection *conn); +void msc_subscr_conn_rx_iu_release_complete(struct gsm_subscriber_connection *conn); enum msc_subscr_conn_use { MSC_CONN_USE_UNTRACKED = -1, @@ -107,6 +111,8 @@ void _msc_subscr_conn_put(struct gsm_subscriber_connection *conn, enum msc_subscr_conn_use balance_token, const char *file, int line); +bool msc_subscr_conn_used_by(struct gsm_subscriber_connection *conn, + enum msc_subscr_conn_use token); void msc_stop_paging(struct vlr_subscr *vsub); diff --git a/src/libmsc/a_iface_bssap.c b/src/libmsc/a_iface_bssap.c index d0d6bc0..87ccf05 100644 --- a/src/libmsc/a_iface_bssap.c +++ b/src/libmsc/a_iface_bssap.c @@ -239,11 +239,16 @@ /* Endpoint to handle BSSMAP clear complete */ static int bssmap_rx_clear_complete(struct osmo_sccp_user *scu, - const struct a_conn_info *a_conn_info, struct msgb *msg) + const struct a_conn_info *a_conn_info, + struct gsm_subscriber_connection *conn) { int rc; - LOGP(DMSC, LOGL_INFO, "Rx BSSMAP CLEAR COMPLETE, releasing SCCP connection\n"); + LOGPCONN(conn, LOGL_INFO, "Rx BSSMAP CLEAR COMPLETE, releasing SCCP connection\n"); + + if (conn) + msc_subscr_conn_rx_bssmap_clear_complete(conn); + rc = osmo_sccp_tx_disconn(scu, a_conn_info->conn_id, NULL, SCCP_RELEASE_CAUSE_END_USER_ORIGINATED); @@ -568,8 +573,6 @@ switch (msg_type) { case BSS_MAP_MSG_COMPLETE_LAYER_3: return bssmap_rx_l3_compl(scu, a_conn_info, msg, &tp); - case BSS_MAP_MSG_CLEAR_COMPLETE: - return bssmap_rx_clear_complete(scu, a_conn_info, msg); default: break; } @@ -577,6 +580,13 @@ conn = subscr_conn_lookup_a(a_conn_info->network, a_conn_info->conn_id); if (!conn) { LOGP(DBSSAP, LOGL_ERROR, "Couldn't find subscr_conn for conn_id=%d\n", a_conn_info->conn_id); + /* We expect a Clear Complete to come in on a valid conn. But if for some reason we still + * have the SCCP connection while the subscriber connection data is already gone, at + * least close the SCCP conn. */ + + if (msg_type == BSS_MAP_MSG_CLEAR_COMPLETE) + return bssmap_rx_clear_complete(scu, a_conn_info, NULL); + return -EINVAL; } @@ -585,6 +595,8 @@ switch (msg_type) { case BSS_MAP_MSG_CLEAR_RQST: return bssmap_rx_clear_rqst(conn, msg, &tp); + case BSS_MAP_MSG_CLEAR_COMPLETE: + return bssmap_rx_clear_complete(scu, a_conn_info, conn); case BSS_MAP_MSG_CLASSMARK_UPDATE: return bssmap_rx_classmark_upd(conn, msg, &tp); case BSS_MAP_MSG_CIPHER_MODE_COMPLETE: diff --git a/src/libmsc/iucs_ranap.c b/src/libmsc/iucs_ranap.c index 57cd50e..ec0b569 100644 --- a/src/libmsc/iucs_ranap.c +++ b/src/libmsc/iucs_ranap.c @@ -117,7 +117,7 @@ case RANAP_IU_EVENT_LINK_INVALIDATED: LOGP(DIUCS, LOGL_INFO, "IuCS release for %s\n", vlr_subscr_name(conn->vsub)); - msc_subscr_conn_close(conn, 0); + msc_subscr_conn_rx_iu_release_complete(conn); return 0; case RANAP_IU_EVENT_SECURITY_MODE_COMPLETE: diff --git a/src/libmsc/osmo_msc.c b/src/libmsc/osmo_msc.c index a5184b2..cc67a5a 100644 --- a/src/libmsc/osmo_msc.c +++ b/src/libmsc/osmo_msc.c @@ -283,6 +283,11 @@ osmo_fsm_inst_dispatch(conn->fi, SUBSCR_CONN_E_UNUSED, NULL); } +bool msc_subscr_conn_used_by(struct gsm_subscriber_connection *conn, enum msc_subscr_conn_use token) +{ + return conn && (conn->use_tokens & (1 << token)); +} + const struct value_string msc_subscr_conn_use_names[] = { {MSC_CONN_USE_UNTRACKED, "UNTRACKED"}, {MSC_CONN_USE_COMPL_L3, "compl_l3"}, diff --git a/src/libmsc/subscr_conn.c b/src/libmsc/subscr_conn.c index e3a6b24..1ca6b2d 100644 --- a/src/libmsc/subscr_conn.c +++ b/src/libmsc/subscr_conn.c @@ -260,8 +260,11 @@ { struct gsm_subscriber_connection *conn = fi->priv; - /* While we're still checking on release, prevent a last use count decrement from deallocating */ - msc_subscr_conn_get(conn, MSC_CONN_USE_RELEASE); + /* Use count for either conn->a.waiting_for_clear_complete or + * conn->iu.waiting_for_release_complete. 'get' it early, so we don't deallocate after tearing + * down active transactions. Safeguard against double-get (though it shouldn't happen). */ + if (!msc_subscr_conn_used_by(conn, MSC_CONN_USE_RELEASE)) + msc_subscr_conn_get(conn, MSC_CONN_USE_RELEASE); /* Cancel pending CM Service Requests */ if (conn->received_cm_service_request) { @@ -278,20 +281,27 @@ switch (conn->via_ran) { case RAN_GERAN_A: a_iface_tx_clear_cmd(conn); + if (conn->a.waiting_for_clear_complete) { + LOGPFSML(fi, LOGL_ERROR, + "Unexpected: conn is already waiting for BSSMAP Clear Complete\n"); + break; + } + conn->a.waiting_for_clear_complete = true; break; case RAN_UTRAN_IU: ranap_iu_tx_release(conn->iu.ue_ctx, NULL); + if (conn->iu.waiting_for_release_complete) { + LOGPFSML(fi, LOGL_ERROR, + "Unexpected: conn is already waiting for Iu Release Complete\n"); + break; + } + conn->iu.waiting_for_release_complete = true; break; default: LOGP(DMM, LOGL_ERROR, "%s: Unknown RAN type, cannot tx release/clear\n", vlr_subscr_name(conn->vsub)); break; } - - /* FIXME: keep the conn until the Iu Release Outcome is - * received from the UE, or a timeout expires. For now, the log - * says "unknown UE" for each release outcome. */ - msc_subscr_conn_put(conn, MSC_CONN_USE_RELEASE); } static void subscr_conn_fsm_releasing(struct osmo_fsm_inst *fi, uint32_t event, void *data) @@ -456,7 +466,7 @@ osmo_fsm_inst_dispatch(conn->fi, SUBSCR_CONN_E_RELEASE_WHEN_UNUSED, NULL); } -void msc_subscr_conn_close(struct gsm_subscriber_connection *conn, uint32_t cause) +static void conn_close(struct gsm_subscriber_connection *conn, uint32_t cause, uint32_t event) { if (!conn) { LOGP(DMM, LOGL_ERROR, "Cannot release NULL connection\n"); @@ -467,11 +477,23 @@ __func__, vlr_subscr_name(conn->vsub), cause); return; } - osmo_fsm_inst_dispatch(conn->fi, SUBSCR_CONN_E_CN_CLOSE, &cause); + osmo_fsm_inst_dispatch(conn->fi, event, &cause); +} + +void msc_subscr_conn_close(struct gsm_subscriber_connection *conn, uint32_t cause) +{ + return conn_close(conn, cause, SUBSCR_CONN_E_CN_CLOSE); +} + +void msc_subscr_conn_mo_close(struct gsm_subscriber_connection *conn, uint32_t cause) +{ + return conn_close(conn, cause, SUBSCR_CONN_E_MO_CLOSE); } bool msc_subscr_conn_in_release(struct gsm_subscriber_connection *conn) { + if (!conn || !conn->fi) + return true; if (conn->fi->state == SUBSCR_CONN_S_RELEASING) return true; if (conn->fi->state == SUBSCR_CONN_S_RELEASED) @@ -491,7 +513,8 @@ return true; } -/* Indicate that *some* communication is happening with the phone. */ +/* Indicate that *some* communication is happening with the phone, so that the conn FSM no longer times + * out to release within a few seconds. */ void msc_subscr_conn_communicating(struct gsm_subscriber_connection *conn) { osmo_fsm_inst_dispatch(conn->fi, SUBSCR_CONN_E_COMMUNICATING, NULL); @@ -544,6 +567,7 @@ return conn->fi->state == SUBSCR_CONN_S_AUTH_CIPH; } + const struct value_string complete_layer3_type_names[] = { { COMPLETE_LAYER3_NONE, "NONE" }, { COMPLETE_LAYER3_LU, "LU" }, @@ -559,3 +583,30 @@ osmo_fsm_inst_update_id(conn->fi, id); LOGPFSML(conn->fi, LOGL_DEBUG, "Updated ID from %s\n", complete_layer3_type_name(from)); } + +static void rx_close_complete(struct gsm_subscriber_connection *conn, const char *label, bool *flag) +{ + if (!conn) + return; + if (!msc_subscr_conn_in_release(conn)) { + LOGPFSML(conn->fi, LOGL_ERROR, "Received unexpected %s, discarding right now\n", + label); + trans_conn_closed(conn); + osmo_fsm_inst_term(conn->fi, OSMO_FSM_TERM_ERROR, NULL); + return; + } + if (*flag) { + *flag = false; + msc_subscr_conn_put(conn, MSC_CONN_USE_RELEASE); + } +} + +void msc_subscr_conn_rx_bssmap_clear_complete(struct gsm_subscriber_connection *conn) +{ + rx_close_complete(conn, "BSSMAP Clear Complete", &conn->a.waiting_for_clear_complete); +} + +void msc_subscr_conn_rx_iu_release_complete(struct gsm_subscriber_connection *conn) +{ + rx_close_complete(conn, "Iu Release Complete", &conn->iu.waiting_for_release_complete); +} diff --git a/tests/msc_vlr/msc_vlr_test_authen_reuse.c b/tests/msc_vlr/msc_vlr_test_authen_reuse.c index c9a9d09..389837a 100644 --- a/tests/msc_vlr/msc_vlr_test_authen_reuse.c +++ b/tests/msc_vlr/msc_vlr_test_authen_reuse.c @@ -25,19 +25,6 @@ #include "msc_vlr_tests.h" -#define ASSERT_RELEASE_CLEAR(via_ran) \ - switch (via_ran) { \ - case RAN_GERAN_A: \ - VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); \ - break; \ - case RAN_UTRAN_IU: \ - VERBOSE_ASSERT(iu_release_sent, == true, "%d"); \ - break; \ - default: \ - OSMO_ASSERT(false); \ - break; \ - } - static void _test_auth_reuse(enum ran_type via_ran, int set_max_reuse_count, int loop_requests_without_hlr, @@ -144,6 +131,7 @@ expect_release_clear(via_ran); ms_sends_msg("055b"); ASSERT_RELEASE_CLEAR(via_ran); + bss_rnc_sends_release_clear_complete(via_ran); btw("LU was successful, and the conn has already been closed"); EXPECT_CONN_COUNT(0); @@ -195,6 +183,7 @@ ms_sends_msg("0b3b1c15a11302010002013b300b04010f0406aa510c061b017f0100"); OSMO_ASSERT(dtap_tx_confirmed); ASSERT_RELEASE_CLEAR(via_ran); + bss_rnc_sends_release_clear_complete(via_ran); btw("all requests serviced, conn has been released"); EXPECT_CONN_COUNT(0); @@ -269,6 +258,7 @@ ms_sends_msg("0b3b1c15a11302010002013b300b04010f0406aa510c061b017f0100"); OSMO_ASSERT(dtap_tx_confirmed); ASSERT_RELEASE_CLEAR(via_ran); + bss_rnc_sends_release_clear_complete(via_ran); btw("all requests serviced, conn has been released"); EXPECT_CONN_COUNT(0); @@ -279,6 +269,7 @@ ms_sends_msg("050130" "089910070000106005" /* IMSI */); ASSERT_RELEASE_CLEAR(via_ran); + bss_rnc_sends_release_clear_complete(via_ran); EXPECT_CONN_COUNT(0); clear_vlr(); diff --git a/tests/msc_vlr/msc_vlr_test_authen_reuse.err b/tests/msc_vlr/msc_vlr_test_authen_reuse.err index 193eb81..5e9649c 100644 --- a/tests/msc_vlr/msc_vlr_test_authen_reuse.err +++ b/tests/msc_vlr/msc_vlr_test_authen_reuse.err @@ -165,8 +165,10 @@ DREF VLR subscr MSISDN:42342 usage increases to: 3 DREF VLR subscr MSISDN:42342 usage decreases to: 2 - BSSAP Clear --RAN_GERAN_A--> MS -DREF MSISDN:42342: MSC conn use - release == 1 (0x2) -DREF MSISDN:42342: MSC conn use - dtap == 0 (0x0) +DREF MSISDN:42342: MSC conn use - dtap == 1 (0x100) + bssap_clear_sent == 1 +- BSS sends BSSMAP Clear Complete +DREF MSISDN:42342: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) @@ -179,7 +181,6 @@ DREF VLR subscr MSISDN:42342 usage decreases to: 1 DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Deallocated - bssap_clear_sent == 1 - LU was successful, and the conn has already been closed llist_count(&net->subscr_conns) == 0 --- @@ -275,6 +276,8 @@ DREF VLR subscr MSISDN:42342 usage increases to: 3 DREF VLR subscr MSISDN:42342 usage decreases to: 2 - BSSAP Clear --RAN_GERAN_A--> MS + bssap_clear_sent == 1 +- BSS sends BSSMAP Clear Complete DREF MSISDN:42342: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED @@ -287,7 +290,6 @@ DREF VLR subscr MSISDN:42342 usage decreases to: 1 DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Deallocated - bssap_clear_sent == 1 - all requests serviced, conn has been released llist_count(&net->subscr_conns) == 0 --- @@ -397,6 +399,8 @@ DREF VLR subscr MSISDN:42342 usage increases to: 3 DREF VLR subscr MSISDN:42342 usage decreases to: 2 - BSSAP Clear --RAN_GERAN_A--> MS + bssap_clear_sent == 1 +- BSS sends BSSMAP Clear Complete DREF MSISDN:42342: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED @@ -409,7 +413,6 @@ DREF VLR subscr MSISDN:42342 usage decreases to: 1 DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Deallocated - bssap_clear_sent == 1 - all requests serviced, conn has been released llist_count(&net->subscr_conns) == 0 --- @@ -430,15 +433,16 @@ DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASING DREF unknown: MSC conn use + release == 2 (0x101) - BSSAP Clear --RAN_GERAN_A--> MS -DREF unknown: MSC conn use - release == 1 (0x1) -DREF unknown: MSC conn use - compl_l3 == 0 (0x0) +DREF unknown: MSC conn use - compl_l3 == 1 (0x100) + bssap_clear_sent == 1 +- BSS sends BSSMAP Clear Complete +DREF unknown: MSC conn use - release == 0 (0x0) DMM Subscr_Conn{SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn{SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DRLL Freeing subscriber connection with NULL subscriber DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Deallocated - bssap_clear_sent == 1 llist_count(&net->subscr_conns) == 0 ===== test_auth_use_twice_geran: SUCCESS @@ -621,8 +625,10 @@ DREF VLR subscr MSISDN:42342 usage increases to: 3 DREF VLR subscr MSISDN:42342 usage decreases to: 2 - Iu Release --RAN_UTRAN_IU--> MS -DREF MSISDN:42342: MSC conn use - release == 1 (0x2) -DREF MSISDN:42342: MSC conn use - dtap == 0 (0x0) +DREF MSISDN:42342: MSC conn use - dtap == 1 (0x100) + iu_release_sent == 1 +- RNC sends Iu Release Complete +DREF MSISDN:42342: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) @@ -635,7 +641,6 @@ DREF VLR subscr MSISDN:42342 usage decreases to: 1 DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Deallocated - iu_release_sent == 1 - LU was successful, and the conn has already been closed llist_count(&net->subscr_conns) == 0 --- @@ -744,6 +749,8 @@ DREF VLR subscr MSISDN:42342 usage increases to: 3 DREF VLR subscr MSISDN:42342 usage decreases to: 2 - Iu Release --RAN_UTRAN_IU--> MS + iu_release_sent == 1 +- RNC sends Iu Release Complete DREF MSISDN:42342: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED @@ -756,7 +763,6 @@ DREF VLR subscr MSISDN:42342 usage decreases to: 1 DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Deallocated - iu_release_sent == 1 - all requests serviced, conn has been released llist_count(&net->subscr_conns) == 0 --- @@ -879,6 +885,8 @@ DREF VLR subscr MSISDN:42342 usage increases to: 3 DREF VLR subscr MSISDN:42342 usage decreases to: 2 - Iu Release --RAN_UTRAN_IU--> MS + iu_release_sent == 1 +- RNC sends Iu Release Complete DREF MSISDN:42342: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED @@ -891,7 +899,6 @@ DREF VLR subscr MSISDN:42342 usage decreases to: 1 DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Deallocated - iu_release_sent == 1 - all requests serviced, conn has been released llist_count(&net->subscr_conns) == 0 --- @@ -912,15 +919,16 @@ DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASING DREF unknown: MSC conn use + release == 2 (0x101) - Iu Release --RAN_UTRAN_IU--> MS -DREF unknown: MSC conn use - release == 1 (0x1) -DREF unknown: MSC conn use - compl_l3 == 0 (0x0) +DREF unknown: MSC conn use - compl_l3 == 1 (0x100) + iu_release_sent == 1 +- RNC sends Iu Release Complete +DREF unknown: MSC conn use - release == 0 (0x0) DMM Subscr_Conn{SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn{SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DRLL Freeing subscriber connection with NULL subscriber DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Deallocated - iu_release_sent == 1 llist_count(&net->subscr_conns) == 0 ===== test_auth_use_twice_utran: SUCCESS @@ -1091,8 +1099,10 @@ DREF VLR subscr MSISDN:42342 usage increases to: 3 DREF VLR subscr MSISDN:42342 usage decreases to: 2 - BSSAP Clear --RAN_GERAN_A--> MS -DREF MSISDN:42342: MSC conn use - release == 1 (0x2) -DREF MSISDN:42342: MSC conn use - dtap == 0 (0x0) +DREF MSISDN:42342: MSC conn use - dtap == 1 (0x100) + bssap_clear_sent == 1 +- BSS sends BSSMAP Clear Complete +DREF MSISDN:42342: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) @@ -1105,7 +1115,6 @@ DREF VLR subscr MSISDN:42342 usage decreases to: 1 DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Deallocated - bssap_clear_sent == 1 - LU was successful, and the conn has already been closed llist_count(&net->subscr_conns) == 0 --- @@ -1201,6 +1210,8 @@ DREF VLR subscr MSISDN:42342 usage increases to: 3 DREF VLR subscr MSISDN:42342 usage decreases to: 2 - BSSAP Clear --RAN_GERAN_A--> MS + bssap_clear_sent == 1 +- BSS sends BSSMAP Clear Complete DREF MSISDN:42342: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED @@ -1213,7 +1224,6 @@ DREF VLR subscr MSISDN:42342 usage decreases to: 1 DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Deallocated - bssap_clear_sent == 1 - all requests serviced, conn has been released llist_count(&net->subscr_conns) == 0 --- @@ -1309,6 +1319,8 @@ DREF VLR subscr MSISDN:42342 usage increases to: 3 DREF VLR subscr MSISDN:42342 usage decreases to: 2 - BSSAP Clear --RAN_GERAN_A--> MS + bssap_clear_sent == 1 +- BSS sends BSSMAP Clear Complete DREF MSISDN:42342: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED @@ -1321,7 +1333,6 @@ DREF VLR subscr MSISDN:42342 usage decreases to: 1 DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Deallocated - bssap_clear_sent == 1 - all requests serviced, conn has been released llist_count(&net->subscr_conns) == 0 --- @@ -1417,6 +1428,8 @@ DREF VLR subscr MSISDN:42342 usage increases to: 3 DREF VLR subscr MSISDN:42342 usage decreases to: 2 - BSSAP Clear --RAN_GERAN_A--> MS + bssap_clear_sent == 1 +- BSS sends BSSMAP Clear Complete DREF MSISDN:42342: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED @@ -1429,7 +1442,6 @@ DREF VLR subscr MSISDN:42342 usage decreases to: 1 DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Deallocated - bssap_clear_sent == 1 - all requests serviced, conn has been released llist_count(&net->subscr_conns) == 0 --- @@ -1450,15 +1462,16 @@ DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASING DREF unknown: MSC conn use + release == 2 (0x101) - BSSAP Clear --RAN_GERAN_A--> MS -DREF unknown: MSC conn use - release == 1 (0x1) -DREF unknown: MSC conn use - compl_l3 == 0 (0x0) +DREF unknown: MSC conn use - compl_l3 == 1 (0x100) + bssap_clear_sent == 1 +- BSS sends BSSMAP Clear Complete +DREF unknown: MSC conn use - release == 0 (0x0) DMM Subscr_Conn{SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn{SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DRLL Freeing subscriber connection with NULL subscriber DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Deallocated - bssap_clear_sent == 1 llist_count(&net->subscr_conns) == 0 ===== test_auth_use_infinitely_geran: SUCCESS @@ -1641,8 +1654,10 @@ DREF VLR subscr MSISDN:42342 usage increases to: 3 DREF VLR subscr MSISDN:42342 usage decreases to: 2 - Iu Release --RAN_UTRAN_IU--> MS -DREF MSISDN:42342: MSC conn use - release == 1 (0x2) -DREF MSISDN:42342: MSC conn use - dtap == 0 (0x0) +DREF MSISDN:42342: MSC conn use - dtap == 1 (0x100) + iu_release_sent == 1 +- RNC sends Iu Release Complete +DREF MSISDN:42342: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) @@ -1655,7 +1670,6 @@ DREF VLR subscr MSISDN:42342 usage decreases to: 1 DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Deallocated - iu_release_sent == 1 - LU was successful, and the conn has already been closed llist_count(&net->subscr_conns) == 0 --- @@ -1764,6 +1778,8 @@ DREF VLR subscr MSISDN:42342 usage increases to: 3 DREF VLR subscr MSISDN:42342 usage decreases to: 2 - Iu Release --RAN_UTRAN_IU--> MS + iu_release_sent == 1 +- RNC sends Iu Release Complete DREF MSISDN:42342: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED @@ -1776,7 +1792,6 @@ DREF VLR subscr MSISDN:42342 usage decreases to: 1 DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Deallocated - iu_release_sent == 1 - all requests serviced, conn has been released llist_count(&net->subscr_conns) == 0 --- @@ -1885,6 +1900,8 @@ DREF VLR subscr MSISDN:42342 usage increases to: 3 DREF VLR subscr MSISDN:42342 usage decreases to: 2 - Iu Release --RAN_UTRAN_IU--> MS + iu_release_sent == 1 +- RNC sends Iu Release Complete DREF MSISDN:42342: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED @@ -1897,7 +1914,6 @@ DREF VLR subscr MSISDN:42342 usage decreases to: 1 DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Deallocated - iu_release_sent == 1 - all requests serviced, conn has been released llist_count(&net->subscr_conns) == 0 --- @@ -2006,6 +2022,8 @@ DREF VLR subscr MSISDN:42342 usage increases to: 3 DREF VLR subscr MSISDN:42342 usage decreases to: 2 - Iu Release --RAN_UTRAN_IU--> MS + iu_release_sent == 1 +- RNC sends Iu Release Complete DREF MSISDN:42342: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED @@ -2018,7 +2036,6 @@ DREF VLR subscr MSISDN:42342 usage decreases to: 1 DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Deallocated - iu_release_sent == 1 - all requests serviced, conn has been released llist_count(&net->subscr_conns) == 0 --- @@ -2039,15 +2056,16 @@ DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASING DREF unknown: MSC conn use + release == 2 (0x101) - Iu Release --RAN_UTRAN_IU--> MS -DREF unknown: MSC conn use - release == 1 (0x1) -DREF unknown: MSC conn use - compl_l3 == 0 (0x0) +DREF unknown: MSC conn use - compl_l3 == 1 (0x100) + iu_release_sent == 1 +- RNC sends Iu Release Complete +DREF unknown: MSC conn use - release == 0 (0x0) DMM Subscr_Conn{SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn{SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DRLL Freeing subscriber connection with NULL subscriber DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Deallocated - iu_release_sent == 1 llist_count(&net->subscr_conns) == 0 ===== test_auth_use_infinitely_utran: SUCCESS @@ -2218,8 +2236,10 @@ DREF VLR subscr MSISDN:42342 usage increases to: 3 DREF VLR subscr MSISDN:42342 usage decreases to: 2 - BSSAP Clear --RAN_GERAN_A--> MS -DREF MSISDN:42342: MSC conn use - release == 1 (0x2) -DREF MSISDN:42342: MSC conn use - dtap == 0 (0x0) +DREF MSISDN:42342: MSC conn use - dtap == 1 (0x100) + bssap_clear_sent == 1 +- BSS sends BSSMAP Clear Complete +DREF MSISDN:42342: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) @@ -2232,7 +2252,6 @@ DREF VLR subscr MSISDN:42342 usage decreases to: 1 DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Deallocated - bssap_clear_sent == 1 - LU was successful, and the conn has already been closed llist_count(&net->subscr_conns) == 0 --- @@ -2342,6 +2361,8 @@ DREF VLR subscr MSISDN:42342 usage increases to: 3 DREF VLR subscr MSISDN:42342 usage decreases to: 2 - BSSAP Clear --RAN_GERAN_A--> MS + bssap_clear_sent == 1 +- BSS sends BSSMAP Clear Complete DREF MSISDN:42342: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED @@ -2354,7 +2375,6 @@ DREF VLR subscr MSISDN:42342 usage decreases to: 1 DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Deallocated - bssap_clear_sent == 1 - all requests serviced, conn has been released llist_count(&net->subscr_conns) == 0 --- @@ -2375,15 +2395,16 @@ DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASING DREF unknown: MSC conn use + release == 2 (0x101) - BSSAP Clear --RAN_GERAN_A--> MS -DREF unknown: MSC conn use - release == 1 (0x1) -DREF unknown: MSC conn use - compl_l3 == 0 (0x0) +DREF unknown: MSC conn use - compl_l3 == 1 (0x100) + bssap_clear_sent == 1 +- BSS sends BSSMAP Clear Complete +DREF unknown: MSC conn use - release == 0 (0x0) DMM Subscr_Conn{SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn{SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DRLL Freeing subscriber connection with NULL subscriber DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Deallocated - bssap_clear_sent == 1 llist_count(&net->subscr_conns) == 0 ===== test_no_auth_reuse_geran: SUCCESS @@ -2566,8 +2587,10 @@ DREF VLR subscr MSISDN:42342 usage increases to: 3 DREF VLR subscr MSISDN:42342 usage decreases to: 2 - Iu Release --RAN_UTRAN_IU--> MS -DREF MSISDN:42342: MSC conn use - release == 1 (0x2) -DREF MSISDN:42342: MSC conn use - dtap == 0 (0x0) +DREF MSISDN:42342: MSC conn use - dtap == 1 (0x100) + iu_release_sent == 1 +- RNC sends Iu Release Complete +DREF MSISDN:42342: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) @@ -2580,7 +2603,6 @@ DREF VLR subscr MSISDN:42342 usage decreases to: 1 DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Deallocated - iu_release_sent == 1 - LU was successful, and the conn has already been closed llist_count(&net->subscr_conns) == 0 --- @@ -2703,6 +2725,8 @@ DREF VLR subscr MSISDN:42342 usage increases to: 3 DREF VLR subscr MSISDN:42342 usage decreases to: 2 - Iu Release --RAN_UTRAN_IU--> MS + iu_release_sent == 1 +- RNC sends Iu Release Complete DREF MSISDN:42342: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED @@ -2715,7 +2739,6 @@ DREF VLR subscr MSISDN:42342 usage decreases to: 1 DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Deallocated - iu_release_sent == 1 - all requests serviced, conn has been released llist_count(&net->subscr_conns) == 0 --- @@ -2736,15 +2759,16 @@ DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASING DREF unknown: MSC conn use + release == 2 (0x101) - Iu Release --RAN_UTRAN_IU--> MS -DREF unknown: MSC conn use - release == 1 (0x1) -DREF unknown: MSC conn use - compl_l3 == 0 (0x0) +DREF unknown: MSC conn use - compl_l3 == 1 (0x100) + iu_release_sent == 1 +- RNC sends Iu Release Complete +DREF unknown: MSC conn use - release == 0 (0x0) DMM Subscr_Conn{SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn{SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DRLL Freeing subscriber connection with NULL subscriber DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Deallocated - iu_release_sent == 1 llist_count(&net->subscr_conns) == 0 ===== test_no_auth_reuse_utran: SUCCESS diff --git a/tests/msc_vlr/msc_vlr_test_call.c b/tests/msc_vlr/msc_vlr_test_call.c index 9d4126e..50bf174 100644 --- a/tests/msc_vlr/msc_vlr_test_call.c +++ b/tests/msc_vlr/msc_vlr_test_call.c @@ -148,6 +148,7 @@ VERBOSE_ASSERT(iu_release_sent, == true, "%d"); \ btw("LU was successful, and the conn has already been closed"); + rnc_sends_release_complete(); EXPECT_CONN_COUNT(0); vsub = vlr_subscr_find_by_imsi(net->vlr, IMSI); @@ -252,6 +253,7 @@ OSMO_ASSERT(cc_to_mncc_tx_confirmed); OSMO_ASSERT(iu_release_sent); + rnc_sends_release_complete(); EXPECT_CONN_COUNT(0); clear_vlr(); comment_end(); @@ -335,6 +337,7 @@ OSMO_ASSERT(cc_to_mncc_tx_confirmed); OSMO_ASSERT(iu_release_sent); + rnc_sends_release_complete(); EXPECT_CONN_COUNT(0); clear_vlr(); comment_end(); @@ -405,6 +408,7 @@ OSMO_ASSERT(cc_to_mncc_tx_confirmed); OSMO_ASSERT(iu_release_sent); + rnc_sends_release_complete(); EXPECT_CONN_COUNT(0); /* Make sure a pending release timer doesn't fire later to access freed data */ @@ -488,6 +492,7 @@ OSMO_ASSERT(iu_release_sent); OSMO_ASSERT(cc_to_mncc_tx_confirmed); + rnc_sends_release_complete(); EXPECT_CONN_COUNT(0); clear_vlr(); comment_end(); @@ -568,6 +573,7 @@ OSMO_ASSERT(cc_to_mncc_tx_confirmed); OSMO_ASSERT(iu_release_sent); + rnc_sends_release_complete(); EXPECT_CONN_COUNT(0); clear_vlr(); comment_end(); diff --git a/tests/msc_vlr/msc_vlr_test_call.err b/tests/msc_vlr/msc_vlr_test_call.err index 1da80d9..2cb697c 100644 --- a/tests/msc_vlr/msc_vlr_test_call.err +++ b/tests/msc_vlr/msc_vlr_test_call.err @@ -162,8 +162,11 @@ DREF VLR subscr MSISDN:42342 usage increases to: 3 DREF VLR subscr MSISDN:42342 usage decreases to: 2 - Iu Release --RAN_UTRAN_IU--> MS -DREF MSISDN:42342: MSC conn use - release == 1 (0x2) -DREF MSISDN:42342: MSC conn use - dtap == 0 (0x0) +DREF MSISDN:42342: MSC conn use - dtap == 1 (0x100) + iu_release_sent == 1 +- LU was successful, and the conn has already been closed +- RNC sends Iu Release Complete +DREF MSISDN:42342: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) @@ -176,8 +179,6 @@ DREF VLR subscr MSISDN:42342 usage decreases to: 1 DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Deallocated - iu_release_sent == 1 -- LU was successful, and the conn has already been closed llist_count(&net->subscr_conns) == 0 DREF VLR subscr MSISDN:42342 usage increases to: 2 vsub != NULL == 1 @@ -359,6 +360,7 @@ DREF VLR subscr MSISDN:42342 usage increases to: 3 DREF VLR subscr MSISDN:42342 usage decreases to: 2 - Iu Release --RAN_UTRAN_IU--> MS +- RNC sends Iu Release Complete DREF MSISDN:42342: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED @@ -539,8 +541,11 @@ DREF VLR subscr MSISDN:42342 usage increases to: 3 DREF VLR subscr MSISDN:42342 usage decreases to: 2 - Iu Release --RAN_UTRAN_IU--> MS -DREF MSISDN:42342: MSC conn use - release == 1 (0x2) -DREF MSISDN:42342: MSC conn use - dtap == 0 (0x0) +DREF MSISDN:42342: MSC conn use - dtap == 1 (0x100) + iu_release_sent == 1 +- LU was successful, and the conn has already been closed +- RNC sends Iu Release Complete +DREF MSISDN:42342: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) @@ -553,8 +558,6 @@ DREF VLR subscr MSISDN:42342 usage decreases to: 1 DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Deallocated - iu_release_sent == 1 -- LU was successful, and the conn has already been closed llist_count(&net->subscr_conns) == 0 DREF VLR subscr MSISDN:42342 usage increases to: 2 vsub != NULL == 1 @@ -741,6 +744,7 @@ DREF VLR subscr MSISDN:42342 usage increases to: 3 DREF VLR subscr MSISDN:42342 usage decreases to: 2 - Iu Release --RAN_UTRAN_IU--> MS +- RNC sends Iu Release Complete DREF MSISDN:42342: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED @@ -921,8 +925,11 @@ DREF VLR subscr MSISDN:42342 usage increases to: 3 DREF VLR subscr MSISDN:42342 usage decreases to: 2 - Iu Release --RAN_UTRAN_IU--> MS -DREF MSISDN:42342: MSC conn use - release == 1 (0x2) -DREF MSISDN:42342: MSC conn use - dtap == 0 (0x0) +DREF MSISDN:42342: MSC conn use - dtap == 1 (0x100) + iu_release_sent == 1 +- LU was successful, and the conn has already been closed +- RNC sends Iu Release Complete +DREF MSISDN:42342: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) @@ -935,8 +942,6 @@ DREF VLR subscr MSISDN:42342 usage decreases to: 1 DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Deallocated - iu_release_sent == 1 -- LU was successful, and the conn has already been closed llist_count(&net->subscr_conns) == 0 DREF VLR subscr MSISDN:42342 usage increases to: 2 vsub != NULL == 1 @@ -1091,6 +1096,7 @@ DREF VLR subscr MSISDN:42342 usage decreases to: 2 DREF MSISDN:42342: MSC conn use - trans_cc == 1 (0x100) - Iu Release --RAN_UTRAN_IU--> MS +- RNC sends Iu Release Complete DREF MSISDN:42342: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED @@ -1272,8 +1278,11 @@ DREF VLR subscr MSISDN:42342 usage increases to: 3 DREF VLR subscr MSISDN:42342 usage decreases to: 2 - Iu Release --RAN_UTRAN_IU--> MS -DREF MSISDN:42342: MSC conn use - release == 1 (0x2) -DREF MSISDN:42342: MSC conn use - dtap == 0 (0x0) +DREF MSISDN:42342: MSC conn use - dtap == 1 (0x100) + iu_release_sent == 1 +- LU was successful, and the conn has already been closed +- RNC sends Iu Release Complete +DREF MSISDN:42342: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) @@ -1286,8 +1295,6 @@ DREF VLR subscr MSISDN:42342 usage decreases to: 1 DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Deallocated - iu_release_sent == 1 -- LU was successful, and the conn has already been closed llist_count(&net->subscr_conns) == 0 DREF VLR subscr MSISDN:42342 usage increases to: 2 vsub != NULL == 1 @@ -1435,6 +1442,7 @@ DREF VLR subscr MSISDN:42342 usage increases to: 3 DREF VLR subscr MSISDN:42342 usage decreases to: 2 - Iu Release --RAN_UTRAN_IU--> MS +- RNC sends Iu Release Complete DREF MSISDN:42342: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED @@ -1615,8 +1623,11 @@ DREF VLR subscr MSISDN:42342 usage increases to: 3 DREF VLR subscr MSISDN:42342 usage decreases to: 2 - Iu Release --RAN_UTRAN_IU--> MS -DREF MSISDN:42342: MSC conn use - release == 1 (0x2) -DREF MSISDN:42342: MSC conn use - dtap == 0 (0x0) +DREF MSISDN:42342: MSC conn use - dtap == 1 (0x100) + iu_release_sent == 1 +- LU was successful, and the conn has already been closed +- RNC sends Iu Release Complete +DREF MSISDN:42342: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) @@ -1629,8 +1640,6 @@ DREF VLR subscr MSISDN:42342 usage decreases to: 1 DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Deallocated - iu_release_sent == 1 -- LU was successful, and the conn has already been closed llist_count(&net->subscr_conns) == 0 DREF VLR subscr MSISDN:42342 usage increases to: 2 vsub != NULL == 1 @@ -1775,6 +1784,7 @@ DREF VLR subscr MSISDN:42342 usage increases to: 3 DREF VLR subscr MSISDN:42342 usage decreases to: 2 - Iu Release --RAN_UTRAN_IU--> MS +- RNC sends Iu Release Complete DREF MSISDN:42342: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED diff --git a/tests/msc_vlr/msc_vlr_test_gsm_authen.c b/tests/msc_vlr/msc_vlr_test_gsm_authen.c index 5176306..a863d90 100644 --- a/tests/msc_vlr/msc_vlr_test_gsm_authen.c +++ b/tests/msc_vlr/msc_vlr_test_gsm_authen.c @@ -91,6 +91,7 @@ btw("LU was successful, and the conn has already been closed"); VERBOSE_ASSERT(lu_result_sent, == RES_ACCEPT, "%d"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); BTW("after a while, a new conn sends a CM Service Request. VLR responds with Auth Req, 2nd auth vector"); @@ -121,6 +122,7 @@ VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); btw("all requests serviced, conn has been released"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); BTW("an SMS is sent, MS is paged"); @@ -203,6 +205,7 @@ VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); btw("SMS is done, conn is gone"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); BTW("subscriber detaches"); @@ -210,6 +213,7 @@ ms_sends_msg("050130089910070000006402"); VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); clear_vlr(); comment_end(); @@ -300,6 +304,7 @@ VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); btw("LU was successful, and the conn has already been closed"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); btw("Subscriber has the new TMSI"); @@ -338,6 +343,7 @@ VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); btw("all requests serviced, conn has been released"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); BTW("an SMS is sent, MS is paged"); @@ -420,6 +426,7 @@ VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); btw("SMS is done, conn is gone"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); /* TODO: when the subscriber detaches, the vlr_subscr gets @@ -429,6 +436,7 @@ expect_bssap_clear(); ms_sends_msg("050130" "05f4" "03020100"); VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); */ @@ -476,6 +484,7 @@ VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); btw("LU was successful, and the conn has already been closed"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); btw("subscriber has the new TMSI"); @@ -491,6 +500,7 @@ ms_sends_msg("050130" "05f4" "07060504"); VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); clear_vlr(); comment_end(); @@ -576,6 +586,7 @@ btw("LU was successful, and the conn has already been closed"); VERBOSE_ASSERT(lu_result_sent, == RES_ACCEPT, "%d"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); btw("Subscriber has the IMEI"); @@ -589,6 +600,7 @@ ms_sends_msg("050130089910070000006402"); VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); clear_vlr(); comment_end(); @@ -693,6 +705,7 @@ VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); btw("LU was successful, and the conn has already been closed"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); btw("Subscriber has the IMEI and TMSI"); @@ -707,6 +720,7 @@ ms_sends_msg("050130" "05f4" "03020100"); VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); clear_vlr(); comment_end(); @@ -793,6 +807,7 @@ btw("LU was successful, and the conn has already been closed"); VERBOSE_ASSERT(lu_result_sent, == RES_ACCEPT, "%d"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); BTW("after a while, a new conn sends a CM Service Request. VLR responds with Auth Req, 2nd auth vector"); @@ -826,6 +841,7 @@ VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); btw("all requests serviced, conn has been released"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); BTW("an SMS is sent, MS is paged"); @@ -911,6 +927,7 @@ VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); btw("SMS is done, conn is gone"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); BTW("subscriber detaches"); @@ -919,6 +936,7 @@ "089910070000106005" /* IMSI */); VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); clear_vlr(); comment_end(); @@ -979,6 +997,7 @@ ms_sends_msg("05542d8b2c"); VERBOSE_ASSERT(lu_result_sent, == RES_REJECT, "%d"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); clear_vlr(); comment_end(); diff --git a/tests/msc_vlr/msc_vlr_test_gsm_authen.err b/tests/msc_vlr/msc_vlr_test_gsm_authen.err index f212cfc..5897ce0 100644 --- a/tests/msc_vlr/msc_vlr_test_gsm_authen.err +++ b/tests/msc_vlr/msc_vlr_test_gsm_authen.err @@ -151,6 +151,12 @@ DREF VLR subscr MSISDN:46071 usage increases to: 4 DREF VLR subscr MSISDN:46071 usage decreases to: 3 - BSSAP Clear --RAN_GERAN_A--> MS +DREF VLR subscr MSISDN:46071 usage decreases to: 2 +<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0 + bssap_clear_sent == 1 +- LU was successful, and the conn has already been closed + lu_result_sent == 1 +- BSS sends BSSMAP Clear Complete DREF MSISDN:46071: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED @@ -161,14 +167,9 @@ DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Freeing instance DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Deallocated DRLL MSISDN:46071: Freeing subscriber connection -DREF VLR subscr MSISDN:46071 usage decreases to: 2 +DREF VLR subscr MSISDN:46071 usage decreases to: 1 DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated -DREF VLR subscr MSISDN:46071 usage decreases to: 1 -<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0 - bssap_clear_sent == 1 -- LU was successful, and the conn has already been closed - lu_result_sent == 1 llist_count(&net->subscr_conns) == 0 --- - after a while, a new conn sends a CM Service Request. VLR responds with Auth Req, 2nd auth vector @@ -268,6 +269,9 @@ DREF VLR subscr MSISDN:46071 usage increases to: 3 DREF VLR subscr MSISDN:46071 usage decreases to: 2 - BSSAP Clear --RAN_GERAN_A--> MS + bssap_clear_sent == 1 +- all requests serviced, conn has been released +- BSS sends BSSMAP Clear Complete DREF MSISDN:46071: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED @@ -280,8 +284,6 @@ DREF VLR subscr MSISDN:46071 usage decreases to: 1 DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated - bssap_clear_sent == 1 -- all requests serviced, conn has been released llist_count(&net->subscr_conns) == 0 --- - an SMS is sent, MS is paged @@ -414,6 +416,10 @@ DREF VLR subscr MSISDN:46071 usage increases to: 3 DREF VLR subscr MSISDN:46071 usage decreases to: 2 - BSSAP Clear --RAN_GERAN_A--> MS + dtap_tx_confirmed == 1 + bssap_clear_sent == 1 +- SMS is done, conn is gone +- BSS sends BSSMAP Clear Complete DREF MSISDN:46071: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED @@ -426,9 +432,6 @@ DREF VLR subscr MSISDN:46071 usage decreases to: 1 DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated - dtap_tx_confirmed == 1 - bssap_clear_sent == 1 -- SMS is done, conn is gone llist_count(&net->subscr_conns) == 0 --- - subscriber detaches @@ -448,15 +451,16 @@ DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASING DREF unknown: MSC conn use + release == 2 (0x101) - BSSAP Clear --RAN_GERAN_A--> MS -DREF unknown: MSC conn use - release == 1 (0x1) -DREF unknown: MSC conn use - compl_l3 == 0 (0x0) +DREF unknown: MSC conn use - compl_l3 == 1 (0x100) + bssap_clear_sent == 1 +- BSS sends BSSMAP Clear Complete +DREF unknown: MSC conn use - release == 0 (0x0) DMM Subscr_Conn{SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn{SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DRLL Freeing subscriber connection with NULL subscriber DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Deallocated - bssap_clear_sent == 1 llist_count(&net->subscr_conns) == 0 ===== test_gsm_authen: SUCCESS @@ -644,8 +648,11 @@ DREF VLR subscr MSISDN:46071 usage increases to: 3 DREF VLR subscr MSISDN:46071 usage decreases to: 2 - BSSAP Clear --RAN_GERAN_A--> MS -DREF MSISDN:46071: MSC conn use - release == 1 (0x2) -DREF MSISDN:46071: MSC conn use - dtap == 0 (0x0) +DREF MSISDN:46071: MSC conn use - dtap == 1 (0x100) + bssap_clear_sent == 1 +- LU was successful, and the conn has already been closed +- BSS sends BSSMAP Clear Complete +DREF MSISDN:46071: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) @@ -658,8 +665,6 @@ DREF VLR subscr MSISDN:46071 usage decreases to: 1 DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated - bssap_clear_sent == 1 -- LU was successful, and the conn has already been closed llist_count(&net->subscr_conns) == 0 - Subscriber has the new TMSI DREF VLR subscr MSISDN:46071 usage increases to: 2 @@ -766,6 +771,9 @@ DREF VLR subscr MSISDN:46071 usage increases to: 3 DREF VLR subscr MSISDN:46071 usage decreases to: 2 - BSSAP Clear --RAN_GERAN_A--> MS + bssap_clear_sent == 1 +- all requests serviced, conn has been released +- BSS sends BSSMAP Clear Complete DREF MSISDN:46071: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(50462976){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(50462976){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED @@ -778,8 +786,6 @@ DREF VLR subscr MSISDN:46071 usage decreases to: 1 DMM Subscr_Conn(50462976){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(50462976){SUBSCR_CONN_S_RELEASED}: Deallocated - bssap_clear_sent == 1 -- all requests serviced, conn has been released llist_count(&net->subscr_conns) == 0 --- - an SMS is sent, MS is paged @@ -912,6 +918,10 @@ DREF VLR subscr MSISDN:46071 usage increases to: 3 DREF VLR subscr MSISDN:46071 usage decreases to: 2 - BSSAP Clear --RAN_GERAN_A--> MS + dtap_tx_confirmed == 1 + bssap_clear_sent == 1 +- SMS is done, conn is gone +- BSS sends BSSMAP Clear Complete DREF MSISDN:46071: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(50462976){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(50462976){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED @@ -924,9 +934,6 @@ DREF VLR subscr MSISDN:46071 usage decreases to: 1 DMM Subscr_Conn(50462976){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(50462976){SUBSCR_CONN_S_RELEASED}: Deallocated - dtap_tx_confirmed == 1 - bssap_clear_sent == 1 -- SMS is done, conn is gone llist_count(&net->subscr_conns) == 0 --- - subscriber sends LU Request, this time with the TMSI @@ -1076,8 +1083,11 @@ DREF VLR subscr MSISDN:46071 usage increases to: 3 DREF VLR subscr MSISDN:46071 usage decreases to: 2 - BSSAP Clear --RAN_GERAN_A--> MS -DREF MSISDN:46071: MSC conn use - release == 1 (0x2) -DREF MSISDN:46071: MSC conn use - dtap == 0 (0x0) +DREF MSISDN:46071: MSC conn use - dtap == 1 (0x100) + bssap_clear_sent == 1 +- LU was successful, and the conn has already been closed +- BSS sends BSSMAP Clear Complete +DREF MSISDN:46071: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(50462976){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(50462976){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn(50462976){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) @@ -1090,8 +1100,6 @@ DREF VLR subscr MSISDN:46071 usage decreases to: 1 DMM Subscr_Conn(50462976){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(50462976){SUBSCR_CONN_S_RELEASED}: Deallocated - bssap_clear_sent == 1 -- LU was successful, and the conn has already been closed llist_count(&net->subscr_conns) == 0 - subscriber has the new TMSI DREF VLR subscr MSISDN:46071 usage increases to: 2 @@ -1118,15 +1126,16 @@ DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASING DREF unknown: MSC conn use + release == 2 (0x101) - BSSAP Clear --RAN_GERAN_A--> MS -DREF unknown: MSC conn use - release == 1 (0x1) -DREF unknown: MSC conn use - compl_l3 == 0 (0x0) +DREF unknown: MSC conn use - compl_l3 == 1 (0x100) + bssap_clear_sent == 1 +- BSS sends BSSMAP Clear Complete +DREF unknown: MSC conn use - release == 0 (0x0) DMM Subscr_Conn{SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn{SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DRLL Freeing subscriber connection with NULL subscriber DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Deallocated - bssap_clear_sent == 1 llist_count(&net->subscr_conns) == 0 ===== test_gsm_authen_tmsi: SUCCESS @@ -1312,8 +1321,12 @@ DREF VLR subscr MSISDN:46071 usage increases to: 3 DREF VLR subscr MSISDN:46071 usage decreases to: 2 - BSSAP Clear --RAN_GERAN_A--> MS -DREF MSISDN:46071: MSC conn use - release == 1 (0x2) -DREF MSISDN:46071: MSC conn use - dtap == 0 (0x0) +DREF MSISDN:46071: MSC conn use - dtap == 1 (0x100) + bssap_clear_sent == 1 +- LU was successful, and the conn has already been closed + lu_result_sent == 1 +- BSS sends BSSMAP Clear Complete +DREF MSISDN:46071: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) @@ -1326,9 +1339,6 @@ DREF VLR subscr MSISDN:46071 usage decreases to: 1 DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated - bssap_clear_sent == 1 -- LU was successful, and the conn has already been closed - lu_result_sent == 1 llist_count(&net->subscr_conns) == 0 - Subscriber has the IMEI DREF VLR subscr MSISDN:46071 usage increases to: 2 @@ -1352,15 +1362,16 @@ DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASING DREF unknown: MSC conn use + release == 2 (0x101) - BSSAP Clear --RAN_GERAN_A--> MS -DREF unknown: MSC conn use - release == 1 (0x1) -DREF unknown: MSC conn use - compl_l3 == 0 (0x0) +DREF unknown: MSC conn use - compl_l3 == 1 (0x100) + bssap_clear_sent == 1 +- BSS sends BSSMAP Clear Complete +DREF unknown: MSC conn use - release == 0 (0x0) DMM Subscr_Conn{SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn{SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DRLL Freeing subscriber connection with NULL subscriber DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Deallocated - bssap_clear_sent == 1 llist_count(&net->subscr_conns) == 0 ===== test_gsm_authen_imei: SUCCESS @@ -1578,8 +1589,11 @@ DREF VLR subscr MSISDN:46071 usage increases to: 3 DREF VLR subscr MSISDN:46071 usage decreases to: 2 - BSSAP Clear --RAN_GERAN_A--> MS -DREF MSISDN:46071: MSC conn use - release == 1 (0x2) -DREF MSISDN:46071: MSC conn use - dtap == 0 (0x0) +DREF MSISDN:46071: MSC conn use - dtap == 1 (0x100) + bssap_clear_sent == 1 +- LU was successful, and the conn has already been closed +- BSS sends BSSMAP Clear Complete +DREF MSISDN:46071: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) @@ -1592,8 +1606,6 @@ DREF VLR subscr MSISDN:46071 usage decreases to: 1 DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated - bssap_clear_sent == 1 -- LU was successful, and the conn has already been closed llist_count(&net->subscr_conns) == 0 - Subscriber has the IMEI and TMSI DREF VLR subscr MSISDN:46071 usage increases to: 2 @@ -1618,15 +1630,16 @@ DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASING DREF unknown: MSC conn use + release == 2 (0x101) - BSSAP Clear --RAN_GERAN_A--> MS -DREF unknown: MSC conn use - release == 1 (0x1) -DREF unknown: MSC conn use - compl_l3 == 0 (0x0) +DREF unknown: MSC conn use - compl_l3 == 1 (0x100) + bssap_clear_sent == 1 +- BSS sends BSSMAP Clear Complete +DREF unknown: MSC conn use - release == 0 (0x0) DMM Subscr_Conn{SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn{SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DRLL Freeing subscriber connection with NULL subscriber DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Deallocated - bssap_clear_sent == 1 llist_count(&net->subscr_conns) == 0 ===== test_gsm_authen_tmsi_imei: SUCCESS @@ -1764,6 +1777,12 @@ DREF VLR subscr MSISDN:42342 usage increases to: 4 DREF VLR subscr MSISDN:42342 usage decreases to: 3 - BSSAP Clear --RAN_GERAN_A--> MS +DREF VLR subscr MSISDN:42342 usage decreases to: 2 +<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0 + bssap_clear_sent == 1 +- LU was successful, and the conn has already been closed + lu_result_sent == 1 +- BSS sends BSSMAP Clear Complete DREF MSISDN:42342: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED @@ -1774,14 +1793,9 @@ DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_DONE}: Freeing instance DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_DONE}: Deallocated DRLL MSISDN:42342: Freeing subscriber connection -DREF VLR subscr MSISDN:42342 usage decreases to: 2 +DREF VLR subscr MSISDN:42342 usage decreases to: 1 DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Deallocated -DREF VLR subscr MSISDN:42342 usage decreases to: 1 -<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0 - bssap_clear_sent == 1 -- LU was successful, and the conn has already been closed - lu_result_sent == 1 llist_count(&net->subscr_conns) == 0 --- - after a while, a new conn sends a CM Service Request. VLR responds with Auth Req, 2nd auth vector @@ -1881,6 +1895,9 @@ DREF VLR subscr MSISDN:42342 usage increases to: 3 DREF VLR subscr MSISDN:42342 usage decreases to: 2 - BSSAP Clear --RAN_GERAN_A--> MS + bssap_clear_sent == 1 +- all requests serviced, conn has been released +- BSS sends BSSMAP Clear Complete DREF MSISDN:42342: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED @@ -1893,8 +1910,6 @@ DREF VLR subscr MSISDN:42342 usage decreases to: 1 DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Deallocated - bssap_clear_sent == 1 -- all requests serviced, conn has been released llist_count(&net->subscr_conns) == 0 --- - an SMS is sent, MS is paged @@ -2027,6 +2042,10 @@ DREF VLR subscr MSISDN:42342 usage increases to: 3 DREF VLR subscr MSISDN:42342 usage decreases to: 2 - BSSAP Clear --RAN_GERAN_A--> MS + dtap_tx_confirmed == 1 + bssap_clear_sent == 1 +- SMS is done, conn is gone +- BSS sends BSSMAP Clear Complete DREF MSISDN:42342: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED @@ -2039,9 +2058,6 @@ DREF VLR subscr MSISDN:42342 usage decreases to: 1 DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Deallocated - dtap_tx_confirmed == 1 - bssap_clear_sent == 1 -- SMS is done, conn is gone llist_count(&net->subscr_conns) == 0 --- - subscriber detaches @@ -2061,15 +2077,16 @@ DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASING DREF unknown: MSC conn use + release == 2 (0x101) - BSSAP Clear --RAN_GERAN_A--> MS -DREF unknown: MSC conn use - release == 1 (0x1) -DREF unknown: MSC conn use - compl_l3 == 0 (0x0) +DREF unknown: MSC conn use - compl_l3 == 1 (0x100) + bssap_clear_sent == 1 +- BSS sends BSSMAP Clear Complete +DREF unknown: MSC conn use - release == 0 (0x0) DMM Subscr_Conn{SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn{SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DRLL Freeing subscriber connection with NULL subscriber DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Deallocated - bssap_clear_sent == 1 llist_count(&net->subscr_conns) == 0 ===== test_gsm_milenage_authen: SUCCESS @@ -2171,8 +2188,10 @@ DREF VLR subscr IMSI:901700000004620 usage increases to: 2 DREF VLR subscr IMSI:901700000004620 usage decreases to: 1 - BSSAP Clear --RAN_GERAN_A--> MS -DREF IMSI:901700000004620: MSC conn use - release == 1 (0x2) -DREF IMSI:901700000004620: MSC conn use - dtap == 0 (0x0) +DREF IMSI:901700000004620: MSC conn use - dtap == 1 (0x100) + lu_result_sent == 2 +- BSS sends BSSMAP Clear Complete +DREF IMSI:901700000004620: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) @@ -2186,7 +2205,6 @@ DREF freeing VLR subscr IMSI:901700000004620 DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated - lu_result_sent == 2 llist_count(&net->subscr_conns) == 0 ===== test_wrong_sres_length: SUCCESS diff --git a/tests/msc_vlr/msc_vlr_test_gsm_ciph.c b/tests/msc_vlr/msc_vlr_test_gsm_ciph.c index 8a05b3f..b426981 100644 --- a/tests/msc_vlr/msc_vlr_test_gsm_ciph.c +++ b/tests/msc_vlr/msc_vlr_test_gsm_ciph.c @@ -93,6 +93,7 @@ btw("LU was successful, and the conn has already been closed"); VERBOSE_ASSERT(lu_result_sent, == RES_ACCEPT, "%d"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); BTW("after a while, a new conn sends a CM Service Request. VLR responds with Auth Req, 2nd auth vector"); @@ -132,6 +133,7 @@ VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); btw("all requests serviced, conn has been released"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); BTW("an SMS is sent, MS is paged"); @@ -223,6 +225,7 @@ VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); btw("SMS is done, conn is gone"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); BTW("subscriber detaches"); @@ -230,6 +233,7 @@ ms_sends_msg("050130089910070000006402"); VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); clear_vlr(); comment_end(); @@ -323,6 +327,7 @@ VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); btw("LU was successful, and the conn has already been closed"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); btw("Subscriber has the new TMSI"); @@ -371,6 +376,7 @@ VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); btw("all requests serviced, conn has been released"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); BTW("an SMS is sent, MS is paged"); @@ -462,6 +468,7 @@ VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); btw("SMS is done, conn is gone"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); BTW("subscriber detaches, using TMSI"); @@ -469,6 +476,7 @@ ms_sends_msg("050130" "05f4" "03020100"); VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); clear_vlr(); comment_end(); @@ -558,6 +566,7 @@ btw("LU was successful, and the conn has already been closed"); VERBOSE_ASSERT(lu_result_sent, == RES_ACCEPT, "%d"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); btw("Subscriber has the IMEI"); @@ -571,6 +580,7 @@ ms_sends_msg("050130089910070000006402"); VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); clear_vlr(); comment_end(); @@ -662,6 +672,7 @@ btw("LU was successful, and the conn has already been closed"); VERBOSE_ASSERT(lu_result_sent, == RES_ACCEPT, "%d"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); BTW("subscriber detaches"); @@ -669,6 +680,7 @@ ms_sends_msg("050130089910070000006402"); VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); clear_vlr(); comment_end(); @@ -775,6 +787,7 @@ VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); btw("LU was successful, and the conn has already been closed"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); btw("Subscriber has the IMEI and TMSI"); @@ -789,6 +802,7 @@ ms_sends_msg("050130" "05f4" "03020100"); VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); clear_vlr(); comment_end(); @@ -923,6 +937,7 @@ btw("LU was successful, and the conn has already been closed"); VERBOSE_ASSERT(lu_result_sent, == RES_ACCEPT, "%d"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); BTW("after a while, a new conn sends a CM Service Request. VLR responds with *UMTS AKA* Auth Req, 2nd auth vector"); @@ -961,6 +976,7 @@ VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); btw("all requests serviced, conn has been released"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); BTW("an SMS is sent, MS is paged"); @@ -1031,6 +1047,7 @@ VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); btw("SMS is done, conn is gone"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); BTW("subscriber detaches"); @@ -1039,6 +1056,7 @@ "089910070000106005" /* IMSI */); VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); clear_vlr(); comment_end(); @@ -1091,6 +1109,7 @@ OSMO_ASSERT(!cipher_mode_cmd_sent); VERBOSE_ASSERT(lu_result_sent, == RES_REJECT, "%d"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); clear_vlr(); comment_end(); diff --git a/tests/msc_vlr/msc_vlr_test_gsm_ciph.err b/tests/msc_vlr/msc_vlr_test_gsm_ciph.err index 9d90260..2d5670d 100644 --- a/tests/msc_vlr/msc_vlr_test_gsm_ciph.err +++ b/tests/msc_vlr/msc_vlr_test_gsm_ciph.err @@ -155,6 +155,12 @@ DREF VLR subscr MSISDN:46071 usage increases to: 4 DREF VLR subscr MSISDN:46071 usage decreases to: 3 - BSSAP Clear --RAN_GERAN_A--> MS +DREF VLR subscr MSISDN:46071 usage decreases to: 2 +<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0 + bssap_clear_sent == 1 +- LU was successful, and the conn has already been closed + lu_result_sent == 1 +- BSS sends BSSMAP Clear Complete DREF MSISDN:46071: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED @@ -165,14 +171,9 @@ DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Freeing instance DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Deallocated DRLL MSISDN:46071: Freeing subscriber connection -DREF VLR subscr MSISDN:46071 usage decreases to: 2 +DREF VLR subscr MSISDN:46071 usage decreases to: 1 DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated -DREF VLR subscr MSISDN:46071 usage decreases to: 1 -<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0 - bssap_clear_sent == 1 -- LU was successful, and the conn has already been closed - lu_result_sent == 1 llist_count(&net->subscr_conns) == 0 --- - after a while, a new conn sends a CM Service Request. VLR responds with Auth Req, 2nd auth vector @@ -297,6 +298,9 @@ DREF VLR subscr MSISDN:46071 usage increases to: 3 DREF VLR subscr MSISDN:46071 usage decreases to: 2 - BSSAP Clear --RAN_GERAN_A--> MS + bssap_clear_sent == 1 +- all requests serviced, conn has been released +- BSS sends BSSMAP Clear Complete DREF MSISDN:46071: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED @@ -309,8 +313,6 @@ DREF VLR subscr MSISDN:46071 usage decreases to: 1 DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated - bssap_clear_sent == 1 -- all requests serviced, conn has been released llist_count(&net->subscr_conns) == 0 --- - an SMS is sent, MS is paged @@ -468,6 +470,10 @@ DREF VLR subscr MSISDN:46071 usage increases to: 3 DREF VLR subscr MSISDN:46071 usage decreases to: 2 - BSSAP Clear --RAN_GERAN_A--> MS + dtap_tx_confirmed == 1 + bssap_clear_sent == 1 +- SMS is done, conn is gone +- BSS sends BSSMAP Clear Complete DREF MSISDN:46071: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED @@ -480,9 +486,6 @@ DREF VLR subscr MSISDN:46071 usage decreases to: 1 DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated - dtap_tx_confirmed == 1 - bssap_clear_sent == 1 -- SMS is done, conn is gone llist_count(&net->subscr_conns) == 0 --- - subscriber detaches @@ -502,15 +505,16 @@ DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASING DREF unknown: MSC conn use + release == 2 (0x101) - BSSAP Clear --RAN_GERAN_A--> MS -DREF unknown: MSC conn use - release == 1 (0x1) -DREF unknown: MSC conn use - compl_l3 == 0 (0x0) +DREF unknown: MSC conn use - compl_l3 == 1 (0x100) + bssap_clear_sent == 1 +- BSS sends BSSMAP Clear Complete +DREF unknown: MSC conn use - release == 0 (0x0) DMM Subscr_Conn{SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn{SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DRLL Freeing subscriber connection with NULL subscriber DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Deallocated - bssap_clear_sent == 1 llist_count(&net->subscr_conns) == 0 ===== test_ciph: SUCCESS @@ -703,8 +707,11 @@ DREF VLR subscr MSISDN:46071 usage increases to: 3 DREF VLR subscr MSISDN:46071 usage decreases to: 2 - BSSAP Clear --RAN_GERAN_A--> MS -DREF MSISDN:46071: MSC conn use - release == 1 (0x2) -DREF MSISDN:46071: MSC conn use - dtap == 0 (0x0) +DREF MSISDN:46071: MSC conn use - dtap == 1 (0x100) + bssap_clear_sent == 1 +- LU was successful, and the conn has already been closed +- BSS sends BSSMAP Clear Complete +DREF MSISDN:46071: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) @@ -717,8 +724,6 @@ DREF VLR subscr MSISDN:46071 usage decreases to: 1 DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated - bssap_clear_sent == 1 -- LU was successful, and the conn has already been closed llist_count(&net->subscr_conns) == 0 - Subscriber has the new TMSI DREF VLR subscr MSISDN:46071 usage increases to: 2 @@ -850,6 +855,9 @@ DREF VLR subscr MSISDN:46071 usage increases to: 3 DREF VLR subscr MSISDN:46071 usage decreases to: 2 - BSSAP Clear --RAN_GERAN_A--> MS + bssap_clear_sent == 1 +- all requests serviced, conn has been released +- BSS sends BSSMAP Clear Complete DREF MSISDN:46071: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(50462976){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(50462976){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED @@ -862,8 +870,6 @@ DREF VLR subscr MSISDN:46071 usage decreases to: 1 DMM Subscr_Conn(50462976){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(50462976){SUBSCR_CONN_S_RELEASED}: Deallocated - bssap_clear_sent == 1 -- all requests serviced, conn has been released llist_count(&net->subscr_conns) == 0 --- - an SMS is sent, MS is paged @@ -1021,6 +1027,10 @@ DREF VLR subscr MSISDN:46071 usage increases to: 3 DREF VLR subscr MSISDN:46071 usage decreases to: 2 - BSSAP Clear --RAN_GERAN_A--> MS + dtap_tx_confirmed == 1 + bssap_clear_sent == 1 +- SMS is done, conn is gone +- BSS sends BSSMAP Clear Complete DREF MSISDN:46071: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(50462976){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(50462976){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED @@ -1033,9 +1043,6 @@ DREF VLR subscr MSISDN:46071 usage decreases to: 1 DMM Subscr_Conn(50462976){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(50462976){SUBSCR_CONN_S_RELEASED}: Deallocated - dtap_tx_confirmed == 1 - bssap_clear_sent == 1 -- SMS is done, conn is gone llist_count(&net->subscr_conns) == 0 --- - subscriber detaches, using TMSI @@ -1055,15 +1062,16 @@ DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASING DREF unknown: MSC conn use + release == 2 (0x101) - BSSAP Clear --RAN_GERAN_A--> MS -DREF unknown: MSC conn use - release == 1 (0x1) -DREF unknown: MSC conn use - compl_l3 == 0 (0x0) +DREF unknown: MSC conn use - compl_l3 == 1 (0x100) + bssap_clear_sent == 1 +- BSS sends BSSMAP Clear Complete +DREF unknown: MSC conn use - release == 0 (0x0) DMM Subscr_Conn{SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn{SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DRLL Freeing subscriber connection with NULL subscriber DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Deallocated - bssap_clear_sent == 1 llist_count(&net->subscr_conns) == 0 ===== test_ciph_tmsi: SUCCESS @@ -1253,8 +1261,12 @@ DREF VLR subscr MSISDN:46071 usage increases to: 3 DREF VLR subscr MSISDN:46071 usage decreases to: 2 - BSSAP Clear --RAN_GERAN_A--> MS -DREF MSISDN:46071: MSC conn use - release == 1 (0x2) -DREF MSISDN:46071: MSC conn use - dtap == 0 (0x0) +DREF MSISDN:46071: MSC conn use - dtap == 1 (0x100) + bssap_clear_sent == 1 +- LU was successful, and the conn has already been closed + lu_result_sent == 1 +- BSS sends BSSMAP Clear Complete +DREF MSISDN:46071: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) @@ -1267,9 +1279,6 @@ DREF VLR subscr MSISDN:46071 usage decreases to: 1 DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated - bssap_clear_sent == 1 -- LU was successful, and the conn has already been closed - lu_result_sent == 1 llist_count(&net->subscr_conns) == 0 - Subscriber has the IMEI DREF VLR subscr MSISDN:46071 usage increases to: 2 @@ -1293,15 +1302,16 @@ DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASING DREF unknown: MSC conn use + release == 2 (0x101) - BSSAP Clear --RAN_GERAN_A--> MS -DREF unknown: MSC conn use - release == 1 (0x1) -DREF unknown: MSC conn use - compl_l3 == 0 (0x0) +DREF unknown: MSC conn use - compl_l3 == 1 (0x100) + bssap_clear_sent == 1 +- BSS sends BSSMAP Clear Complete +DREF unknown: MSC conn use - release == 0 (0x0) DMM Subscr_Conn{SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn{SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DRLL Freeing subscriber connection with NULL subscriber DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Deallocated - bssap_clear_sent == 1 llist_count(&net->subscr_conns) == 0 ===== test_ciph_imei: SUCCESS @@ -1483,6 +1493,12 @@ DREF VLR subscr MSISDN:46071 usage increases to: 4 DREF VLR subscr MSISDN:46071 usage decreases to: 3 - BSSAP Clear --RAN_GERAN_A--> MS +DREF VLR subscr MSISDN:46071 usage decreases to: 2 +<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0 + bssap_clear_sent == 1 +- LU was successful, and the conn has already been closed + lu_result_sent == 1 +- BSS sends BSSMAP Clear Complete DREF MSISDN:46071: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED @@ -1493,14 +1509,9 @@ DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Freeing instance DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Deallocated DRLL MSISDN:46071: Freeing subscriber connection -DREF VLR subscr MSISDN:46071 usage decreases to: 2 +DREF VLR subscr MSISDN:46071 usage decreases to: 1 DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated -DREF VLR subscr MSISDN:46071 usage decreases to: 1 -<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0 - bssap_clear_sent == 1 -- LU was successful, and the conn has already been closed - lu_result_sent == 1 llist_count(&net->subscr_conns) == 0 --- - subscriber detaches @@ -1520,15 +1531,16 @@ DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASING DREF unknown: MSC conn use + release == 2 (0x101) - BSSAP Clear --RAN_GERAN_A--> MS -DREF unknown: MSC conn use - release == 1 (0x1) -DREF unknown: MSC conn use - compl_l3 == 0 (0x0) +DREF unknown: MSC conn use - compl_l3 == 1 (0x100) + bssap_clear_sent == 1 +- BSS sends BSSMAP Clear Complete +DREF unknown: MSC conn use - release == 0 (0x0) DMM Subscr_Conn{SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn{SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DRLL Freeing subscriber connection with NULL subscriber DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Deallocated - bssap_clear_sent == 1 llist_count(&net->subscr_conns) == 0 ===== test_ciph_imeisv: SUCCESS @@ -1750,8 +1762,11 @@ DREF VLR subscr MSISDN:46071 usage increases to: 3 DREF VLR subscr MSISDN:46071 usage decreases to: 2 - BSSAP Clear --RAN_GERAN_A--> MS -DREF MSISDN:46071: MSC conn use - release == 1 (0x2) -DREF MSISDN:46071: MSC conn use - dtap == 0 (0x0) +DREF MSISDN:46071: MSC conn use - dtap == 1 (0x100) + bssap_clear_sent == 1 +- LU was successful, and the conn has already been closed +- BSS sends BSSMAP Clear Complete +DREF MSISDN:46071: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) @@ -1764,8 +1779,6 @@ DREF VLR subscr MSISDN:46071 usage decreases to: 1 DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated - bssap_clear_sent == 1 -- LU was successful, and the conn has already been closed llist_count(&net->subscr_conns) == 0 - Subscriber has the IMEI and TMSI DREF VLR subscr MSISDN:46071 usage increases to: 2 @@ -1790,15 +1803,16 @@ DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASING DREF unknown: MSC conn use + release == 2 (0x101) - BSSAP Clear --RAN_GERAN_A--> MS -DREF unknown: MSC conn use - release == 1 (0x1) -DREF unknown: MSC conn use - compl_l3 == 0 (0x0) +DREF unknown: MSC conn use - compl_l3 == 1 (0x100) + bssap_clear_sent == 1 +- BSS sends BSSMAP Clear Complete +DREF unknown: MSC conn use - release == 0 (0x0) DMM Subscr_Conn{SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn{SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DRLL Freeing subscriber connection with NULL subscriber DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Deallocated - bssap_clear_sent == 1 llist_count(&net->subscr_conns) == 0 ===== test_ciph_tmsi_imei: SUCCESS @@ -1948,6 +1962,12 @@ DREF VLR subscr MSISDN:42342 usage increases to: 4 DREF VLR subscr MSISDN:42342 usage decreases to: 3 - BSSAP Clear --RAN_GERAN_A--> MS +DREF VLR subscr MSISDN:42342 usage decreases to: 2 +<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0 + bssap_clear_sent == 1 +- LU was successful, and the conn has already been closed + lu_result_sent == 1 +- BSS sends BSSMAP Clear Complete DREF MSISDN:42342: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED @@ -1958,14 +1978,9 @@ DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_DONE}: Freeing instance DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_DONE}: Deallocated DRLL MSISDN:42342: Freeing subscriber connection -DREF VLR subscr MSISDN:42342 usage decreases to: 2 +DREF VLR subscr MSISDN:42342 usage decreases to: 1 DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Deallocated -DREF VLR subscr MSISDN:42342 usage decreases to: 1 -<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0 - bssap_clear_sent == 1 -- LU was successful, and the conn has already been closed - lu_result_sent == 1 llist_count(&net->subscr_conns) == 0 --- - after a while, a new conn sends a CM Service Request. VLR responds with *UMTS AKA* Auth Req, 2nd auth vector @@ -2080,6 +2095,9 @@ DREF VLR subscr MSISDN:42342 usage increases to: 3 DREF VLR subscr MSISDN:42342 usage decreases to: 2 - BSSAP Clear --RAN_GERAN_A--> MS + bssap_clear_sent == 1 +- all requests serviced, conn has been released +- BSS sends BSSMAP Clear Complete DREF MSISDN:42342: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED @@ -2092,8 +2110,6 @@ DREF VLR subscr MSISDN:42342 usage decreases to: 1 DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Deallocated - bssap_clear_sent == 1 -- all requests serviced, conn has been released llist_count(&net->subscr_conns) == 0 --- - an SMS is sent, MS is paged @@ -2241,6 +2257,10 @@ DREF VLR subscr MSISDN:42342 usage increases to: 3 DREF VLR subscr MSISDN:42342 usage decreases to: 2 - BSSAP Clear --RAN_GERAN_A--> MS + dtap_tx_confirmed == 1 + bssap_clear_sent == 1 +- SMS is done, conn is gone +- BSS sends BSSMAP Clear Complete DREF MSISDN:42342: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED @@ -2253,9 +2273,6 @@ DREF VLR subscr MSISDN:42342 usage decreases to: 1 DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Deallocated - dtap_tx_confirmed == 1 - bssap_clear_sent == 1 -- SMS is done, conn is gone llist_count(&net->subscr_conns) == 0 --- - subscriber detaches @@ -2275,15 +2292,16 @@ DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASING DREF unknown: MSC conn use + release == 2 (0x101) - BSSAP Clear --RAN_GERAN_A--> MS -DREF unknown: MSC conn use - release == 1 (0x1) -DREF unknown: MSC conn use - compl_l3 == 0 (0x0) +DREF unknown: MSC conn use - compl_l3 == 1 (0x100) + bssap_clear_sent == 1 +- BSS sends BSSMAP Clear Complete +DREF unknown: MSC conn use - release == 0 (0x0) DMM Subscr_Conn{SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn{SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DRLL Freeing subscriber connection with NULL subscriber DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Deallocated - bssap_clear_sent == 1 llist_count(&net->subscr_conns) == 0 ===== test_gsm_ciph_in_umts_env: SUCCESS @@ -2369,8 +2387,10 @@ DREF VLR subscr IMSI:901700000004620 usage increases to: 2 DREF VLR subscr IMSI:901700000004620 usage decreases to: 1 - BSSAP Clear --RAN_GERAN_A--> MS -DREF IMSI:901700000004620: MSC conn use - release == 1 (0x2) -DREF IMSI:901700000004620: MSC conn use - dtap == 0 (0x0) +DREF IMSI:901700000004620: MSC conn use - dtap == 1 (0x100) + lu_result_sent == 2 +- BSS sends BSSMAP Clear Complete +DREF IMSI:901700000004620: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) @@ -2384,7 +2404,6 @@ DREF freeing VLR subscr IMSI:901700000004620 DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated - lu_result_sent == 2 llist_count(&net->subscr_conns) == 0 ===== test_a5_3_not_supported: SUCCESS diff --git a/tests/msc_vlr/msc_vlr_test_hlr_reject.c b/tests/msc_vlr/msc_vlr_test_hlr_reject.c index 8532f8e..8dfe1f4 100644 --- a/tests/msc_vlr/msc_vlr_test_hlr_reject.c +++ b/tests/msc_vlr/msc_vlr_test_hlr_reject.c @@ -44,6 +44,7 @@ VERBOSE_ASSERT(lu_result_sent, == RES_REJECT, "%d"); VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); clear_vlr(); comment_end(); @@ -70,6 +71,7 @@ VERBOSE_ASSERT(lu_result_sent, == RES_REJECT, "%d"); VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); clear_vlr(); comment_end(); @@ -128,6 +130,7 @@ btw("LU was successful, and the conn has already been closed"); VERBOSE_ASSERT(lu_result_sent, == RES_ACCEPT, "%d"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); @@ -157,6 +160,7 @@ VERBOSE_ASSERT(lu_result_sent, == RES_REJECT, "%d"); VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); clear_vlr(); comment_end(); @@ -215,6 +219,7 @@ btw("LU was successful, and the conn has already been closed"); VERBOSE_ASSERT(lu_result_sent, == RES_ACCEPT, "%d"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); @@ -245,6 +250,7 @@ VERBOSE_ASSERT(lu_result_sent, == RES_REJECT, "%d"); VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); clear_vlr(); comment_end(); @@ -277,6 +283,7 @@ VERBOSE_ASSERT(lu_result_sent, == RES_REJECT, "%d"); VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); clear_vlr(); comment_end(); @@ -335,6 +342,7 @@ btw("LU was successful, and the conn has already been closed"); VERBOSE_ASSERT(lu_result_sent, == RES_ACCEPT, "%d"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); @@ -379,6 +387,7 @@ btw("LU was successful, and the conn has already been closed"); VERBOSE_ASSERT(lu_result_sent, == RES_ACCEPT, "%d"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); clear_vlr(); @@ -402,6 +411,7 @@ NULL); VERBOSE_ASSERT(lu_result_sent, == RES_REJECT, "%d"); VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); clear_vlr(); @@ -429,6 +439,7 @@ btw("LU was successful, and the conn has already been closed"); VERBOSE_ASSERT(lu_result_sent, == RES_ACCEPT, "%d"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); clear_vlr(); comment_end(); diff --git a/tests/msc_vlr/msc_vlr_test_hlr_reject.err b/tests/msc_vlr/msc_vlr_test_hlr_reject.err index 28e15aa..959b58c 100644 --- a/tests/msc_vlr/msc_vlr_test_hlr_reject.err +++ b/tests/msc_vlr/msc_vlr_test_hlr_reject.err @@ -55,6 +55,12 @@ DREF VLR subscr IMSI:901700000004620 usage increases to: 3 DREF VLR subscr IMSI:901700000004620 usage decreases to: 2 - BSSAP Clear --RAN_GERAN_A--> MS +DREF VLR subscr IMSI:901700000004620 usage decreases to: 1 +<-- GSUP rx OSMO_GSUP_MSGT_SEND_AUTH_INFO_ERROR: vlr_gsupc_read_cb() returns 0 + auth_request_sent == 0 + lu_result_sent == 2 + bssap_clear_sent == 1 +- BSS sends BSSMAP Clear Complete DREF IMSI:901700000004620: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED @@ -65,15 +71,10 @@ DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Freeing instance DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Deallocated DRLL IMSI:901700000004620: Freeing subscriber connection -DREF VLR subscr IMSI:901700000004620 usage decreases to: 1 -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated DREF VLR subscr IMSI:901700000004620 usage decreases to: 0 DREF freeing VLR subscr IMSI:901700000004620 -<-- GSUP rx OSMO_GSUP_MSGT_SEND_AUTH_INFO_ERROR: vlr_gsupc_read_cb() returns 0 - auth_request_sent == 0 - lu_result_sent == 2 - bssap_clear_sent == 1 +DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance +DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated llist_count(&net->subscr_conns) == 0 ===== test_hlr_rej_auth_info_unknown_imsi: SUCCESS @@ -134,6 +135,12 @@ DREF VLR subscr IMSI:901700000004620 usage increases to: 3 DREF VLR subscr IMSI:901700000004620 usage decreases to: 2 - BSSAP Clear --RAN_GERAN_A--> MS +DREF VLR subscr IMSI:901700000004620 usage decreases to: 1 +<-- GSUP rx OSMO_GSUP_MSGT_SEND_AUTH_INFO_ERROR: vlr_gsupc_read_cb() returns 0 + auth_request_sent == 0 + lu_result_sent == 2 + bssap_clear_sent == 1 +- BSS sends BSSMAP Clear Complete DREF IMSI:901700000004620: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED @@ -144,15 +151,10 @@ DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Freeing instance DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Deallocated DRLL IMSI:901700000004620: Freeing subscriber connection -DREF VLR subscr IMSI:901700000004620 usage decreases to: 1 -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated DREF VLR subscr IMSI:901700000004620 usage decreases to: 0 DREF freeing VLR subscr IMSI:901700000004620 -<-- GSUP rx OSMO_GSUP_MSGT_SEND_AUTH_INFO_ERROR: vlr_gsupc_read_cb() returns 0 - auth_request_sent == 0 - lu_result_sent == 2 - bssap_clear_sent == 1 +DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance +DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated llist_count(&net->subscr_conns) == 0 ===== test_hlr_rej_auth_info_net_fail: SUCCESS @@ -292,6 +294,12 @@ DREF VLR subscr MSISDN:46071 usage increases to: 4 DREF VLR subscr MSISDN:46071 usage decreases to: 3 - BSSAP Clear --RAN_GERAN_A--> MS +DREF VLR subscr MSISDN:46071 usage decreases to: 2 +<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0 + bssap_clear_sent == 1 +- LU was successful, and the conn has already been closed + lu_result_sent == 1 +- BSS sends BSSMAP Clear Complete DREF MSISDN:46071: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED @@ -302,14 +310,9 @@ DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Freeing instance DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Deallocated DRLL MSISDN:46071: Freeing subscriber connection -DREF VLR subscr MSISDN:46071 usage decreases to: 2 +DREF VLR subscr MSISDN:46071 usage decreases to: 1 DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated -DREF VLR subscr MSISDN:46071 usage decreases to: 1 -<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0 - bssap_clear_sent == 1 -- LU was successful, and the conn has already been closed - lu_result_sent == 1 llist_count(&net->subscr_conns) == 0 --- - Now one auth tuple is available, but used. @@ -445,6 +448,12 @@ DREF VLR subscr MSISDN:46071 usage increases to: 4 DREF VLR subscr MSISDN:46071 usage decreases to: 3 - BSSAP Clear --RAN_GERAN_A--> MS +DREF VLR subscr MSISDN:46071 usage decreases to: 2 +<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0 + bssap_clear_sent == 1 +- LU was successful, and the conn has already been closed + lu_result_sent == 1 +- BSS sends BSSMAP Clear Complete DREF MSISDN:46071: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED @@ -455,14 +464,9 @@ DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Freeing instance DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Deallocated DRLL MSISDN:46071: Freeing subscriber connection -DREF VLR subscr MSISDN:46071 usage decreases to: 2 +DREF VLR subscr MSISDN:46071 usage decreases to: 1 DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated -DREF VLR subscr MSISDN:46071 usage decreases to: 1 -<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0 - bssap_clear_sent == 1 -- LU was successful, and the conn has already been closed - lu_result_sent == 1 llist_count(&net->subscr_conns) == 0 DREF freeing VLR subscr MSISDN:46071 ===== test_hlr_rej_auth_info_net_fail_reuse_tuples: SUCCESS @@ -603,6 +607,12 @@ DREF VLR subscr MSISDN:46071 usage increases to: 4 DREF VLR subscr MSISDN:46071 usage decreases to: 3 - BSSAP Clear --RAN_GERAN_A--> MS +DREF VLR subscr MSISDN:46071 usage decreases to: 2 +<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0 + bssap_clear_sent == 1 +- LU was successful, and the conn has already been closed + lu_result_sent == 1 +- BSS sends BSSMAP Clear Complete DREF MSISDN:46071: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED @@ -613,14 +623,9 @@ DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Freeing instance DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Deallocated DRLL MSISDN:46071: Freeing subscriber connection -DREF VLR subscr MSISDN:46071 usage decreases to: 2 +DREF VLR subscr MSISDN:46071 usage decreases to: 1 DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated -DREF VLR subscr MSISDN:46071 usage decreases to: 1 -<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0 - bssap_clear_sent == 1 -- LU was successful, and the conn has already been closed - lu_result_sent == 1 llist_count(&net->subscr_conns) == 0 --- - Now one auth tuple is available, but used. @@ -680,6 +685,12 @@ DREF VLR subscr MSISDN:46071 usage increases to: 4 DREF VLR subscr MSISDN:46071 usage decreases to: 3 - BSSAP Clear --RAN_GERAN_A--> MS +DREF VLR subscr MSISDN:46071 usage decreases to: 2 +<-- GSUP rx OSMO_GSUP_MSGT_SEND_AUTH_INFO_ERROR: vlr_gsupc_read_cb() returns 0 + auth_request_sent == 0 + lu_result_sent == 2 + bssap_clear_sent == 1 +- BSS sends BSSMAP Clear Complete DREF MSISDN:46071: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED @@ -690,14 +701,9 @@ DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Freeing instance DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Deallocated DRLL MSISDN:46071: Freeing subscriber connection -DREF VLR subscr MSISDN:46071 usage decreases to: 2 +DREF VLR subscr MSISDN:46071 usage decreases to: 1 DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated -DREF VLR subscr MSISDN:46071 usage decreases to: 1 -<-- GSUP rx OSMO_GSUP_MSGT_SEND_AUTH_INFO_ERROR: vlr_gsupc_read_cb() returns 0 - auth_request_sent == 0 - lu_result_sent == 2 - bssap_clear_sent == 1 llist_count(&net->subscr_conns) == 0 DREF freeing VLR subscr MSISDN:46071 ===== test_hlr_rej_auth_info_net_fail_no_reuse_tuples: SUCCESS @@ -838,6 +844,12 @@ DREF VLR subscr MSISDN:46071 usage increases to: 4 DREF VLR subscr MSISDN:46071 usage decreases to: 3 - BSSAP Clear --RAN_GERAN_A--> MS +DREF VLR subscr MSISDN:46071 usage decreases to: 2 +<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0 + bssap_clear_sent == 1 +- LU was successful, and the conn has already been closed + lu_result_sent == 1 +- BSS sends BSSMAP Clear Complete DREF MSISDN:46071: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED @@ -848,14 +860,9 @@ DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Freeing instance DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Deallocated DRLL MSISDN:46071: Freeing subscriber connection -DREF VLR subscr MSISDN:46071 usage decreases to: 2 +DREF VLR subscr MSISDN:46071 usage decreases to: 1 DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated -DREF VLR subscr MSISDN:46071 usage decreases to: 1 -<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0 - bssap_clear_sent == 1 -- LU was successful, and the conn has already been closed - lu_result_sent == 1 llist_count(&net->subscr_conns) == 0 --- - Now one auth tuple is available, but used. @@ -916,6 +923,12 @@ DREF VLR subscr MSISDN:46071 usage increases to: 4 DREF VLR subscr MSISDN:46071 usage decreases to: 3 - BSSAP Clear --RAN_GERAN_A--> MS +DREF VLR subscr MSISDN:46071 usage decreases to: 2 +<-- GSUP rx OSMO_GSUP_MSGT_SEND_AUTH_INFO_ERROR: vlr_gsupc_read_cb() returns 0 + auth_request_sent == 0 + lu_result_sent == 2 + bssap_clear_sent == 1 +- BSS sends BSSMAP Clear Complete DREF MSISDN:46071: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED @@ -926,14 +939,9 @@ DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Freeing instance DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Deallocated DRLL MSISDN:46071: Freeing subscriber connection -DREF VLR subscr MSISDN:46071 usage decreases to: 2 +DREF VLR subscr MSISDN:46071 usage decreases to: 1 DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated -DREF VLR subscr MSISDN:46071 usage decreases to: 1 -<-- GSUP rx OSMO_GSUP_MSGT_SEND_AUTH_INFO_ERROR: vlr_gsupc_read_cb() returns 0 - auth_request_sent == 0 - lu_result_sent == 2 - bssap_clear_sent == 1 llist_count(&net->subscr_conns) == 0 DREF freeing VLR subscr MSISDN:46071 ===== test_hlr_rej_auth_info_unkown_imsi_no_reuse_tuples: SUCCESS @@ -994,6 +1002,12 @@ DREF VLR subscr IMSI:901700000004620 usage increases to: 3 DREF VLR subscr IMSI:901700000004620 usage decreases to: 2 - BSSAP Clear --RAN_GERAN_A--> MS +DREF VLR subscr IMSI:901700000004620 usage decreases to: 1 +<-- GSUP rx OSMO_GSUP_MSGT_SEND_AUTH_INFO_RESULT: vlr_gsupc_read_cb() returns 0 + auth_request_sent == 0 + lu_result_sent == 2 + bssap_clear_sent == 1 +- BSS sends BSSMAP Clear Complete DREF IMSI:901700000004620: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED @@ -1004,15 +1018,10 @@ DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Freeing instance DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Deallocated DRLL IMSI:901700000004620: Freeing subscriber connection -DREF VLR subscr IMSI:901700000004620 usage decreases to: 1 -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated DREF VLR subscr IMSI:901700000004620 usage decreases to: 0 DREF freeing VLR subscr IMSI:901700000004620 -<-- GSUP rx OSMO_GSUP_MSGT_SEND_AUTH_INFO_RESULT: vlr_gsupc_read_cb() returns 0 - auth_request_sent == 0 - lu_result_sent == 2 - bssap_clear_sent == 1 +DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance +DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated llist_count(&net->subscr_conns) == 0 ===== test_hlr_acc_but_no_auth_tuples: SUCCESS @@ -1076,6 +1085,11 @@ DREF VLR subscr IMSI:901700000004620 usage increases to: 3 DREF VLR subscr IMSI:901700000004620 usage decreases to: 2 - BSSAP Clear --RAN_GERAN_A--> MS +DREF VLR subscr IMSI:901700000004620 usage decreases to: 1 +<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_ERROR: vlr_gsupc_read_cb() returns 0 + lu_result_sent == 2 + bssap_clear_sent == 1 +- BSS sends BSSMAP Clear Complete DREF IMSI:901700000004620: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED @@ -1086,14 +1100,10 @@ DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Freeing instance DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Deallocated DRLL IMSI:901700000004620: Freeing subscriber connection -DREF VLR subscr IMSI:901700000004620 usage decreases to: 1 -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated DREF VLR subscr IMSI:901700000004620 usage decreases to: 0 DREF freeing VLR subscr IMSI:901700000004620 -<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_ERROR: vlr_gsupc_read_cb() returns 0 - lu_result_sent == 2 - bssap_clear_sent == 1 +DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance +DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated llist_count(&net->subscr_conns) == 0 ===== test_hlr_rej_lu: SUCCESS @@ -1179,6 +1189,12 @@ DREF VLR subscr IMSI:901700000004620 usage increases to: 4 DREF VLR subscr IMSI:901700000004620 usage decreases to: 3 - BSSAP Clear --RAN_GERAN_A--> MS +DREF VLR subscr IMSI:901700000004620 usage decreases to: 2 +<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0 + bssap_clear_sent == 1 +- LU was successful, and the conn has already been closed + lu_result_sent == 1 +- BSS sends BSSMAP Clear Complete DREF IMSI:901700000004620: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED @@ -1189,14 +1205,9 @@ DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Freeing instance DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Deallocated DRLL IMSI:901700000004620: Freeing subscriber connection -DREF VLR subscr IMSI:901700000004620 usage decreases to: 2 +DREF VLR subscr IMSI:901700000004620 usage decreases to: 1 DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated -DREF VLR subscr IMSI:901700000004620 usage decreases to: 1 -<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0 - bssap_clear_sent == 1 -- LU was successful, and the conn has already been closed - lu_result_sent == 1 llist_count(&net->subscr_conns) == 0 DREF freeing VLR subscr IMSI:901700000004620 ===== test_hlr_no_insert_data: SUCCESS diff --git a/tests/msc_vlr/msc_vlr_test_hlr_timeout.c b/tests/msc_vlr/msc_vlr_test_hlr_timeout.c index 610b388..ce3f3d0 100644 --- a/tests/msc_vlr/msc_vlr_test_hlr_timeout.c +++ b/tests/msc_vlr/msc_vlr_test_hlr_timeout.c @@ -57,6 +57,7 @@ fake_time_passes(1, 235); btw("SUBSCR_CONN_TIMEOUT has passed, conn is gone."); VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); VERBOSE_ASSERT(lu_result_sent, == RES_REJECT, "%d"); @@ -104,6 +105,7 @@ fake_time_passes(1, 235); btw("SUBSCR_CONN_TIMEOUT has passed, conn is gone."); VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); VERBOSE_ASSERT(lu_result_sent, == RES_REJECT, "%d"); diff --git a/tests/msc_vlr/msc_vlr_test_hlr_timeout.err b/tests/msc_vlr/msc_vlr_test_hlr_timeout.err index 883141c..45c6a6f 100644 --- a/tests/msc_vlr/msc_vlr_test_hlr_timeout.err +++ b/tests/msc_vlr/msc_vlr_test_hlr_timeout.err @@ -62,6 +62,9 @@ DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: Event SUBSCR_CONN_E_CN_CLOSE not permitted DREF VLR subscr IMSI:901700000004620 usage decreases to: 1 - BSSAP Clear --RAN_GERAN_A--> MS +- SUBSCR_CONN_TIMEOUT has passed, conn is gone. + bssap_clear_sent == 1 +- BSS sends BSSMAP Clear Complete DREF IMSI:901700000004620: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED @@ -80,8 +83,6 @@ DREF freeing VLR subscr IMSI:901700000004620 DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated -- SUBSCR_CONN_TIMEOUT has passed, conn is gone. - bssap_clear_sent == 1 llist_count(&net->subscr_conns) == 0 lu_result_sent == 2 ===== test_hlr_timeout_lu_auth_info: SUCCESS @@ -169,6 +170,9 @@ DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: Event SUBSCR_CONN_E_CN_CLOSE not permitted DREF VLR subscr MSISDN:46071 usage decreases to: 1 - BSSAP Clear --RAN_GERAN_A--> MS +- SUBSCR_CONN_TIMEOUT has passed, conn is gone. + bssap_clear_sent == 1 +- BSS sends BSSMAP Clear Complete DREF MSISDN:46071: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED @@ -187,8 +191,6 @@ DREF freeing VLR subscr MSISDN:46071 DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated -- SUBSCR_CONN_TIMEOUT has passed, conn is gone. - bssap_clear_sent == 1 llist_count(&net->subscr_conns) == 0 lu_result_sent == 2 ===== test_hlr_timeout_lu_upd_loc_result: SUCCESS diff --git a/tests/msc_vlr/msc_vlr_test_ms_timeout.c b/tests/msc_vlr/msc_vlr_test_ms_timeout.c index a36027c..c5ab059 100644 --- a/tests/msc_vlr/msc_vlr_test_ms_timeout.c +++ b/tests/msc_vlr/msc_vlr_test_ms_timeout.c @@ -77,6 +77,7 @@ fake_time_passes(1, 235); btw("SUBSCR_CONN_TIMEOUT has passed, conn is gone."); VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); VERBOSE_ASSERT(lu_result_sent, == RES_REJECT, "%d"); @@ -140,6 +141,7 @@ btw("LU was successful, and the conn has already been closed"); VERBOSE_ASSERT(lu_result_sent, == RES_ACCEPT, "%d"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); BTW("after a while, a new conn sends a CM Service Request. VLR responds with Auth Req, 2nd auth vector"); @@ -175,6 +177,7 @@ fake_time_passes(1, 235); btw("SUBSCR_CONN_TIMEOUT has passed, conn is gone."); VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); VERBOSE_ASSERT(cm_service_result_sent, == RES_REJECT, "%d"); @@ -212,6 +215,7 @@ btw("LU was successful, and the conn has already been closed"); VERBOSE_ASSERT(lu_result_sent, == RES_ACCEPT, "%d"); VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); BTW("an SMS is sent, MS is paged"); @@ -282,6 +286,7 @@ vsub = vlr_subscr_find_by_imsi(net->vlr, imsi); OSMO_ASSERT(!vsub); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); clear_vlr(); comment_end(); diff --git a/tests/msc_vlr/msc_vlr_test_ms_timeout.err b/tests/msc_vlr/msc_vlr_test_ms_timeout.err index a3950ed..82786ff 100644 --- a/tests/msc_vlr/msc_vlr_test_ms_timeout.err +++ b/tests/msc_vlr/msc_vlr_test_ms_timeout.err @@ -82,6 +82,9 @@ DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: Event SUBSCR_CONN_E_CN_CLOSE not permitted DREF VLR subscr IMSI:901700000004620 usage decreases to: 1 - BSSAP Clear --RAN_GERAN_A--> MS +- SUBSCR_CONN_TIMEOUT has passed, conn is gone. + bssap_clear_sent == 1 +- BSS sends BSSMAP Clear Complete DREF IMSI:901700000004620: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED @@ -100,8 +103,6 @@ DREF freeing VLR subscr IMSI:901700000004620 DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated -- SUBSCR_CONN_TIMEOUT has passed, conn is gone. - bssap_clear_sent == 1 llist_count(&net->subscr_conns) == 0 lu_result_sent == 2 ===== test_ms_timeout_lu_auth_resp: SUCCESS @@ -241,6 +242,12 @@ DREF VLR subscr MSISDN:46071 usage increases to: 4 DREF VLR subscr MSISDN:46071 usage decreases to: 3 - BSSAP Clear --RAN_GERAN_A--> MS +DREF VLR subscr MSISDN:46071 usage decreases to: 2 +<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0 + bssap_clear_sent == 1 +- LU was successful, and the conn has already been closed + lu_result_sent == 1 +- BSS sends BSSMAP Clear Complete DREF MSISDN:46071: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED @@ -251,14 +258,9 @@ DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Freeing instance DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Deallocated DRLL MSISDN:46071: Freeing subscriber connection -DREF VLR subscr MSISDN:46071 usage decreases to: 2 +DREF VLR subscr MSISDN:46071 usage decreases to: 1 DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated -DREF VLR subscr MSISDN:46071 usage decreases to: 1 -<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0 - bssap_clear_sent == 1 -- LU was successful, and the conn has already been closed - lu_result_sent == 1 llist_count(&net->subscr_conns) == 0 --- - after a while, a new conn sends a CM Service Request. VLR responds with Auth Req, 2nd auth vector @@ -327,6 +329,9 @@ DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: Event SUBSCR_CONN_E_CN_CLOSE not permitted DREF VLR subscr MSISDN:46071 usage decreases to: 2 - BSSAP Clear --RAN_GERAN_A--> MS +- SUBSCR_CONN_TIMEOUT has passed, conn is gone. + bssap_clear_sent == 1 +- BSS sends BSSMAP Clear Complete DREF MSISDN:46071: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED @@ -343,8 +348,6 @@ DREF VLR subscr MSISDN:46071 usage decreases to: 1 DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated -- SUBSCR_CONN_TIMEOUT has passed, conn is gone. - bssap_clear_sent == 1 llist_count(&net->subscr_conns) == 0 cm_service_result_sent == 2 DREF freeing VLR subscr MSISDN:46071 @@ -444,6 +447,12 @@ DREF VLR subscr MSISDN:46071 usage increases to: 4 DREF VLR subscr MSISDN:46071 usage decreases to: 3 - BSSAP Clear --RAN_GERAN_A--> MS +DREF VLR subscr MSISDN:46071 usage decreases to: 2 +<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0 +- LU was successful, and the conn has already been closed + lu_result_sent == 1 + bssap_clear_sent == 1 +- BSS sends BSSMAP Clear Complete DREF MSISDN:46071: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED @@ -454,14 +463,9 @@ DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Freeing instance DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Deallocated DRLL MSISDN:46071: Freeing subscriber connection -DREF VLR subscr MSISDN:46071 usage decreases to: 2 +DREF VLR subscr MSISDN:46071 usage decreases to: 1 DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated -DREF VLR subscr MSISDN:46071 usage decreases to: 1 -<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0 -- LU was successful, and the conn has already been closed - lu_result_sent == 1 - bssap_clear_sent == 1 llist_count(&net->subscr_conns) == 0 --- - an SMS is sent, MS is paged @@ -533,16 +537,17 @@ DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASING DREF unknown: MSC conn use + release == 2 (0x101) - BSSAP Clear --RAN_GERAN_A--> MS -DREF unknown: MSC conn use - release == 1 (0x1) -DREF unknown: MSC conn use - compl_l3 == 0 (0x0) +DREF unknown: MSC conn use - compl_l3 == 1 (0x100) + bssap_clear_sent == 1 + paging_stopped == 1 +- BSS sends BSSMAP Clear Complete +DREF unknown: MSC conn use - release == 0 (0x0) DMM Subscr_Conn{SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn{SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DRLL Freeing subscriber connection with NULL subscriber DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Deallocated - bssap_clear_sent == 1 - paging_stopped == 1 llist_count(&net->subscr_conns) == 0 ===== test_ms_timeout_paging: SUCCESS diff --git a/tests/msc_vlr/msc_vlr_test_no_authen.c b/tests/msc_vlr/msc_vlr_test_no_authen.c index b20f9d7..cd61fa1 100644 --- a/tests/msc_vlr/msc_vlr_test_no_authen.c +++ b/tests/msc_vlr/msc_vlr_test_no_authen.c @@ -59,6 +59,8 @@ btw("LU was successful, and the conn has already been closed"); VERBOSE_ASSERT(lu_result_sent, == RES_ACCEPT, "%d"); VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); + + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); BTW("after a while, a new conn sends a CM Service Request"); @@ -78,6 +80,7 @@ VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); btw("all requests serviced, conn has been released"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); BTW("an SMS is sent, MS is paged"); @@ -150,6 +153,7 @@ VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); btw("SMS is done, conn is gone"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); BTW("subscriber detaches"); @@ -157,6 +161,7 @@ ms_sends_msg("050130089910070000006402"); VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); clear_vlr(); comment_end(); @@ -213,6 +218,7 @@ VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); btw("LU was successful, and the conn has already been closed"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); btw("Subscriber has the new TMSI"); @@ -239,6 +245,7 @@ VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); btw("all requests serviced, conn has been released"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); BTW("an SMS is sent, MS is paged using above TMSI"); @@ -311,6 +318,7 @@ VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); btw("SMS is done, conn is gone"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); /* TODO: when the subscriber detaches, the vlr_subscr gets @@ -362,6 +370,7 @@ VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); btw("LU was successful, and the conn has already been closed"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); btw("subscriber has the new TMSI"); @@ -377,6 +386,7 @@ ms_sends_msg("050130" "05f4" "07060504"); VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); clear_vlr(); comment_end(); @@ -432,6 +442,7 @@ btw("LU was successful, and the conn has already been closed"); VERBOSE_ASSERT(lu_result_sent, == RES_ACCEPT, "%d"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); btw("Subscriber has the IMEI"); @@ -445,6 +456,7 @@ ms_sends_msg("050130089910070000006402"); VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); clear_vlr(); comment_end(); @@ -508,6 +520,7 @@ btw("LU was successful, and the conn has already been closed"); VERBOSE_ASSERT(lu_result_sent, == RES_ACCEPT, "%d"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); btw("Subscriber has the IMEI and TMSI"); @@ -522,6 +535,7 @@ ms_sends_msg("050130089910070000006402"); VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); clear_vlr(); comment_end(); @@ -576,6 +590,7 @@ btw("LU was successful, and the conn has already been closed"); VERBOSE_ASSERT(lu_result_sent, == RES_ACCEPT, "%d"); VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); BTW("subscriber detaches"); @@ -583,6 +598,7 @@ ms_sends_msg("050130089910070000006402"); VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); clear_vlr(); comment_end(); @@ -648,6 +664,7 @@ btw("LU was successful, and the conn has already been closed"); VERBOSE_ASSERT(lu_result_sent, == RES_ACCEPT, "%d"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); btw("Subscriber has the IMEI"); @@ -661,6 +678,7 @@ ms_sends_msg("050130089910070000006402"); VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); clear_vlr(); comment_end(); @@ -729,6 +747,7 @@ VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); btw("LU was successful, and the conn has already been closed"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); @@ -784,6 +803,7 @@ VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); btw("LU was successful, and the conn has already been closed"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); btw("subscriber has the new TMSI"); @@ -799,6 +819,7 @@ ms_sends_msg("050130" "05f4" "07060504"); VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); clear_vlr(); comment_end(); @@ -874,6 +895,7 @@ btw("LU was successful, and the conn has already been closed"); VERBOSE_ASSERT(lu_result_sent, == RES_ACCEPT, "%d"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); btw("Subscriber has the IMEISV, IMEI and TMSI"); @@ -889,6 +911,7 @@ ms_sends_msg("050130089910070000006402"); VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); clear_vlr(); comment_end(); diff --git a/tests/msc_vlr/msc_vlr_test_no_authen.err b/tests/msc_vlr/msc_vlr_test_no_authen.err index 5cd2fa3..c71f04a 100644 --- a/tests/msc_vlr/msc_vlr_test_no_authen.err +++ b/tests/msc_vlr/msc_vlr_test_no_authen.err @@ -103,6 +103,12 @@ DREF VLR subscr MSISDN:46071 usage increases to: 4 DREF VLR subscr MSISDN:46071 usage decreases to: 3 - BSSAP Clear --RAN_GERAN_A--> MS +DREF VLR subscr MSISDN:46071 usage decreases to: 2 +<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0 +- LU was successful, and the conn has already been closed + lu_result_sent == 1 + bssap_clear_sent == 1 +- BSS sends BSSMAP Clear Complete DREF MSISDN:46071: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED @@ -113,14 +119,9 @@ DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Freeing instance DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Deallocated DRLL MSISDN:46071: Freeing subscriber connection -DREF VLR subscr MSISDN:46071 usage decreases to: 2 +DREF VLR subscr MSISDN:46071 usage decreases to: 1 DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated -DREF VLR subscr MSISDN:46071 usage decreases to: 1 -<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0 -- LU was successful, and the conn has already been closed - lu_result_sent == 1 - bssap_clear_sent == 1 llist_count(&net->subscr_conns) == 0 --- - after a while, a new conn sends a CM Service Request @@ -180,6 +181,10 @@ DREF VLR subscr MSISDN:46071 usage increases to: 3 DREF VLR subscr MSISDN:46071 usage decreases to: 2 - BSSAP Clear --RAN_GERAN_A--> MS + dtap_tx_confirmed == 1 + bssap_clear_sent == 1 +- all requests serviced, conn has been released +- BSS sends BSSMAP Clear Complete DREF MSISDN:46071: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED @@ -192,9 +197,6 @@ DREF VLR subscr MSISDN:46071 usage decreases to: 1 DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated - dtap_tx_confirmed == 1 - bssap_clear_sent == 1 -- all requests serviced, conn has been released llist_count(&net->subscr_conns) == 0 --- - an SMS is sent, MS is paged @@ -287,6 +289,10 @@ DREF VLR subscr MSISDN:46071 usage increases to: 3 DREF VLR subscr MSISDN:46071 usage decreases to: 2 - BSSAP Clear --RAN_GERAN_A--> MS + dtap_tx_confirmed == 1 + bssap_clear_sent == 1 +- SMS is done, conn is gone +- BSS sends BSSMAP Clear Complete DREF MSISDN:46071: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED @@ -299,9 +305,6 @@ DREF VLR subscr MSISDN:46071 usage decreases to: 1 DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated - dtap_tx_confirmed == 1 - bssap_clear_sent == 1 -- SMS is done, conn is gone llist_count(&net->subscr_conns) == 0 --- - subscriber detaches @@ -321,15 +324,16 @@ DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASING DREF unknown: MSC conn use + release == 2 (0x101) - BSSAP Clear --RAN_GERAN_A--> MS -DREF unknown: MSC conn use - release == 1 (0x1) -DREF unknown: MSC conn use - compl_l3 == 0 (0x0) +DREF unknown: MSC conn use - compl_l3 == 1 (0x100) + bssap_clear_sent == 1 +- BSS sends BSSMAP Clear Complete +DREF unknown: MSC conn use - release == 0 (0x0) DMM Subscr_Conn{SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn{SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DRLL Freeing subscriber connection with NULL subscriber DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Deallocated - bssap_clear_sent == 1 llist_count(&net->subscr_conns) == 0 ===== test_no_authen: SUCCESS @@ -469,8 +473,11 @@ DREF VLR subscr MSISDN:46071 usage increases to: 3 DREF VLR subscr MSISDN:46071 usage decreases to: 2 - BSSAP Clear --RAN_GERAN_A--> MS -DREF MSISDN:46071: MSC conn use - release == 1 (0x2) -DREF MSISDN:46071: MSC conn use - dtap == 0 (0x0) +DREF MSISDN:46071: MSC conn use - dtap == 1 (0x100) + bssap_clear_sent == 1 +- LU was successful, and the conn has already been closed +- BSS sends BSSMAP Clear Complete +DREF MSISDN:46071: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) @@ -483,8 +490,6 @@ DREF VLR subscr MSISDN:46071 usage decreases to: 1 DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated - bssap_clear_sent == 1 -- LU was successful, and the conn has already been closed llist_count(&net->subscr_conns) == 0 - Subscriber has the new TMSI DREF VLR subscr MSISDN:46071 usage increases to: 2 @@ -551,6 +556,9 @@ DREF VLR subscr MSISDN:46071 usage increases to: 3 DREF VLR subscr MSISDN:46071 usage decreases to: 2 - BSSAP Clear --RAN_GERAN_A--> MS + bssap_clear_sent == 1 +- all requests serviced, conn has been released +- BSS sends BSSMAP Clear Complete DREF MSISDN:46071: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(50462976){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(50462976){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED @@ -563,8 +571,6 @@ DREF VLR subscr MSISDN:46071 usage decreases to: 1 DMM Subscr_Conn(50462976){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(50462976){SUBSCR_CONN_S_RELEASED}: Deallocated - bssap_clear_sent == 1 -- all requests serviced, conn has been released llist_count(&net->subscr_conns) == 0 --- - an SMS is sent, MS is paged using above TMSI @@ -657,6 +663,10 @@ DREF VLR subscr MSISDN:46071 usage increases to: 3 DREF VLR subscr MSISDN:46071 usage decreases to: 2 - BSSAP Clear --RAN_GERAN_A--> MS + dtap_tx_confirmed == 1 + bssap_clear_sent == 1 +- SMS is done, conn is gone +- BSS sends BSSMAP Clear Complete DREF MSISDN:46071: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(50462976){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(50462976){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED @@ -669,9 +679,6 @@ DREF VLR subscr MSISDN:46071 usage decreases to: 1 DMM Subscr_Conn(50462976){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(50462976){SUBSCR_CONN_S_RELEASED}: Deallocated - dtap_tx_confirmed == 1 - bssap_clear_sent == 1 -- SMS is done, conn is gone llist_count(&net->subscr_conns) == 0 --- - subscriber sends LU Request, this time with the TMSI @@ -804,8 +811,11 @@ DREF VLR subscr MSISDN:46071 usage increases to: 3 DREF VLR subscr MSISDN:46071 usage decreases to: 2 - BSSAP Clear --RAN_GERAN_A--> MS -DREF MSISDN:46071: MSC conn use - release == 1 (0x2) -DREF MSISDN:46071: MSC conn use - dtap == 0 (0x0) +DREF MSISDN:46071: MSC conn use - dtap == 1 (0x100) + bssap_clear_sent == 1 +- LU was successful, and the conn has already been closed +- BSS sends BSSMAP Clear Complete +DREF MSISDN:46071: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(50462976){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(50462976){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn(50462976){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) @@ -818,8 +828,6 @@ DREF VLR subscr MSISDN:46071 usage decreases to: 1 DMM Subscr_Conn(50462976){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(50462976){SUBSCR_CONN_S_RELEASED}: Deallocated - bssap_clear_sent == 1 -- LU was successful, and the conn has already been closed llist_count(&net->subscr_conns) == 0 - subscriber has the new TMSI DREF VLR subscr MSISDN:46071 usage increases to: 2 @@ -846,15 +854,16 @@ DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASING DREF unknown: MSC conn use + release == 2 (0x101) - BSSAP Clear --RAN_GERAN_A--> MS -DREF unknown: MSC conn use - release == 1 (0x1) -DREF unknown: MSC conn use - compl_l3 == 0 (0x0) +DREF unknown: MSC conn use - compl_l3 == 1 (0x100) + bssap_clear_sent == 1 +- BSS sends BSSMAP Clear Complete +DREF unknown: MSC conn use - release == 0 (0x0) DMM Subscr_Conn{SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn{SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DRLL Freeing subscriber connection with NULL subscriber DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Deallocated - bssap_clear_sent == 1 llist_count(&net->subscr_conns) == 0 ===== test_no_authen_tmsi: SUCCESS @@ -992,8 +1001,12 @@ DREF VLR subscr MSISDN:46071 usage increases to: 3 DREF VLR subscr MSISDN:46071 usage decreases to: 2 - BSSAP Clear --RAN_GERAN_A--> MS -DREF MSISDN:46071: MSC conn use - release == 1 (0x2) -DREF MSISDN:46071: MSC conn use - dtap == 0 (0x0) +DREF MSISDN:46071: MSC conn use - dtap == 1 (0x100) + bssap_clear_sent == 1 +- LU was successful, and the conn has already been closed + lu_result_sent == 1 +- BSS sends BSSMAP Clear Complete +DREF MSISDN:46071: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) @@ -1006,9 +1019,6 @@ DREF VLR subscr MSISDN:46071 usage decreases to: 1 DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated - bssap_clear_sent == 1 -- LU was successful, and the conn has already been closed - lu_result_sent == 1 llist_count(&net->subscr_conns) == 0 - Subscriber has the IMEI DREF VLR subscr MSISDN:46071 usage increases to: 2 @@ -1032,15 +1042,16 @@ DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASING DREF unknown: MSC conn use + release == 2 (0x101) - BSSAP Clear --RAN_GERAN_A--> MS -DREF unknown: MSC conn use - release == 1 (0x1) -DREF unknown: MSC conn use - compl_l3 == 0 (0x0) +DREF unknown: MSC conn use - compl_l3 == 1 (0x100) + bssap_clear_sent == 1 +- BSS sends BSSMAP Clear Complete +DREF unknown: MSC conn use - release == 0 (0x0) DMM Subscr_Conn{SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn{SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DRLL Freeing subscriber connection with NULL subscriber DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Deallocated - bssap_clear_sent == 1 llist_count(&net->subscr_conns) == 0 ===== test_no_authen_imei: SUCCESS @@ -1203,8 +1214,12 @@ DREF VLR subscr MSISDN:46071 usage increases to: 3 DREF VLR subscr MSISDN:46071 usage decreases to: 2 - BSSAP Clear --RAN_GERAN_A--> MS -DREF MSISDN:46071: MSC conn use - release == 1 (0x2) -DREF MSISDN:46071: MSC conn use - dtap == 0 (0x0) +DREF MSISDN:46071: MSC conn use - dtap == 1 (0x100) + bssap_clear_sent == 1 +- LU was successful, and the conn has already been closed + lu_result_sent == 1 +- BSS sends BSSMAP Clear Complete +DREF MSISDN:46071: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) @@ -1217,9 +1232,6 @@ DREF VLR subscr MSISDN:46071 usage decreases to: 1 DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated - bssap_clear_sent == 1 -- LU was successful, and the conn has already been closed - lu_result_sent == 1 llist_count(&net->subscr_conns) == 0 - Subscriber has the IMEI and TMSI DREF VLR subscr MSISDN:46071 usage increases to: 2 @@ -1244,15 +1256,16 @@ DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASING DREF unknown: MSC conn use + release == 2 (0x101) - BSSAP Clear --RAN_GERAN_A--> MS -DREF unknown: MSC conn use - release == 1 (0x1) -DREF unknown: MSC conn use - compl_l3 == 0 (0x0) +DREF unknown: MSC conn use - compl_l3 == 1 (0x100) + bssap_clear_sent == 1 +- BSS sends BSSMAP Clear Complete +DREF unknown: MSC conn use - release == 0 (0x0) DMM Subscr_Conn{SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn{SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DRLL Freeing subscriber connection with NULL subscriber DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Deallocated - bssap_clear_sent == 1 llist_count(&net->subscr_conns) == 0 ===== test_no_authen_tmsi_imei: SUCCESS @@ -1379,6 +1392,12 @@ DREF VLR subscr MSISDN:46071 usage increases to: 4 DREF VLR subscr MSISDN:46071 usage decreases to: 3 - BSSAP Clear --RAN_GERAN_A--> MS +DREF VLR subscr MSISDN:46071 usage decreases to: 2 +<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0 +- LU was successful, and the conn has already been closed + lu_result_sent == 1 + bssap_clear_sent == 1 +- BSS sends BSSMAP Clear Complete DREF MSISDN:46071: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED @@ -1389,14 +1408,9 @@ DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Freeing instance DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Deallocated DRLL MSISDN:46071: Freeing subscriber connection -DREF VLR subscr MSISDN:46071 usage decreases to: 2 +DREF VLR subscr MSISDN:46071 usage decreases to: 1 DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated -DREF VLR subscr MSISDN:46071 usage decreases to: 1 -<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0 -- LU was successful, and the conn has already been closed - lu_result_sent == 1 - bssap_clear_sent == 1 llist_count(&net->subscr_conns) == 0 --- - subscriber detaches @@ -1416,15 +1430,16 @@ DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASING DREF unknown: MSC conn use + release == 2 (0x101) - BSSAP Clear --RAN_GERAN_A--> MS -DREF unknown: MSC conn use - release == 1 (0x1) -DREF unknown: MSC conn use - compl_l3 == 0 (0x0) +DREF unknown: MSC conn use - compl_l3 == 1 (0x100) + bssap_clear_sent == 1 +- BSS sends BSSMAP Clear Complete +DREF unknown: MSC conn use - release == 0 (0x0) DMM Subscr_Conn{SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn{SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DRLL Freeing subscriber connection with NULL subscriber DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Deallocated - bssap_clear_sent == 1 llist_count(&net->subscr_conns) == 0 ===== test_no_authen_imeisv: SUCCESS @@ -1580,8 +1595,12 @@ DREF VLR subscr MSISDN:46071 usage increases to: 3 DREF VLR subscr MSISDN:46071 usage decreases to: 2 - BSSAP Clear --RAN_GERAN_A--> MS -DREF MSISDN:46071: MSC conn use - release == 1 (0x2) -DREF MSISDN:46071: MSC conn use - dtap == 0 (0x0) +DREF MSISDN:46071: MSC conn use - dtap == 1 (0x100) + bssap_clear_sent == 1 +- LU was successful, and the conn has already been closed + lu_result_sent == 1 +- BSS sends BSSMAP Clear Complete +DREF MSISDN:46071: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) @@ -1594,9 +1613,6 @@ DREF VLR subscr MSISDN:46071 usage decreases to: 1 DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated - bssap_clear_sent == 1 -- LU was successful, and the conn has already been closed - lu_result_sent == 1 llist_count(&net->subscr_conns) == 0 - Subscriber has the IMEI DREF VLR subscr MSISDN:46071 usage increases to: 2 @@ -1620,15 +1636,16 @@ DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASING DREF unknown: MSC conn use + release == 2 (0x101) - BSSAP Clear --RAN_GERAN_A--> MS -DREF unknown: MSC conn use - release == 1 (0x1) -DREF unknown: MSC conn use - compl_l3 == 0 (0x0) +DREF unknown: MSC conn use - compl_l3 == 1 (0x100) + bssap_clear_sent == 1 +- BSS sends BSSMAP Clear Complete +DREF unknown: MSC conn use - release == 0 (0x0) DMM Subscr_Conn{SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn{SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DRLL Freeing subscriber connection with NULL subscriber DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Deallocated - bssap_clear_sent == 1 llist_count(&net->subscr_conns) == 0 ===== test_no_authen_imeisv_imei: SUCCESS @@ -1786,8 +1803,11 @@ DREF VLR subscr MSISDN:46071 usage increases to: 3 DREF VLR subscr MSISDN:46071 usage decreases to: 2 - BSSAP Clear --RAN_GERAN_A--> MS -DREF MSISDN:46071: MSC conn use - release == 1 (0x2) -DREF MSISDN:46071: MSC conn use - dtap == 0 (0x0) +DREF MSISDN:46071: MSC conn use - dtap == 1 (0x100) + bssap_clear_sent == 1 +- LU was successful, and the conn has already been closed +- BSS sends BSSMAP Clear Complete +DREF MSISDN:46071: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) @@ -1800,8 +1820,6 @@ DREF VLR subscr MSISDN:46071 usage decreases to: 1 DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated - bssap_clear_sent == 1 -- LU was successful, and the conn has already been closed llist_count(&net->subscr_conns) == 0 --- - subscriber sends LU Request, this time with the TMSI @@ -1952,8 +1970,11 @@ DREF VLR subscr MSISDN:46071 usage increases to: 3 DREF VLR subscr MSISDN:46071 usage decreases to: 2 - BSSAP Clear --RAN_GERAN_A--> MS -DREF MSISDN:46071: MSC conn use - release == 1 (0x2) -DREF MSISDN:46071: MSC conn use - dtap == 0 (0x0) +DREF MSISDN:46071: MSC conn use - dtap == 1 (0x100) + bssap_clear_sent == 1 +- LU was successful, and the conn has already been closed +- BSS sends BSSMAP Clear Complete +DREF MSISDN:46071: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) @@ -1966,8 +1987,6 @@ DREF VLR subscr MSISDN:46071 usage decreases to: 1 DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated - bssap_clear_sent == 1 -- LU was successful, and the conn has already been closed llist_count(&net->subscr_conns) == 0 - subscriber has the new TMSI DREF VLR subscr MSISDN:46071 usage increases to: 2 @@ -1994,15 +2013,16 @@ DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASING DREF unknown: MSC conn use + release == 2 (0x101) - BSSAP Clear --RAN_GERAN_A--> MS -DREF unknown: MSC conn use - release == 1 (0x1) -DREF unknown: MSC conn use - compl_l3 == 0 (0x0) +DREF unknown: MSC conn use - compl_l3 == 1 (0x100) + bssap_clear_sent == 1 +- BSS sends BSSMAP Clear Complete +DREF unknown: MSC conn use - release == 0 (0x0) DMM Subscr_Conn{SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn{SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DRLL Freeing subscriber connection with NULL subscriber DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Deallocated - bssap_clear_sent == 1 llist_count(&net->subscr_conns) == 0 ===== test_no_authen_imeisv_tmsi: SUCCESS @@ -2183,8 +2203,12 @@ DREF VLR subscr MSISDN:46071 usage increases to: 3 DREF VLR subscr MSISDN:46071 usage decreases to: 2 - BSSAP Clear --RAN_GERAN_A--> MS -DREF MSISDN:46071: MSC conn use - release == 1 (0x2) -DREF MSISDN:46071: MSC conn use - dtap == 0 (0x0) +DREF MSISDN:46071: MSC conn use - dtap == 1 (0x100) + bssap_clear_sent == 1 +- LU was successful, and the conn has already been closed + lu_result_sent == 1 +- BSS sends BSSMAP Clear Complete +DREF MSISDN:46071: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) @@ -2197,9 +2221,6 @@ DREF VLR subscr MSISDN:46071 usage decreases to: 1 DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated - bssap_clear_sent == 1 -- LU was successful, and the conn has already been closed - lu_result_sent == 1 llist_count(&net->subscr_conns) == 0 - Subscriber has the IMEISV, IMEI and TMSI DREF VLR subscr MSISDN:46071 usage increases to: 2 @@ -2225,15 +2246,16 @@ DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASING DREF unknown: MSC conn use + release == 2 (0x101) - BSSAP Clear --RAN_GERAN_A--> MS -DREF unknown: MSC conn use - release == 1 (0x1) -DREF unknown: MSC conn use - compl_l3 == 0 (0x0) +DREF unknown: MSC conn use - compl_l3 == 1 (0x100) + bssap_clear_sent == 1 +- BSS sends BSSMAP Clear Complete +DREF unknown: MSC conn use - release == 0 (0x0) DMM Subscr_Conn{SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn{SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DRLL Freeing subscriber connection with NULL subscriber DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Deallocated - bssap_clear_sent == 1 llist_count(&net->subscr_conns) == 0 ===== test_no_authen_imeisv_tmsi_imei: SUCCESS diff --git a/tests/msc_vlr/msc_vlr_test_reject_concurrency.c b/tests/msc_vlr/msc_vlr_test_reject_concurrency.c index ceab109..cf9d8c9 100644 --- a/tests/msc_vlr/msc_vlr_test_reject_concurrency.c +++ b/tests/msc_vlr/msc_vlr_test_reject_concurrency.c @@ -43,6 +43,7 @@ ms_sends_msg("050802008168000130089910070000006402"); VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); VERBOSE_ASSERT(lu_result_sent, == RES_REJECT, "%d"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(1); @@ -61,6 +62,7 @@ btw("LU was successful, and the conn has already been closed"); VERBOSE_ASSERT(lu_result_sent, == RES_ACCEPT, "%d"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); clear_vlr(); @@ -93,6 +95,7 @@ btw("LU was successful, and the conn has already been closed"); VERBOSE_ASSERT(lu_result_sent, == RES_ACCEPT, "%d"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); } @@ -182,8 +185,10 @@ expect_bssap_clear(); ms_sends_msg("890106020041020000"); VERBOSE_ASSERT(dtap_tx_confirmed, == true, "%d"); - if (expect_clear) + if (expect_clear) { VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); + bss_sends_clear_complete(); + } btw("SMS is done"); EXPECT_CONN_COUNT(expect_conn_count); @@ -265,6 +270,7 @@ expect_bssap_clear(); ms_sends_msg("050130089910070000006402"); VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); clear_vlr(); @@ -288,6 +294,7 @@ expect_bssap_clear(); ms_sends_msg("050130089910070000006402"); VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); clear_vlr(); @@ -313,6 +320,7 @@ VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); btw("all requests serviced, conn has been released"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); clear_vlr(); @@ -377,6 +385,7 @@ expect_bssap_clear(); ms_sends_msg("050130089910070000006402"); VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); clear_vlr(); diff --git a/tests/msc_vlr/msc_vlr_test_reject_concurrency.err b/tests/msc_vlr/msc_vlr_test_reject_concurrency.err index 7dca53f..0d9ef5b 100644 --- a/tests/msc_vlr/msc_vlr_test_reject_concurrency.err +++ b/tests/msc_vlr/msc_vlr_test_reject_concurrency.err @@ -59,10 +59,13 @@ DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASING DREF unknown: MSC conn use + release == 2 (0x101) - BSSAP Clear --RAN_GERAN_A--> MS -DREF unknown: MSC conn use - release == 1 (0x1) DREF VLR subscr IMSI:901700000004620 usage decreases to: 1 DRR 901700000004620: internal error during Location Updating attempt -DREF unknown: MSC conn use - compl_l3 == 0 (0x0) +DREF unknown: MSC conn use - compl_l3 == 1 (0x100) + bssap_clear_sent == 1 + lu_result_sent == 2 +- BSS sends BSSMAP Clear Complete +DREF unknown: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) @@ -74,8 +77,6 @@ DRLL Freeing subscriber connection with NULL subscriber DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated - bssap_clear_sent == 1 - lu_result_sent == 2 llist_count(&net->subscr_conns) == 1 --- - The first connection can still complete its LU @@ -133,6 +134,12 @@ DREF VLR subscr MSISDN:46071 usage increases to: 4 DREF VLR subscr MSISDN:46071 usage decreases to: 3 - BSSAP Clear --RAN_GERAN_A--> MS +DREF VLR subscr MSISDN:46071 usage decreases to: 2 +<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0 + bssap_clear_sent == 1 +- LU was successful, and the conn has already been closed + lu_result_sent == 1 +- BSS sends BSSMAP Clear Complete DREF MSISDN:46071: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED @@ -143,14 +150,9 @@ DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Freeing instance DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Deallocated DRLL MSISDN:46071: Freeing subscriber connection -DREF VLR subscr MSISDN:46071 usage decreases to: 2 +DREF VLR subscr MSISDN:46071 usage decreases to: 1 DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated -DREF VLR subscr MSISDN:46071 usage decreases to: 1 -<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0 - bssap_clear_sent == 1 -- LU was successful, and the conn has already been closed - lu_result_sent == 1 llist_count(&net->subscr_conns) == 0 DREF freeing VLR subscr MSISDN:46071 ===== test_reject_2nd_conn: SUCCESS @@ -262,6 +264,12 @@ DREF VLR subscr MSISDN:46071 usage increases to: 4 DREF VLR subscr MSISDN:46071 usage decreases to: 3 - BSSAP Clear --RAN_GERAN_A--> MS +DREF VLR subscr MSISDN:46071 usage decreases to: 2 +<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0 + bssap_clear_sent == 1 +- LU was successful, and the conn has already been closed + lu_result_sent == 1 +- BSS sends BSSMAP Clear Complete DREF MSISDN:46071: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED @@ -272,14 +280,9 @@ DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Freeing instance DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Deallocated DRLL MSISDN:46071: Freeing subscriber connection -DREF VLR subscr MSISDN:46071 usage decreases to: 2 +DREF VLR subscr MSISDN:46071 usage decreases to: 1 DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated -DREF VLR subscr MSISDN:46071 usage decreases to: 1 -<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0 - bssap_clear_sent == 1 -- LU was successful, and the conn has already been closed - lu_result_sent == 1 llist_count(&net->subscr_conns) == 0 DREF freeing VLR subscr MSISDN:46071 ===== test_reject_lu_during_lu: SUCCESS @@ -398,6 +401,12 @@ DREF VLR subscr MSISDN:46071 usage increases to: 4 DREF VLR subscr MSISDN:46071 usage decreases to: 3 - BSSAP Clear --RAN_GERAN_A--> MS +DREF VLR subscr MSISDN:46071 usage decreases to: 2 +<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0 + bssap_clear_sent == 1 +- LU was successful, and the conn has already been closed + lu_result_sent == 1 +- BSS sends BSSMAP Clear Complete DREF MSISDN:46071: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED @@ -408,14 +417,9 @@ DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Freeing instance DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Deallocated DRLL MSISDN:46071: Freeing subscriber connection -DREF VLR subscr MSISDN:46071 usage decreases to: 2 +DREF VLR subscr MSISDN:46071 usage decreases to: 1 DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated -DREF VLR subscr MSISDN:46071 usage decreases to: 1 -<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0 - bssap_clear_sent == 1 -- LU was successful, and the conn has already been closed - lu_result_sent == 1 llist_count(&net->subscr_conns) == 0 DREF freeing VLR subscr MSISDN:46071 ===== test_reject_cm_during_lu: SUCCESS @@ -527,6 +531,12 @@ DREF VLR subscr MSISDN:46071 usage increases to: 4 DREF VLR subscr MSISDN:46071 usage decreases to: 3 - BSSAP Clear --RAN_GERAN_A--> MS +DREF VLR subscr MSISDN:46071 usage decreases to: 2 +<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0 + bssap_clear_sent == 1 +- LU was successful, and the conn has already been closed + lu_result_sent == 1 +- BSS sends BSSMAP Clear Complete DREF MSISDN:46071: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED @@ -537,14 +547,9 @@ DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Freeing instance DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Deallocated DRLL MSISDN:46071: Freeing subscriber connection -DREF VLR subscr MSISDN:46071 usage decreases to: 2 +DREF VLR subscr MSISDN:46071 usage decreases to: 1 DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated -DREF VLR subscr MSISDN:46071 usage decreases to: 1 -<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0 - bssap_clear_sent == 1 -- LU was successful, and the conn has already been closed - lu_result_sent == 1 llist_count(&net->subscr_conns) == 0 DREF freeing VLR subscr MSISDN:46071 ===== test_reject_paging_resp_during_lu: SUCCESS @@ -645,6 +650,12 @@ DREF VLR subscr MSISDN:46071 usage increases to: 4 DREF VLR subscr MSISDN:46071 usage decreases to: 3 - BSSAP Clear --RAN_GERAN_A--> MS +DREF VLR subscr MSISDN:46071 usage decreases to: 2 +<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0 + bssap_clear_sent == 1 +- LU was successful, and the conn has already been closed + lu_result_sent == 1 +- BSS sends BSSMAP Clear Complete DREF MSISDN:46071: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED @@ -655,14 +666,9 @@ DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Freeing instance DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Deallocated DRLL MSISDN:46071: Freeing subscriber connection -DREF VLR subscr MSISDN:46071 usage decreases to: 2 +DREF VLR subscr MSISDN:46071 usage decreases to: 1 DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated -DREF VLR subscr MSISDN:46071 usage decreases to: 1 -<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0 - bssap_clear_sent == 1 -- LU was successful, and the conn has already been closed - lu_result_sent == 1 llist_count(&net->subscr_conns) == 0 --- - Subscriber does a normal CM Service Request @@ -727,11 +733,13 @@ DREF VLR subscr MSISDN:46071 usage increases to: 4 DREF VLR subscr MSISDN:46071 usage decreases to: 3 - BSSAP Clear --RAN_GERAN_A--> MS -DREF MSISDN:46071: MSC conn use - release == 1 (0x2) DREF VLR subscr MSISDN:46071 usage decreases to: 2 DREF VLR subscr MSISDN:46071 usage decreases to: 1 -DMM msc_subscr_conn_close(vsub=MSISDN:46071, cause=0): already in release, ignore. -DREF MSISDN:46071: MSC conn use - dtap == 0 (0x0) +DMM conn_close(vsub=MSISDN:46071, cause=0): already in release, ignore. +DREF MSISDN:46071: MSC conn use - dtap == 1 (0x100) + bssap_clear_sent == 1 +- BSS sends BSSMAP Clear Complete +DREF MSISDN:46071: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) @@ -740,7 +748,6 @@ DREF freeing VLR subscr MSISDN:46071 DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated - bssap_clear_sent == 1 llist_count(&net->subscr_conns) == 0 ===== test_reject_lu_during_cm: SUCCESS @@ -840,6 +847,12 @@ DREF VLR subscr MSISDN:46071 usage increases to: 4 DREF VLR subscr MSISDN:46071 usage decreases to: 3 - BSSAP Clear --RAN_GERAN_A--> MS +DREF VLR subscr MSISDN:46071 usage decreases to: 2 +<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0 + bssap_clear_sent == 1 +- LU was successful, and the conn has already been closed + lu_result_sent == 1 +- BSS sends BSSMAP Clear Complete DREF MSISDN:46071: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED @@ -850,14 +863,9 @@ DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Freeing instance DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Deallocated DRLL MSISDN:46071: Freeing subscriber connection -DREF VLR subscr MSISDN:46071 usage decreases to: 2 +DREF VLR subscr MSISDN:46071 usage decreases to: 1 DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated -DREF VLR subscr MSISDN:46071 usage decreases to: 1 -<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0 - bssap_clear_sent == 1 -- LU was successful, and the conn has already been closed - lu_result_sent == 1 llist_count(&net->subscr_conns) == 0 --- - Subscriber does a normal CM Service Request @@ -925,11 +933,13 @@ DREF VLR subscr MSISDN:46071 usage increases to: 4 DREF VLR subscr MSISDN:46071 usage decreases to: 3 - BSSAP Clear --RAN_GERAN_A--> MS -DREF MSISDN:46071: MSC conn use - release == 1 (0x2) DREF VLR subscr MSISDN:46071 usage decreases to: 2 DREF VLR subscr MSISDN:46071 usage decreases to: 1 -DMM msc_subscr_conn_close(vsub=MSISDN:46071, cause=0): already in release, ignore. -DREF MSISDN:46071: MSC conn use - dtap == 0 (0x0) +DMM conn_close(vsub=MSISDN:46071, cause=0): already in release, ignore. +DREF MSISDN:46071: MSC conn use - dtap == 1 (0x100) + bssap_clear_sent == 1 +- BSS sends BSSMAP Clear Complete +DREF MSISDN:46071: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) @@ -938,7 +948,6 @@ DREF freeing VLR subscr MSISDN:46071 DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated - bssap_clear_sent == 1 llist_count(&net->subscr_conns) == 0 ===== test_reject_cm_during_cm: SUCCESS @@ -1038,6 +1047,12 @@ DREF VLR subscr MSISDN:46071 usage increases to: 4 DREF VLR subscr MSISDN:46071 usage decreases to: 3 - BSSAP Clear --RAN_GERAN_A--> MS +DREF VLR subscr MSISDN:46071 usage decreases to: 2 +<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0 + bssap_clear_sent == 1 +- LU was successful, and the conn has already been closed + lu_result_sent == 1 +- BSS sends BSSMAP Clear Complete DREF MSISDN:46071: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED @@ -1048,14 +1063,9 @@ DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Freeing instance DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Deallocated DRLL MSISDN:46071: Freeing subscriber connection -DREF VLR subscr MSISDN:46071 usage decreases to: 2 +DREF VLR subscr MSISDN:46071 usage decreases to: 1 DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated -DREF VLR subscr MSISDN:46071 usage decreases to: 1 -<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0 - bssap_clear_sent == 1 -- LU was successful, and the conn has already been closed - lu_result_sent == 1 llist_count(&net->subscr_conns) == 0 --- - Subscriber does a normal CM Service Request @@ -1125,6 +1135,9 @@ DREF VLR subscr MSISDN:46071 usage increases to: 3 DREF VLR subscr MSISDN:46071 usage decreases to: 2 - BSSAP Clear --RAN_GERAN_A--> MS + bssap_clear_sent == 1 +- all requests serviced, conn has been released +- BSS sends BSSMAP Clear Complete DREF MSISDN:46071: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED @@ -1137,8 +1150,6 @@ DREF VLR subscr MSISDN:46071 usage decreases to: 1 DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated - bssap_clear_sent == 1 -- all requests serviced, conn has been released llist_count(&net->subscr_conns) == 0 DREF freeing VLR subscr MSISDN:46071 ===== test_reject_paging_resp_during_cm: SUCCESS @@ -1239,6 +1250,12 @@ DREF VLR subscr MSISDN:46071 usage increases to: 4 DREF VLR subscr MSISDN:46071 usage decreases to: 3 - BSSAP Clear --RAN_GERAN_A--> MS +DREF VLR subscr MSISDN:46071 usage decreases to: 2 +<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0 + bssap_clear_sent == 1 +- LU was successful, and the conn has already been closed + lu_result_sent == 1 +- BSS sends BSSMAP Clear Complete DREF MSISDN:46071: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED @@ -1249,14 +1266,9 @@ DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Freeing instance DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Deallocated DRLL MSISDN:46071: Freeing subscriber connection -DREF VLR subscr MSISDN:46071 usage decreases to: 2 +DREF VLR subscr MSISDN:46071 usage decreases to: 1 DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated -DREF VLR subscr MSISDN:46071 usage decreases to: 1 -<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0 - bssap_clear_sent == 1 -- LU was successful, and the conn has already been closed - lu_result_sent == 1 llist_count(&net->subscr_conns) == 0 --- - an SMS is sent, MS is paged @@ -1350,6 +1362,9 @@ DREF VLR subscr MSISDN:46071 usage increases to: 3 DREF VLR subscr MSISDN:46071 usage decreases to: 2 - BSSAP Clear --RAN_GERAN_A--> MS + dtap_tx_confirmed == 1 + bssap_clear_sent == 1 +- BSS sends BSSMAP Clear Complete DREF MSISDN:46071: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED @@ -1362,8 +1377,6 @@ DREF VLR subscr MSISDN:46071 usage decreases to: 1 DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated - dtap_tx_confirmed == 1 - bssap_clear_sent == 1 - SMS is done llist_count(&net->subscr_conns) == 0 DREF freeing VLR subscr MSISDN:46071 @@ -1465,6 +1478,12 @@ DREF VLR subscr MSISDN:46071 usage increases to: 4 DREF VLR subscr MSISDN:46071 usage decreases to: 3 - BSSAP Clear --RAN_GERAN_A--> MS +DREF VLR subscr MSISDN:46071 usage decreases to: 2 +<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0 + bssap_clear_sent == 1 +- LU was successful, and the conn has already been closed + lu_result_sent == 1 +- BSS sends BSSMAP Clear Complete DREF MSISDN:46071: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED @@ -1475,14 +1494,9 @@ DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Freeing instance DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Deallocated DRLL MSISDN:46071: Freeing subscriber connection -DREF VLR subscr MSISDN:46071 usage decreases to: 2 +DREF VLR subscr MSISDN:46071 usage decreases to: 1 DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated -DREF VLR subscr MSISDN:46071 usage decreases to: 1 -<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0 - bssap_clear_sent == 1 -- LU was successful, and the conn has already been closed - lu_result_sent == 1 llist_count(&net->subscr_conns) == 0 --- - an SMS is sent, MS is paged @@ -1597,11 +1611,13 @@ DREF VLR subscr MSISDN:46071 usage increases to: 4 DREF VLR subscr MSISDN:46071 usage decreases to: 3 - BSSAP Clear --RAN_GERAN_A--> MS -DREF MSISDN:46071: MSC conn use - release == 1 (0x2) DREF VLR subscr MSISDN:46071 usage decreases to: 2 DREF VLR subscr MSISDN:46071 usage decreases to: 1 -DMM msc_subscr_conn_close(vsub=MSISDN:46071, cause=0): already in release, ignore. -DREF MSISDN:46071: MSC conn use - dtap == 0 (0x0) +DMM conn_close(vsub=MSISDN:46071, cause=0): already in release, ignore. +DREF MSISDN:46071: MSC conn use - dtap == 1 (0x100) + bssap_clear_sent == 1 +- BSS sends BSSMAP Clear Complete +DREF MSISDN:46071: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) @@ -1610,7 +1626,6 @@ DREF freeing VLR subscr MSISDN:46071 DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated - bssap_clear_sent == 1 llist_count(&net->subscr_conns) == 0 ===== test_accept_cm_during_paging_resp: SUCCESS @@ -1710,6 +1725,12 @@ DREF VLR subscr MSISDN:46071 usage increases to: 4 DREF VLR subscr MSISDN:46071 usage decreases to: 3 - BSSAP Clear --RAN_GERAN_A--> MS +DREF VLR subscr MSISDN:46071 usage decreases to: 2 +<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0 + bssap_clear_sent == 1 +- LU was successful, and the conn has already been closed + lu_result_sent == 1 +- BSS sends BSSMAP Clear Complete DREF MSISDN:46071: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED @@ -1720,14 +1741,9 @@ DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Freeing instance DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Deallocated DRLL MSISDN:46071: Freeing subscriber connection -DREF VLR subscr MSISDN:46071 usage decreases to: 2 +DREF VLR subscr MSISDN:46071 usage decreases to: 1 DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated -DREF VLR subscr MSISDN:46071 usage decreases to: 1 -<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0 - bssap_clear_sent == 1 -- LU was successful, and the conn has already been closed - lu_result_sent == 1 llist_count(&net->subscr_conns) == 0 --- - an SMS is sent, MS is paged @@ -1819,6 +1835,9 @@ DREF VLR subscr MSISDN:46071 usage increases to: 3 DREF VLR subscr MSISDN:46071 usage decreases to: 2 - BSSAP Clear --RAN_GERAN_A--> MS + dtap_tx_confirmed == 1 + bssap_clear_sent == 1 +- BSS sends BSSMAP Clear Complete DREF MSISDN:46071: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED @@ -1831,8 +1850,6 @@ DREF VLR subscr MSISDN:46071 usage decreases to: 1 DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated - dtap_tx_confirmed == 1 - bssap_clear_sent == 1 - SMS is done llist_count(&net->subscr_conns) == 0 DREF freeing VLR subscr MSISDN:46071 diff --git a/tests/msc_vlr/msc_vlr_test_rest.c b/tests/msc_vlr/msc_vlr_test_rest.c index 0233047..aef1df5 100644 --- a/tests/msc_vlr/msc_vlr_test_rest.c +++ b/tests/msc_vlr/msc_vlr_test_rest.c @@ -55,6 +55,7 @@ expect_bssap_clear(); osmo_fsm_inst_dispatch(g_conn->fi, SUBSCR_CONN_E_CN_CLOSE, NULL); VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); clear_vlr(); @@ -71,6 +72,7 @@ VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); btw("conn was released"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); clear_vlr(); @@ -107,6 +109,7 @@ btw("LU was successful, and the conn has already been closed"); VERBOSE_ASSERT(lu_result_sent, == RES_ACCEPT, "%d"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); @@ -137,6 +140,7 @@ btw("LU was successful, and the conn has already been closed"); VERBOSE_ASSERT(lu_result_sent, == RES_ACCEPT, "%d"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); BTW("subscriber detaches"); @@ -144,6 +148,7 @@ ms_sends_msg("050130089910070000006402"); VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); clear_vlr(); comment_end(); @@ -185,6 +190,7 @@ btw("LU was successful, and the conn has already been closed"); VERBOSE_ASSERT(lu_result_sent, == RES_ACCEPT, "%d"); + bss_sends_clear_complete(); EXPECT_CONN_COUNT(0); clear_vlr(); comment_end(); diff --git a/tests/msc_vlr/msc_vlr_test_rest.err b/tests/msc_vlr/msc_vlr_test_rest.err index 2f09760..683e914 100644 --- a/tests/msc_vlr/msc_vlr_test_rest.err +++ b/tests/msc_vlr/msc_vlr_test_rest.err @@ -31,6 +31,8 @@ DREF VLR subscr unknown usage increases to: 2 DREF VLR subscr unknown usage decreases to: 1 - BSSAP Clear --RAN_GERAN_A--> MS + bssap_clear_sent == 1 +- BSS sends BSSMAP Clear Complete DREF unknown: MSC conn use - release == 0 (0x0) DMM Subscr_Conn{SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn{SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED @@ -42,7 +44,6 @@ DREF freeing VLR subscr unknown DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Deallocated - bssap_clear_sent == 1 llist_count(&net->subscr_conns) == 0 ===== test_early_stage: SUCCESS @@ -70,10 +71,13 @@ DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASING DREF unknown: MSC conn use + release == 2 (0x101) - BSSAP Clear --RAN_GERAN_A--> MS -DREF unknown: MSC conn use - release == 1 (0x1) DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_COMPLETE_LAYER_3 DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: Event SUBSCR_CONN_E_COMPLETE_LAYER_3 not permitted -DREF unknown: MSC conn use - compl_l3 == 0 (0x0) +DREF unknown: MSC conn use - compl_l3 == 1 (0x100) + bssap_clear_sent == 1 +- conn was released +- BSS sends BSSMAP Clear Complete +DREF unknown: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) @@ -84,8 +88,6 @@ DRLL Freeing subscriber connection with NULL subscriber DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated - bssap_clear_sent == 1 -- conn was released llist_count(&net->subscr_conns) == 0 ===== test_cm_service_without_lu: SUCCESS @@ -194,6 +196,12 @@ DREF VLR subscr MSISDN:46071 usage increases to: 4 DREF VLR subscr MSISDN:46071 usage decreases to: 3 - BSSAP Clear --RAN_GERAN_A--> MS +DREF VLR subscr MSISDN:46071 usage decreases to: 2 +<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0 + bssap_clear_sent == 1 +- LU was successful, and the conn has already been closed + lu_result_sent == 1 +- BSS sends BSSMAP Clear Complete DREF MSISDN:46071: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED @@ -204,14 +212,9 @@ DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Freeing instance DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Deallocated DRLL MSISDN:46071: Freeing subscriber connection -DREF VLR subscr MSISDN:46071 usage decreases to: 2 +DREF VLR subscr MSISDN:46071 usage decreases to: 1 DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated -DREF VLR subscr MSISDN:46071 usage decreases to: 1 -<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0 - bssap_clear_sent == 1 -- LU was successful, and the conn has already been closed - lu_result_sent == 1 llist_count(&net->subscr_conns) == 0 --- - verify that the MS can send another LU request @@ -313,6 +316,12 @@ DREF VLR subscr MSISDN:46071 usage increases to: 4 DREF VLR subscr MSISDN:46071 usage decreases to: 3 - BSSAP Clear --RAN_GERAN_A--> MS +DREF VLR subscr MSISDN:46071 usage decreases to: 2 +<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0 + bssap_clear_sent == 1 +- LU was successful, and the conn has already been closed + lu_result_sent == 1 +- BSS sends BSSMAP Clear Complete DREF MSISDN:46071: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED @@ -323,14 +332,9 @@ DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Freeing instance DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Deallocated DRLL MSISDN:46071: Freeing subscriber connection -DREF VLR subscr MSISDN:46071 usage decreases to: 2 +DREF VLR subscr MSISDN:46071 usage decreases to: 1 DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated -DREF VLR subscr MSISDN:46071 usage decreases to: 1 -<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0 - bssap_clear_sent == 1 -- LU was successful, and the conn has already been closed - lu_result_sent == 1 llist_count(&net->subscr_conns) == 0 --- - subscriber detaches @@ -350,15 +354,16 @@ DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASING DREF unknown: MSC conn use + release == 2 (0x101) - BSSAP Clear --RAN_GERAN_A--> MS -DREF unknown: MSC conn use - release == 1 (0x1) -DREF unknown: MSC conn use - compl_l3 == 0 (0x0) +DREF unknown: MSC conn use - compl_l3 == 1 (0x100) + bssap_clear_sent == 1 +- BSS sends BSSMAP Clear Complete +DREF unknown: MSC conn use - release == 0 (0x0) DMM Subscr_Conn{SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn{SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DRLL Freeing subscriber connection with NULL subscriber DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Deallocated - bssap_clear_sent == 1 llist_count(&net->subscr_conns) == 0 ===== test_two_lu: SUCCESS @@ -493,6 +498,12 @@ DREF VLR subscr MSISDN:46071 usage increases to: 4 DREF VLR subscr MSISDN:46071 usage decreases to: 3 - BSSAP Clear --RAN_GERAN_A--> MS +DREF VLR subscr MSISDN:46071 usage decreases to: 2 +<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0 + bssap_clear_sent == 1 +- LU was successful, and the conn has already been closed + lu_result_sent == 1 +- BSS sends BSSMAP Clear Complete DREF MSISDN:46071: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(591536962){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(591536962){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED @@ -503,14 +514,9 @@ DVLR vlr_lu_fsm(591536962){VLR_ULA_S_DONE}: Freeing instance DVLR vlr_lu_fsm(591536962){VLR_ULA_S_DONE}: Deallocated DRLL MSISDN:46071: Freeing subscriber connection -DREF VLR subscr MSISDN:46071 usage decreases to: 2 +DREF VLR subscr MSISDN:46071 usage decreases to: 1 DMM Subscr_Conn(591536962){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(591536962){SUBSCR_CONN_S_RELEASED}: Deallocated -DREF VLR subscr MSISDN:46071 usage decreases to: 1 -<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0 - bssap_clear_sent == 1 -- LU was successful, and the conn has already been closed - lu_result_sent == 1 llist_count(&net->subscr_conns) == 0 DREF freeing VLR subscr MSISDN:46071 ===== test_lu_unknown_tmsi: SUCCESS diff --git a/tests/msc_vlr/msc_vlr_test_umts_authen.c b/tests/msc_vlr/msc_vlr_test_umts_authen.c index 7b410df..42d406c 100644 --- a/tests/msc_vlr/msc_vlr_test_umts_authen.c +++ b/tests/msc_vlr/msc_vlr_test_umts_authen.c @@ -23,19 +23,6 @@ #include "msc_vlr_tests.h" -#define ASSERT_RELEASE_CLEAR(via_ran) \ - switch (via_ran) { \ - case RAN_GERAN_A: \ - VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); \ - break; \ - case RAN_UTRAN_IU: \ - VERBOSE_ASSERT(iu_release_sent, == true, "%d"); \ - break; \ - default: \ - OSMO_ASSERT(false); \ - break; \ - } - static void _test_umts_authen(enum ran_type via_ran) { struct vlr_subscr *vsub; @@ -183,6 +170,7 @@ expect_release_clear(via_ran); ms_sends_msg("055b"); ASSERT_RELEASE_CLEAR(via_ran); + bss_rnc_sends_release_clear_complete(via_ran); btw("LU was successful, and the conn has already been closed"); EXPECT_CONN_COUNT(0); @@ -229,6 +217,7 @@ ms_sends_msg("0b3b1c15a11302010002013b300b04010f0406aa510c061b017f0100"); OSMO_ASSERT(dtap_tx_confirmed); ASSERT_RELEASE_CLEAR(via_ran); + bss_rnc_sends_release_clear_complete(via_ran); btw("all requests serviced, conn has been released"); EXPECT_CONN_COUNT(0); @@ -308,6 +297,7 @@ ms_sends_msg("890106020041020000"); VERBOSE_ASSERT(dtap_tx_confirmed, == true, "%d"); ASSERT_RELEASE_CLEAR(via_ran); + bss_rnc_sends_release_clear_complete(via_ran); btw("SMS is done, conn is gone"); EXPECT_CONN_COUNT(0); @@ -317,6 +307,7 @@ ms_sends_msg("050130" "089910070000106005" /* IMSI */); ASSERT_RELEASE_CLEAR(via_ran); + bss_rnc_sends_release_clear_complete(via_ran); EXPECT_CONN_COUNT(0); clear_vlr(); @@ -551,6 +542,7 @@ expect_release_clear(via_ran); ms_sends_msg("055b"); ASSERT_RELEASE_CLEAR(via_ran); + bss_rnc_sends_release_clear_complete(via_ran); btw("LU was successful, and the conn has already been closed"); EXPECT_CONN_COUNT(0); @@ -652,6 +644,7 @@ ms_sends_msg("0554" "e229c19e" "2103" "791f2e" /* nipped one byte */); VERBOSE_ASSERT(lu_result_sent, == RES_REJECT, "%d"); ASSERT_RELEASE_CLEAR(via_ran); + bss_rnc_sends_release_clear_complete(via_ran); EXPECT_CONN_COUNT(0); clear_vlr(); @@ -751,6 +744,7 @@ ms_sends_msg("0554" "e229c19e" "2105" "791f2e4123" /* added one byte */); VERBOSE_ASSERT(lu_result_sent, == RES_REJECT, "%d"); ASSERT_RELEASE_CLEAR(via_ran); + bss_rnc_sends_release_clear_complete(via_ran); EXPECT_CONN_COUNT(0); clear_vlr(); @@ -855,6 +849,7 @@ ms_sends_msg("0554" "e229c19e" /* Only the SRES half of the RES */); VERBOSE_ASSERT(lu_result_sent, == RES_REJECT, "%d"); ASSERT_RELEASE_CLEAR(via_ran); + bss_rnc_sends_release_clear_complete(via_ran); EXPECT_CONN_COUNT(0); clear_vlr(); diff --git a/tests/msc_vlr/msc_vlr_test_umts_authen.err b/tests/msc_vlr/msc_vlr_test_umts_authen.err index 9e0186e..fe687a1 100644 --- a/tests/msc_vlr/msc_vlr_test_umts_authen.err +++ b/tests/msc_vlr/msc_vlr_test_umts_authen.err @@ -165,8 +165,10 @@ DREF VLR subscr MSISDN:42342 usage increases to: 3 DREF VLR subscr MSISDN:42342 usage decreases to: 2 - BSSAP Clear --RAN_GERAN_A--> MS -DREF MSISDN:42342: MSC conn use - release == 1 (0x2) -DREF MSISDN:42342: MSC conn use - dtap == 0 (0x0) +DREF MSISDN:42342: MSC conn use - dtap == 1 (0x100) + bssap_clear_sent == 1 +- BSS sends BSSMAP Clear Complete +DREF MSISDN:42342: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) @@ -179,7 +181,6 @@ DREF VLR subscr MSISDN:42342 usage decreases to: 1 DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Deallocated - bssap_clear_sent == 1 - LU was successful, and the conn has already been closed llist_count(&net->subscr_conns) == 0 --- @@ -281,6 +282,8 @@ DREF VLR subscr MSISDN:42342 usage increases to: 3 DREF VLR subscr MSISDN:42342 usage decreases to: 2 - BSSAP Clear --RAN_GERAN_A--> MS + bssap_clear_sent == 1 +- BSS sends BSSMAP Clear Complete DREF MSISDN:42342: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED @@ -293,7 +296,6 @@ DREF VLR subscr MSISDN:42342 usage decreases to: 1 DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Deallocated - bssap_clear_sent == 1 - all requests serviced, conn has been released llist_count(&net->subscr_conns) == 0 --- @@ -428,6 +430,9 @@ DREF VLR subscr MSISDN:42342 usage increases to: 3 DREF VLR subscr MSISDN:42342 usage decreases to: 2 - BSSAP Clear --RAN_GERAN_A--> MS + dtap_tx_confirmed == 1 + bssap_clear_sent == 1 +- BSS sends BSSMAP Clear Complete DREF MSISDN:42342: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED @@ -440,8 +445,6 @@ DREF VLR subscr MSISDN:42342 usage decreases to: 1 DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Deallocated - dtap_tx_confirmed == 1 - bssap_clear_sent == 1 - SMS is done, conn is gone llist_count(&net->subscr_conns) == 0 --- @@ -462,15 +465,16 @@ DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASING DREF unknown: MSC conn use + release == 2 (0x101) - BSSAP Clear --RAN_GERAN_A--> MS -DREF unknown: MSC conn use - release == 1 (0x1) -DREF unknown: MSC conn use - compl_l3 == 0 (0x0) +DREF unknown: MSC conn use - compl_l3 == 1 (0x100) + bssap_clear_sent == 1 +- BSS sends BSSMAP Clear Complete +DREF unknown: MSC conn use - release == 0 (0x0) DMM Subscr_Conn{SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn{SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DRLL Freeing subscriber connection with NULL subscriber DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Deallocated - bssap_clear_sent == 1 llist_count(&net->subscr_conns) == 0 ===== test_umts_authen_geran: SUCCESS @@ -653,8 +657,10 @@ DREF VLR subscr MSISDN:42342 usage increases to: 3 DREF VLR subscr MSISDN:42342 usage decreases to: 2 - Iu Release --RAN_UTRAN_IU--> MS -DREF MSISDN:42342: MSC conn use - release == 1 (0x2) -DREF MSISDN:42342: MSC conn use - dtap == 0 (0x0) +DREF MSISDN:42342: MSC conn use - dtap == 1 (0x100) + iu_release_sent == 1 +- RNC sends Iu Release Complete +DREF MSISDN:42342: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) @@ -667,7 +673,6 @@ DREF VLR subscr MSISDN:42342 usage decreases to: 1 DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Deallocated - iu_release_sent == 1 - LU was successful, and the conn has already been closed llist_count(&net->subscr_conns) == 0 --- @@ -782,6 +787,8 @@ DREF VLR subscr MSISDN:42342 usage increases to: 3 DREF VLR subscr MSISDN:42342 usage decreases to: 2 - Iu Release --RAN_UTRAN_IU--> MS + iu_release_sent == 1 +- RNC sends Iu Release Complete DREF MSISDN:42342: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED @@ -794,7 +801,6 @@ DREF VLR subscr MSISDN:42342 usage decreases to: 1 DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Deallocated - iu_release_sent == 1 - all requests serviced, conn has been released llist_count(&net->subscr_conns) == 0 --- @@ -942,6 +948,9 @@ DREF VLR subscr MSISDN:42342 usage increases to: 3 DREF VLR subscr MSISDN:42342 usage decreases to: 2 - Iu Release --RAN_UTRAN_IU--> MS + dtap_tx_confirmed == 1 + iu_release_sent == 1 +- RNC sends Iu Release Complete DREF MSISDN:42342: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED @@ -954,8 +963,6 @@ DREF VLR subscr MSISDN:42342 usage decreases to: 1 DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Deallocated - dtap_tx_confirmed == 1 - iu_release_sent == 1 - SMS is done, conn is gone llist_count(&net->subscr_conns) == 0 --- @@ -976,15 +983,16 @@ DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASING DREF unknown: MSC conn use + release == 2 (0x101) - Iu Release --RAN_UTRAN_IU--> MS -DREF unknown: MSC conn use - release == 1 (0x1) -DREF unknown: MSC conn use - compl_l3 == 0 (0x0) +DREF unknown: MSC conn use - compl_l3 == 1 (0x100) + iu_release_sent == 1 +- RNC sends Iu Release Complete +DREF unknown: MSC conn use - release == 0 (0x0) DMM Subscr_Conn{SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn{SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DRLL Freeing subscriber connection with NULL subscriber DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn{SUBSCR_CONN_S_RELEASED}: Deallocated - iu_release_sent == 1 llist_count(&net->subscr_conns) == 0 ===== test_umts_authen_utran: SUCCESS @@ -1186,8 +1194,10 @@ DREF VLR subscr MSISDN:42342 usage increases to: 3 DREF VLR subscr MSISDN:42342 usage decreases to: 2 - BSSAP Clear --RAN_GERAN_A--> MS -DREF MSISDN:42342: MSC conn use - release == 1 (0x2) -DREF MSISDN:42342: MSC conn use - dtap == 0 (0x0) +DREF MSISDN:42342: MSC conn use - dtap == 1 (0x100) + bssap_clear_sent == 1 +- BSS sends BSSMAP Clear Complete +DREF MSISDN:42342: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) @@ -1200,7 +1210,6 @@ DREF VLR subscr MSISDN:42342 usage decreases to: 1 DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Deallocated - bssap_clear_sent == 1 - LU was successful, and the conn has already been closed llist_count(&net->subscr_conns) == 0 DREF freeing VLR subscr MSISDN:42342 @@ -1416,8 +1425,10 @@ DREF VLR subscr MSISDN:42342 usage increases to: 3 DREF VLR subscr MSISDN:42342 usage decreases to: 2 - Iu Release --RAN_UTRAN_IU--> MS -DREF MSISDN:42342: MSC conn use - release == 1 (0x2) -DREF MSISDN:42342: MSC conn use - dtap == 0 (0x0) +DREF MSISDN:42342: MSC conn use - dtap == 1 (0x100) + iu_release_sent == 1 +- RNC sends Iu Release Complete +DREF MSISDN:42342: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) @@ -1430,7 +1441,6 @@ DREF VLR subscr MSISDN:42342 usage decreases to: 1 DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Deallocated - iu_release_sent == 1 - LU was successful, and the conn has already been closed llist_count(&net->subscr_conns) == 0 DREF freeing VLR subscr MSISDN:42342 @@ -1513,8 +1523,11 @@ DREF VLR subscr IMSI:901700000010650 usage increases to: 2 DREF VLR subscr IMSI:901700000010650 usage decreases to: 1 - BSSAP Clear --RAN_GERAN_A--> MS -DREF IMSI:901700000010650: MSC conn use - release == 1 (0x2) -DREF IMSI:901700000010650: MSC conn use - dtap == 0 (0x0) +DREF IMSI:901700000010650: MSC conn use - dtap == 1 (0x100) + lu_result_sent == 2 + bssap_clear_sent == 1 +- BSS sends BSSMAP Clear Complete +DREF IMSI:901700000010650: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) @@ -1528,8 +1541,6 @@ DREF freeing VLR subscr IMSI:901700000010650 DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Deallocated - lu_result_sent == 2 - bssap_clear_sent == 1 llist_count(&net->subscr_conns) == 0 ===== test_umts_authen_too_short_res_geran: SUCCESS @@ -1610,8 +1621,11 @@ DREF VLR subscr IMSI:901700000010650 usage increases to: 2 DREF VLR subscr IMSI:901700000010650 usage decreases to: 1 - Iu Release --RAN_UTRAN_IU--> MS -DREF IMSI:901700000010650: MSC conn use - release == 1 (0x2) -DREF IMSI:901700000010650: MSC conn use - dtap == 0 (0x0) +DREF IMSI:901700000010650: MSC conn use - dtap == 1 (0x100) + lu_result_sent == 2 + iu_release_sent == 1 +- RNC sends Iu Release Complete +DREF IMSI:901700000010650: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) @@ -1625,8 +1639,6 @@ DREF freeing VLR subscr IMSI:901700000010650 DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Deallocated - lu_result_sent == 2 - iu_release_sent == 1 llist_count(&net->subscr_conns) == 0 ===== test_umts_authen_too_short_res_utran: SUCCESS @@ -1707,8 +1719,11 @@ DREF VLR subscr IMSI:901700000010650 usage increases to: 2 DREF VLR subscr IMSI:901700000010650 usage decreases to: 1 - BSSAP Clear --RAN_GERAN_A--> MS -DREF IMSI:901700000010650: MSC conn use - release == 1 (0x2) -DREF IMSI:901700000010650: MSC conn use - dtap == 0 (0x0) +DREF IMSI:901700000010650: MSC conn use - dtap == 1 (0x100) + lu_result_sent == 2 + bssap_clear_sent == 1 +- BSS sends BSSMAP Clear Complete +DREF IMSI:901700000010650: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) @@ -1722,8 +1737,6 @@ DREF freeing VLR subscr IMSI:901700000010650 DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Deallocated - lu_result_sent == 2 - bssap_clear_sent == 1 llist_count(&net->subscr_conns) == 0 ===== test_umts_authen_too_long_res_geran: SUCCESS @@ -1804,8 +1817,11 @@ DREF VLR subscr IMSI:901700000010650 usage increases to: 2 DREF VLR subscr IMSI:901700000010650 usage decreases to: 1 - Iu Release --RAN_UTRAN_IU--> MS -DREF IMSI:901700000010650: MSC conn use - release == 1 (0x2) -DREF IMSI:901700000010650: MSC conn use - dtap == 0 (0x0) +DREF IMSI:901700000010650: MSC conn use - dtap == 1 (0x100) + lu_result_sent == 2 + iu_release_sent == 1 +- RNC sends Iu Release Complete +DREF IMSI:901700000010650: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) @@ -1819,8 +1835,6 @@ DREF freeing VLR subscr IMSI:901700000010650 DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Deallocated - lu_result_sent == 2 - iu_release_sent == 1 llist_count(&net->subscr_conns) == 0 ===== test_umts_authen_too_long_res_utran: SUCCESS @@ -1901,8 +1915,11 @@ DREF VLR subscr IMSI:901700000010650 usage increases to: 2 DREF VLR subscr IMSI:901700000010650 usage decreases to: 1 - BSSAP Clear --RAN_GERAN_A--> MS -DREF IMSI:901700000010650: MSC conn use - release == 1 (0x2) -DREF IMSI:901700000010650: MSC conn use - dtap == 0 (0x0) +DREF IMSI:901700000010650: MSC conn use - dtap == 1 (0x100) + lu_result_sent == 2 + bssap_clear_sent == 1 +- BSS sends BSSMAP Clear Complete +DREF IMSI:901700000010650: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) @@ -1916,8 +1933,6 @@ DREF freeing VLR subscr IMSI:901700000010650 DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Deallocated - lu_result_sent == 2 - bssap_clear_sent == 1 llist_count(&net->subscr_conns) == 0 ===== test_umts_authen_only_sres_geran: SUCCESS @@ -1998,8 +2013,11 @@ DREF VLR subscr IMSI:901700000010650 usage increases to: 2 DREF VLR subscr IMSI:901700000010650 usage decreases to: 1 - Iu Release --RAN_UTRAN_IU--> MS -DREF IMSI:901700000010650: MSC conn use - release == 1 (0x2) -DREF IMSI:901700000010650: MSC conn use - dtap == 0 (0x0) +DREF IMSI:901700000010650: MSC conn use - dtap == 1 (0x100) + lu_result_sent == 2 + iu_release_sent == 1 +- RNC sends Iu Release Complete +DREF IMSI:901700000010650: MSC conn use - release == 0 (0x0) DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) @@ -2013,8 +2031,6 @@ DREF freeing VLR subscr IMSI:901700000010650 DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Freeing instance DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Deallocated - lu_result_sent == 2 - iu_release_sent == 1 llist_count(&net->subscr_conns) == 0 ===== test_umts_authen_only_sres_utran: SUCCESS diff --git a/tests/msc_vlr/msc_vlr_tests.c b/tests/msc_vlr/msc_vlr_tests.c index 915f282..eda3ea1 100644 --- a/tests/msc_vlr/msc_vlr_tests.c +++ b/tests/msc_vlr/msc_vlr_tests.c @@ -795,6 +795,22 @@ msc_rx_sec_mode_compl(g_conn); } +void bss_sends_clear_complete() +{ + btw("BSS sends BSSMAP Clear Complete"); + OSMO_ASSERT(g_conn); + OSMO_ASSERT(g_conn->via_ran == RAN_GERAN_A); + msc_subscr_conn_rx_bssmap_clear_complete(g_conn); +} + +void rnc_sends_release_complete() +{ + btw("RNC sends Iu Release Complete"); + OSMO_ASSERT(g_conn); + OSMO_ASSERT(g_conn->via_ran == RAN_UTRAN_IU); + msc_subscr_conn_rx_iu_release_complete(g_conn); +} + const struct timeval fake_time_start_time = { 123, 456 }; void fake_time_start() diff --git a/tests/msc_vlr/msc_vlr_tests.h b/tests/msc_vlr/msc_vlr_tests.h index 15df9ec..a29e870 100644 --- a/tests/msc_vlr/msc_vlr_tests.h +++ b/tests/msc_vlr/msc_vlr_tests.h @@ -166,6 +166,9 @@ struct vlr_subscr *sender, char *str); +void bss_sends_clear_complete(); +void rnc_sends_release_complete(); + void thwart_rx_non_initial_requests(); #define EXPECT_ACCEPTED(expect_accepted) do { \ @@ -223,3 +226,31 @@ } while (0) extern const struct timeval fake_time_start_time; + +#define ASSERT_RELEASE_CLEAR(via_ran) \ + switch (via_ran) { \ + case RAN_GERAN_A: \ + VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); \ + break; \ + case RAN_UTRAN_IU: \ + VERBOSE_ASSERT(iu_release_sent, == true, "%d"); \ + break; \ + default: \ + OSMO_ASSERT(false); \ + break; \ + } + +static inline void bss_rnc_sends_release_clear_complete(enum ran_type via_ran) +{ + switch (via_ran) { + case RAN_GERAN_A: + bss_sends_clear_complete(); + return; + case RAN_UTRAN_IU: + rnc_sends_release_complete(); + return; + default: + OSMO_ASSERT(false); + break; + } +} -- To view, visit https://gerrit.osmocom.org/7706 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: Ie4c6aaba3866d6e5b98004e8870a215e8cf8ffc1 Gerrit-PatchSet: 3 Gerrit-Project: osmo-msc Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder From gerrit-no-reply at lists.osmocom.org Wed Apr 11 21:39:45 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Wed, 11 Apr 2018 21:39:45 +0000 Subject: [MERGED] osmo-msc[master]: refactor subscr_conn and subscr_conn_fsm de-/alloc In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: refactor subscr_conn and subscr_conn_fsm de-/alloc ...................................................................... refactor subscr_conn and subscr_conn_fsm de-/alloc Refactor: 1. Glue the gsm_subscriber_connection alloc to the subscr_conn_fsm. 2. Add separate AUTH_CIPH state to the FSM. 3. Use conn->use_count to trigger conn release. 4. Add separate RELEASING state to the FSM. 5. Add rate counters for each of the three Complete Layer 3 types. Details: 1. Glue the gsm_subscriber_connection alloc to the subscr_conn_fsm. Historically, a gsm_subscriber_connection was allocated in libbsc land, and only upon Complete Layer 3 did libmsc add the fsm instance. After splitting openbsc.git into a separate osmo-msc, this is no longer necessary, hence: Closely tie gsm_subscriber_connection allocation to the subscr_conn_fsm instance: talloc the conn as a child of the FSM instance, and discard the conn as soon as the FSM terminates. 2. Add separate AUTH_CIPH state to the FSM. Decoding the Complete Layer 3 message is distinctly separate from waiting for the VLR FSMs to conclude. Use the NEW state as "we don't know if this is a valid message yet", and the AUTH_CIPH state as "evaluating, don't release". A profound effect of this: should we for any odd reason fail to leave the FSM's NEW state, the conn will be released right at the end of msc_compl_l3(), without needing to trigger release in each code path. 3. Use conn->use_count to trigger conn release. Before, the FSM itself would hold a use count on the conn, and hence we would need to ask it whether it is ready to release the conn yet by dispatching events, to achieve a use_count decrement. Instead, unite the FSM instance and conn, and do not hold a use count by the FSM. Hence, trigger an FSM "UNUSED" event only when the use_count reaches zero. As long as use counts are done correctly, the FSM will terminate correctly. These exceptions: - The new AUTH_CIPH state explicitly ignores UNUSED events, since we expect the use count to reach zero while evaluating Authentication and Ciphering. (I experimented with holding a use count by AUTH_CIPH onenter() and releasing by onleave(), but the use count and thus the conn are released before the next state can initiate transactions that would increment the use count again. Same thing for the VLR FSMs holding a use count, they should be done before we advance to the next state. The easiest is to simply expect zero use count during the AUTH_CIPH state.) - A CM Service Request means that even though the MSC would be through with all it wants to do, we shall still wait for a request to follow from the MS. Hence the FSM holds a use count on itself while a CM Service is pending. - While waiting for a Release/Clear Complete, the FSM holds a use count on itself. 4. Add separate RELEASING state to the FSM. If we decide to release for other reasons than a use count reaching zero, we still need to be able to wait for the msc_dtap() use count on the conn to release. (An upcoming patch will further use the RELEASING state to properly wait for Clear Complete / Release Complete messages.) 5. Add rate counters for each of the three Complete Layer 3 types. Besides LU, also count CM Service Request and Paging Response acceptance/rejections. Without these counters, only very few of the auth+ciph outcomes actually show in the counters. Related: OS#3122 Change-Id: I55feb379e176a96a831e105b86202b17a0ffe889 --- M include/osmocom/msc/gsm_data.h M include/osmocom/msc/osmo_msc.h M src/libmsc/gsm_04_08.c M src/libmsc/msc_ifaces.c M src/libmsc/osmo_msc.c M src/libmsc/subscr_conn.c M src/libmsc/transaction.c M tests/msc_vlr/msc_vlr_test_authen_reuse.err M tests/msc_vlr/msc_vlr_test_call.err M tests/msc_vlr/msc_vlr_test_gsm_authen.err M tests/msc_vlr/msc_vlr_test_gsm_ciph.err M tests/msc_vlr/msc_vlr_test_hlr_reject.err M tests/msc_vlr/msc_vlr_test_hlr_timeout.err M tests/msc_vlr/msc_vlr_test_ms_timeout.err M tests/msc_vlr/msc_vlr_test_no_authen.err M tests/msc_vlr/msc_vlr_test_reject_concurrency.err M tests/msc_vlr/msc_vlr_test_rest.c M tests/msc_vlr/msc_vlr_test_rest.err M tests/msc_vlr/msc_vlr_test_umts_authen.err M tests/msc_vlr/msc_vlr_tests.c 20 files changed, 3,580 insertions(+), 2,937 deletions(-) Approvals: Harald Welte: Looks good to me, approved Jenkins Builder: Verified -- To view, visit https://gerrit.osmocom.org/7705 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: I55feb379e176a96a831e105b86202b17a0ffe889 Gerrit-PatchSet: 3 Gerrit-Project: osmo-msc Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder From gerrit-no-reply at lists.osmocom.org Wed Apr 11 21:39:46 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Wed, 11 Apr 2018 21:39:46 +0000 Subject: [MERGED] osmo-msc[master]: CC: intentionally release T308 on BSSMAP Clear Request from BSC In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: CC: intentionally release T308 on BSSMAP Clear Request from BSC ...................................................................... CC: intentionally release T308 on BSSMAP Clear Request from BSC So far we hit a running T308 during CC release when caused by a BSSMAP Clear Request, and we loudly log that as error. However, now I understand that T308 is a direct cause of the dispatch of a REL IND towards MNCC, which is used to indicate teardown to MNCC. So during _gsm48_cc_trans_free(), we first clear all timers, then invoke mncc_release_ind() which starts another timer (useful for graceful CC Release, but in this code path the intention is immediate release). Simply immediately cancel the timer again and release the conn. A separate question is whether a BSSMAP Clear Request should be less aggressive in releasing the connections; i.e. instead of calling trans_free() all around, to rather ask each transaction to "please stop soon", somehow. Related: OS#3062 Change-Id: I231fdb574a086a206321148474cbdc7ca9cf39f0 --- M src/libmsc/gsm_04_08.c M src/libmsc/transaction.c M tests/msc_vlr/msc_vlr_test_call.err 3 files changed, 4 insertions(+), 10 deletions(-) Approvals: Vadim Yanitskiy: Looks good to me, but someone else must approve Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/src/libmsc/gsm_04_08.c b/src/libmsc/gsm_04_08.c index e5ddb44..f29c0b6 100644 --- a/src/libmsc/gsm_04_08.c +++ b/src/libmsc/gsm_04_08.c @@ -1422,6 +1422,9 @@ mncc_release_ind(trans->net, trans, trans->callref, GSM48_CAUSE_LOC_PRN_S_LU, GSM48_CC_CAUSE_RESOURCE_UNAVAIL); + /* This is a final freeing of the transaction. The MNCC release may have triggered the + * T308 release timer, but we don't have the luxury of graceful CC Release here. */ + gsm48_stop_cc_timer(trans); } if (trans->cc.state != GSM_CSTATE_NULL) new_cc_state(trans, GSM_CSTATE_NULL); diff --git a/src/libmsc/transaction.c b/src/libmsc/transaction.c index 66b929a..147099e 100644 --- a/src/libmsc/transaction.c +++ b/src/libmsc/transaction.c @@ -122,15 +122,6 @@ switch (trans->protocol) { case GSM48_PDISC_CC: _gsm48_cc_trans_free(trans); - if (osmo_timer_pending(&trans->cc.timer)) { - LOGP(DCC, LOGL_ERROR, - "%s Timer 0x%x is still running while discarding transaction" - " -- this is a bug: we were still expecting a response but" - " are freeing the transaction anyway\n", - vlr_subscr_name(trans->conn->vsub), trans->cc.Tcurrent); - osmo_timer_del(&trans->cc.timer); - trans->cc.Tcurrent = 0; - } conn_usage_token = MSC_CONN_USE_TRANS_CC; break; case GSM48_PDISC_SMS: diff --git a/tests/msc_vlr/msc_vlr_test_call.err b/tests/msc_vlr/msc_vlr_test_call.err index 6142464..1b8002b 100644 --- a/tests/msc_vlr/msc_vlr_test_call.err +++ b/tests/msc_vlr/msc_vlr_test_call.err @@ -1085,8 +1085,8 @@ DMNCC transmit message MNCC_REL_CNF DCC Sending 'MNCC_REL_CNF' to MNCC. MSC --> MNCC: callref 0x423: MNCC_REL_CNF +DCC stopping pending timer T308 DCC (ti 00 sub MSISDN:42342) new state RELEASE_REQ -> NULL -DCC MSISDN:42342 Timer 0x308 is still running while discarding transaction -- this is a bug: we were still expecting a response but are freeing the transaction anyway DREF VLR subscr MSISDN:42342 usage decreases to: 2 DREF MSISDN:42342: MSC conn use - trans_cc == 1 (0x4) - Iu Release --RAN_UTRAN_IU--> MS -- To view, visit https://gerrit.osmocom.org/7704 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: I231fdb574a086a206321148474cbdc7ca9cf39f0 Gerrit-PatchSet: 3 Gerrit-Project: osmo-msc Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Vadim Yanitskiy From gerrit-no-reply at lists.osmocom.org Wed Apr 11 21:39:46 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Wed, 11 Apr 2018 21:39:46 +0000 Subject: [MERGED] osmo-msc[master]: cosmetic: embed compl_l3_type in FSM id In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: cosmetic: embed compl_l3_type in FSM id ...................................................................... cosmetic: embed compl_l3_type in FSM id In the subscr_conn_fsm instance's ID, include the Complete Layer 3 type, so that we can see on the first glance whether a state transition belongs to MO or MT. The huge patch is due to the cosmetic change affecting nearly every single log line in the msc_vlr_tests, by nature of changing the FSM's ID. Related: OS#3122 Change-Id: I2a7e27e0f16df1872dcda64cb928c3b8528ea3f7 --- M src/libmsc/subscr_conn.c M tests/msc_vlr/msc_vlr_test_authen_reuse.err M tests/msc_vlr/msc_vlr_test_call.err M tests/msc_vlr/msc_vlr_test_gsm_authen.err M tests/msc_vlr/msc_vlr_test_gsm_ciph.err M tests/msc_vlr/msc_vlr_test_hlr_reject.err M tests/msc_vlr/msc_vlr_test_hlr_timeout.err M tests/msc_vlr/msc_vlr_test_ms_timeout.err M tests/msc_vlr/msc_vlr_test_no_authen.err M tests/msc_vlr/msc_vlr_test_reject_concurrency.err M tests/msc_vlr/msc_vlr_test_rest.err M tests/msc_vlr/msc_vlr_test_umts_authen.err 12 files changed, 7,132 insertions(+), 7,132 deletions(-) Approvals: Harald Welte: Looks good to me, approved Jenkins Builder: Verified -- To view, visit https://gerrit.osmocom.org/7708 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: I2a7e27e0f16df1872dcda64cb928c3b8528ea3f7 Gerrit-PatchSet: 3 Gerrit-Project: osmo-msc Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder From gerrit-no-reply at lists.osmocom.org Wed Apr 11 21:39:46 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Wed, 11 Apr 2018 21:39:46 +0000 Subject: [MERGED] osmo-msc[master]: fix BSC Clear Request In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: fix BSC Clear Request ...................................................................... fix BSC Clear Request On receiving a Clear Request, don't send a Clear Command "out of band", let the FSM do the release handling by invoking msc_subscr_conn_mo_close(). Fixes: ttcn3 MSC_Tests.TC_lu_clear_request Change-Id: I168b889ac7989641cc679b781dcffb87ff13a710 --- M src/libmsc/a_iface_bssap.c 1 file changed, 2 insertions(+), 8 deletions(-) Approvals: Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/src/libmsc/a_iface_bssap.c b/src/libmsc/a_iface_bssap.c index 87ccf05..6d5848a 100644 --- a/src/libmsc/a_iface_bssap.c +++ b/src/libmsc/a_iface_bssap.c @@ -216,8 +216,6 @@ static int bssmap_rx_clear_rqst(struct gsm_subscriber_connection *conn, struct msgb *msg, struct tlv_parsed *tp) { - int rc; - struct msgb *msg_resp; uint8_t cause; LOGPCONN(conn, LOGL_INFO, "Rx BSSMAP CLEAR REQUEST\n"); @@ -228,13 +226,9 @@ } cause = TLVP_VAL(tp, GSM0808_IE_CAUSE)[0]; - /* Respond with clear command */ - msg_resp = gsm0808_create_clear_command(GSM0808_CAUSE_CALL_CONTROL); - rc = osmo_sccp_tx_data_msg(conn->a.scu, conn->a.conn_id, msg_resp); + msc_subscr_conn_mo_close(conn, cause); - msc_clear_request(conn, cause); - - return rc; + return 0; } /* Endpoint to handle BSSMAP clear complete */ -- To view, visit https://gerrit.osmocom.org/7707 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: I168b889ac7989641cc679b781dcffb87ff13a710 Gerrit-PatchSet: 3 Gerrit-Project: osmo-msc Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder From jenkins at lists.osmocom.org Wed Apr 11 21:48:09 2018 From: jenkins at lists.osmocom.org (jenkins at lists.osmocom.org) Date: Wed, 11 Apr 2018 21:48:09 +0000 (UTC) Subject: =?UTF-8?Q?Jenkins_build_is_back_to_normal_:_master-osmo-iuh_=C2=BB_a1=3Dd?= =?UTF-8?Q?efault,a2=3Ddefault,a3=3Ddefault,osmocom-master-debian9_#909?= In-Reply-To: <1457455654.258.1523462982422.JavaMail.jenkins@jenkins.osmocom.org> References: <1457455654.258.1523462982422.JavaMail.jenkins@jenkins.osmocom.org> Message-ID: <235661939.261.1523483289759.JavaMail.jenkins@jenkins.osmocom.org> See From jenkins at lists.osmocom.org Thu Apr 12 00:00:52 2018 From: jenkins at lists.osmocom.org (jenkins at lists.osmocom.org) Date: Thu, 12 Apr 2018 00:00:52 +0000 (UTC) Subject: =?UTF-8?Q?Build_failed_in_Jenkins:_master-osmo-bts_=C2=BB_lc15, origin/?= =?UTF-8?Q?nrw/litecell15-next,default,osmocom-master-debian9_#500?= Message-ID: <1579656532.262.1523491252310.JavaMail.jenkins@jenkins.osmocom.org> See ------------------------------------------ [...truncated 112.74 KB...] + project=libosmo-abis + branch=master + git branch -a + grep -c remotes/origin/master$ + [ x1 != x0 ] + branch=origin/master + test -d libosmo-abis + cd libosmo-abis + git fetch --tags origin + git fetch origin + deps= osmo-clean-workspace.sh + chmod -R +w . + git checkout -f HEAD + git clean -dxf + [ -d ] + [ -d layer1-headers ] + git checkout -f origin/master HEAD is now at 43b5b69... configure.ac: Fix condition check for RTP_SIGNAL_PTR_CAST define + git rev-parse HEAD 43b5b69bb890441c7285541b36ef986063eab8cb + cd libosmo-abis + mkdir -p + autoreconf --install --force libtoolize: putting auxiliary files in AC_CONFIG_AUX_DIR, '.'. libtoolize: copying file './ltmain.sh' libtoolize: putting macros in AC_CONFIG_MACRO_DIRS, 'm4'. libtoolize: copying file 'm4/libtool.m4' libtoolize: copying file 'm4/ltoptions.m4' libtoolize: copying file 'm4/ltsugar.m4' libtoolize: copying file 'm4/ltversion.m4' libtoolize: copying file 'm4/lt~obsolete.m4' configure.ac:20: installing './compile' configure.ac:22: installing './config.guess' configure.ac:22: installing './config.sub' configure.ac:8: installing './install-sh' configure.ac:8: installing './missing' src/Makefile.am: installing './depcomp' + ./configure --prefix= checking for a BSD-compatible install... /usr/bin/install -c checking whether build environment is sane... yes checking for a thread-safe mkdir -p... /bin/mkdir -p checking for gawk... gawk checking whether make sets $(MAKE)... yes checking whether make supports nested variables... yes checking whether make supports nested variables... (cached) yes checking whether make sets $(MAKE)... (cached) yes checking for gcc... gcc checking whether the C compiler works... yes checking for C compiler default output file name... a.out checking for suffix of executables... checking whether we are cross compiling... no checking for suffix of object files... o checking whether we are using the GNU C compiler... yes checking whether gcc accepts -g... yes checking for gcc option to accept ISO C89... none needed checking whether gcc understands -c and -o together... yes checking for style of include used by make... GNU checking dependency style of gcc... gcc3 checking build system type... x86_64-pc-linux-gnu checking host system type... x86_64-pc-linux-gnu checking how to print strings... printf checking for a sed that does not truncate output... /bin/sed checking for grep that handles long lines and -e... /bin/grep checking for egrep... /bin/grep -E checking for fgrep... /bin/grep -F checking for ld used by gcc... /usr/bin/ld checking if the linker (/usr/bin/ld) is GNU ld... yes checking for BSD- or MS-compatible name lister (nm)... /usr/bin/nm -B checking the name lister (/usr/bin/nm -B) interface... BSD nm checking whether ln -s works... yes checking the maximum length of command line arguments... 1572864 checking how to convert x86_64-pc-linux-gnu file names to x86_64-pc-linux-gnu format... func_convert_file_noop checking how to convert x86_64-pc-linux-gnu file names to toolchain format... func_convert_file_noop checking for /usr/bin/ld option to reload object files... -r checking for objdump... objdump checking how to recognize dependent libraries... pass_all checking for dlltool... no checking how to associate runtime and link libraries... printf %s\n checking for ar... ar checking for archiver @FILE support... @ checking for strip... strip checking for ranlib... ranlib checking command to parse /usr/bin/nm -B output from gcc object... ok checking for sysroot... no checking for a working dd... /bin/dd checking how to truncate binary pipes... /bin/dd bs=4096 count=1 checking for mt... mt checking if mt is a manifest tool... no checking how to run the C preprocessor... gcc -E checking for ANSI C header files... yes checking for sys/types.h... yes checking for sys/stat.h... yes checking for stdlib.h... yes checking for string.h... yes checking for memory.h... yes checking for strings.h... yes checking for inttypes.h... yes checking for stdint.h... yes checking for unistd.h... yes checking for dlfcn.h... yes checking for objdir... .libs checking if gcc supports -fno-rtti -fno-exceptions... no checking for gcc option to produce PIC... -fPIC -DPIC checking if gcc PIC flag -fPIC -DPIC works... yes checking if gcc static flag -static works... yes checking if gcc supports -c -o file.o... yes checking if gcc supports -c -o file.o... (cached) yes checking whether the gcc linker (/usr/bin/ld -m elf_x86_64) supports shared libraries... yes checking whether -lc should be explicitly linked in... no checking dynamic linker characteristics... GNU/Linux ld.so checking how to hardcode library paths into programs... immediate checking whether stripping libraries is possible... yes checking if libtool supports shared libraries... yes checking whether to build shared libraries... yes checking whether to build static libraries... yes checking for pkg-config... /usr/bin/pkg-config checking for pkg-config... /usr/bin/pkg-config checking pkg-config is at least version 0.20... yes checking if gcc supports -fvisibility=hidden... yes checking for LIBOSMOCORE... yes checking for LIBOSMOVTY... yes checking for LIBOSMOGSM... yes checking for ORTP... yes checking dahdi/user.h usability... no checking dahdi/user.h presence... no checking for dahdi/user.h... no configure: WARNING: DAHDI input driver will not be built CFLAGS="-g -O2 -Wall" CPPFLAGS=" -Wall" checking that generated files are newer than configure... done configure: creating ./config.status config.status: creating libosmoabis.pc config.status: creating libosmotrau.pc config.status: creating include/Makefile config.status: creating src/Makefile config.status: creating tests/Makefile config.status: creating Makefile config.status: creating config.h config.status: executing tests/atconfig commands config.status: executing depfiles commands config.status: executing libtool commands + make -j 8 install echo 0.3.2.105-43b5 > .version-t && mv .version-t .version make install-recursive make[1]: Entering directory ' Making install in include make[2]: Entering directory ' make[3]: Entering directory ' make[3]: Nothing to be done for 'install-exec-am'. /bin/mkdir -p ' /bin/mkdir -p ' /usr/bin/install -c -m 644 osmocom/abis/ipa.h osmocom/abis/trau_frame.h osmocom/abis/ipa_proxy.h osmocom/abis/ipaccess.h osmocom/abis/abis.h osmocom/abis/subchan_demux.h osmocom/abis/e1_input.h osmocom/abis/lapd.h osmocom/abis/lapd_pcap.h osmocom/abis/unixsocket_proto.h ' /bin/mkdir -p ' /usr/bin/install -c -m 644 osmocom/trau/osmo_ortp.h ' make[3]: Leaving directory ' make[2]: Leaving directory ' Making install in src make[2]: Entering directory ' CC e1_input.lo CC init.lo CC e1_input_vty.lo CC ipa_proxy.lo CC trau_frame.lo CC subchan_demux.lo CC input/dahdi.lo CC input/ipa.lo CC input/ipaccess.lo CC input/lapd.lo CC input/lapd_pcap.lo CC input/misdn.lo CC input/rs232.lo CC input/unixsocket.lo CC trau/libosmotrau_la-osmo_ortp.lo trau/osmo_ortp.c:205:9: note: #pragma message: Using internal ortp API: rtp_session_rtcp_rec #pragma message ("Using internal ortp API: rtp_session_rtcp_rec") ^~~~~~~ CCLD libosmoabis.la CCLD libosmotrau.la ar: `u' modifier ignored since `D' is the default (see `U') ar: `u' modifier ignored since `D' is the default (see `U') make[3]: Entering directory ' make[3]: Nothing to be done for 'install-data-am'. /bin/mkdir -p ' /bin/bash ../libtool --mode=install /usr/bin/install -c libosmoabis.la libosmotrau.la ' libtool: install: /usr/bin/install -c .libs/libosmoabis.so.6.0.0 libtool: install: (cd && { ln -s -f libosmoabis.so.6.0.0 libosmoabis.so.6 || { rm -f libosmoabis.so.6 && ln -s libosmoabis.so.6.0.0 libosmoabis.so.6; }; }) libtool: install: (cd && { ln -s -f libosmoabis.so.6.0.0 libosmoabis.so || { rm -f libosmoabis.so && ln -s libosmoabis.so.6.0.0 libosmoabis.so; }; }) libtool: install: /usr/bin/install -c .libs/libosmoabis.lai libtool: install: /usr/bin/install -c .libs/libosmotrau.so.2.0.0 libtool: install: (cd && { ln -s -f libosmotrau.so.2.0.0 libosmotrau.so.2 || { rm -f libosmotrau.so.2 && ln -s libosmotrau.so.2.0.0 libosmotrau.so.2; }; }) libtool: install: (cd && { ln -s -f libosmotrau.so.2.0.0 libosmotrau.so || { rm -f libosmotrau.so && ln -s libosmotrau.so.2.0.0 libosmotrau.so; }; }) libtool: install: /usr/bin/install -c .libs/libosmotrau.lai libtool: install: /usr/bin/install -c .libs/libosmoabis.a libtool: install: chmod 644 libtool: install: ranlib libtool: install: /usr/bin/install -c .libs/libosmotrau.a libtool: install: chmod 644 libtool: install: ranlib libtool: finish: PATH="/usr/local/bin:/usr/bin:/bin:/usr/games:/home/osmocom-build/bin:/sbin" ldconfig -n ---------------------------------------------------------------------- Libraries have been installed in: If you ever happen to want to link against installed libraries in a given directory, LIBDIR, you must either use libtool, and specify the full pathname of the library, or use the '-LLIBDIR' flag during linking and do at least one of the following: - add LIBDIR to the 'LD_LIBRARY_PATH' environment variable during execution - add LIBDIR to the 'LD_RUN_PATH' environment variable during linking - use the '-Wl,-rpath -Wl,LIBDIR' linker flag - have your system administrator add LIBDIR to '/etc/ld.so.conf' See any operating system documentation about shared libraries for more information, such as the ld(1) and ld.so(8) manual pages. ---------------------------------------------------------------------- make[3]: Leaving directory ' make[2]: Leaving directory ' Making install in tests make[2]: Entering directory ' make[3]: Entering directory ' make[3]: Nothing to be done for 'install-exec-am'. make[3]: Nothing to be done for 'install-data-am'. make[3]: Leaving directory ' make[2]: Leaving directory ' make[2]: Entering directory ' make[3]: Entering directory ' make[3]: Nothing to be done for 'install-exec-am'. /bin/mkdir -p ' /usr/bin/install -c -m 644 libosmoabis.pc libosmotrau.pc ' make[3]: Leaving directory ' make[2]: Leaving directory ' make[1]: Leaving directory ' + STOW_DIR= stow --restow libosmo-abis + cd + osmo-layer1-headers.sh lc15 origin/nrw/litecell15-next + uri=https://gitlab.com/nrw_litecell15/litecell15-fw + version=origin/nrw/litecell15 + [ -n origin/nrw/litecell15-next ] + [ origin/nrw/litecell15-next != master ] + version=origin/nrw/litecell15-next + test -d layer1-headers + cd layer1-headers + git fetch origin + git checkout -f origin/nrw/litecell15-next error: pathspec 'origin/nrw/litecell15-next' did not match any file(s) known to git. Build step 'Execute shell' marked build as failure [WARNINGS]Skipping publisher since build result is FAILURE From jenkins at lists.osmocom.org Thu Apr 12 00:49:18 2018 From: jenkins at lists.osmocom.org (jenkins at lists.osmocom.org) Date: Thu, 12 Apr 2018 00:49:18 +0000 (UTC) Subject: =?UTF-8?Q?Jenkins_build_is_back_to_norm?= =?UTF-8?Q?al_:_master-osmo-bts_=C2=BB_lc15,or?= =?UTF-8?Q?igin/nrw/litecell15-next,default,osmocom-master-debian9_#501?= In-Reply-To: <1579656532.262.1523491252310.JavaMail.jenkins@jenkins.osmocom.org> References: <1579656532.262.1523491252310.JavaMail.jenkins@jenkins.osmocom.org> Message-ID: <1653200996.263.1523494158725.JavaMail.jenkins@jenkins.osmocom.org> See From gerrit-no-reply at lists.osmocom.org Thu Apr 12 02:30:29 2018 From: gerrit-no-reply at lists.osmocom.org (Neels Hofmeyr) Date: Thu, 12 Apr 2018 02:30:29 +0000 Subject: [PATCH] osmo-ttcn3-hacks[master]: bsc/regen_makefile.sh: drop multiple naming of BSC_Tests.ttcn Message-ID: Review at https://gerrit.osmocom.org/7771 bsc/regen_makefile.sh: drop multiple naming of BSC_Tests.ttcn Change-Id: I94f37d64198ce2e36c5cd8892ccd33987e1fba32 --- M bsc/regen_makefile.sh 1 file changed, 1 insertion(+), 3 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-ttcn3-hacks refs/changes/71/7771/1 diff --git a/bsc/regen_makefile.sh b/bsc/regen_makefile.sh index 1e52252..dd96183 100755 --- a/bsc/regen_makefile.sh +++ b/bsc/regen_makefile.sh @@ -1,9 +1,7 @@ #!/bin/sh -MAIN=BSC_Tests.ttcn - FILES="*.ttcn *.ttcnpp IPA_CodecPort_CtrlFunctDef.cc IPL4asp_PT.cc IPL4asp_discovery.cc TCCConversion.cc TCCInterface.cc SCTPasp_PT.cc RTP_EncDec.cc SDP_EncDec.cc RTP_CodecPort_CtrlFunctDef.cc MGCP_CodecPort_CtrlFunctDef.cc IuUP_EncDec.cc Native_FunctionDefs.cc TELNETasp_PT.cc *.c" export CPPFLAGS_TTCN3="-DIPA_EMULATION_RSL -DIPA_EMULATION_MGCP -DUSE_MTP3_DISTRIBUTOR" -../regen-makefile.sh $MAIN $FILES +../regen-makefile.sh $FILES -- To view, visit https://gerrit.osmocom.org/7771 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I94f37d64198ce2e36c5cd8892ccd33987e1fba32 Gerrit-PatchSet: 1 Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr From gerrit-no-reply at lists.osmocom.org Thu Apr 12 02:33:50 2018 From: gerrit-no-reply at lists.osmocom.org (Neels Hofmeyr) Date: Thu, 12 Apr 2018 02:33:50 +0000 Subject: [PATCH] osmo-ttcn3-hacks[master]: */regen_makefile.sh: drop multiple naming of main ttcn file In-Reply-To: References: Message-ID: Hello Jenkins Builder, I'd like you to reexamine a change. Please visit https://gerrit.osmocom.org/7771 to look at the new patch set (#2). */regen_makefile.sh: drop multiple naming of main ttcn file In FILES="*.ttcn", the main FOO_Tests.ttcn is already included, no need to name it a second time. Change-Id: I94f37d64198ce2e36c5cd8892ccd33987e1fba32 --- M bsc-nat/regen_makefile.sh M bsc/regen_makefile.sh M bts/regen_makefile.sh M ggsn_tests/regen_makefile.sh M hlr/regen_makefile.sh M lapdm/regen_makefile.sh M mgw/regen_makefile.sh M msc/regen_makefile.sh M pcu/regen_makefile.sh M selftest/regen_makefile.sh M sgsn/regen_makefile.sh M sip/regen_makefile.sh M sysinfo/regen_makefile.sh 13 files changed, 13 insertions(+), 21 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-ttcn3-hacks refs/changes/71/7771/2 diff --git a/bsc-nat/regen_makefile.sh b/bsc-nat/regen_makefile.sh index 5c25366..bf452df 100755 --- a/bsc-nat/regen_makefile.sh +++ b/bsc-nat/regen_makefile.sh @@ -1,9 +1,7 @@ #!/bin/sh -MAIN=IPA_Test.ttcn - FILES="*.ttcn *.ttcnpp SCCP_EncDec.cc IPA_CodecPort_CtrlFunctDef.cc IPL4asp_PT.cc IPL4asp_discovery.cc TCCConversion.cc TCCInterface.cc RTP_EncDec.cc SDP_EncDec.cc *.c MGCP_CodecPort_CtrlFunctDef.cc" export CPPFLAGS_TTCN3="-DIPA_EMULATION_SCCP -DIPA_EMULATION_MGCP -DUSE_MTP3_DISTRIBUTOR" -../regen-makefile.sh $MAIN $FILES +../regen-makefile.sh $FILES diff --git a/bsc/regen_makefile.sh b/bsc/regen_makefile.sh index 1e52252..dd96183 100755 --- a/bsc/regen_makefile.sh +++ b/bsc/regen_makefile.sh @@ -1,9 +1,7 @@ #!/bin/sh -MAIN=BSC_Tests.ttcn - FILES="*.ttcn *.ttcnpp IPA_CodecPort_CtrlFunctDef.cc IPL4asp_PT.cc IPL4asp_discovery.cc TCCConversion.cc TCCInterface.cc SCTPasp_PT.cc RTP_EncDec.cc SDP_EncDec.cc RTP_CodecPort_CtrlFunctDef.cc MGCP_CodecPort_CtrlFunctDef.cc IuUP_EncDec.cc Native_FunctionDefs.cc TELNETasp_PT.cc *.c" export CPPFLAGS_TTCN3="-DIPA_EMULATION_RSL -DIPA_EMULATION_MGCP -DUSE_MTP3_DISTRIBUTOR" -../regen-makefile.sh $MAIN $FILES +../regen-makefile.sh $FILES diff --git a/bts/regen_makefile.sh b/bts/regen_makefile.sh index 9ed5a06..10d1d90 100755 --- a/bts/regen_makefile.sh +++ b/bts/regen_makefile.sh @@ -4,4 +4,4 @@ export CPPFLAGS_TTCN3="-DIPA_EMULATION_RSL" -../regen-makefile.sh BTS_Tests.ttcn $FILES +../regen-makefile.sh $FILES diff --git a/ggsn_tests/regen_makefile.sh b/ggsn_tests/regen_makefile.sh index 6db1a3d..0ae60d9 100755 --- a/ggsn_tests/regen_makefile.sh +++ b/ggsn_tests/regen_makefile.sh @@ -2,4 +2,4 @@ FILES="*.ttcn IPL4asp_PT.cc IPL4asp_discovery.cc TCCConversion.cc TCCInterface.cc GTPC_EncDec.cc GTPU_EncDec.cc GTP_CodecPort_CtrlFunctDef.cc ICMPv6_EncDec.cc IP_EncDec.cc Native_FunctionDefs.cc UDP_EncDec.cc ICMP_EncDec.cc TELNETasp_PT.cc" -../regen-makefile.sh GGSN_Tests.ttcn $FILES +../regen-makefile.sh $FILES diff --git a/hlr/regen_makefile.sh b/hlr/regen_makefile.sh index 56f6671..73b4ec6 100755 --- a/hlr/regen_makefile.sh +++ b/hlr/regen_makefile.sh @@ -1,9 +1,7 @@ #!/bin/sh -MAIN="HLR_Tests.ttcn" - FILES="*.ttcn *.ttcnpp IPA_CodecPort_CtrlFunctDef.cc IPL4asp_PT.cc IPL4asp_discovery.cc TCCConversion.cc TCCInterface.cc TELNETasp_PT.cc" export CPPFLAGS_TTCN3="-DIPA_EMULATION_GSUP -DIPA_EMULATION_CTRL" -../regen-makefile.sh $MAIN $FILES +../regen-makefile.sh $FILES diff --git a/lapdm/regen_makefile.sh b/lapdm/regen_makefile.sh index bb02fe8..99ecb92 100755 --- a/lapdm/regen_makefile.sh +++ b/lapdm/regen_makefile.sh @@ -2,4 +2,4 @@ FILES="*.ttcn UD_PT.cc UD_PT.hh RLCMAC_EncDec.cc L1CTL_PortType_CtrlFunctDef.cc" -../regen-makefile.sh L1CTL_Test.ttcn $FILES +../regen-makefile.sh $FILES diff --git a/mgw/regen_makefile.sh b/mgw/regen_makefile.sh index 2b7d1f4..2aec794 100755 --- a/mgw/regen_makefile.sh +++ b/mgw/regen_makefile.sh @@ -2,4 +2,4 @@ FILES="*.ttcn SDP_EncDec.cc *.c MGCP_CodecPort_CtrlFunctDef.cc IPL4asp_PT.cc IPL4asp_discovery.cc TCCConversion.cc TCCInterface.cc RTP_EncDec.cc RTP_CodecPort_CtrlFunctDef.cc IuUP_EncDec.cc " -../regen-makefile.sh MGCP_Test.ttcn $FILES +../regen-makefile.sh $FILES diff --git a/msc/regen_makefile.sh b/msc/regen_makefile.sh index 29b3f05..8abd3e0 100755 --- a/msc/regen_makefile.sh +++ b/msc/regen_makefile.sh @@ -4,4 +4,4 @@ export CPPFLAGS_TTCN3="-DIPA_EMULATION_MGCP -DIPA_EMULATION_GSUP -DUSE_MTP3_DISTRIBUTOR" -../regen-makefile.sh MSC_Tests.ttcn $FILES +../regen-makefile.sh $FILES diff --git a/pcu/regen_makefile.sh b/pcu/regen_makefile.sh index 7eefd2c..f09e350 100755 --- a/pcu/regen_makefile.sh +++ b/pcu/regen_makefile.sh @@ -2,4 +2,4 @@ FILES="*.ttcn BSSGP_EncDec.cc IPL4asp_PT.cc IPL4asp_discovery.cc TCCConversion.cc TCCInterface.cc NS_CodecPort_CtrlFunctDef.cc UD_PT.cc RLCMAC_EncDec.cc LLC_EncDec.cc L1CTL_PortType_CtrlFunctDef.cc" -../regen-makefile.sh PCU_Tests.ttcn $FILES +../regen-makefile.sh $FILES diff --git a/selftest/regen_makefile.sh b/selftest/regen_makefile.sh index 2503fca..14e6510 100755 --- a/selftest/regen_makefile.sh +++ b/selftest/regen_makefile.sh @@ -1,9 +1,7 @@ #!/bin/sh -MAIN=Selftest.ttcn - FILES="*.ttcn *.ttcnpp IPA_CodecPort_CtrlFunctDef.cc IPL4asp_PT.cc IPL4asp_discovery.cc TCCConversion.cc TCCInterface.cc" export CPPFLAGS_TTCN3="-DIPA_EMULATION_RSL -DUSE_MTP3_DISTRIBUTOR" -../regen-makefile.sh $MAIN $FILES +../regen-makefile.sh $FILES diff --git a/sgsn/regen_makefile.sh b/sgsn/regen_makefile.sh index a85f79c..92a352b 100755 --- a/sgsn/regen_makefile.sh +++ b/sgsn/regen_makefile.sh @@ -4,4 +4,4 @@ export CPPFLAGS_TTCN3="-DIPA_EMULATION_GSUP" -../regen-makefile.sh SGSN_Tests.ttcn $FILES +../regen-makefile.sh $FILES diff --git a/sip/regen_makefile.sh b/sip/regen_makefile.sh index 86f71b8..1599519 100755 --- a/sip/regen_makefile.sh +++ b/sip/regen_makefile.sh @@ -5,4 +5,4 @@ export CPPFLAGS_TTCN3="" -../regen-makefile.sh SIP_Tests.ttcn $FILES +../regen-makefile.sh $FILES diff --git a/sysinfo/regen_makefile.sh b/sysinfo/regen_makefile.sh index 9dd3b7f..6e8cf73 100755 --- a/sysinfo/regen_makefile.sh +++ b/sysinfo/regen_makefile.sh @@ -2,4 +2,4 @@ FILES="*.ttcn IPL4asp_PT.cc IPL4asp_discovery.cc TCCConversion.cc TCCInterface.cc IPL4_GSMTAP_CtrlFunctDef.cc TELNETasp_PT.cc" -../regen-makefile.sh Test.ttcn $FILES +../regen-makefile.sh $FILES -- To view, visit https://gerrit.osmocom.org/7771 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newpatchset Gerrit-Change-Id: I94f37d64198ce2e36c5cd8892ccd33987e1fba32 Gerrit-PatchSet: 2 Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr Gerrit-Reviewer: Jenkins Builder From gerrit-no-reply at lists.osmocom.org Thu Apr 12 02:34:32 2018 From: gerrit-no-reply at lists.osmocom.org (Neels Hofmeyr) Date: Thu, 12 Apr 2018 02:34:32 +0000 Subject: osmo-ttcn3-hacks[master]: */regen_makefile.sh: drop multiple naming of main ttcn file In-Reply-To: References: Message-ID: Patch Set 2: Is there any reason why the main file should be listed first? Couldn't see any adverse effects in running the BSC tests without that. -- To view, visit https://gerrit.osmocom.org/7771 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I94f37d64198ce2e36c5cd8892ccd33987e1fba32 Gerrit-PatchSet: 2 Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Neels Hofmeyr Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Thu Apr 12 07:25:03 2018 From: gerrit-no-reply at lists.osmocom.org (Stefan Sperling) Date: Thu, 12 Apr 2018 07:25:03 +0000 Subject: [PATCH] osmo-bsc[master]: only trigger acc ramping if trx 0 is usable and unlocked Message-ID: Review at https://gerrit.osmocom.org/7772 only trigger acc ramping if trx 0 is usable and unlocked Starting an ACC ramping process while TRX 0 is unusable or locked is pointless. For instance, after loading a config with 'rf_locked 1' for trx 0, the ramping process was started as soon as the BTS established RSL, even though the air interface was still down. ACC ramping should instead be triggered once TRX 0 is unlocked. Change-Id: I054829a936f0aa1e3fa34fad6466a1cd6150e307 Related: OS#2591 --- M src/libbsc/acc_ramp.c 1 file changed, 9 insertions(+), 4 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-bsc refs/changes/72/7772/1 diff --git a/src/libbsc/acc_ramp.c b/src/libbsc/acc_ramp.c index 6d9be59..441be68 100644 --- a/src/libbsc/acc_ramp.c +++ b/src/libbsc/acc_ramp.c @@ -26,6 +26,7 @@ #include #include #include +#include #include /* @@ -249,7 +250,7 @@ /*! * Determine if ACC ramping should be started according to configuration, and - * if ACC ramping is enabled, begin the ramping process. + * begin the ramping process if the necessary conditions are present. * Perform at least one ramping step to allow 'step_size' ACCs. * If 'step_size' is ACC_RAMP_STEP_SIZE_MAX, or if ACC ramping is disabled, * all ACCs will be allowed immediately. @@ -261,9 +262,13 @@ acc_ramp_abort(acc_ramp); if (acc_ramp_is_enabled(acc_ramp)) { - /* Set all available ACCs to barred and start ramping up. */ - barr_all_accs(acc_ramp); - do_acc_ramping_step(acc_ramp); + struct gsm_bts_trx *trx0 = gsm_bts_trx_by_nr(acc_ramp->bts, 0); + /* TRX 0 should be usable and unlocked, otherwise starting ACC ramping is pointless. */ + if (trx0 && trx_is_usable(trx0) && trx0->mo.nm_state.administrative == NM_STATE_UNLOCKED) { + /* Set all available ACCs to barred and start ramping up. */ + barr_all_accs(acc_ramp); + do_acc_ramping_step(acc_ramp); + } } } -- To view, visit https://gerrit.osmocom.org/7772 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I054829a936f0aa1e3fa34fad6466a1cd6150e307 Gerrit-PatchSet: 1 Gerrit-Project: osmo-bsc Gerrit-Branch: master Gerrit-Owner: Stefan Sperling From gerrit-no-reply at lists.osmocom.org Thu Apr 12 07:38:15 2018 From: gerrit-no-reply at lists.osmocom.org (Stefan Sperling) Date: Thu, 12 Apr 2018 07:38:15 +0000 Subject: osmo-bsc[master]: trigger acc ramping on state-changed-event reports In-Reply-To: References: Message-ID: Patch Set 1: > Please also test with osmo-bts A sysmobts reports TRX lock/unlock only via Change Administrative State ACK. Its State Changed Event Reports only contain information about operational and availability states (as we would expect from reading the GSM spec). Unlike the nanobts, a sysmobts does not send a State Changed event Report when trx 0 is locked or unlocked. It looks like these messages do not trigger for administrative state changes. Regardless, ACC ramping still works as expected with a sysmobts. -- To view, visit https://gerrit.osmocom.org/7770 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I097a113a3a63de02bcb8277020beb59cf485b176 Gerrit-PatchSet: 1 Gerrit-Project: osmo-bsc Gerrit-Branch: master Gerrit-Owner: Stefan Sperling Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Stefan Sperling Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Thu Apr 12 07:42:08 2018 From: gerrit-no-reply at lists.osmocom.org (Stefan Sperling) Date: Thu, 12 Apr 2018 07:42:08 +0000 Subject: [PATCH] osmo-bsc[master]: trigger acc ramping on state-changed-event reports In-Reply-To: References: Message-ID: Hello Jenkins Builder, I'd like you to reexamine a change. Please visit https://gerrit.osmocom.org/7770 to look at the new patch set (#2). trigger acc ramping on state-changed-event reports Trigger ACC ramping not only when an Administrative State Change ACK is received from a BTS, but also when an administrative state change is reported for TRX 0 in a State Changed Event Report. This should allow ACC ramping to work with any BTS which reports an administrative state change to 'unlock' using either of these OML messages. Tested with a sysmobts and a nanobts. The sysmobts only reports TRX locked/unlock changes in Administrative State Change ACKs, not via State Changed Event Reports. The nanobts is known to send both of these OML messages in quick succession, so do not re-trigger ramping if it's already in progress. Change-Id: I097a113a3a63de02bcb8277020beb59cf485b176 Related: OS#2591 --- M src/libbsc/acc_ramp.c 1 file changed, 10 insertions(+), 2 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-bsc refs/changes/70/7770/2 diff --git a/src/libbsc/acc_ramp.c b/src/libbsc/acc_ramp.c index 6d9be59..16bce3f 100644 --- a/src/libbsc/acc_ramp.c +++ b/src/libbsc/acc_ramp.c @@ -144,7 +144,8 @@ struct acc_ramp *acc_ramp = handler_data; struct gsm_bts_trx *trx = NULL; - if (signal != S_NM_STATECHG_ADM) + /* Handled signals map to an Administrative State Change ACK, or a State Changed Event Report. */ + if (signal != S_NM_STATECHG_ADM && signal != S_NM_STATECHG_OPER) return 0; if (nsd->obj_class != NM_OC_RADIO_CARRIER) @@ -163,7 +164,14 @@ /* Trigger or abort ACC ramping based on the new 'RF lock' state of this TRX. */ switch (nsd->new_state->administrative) { case NM_STATE_UNLOCKED: - acc_ramp_trigger(acc_ramp); + /* + * Do not re-trigger ACC ramping if ramping is already in progress. + * A BTS might send several "unlock" change events: One in the Administrative + * State Change ACK, and/or another in a State Changed Event Report. + * For instance, the nanobts is known to send both. + */ + if (!osmo_timer_pending(&acc_ramp->step_timer)) + acc_ramp_trigger(acc_ramp); break; case NM_STATE_LOCKED: case NM_STATE_SHUTDOWN: -- To view, visit https://gerrit.osmocom.org/7770 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newpatchset Gerrit-Change-Id: I097a113a3a63de02bcb8277020beb59cf485b176 Gerrit-PatchSet: 2 Gerrit-Project: osmo-bsc Gerrit-Branch: master Gerrit-Owner: Stefan Sperling Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Stefan Sperling From gerrit-no-reply at lists.osmocom.org Thu Apr 12 09:11:42 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Thu, 12 Apr 2018 09:11:42 +0000 Subject: osmo-ttcn3-hacks[master]: */regen_makefile.sh: drop multiple naming of main ttcn file In-Reply-To: References: Message-ID: Patch Set 2: > Is there any reason why the main file should be listed first? > Couldn't see any adverse effects in running the BSC tests without > that. I had the same question while moving stuff to the build/ dir in https://gerrit.osmocom.org/#/c/7405/ If it's not needed, then +1 for me for this patch. -- To view, visit https://gerrit.osmocom.org/7771 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I94f37d64198ce2e36c5cd8892ccd33987e1fba32 Gerrit-PatchSet: 2 Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Neels Hofmeyr Gerrit-Reviewer: Pau Espin Pedrol Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Thu Apr 12 09:12:16 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Thu, 12 Apr 2018 09:12:16 +0000 Subject: osmo-bsc[master]: trigger acc ramping on state-changed-event reports In-Reply-To: References: Message-ID: Patch Set 2: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7770 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I097a113a3a63de02bcb8277020beb59cf485b176 Gerrit-PatchSet: 2 Gerrit-Project: osmo-bsc Gerrit-Branch: master Gerrit-Owner: Stefan Sperling Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Stefan Sperling Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Thu Apr 12 09:12:20 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Thu, 12 Apr 2018 09:12:20 +0000 Subject: [MERGED] osmo-bsc[master]: trigger acc ramping on state-changed-event reports In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: trigger acc ramping on state-changed-event reports ...................................................................... trigger acc ramping on state-changed-event reports Trigger ACC ramping not only when an Administrative State Change ACK is received from a BTS, but also when an administrative state change is reported for TRX 0 in a State Changed Event Report. This should allow ACC ramping to work with any BTS which reports an administrative state change to 'unlock' using either of these OML messages. Tested with a sysmobts and a nanobts. The sysmobts only reports TRX locked/unlock changes in Administrative State Change ACKs, not via State Changed Event Reports. The nanobts is known to send both of these OML messages in quick succession, so do not re-trigger ramping if it's already in progress. Change-Id: I097a113a3a63de02bcb8277020beb59cf485b176 Related: OS#2591 --- M src/libbsc/acc_ramp.c 1 file changed, 10 insertions(+), 2 deletions(-) Approvals: Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/src/libbsc/acc_ramp.c b/src/libbsc/acc_ramp.c index 6d9be59..16bce3f 100644 --- a/src/libbsc/acc_ramp.c +++ b/src/libbsc/acc_ramp.c @@ -144,7 +144,8 @@ struct acc_ramp *acc_ramp = handler_data; struct gsm_bts_trx *trx = NULL; - if (signal != S_NM_STATECHG_ADM) + /* Handled signals map to an Administrative State Change ACK, or a State Changed Event Report. */ + if (signal != S_NM_STATECHG_ADM && signal != S_NM_STATECHG_OPER) return 0; if (nsd->obj_class != NM_OC_RADIO_CARRIER) @@ -163,7 +164,14 @@ /* Trigger or abort ACC ramping based on the new 'RF lock' state of this TRX. */ switch (nsd->new_state->administrative) { case NM_STATE_UNLOCKED: - acc_ramp_trigger(acc_ramp); + /* + * Do not re-trigger ACC ramping if ramping is already in progress. + * A BTS might send several "unlock" change events: One in the Administrative + * State Change ACK, and/or another in a State Changed Event Report. + * For instance, the nanobts is known to send both. + */ + if (!osmo_timer_pending(&acc_ramp->step_timer)) + acc_ramp_trigger(acc_ramp); break; case NM_STATE_LOCKED: case NM_STATE_SHUTDOWN: -- To view, visit https://gerrit.osmocom.org/7770 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: I097a113a3a63de02bcb8277020beb59cf485b176 Gerrit-PatchSet: 2 Gerrit-Project: osmo-bsc Gerrit-Branch: master Gerrit-Owner: Stefan Sperling Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Stefan Sperling From gerrit-no-reply at lists.osmocom.org Thu Apr 12 09:14:50 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Thu, 12 Apr 2018 09:14:50 +0000 Subject: osmo-bsc[master]: only trigger acc ramping if trx 0 is usable and unlocked In-Reply-To: References: Message-ID: Patch Set 1: (1 comment) https://gerrit.osmocom.org/#/c/7772/1/src/libbsc/acc_ramp.c File src/libbsc/acc_ramp.c: Line 267: if (trx0 && trx_is_usable(trx0) && trx0->mo.nm_state.administrative == NM_STATE_UNLOCKED) { I know that we are then enabling ramping when we receive the event to become unlocked (NM_STATE_UNLOCKED). What about the other condition here? Do we also start it when trx_is_usable() goes from return false to returning true? Shouldn't the trx_is_usable() already contain the check for the administrative state? I'm not sure if it makes sense to state it is usable while it is actually locked on the administrate side. -- To view, visit https://gerrit.osmocom.org/7772 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I054829a936f0aa1e3fa34fad6466a1cd6150e307 Gerrit-PatchSet: 1 Gerrit-Project: osmo-bsc Gerrit-Branch: master Gerrit-Owner: Stefan Sperling Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Pau Espin Pedrol Gerrit-HasComments: Yes From gerrit-no-reply at lists.osmocom.org Thu Apr 12 09:15:04 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Thu, 12 Apr 2018 09:15:04 +0000 Subject: osmo-ttcn3-hacks[master]: */regen_makefile.sh: drop multiple naming of main ttcn file In-Reply-To: References: Message-ID: Patch Set 2: Code-Review-1 > Is there any reason why the main file should be listed first? > Couldn't see any adverse effects in running the BSC tests without > that. At least when I started the TTCN-3 developments, there was. This is why I implemented the regen_makefile the way they are. It might not be required with the runtime that we currently use, but there are TITAN configurations that require it. Probably when you're linking one executable and not just building all the .so files. The change from one executable to dozens of .so files was done as I believe the junit xml plugin needs it. As this is purely cosmetic and likely to cause breakage should we ever change this again, I'm against this change. -- To view, visit https://gerrit.osmocom.org/7771 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I94f37d64198ce2e36c5cd8892ccd33987e1fba32 Gerrit-PatchSet: 2 Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Neels Hofmeyr Gerrit-Reviewer: Pau Espin Pedrol Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Thu Apr 12 09:16:13 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Thu, 12 Apr 2018 09:16:13 +0000 Subject: osmo-hlr[master]: rewrite subscriber_update_notify() without calls into luop In-Reply-To: References: Message-ID: Patch Set 1: leaving this to neels. -- To view, visit https://gerrit.osmocom.org/7743 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I06c43ece2b48dc63d599000eb6d6d51e08963067 Gerrit-PatchSet: 1 Gerrit-Project: osmo-hlr Gerrit-Branch: master Gerrit-Owner: Stefan Sperling Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: neels Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Thu Apr 12 09:16:41 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Thu, 12 Apr 2018 09:16:41 +0000 Subject: [MERGED] osmo-gsm-manuals[master]: jenkins.sh: add hostkey for osmocom.org:48 In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: jenkins.sh: add hostkey for osmocom.org:48 ...................................................................... jenkins.sh: add hostkey for osmocom.org:48 Otherwise it will depend on a setting this up in a seperate step. This way it's more decoupled from the build host. Change-Id: Iea1f5810bc7d4370724fdd7eb875c9a27b3d82af --- M contrib/jenkins.sh 1 file changed, 8 insertions(+), 1 deletion(-) Approvals: Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/contrib/jenkins.sh b/contrib/jenkins.sh index 59fcfd7..5cd1c1f 100755 --- a/contrib/jenkins.sh +++ b/contrib/jenkins.sh @@ -22,7 +22,14 @@ if [ "x$publish" = "x--publish" ]; then mkdir out/ cp */*.pdf out/ - rsync -avz --delete -e "ssh -p 48" ./out/ docs at osmocom.org:web-files/latest/ + + cat > "$WORKSPACE/known_hosts" < Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: lynxis lazus From gerrit-no-reply at lists.osmocom.org Thu Apr 12 09:20:24 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Thu, 12 Apr 2018 09:20:24 +0000 Subject: [MERGED] docker-playground[master]: add .gitreview In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: add .gitreview ...................................................................... add .gitreview Allows `git review` to automatic setup gerrit Change-Id: I179c02d38496bf3d408020db7f0baf79ee064705 --- A .gitreview 1 file changed, 3 insertions(+), 0 deletions(-) Approvals: Harald Welte: Looks good to me, approved; Verified diff --git a/.gitreview b/.gitreview new file mode 100644 index 0000000..6a6092f --- /dev/null +++ b/.gitreview @@ -0,0 +1,3 @@ +[gerrit] +host=gerrit.osmocom.org +project=docker-playground -- To view, visit https://gerrit.osmocom.org/7719 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: I179c02d38496bf3d408020db7f0baf79ee064705 Gerrit-PatchSet: 2 Gerrit-Project: docker-playground Gerrit-Branch: master Gerrit-Owner: lynxis lazus Gerrit-Reviewer: Harald Welte From gerrit-no-reply at lists.osmocom.org Thu Apr 12 09:20:38 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Thu, 12 Apr 2018 09:20:38 +0000 Subject: docker-playground[master]: Makefile: use $USER/image when depending on a generated image In-Reply-To: References: Message-ID: Patch Set 2: Verified+1 -- To view, visit https://gerrit.osmocom.org/7720 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Ied42c3e1de9a2ffaca22ba4cd02e6a398e48e97d Gerrit-PatchSet: 2 Gerrit-Project: docker-playground Gerrit-Branch: master Gerrit-Owner: lynxis lazus Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: lynxis lazus Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Thu Apr 12 09:20:41 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Thu, 12 Apr 2018 09:20:41 +0000 Subject: [MERGED] docker-playground[master]: Makefile: use $USER/image when depending on a generated image In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: Makefile: use $USER/image when depending on a generated image ...................................................................... Makefile: use $USER/image when depending on a generated image Te make scripts will generate docker images like "$username/foobar-test". When depending on an previous image, the $username must match or the build will about with image not found. Change-Id: Ied42c3e1de9a2ffaca22ba4cd02e6a398e48e97d --- M m3ua-test/Dockerfile M make/Makefile M sua-test/Dockerfile 3 files changed, 5 insertions(+), 3 deletions(-) Approvals: Harald Welte: Looks good to me, approved; Verified diff --git a/m3ua-test/Dockerfile b/m3ua-test/Dockerfile index edd139a..ba5d17d 100644 --- a/m3ua-test/Dockerfile +++ b/m3ua-test/Dockerfile @@ -1,4 +1,5 @@ -FROM laforge/sigtran-tests +ARG USER=osmocom-build +FROM $USER/sigtran-tests MAINTAINER Harald Welte diff --git a/make/Makefile b/make/Makefile index 21614a8..f492d60 100644 --- a/make/Makefile +++ b/make/Makefile @@ -40,7 +40,7 @@ docker-build: .release - docker build -t $(IMAGE):latest . + docker build --build-arg USER=$(USERNAME) -t $(IMAGE):latest . @DOCKER_MAJOR=$(shell docker -v | sed -e 's/.*version //' -e 's/,.*//' | cut -d\. -f1) ; \ DOCKER_MINOR=$(shell docker -v | sed -e 's/.*version //' -e 's/,.*//' | cut -d\. -f2) ; \ diff --git a/sua-test/Dockerfile b/sua-test/Dockerfile index 141497e..f7f071a 100644 --- a/sua-test/Dockerfile +++ b/sua-test/Dockerfile @@ -1,4 +1,5 @@ -FROM laforge/sigtran-tests +ARG USER=osmocom-build +FROM $USER/sigtran-tests MAINTAINER Harald Welte -- To view, visit https://gerrit.osmocom.org/7720 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: Ied42c3e1de9a2ffaca22ba4cd02e6a398e48e97d Gerrit-PatchSet: 2 Gerrit-Project: docker-playground Gerrit-Branch: master Gerrit-Owner: lynxis lazus Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: lynxis lazus From gerrit-no-reply at lists.osmocom.org Thu Apr 12 09:21:51 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Thu, 12 Apr 2018 09:21:51 +0000 Subject: docker-playground[master]: jenkins-common: move workspace to /tmp/jenkins when build ou... In-Reply-To: References: Message-ID: Patch Set 1: I don't mind, but I'm also not sure this is what users want? Opinions, please -- To view, visit https://gerrit.osmocom.org/7721 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I8a139ef2d23dd8115191e51e86ef0346cb97e4cf Gerrit-PatchSet: 1 Gerrit-Project: docker-playground Gerrit-Branch: master Gerrit-Owner: lynxis lazus Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Pau Espin Pedrol Gerrit-Reviewer: dexter Gerrit-Reviewer: neels Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Thu Apr 12 09:23:20 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Thu, 12 Apr 2018 09:23:20 +0000 Subject: osmo-trx[master]: jenkins.sh: change qemu-img default location to $HOME/qemu-i... In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/6909 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I56f314d78c0ca968b1fef9a91ecd540a7cc8fa86 Gerrit-PatchSet: 1 Gerrit-Project: osmo-trx Gerrit-Branch: master Gerrit-Owner: lynxis lazus Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Pau Espin Pedrol Gerrit-Reviewer: lynxis lazus Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Thu Apr 12 09:23:29 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Thu, 12 Apr 2018 09:23:29 +0000 Subject: [MERGED] osmo-trx[master]: jenkins.sh: change qemu-img default location to $HOME/qemu-i... In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: jenkins.sh: change qemu-img default location to $HOME/qemu-img instead of /opt/qemu-img ...................................................................... jenkins.sh: change qemu-img default location to $HOME/qemu-img instead of /opt/qemu-img Change-Id: I56f314d78c0ca968b1fef9a91ecd540a7cc8fa86 --- M contrib/jenkins.sh 1 file changed, 1 insertion(+), 1 deletion(-) Approvals: Pau Espin Pedrol: Looks good to me, but someone else must approve Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/contrib/jenkins.sh b/contrib/jenkins.sh index 10fc2b1..c4d786d 100755 --- a/contrib/jenkins.sh +++ b/contrib/jenkins.sh @@ -28,7 +28,7 @@ if ! $(substr "arm" "$(uname -m)") && [ "x${INSTR}" = "x--with-neon" -o "x${INSTR}" = "x--with-neon-vfpv4" ]; then OSMOTRX_DIR="$PWD" # we assume we are called as contrib/jenkins.sh - ROOTFS_PREFIX="${ROOTFS_PREFIX:-/opt}" + ROOTFS_PREFIX="${ROOTFS_PREFIX:-$HOME}" ROOTFS="${ROOTFS_PREFIX}/qemu-img" mkdir -p "${ROOTFS_PREFIX}" -- To view, visit https://gerrit.osmocom.org/6909 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: I56f314d78c0ca968b1fef9a91ecd540a7cc8fa86 Gerrit-PatchSet: 2 Gerrit-Project: osmo-trx Gerrit-Branch: master Gerrit-Owner: lynxis lazus Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Pau Espin Pedrol Gerrit-Reviewer: lynxis lazus From gerrit-no-reply at lists.osmocom.org Thu Apr 12 09:25:51 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Thu, 12 Apr 2018 09:25:51 +0000 Subject: osmo-ci[master]: jobs: gerrit-osmo-ttcn3-hacks: Make deps before cleaning In-Reply-To: References: Message-ID: Patch Set 3: ping. Around 2 weeks without review. -- To view, visit https://gerrit.osmocom.org/7406 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I07fee78bba5b07c7f3f4359869e00ef2583e0769 Gerrit-PatchSet: 3 Gerrit-Project: osmo-ci Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Neels Hofmeyr Gerrit-Reviewer: Pau Espin Pedrol Gerrit-Reviewer: Stefan Sperling Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Thu Apr 12 09:26:19 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Thu, 12 Apr 2018 09:26:19 +0000 Subject: osmo-mgw[master]: stats: use libosmocore rate counter for in/out_stream.err_ts... In-Reply-To: References: Message-ID: Patch Set 1: Code-Review-1 (2 comments) https://gerrit.osmocom.org/#/c/7555/1/include/osmocom/mgcp/mgcp_internal.h File include/osmocom/mgcp/mgcp_internal.h: Line 207: struct rate_ctr_group_desc rate_ctr_group_desc; the rate_ctr_group_desc and rate_ctr_desc should be global data (if not even const?). Wat is the rationale of copying it into each and every mgcp_state? Only the "rate_ctr_group *" should be here, AFAICT. https://gerrit.osmocom.org/#/c/7555/1/src/libosmo-mgcp/mgcp_conn.c File src/libosmo-mgcp/mgcp_conn.c: Line 119: talloc_strdup(conn, "conn_rtp"); all of those strings should be static/const strings, no copying or dynamic allocations involved. Did you check existing examples about how we use rate_ctr in the osmocom code? If there are any examples like thism, please let me know, as we need to fix it. -- To view, visit https://gerrit.osmocom.org/7555 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I67aa7a8602f60366ef3ba2c5b1319b1b85719f64 Gerrit-PatchSet: 1 Gerrit-Project: osmo-mgw Gerrit-Branch: master Gerrit-Owner: dexter Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-HasComments: Yes From gerrit-no-reply at lists.osmocom.org Thu Apr 12 09:27:45 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Thu, 12 Apr 2018 09:27:45 +0000 Subject: [MERGED] osmo-msc[master]: libmsc/ussd: don't overwrite rc if decoding failed In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: libmsc/ussd: don't overwrite rc if decoding failed ...................................................................... libmsc/ussd: don't overwrite rc if decoding failed Change-Id: I344e4b3a9aad617686a7ddbdeae5780fd8b07e58 --- M src/libmsc/ussd.c 1 file changed, 3 insertions(+), 2 deletions(-) Approvals: Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/src/libmsc/ussd.c b/src/libmsc/ussd.c index ab59571..fe1610f 100644 --- a/src/libmsc/ussd.c +++ b/src/libmsc/ussd.c @@ -74,8 +74,9 @@ if (!rc) { LOGP(DMM, LOGL_ERROR, "SS/USSD message parsing error, " "rejecting request...\n"); - rc = gsm0480_send_ussd_reject(conn, &req); - return rc; + gsm0480_send_ussd_reject(conn, &req); + /* The GSM 04.80 API uses inverted codes (0 means error) */ + return -EPROTO; } /* Interrogation or releaseComplete? */ -- To view, visit https://gerrit.osmocom.org/7676 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: I344e4b3a9aad617686a7ddbdeae5780fd8b07e58 Gerrit-PatchSet: 5 Gerrit-Project: osmo-msc Gerrit-Branch: master Gerrit-Owner: Vadim Yanitskiy Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder From gerrit-no-reply at lists.osmocom.org Thu Apr 12 09:54:58 2018 From: gerrit-no-reply at lists.osmocom.org (Stefan Sperling) Date: Thu, 12 Apr 2018 09:54:58 +0000 Subject: osmo-bsc[master]: only trigger acc ramping if trx 0 is usable and unlocked In-Reply-To: References: Message-ID: Patch Set 1: (1 comment) https://gerrit.osmocom.org/#/c/7772/1/src/libbsc/acc_ramp.c File src/libbsc/acc_ramp.c: Line 267: if (trx0 && trx_is_usable(trx0) && trx0->mo.nm_state.administrative == NM_STATE_UNLOCKED) { > I know that we are then enabling ramping when we receive the event to becom At present trx_is_usable() ignores the administrative state entirely, because the nm_is_running() function does not look at it. So currently we need both checks here. Maybe this should be changed, but changing a widely used function like trx_is_usable() is out of scope for this patch set. -- To view, visit https://gerrit.osmocom.org/7772 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I054829a936f0aa1e3fa34fad6466a1cd6150e307 Gerrit-PatchSet: 1 Gerrit-Project: osmo-bsc Gerrit-Branch: master Gerrit-Owner: Stefan Sperling Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Pau Espin Pedrol Gerrit-Reviewer: Stefan Sperling Gerrit-HasComments: Yes From gerrit-no-reply at lists.osmocom.org Thu Apr 12 10:34:49 2018 From: gerrit-no-reply at lists.osmocom.org (dexter) Date: Thu, 12 Apr 2018 10:34:49 +0000 Subject: [ABANDON] osmo-pcu[master]: tbf: hex output of tbf data in log In-Reply-To: References: Message-ID: dexter has abandoned this change. Change subject: tbf: hex output of tbf data in log ...................................................................... Abandoned Its probably not a good idea to clog up the log with hexdumps. -- To view, visit https://gerrit.osmocom.org/7731 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: abandon Gerrit-Change-Id: I6c5adda8aaead00b1ba4359c34866e6842ea161f Gerrit-PatchSet: 1 Gerrit-Project: osmo-pcu Gerrit-Branch: master Gerrit-Owner: dexter Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder From gerrit-no-reply at lists.osmocom.org Thu Apr 12 10:47:54 2018 From: gerrit-no-reply at lists.osmocom.org (dexter) Date: Thu, 12 Apr 2018 10:47:54 +0000 Subject: [PATCH] osmo-pcu[master]: tbf: add frame number to log output In-Reply-To: References: Message-ID: Hello Harald Welte, Jenkins Builder, I'd like you to reexamine a change. Please visit https://gerrit.osmocom.org/7730 to look at the new patch set (#2). tbf: add frame number to log output Currently, the TBF timer log messages lack the frame number in the logoutput - Add frame number to TBF timer related log-statements Change-Id: I5a744dc5cd7c1de1baea13fffac026c83d091429 Related: SYS#4139 Patch-by: Octasic inc. --- M src/tbf.cpp M tests/tbf/TbfTest.err 2 files changed, 293 insertions(+), 289 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-pcu refs/changes/30/7730/2 diff --git a/src/tbf.cpp b/src/tbf.cpp index 7036ea1..d5fbb3f 100644 --- a/src/tbf.cpp +++ b/src/tbf.cpp @@ -661,18 +661,20 @@ void gprs_rlcmac_tbf::t_start(enum tbf_timers t, uint32_t sec, uint32_t microsec, const char *reason, bool force, const char *file, unsigned line) { + int current_fn = get_current_fn(); + if (t >= T_MAX) { - LOGPSRC(DTBF, LOGL_ERROR, file, line, "%s attempting to start unknown timer %s [%s]\n", - tbf_name(this), get_value_string(tbf_timers_names, t), reason); + LOGPSRC(DTBF, LOGL_ERROR, file, line, "%s attempting to start unknown timer %s [%s], cur_fn=%d\n", + tbf_name(this), get_value_string(tbf_timers_names, t), reason, current_fn); return; } if (!force && osmo_timer_pending(&T[t])) return; - LOGPSRC(DTBF, LOGL_DEBUG, file, line, "%s %sstarting timer %s [%s] with %u sec. %u microsec.\n", + LOGPSRC(DTBF, LOGL_DEBUG, file, line, "%s %sstarting timer %s [%s] with %u sec. %u microsec, cur_fn=%d\n", tbf_name(this), osmo_timer_pending(&T[t]) ? "re" : "", - get_value_string(tbf_timers_names, t), reason, sec, microsec); + get_value_string(tbf_timers_names, t), reason, sec, microsec, current_fn); T[t].data = this; @@ -693,8 +695,8 @@ T[t].cb = cb_T3195; break; default: - LOGPSRC(DTBF, LOGL_ERROR, file, line, "%s attempting to set callback for unknown timer %s [%s]\n", - tbf_name(this), get_value_string(tbf_timers_names, t), reason); + LOGPSRC(DTBF, LOGL_ERROR, file, line, "%s attempting to set callback for unknown timer %s [%s], cur_fn=%d\n", + tbf_name(this), get_value_string(tbf_timers_names, t), reason, current_fn); } osmo_timer_schedule(&T[t], sec, microsec); @@ -1126,7 +1128,9 @@ void gprs_rlcmac_tbf::handle_timeout() { - LOGPTBF(this, LOGL_DEBUG, "timer 0 expired.\n"); + int current_fn = get_current_fn(); + + LOGPTBF(this, LOGL_DEBUG, "timer 0 expired. cur_fn=%d\n", current_fn); /* assignment */ if ((state_flags & (1 << GPRS_RLCMAC_FLAG_PACCH))) { diff --git a/tests/tbf/TbfTest.err b/tests/tbf/TbfTest.err index c899199..42b3b1c 100644 --- a/tests/tbf/TbfTest.err +++ b/tests/tbf/TbfTest.err @@ -87,7 +87,7 @@ TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW) downlink acknowledge TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW) Final ACK received. TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW) changes state from FLOW to WAIT RELEASE -TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT RELEASE) starting timer T3193 [release (DL-TBF)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT RELEASE) starting timer T3193 [release (DL-TBF)] with 0 sec. 0 microsec, cur_fn=0 ********** DL-TBF starts here ********** Allocating DL TBF: MS_CLASS=45/0 Slot Allocation (Algorithm A) for class 45 @@ -108,7 +108,7 @@ TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT RELEASE) changes DL ASS state from GPRS_RLCMAC_DL_ASS_WAIT_ACK to GPRS_RLCMAC_DL_ASS_SEND_ASS TBF(TFI=1 TLLI=0xffeeddcc DIR=DL STATE=NULL) changes state from NULL to ASSIGN TBF(TFI=1 TLLI=0xffeeddcc DIR=DL STATE=ASSIGN) set ass. type PACCH [prev CCCH:0, PACCH:0] -TBF(TFI=1 TLLI=0xffeeddcc DIR=DL STATE=ASSIGN) starting timer T0 [assignment (PACCH)] with 2 sec. 0 microsec. +TBF(TFI=1 TLLI=0xffeeddcc DIR=DL STATE=ASSIGN) starting timer T0 [assignment (PACCH)] with 2 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT RELEASE) changes DL ASS state from GPRS_RLCMAC_DL_ASS_SEND_ASS to GPRS_RLCMAC_DL_ASS_NONE TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT RELEASE) changes state from WAIT RELEASE to RELEASING TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=RELEASING) free @@ -175,7 +175,7 @@ TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW) downlink acknowledge TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW) Final ACK received. TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW) changes state from FLOW to WAIT RELEASE -TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT RELEASE) starting timer T3193 [release (DL-TBF)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT RELEASE) starting timer T3193 [release (DL-TBF)] with 0 sec. 0 microsec, cur_fn=0 ********** DL-TBF starts here ********** Allocating DL TBF: MS_CLASS=45/0 Slot Allocation (Algorithm A) for class 45 @@ -196,7 +196,7 @@ TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT RELEASE) changes DL ASS state from GPRS_RLCMAC_DL_ASS_WAIT_ACK to GPRS_RLCMAC_DL_ASS_SEND_ASS TBF(TFI=1 TLLI=0xffeeddcc DIR=DL STATE=NULL) changes state from NULL to ASSIGN TBF(TFI=1 TLLI=0xffeeddcc DIR=DL STATE=ASSIGN) set ass. type PACCH [prev CCCH:0, PACCH:0] -TBF(TFI=1 TLLI=0xffeeddcc DIR=DL STATE=ASSIGN) starting timer T0 [assignment (PACCH)] with 2 sec. 0 microsec. +TBF(TFI=1 TLLI=0xffeeddcc DIR=DL STATE=ASSIGN) starting timer T0 [assignment (PACCH)] with 2 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT RELEASE) changes DL ASS state from GPRS_RLCMAC_DL_ASS_SEND_ASS to GPRS_RLCMAC_DL_ASS_NONE TBF(TFI=1 TLLI=0xffeeddcc DIR=DL STATE=ASSIGN) changes state from ASSIGN to RELEASING TBF(TFI=1 TLLI=0xffeeddcc DIR=DL STATE=RELEASING) free @@ -455,7 +455,7 @@ TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FINISHED) downlink acknowledge TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FINISHED) Final ACK received. TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FINISHED) changes state from FINISHED to WAIT RELEASE -TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT RELEASE) starting timer T3193 [release (DL-TBF)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT RELEASE) starting timer T3193 [release (DL-TBF)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT RELEASE) changes DL ASS state from GPRS_RLCMAC_DL_ASS_WAIT_ACK to GPRS_RLCMAC_DL_ASS_NONE TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT RELEASE) changes state from WAIT RELEASE to RELEASING TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=RELEASING) free @@ -1446,14 +1446,14 @@ Modifying MS object, TLLI = 0x00000000, TA 220 -> 7 TBF(TFI=0 TLLI=0x00000000 DIR=UL STATE=NULL) changes state from NULL to FLOW TBF(TFI=0 TLLI=0x00000000 DIR=UL STATE=FLOW) set ass. type CCCH [prev CCCH:0, PACCH:0] -TBF(TFI=0 TLLI=0x00000000 DIR=UL STATE=FLOW) starting timer T3169 [RACH (new UL-TBF)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0x00000000 DIR=UL STATE=FLOW) starting timer T3169 [RACH (new UL-TBF)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0x00000000 DIR=UL STATE=FLOW) [UPLINK] START TBF(TFI=0 TLLI=0x00000000 DIR=UL STATE=FLOW) RX: [PCU <- BTS] RACH qbit-ta=31 ra=0x03, Fn=2654167 (17,25,9) TBF(TFI=0 TLLI=0x00000000 DIR=UL STATE=FLOW) TX: START Immediate Assignment Uplink (AGCH) - TRX=0 (0) TS=7 TA=7 TSC=0 TFI=0 USF=0 Got CS-1 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=184 TBF(TFI=0 TLLI=0x00000000 DIR=UL STATE=FLOW) UL DATA TFI=0 received (V(Q)=0 .. V(R)=0) -TBF(TFI=0 TLLI=0x00000000 DIR=UL STATE=FLOW) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0x00000000 DIR=UL STATE=FLOW) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0x00000000 DIR=UL STATE=FLOW) Got CS-1 RLC data block: CV=0, BSN=0, SPB=0, PI=0, E=1, TI=1, bitoffs=24 TBF(TFI=0 TLLI=0x00000000 DIR=UL STATE=FLOW) BSN 0 storing in window (0..63) TBF(TFI=0 TLLI=0x00000000 DIR=UL STATE=FLOW) data_length=20, data=f1 22 33 44 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 @@ -1523,7 +1523,7 @@ Attaching TBF to MS object, TLLI = 0x00000000, TBF = TBF(TFI=0 TLLI=0x00000000 DIR=UL STATE=NULL) TBF(TFI=0 TLLI=0x00000000 DIR=UL STATE=NULL) Allocated: trx = 0, ul_slots = 80, dl_slots = 00 TBF(TFI=0 TLLI=0x00000000 DIR=UL STATE=NULL) changes state from NULL to ASSIGN -TBF(TFI=0 TLLI=0x00000000 DIR=UL STATE=ASSIGN) starting timer T3169 [allocation (UL-TBF)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0x00000000 DIR=UL STATE=ASSIGN) starting timer T3169 [allocation (UL-TBF)] with 0 sec. 0 microsec, cur_fn=0 Modifying MS object, UL TLLI: 0x00000000 -> 0xf1223344, not yet confirmed Modifying MS object, TLLI = 0xf1223344, TA 220 -> 7 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=ASSIGN) change control TS 7 -> 7 until assinment is complete. @@ -1542,7 +1542,7 @@ TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=ASSIGN) changes state from ASSIGN to FLOW Got CS-1 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=184 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW) UL DATA TFI=0 received (V(Q)=0 .. V(R)=0) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW) Got CS-1 RLC data block: CV=15, BSN=0, SPB=0, PI=0, E=1, TI=0, bitoffs=24 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW) BSN 0 storing in window (0..63) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW) data_length=20, data=00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 @@ -1573,7 +1573,7 @@ TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW) changes DL ASS state from GPRS_RLCMAC_DL_ASS_NONE to GPRS_RLCMAC_DL_ASS_SEND_ASS TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=NULL) changes state from NULL to ASSIGN TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=ASSIGN) set ass. type PACCH [prev CCCH:0, PACCH:0] -TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=ASSIGN) starting timer T0 [assignment (PACCH)] with 2 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=ASSIGN) starting timer T0 [assignment (PACCH)] with 2 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=ASSIGN) appending 4 bytes MS requests UL TBF on RACH, so we provide one: ra=0x73 Fn=2654167 qta=31 is_11bit=0: MS requests single block allocation @@ -1603,7 +1603,7 @@ Attaching TBF to MS object, TLLI = 0x00000000, TBF = TBF(TFI=0 TLLI=0x00000000 DIR=UL STATE=NULL) TBF(TFI=0 TLLI=0x00000000 DIR=UL STATE=NULL) Allocated: trx = 0, ul_slots = 80, dl_slots = 00 TBF(TFI=0 TLLI=0x00000000 DIR=UL STATE=NULL) changes state from NULL to ASSIGN -TBF(TFI=0 TLLI=0x00000000 DIR=UL STATE=ASSIGN) starting timer T3169 [allocation (UL-TBF)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0x00000000 DIR=UL STATE=ASSIGN) starting timer T3169 [allocation (UL-TBF)] with 0 sec. 0 microsec, cur_fn=0 Modifying MS object, UL TLLI: 0x00000000 -> 0xf1223344, not yet confirmed Modifying MS object, TLLI = 0xf1223344, TA 220 -> 7 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=ASSIGN) change control TS 7 -> 7 until assinment is complete. @@ -1622,7 +1622,7 @@ TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=ASSIGN) changes state from ASSIGN to FLOW Got CS-1 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=184 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW) UL DATA TFI=0 received (V(Q)=0 .. V(R)=0) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW) Got CS-1 RLC data block: CV=15, BSN=0, SPB=0, PI=0, E=1, TI=0, bitoffs=24 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW) BSN 0 storing in window (0..63) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW) data_length=20, data=00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 @@ -1652,7 +1652,7 @@ TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW) changes DL ASS state from GPRS_RLCMAC_DL_ASS_NONE to GPRS_RLCMAC_DL_ASS_SEND_ASS TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=NULL) changes state from NULL to ASSIGN TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=ASSIGN) set ass. type PACCH [prev CCCH:0, PACCH:0] -TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=ASSIGN) starting timer T0 [assignment (PACCH)] with 2 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=ASSIGN) starting timer T0 [assignment (PACCH)] with 2 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=ASSIGN) appending 10 bytes Old MS: TLLI = 0xf1223344, TA = 7, IMSI = 0011223344, LLC = 1 Received RTS for PDCH: TRX=0 TS=7 FN=2654275 block_nr=9 scheduling USF=0 for required uplink resource of UL TFI=0 @@ -1689,7 +1689,7 @@ TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=FINISHED) Copying data unit 0 (BSN 0) TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=FINISHED) Scheduling Ack/Nack polling, because is was requested explicitly (e.g. first final block sent). TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=FINISHED) Scheduled DL Acknowledgement polling on PACCH (FN=2654292, TS=7) -TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=FINISHED) starting timer T3191 [final block (DL-TBF)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=FINISHED) starting timer T3191 [final block (DL-TBF)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=FINISHED) Scheduled Ack/Nack polling on FN=2654292, TS=7 TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=FINISHED) msg block (BSN 0, CS-4): 0f 01 00 29 52 41 55 5f 41 43 43 45 50 54 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 00 Received RTS for PDCH: TRX=0 TS=7 FN=2654283 block_nr=11 scheduling USF=0 for required uplink resource of UL TFI=0 @@ -1733,7 +1733,7 @@ Attaching TBF to MS object, TLLI = 0x00000000, TBF = TBF(TFI=1 TLLI=0x00000000 DIR=UL STATE=NULL) TBF(TFI=1 TLLI=0x00000000 DIR=UL STATE=NULL) Allocated: trx = 0, ul_slots = 80, dl_slots = 00 TBF(TFI=1 TLLI=0x00000000 DIR=UL STATE=NULL) changes state from NULL to ASSIGN -TBF(TFI=1 TLLI=0x00000000 DIR=UL STATE=ASSIGN) starting timer T3169 [allocation (UL-TBF)] with 0 sec. 0 microsec. +TBF(TFI=1 TLLI=0x00000000 DIR=UL STATE=ASSIGN) starting timer T3169 [allocation (UL-TBF)] with 0 sec. 0 microsec, cur_fn=0 Modifying MS object, UL TLLI: 0x00000000 -> 0xf5667788, not yet confirmed Modifying MS object, TLLI = 0xf5667788, TA 220 -> 7 TBF(TFI=1 TLLI=0xf5667788 DIR=UL STATE=ASSIGN) change control TS 7 -> 7 until assinment is complete. @@ -1753,7 +1753,7 @@ TBF(TFI=1 TLLI=0xf5667788 DIR=UL STATE=ASSIGN) changes state from ASSIGN to FLOW Got CS-1 RLC block: R=0, SI=0, TFI=1, CPS=0, RSB=0, rc=184 TBF(TFI=1 TLLI=0xf5667788 DIR=UL STATE=FLOW) UL DATA TFI=1 received (V(Q)=0 .. V(R)=0) -TBF(TFI=1 TLLI=0xf5667788 DIR=UL STATE=FLOW) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=1 TLLI=0xf5667788 DIR=UL STATE=FLOW) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=1 TLLI=0xf5667788 DIR=UL STATE=FLOW) Got CS-1 RLC data block: CV=15, BSN=0, SPB=0, PI=0, E=1, TI=0, bitoffs=24 TBF(TFI=1 TLLI=0xf5667788 DIR=UL STATE=FLOW) BSN 0 storing in window (0..63) TBF(TFI=1 TLLI=0xf5667788 DIR=UL STATE=FLOW) data_length=20, data=00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 @@ -1798,7 +1798,7 @@ Attaching TBF to MS object, TLLI = 0x00000000, TBF = TBF(TFI=0 TLLI=0x00000000 DIR=UL STATE=NULL) TBF(TFI=0 TLLI=0x00000000 DIR=UL STATE=NULL) Allocated: trx = 0, ul_slots = 80, dl_slots = 00 TBF(TFI=0 TLLI=0x00000000 DIR=UL STATE=NULL) changes state from NULL to ASSIGN -TBF(TFI=0 TLLI=0x00000000 DIR=UL STATE=ASSIGN) starting timer T3169 [allocation (UL-TBF)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0x00000000 DIR=UL STATE=ASSIGN) starting timer T3169 [allocation (UL-TBF)] with 0 sec. 0 microsec, cur_fn=0 Modifying MS object, UL TLLI: 0x00000000 -> 0xf1223344, not yet confirmed Modifying MS object, TLLI = 0xf1223344, TA 220 -> 7 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=ASSIGN) change control TS 7 -> 7 until assinment is complete. @@ -1817,7 +1817,7 @@ TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=ASSIGN) changes state from ASSIGN to FLOW Got CS-1 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=184 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW) UL DATA TFI=0 received (V(Q)=0 .. V(R)=0) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW) Got CS-1 RLC data block: CV=15, BSN=0, SPB=0, PI=0, E=1, TI=0, bitoffs=24 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW) BSN 0 storing in window (0..63) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW) data_length=20, data=00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 @@ -1847,7 +1847,7 @@ TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW) changes DL ASS state from GPRS_RLCMAC_DL_ASS_NONE to GPRS_RLCMAC_DL_ASS_SEND_ASS TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=NULL) changes state from NULL to ASSIGN TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=ASSIGN) set ass. type PACCH [prev CCCH:0, PACCH:0] -TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=ASSIGN) starting timer T0 [assignment (PACCH)] with 2 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=ASSIGN) starting timer T0 [assignment (PACCH)] with 2 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=ASSIGN) appending 20 bytes TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=ASSIGN) appending 20 bytes Old MS: TLLI = 0xf1223344, TA = 7, IMSI = 0011223344, LLC = 2 @@ -1891,7 +1891,7 @@ Attaching TBF to MS object, TLLI = 0xf1223344, TBF = TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=NULL) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=NULL) Allocated: trx = 0, ul_slots = 80, dl_slots = 00 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=NULL) changes state from NULL to ASSIGN -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=ASSIGN) starting timer T3169 [allocation (UL-TBF)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=ASSIGN) starting timer T3169 [allocation (UL-TBF)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=ASSIGN) change control TS 7 -> 7 until assinment is complete. TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=ASSIGN) changes UL ASS state from GPRS_RLCMAC_UL_ASS_NONE to GPRS_RLCMAC_UL_ASS_SEND_ASS TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=ASSIGN) start Packet Uplink Assignment (PACCH) @@ -1926,10 +1926,10 @@ TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW) changes DL ASS state from GPRS_RLCMAC_DL_ASS_NONE to GPRS_RLCMAC_DL_ASS_SEND_ASS TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=NULL) changes state from NULL to ASSIGN TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=ASSIGN) set ass. type PACCH [prev CCCH:0, PACCH:0] -TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=ASSIGN) starting timer T0 [assignment (PACCH)] with 2 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=ASSIGN) starting timer T0 [assignment (PACCH)] with 2 sec. 0 microsec, cur_fn=0 Got CS-1 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=184 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW) UL DATA TFI=0 received (V(Q)=0 .. V(R)=0) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW) Got CS-1 RLC data block: CV=15, BSN=0, SPB=0, PI=0, E=1, TI=0, bitoffs=24 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW) BSN 0 storing in window (0..63) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW) data_length=20, data=00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 @@ -1965,7 +1965,7 @@ Attaching TBF to MS object, TLLI = 0x00000000, TBF = TBF(TFI=0 TLLI=0x00000000 DIR=UL STATE=NULL) TBF(TFI=0 TLLI=0x00000000 DIR=UL STATE=NULL) Allocated: trx = 0, ul_slots = 80, dl_slots = 00 TBF(TFI=0 TLLI=0x00000000 DIR=UL STATE=NULL) changes state from NULL to ASSIGN -TBF(TFI=0 TLLI=0x00000000 DIR=UL STATE=ASSIGN) starting timer T3169 [allocation (UL-TBF)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0x00000000 DIR=UL STATE=ASSIGN) starting timer T3169 [allocation (UL-TBF)] with 0 sec. 0 microsec, cur_fn=0 Modifying MS object, UL TLLI: 0x00000000 -> 0xf1223344, not yet confirmed Modifying MS object, TLLI = 0xf1223344, TA 220 -> 7 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=ASSIGN) change control TS 7 -> 7 until assinment is complete. @@ -1984,7 +1984,7 @@ TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=ASSIGN) changes state from ASSIGN to FLOW Got CS-1 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=184 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW) UL DATA TFI=0 received (V(Q)=0 .. V(R)=0) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW) Got CS-1 RLC data block: CV=15, BSN=0, SPB=0, PI=0, E=1, TI=0, bitoffs=24 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW) BSN 0 storing in window (0..63) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW) data_length=20, data=00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 @@ -2014,7 +2014,7 @@ TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW) changes DL ASS state from GPRS_RLCMAC_DL_ASS_NONE to GPRS_RLCMAC_DL_ASS_SEND_ASS TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=NULL) changes state from NULL to ASSIGN TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=ASSIGN) set ass. type PACCH [prev CCCH:0, PACCH:0] -TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=ASSIGN) starting timer T0 [assignment (PACCH)] with 2 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=ASSIGN) starting timer T0 [assignment (PACCH)] with 2 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=ASSIGN) appending 20 bytes TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=ASSIGN) appending 20 bytes Old MS: TLLI = 0xf1223344, TA = 7, IMSI = 0011223344, LLC = 2 @@ -2047,14 +2047,14 @@ Modifying MS object, TLLI = 0x00000000, TA 220 -> 7 TBF(TFI=0 TLLI=0x00000000 DIR=UL STATE=NULL) changes state from NULL to FLOW TBF(TFI=0 TLLI=0x00000000 DIR=UL STATE=FLOW) set ass. type CCCH [prev CCCH:0, PACCH:0] -TBF(TFI=0 TLLI=0x00000000 DIR=UL STATE=FLOW) starting timer T3169 [RACH (new UL-TBF)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0x00000000 DIR=UL STATE=FLOW) starting timer T3169 [RACH (new UL-TBF)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0x00000000 DIR=UL STATE=FLOW) [UPLINK] START TBF(TFI=0 TLLI=0x00000000 DIR=UL STATE=FLOW) RX: [PCU <- BTS] RACH qbit-ta=31 ra=0x03, Fn=2654275 (17,31,13) TBF(TFI=0 TLLI=0x00000000 DIR=UL STATE=FLOW) TX: START Immediate Assignment Uplink (AGCH) - TRX=0 (0) TS=7 TA=7 TSC=0 TFI=0 USF=0 Got CS-1 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=184 TBF(TFI=0 TLLI=0x00000000 DIR=UL STATE=FLOW) UL DATA TFI=0 received (V(Q)=0 .. V(R)=0) -TBF(TFI=0 TLLI=0x00000000 DIR=UL STATE=FLOW) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0x00000000 DIR=UL STATE=FLOW) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0x00000000 DIR=UL STATE=FLOW) Got CS-1 RLC data block: CV=0, BSN=0, SPB=0, PI=0, E=1, TI=1, bitoffs=24 TBF(TFI=0 TLLI=0x00000000 DIR=UL STATE=FLOW) BSN 0 storing in window (0..63) TBF(TFI=0 TLLI=0x00000000 DIR=UL STATE=FLOW) data_length=20, data=f1 22 33 44 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 @@ -2111,7 +2111,7 @@ Attaching TBF to MS object, TLLI = 0x00000000, TBF = TBF(TFI=0 TLLI=0x00000000 DIR=UL STATE=NULL) TBF(TFI=0 TLLI=0x00000000 DIR=UL STATE=NULL) Allocated: trx = 0, ul_slots = 80, dl_slots = 00 TBF(TFI=0 TLLI=0x00000000 DIR=UL STATE=NULL) changes state from NULL to ASSIGN -TBF(TFI=0 TLLI=0x00000000 DIR=UL STATE=ASSIGN) starting timer T3169 [allocation (UL-TBF)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0x00000000 DIR=UL STATE=ASSIGN) starting timer T3169 [allocation (UL-TBF)] with 0 sec. 0 microsec, cur_fn=0 Modifying MS object, UL TLLI: 0x00000000 -> 0xf1223344, not yet confirmed Modifying MS object, TLLI = 0xf1223344, TA 220 -> 7 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=ASSIGN) change control TS 7 -> 7 until assinment is complete. @@ -2130,7 +2130,7 @@ TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=ASSIGN) changes state from ASSIGN to FLOW Got CS-1 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=184 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW) UL DATA TFI=0 received (V(Q)=0 .. V(R)=0) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW) Got CS-1 RLC data block: CV=15, BSN=0, SPB=0, PI=0, E=1, TI=0, bitoffs=24 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW) BSN 0 storing in window (0..63) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW) data_length=20, data=00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 @@ -2160,7 +2160,7 @@ TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW) changes DL ASS state from GPRS_RLCMAC_DL_ASS_NONE to GPRS_RLCMAC_DL_ASS_SEND_ASS TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=NULL) changes state from NULL to ASSIGN TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=ASSIGN) set ass. type PACCH [prev CCCH:0, PACCH:0] -TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=ASSIGN) starting timer T0 [assignment (PACCH)] with 2 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=ASSIGN) starting timer T0 [assignment (PACCH)] with 2 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=ASSIGN) appending 13 bytes TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=ASSIGN) appending 13 bytes TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=ASSIGN) appending 13 bytes @@ -2771,7 +2771,7 @@ TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=FINISHED) V(B): (V(A)=28)""(V(S)-1=27) A=Acked N=Nacked U=Unacked X=Resend-Unacked I=Invalid TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=FINISHED) Final ACK received. TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=FINISHED) changes state from FINISHED to WAIT RELEASE -TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=WAIT RELEASE) starting timer T3193 [release (DL-TBF)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=WAIT RELEASE) starting timer T3193 [release (DL-TBF)] with 0 sec. 0 microsec, cur_fn=0 ********** DL-TBF starts here ********** Allocating DL TBF: MS_CLASS=1/0 Slot Allocation (Algorithm A) for class 1 @@ -2792,7 +2792,7 @@ TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=WAIT RELEASE) changes DL ASS state from GPRS_RLCMAC_DL_ASS_NONE to GPRS_RLCMAC_DL_ASS_SEND_ASS TBF(TFI=1 TLLI=0xf1223344 DIR=DL STATE=NULL) changes state from NULL to ASSIGN TBF(TFI=1 TLLI=0xf1223344 DIR=DL STATE=ASSIGN) set ass. type PACCH [prev CCCH:0, PACCH:0] -TBF(TFI=1 TLLI=0xf1223344 DIR=DL STATE=ASSIGN) starting timer T0 [assignment (PACCH)] with 2 sec. 0 microsec. +TBF(TFI=1 TLLI=0xf1223344 DIR=DL STATE=ASSIGN) starting timer T0 [assignment (PACCH)] with 2 sec. 0 microsec, cur_fn=0 Received RTS for PDCH: TRX=0 TS=7 FN=2654400 block_nr=2 scheduling USF=0 for required uplink resource of UL TFI=0 TBF(TFI=1 TLLI=0xf1223344 DIR=DL STATE=ASSIGN) start Packet Downlink Assignment (PACCH) +++++++++++++++++++++++++ TX : Packet Downlink Assignment +++++++++++++++++++++++++ @@ -3011,7 +3011,7 @@ TBF(TFI=1 TLLI=0xf1223344 DIR=DL STATE=FINISHED) Copying data unit 0 (BSN 10) TBF(TFI=1 TLLI=0xf1223344 DIR=DL STATE=FINISHED) Scheduling Ack/Nack polling, because is was requested explicitly (e.g. first final block sent). TBF(TFI=1 TLLI=0xf1223344 DIR=DL STATE=FINISHED) Scheduled DL Acknowledgement polling on PACCH (FN=2654461, TS=7) -TBF(TFI=1 TLLI=0xf1223344 DIR=DL STATE=FINISHED) starting timer T3191 [final block (DL-TBF)] with 0 sec. 0 microsec. +TBF(TFI=1 TLLI=0xf1223344 DIR=DL STATE=FINISHED) starting timer T3191 [final block (DL-TBF)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=1 TLLI=0xf1223344 DIR=DL STATE=FINISHED) Scheduled Ack/Nack polling on FN=2654461, TS=7 TBF(TFI=1 TLLI=0xf1223344 DIR=DL STATE=FINISHED) msg block (BSN 10, CS-1): 0f 03 14 4d 43 20 50 41 43 4b 45 54 20 30 39 20 28 54 42 46 20 32 29 Not accepting non-EGPRS phone in EGPRS-only mode @@ -3127,7 +3127,7 @@ TBF(TFI=0 TLLI=0x00000000 DIR=UL STATE=NULL EGPRS) setting EGPRS UL window size to 64, base(0) slots(1) ws_pdch(0) ws(64) TBF(TFI=0 TLLI=0x00000000 DIR=UL STATE=NULL EGPRS) changes state from NULL to ASSIGN -TBF(TFI=0 TLLI=0x00000000 DIR=UL STATE=ASSIGN EGPRS) starting timer T3169 [allocation (UL-TBF)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0x00000000 DIR=UL STATE=ASSIGN EGPRS) starting timer T3169 [allocation (UL-TBF)] with 0 sec. 0 microsec, cur_fn=0 Modifying MS object, UL TLLI: 0x00000000 -> 0xf1223344, not yet confirmed Modifying MS object, TLLI = 0xf1223344, TA 220 -> 7 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=ASSIGN EGPRS) change control TS 7 -> 7 until assinment is complete. @@ -3148,7 +3148,7 @@ Got CS-1 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=184 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=0 .. V(R)=0) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got CS-1 RLC data block: CV=15, BSN=0, SPB=0, PI=0, E=1, TI=0, bitoffs=24 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 0 storing in window (0..63) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=20, data=00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 @@ -3182,7 +3182,7 @@ TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) changes DL ASS state from GPRS_RLCMAC_DL_ASS_NONE to GPRS_RLCMAC_DL_ASS_SEND_ASS TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=NULL EGPRS) changes state from NULL to ASSIGN TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=ASSIGN EGPRS) set ass. type PACCH [prev CCCH:0, PACCH:0] -TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=ASSIGN EGPRS) starting timer T0 [assignment (PACCH)] with 2 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=ASSIGN EGPRS) starting timer T0 [assignment (PACCH)] with 2 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=ASSIGN EGPRS) appending 256 bytes MS requests UL TBF on RACH, so we provide one: ra=0x73 Fn=2654167 qta=31 is_11bit=0: MS requests single block allocation @@ -3217,7 +3217,7 @@ TBF(TFI=0 TLLI=0x00000000 DIR=UL STATE=NULL EGPRS) setting EGPRS UL window size to 64, base(0) slots(1) ws_pdch(0) ws(64) TBF(TFI=0 TLLI=0x00000000 DIR=UL STATE=NULL EGPRS) changes state from NULL to ASSIGN -TBF(TFI=0 TLLI=0x00000000 DIR=UL STATE=ASSIGN EGPRS) starting timer T3169 [allocation (UL-TBF)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0x00000000 DIR=UL STATE=ASSIGN EGPRS) starting timer T3169 [allocation (UL-TBF)] with 0 sec. 0 microsec, cur_fn=0 Modifying MS object, UL TLLI: 0x00000000 -> 0xf1223344, not yet confirmed Modifying MS object, TLLI = 0xf1223344, TA 220 -> 7 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=ASSIGN EGPRS) change control TS 7 -> 7 until assinment is complete. @@ -3238,7 +3238,7 @@ Got CS-1 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=184 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=0 .. V(R)=0) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got CS-1 RLC data block: CV=15, BSN=0, SPB=0, PI=0, E=1, TI=0, bitoffs=24 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 0 storing in window (0..63) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=20, data=00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 @@ -3248,7 +3248,7 @@ Got MCS-3 RLC block: R=1, SI=1, TFI=0, CPS=5, RSB=0, rc=329 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=1 .. V(R)=1) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-3 RLC data block: CV=7, BSN=1, SPB=2, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 1 storing in window (1..64) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got SPB(2) cs(MCS-3) data block with BSN (1), TFI(0). @@ -3256,7 +3256,7 @@ Got MCS-3 RLC block: R=1, SI=1, TFI=0, CPS=5, RSB=0, rc=329 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=1 .. V(R)=1) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-3 RLC data block: CV=7, BSN=1, SPB=3, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 1 storing in window (1..64) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got SPB(3) cs(MCS-3) data block with BSN (1), TFI(0). @@ -3271,7 +3271,7 @@ Got MCS-3 RLC block: R=1, SI=1, TFI=0, CPS=5, RSB=0, rc=329 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=2 .. V(R)=2) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-3 RLC data block: CV=7, BSN=2, SPB=3, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 2 storing in window (2..65) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got SPB(3) cs(MCS-3) data block with BSN (2), TFI(0). @@ -3279,7 +3279,7 @@ Got MCS-3 RLC block: R=1, SI=1, TFI=0, CPS=5, RSB=0, rc=329 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=2 .. V(R)=2) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-3 RLC data block: CV=7, BSN=2, SPB=2, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 2 storing in window (2..65) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got SPB(2) cs(MCS-3) data block with BSN (2), TFI(0). @@ -3294,7 +3294,7 @@ Got MCS-3 RLC block: R=1, SI=1, TFI=0, CPS=5, RSB=0, rc=329 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=3 .. V(R)=3) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-3 RLC data block: CV=7, BSN=3, SPB=1, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 3 storing in window (3..66) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got SPB(1) cs(MCS-3) data block with BSN (3), TFI(0). @@ -3302,7 +3302,7 @@ Got MCS-3 RLC block: R=1, SI=1, TFI=0, CPS=5, RSB=0, rc=329 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=3 .. V(R)=3) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-3 RLC data block: CV=7, BSN=3, SPB=2, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 3 storing in window (3..66) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got SPB(2) cs(MCS-3) data block with BSN (3), TFI(0). @@ -3310,7 +3310,7 @@ Got MCS-3 RLC block: R=1, SI=1, TFI=0, CPS=5, RSB=0, rc=329 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=3 .. V(R)=3) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-3 RLC data block: CV=7, BSN=3, SPB=3, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 3 storing in window (3..66) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got SPB(3) cs(MCS-3) data block with BSN (3), TFI(0). @@ -3325,7 +3325,7 @@ Got MCS-3 RLC block: R=1, SI=1, TFI=0, CPS=5, RSB=0, rc=329 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=4 .. V(R)=4) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-3 RLC data block: CV=7, BSN=4, SPB=2, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 4 storing in window (4..67) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got SPB(2) cs(MCS-3) data block with BSN (4), TFI(0). @@ -3333,14 +3333,14 @@ Got MCS-3 RLC block: R=1, SI=1, TFI=0, CPS=5, RSB=0, rc=329 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=4 .. V(R)=4) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-3 RLC data block: CV=7, BSN=4, SPB=2, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 4 storing in window (4..67) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got SPB(2) cs(MCS-3) data block with BSN (4), TFI(0). Got MCS-3 RLC block: R=1, SI=1, TFI=0, CPS=5, RSB=0, rc=329 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=4 .. V(R)=4) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-3 RLC data block: CV=7, BSN=4, SPB=3, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 4 storing in window (4..67) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got SPB(3) cs(MCS-3) data block with BSN (4), TFI(0). @@ -3355,7 +3355,7 @@ Got MCS-3 RLC block: R=1, SI=1, TFI=0, CPS=5, RSB=0, rc=329 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=5 .. V(R)=5) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-3 RLC data block: CV=7, BSN=5, SPB=3, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 5 storing in window (5..68) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got SPB(3) cs(MCS-3) data block with BSN (5), TFI(0). @@ -3363,7 +3363,7 @@ Got MCS-3 RLC block: R=1, SI=1, TFI=0, CPS=5, RSB=0, rc=329 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=5 .. V(R)=5) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-3 RLC data block: CV=7, BSN=5, SPB=2, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 5 storing in window (5..68) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got SPB(2) cs(MCS-3) data block with BSN (5), TFI(0). @@ -3402,7 +3402,7 @@ TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) changes DL ASS state from GPRS_RLCMAC_DL_ASS_NONE to GPRS_RLCMAC_DL_ASS_SEND_ASS TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=NULL EGPRS) changes state from NULL to ASSIGN TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=ASSIGN EGPRS) set ass. type PACCH [prev CCCH:0, PACCH:0] -TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=ASSIGN EGPRS) starting timer T0 [assignment (PACCH)] with 2 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=ASSIGN EGPRS) starting timer T0 [assignment (PACCH)] with 2 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=ASSIGN EGPRS) appending 256 bytes Searching for first unallocated TFI: TRX=0 Found TFI=0. @@ -3701,7 +3701,7 @@ TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) downlink acknowledge TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) Final ACK received. TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) changes state from FLOW to WAIT RELEASE -TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT RELEASE EGPRS) starting timer T3193 [release (DL-TBF)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT RELEASE EGPRS) starting timer T3193 [release (DL-TBF)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT RELEASE EGPRS) changes DL ASS state from GPRS_RLCMAC_DL_ASS_WAIT_ACK to GPRS_RLCMAC_DL_ASS_NONE TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT RELEASE EGPRS) changes state from WAIT RELEASE to RELEASING TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=RELEASING EGPRS) free @@ -3957,7 +3957,7 @@ TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) downlink acknowledge TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) Final ACK received. TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) changes state from FLOW to WAIT RELEASE -TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT RELEASE EGPRS) starting timer T3193 [release (DL-TBF)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT RELEASE EGPRS) starting timer T3193 [release (DL-TBF)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT RELEASE EGPRS) changes DL ASS state from GPRS_RLCMAC_DL_ASS_WAIT_ACK to GPRS_RLCMAC_DL_ASS_NONE TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT RELEASE EGPRS) changes state from WAIT RELEASE to RELEASING TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=RELEASING EGPRS) free @@ -4175,7 +4175,7 @@ TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) downlink acknowledge TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) Final ACK received. TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) changes state from FLOW to WAIT RELEASE -TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT RELEASE EGPRS) starting timer T3193 [release (DL-TBF)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT RELEASE EGPRS) starting timer T3193 [release (DL-TBF)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT RELEASE EGPRS) changes DL ASS state from GPRS_RLCMAC_DL_ASS_WAIT_ACK to GPRS_RLCMAC_DL_ASS_NONE TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT RELEASE EGPRS) changes state from WAIT RELEASE to RELEASING TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=RELEASING EGPRS) free @@ -4361,7 +4361,7 @@ TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) downlink acknowledge TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) Final ACK received. TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) changes state from FLOW to WAIT RELEASE -TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT RELEASE EGPRS) starting timer T3193 [release (DL-TBF)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT RELEASE EGPRS) starting timer T3193 [release (DL-TBF)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT RELEASE EGPRS) changes DL ASS state from GPRS_RLCMAC_DL_ASS_WAIT_ACK to GPRS_RLCMAC_DL_ASS_NONE TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT RELEASE EGPRS) changes state from WAIT RELEASE to RELEASING TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=RELEASING EGPRS) free @@ -4527,7 +4527,7 @@ TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) downlink acknowledge TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) Final ACK received. TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) changes state from FLOW to WAIT RELEASE -TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT RELEASE EGPRS) starting timer T3193 [release (DL-TBF)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT RELEASE EGPRS) starting timer T3193 [release (DL-TBF)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT RELEASE EGPRS) changes DL ASS state from GPRS_RLCMAC_DL_ASS_WAIT_ACK to GPRS_RLCMAC_DL_ASS_NONE TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT RELEASE EGPRS) changes state from WAIT RELEASE to RELEASING TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=RELEASING EGPRS) free @@ -4675,7 +4675,7 @@ TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) downlink acknowledge TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) Final ACK received. TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) changes state from FLOW to WAIT RELEASE -TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT RELEASE EGPRS) starting timer T3193 [release (DL-TBF)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT RELEASE EGPRS) starting timer T3193 [release (DL-TBF)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT RELEASE EGPRS) changes DL ASS state from GPRS_RLCMAC_DL_ASS_WAIT_ACK to GPRS_RLCMAC_DL_ASS_NONE TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT RELEASE EGPRS) changes state from WAIT RELEASE to RELEASING TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=RELEASING EGPRS) free @@ -4818,7 +4818,7 @@ TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) downlink acknowledge TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) Final ACK received. TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) changes state from FLOW to WAIT RELEASE -TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT RELEASE EGPRS) starting timer T3193 [release (DL-TBF)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT RELEASE EGPRS) starting timer T3193 [release (DL-TBF)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT RELEASE EGPRS) changes DL ASS state from GPRS_RLCMAC_DL_ASS_WAIT_ACK to GPRS_RLCMAC_DL_ASS_NONE TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT RELEASE EGPRS) changes state from WAIT RELEASE to RELEASING TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=RELEASING EGPRS) free @@ -4950,7 +4950,7 @@ TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) downlink acknowledge TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) Final ACK received. TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) changes state from FLOW to WAIT RELEASE -TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT RELEASE EGPRS) starting timer T3193 [release (DL-TBF)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT RELEASE EGPRS) starting timer T3193 [release (DL-TBF)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT RELEASE EGPRS) changes DL ASS state from GPRS_RLCMAC_DL_ASS_WAIT_ACK to GPRS_RLCMAC_DL_ASS_NONE TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT RELEASE EGPRS) changes state from WAIT RELEASE to RELEASING TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=RELEASING EGPRS) free @@ -5082,7 +5082,7 @@ TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) downlink acknowledge TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) Final ACK received. TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) changes state from FLOW to WAIT RELEASE -TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT RELEASE EGPRS) starting timer T3193 [release (DL-TBF)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT RELEASE EGPRS) starting timer T3193 [release (DL-TBF)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT RELEASE EGPRS) changes DL ASS state from GPRS_RLCMAC_DL_ASS_WAIT_ACK to GPRS_RLCMAC_DL_ASS_NONE TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT RELEASE EGPRS) changes state from WAIT RELEASE to RELEASING TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=RELEASING EGPRS) free @@ -5137,7 +5137,7 @@ TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) downlink acknowledge TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) Final ACK received. TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) changes state from FLOW to WAIT RELEASE -TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT RELEASE EGPRS) starting timer T3193 [release (DL-TBF)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT RELEASE EGPRS) starting timer T3193 [release (DL-TBF)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT RELEASE EGPRS) changes DL ASS state from GPRS_RLCMAC_DL_ASS_SEND_ASS to GPRS_RLCMAC_DL_ASS_NONE TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT RELEASE EGPRS) changes state from WAIT RELEASE to RELEASING TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=RELEASING EGPRS) free @@ -5192,7 +5192,7 @@ TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) downlink acknowledge TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) Final ACK received. TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) changes state from FLOW to WAIT RELEASE -TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT RELEASE EGPRS) starting timer T3193 [release (DL-TBF)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT RELEASE EGPRS) starting timer T3193 [release (DL-TBF)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT RELEASE EGPRS) changes DL ASS state from GPRS_RLCMAC_DL_ASS_SEND_ASS to GPRS_RLCMAC_DL_ASS_NONE TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT RELEASE EGPRS) changes state from WAIT RELEASE to RELEASING TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=RELEASING EGPRS) free @@ -5247,7 +5247,7 @@ TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) downlink acknowledge TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) Final ACK received. TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) changes state from FLOW to WAIT RELEASE -TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT RELEASE EGPRS) starting timer T3193 [release (DL-TBF)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT RELEASE EGPRS) starting timer T3193 [release (DL-TBF)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT RELEASE EGPRS) changes DL ASS state from GPRS_RLCMAC_DL_ASS_SEND_ASS to GPRS_RLCMAC_DL_ASS_NONE TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT RELEASE EGPRS) changes state from WAIT RELEASE to RELEASING TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=RELEASING EGPRS) free @@ -5318,7 +5318,7 @@ TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) downlink acknowledge TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) Final ACK received. TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) changes state from FLOW to WAIT RELEASE -TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT RELEASE EGPRS) starting timer T3193 [release (DL-TBF)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT RELEASE EGPRS) starting timer T3193 [release (DL-TBF)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT RELEASE EGPRS) changes DL ASS state from GPRS_RLCMAC_DL_ASS_SEND_ASS to GPRS_RLCMAC_DL_ASS_NONE TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT RELEASE EGPRS) changes state from WAIT RELEASE to RELEASING TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=RELEASING EGPRS) free @@ -5389,7 +5389,7 @@ TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) downlink acknowledge TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) Final ACK received. TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) changes state from FLOW to WAIT RELEASE -TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT RELEASE EGPRS) starting timer T3193 [release (DL-TBF)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT RELEASE EGPRS) starting timer T3193 [release (DL-TBF)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT RELEASE EGPRS) changes DL ASS state from GPRS_RLCMAC_DL_ASS_SEND_ASS to GPRS_RLCMAC_DL_ASS_NONE TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT RELEASE EGPRS) changes state from WAIT RELEASE to RELEASING TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=RELEASING EGPRS) free @@ -5460,7 +5460,7 @@ TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) downlink acknowledge TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) Final ACK received. TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) changes state from FLOW to WAIT RELEASE -TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT RELEASE EGPRS) starting timer T3193 [release (DL-TBF)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT RELEASE EGPRS) starting timer T3193 [release (DL-TBF)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT RELEASE EGPRS) changes DL ASS state from GPRS_RLCMAC_DL_ASS_SEND_ASS to GPRS_RLCMAC_DL_ASS_NONE TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT RELEASE EGPRS) changes state from WAIT RELEASE to RELEASING TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=RELEASING EGPRS) free @@ -5531,7 +5531,7 @@ TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) downlink acknowledge TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) Final ACK received. TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) changes state from FLOW to WAIT RELEASE -TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT RELEASE EGPRS) starting timer T3193 [release (DL-TBF)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT RELEASE EGPRS) starting timer T3193 [release (DL-TBF)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT RELEASE EGPRS) changes DL ASS state from GPRS_RLCMAC_DL_ASS_SEND_ASS to GPRS_RLCMAC_DL_ASS_NONE TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT RELEASE EGPRS) changes state from WAIT RELEASE to RELEASING TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=RELEASING EGPRS) free @@ -5593,7 +5593,7 @@ TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) downlink acknowledge TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) Final ACK received. TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) changes state from FLOW to WAIT RELEASE -TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT RELEASE EGPRS) starting timer T3193 [release (DL-TBF)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT RELEASE EGPRS) starting timer T3193 [release (DL-TBF)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT RELEASE EGPRS) changes DL ASS state from GPRS_RLCMAC_DL_ASS_SEND_ASS to GPRS_RLCMAC_DL_ASS_NONE TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT RELEASE EGPRS) changes state from WAIT RELEASE to RELEASING TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=RELEASING EGPRS) free @@ -5655,7 +5655,7 @@ TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) downlink acknowledge TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) Final ACK received. TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) changes state from FLOW to WAIT RELEASE -TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT RELEASE EGPRS) starting timer T3193 [release (DL-TBF)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT RELEASE EGPRS) starting timer T3193 [release (DL-TBF)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT RELEASE EGPRS) changes DL ASS state from GPRS_RLCMAC_DL_ASS_SEND_ASS to GPRS_RLCMAC_DL_ASS_NONE TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT RELEASE EGPRS) changes state from WAIT RELEASE to RELEASING TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=RELEASING EGPRS) free @@ -5717,7 +5717,7 @@ TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) downlink acknowledge TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) Final ACK received. TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) changes state from FLOW to WAIT RELEASE -TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT RELEASE EGPRS) starting timer T3193 [release (DL-TBF)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT RELEASE EGPRS) starting timer T3193 [release (DL-TBF)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT RELEASE EGPRS) changes DL ASS state from GPRS_RLCMAC_DL_ASS_SEND_ASS to GPRS_RLCMAC_DL_ASS_NONE TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT RELEASE EGPRS) changes state from WAIT RELEASE to RELEASING TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=RELEASING EGPRS) free @@ -5786,7 +5786,7 @@ TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) downlink acknowledge TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) Final ACK received. TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) changes state from FLOW to WAIT RELEASE -TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT RELEASE EGPRS) starting timer T3193 [release (DL-TBF)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT RELEASE EGPRS) starting timer T3193 [release (DL-TBF)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT RELEASE EGPRS) changes DL ASS state from GPRS_RLCMAC_DL_ASS_SEND_ASS to GPRS_RLCMAC_DL_ASS_NONE TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT RELEASE EGPRS) changes state from WAIT RELEASE to RELEASING TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=RELEASING EGPRS) free @@ -5828,7 +5828,7 @@ TBF(TFI=0 TLLI=0x00000000 DIR=UL STATE=NULL EGPRS) setting EGPRS UL window size to 64, base(0) slots(1) ws_pdch(0) ws(64) TBF(TFI=0 TLLI=0x00000000 DIR=UL STATE=NULL EGPRS) changes state from NULL to ASSIGN -TBF(TFI=0 TLLI=0x00000000 DIR=UL STATE=ASSIGN EGPRS) starting timer T3169 [allocation (UL-TBF)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0x00000000 DIR=UL STATE=ASSIGN EGPRS) starting timer T3169 [allocation (UL-TBF)] with 0 sec. 0 microsec, cur_fn=0 Modifying MS object, UL TLLI: 0x00000000 -> 0xf1223344, not yet confirmed Modifying MS object, TLLI = 0xf1223344, TA 220 -> 7 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=ASSIGN EGPRS) change control TS 7 -> 7 until assinment is complete. @@ -5849,7 +5849,7 @@ Got CS-1 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=184 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=0 .. V(R)=0) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got CS-1 RLC data block: CV=15, BSN=0, SPB=0, PI=0, E=1, TI=0, bitoffs=24 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 0 storing in window (0..63) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=20, data=00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 @@ -5859,7 +5859,7 @@ Got MCS-3 RLC block: R=1, SI=0, TFI=0, CPS=5, RSB=0, rc=329 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=1 .. V(R)=1) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-3 RLC data block: CV=7, BSN=1, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 1 storing in window (1..64) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=37, data=00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 @@ -5870,7 +5870,7 @@ Got MCS-3 RLC block: R=1, SI=0, TFI=0, CPS=5, RSB=0, rc=329 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=2 .. V(R)=2) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-3 RLC data block: CV=7, BSN=4, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 4 storing in window (2..65) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=37, data=00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 @@ -5902,7 +5902,7 @@ TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) changes DL ASS state from GPRS_RLCMAC_DL_ASS_NONE to GPRS_RLCMAC_DL_ASS_SEND_ASS TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=NULL EGPRS) changes state from NULL to ASSIGN TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=ASSIGN EGPRS) set ass. type PACCH [prev CCCH:0, PACCH:0] -TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=ASSIGN EGPRS) starting timer T0 [assignment (PACCH)] with 2 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=ASSIGN EGPRS) starting timer T0 [assignment (PACCH)] with 2 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=ASSIGN EGPRS) appending 256 bytes ********** DL-TBF starts here ********** Allocating DL TBF: MS_CLASS=11/11 @@ -5989,7 +5989,7 @@ TBF(TFI=0 TLLI=0x00000000 DIR=UL STATE=NULL EGPRS) setting EGPRS UL window size to 64, base(0) slots(1) ws_pdch(0) ws(64) TBF(TFI=0 TLLI=0x00000000 DIR=UL STATE=NULL EGPRS) changes state from NULL to ASSIGN -TBF(TFI=0 TLLI=0x00000000 DIR=UL STATE=ASSIGN EGPRS) starting timer T3169 [allocation (UL-TBF)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0x00000000 DIR=UL STATE=ASSIGN EGPRS) starting timer T3169 [allocation (UL-TBF)] with 0 sec. 0 microsec, cur_fn=0 Modifying MS object, UL TLLI: 0x00000000 -> 0xf1223344, not yet confirmed Modifying MS object, TLLI = 0xf1223344, TA 220 -> 7 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=ASSIGN EGPRS) change control TS 7 -> 7 until assinment is complete. @@ -6010,7 +6010,7 @@ Got MCS-4 RLC block: R=1, SI=0, TFI=0, CPS=5, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=0 .. V(R)=0) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=7, BSN=0, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 0 storing in window (0..63) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 @@ -6020,7 +6020,7 @@ Got MCS-4 RLC block: R=1, SI=0, TFI=0, CPS=5, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=1 .. V(R)=1) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=7, BSN=1, SPB=0, PI=0, E=0, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 1 storing in window (1..64) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 @@ -6057,7 +6057,7 @@ TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) changes DL ASS state from GPRS_RLCMAC_DL_ASS_NONE to GPRS_RLCMAC_DL_ASS_SEND_ASS TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=NULL EGPRS) changes state from NULL to ASSIGN TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=ASSIGN EGPRS) set ass. type PACCH [prev CCCH:0, PACCH:0] -TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=ASSIGN EGPRS) starting timer T0 [assignment (PACCH)] with 2 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=ASSIGN EGPRS) starting timer T0 [assignment (PACCH)] with 2 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=ASSIGN EGPRS) appending 256 bytes Searching for first unallocated TFI: TRX=0 Found TFI=0. @@ -6119,7 +6119,7 @@ Modifying MS object, TLLI = 0x00000000, TA 220 -> 7 TBF(TFI=0 TLLI=0x00000000 DIR=UL STATE=NULL) changes state from NULL to FLOW TBF(TFI=0 TLLI=0x00000000 DIR=UL STATE=FLOW) set ass. type CCCH [prev CCCH:0, PACCH:0] -TBF(TFI=0 TLLI=0x00000000 DIR=UL STATE=FLOW) starting timer T3169 [RACH (new UL-TBF)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0x00000000 DIR=UL STATE=FLOW) starting timer T3169 [RACH (new UL-TBF)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0x00000000 DIR=UL STATE=FLOW) [UPLINK] START TBF(TFI=0 TLLI=0x00000000 DIR=UL STATE=FLOW) RX: [PCU <- BTS] RACH qbit-ta=31 ra=0x78, Fn=2654167 (17,25,9) TBF(TFI=0 TLLI=0x00000000 DIR=UL STATE=FLOW) TX: START Immediate Assignment Uplink (AGCH) @@ -6144,7 +6144,7 @@ Modifying MS object, TLLI = 0x00000000, TA 220 -> 7 TBF(TFI=1 TLLI=0x00000000 DIR=UL STATE=NULL) changes state from NULL to FLOW TBF(TFI=1 TLLI=0x00000000 DIR=UL STATE=FLOW) set ass. type CCCH [prev CCCH:0, PACCH:0] -TBF(TFI=1 TLLI=0x00000000 DIR=UL STATE=FLOW) starting timer T3169 [RACH (new UL-TBF)] with 0 sec. 0 microsec. +TBF(TFI=1 TLLI=0x00000000 DIR=UL STATE=FLOW) starting timer T3169 [RACH (new UL-TBF)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=1 TLLI=0x00000000 DIR=UL STATE=FLOW) [UPLINK] START TBF(TFI=1 TLLI=0x00000000 DIR=UL STATE=FLOW) RX: [PCU <- BTS] RACH qbit-ta=31 ra=0x79, Fn=2654167 (17,25,9) TBF(TFI=1 TLLI=0x00000000 DIR=UL STATE=FLOW) TX: START Immediate Assignment Uplink (AGCH) @@ -6169,7 +6169,7 @@ Modifying MS object, TLLI = 0x00000000, TA 220 -> 7 TBF(TFI=2 TLLI=0x00000000 DIR=UL STATE=NULL) changes state from NULL to FLOW TBF(TFI=2 TLLI=0x00000000 DIR=UL STATE=FLOW) set ass. type CCCH [prev CCCH:0, PACCH:0] -TBF(TFI=2 TLLI=0x00000000 DIR=UL STATE=FLOW) starting timer T3169 [RACH (new UL-TBF)] with 0 sec. 0 microsec. +TBF(TFI=2 TLLI=0x00000000 DIR=UL STATE=FLOW) starting timer T3169 [RACH (new UL-TBF)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=2 TLLI=0x00000000 DIR=UL STATE=FLOW) [UPLINK] START TBF(TFI=2 TLLI=0x00000000 DIR=UL STATE=FLOW) RX: [PCU <- BTS] RACH qbit-ta=31 ra=0x7a, Fn=2654167 (17,25,9) TBF(TFI=2 TLLI=0x00000000 DIR=UL STATE=FLOW) TX: START Immediate Assignment Uplink (AGCH) @@ -6194,7 +6194,7 @@ Modifying MS object, TLLI = 0x00000000, TA 220 -> 7 TBF(TFI=3 TLLI=0x00000000 DIR=UL STATE=NULL) changes state from NULL to FLOW TBF(TFI=3 TLLI=0x00000000 DIR=UL STATE=FLOW) set ass. type CCCH [prev CCCH:0, PACCH:0] -TBF(TFI=3 TLLI=0x00000000 DIR=UL STATE=FLOW) starting timer T3169 [RACH (new UL-TBF)] with 0 sec. 0 microsec. +TBF(TFI=3 TLLI=0x00000000 DIR=UL STATE=FLOW) starting timer T3169 [RACH (new UL-TBF)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=3 TLLI=0x00000000 DIR=UL STATE=FLOW) [UPLINK] START TBF(TFI=3 TLLI=0x00000000 DIR=UL STATE=FLOW) RX: [PCU <- BTS] RACH qbit-ta=31 ra=0x7b, Fn=2654167 (17,25,9) TBF(TFI=3 TLLI=0x00000000 DIR=UL STATE=FLOW) TX: START Immediate Assignment Uplink (AGCH) @@ -6219,7 +6219,7 @@ Modifying MS object, TLLI = 0x00000000, TA 220 -> 7 TBF(TFI=4 TLLI=0x00000000 DIR=UL STATE=NULL) changes state from NULL to FLOW TBF(TFI=4 TLLI=0x00000000 DIR=UL STATE=FLOW) set ass. type CCCH [prev CCCH:0, PACCH:0] -TBF(TFI=4 TLLI=0x00000000 DIR=UL STATE=FLOW) starting timer T3169 [RACH (new UL-TBF)] with 0 sec. 0 microsec. +TBF(TFI=4 TLLI=0x00000000 DIR=UL STATE=FLOW) starting timer T3169 [RACH (new UL-TBF)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=4 TLLI=0x00000000 DIR=UL STATE=FLOW) [UPLINK] START TBF(TFI=4 TLLI=0x00000000 DIR=UL STATE=FLOW) RX: [PCU <- BTS] RACH qbit-ta=31 ra=0x7c, Fn=2654167 (17,25,9) TBF(TFI=4 TLLI=0x00000000 DIR=UL STATE=FLOW) TX: START Immediate Assignment Uplink (AGCH) @@ -6244,7 +6244,7 @@ Modifying MS object, TLLI = 0x00000000, TA 220 -> 7 TBF(TFI=5 TLLI=0x00000000 DIR=UL STATE=NULL) changes state from NULL to FLOW TBF(TFI=5 TLLI=0x00000000 DIR=UL STATE=FLOW) set ass. type CCCH [prev CCCH:0, PACCH:0] -TBF(TFI=5 TLLI=0x00000000 DIR=UL STATE=FLOW) starting timer T3169 [RACH (new UL-TBF)] with 0 sec. 0 microsec. +TBF(TFI=5 TLLI=0x00000000 DIR=UL STATE=FLOW) starting timer T3169 [RACH (new UL-TBF)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=5 TLLI=0x00000000 DIR=UL STATE=FLOW) [UPLINK] START TBF(TFI=5 TLLI=0x00000000 DIR=UL STATE=FLOW) RX: [PCU <- BTS] RACH qbit-ta=31 ra=0x7d, Fn=2654167 (17,25,9) TBF(TFI=5 TLLI=0x00000000 DIR=UL STATE=FLOW) TX: START Immediate Assignment Uplink (AGCH) @@ -6269,7 +6269,7 @@ Modifying MS object, TLLI = 0x00000000, TA 220 -> 7 TBF(TFI=6 TLLI=0x00000000 DIR=UL STATE=NULL) changes state from NULL to FLOW TBF(TFI=6 TLLI=0x00000000 DIR=UL STATE=FLOW) set ass. type CCCH [prev CCCH:0, PACCH:0] -TBF(TFI=6 TLLI=0x00000000 DIR=UL STATE=FLOW) starting timer T3169 [RACH (new UL-TBF)] with 0 sec. 0 microsec. +TBF(TFI=6 TLLI=0x00000000 DIR=UL STATE=FLOW) starting timer T3169 [RACH (new UL-TBF)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=6 TLLI=0x00000000 DIR=UL STATE=FLOW) [UPLINK] START TBF(TFI=6 TLLI=0x00000000 DIR=UL STATE=FLOW) RX: [PCU <- BTS] RACH qbit-ta=31 ra=0x7e, Fn=2654167 (17,25,9) TBF(TFI=6 TLLI=0x00000000 DIR=UL STATE=FLOW) TX: START Immediate Assignment Uplink (AGCH) @@ -6327,7 +6327,7 @@ TBF(TFI=0 TLLI=0x00000000 DIR=UL STATE=NULL EGPRS) setting EGPRS UL window size to 192, base(128) slots(1) ws_pdch(64) ws(192) TBF(TFI=0 TLLI=0x00000000 DIR=UL STATE=NULL EGPRS) changes state from NULL to ASSIGN -TBF(TFI=0 TLLI=0x00000000 DIR=UL STATE=ASSIGN EGPRS) starting timer T3169 [allocation (UL-TBF)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0x00000000 DIR=UL STATE=ASSIGN EGPRS) starting timer T3169 [allocation (UL-TBF)] with 0 sec. 0 microsec, cur_fn=0 Modifying MS object, UL TLLI: 0x00000000 -> 0xf1223344, not yet confirmed Modifying MS object, TLLI = 0xf1223344, TA 220 -> 7 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=ASSIGN EGPRS) change control TS 7 -> 7 until assinment is complete. @@ -6348,7 +6348,7 @@ Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=0 .. V(R)=0) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=0, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 0 storing in window (0..191) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 @@ -6358,133 +6358,133 @@ Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=1 .. V(R)=1) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=2, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 2 storing in window (1..192) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=1 .. V(R)=3) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=4, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 4 storing in window (1..192) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=1 .. V(R)=5) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=6, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 6 storing in window (1..192) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=1 .. V(R)=7) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=8, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 8 storing in window (1..192) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=1 .. V(R)=9) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=10, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 10 storing in window (1..192) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=1 .. V(R)=11) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=12, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 12 storing in window (1..192) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=1 .. V(R)=13) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=14, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 14 storing in window (1..192) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=1 .. V(R)=15) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=16, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 16 storing in window (1..192) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=1 .. V(R)=17) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=18, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 18 storing in window (1..192) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=1 .. V(R)=19) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=20, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 20 storing in window (1..192) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=1 .. V(R)=21) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=22, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 22 storing in window (1..192) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=1 .. V(R)=23) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=24, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 24 storing in window (1..192) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=1 .. V(R)=25) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=26, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 26 storing in window (1..192) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=1 .. V(R)=27) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=28, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 28 storing in window (1..192) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=1 .. V(R)=29) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=30, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 30 storing in window (1..192) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=1 .. V(R)=31) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=32, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 32 storing in window (1..192) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=1 .. V(R)=33) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=34, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 34 storing in window (1..192) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=1 .. V(R)=35) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=36, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 36 storing in window (1..192) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=1 .. V(R)=37) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=38, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 38 storing in window (1..192) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 @@ -6493,140 +6493,140 @@ Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=1 .. V(R)=39) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=40, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 40 storing in window (1..192) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=1 .. V(R)=41) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=42, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 42 storing in window (1..192) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=1 .. V(R)=43) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=44, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 44 storing in window (1..192) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=1 .. V(R)=45) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=46, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 46 storing in window (1..192) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=1 .. V(R)=47) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=48, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 48 storing in window (1..192) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=1 .. V(R)=49) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=50, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 50 storing in window (1..192) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=1 .. V(R)=51) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=52, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 52 storing in window (1..192) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=1 .. V(R)=53) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=54, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 54 storing in window (1..192) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=1 .. V(R)=55) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=56, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 56 storing in window (1..192) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=1 .. V(R)=57) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=58, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 58 storing in window (1..192) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=1 .. V(R)=59) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=60, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 60 storing in window (1..192) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=1 .. V(R)=61) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=62, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 62 storing in window (1..192) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=1 .. V(R)=63) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=64, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 64 storing in window (1..192) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=1 .. V(R)=65) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=66, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 66 storing in window (1..192) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=1 .. V(R)=67) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=68, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 68 storing in window (1..192) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=1 .. V(R)=69) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=70, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 70 storing in window (1..192) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=1 .. V(R)=71) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=72, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 72 storing in window (1..192) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=1 .. V(R)=73) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=74, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 74 storing in window (1..192) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=1 .. V(R)=75) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=76, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 76 storing in window (1..192) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=1 .. V(R)=77) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=78, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 78 storing in window (1..192) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 @@ -6635,140 +6635,140 @@ Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=1 .. V(R)=79) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=80, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 80 storing in window (1..192) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=1 .. V(R)=81) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=82, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 82 storing in window (1..192) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=1 .. V(R)=83) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=84, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 84 storing in window (1..192) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=1 .. V(R)=85) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=86, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 86 storing in window (1..192) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=1 .. V(R)=87) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=88, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 88 storing in window (1..192) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=1 .. V(R)=89) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=90, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 90 storing in window (1..192) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=1 .. V(R)=91) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=92, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 92 storing in window (1..192) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=1 .. V(R)=93) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=94, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 94 storing in window (1..192) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=1 .. V(R)=95) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=96, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 96 storing in window (1..192) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=1 .. V(R)=97) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=98, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 98 storing in window (1..192) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=1 .. V(R)=99) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=100, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 100 storing in window (1..192) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=1 .. V(R)=101) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=102, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 102 storing in window (1..192) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=1 .. V(R)=103) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=104, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 104 storing in window (1..192) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=1 .. V(R)=105) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=106, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 106 storing in window (1..192) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=1 .. V(R)=107) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=108, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 108 storing in window (1..192) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=1 .. V(R)=109) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=110, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 110 storing in window (1..192) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=1 .. V(R)=111) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=112, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 112 storing in window (1..192) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=1 .. V(R)=113) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=114, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 114 storing in window (1..192) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=1 .. V(R)=115) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=116, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 116 storing in window (1..192) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=1 .. V(R)=117) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=118, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 118 storing in window (1..192) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 @@ -6777,140 +6777,140 @@ Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=1 .. V(R)=119) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=120, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 120 storing in window (1..192) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=1 .. V(R)=121) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=122, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 122 storing in window (1..192) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=1 .. V(R)=123) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=124, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 124 storing in window (1..192) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=1 .. V(R)=125) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=126, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 126 storing in window (1..192) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=1 .. V(R)=127) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=128, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 128 storing in window (1..192) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=1 .. V(R)=129) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=130, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 130 storing in window (1..192) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=1 .. V(R)=131) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=132, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 132 storing in window (1..192) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=1 .. V(R)=133) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=134, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 134 storing in window (1..192) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=1 .. V(R)=135) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=136, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 136 storing in window (1..192) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=1 .. V(R)=137) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=138, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 138 storing in window (1..192) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=1 .. V(R)=139) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=140, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 140 storing in window (1..192) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=1 .. V(R)=141) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=142, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 142 storing in window (1..192) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=1 .. V(R)=143) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=144, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 144 storing in window (1..192) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=1 .. V(R)=145) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=146, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 146 storing in window (1..192) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=1 .. V(R)=147) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=148, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 148 storing in window (1..192) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=1 .. V(R)=149) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=150, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 150 storing in window (1..192) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=1 .. V(R)=151) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=152, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 152 storing in window (1..192) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=1 .. V(R)=153) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=154, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 154 storing in window (1..192) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=1 .. V(R)=155) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=156, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 156 storing in window (1..192) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=1 .. V(R)=157) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=158, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 158 storing in window (1..192) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 @@ -6920,7 +6920,7 @@ Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=1 .. V(R)=159) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=0, BSN=64, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 64 already received Received RTS for PDCH: TRX=0 TS=7 FN=2654275 block_nr=9 scheduling USF=0 for required uplink resource of UL TFI=0 @@ -6951,12 +6951,12 @@ TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) changes DL ASS state from GPRS_RLCMAC_DL_ASS_NONE to GPRS_RLCMAC_DL_ASS_SEND_ASS TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=NULL EGPRS) changes state from NULL to ASSIGN TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=ASSIGN EGPRS) set ass. type PACCH [prev CCCH:0, PACCH:0] -TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=ASSIGN EGPRS) starting timer T0 [assignment (PACCH)] with 2 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=ASSIGN EGPRS) starting timer T0 [assignment (PACCH)] with 2 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=ASSIGN EGPRS) appending 256 bytes Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=0 .. V(R)=0) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=0, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 0 storing in window (0..191) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 @@ -6966,126 +6966,126 @@ Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=1 .. V(R)=1) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=2, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 2 storing in window (1..192) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=1 .. V(R)=3) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=4, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 4 storing in window (1..192) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=1 .. V(R)=5) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=6, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 6 storing in window (1..192) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=1 .. V(R)=7) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=8, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 8 storing in window (1..192) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=1 .. V(R)=9) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=10, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 10 storing in window (1..192) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=1 .. V(R)=11) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=12, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 12 storing in window (1..192) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=1 .. V(R)=13) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=14, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 14 storing in window (1..192) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=1 .. V(R)=15) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=16, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 16 storing in window (1..192) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=1 .. V(R)=17) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=18, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 18 storing in window (1..192) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=1 .. V(R)=19) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=20, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 20 storing in window (1..192) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=1 .. V(R)=21) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=22, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 22 storing in window (1..192) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=1 .. V(R)=23) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=24, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 24 storing in window (1..192) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=1 .. V(R)=25) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=26, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 26 storing in window (1..192) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=1 .. V(R)=27) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=28, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 28 storing in window (1..192) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=1 .. V(R)=29) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=30, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 30 storing in window (1..192) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=1 .. V(R)=31) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=32, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 32 storing in window (1..192) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=1 .. V(R)=33) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=34, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 34 storing in window (1..192) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=1 .. V(R)=35) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=36, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 36 storing in window (1..192) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 @@ -7094,7 +7094,7 @@ Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=1 .. V(R)=37) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=38, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 38 storing in window (1..192) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 @@ -7102,7 +7102,7 @@ Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=1 .. V(R)=39) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=0, BSN=64, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 64 storing in window (1..192) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 @@ -7118,126 +7118,126 @@ Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=0 .. V(R)=0) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=80, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 80 storing in window (0..191) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=0 .. V(R)=81) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=81, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 81 storing in window (0..191) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=0 .. V(R)=82) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=82, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 82 storing in window (0..191) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=0 .. V(R)=83) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=83, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 83 storing in window (0..191) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=0 .. V(R)=84) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=84, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 84 storing in window (0..191) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=0 .. V(R)=85) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=85, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 85 storing in window (0..191) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=0 .. V(R)=86) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=86, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 86 storing in window (0..191) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=0 .. V(R)=87) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=87, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 87 storing in window (0..191) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=0 .. V(R)=88) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=88, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 88 storing in window (0..191) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=0 .. V(R)=89) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=89, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 89 storing in window (0..191) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=0 .. V(R)=90) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=90, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 90 storing in window (0..191) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=0 .. V(R)=91) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=91, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 91 storing in window (0..191) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=0 .. V(R)=92) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=92, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 92 storing in window (0..191) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=0 .. V(R)=93) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=93, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 93 storing in window (0..191) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=0 .. V(R)=94) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=94, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 94 storing in window (0..191) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=0 .. V(R)=95) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=95, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 95 storing in window (0..191) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=0 .. V(R)=96) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=96, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 96 storing in window (0..191) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=0 .. V(R)=97) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=97, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 97 storing in window (0..191) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 @@ -7246,140 +7246,140 @@ Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=0 .. V(R)=98) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=98, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 98 storing in window (0..191) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=0 .. V(R)=99) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=99, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 99 storing in window (0..191) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=0 .. V(R)=100) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=100, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 100 storing in window (0..191) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=0 .. V(R)=101) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=101, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 101 storing in window (0..191) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=0 .. V(R)=102) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=102, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 102 storing in window (0..191) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=0 .. V(R)=103) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=103, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 103 storing in window (0..191) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=0 .. V(R)=104) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=104, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 104 storing in window (0..191) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=0 .. V(R)=105) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=105, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 105 storing in window (0..191) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=0 .. V(R)=106) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=106, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 106 storing in window (0..191) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=0 .. V(R)=107) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=107, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 107 storing in window (0..191) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=0 .. V(R)=108) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=108, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 108 storing in window (0..191) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=0 .. V(R)=109) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=109, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 109 storing in window (0..191) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=0 .. V(R)=110) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=110, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 110 storing in window (0..191) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=0 .. V(R)=111) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=111, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 111 storing in window (0..191) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=0 .. V(R)=112) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=112, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 112 storing in window (0..191) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=0 .. V(R)=113) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=113, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 113 storing in window (0..191) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=0 .. V(R)=114) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=114, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 114 storing in window (0..191) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=0 .. V(R)=115) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=115, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 115 storing in window (0..191) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=0 .. V(R)=116) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=116, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 116 storing in window (0..191) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=0 .. V(R)=117) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=117, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 117 storing in window (0..191) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 @@ -7388,140 +7388,140 @@ Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=0 .. V(R)=118) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=118, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 118 storing in window (0..191) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=0 .. V(R)=119) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=119, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 119 storing in window (0..191) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=0 .. V(R)=120) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=120, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 120 storing in window (0..191) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=0 .. V(R)=121) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=121, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 121 storing in window (0..191) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=0 .. V(R)=122) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=122, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 122 storing in window (0..191) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=0 .. V(R)=123) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=123, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 123 storing in window (0..191) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=0 .. V(R)=124) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=124, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 124 storing in window (0..191) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=0 .. V(R)=125) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=125, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 125 storing in window (0..191) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=0 .. V(R)=126) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=126, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 126 storing in window (0..191) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=0 .. V(R)=127) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=127, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 127 storing in window (0..191) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=0 .. V(R)=128) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=128, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 128 storing in window (0..191) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=0 .. V(R)=129) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=129, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 129 storing in window (0..191) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=0 .. V(R)=130) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=130, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 130 storing in window (0..191) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=0 .. V(R)=131) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=131, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 131 storing in window (0..191) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=0 .. V(R)=132) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=132, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 132 storing in window (0..191) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=0 .. V(R)=133) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=133, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 133 storing in window (0..191) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=0 .. V(R)=134) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=134, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 134 storing in window (0..191) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=0 .. V(R)=135) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=135, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 135 storing in window (0..191) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=0 .. V(R)=136) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=136, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 136 storing in window (0..191) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=0 .. V(R)=137) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=137, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 137 storing in window (0..191) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 @@ -7530,140 +7530,140 @@ Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=0 .. V(R)=138) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=138, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 138 storing in window (0..191) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=0 .. V(R)=139) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=139, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 139 storing in window (0..191) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=0 .. V(R)=140) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=140, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 140 storing in window (0..191) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=0 .. V(R)=141) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=141, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 141 storing in window (0..191) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=0 .. V(R)=142) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=142, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 142 storing in window (0..191) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=0 .. V(R)=143) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=143, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 143 storing in window (0..191) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=0 .. V(R)=144) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=144, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 144 storing in window (0..191) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=0 .. V(R)=145) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=145, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 145 storing in window (0..191) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=0 .. V(R)=146) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=146, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 146 storing in window (0..191) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=0 .. V(R)=147) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=147, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 147 storing in window (0..191) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=0 .. V(R)=148) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=148, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 148 storing in window (0..191) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=0 .. V(R)=149) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=149, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 149 storing in window (0..191) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=0 .. V(R)=150) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=150, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 150 storing in window (0..191) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=0 .. V(R)=151) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=151, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 151 storing in window (0..191) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=0 .. V(R)=152) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=152, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 152 storing in window (0..191) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=0 .. V(R)=153) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=153, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 153 storing in window (0..191) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=0 .. V(R)=154) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=154, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 154 storing in window (0..191) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=0 .. V(R)=155) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=155, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 155 storing in window (0..191) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=0 .. V(R)=156) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=156, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 156 storing in window (0..191) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=0 .. V(R)=157) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=157, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 157 storing in window (0..191) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 @@ -7672,14 +7672,14 @@ Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=0 .. V(R)=158) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=158, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 158 storing in window (0..191) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=0 .. V(R)=159) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=159, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 159 storing in window (0..191) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 @@ -7687,7 +7687,7 @@ Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=0 .. V(R)=160) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=0, BSN=64, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 64 storing in window (0..191) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 @@ -7740,7 +7740,7 @@ Modifying MS object, TLLI = 0x00000000, TA 220 -> 7 TBF(TFI=0 TLLI=0x00000000 DIR=UL STATE=NULL) changes state from NULL to FLOW TBF(TFI=0 TLLI=0x00000000 DIR=UL STATE=FLOW) set ass. type CCCH [prev CCCH:0, PACCH:0] -TBF(TFI=0 TLLI=0x00000000 DIR=UL STATE=FLOW) starting timer T3169 [RACH (new UL-TBF)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0x00000000 DIR=UL STATE=FLOW) starting timer T3169 [RACH (new UL-TBF)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0x00000000 DIR=UL STATE=FLOW) [UPLINK] START TBF(TFI=0 TLLI=0x00000000 DIR=UL STATE=FLOW) RX: [PCU <- BTS] RACH qbit-ta=31 ra=0x78, Fn=2654167 (17,25,9) TBF(TFI=0 TLLI=0x00000000 DIR=UL STATE=FLOW) TX: START Immediate Assignment Uplink (AGCH) @@ -7765,7 +7765,7 @@ Modifying MS object, TLLI = 0x00000000, TA 220 -> 7 TBF(TFI=1 TLLI=0x00000000 DIR=UL STATE=NULL) changes state from NULL to FLOW TBF(TFI=1 TLLI=0x00000000 DIR=UL STATE=FLOW) set ass. type CCCH [prev CCCH:0, PACCH:0] -TBF(TFI=1 TLLI=0x00000000 DIR=UL STATE=FLOW) starting timer T3169 [RACH (new UL-TBF)] with 0 sec. 0 microsec. +TBF(TFI=1 TLLI=0x00000000 DIR=UL STATE=FLOW) starting timer T3169 [RACH (new UL-TBF)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=1 TLLI=0x00000000 DIR=UL STATE=FLOW) [UPLINK] START TBF(TFI=1 TLLI=0x00000000 DIR=UL STATE=FLOW) RX: [PCU <- BTS] RACH qbit-ta=31 ra=0x79, Fn=2654167 (17,25,9) TBF(TFI=1 TLLI=0x00000000 DIR=UL STATE=FLOW) TX: START Immediate Assignment Uplink (AGCH) @@ -7790,7 +7790,7 @@ Modifying MS object, TLLI = 0x00000000, TA 220 -> 7 TBF(TFI=2 TLLI=0x00000000 DIR=UL STATE=NULL) changes state from NULL to FLOW TBF(TFI=2 TLLI=0x00000000 DIR=UL STATE=FLOW) set ass. type CCCH [prev CCCH:0, PACCH:0] -TBF(TFI=2 TLLI=0x00000000 DIR=UL STATE=FLOW) starting timer T3169 [RACH (new UL-TBF)] with 0 sec. 0 microsec. +TBF(TFI=2 TLLI=0x00000000 DIR=UL STATE=FLOW) starting timer T3169 [RACH (new UL-TBF)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=2 TLLI=0x00000000 DIR=UL STATE=FLOW) [UPLINK] START TBF(TFI=2 TLLI=0x00000000 DIR=UL STATE=FLOW) RX: [PCU <- BTS] RACH qbit-ta=31 ra=0x7a, Fn=2654167 (17,25,9) TBF(TFI=2 TLLI=0x00000000 DIR=UL STATE=FLOW) TX: START Immediate Assignment Uplink (AGCH) @@ -7815,7 +7815,7 @@ Modifying MS object, TLLI = 0x00000000, TA 220 -> 7 TBF(TFI=3 TLLI=0x00000000 DIR=UL STATE=NULL) changes state from NULL to FLOW TBF(TFI=3 TLLI=0x00000000 DIR=UL STATE=FLOW) set ass. type CCCH [prev CCCH:0, PACCH:0] -TBF(TFI=3 TLLI=0x00000000 DIR=UL STATE=FLOW) starting timer T3169 [RACH (new UL-TBF)] with 0 sec. 0 microsec. +TBF(TFI=3 TLLI=0x00000000 DIR=UL STATE=FLOW) starting timer T3169 [RACH (new UL-TBF)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=3 TLLI=0x00000000 DIR=UL STATE=FLOW) [UPLINK] START TBF(TFI=3 TLLI=0x00000000 DIR=UL STATE=FLOW) RX: [PCU <- BTS] RACH qbit-ta=31 ra=0x7b, Fn=2654167 (17,25,9) TBF(TFI=3 TLLI=0x00000000 DIR=UL STATE=FLOW) TX: START Immediate Assignment Uplink (AGCH) @@ -7840,7 +7840,7 @@ Modifying MS object, TLLI = 0x00000000, TA 220 -> 7 TBF(TFI=4 TLLI=0x00000000 DIR=UL STATE=NULL) changes state from NULL to FLOW TBF(TFI=4 TLLI=0x00000000 DIR=UL STATE=FLOW) set ass. type CCCH [prev CCCH:0, PACCH:0] -TBF(TFI=4 TLLI=0x00000000 DIR=UL STATE=FLOW) starting timer T3169 [RACH (new UL-TBF)] with 0 sec. 0 microsec. +TBF(TFI=4 TLLI=0x00000000 DIR=UL STATE=FLOW) starting timer T3169 [RACH (new UL-TBF)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=4 TLLI=0x00000000 DIR=UL STATE=FLOW) [UPLINK] START TBF(TFI=4 TLLI=0x00000000 DIR=UL STATE=FLOW) RX: [PCU <- BTS] RACH qbit-ta=31 ra=0x7c, Fn=2654167 (17,25,9) TBF(TFI=4 TLLI=0x00000000 DIR=UL STATE=FLOW) TX: START Immediate Assignment Uplink (AGCH) @@ -7865,7 +7865,7 @@ Modifying MS object, TLLI = 0x00000000, TA 220 -> 7 TBF(TFI=5 TLLI=0x00000000 DIR=UL STATE=NULL) changes state from NULL to FLOW TBF(TFI=5 TLLI=0x00000000 DIR=UL STATE=FLOW) set ass. type CCCH [prev CCCH:0, PACCH:0] -TBF(TFI=5 TLLI=0x00000000 DIR=UL STATE=FLOW) starting timer T3169 [RACH (new UL-TBF)] with 0 sec. 0 microsec. +TBF(TFI=5 TLLI=0x00000000 DIR=UL STATE=FLOW) starting timer T3169 [RACH (new UL-TBF)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=5 TLLI=0x00000000 DIR=UL STATE=FLOW) [UPLINK] START TBF(TFI=5 TLLI=0x00000000 DIR=UL STATE=FLOW) RX: [PCU <- BTS] RACH qbit-ta=31 ra=0x7d, Fn=2654167 (17,25,9) TBF(TFI=5 TLLI=0x00000000 DIR=UL STATE=FLOW) TX: START Immediate Assignment Uplink (AGCH) @@ -7890,7 +7890,7 @@ Modifying MS object, TLLI = 0x00000000, TA 220 -> 7 TBF(TFI=6 TLLI=0x00000000 DIR=UL STATE=NULL) changes state from NULL to FLOW TBF(TFI=6 TLLI=0x00000000 DIR=UL STATE=FLOW) set ass. type CCCH [prev CCCH:0, PACCH:0] -TBF(TFI=6 TLLI=0x00000000 DIR=UL STATE=FLOW) starting timer T3169 [RACH (new UL-TBF)] with 0 sec. 0 microsec. +TBF(TFI=6 TLLI=0x00000000 DIR=UL STATE=FLOW) starting timer T3169 [RACH (new UL-TBF)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=6 TLLI=0x00000000 DIR=UL STATE=FLOW) [UPLINK] START TBF(TFI=6 TLLI=0x00000000 DIR=UL STATE=FLOW) RX: [PCU <- BTS] RACH qbit-ta=31 ra=0x7e, Fn=2654167 (17,25,9) TBF(TFI=6 TLLI=0x00000000 DIR=UL STATE=FLOW) TX: START Immediate Assignment Uplink (AGCH) @@ -7922,7 +7922,7 @@ Attaching TBF to MS object, TLLI = 0xffeeddcc, TBF = TBF(TFI=0 TLLI=0xffeeddcc DIR=UL STATE=ASSIGN) TBF(TFI=0 TLLI=0xffeeddcc DIR=UL STATE=ASSIGN) changes UL ASS state from GPRS_RLCMAC_UL_ASS_NONE to GPRS_RLCMAC_UL_ASS_SEND_ASS_REJ Received RTS for PDCH: TRX=0 TS=7 FN=2654218 block_nr=8 scheduling USF=0 for required uplink resource of UL TFI=0 -TBF(TFI=0 TLLI=0xffeeddcc DIR=UL STATE=ASSIGN) starting timer T0 [reject (PACCH)] with 0 sec. 2000 microsec. +TBF(TFI=0 TLLI=0xffeeddcc DIR=UL STATE=ASSIGN) starting timer T0 [reject (PACCH)] with 0 sec. 2000 microsec, cur_fn=0 Scheduling control message at RTS for TBF(TFI=0 TLLI=0xffeeddcc DIR=UL STATE=ASSIGN) (TRX=0, TS=7) Destroying MS object, TLLI = 0x00000000 Creating MS object, TLLI = 0x00000000 @@ -7930,9 +7930,9 @@ TBF(TFI=0 TLLI=0x00000000 DIR=UL STATE=NULL) changes state from NULL to ASSIGN Attaching TBF to MS object, TLLI = 0xffeeddcc, TBF = TBF(TFI=0 TLLI=0xffeeddcc DIR=UL STATE=ASSIGN) TBF(TFI=0 TLLI=0xffeeddcc DIR=UL STATE=ASSIGN) changes UL ASS state from GPRS_RLCMAC_UL_ASS_NONE to GPRS_RLCMAC_UL_ASS_SEND_ASS_REJ -TBF(TFI=0 TLLI=0xffeeddcc DIR=UL STATE=ASSIGN) starting timer T0 [reject (PACCH)] with 0 sec. 2000 microsec. +TBF(TFI=0 TLLI=0xffeeddcc DIR=UL STATE=ASSIGN) starting timer T0 [reject (PACCH)] with 0 sec. 2000 microsec, cur_fn=0 Scheduling control message at RTS for TBF(TFI=0 TLLI=0xffeeddcc DIR=UL STATE=ASSIGN) (TRX=0, TS=7) -TBF(TFI=0 TLLI=0xffeeddcc DIR=UL STATE=ASSIGN) timer 0 expired. +TBF(TFI=0 TLLI=0xffeeddcc DIR=UL STATE=ASSIGN) timer 0 expired. cur_fn=0 TBF(TFI=0 TLLI=0xffeeddcc DIR=UL STATE=ASSIGN) releasing due to PACCH assignment timeout. TBF(TFI=0 TLLI=0xffeeddcc DIR=UL STATE=ASSIGN) free TBF(TFI=0 TLLI=0xffeeddcc DIR=UL STATE=ASSIGN) stopping timer T0 [freeing TBF] -- To view, visit https://gerrit.osmocom.org/7730 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newpatchset Gerrit-Change-Id: I5a744dc5cd7c1de1baea13fffac026c83d091429 Gerrit-PatchSet: 2 Gerrit-Project: osmo-pcu Gerrit-Branch: master Gerrit-Owner: dexter Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder From gerrit-no-reply at lists.osmocom.org Thu Apr 12 12:50:12 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Thu, 12 Apr 2018 12:50:12 +0000 Subject: osmo-pcu[master]: tbf: add frame number to log output In-Reply-To: References: Message-ID: Patch Set 2: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7730 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I5a744dc5cd7c1de1baea13fffac026c83d091429 Gerrit-PatchSet: 2 Gerrit-Project: osmo-pcu Gerrit-Branch: master Gerrit-Owner: dexter Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Thu Apr 12 12:50:16 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Thu, 12 Apr 2018 12:50:16 +0000 Subject: [MERGED] osmo-pcu[master]: tbf: add frame number to log output In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: tbf: add frame number to log output ...................................................................... tbf: add frame number to log output Currently, the TBF timer log messages lack the frame number in the logoutput - Add frame number to TBF timer related log-statements Change-Id: I5a744dc5cd7c1de1baea13fffac026c83d091429 Related: SYS#4139 Patch-by: Octasic inc. --- M src/tbf.cpp M tests/tbf/TbfTest.err 2 files changed, 293 insertions(+), 289 deletions(-) Approvals: Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/src/tbf.cpp b/src/tbf.cpp index 7036ea1..d5fbb3f 100644 --- a/src/tbf.cpp +++ b/src/tbf.cpp @@ -661,18 +661,20 @@ void gprs_rlcmac_tbf::t_start(enum tbf_timers t, uint32_t sec, uint32_t microsec, const char *reason, bool force, const char *file, unsigned line) { + int current_fn = get_current_fn(); + if (t >= T_MAX) { - LOGPSRC(DTBF, LOGL_ERROR, file, line, "%s attempting to start unknown timer %s [%s]\n", - tbf_name(this), get_value_string(tbf_timers_names, t), reason); + LOGPSRC(DTBF, LOGL_ERROR, file, line, "%s attempting to start unknown timer %s [%s], cur_fn=%d\n", + tbf_name(this), get_value_string(tbf_timers_names, t), reason, current_fn); return; } if (!force && osmo_timer_pending(&T[t])) return; - LOGPSRC(DTBF, LOGL_DEBUG, file, line, "%s %sstarting timer %s [%s] with %u sec. %u microsec.\n", + LOGPSRC(DTBF, LOGL_DEBUG, file, line, "%s %sstarting timer %s [%s] with %u sec. %u microsec, cur_fn=%d\n", tbf_name(this), osmo_timer_pending(&T[t]) ? "re" : "", - get_value_string(tbf_timers_names, t), reason, sec, microsec); + get_value_string(tbf_timers_names, t), reason, sec, microsec, current_fn); T[t].data = this; @@ -693,8 +695,8 @@ T[t].cb = cb_T3195; break; default: - LOGPSRC(DTBF, LOGL_ERROR, file, line, "%s attempting to set callback for unknown timer %s [%s]\n", - tbf_name(this), get_value_string(tbf_timers_names, t), reason); + LOGPSRC(DTBF, LOGL_ERROR, file, line, "%s attempting to set callback for unknown timer %s [%s], cur_fn=%d\n", + tbf_name(this), get_value_string(tbf_timers_names, t), reason, current_fn); } osmo_timer_schedule(&T[t], sec, microsec); @@ -1126,7 +1128,9 @@ void gprs_rlcmac_tbf::handle_timeout() { - LOGPTBF(this, LOGL_DEBUG, "timer 0 expired.\n"); + int current_fn = get_current_fn(); + + LOGPTBF(this, LOGL_DEBUG, "timer 0 expired. cur_fn=%d\n", current_fn); /* assignment */ if ((state_flags & (1 << GPRS_RLCMAC_FLAG_PACCH))) { diff --git a/tests/tbf/TbfTest.err b/tests/tbf/TbfTest.err index c899199..42b3b1c 100644 --- a/tests/tbf/TbfTest.err +++ b/tests/tbf/TbfTest.err @@ -87,7 +87,7 @@ TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW) downlink acknowledge TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW) Final ACK received. TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW) changes state from FLOW to WAIT RELEASE -TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT RELEASE) starting timer T3193 [release (DL-TBF)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT RELEASE) starting timer T3193 [release (DL-TBF)] with 0 sec. 0 microsec, cur_fn=0 ********** DL-TBF starts here ********** Allocating DL TBF: MS_CLASS=45/0 Slot Allocation (Algorithm A) for class 45 @@ -108,7 +108,7 @@ TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT RELEASE) changes DL ASS state from GPRS_RLCMAC_DL_ASS_WAIT_ACK to GPRS_RLCMAC_DL_ASS_SEND_ASS TBF(TFI=1 TLLI=0xffeeddcc DIR=DL STATE=NULL) changes state from NULL to ASSIGN TBF(TFI=1 TLLI=0xffeeddcc DIR=DL STATE=ASSIGN) set ass. type PACCH [prev CCCH:0, PACCH:0] -TBF(TFI=1 TLLI=0xffeeddcc DIR=DL STATE=ASSIGN) starting timer T0 [assignment (PACCH)] with 2 sec. 0 microsec. +TBF(TFI=1 TLLI=0xffeeddcc DIR=DL STATE=ASSIGN) starting timer T0 [assignment (PACCH)] with 2 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT RELEASE) changes DL ASS state from GPRS_RLCMAC_DL_ASS_SEND_ASS to GPRS_RLCMAC_DL_ASS_NONE TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT RELEASE) changes state from WAIT RELEASE to RELEASING TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=RELEASING) free @@ -175,7 +175,7 @@ TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW) downlink acknowledge TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW) Final ACK received. TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW) changes state from FLOW to WAIT RELEASE -TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT RELEASE) starting timer T3193 [release (DL-TBF)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT RELEASE) starting timer T3193 [release (DL-TBF)] with 0 sec. 0 microsec, cur_fn=0 ********** DL-TBF starts here ********** Allocating DL TBF: MS_CLASS=45/0 Slot Allocation (Algorithm A) for class 45 @@ -196,7 +196,7 @@ TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT RELEASE) changes DL ASS state from GPRS_RLCMAC_DL_ASS_WAIT_ACK to GPRS_RLCMAC_DL_ASS_SEND_ASS TBF(TFI=1 TLLI=0xffeeddcc DIR=DL STATE=NULL) changes state from NULL to ASSIGN TBF(TFI=1 TLLI=0xffeeddcc DIR=DL STATE=ASSIGN) set ass. type PACCH [prev CCCH:0, PACCH:0] -TBF(TFI=1 TLLI=0xffeeddcc DIR=DL STATE=ASSIGN) starting timer T0 [assignment (PACCH)] with 2 sec. 0 microsec. +TBF(TFI=1 TLLI=0xffeeddcc DIR=DL STATE=ASSIGN) starting timer T0 [assignment (PACCH)] with 2 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT RELEASE) changes DL ASS state from GPRS_RLCMAC_DL_ASS_SEND_ASS to GPRS_RLCMAC_DL_ASS_NONE TBF(TFI=1 TLLI=0xffeeddcc DIR=DL STATE=ASSIGN) changes state from ASSIGN to RELEASING TBF(TFI=1 TLLI=0xffeeddcc DIR=DL STATE=RELEASING) free @@ -455,7 +455,7 @@ TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FINISHED) downlink acknowledge TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FINISHED) Final ACK received. TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FINISHED) changes state from FINISHED to WAIT RELEASE -TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT RELEASE) starting timer T3193 [release (DL-TBF)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT RELEASE) starting timer T3193 [release (DL-TBF)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT RELEASE) changes DL ASS state from GPRS_RLCMAC_DL_ASS_WAIT_ACK to GPRS_RLCMAC_DL_ASS_NONE TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT RELEASE) changes state from WAIT RELEASE to RELEASING TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=RELEASING) free @@ -1446,14 +1446,14 @@ Modifying MS object, TLLI = 0x00000000, TA 220 -> 7 TBF(TFI=0 TLLI=0x00000000 DIR=UL STATE=NULL) changes state from NULL to FLOW TBF(TFI=0 TLLI=0x00000000 DIR=UL STATE=FLOW) set ass. type CCCH [prev CCCH:0, PACCH:0] -TBF(TFI=0 TLLI=0x00000000 DIR=UL STATE=FLOW) starting timer T3169 [RACH (new UL-TBF)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0x00000000 DIR=UL STATE=FLOW) starting timer T3169 [RACH (new UL-TBF)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0x00000000 DIR=UL STATE=FLOW) [UPLINK] START TBF(TFI=0 TLLI=0x00000000 DIR=UL STATE=FLOW) RX: [PCU <- BTS] RACH qbit-ta=31 ra=0x03, Fn=2654167 (17,25,9) TBF(TFI=0 TLLI=0x00000000 DIR=UL STATE=FLOW) TX: START Immediate Assignment Uplink (AGCH) - TRX=0 (0) TS=7 TA=7 TSC=0 TFI=0 USF=0 Got CS-1 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=184 TBF(TFI=0 TLLI=0x00000000 DIR=UL STATE=FLOW) UL DATA TFI=0 received (V(Q)=0 .. V(R)=0) -TBF(TFI=0 TLLI=0x00000000 DIR=UL STATE=FLOW) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0x00000000 DIR=UL STATE=FLOW) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0x00000000 DIR=UL STATE=FLOW) Got CS-1 RLC data block: CV=0, BSN=0, SPB=0, PI=0, E=1, TI=1, bitoffs=24 TBF(TFI=0 TLLI=0x00000000 DIR=UL STATE=FLOW) BSN 0 storing in window (0..63) TBF(TFI=0 TLLI=0x00000000 DIR=UL STATE=FLOW) data_length=20, data=f1 22 33 44 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 @@ -1523,7 +1523,7 @@ Attaching TBF to MS object, TLLI = 0x00000000, TBF = TBF(TFI=0 TLLI=0x00000000 DIR=UL STATE=NULL) TBF(TFI=0 TLLI=0x00000000 DIR=UL STATE=NULL) Allocated: trx = 0, ul_slots = 80, dl_slots = 00 TBF(TFI=0 TLLI=0x00000000 DIR=UL STATE=NULL) changes state from NULL to ASSIGN -TBF(TFI=0 TLLI=0x00000000 DIR=UL STATE=ASSIGN) starting timer T3169 [allocation (UL-TBF)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0x00000000 DIR=UL STATE=ASSIGN) starting timer T3169 [allocation (UL-TBF)] with 0 sec. 0 microsec, cur_fn=0 Modifying MS object, UL TLLI: 0x00000000 -> 0xf1223344, not yet confirmed Modifying MS object, TLLI = 0xf1223344, TA 220 -> 7 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=ASSIGN) change control TS 7 -> 7 until assinment is complete. @@ -1542,7 +1542,7 @@ TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=ASSIGN) changes state from ASSIGN to FLOW Got CS-1 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=184 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW) UL DATA TFI=0 received (V(Q)=0 .. V(R)=0) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW) Got CS-1 RLC data block: CV=15, BSN=0, SPB=0, PI=0, E=1, TI=0, bitoffs=24 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW) BSN 0 storing in window (0..63) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW) data_length=20, data=00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 @@ -1573,7 +1573,7 @@ TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW) changes DL ASS state from GPRS_RLCMAC_DL_ASS_NONE to GPRS_RLCMAC_DL_ASS_SEND_ASS TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=NULL) changes state from NULL to ASSIGN TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=ASSIGN) set ass. type PACCH [prev CCCH:0, PACCH:0] -TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=ASSIGN) starting timer T0 [assignment (PACCH)] with 2 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=ASSIGN) starting timer T0 [assignment (PACCH)] with 2 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=ASSIGN) appending 4 bytes MS requests UL TBF on RACH, so we provide one: ra=0x73 Fn=2654167 qta=31 is_11bit=0: MS requests single block allocation @@ -1603,7 +1603,7 @@ Attaching TBF to MS object, TLLI = 0x00000000, TBF = TBF(TFI=0 TLLI=0x00000000 DIR=UL STATE=NULL) TBF(TFI=0 TLLI=0x00000000 DIR=UL STATE=NULL) Allocated: trx = 0, ul_slots = 80, dl_slots = 00 TBF(TFI=0 TLLI=0x00000000 DIR=UL STATE=NULL) changes state from NULL to ASSIGN -TBF(TFI=0 TLLI=0x00000000 DIR=UL STATE=ASSIGN) starting timer T3169 [allocation (UL-TBF)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0x00000000 DIR=UL STATE=ASSIGN) starting timer T3169 [allocation (UL-TBF)] with 0 sec. 0 microsec, cur_fn=0 Modifying MS object, UL TLLI: 0x00000000 -> 0xf1223344, not yet confirmed Modifying MS object, TLLI = 0xf1223344, TA 220 -> 7 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=ASSIGN) change control TS 7 -> 7 until assinment is complete. @@ -1622,7 +1622,7 @@ TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=ASSIGN) changes state from ASSIGN to FLOW Got CS-1 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=184 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW) UL DATA TFI=0 received (V(Q)=0 .. V(R)=0) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW) Got CS-1 RLC data block: CV=15, BSN=0, SPB=0, PI=0, E=1, TI=0, bitoffs=24 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW) BSN 0 storing in window (0..63) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW) data_length=20, data=00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 @@ -1652,7 +1652,7 @@ TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW) changes DL ASS state from GPRS_RLCMAC_DL_ASS_NONE to GPRS_RLCMAC_DL_ASS_SEND_ASS TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=NULL) changes state from NULL to ASSIGN TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=ASSIGN) set ass. type PACCH [prev CCCH:0, PACCH:0] -TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=ASSIGN) starting timer T0 [assignment (PACCH)] with 2 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=ASSIGN) starting timer T0 [assignment (PACCH)] with 2 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=ASSIGN) appending 10 bytes Old MS: TLLI = 0xf1223344, TA = 7, IMSI = 0011223344, LLC = 1 Received RTS for PDCH: TRX=0 TS=7 FN=2654275 block_nr=9 scheduling USF=0 for required uplink resource of UL TFI=0 @@ -1689,7 +1689,7 @@ TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=FINISHED) Copying data unit 0 (BSN 0) TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=FINISHED) Scheduling Ack/Nack polling, because is was requested explicitly (e.g. first final block sent). TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=FINISHED) Scheduled DL Acknowledgement polling on PACCH (FN=2654292, TS=7) -TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=FINISHED) starting timer T3191 [final block (DL-TBF)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=FINISHED) starting timer T3191 [final block (DL-TBF)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=FINISHED) Scheduled Ack/Nack polling on FN=2654292, TS=7 TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=FINISHED) msg block (BSN 0, CS-4): 0f 01 00 29 52 41 55 5f 41 43 43 45 50 54 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 00 Received RTS for PDCH: TRX=0 TS=7 FN=2654283 block_nr=11 scheduling USF=0 for required uplink resource of UL TFI=0 @@ -1733,7 +1733,7 @@ Attaching TBF to MS object, TLLI = 0x00000000, TBF = TBF(TFI=1 TLLI=0x00000000 DIR=UL STATE=NULL) TBF(TFI=1 TLLI=0x00000000 DIR=UL STATE=NULL) Allocated: trx = 0, ul_slots = 80, dl_slots = 00 TBF(TFI=1 TLLI=0x00000000 DIR=UL STATE=NULL) changes state from NULL to ASSIGN -TBF(TFI=1 TLLI=0x00000000 DIR=UL STATE=ASSIGN) starting timer T3169 [allocation (UL-TBF)] with 0 sec. 0 microsec. +TBF(TFI=1 TLLI=0x00000000 DIR=UL STATE=ASSIGN) starting timer T3169 [allocation (UL-TBF)] with 0 sec. 0 microsec, cur_fn=0 Modifying MS object, UL TLLI: 0x00000000 -> 0xf5667788, not yet confirmed Modifying MS object, TLLI = 0xf5667788, TA 220 -> 7 TBF(TFI=1 TLLI=0xf5667788 DIR=UL STATE=ASSIGN) change control TS 7 -> 7 until assinment is complete. @@ -1753,7 +1753,7 @@ TBF(TFI=1 TLLI=0xf5667788 DIR=UL STATE=ASSIGN) changes state from ASSIGN to FLOW Got CS-1 RLC block: R=0, SI=0, TFI=1, CPS=0, RSB=0, rc=184 TBF(TFI=1 TLLI=0xf5667788 DIR=UL STATE=FLOW) UL DATA TFI=1 received (V(Q)=0 .. V(R)=0) -TBF(TFI=1 TLLI=0xf5667788 DIR=UL STATE=FLOW) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=1 TLLI=0xf5667788 DIR=UL STATE=FLOW) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=1 TLLI=0xf5667788 DIR=UL STATE=FLOW) Got CS-1 RLC data block: CV=15, BSN=0, SPB=0, PI=0, E=1, TI=0, bitoffs=24 TBF(TFI=1 TLLI=0xf5667788 DIR=UL STATE=FLOW) BSN 0 storing in window (0..63) TBF(TFI=1 TLLI=0xf5667788 DIR=UL STATE=FLOW) data_length=20, data=00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 @@ -1798,7 +1798,7 @@ Attaching TBF to MS object, TLLI = 0x00000000, TBF = TBF(TFI=0 TLLI=0x00000000 DIR=UL STATE=NULL) TBF(TFI=0 TLLI=0x00000000 DIR=UL STATE=NULL) Allocated: trx = 0, ul_slots = 80, dl_slots = 00 TBF(TFI=0 TLLI=0x00000000 DIR=UL STATE=NULL) changes state from NULL to ASSIGN -TBF(TFI=0 TLLI=0x00000000 DIR=UL STATE=ASSIGN) starting timer T3169 [allocation (UL-TBF)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0x00000000 DIR=UL STATE=ASSIGN) starting timer T3169 [allocation (UL-TBF)] with 0 sec. 0 microsec, cur_fn=0 Modifying MS object, UL TLLI: 0x00000000 -> 0xf1223344, not yet confirmed Modifying MS object, TLLI = 0xf1223344, TA 220 -> 7 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=ASSIGN) change control TS 7 -> 7 until assinment is complete. @@ -1817,7 +1817,7 @@ TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=ASSIGN) changes state from ASSIGN to FLOW Got CS-1 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=184 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW) UL DATA TFI=0 received (V(Q)=0 .. V(R)=0) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW) Got CS-1 RLC data block: CV=15, BSN=0, SPB=0, PI=0, E=1, TI=0, bitoffs=24 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW) BSN 0 storing in window (0..63) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW) data_length=20, data=00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 @@ -1847,7 +1847,7 @@ TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW) changes DL ASS state from GPRS_RLCMAC_DL_ASS_NONE to GPRS_RLCMAC_DL_ASS_SEND_ASS TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=NULL) changes state from NULL to ASSIGN TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=ASSIGN) set ass. type PACCH [prev CCCH:0, PACCH:0] -TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=ASSIGN) starting timer T0 [assignment (PACCH)] with 2 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=ASSIGN) starting timer T0 [assignment (PACCH)] with 2 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=ASSIGN) appending 20 bytes TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=ASSIGN) appending 20 bytes Old MS: TLLI = 0xf1223344, TA = 7, IMSI = 0011223344, LLC = 2 @@ -1891,7 +1891,7 @@ Attaching TBF to MS object, TLLI = 0xf1223344, TBF = TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=NULL) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=NULL) Allocated: trx = 0, ul_slots = 80, dl_slots = 00 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=NULL) changes state from NULL to ASSIGN -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=ASSIGN) starting timer T3169 [allocation (UL-TBF)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=ASSIGN) starting timer T3169 [allocation (UL-TBF)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=ASSIGN) change control TS 7 -> 7 until assinment is complete. TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=ASSIGN) changes UL ASS state from GPRS_RLCMAC_UL_ASS_NONE to GPRS_RLCMAC_UL_ASS_SEND_ASS TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=ASSIGN) start Packet Uplink Assignment (PACCH) @@ -1926,10 +1926,10 @@ TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW) changes DL ASS state from GPRS_RLCMAC_DL_ASS_NONE to GPRS_RLCMAC_DL_ASS_SEND_ASS TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=NULL) changes state from NULL to ASSIGN TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=ASSIGN) set ass. type PACCH [prev CCCH:0, PACCH:0] -TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=ASSIGN) starting timer T0 [assignment (PACCH)] with 2 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=ASSIGN) starting timer T0 [assignment (PACCH)] with 2 sec. 0 microsec, cur_fn=0 Got CS-1 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=184 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW) UL DATA TFI=0 received (V(Q)=0 .. V(R)=0) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW) Got CS-1 RLC data block: CV=15, BSN=0, SPB=0, PI=0, E=1, TI=0, bitoffs=24 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW) BSN 0 storing in window (0..63) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW) data_length=20, data=00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 @@ -1965,7 +1965,7 @@ Attaching TBF to MS object, TLLI = 0x00000000, TBF = TBF(TFI=0 TLLI=0x00000000 DIR=UL STATE=NULL) TBF(TFI=0 TLLI=0x00000000 DIR=UL STATE=NULL) Allocated: trx = 0, ul_slots = 80, dl_slots = 00 TBF(TFI=0 TLLI=0x00000000 DIR=UL STATE=NULL) changes state from NULL to ASSIGN -TBF(TFI=0 TLLI=0x00000000 DIR=UL STATE=ASSIGN) starting timer T3169 [allocation (UL-TBF)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0x00000000 DIR=UL STATE=ASSIGN) starting timer T3169 [allocation (UL-TBF)] with 0 sec. 0 microsec, cur_fn=0 Modifying MS object, UL TLLI: 0x00000000 -> 0xf1223344, not yet confirmed Modifying MS object, TLLI = 0xf1223344, TA 220 -> 7 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=ASSIGN) change control TS 7 -> 7 until assinment is complete. @@ -1984,7 +1984,7 @@ TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=ASSIGN) changes state from ASSIGN to FLOW Got CS-1 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=184 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW) UL DATA TFI=0 received (V(Q)=0 .. V(R)=0) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW) Got CS-1 RLC data block: CV=15, BSN=0, SPB=0, PI=0, E=1, TI=0, bitoffs=24 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW) BSN 0 storing in window (0..63) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW) data_length=20, data=00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 @@ -2014,7 +2014,7 @@ TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW) changes DL ASS state from GPRS_RLCMAC_DL_ASS_NONE to GPRS_RLCMAC_DL_ASS_SEND_ASS TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=NULL) changes state from NULL to ASSIGN TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=ASSIGN) set ass. type PACCH [prev CCCH:0, PACCH:0] -TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=ASSIGN) starting timer T0 [assignment (PACCH)] with 2 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=ASSIGN) starting timer T0 [assignment (PACCH)] with 2 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=ASSIGN) appending 20 bytes TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=ASSIGN) appending 20 bytes Old MS: TLLI = 0xf1223344, TA = 7, IMSI = 0011223344, LLC = 2 @@ -2047,14 +2047,14 @@ Modifying MS object, TLLI = 0x00000000, TA 220 -> 7 TBF(TFI=0 TLLI=0x00000000 DIR=UL STATE=NULL) changes state from NULL to FLOW TBF(TFI=0 TLLI=0x00000000 DIR=UL STATE=FLOW) set ass. type CCCH [prev CCCH:0, PACCH:0] -TBF(TFI=0 TLLI=0x00000000 DIR=UL STATE=FLOW) starting timer T3169 [RACH (new UL-TBF)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0x00000000 DIR=UL STATE=FLOW) starting timer T3169 [RACH (new UL-TBF)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0x00000000 DIR=UL STATE=FLOW) [UPLINK] START TBF(TFI=0 TLLI=0x00000000 DIR=UL STATE=FLOW) RX: [PCU <- BTS] RACH qbit-ta=31 ra=0x03, Fn=2654275 (17,31,13) TBF(TFI=0 TLLI=0x00000000 DIR=UL STATE=FLOW) TX: START Immediate Assignment Uplink (AGCH) - TRX=0 (0) TS=7 TA=7 TSC=0 TFI=0 USF=0 Got CS-1 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=184 TBF(TFI=0 TLLI=0x00000000 DIR=UL STATE=FLOW) UL DATA TFI=0 received (V(Q)=0 .. V(R)=0) -TBF(TFI=0 TLLI=0x00000000 DIR=UL STATE=FLOW) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0x00000000 DIR=UL STATE=FLOW) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0x00000000 DIR=UL STATE=FLOW) Got CS-1 RLC data block: CV=0, BSN=0, SPB=0, PI=0, E=1, TI=1, bitoffs=24 TBF(TFI=0 TLLI=0x00000000 DIR=UL STATE=FLOW) BSN 0 storing in window (0..63) TBF(TFI=0 TLLI=0x00000000 DIR=UL STATE=FLOW) data_length=20, data=f1 22 33 44 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 @@ -2111,7 +2111,7 @@ Attaching TBF to MS object, TLLI = 0x00000000, TBF = TBF(TFI=0 TLLI=0x00000000 DIR=UL STATE=NULL) TBF(TFI=0 TLLI=0x00000000 DIR=UL STATE=NULL) Allocated: trx = 0, ul_slots = 80, dl_slots = 00 TBF(TFI=0 TLLI=0x00000000 DIR=UL STATE=NULL) changes state from NULL to ASSIGN -TBF(TFI=0 TLLI=0x00000000 DIR=UL STATE=ASSIGN) starting timer T3169 [allocation (UL-TBF)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0x00000000 DIR=UL STATE=ASSIGN) starting timer T3169 [allocation (UL-TBF)] with 0 sec. 0 microsec, cur_fn=0 Modifying MS object, UL TLLI: 0x00000000 -> 0xf1223344, not yet confirmed Modifying MS object, TLLI = 0xf1223344, TA 220 -> 7 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=ASSIGN) change control TS 7 -> 7 until assinment is complete. @@ -2130,7 +2130,7 @@ TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=ASSIGN) changes state from ASSIGN to FLOW Got CS-1 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=184 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW) UL DATA TFI=0 received (V(Q)=0 .. V(R)=0) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW) Got CS-1 RLC data block: CV=15, BSN=0, SPB=0, PI=0, E=1, TI=0, bitoffs=24 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW) BSN 0 storing in window (0..63) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW) data_length=20, data=00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 @@ -2160,7 +2160,7 @@ TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW) changes DL ASS state from GPRS_RLCMAC_DL_ASS_NONE to GPRS_RLCMAC_DL_ASS_SEND_ASS TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=NULL) changes state from NULL to ASSIGN TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=ASSIGN) set ass. type PACCH [prev CCCH:0, PACCH:0] -TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=ASSIGN) starting timer T0 [assignment (PACCH)] with 2 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=ASSIGN) starting timer T0 [assignment (PACCH)] with 2 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=ASSIGN) appending 13 bytes TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=ASSIGN) appending 13 bytes TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=ASSIGN) appending 13 bytes @@ -2771,7 +2771,7 @@ TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=FINISHED) V(B): (V(A)=28)""(V(S)-1=27) A=Acked N=Nacked U=Unacked X=Resend-Unacked I=Invalid TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=FINISHED) Final ACK received. TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=FINISHED) changes state from FINISHED to WAIT RELEASE -TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=WAIT RELEASE) starting timer T3193 [release (DL-TBF)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=WAIT RELEASE) starting timer T3193 [release (DL-TBF)] with 0 sec. 0 microsec, cur_fn=0 ********** DL-TBF starts here ********** Allocating DL TBF: MS_CLASS=1/0 Slot Allocation (Algorithm A) for class 1 @@ -2792,7 +2792,7 @@ TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=WAIT RELEASE) changes DL ASS state from GPRS_RLCMAC_DL_ASS_NONE to GPRS_RLCMAC_DL_ASS_SEND_ASS TBF(TFI=1 TLLI=0xf1223344 DIR=DL STATE=NULL) changes state from NULL to ASSIGN TBF(TFI=1 TLLI=0xf1223344 DIR=DL STATE=ASSIGN) set ass. type PACCH [prev CCCH:0, PACCH:0] -TBF(TFI=1 TLLI=0xf1223344 DIR=DL STATE=ASSIGN) starting timer T0 [assignment (PACCH)] with 2 sec. 0 microsec. +TBF(TFI=1 TLLI=0xf1223344 DIR=DL STATE=ASSIGN) starting timer T0 [assignment (PACCH)] with 2 sec. 0 microsec, cur_fn=0 Received RTS for PDCH: TRX=0 TS=7 FN=2654400 block_nr=2 scheduling USF=0 for required uplink resource of UL TFI=0 TBF(TFI=1 TLLI=0xf1223344 DIR=DL STATE=ASSIGN) start Packet Downlink Assignment (PACCH) +++++++++++++++++++++++++ TX : Packet Downlink Assignment +++++++++++++++++++++++++ @@ -3011,7 +3011,7 @@ TBF(TFI=1 TLLI=0xf1223344 DIR=DL STATE=FINISHED) Copying data unit 0 (BSN 10) TBF(TFI=1 TLLI=0xf1223344 DIR=DL STATE=FINISHED) Scheduling Ack/Nack polling, because is was requested explicitly (e.g. first final block sent). TBF(TFI=1 TLLI=0xf1223344 DIR=DL STATE=FINISHED) Scheduled DL Acknowledgement polling on PACCH (FN=2654461, TS=7) -TBF(TFI=1 TLLI=0xf1223344 DIR=DL STATE=FINISHED) starting timer T3191 [final block (DL-TBF)] with 0 sec. 0 microsec. +TBF(TFI=1 TLLI=0xf1223344 DIR=DL STATE=FINISHED) starting timer T3191 [final block (DL-TBF)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=1 TLLI=0xf1223344 DIR=DL STATE=FINISHED) Scheduled Ack/Nack polling on FN=2654461, TS=7 TBF(TFI=1 TLLI=0xf1223344 DIR=DL STATE=FINISHED) msg block (BSN 10, CS-1): 0f 03 14 4d 43 20 50 41 43 4b 45 54 20 30 39 20 28 54 42 46 20 32 29 Not accepting non-EGPRS phone in EGPRS-only mode @@ -3127,7 +3127,7 @@ TBF(TFI=0 TLLI=0x00000000 DIR=UL STATE=NULL EGPRS) setting EGPRS UL window size to 64, base(0) slots(1) ws_pdch(0) ws(64) TBF(TFI=0 TLLI=0x00000000 DIR=UL STATE=NULL EGPRS) changes state from NULL to ASSIGN -TBF(TFI=0 TLLI=0x00000000 DIR=UL STATE=ASSIGN EGPRS) starting timer T3169 [allocation (UL-TBF)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0x00000000 DIR=UL STATE=ASSIGN EGPRS) starting timer T3169 [allocation (UL-TBF)] with 0 sec. 0 microsec, cur_fn=0 Modifying MS object, UL TLLI: 0x00000000 -> 0xf1223344, not yet confirmed Modifying MS object, TLLI = 0xf1223344, TA 220 -> 7 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=ASSIGN EGPRS) change control TS 7 -> 7 until assinment is complete. @@ -3148,7 +3148,7 @@ Got CS-1 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=184 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=0 .. V(R)=0) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got CS-1 RLC data block: CV=15, BSN=0, SPB=0, PI=0, E=1, TI=0, bitoffs=24 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 0 storing in window (0..63) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=20, data=00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 @@ -3182,7 +3182,7 @@ TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) changes DL ASS state from GPRS_RLCMAC_DL_ASS_NONE to GPRS_RLCMAC_DL_ASS_SEND_ASS TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=NULL EGPRS) changes state from NULL to ASSIGN TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=ASSIGN EGPRS) set ass. type PACCH [prev CCCH:0, PACCH:0] -TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=ASSIGN EGPRS) starting timer T0 [assignment (PACCH)] with 2 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=ASSIGN EGPRS) starting timer T0 [assignment (PACCH)] with 2 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=ASSIGN EGPRS) appending 256 bytes MS requests UL TBF on RACH, so we provide one: ra=0x73 Fn=2654167 qta=31 is_11bit=0: MS requests single block allocation @@ -3217,7 +3217,7 @@ TBF(TFI=0 TLLI=0x00000000 DIR=UL STATE=NULL EGPRS) setting EGPRS UL window size to 64, base(0) slots(1) ws_pdch(0) ws(64) TBF(TFI=0 TLLI=0x00000000 DIR=UL STATE=NULL EGPRS) changes state from NULL to ASSIGN -TBF(TFI=0 TLLI=0x00000000 DIR=UL STATE=ASSIGN EGPRS) starting timer T3169 [allocation (UL-TBF)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0x00000000 DIR=UL STATE=ASSIGN EGPRS) starting timer T3169 [allocation (UL-TBF)] with 0 sec. 0 microsec, cur_fn=0 Modifying MS object, UL TLLI: 0x00000000 -> 0xf1223344, not yet confirmed Modifying MS object, TLLI = 0xf1223344, TA 220 -> 7 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=ASSIGN EGPRS) change control TS 7 -> 7 until assinment is complete. @@ -3238,7 +3238,7 @@ Got CS-1 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=184 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=0 .. V(R)=0) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got CS-1 RLC data block: CV=15, BSN=0, SPB=0, PI=0, E=1, TI=0, bitoffs=24 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 0 storing in window (0..63) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=20, data=00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 @@ -3248,7 +3248,7 @@ Got MCS-3 RLC block: R=1, SI=1, TFI=0, CPS=5, RSB=0, rc=329 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=1 .. V(R)=1) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-3 RLC data block: CV=7, BSN=1, SPB=2, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 1 storing in window (1..64) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got SPB(2) cs(MCS-3) data block with BSN (1), TFI(0). @@ -3256,7 +3256,7 @@ Got MCS-3 RLC block: R=1, SI=1, TFI=0, CPS=5, RSB=0, rc=329 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=1 .. V(R)=1) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-3 RLC data block: CV=7, BSN=1, SPB=3, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 1 storing in window (1..64) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got SPB(3) cs(MCS-3) data block with BSN (1), TFI(0). @@ -3271,7 +3271,7 @@ Got MCS-3 RLC block: R=1, SI=1, TFI=0, CPS=5, RSB=0, rc=329 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=2 .. V(R)=2) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-3 RLC data block: CV=7, BSN=2, SPB=3, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 2 storing in window (2..65) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got SPB(3) cs(MCS-3) data block with BSN (2), TFI(0). @@ -3279,7 +3279,7 @@ Got MCS-3 RLC block: R=1, SI=1, TFI=0, CPS=5, RSB=0, rc=329 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=2 .. V(R)=2) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-3 RLC data block: CV=7, BSN=2, SPB=2, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 2 storing in window (2..65) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got SPB(2) cs(MCS-3) data block with BSN (2), TFI(0). @@ -3294,7 +3294,7 @@ Got MCS-3 RLC block: R=1, SI=1, TFI=0, CPS=5, RSB=0, rc=329 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=3 .. V(R)=3) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-3 RLC data block: CV=7, BSN=3, SPB=1, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 3 storing in window (3..66) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got SPB(1) cs(MCS-3) data block with BSN (3), TFI(0). @@ -3302,7 +3302,7 @@ Got MCS-3 RLC block: R=1, SI=1, TFI=0, CPS=5, RSB=0, rc=329 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=3 .. V(R)=3) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-3 RLC data block: CV=7, BSN=3, SPB=2, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 3 storing in window (3..66) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got SPB(2) cs(MCS-3) data block with BSN (3), TFI(0). @@ -3310,7 +3310,7 @@ Got MCS-3 RLC block: R=1, SI=1, TFI=0, CPS=5, RSB=0, rc=329 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=3 .. V(R)=3) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-3 RLC data block: CV=7, BSN=3, SPB=3, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 3 storing in window (3..66) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got SPB(3) cs(MCS-3) data block with BSN (3), TFI(0). @@ -3325,7 +3325,7 @@ Got MCS-3 RLC block: R=1, SI=1, TFI=0, CPS=5, RSB=0, rc=329 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=4 .. V(R)=4) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-3 RLC data block: CV=7, BSN=4, SPB=2, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 4 storing in window (4..67) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got SPB(2) cs(MCS-3) data block with BSN (4), TFI(0). @@ -3333,14 +3333,14 @@ Got MCS-3 RLC block: R=1, SI=1, TFI=0, CPS=5, RSB=0, rc=329 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=4 .. V(R)=4) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-3 RLC data block: CV=7, BSN=4, SPB=2, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 4 storing in window (4..67) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got SPB(2) cs(MCS-3) data block with BSN (4), TFI(0). Got MCS-3 RLC block: R=1, SI=1, TFI=0, CPS=5, RSB=0, rc=329 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=4 .. V(R)=4) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-3 RLC data block: CV=7, BSN=4, SPB=3, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 4 storing in window (4..67) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got SPB(3) cs(MCS-3) data block with BSN (4), TFI(0). @@ -3355,7 +3355,7 @@ Got MCS-3 RLC block: R=1, SI=1, TFI=0, CPS=5, RSB=0, rc=329 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=5 .. V(R)=5) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-3 RLC data block: CV=7, BSN=5, SPB=3, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 5 storing in window (5..68) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got SPB(3) cs(MCS-3) data block with BSN (5), TFI(0). @@ -3363,7 +3363,7 @@ Got MCS-3 RLC block: R=1, SI=1, TFI=0, CPS=5, RSB=0, rc=329 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=5 .. V(R)=5) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-3 RLC data block: CV=7, BSN=5, SPB=2, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 5 storing in window (5..68) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got SPB(2) cs(MCS-3) data block with BSN (5), TFI(0). @@ -3402,7 +3402,7 @@ TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) changes DL ASS state from GPRS_RLCMAC_DL_ASS_NONE to GPRS_RLCMAC_DL_ASS_SEND_ASS TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=NULL EGPRS) changes state from NULL to ASSIGN TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=ASSIGN EGPRS) set ass. type PACCH [prev CCCH:0, PACCH:0] -TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=ASSIGN EGPRS) starting timer T0 [assignment (PACCH)] with 2 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=ASSIGN EGPRS) starting timer T0 [assignment (PACCH)] with 2 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=ASSIGN EGPRS) appending 256 bytes Searching for first unallocated TFI: TRX=0 Found TFI=0. @@ -3701,7 +3701,7 @@ TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) downlink acknowledge TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) Final ACK received. TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) changes state from FLOW to WAIT RELEASE -TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT RELEASE EGPRS) starting timer T3193 [release (DL-TBF)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT RELEASE EGPRS) starting timer T3193 [release (DL-TBF)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT RELEASE EGPRS) changes DL ASS state from GPRS_RLCMAC_DL_ASS_WAIT_ACK to GPRS_RLCMAC_DL_ASS_NONE TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT RELEASE EGPRS) changes state from WAIT RELEASE to RELEASING TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=RELEASING EGPRS) free @@ -3957,7 +3957,7 @@ TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) downlink acknowledge TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) Final ACK received. TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) changes state from FLOW to WAIT RELEASE -TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT RELEASE EGPRS) starting timer T3193 [release (DL-TBF)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT RELEASE EGPRS) starting timer T3193 [release (DL-TBF)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT RELEASE EGPRS) changes DL ASS state from GPRS_RLCMAC_DL_ASS_WAIT_ACK to GPRS_RLCMAC_DL_ASS_NONE TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT RELEASE EGPRS) changes state from WAIT RELEASE to RELEASING TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=RELEASING EGPRS) free @@ -4175,7 +4175,7 @@ TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) downlink acknowledge TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) Final ACK received. TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) changes state from FLOW to WAIT RELEASE -TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT RELEASE EGPRS) starting timer T3193 [release (DL-TBF)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT RELEASE EGPRS) starting timer T3193 [release (DL-TBF)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT RELEASE EGPRS) changes DL ASS state from GPRS_RLCMAC_DL_ASS_WAIT_ACK to GPRS_RLCMAC_DL_ASS_NONE TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT RELEASE EGPRS) changes state from WAIT RELEASE to RELEASING TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=RELEASING EGPRS) free @@ -4361,7 +4361,7 @@ TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) downlink acknowledge TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) Final ACK received. TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) changes state from FLOW to WAIT RELEASE -TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT RELEASE EGPRS) starting timer T3193 [release (DL-TBF)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT RELEASE EGPRS) starting timer T3193 [release (DL-TBF)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT RELEASE EGPRS) changes DL ASS state from GPRS_RLCMAC_DL_ASS_WAIT_ACK to GPRS_RLCMAC_DL_ASS_NONE TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT RELEASE EGPRS) changes state from WAIT RELEASE to RELEASING TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=RELEASING EGPRS) free @@ -4527,7 +4527,7 @@ TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) downlink acknowledge TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) Final ACK received. TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) changes state from FLOW to WAIT RELEASE -TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT RELEASE EGPRS) starting timer T3193 [release (DL-TBF)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT RELEASE EGPRS) starting timer T3193 [release (DL-TBF)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT RELEASE EGPRS) changes DL ASS state from GPRS_RLCMAC_DL_ASS_WAIT_ACK to GPRS_RLCMAC_DL_ASS_NONE TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT RELEASE EGPRS) changes state from WAIT RELEASE to RELEASING TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=RELEASING EGPRS) free @@ -4675,7 +4675,7 @@ TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) downlink acknowledge TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) Final ACK received. TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) changes state from FLOW to WAIT RELEASE -TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT RELEASE EGPRS) starting timer T3193 [release (DL-TBF)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT RELEASE EGPRS) starting timer T3193 [release (DL-TBF)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT RELEASE EGPRS) changes DL ASS state from GPRS_RLCMAC_DL_ASS_WAIT_ACK to GPRS_RLCMAC_DL_ASS_NONE TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT RELEASE EGPRS) changes state from WAIT RELEASE to RELEASING TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=RELEASING EGPRS) free @@ -4818,7 +4818,7 @@ TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) downlink acknowledge TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) Final ACK received. TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) changes state from FLOW to WAIT RELEASE -TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT RELEASE EGPRS) starting timer T3193 [release (DL-TBF)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT RELEASE EGPRS) starting timer T3193 [release (DL-TBF)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT RELEASE EGPRS) changes DL ASS state from GPRS_RLCMAC_DL_ASS_WAIT_ACK to GPRS_RLCMAC_DL_ASS_NONE TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT RELEASE EGPRS) changes state from WAIT RELEASE to RELEASING TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=RELEASING EGPRS) free @@ -4950,7 +4950,7 @@ TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) downlink acknowledge TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) Final ACK received. TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) changes state from FLOW to WAIT RELEASE -TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT RELEASE EGPRS) starting timer T3193 [release (DL-TBF)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT RELEASE EGPRS) starting timer T3193 [release (DL-TBF)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT RELEASE EGPRS) changes DL ASS state from GPRS_RLCMAC_DL_ASS_WAIT_ACK to GPRS_RLCMAC_DL_ASS_NONE TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT RELEASE EGPRS) changes state from WAIT RELEASE to RELEASING TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=RELEASING EGPRS) free @@ -5082,7 +5082,7 @@ TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) downlink acknowledge TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) Final ACK received. TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) changes state from FLOW to WAIT RELEASE -TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT RELEASE EGPRS) starting timer T3193 [release (DL-TBF)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT RELEASE EGPRS) starting timer T3193 [release (DL-TBF)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT RELEASE EGPRS) changes DL ASS state from GPRS_RLCMAC_DL_ASS_WAIT_ACK to GPRS_RLCMAC_DL_ASS_NONE TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT RELEASE EGPRS) changes state from WAIT RELEASE to RELEASING TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=RELEASING EGPRS) free @@ -5137,7 +5137,7 @@ TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) downlink acknowledge TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) Final ACK received. TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) changes state from FLOW to WAIT RELEASE -TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT RELEASE EGPRS) starting timer T3193 [release (DL-TBF)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT RELEASE EGPRS) starting timer T3193 [release (DL-TBF)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT RELEASE EGPRS) changes DL ASS state from GPRS_RLCMAC_DL_ASS_SEND_ASS to GPRS_RLCMAC_DL_ASS_NONE TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT RELEASE EGPRS) changes state from WAIT RELEASE to RELEASING TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=RELEASING EGPRS) free @@ -5192,7 +5192,7 @@ TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) downlink acknowledge TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) Final ACK received. TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) changes state from FLOW to WAIT RELEASE -TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT RELEASE EGPRS) starting timer T3193 [release (DL-TBF)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT RELEASE EGPRS) starting timer T3193 [release (DL-TBF)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT RELEASE EGPRS) changes DL ASS state from GPRS_RLCMAC_DL_ASS_SEND_ASS to GPRS_RLCMAC_DL_ASS_NONE TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT RELEASE EGPRS) changes state from WAIT RELEASE to RELEASING TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=RELEASING EGPRS) free @@ -5247,7 +5247,7 @@ TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) downlink acknowledge TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) Final ACK received. TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) changes state from FLOW to WAIT RELEASE -TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT RELEASE EGPRS) starting timer T3193 [release (DL-TBF)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT RELEASE EGPRS) starting timer T3193 [release (DL-TBF)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT RELEASE EGPRS) changes DL ASS state from GPRS_RLCMAC_DL_ASS_SEND_ASS to GPRS_RLCMAC_DL_ASS_NONE TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT RELEASE EGPRS) changes state from WAIT RELEASE to RELEASING TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=RELEASING EGPRS) free @@ -5318,7 +5318,7 @@ TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) downlink acknowledge TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) Final ACK received. TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) changes state from FLOW to WAIT RELEASE -TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT RELEASE EGPRS) starting timer T3193 [release (DL-TBF)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT RELEASE EGPRS) starting timer T3193 [release (DL-TBF)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT RELEASE EGPRS) changes DL ASS state from GPRS_RLCMAC_DL_ASS_SEND_ASS to GPRS_RLCMAC_DL_ASS_NONE TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT RELEASE EGPRS) changes state from WAIT RELEASE to RELEASING TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=RELEASING EGPRS) free @@ -5389,7 +5389,7 @@ TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) downlink acknowledge TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) Final ACK received. TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) changes state from FLOW to WAIT RELEASE -TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT RELEASE EGPRS) starting timer T3193 [release (DL-TBF)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT RELEASE EGPRS) starting timer T3193 [release (DL-TBF)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT RELEASE EGPRS) changes DL ASS state from GPRS_RLCMAC_DL_ASS_SEND_ASS to GPRS_RLCMAC_DL_ASS_NONE TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT RELEASE EGPRS) changes state from WAIT RELEASE to RELEASING TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=RELEASING EGPRS) free @@ -5460,7 +5460,7 @@ TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) downlink acknowledge TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) Final ACK received. TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) changes state from FLOW to WAIT RELEASE -TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT RELEASE EGPRS) starting timer T3193 [release (DL-TBF)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT RELEASE EGPRS) starting timer T3193 [release (DL-TBF)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT RELEASE EGPRS) changes DL ASS state from GPRS_RLCMAC_DL_ASS_SEND_ASS to GPRS_RLCMAC_DL_ASS_NONE TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT RELEASE EGPRS) changes state from WAIT RELEASE to RELEASING TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=RELEASING EGPRS) free @@ -5531,7 +5531,7 @@ TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) downlink acknowledge TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) Final ACK received. TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) changes state from FLOW to WAIT RELEASE -TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT RELEASE EGPRS) starting timer T3193 [release (DL-TBF)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT RELEASE EGPRS) starting timer T3193 [release (DL-TBF)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT RELEASE EGPRS) changes DL ASS state from GPRS_RLCMAC_DL_ASS_SEND_ASS to GPRS_RLCMAC_DL_ASS_NONE TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT RELEASE EGPRS) changes state from WAIT RELEASE to RELEASING TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=RELEASING EGPRS) free @@ -5593,7 +5593,7 @@ TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) downlink acknowledge TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) Final ACK received. TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) changes state from FLOW to WAIT RELEASE -TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT RELEASE EGPRS) starting timer T3193 [release (DL-TBF)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT RELEASE EGPRS) starting timer T3193 [release (DL-TBF)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT RELEASE EGPRS) changes DL ASS state from GPRS_RLCMAC_DL_ASS_SEND_ASS to GPRS_RLCMAC_DL_ASS_NONE TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT RELEASE EGPRS) changes state from WAIT RELEASE to RELEASING TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=RELEASING EGPRS) free @@ -5655,7 +5655,7 @@ TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) downlink acknowledge TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) Final ACK received. TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) changes state from FLOW to WAIT RELEASE -TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT RELEASE EGPRS) starting timer T3193 [release (DL-TBF)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT RELEASE EGPRS) starting timer T3193 [release (DL-TBF)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT RELEASE EGPRS) changes DL ASS state from GPRS_RLCMAC_DL_ASS_SEND_ASS to GPRS_RLCMAC_DL_ASS_NONE TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT RELEASE EGPRS) changes state from WAIT RELEASE to RELEASING TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=RELEASING EGPRS) free @@ -5717,7 +5717,7 @@ TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) downlink acknowledge TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) Final ACK received. TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) changes state from FLOW to WAIT RELEASE -TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT RELEASE EGPRS) starting timer T3193 [release (DL-TBF)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT RELEASE EGPRS) starting timer T3193 [release (DL-TBF)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT RELEASE EGPRS) changes DL ASS state from GPRS_RLCMAC_DL_ASS_SEND_ASS to GPRS_RLCMAC_DL_ASS_NONE TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT RELEASE EGPRS) changes state from WAIT RELEASE to RELEASING TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=RELEASING EGPRS) free @@ -5786,7 +5786,7 @@ TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) downlink acknowledge TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) Final ACK received. TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) changes state from FLOW to WAIT RELEASE -TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT RELEASE EGPRS) starting timer T3193 [release (DL-TBF)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT RELEASE EGPRS) starting timer T3193 [release (DL-TBF)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT RELEASE EGPRS) changes DL ASS state from GPRS_RLCMAC_DL_ASS_SEND_ASS to GPRS_RLCMAC_DL_ASS_NONE TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT RELEASE EGPRS) changes state from WAIT RELEASE to RELEASING TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=RELEASING EGPRS) free @@ -5828,7 +5828,7 @@ TBF(TFI=0 TLLI=0x00000000 DIR=UL STATE=NULL EGPRS) setting EGPRS UL window size to 64, base(0) slots(1) ws_pdch(0) ws(64) TBF(TFI=0 TLLI=0x00000000 DIR=UL STATE=NULL EGPRS) changes state from NULL to ASSIGN -TBF(TFI=0 TLLI=0x00000000 DIR=UL STATE=ASSIGN EGPRS) starting timer T3169 [allocation (UL-TBF)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0x00000000 DIR=UL STATE=ASSIGN EGPRS) starting timer T3169 [allocation (UL-TBF)] with 0 sec. 0 microsec, cur_fn=0 Modifying MS object, UL TLLI: 0x00000000 -> 0xf1223344, not yet confirmed Modifying MS object, TLLI = 0xf1223344, TA 220 -> 7 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=ASSIGN EGPRS) change control TS 7 -> 7 until assinment is complete. @@ -5849,7 +5849,7 @@ Got CS-1 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=184 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=0 .. V(R)=0) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got CS-1 RLC data block: CV=15, BSN=0, SPB=0, PI=0, E=1, TI=0, bitoffs=24 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 0 storing in window (0..63) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=20, data=00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 @@ -5859,7 +5859,7 @@ Got MCS-3 RLC block: R=1, SI=0, TFI=0, CPS=5, RSB=0, rc=329 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=1 .. V(R)=1) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-3 RLC data block: CV=7, BSN=1, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 1 storing in window (1..64) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=37, data=00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 @@ -5870,7 +5870,7 @@ Got MCS-3 RLC block: R=1, SI=0, TFI=0, CPS=5, RSB=0, rc=329 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=2 .. V(R)=2) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-3 RLC data block: CV=7, BSN=4, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 4 storing in window (2..65) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=37, data=00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 @@ -5902,7 +5902,7 @@ TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) changes DL ASS state from GPRS_RLCMAC_DL_ASS_NONE to GPRS_RLCMAC_DL_ASS_SEND_ASS TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=NULL EGPRS) changes state from NULL to ASSIGN TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=ASSIGN EGPRS) set ass. type PACCH [prev CCCH:0, PACCH:0] -TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=ASSIGN EGPRS) starting timer T0 [assignment (PACCH)] with 2 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=ASSIGN EGPRS) starting timer T0 [assignment (PACCH)] with 2 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=ASSIGN EGPRS) appending 256 bytes ********** DL-TBF starts here ********** Allocating DL TBF: MS_CLASS=11/11 @@ -5989,7 +5989,7 @@ TBF(TFI=0 TLLI=0x00000000 DIR=UL STATE=NULL EGPRS) setting EGPRS UL window size to 64, base(0) slots(1) ws_pdch(0) ws(64) TBF(TFI=0 TLLI=0x00000000 DIR=UL STATE=NULL EGPRS) changes state from NULL to ASSIGN -TBF(TFI=0 TLLI=0x00000000 DIR=UL STATE=ASSIGN EGPRS) starting timer T3169 [allocation (UL-TBF)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0x00000000 DIR=UL STATE=ASSIGN EGPRS) starting timer T3169 [allocation (UL-TBF)] with 0 sec. 0 microsec, cur_fn=0 Modifying MS object, UL TLLI: 0x00000000 -> 0xf1223344, not yet confirmed Modifying MS object, TLLI = 0xf1223344, TA 220 -> 7 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=ASSIGN EGPRS) change control TS 7 -> 7 until assinment is complete. @@ -6010,7 +6010,7 @@ Got MCS-4 RLC block: R=1, SI=0, TFI=0, CPS=5, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=0 .. V(R)=0) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=7, BSN=0, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 0 storing in window (0..63) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 @@ -6020,7 +6020,7 @@ Got MCS-4 RLC block: R=1, SI=0, TFI=0, CPS=5, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=1 .. V(R)=1) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=7, BSN=1, SPB=0, PI=0, E=0, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 1 storing in window (1..64) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 @@ -6057,7 +6057,7 @@ TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) changes DL ASS state from GPRS_RLCMAC_DL_ASS_NONE to GPRS_RLCMAC_DL_ASS_SEND_ASS TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=NULL EGPRS) changes state from NULL to ASSIGN TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=ASSIGN EGPRS) set ass. type PACCH [prev CCCH:0, PACCH:0] -TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=ASSIGN EGPRS) starting timer T0 [assignment (PACCH)] with 2 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=ASSIGN EGPRS) starting timer T0 [assignment (PACCH)] with 2 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=ASSIGN EGPRS) appending 256 bytes Searching for first unallocated TFI: TRX=0 Found TFI=0. @@ -6119,7 +6119,7 @@ Modifying MS object, TLLI = 0x00000000, TA 220 -> 7 TBF(TFI=0 TLLI=0x00000000 DIR=UL STATE=NULL) changes state from NULL to FLOW TBF(TFI=0 TLLI=0x00000000 DIR=UL STATE=FLOW) set ass. type CCCH [prev CCCH:0, PACCH:0] -TBF(TFI=0 TLLI=0x00000000 DIR=UL STATE=FLOW) starting timer T3169 [RACH (new UL-TBF)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0x00000000 DIR=UL STATE=FLOW) starting timer T3169 [RACH (new UL-TBF)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0x00000000 DIR=UL STATE=FLOW) [UPLINK] START TBF(TFI=0 TLLI=0x00000000 DIR=UL STATE=FLOW) RX: [PCU <- BTS] RACH qbit-ta=31 ra=0x78, Fn=2654167 (17,25,9) TBF(TFI=0 TLLI=0x00000000 DIR=UL STATE=FLOW) TX: START Immediate Assignment Uplink (AGCH) @@ -6144,7 +6144,7 @@ Modifying MS object, TLLI = 0x00000000, TA 220 -> 7 TBF(TFI=1 TLLI=0x00000000 DIR=UL STATE=NULL) changes state from NULL to FLOW TBF(TFI=1 TLLI=0x00000000 DIR=UL STATE=FLOW) set ass. type CCCH [prev CCCH:0, PACCH:0] -TBF(TFI=1 TLLI=0x00000000 DIR=UL STATE=FLOW) starting timer T3169 [RACH (new UL-TBF)] with 0 sec. 0 microsec. +TBF(TFI=1 TLLI=0x00000000 DIR=UL STATE=FLOW) starting timer T3169 [RACH (new UL-TBF)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=1 TLLI=0x00000000 DIR=UL STATE=FLOW) [UPLINK] START TBF(TFI=1 TLLI=0x00000000 DIR=UL STATE=FLOW) RX: [PCU <- BTS] RACH qbit-ta=31 ra=0x79, Fn=2654167 (17,25,9) TBF(TFI=1 TLLI=0x00000000 DIR=UL STATE=FLOW) TX: START Immediate Assignment Uplink (AGCH) @@ -6169,7 +6169,7 @@ Modifying MS object, TLLI = 0x00000000, TA 220 -> 7 TBF(TFI=2 TLLI=0x00000000 DIR=UL STATE=NULL) changes state from NULL to FLOW TBF(TFI=2 TLLI=0x00000000 DIR=UL STATE=FLOW) set ass. type CCCH [prev CCCH:0, PACCH:0] -TBF(TFI=2 TLLI=0x00000000 DIR=UL STATE=FLOW) starting timer T3169 [RACH (new UL-TBF)] with 0 sec. 0 microsec. +TBF(TFI=2 TLLI=0x00000000 DIR=UL STATE=FLOW) starting timer T3169 [RACH (new UL-TBF)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=2 TLLI=0x00000000 DIR=UL STATE=FLOW) [UPLINK] START TBF(TFI=2 TLLI=0x00000000 DIR=UL STATE=FLOW) RX: [PCU <- BTS] RACH qbit-ta=31 ra=0x7a, Fn=2654167 (17,25,9) TBF(TFI=2 TLLI=0x00000000 DIR=UL STATE=FLOW) TX: START Immediate Assignment Uplink (AGCH) @@ -6194,7 +6194,7 @@ Modifying MS object, TLLI = 0x00000000, TA 220 -> 7 TBF(TFI=3 TLLI=0x00000000 DIR=UL STATE=NULL) changes state from NULL to FLOW TBF(TFI=3 TLLI=0x00000000 DIR=UL STATE=FLOW) set ass. type CCCH [prev CCCH:0, PACCH:0] -TBF(TFI=3 TLLI=0x00000000 DIR=UL STATE=FLOW) starting timer T3169 [RACH (new UL-TBF)] with 0 sec. 0 microsec. +TBF(TFI=3 TLLI=0x00000000 DIR=UL STATE=FLOW) starting timer T3169 [RACH (new UL-TBF)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=3 TLLI=0x00000000 DIR=UL STATE=FLOW) [UPLINK] START TBF(TFI=3 TLLI=0x00000000 DIR=UL STATE=FLOW) RX: [PCU <- BTS] RACH qbit-ta=31 ra=0x7b, Fn=2654167 (17,25,9) TBF(TFI=3 TLLI=0x00000000 DIR=UL STATE=FLOW) TX: START Immediate Assignment Uplink (AGCH) @@ -6219,7 +6219,7 @@ Modifying MS object, TLLI = 0x00000000, TA 220 -> 7 TBF(TFI=4 TLLI=0x00000000 DIR=UL STATE=NULL) changes state from NULL to FLOW TBF(TFI=4 TLLI=0x00000000 DIR=UL STATE=FLOW) set ass. type CCCH [prev CCCH:0, PACCH:0] -TBF(TFI=4 TLLI=0x00000000 DIR=UL STATE=FLOW) starting timer T3169 [RACH (new UL-TBF)] with 0 sec. 0 microsec. +TBF(TFI=4 TLLI=0x00000000 DIR=UL STATE=FLOW) starting timer T3169 [RACH (new UL-TBF)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=4 TLLI=0x00000000 DIR=UL STATE=FLOW) [UPLINK] START TBF(TFI=4 TLLI=0x00000000 DIR=UL STATE=FLOW) RX: [PCU <- BTS] RACH qbit-ta=31 ra=0x7c, Fn=2654167 (17,25,9) TBF(TFI=4 TLLI=0x00000000 DIR=UL STATE=FLOW) TX: START Immediate Assignment Uplink (AGCH) @@ -6244,7 +6244,7 @@ Modifying MS object, TLLI = 0x00000000, TA 220 -> 7 TBF(TFI=5 TLLI=0x00000000 DIR=UL STATE=NULL) changes state from NULL to FLOW TBF(TFI=5 TLLI=0x00000000 DIR=UL STATE=FLOW) set ass. type CCCH [prev CCCH:0, PACCH:0] -TBF(TFI=5 TLLI=0x00000000 DIR=UL STATE=FLOW) starting timer T3169 [RACH (new UL-TBF)] with 0 sec. 0 microsec. +TBF(TFI=5 TLLI=0x00000000 DIR=UL STATE=FLOW) starting timer T3169 [RACH (new UL-TBF)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=5 TLLI=0x00000000 DIR=UL STATE=FLOW) [UPLINK] START TBF(TFI=5 TLLI=0x00000000 DIR=UL STATE=FLOW) RX: [PCU <- BTS] RACH qbit-ta=31 ra=0x7d, Fn=2654167 (17,25,9) TBF(TFI=5 TLLI=0x00000000 DIR=UL STATE=FLOW) TX: START Immediate Assignment Uplink (AGCH) @@ -6269,7 +6269,7 @@ Modifying MS object, TLLI = 0x00000000, TA 220 -> 7 TBF(TFI=6 TLLI=0x00000000 DIR=UL STATE=NULL) changes state from NULL to FLOW TBF(TFI=6 TLLI=0x00000000 DIR=UL STATE=FLOW) set ass. type CCCH [prev CCCH:0, PACCH:0] -TBF(TFI=6 TLLI=0x00000000 DIR=UL STATE=FLOW) starting timer T3169 [RACH (new UL-TBF)] with 0 sec. 0 microsec. +TBF(TFI=6 TLLI=0x00000000 DIR=UL STATE=FLOW) starting timer T3169 [RACH (new UL-TBF)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=6 TLLI=0x00000000 DIR=UL STATE=FLOW) [UPLINK] START TBF(TFI=6 TLLI=0x00000000 DIR=UL STATE=FLOW) RX: [PCU <- BTS] RACH qbit-ta=31 ra=0x7e, Fn=2654167 (17,25,9) TBF(TFI=6 TLLI=0x00000000 DIR=UL STATE=FLOW) TX: START Immediate Assignment Uplink (AGCH) @@ -6327,7 +6327,7 @@ TBF(TFI=0 TLLI=0x00000000 DIR=UL STATE=NULL EGPRS) setting EGPRS UL window size to 192, base(128) slots(1) ws_pdch(64) ws(192) TBF(TFI=0 TLLI=0x00000000 DIR=UL STATE=NULL EGPRS) changes state from NULL to ASSIGN -TBF(TFI=0 TLLI=0x00000000 DIR=UL STATE=ASSIGN EGPRS) starting timer T3169 [allocation (UL-TBF)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0x00000000 DIR=UL STATE=ASSIGN EGPRS) starting timer T3169 [allocation (UL-TBF)] with 0 sec. 0 microsec, cur_fn=0 Modifying MS object, UL TLLI: 0x00000000 -> 0xf1223344, not yet confirmed Modifying MS object, TLLI = 0xf1223344, TA 220 -> 7 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=ASSIGN EGPRS) change control TS 7 -> 7 until assinment is complete. @@ -6348,7 +6348,7 @@ Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=0 .. V(R)=0) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=0, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 0 storing in window (0..191) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 @@ -6358,133 +6358,133 @@ Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=1 .. V(R)=1) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=2, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 2 storing in window (1..192) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=1 .. V(R)=3) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=4, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 4 storing in window (1..192) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=1 .. V(R)=5) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=6, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 6 storing in window (1..192) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=1 .. V(R)=7) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=8, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 8 storing in window (1..192) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=1 .. V(R)=9) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=10, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 10 storing in window (1..192) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=1 .. V(R)=11) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=12, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 12 storing in window (1..192) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=1 .. V(R)=13) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=14, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 14 storing in window (1..192) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=1 .. V(R)=15) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=16, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 16 storing in window (1..192) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=1 .. V(R)=17) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=18, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 18 storing in window (1..192) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=1 .. V(R)=19) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=20, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 20 storing in window (1..192) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=1 .. V(R)=21) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=22, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 22 storing in window (1..192) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=1 .. V(R)=23) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=24, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 24 storing in window (1..192) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=1 .. V(R)=25) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=26, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 26 storing in window (1..192) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=1 .. V(R)=27) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=28, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 28 storing in window (1..192) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=1 .. V(R)=29) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=30, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 30 storing in window (1..192) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=1 .. V(R)=31) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=32, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 32 storing in window (1..192) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=1 .. V(R)=33) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=34, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 34 storing in window (1..192) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=1 .. V(R)=35) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=36, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 36 storing in window (1..192) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=1 .. V(R)=37) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=38, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 38 storing in window (1..192) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 @@ -6493,140 +6493,140 @@ Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=1 .. V(R)=39) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=40, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 40 storing in window (1..192) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=1 .. V(R)=41) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=42, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 42 storing in window (1..192) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=1 .. V(R)=43) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=44, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 44 storing in window (1..192) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=1 .. V(R)=45) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=46, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 46 storing in window (1..192) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=1 .. V(R)=47) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=48, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 48 storing in window (1..192) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=1 .. V(R)=49) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=50, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 50 storing in window (1..192) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=1 .. V(R)=51) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=52, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 52 storing in window (1..192) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=1 .. V(R)=53) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=54, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 54 storing in window (1..192) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=1 .. V(R)=55) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=56, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 56 storing in window (1..192) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=1 .. V(R)=57) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=58, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 58 storing in window (1..192) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=1 .. V(R)=59) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=60, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 60 storing in window (1..192) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=1 .. V(R)=61) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=62, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 62 storing in window (1..192) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=1 .. V(R)=63) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=64, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 64 storing in window (1..192) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=1 .. V(R)=65) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=66, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 66 storing in window (1..192) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=1 .. V(R)=67) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=68, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 68 storing in window (1..192) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=1 .. V(R)=69) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=70, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 70 storing in window (1..192) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=1 .. V(R)=71) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=72, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 72 storing in window (1..192) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=1 .. V(R)=73) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=74, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 74 storing in window (1..192) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=1 .. V(R)=75) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=76, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 76 storing in window (1..192) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=1 .. V(R)=77) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=78, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 78 storing in window (1..192) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 @@ -6635,140 +6635,140 @@ Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=1 .. V(R)=79) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=80, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 80 storing in window (1..192) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=1 .. V(R)=81) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=82, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 82 storing in window (1..192) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=1 .. V(R)=83) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=84, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 84 storing in window (1..192) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=1 .. V(R)=85) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=86, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 86 storing in window (1..192) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=1 .. V(R)=87) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=88, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 88 storing in window (1..192) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=1 .. V(R)=89) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=90, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 90 storing in window (1..192) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=1 .. V(R)=91) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=92, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 92 storing in window (1..192) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=1 .. V(R)=93) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=94, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 94 storing in window (1..192) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=1 .. V(R)=95) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=96, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 96 storing in window (1..192) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=1 .. V(R)=97) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=98, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 98 storing in window (1..192) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=1 .. V(R)=99) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=100, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 100 storing in window (1..192) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=1 .. V(R)=101) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=102, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 102 storing in window (1..192) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=1 .. V(R)=103) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=104, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 104 storing in window (1..192) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=1 .. V(R)=105) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=106, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 106 storing in window (1..192) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=1 .. V(R)=107) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=108, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 108 storing in window (1..192) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=1 .. V(R)=109) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=110, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 110 storing in window (1..192) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=1 .. V(R)=111) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=112, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 112 storing in window (1..192) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=1 .. V(R)=113) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=114, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 114 storing in window (1..192) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=1 .. V(R)=115) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=116, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 116 storing in window (1..192) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=1 .. V(R)=117) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=118, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 118 storing in window (1..192) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 @@ -6777,140 +6777,140 @@ Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=1 .. V(R)=119) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=120, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 120 storing in window (1..192) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=1 .. V(R)=121) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=122, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 122 storing in window (1..192) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=1 .. V(R)=123) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=124, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 124 storing in window (1..192) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=1 .. V(R)=125) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=126, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 126 storing in window (1..192) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=1 .. V(R)=127) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=128, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 128 storing in window (1..192) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=1 .. V(R)=129) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=130, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 130 storing in window (1..192) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=1 .. V(R)=131) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=132, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 132 storing in window (1..192) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=1 .. V(R)=133) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=134, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 134 storing in window (1..192) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=1 .. V(R)=135) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=136, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 136 storing in window (1..192) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=1 .. V(R)=137) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=138, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 138 storing in window (1..192) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=1 .. V(R)=139) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=140, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 140 storing in window (1..192) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=1 .. V(R)=141) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=142, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 142 storing in window (1..192) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=1 .. V(R)=143) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=144, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 144 storing in window (1..192) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=1 .. V(R)=145) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=146, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 146 storing in window (1..192) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=1 .. V(R)=147) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=148, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 148 storing in window (1..192) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=1 .. V(R)=149) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=150, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 150 storing in window (1..192) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=1 .. V(R)=151) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=152, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 152 storing in window (1..192) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=1 .. V(R)=153) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=154, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 154 storing in window (1..192) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=1 .. V(R)=155) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=156, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 156 storing in window (1..192) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=1 .. V(R)=157) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=158, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 158 storing in window (1..192) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 @@ -6920,7 +6920,7 @@ Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=1 .. V(R)=159) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=0, BSN=64, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 64 already received Received RTS for PDCH: TRX=0 TS=7 FN=2654275 block_nr=9 scheduling USF=0 for required uplink resource of UL TFI=0 @@ -6951,12 +6951,12 @@ TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) changes DL ASS state from GPRS_RLCMAC_DL_ASS_NONE to GPRS_RLCMAC_DL_ASS_SEND_ASS TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=NULL EGPRS) changes state from NULL to ASSIGN TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=ASSIGN EGPRS) set ass. type PACCH [prev CCCH:0, PACCH:0] -TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=ASSIGN EGPRS) starting timer T0 [assignment (PACCH)] with 2 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=ASSIGN EGPRS) starting timer T0 [assignment (PACCH)] with 2 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=ASSIGN EGPRS) appending 256 bytes Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=0 .. V(R)=0) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=0, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 0 storing in window (0..191) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 @@ -6966,126 +6966,126 @@ Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=1 .. V(R)=1) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=2, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 2 storing in window (1..192) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=1 .. V(R)=3) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=4, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 4 storing in window (1..192) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=1 .. V(R)=5) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=6, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 6 storing in window (1..192) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=1 .. V(R)=7) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=8, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 8 storing in window (1..192) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=1 .. V(R)=9) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=10, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 10 storing in window (1..192) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=1 .. V(R)=11) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=12, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 12 storing in window (1..192) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=1 .. V(R)=13) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=14, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 14 storing in window (1..192) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=1 .. V(R)=15) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=16, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 16 storing in window (1..192) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=1 .. V(R)=17) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=18, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 18 storing in window (1..192) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=1 .. V(R)=19) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=20, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 20 storing in window (1..192) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=1 .. V(R)=21) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=22, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 22 storing in window (1..192) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=1 .. V(R)=23) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=24, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 24 storing in window (1..192) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=1 .. V(R)=25) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=26, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 26 storing in window (1..192) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=1 .. V(R)=27) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=28, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 28 storing in window (1..192) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=1 .. V(R)=29) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=30, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 30 storing in window (1..192) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=1 .. V(R)=31) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=32, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 32 storing in window (1..192) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=1 .. V(R)=33) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=34, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 34 storing in window (1..192) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=1 .. V(R)=35) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=36, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 36 storing in window (1..192) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 @@ -7094,7 +7094,7 @@ Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=1 .. V(R)=37) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=38, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 38 storing in window (1..192) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 @@ -7102,7 +7102,7 @@ Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=1 .. V(R)=39) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=0, BSN=64, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 64 storing in window (1..192) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 @@ -7118,126 +7118,126 @@ Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=0 .. V(R)=0) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=80, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 80 storing in window (0..191) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=0 .. V(R)=81) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=81, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 81 storing in window (0..191) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=0 .. V(R)=82) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=82, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 82 storing in window (0..191) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=0 .. V(R)=83) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=83, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 83 storing in window (0..191) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=0 .. V(R)=84) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=84, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 84 storing in window (0..191) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=0 .. V(R)=85) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=85, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 85 storing in window (0..191) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=0 .. V(R)=86) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=86, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 86 storing in window (0..191) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=0 .. V(R)=87) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=87, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 87 storing in window (0..191) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=0 .. V(R)=88) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=88, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 88 storing in window (0..191) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=0 .. V(R)=89) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=89, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 89 storing in window (0..191) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=0 .. V(R)=90) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=90, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 90 storing in window (0..191) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=0 .. V(R)=91) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=91, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 91 storing in window (0..191) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=0 .. V(R)=92) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=92, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 92 storing in window (0..191) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=0 .. V(R)=93) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=93, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 93 storing in window (0..191) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=0 .. V(R)=94) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=94, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 94 storing in window (0..191) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=0 .. V(R)=95) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=95, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 95 storing in window (0..191) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=0 .. V(R)=96) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=96, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 96 storing in window (0..191) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=0 .. V(R)=97) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=97, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 97 storing in window (0..191) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 @@ -7246,140 +7246,140 @@ Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=0 .. V(R)=98) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=98, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 98 storing in window (0..191) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=0 .. V(R)=99) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=99, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 99 storing in window (0..191) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=0 .. V(R)=100) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=100, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 100 storing in window (0..191) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=0 .. V(R)=101) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=101, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 101 storing in window (0..191) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=0 .. V(R)=102) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=102, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 102 storing in window (0..191) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=0 .. V(R)=103) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=103, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 103 storing in window (0..191) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=0 .. V(R)=104) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=104, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 104 storing in window (0..191) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=0 .. V(R)=105) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=105, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 105 storing in window (0..191) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=0 .. V(R)=106) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=106, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 106 storing in window (0..191) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=0 .. V(R)=107) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=107, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 107 storing in window (0..191) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=0 .. V(R)=108) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=108, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 108 storing in window (0..191) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=0 .. V(R)=109) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=109, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 109 storing in window (0..191) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=0 .. V(R)=110) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=110, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 110 storing in window (0..191) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=0 .. V(R)=111) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=111, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 111 storing in window (0..191) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=0 .. V(R)=112) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=112, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 112 storing in window (0..191) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=0 .. V(R)=113) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=113, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 113 storing in window (0..191) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=0 .. V(R)=114) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=114, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 114 storing in window (0..191) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=0 .. V(R)=115) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=115, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 115 storing in window (0..191) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=0 .. V(R)=116) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=116, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 116 storing in window (0..191) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=0 .. V(R)=117) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=117, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 117 storing in window (0..191) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 @@ -7388,140 +7388,140 @@ Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=0 .. V(R)=118) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=118, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 118 storing in window (0..191) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=0 .. V(R)=119) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=119, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 119 storing in window (0..191) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=0 .. V(R)=120) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=120, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 120 storing in window (0..191) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=0 .. V(R)=121) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=121, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 121 storing in window (0..191) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=0 .. V(R)=122) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=122, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 122 storing in window (0..191) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=0 .. V(R)=123) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=123, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 123 storing in window (0..191) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=0 .. V(R)=124) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=124, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 124 storing in window (0..191) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=0 .. V(R)=125) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=125, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 125 storing in window (0..191) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=0 .. V(R)=126) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=126, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 126 storing in window (0..191) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=0 .. V(R)=127) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=127, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 127 storing in window (0..191) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=0 .. V(R)=128) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=128, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 128 storing in window (0..191) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=0 .. V(R)=129) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=129, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 129 storing in window (0..191) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=0 .. V(R)=130) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=130, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 130 storing in window (0..191) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=0 .. V(R)=131) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=131, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 131 storing in window (0..191) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=0 .. V(R)=132) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=132, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 132 storing in window (0..191) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=0 .. V(R)=133) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=133, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 133 storing in window (0..191) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=0 .. V(R)=134) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=134, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 134 storing in window (0..191) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=0 .. V(R)=135) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=135, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 135 storing in window (0..191) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=0 .. V(R)=136) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=136, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 136 storing in window (0..191) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=0 .. V(R)=137) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=137, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 137 storing in window (0..191) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 @@ -7530,140 +7530,140 @@ Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=0 .. V(R)=138) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=138, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 138 storing in window (0..191) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=0 .. V(R)=139) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=139, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 139 storing in window (0..191) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=0 .. V(R)=140) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=140, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 140 storing in window (0..191) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=0 .. V(R)=141) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=141, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 141 storing in window (0..191) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=0 .. V(R)=142) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=142, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 142 storing in window (0..191) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=0 .. V(R)=143) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=143, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 143 storing in window (0..191) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=0 .. V(R)=144) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=144, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 144 storing in window (0..191) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=0 .. V(R)=145) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=145, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 145 storing in window (0..191) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=0 .. V(R)=146) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=146, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 146 storing in window (0..191) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=0 .. V(R)=147) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=147, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 147 storing in window (0..191) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=0 .. V(R)=148) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=148, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 148 storing in window (0..191) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=0 .. V(R)=149) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=149, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 149 storing in window (0..191) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=0 .. V(R)=150) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=150, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 150 storing in window (0..191) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=0 .. V(R)=151) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=151, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 151 storing in window (0..191) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=0 .. V(R)=152) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=152, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 152 storing in window (0..191) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=0 .. V(R)=153) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=153, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 153 storing in window (0..191) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=0 .. V(R)=154) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=154, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 154 storing in window (0..191) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=0 .. V(R)=155) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=155, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 155 storing in window (0..191) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=0 .. V(R)=156) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=156, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 156 storing in window (0..191) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=0 .. V(R)=157) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=157, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 157 storing in window (0..191) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 @@ -7672,14 +7672,14 @@ Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=0 .. V(R)=158) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=158, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 158 storing in window (0..191) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=0 .. V(R)=159) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=159, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 159 storing in window (0..191) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 @@ -7687,7 +7687,7 @@ Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=0 .. V(R)=160) max_cs_ul cannot be derived (current UL CS: UNKNOWN) -TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=0, BSN=64, SPB=0, PI=0, E=1, TI=0, bitoffs=33 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) BSN 64 storing in window (0..191) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 @@ -7740,7 +7740,7 @@ Modifying MS object, TLLI = 0x00000000, TA 220 -> 7 TBF(TFI=0 TLLI=0x00000000 DIR=UL STATE=NULL) changes state from NULL to FLOW TBF(TFI=0 TLLI=0x00000000 DIR=UL STATE=FLOW) set ass. type CCCH [prev CCCH:0, PACCH:0] -TBF(TFI=0 TLLI=0x00000000 DIR=UL STATE=FLOW) starting timer T3169 [RACH (new UL-TBF)] with 0 sec. 0 microsec. +TBF(TFI=0 TLLI=0x00000000 DIR=UL STATE=FLOW) starting timer T3169 [RACH (new UL-TBF)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0x00000000 DIR=UL STATE=FLOW) [UPLINK] START TBF(TFI=0 TLLI=0x00000000 DIR=UL STATE=FLOW) RX: [PCU <- BTS] RACH qbit-ta=31 ra=0x78, Fn=2654167 (17,25,9) TBF(TFI=0 TLLI=0x00000000 DIR=UL STATE=FLOW) TX: START Immediate Assignment Uplink (AGCH) @@ -7765,7 +7765,7 @@ Modifying MS object, TLLI = 0x00000000, TA 220 -> 7 TBF(TFI=1 TLLI=0x00000000 DIR=UL STATE=NULL) changes state from NULL to FLOW TBF(TFI=1 TLLI=0x00000000 DIR=UL STATE=FLOW) set ass. type CCCH [prev CCCH:0, PACCH:0] -TBF(TFI=1 TLLI=0x00000000 DIR=UL STATE=FLOW) starting timer T3169 [RACH (new UL-TBF)] with 0 sec. 0 microsec. +TBF(TFI=1 TLLI=0x00000000 DIR=UL STATE=FLOW) starting timer T3169 [RACH (new UL-TBF)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=1 TLLI=0x00000000 DIR=UL STATE=FLOW) [UPLINK] START TBF(TFI=1 TLLI=0x00000000 DIR=UL STATE=FLOW) RX: [PCU <- BTS] RACH qbit-ta=31 ra=0x79, Fn=2654167 (17,25,9) TBF(TFI=1 TLLI=0x00000000 DIR=UL STATE=FLOW) TX: START Immediate Assignment Uplink (AGCH) @@ -7790,7 +7790,7 @@ Modifying MS object, TLLI = 0x00000000, TA 220 -> 7 TBF(TFI=2 TLLI=0x00000000 DIR=UL STATE=NULL) changes state from NULL to FLOW TBF(TFI=2 TLLI=0x00000000 DIR=UL STATE=FLOW) set ass. type CCCH [prev CCCH:0, PACCH:0] -TBF(TFI=2 TLLI=0x00000000 DIR=UL STATE=FLOW) starting timer T3169 [RACH (new UL-TBF)] with 0 sec. 0 microsec. +TBF(TFI=2 TLLI=0x00000000 DIR=UL STATE=FLOW) starting timer T3169 [RACH (new UL-TBF)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=2 TLLI=0x00000000 DIR=UL STATE=FLOW) [UPLINK] START TBF(TFI=2 TLLI=0x00000000 DIR=UL STATE=FLOW) RX: [PCU <- BTS] RACH qbit-ta=31 ra=0x7a, Fn=2654167 (17,25,9) TBF(TFI=2 TLLI=0x00000000 DIR=UL STATE=FLOW) TX: START Immediate Assignment Uplink (AGCH) @@ -7815,7 +7815,7 @@ Modifying MS object, TLLI = 0x00000000, TA 220 -> 7 TBF(TFI=3 TLLI=0x00000000 DIR=UL STATE=NULL) changes state from NULL to FLOW TBF(TFI=3 TLLI=0x00000000 DIR=UL STATE=FLOW) set ass. type CCCH [prev CCCH:0, PACCH:0] -TBF(TFI=3 TLLI=0x00000000 DIR=UL STATE=FLOW) starting timer T3169 [RACH (new UL-TBF)] with 0 sec. 0 microsec. +TBF(TFI=3 TLLI=0x00000000 DIR=UL STATE=FLOW) starting timer T3169 [RACH (new UL-TBF)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=3 TLLI=0x00000000 DIR=UL STATE=FLOW) [UPLINK] START TBF(TFI=3 TLLI=0x00000000 DIR=UL STATE=FLOW) RX: [PCU <- BTS] RACH qbit-ta=31 ra=0x7b, Fn=2654167 (17,25,9) TBF(TFI=3 TLLI=0x00000000 DIR=UL STATE=FLOW) TX: START Immediate Assignment Uplink (AGCH) @@ -7840,7 +7840,7 @@ Modifying MS object, TLLI = 0x00000000, TA 220 -> 7 TBF(TFI=4 TLLI=0x00000000 DIR=UL STATE=NULL) changes state from NULL to FLOW TBF(TFI=4 TLLI=0x00000000 DIR=UL STATE=FLOW) set ass. type CCCH [prev CCCH:0, PACCH:0] -TBF(TFI=4 TLLI=0x00000000 DIR=UL STATE=FLOW) starting timer T3169 [RACH (new UL-TBF)] with 0 sec. 0 microsec. +TBF(TFI=4 TLLI=0x00000000 DIR=UL STATE=FLOW) starting timer T3169 [RACH (new UL-TBF)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=4 TLLI=0x00000000 DIR=UL STATE=FLOW) [UPLINK] START TBF(TFI=4 TLLI=0x00000000 DIR=UL STATE=FLOW) RX: [PCU <- BTS] RACH qbit-ta=31 ra=0x7c, Fn=2654167 (17,25,9) TBF(TFI=4 TLLI=0x00000000 DIR=UL STATE=FLOW) TX: START Immediate Assignment Uplink (AGCH) @@ -7865,7 +7865,7 @@ Modifying MS object, TLLI = 0x00000000, TA 220 -> 7 TBF(TFI=5 TLLI=0x00000000 DIR=UL STATE=NULL) changes state from NULL to FLOW TBF(TFI=5 TLLI=0x00000000 DIR=UL STATE=FLOW) set ass. type CCCH [prev CCCH:0, PACCH:0] -TBF(TFI=5 TLLI=0x00000000 DIR=UL STATE=FLOW) starting timer T3169 [RACH (new UL-TBF)] with 0 sec. 0 microsec. +TBF(TFI=5 TLLI=0x00000000 DIR=UL STATE=FLOW) starting timer T3169 [RACH (new UL-TBF)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=5 TLLI=0x00000000 DIR=UL STATE=FLOW) [UPLINK] START TBF(TFI=5 TLLI=0x00000000 DIR=UL STATE=FLOW) RX: [PCU <- BTS] RACH qbit-ta=31 ra=0x7d, Fn=2654167 (17,25,9) TBF(TFI=5 TLLI=0x00000000 DIR=UL STATE=FLOW) TX: START Immediate Assignment Uplink (AGCH) @@ -7890,7 +7890,7 @@ Modifying MS object, TLLI = 0x00000000, TA 220 -> 7 TBF(TFI=6 TLLI=0x00000000 DIR=UL STATE=NULL) changes state from NULL to FLOW TBF(TFI=6 TLLI=0x00000000 DIR=UL STATE=FLOW) set ass. type CCCH [prev CCCH:0, PACCH:0] -TBF(TFI=6 TLLI=0x00000000 DIR=UL STATE=FLOW) starting timer T3169 [RACH (new UL-TBF)] with 0 sec. 0 microsec. +TBF(TFI=6 TLLI=0x00000000 DIR=UL STATE=FLOW) starting timer T3169 [RACH (new UL-TBF)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=6 TLLI=0x00000000 DIR=UL STATE=FLOW) [UPLINK] START TBF(TFI=6 TLLI=0x00000000 DIR=UL STATE=FLOW) RX: [PCU <- BTS] RACH qbit-ta=31 ra=0x7e, Fn=2654167 (17,25,9) TBF(TFI=6 TLLI=0x00000000 DIR=UL STATE=FLOW) TX: START Immediate Assignment Uplink (AGCH) @@ -7922,7 +7922,7 @@ Attaching TBF to MS object, TLLI = 0xffeeddcc, TBF = TBF(TFI=0 TLLI=0xffeeddcc DIR=UL STATE=ASSIGN) TBF(TFI=0 TLLI=0xffeeddcc DIR=UL STATE=ASSIGN) changes UL ASS state from GPRS_RLCMAC_UL_ASS_NONE to GPRS_RLCMAC_UL_ASS_SEND_ASS_REJ Received RTS for PDCH: TRX=0 TS=7 FN=2654218 block_nr=8 scheduling USF=0 for required uplink resource of UL TFI=0 -TBF(TFI=0 TLLI=0xffeeddcc DIR=UL STATE=ASSIGN) starting timer T0 [reject (PACCH)] with 0 sec. 2000 microsec. +TBF(TFI=0 TLLI=0xffeeddcc DIR=UL STATE=ASSIGN) starting timer T0 [reject (PACCH)] with 0 sec. 2000 microsec, cur_fn=0 Scheduling control message at RTS for TBF(TFI=0 TLLI=0xffeeddcc DIR=UL STATE=ASSIGN) (TRX=0, TS=7) Destroying MS object, TLLI = 0x00000000 Creating MS object, TLLI = 0x00000000 @@ -7930,9 +7930,9 @@ TBF(TFI=0 TLLI=0x00000000 DIR=UL STATE=NULL) changes state from NULL to ASSIGN Attaching TBF to MS object, TLLI = 0xffeeddcc, TBF = TBF(TFI=0 TLLI=0xffeeddcc DIR=UL STATE=ASSIGN) TBF(TFI=0 TLLI=0xffeeddcc DIR=UL STATE=ASSIGN) changes UL ASS state from GPRS_RLCMAC_UL_ASS_NONE to GPRS_RLCMAC_UL_ASS_SEND_ASS_REJ -TBF(TFI=0 TLLI=0xffeeddcc DIR=UL STATE=ASSIGN) starting timer T0 [reject (PACCH)] with 0 sec. 2000 microsec. +TBF(TFI=0 TLLI=0xffeeddcc DIR=UL STATE=ASSIGN) starting timer T0 [reject (PACCH)] with 0 sec. 2000 microsec, cur_fn=0 Scheduling control message at RTS for TBF(TFI=0 TLLI=0xffeeddcc DIR=UL STATE=ASSIGN) (TRX=0, TS=7) -TBF(TFI=0 TLLI=0xffeeddcc DIR=UL STATE=ASSIGN) timer 0 expired. +TBF(TFI=0 TLLI=0xffeeddcc DIR=UL STATE=ASSIGN) timer 0 expired. cur_fn=0 TBF(TFI=0 TLLI=0xffeeddcc DIR=UL STATE=ASSIGN) releasing due to PACCH assignment timeout. TBF(TFI=0 TLLI=0xffeeddcc DIR=UL STATE=ASSIGN) free TBF(TFI=0 TLLI=0xffeeddcc DIR=UL STATE=ASSIGN) stopping timer T0 [freeing TBF] -- To view, visit https://gerrit.osmocom.org/7730 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: I5a744dc5cd7c1de1baea13fffac026c83d091429 Gerrit-PatchSet: 2 Gerrit-Project: osmo-pcu Gerrit-Branch: master Gerrit-Owner: dexter Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder From gerrit-no-reply at lists.osmocom.org Thu Apr 12 12:51:16 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Thu, 12 Apr 2018 12:51:16 +0000 Subject: osmo-ci[master]: jobs: gerrit-osmo-ttcn3-hacks: Make deps before cleaning In-Reply-To: References: Message-ID: Patch Set 3: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7406 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I07fee78bba5b07c7f3f4359869e00ef2583e0769 Gerrit-PatchSet: 3 Gerrit-Project: osmo-ci Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Neels Hofmeyr Gerrit-Reviewer: Pau Espin Pedrol Gerrit-Reviewer: Stefan Sperling Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Thu Apr 12 12:51:37 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Thu, 12 Apr 2018 12:51:37 +0000 Subject: osmo-bsc[master]: only trigger acc ramping if trx 0 is usable and unlocked In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7772 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I054829a936f0aa1e3fa34fad6466a1cd6150e307 Gerrit-PatchSet: 1 Gerrit-Project: osmo-bsc Gerrit-Branch: master Gerrit-Owner: Stefan Sperling Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Pau Espin Pedrol Gerrit-Reviewer: Stefan Sperling Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Thu Apr 12 12:51:51 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Thu, 12 Apr 2018 12:51:51 +0000 Subject: [MERGED] osmo-bsc[master]: only trigger acc ramping if trx 0 is usable and unlocked In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: only trigger acc ramping if trx 0 is usable and unlocked ...................................................................... only trigger acc ramping if trx 0 is usable and unlocked Starting an ACC ramping process while TRX 0 is unusable or locked is pointless. For instance, after loading a config with 'rf_locked 1' for trx 0, the ramping process was started as soon as the BTS established RSL, even though the air interface was still down. ACC ramping should instead be triggered once TRX 0 is unlocked. Change-Id: I054829a936f0aa1e3fa34fad6466a1cd6150e307 Related: OS#2591 --- M src/libbsc/acc_ramp.c 1 file changed, 9 insertions(+), 4 deletions(-) Approvals: Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/src/libbsc/acc_ramp.c b/src/libbsc/acc_ramp.c index 16bce3f..7116107 100644 --- a/src/libbsc/acc_ramp.c +++ b/src/libbsc/acc_ramp.c @@ -26,6 +26,7 @@ #include #include #include +#include #include /* @@ -257,7 +258,7 @@ /*! * Determine if ACC ramping should be started according to configuration, and - * if ACC ramping is enabled, begin the ramping process. + * begin the ramping process if the necessary conditions are present. * Perform at least one ramping step to allow 'step_size' ACCs. * If 'step_size' is ACC_RAMP_STEP_SIZE_MAX, or if ACC ramping is disabled, * all ACCs will be allowed immediately. @@ -269,9 +270,13 @@ acc_ramp_abort(acc_ramp); if (acc_ramp_is_enabled(acc_ramp)) { - /* Set all available ACCs to barred and start ramping up. */ - barr_all_accs(acc_ramp); - do_acc_ramping_step(acc_ramp); + struct gsm_bts_trx *trx0 = gsm_bts_trx_by_nr(acc_ramp->bts, 0); + /* TRX 0 should be usable and unlocked, otherwise starting ACC ramping is pointless. */ + if (trx0 && trx_is_usable(trx0) && trx0->mo.nm_state.administrative == NM_STATE_UNLOCKED) { + /* Set all available ACCs to barred and start ramping up. */ + barr_all_accs(acc_ramp); + do_acc_ramping_step(acc_ramp); + } } } -- To view, visit https://gerrit.osmocom.org/7772 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: I054829a936f0aa1e3fa34fad6466a1cd6150e307 Gerrit-PatchSet: 2 Gerrit-Project: osmo-bsc Gerrit-Branch: master Gerrit-Owner: Stefan Sperling Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Pau Espin Pedrol Gerrit-Reviewer: Stefan Sperling From gerrit-no-reply at lists.osmocom.org Thu Apr 12 13:33:03 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Thu, 12 Apr 2018 13:33:03 +0000 Subject: [PATCH] libosmo-netif[master]: jibuf: Add initial implementation of Jitter Buffer Message-ID: Review at https://gerrit.osmocom.org/7773 jibuf: Add initial implementation of Jitter Buffer Change-Id: I9688ba9c4d5b733b9f29d0f15f73750f9271ef55 --- M include/osmocom/netif/Makefile.am A include/osmocom/netif/jibuf.h M src/Makefile.am A src/jibuf.c M tests/Makefile.am A tests/jibuf/jibuf_test.c A tests/jibuf/jibuf_test.ok M tests/testsuite.at 8 files changed, 1,402 insertions(+), 2 deletions(-) git pull ssh://gerrit.osmocom.org:29418/libosmo-netif refs/changes/73/7773/1 diff --git a/include/osmocom/netif/Makefile.am b/include/osmocom/netif/Makefile.am index cbaff5c..0db78fb 100644 --- a/include/osmocom/netif/Makefile.am +++ b/include/osmocom/netif/Makefile.am @@ -3,6 +3,7 @@ osmonetif_HEADERS = amr.h \ channel.h \ datagram.h \ + jibuf.h \ osmux.h \ ipa.h \ ipa_unit.h \ diff --git a/include/osmocom/netif/jibuf.h b/include/osmocom/netif/jibuf.h new file mode 100644 index 0000000..aca319a --- /dev/null +++ b/include/osmocom/netif/jibuf.h @@ -0,0 +1,66 @@ +#ifndef _JIBUF_H_ +#define _JIBUF_H_ + +#include +#include +#include + +#include + +/*! \defgroup jibuf Osmocom Jitter Buffer + * @{ + */ + +/*! \file jibuf.h + * \brief Osmocom Jitter Buffer helpers + */ + +typedef void (*osmo_jibuf_dequeue_cb)(struct msgb *msg, void *data); + +/*! \brief A structure representing a single instance of a jitter buffer */ +struct jibuf { + void *talloc_ctx; + bool started; + struct osmo_timer_list timer; + struct llist_head msg_list; /* sorted by output ts */ + uint32_t min_delay; /* in msec */ + uint32_t max_delay; /* in msec */ + uint32_t threshold_delay; /* in msec */ + + osmo_jibuf_dequeue_cb dequeue_cb; + void *dequeue_cb_data; + + /* number of pkt drops since we last changed the buffer size */ + uint32_t last_dropped; + uint32_t consecutive_drops; + + uint32_t ref_rx_ts; + uint32_t ref_tx_ts; + uint16_t ref_tx_seq; + + struct timeval last_enqueue_time; + struct timeval next_dequeue_time; + + struct { + uint32_t total_enqueued; + uint64_t total_dropped; + } stats; +}; + + +struct jibuf *osmo_jibuf_alloc(void *talloc_ctx); + +void osmo_jibuf_delete(struct jibuf *jb); + +int osmo_jibuf_enqueue(struct jibuf *jb, struct msgb *msg); + +bool osmo_jibuf_empty(struct jibuf *jb); + +void osmo_jibuf_set_min_delay(struct jibuf *jb, uint32_t min_delay); +void osmo_jibuf_set_max_delay(struct jibuf *jb, uint32_t max_delay); + +void osmo_jibuf_set_dequeue_cb(struct jibuf *jb, osmo_jibuf_dequeue_cb dequeue_cb, void* cb_data); + +/*! @} */ + +#endif diff --git a/src/Makefile.am b/src/Makefile.am index 81a55b4..79e3685 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -18,6 +18,7 @@ datagram.c \ ipa.c \ ipa_unit.c \ + jibuf.c \ osmux.c \ rs232.c \ rtp.c \ diff --git a/src/jibuf.c b/src/jibuf.c new file mode 100644 index 0000000..44a86a5 --- /dev/null +++ b/src/jibuf.c @@ -0,0 +1,377 @@ +/* (C) 2017 by Pau Espin Pedrol + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + */ + +#include +#include +#include + +#include +#include +#include +#include +#include + +#include +#include +#include + +#include + +/*! \addtogroup jibuf Osmocom Jitter Buffer + * @{ + */ + +/*! \file jibuf.c + * \brief Osmocom Jitter Buffer helpers + */ + +/* Sampling rate (in Hz) */ +/* TODO: SAMPLE RATE can be guessed from rtp.p_type */ +#define SAMPLE_RATE 8000 + +/* TUNABLE PARAMETERS: */ + +/* default {min,max}_delay values if set_{min,max}_delay() is never called */ +#define JIBUF_DEFAULT_MIN_DELAY_MS 60 +#define JIBUF_DEFAULT_MAX_DELAY_MS 200 + +/* How frequently (num of input packets) do we reselect a new reference? */ +#define JIBUF_REFERENCE_TS_FREQ 60 + +/* How frequently (num of input packets) do we check if we should adapt the + * buffer size (threshold_delay) ? */ +#define JIBUF_BUFFER_RECALC_FREQ 40 +/* How many pkts should be dropped at max every JIBUF_BUFFER_RECALC_FREQ input + * pkts? */ +#define JIBUF_ALLOWED_PKT_DROP 3 +/* How many consecutive pkts can be dropped before triggering a buffer size incr ? */ +#define JIBUF_ALLOWED_PKT_CONSECUTIVE_DROP 1 +/* How much do we incr/decr the buffer size every time we recalculate it? */ +#define JIBUF_BUFFER_INC_STEP 20 +#define JIBUF_BUFFER_DEC_STEP 5 + +struct jibuf_msgb_cb { + struct timeval ts; + unsigned long *old_cb; +}; + +#define JIBUF_MSGB_CB(__msgb) ((struct jibuf_msgb_cb *)&((__msgb)->cb[0])) + +static void ms2timeval(struct timeval *ts, uint32_t ms) +{ + ts->tv_sec = ms / 1000; + ts->tv_usec = (ms % 1000) * 1000; +} + +static uint32_t timeval2ms(const struct timeval *ts) +{ + return ts->tv_sec * 1000 + ts->tv_usec / 1000; +} + +static int clock_gettime_timeval(clockid_t clk_id, struct timeval *tp) +{ + struct timespec now; + int n; + + n = osmo_clock_gettime(clk_id, &now); + tp->tv_sec = now.tv_sec; + tp->tv_usec = now.tv_nsec / 1000; + + return n; +} + +static struct timeval *msgb_scheduled_ts(const struct msgb *msg) +{ + struct jibuf_msgb_cb *jbcb = JIBUF_MSGB_CB(msg); + return &jbcb->ts; +} + +/* Add msgb to the list sorted by its scheduled output ts */ +static void llist_add_sorted(struct msgb *msg, struct llist_head *msg_list) +{ + struct msgb *cur; + struct timeval *msg_ts = msgb_scheduled_ts(msg); + + /* TODO: not sure if I need to use _safe here */ + llist_for_each_entry(cur, msg_list, list) { + struct timeval *cur_ts = msgb_scheduled_ts(cur); + if (timercmp(msg_ts, cur_ts, <)) { + __llist_add(&msg->list, cur->list.prev, &cur->list); + return; + } + } + + /* we reached the end, add to the tail: */ + llist_add_tail(&msg->list, msg_list); + +} + +static uint16_t msg_get_sequence(struct msgb *msg) +{ + struct rtp_hdr *rtph = osmo_rtp_get_hdr(msg); + return ntohs(rtph->sequence); +} + +static uint32_t msg_get_timestamp(struct msgb *msg) +{ + struct rtp_hdr *rtph = osmo_rtp_get_hdr(msg); + return ntohl(rtph->timestamp); +} + +static int32_t samples2ms(int32_t samples) +{ + /* XXX: SAMPLE RATE can be guessed from rtp.p_type */ + return samples * 1000 / SAMPLE_RATE; +} + +/* Calculates pkt delay related to reference pkt. Similar concept to D(i,j) as + * defined in RFC3550 (RTP). */ +static int calc_pkt_rel_delay(struct jibuf *jb, struct msgb *msg) +{ + uint32_t current_rx_ts = timeval2ms(&jb->last_enqueue_time); + uint32_t current_tx_ts = msg_get_timestamp(msg); + + return samples2ms((current_tx_ts - jb->ref_tx_ts)) - (current_rx_ts - jb->ref_rx_ts); +} + +static void msg_set_as_reference(struct jibuf *jb, struct msgb *msg) +{ + jb->ref_rx_ts = timeval2ms(&jb->last_enqueue_time); + jb->ref_tx_ts = msg_get_timestamp(msg); + jb->ref_tx_seq = msg_get_sequence(msg); + + LOGP(DLJIBUF, LOGL_DEBUG, "New reference (seq=%"PRIu16" rx=%"PRIu32 \ + " tx=%"PRIu32")\n", jb->ref_tx_seq, jb->ref_rx_ts, jb->ref_tx_ts); +} + +static void dequeue_msg(struct jibuf *jb, struct msgb *msg) +{ + unsigned long *old_cb = JIBUF_MSGB_CB(msg)->old_cb; + memcpy(msg->cb, old_cb, sizeof(msg->cb)); + talloc_free(old_cb); + llist_del(&msg->list); + + jb->dequeue_cb(msg, jb->dequeue_cb_data); +} + +static void timer_expired(void *data) +{ + struct jibuf *jb = (struct jibuf*) data; + struct timeval delay_ts, now; + struct msgb *msg, *next; + + llist_for_each_entry_safe(msg, next, &jb->msg_list, list) { + struct timeval *msg_ts = msgb_scheduled_ts(msg); + clock_gettime_timeval(CLOCK_MONOTONIC, &now); + if (timercmp(msg_ts, &now, >)) { + jb->next_dequeue_time = *msg_ts; + timersub(msg_ts, &now, &delay_ts); + osmo_timer_schedule(&jb->timer, + delay_ts.tv_sec, delay_ts.tv_usec); + return; + } + + dequeue_msg(jb, msg); + } + + /* XXX: maybe try to tune the threshold based on the calculated output jitter? */ + /* XXX: try to find holes in the list and create fake pkts to improve the + jitter when packets do not arrive on time */ +} + +static void recalc_threshold_delay(struct jibuf *jb) +{ + + /* Recalculate every JIBUF_RECALC_FREQ_PKTS handled packets, or if we have too + many consecutive drops */ + uint32_t sum_pkts = jb->stats.total_enqueued + jb->stats.total_dropped + + jb->last_dropped; + + if (jb->consecutive_drops <= JIBUF_ALLOWED_PKT_CONSECUTIVE_DROP && + sum_pkts % JIBUF_BUFFER_RECALC_FREQ != 0) + return; + + if (jb->consecutive_drops > JIBUF_ALLOWED_PKT_CONSECUTIVE_DROP || + jb->last_dropped > JIBUF_ALLOWED_PKT_DROP) + jb->threshold_delay = OSMO_MIN( + jb->threshold_delay + JIBUF_BUFFER_INC_STEP, + jb->max_delay); + else + jb->threshold_delay = OSMO_MAX( + jb->threshold_delay - JIBUF_BUFFER_DEC_STEP, + jb->min_delay); + LOGP(DLJIBUF, LOGL_DEBUG, "New threshold: %u ms (freq=%d dropped=%d/%d consecutive=%d/%d)\n", + jb->threshold_delay, JIBUF_BUFFER_RECALC_FREQ, + jb->last_dropped, JIBUF_ALLOWED_PKT_DROP, + jb->consecutive_drops, JIBUF_ALLOWED_PKT_CONSECUTIVE_DROP); + + jb->stats.total_dropped += jb->last_dropped; + jb->last_dropped = 0; + +} + +//---------------------------------- + +/*! \brief Allocate a new jitter buffer instance + * \return the new allocated instance + */ +struct jibuf *osmo_jibuf_alloc(void *talloc_ctx) +{ + struct jibuf *jb; + jb = talloc_zero(talloc_ctx, struct jibuf); + + jb->min_delay = JIBUF_DEFAULT_MIN_DELAY_MS; + jb->max_delay = JIBUF_DEFAULT_MAX_DELAY_MS; + jb->threshold_delay = jb->min_delay; + + INIT_LLIST_HEAD(&jb->msg_list); + + jb->timer.cb = timer_expired; + jb->timer.data = jb; + + return jb; +} + +/*! \brief Destroy a previously allocated jitter buffer instance + * \param[in] jb Previously allocated (non-null) jitter buffer instance + * + * All the queued packets are dequeued before deleting the instance. + */ +void osmo_jibuf_delete(struct jibuf *jb) +{ + struct msgb *msg, *tmp; + osmo_timer_del(&jb->timer); + llist_for_each_entry_safe(msg, tmp, &jb->msg_list, list) + dequeue_msg(jb, msg); + + talloc_free(jb); +} + +/*! \brief Try to enqueue a packet into the jitter buffer + * \param[in] jb jitter buffer instance + * \param[in] msg msgb to enqueue, containing an RTP packet + * \return <0 if the packet was dropped, 0 otherwise + * + * This function calculates the delay for the enqueued packet. If the delay is + * bigger than the current buffer size, the function returns -1 and the caller + * owns the packet again and can free it if required. If the packet is enqueued, + * 0 is returned and the exact same packet (ownership transfer, no copy is made) + * will be available again through the dequeue_cb() when the queue timer for + * this packet expires. + */ +int osmo_jibuf_enqueue(struct jibuf *jb, struct msgb *msg) +{ + int rel_delay, delay; + struct timeval delay_ts, sched_ts; + + clock_gettime_timeval(CLOCK_MONOTONIC, &jb->last_enqueue_time); + + if (!jb->started) { + jb->started = true; + msg_set_as_reference(jb, msg); + rel_delay = 0; + } else { + rel_delay = calc_pkt_rel_delay(jb, msg); + } + + /* Avoid time skew with sender (or drop-everything state), + reselect a new reference from time to time */ + //if ((int)(msg_get_sequence(msg) - jb->ref_tx_seq) > JIBUF_REFERENCE_TS_FREQ) + // msg_set_as_reference(jb, msg); + + delay = jb->threshold_delay + rel_delay; + + /* packet too late, let's drop it and incr buffer size if encouraged */ + if (delay < 0) { + jb->last_dropped++; + jb->consecutive_drops++; + + LOGP(DLJIBUF, LOGL_DEBUG, "dropped %u > %u (seq=%"PRIu16" ts=%"PRIu32")\n", + rel_delay, jb->threshold_delay, msg_get_sequence(msg), + msg_get_timestamp(msg)); + + recalc_threshold_delay(jb); + return -1; + } else { + jb->consecutive_drops = 0; + jb->stats.total_enqueued++; + } + + ms2timeval(&delay_ts, (uint32_t) delay); + timeradd(&jb->last_enqueue_time, &delay_ts, &sched_ts); + + LOGP(DLJIBUF, LOGL_DEBUG, "enqueuing packet seq=%"PRIu16" rel=%d delay=%d" \ + " thres=%d {%lu.%06lu -> %lu.%06lu}\n", + msg_get_sequence(msg), rel_delay, delay, jb->threshold_delay, + jb->last_enqueue_time.tv_sec, jb->last_enqueue_time.tv_usec, + sched_ts.tv_sec, sched_ts.tv_usec); + + /* Add scheduled dequeue time in msg->cb so we can check it later */ + unsigned long *old_cb = talloc_memdup(jb->talloc_ctx, msg->cb, sizeof(msg->cb)); + struct jibuf_msgb_cb *jbcb = JIBUF_MSGB_CB(msg); + jbcb->ts = sched_ts; + jbcb->old_cb = old_cb; + + llist_add_sorted(msg, &jb->msg_list); + + + /* See if updating the timer is needed: */ + if (!osmo_timer_pending(&jb->timer) || + timercmp(&sched_ts, &jb->next_dequeue_time, <)) { + jb->next_dequeue_time = sched_ts; + osmo_timer_schedule(&jb->timer, 0, delay * 1000); + } + + /* Let's check packet loss stats to see if buffer_size must be changed */ + recalc_threshold_delay(jb); + + return 0; +} + +/*! \brief Check whether the jitter buffer instance has packets queued or not. + * \param[in] jb jitter buffer instance + * \return true if the queue is empty, false otherwise. + */ +bool osmo_jibuf_empty(struct jibuf *jb) +{ + return llist_empty(&jb->msg_list); +} + +/*! \brief Set minimum buffer size for the jitter buffer + * \param[in] jb jitter buffer instance + * \param[in] min_delay Minimum buffer size, as in minimum delay in milliseconds + */ +void osmo_jibuf_set_min_delay(struct jibuf *jb, uint32_t min_delay) +{ + jb->min_delay = min_delay ? min_delay : JIBUF_DEFAULT_MIN_DELAY_MS; + jb->threshold_delay = OSMO_MAX(jb->min_delay, jb->threshold_delay); +} + +/*! \brief Set maximum buffer size for the jitter buffer + * \param[in] jb jitter buffer instance + * \param[in] max_delay Maximum buffer size, as in maximum delay in milliseconds + */ +void osmo_jibuf_set_max_delay(struct jibuf *jb, uint32_t max_delay) +{ + jb->max_delay = max_delay ? max_delay : JIBUF_DEFAULT_MAX_DELAY_MS; + jb->threshold_delay = OSMO_MIN(jb->max_delay, jb->threshold_delay); +} + +/*! \brief Set dequeue callback for the jitter buffer + * \param[in] jb jitter buffer instance + * \param[in] dequeue_cb function pointer to call back when the dequeue timer for a given packet expires + * \param[in] cb_data data pointer to be passed to dequeue_cb together with the msgb. + */ +void osmo_jibuf_set_dequeue_cb(struct jibuf *jb, osmo_jibuf_dequeue_cb + dequeue_cb, void* cb_data) +{ + jb->dequeue_cb = dequeue_cb; + jb->dequeue_cb_data = cb_data; +} + +/*! @} */ diff --git a/tests/Makefile.am b/tests/Makefile.am index f99e276..bf1db1f 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -1,10 +1,13 @@ AM_CFLAGS = -Wall -I$(top_srcdir)/include $(LIBOSMOCORE_CFLAGS) -g AM_LDFLAGS = $(LIBOSMOCORE_LDFLAGS) -check_PROGRAMS = osmux/osmux_test +check_PROGRAMS = osmux/osmux_test jibuf/jibuf_test osmux_osmux_test_SOURCES = osmux/osmux_test.c osmux_osmux_test_LDADD = $(LIBOSMOCORE_LIBS) $(top_builddir)/src/libosmonetif.la + +jibuf_jibuf_test_SOURCES = jibuf/jibuf_test.c +jibuf_jibuf_test_LDADD = $(LIBOSMOCORE_LIBS) $(top_builddir)/src/libosmonetif.la # The `:;' works around a Bash 3.2 bug when the output is not writeable. $(srcdir)/package.m4: $(top_srcdir)/configure.ac @@ -25,7 +28,8 @@ } >'$(srcdir)/package.m4' EXTRA_DIST = testsuite.at $(srcdir)/package.m4 $(TESTSUITE) \ - osmux/osmux_test.ok + osmux/osmux_test.ok \ + jibuf/jibuf_test.ok DISTCLEANFILES = atconfig diff --git a/tests/jibuf/jibuf_test.c b/tests/jibuf/jibuf_test.c new file mode 100644 index 0000000..69a6d2f --- /dev/null +++ b/tests/jibuf/jibuf_test.c @@ -0,0 +1,594 @@ +/* (C) 207 by Pau Espin Pedrol + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include + +static struct jibuf *jb; + +static uint16_t rtp_next_seq; +static uint32_t rtp_next_ts; + +#define SAMPLES_PER_PKT 160 +#define TIME_RTP_PKT_MS 20 +/* RTP packet with AMR payload */ +static uint8_t rtp_pkt[] = { + 0x80, 0x62, 0x3f, 0xcc, 0x00, 0x01, 0xa7, 0x6f, /* RTP */ + 0x07, 0x09, 0x00, 0x62, 0x20, 0x14, 0xff, 0xd4, /* AMR */ + 0xf9, 0xff, 0xfb, 0xe7, 0xeb, 0xf9, 0x9f, 0xf8, + 0xf2, 0x26, 0x33, 0x65, 0x54, +}; + +/* ----------------------------- */ + +/* Logging related stuff */ +#define INT2IDX(x) (-1*(x)-1) +struct log_info_cat jibuf_test_cat[] = { + [INT2IDX(DLJIBUF)] = { + .name = "DLJIBUF", + .description = "Osmocom Jitter Buffer", + .enabled = 1, .loglevel = LOGL_DEBUG, + }, +}; +const struct log_info jibuf_test_log_info = { + .filter_fn = NULL, + .cat = jibuf_test_cat, + .num_cat = ARRAY_SIZE(jibuf_test_cat), +}; +/* ----------------------------- */ + +static void rtp_init(uint16_t seq, uint32_t timestamp) +{ + rtp_next_seq = seq; + rtp_next_ts = timestamp; +} + +static struct msgb *rtp_new(uint16_t seq, uint32_t timestamp) +{ + struct msgb *msg; + struct rtp_hdr *rtph; + + msg = msgb_alloc(1500, "test"); + if (!msg) + exit(EXIT_FAILURE); + memcpy(msg->data, rtp_pkt, sizeof(rtp_pkt)); + msgb_put(msg, sizeof(rtp_pkt)); + + rtph = osmo_rtp_get_hdr(msg); + rtph->sequence = htons(rtp_next_seq); + rtph->timestamp = htonl(rtp_next_ts); + return msg; +} + +static struct msgb *rtp_next(void) +{ + rtp_next_seq++; + rtp_next_ts += SAMPLES_PER_PKT; + return rtp_new(rtp_next_seq, rtp_next_ts); +} + +static void sigalarm_handler(int foo) +{ + printf("FAIL: test did not run successfully\n"); + exit(EXIT_FAILURE); +} + + +static void clock_debug(char* str) +{ + struct timespec ts; + struct timeval tv; + osmo_clock_gettime(CLOCK_MONOTONIC, &ts); + osmo_gettimeofday(&tv, NULL); + printf("sys={%lu.%06lu}, mono={%lu.%06lu}: %s\n", + tv.tv_sec, tv.tv_usec, ts.tv_sec, ts.tv_nsec/1000, str); +} + +static void clock_override_enable(bool enable) +{ + osmo_gettimeofday_override = enable; + osmo_clock_override_enable(CLOCK_MONOTONIC, enable); +} + +static void clock_override_set(long sec, long usec) +{ + struct timespec *mono; + osmo_gettimeofday_override_time.tv_sec = sec; + osmo_gettimeofday_override_time.tv_usec = usec; + mono = osmo_clock_override_gettimespec(CLOCK_MONOTONIC); + mono->tv_sec = sec; + mono->tv_nsec = usec*1000; + + clock_debug("clock_override_set"); +} + +static void clock_override_add(long sec, long usec) +{ + osmo_gettimeofday_override_add(sec, usec); + osmo_clock_override_add(CLOCK_MONOTONIC, sec, usec*1000); + clock_debug("clock_override_add"); +} + + +static void dequeue_cb(struct msgb *msg, void *data) +{ + struct rtp_hdr *rtph; + bool check_latest; + char buf[250]; + rtph = osmo_rtp_get_hdr(msg); + check_latest = rtph->sequence == htons(rtp_next_seq) && rtph->timestamp == htonl(rtp_next_ts); + snprintf(buf, sizeof(buf), "dequeue: seq=%"PRIu16" ts=%"PRIu32" %s", + ntohs(rtph->sequence), ntohl(rtph->timestamp), check_latest ? "LATEST" : "INTERMEDIATE"); + clock_debug(buf); + msgb_free(msg); +} + +#define ENQUEUE_NEXT(jb) { \ + struct msgb *_msg; \ + int _rc; \ + _msg = rtp_next(); \ + _rc = osmo_jibuf_enqueue(jb, _msg); \ + OSMO_ASSERT(!_rc); \ + } + +static void test_normal(void) +{ + int min_delay = 60; + + printf("===test_normal===\n"); + + clock_override_enable(true); + clock_override_set(0, 0); + rtp_init(32, 400); + jb = osmo_jibuf_alloc(NULL); + osmo_jibuf_set_dequeue_cb(jb, dequeue_cb, NULL); + osmo_jibuf_set_min_delay(jb, min_delay); + osmo_jibuf_set_max_delay(jb, 200); + + /* First rtp at t=0, should be scheduled in min_delay time */ + ENQUEUE_NEXT(jb); + clock_override_add(0, min_delay*1000); + clock_debug("first select, first dequed"); + osmo_select_main(0); + + /* We are at t=60, if we add a new packet and wait for 20msecs (next packet), we should show it dequeued*/ + ENQUEUE_NEXT(jb); + clock_override_add(0, TIME_RTP_PKT_MS*1000); + clock_debug("second select, one packet should be dequeued"); + osmo_select_main(0); + + /* We are at t=80, and only 2 packets were introduced. Let's add 2 more, should be dequeued by 80+40: */ + ENQUEUE_NEXT(jb); + ENQUEUE_NEXT(jb); + clock_override_add(0, TIME_RTP_PKT_MS*2*1000); + clock_debug("third select, two more dequed"); + osmo_select_main(0); + + /* t=120, 4 enqueued, 4 dequeued.*/ + OSMO_ASSERT(osmo_jibuf_empty(jb)); + + osmo_jibuf_delete(jb); +} + +static void test_delete_nonempty(void) +{ + int min_delay = 100; + + printf("===test_delete_nonempty===\n"); + + clock_override_enable(true); + clock_override_set(0, 0); + rtp_init(32, 400); + jb = osmo_jibuf_alloc(NULL); + osmo_jibuf_set_dequeue_cb(jb, dequeue_cb, NULL); + osmo_jibuf_set_min_delay(jb, min_delay); + osmo_jibuf_set_max_delay(jb, 200); + + ENQUEUE_NEXT(jb); + clock_override_add(0, TIME_RTP_PKT_MS*1000); + ENQUEUE_NEXT(jb); + clock_override_add(0, TIME_RTP_PKT_MS*1000); + ENQUEUE_NEXT(jb); + clock_override_add(0, TIME_RTP_PKT_MS*1000); + ENQUEUE_NEXT(jb); + + /* No need to update the time, all msgs should be dequeued at this time */ + OSMO_ASSERT(!osmo_jibuf_empty(jb)); + osmo_jibuf_delete(jb); +} + +static void test_packet_lost(void) +{ + int min_delay = 60; + + printf("===test_packet_lost===\n"); + + clock_override_enable(true); + clock_override_set(0, 0); + rtp_init(32, 400); + jb = osmo_jibuf_alloc(NULL); + osmo_jibuf_set_dequeue_cb(jb, dequeue_cb, NULL); + osmo_jibuf_set_min_delay(jb, min_delay); + osmo_jibuf_set_max_delay(jb, 200); + + /* First rtp at t=0, should be scheduled in min_delay time */ + clock_debug("enqueue 1st packet"); + ENQUEUE_NEXT(jb); + clock_override_add(0, TIME_RTP_PKT_MS*1000); + + clock_debug("packet lost: 2nd"); + clock_override_add(0, TIME_RTP_PKT_MS*1000); + clock_debug("packet lost: 3rd"); + clock_override_add(0, TIME_RTP_PKT_MS*1000); + clock_debug("packet lost: 4th"); + clock_override_add(0, TIME_RTP_PKT_MS*1000); + + /* We are at t=80 */ + clock_debug("enqueue 5th packet"); + ENQUEUE_NEXT(jb); + clock_override_add(0, min_delay*1000); + + /* We are at t=140, all out in order */ + osmo_select_main(0); + + OSMO_ASSERT(osmo_jibuf_empty(jb)); + + osmo_jibuf_delete(jb); +} + + +static void test_packet_drop(void) +{ + int min_delay = 60; + struct msgb *msg; + + printf("===test_packet_drop===\n"); + + clock_override_enable(true); + clock_override_set(0, 0); + rtp_init(32, 400); + jb = osmo_jibuf_alloc(NULL); + osmo_jibuf_set_dequeue_cb(jb, dequeue_cb, NULL); + osmo_jibuf_set_min_delay(jb, min_delay); + osmo_jibuf_set_max_delay(jb, 200); + + /* First rtp at t=0, should be scheduled in min_delay time */ + clock_debug("enqueue 1st packet"); + ENQUEUE_NEXT(jb); + clock_override_add(0, TIME_RTP_PKT_MS*1000); + clock_debug("enqueue 2nd packet"); + ENQUEUE_NEXT(jb); + clock_override_add(0, TIME_RTP_PKT_MS*1000); + clock_debug("enqueue 3rd packet"); + ENQUEUE_NEXT(jb); + clock_override_add(0, TIME_RTP_PKT_MS*1000); + clock_debug("enqueue 4th packet"); + ENQUEUE_NEXT(jb); + + /* We are at t=60, first comes out */ + osmo_select_main(0); + + /* We move to t=160, next packet in stream is too late:*/ + clock_override_add(0, 100*1000); + clock_debug("next packet should be dropped, too late"); + msg = rtp_next(); + OSMO_ASSERT(osmo_jibuf_enqueue(jb, msg) < 0); + msgb_free(msg); + + /* However, if we try to add a later one, it should work: */ + clock_debug("next packet should be enqueued"); + ENQUEUE_NEXT(jb); + + /* We are at t=160, all of them should be dequeued */ + osmo_select_main(0); + + /* t=160, 4 enqueued, 4 dequeued.*/ + OSMO_ASSERT(osmo_jibuf_empty(jb)); + + osmo_jibuf_delete(jb); +} + +static void test_packet_out_of_order(void) +{ + int min_delay = 60; + struct msgb *msg2, *msg3; + + printf("===test_packet_out_of_order===\n"); + + clock_override_enable(true); + clock_override_set(0, 0); + rtp_init(32, 400); + jb = osmo_jibuf_alloc(NULL); + osmo_jibuf_set_dequeue_cb(jb, dequeue_cb, NULL); + osmo_jibuf_set_min_delay(jb, min_delay); + osmo_jibuf_set_max_delay(jb, 200); + + /* First rtp at t=0, should be scheduled in min_delay time */ + clock_debug("enqueue 1st packet"); + ENQUEUE_NEXT(jb); + + /* 3rd packet arrives instead of 2nd one */ + msg2 = rtp_next(); + msg3 = rtp_next(); + clock_override_add(0, TIME_RTP_PKT_MS*2*1000); + clock_debug("enqueue 3rd packet"); + OSMO_ASSERT(osmo_jibuf_enqueue(jb, msg3) == 0); + clock_debug("enqueue 2nd packet"); + OSMO_ASSERT(osmo_jibuf_enqueue(jb, msg2) == 0); + + /* We are at t=100, all out in order */ + clock_override_add(0, min_delay*1000); + osmo_select_main(0); + + OSMO_ASSERT(osmo_jibuf_empty(jb)); + + osmo_jibuf_delete(jb); +} + +static void test_start_2nd_packet(void) +{ + int min_delay = 60; + struct msgb *msg1; + + printf("===test_start_2nd_packet===\n"); + + clock_override_enable(true); + clock_override_set(0, 0); + rtp_init(32, 400); + jb = osmo_jibuf_alloc(NULL); + osmo_jibuf_set_dequeue_cb(jb, dequeue_cb, NULL); + osmo_jibuf_set_min_delay(jb, min_delay); + osmo_jibuf_set_max_delay(jb, 200); + + /* First rtp at t=0, should be scheduled in min_delay time */ + clock_debug("1st packet is not yet enqueued"); + msg1 = rtp_next(); + clock_override_add(0, TIME_RTP_PKT_MS*2*1000); + + /* 2nd packet arrives instead of 2nd one */ + clock_debug("2nd packet is enqueuded as first"); + ENQUEUE_NEXT(jb); + + clock_debug("1st packet is enqueuded as second, should be enqueued with preference"); + OSMO_ASSERT(osmo_jibuf_enqueue(jb, msg1) == 0); + + /* 1st packet is dequeued */ + clock_override_add(0, (min_delay-TIME_RTP_PKT_MS)*1000); + osmo_select_main(0); + + /* 2nst packet is dequeued */ + clock_override_add(0, TIME_RTP_PKT_MS*1000); + osmo_select_main(0); + + OSMO_ASSERT(osmo_jibuf_empty(jb)); + + osmo_jibuf_delete(jb); +} + +static void test_buffer_threshold_change(void) +{ + int min_delay = 60; + struct msgb *msg; + uint32_t threshold_delay; + int i; + + printf("===test_buffer_threshold_change===\n"); + + clock_override_enable(true); + clock_override_set(0, 0); + rtp_init(32, 400); + jb = osmo_jibuf_alloc(NULL); + osmo_jibuf_set_dequeue_cb(jb, dequeue_cb, NULL); + osmo_jibuf_set_min_delay(jb, min_delay); + osmo_jibuf_set_max_delay(jb, 200); + + OSMO_ASSERT(min_delay == jb->threshold_delay); + threshold_delay = jb->threshold_delay; + + /* First rtp at t=0, should be scheduled in min_delay time */ + clock_debug("enqueue 1st packet"); + ENQUEUE_NEXT(jb); + clock_override_add(0, TIME_RTP_PKT_MS*1000); + clock_debug("enqueue 2nd packet"); + ENQUEUE_NEXT(jb); + clock_override_add(0, TIME_RTP_PKT_MS*1000); + clock_debug("enqueue 3rd packet"); + ENQUEUE_NEXT(jb); + clock_override_add(0, TIME_RTP_PKT_MS*1000); + clock_debug("enqueue 4th packet"); + ENQUEUE_NEXT(jb); + + /* We are at t=60, first comes out */ + osmo_select_main(0); + + /* We move to t=160, next packet in stream is too late:*/ + clock_override_add(0, 100*1000); + clock_debug("next packet should be dropped, too late"); + msg = rtp_next(); + OSMO_ASSERT(osmo_jibuf_enqueue(jb, msg) < 0); + msgb_free(msg); + + clock_override_add(0, TIME_RTP_PKT_MS*1000); + clock_debug("next packet is dropped, but buffer is increased"); + msg = rtp_next(); + OSMO_ASSERT(osmo_jibuf_enqueue(jb, msg) < 0); + msgb_free(msg); + OSMO_ASSERT(jb->threshold_delay > threshold_delay); + threshold_delay = jb->threshold_delay; + + clock_override_add(0, TIME_RTP_PKT_MS*1000); + clock_debug("next packet is enqueued since the buffer increased"); + ENQUEUE_NEXT(jb); + + /* As the last buffer was really late but still accepted, it is not delayed: */ + osmo_select_main(0); + + clock_debug("Enqueue late packets"); + for (i = 0; i<4; i++) { + ENQUEUE_NEXT(jb); + } + + clock_debug("Run perfectly for a while, buffer should decrease"); + for (i = 0; i<100; i++) { + clock_override_add(0, TIME_RTP_PKT_MS*1000); + ENQUEUE_NEXT(jb); + osmo_select_main(0); + } + clock_debug("Done, checking threshold and cleaning"); + OSMO_ASSERT(jb->threshold_delay < threshold_delay); + clock_override_add(0, jb->threshold_delay*1000); + osmo_select_main(0); + + OSMO_ASSERT(osmo_jibuf_empty(jb)); + + osmo_jibuf_delete(jb); +} + +static void test_seq_wraparound(void) +{ + int min_delay = 80; + + printf("===test_seq_wraparound===\n"); + + clock_override_enable(true); + clock_override_set(0, 0); + rtp_init(65533, 400); /* seq = 2^16 -3 */ + jb = osmo_jibuf_alloc(NULL); + osmo_jibuf_set_dequeue_cb(jb, dequeue_cb, NULL); + osmo_jibuf_set_min_delay(jb, min_delay); + osmo_jibuf_set_max_delay(jb, 200); + + clock_debug("enqueue 1st packet (seq=65534)"); + ENQUEUE_NEXT(jb); + clock_override_add(0, TIME_RTP_PKT_MS*1000); + clock_debug("enqueue 2nd packet (seq=65535)"); + ENQUEUE_NEXT(jb); + clock_override_add(0, TIME_RTP_PKT_MS*1000); + clock_debug("enqueue 3rd packet (seq=0, wraparound)"); + ENQUEUE_NEXT(jb); + clock_override_add(0, TIME_RTP_PKT_MS*1000); + clock_debug("enqueue 4th packet (seq=1)"); + ENQUEUE_NEXT(jb); + clock_override_add(0, TIME_RTP_PKT_MS*1000); + clock_debug("enqueue 5th packet (seq=2)"); + ENQUEUE_NEXT(jb); + + clock_debug("dequeue 1st packet (seq=65534)"); + osmo_select_main(0); + clock_override_add(0, TIME_RTP_PKT_MS*1000); + clock_debug("dequeue 2nd packet (seq=65535)"); + osmo_select_main(0); + clock_override_add(0, TIME_RTP_PKT_MS*1000); + clock_debug("dequeue 3rd packet (seq=0, wraparound)"); + osmo_select_main(0); + clock_override_add(0, TIME_RTP_PKT_MS*1000); + clock_debug("dequeue 4th packet (seq=1)"); + osmo_select_main(0); + clock_override_add(0, TIME_RTP_PKT_MS*1000); + clock_debug("dequeue 5th packet (seq=2)"); + osmo_select_main(0); + + OSMO_ASSERT(osmo_jibuf_empty(jb)); + + osmo_jibuf_delete(jb); +} + +static void test_timestamp_wraparound(void) +{ + int min_delay = 80; + unsigned int offset = 14; + + printf("===test_timestamp_wraparound===\n"); + + clock_override_enable(true); + clock_override_set(0, 0); + rtp_init(32, 4294966816 + offset); /* timestamp = 2^32 - 3*SAMPLES_PER_PKT + offset */ + jb = osmo_jibuf_alloc(NULL); + osmo_jibuf_set_dequeue_cb(jb, dequeue_cb, NULL); + osmo_jibuf_set_min_delay(jb, min_delay); + osmo_jibuf_set_max_delay(jb, 200); + + clock_debug("enqueue 1st packet (ts=4294966990)"); + ENQUEUE_NEXT(jb); + clock_override_add(0, TIME_RTP_PKT_MS*1000); + clock_debug("enqueue 2nd packet (ts=4294967150)"); + ENQUEUE_NEXT(jb); + clock_override_add(0, TIME_RTP_PKT_MS*1000); + clock_debug("enqueue 3rd packet (ts=14, wraparound)"); + ENQUEUE_NEXT(jb); + clock_override_add(0, TIME_RTP_PKT_MS*1000); + clock_debug("enqueue 4th packet (ts=174)"); + ENQUEUE_NEXT(jb); + clock_override_add(0, TIME_RTP_PKT_MS*1000); + clock_debug("enqueue 5th packet (ts=334)"); + ENQUEUE_NEXT(jb); + + clock_debug("dequeue 1st packet (ts=4294966990)"); + osmo_select_main(0); + clock_override_add(0, TIME_RTP_PKT_MS*1000); + clock_debug("dequeue 2nd packet (ts=4294967150)"); + osmo_select_main(0); + clock_override_add(0, TIME_RTP_PKT_MS*1000); + clock_debug("dequeue 3rd packet (ts=14, wraparound)"); + osmo_select_main(0); + clock_override_add(0, TIME_RTP_PKT_MS*1000); + clock_debug("dequeue 4th packet (ts=174)"); + osmo_select_main(0); + clock_override_add(0, TIME_RTP_PKT_MS*1000); + clock_debug("dequeue 5th packet (ts=334)"); + osmo_select_main(0); + + OSMO_ASSERT(osmo_jibuf_empty(jb)); + + osmo_jibuf_delete(jb); +} + +int main(int argc, char **argv) +{ + + if (signal(SIGALRM, sigalarm_handler) == SIG_ERR) { + perror("signal"); + exit(EXIT_FAILURE); + } + + osmo_init_logging(&jibuf_test_log_info); + log_set_print_filename(osmo_stderr_target, 0); + log_set_log_level(osmo_stderr_target, LOGL_DEBUG); + log_set_category_filter(osmo_stderr_target, DLJIBUF, 1, LOGL_DEBUG); + + alarm(10); + + test_normal(); + test_delete_nonempty(); + test_packet_lost(); + test_packet_drop(); + test_packet_out_of_order(); + test_start_2nd_packet(); + test_buffer_threshold_change(); + test_seq_wraparound(); + test_timestamp_wraparound(); + + fprintf(stdout, "OK: Test passed\n"); + return EXIT_SUCCESS; +} diff --git a/tests/jibuf/jibuf_test.ok b/tests/jibuf/jibuf_test.ok new file mode 100644 index 0000000..5a0f121 --- /dev/null +++ b/tests/jibuf/jibuf_test.ok @@ -0,0 +1,351 @@ +===test_normal=== +sys={0.000000}, mono={0.000000}: clock_override_set +sys={0.060000}, mono={0.060000}: clock_override_add +sys={0.060000}, mono={0.060000}: first select, first dequed +sys={0.060000}, mono={0.060000}: dequeue: seq=33 ts=560 LATEST +sys={0.080000}, mono={0.080000}: clock_override_add +sys={0.080000}, mono={0.080000}: second select, one packet should be dequeued +sys={0.080000}, mono={0.080000}: dequeue: seq=34 ts=720 LATEST +sys={0.120000}, mono={0.120000}: clock_override_add +sys={0.120000}, mono={0.120000}: third select, two more dequed +sys={0.120000}, mono={0.120000}: dequeue: seq=35 ts=880 INTERMEDIATE +sys={0.120000}, mono={0.120000}: dequeue: seq=36 ts=1040 LATEST +===test_delete_nonempty=== +sys={0.000000}, mono={0.000000}: clock_override_set +sys={0.020000}, mono={0.020000}: clock_override_add +sys={0.040000}, mono={0.040000}: clock_override_add +sys={0.060000}, mono={0.060000}: clock_override_add +sys={0.060000}, mono={0.060000}: dequeue: seq=33 ts=560 INTERMEDIATE +sys={0.060000}, mono={0.060000}: dequeue: seq=34 ts=720 INTERMEDIATE +sys={0.060000}, mono={0.060000}: dequeue: seq=35 ts=880 INTERMEDIATE +sys={0.060000}, mono={0.060000}: dequeue: seq=36 ts=1040 LATEST +===test_packet_lost=== +sys={0.000000}, mono={0.000000}: clock_override_set +sys={0.000000}, mono={0.000000}: enqueue 1st packet +sys={0.020000}, mono={0.020000}: clock_override_add +sys={0.020000}, mono={0.020000}: packet lost: 2nd +sys={0.040000}, mono={0.040000}: clock_override_add +sys={0.040000}, mono={0.040000}: packet lost: 3rd +sys={0.060000}, mono={0.060000}: clock_override_add +sys={0.060000}, mono={0.060000}: packet lost: 4th +sys={0.080000}, mono={0.080000}: clock_override_add +sys={0.080000}, mono={0.080000}: enqueue 5th packet +sys={0.140000}, mono={0.140000}: clock_override_add +sys={0.140000}, mono={0.140000}: dequeue: seq=33 ts=560 INTERMEDIATE +sys={0.140000}, mono={0.140000}: dequeue: seq=34 ts=720 LATEST +===test_packet_drop=== +sys={0.000000}, mono={0.000000}: clock_override_set +sys={0.000000}, mono={0.000000}: enqueue 1st packet +sys={0.020000}, mono={0.020000}: clock_override_add +sys={0.020000}, mono={0.020000}: enqueue 2nd packet +sys={0.040000}, mono={0.040000}: clock_override_add +sys={0.040000}, mono={0.040000}: enqueue 3rd packet +sys={0.060000}, mono={0.060000}: clock_override_add +sys={0.060000}, mono={0.060000}: enqueue 4th packet +sys={0.060000}, mono={0.060000}: dequeue: seq=33 ts=560 INTERMEDIATE +sys={0.160000}, mono={0.160000}: clock_override_add +sys={0.160000}, mono={0.160000}: next packet should be dropped, too late +sys={0.160000}, mono={0.160000}: next packet should be enqueued +sys={0.160000}, mono={0.160000}: dequeue: seq=34 ts=720 INTERMEDIATE +sys={0.160000}, mono={0.160000}: dequeue: seq=35 ts=880 INTERMEDIATE +sys={0.160000}, mono={0.160000}: dequeue: seq=36 ts=1040 INTERMEDIATE +sys={0.160000}, mono={0.160000}: dequeue: seq=38 ts=1360 LATEST +===test_packet_out_of_order=== +sys={0.000000}, mono={0.000000}: clock_override_set +sys={0.000000}, mono={0.000000}: enqueue 1st packet +sys={0.040000}, mono={0.040000}: clock_override_add +sys={0.040000}, mono={0.040000}: enqueue 3rd packet +sys={0.040000}, mono={0.040000}: enqueue 2nd packet +sys={0.100000}, mono={0.100000}: clock_override_add +sys={0.100000}, mono={0.100000}: dequeue: seq=33 ts=560 INTERMEDIATE +sys={0.100000}, mono={0.100000}: dequeue: seq=34 ts=720 INTERMEDIATE +sys={0.100000}, mono={0.100000}: dequeue: seq=35 ts=880 LATEST +===test_start_2nd_packet=== +sys={0.000000}, mono={0.000000}: clock_override_set +sys={0.000000}, mono={0.000000}: 1st packet is not yet enqueued +sys={0.040000}, mono={0.040000}: clock_override_add +sys={0.040000}, mono={0.040000}: 2nd packet is enqueuded as first +sys={0.040000}, mono={0.040000}: 1st packet is enqueuded as second, should be enqueued with preference +sys={0.080000}, mono={0.080000}: clock_override_add +sys={0.080000}, mono={0.080000}: dequeue: seq=33 ts=560 INTERMEDIATE +sys={0.100000}, mono={0.100000}: clock_override_add +sys={0.100000}, mono={0.100000}: dequeue: seq=34 ts=720 LATEST +===test_buffer_threshold_change=== +sys={0.000000}, mono={0.000000}: clock_override_set +sys={0.000000}, mono={0.000000}: enqueue 1st packet +sys={0.020000}, mono={0.020000}: clock_override_add +sys={0.020000}, mono={0.020000}: enqueue 2nd packet +sys={0.040000}, mono={0.040000}: clock_override_add +sys={0.040000}, mono={0.040000}: enqueue 3rd packet +sys={0.060000}, mono={0.060000}: clock_override_add +sys={0.060000}, mono={0.060000}: enqueue 4th packet +sys={0.060000}, mono={0.060000}: dequeue: seq=33 ts=560 INTERMEDIATE +sys={0.160000}, mono={0.160000}: clock_override_add +sys={0.160000}, mono={0.160000}: next packet should be dropped, too late +sys={0.180000}, mono={0.180000}: clock_override_add +sys={0.180000}, mono={0.180000}: next packet is dropped, but buffer is increased +sys={0.200000}, mono={0.200000}: clock_override_add +sys={0.200000}, mono={0.200000}: next packet is enqueued since the buffer increased +sys={0.200000}, mono={0.200000}: dequeue: seq=34 ts=720 INTERMEDIATE +sys={0.200000}, mono={0.200000}: dequeue: seq=35 ts=880 INTERMEDIATE +sys={0.200000}, mono={0.200000}: dequeue: seq=36 ts=1040 INTERMEDIATE +sys={0.200000}, mono={0.200000}: dequeue: seq=39 ts=1520 LATEST +sys={0.200000}, mono={0.200000}: Enqueue late packets +sys={0.200000}, mono={0.200000}: Run perfectly for a while, buffer should decrease +sys={0.220000}, mono={0.220000}: clock_override_add +sys={0.220000}, mono={0.220000}: dequeue: seq=40 ts=1680 INTERMEDIATE +sys={0.240000}, mono={0.240000}: clock_override_add +sys={0.240000}, mono={0.240000}: dequeue: seq=41 ts=1840 INTERMEDIATE +sys={0.260000}, mono={0.260000}: clock_override_add +sys={0.260000}, mono={0.260000}: dequeue: seq=42 ts=2000 INTERMEDIATE +sys={0.280000}, mono={0.280000}: clock_override_add +sys={0.280000}, mono={0.280000}: dequeue: seq=43 ts=2160 INTERMEDIATE +sys={0.300000}, mono={0.300000}: clock_override_add +sys={0.300000}, mono={0.300000}: dequeue: seq=44 ts=2320 INTERMEDIATE +sys={0.320000}, mono={0.320000}: clock_override_add +sys={0.320000}, mono={0.320000}: dequeue: seq=45 ts=2480 INTERMEDIATE +sys={0.340000}, mono={0.340000}: clock_override_add +sys={0.340000}, mono={0.340000}: dequeue: seq=46 ts=2640 INTERMEDIATE +sys={0.360000}, mono={0.360000}: clock_override_add +sys={0.360000}, mono={0.360000}: dequeue: seq=47 ts=2800 INTERMEDIATE +sys={0.380000}, mono={0.380000}: clock_override_add +sys={0.380000}, mono={0.380000}: dequeue: seq=48 ts=2960 INTERMEDIATE +sys={0.400000}, mono={0.400000}: clock_override_add +sys={0.400000}, mono={0.400000}: dequeue: seq=49 ts=3120 INTERMEDIATE +sys={0.420000}, mono={0.420000}: clock_override_add +sys={0.420000}, mono={0.420000}: dequeue: seq=50 ts=3280 INTERMEDIATE +sys={0.440000}, mono={0.440000}: clock_override_add +sys={0.440000}, mono={0.440000}: dequeue: seq=51 ts=3440 INTERMEDIATE +sys={0.460000}, mono={0.460000}: clock_override_add +sys={0.460000}, mono={0.460000}: dequeue: seq=52 ts=3600 INTERMEDIATE +sys={0.480000}, mono={0.480000}: clock_override_add +sys={0.480000}, mono={0.480000}: dequeue: seq=53 ts=3760 INTERMEDIATE +sys={0.500000}, mono={0.500000}: clock_override_add +sys={0.500000}, mono={0.500000}: dequeue: seq=54 ts=3920 INTERMEDIATE +sys={0.520000}, mono={0.520000}: clock_override_add +sys={0.520000}, mono={0.520000}: dequeue: seq=55 ts=4080 INTERMEDIATE +sys={0.540000}, mono={0.540000}: clock_override_add +sys={0.540000}, mono={0.540000}: dequeue: seq=56 ts=4240 INTERMEDIATE +sys={0.560000}, mono={0.560000}: clock_override_add +sys={0.560000}, mono={0.560000}: dequeue: seq=57 ts=4400 INTERMEDIATE +sys={0.580000}, mono={0.580000}: clock_override_add +sys={0.580000}, mono={0.580000}: dequeue: seq=58 ts=4560 INTERMEDIATE +sys={0.600000}, mono={0.600000}: clock_override_add +sys={0.600000}, mono={0.600000}: dequeue: seq=59 ts=4720 INTERMEDIATE +sys={0.620000}, mono={0.620000}: clock_override_add +sys={0.620000}, mono={0.620000}: dequeue: seq=60 ts=4880 INTERMEDIATE +sys={0.640000}, mono={0.640000}: clock_override_add +sys={0.640000}, mono={0.640000}: dequeue: seq=61 ts=5040 INTERMEDIATE +sys={0.660000}, mono={0.660000}: clock_override_add +sys={0.660000}, mono={0.660000}: dequeue: seq=62 ts=5200 INTERMEDIATE +sys={0.680000}, mono={0.680000}: clock_override_add +sys={0.680000}, mono={0.680000}: dequeue: seq=63 ts=5360 INTERMEDIATE +sys={0.700000}, mono={0.700000}: clock_override_add +sys={0.700000}, mono={0.700000}: dequeue: seq=64 ts=5520 INTERMEDIATE +sys={0.720000}, mono={0.720000}: clock_override_add +sys={0.720000}, mono={0.720000}: dequeue: seq=65 ts=5680 INTERMEDIATE +sys={0.740000}, mono={0.740000}: clock_override_add +sys={0.740000}, mono={0.740000}: dequeue: seq=66 ts=5840 INTERMEDIATE +sys={0.760000}, mono={0.760000}: clock_override_add +sys={0.760000}, mono={0.760000}: dequeue: seq=67 ts=6000 INTERMEDIATE +sys={0.780000}, mono={0.780000}: clock_override_add +sys={0.780000}, mono={0.780000}: dequeue: seq=68 ts=6160 INTERMEDIATE +sys={0.800000}, mono={0.800000}: clock_override_add +sys={0.800000}, mono={0.800000}: dequeue: seq=69 ts=6320 INTERMEDIATE +sys={0.820000}, mono={0.820000}: clock_override_add +sys={0.820000}, mono={0.820000}: dequeue: seq=70 ts=6480 INTERMEDIATE +sys={0.840000}, mono={0.840000}: clock_override_add +sys={0.840000}, mono={0.840000}: dequeue: seq=71 ts=6640 INTERMEDIATE +sys={0.860000}, mono={0.860000}: clock_override_add +sys={0.860000}, mono={0.860000}: dequeue: seq=72 ts=6800 INTERMEDIATE +sys={0.880000}, mono={0.880000}: clock_override_add +sys={0.880000}, mono={0.880000}: dequeue: seq=73 ts=6960 INTERMEDIATE +sys={0.900000}, mono={0.900000}: clock_override_add +sys={0.900000}, mono={0.900000}: dequeue: seq=74 ts=7120 INTERMEDIATE +sys={0.920000}, mono={0.920000}: clock_override_add +sys={0.920000}, mono={0.920000}: dequeue: seq=75 ts=7280 INTERMEDIATE +sys={0.940000}, mono={0.940000}: clock_override_add +sys={0.940000}, mono={0.940000}: dequeue: seq=76 ts=7440 INTERMEDIATE +sys={0.960000}, mono={0.960000}: clock_override_add +sys={0.960000}, mono={0.960000}: dequeue: seq=77 ts=7600 INTERMEDIATE +sys={0.980000}, mono={0.980000}: clock_override_add +sys={0.980000}, mono={0.980000}: dequeue: seq=78 ts=7760 INTERMEDIATE +sys={1.000000}, mono={1.000000}: clock_override_add +sys={1.000000}, mono={1.000000}: dequeue: seq=79 ts=7920 INTERMEDIATE +sys={1.020000}, mono={1.020000}: clock_override_add +sys={1.020000}, mono={1.020000}: dequeue: seq=80 ts=8080 INTERMEDIATE +sys={1.040000}, mono={1.040000}: clock_override_add +sys={1.040000}, mono={1.040000}: dequeue: seq=81 ts=8240 INTERMEDIATE +sys={1.060000}, mono={1.060000}: clock_override_add +sys={1.060000}, mono={1.060000}: dequeue: seq=82 ts=8400 INTERMEDIATE +sys={1.080000}, mono={1.080000}: clock_override_add +sys={1.080000}, mono={1.080000}: dequeue: seq=83 ts=8560 INTERMEDIATE +sys={1.100000}, mono={1.100000}: clock_override_add +sys={1.100000}, mono={1.100000}: dequeue: seq=84 ts=8720 INTERMEDIATE +sys={1.120000}, mono={1.120000}: clock_override_add +sys={1.120000}, mono={1.120000}: dequeue: seq=85 ts=8880 INTERMEDIATE +sys={1.140000}, mono={1.140000}: clock_override_add +sys={1.140000}, mono={1.140000}: dequeue: seq=86 ts=9040 INTERMEDIATE +sys={1.160000}, mono={1.160000}: clock_override_add +sys={1.160000}, mono={1.160000}: dequeue: seq=87 ts=9200 INTERMEDIATE +sys={1.180000}, mono={1.180000}: clock_override_add +sys={1.180000}, mono={1.180000}: dequeue: seq=88 ts=9360 INTERMEDIATE +sys={1.200000}, mono={1.200000}: clock_override_add +sys={1.200000}, mono={1.200000}: dequeue: seq=89 ts=9520 INTERMEDIATE +sys={1.220000}, mono={1.220000}: clock_override_add +sys={1.220000}, mono={1.220000}: dequeue: seq=90 ts=9680 INTERMEDIATE +sys={1.240000}, mono={1.240000}: clock_override_add +sys={1.240000}, mono={1.240000}: dequeue: seq=91 ts=9840 INTERMEDIATE +sys={1.260000}, mono={1.260000}: clock_override_add +sys={1.260000}, mono={1.260000}: dequeue: seq=92 ts=10000 INTERMEDIATE +sys={1.280000}, mono={1.280000}: clock_override_add +sys={1.280000}, mono={1.280000}: dequeue: seq=93 ts=10160 INTERMEDIATE +sys={1.300000}, mono={1.300000}: clock_override_add +sys={1.300000}, mono={1.300000}: dequeue: seq=94 ts=10320 INTERMEDIATE +sys={1.320000}, mono={1.320000}: clock_override_add +sys={1.320000}, mono={1.320000}: dequeue: seq=95 ts=10480 INTERMEDIATE +sys={1.340000}, mono={1.340000}: clock_override_add +sys={1.340000}, mono={1.340000}: dequeue: seq=96 ts=10640 INTERMEDIATE +sys={1.360000}, mono={1.360000}: clock_override_add +sys={1.360000}, mono={1.360000}: dequeue: seq=97 ts=10800 INTERMEDIATE +sys={1.380000}, mono={1.380000}: clock_override_add +sys={1.380000}, mono={1.380000}: dequeue: seq=98 ts=10960 INTERMEDIATE +sys={1.400000}, mono={1.400000}: clock_override_add +sys={1.400000}, mono={1.400000}: dequeue: seq=99 ts=11120 INTERMEDIATE +sys={1.420000}, mono={1.420000}: clock_override_add +sys={1.420000}, mono={1.420000}: dequeue: seq=100 ts=11280 INTERMEDIATE +sys={1.440000}, mono={1.440000}: clock_override_add +sys={1.440000}, mono={1.440000}: dequeue: seq=101 ts=11440 INTERMEDIATE +sys={1.460000}, mono={1.460000}: clock_override_add +sys={1.460000}, mono={1.460000}: dequeue: seq=102 ts=11600 INTERMEDIATE +sys={1.480000}, mono={1.480000}: clock_override_add +sys={1.480000}, mono={1.480000}: dequeue: seq=103 ts=11760 INTERMEDIATE +sys={1.500000}, mono={1.500000}: clock_override_add +sys={1.500000}, mono={1.500000}: dequeue: seq=104 ts=11920 INTERMEDIATE +sys={1.520000}, mono={1.520000}: clock_override_add +sys={1.520000}, mono={1.520000}: dequeue: seq=105 ts=12080 INTERMEDIATE +sys={1.540000}, mono={1.540000}: clock_override_add +sys={1.540000}, mono={1.540000}: dequeue: seq=106 ts=12240 INTERMEDIATE +sys={1.560000}, mono={1.560000}: clock_override_add +sys={1.560000}, mono={1.560000}: dequeue: seq=107 ts=12400 INTERMEDIATE +sys={1.580000}, mono={1.580000}: clock_override_add +sys={1.580000}, mono={1.580000}: dequeue: seq=108 ts=12560 INTERMEDIATE +sys={1.600000}, mono={1.600000}: clock_override_add +sys={1.600000}, mono={1.600000}: dequeue: seq=109 ts=12720 INTERMEDIATE +sys={1.620000}, mono={1.620000}: clock_override_add +sys={1.620000}, mono={1.620000}: dequeue: seq=110 ts=12880 INTERMEDIATE +sys={1.640000}, mono={1.640000}: clock_override_add +sys={1.640000}, mono={1.640000}: dequeue: seq=111 ts=13040 INTERMEDIATE +sys={1.660000}, mono={1.660000}: clock_override_add +sys={1.660000}, mono={1.660000}: dequeue: seq=112 ts=13200 INTERMEDIATE +sys={1.680000}, mono={1.680000}: clock_override_add +sys={1.680000}, mono={1.680000}: dequeue: seq=113 ts=13360 INTERMEDIATE +sys={1.700000}, mono={1.700000}: clock_override_add +sys={1.700000}, mono={1.700000}: dequeue: seq=114 ts=13520 INTERMEDIATE +sys={1.720000}, mono={1.720000}: clock_override_add +sys={1.720000}, mono={1.720000}: dequeue: seq=115 ts=13680 INTERMEDIATE +sys={1.740000}, mono={1.740000}: clock_override_add +sys={1.740000}, mono={1.740000}: dequeue: seq=116 ts=13840 INTERMEDIATE +sys={1.760000}, mono={1.760000}: clock_override_add +sys={1.760000}, mono={1.760000}: dequeue: seq=117 ts=14000 INTERMEDIATE +sys={1.780000}, mono={1.780000}: clock_override_add +sys={1.780000}, mono={1.780000}: dequeue: seq=118 ts=14160 INTERMEDIATE +sys={1.800000}, mono={1.800000}: clock_override_add +sys={1.800000}, mono={1.800000}: dequeue: seq=119 ts=14320 INTERMEDIATE +sys={1.820000}, mono={1.820000}: clock_override_add +sys={1.820000}, mono={1.820000}: dequeue: seq=120 ts=14480 INTERMEDIATE +sys={1.840000}, mono={1.840000}: clock_override_add +sys={1.840000}, mono={1.840000}: dequeue: seq=121 ts=14640 INTERMEDIATE +sys={1.860000}, mono={1.860000}: clock_override_add +sys={1.860000}, mono={1.860000}: dequeue: seq=122 ts=14800 INTERMEDIATE +sys={1.880000}, mono={1.880000}: clock_override_add +sys={1.880000}, mono={1.880000}: dequeue: seq=123 ts=14960 INTERMEDIATE +sys={1.900000}, mono={1.900000}: clock_override_add +sys={1.900000}, mono={1.900000}: dequeue: seq=124 ts=15120 INTERMEDIATE +sys={1.920000}, mono={1.920000}: clock_override_add +sys={1.920000}, mono={1.920000}: dequeue: seq=125 ts=15280 INTERMEDIATE +sys={1.940000}, mono={1.940000}: clock_override_add +sys={1.940000}, mono={1.940000}: dequeue: seq=126 ts=15440 INTERMEDIATE +sys={1.960000}, mono={1.960000}: clock_override_add +sys={1.960000}, mono={1.960000}: dequeue: seq=127 ts=15600 INTERMEDIATE +sys={1.980000}, mono={1.980000}: clock_override_add +sys={1.980000}, mono={1.980000}: dequeue: seq=128 ts=15760 INTERMEDIATE +sys={2.000000}, mono={2.000000}: clock_override_add +sys={2.000000}, mono={2.000000}: dequeue: seq=129 ts=15920 INTERMEDIATE +sys={2.020000}, mono={2.020000}: clock_override_add +sys={2.020000}, mono={2.020000}: dequeue: seq=130 ts=16080 INTERMEDIATE +sys={2.040000}, mono={2.040000}: clock_override_add +sys={2.040000}, mono={2.040000}: dequeue: seq=131 ts=16240 INTERMEDIATE +sys={2.060000}, mono={2.060000}: clock_override_add +sys={2.060000}, mono={2.060000}: dequeue: seq=132 ts=16400 INTERMEDIATE +sys={2.080000}, mono={2.080000}: clock_override_add +sys={2.080000}, mono={2.080000}: dequeue: seq=133 ts=16560 INTERMEDIATE +sys={2.100000}, mono={2.100000}: clock_override_add +sys={2.100000}, mono={2.100000}: dequeue: seq=134 ts=16720 INTERMEDIATE +sys={2.120000}, mono={2.120000}: clock_override_add +sys={2.120000}, mono={2.120000}: dequeue: seq=135 ts=16880 INTERMEDIATE +sys={2.140000}, mono={2.140000}: clock_override_add +sys={2.140000}, mono={2.140000}: dequeue: seq=136 ts=17040 INTERMEDIATE +sys={2.160000}, mono={2.160000}: clock_override_add +sys={2.160000}, mono={2.160000}: dequeue: seq=137 ts=17200 INTERMEDIATE +sys={2.180000}, mono={2.180000}: clock_override_add +sys={2.180000}, mono={2.180000}: dequeue: seq=138 ts=17360 INTERMEDIATE +sys={2.200000}, mono={2.200000}: clock_override_add +sys={2.200000}, mono={2.200000}: dequeue: seq=139 ts=17520 INTERMEDIATE +sys={2.200000}, mono={2.200000}: Done, checking threshold and cleaning +sys={2.270000}, mono={2.270000}: clock_override_add +sys={2.270000}, mono={2.270000}: dequeue: seq=140 ts=17680 INTERMEDIATE +sys={2.270000}, mono={2.270000}: dequeue: seq=141 ts=17840 INTERMEDIATE +sys={2.270000}, mono={2.270000}: dequeue: seq=142 ts=18000 INTERMEDIATE +sys={2.270000}, mono={2.270000}: dequeue: seq=143 ts=18160 LATEST +===test_seq_wraparound=== +sys={0.000000}, mono={0.000000}: clock_override_set +sys={0.000000}, mono={0.000000}: enqueue 1st packet (seq=65534) +sys={0.020000}, mono={0.020000}: clock_override_add +sys={0.020000}, mono={0.020000}: enqueue 2nd packet (seq=65535) +sys={0.040000}, mono={0.040000}: clock_override_add +sys={0.040000}, mono={0.040000}: enqueue 3rd packet (seq=0, wraparound) +sys={0.060000}, mono={0.060000}: clock_override_add +sys={0.060000}, mono={0.060000}: enqueue 4th packet (seq=1) +sys={0.080000}, mono={0.080000}: clock_override_add +sys={0.080000}, mono={0.080000}: enqueue 5th packet (seq=2) +sys={0.080000}, mono={0.080000}: dequeue 1st packet (seq=65534) +sys={0.080000}, mono={0.080000}: dequeue: seq=65534 ts=560 INTERMEDIATE +sys={0.100000}, mono={0.100000}: clock_override_add +sys={0.100000}, mono={0.100000}: dequeue 2nd packet (seq=65535) +sys={0.100000}, mono={0.100000}: dequeue: seq=65535 ts=720 INTERMEDIATE +sys={0.120000}, mono={0.120000}: clock_override_add +sys={0.120000}, mono={0.120000}: dequeue 3rd packet (seq=0, wraparound) +sys={0.120000}, mono={0.120000}: dequeue: seq=0 ts=880 INTERMEDIATE +sys={0.140000}, mono={0.140000}: clock_override_add +sys={0.140000}, mono={0.140000}: dequeue 4th packet (seq=1) +sys={0.140000}, mono={0.140000}: dequeue: seq=1 ts=1040 INTERMEDIATE +sys={0.160000}, mono={0.160000}: clock_override_add +sys={0.160000}, mono={0.160000}: dequeue 5th packet (seq=2) +sys={0.160000}, mono={0.160000}: dequeue: seq=2 ts=1200 LATEST +===test_timestamp_wraparound=== +sys={0.000000}, mono={0.000000}: clock_override_set +sys={0.000000}, mono={0.000000}: enqueue 1st packet (ts=4294966990) +sys={0.020000}, mono={0.020000}: clock_override_add +sys={0.020000}, mono={0.020000}: enqueue 2nd packet (ts=4294967150) +sys={0.040000}, mono={0.040000}: clock_override_add +sys={0.040000}, mono={0.040000}: enqueue 3rd packet (ts=14, wraparound) +sys={0.060000}, mono={0.060000}: clock_override_add +sys={0.060000}, mono={0.060000}: enqueue 4th packet (ts=174) +sys={0.080000}, mono={0.080000}: clock_override_add +sys={0.080000}, mono={0.080000}: enqueue 5th packet (ts=334) +sys={0.080000}, mono={0.080000}: dequeue 1st packet (ts=4294966990) +sys={0.080000}, mono={0.080000}: dequeue: seq=33 ts=4294966990 INTERMEDIATE +sys={0.100000}, mono={0.100000}: clock_override_add +sys={0.100000}, mono={0.100000}: dequeue 2nd packet (ts=4294967150) +sys={0.100000}, mono={0.100000}: dequeue: seq=34 ts=4294967150 INTERMEDIATE +sys={0.120000}, mono={0.120000}: clock_override_add +sys={0.120000}, mono={0.120000}: dequeue 3rd packet (ts=14, wraparound) +sys={0.120000}, mono={0.120000}: dequeue: seq=35 ts=14 INTERMEDIATE +sys={0.140000}, mono={0.140000}: clock_override_add +sys={0.140000}, mono={0.140000}: dequeue 4th packet (ts=174) +sys={0.140000}, mono={0.140000}: dequeue: seq=36 ts=174 INTERMEDIATE +sys={0.160000}, mono={0.160000}: clock_override_add +sys={0.160000}, mono={0.160000}: dequeue 5th packet (ts=334) +sys={0.160000}, mono={0.160000}: dequeue: seq=37 ts=334 LATEST +OK: Test passed diff --git a/tests/testsuite.at b/tests/testsuite.at index d0e55f6..81d40ba 100644 --- a/tests/testsuite.at +++ b/tests/testsuite.at @@ -6,3 +6,9 @@ cat $abs_srcdir/osmux/osmux_test.ok > expout AT_CHECK([$abs_top_builddir/tests/osmux/osmux_test], [0], [expout], [ignore]) AT_CLEANUP + +AT_SETUP([jibuf_test]) +AT_KEYWORDS([jibuf_test]) +cat $abs_srcdir/jibuf/jibuf_test.ok > expout +AT_CHECK([$abs_top_builddir/tests/jibuf/jibuf_test], [0], [expout], [ignore]) +AT_CLEANUP -- To view, visit https://gerrit.osmocom.org/7773 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I9688ba9c4d5b733b9f29d0f15f73750f9271ef55 Gerrit-PatchSet: 1 Gerrit-Project: libosmo-netif Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol From gerrit-no-reply at lists.osmocom.org Thu Apr 12 13:33:04 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Thu, 12 Apr 2018 13:33:04 +0000 Subject: [PATCH] libosmo-netif[master]: tests: jibuf_tool: Initial commit Message-ID: Review at https://gerrit.osmocom.org/7774 tests: jibuf_tool: Initial commit Change-Id: I92307c8b1483dd488339771462290aae0ae5689a --- M tests/Makefile.am A tests/jibuf/jibuf_tool.c A tests/jibuf/jitter.plt 3 files changed, 417 insertions(+), 1 deletion(-) git pull ssh://gerrit.osmocom.org:29418/libosmo-netif refs/changes/74/7774/1 diff --git a/tests/Makefile.am b/tests/Makefile.am index bf1db1f..a4abca2 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -1,7 +1,7 @@ AM_CFLAGS = -Wall -I$(top_srcdir)/include $(LIBOSMOCORE_CFLAGS) -g AM_LDFLAGS = $(LIBOSMOCORE_LDFLAGS) -check_PROGRAMS = osmux/osmux_test jibuf/jibuf_test +check_PROGRAMS = osmux/osmux_test jibuf/jibuf_test jibuf/jibuf_tool osmux_osmux_test_SOURCES = osmux/osmux_test.c osmux_osmux_test_LDADD = $(LIBOSMOCORE_LIBS) $(top_builddir)/src/libosmonetif.la @@ -9,6 +9,9 @@ jibuf_jibuf_test_SOURCES = jibuf/jibuf_test.c jibuf_jibuf_test_LDADD = $(LIBOSMOCORE_LIBS) $(top_builddir)/src/libosmonetif.la +jibuf_jibuf_tool_SOURCES = jibuf/jibuf_tool.c +jibuf_jibuf_tool_LDADD = $(LIBOSMOCORE_LIBS) $(top_builddir)/src/libosmonetif.la + # The `:;' works around a Bash 3.2 bug when the output is not writeable. $(srcdir)/package.m4: $(top_srcdir)/configure.ac :;{ \ diff --git a/tests/jibuf/jibuf_tool.c b/tests/jibuf/jibuf_tool.c new file mode 100644 index 0000000..340c36c --- /dev/null +++ b/tests/jibuf/jibuf_tool.c @@ -0,0 +1,378 @@ +/* (C) 2017 by Pau Espin Pedrol + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include + +/* Logging related stuff */ +#define INT2IDX(x) (-1*(x)-1) +struct log_info_cat jibuf_test_cat[] = { + [INT2IDX(DLJIBUF)] = { + .name = "DLJIBUF", + .description = "Osmocom Jitter Buffer", + .enabled = 1, .loglevel = LOGL_DEBUG, + }, +}; +const struct log_info jibuf_test_log_info = { + .filter_fn = NULL, + .cat = jibuf_test_cat, + .num_cat = ARRAY_SIZE(jibuf_test_cat), +}; + +/* RTP packet with AMR payload */ +static uint8_t rtp_pkt[] = { + 0x80, 0x62, 0x3f, 0xcc, 0x00, 0x01, 0xa7, 0x6f, /* RTP */ + 0x07, 0x09, 0x00, 0x62, 0x20, 0x14, 0xff, 0xd4, /* AMR */ + 0xf9, 0xff, 0xfb, 0xe7, 0xeb, 0xf9, 0x9f, 0xf8, + 0xf2, 0x26, 0x33, 0x65, 0x54, +}; + +static void sigalarm_handler(int foo) +{ + printf("FAIL: test did not run successfully\n"); + exit(EXIT_FAILURE); +} + +#define SAMPLES_PER_PKT 160 +#define RTP_FREQ_MS 20 +#define RTP_PKTS_PER_SEC (1000/RTP_FREQ_MS) +#define NET_DELAY_MS 300 +#define GENERATED_JITTER_MS 160 +#define NUM_PACKETS_TO_SEND 1000 + +#define TRACE_PACKE_DEBUG 0 +#define TRACE_PACKET_GNUPLOT 1 +#define TRACE_PACKET_TEST_JITTER 0 + +struct checkpoint { + struct timeval ts; + int transit; + double jitter; +}; + +struct rtp_pkt_info { + struct osmo_timer_list timer; + struct timeval tx_prev_time; + struct timeval tx_time; + uint32_t tx_delay; + struct checkpoint prequeue; + struct checkpoint postqueue; +}; + +struct rtp_pkt_info_cb { + struct rtp_pkt_info *data; +}; + +struct jibuf *jb; +uint16_t rtp_first_seq; +uint16_t rtp_next_seq; +uint32_t rtp_next_ts; +uint32_t packets_sent; +uint32_t packets_received; +uint32_t packets_dropped; +uint32_t packets_too_much_jitter; + +struct rtp_pkt_info *msgb_get_pinfo(struct msgb* msg) +{ + struct rtp_pkt_info_cb *cb = (struct rtp_pkt_info_cb *)&((msg)->cb[0]); + return cb->data; +} + +static uint32_t timeval2ms(const struct timeval *ts) +{ + return ts->tv_sec * 1000 + ts->tv_usec / 1000; +} + +int calc_relative_transmit_time(struct timeval *tx_0, struct timeval *tx_f, + struct timeval *rx_0, struct timeval *rx_f) +{ + struct timeval txdiff, rxdiff, diff; + timersub(rx_f, rx_0, &rxdiff); + timersub(tx_f, tx_0, &txdiff); + timersub(&rxdiff, &txdiff, &diff); + return timeval2ms(&diff); +} + +void trace_pkt(struct msgb *msg, char* info) { + struct timeval now, total_delay; + struct rtp_hdr *rtph = osmo_rtp_get_hdr(msg); + struct rtp_pkt_info *pinfo = msgb_get_pinfo(msg); + + gettimeofday(&now, NULL); + timersub(&now, &pinfo->tx_time, &total_delay); + +#if TRACE_PACKET_DEBUG + uint32_t total_delay_ms = timeval2ms(&total_delay); + LOGP(DLJIBUF, LOGL_DEBUG, "%s: seq=%"PRIu16" ts=%"PRIu32" (%ld.%06ld) tx_delay=%"PRIu32 \ + " end_delay=%"PRIu32" pre_trans=%d pre_jitter=%f post_trans=%d post_jitter=%f\n", + info, ntohs(rtph->sequence), ntohl(rtph->timestamp), + pinfo->tx_time.tv_sec, pinfo->tx_time.tv_usec, + pinfo->tx_delay, total_delay_ms, + pinfo->prequeue.transit, pinfo->prequeue.jitter, + pinfo->postqueue.transit, pinfo->postqueue.jitter); +#endif + +#if TRACE_PACKET_GNUPLOT + /* Used as input for gplot: "gnuplot -p jitter.plt -"" */ + uint32_t tx_time_ms = timeval2ms(&pinfo->tx_time); + uint32_t prequeue_time_ms = timeval2ms(&pinfo->prequeue.ts); + uint32_t postqueue_time_ms = timeval2ms(&pinfo->postqueue.ts); + fprintf(stderr, "%"PRIu16"\t%"PRIu32"\t%"PRIu32"\t%"PRIu32"\t%d\t%d\t%f\t%f\t%"PRIu32"\t%"PRIu32"\n", + ntohs(rtph->sequence), tx_time_ms, + prequeue_time_ms, postqueue_time_ms, + pinfo->prequeue.transit, pinfo->postqueue.transit, + pinfo->prequeue.jitter, pinfo->postqueue.jitter, + packets_dropped, jb->threshold_delay); +#endif +} + +void pkt_add_result(struct msgb *msg, bool dropped) +{ + struct rtp_pkt_info *pinfo = msgb_get_pinfo(msg); + + if (dropped) { + packets_dropped++; + trace_pkt(msg,"dropped"); + } else { + packets_received++; + trace_pkt(msg,"received"); + + if (pinfo->prequeue.jitter < pinfo->postqueue.jitter) { + packets_too_much_jitter++; +#if TRACE_PACKET_TEST_JITTER + LOGP(DLJIBUF, LOGL_ERROR, "JITTER HIGHER THAN REF: %s seq=%"PRIu16" ts=%"PRIu32 \ + " (%ld.%06ld) tx_delay=%"PRIu32" end_delay=%"PRIu32 \ + " pre_trans=%d pre_jitter=%f post_trans=%d post_jitter=%f dropped=%"PRIu32 \ + " buffer=%"PRIu32"\n", + info, ntohs(rtph->sequence), ntohl(rtph->timestamp), + pinfo->tx_time.tv_sec, pinfo->tx_time.tv_usec, + pinfo->tx_delay, total_delay_ms, + pinfo->prequeue.transit, pinfo->prequeue.jitter, + pinfo->postqueue.transit, pinfo->postqueue.jitter, + packets_dropped, jb->threshold_delay); +#endif + } + } +} + +void dequeue_cb(struct msgb *msg, void *data) +{ + static struct checkpoint postqueue_prev; + static bool postqueue_started = false; + + struct rtp_pkt_info *pinfo = msgb_get_pinfo(msg); + + gettimeofday(&pinfo->postqueue.ts, NULL); + + if (postqueue_started) { + pinfo->postqueue.transit = calc_relative_transmit_time( + &pinfo->tx_prev_time, &pinfo->tx_time, + &postqueue_prev.ts, &pinfo->postqueue.ts); + + uint32_t abs_transit = pinfo->postqueue.transit * + ( pinfo->postqueue.transit >= 0 ? 1 : -1 ); + + pinfo->postqueue.jitter = postqueue_prev.jitter + + ((double)abs_transit - postqueue_prev.jitter)/16.0; + } else { + postqueue_started = true; + pinfo->postqueue.transit = 0; + pinfo->postqueue.jitter = 0; + } + + postqueue_prev = pinfo->postqueue; + + pkt_add_result(msg, false); + + osmo_timer_del(&pinfo->timer); + msgb_free(msg); +} + +void pkt_arrived_cb(void *data) +{ + static struct checkpoint prequeue_prev; + static bool prequeue_started = false; + + struct msgb *msg = (struct msgb*) data; + struct rtp_pkt_info *pinfo = msgb_get_pinfo(msg); + + gettimeofday(&pinfo->prequeue.ts, NULL); + + if (prequeue_started) { + pinfo->prequeue.transit = calc_relative_transmit_time( + &pinfo->tx_prev_time, &pinfo->tx_time, + &prequeue_prev.ts, &pinfo->prequeue.ts); + + uint32_t abs_transit = pinfo->prequeue.transit * + ( pinfo->prequeue.transit >= 0 ? 1 : -1 ); + + pinfo->prequeue.jitter = prequeue_prev.jitter + + ((double)abs_transit - prequeue_prev.jitter)/16.0; + } else { + prequeue_started = true; + pinfo->prequeue.transit = 0; + pinfo->prequeue.jitter = 0; + } + + prequeue_prev = pinfo->prequeue; + + int n = osmo_jibuf_enqueue(jb, msg); + + if (n<0) { + pkt_add_result(msg, true); + osmo_timer_del(&pinfo->timer); + msgb_free(msg); + } +} + +void send_rtp_packet() +{ + static struct timeval tx_prev_time; + + struct rtp_pkt_info *pinfo; + struct rtp_hdr *rtph; + struct msgb *msg; + + /* Set fake prev_time for 1st packet. Otherwise transit calculations for first + * packet can be really weird if they not arrive in order */ + if (rtp_next_seq == rtp_first_seq) { + struct timeval now, time_rate = { .tv_sec = 0, .tv_usec = RTP_FREQ_MS * 1000}; + gettimeofday(&now, NULL); + timersub(&now, &time_rate, &tx_prev_time); + } + + + msg = msgb_alloc(1500, "test"); + if (!msg) + exit(EXIT_FAILURE); + + memcpy(msg->data, rtp_pkt, sizeof(rtp_pkt)); + msgb_put(msg, sizeof(rtp_pkt)); + + rtph = osmo_rtp_get_hdr(msg); + + rtph->sequence = htons(rtp_next_seq); + rtp_next_seq++; + + rtph->timestamp = htonl(rtp_next_ts); + rtp_next_ts += SAMPLES_PER_PKT; + + pinfo = talloc_zero(msg, struct rtp_pkt_info); + struct rtp_pkt_info_cb *cb = (struct rtp_pkt_info_cb *)&((msg)->cb[0]); + cb->data = pinfo; + + gettimeofday(&pinfo->tx_time, NULL); + pinfo->tx_prev_time = tx_prev_time; + memset(&pinfo->timer, 0, sizeof(struct osmo_timer_list)); + pinfo->timer.cb = pkt_arrived_cb; + pinfo->timer.data = msg; + pinfo->tx_delay = NET_DELAY_MS + (random() % (GENERATED_JITTER_MS)); + + tx_prev_time = pinfo->tx_time; + + /* TODO: add a random() to lose/drop packets */ + + osmo_timer_schedule(&pinfo->timer, 0, pinfo->tx_delay * 1000); +} + +void generate_pkt_cb(void *data) +{ + static struct osmo_timer_list enqueue_timer = {.cb = generate_pkt_cb, .data = NULL}; + static struct timeval last_generated; + + struct timeval time_rate = { .tv_sec = 0, .tv_usec = RTP_FREQ_MS * 1000}; + struct timeval sched_ts; + + if (!packets_sent) + gettimeofday(&last_generated, NULL); + + send_rtp_packet(); + packets_sent++; + + timeradd(&last_generated, &time_rate, &sched_ts); + last_generated = sched_ts; + if (packets_sent < NUM_PACKETS_TO_SEND) { + enqueue_timer.timeout = sched_ts; + osmo_timer_add(&enqueue_timer); + } +} + +void check_results() +{ + uint32_t drop_threshold = NUM_PACKETS_TO_SEND * 5 / 100; + if (packets_dropped > drop_threshold) { + fprintf(stdout, "Too many dropped packets (%"PRIu32" > %"PRIu32")\n", + packets_dropped, drop_threshold); + exit(1); + } + + uint32_t jitter_high_threshold = NUM_PACKETS_TO_SEND * 8 / 100; + if (packets_too_much_jitter > jitter_high_threshold) { + fprintf(stdout, "Too many packets with higher jitter (%"PRIu32" > %"PRIu32")\n", + packets_too_much_jitter, jitter_high_threshold); + exit(1); + } +} + +int main(void) +{ + + if (signal(SIGALRM, sigalarm_handler) == SIG_ERR) { + perror("signal"); + exit(EXIT_FAILURE); + } + + /* This test doesn't use it, but jibuf requires it internally. */ + osmo_init_logging(&jibuf_test_log_info); + log_set_category_filter(osmo_stderr_target, DLMIB, 1, LOGL_ERROR); + log_set_print_filename(osmo_stderr_target, 0); + log_set_log_level(osmo_stderr_target, LOGL_INFO); + + srandom(time(NULL)); + rtp_first_seq = (uint16_t) random(); + rtp_next_seq = rtp_first_seq; + rtp_next_ts = (uint32_t) random(); + jb = osmo_jibuf_alloc(NULL); + + osmo_jibuf_set_min_delay(jb, GENERATED_JITTER_MS - RTP_FREQ_MS); + osmo_jibuf_set_max_delay(jb, GENERATED_JITTER_MS + RTP_FREQ_MS*2); + + osmo_jibuf_set_dequeue_cb(jb, dequeue_cb, NULL); + + generate_pkt_cb(NULL); + + /* If the test takes longer than twice the time needed to generate the packets + plus 10 seconds, abort it */ + alarm(NUM_PACKETS_TO_SEND*20/1000 +10); + + while((packets_received + packets_dropped) < NUM_PACKETS_TO_SEND) + osmo_select_main(0); + + osmo_jibuf_delete(jb); + + check_results(); + + fprintf(stdout, "OK: Test passed\n"); + return EXIT_SUCCESS; +} diff --git a/tests/jibuf/jitter.plt b/tests/jibuf/jitter.plt new file mode 100644 index 0000000..37deb65 --- /dev/null +++ b/tests/jibuf/jitter.plt @@ -0,0 +1,35 @@ +#set terminal png size 1280,1024 enhanced font "Helvetica,20" +#set output 'output.png' +#set terminal qt +#set output + +set datafile separator "\t" +set datafile missing '0' + +#set multiplot + +# key/legend +set key top right +set key box +set key left bottom +set key bmargin + + +set title 'Jitter Graph' +set xlabel 'Timestamp' +set ylabel 'trans / jitter / delay / buffer size [ms]' +set ytics nomirror + +#set y2label 'delay [ms]' +#set y2tics nomirror + +plot \ + '/tmp/bla' using 3:5 with linespoints title 'pre.trans' axes x1y1, \ + '/tmp/bla' using 4:6 with linespoints title 'post.trans' axes x1y1, \ + '/tmp/bla' using 3:7 with linespoints title 'pre.jitter' axes x1y1, \ + '/tmp/bla' using 4:8 with linespoints title 'post.jitter' axes x1y1, \ + '/tmp/bla' using 3:9 with linespoints title 'pre.dropped' axes x1y1, \ + '/tmp/bla' using 3:10 with linespoints title 'pre.buffer' axes x1y1, \ + '/tmp/bla' using 3:((column(3)-column(2))) with linespoints title 'pre.delay' axes x1y1, \ + '/tmp/bla' using 4:((column(4)-column(2))) with linespoints title 'post.delay' axes x1y1 +pause mouse close; exit -- To view, visit https://gerrit.osmocom.org/7774 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I92307c8b1483dd488339771462290aae0ae5689a Gerrit-PatchSet: 1 Gerrit-Project: libosmo-netif Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol From gerrit-no-reply at lists.osmocom.org Thu Apr 12 13:33:05 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Thu, 12 Apr 2018 13:33:05 +0000 Subject: [PATCH] libosmo-netif[master]: tests: jibuf_tool: Improve jibuf_test to read pcaps Message-ID: Review at https://gerrit.osmocom.org/7775 tests: jibuf_tool: Improve jibuf_test to read pcaps Change-Id: I7a13c823fb70e0adbc5fa0726fd66b15dc40014e Signed-off-by: Pau Espin Pedrol --- M tests/Makefile.am M tests/jibuf/jibuf_tool.c M tests/jibuf/jitter.plt 3 files changed, 312 insertions(+), 112 deletions(-) git pull ssh://gerrit.osmocom.org:29418/libosmo-netif refs/changes/75/7775/1 diff --git a/tests/Makefile.am b/tests/Makefile.am index a4abca2..d6af988 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -9,8 +9,20 @@ jibuf_jibuf_test_SOURCES = jibuf/jibuf_test.c jibuf_jibuf_test_LDADD = $(LIBOSMOCORE_LIBS) $(top_builddir)/src/libosmonetif.la -jibuf_jibuf_tool_SOURCES = jibuf/jibuf_tool.c -jibuf_jibuf_tool_LDADD = $(LIBOSMOCORE_LIBS) $(top_builddir)/src/libosmonetif.la +jibuf_jibuf_tool_SOURCES = \ + jibuf/jibuf_tool.c \ + osmo-pcap-test/proto.c \ + osmo-pcap-test/l2_eth.c \ + osmo-pcap-test/l2_sll.c \ + osmo-pcap-test/l3_ipv4.c \ + osmo-pcap-test/l4_tcp.c \ + osmo-pcap-test/l4_udp.c \ + osmo-pcap-test/pcap.c + +jibuf_jibuf_tool_LDADD = \ + $(LIBOSMOCORE_LIBS) \ + $(top_builddir)/src/libosmonetif.la \ + -lpcap # The `:;' works around a Bash 3.2 bug when the output is not writeable. $(srcdir)/package.m4: $(top_srcdir)/configure.ac diff --git a/tests/jibuf/jibuf_tool.c b/tests/jibuf/jibuf_tool.c index 340c36c..c2461ec 100644 --- a/tests/jibuf/jibuf_tool.c +++ b/tests/jibuf/jibuf_tool.c @@ -16,6 +16,7 @@ #include #include #include +#include #include #include @@ -25,50 +26,14 @@ #include #include -/* Logging related stuff */ -#define INT2IDX(x) (-1*(x)-1) -struct log_info_cat jibuf_test_cat[] = { - [INT2IDX(DLJIBUF)] = { - .name = "DLJIBUF", - .description = "Osmocom Jitter Buffer", - .enabled = 1, .loglevel = LOGL_DEBUG, - }, -}; -const struct log_info jibuf_test_log_info = { - .filter_fn = NULL, - .cat = jibuf_test_cat, - .num_cat = ARRAY_SIZE(jibuf_test_cat), -}; +#include "../osmo-pcap-test/osmo_pcap.h" -/* RTP packet with AMR payload */ -static uint8_t rtp_pkt[] = { - 0x80, 0x62, 0x3f, 0xcc, 0x00, 0x01, 0xa7, 0x6f, /* RTP */ - 0x07, 0x09, 0x00, 0x62, 0x20, 0x14, 0xff, 0xd4, /* AMR */ - 0xf9, 0xff, 0xfb, 0xe7, 0xeb, 0xf9, 0x9f, 0xf8, - 0xf2, 0x26, 0x33, 0x65, 0x54, -}; - -static void sigalarm_handler(int foo) -{ - printf("FAIL: test did not run successfully\n"); - exit(EXIT_FAILURE); -} - -#define SAMPLES_PER_PKT 160 -#define RTP_FREQ_MS 20 -#define RTP_PKTS_PER_SEC (1000/RTP_FREQ_MS) -#define NET_DELAY_MS 300 -#define GENERATED_JITTER_MS 160 -#define NUM_PACKETS_TO_SEND 1000 - -#define TRACE_PACKE_DEBUG 0 -#define TRACE_PACKET_GNUPLOT 1 -#define TRACE_PACKET_TEST_JITTER 0 struct checkpoint { struct timeval ts; int transit; double jitter; + uint32_t timestamp; }; struct rtp_pkt_info { @@ -84,14 +49,66 @@ struct rtp_pkt_info *data; }; -struct jibuf *jb; -uint16_t rtp_first_seq; -uint16_t rtp_next_seq; -uint32_t rtp_next_ts; -uint32_t packets_sent; -uint32_t packets_received; -uint32_t packets_dropped; -uint32_t packets_too_much_jitter; +/* Option parameters to the program */ +static bool opt_test_rand; +static bool opt_debug_human; +static bool opt_debug_table; +static char* opt_pcap_file; +/* ----------------------------- */ + +/* Logging related stuff */ +#define INT2IDX(x) (-1*(x)-1) +struct log_info_cat jibuf_test_cat[] = { + [INT2IDX(DLJIBUF)] = { + .name = "DLJIBUF", + .description = "Osmocom Jitter Buffer", + .enabled = 1, .loglevel = LOGL_DEBUG, + }, +}; +const struct log_info jibuf_test_log_info = { + .filter_fn = NULL, + .cat = jibuf_test_cat, + .num_cat = ARRAY_SIZE(jibuf_test_cat), +}; +/* ----------------------------- */ + +/* Used for test random: */ +#define SAMPLES_PER_PKT 160 +#define RTP_FREQ_MS 20 +#define RTP_PKTS_PER_SEC (1000/RTP_FREQ_MS) +#define NET_DELAY_MS 300 +#define GENERATED_JITTER_MS 160 +#define NUM_PACKETS_TO_SEND 1000 + +/* RTP packet with AMR payload */ +static uint8_t rtp_pkt[] = { + 0x80, 0x62, 0x3f, 0xcc, 0x00, 0x01, 0xa7, 0x6f, /* RTP */ + 0x07, 0x09, 0x00, 0x62, 0x20, 0x14, 0xff, 0xd4, /* AMR */ + 0xf9, 0xff, 0xfb, 0xe7, 0xeb, 0xf9, 0x9f, 0xf8, + 0xf2, 0x26, 0x33, 0x65, 0x54, +}; + +static struct jibuf *jb; +static uint16_t rtp_first_seq; +static uint16_t rtp_next_seq; +static uint32_t rtp_next_ts; +static struct timeval tx_prev_time; +static uint32_t packets_sent; +static uint32_t packets_received; +static uint32_t packets_dropped; +static uint32_t packets_too_much_jitter; +/* ----------------------------- */ + +/* Used for test pcap: */ +static struct osmo_pcap osmo_pcap; +static bool pcap_finished; +/* ----------------------------- */ + +static void sigalarm_handler(int foo) +{ + printf("FAIL: test did not run successfully\n"); + exit(EXIT_FAILURE); +} struct rtp_pkt_info *msgb_get_pinfo(struct msgb* msg) { @@ -104,14 +121,16 @@ return ts->tv_sec * 1000 + ts->tv_usec / 1000; } -int calc_relative_transmit_time(struct timeval *tx_0, struct timeval *tx_f, - struct timeval *rx_0, struct timeval *rx_f) +int32_t calc_rel_transmit_time(uint32_t tx_0, uint32_t tx_f, uint32_t rx_0, uint32_t rx_f, bool tx_is_samples, bool pre) { - struct timeval txdiff, rxdiff, diff; - timersub(rx_f, rx_0, &rxdiff); - timersub(tx_f, tx_0, &txdiff); - timersub(&rxdiff, &txdiff, &diff); - return timeval2ms(&diff); + int32_t rxdiff, txdiff, res; + rxdiff = (rx_f - rx_0); + txdiff = (tx_f - tx_0); + if(tx_is_samples) + txdiff = txdiff * RTP_FREQ_MS/SAMPLES_PER_PKT; + res = rxdiff - txdiff; + //fprintf(stderr, "%s: (%u - %u) - (%u - %u) = %d - %d (%d) = %d\n", (pre ? "pre" : "post"), rx_f, rx_0, tx_f, tx_0, rxdiff, txdiff, (tx_f - tx_0), res); + return res; } void trace_pkt(struct msgb *msg, char* info) { @@ -122,7 +141,7 @@ gettimeofday(&now, NULL); timersub(&now, &pinfo->tx_time, &total_delay); -#if TRACE_PACKET_DEBUG + if (opt_debug_human) { uint32_t total_delay_ms = timeval2ms(&total_delay); LOGP(DLJIBUF, LOGL_DEBUG, "%s: seq=%"PRIu16" ts=%"PRIu32" (%ld.%06ld) tx_delay=%"PRIu32 \ " end_delay=%"PRIu32" pre_trans=%d pre_jitter=%f post_trans=%d post_jitter=%f\n", @@ -131,9 +150,21 @@ pinfo->tx_delay, total_delay_ms, pinfo->prequeue.transit, pinfo->prequeue.jitter, pinfo->postqueue.transit, pinfo->postqueue.jitter); -#endif -#if TRACE_PACKET_GNUPLOT + if (pinfo->prequeue.jitter < pinfo->postqueue.jitter) + LOGP(DLJIBUF, LOGL_ERROR, "JITTER HIGHER THAN REF: seq=%"PRIu16" ts=%"PRIu32 \ + " (%ld.%06ld) tx_delay=%"PRIu32" end_delay=%"PRIu32 \ + " pre_trans=%d pre_jitter=%f post_trans=%d post_jitter=%f dropped=%"PRIu32 \ + " buffer=%"PRIu32"\n", + ntohs(rtph->sequence), ntohl(rtph->timestamp), + pinfo->tx_time.tv_sec, pinfo->tx_time.tv_usec, + pinfo->tx_delay, total_delay_ms, + pinfo->prequeue.transit, pinfo->prequeue.jitter, + pinfo->postqueue.transit, pinfo->postqueue.jitter, + packets_dropped, jb->threshold_delay); + } + + if (opt_debug_table) { /* Used as input for gplot: "gnuplot -p jitter.plt -"" */ uint32_t tx_time_ms = timeval2ms(&pinfo->tx_time); uint32_t prequeue_time_ms = timeval2ms(&pinfo->prequeue.ts); @@ -144,7 +175,7 @@ pinfo->prequeue.transit, pinfo->postqueue.transit, pinfo->prequeue.jitter, pinfo->postqueue.jitter, packets_dropped, jb->threshold_delay); -#endif + } } void pkt_add_result(struct msgb *msg, bool dropped) @@ -158,21 +189,8 @@ packets_received++; trace_pkt(msg,"received"); - if (pinfo->prequeue.jitter < pinfo->postqueue.jitter) { + if (pinfo->prequeue.jitter < pinfo->postqueue.jitter) packets_too_much_jitter++; -#if TRACE_PACKET_TEST_JITTER - LOGP(DLJIBUF, LOGL_ERROR, "JITTER HIGHER THAN REF: %s seq=%"PRIu16" ts=%"PRIu32 \ - " (%ld.%06ld) tx_delay=%"PRIu32" end_delay=%"PRIu32 \ - " pre_trans=%d pre_jitter=%f post_trans=%d post_jitter=%f dropped=%"PRIu32 \ - " buffer=%"PRIu32"\n", - info, ntohs(rtph->sequence), ntohl(rtph->timestamp), - pinfo->tx_time.tv_sec, pinfo->tx_time.tv_usec, - pinfo->tx_delay, total_delay_ms, - pinfo->prequeue.transit, pinfo->prequeue.jitter, - pinfo->postqueue.transit, pinfo->postqueue.jitter, - packets_dropped, jb->threshold_delay); -#endif - } } } @@ -181,14 +199,30 @@ static struct checkpoint postqueue_prev; static bool postqueue_started = false; + bool tx_is_samples; + struct rtp_hdr *rtph = osmo_rtp_get_hdr(msg); struct rtp_pkt_info *pinfo = msgb_get_pinfo(msg); + uint32_t tx1, tx0, rx0, rx1; + gettimeofday(&pinfo->postqueue.ts, NULL); + pinfo->postqueue.timestamp = htonl(rtph->timestamp); if (postqueue_started) { - pinfo->postqueue.transit = calc_relative_transmit_time( - &pinfo->tx_prev_time, &pinfo->tx_time, - &postqueue_prev.ts, &pinfo->postqueue.ts); + /* In random test mode we now the sender time, so we get real + * jitter results using it */ + if(opt_test_rand) { + tx0 = timeval2ms(&pinfo->tx_prev_time); + tx1 = timeval2ms(&pinfo->tx_time); + tx_is_samples = false; + } else { + tx0 = postqueue_prev.timestamp; + tx1 = pinfo->postqueue.timestamp; + tx_is_samples = true; + } + rx0 = timeval2ms(&postqueue_prev.ts); + rx1 = timeval2ms(&pinfo->postqueue.ts); + pinfo->postqueue.transit = calc_rel_transmit_time(tx0, tx1, rx0, rx1, tx_is_samples, 0); uint32_t abs_transit = pinfo->postqueue.transit * ( pinfo->postqueue.transit >= 0 ? 1 : -1 ); @@ -214,15 +248,32 @@ static struct checkpoint prequeue_prev; static bool prequeue_started = false; + bool tx_is_samples; struct msgb *msg = (struct msgb*) data; + struct rtp_hdr *rtph = osmo_rtp_get_hdr(msg); struct rtp_pkt_info *pinfo = msgb_get_pinfo(msg); + + uint32_t tx1, tx0, rx0, rx1; + gettimeofday(&pinfo->prequeue.ts, NULL); + pinfo->prequeue.timestamp = htonl(rtph->timestamp); if (prequeue_started) { - pinfo->prequeue.transit = calc_relative_transmit_time( - &pinfo->tx_prev_time, &pinfo->tx_time, - &prequeue_prev.ts, &pinfo->prequeue.ts); + /* In random test mode we now the sender time, so we get real + * jitter results using it */ + if(opt_test_rand) { + tx0 = timeval2ms(&pinfo->tx_prev_time); + tx1 = timeval2ms(&pinfo->tx_time); + tx_is_samples = false; + } else { + tx0 = prequeue_prev.timestamp; + tx1 = pinfo->prequeue.timestamp; + tx_is_samples = true; + } + rx0 = timeval2ms(&prequeue_prev.ts); + rx1 = timeval2ms(&pinfo->prequeue.ts); + pinfo->prequeue.transit = calc_rel_transmit_time(tx0, tx1, rx0, rx1, tx_is_samples, 1); uint32_t abs_transit = pinfo->prequeue.transit * ( pinfo->prequeue.transit >= 0 ? 1 : -1 ); @@ -246,9 +297,15 @@ } } +struct rtp_pkt_info * msgb_allocate_pinfo(struct msgb *msg) +{ + struct rtp_pkt_info_cb *cb = (struct rtp_pkt_info_cb *)&((msg)->cb[0]); + cb->data = (struct rtp_pkt_info *) talloc_zero(msg, struct rtp_pkt_info); + return cb->data; +} + void send_rtp_packet() { - static struct timeval tx_prev_time; struct rtp_pkt_info *pinfo; struct rtp_hdr *rtph; @@ -278,9 +335,7 @@ rtph->timestamp = htonl(rtp_next_ts); rtp_next_ts += SAMPLES_PER_PKT; - pinfo = talloc_zero(msg, struct rtp_pkt_info); - struct rtp_pkt_info_cb *cb = (struct rtp_pkt_info_cb *)&((msg)->cb[0]); - cb->data = pinfo; + pinfo = msgb_allocate_pinfo(msg); gettimeofday(&pinfo->tx_time, NULL); pinfo->tx_prev_time = tx_prev_time; @@ -296,9 +351,9 @@ osmo_timer_schedule(&pinfo->timer, 0, pinfo->tx_delay * 1000); } -void generate_pkt_cb(void *data) +void rand_generate_pkt_cb(void *data) { - static struct osmo_timer_list enqueue_timer = {.cb = generate_pkt_cb, .data = NULL}; + static struct osmo_timer_list enqueue_timer = {.cb = rand_generate_pkt_cb, .data = NULL}; static struct timeval last_generated; struct timeval time_rate = { .tv_sec = 0, .tv_usec = RTP_FREQ_MS * 1000}; @@ -318,37 +373,56 @@ } } -void check_results() + +static int pcap_generate_pkt_cb(struct msgb *msg) +{ + struct rtp_pkt_info *pinfo; + /* Set fake prev_time for 1st packet. Otherwise transit calculations for first + * packet can be really weird if they not arrive in order */ + if (!packets_sent) { + struct timeval now, time_rate = { .tv_sec = 0, .tv_usec = RTP_FREQ_MS * 1000}; + gettimeofday(&now, NULL); + timersub(&now, &time_rate, &tx_prev_time); + } + + pinfo = msgb_allocate_pinfo(msg); + gettimeofday(&pinfo->tx_time, NULL); + pinfo->tx_prev_time = tx_prev_time; + + tx_prev_time = pinfo->tx_time; + packets_sent++; + pkt_arrived_cb(msg); + return 0; +} + +void pcap_pkt_timer_cb(void *data) +{ + if (osmo_pcap_test_run(&osmo_pcap, IPPROTO_UDP, pcap_generate_pkt_cb) < 0) { + osmo_pcap_stats_printf(); + osmo_pcap_test_close(osmo_pcap.h); + pcap_finished=true; + } +} + +void rand_test_check() { uint32_t drop_threshold = NUM_PACKETS_TO_SEND * 5 / 100; if (packets_dropped > drop_threshold) { fprintf(stdout, "Too many dropped packets (%"PRIu32" > %"PRIu32")\n", packets_dropped, drop_threshold); - exit(1); + exit(EXIT_FAILURE); } uint32_t jitter_high_threshold = NUM_PACKETS_TO_SEND * 8 / 100; if (packets_too_much_jitter > jitter_high_threshold) { fprintf(stdout, "Too many packets with higher jitter (%"PRIu32" > %"PRIu32")\n", packets_too_much_jitter, jitter_high_threshold); - exit(1); + exit(EXIT_FAILURE); } } -int main(void) +void rand_test() { - - if (signal(SIGALRM, sigalarm_handler) == SIG_ERR) { - perror("signal"); - exit(EXIT_FAILURE); - } - - /* This test doesn't use it, but jibuf requires it internally. */ - osmo_init_logging(&jibuf_test_log_info); - log_set_category_filter(osmo_stderr_target, DLMIB, 1, LOGL_ERROR); - log_set_print_filename(osmo_stderr_target, 0); - log_set_log_level(osmo_stderr_target, LOGL_INFO); - srandom(time(NULL)); rtp_first_seq = (uint16_t) random(); rtp_next_seq = rtp_first_seq; @@ -360,7 +434,8 @@ osmo_jibuf_set_dequeue_cb(jb, dequeue_cb, NULL); - generate_pkt_cb(NULL); + /* first run */ + rand_generate_pkt_cb(NULL); /* If the test takes longer than twice the time needed to generate the packets plus 10 seconds, abort it */ @@ -371,7 +446,106 @@ osmo_jibuf_delete(jb); - check_results(); + rand_test_check(); +} + +void pcap_test_check() { + +} + +void pcap_test() { + osmo_pcap_init(); + + osmo_pcap.h = osmo_pcap_test_open(opt_pcap_file); + if (osmo_pcap.h == NULL) + exit(EXIT_FAILURE); + + osmo_pcap.timer.cb = pcap_pkt_timer_cb; + + jb = osmo_jibuf_alloc(NULL); + osmo_jibuf_set_dequeue_cb(jb, dequeue_cb, NULL); + osmo_jibuf_set_min_delay(jb, 60); + osmo_jibuf_set_max_delay(jb, 500); + + /* first run */ + pcap_pkt_timer_cb(NULL); + + while(!pcap_finished || !osmo_jibuf_empty(jb)) + osmo_select_main(0); + + osmo_jibuf_delete(jb); + + pcap_test_check(); +} + +static void print_help(void) +{ + printf("jibuf_test [-r] [-p pcap] [-d] [-g]\n"); + printf(" -h Print this help message\n"); + printf(" -r Run test with randomly generated jitter\n"); + printf(" -p Run test with specified pcap file\n"); + printf(" -d Enable packet trace debug suitable for humans\n"); + printf(" -t Enable packet trace debug suitable for gnuplot\n"); +} + +static int parse_options(int argc, char **argv) +{ + int opt; + + while ((opt = getopt(argc, argv, "hdtrp:")) != -1) { + switch (opt) { + case 'h': + print_help(); + return -1; + case 'd': + opt_debug_human = true; + break; + case 't': + opt_debug_table = true; + break; + case 'r': + opt_test_rand = true; + break; + case 'p': + opt_pcap_file = strdup(optarg); + break; + default: + return -1; + } + } + + return 0; +} + +int main(int argc, char **argv) +{ + + if (signal(SIGALRM, sigalarm_handler) == SIG_ERR) { + perror("signal"); + exit(EXIT_FAILURE); + } + + if(parse_options(argc, argv) < 0) + exit(EXIT_FAILURE); + + osmo_init_logging(&jibuf_test_log_info); + log_set_print_filename(osmo_stderr_target, 0); + log_set_log_level(osmo_stderr_target, LOGL_DEBUG); + + if(opt_debug_human && !opt_debug_table) + log_set_category_filter(osmo_stderr_target, DLMIB, 1, LOGL_DEBUG); + + if(opt_pcap_file && opt_test_rand) { + print_help(); + exit(EXIT_FAILURE); + } + + + if(opt_pcap_file) + pcap_test(); + + if(opt_test_rand) + rand_test(); fprintf(stdout, "OK: Test passed\n"); return EXIT_SUCCESS; diff --git a/tests/jibuf/jitter.plt b/tests/jibuf/jitter.plt index 37deb65..0235170 100644 --- a/tests/jibuf/jitter.plt +++ b/tests/jibuf/jitter.plt @@ -23,13 +23,27 @@ #set y2label 'delay [ms]' #set y2tics nomirror -plot \ - '/tmp/bla' using 3:5 with linespoints title 'pre.trans' axes x1y1, \ - '/tmp/bla' using 4:6 with linespoints title 'post.trans' axes x1y1, \ - '/tmp/bla' using 3:7 with linespoints title 'pre.jitter' axes x1y1, \ - '/tmp/bla' using 4:8 with linespoints title 'post.jitter' axes x1y1, \ - '/tmp/bla' using 3:9 with linespoints title 'pre.dropped' axes x1y1, \ - '/tmp/bla' using 3:10 with linespoints title 'pre.buffer' axes x1y1, \ - '/tmp/bla' using 3:((column(3)-column(2))) with linespoints title 'pre.delay' axes x1y1, \ - '/tmp/bla' using 4:((column(4)-column(2))) with linespoints title 'post.delay' axes x1y1 +# For pcap based input, 'pre.delay' makes no sense (it's 0) as we can't know tx_delay +pcap = 1 +if (pcap) { + plot \ + '/tmp/bla' using 3:5 with linespoints title 'pre.trans' axes x1y1, \ + '/tmp/bla' using 4:6 with linespoints title 'post.trans' axes x1y1, \ + '/tmp/bla' using 3:7 with linespoints title 'pre.jitter' axes x1y1, \ + '/tmp/bla' using 4:8 with linespoints title 'post.jitter' axes x1y1, \ + '/tmp/bla' using 3:9 with linespoints title 'pre.dropped' axes x1y1, \ + '/tmp/bla' using 3:10 with linespoints title 'pre.buffer' axes x1y1, \ + '/tmp/bla' using 4:((column(4)-column(2))) with linespoints title 'post.delay' axes x1y1 + +} else { + plot \ + '/tmp/bla' using 3:5 with linespoints title 'pre.trans' axes x1y1, \ + '/tmp/bla' using 4:6 with linespoints title 'post.trans' axes x1y1, \ + '/tmp/bla' using 3:7 with linespoints title 'pre.jitter' axes x1y1, \ + '/tmp/bla' using 4:8 with linespoints title 'post.jitter' axes x1y1, \ + '/tmp/bla' using 3:9 with linespoints title 'pre.dropped' axes x1y1, \ + '/tmp/bla' using 3:10 with linespoints title 'pre.buffer' axes x1y1, \ + '/tmp/bla' using 3:((column(3)-column(2))) with linespoints title 'pre.delay' axes x1y1, \ + '/tmp/bla' using 4:((column(4)-column(2))) with linespoints title 'post.delay' axes x1y1 +} pause mouse close; exit -- To view, visit https://gerrit.osmocom.org/7775 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I7a13c823fb70e0adbc5fa0726fd66b15dc40014e Gerrit-PatchSet: 1 Gerrit-Project: libosmo-netif Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol From gerrit-no-reply at lists.osmocom.org Thu Apr 12 13:33:05 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Thu, 12 Apr 2018 13:33:05 +0000 Subject: [PATCH] libosmo-netif[master]: tests: jibuf_tool: Add OSMUX support Message-ID: Review at https://gerrit.osmocom.org/7776 tests: jibuf_tool: Add OSMUX support Change-Id: I0f02da0329e6739ff340d31113161bb520b1b760 --- M tests/jibuf/jibuf_tool.c 1 file changed, 42 insertions(+), 5 deletions(-) git pull ssh://gerrit.osmocom.org:29418/libosmo-netif refs/changes/76/7776/1 diff --git a/tests/jibuf/jibuf_tool.c b/tests/jibuf/jibuf_tool.c index c2461ec..faa6e38 100644 --- a/tests/jibuf/jibuf_tool.c +++ b/tests/jibuf/jibuf_tool.c @@ -25,6 +25,7 @@ #include #include #include +#include #include "../osmo-pcap-test/osmo_pcap.h" @@ -53,6 +54,7 @@ static bool opt_test_rand; static bool opt_debug_human; static bool opt_debug_table; +static bool opt_osmux; static char* opt_pcap_file; /* ----------------------------- */ @@ -102,6 +104,8 @@ /* Used for test pcap: */ static struct osmo_pcap osmo_pcap; static bool pcap_finished; +static struct osmux_out_handle pcap_osmux_h; +static struct llist_head osmux_list; /* ----------------------------- */ static void sigalarm_handler(int foo) @@ -304,7 +308,7 @@ return cb->data; } -void send_rtp_packet() +void rand_send_rtp_packet() { struct rtp_pkt_info *pinfo; @@ -362,7 +366,7 @@ if (!packets_sent) gettimeofday(&last_generated, NULL); - send_rtp_packet(); + rand_send_rtp_packet(); packets_sent++; timeradd(&last_generated, &time_rate, &sched_ts); @@ -395,9 +399,33 @@ return 0; } +void glue_cb(struct msgb *msg, void *data) +{ + pcap_generate_pkt_cb(msg); +} + +int pcap_read_osmux(struct msgb *msg) +{ + struct osmux_hdr *osmuxh; + + /* This code below belongs to the osmux receiver */ + while((osmuxh = osmux_xfrm_output_pull(msg)) != NULL) { + osmux_xfrm_output(osmuxh, &pcap_osmux_h, &osmux_list); + osmux_tx_sched(&osmux_list, glue_cb, NULL); + } + msgb_free(msg); + return 0; +} + void pcap_pkt_timer_cb(void *data) { - if (osmo_pcap_test_run(&osmo_pcap, IPPROTO_UDP, pcap_generate_pkt_cb) < 0) { + int (*mycb)(struct msgb *msgb); + if(opt_osmux) + mycb = pcap_read_osmux; + else + mycb = pcap_generate_pkt_cb; + + if (osmo_pcap_test_run(&osmo_pcap, IPPROTO_UDP, mycb) < 0) { osmo_pcap_stats_printf(); osmo_pcap_test_close(osmo_pcap.h); pcap_finished=true; @@ -462,6 +490,11 @@ osmo_pcap.timer.cb = pcap_pkt_timer_cb; + if(opt_osmux) { + INIT_LLIST_HEAD(&osmux_list); + osmux_xfrm_output_init(&pcap_osmux_h, 0); + } + jb = osmo_jibuf_alloc(NULL); osmo_jibuf_set_dequeue_cb(jb, dequeue_cb, NULL); osmo_jibuf_set_min_delay(jb, 60); @@ -480,10 +513,11 @@ static void print_help(void) { - printf("jibuf_test [-r] [-p pcap] [-d] [-g]\n"); + printf("jibuf_test [-r] [-p pcap] [-o] [-d] [-g]\n"); printf(" -h Print this help message\n"); printf(" -r Run test with randomly generated jitter\n"); printf(" -p Run test with specified pcap file\n"); + printf(" -o The pcap contains OSMUX packets isntead of RTP\n"); printf(" -d Enable packet trace debug suitable for humans\n"); printf(" -t Enable packet trace debug suitable for gnuplot\n"); } @@ -492,7 +526,7 @@ { int opt; - while ((opt = getopt(argc, argv, "hdtrp:")) != -1) { + while ((opt = getopt(argc, argv, "hdtrop:")) != -1) { switch (opt) { case 'h': print_help(); @@ -506,6 +540,9 @@ case 'r': opt_test_rand = true; break; + case 'o': + opt_osmux = true; + break; case 'p': opt_pcap_file = strdup(optarg); break; -- To view, visit https://gerrit.osmocom.org/7776 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I0f02da0329e6739ff340d31113161bb520b1b760 Gerrit-PatchSet: 1 Gerrit-Project: libosmo-netif Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol From gerrit-no-reply at lists.osmocom.org Thu Apr 12 13:33:06 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Thu, 12 Apr 2018 13:33:06 +0000 Subject: [PATCH] libosmo-netif[master]: tests: jibuf_tool: Add parameters to control size of buffer Message-ID: Review at https://gerrit.osmocom.org/7777 tests: jibuf_tool: Add parameters to control size of buffer Change-Id: I8a7fa39985f8d197e24c32cab80299aba2d03087 --- M tests/jibuf/jibuf_tool.c 1 file changed, 14 insertions(+), 4 deletions(-) git pull ssh://gerrit.osmocom.org:29418/libosmo-netif refs/changes/77/7777/1 diff --git a/tests/jibuf/jibuf_tool.c b/tests/jibuf/jibuf_tool.c index faa6e38..78eece0 100644 --- a/tests/jibuf/jibuf_tool.c +++ b/tests/jibuf/jibuf_tool.c @@ -56,6 +56,8 @@ static bool opt_debug_table; static bool opt_osmux; static char* opt_pcap_file; +uint32_t opt_buffer_min = 60; +uint32_t opt_buffer_max = 500; /* ----------------------------- */ /* Logging related stuff */ @@ -497,8 +499,8 @@ jb = osmo_jibuf_alloc(NULL); osmo_jibuf_set_dequeue_cb(jb, dequeue_cb, NULL); - osmo_jibuf_set_min_delay(jb, 60); - osmo_jibuf_set_max_delay(jb, 500); + osmo_jibuf_set_min_delay(jb, opt_buffer_min); + osmo_jibuf_set_max_delay(jb, opt_buffer_max); /* first run */ pcap_pkt_timer_cb(NULL); @@ -513,20 +515,22 @@ static void print_help(void) { - printf("jibuf_test [-r] [-p pcap] [-o] [-d] [-g]\n"); + printf("jibuf_test [-r] [-p pcap] [-o] [-d] [-g] [-m ms] [-M ms]\n"); printf(" -h Print this help message\n"); printf(" -r Run test with randomly generated jitter\n"); printf(" -p Run test with specified pcap file\n"); printf(" -o The pcap contains OSMUX packets isntead of RTP\n"); printf(" -d Enable packet trace debug suitable for humans\n"); printf(" -t Enable packet trace debug suitable for gnuplot\n"); + printf(" -m Minimum buffer size for the jitter-buffer, in ms (only used in -p mode)\n"); + printf(" -M Maximum buffer size for the jitter-buffer, in ms (only used in -p mode)\n"); } static int parse_options(int argc, char **argv) { int opt; - while ((opt = getopt(argc, argv, "hdtrop:")) != -1) { + while ((opt = getopt(argc, argv, "hdtrop:m:M:")) != -1) { switch (opt) { case 'h': print_help(); @@ -546,6 +550,12 @@ case 'p': opt_pcap_file = strdup(optarg); break; + case 'm': + opt_buffer_min = (uint32_t) atoi(optarg); + break; + case 'M': + opt_buffer_max = (uint32_t) atoi(optarg); + break; default: return -1; } -- To view, visit https://gerrit.osmocom.org/7777 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I8a7fa39985f8d197e24c32cab80299aba2d03087 Gerrit-PatchSet: 1 Gerrit-Project: libosmo-netif Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol From gerrit-no-reply at lists.osmocom.org Thu Apr 12 13:33:06 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Thu, 12 Apr 2018 13:33:06 +0000 Subject: [PATCH] libosmo-netif[master]: jibuf: Take RTP marker into account Message-ID: Review at https://gerrit.osmocom.org/7778 jibuf: Take RTP marker into account Change-Id: Ie142acfb45650e0af775f58226fd191beaf8178e --- M src/jibuf.c M tests/jibuf/jibuf_test.c M tests/jibuf/jibuf_test.ok M tests/jibuf/jibuf_tool.c 4 files changed, 90 insertions(+), 5 deletions(-) git pull ssh://gerrit.osmocom.org:29418/libosmo-netif refs/changes/78/7778/1 diff --git a/src/jibuf.c b/src/jibuf.c index 44a86a5..aa66302 100644 --- a/src/jibuf.c +++ b/src/jibuf.c @@ -111,6 +111,15 @@ } + +static bool msg_get_marker(struct msgb *msg) +{ + /* TODO: make it more generic as a callback so that different types of + * pkts can be used ? */ + struct rtp_hdr *rtph = osmo_rtp_get_hdr(msg); + return rtph->marker; +} + static uint16_t msg_get_sequence(struct msgb *msg) { struct rtp_hdr *rtph = osmo_rtp_get_hdr(msg); @@ -271,7 +280,11 @@ clock_gettime_timeval(CLOCK_MONOTONIC, &jb->last_enqueue_time); - if (!jb->started) { + /* If packet contains a mark -> start of talkspurt. + * A lot of packets may have been suppressed by the sender before it, + * so let's take it as a reference + */ + if (!jb->started || msg_get_marker(msg)) { jb->started = true; msg_set_as_reference(jb, msg); rel_delay = 0; @@ -306,10 +319,10 @@ timeradd(&jb->last_enqueue_time, &delay_ts, &sched_ts); LOGP(DLJIBUF, LOGL_DEBUG, "enqueuing packet seq=%"PRIu16" rel=%d delay=%d" \ - " thres=%d {%lu.%06lu -> %lu.%06lu}\n", + " thres=%d {%lu.%06lu -> %lu.%06lu} %s\n", msg_get_sequence(msg), rel_delay, delay, jb->threshold_delay, jb->last_enqueue_time.tv_sec, jb->last_enqueue_time.tv_usec, - sched_ts.tv_sec, sched_ts.tv_usec); + sched_ts.tv_sec, sched_ts.tv_usec, msg_get_marker(msg)? "M" : ""); /* Add scheduled dequeue time in msg->cb so we can check it later */ unsigned long *old_cb = talloc_memdup(jb->talloc_ctx, msg->cb, sizeof(msg->cb)); diff --git a/tests/jibuf/jibuf_test.c b/tests/jibuf/jibuf_test.c index 69a6d2f..a6fe1b9 100644 --- a/tests/jibuf/jibuf_test.c +++ b/tests/jibuf/jibuf_test.c @@ -564,6 +564,56 @@ osmo_jibuf_delete(jb); } +static void test_rtp_marker(void) +{ + int min_delay = 60; + struct msgb *msg; + struct rtp_hdr *rtph; + + printf("===test_rtp_marker===\n"); + + clock_override_enable(true); + clock_override_set(0, 0); + rtp_init(32, 400); + jb = osmo_jibuf_alloc(NULL); + osmo_jibuf_set_dequeue_cb(jb, dequeue_cb, NULL); + osmo_jibuf_set_min_delay(jb, min_delay); + osmo_jibuf_set_max_delay(jb, 200); + + /* First rtp at t=0, should be scheduled in min_delay time */ + clock_debug("enqueue 1st packet"); + ENQUEUE_NEXT(jb); + clock_override_add(0, TIME_RTP_PKT_MS*1000); + clock_debug("enqueue 2nd packet"); + ENQUEUE_NEXT(jb); + clock_override_add(0, min_delay*1000); + clock_debug("2 packets dequeued"); + osmo_select_main(0); + + clock_override_add(0, 40*1000); + /* We are at t=120, next non-marked (consecutive seq) packet arriving at + * this time should be dropped, but since marker establishes new ref, + * it will be accepted as well an ext paket */ + clock_debug("enqueue late pkt with marker=1, will be enqueued"); + msg = rtp_next(); + rtph = osmo_rtp_get_hdr(msg); + rtph->marker = 1; + OSMO_ASSERT(osmo_jibuf_enqueue(jb, msg) == 0); + + clock_debug("enqueue late pkt after pkt with marker=1, will be enqueued"); + clock_override_add(0, TIME_RTP_PKT_MS*1000); + ENQUEUE_NEXT(jb); + + clock_debug("2 packets dequeued"); + clock_override_add(0, min_delay*1000); + osmo_select_main(0); + + /* t=120, 4 enqueued, 4 dequeued.*/ + OSMO_ASSERT(osmo_jibuf_empty(jb)); + + osmo_jibuf_delete(jb); +} + int main(int argc, char **argv) { @@ -588,6 +638,7 @@ test_buffer_threshold_change(); test_seq_wraparound(); test_timestamp_wraparound(); + test_rtp_marker(); fprintf(stdout, "OK: Test passed\n"); return EXIT_SUCCESS; diff --git a/tests/jibuf/jibuf_test.ok b/tests/jibuf/jibuf_test.ok index 5a0f121..3103781 100644 --- a/tests/jibuf/jibuf_test.ok +++ b/tests/jibuf/jibuf_test.ok @@ -348,4 +348,21 @@ sys={0.160000}, mono={0.160000}: clock_override_add sys={0.160000}, mono={0.160000}: dequeue 5th packet (ts=334) sys={0.160000}, mono={0.160000}: dequeue: seq=37 ts=334 LATEST +===test_rtp_marker=== +sys={0.000000}, mono={0.000000}: clock_override_set +sys={0.000000}, mono={0.000000}: enqueue 1st packet +sys={0.020000}, mono={0.020000}: clock_override_add +sys={0.020000}, mono={0.020000}: enqueue 2nd packet +sys={0.080000}, mono={0.080000}: clock_override_add +sys={0.080000}, mono={0.080000}: 2 packets dequeued +sys={0.080000}, mono={0.080000}: dequeue: seq=33 ts=560 INTERMEDIATE +sys={0.080000}, mono={0.080000}: dequeue: seq=34 ts=720 LATEST +sys={0.120000}, mono={0.120000}: clock_override_add +sys={0.120000}, mono={0.120000}: enqueue late pkt with marker=1, will be enqueued +sys={0.120000}, mono={0.120000}: enqueue late pkt after pkt with marker=1, will be enqueued +sys={0.140000}, mono={0.140000}: clock_override_add +sys={0.140000}, mono={0.140000}: 2 packets dequeued +sys={0.200000}, mono={0.200000}: clock_override_add +sys={0.200000}, mono={0.200000}: dequeue: seq=35 ts=880 INTERMEDIATE +sys={0.200000}, mono={0.200000}: dequeue: seq=36 ts=1040 LATEST OK: Test passed diff --git a/tests/jibuf/jibuf_tool.c b/tests/jibuf/jibuf_tool.c index 78eece0..4a35a94 100644 --- a/tests/jibuf/jibuf_tool.c +++ b/tests/jibuf/jibuf_tool.c @@ -214,7 +214,9 @@ gettimeofday(&pinfo->postqueue.ts, NULL); pinfo->postqueue.timestamp = htonl(rtph->timestamp); - if (postqueue_started) { + /* If pkt->marker -> init of talkspurt, there may be missing packets before, + * better to start calculating the jitter from here */ + if (postqueue_started && !rtph->marker) { /* In random test mode we now the sender time, so we get real * jitter results using it */ if(opt_test_rand) { @@ -265,7 +267,9 @@ gettimeofday(&pinfo->prequeue.ts, NULL); pinfo->prequeue.timestamp = htonl(rtph->timestamp); - if (prequeue_started) { + /* If pkt->marker -> init of talkspurt, there may be missing packets before, + * better to start calculating the jitter from here */ + if (prequeue_started && !rtph->marker) { /* In random test mode we now the sender time, so we get real * jitter results using it */ if(opt_test_rand) { -- To view, visit https://gerrit.osmocom.org/7778 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Ie142acfb45650e0af775f58226fd191beaf8178e Gerrit-PatchSet: 1 Gerrit-Project: libosmo-netif Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol From gerrit-no-reply at lists.osmocom.org Thu Apr 12 13:33:06 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Thu, 12 Apr 2018 13:33:06 +0000 Subject: [PATCH] libosmo-netif[master]: jibuf: re-sync clock out of sync timestamps Message-ID: Review at https://gerrit.osmocom.org/7779 jibuf: re-sync clock out of sync timestamps Change-Id: I33556b33d7549654442d9bdd7f31128792506652 --- M src/jibuf.c M tests/jibuf/jibuf_test.c M tests/jibuf/jibuf_test.ok M tests/jibuf/jibuf_tool.c 4 files changed, 152 insertions(+), 7 deletions(-) git pull ssh://gerrit.osmocom.org:29418/libosmo-netif refs/changes/79/7779/1 diff --git a/src/jibuf.c b/src/jibuf.c index aa66302..5d568e1 100644 --- a/src/jibuf.c +++ b/src/jibuf.c @@ -32,6 +32,7 @@ /* Sampling rate (in Hz) */ /* TODO: SAMPLE RATE can be guessed from rtp.p_type */ +#define SAMPLES_PER_PKT 160 #define SAMPLE_RATE 8000 /* TUNABLE PARAMETERS: */ @@ -146,6 +147,27 @@ uint32_t current_tx_ts = msg_get_timestamp(msg); return samples2ms((current_tx_ts - jb->ref_tx_ts)) - (current_rx_ts - jb->ref_rx_ts); +} + +static bool msg_is_in_sequence(struct jibuf *jb, struct msgb *msg) +{ + uint32_t current_tx_ts = msg_get_timestamp(msg); + uint16_t current_seq = msg_get_sequence(msg); + return (current_tx_ts - jb->ref_tx_ts) == (current_seq - jb->ref_tx_seq)*SAMPLES_PER_PKT; +} + +/* If packet contains a mark -> start of talkspurt. + * A lot of packets may have been suppressed by the sender before it, + * so let's take it as a reference + * If packet timestamp is not aligned with sequence + * number, then we are most probaly starting a talkspurt */ +static bool msg_is_syncpoint(struct jibuf *jb, struct msgb* msg) +{ + bool res = msg_get_marker(msg) || !msg_is_in_sequence(jb, msg); + if(res) + LOGP(DLMIB, LOGL_DEBUG, "syncpoint: %"PRIu16": marker=%d in_seq=%d\n", + msg_get_sequence(msg), msg_get_marker(msg), msg_is_in_sequence(jb, msg)); + return res; } static void msg_set_as_reference(struct jibuf *jb, struct msgb *msg) @@ -280,11 +302,8 @@ clock_gettime_timeval(CLOCK_MONOTONIC, &jb->last_enqueue_time); - /* If packet contains a mark -> start of talkspurt. - * A lot of packets may have been suppressed by the sender before it, - * so let's take it as a reference - */ - if (!jb->started || msg_get_marker(msg)) { + /* Check if it's time to sync, ie. start of talkspurt */ + if (!jb->started || msg_is_syncpoint(jb, msg)) { jb->started = true; msg_set_as_reference(jb, msg); rel_delay = 0; diff --git a/tests/jibuf/jibuf_test.c b/tests/jibuf/jibuf_test.c index a6fe1b9..a9a7ff0 100644 --- a/tests/jibuf/jibuf_test.c +++ b/tests/jibuf/jibuf_test.c @@ -614,6 +614,72 @@ osmo_jibuf_delete(jb); } +void test_rtp_out_of_sync(unsigned int time_inc_ms, uint16_t seq_nosync_inc, uint32_t ts_nosync_inc, bool expect_drop) +{ + int min_delay = 60; + struct msgb *msg; + int rc; + + printf("===test_rtp_out_of_sync(%u, %"PRIu16", %"PRIu32", %d)===\n", + time_inc_ms, seq_nosync_inc, ts_nosync_inc, expect_drop); + + clock_override_enable(true); + clock_override_set(0, 0); + rtp_init(32, 400); + jb = osmo_jibuf_alloc(NULL); + osmo_jibuf_set_dequeue_cb(jb, dequeue_cb, NULL); + osmo_jibuf_set_min_delay(jb, min_delay); + osmo_jibuf_set_max_delay(jb, 200); + + /* First rtp at t=0, should be scheduled in min_delay time */ + clock_debug("enqueue 1st packet (seq=33, ts=560)"); + ENQUEUE_NEXT(jb); + clock_override_add(0, TIME_RTP_PKT_MS*1000); + clock_debug("enqueue 2nd packet (seq=34, ts=720)"); + ENQUEUE_NEXT(jb); + + clock_override_add(0, time_inc_ms*1000); + clock_debug("2 packets dequeued"); + osmo_select_main(0); + + /* We are at t=20+time_inc_ms, next pkt would normally be dropped since it is + * pretty late, but since seq and timestamp are out of sync, which + * means the sender had some clock issues, the jibuf is going to take + * this new tuple as reference and accept it. + */ + clock_debug("enqueue late pkt with possible sync change"); + rtp_init(rtp_next_seq + seq_nosync_inc, rtp_next_ts + ts_nosync_inc); + msg = rtp_new(rtp_next_seq, rtp_next_ts); + rc = osmo_jibuf_enqueue(jb, msg); + if (expect_drop) { + OSMO_ASSERT(rc < 0); + msgb_free(msg); + } else { + OSMO_ASSERT(rc == 0); + } + + clock_debug("enqueue late pkt after possible resync"); + clock_override_add(0, TIME_RTP_PKT_MS*1000); + msg = rtp_next(); + rc = osmo_jibuf_enqueue(jb, msg); + if (expect_drop) { + OSMO_ASSERT(rc < 0); + msgb_free(msg); + } else { + OSMO_ASSERT(rc == 0); + } + + if (!expect_drop) { + clock_debug("2 packets dequeued"); + clock_override_add(0, min_delay*1000); + osmo_select_main(0); + } + + OSMO_ASSERT(osmo_jibuf_empty(jb)); + + osmo_jibuf_delete(jb); +} + int main(int argc, char **argv) { @@ -639,6 +705,9 @@ test_seq_wraparound(); test_timestamp_wraparound(); test_rtp_marker(); + test_rtp_out_of_sync(80*TIME_RTP_PKT_MS, 5, 5*SAMPLES_PER_PKT, true); + test_rtp_out_of_sync(80*TIME_RTP_PKT_MS, 6, 5*SAMPLES_PER_PKT, false); + test_rtp_out_of_sync(80*TIME_RTP_PKT_MS, 5, 5*SAMPLES_PER_PKT + 3, false); fprintf(stdout, "OK: Test passed\n"); return EXIT_SUCCESS; diff --git a/tests/jibuf/jibuf_test.ok b/tests/jibuf/jibuf_test.ok index 3103781..a152d24 100644 --- a/tests/jibuf/jibuf_test.ok +++ b/tests/jibuf/jibuf_test.ok @@ -365,4 +365,48 @@ sys={0.200000}, mono={0.200000}: clock_override_add sys={0.200000}, mono={0.200000}: dequeue: seq=35 ts=880 INTERMEDIATE sys={0.200000}, mono={0.200000}: dequeue: seq=36 ts=1040 LATEST +===test_rtp_out_of_sync(1600, 5, 800, 1)=== +sys={0.000000}, mono={0.000000}: clock_override_set +sys={0.000000}, mono={0.000000}: enqueue 1st packet (seq=33, ts=560) +sys={0.020000}, mono={0.020000}: clock_override_add +sys={0.020000}, mono={0.020000}: enqueue 2nd packet (seq=34, ts=720) +sys={1.620000}, mono={1.620000}: clock_override_add +sys={1.620000}, mono={1.620000}: 2 packets dequeued +sys={1.620000}, mono={1.620000}: dequeue: seq=33 ts=560 INTERMEDIATE +sys={1.620000}, mono={1.620000}: dequeue: seq=34 ts=720 LATEST +sys={1.620000}, mono={1.620000}: enqueue late pkt with possible sync change +sys={1.620000}, mono={1.620000}: enqueue late pkt after possible resync +sys={1.640000}, mono={1.640000}: clock_override_add +===test_rtp_out_of_sync(1600, 6, 800, 0)=== +sys={0.000000}, mono={0.000000}: clock_override_set +sys={0.000000}, mono={0.000000}: enqueue 1st packet (seq=33, ts=560) +sys={0.020000}, mono={0.020000}: clock_override_add +sys={0.020000}, mono={0.020000}: enqueue 2nd packet (seq=34, ts=720) +sys={1.620000}, mono={1.620000}: clock_override_add +sys={1.620000}, mono={1.620000}: 2 packets dequeued +sys={1.620000}, mono={1.620000}: dequeue: seq=33 ts=560 INTERMEDIATE +sys={1.620000}, mono={1.620000}: dequeue: seq=34 ts=720 LATEST +sys={1.620000}, mono={1.620000}: enqueue late pkt with possible sync change +sys={1.620000}, mono={1.620000}: enqueue late pkt after possible resync +sys={1.640000}, mono={1.640000}: clock_override_add +sys={1.640000}, mono={1.640000}: 2 packets dequeued +sys={1.700000}, mono={1.700000}: clock_override_add +sys={1.700000}, mono={1.700000}: dequeue: seq=40 ts=1520 INTERMEDIATE +sys={1.700000}, mono={1.700000}: dequeue: seq=41 ts=1680 LATEST +===test_rtp_out_of_sync(1600, 5, 803, 0)=== +sys={0.000000}, mono={0.000000}: clock_override_set +sys={0.000000}, mono={0.000000}: enqueue 1st packet (seq=33, ts=560) +sys={0.020000}, mono={0.020000}: clock_override_add +sys={0.020000}, mono={0.020000}: enqueue 2nd packet (seq=34, ts=720) +sys={1.620000}, mono={1.620000}: clock_override_add +sys={1.620000}, mono={1.620000}: 2 packets dequeued +sys={1.620000}, mono={1.620000}: dequeue: seq=33 ts=560 INTERMEDIATE +sys={1.620000}, mono={1.620000}: dequeue: seq=34 ts=720 LATEST +sys={1.620000}, mono={1.620000}: enqueue late pkt with possible sync change +sys={1.620000}, mono={1.620000}: enqueue late pkt after possible resync +sys={1.640000}, mono={1.640000}: clock_override_add +sys={1.640000}, mono={1.640000}: 2 packets dequeued +sys={1.700000}, mono={1.700000}: clock_override_add +sys={1.700000}, mono={1.700000}: dequeue: seq=39 ts=1523 INTERMEDIATE +sys={1.700000}, mono={1.700000}: dequeue: seq=40 ts=1683 LATEST OK: Test passed diff --git a/tests/jibuf/jibuf_tool.c b/tests/jibuf/jibuf_tool.c index 4a35a94..dcfd130 100644 --- a/tests/jibuf/jibuf_tool.c +++ b/tests/jibuf/jibuf_tool.c @@ -35,6 +35,7 @@ int transit; double jitter; uint32_t timestamp; + uint16_t seq; }; struct rtp_pkt_info { @@ -127,6 +128,16 @@ return ts->tv_sec * 1000 + ts->tv_usec / 1000; } +bool pkt_is_syncpoint(struct msgb* msg, uint16_t prev_seq, uint32_t prev_timestamp) +{ + struct rtp_hdr *rtph = osmo_rtp_get_hdr(msg); + + uint16_t current_seq = ntohs(rtph->sequence); + uint32_t current_tx_ts = ntohl(rtph->timestamp); + bool insync = (current_tx_ts - prev_timestamp) == (current_seq - prev_seq)*SAMPLES_PER_PKT; + return !insync || rtph->marker; +} + int32_t calc_rel_transmit_time(uint32_t tx_0, uint32_t tx_f, uint32_t rx_0, uint32_t rx_f, bool tx_is_samples, bool pre) { int32_t rxdiff, txdiff, res; @@ -216,7 +227,7 @@ /* If pkt->marker -> init of talkspurt, there may be missing packets before, * better to start calculating the jitter from here */ - if (postqueue_started && !rtph->marker) { + if (postqueue_started && !pkt_is_syncpoint(msg, postqueue_prev.seq, postqueue_prev.timestamp)) { /* In random test mode we now the sender time, so we get real * jitter results using it */ if(opt_test_rand) { @@ -244,6 +255,7 @@ } postqueue_prev = pinfo->postqueue; + postqueue_prev.seq = htons(rtph->sequence); pkt_add_result(msg, false); @@ -269,7 +281,7 @@ /* If pkt->marker -> init of talkspurt, there may be missing packets before, * better to start calculating the jitter from here */ - if (prequeue_started && !rtph->marker) { + if (prequeue_started && !pkt_is_syncpoint(msg, prequeue_prev.seq, prequeue_prev.timestamp)) { /* In random test mode we now the sender time, so we get real * jitter results using it */ if(opt_test_rand) { @@ -297,6 +309,7 @@ } prequeue_prev = pinfo->prequeue; + prequeue_prev.seq = htons(rtph->sequence); int n = osmo_jibuf_enqueue(jb, msg); -- To view, visit https://gerrit.osmocom.org/7779 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I33556b33d7549654442d9bdd7f31128792506652 Gerrit-PatchSet: 1 Gerrit-Project: libosmo-netif Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol From gerrit-no-reply at lists.osmocom.org Thu Apr 12 13:33:07 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Thu, 12 Apr 2018 13:33:07 +0000 Subject: [PATCH] libosmo-netif[master]: tests: jibuf_tool: Add seq.plt Message-ID: Review at https://gerrit.osmocom.org/7780 tests: jibuf_tool: Add seq.plt Change-Id: I37bb3ab372b7ad7c3c1d09c8134827c932bf8bf8 --- A tests/jibuf/seq.plt 1 file changed, 50 insertions(+), 0 deletions(-) git pull ssh://gerrit.osmocom.org:29418/libosmo-netif refs/changes/80/7780/1 diff --git a/tests/jibuf/seq.plt b/tests/jibuf/seq.plt new file mode 100644 index 0000000..dda8ad0 --- /dev/null +++ b/tests/jibuf/seq.plt @@ -0,0 +1,50 @@ +#set terminal png size 1280,1024 enhanced font "Helvetica,20" +#set output 'output.png' +#set terminal qt +#set output + +set datafile separator "\t" +set datafile missing '0' + +#set multiplot + +# key/legend +set key top right +set key box +set key left bottom +set key bmargin + + +set title 'Jitter Graph' +set xlabel 'Timestamp' +set ylabel 'Seq' +set ytics nomirror + +#set y2label 'delay [ms]' +#set y2tics nomirror + +# For pcap based input, 'pre.delay' makes no sense (it's 0) as we can't know tx_delay +pcap = 1 +if (pcap) { + plot \ + '/tmp/bla' using 3:1 with linespoints title 'pre.trans' axes x1y1, \ + '/tmp/bla' using 4:1 with linespoints title 'post.trans' axes x1y1, \ + '/tmp/bla' using 3:7 with linespoints title 'pre.jitter' axes x1y1, \ + '/tmp/bla' using 4:8 with linespoints title 'post.jitter' axes x1y1, \ + '/tmp/bla' using 3:10 with linespoints title 'pre.buffer' axes x1y1, \ + '/tmp/bla' using 4:((column(4)-column(3))) with linespoints title 'post.delay' axes x1y1 + +} else { + plot \ + '/tmp/bla' using 3:5 with linespoints title 'pre.trans' axes x1y1, \ + '/tmp/bla' using 4:6 with linespoints title 'post.trans' axes x1y1, \ + '/tmp/bla' using 3:7 with linespoints title 'pre.jitter' axes x1y1, \ + '/tmp/bla' using 4:8 with linespoints title 'post.jitter' axes x1y1, \ + '/tmp/bla' using 3:9 with linespoints title 'pre.dropped' axes x1y1, \ + '/tmp/bla' using 3:10 with linespoints title 'pre.buffer' axes x1y1, \ + '/tmp/bla' using 3:11 with linespoints title 'pre.skew' axes x1y1, \ + '/tmp/bla' using 3:((column(3)-column(2))) with linespoints title 'pre.delay' axes x1y1, \ + '/tmp/bla' using 4:((column(4)-column(2))) with linespoints title 'post.delay' axes x1y1 +} + +pause mouse close; exit -- To view, visit https://gerrit.osmocom.org/7780 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I37bb3ab372b7ad7c3c1d09c8134827c932bf8bf8 Gerrit-PatchSet: 1 Gerrit-Project: libosmo-netif Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol From gerrit-no-reply at lists.osmocom.org Thu Apr 12 13:33:07 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Thu, 12 Apr 2018 13:33:07 +0000 Subject: [PATCH] libosmo-netif[master]: jibuf: Estimate src clock skew Message-ID: Review at https://gerrit.osmocom.org/7781 jibuf: Estimate src clock skew Change-Id: Ifae633d53107417a8e2f9b0f200d2711db72d199 --- M include/osmocom/netif/jibuf.h M src/jibuf.c M tests/jibuf/jibuf_test.c M tests/jibuf/jibuf_test.ok M tests/jibuf/jibuf_tool.c M tests/jibuf/jitter.plt 6 files changed, 1,005 insertions(+), 13 deletions(-) git pull ssh://gerrit.osmocom.org:29418/libosmo-netif refs/changes/81/7781/1 diff --git a/include/osmocom/netif/jibuf.h b/include/osmocom/netif/jibuf.h index aca319a..64f0824 100644 --- a/include/osmocom/netif/jibuf.h +++ b/include/osmocom/netif/jibuf.h @@ -41,6 +41,9 @@ struct timeval last_enqueue_time; struct timeval next_dequeue_time; + bool skew_enabled; + int32_t skew_us; /* src clock skew, in usec */ + struct { uint32_t total_enqueued; uint64_t total_dropped; @@ -59,6 +62,8 @@ void osmo_jibuf_set_min_delay(struct jibuf *jb, uint32_t min_delay); void osmo_jibuf_set_max_delay(struct jibuf *jb, uint32_t max_delay); +void osmo_jibuf_enable_skew_compensation(struct jibuf *jb, bool enable); + void osmo_jibuf_set_dequeue_cb(struct jibuf *jb, osmo_jibuf_dequeue_cb dequeue_cb, void* cb_data); /*! @} */ diff --git a/src/jibuf.c b/src/jibuf.c index 5d568e1..73da04a 100644 --- a/src/jibuf.c +++ b/src/jibuf.c @@ -56,6 +56,9 @@ #define JIBUF_BUFFER_INC_STEP 20 #define JIBUF_BUFFER_DEC_STEP 5 +/* weight of each new packet in calculation of clock skew */ +#define JIBUF_SKEW_WEIGHT ((double)1/32) + struct jibuf_msgb_cb { struct timeval ts; unsigned long *old_cb; @@ -175,6 +178,7 @@ jb->ref_rx_ts = timeval2ms(&jb->last_enqueue_time); jb->ref_tx_ts = msg_get_timestamp(msg); jb->ref_tx_seq = msg_get_sequence(msg); + jb->skew_us = 0; LOGP(DLJIBUF, LOGL_DEBUG, "New reference (seq=%"PRIu16" rx=%"PRIu32 \ " tx=%"PRIu32")\n", jb->ref_tx_seq, jb->ref_rx_ts, jb->ref_tx_ts); @@ -213,6 +217,14 @@ /* XXX: maybe try to tune the threshold based on the calculated output jitter? */ /* XXX: try to find holes in the list and create fake pkts to improve the jitter when packets do not arrive on time */ +} + +static void recalc_clock_skew(struct jibuf *jb, int32_t rel_delay) +{ + if(!jb->skew_enabled) + return; + + jb->skew_us = (int32_t) (rel_delay * 1000 * JIBUF_SKEW_WEIGHT + jb->skew_us * (1.0 - JIBUF_SKEW_WEIGHT)); } static void recalc_threshold_delay(struct jibuf *jb) @@ -309,6 +321,7 @@ rel_delay = 0; } else { rel_delay = calc_pkt_rel_delay(jb, msg); + recalc_clock_skew(jb, rel_delay); } /* Avoid time skew with sender (or drop-everything state), @@ -316,7 +329,7 @@ //if ((int)(msg_get_sequence(msg) - jb->ref_tx_seq) > JIBUF_REFERENCE_TS_FREQ) // msg_set_as_reference(jb, msg); - delay = jb->threshold_delay + rel_delay; + delay = jb->threshold_delay + rel_delay - jb->skew_us/1000; /* packet too late, let's drop it and incr buffer size if encouraged */ if (delay < 0) { @@ -338,8 +351,8 @@ timeradd(&jb->last_enqueue_time, &delay_ts, &sched_ts); LOGP(DLJIBUF, LOGL_DEBUG, "enqueuing packet seq=%"PRIu16" rel=%d delay=%d" \ - " thres=%d {%lu.%06lu -> %lu.%06lu} %s\n", - msg_get_sequence(msg), rel_delay, delay, jb->threshold_delay, + " skew=%d thres=%d {%lu.%06lu -> %lu.%06lu} %s\n", + msg_get_sequence(msg), rel_delay, delay, jb->skew_us, jb->threshold_delay, jb->last_enqueue_time.tv_sec, jb->last_enqueue_time.tv_usec, sched_ts.tv_sec, sched_ts.tv_usec, msg_get_marker(msg)? "M" : ""); @@ -394,6 +407,18 @@ jb->threshold_delay = OSMO_MIN(jb->max_delay, jb->threshold_delay); } +/*! \brief Toggle use of skew detection and compensation mechanism + * \param[in] jb jitter buffer instance + * \param[in] enable Whether to enable or not (default) the skew estimation and compensation mechanism + * + * When this function is called, the estimated skew is reset. + */ +void osmo_jibuf_enable_skew_compensation(struct jibuf *jb, bool enable) +{ + jb->skew_enabled = enable; + jb->skew_us = 0; +} + /*! \brief Set dequeue callback for the jitter buffer * \param[in] jb jitter buffer instance * \param[in] dequeue_cb function pointer to call back when the dequeue timer for a given packet expires diff --git a/tests/jibuf/jibuf_test.c b/tests/jibuf/jibuf_test.c index a9a7ff0..5b5ebad 100644 --- a/tests/jibuf/jibuf_test.c +++ b/tests/jibuf/jibuf_test.c @@ -123,13 +123,14 @@ clock_debug("clock_override_set"); } -static void clock_override_add(long sec, long usec) +static void clock_override_add_debug(long sec, long usec, bool dbg) { osmo_gettimeofday_override_add(sec, usec); osmo_clock_override_add(CLOCK_MONOTONIC, sec, usec*1000); - clock_debug("clock_override_add"); + if (dbg) + clock_debug("clock_override_add"); } - +#define clock_override_add(sec, usec) clock_override_add_debug(sec, usec, true) static void dequeue_cb(struct msgb *msg, void *data) { @@ -680,6 +681,48 @@ osmo_jibuf_delete(jb); } + +void test_skew(unsigned int skew_inc_us, bool skew_compensation) { + int min_delay = 40; + unsigned int dropped = 0; + struct msgb *msg; + int i; + char buf[250]; + + printf("===test_skew(%u, %d)===\n", skew_inc_us, skew_compensation); + + clock_override_enable(true); + clock_override_set(0, 0); + rtp_init(32, 400); + jb = osmo_jibuf_alloc(NULL); + osmo_jibuf_set_dequeue_cb(jb, dequeue_cb, NULL); + osmo_jibuf_set_min_delay(jb, min_delay); + /*set buffer static, otherwise will grow with drops and enqueue some more packets: */ + osmo_jibuf_set_max_delay(jb, min_delay); + osmo_jibuf_enable_skew_compensation(jb, skew_compensation); + + /* If no skew compensation is used, jitterbuffer should start dropping + * packets (all too late) after around min_delay*1000/skew_inc_us packets. */ + for (i = 0; iskew_us); + } else { + OSMO_ASSERT(dropped); + OSMO_ASSERT(!jb->skew_us); + } +} + int main(int argc, char **argv) { @@ -708,6 +751,8 @@ test_rtp_out_of_sync(80*TIME_RTP_PKT_MS, 5, 5*SAMPLES_PER_PKT, true); test_rtp_out_of_sync(80*TIME_RTP_PKT_MS, 6, 5*SAMPLES_PER_PKT, false); test_rtp_out_of_sync(80*TIME_RTP_PKT_MS, 5, 5*SAMPLES_PER_PKT + 3, false); + test_skew(100, false); + test_skew(100, true); fprintf(stdout, "OK: Test passed\n"); return EXIT_SUCCESS; diff --git a/tests/jibuf/jibuf_test.ok b/tests/jibuf/jibuf_test.ok index a152d24..e495435 100644 --- a/tests/jibuf/jibuf_test.ok +++ b/tests/jibuf/jibuf_test.ok @@ -409,4 +409,908 @@ sys={1.700000}, mono={1.700000}: clock_override_add sys={1.700000}, mono={1.700000}: dequeue: seq=39 ts=1523 INTERMEDIATE sys={1.700000}, mono={1.700000}: dequeue: seq=40 ts=1683 LATEST +===test_skew(100, 0)=== +sys={0.000000}, mono={0.000000}: clock_override_set +sys={0.000000}, mono={0.000000}: enqueue packet 0 (accum_skew_us = 0) +sys={0.020100}, mono={0.020100}: enqueue packet 1 (accum_skew_us = 100) +sys={0.040200}, mono={0.040200}: enqueue packet 2 (accum_skew_us = 200) +sys={0.060300}, mono={0.060300}: enqueue packet 3 (accum_skew_us = 300) +sys={0.080400}, mono={0.080400}: enqueue packet 4 (accum_skew_us = 400) +sys={0.100500}, mono={0.100500}: enqueue packet 5 (accum_skew_us = 500) +sys={0.120600}, mono={0.120600}: enqueue packet 6 (accum_skew_us = 600) +sys={0.140700}, mono={0.140700}: enqueue packet 7 (accum_skew_us = 700) +sys={0.160800}, mono={0.160800}: enqueue packet 8 (accum_skew_us = 800) +sys={0.180900}, mono={0.180900}: enqueue packet 9 (accum_skew_us = 900) +sys={0.201000}, mono={0.201000}: enqueue packet 10 (accum_skew_us = 1000) +sys={0.221100}, mono={0.221100}: enqueue packet 11 (accum_skew_us = 1100) +sys={0.241200}, mono={0.241200}: enqueue packet 12 (accum_skew_us = 1200) +sys={0.261300}, mono={0.261300}: enqueue packet 13 (accum_skew_us = 1300) +sys={0.281400}, mono={0.281400}: enqueue packet 14 (accum_skew_us = 1400) +sys={0.301500}, mono={0.301500}: enqueue packet 15 (accum_skew_us = 1500) +sys={0.321600}, mono={0.321600}: enqueue packet 16 (accum_skew_us = 1600) +sys={0.341700}, mono={0.341700}: enqueue packet 17 (accum_skew_us = 1700) +sys={0.361800}, mono={0.361800}: enqueue packet 18 (accum_skew_us = 1800) +sys={0.381900}, mono={0.381900}: enqueue packet 19 (accum_skew_us = 1900) +sys={0.402000}, mono={0.402000}: enqueue packet 20 (accum_skew_us = 2000) +sys={0.422100}, mono={0.422100}: enqueue packet 21 (accum_skew_us = 2100) +sys={0.442200}, mono={0.442200}: enqueue packet 22 (accum_skew_us = 2200) +sys={0.462300}, mono={0.462300}: enqueue packet 23 (accum_skew_us = 2300) +sys={0.482400}, mono={0.482400}: enqueue packet 24 (accum_skew_us = 2400) +sys={0.502500}, mono={0.502500}: enqueue packet 25 (accum_skew_us = 2500) +sys={0.522600}, mono={0.522600}: enqueue packet 26 (accum_skew_us = 2600) +sys={0.542700}, mono={0.542700}: enqueue packet 27 (accum_skew_us = 2700) +sys={0.562800}, mono={0.562800}: enqueue packet 28 (accum_skew_us = 2800) +sys={0.582900}, mono={0.582900}: enqueue packet 29 (accum_skew_us = 2900) +sys={0.603000}, mono={0.603000}: enqueue packet 30 (accum_skew_us = 3000) +sys={0.623100}, mono={0.623100}: enqueue packet 31 (accum_skew_us = 3100) +sys={0.643200}, mono={0.643200}: enqueue packet 32 (accum_skew_us = 3200) +sys={0.663300}, mono={0.663300}: enqueue packet 33 (accum_skew_us = 3300) +sys={0.683400}, mono={0.683400}: enqueue packet 34 (accum_skew_us = 3400) +sys={0.703500}, mono={0.703500}: enqueue packet 35 (accum_skew_us = 3500) +sys={0.723600}, mono={0.723600}: enqueue packet 36 (accum_skew_us = 3600) +sys={0.743700}, mono={0.743700}: enqueue packet 37 (accum_skew_us = 3700) +sys={0.763800}, mono={0.763800}: enqueue packet 38 (accum_skew_us = 3800) +sys={0.783900}, mono={0.783900}: enqueue packet 39 (accum_skew_us = 3900) +sys={0.804000}, mono={0.804000}: enqueue packet 40 (accum_skew_us = 4000) +sys={0.824100}, mono={0.824100}: enqueue packet 41 (accum_skew_us = 4100) +sys={0.844200}, mono={0.844200}: enqueue packet 42 (accum_skew_us = 4200) +sys={0.864300}, mono={0.864300}: enqueue packet 43 (accum_skew_us = 4300) +sys={0.884400}, mono={0.884400}: enqueue packet 44 (accum_skew_us = 4400) +sys={0.904500}, mono={0.904500}: enqueue packet 45 (accum_skew_us = 4500) +sys={0.924600}, mono={0.924600}: enqueue packet 46 (accum_skew_us = 4600) +sys={0.944700}, mono={0.944700}: enqueue packet 47 (accum_skew_us = 4700) +sys={0.964800}, mono={0.964800}: enqueue packet 48 (accum_skew_us = 4800) +sys={0.984900}, mono={0.984900}: enqueue packet 49 (accum_skew_us = 4900) +sys={1.005000}, mono={1.005000}: enqueue packet 50 (accum_skew_us = 5000) +sys={1.025100}, mono={1.025100}: enqueue packet 51 (accum_skew_us = 5100) +sys={1.045200}, mono={1.045200}: enqueue packet 52 (accum_skew_us = 5200) +sys={1.065300}, mono={1.065300}: enqueue packet 53 (accum_skew_us = 5300) +sys={1.085400}, mono={1.085400}: enqueue packet 54 (accum_skew_us = 5400) +sys={1.105500}, mono={1.105500}: enqueue packet 55 (accum_skew_us = 5500) +sys={1.125600}, mono={1.125600}: enqueue packet 56 (accum_skew_us = 5600) +sys={1.145700}, mono={1.145700}: enqueue packet 57 (accum_skew_us = 5700) +sys={1.165800}, mono={1.165800}: enqueue packet 58 (accum_skew_us = 5800) +sys={1.185900}, mono={1.185900}: enqueue packet 59 (accum_skew_us = 5900) +sys={1.206000}, mono={1.206000}: enqueue packet 60 (accum_skew_us = 6000) +sys={1.226100}, mono={1.226100}: enqueue packet 61 (accum_skew_us = 6100) +sys={1.246200}, mono={1.246200}: enqueue packet 62 (accum_skew_us = 6200) +sys={1.266300}, mono={1.266300}: enqueue packet 63 (accum_skew_us = 6300) +sys={1.286400}, mono={1.286400}: enqueue packet 64 (accum_skew_us = 6400) +sys={1.306500}, mono={1.306500}: enqueue packet 65 (accum_skew_us = 6500) +sys={1.326600}, mono={1.326600}: enqueue packet 66 (accum_skew_us = 6600) +sys={1.346700}, mono={1.346700}: enqueue packet 67 (accum_skew_us = 6700) +sys={1.366800}, mono={1.366800}: enqueue packet 68 (accum_skew_us = 6800) +sys={1.386900}, mono={1.386900}: enqueue packet 69 (accum_skew_us = 6900) +sys={1.407000}, mono={1.407000}: enqueue packet 70 (accum_skew_us = 7000) +sys={1.427100}, mono={1.427100}: enqueue packet 71 (accum_skew_us = 7100) +sys={1.447200}, mono={1.447200}: enqueue packet 72 (accum_skew_us = 7200) +sys={1.467300}, mono={1.467300}: enqueue packet 73 (accum_skew_us = 7300) +sys={1.487400}, mono={1.487400}: enqueue packet 74 (accum_skew_us = 7400) +sys={1.507500}, mono={1.507500}: enqueue packet 75 (accum_skew_us = 7500) +sys={1.527600}, mono={1.527600}: enqueue packet 76 (accum_skew_us = 7600) +sys={1.547700}, mono={1.547700}: enqueue packet 77 (accum_skew_us = 7700) +sys={1.567800}, mono={1.567800}: enqueue packet 78 (accum_skew_us = 7800) +sys={1.587900}, mono={1.587900}: enqueue packet 79 (accum_skew_us = 7900) +sys={1.608000}, mono={1.608000}: enqueue packet 80 (accum_skew_us = 8000) +sys={1.628100}, mono={1.628100}: enqueue packet 81 (accum_skew_us = 8100) +sys={1.648200}, mono={1.648200}: enqueue packet 82 (accum_skew_us = 8200) +sys={1.668300}, mono={1.668300}: enqueue packet 83 (accum_skew_us = 8300) +sys={1.688400}, mono={1.688400}: enqueue packet 84 (accum_skew_us = 8400) +sys={1.708500}, mono={1.708500}: enqueue packet 85 (accum_skew_us = 8500) +sys={1.728600}, mono={1.728600}: enqueue packet 86 (accum_skew_us = 8600) +sys={1.748700}, mono={1.748700}: enqueue packet 87 (accum_skew_us = 8700) +sys={1.768800}, mono={1.768800}: enqueue packet 88 (accum_skew_us = 8800) +sys={1.788900}, mono={1.788900}: enqueue packet 89 (accum_skew_us = 8900) +sys={1.809000}, mono={1.809000}: enqueue packet 90 (accum_skew_us = 9000) +sys={1.829100}, mono={1.829100}: enqueue packet 91 (accum_skew_us = 9100) +sys={1.849200}, mono={1.849200}: enqueue packet 92 (accum_skew_us = 9200) +sys={1.869300}, mono={1.869300}: enqueue packet 93 (accum_skew_us = 9300) +sys={1.889400}, mono={1.889400}: enqueue packet 94 (accum_skew_us = 9400) +sys={1.909500}, mono={1.909500}: enqueue packet 95 (accum_skew_us = 9500) +sys={1.929600}, mono={1.929600}: enqueue packet 96 (accum_skew_us = 9600) +sys={1.949700}, mono={1.949700}: enqueue packet 97 (accum_skew_us = 9700) +sys={1.969800}, mono={1.969800}: enqueue packet 98 (accum_skew_us = 9800) +sys={1.989900}, mono={1.989900}: enqueue packet 99 (accum_skew_us = 9900) +sys={2.010000}, mono={2.010000}: enqueue packet 100 (accum_skew_us = 10000) +sys={2.030100}, mono={2.030100}: enqueue packet 101 (accum_skew_us = 10100) +sys={2.050200}, mono={2.050200}: enqueue packet 102 (accum_skew_us = 10200) +sys={2.070300}, mono={2.070300}: enqueue packet 103 (accum_skew_us = 10300) +sys={2.090400}, mono={2.090400}: enqueue packet 104 (accum_skew_us = 10400) +sys={2.110500}, mono={2.110500}: enqueue packet 105 (accum_skew_us = 10500) +sys={2.130600}, mono={2.130600}: enqueue packet 106 (accum_skew_us = 10600) +sys={2.150700}, mono={2.150700}: enqueue packet 107 (accum_skew_us = 10700) +sys={2.170800}, mono={2.170800}: enqueue packet 108 (accum_skew_us = 10800) +sys={2.190900}, mono={2.190900}: enqueue packet 109 (accum_skew_us = 10900) +sys={2.211000}, mono={2.211000}: enqueue packet 110 (accum_skew_us = 11000) +sys={2.231100}, mono={2.231100}: enqueue packet 111 (accum_skew_us = 11100) +sys={2.251200}, mono={2.251200}: enqueue packet 112 (accum_skew_us = 11200) +sys={2.271300}, mono={2.271300}: enqueue packet 113 (accum_skew_us = 11300) +sys={2.291400}, mono={2.291400}: enqueue packet 114 (accum_skew_us = 11400) +sys={2.311500}, mono={2.311500}: enqueue packet 115 (accum_skew_us = 11500) +sys={2.331600}, mono={2.331600}: enqueue packet 116 (accum_skew_us = 11600) +sys={2.351700}, mono={2.351700}: enqueue packet 117 (accum_skew_us = 11700) +sys={2.371800}, mono={2.371800}: enqueue packet 118 (accum_skew_us = 11800) +sys={2.391900}, mono={2.391900}: enqueue packet 119 (accum_skew_us = 11900) +sys={2.412000}, mono={2.412000}: enqueue packet 120 (accum_skew_us = 12000) +sys={2.432100}, mono={2.432100}: enqueue packet 121 (accum_skew_us = 12100) +sys={2.452200}, mono={2.452200}: enqueue packet 122 (accum_skew_us = 12200) +sys={2.472300}, mono={2.472300}: enqueue packet 123 (accum_skew_us = 12300) +sys={2.492400}, mono={2.492400}: enqueue packet 124 (accum_skew_us = 12400) +sys={2.512500}, mono={2.512500}: enqueue packet 125 (accum_skew_us = 12500) +sys={2.532600}, mono={2.532600}: enqueue packet 126 (accum_skew_us = 12600) +sys={2.552700}, mono={2.552700}: enqueue packet 127 (accum_skew_us = 12700) +sys={2.572800}, mono={2.572800}: enqueue packet 128 (accum_skew_us = 12800) +sys={2.592900}, mono={2.592900}: enqueue packet 129 (accum_skew_us = 12900) +sys={2.613000}, mono={2.613000}: enqueue packet 130 (accum_skew_us = 13000) +sys={2.633100}, mono={2.633100}: enqueue packet 131 (accum_skew_us = 13100) +sys={2.653200}, mono={2.653200}: enqueue packet 132 (accum_skew_us = 13200) +sys={2.673300}, mono={2.673300}: enqueue packet 133 (accum_skew_us = 13300) +sys={2.693400}, mono={2.693400}: enqueue packet 134 (accum_skew_us = 13400) +sys={2.713500}, mono={2.713500}: enqueue packet 135 (accum_skew_us = 13500) +sys={2.733600}, mono={2.733600}: enqueue packet 136 (accum_skew_us = 13600) +sys={2.753700}, mono={2.753700}: enqueue packet 137 (accum_skew_us = 13700) +sys={2.773800}, mono={2.773800}: enqueue packet 138 (accum_skew_us = 13800) +sys={2.793900}, mono={2.793900}: enqueue packet 139 (accum_skew_us = 13900) +sys={2.814000}, mono={2.814000}: enqueue packet 140 (accum_skew_us = 14000) +sys={2.834100}, mono={2.834100}: enqueue packet 141 (accum_skew_us = 14100) +sys={2.854200}, mono={2.854200}: enqueue packet 142 (accum_skew_us = 14200) +sys={2.874300}, mono={2.874300}: enqueue packet 143 (accum_skew_us = 14300) +sys={2.894400}, mono={2.894400}: enqueue packet 144 (accum_skew_us = 14400) +sys={2.914500}, mono={2.914500}: enqueue packet 145 (accum_skew_us = 14500) +sys={2.934600}, mono={2.934600}: enqueue packet 146 (accum_skew_us = 14600) +sys={2.954700}, mono={2.954700}: enqueue packet 147 (accum_skew_us = 14700) +sys={2.974800}, mono={2.974800}: enqueue packet 148 (accum_skew_us = 14800) +sys={2.994900}, mono={2.994900}: enqueue packet 149 (accum_skew_us = 14900) +sys={3.015000}, mono={3.015000}: enqueue packet 150 (accum_skew_us = 15000) +sys={3.035100}, mono={3.035100}: enqueue packet 151 (accum_skew_us = 15100) +sys={3.055200}, mono={3.055200}: enqueue packet 152 (accum_skew_us = 15200) +sys={3.075300}, mono={3.075300}: enqueue packet 153 (accum_skew_us = 15300) +sys={3.095400}, mono={3.095400}: enqueue packet 154 (accum_skew_us = 15400) +sys={3.115500}, mono={3.115500}: enqueue packet 155 (accum_skew_us = 15500) +sys={3.135600}, mono={3.135600}: enqueue packet 156 (accum_skew_us = 15600) +sys={3.155700}, mono={3.155700}: enqueue packet 157 (accum_skew_us = 15700) +sys={3.175800}, mono={3.175800}: enqueue packet 158 (accum_skew_us = 15800) +sys={3.195900}, mono={3.195900}: enqueue packet 159 (accum_skew_us = 15900) +sys={3.216000}, mono={3.216000}: enqueue packet 160 (accum_skew_us = 16000) +sys={3.236100}, mono={3.236100}: enqueue packet 161 (accum_skew_us = 16100) +sys={3.256200}, mono={3.256200}: enqueue packet 162 (accum_skew_us = 16200) +sys={3.276300}, mono={3.276300}: enqueue packet 163 (accum_skew_us = 16300) +sys={3.296400}, mono={3.296400}: enqueue packet 164 (accum_skew_us = 16400) +sys={3.316500}, mono={3.316500}: enqueue packet 165 (accum_skew_us = 16500) +sys={3.336600}, mono={3.336600}: enqueue packet 166 (accum_skew_us = 16600) +sys={3.356700}, mono={3.356700}: enqueue packet 167 (accum_skew_us = 16700) +sys={3.376800}, mono={3.376800}: enqueue packet 168 (accum_skew_us = 16800) +sys={3.396900}, mono={3.396900}: enqueue packet 169 (accum_skew_us = 16900) +sys={3.417000}, mono={3.417000}: enqueue packet 170 (accum_skew_us = 17000) +sys={3.437100}, mono={3.437100}: enqueue packet 171 (accum_skew_us = 17100) +sys={3.457200}, mono={3.457200}: enqueue packet 172 (accum_skew_us = 17200) +sys={3.477300}, mono={3.477300}: enqueue packet 173 (accum_skew_us = 17300) +sys={3.497400}, mono={3.497400}: enqueue packet 174 (accum_skew_us = 17400) +sys={3.517500}, mono={3.517500}: enqueue packet 175 (accum_skew_us = 17500) +sys={3.537600}, mono={3.537600}: enqueue packet 176 (accum_skew_us = 17600) +sys={3.557700}, mono={3.557700}: enqueue packet 177 (accum_skew_us = 17700) +sys={3.577800}, mono={3.577800}: enqueue packet 178 (accum_skew_us = 17800) +sys={3.597900}, mono={3.597900}: enqueue packet 179 (accum_skew_us = 17900) +sys={3.618000}, mono={3.618000}: enqueue packet 180 (accum_skew_us = 18000) +sys={3.638100}, mono={3.638100}: enqueue packet 181 (accum_skew_us = 18100) +sys={3.658200}, mono={3.658200}: enqueue packet 182 (accum_skew_us = 18200) +sys={3.678300}, mono={3.678300}: enqueue packet 183 (accum_skew_us = 18300) +sys={3.698400}, mono={3.698400}: enqueue packet 184 (accum_skew_us = 18400) +sys={3.718500}, mono={3.718500}: enqueue packet 185 (accum_skew_us = 18500) +sys={3.738600}, mono={3.738600}: enqueue packet 186 (accum_skew_us = 18600) +sys={3.758700}, mono={3.758700}: enqueue packet 187 (accum_skew_us = 18700) +sys={3.778800}, mono={3.778800}: enqueue packet 188 (accum_skew_us = 18800) +sys={3.798900}, mono={3.798900}: enqueue packet 189 (accum_skew_us = 18900) +sys={3.819000}, mono={3.819000}: enqueue packet 190 (accum_skew_us = 19000) +sys={3.839100}, mono={3.839100}: enqueue packet 191 (accum_skew_us = 19100) +sys={3.859200}, mono={3.859200}: enqueue packet 192 (accum_skew_us = 19200) +sys={3.879300}, mono={3.879300}: enqueue packet 193 (accum_skew_us = 19300) +sys={3.899400}, mono={3.899400}: enqueue packet 194 (accum_skew_us = 19400) +sys={3.919500}, mono={3.919500}: enqueue packet 195 (accum_skew_us = 19500) +sys={3.939600}, mono={3.939600}: enqueue packet 196 (accum_skew_us = 19600) +sys={3.959700}, mono={3.959700}: enqueue packet 197 (accum_skew_us = 19700) +sys={3.979800}, mono={3.979800}: enqueue packet 198 (accum_skew_us = 19800) +sys={3.999900}, mono={3.999900}: enqueue packet 199 (accum_skew_us = 19900) +sys={4.020000}, mono={4.020000}: enqueue packet 200 (accum_skew_us = 20000) +sys={4.040100}, mono={4.040100}: enqueue packet 201 (accum_skew_us = 20100) +sys={4.060200}, mono={4.060200}: enqueue packet 202 (accum_skew_us = 20200) +sys={4.080300}, mono={4.080300}: enqueue packet 203 (accum_skew_us = 20300) +sys={4.100400}, mono={4.100400}: enqueue packet 204 (accum_skew_us = 20400) +sys={4.120500}, mono={4.120500}: enqueue packet 205 (accum_skew_us = 20500) +sys={4.140600}, mono={4.140600}: enqueue packet 206 (accum_skew_us = 20600) +sys={4.160700}, mono={4.160700}: enqueue packet 207 (accum_skew_us = 20700) +sys={4.180800}, mono={4.180800}: enqueue packet 208 (accum_skew_us = 20800) +sys={4.200900}, mono={4.200900}: enqueue packet 209 (accum_skew_us = 20900) +sys={4.221000}, mono={4.221000}: enqueue packet 210 (accum_skew_us = 21000) +sys={4.241100}, mono={4.241100}: enqueue packet 211 (accum_skew_us = 21100) +sys={4.261200}, mono={4.261200}: enqueue packet 212 (accum_skew_us = 21200) +sys={4.281300}, mono={4.281300}: enqueue packet 213 (accum_skew_us = 21300) +sys={4.301400}, mono={4.301400}: enqueue packet 214 (accum_skew_us = 21400) +sys={4.321500}, mono={4.321500}: enqueue packet 215 (accum_skew_us = 21500) +sys={4.341600}, mono={4.341600}: enqueue packet 216 (accum_skew_us = 21600) +sys={4.361700}, mono={4.361700}: enqueue packet 217 (accum_skew_us = 21700) +sys={4.381800}, mono={4.381800}: enqueue packet 218 (accum_skew_us = 21800) +sys={4.401900}, mono={4.401900}: enqueue packet 219 (accum_skew_us = 21900) +sys={4.422000}, mono={4.422000}: enqueue packet 220 (accum_skew_us = 22000) +sys={4.442100}, mono={4.442100}: enqueue packet 221 (accum_skew_us = 22100) +sys={4.462200}, mono={4.462200}: enqueue packet 222 (accum_skew_us = 22200) +sys={4.482300}, mono={4.482300}: enqueue packet 223 (accum_skew_us = 22300) +sys={4.502400}, mono={4.502400}: enqueue packet 224 (accum_skew_us = 22400) +sys={4.522500}, mono={4.522500}: enqueue packet 225 (accum_skew_us = 22500) +sys={4.542600}, mono={4.542600}: enqueue packet 226 (accum_skew_us = 22600) +sys={4.562700}, mono={4.562700}: enqueue packet 227 (accum_skew_us = 22700) +sys={4.582800}, mono={4.582800}: enqueue packet 228 (accum_skew_us = 22800) +sys={4.602900}, mono={4.602900}: enqueue packet 229 (accum_skew_us = 22900) +sys={4.623000}, mono={4.623000}: enqueue packet 230 (accum_skew_us = 23000) +sys={4.643100}, mono={4.643100}: enqueue packet 231 (accum_skew_us = 23100) +sys={4.663200}, mono={4.663200}: enqueue packet 232 (accum_skew_us = 23200) +sys={4.683300}, mono={4.683300}: enqueue packet 233 (accum_skew_us = 23300) +sys={4.703400}, mono={4.703400}: enqueue packet 234 (accum_skew_us = 23400) +sys={4.723500}, mono={4.723500}: enqueue packet 235 (accum_skew_us = 23500) +sys={4.743600}, mono={4.743600}: enqueue packet 236 (accum_skew_us = 23600) +sys={4.763700}, mono={4.763700}: enqueue packet 237 (accum_skew_us = 23700) +sys={4.783800}, mono={4.783800}: enqueue packet 238 (accum_skew_us = 23800) +sys={4.803900}, mono={4.803900}: enqueue packet 239 (accum_skew_us = 23900) +sys={4.824000}, mono={4.824000}: enqueue packet 240 (accum_skew_us = 24000) +sys={4.844100}, mono={4.844100}: enqueue packet 241 (accum_skew_us = 24100) +sys={4.864200}, mono={4.864200}: enqueue packet 242 (accum_skew_us = 24200) +sys={4.884300}, mono={4.884300}: enqueue packet 243 (accum_skew_us = 24300) +sys={4.904400}, mono={4.904400}: enqueue packet 244 (accum_skew_us = 24400) +sys={4.924500}, mono={4.924500}: enqueue packet 245 (accum_skew_us = 24500) +sys={4.944600}, mono={4.944600}: enqueue packet 246 (accum_skew_us = 24600) +sys={4.964700}, mono={4.964700}: enqueue packet 247 (accum_skew_us = 24700) +sys={4.984800}, mono={4.984800}: enqueue packet 248 (accum_skew_us = 24800) +sys={5.004900}, mono={5.004900}: enqueue packet 249 (accum_skew_us = 24900) +sys={5.025000}, mono={5.025000}: enqueue packet 250 (accum_skew_us = 25000) +sys={5.045100}, mono={5.045100}: enqueue packet 251 (accum_skew_us = 25100) +sys={5.065200}, mono={5.065200}: enqueue packet 252 (accum_skew_us = 25200) +sys={5.085300}, mono={5.085300}: enqueue packet 253 (accum_skew_us = 25300) +sys={5.105400}, mono={5.105400}: enqueue packet 254 (accum_skew_us = 25400) +sys={5.125500}, mono={5.125500}: enqueue packet 255 (accum_skew_us = 25500) +sys={5.145600}, mono={5.145600}: enqueue packet 256 (accum_skew_us = 25600) +sys={5.165700}, mono={5.165700}: enqueue packet 257 (accum_skew_us = 25700) +sys={5.185800}, mono={5.185800}: enqueue packet 258 (accum_skew_us = 25800) +sys={5.205900}, mono={5.205900}: enqueue packet 259 (accum_skew_us = 25900) +sys={5.226000}, mono={5.226000}: enqueue packet 260 (accum_skew_us = 26000) +sys={5.246100}, mono={5.246100}: enqueue packet 261 (accum_skew_us = 26100) +sys={5.266200}, mono={5.266200}: enqueue packet 262 (accum_skew_us = 26200) +sys={5.286300}, mono={5.286300}: enqueue packet 263 (accum_skew_us = 26300) +sys={5.306400}, mono={5.306400}: enqueue packet 264 (accum_skew_us = 26400) +sys={5.326500}, mono={5.326500}: enqueue packet 265 (accum_skew_us = 26500) +sys={5.346600}, mono={5.346600}: enqueue packet 266 (accum_skew_us = 26600) +sys={5.366700}, mono={5.366700}: enqueue packet 267 (accum_skew_us = 26700) +sys={5.386800}, mono={5.386800}: enqueue packet 268 (accum_skew_us = 26800) +sys={5.406900}, mono={5.406900}: enqueue packet 269 (accum_skew_us = 26900) +sys={5.427000}, mono={5.427000}: enqueue packet 270 (accum_skew_us = 27000) +sys={5.447100}, mono={5.447100}: enqueue packet 271 (accum_skew_us = 27100) +sys={5.467200}, mono={5.467200}: enqueue packet 272 (accum_skew_us = 27200) +sys={5.487300}, mono={5.487300}: enqueue packet 273 (accum_skew_us = 27300) +sys={5.507400}, mono={5.507400}: enqueue packet 274 (accum_skew_us = 27400) +sys={5.527500}, mono={5.527500}: enqueue packet 275 (accum_skew_us = 27500) +sys={5.547600}, mono={5.547600}: enqueue packet 276 (accum_skew_us = 27600) +sys={5.567700}, mono={5.567700}: enqueue packet 277 (accum_skew_us = 27700) +sys={5.587800}, mono={5.587800}: enqueue packet 278 (accum_skew_us = 27800) +sys={5.607900}, mono={5.607900}: enqueue packet 279 (accum_skew_us = 27900) +sys={5.628000}, mono={5.628000}: enqueue packet 280 (accum_skew_us = 28000) +sys={5.648100}, mono={5.648100}: enqueue packet 281 (accum_skew_us = 28100) +sys={5.668200}, mono={5.668200}: enqueue packet 282 (accum_skew_us = 28200) +sys={5.688300}, mono={5.688300}: enqueue packet 283 (accum_skew_us = 28300) +sys={5.708400}, mono={5.708400}: enqueue packet 284 (accum_skew_us = 28400) +sys={5.728500}, mono={5.728500}: enqueue packet 285 (accum_skew_us = 28500) +sys={5.748600}, mono={5.748600}: enqueue packet 286 (accum_skew_us = 28600) +sys={5.768700}, mono={5.768700}: enqueue packet 287 (accum_skew_us = 28700) +sys={5.788800}, mono={5.788800}: enqueue packet 288 (accum_skew_us = 28800) +sys={5.808900}, mono={5.808900}: enqueue packet 289 (accum_skew_us = 28900) +sys={5.829000}, mono={5.829000}: enqueue packet 290 (accum_skew_us = 29000) +sys={5.849100}, mono={5.849100}: enqueue packet 291 (accum_skew_us = 29100) +sys={5.869200}, mono={5.869200}: enqueue packet 292 (accum_skew_us = 29200) +sys={5.889300}, mono={5.889300}: enqueue packet 293 (accum_skew_us = 29300) +sys={5.909400}, mono={5.909400}: enqueue packet 294 (accum_skew_us = 29400) +sys={5.929500}, mono={5.929500}: enqueue packet 295 (accum_skew_us = 29500) +sys={5.949600}, mono={5.949600}: enqueue packet 296 (accum_skew_us = 29600) +sys={5.969700}, mono={5.969700}: enqueue packet 297 (accum_skew_us = 29700) +sys={5.989800}, mono={5.989800}: enqueue packet 298 (accum_skew_us = 29800) +sys={6.009900}, mono={6.009900}: enqueue packet 299 (accum_skew_us = 29900) +sys={6.030000}, mono={6.030000}: enqueue packet 300 (accum_skew_us = 30000) +sys={6.050100}, mono={6.050100}: enqueue packet 301 (accum_skew_us = 30100) +sys={6.070200}, mono={6.070200}: enqueue packet 302 (accum_skew_us = 30200) +sys={6.090300}, mono={6.090300}: enqueue packet 303 (accum_skew_us = 30300) +sys={6.110400}, mono={6.110400}: enqueue packet 304 (accum_skew_us = 30400) +sys={6.130500}, mono={6.130500}: enqueue packet 305 (accum_skew_us = 30500) +sys={6.150600}, mono={6.150600}: enqueue packet 306 (accum_skew_us = 30600) +sys={6.170700}, mono={6.170700}: enqueue packet 307 (accum_skew_us = 30700) +sys={6.190800}, mono={6.190800}: enqueue packet 308 (accum_skew_us = 30800) +sys={6.210900}, mono={6.210900}: enqueue packet 309 (accum_skew_us = 30900) +sys={6.231000}, mono={6.231000}: enqueue packet 310 (accum_skew_us = 31000) +sys={6.251100}, mono={6.251100}: enqueue packet 311 (accum_skew_us = 31100) +sys={6.271200}, mono={6.271200}: enqueue packet 312 (accum_skew_us = 31200) +sys={6.291300}, mono={6.291300}: enqueue packet 313 (accum_skew_us = 31300) +sys={6.311400}, mono={6.311400}: enqueue packet 314 (accum_skew_us = 31400) +sys={6.331500}, mono={6.331500}: enqueue packet 315 (accum_skew_us = 31500) +sys={6.351600}, mono={6.351600}: enqueue packet 316 (accum_skew_us = 31600) +sys={6.371700}, mono={6.371700}: enqueue packet 317 (accum_skew_us = 31700) +sys={6.391800}, mono={6.391800}: enqueue packet 318 (accum_skew_us = 31800) +sys={6.411900}, mono={6.411900}: enqueue packet 319 (accum_skew_us = 31900) +sys={6.432000}, mono={6.432000}: enqueue packet 320 (accum_skew_us = 32000) +sys={6.452100}, mono={6.452100}: enqueue packet 321 (accum_skew_us = 32100) +sys={6.472200}, mono={6.472200}: enqueue packet 322 (accum_skew_us = 32200) +sys={6.492300}, mono={6.492300}: enqueue packet 323 (accum_skew_us = 32300) +sys={6.512400}, mono={6.512400}: enqueue packet 324 (accum_skew_us = 32400) +sys={6.532500}, mono={6.532500}: enqueue packet 325 (accum_skew_us = 32500) +sys={6.552600}, mono={6.552600}: enqueue packet 326 (accum_skew_us = 32600) +sys={6.572700}, mono={6.572700}: enqueue packet 327 (accum_skew_us = 32700) +sys={6.592800}, mono={6.592800}: enqueue packet 328 (accum_skew_us = 32800) +sys={6.612900}, mono={6.612900}: enqueue packet 329 (accum_skew_us = 32900) +sys={6.633000}, mono={6.633000}: enqueue packet 330 (accum_skew_us = 33000) +sys={6.653100}, mono={6.653100}: enqueue packet 331 (accum_skew_us = 33100) +sys={6.673200}, mono={6.673200}: enqueue packet 332 (accum_skew_us = 33200) +sys={6.693300}, mono={6.693300}: enqueue packet 333 (accum_skew_us = 33300) +sys={6.713400}, mono={6.713400}: enqueue packet 334 (accum_skew_us = 33400) +sys={6.733500}, mono={6.733500}: enqueue packet 335 (accum_skew_us = 33500) +sys={6.753600}, mono={6.753600}: enqueue packet 336 (accum_skew_us = 33600) +sys={6.773700}, mono={6.773700}: enqueue packet 337 (accum_skew_us = 33700) +sys={6.793800}, mono={6.793800}: enqueue packet 338 (accum_skew_us = 33800) +sys={6.813900}, mono={6.813900}: enqueue packet 339 (accum_skew_us = 33900) +sys={6.834000}, mono={6.834000}: enqueue packet 340 (accum_skew_us = 34000) +sys={6.854100}, mono={6.854100}: enqueue packet 341 (accum_skew_us = 34100) +sys={6.874200}, mono={6.874200}: enqueue packet 342 (accum_skew_us = 34200) +sys={6.894300}, mono={6.894300}: enqueue packet 343 (accum_skew_us = 34300) +sys={6.914400}, mono={6.914400}: enqueue packet 344 (accum_skew_us = 34400) +sys={6.934500}, mono={6.934500}: enqueue packet 345 (accum_skew_us = 34500) +sys={6.954600}, mono={6.954600}: enqueue packet 346 (accum_skew_us = 34600) +sys={6.974700}, mono={6.974700}: enqueue packet 347 (accum_skew_us = 34700) +sys={6.994800}, mono={6.994800}: enqueue packet 348 (accum_skew_us = 34800) +sys={7.014900}, mono={7.014900}: enqueue packet 349 (accum_skew_us = 34900) +sys={7.035000}, mono={7.035000}: enqueue packet 350 (accum_skew_us = 35000) +sys={7.055100}, mono={7.055100}: enqueue packet 351 (accum_skew_us = 35100) +sys={7.075200}, mono={7.075200}: enqueue packet 352 (accum_skew_us = 35200) +sys={7.095300}, mono={7.095300}: enqueue packet 353 (accum_skew_us = 35300) +sys={7.115400}, mono={7.115400}: enqueue packet 354 (accum_skew_us = 35400) +sys={7.135500}, mono={7.135500}: enqueue packet 355 (accum_skew_us = 35500) +sys={7.155600}, mono={7.155600}: enqueue packet 356 (accum_skew_us = 35600) +sys={7.175700}, mono={7.175700}: enqueue packet 357 (accum_skew_us = 35700) +sys={7.195800}, mono={7.195800}: enqueue packet 358 (accum_skew_us = 35800) +sys={7.215900}, mono={7.215900}: enqueue packet 359 (accum_skew_us = 35900) +sys={7.236000}, mono={7.236000}: enqueue packet 360 (accum_skew_us = 36000) +sys={7.256100}, mono={7.256100}: enqueue packet 361 (accum_skew_us = 36100) +sys={7.276200}, mono={7.276200}: enqueue packet 362 (accum_skew_us = 36200) +sys={7.296300}, mono={7.296300}: enqueue packet 363 (accum_skew_us = 36300) +sys={7.316400}, mono={7.316400}: enqueue packet 364 (accum_skew_us = 36400) +sys={7.336500}, mono={7.336500}: enqueue packet 365 (accum_skew_us = 36500) +sys={7.356600}, mono={7.356600}: enqueue packet 366 (accum_skew_us = 36600) +sys={7.376700}, mono={7.376700}: enqueue packet 367 (accum_skew_us = 36700) +sys={7.396800}, mono={7.396800}: enqueue packet 368 (accum_skew_us = 36800) +sys={7.416900}, mono={7.416900}: enqueue packet 369 (accum_skew_us = 36900) +sys={7.437000}, mono={7.437000}: enqueue packet 370 (accum_skew_us = 37000) +sys={7.457100}, mono={7.457100}: enqueue packet 371 (accum_skew_us = 37100) +sys={7.477200}, mono={7.477200}: enqueue packet 372 (accum_skew_us = 37200) +sys={7.497300}, mono={7.497300}: enqueue packet 373 (accum_skew_us = 37300) +sys={7.517400}, mono={7.517400}: enqueue packet 374 (accum_skew_us = 37400) +sys={7.537500}, mono={7.537500}: enqueue packet 375 (accum_skew_us = 37500) +sys={7.557600}, mono={7.557600}: enqueue packet 376 (accum_skew_us = 37600) +sys={7.577700}, mono={7.577700}: enqueue packet 377 (accum_skew_us = 37700) +sys={7.597800}, mono={7.597800}: enqueue packet 378 (accum_skew_us = 37800) +sys={7.617900}, mono={7.617900}: enqueue packet 379 (accum_skew_us = 37900) +sys={7.638000}, mono={7.638000}: enqueue packet 380 (accum_skew_us = 38000) +sys={7.658100}, mono={7.658100}: enqueue packet 381 (accum_skew_us = 38100) +sys={7.678200}, mono={7.678200}: enqueue packet 382 (accum_skew_us = 38200) +sys={7.698300}, mono={7.698300}: enqueue packet 383 (accum_skew_us = 38300) +sys={7.718400}, mono={7.718400}: enqueue packet 384 (accum_skew_us = 38400) +sys={7.738500}, mono={7.738500}: enqueue packet 385 (accum_skew_us = 38500) +sys={7.758600}, mono={7.758600}: enqueue packet 386 (accum_skew_us = 38600) +sys={7.778700}, mono={7.778700}: enqueue packet 387 (accum_skew_us = 38700) +sys={7.798800}, mono={7.798800}: enqueue packet 388 (accum_skew_us = 38800) +sys={7.818900}, mono={7.818900}: enqueue packet 389 (accum_skew_us = 38900) +sys={7.839000}, mono={7.839000}: enqueue packet 390 (accum_skew_us = 39000) +sys={7.859100}, mono={7.859100}: enqueue packet 391 (accum_skew_us = 39100) +sys={7.879200}, mono={7.879200}: enqueue packet 392 (accum_skew_us = 39200) +sys={7.899300}, mono={7.899300}: enqueue packet 393 (accum_skew_us = 39300) +sys={7.919400}, mono={7.919400}: enqueue packet 394 (accum_skew_us = 39400) +sys={7.939500}, mono={7.939500}: enqueue packet 395 (accum_skew_us = 39500) +sys={7.959600}, mono={7.959600}: enqueue packet 396 (accum_skew_us = 39600) +sys={7.979700}, mono={7.979700}: enqueue packet 397 (accum_skew_us = 39700) +sys={7.999800}, mono={7.999800}: enqueue packet 398 (accum_skew_us = 39800) +sys={8.019900}, mono={8.019900}: enqueue packet 399 (accum_skew_us = 39900) +sys={8.040000}, mono={8.040000}: enqueue packet 400 (accum_skew_us = 40000) +sys={8.060100}, mono={8.060100}: enqueue packet 401 (accum_skew_us = 40100) +sys={8.080200}, mono={8.080200}: enqueue packet 402 (accum_skew_us = 40200) +sys={8.100300}, mono={8.100300}: enqueue packet 403 (accum_skew_us = 40300) +sys={8.120400}, mono={8.120400}: enqueue packet 404 (accum_skew_us = 40400) +sys={8.140500}, mono={8.140500}: enqueue packet 405 (accum_skew_us = 40500) +sys={8.160600}, mono={8.160600}: enqueue packet 406 (accum_skew_us = 40600) +sys={8.180700}, mono={8.180700}: enqueue packet 407 (accum_skew_us = 40700) +sys={8.200800}, mono={8.200800}: enqueue packet 408 (accum_skew_us = 40800) +sys={8.220900}, mono={8.220900}: enqueue packet 409 (accum_skew_us = 40900) +sys={8.241000}, mono={8.241000}: enqueue packet 410 (accum_skew_us = 41000) +sys={8.261100}, mono={8.261100}: enqueue packet 411 (accum_skew_us = 41100) +sys={8.281200}, mono={8.281200}: enqueue packet 412 (accum_skew_us = 41200) +sys={8.301300}, mono={8.301300}: enqueue packet 413 (accum_skew_us = 41300) +sys={8.321400}, mono={8.321400}: enqueue packet 414 (accum_skew_us = 41400) +sys={8.341500}, mono={8.341500}: enqueue packet 415 (accum_skew_us = 41500) +sys={8.361600}, mono={8.361600}: enqueue packet 416 (accum_skew_us = 41600) +sys={8.381700}, mono={8.381700}: enqueue packet 417 (accum_skew_us = 41700) +sys={8.401800}, mono={8.401800}: enqueue packet 418 (accum_skew_us = 41800) +sys={8.421900}, mono={8.421900}: enqueue packet 419 (accum_skew_us = 41900) +sys={8.442000}, mono={8.442000}: enqueue packet 420 (accum_skew_us = 42000) +sys={8.462100}, mono={8.462100}: enqueue packet 421 (accum_skew_us = 42100) +sys={8.482200}, mono={8.482200}: enqueue packet 422 (accum_skew_us = 42200) +sys={8.502300}, mono={8.502300}: enqueue packet 423 (accum_skew_us = 42300) +sys={8.522400}, mono={8.522400}: enqueue packet 424 (accum_skew_us = 42400) +sys={8.542500}, mono={8.542500}: enqueue packet 425 (accum_skew_us = 42500) +sys={8.562600}, mono={8.562600}: enqueue packet 426 (accum_skew_us = 42600) +sys={8.582700}, mono={8.582700}: enqueue packet 427 (accum_skew_us = 42700) +sys={8.602800}, mono={8.602800}: enqueue packet 428 (accum_skew_us = 42800) +sys={8.622900}, mono={8.622900}: enqueue packet 429 (accum_skew_us = 42900) +sys={8.643000}, mono={8.643000}: enqueue packet 430 (accum_skew_us = 43000) +sys={8.663100}, mono={8.663100}: enqueue packet 431 (accum_skew_us = 43100) +sys={8.683200}, mono={8.683200}: enqueue packet 432 (accum_skew_us = 43200) +sys={8.703300}, mono={8.703300}: enqueue packet 433 (accum_skew_us = 43300) +sys={8.723400}, mono={8.723400}: enqueue packet 434 (accum_skew_us = 43400) +sys={8.743500}, mono={8.743500}: enqueue packet 435 (accum_skew_us = 43500) +sys={8.763600}, mono={8.763600}: enqueue packet 436 (accum_skew_us = 43600) +sys={8.783700}, mono={8.783700}: enqueue packet 437 (accum_skew_us = 43700) +sys={8.803800}, mono={8.803800}: enqueue packet 438 (accum_skew_us = 43800) +sys={8.823900}, mono={8.823900}: enqueue packet 439 (accum_skew_us = 43900) +sys={8.844000}, mono={8.844000}: enqueue packet 440 (accum_skew_us = 44000) +sys={8.864100}, mono={8.864100}: enqueue packet 441 (accum_skew_us = 44100) +sys={8.884200}, mono={8.884200}: enqueue packet 442 (accum_skew_us = 44200) +sys={8.904300}, mono={8.904300}: enqueue packet 443 (accum_skew_us = 44300) +sys={8.924400}, mono={8.924400}: enqueue packet 444 (accum_skew_us = 44400) +sys={8.944500}, mono={8.944500}: enqueue packet 445 (accum_skew_us = 44500) +sys={8.964600}, mono={8.964600}: enqueue packet 446 (accum_skew_us = 44600) +sys={8.984700}, mono={8.984700}: enqueue packet 447 (accum_skew_us = 44700) +sys={9.004800}, mono={9.004800}: enqueue packet 448 (accum_skew_us = 44800) +sys={9.024900}, mono={9.024900}: enqueue packet 449 (accum_skew_us = 44900) +===test_skew(100, 1)=== +sys={0.000000}, mono={0.000000}: clock_override_set +sys={0.000000}, mono={0.000000}: enqueue packet 0 (accum_skew_us = 0) +sys={0.020100}, mono={0.020100}: enqueue packet 1 (accum_skew_us = 100) +sys={0.040200}, mono={0.040200}: enqueue packet 2 (accum_skew_us = 200) +sys={0.060300}, mono={0.060300}: enqueue packet 3 (accum_skew_us = 300) +sys={0.080400}, mono={0.080400}: enqueue packet 4 (accum_skew_us = 400) +sys={0.100500}, mono={0.100500}: enqueue packet 5 (accum_skew_us = 500) +sys={0.120600}, mono={0.120600}: enqueue packet 6 (accum_skew_us = 600) +sys={0.140700}, mono={0.140700}: enqueue packet 7 (accum_skew_us = 700) +sys={0.160800}, mono={0.160800}: enqueue packet 8 (accum_skew_us = 800) +sys={0.180900}, mono={0.180900}: enqueue packet 9 (accum_skew_us = 900) +sys={0.201000}, mono={0.201000}: enqueue packet 10 (accum_skew_us = 1000) +sys={0.221100}, mono={0.221100}: enqueue packet 11 (accum_skew_us = 1100) +sys={0.241200}, mono={0.241200}: enqueue packet 12 (accum_skew_us = 1200) +sys={0.261300}, mono={0.261300}: enqueue packet 13 (accum_skew_us = 1300) +sys={0.281400}, mono={0.281400}: enqueue packet 14 (accum_skew_us = 1400) +sys={0.301500}, mono={0.301500}: enqueue packet 15 (accum_skew_us = 1500) +sys={0.321600}, mono={0.321600}: enqueue packet 16 (accum_skew_us = 1600) +sys={0.341700}, mono={0.341700}: enqueue packet 17 (accum_skew_us = 1700) +sys={0.361800}, mono={0.361800}: enqueue packet 18 (accum_skew_us = 1800) +sys={0.381900}, mono={0.381900}: enqueue packet 19 (accum_skew_us = 1900) +sys={0.402000}, mono={0.402000}: enqueue packet 20 (accum_skew_us = 2000) +sys={0.422100}, mono={0.422100}: enqueue packet 21 (accum_skew_us = 2100) +sys={0.442200}, mono={0.442200}: enqueue packet 22 (accum_skew_us = 2200) +sys={0.462300}, mono={0.462300}: enqueue packet 23 (accum_skew_us = 2300) +sys={0.482400}, mono={0.482400}: enqueue packet 24 (accum_skew_us = 2400) +sys={0.502500}, mono={0.502500}: enqueue packet 25 (accum_skew_us = 2500) +sys={0.522600}, mono={0.522600}: enqueue packet 26 (accum_skew_us = 2600) +sys={0.542700}, mono={0.542700}: enqueue packet 27 (accum_skew_us = 2700) +sys={0.562800}, mono={0.562800}: enqueue packet 28 (accum_skew_us = 2800) +sys={0.582900}, mono={0.582900}: enqueue packet 29 (accum_skew_us = 2900) +sys={0.603000}, mono={0.603000}: enqueue packet 30 (accum_skew_us = 3000) +sys={0.623100}, mono={0.623100}: enqueue packet 31 (accum_skew_us = 3100) +sys={0.643200}, mono={0.643200}: enqueue packet 32 (accum_skew_us = 3200) +sys={0.663300}, mono={0.663300}: enqueue packet 33 (accum_skew_us = 3300) +sys={0.683400}, mono={0.683400}: enqueue packet 34 (accum_skew_us = 3400) +sys={0.703500}, mono={0.703500}: enqueue packet 35 (accum_skew_us = 3500) +sys={0.723600}, mono={0.723600}: enqueue packet 36 (accum_skew_us = 3600) +sys={0.743700}, mono={0.743700}: enqueue packet 37 (accum_skew_us = 3700) +sys={0.763800}, mono={0.763800}: enqueue packet 38 (accum_skew_us = 3800) +sys={0.783900}, mono={0.783900}: enqueue packet 39 (accum_skew_us = 3900) +sys={0.804000}, mono={0.804000}: enqueue packet 40 (accum_skew_us = 4000) +sys={0.824100}, mono={0.824100}: enqueue packet 41 (accum_skew_us = 4100) +sys={0.844200}, mono={0.844200}: enqueue packet 42 (accum_skew_us = 4200) +sys={0.864300}, mono={0.864300}: enqueue packet 43 (accum_skew_us = 4300) +sys={0.884400}, mono={0.884400}: enqueue packet 44 (accum_skew_us = 4400) +sys={0.904500}, mono={0.904500}: enqueue packet 45 (accum_skew_us = 4500) +sys={0.924600}, mono={0.924600}: enqueue packet 46 (accum_skew_us = 4600) +sys={0.944700}, mono={0.944700}: enqueue packet 47 (accum_skew_us = 4700) +sys={0.964800}, mono={0.964800}: enqueue packet 48 (accum_skew_us = 4800) +sys={0.984900}, mono={0.984900}: enqueue packet 49 (accum_skew_us = 4900) +sys={1.005000}, mono={1.005000}: enqueue packet 50 (accum_skew_us = 5000) +sys={1.025100}, mono={1.025100}: enqueue packet 51 (accum_skew_us = 5100) +sys={1.045200}, mono={1.045200}: enqueue packet 52 (accum_skew_us = 5200) +sys={1.065300}, mono={1.065300}: enqueue packet 53 (accum_skew_us = 5300) +sys={1.085400}, mono={1.085400}: enqueue packet 54 (accum_skew_us = 5400) +sys={1.105500}, mono={1.105500}: enqueue packet 55 (accum_skew_us = 5500) +sys={1.125600}, mono={1.125600}: enqueue packet 56 (accum_skew_us = 5600) +sys={1.145700}, mono={1.145700}: enqueue packet 57 (accum_skew_us = 5700) +sys={1.165800}, mono={1.165800}: enqueue packet 58 (accum_skew_us = 5800) +sys={1.185900}, mono={1.185900}: enqueue packet 59 (accum_skew_us = 5900) +sys={1.206000}, mono={1.206000}: enqueue packet 60 (accum_skew_us = 6000) +sys={1.226100}, mono={1.226100}: enqueue packet 61 (accum_skew_us = 6100) +sys={1.246200}, mono={1.246200}: enqueue packet 62 (accum_skew_us = 6200) +sys={1.266300}, mono={1.266300}: enqueue packet 63 (accum_skew_us = 6300) +sys={1.286400}, mono={1.286400}: enqueue packet 64 (accum_skew_us = 6400) +sys={1.306500}, mono={1.306500}: enqueue packet 65 (accum_skew_us = 6500) +sys={1.326600}, mono={1.326600}: enqueue packet 66 (accum_skew_us = 6600) +sys={1.346700}, mono={1.346700}: enqueue packet 67 (accum_skew_us = 6700) +sys={1.366800}, mono={1.366800}: enqueue packet 68 (accum_skew_us = 6800) +sys={1.386900}, mono={1.386900}: enqueue packet 69 (accum_skew_us = 6900) +sys={1.407000}, mono={1.407000}: enqueue packet 70 (accum_skew_us = 7000) +sys={1.427100}, mono={1.427100}: enqueue packet 71 (accum_skew_us = 7100) +sys={1.447200}, mono={1.447200}: enqueue packet 72 (accum_skew_us = 7200) +sys={1.467300}, mono={1.467300}: enqueue packet 73 (accum_skew_us = 7300) +sys={1.487400}, mono={1.487400}: enqueue packet 74 (accum_skew_us = 7400) +sys={1.507500}, mono={1.507500}: enqueue packet 75 (accum_skew_us = 7500) +sys={1.527600}, mono={1.527600}: enqueue packet 76 (accum_skew_us = 7600) +sys={1.547700}, mono={1.547700}: enqueue packet 77 (accum_skew_us = 7700) +sys={1.567800}, mono={1.567800}: enqueue packet 78 (accum_skew_us = 7800) +sys={1.587900}, mono={1.587900}: enqueue packet 79 (accum_skew_us = 7900) +sys={1.608000}, mono={1.608000}: enqueue packet 80 (accum_skew_us = 8000) +sys={1.628100}, mono={1.628100}: enqueue packet 81 (accum_skew_us = 8100) +sys={1.648200}, mono={1.648200}: enqueue packet 82 (accum_skew_us = 8200) +sys={1.668300}, mono={1.668300}: enqueue packet 83 (accum_skew_us = 8300) +sys={1.688400}, mono={1.688400}: enqueue packet 84 (accum_skew_us = 8400) +sys={1.708500}, mono={1.708500}: enqueue packet 85 (accum_skew_us = 8500) +sys={1.728600}, mono={1.728600}: enqueue packet 86 (accum_skew_us = 8600) +sys={1.748700}, mono={1.748700}: enqueue packet 87 (accum_skew_us = 8700) +sys={1.768800}, mono={1.768800}: enqueue packet 88 (accum_skew_us = 8800) +sys={1.788900}, mono={1.788900}: enqueue packet 89 (accum_skew_us = 8900) +sys={1.809000}, mono={1.809000}: enqueue packet 90 (accum_skew_us = 9000) +sys={1.829100}, mono={1.829100}: enqueue packet 91 (accum_skew_us = 9100) +sys={1.849200}, mono={1.849200}: enqueue packet 92 (accum_skew_us = 9200) +sys={1.869300}, mono={1.869300}: enqueue packet 93 (accum_skew_us = 9300) +sys={1.889400}, mono={1.889400}: enqueue packet 94 (accum_skew_us = 9400) +sys={1.909500}, mono={1.909500}: enqueue packet 95 (accum_skew_us = 9500) +sys={1.929600}, mono={1.929600}: enqueue packet 96 (accum_skew_us = 9600) +sys={1.949700}, mono={1.949700}: enqueue packet 97 (accum_skew_us = 9700) +sys={1.969800}, mono={1.969800}: enqueue packet 98 (accum_skew_us = 9800) +sys={1.989900}, mono={1.989900}: enqueue packet 99 (accum_skew_us = 9900) +sys={2.010000}, mono={2.010000}: enqueue packet 100 (accum_skew_us = 10000) +sys={2.030100}, mono={2.030100}: enqueue packet 101 (accum_skew_us = 10100) +sys={2.050200}, mono={2.050200}: enqueue packet 102 (accum_skew_us = 10200) +sys={2.070300}, mono={2.070300}: enqueue packet 103 (accum_skew_us = 10300) +sys={2.090400}, mono={2.090400}: enqueue packet 104 (accum_skew_us = 10400) +sys={2.110500}, mono={2.110500}: enqueue packet 105 (accum_skew_us = 10500) +sys={2.130600}, mono={2.130600}: enqueue packet 106 (accum_skew_us = 10600) +sys={2.150700}, mono={2.150700}: enqueue packet 107 (accum_skew_us = 10700) +sys={2.170800}, mono={2.170800}: enqueue packet 108 (accum_skew_us = 10800) +sys={2.190900}, mono={2.190900}: enqueue packet 109 (accum_skew_us = 10900) +sys={2.211000}, mono={2.211000}: enqueue packet 110 (accum_skew_us = 11000) +sys={2.231100}, mono={2.231100}: enqueue packet 111 (accum_skew_us = 11100) +sys={2.251200}, mono={2.251200}: enqueue packet 112 (accum_skew_us = 11200) +sys={2.271300}, mono={2.271300}: enqueue packet 113 (accum_skew_us = 11300) +sys={2.291400}, mono={2.291400}: enqueue packet 114 (accum_skew_us = 11400) +sys={2.311500}, mono={2.311500}: enqueue packet 115 (accum_skew_us = 11500) +sys={2.331600}, mono={2.331600}: enqueue packet 116 (accum_skew_us = 11600) +sys={2.351700}, mono={2.351700}: enqueue packet 117 (accum_skew_us = 11700) +sys={2.371800}, mono={2.371800}: enqueue packet 118 (accum_skew_us = 11800) +sys={2.391900}, mono={2.391900}: enqueue packet 119 (accum_skew_us = 11900) +sys={2.412000}, mono={2.412000}: enqueue packet 120 (accum_skew_us = 12000) +sys={2.432100}, mono={2.432100}: enqueue packet 121 (accum_skew_us = 12100) +sys={2.452200}, mono={2.452200}: enqueue packet 122 (accum_skew_us = 12200) +sys={2.472300}, mono={2.472300}: enqueue packet 123 (accum_skew_us = 12300) +sys={2.492400}, mono={2.492400}: enqueue packet 124 (accum_skew_us = 12400) +sys={2.512500}, mono={2.512500}: enqueue packet 125 (accum_skew_us = 12500) +sys={2.532600}, mono={2.532600}: enqueue packet 126 (accum_skew_us = 12600) +sys={2.552700}, mono={2.552700}: enqueue packet 127 (accum_skew_us = 12700) +sys={2.572800}, mono={2.572800}: enqueue packet 128 (accum_skew_us = 12800) +sys={2.592900}, mono={2.592900}: enqueue packet 129 (accum_skew_us = 12900) +sys={2.613000}, mono={2.613000}: enqueue packet 130 (accum_skew_us = 13000) +sys={2.633100}, mono={2.633100}: enqueue packet 131 (accum_skew_us = 13100) +sys={2.653200}, mono={2.653200}: enqueue packet 132 (accum_skew_us = 13200) +sys={2.673300}, mono={2.673300}: enqueue packet 133 (accum_skew_us = 13300) +sys={2.693400}, mono={2.693400}: enqueue packet 134 (accum_skew_us = 13400) +sys={2.713500}, mono={2.713500}: enqueue packet 135 (accum_skew_us = 13500) +sys={2.733600}, mono={2.733600}: enqueue packet 136 (accum_skew_us = 13600) +sys={2.753700}, mono={2.753700}: enqueue packet 137 (accum_skew_us = 13700) +sys={2.773800}, mono={2.773800}: enqueue packet 138 (accum_skew_us = 13800) +sys={2.793900}, mono={2.793900}: enqueue packet 139 (accum_skew_us = 13900) +sys={2.814000}, mono={2.814000}: enqueue packet 140 (accum_skew_us = 14000) +sys={2.834100}, mono={2.834100}: enqueue packet 141 (accum_skew_us = 14100) +sys={2.854200}, mono={2.854200}: enqueue packet 142 (accum_skew_us = 14200) +sys={2.874300}, mono={2.874300}: enqueue packet 143 (accum_skew_us = 14300) +sys={2.894400}, mono={2.894400}: enqueue packet 144 (accum_skew_us = 14400) +sys={2.914500}, mono={2.914500}: enqueue packet 145 (accum_skew_us = 14500) +sys={2.934600}, mono={2.934600}: enqueue packet 146 (accum_skew_us = 14600) +sys={2.954700}, mono={2.954700}: enqueue packet 147 (accum_skew_us = 14700) +sys={2.974800}, mono={2.974800}: enqueue packet 148 (accum_skew_us = 14800) +sys={2.994900}, mono={2.994900}: enqueue packet 149 (accum_skew_us = 14900) +sys={3.015000}, mono={3.015000}: enqueue packet 150 (accum_skew_us = 15000) +sys={3.035100}, mono={3.035100}: enqueue packet 151 (accum_skew_us = 15100) +sys={3.055200}, mono={3.055200}: enqueue packet 152 (accum_skew_us = 15200) +sys={3.075300}, mono={3.075300}: enqueue packet 153 (accum_skew_us = 15300) +sys={3.095400}, mono={3.095400}: enqueue packet 154 (accum_skew_us = 15400) +sys={3.115500}, mono={3.115500}: enqueue packet 155 (accum_skew_us = 15500) +sys={3.135600}, mono={3.135600}: enqueue packet 156 (accum_skew_us = 15600) +sys={3.155700}, mono={3.155700}: enqueue packet 157 (accum_skew_us = 15700) +sys={3.175800}, mono={3.175800}: enqueue packet 158 (accum_skew_us = 15800) +sys={3.195900}, mono={3.195900}: enqueue packet 159 (accum_skew_us = 15900) +sys={3.216000}, mono={3.216000}: enqueue packet 160 (accum_skew_us = 16000) +sys={3.236100}, mono={3.236100}: enqueue packet 161 (accum_skew_us = 16100) +sys={3.256200}, mono={3.256200}: enqueue packet 162 (accum_skew_us = 16200) +sys={3.276300}, mono={3.276300}: enqueue packet 163 (accum_skew_us = 16300) +sys={3.296400}, mono={3.296400}: enqueue packet 164 (accum_skew_us = 16400) +sys={3.316500}, mono={3.316500}: enqueue packet 165 (accum_skew_us = 16500) +sys={3.336600}, mono={3.336600}: enqueue packet 166 (accum_skew_us = 16600) +sys={3.356700}, mono={3.356700}: enqueue packet 167 (accum_skew_us = 16700) +sys={3.376800}, mono={3.376800}: enqueue packet 168 (accum_skew_us = 16800) +sys={3.396900}, mono={3.396900}: enqueue packet 169 (accum_skew_us = 16900) +sys={3.417000}, mono={3.417000}: enqueue packet 170 (accum_skew_us = 17000) +sys={3.437100}, mono={3.437100}: enqueue packet 171 (accum_skew_us = 17100) +sys={3.457200}, mono={3.457200}: enqueue packet 172 (accum_skew_us = 17200) +sys={3.477300}, mono={3.477300}: enqueue packet 173 (accum_skew_us = 17300) +sys={3.497400}, mono={3.497400}: enqueue packet 174 (accum_skew_us = 17400) +sys={3.517500}, mono={3.517500}: enqueue packet 175 (accum_skew_us = 17500) +sys={3.537600}, mono={3.537600}: enqueue packet 176 (accum_skew_us = 17600) +sys={3.557700}, mono={3.557700}: enqueue packet 177 (accum_skew_us = 17700) +sys={3.577800}, mono={3.577800}: enqueue packet 178 (accum_skew_us = 17800) +sys={3.597900}, mono={3.597900}: enqueue packet 179 (accum_skew_us = 17900) +sys={3.618000}, mono={3.618000}: enqueue packet 180 (accum_skew_us = 18000) +sys={3.638100}, mono={3.638100}: enqueue packet 181 (accum_skew_us = 18100) +sys={3.658200}, mono={3.658200}: enqueue packet 182 (accum_skew_us = 18200) +sys={3.678300}, mono={3.678300}: enqueue packet 183 (accum_skew_us = 18300) +sys={3.698400}, mono={3.698400}: enqueue packet 184 (accum_skew_us = 18400) +sys={3.718500}, mono={3.718500}: enqueue packet 185 (accum_skew_us = 18500) +sys={3.738600}, mono={3.738600}: enqueue packet 186 (accum_skew_us = 18600) +sys={3.758700}, mono={3.758700}: enqueue packet 187 (accum_skew_us = 18700) +sys={3.778800}, mono={3.778800}: enqueue packet 188 (accum_skew_us = 18800) +sys={3.798900}, mono={3.798900}: enqueue packet 189 (accum_skew_us = 18900) +sys={3.819000}, mono={3.819000}: enqueue packet 190 (accum_skew_us = 19000) +sys={3.839100}, mono={3.839100}: enqueue packet 191 (accum_skew_us = 19100) +sys={3.859200}, mono={3.859200}: enqueue packet 192 (accum_skew_us = 19200) +sys={3.879300}, mono={3.879300}: enqueue packet 193 (accum_skew_us = 19300) +sys={3.899400}, mono={3.899400}: enqueue packet 194 (accum_skew_us = 19400) +sys={3.919500}, mono={3.919500}: enqueue packet 195 (accum_skew_us = 19500) +sys={3.939600}, mono={3.939600}: enqueue packet 196 (accum_skew_us = 19600) +sys={3.959700}, mono={3.959700}: enqueue packet 197 (accum_skew_us = 19700) +sys={3.979800}, mono={3.979800}: enqueue packet 198 (accum_skew_us = 19800) +sys={3.999900}, mono={3.999900}: enqueue packet 199 (accum_skew_us = 19900) +sys={4.020000}, mono={4.020000}: enqueue packet 200 (accum_skew_us = 20000) +sys={4.040100}, mono={4.040100}: enqueue packet 201 (accum_skew_us = 20100) +sys={4.060200}, mono={4.060200}: enqueue packet 202 (accum_skew_us = 20200) +sys={4.080300}, mono={4.080300}: enqueue packet 203 (accum_skew_us = 20300) +sys={4.100400}, mono={4.100400}: enqueue packet 204 (accum_skew_us = 20400) +sys={4.120500}, mono={4.120500}: enqueue packet 205 (accum_skew_us = 20500) +sys={4.140600}, mono={4.140600}: enqueue packet 206 (accum_skew_us = 20600) +sys={4.160700}, mono={4.160700}: enqueue packet 207 (accum_skew_us = 20700) +sys={4.180800}, mono={4.180800}: enqueue packet 208 (accum_skew_us = 20800) +sys={4.200900}, mono={4.200900}: enqueue packet 209 (accum_skew_us = 20900) +sys={4.221000}, mono={4.221000}: enqueue packet 210 (accum_skew_us = 21000) +sys={4.241100}, mono={4.241100}: enqueue packet 211 (accum_skew_us = 21100) +sys={4.261200}, mono={4.261200}: enqueue packet 212 (accum_skew_us = 21200) +sys={4.281300}, mono={4.281300}: enqueue packet 213 (accum_skew_us = 21300) +sys={4.301400}, mono={4.301400}: enqueue packet 214 (accum_skew_us = 21400) +sys={4.321500}, mono={4.321500}: enqueue packet 215 (accum_skew_us = 21500) +sys={4.341600}, mono={4.341600}: enqueue packet 216 (accum_skew_us = 21600) +sys={4.361700}, mono={4.361700}: enqueue packet 217 (accum_skew_us = 21700) +sys={4.381800}, mono={4.381800}: enqueue packet 218 (accum_skew_us = 21800) +sys={4.401900}, mono={4.401900}: enqueue packet 219 (accum_skew_us = 21900) +sys={4.422000}, mono={4.422000}: enqueue packet 220 (accum_skew_us = 22000) +sys={4.442100}, mono={4.442100}: enqueue packet 221 (accum_skew_us = 22100) +sys={4.462200}, mono={4.462200}: enqueue packet 222 (accum_skew_us = 22200) +sys={4.482300}, mono={4.482300}: enqueue packet 223 (accum_skew_us = 22300) +sys={4.502400}, mono={4.502400}: enqueue packet 224 (accum_skew_us = 22400) +sys={4.522500}, mono={4.522500}: enqueue packet 225 (accum_skew_us = 22500) +sys={4.542600}, mono={4.542600}: enqueue packet 226 (accum_skew_us = 22600) +sys={4.562700}, mono={4.562700}: enqueue packet 227 (accum_skew_us = 22700) +sys={4.582800}, mono={4.582800}: enqueue packet 228 (accum_skew_us = 22800) +sys={4.602900}, mono={4.602900}: enqueue packet 229 (accum_skew_us = 22900) +sys={4.623000}, mono={4.623000}: enqueue packet 230 (accum_skew_us = 23000) +sys={4.643100}, mono={4.643100}: enqueue packet 231 (accum_skew_us = 23100) +sys={4.663200}, mono={4.663200}: enqueue packet 232 (accum_skew_us = 23200) +sys={4.683300}, mono={4.683300}: enqueue packet 233 (accum_skew_us = 23300) +sys={4.703400}, mono={4.703400}: enqueue packet 234 (accum_skew_us = 23400) +sys={4.723500}, mono={4.723500}: enqueue packet 235 (accum_skew_us = 23500) +sys={4.743600}, mono={4.743600}: enqueue packet 236 (accum_skew_us = 23600) +sys={4.763700}, mono={4.763700}: enqueue packet 237 (accum_skew_us = 23700) +sys={4.783800}, mono={4.783800}: enqueue packet 238 (accum_skew_us = 23800) +sys={4.803900}, mono={4.803900}: enqueue packet 239 (accum_skew_us = 23900) +sys={4.824000}, mono={4.824000}: enqueue packet 240 (accum_skew_us = 24000) +sys={4.844100}, mono={4.844100}: enqueue packet 241 (accum_skew_us = 24100) +sys={4.864200}, mono={4.864200}: enqueue packet 242 (accum_skew_us = 24200) +sys={4.884300}, mono={4.884300}: enqueue packet 243 (accum_skew_us = 24300) +sys={4.904400}, mono={4.904400}: enqueue packet 244 (accum_skew_us = 24400) +sys={4.924500}, mono={4.924500}: enqueue packet 245 (accum_skew_us = 24500) +sys={4.944600}, mono={4.944600}: enqueue packet 246 (accum_skew_us = 24600) +sys={4.964700}, mono={4.964700}: enqueue packet 247 (accum_skew_us = 24700) +sys={4.984800}, mono={4.984800}: enqueue packet 248 (accum_skew_us = 24800) +sys={5.004900}, mono={5.004900}: enqueue packet 249 (accum_skew_us = 24900) +sys={5.025000}, mono={5.025000}: enqueue packet 250 (accum_skew_us = 25000) +sys={5.045100}, mono={5.045100}: enqueue packet 251 (accum_skew_us = 25100) +sys={5.065200}, mono={5.065200}: enqueue packet 252 (accum_skew_us = 25200) +sys={5.085300}, mono={5.085300}: enqueue packet 253 (accum_skew_us = 25300) +sys={5.105400}, mono={5.105400}: enqueue packet 254 (accum_skew_us = 25400) +sys={5.125500}, mono={5.125500}: enqueue packet 255 (accum_skew_us = 25500) +sys={5.145600}, mono={5.145600}: enqueue packet 256 (accum_skew_us = 25600) +sys={5.165700}, mono={5.165700}: enqueue packet 257 (accum_skew_us = 25700) +sys={5.185800}, mono={5.185800}: enqueue packet 258 (accum_skew_us = 25800) +sys={5.205900}, mono={5.205900}: enqueue packet 259 (accum_skew_us = 25900) +sys={5.226000}, mono={5.226000}: enqueue packet 260 (accum_skew_us = 26000) +sys={5.246100}, mono={5.246100}: enqueue packet 261 (accum_skew_us = 26100) +sys={5.266200}, mono={5.266200}: enqueue packet 262 (accum_skew_us = 26200) +sys={5.286300}, mono={5.286300}: enqueue packet 263 (accum_skew_us = 26300) +sys={5.306400}, mono={5.306400}: enqueue packet 264 (accum_skew_us = 26400) +sys={5.326500}, mono={5.326500}: enqueue packet 265 (accum_skew_us = 26500) +sys={5.346600}, mono={5.346600}: enqueue packet 266 (accum_skew_us = 26600) +sys={5.366700}, mono={5.366700}: enqueue packet 267 (accum_skew_us = 26700) +sys={5.386800}, mono={5.386800}: enqueue packet 268 (accum_skew_us = 26800) +sys={5.406900}, mono={5.406900}: enqueue packet 269 (accum_skew_us = 26900) +sys={5.427000}, mono={5.427000}: enqueue packet 270 (accum_skew_us = 27000) +sys={5.447100}, mono={5.447100}: enqueue packet 271 (accum_skew_us = 27100) +sys={5.467200}, mono={5.467200}: enqueue packet 272 (accum_skew_us = 27200) +sys={5.487300}, mono={5.487300}: enqueue packet 273 (accum_skew_us = 27300) +sys={5.507400}, mono={5.507400}: enqueue packet 274 (accum_skew_us = 27400) +sys={5.527500}, mono={5.527500}: enqueue packet 275 (accum_skew_us = 27500) +sys={5.547600}, mono={5.547600}: enqueue packet 276 (accum_skew_us = 27600) +sys={5.567700}, mono={5.567700}: enqueue packet 277 (accum_skew_us = 27700) +sys={5.587800}, mono={5.587800}: enqueue packet 278 (accum_skew_us = 27800) +sys={5.607900}, mono={5.607900}: enqueue packet 279 (accum_skew_us = 27900) +sys={5.628000}, mono={5.628000}: enqueue packet 280 (accum_skew_us = 28000) +sys={5.648100}, mono={5.648100}: enqueue packet 281 (accum_skew_us = 28100) +sys={5.668200}, mono={5.668200}: enqueue packet 282 (accum_skew_us = 28200) +sys={5.688300}, mono={5.688300}: enqueue packet 283 (accum_skew_us = 28300) +sys={5.708400}, mono={5.708400}: enqueue packet 284 (accum_skew_us = 28400) +sys={5.728500}, mono={5.728500}: enqueue packet 285 (accum_skew_us = 28500) +sys={5.748600}, mono={5.748600}: enqueue packet 286 (accum_skew_us = 28600) +sys={5.768700}, mono={5.768700}: enqueue packet 287 (accum_skew_us = 28700) +sys={5.788800}, mono={5.788800}: enqueue packet 288 (accum_skew_us = 28800) +sys={5.808900}, mono={5.808900}: enqueue packet 289 (accum_skew_us = 28900) +sys={5.829000}, mono={5.829000}: enqueue packet 290 (accum_skew_us = 29000) +sys={5.849100}, mono={5.849100}: enqueue packet 291 (accum_skew_us = 29100) +sys={5.869200}, mono={5.869200}: enqueue packet 292 (accum_skew_us = 29200) +sys={5.889300}, mono={5.889300}: enqueue packet 293 (accum_skew_us = 29300) +sys={5.909400}, mono={5.909400}: enqueue packet 294 (accum_skew_us = 29400) +sys={5.929500}, mono={5.929500}: enqueue packet 295 (accum_skew_us = 29500) +sys={5.949600}, mono={5.949600}: enqueue packet 296 (accum_skew_us = 29600) +sys={5.969700}, mono={5.969700}: enqueue packet 297 (accum_skew_us = 29700) +sys={5.989800}, mono={5.989800}: enqueue packet 298 (accum_skew_us = 29800) +sys={6.009900}, mono={6.009900}: enqueue packet 299 (accum_skew_us = 29900) +sys={6.030000}, mono={6.030000}: enqueue packet 300 (accum_skew_us = 30000) +sys={6.050100}, mono={6.050100}: enqueue packet 301 (accum_skew_us = 30100) +sys={6.070200}, mono={6.070200}: enqueue packet 302 (accum_skew_us = 30200) +sys={6.090300}, mono={6.090300}: enqueue packet 303 (accum_skew_us = 30300) +sys={6.110400}, mono={6.110400}: enqueue packet 304 (accum_skew_us = 30400) +sys={6.130500}, mono={6.130500}: enqueue packet 305 (accum_skew_us = 30500) +sys={6.150600}, mono={6.150600}: enqueue packet 306 (accum_skew_us = 30600) +sys={6.170700}, mono={6.170700}: enqueue packet 307 (accum_skew_us = 30700) +sys={6.190800}, mono={6.190800}: enqueue packet 308 (accum_skew_us = 30800) +sys={6.210900}, mono={6.210900}: enqueue packet 309 (accum_skew_us = 30900) +sys={6.231000}, mono={6.231000}: enqueue packet 310 (accum_skew_us = 31000) +sys={6.251100}, mono={6.251100}: enqueue packet 311 (accum_skew_us = 31100) +sys={6.271200}, mono={6.271200}: enqueue packet 312 (accum_skew_us = 31200) +sys={6.291300}, mono={6.291300}: enqueue packet 313 (accum_skew_us = 31300) +sys={6.311400}, mono={6.311400}: enqueue packet 314 (accum_skew_us = 31400) +sys={6.331500}, mono={6.331500}: enqueue packet 315 (accum_skew_us = 31500) +sys={6.351600}, mono={6.351600}: enqueue packet 316 (accum_skew_us = 31600) +sys={6.371700}, mono={6.371700}: enqueue packet 317 (accum_skew_us = 31700) +sys={6.391800}, mono={6.391800}: enqueue packet 318 (accum_skew_us = 31800) +sys={6.411900}, mono={6.411900}: enqueue packet 319 (accum_skew_us = 31900) +sys={6.432000}, mono={6.432000}: enqueue packet 320 (accum_skew_us = 32000) +sys={6.452100}, mono={6.452100}: enqueue packet 321 (accum_skew_us = 32100) +sys={6.472200}, mono={6.472200}: enqueue packet 322 (accum_skew_us = 32200) +sys={6.492300}, mono={6.492300}: enqueue packet 323 (accum_skew_us = 32300) +sys={6.512400}, mono={6.512400}: enqueue packet 324 (accum_skew_us = 32400) +sys={6.532500}, mono={6.532500}: enqueue packet 325 (accum_skew_us = 32500) +sys={6.552600}, mono={6.552600}: enqueue packet 326 (accum_skew_us = 32600) +sys={6.572700}, mono={6.572700}: enqueue packet 327 (accum_skew_us = 32700) +sys={6.592800}, mono={6.592800}: enqueue packet 328 (accum_skew_us = 32800) +sys={6.612900}, mono={6.612900}: enqueue packet 329 (accum_skew_us = 32900) +sys={6.633000}, mono={6.633000}: enqueue packet 330 (accum_skew_us = 33000) +sys={6.653100}, mono={6.653100}: enqueue packet 331 (accum_skew_us = 33100) +sys={6.673200}, mono={6.673200}: enqueue packet 332 (accum_skew_us = 33200) +sys={6.693300}, mono={6.693300}: enqueue packet 333 (accum_skew_us = 33300) +sys={6.713400}, mono={6.713400}: enqueue packet 334 (accum_skew_us = 33400) +sys={6.733500}, mono={6.733500}: enqueue packet 335 (accum_skew_us = 33500) +sys={6.753600}, mono={6.753600}: enqueue packet 336 (accum_skew_us = 33600) +sys={6.773700}, mono={6.773700}: enqueue packet 337 (accum_skew_us = 33700) +sys={6.793800}, mono={6.793800}: enqueue packet 338 (accum_skew_us = 33800) +sys={6.813900}, mono={6.813900}: enqueue packet 339 (accum_skew_us = 33900) +sys={6.834000}, mono={6.834000}: enqueue packet 340 (accum_skew_us = 34000) +sys={6.854100}, mono={6.854100}: enqueue packet 341 (accum_skew_us = 34100) +sys={6.874200}, mono={6.874200}: enqueue packet 342 (accum_skew_us = 34200) +sys={6.894300}, mono={6.894300}: enqueue packet 343 (accum_skew_us = 34300) +sys={6.914400}, mono={6.914400}: enqueue packet 344 (accum_skew_us = 34400) +sys={6.934500}, mono={6.934500}: enqueue packet 345 (accum_skew_us = 34500) +sys={6.954600}, mono={6.954600}: enqueue packet 346 (accum_skew_us = 34600) +sys={6.974700}, mono={6.974700}: enqueue packet 347 (accum_skew_us = 34700) +sys={6.994800}, mono={6.994800}: enqueue packet 348 (accum_skew_us = 34800) +sys={7.014900}, mono={7.014900}: enqueue packet 349 (accum_skew_us = 34900) +sys={7.035000}, mono={7.035000}: enqueue packet 350 (accum_skew_us = 35000) +sys={7.055100}, mono={7.055100}: enqueue packet 351 (accum_skew_us = 35100) +sys={7.075200}, mono={7.075200}: enqueue packet 352 (accum_skew_us = 35200) +sys={7.095300}, mono={7.095300}: enqueue packet 353 (accum_skew_us = 35300) +sys={7.115400}, mono={7.115400}: enqueue packet 354 (accum_skew_us = 35400) +sys={7.135500}, mono={7.135500}: enqueue packet 355 (accum_skew_us = 35500) +sys={7.155600}, mono={7.155600}: enqueue packet 356 (accum_skew_us = 35600) +sys={7.175700}, mono={7.175700}: enqueue packet 357 (accum_skew_us = 35700) +sys={7.195800}, mono={7.195800}: enqueue packet 358 (accum_skew_us = 35800) +sys={7.215900}, mono={7.215900}: enqueue packet 359 (accum_skew_us = 35900) +sys={7.236000}, mono={7.236000}: enqueue packet 360 (accum_skew_us = 36000) +sys={7.256100}, mono={7.256100}: enqueue packet 361 (accum_skew_us = 36100) +sys={7.276200}, mono={7.276200}: enqueue packet 362 (accum_skew_us = 36200) +sys={7.296300}, mono={7.296300}: enqueue packet 363 (accum_skew_us = 36300) +sys={7.316400}, mono={7.316400}: enqueue packet 364 (accum_skew_us = 36400) +sys={7.336500}, mono={7.336500}: enqueue packet 365 (accum_skew_us = 36500) +sys={7.356600}, mono={7.356600}: enqueue packet 366 (accum_skew_us = 36600) +sys={7.376700}, mono={7.376700}: enqueue packet 367 (accum_skew_us = 36700) +sys={7.396800}, mono={7.396800}: enqueue packet 368 (accum_skew_us = 36800) +sys={7.416900}, mono={7.416900}: enqueue packet 369 (accum_skew_us = 36900) +sys={7.437000}, mono={7.437000}: enqueue packet 370 (accum_skew_us = 37000) +sys={7.457100}, mono={7.457100}: enqueue packet 371 (accum_skew_us = 37100) +sys={7.477200}, mono={7.477200}: enqueue packet 372 (accum_skew_us = 37200) +sys={7.497300}, mono={7.497300}: enqueue packet 373 (accum_skew_us = 37300) +sys={7.517400}, mono={7.517400}: enqueue packet 374 (accum_skew_us = 37400) +sys={7.537500}, mono={7.537500}: enqueue packet 375 (accum_skew_us = 37500) +sys={7.557600}, mono={7.557600}: enqueue packet 376 (accum_skew_us = 37600) +sys={7.577700}, mono={7.577700}: enqueue packet 377 (accum_skew_us = 37700) +sys={7.597800}, mono={7.597800}: enqueue packet 378 (accum_skew_us = 37800) +sys={7.617900}, mono={7.617900}: enqueue packet 379 (accum_skew_us = 37900) +sys={7.638000}, mono={7.638000}: enqueue packet 380 (accum_skew_us = 38000) +sys={7.658100}, mono={7.658100}: enqueue packet 381 (accum_skew_us = 38100) +sys={7.678200}, mono={7.678200}: enqueue packet 382 (accum_skew_us = 38200) +sys={7.698300}, mono={7.698300}: enqueue packet 383 (accum_skew_us = 38300) +sys={7.718400}, mono={7.718400}: enqueue packet 384 (accum_skew_us = 38400) +sys={7.738500}, mono={7.738500}: enqueue packet 385 (accum_skew_us = 38500) +sys={7.758600}, mono={7.758600}: enqueue packet 386 (accum_skew_us = 38600) +sys={7.778700}, mono={7.778700}: enqueue packet 387 (accum_skew_us = 38700) +sys={7.798800}, mono={7.798800}: enqueue packet 388 (accum_skew_us = 38800) +sys={7.818900}, mono={7.818900}: enqueue packet 389 (accum_skew_us = 38900) +sys={7.839000}, mono={7.839000}: enqueue packet 390 (accum_skew_us = 39000) +sys={7.859100}, mono={7.859100}: enqueue packet 391 (accum_skew_us = 39100) +sys={7.879200}, mono={7.879200}: enqueue packet 392 (accum_skew_us = 39200) +sys={7.899300}, mono={7.899300}: enqueue packet 393 (accum_skew_us = 39300) +sys={7.919400}, mono={7.919400}: enqueue packet 394 (accum_skew_us = 39400) +sys={7.939500}, mono={7.939500}: enqueue packet 395 (accum_skew_us = 39500) +sys={7.959600}, mono={7.959600}: enqueue packet 396 (accum_skew_us = 39600) +sys={7.979700}, mono={7.979700}: enqueue packet 397 (accum_skew_us = 39700) +sys={7.999800}, mono={7.999800}: enqueue packet 398 (accum_skew_us = 39800) +sys={8.019900}, mono={8.019900}: enqueue packet 399 (accum_skew_us = 39900) +sys={8.040000}, mono={8.040000}: enqueue packet 400 (accum_skew_us = 40000) +sys={8.060100}, mono={8.060100}: enqueue packet 401 (accum_skew_us = 40100) +sys={8.080200}, mono={8.080200}: enqueue packet 402 (accum_skew_us = 40200) +sys={8.100300}, mono={8.100300}: enqueue packet 403 (accum_skew_us = 40300) +sys={8.120400}, mono={8.120400}: enqueue packet 404 (accum_skew_us = 40400) +sys={8.140500}, mono={8.140500}: enqueue packet 405 (accum_skew_us = 40500) +sys={8.160600}, mono={8.160600}: enqueue packet 406 (accum_skew_us = 40600) +sys={8.180700}, mono={8.180700}: enqueue packet 407 (accum_skew_us = 40700) +sys={8.200800}, mono={8.200800}: enqueue packet 408 (accum_skew_us = 40800) +sys={8.220900}, mono={8.220900}: enqueue packet 409 (accum_skew_us = 40900) +sys={8.241000}, mono={8.241000}: enqueue packet 410 (accum_skew_us = 41000) +sys={8.261100}, mono={8.261100}: enqueue packet 411 (accum_skew_us = 41100) +sys={8.281200}, mono={8.281200}: enqueue packet 412 (accum_skew_us = 41200) +sys={8.301300}, mono={8.301300}: enqueue packet 413 (accum_skew_us = 41300) +sys={8.321400}, mono={8.321400}: enqueue packet 414 (accum_skew_us = 41400) +sys={8.341500}, mono={8.341500}: enqueue packet 415 (accum_skew_us = 41500) +sys={8.361600}, mono={8.361600}: enqueue packet 416 (accum_skew_us = 41600) +sys={8.381700}, mono={8.381700}: enqueue packet 417 (accum_skew_us = 41700) +sys={8.401800}, mono={8.401800}: enqueue packet 418 (accum_skew_us = 41800) +sys={8.421900}, mono={8.421900}: enqueue packet 419 (accum_skew_us = 41900) +sys={8.442000}, mono={8.442000}: enqueue packet 420 (accum_skew_us = 42000) +sys={8.462100}, mono={8.462100}: enqueue packet 421 (accum_skew_us = 42100) +sys={8.482200}, mono={8.482200}: enqueue packet 422 (accum_skew_us = 42200) +sys={8.502300}, mono={8.502300}: enqueue packet 423 (accum_skew_us = 42300) +sys={8.522400}, mono={8.522400}: enqueue packet 424 (accum_skew_us = 42400) +sys={8.542500}, mono={8.542500}: enqueue packet 425 (accum_skew_us = 42500) +sys={8.562600}, mono={8.562600}: enqueue packet 426 (accum_skew_us = 42600) +sys={8.582700}, mono={8.582700}: enqueue packet 427 (accum_skew_us = 42700) +sys={8.602800}, mono={8.602800}: enqueue packet 428 (accum_skew_us = 42800) +sys={8.622900}, mono={8.622900}: enqueue packet 429 (accum_skew_us = 42900) +sys={8.643000}, mono={8.643000}: enqueue packet 430 (accum_skew_us = 43000) +sys={8.663100}, mono={8.663100}: enqueue packet 431 (accum_skew_us = 43100) +sys={8.683200}, mono={8.683200}: enqueue packet 432 (accum_skew_us = 43200) +sys={8.703300}, mono={8.703300}: enqueue packet 433 (accum_skew_us = 43300) +sys={8.723400}, mono={8.723400}: enqueue packet 434 (accum_skew_us = 43400) +sys={8.743500}, mono={8.743500}: enqueue packet 435 (accum_skew_us = 43500) +sys={8.763600}, mono={8.763600}: enqueue packet 436 (accum_skew_us = 43600) +sys={8.783700}, mono={8.783700}: enqueue packet 437 (accum_skew_us = 43700) +sys={8.803800}, mono={8.803800}: enqueue packet 438 (accum_skew_us = 43800) +sys={8.823900}, mono={8.823900}: enqueue packet 439 (accum_skew_us = 43900) +sys={8.844000}, mono={8.844000}: enqueue packet 440 (accum_skew_us = 44000) +sys={8.864100}, mono={8.864100}: enqueue packet 441 (accum_skew_us = 44100) +sys={8.884200}, mono={8.884200}: enqueue packet 442 (accum_skew_us = 44200) +sys={8.904300}, mono={8.904300}: enqueue packet 443 (accum_skew_us = 44300) +sys={8.924400}, mono={8.924400}: enqueue packet 444 (accum_skew_us = 44400) +sys={8.944500}, mono={8.944500}: enqueue packet 445 (accum_skew_us = 44500) +sys={8.964600}, mono={8.964600}: enqueue packet 446 (accum_skew_us = 44600) +sys={8.984700}, mono={8.984700}: enqueue packet 447 (accum_skew_us = 44700) +sys={9.004800}, mono={9.004800}: enqueue packet 448 (accum_skew_us = 44800) +sys={9.024900}, mono={9.024900}: enqueue packet 449 (accum_skew_us = 44900) OK: Test passed diff --git a/tests/jibuf/jibuf_tool.c b/tests/jibuf/jibuf_tool.c index dcfd130..bbba18d 100644 --- a/tests/jibuf/jibuf_tool.c +++ b/tests/jibuf/jibuf_tool.c @@ -43,6 +43,7 @@ struct timeval tx_prev_time; struct timeval tx_time; uint32_t tx_delay; + int32_t skew_us; struct checkpoint prequeue; struct checkpoint postqueue; }; @@ -56,6 +57,7 @@ static bool opt_debug_human; static bool opt_debug_table; static bool opt_osmux; +static bool opt_skew; static char* opt_pcap_file; uint32_t opt_buffer_min = 60; uint32_t opt_buffer_max = 500; @@ -161,12 +163,12 @@ if (opt_debug_human) { uint32_t total_delay_ms = timeval2ms(&total_delay); LOGP(DLJIBUF, LOGL_DEBUG, "%s: seq=%"PRIu16" ts=%"PRIu32" (%ld.%06ld) tx_delay=%"PRIu32 \ - " end_delay=%"PRIu32" pre_trans=%d pre_jitter=%f post_trans=%d post_jitter=%f\n", + " end_delay=%"PRIu32" pre_trans=%d pre_jitter=%f post_trans=%d post_jitter=%f skew=%"PRId32"\n", info, ntohs(rtph->sequence), ntohl(rtph->timestamp), pinfo->tx_time.tv_sec, pinfo->tx_time.tv_usec, pinfo->tx_delay, total_delay_ms, pinfo->prequeue.transit, pinfo->prequeue.jitter, - pinfo->postqueue.transit, pinfo->postqueue.jitter); + pinfo->postqueue.transit, pinfo->postqueue.jitter, pinfo->skew_us); if (pinfo->prequeue.jitter < pinfo->postqueue.jitter) LOGP(DLJIBUF, LOGL_ERROR, "JITTER HIGHER THAN REF: seq=%"PRIu16" ts=%"PRIu32 \ @@ -186,12 +188,12 @@ uint32_t tx_time_ms = timeval2ms(&pinfo->tx_time); uint32_t prequeue_time_ms = timeval2ms(&pinfo->prequeue.ts); uint32_t postqueue_time_ms = timeval2ms(&pinfo->postqueue.ts); - fprintf(stderr, "%"PRIu16"\t%"PRIu32"\t%"PRIu32"\t%"PRIu32"\t%d\t%d\t%f\t%f\t%"PRIu32"\t%"PRIu32"\n", + fprintf(stderr, "%"PRIu16"\t%"PRIu32"\t%"PRIu32"\t%"PRIu32"\t%d\t%d\t%f\t%f\t%"PRIu32"\t%"PRIu32"\t%f\n", ntohs(rtph->sequence), tx_time_ms, prequeue_time_ms, postqueue_time_ms, pinfo->prequeue.transit, pinfo->postqueue.transit, pinfo->prequeue.jitter, pinfo->postqueue.jitter, - packets_dropped, jb->threshold_delay); + packets_dropped, jb->threshold_delay, (double)jb->skew_us/1000.0); } } @@ -312,6 +314,10 @@ prequeue_prev.seq = htons(rtph->sequence); int n = osmo_jibuf_enqueue(jb, msg); + + /* skew has been updated with this new packet. We pick the updated one + * as it's the one applied to this packet. */ + pinfo->skew_us = jb->skew_us; if (n<0) { pkt_add_result(msg, true); @@ -478,7 +484,7 @@ osmo_jibuf_set_min_delay(jb, GENERATED_JITTER_MS - RTP_FREQ_MS); osmo_jibuf_set_max_delay(jb, GENERATED_JITTER_MS + RTP_FREQ_MS*2); - + osmo_jibuf_enable_skew_compensation(jb, opt_skew); osmo_jibuf_set_dequeue_cb(jb, dequeue_cb, NULL); /* first run */ @@ -518,6 +524,7 @@ osmo_jibuf_set_dequeue_cb(jb, dequeue_cb, NULL); osmo_jibuf_set_min_delay(jb, opt_buffer_min); osmo_jibuf_set_max_delay(jb, opt_buffer_max); + osmo_jibuf_enable_skew_compensation(jb, opt_skew); /* first run */ pcap_pkt_timer_cb(NULL); @@ -532,13 +539,14 @@ static void print_help(void) { - printf("jibuf_test [-r] [-p pcap] [-o] [-d] [-g] [-m ms] [-M ms]\n"); + printf("jibuf_test [-r] [-p pcap] [-o] [-d] [-g] [-s] [-m ms] [-M ms]\n"); printf(" -h Print this help message\n"); printf(" -r Run test with randomly generated jitter\n"); printf(" -p Run test with specified pcap file\n"); printf(" -o The pcap contains OSMUX packets isntead of RTP\n"); printf(" -d Enable packet trace debug suitable for humans\n"); printf(" -t Enable packet trace debug suitable for gnuplot\n"); + printf(" -s Enable skew estimation and compensation algorithm on the jitter-buffer\n"); printf(" -m Minimum buffer size for the jitter-buffer, in ms (only used in -p mode)\n"); printf(" -M Maximum buffer size for the jitter-buffer, in ms (only used in -p mode)\n"); } @@ -547,7 +555,7 @@ { int opt; - while ((opt = getopt(argc, argv, "hdtrop:m:M:")) != -1) { + while ((opt = getopt(argc, argv, "hdtrosp:m:M:")) != -1) { switch (opt) { case 'h': print_help(); @@ -564,6 +572,9 @@ case 'o': opt_osmux = true; break; + case 's': + opt_skew = true; + break; case 'p': opt_pcap_file = strdup(optarg); break; diff --git a/tests/jibuf/jitter.plt b/tests/jibuf/jitter.plt index 0235170..fb606cf 100644 --- a/tests/jibuf/jitter.plt +++ b/tests/jibuf/jitter.plt @@ -33,6 +33,7 @@ '/tmp/bla' using 4:8 with linespoints title 'post.jitter' axes x1y1, \ '/tmp/bla' using 3:9 with linespoints title 'pre.dropped' axes x1y1, \ '/tmp/bla' using 3:10 with linespoints title 'pre.buffer' axes x1y1, \ + '/tmp/bla' using 3:11 with linespoints title 'pre.skew' axes x1y1, \ '/tmp/bla' using 4:((column(4)-column(2))) with linespoints title 'post.delay' axes x1y1 } else { @@ -43,6 +44,7 @@ '/tmp/bla' using 4:8 with linespoints title 'post.jitter' axes x1y1, \ '/tmp/bla' using 3:9 with linespoints title 'pre.dropped' axes x1y1, \ '/tmp/bla' using 3:10 with linespoints title 'pre.buffer' axes x1y1, \ + '/tmp/bla' using 3:11 with linespoints title 'pre.skew' axes x1y1, \ '/tmp/bla' using 3:((column(3)-column(2))) with linespoints title 'pre.delay' axes x1y1, \ '/tmp/bla' using 4:((column(4)-column(2))) with linespoints title 'post.delay' axes x1y1 } -- To view, visit https://gerrit.osmocom.org/7781 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Ifae633d53107417a8e2f9b0f200d2711db72d199 Gerrit-PatchSet: 1 Gerrit-Project: libosmo-netif Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol From gerrit-no-reply at lists.osmocom.org Thu Apr 12 13:33:07 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Thu, 12 Apr 2018 13:33:07 +0000 Subject: [PATCH] libosmo-netif[master]: osmux: osmux_xfrm_output_pull: Improve checks and log of mal... Message-ID: Review at https://gerrit.osmocom.org/7782 osmux: osmux_xfrm_output_pull: Improve checks and log of malformed packets Related: SYS#4182 Change-Id: I7dc3aa2b699a783d86aa9a9452b9e74084d7a97f --- M src/osmux.c 1 file changed, 11 insertions(+), 5 deletions(-) git pull ssh://gerrit.osmocom.org:29418/libosmo-netif refs/changes/82/7782/1 diff --git a/src/osmux.c b/src/osmux.c index a0563d2..03db469 100644 --- a/src/osmux.c +++ b/src/osmux.c @@ -85,8 +85,13 @@ case OSMUX_FT_VOICE_AMR: break; case OSMUX_FT_DUMMY: - msgb_pull(msg, osmux_ft_dummy_size(osmuxh->amr_ft, - osmuxh->ctr + 1)); + len = osmux_ft_dummy_size(osmuxh->amr_ft, osmuxh->ctr + 1); + if (msgb_length(msg) < len) { + LOGP(DLMUX, LOGL_ERROR, "Discarding bad Dummy FT: %s\n", + osmo_hexdump(msg->data, msgb_length(msg))); + return NULL; + } + msgb_pull(msg, len); goto next; default: LOGP(DLMUX, LOGL_ERROR, "Discarding unsupported Osmux FT %d\n", @@ -102,9 +107,10 @@ len = osmo_amr_bytes(osmuxh->amr_ft) * (osmuxh->ctr+1) + sizeof(struct osmux_hdr); - if (len > msg->len) { - LOGP(DLMUX, LOGL_ERROR, "Discarding malformed " - "OSMUX message\n"); + if (msgb_length(msg) < len) { + LOGP(DLMUX, LOGL_ERROR, + "Discarding malformed OSMUX message: %s\n", + osmo_hexdump(msg->data, msgb_length(msg))); return NULL; } -- To view, visit https://gerrit.osmocom.org/7782 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I7dc3aa2b699a783d86aa9a9452b9e74084d7a97f Gerrit-PatchSet: 1 Gerrit-Project: libosmo-netif Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol From gerrit-no-reply at lists.osmocom.org Thu Apr 12 13:33:46 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Thu, 12 Apr 2018 13:33:46 +0000 Subject: [ABANDON] libosmo-netif[master]: osmux: osmux_xfrm_output_pull: Improve checks and log of mal... In-Reply-To: References: Message-ID: Pau Espin Pedrol has abandoned this change. Change subject: osmux: osmux_xfrm_output_pull: Improve checks and log of malformed packets ...................................................................... Abandoned -- To view, visit https://gerrit.osmocom.org/7782 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: abandon Gerrit-Change-Id: I7dc3aa2b699a783d86aa9a9452b9e74084d7a97f Gerrit-PatchSet: 1 Gerrit-Project: libosmo-netif Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol From gerrit-no-reply at lists.osmocom.org Thu Apr 12 13:34:36 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Thu, 12 Apr 2018 13:34:36 +0000 Subject: [PATCH] libosmo-netif[master]: osmux: osmux_xfrm_output_pull: Improve checks and log of mal... Message-ID: Review at https://gerrit.osmocom.org/7783 osmux: osmux_xfrm_output_pull: Improve checks and log of malformed packets Change-Id: I143805bb5ee9f5e3ada46114e380a03ede80df9f Related: SYS#4182 --- M src/osmux.c 1 file changed, 11 insertions(+), 5 deletions(-) git pull ssh://gerrit.osmocom.org:29418/libosmo-netif refs/changes/83/7783/1 diff --git a/src/osmux.c b/src/osmux.c index a0563d2..03db469 100644 --- a/src/osmux.c +++ b/src/osmux.c @@ -85,8 +85,13 @@ case OSMUX_FT_VOICE_AMR: break; case OSMUX_FT_DUMMY: - msgb_pull(msg, osmux_ft_dummy_size(osmuxh->amr_ft, - osmuxh->ctr + 1)); + len = osmux_ft_dummy_size(osmuxh->amr_ft, osmuxh->ctr + 1); + if (msgb_length(msg) < len) { + LOGP(DLMUX, LOGL_ERROR, "Discarding bad Dummy FT: %s\n", + osmo_hexdump(msg->data, msgb_length(msg))); + return NULL; + } + msgb_pull(msg, len); goto next; default: LOGP(DLMUX, LOGL_ERROR, "Discarding unsupported Osmux FT %d\n", @@ -102,9 +107,10 @@ len = osmo_amr_bytes(osmuxh->amr_ft) * (osmuxh->ctr+1) + sizeof(struct osmux_hdr); - if (len > msg->len) { - LOGP(DLMUX, LOGL_ERROR, "Discarding malformed " - "OSMUX message\n"); + if (msgb_length(msg) < len) { + LOGP(DLMUX, LOGL_ERROR, + "Discarding malformed OSMUX message: %s\n", + osmo_hexdump(msg->data, msgb_length(msg))); return NULL; } -- To view, visit https://gerrit.osmocom.org/7783 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I143805bb5ee9f5e3ada46114e380a03ede80df9f Gerrit-PatchSet: 1 Gerrit-Project: libosmo-netif Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol From gerrit-no-reply at lists.osmocom.org Thu Apr 12 13:35:40 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Thu, 12 Apr 2018 13:35:40 +0000 Subject: libosmo-netif[master]: jibuf: Add initial implementation of Jitter Buffer In-Reply-To: References: Message-ID: Patch Set 1: Code-Review-1 Pushed in here as a side effect (wrong branch). Can be reviewed, open for comments, but still shouldn't be merged until further testing is done. -- To view, visit https://gerrit.osmocom.org/7773 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I9688ba9c4d5b733b9f29d0f15f73750f9271ef55 Gerrit-PatchSet: 1 Gerrit-Project: libosmo-netif Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Pau Espin Pedrol Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Thu Apr 12 13:48:15 2018 From: gerrit-no-reply at lists.osmocom.org (Stefan Sperling) Date: Thu, 12 Apr 2018 13:48:15 +0000 Subject: [PATCH] osmo-bsc[master]: fix handling of state changes in acc ramping Message-ID: Review at https://gerrit.osmocom.org/7784 fix handling of state changes in acc ramping Take both the operative and administrative states into account when deciding whether to start ACC ramping, and examine old/new state values to avoid triggering ramping for a no-op state change. This requires a fix to gsm_trx_lock_rf(): This function overwrote the old administrative state of a trx before enqueuing a state change request towards the BTS. The BTS will confirm this request with an ACK, at which time a signal is generated which the ACC ramp code listens to. We must not overwrite the old state value until the signal has been handled, otherwise the signal handler cannot tell what the old state was. Change-Id: Ib3291439655598fb5ddc891a3e4cc35b0bad250f Related: OS#2591 --- M src/libbsc/abis_nm.c M src/libbsc/acc_ramp.c M src/libbsc/bsc_init.c 3 files changed, 72 insertions(+), 28 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-bsc refs/changes/84/7784/1 diff --git a/src/libbsc/abis_nm.c b/src/libbsc/abis_nm.c index 2ee2e24..66eba12 100644 --- a/src/libbsc/abis_nm.c +++ b/src/libbsc/abis_nm.c @@ -2844,13 +2844,17 @@ { uint8_t new_state = locked ? NM_STATE_LOCKED : NM_STATE_UNLOCKED; - LOGP(DNM, LOGL_NOTICE, "(bts=%d,trx=%d) Changing adm. state %s -> %s [%s]\n", trx->bts->nr, trx->nr, + + if (!trx->bts || !trx->bts->oml_link) { + /* Set initial state which will be sent when BTS connects. */ + trx->mo.nm_state.administrative = new_state; + return; + } + + LOGP(DNM, LOGL_NOTICE, "(bts=%d,trx=%d) Requesting administrative state change %s -> %s [%s]\n", + trx->bts->nr, trx->nr, get_value_string(abis_nm_adm_state_names, trx->mo.nm_state.administrative), get_value_string(abis_nm_adm_state_names, new_state), reason); - - trx->mo.nm_state.administrative = new_state; - if (!trx->bts || !trx->bts->oml_link) - return; abis_nm_chg_adm_state(trx->bts, NM_OC_RADIO_CARRIER, trx->bts->bts_nr, trx->nr, 0xff, diff --git a/src/libbsc/acc_ramp.c b/src/libbsc/acc_ramp.c index 7116107..da61094 100644 --- a/src/libbsc/acc_ramp.c +++ b/src/libbsc/acc_ramp.c @@ -28,6 +28,7 @@ #include #include #include +#include /* * Check if an ACC has been permanently barred for a BTS, @@ -144,6 +145,7 @@ struct nm_statechg_signal_data *nsd = signal_data; struct acc_ramp *acc_ramp = handler_data; struct gsm_bts_trx *trx = NULL; + bool trigger_ramping = false, abort_ramping = false; /* Handled signals map to an Administrative State Change ACK, or a State Changed Event Report. */ if (signal != S_NM_STATECHG_ADM && signal != S_NM_STATECHG_OPER) @@ -154,6 +156,17 @@ trx = nsd->obj; + if (signal == S_NM_STATECHG_ADM) + LOGP(DRSL, LOGL_DEBUG, "(bts=%d,trx=%d) ACC RAMP: administrative state %s -> %s\n", + acc_ramp->bts->nr, trx->nr, + get_value_string(abis_nm_adm_state_names, nsd->old_state->administrative), + get_value_string(abis_nm_adm_state_names, nsd->new_state->administrative)); + else if (signal == S_NM_STATECHG_OPER) + LOGP(DRSL, LOGL_DEBUG, "(bts=%d,trx=%d) ACC RAMP: operational state %s -> %s\n", + acc_ramp->bts->nr, trx->nr, + abis_nm_opstate_name(nsd->old_state->operational), + abis_nm_opstate_name(nsd->new_state->operational)); + /* We only care about state changes of the first TRX. */ if (trx->nr != 0) return 0; @@ -162,29 +175,54 @@ if (trx->rsl_link == NULL) return 0; - /* Trigger or abort ACC ramping based on the new 'RF lock' state of this TRX. */ - switch (nsd->new_state->administrative) { - case NM_STATE_UNLOCKED: - /* - * Do not re-trigger ACC ramping if ramping is already in progress. - * A BTS might send several "unlock" change events: One in the Administrative - * State Change ACK, and/or another in a State Changed Event Report. - * For instance, the nanobts is known to send both. - */ - if (!osmo_timer_pending(&acc_ramp->step_timer)) - acc_ramp_trigger(acc_ramp); - break; - case NM_STATE_LOCKED: - case NM_STATE_SHUTDOWN: - acc_ramp_abort(acc_ramp); - break; - case NM_STATE_NULL: - break; - default: - LOGP(DRSL, LOGL_NOTICE, "(bts=%d) ACC RAMP: unrecognized administrative state '0x%x' reported for TRX 0\n", - acc_ramp->bts->nr, nsd->new_state->administrative); - break; + /* Trigger or abort ACC ramping based on the new state of this TRX. */ + if (nsd->old_state->administrative != nsd->new_state->administrative) { + switch (nsd->new_state->administrative) { + case NM_STATE_UNLOCKED: + if (trx_is_usable(trx)) /* cross-check with operational state */ + trigger_ramping = true; + break; + case NM_STATE_LOCKED: + case NM_STATE_SHUTDOWN: + abort_ramping = true; + break; + case NM_STATE_NULL: + break; + default: + LOGP(DRSL, LOGL_NOTICE, "(bts=%d) ACC RAMP: unrecognized administrative state '0x%x' " + "reported for TRX 0\n", acc_ramp->bts->nr, nsd->new_state->administrative); + break; + } } + if (nsd->old_state->operational != nsd->new_state->operational) { + switch (nsd->new_state->operational) { + case NM_OPSTATE_ENABLED: + /* cross-check with administrative state */ + if (trx->mo.nm_state.administrative == NM_STATE_UNLOCKED) + trigger_ramping = true; + break; + case NM_OPSTATE_DISABLED: + abort_ramping = true; + break; + case NM_OPSTATE_NULL: + break; + default: + LOGP(DRSL, LOGL_NOTICE, "(bts=%d) ACC RAMP: unrecognized operational state '0x%x' " + "reported for TRX 0\n", acc_ramp->bts->nr, nsd->new_state->administrative); + break; + } + } + + /* + * Do not re-trigger ACC ramping if ramping is already in progress. + * A BTS might send several "RF unlock" change events: One in the Administrative + * State Change ACK, and/or another in a State Changed Event Report. + * For instance, the nanobts is known to send both. + */ + if (trigger_ramping && !osmo_timer_pending(&acc_ramp->step_timer)) + acc_ramp_trigger(acc_ramp); + else if (abort_ramping) + acc_ramp_abort(acc_ramp); return 0; } diff --git a/src/libbsc/bsc_init.c b/src/libbsc/bsc_init.c index c357105..429d3c7 100644 --- a/src/libbsc/bsc_init.c +++ b/src/libbsc/bsc_init.c @@ -339,8 +339,10 @@ /* * Trigger ACC ramping before sending system information to BTS. * This ensures that RACH control in system information is configured correctly. + * TRX 0 should be usable and unlocked, otherwise starting ACC ramping is pointless. */ - acc_ramp_trigger(&trx->bts->acc_ramp); + if (trx_is_usable(trx) && trx->mo.nm_state.administrative == NM_STATE_UNLOCKED) + acc_ramp_trigger(&trx->bts->acc_ramp); gsm_bts_trx_set_system_infos(trx); -- To view, visit https://gerrit.osmocom.org/7784 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Ib3291439655598fb5ddc891a3e4cc35b0bad250f Gerrit-PatchSet: 1 Gerrit-Project: osmo-bsc Gerrit-Branch: master Gerrit-Owner: Stefan Sperling From gerrit-no-reply at lists.osmocom.org Thu Apr 12 13:48:59 2018 From: gerrit-no-reply at lists.osmocom.org (Stefan Sperling) Date: Thu, 12 Apr 2018 13:48:59 +0000 Subject: [PATCH] osmo-bsc[master]: fix handling of state changes in acc ramping In-Reply-To: References: Message-ID: fix handling of state changes in acc ramping Take both the operative and administrative states into account when deciding whether to start ACC ramping, and examine old/new state values to avoid triggering ramping for a no-op state change. This requires a fix to gsm_trx_lock_rf(): This function overwrote the old administrative state of a trx before enqueuing a state change request towards the BTS. The BTS will confirm this request with an ACK, at which time a signal is generated which the ACC ramp code listens to. We must not overwrite the old state value until the signal has been handled, otherwise the signal handler cannot tell what the old state was. Tested with a virtphy setup. Still needs to be tested with nanobts and osmo-bts. Change-Id: Ib3291439655598fb5ddc891a3e4cc35b0bad250f Related: OS#2591 --- M src/libbsc/abis_nm.c M src/libbsc/acc_ramp.c M src/libbsc/bsc_init.c 3 files changed, 72 insertions(+), 28 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-bsc refs/changes/84/7784/2 diff --git a/src/libbsc/abis_nm.c b/src/libbsc/abis_nm.c index 2ee2e24..66eba12 100644 --- a/src/libbsc/abis_nm.c +++ b/src/libbsc/abis_nm.c @@ -2844,13 +2844,17 @@ { uint8_t new_state = locked ? NM_STATE_LOCKED : NM_STATE_UNLOCKED; - LOGP(DNM, LOGL_NOTICE, "(bts=%d,trx=%d) Changing adm. state %s -> %s [%s]\n", trx->bts->nr, trx->nr, + + if (!trx->bts || !trx->bts->oml_link) { + /* Set initial state which will be sent when BTS connects. */ + trx->mo.nm_state.administrative = new_state; + return; + } + + LOGP(DNM, LOGL_NOTICE, "(bts=%d,trx=%d) Requesting administrative state change %s -> %s [%s]\n", + trx->bts->nr, trx->nr, get_value_string(abis_nm_adm_state_names, trx->mo.nm_state.administrative), get_value_string(abis_nm_adm_state_names, new_state), reason); - - trx->mo.nm_state.administrative = new_state; - if (!trx->bts || !trx->bts->oml_link) - return; abis_nm_chg_adm_state(trx->bts, NM_OC_RADIO_CARRIER, trx->bts->bts_nr, trx->nr, 0xff, diff --git a/src/libbsc/acc_ramp.c b/src/libbsc/acc_ramp.c index 7116107..da61094 100644 --- a/src/libbsc/acc_ramp.c +++ b/src/libbsc/acc_ramp.c @@ -28,6 +28,7 @@ #include #include #include +#include /* * Check if an ACC has been permanently barred for a BTS, @@ -144,6 +145,7 @@ struct nm_statechg_signal_data *nsd = signal_data; struct acc_ramp *acc_ramp = handler_data; struct gsm_bts_trx *trx = NULL; + bool trigger_ramping = false, abort_ramping = false; /* Handled signals map to an Administrative State Change ACK, or a State Changed Event Report. */ if (signal != S_NM_STATECHG_ADM && signal != S_NM_STATECHG_OPER) @@ -154,6 +156,17 @@ trx = nsd->obj; + if (signal == S_NM_STATECHG_ADM) + LOGP(DRSL, LOGL_DEBUG, "(bts=%d,trx=%d) ACC RAMP: administrative state %s -> %s\n", + acc_ramp->bts->nr, trx->nr, + get_value_string(abis_nm_adm_state_names, nsd->old_state->administrative), + get_value_string(abis_nm_adm_state_names, nsd->new_state->administrative)); + else if (signal == S_NM_STATECHG_OPER) + LOGP(DRSL, LOGL_DEBUG, "(bts=%d,trx=%d) ACC RAMP: operational state %s -> %s\n", + acc_ramp->bts->nr, trx->nr, + abis_nm_opstate_name(nsd->old_state->operational), + abis_nm_opstate_name(nsd->new_state->operational)); + /* We only care about state changes of the first TRX. */ if (trx->nr != 0) return 0; @@ -162,29 +175,54 @@ if (trx->rsl_link == NULL) return 0; - /* Trigger or abort ACC ramping based on the new 'RF lock' state of this TRX. */ - switch (nsd->new_state->administrative) { - case NM_STATE_UNLOCKED: - /* - * Do not re-trigger ACC ramping if ramping is already in progress. - * A BTS might send several "unlock" change events: One in the Administrative - * State Change ACK, and/or another in a State Changed Event Report. - * For instance, the nanobts is known to send both. - */ - if (!osmo_timer_pending(&acc_ramp->step_timer)) - acc_ramp_trigger(acc_ramp); - break; - case NM_STATE_LOCKED: - case NM_STATE_SHUTDOWN: - acc_ramp_abort(acc_ramp); - break; - case NM_STATE_NULL: - break; - default: - LOGP(DRSL, LOGL_NOTICE, "(bts=%d) ACC RAMP: unrecognized administrative state '0x%x' reported for TRX 0\n", - acc_ramp->bts->nr, nsd->new_state->administrative); - break; + /* Trigger or abort ACC ramping based on the new state of this TRX. */ + if (nsd->old_state->administrative != nsd->new_state->administrative) { + switch (nsd->new_state->administrative) { + case NM_STATE_UNLOCKED: + if (trx_is_usable(trx)) /* cross-check with operational state */ + trigger_ramping = true; + break; + case NM_STATE_LOCKED: + case NM_STATE_SHUTDOWN: + abort_ramping = true; + break; + case NM_STATE_NULL: + break; + default: + LOGP(DRSL, LOGL_NOTICE, "(bts=%d) ACC RAMP: unrecognized administrative state '0x%x' " + "reported for TRX 0\n", acc_ramp->bts->nr, nsd->new_state->administrative); + break; + } } + if (nsd->old_state->operational != nsd->new_state->operational) { + switch (nsd->new_state->operational) { + case NM_OPSTATE_ENABLED: + /* cross-check with administrative state */ + if (trx->mo.nm_state.administrative == NM_STATE_UNLOCKED) + trigger_ramping = true; + break; + case NM_OPSTATE_DISABLED: + abort_ramping = true; + break; + case NM_OPSTATE_NULL: + break; + default: + LOGP(DRSL, LOGL_NOTICE, "(bts=%d) ACC RAMP: unrecognized operational state '0x%x' " + "reported for TRX 0\n", acc_ramp->bts->nr, nsd->new_state->administrative); + break; + } + } + + /* + * Do not re-trigger ACC ramping if ramping is already in progress. + * A BTS might send several "RF unlock" change events: One in the Administrative + * State Change ACK, and/or another in a State Changed Event Report. + * For instance, the nanobts is known to send both. + */ + if (trigger_ramping && !osmo_timer_pending(&acc_ramp->step_timer)) + acc_ramp_trigger(acc_ramp); + else if (abort_ramping) + acc_ramp_abort(acc_ramp); return 0; } diff --git a/src/libbsc/bsc_init.c b/src/libbsc/bsc_init.c index c357105..429d3c7 100644 --- a/src/libbsc/bsc_init.c +++ b/src/libbsc/bsc_init.c @@ -339,8 +339,10 @@ /* * Trigger ACC ramping before sending system information to BTS. * This ensures that RACH control in system information is configured correctly. + * TRX 0 should be usable and unlocked, otherwise starting ACC ramping is pointless. */ - acc_ramp_trigger(&trx->bts->acc_ramp); + if (trx_is_usable(trx) && trx->mo.nm_state.administrative == NM_STATE_UNLOCKED) + acc_ramp_trigger(&trx->bts->acc_ramp); gsm_bts_trx_set_system_infos(trx); -- To view, visit https://gerrit.osmocom.org/7784 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newpatchset Gerrit-Change-Id: Ib3291439655598fb5ddc891a3e4cc35b0bad250f Gerrit-PatchSet: 2 Gerrit-Project: osmo-bsc Gerrit-Branch: master Gerrit-Owner: Stefan Sperling Gerrit-Reviewer: Jenkins Builder From gerrit-no-reply at lists.osmocom.org Thu Apr 12 13:50:11 2018 From: gerrit-no-reply at lists.osmocom.org (Stefan Sperling) Date: Thu, 12 Apr 2018 13:50:11 +0000 Subject: [PATCH] osmo-bsc[master]: fix handling of state changes in acc ramping In-Reply-To: References: Message-ID: fix handling of state changes in acc ramping Take both the operative and administrative states into account when deciding whether to start ACC ramping, and examine old/new state values to avoid triggering ramping for a no-op state change. This requires a fix to gsm_trx_lock_rf(): This function overwrote the old administrative state of a trx before enqueuing a state change request towards the BTS. The BTS will confirm this request with an ACK, at which time a signal is generated which the ACC ramp code listens to. We must not overwrite the old state value until the signal has been handled, otherwise the signal handler cannot tell what the old state was. Tested with a virtphy setup. Still needs to be tested with nanobts and osmo-bts. Change-Id: Ib3291439655598fb5ddc891a3e4cc35b0bad250f Related: OS#2591 --- M src/libbsc/abis_nm.c M src/libbsc/acc_ramp.c M src/libbsc/bsc_init.c 3 files changed, 72 insertions(+), 28 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-bsc refs/changes/84/7784/3 diff --git a/src/libbsc/abis_nm.c b/src/libbsc/abis_nm.c index 2ee2e24..e3c4408 100644 --- a/src/libbsc/abis_nm.c +++ b/src/libbsc/abis_nm.c @@ -2844,13 +2844,17 @@ { uint8_t new_state = locked ? NM_STATE_LOCKED : NM_STATE_UNLOCKED; - LOGP(DNM, LOGL_NOTICE, "(bts=%d,trx=%d) Changing adm. state %s -> %s [%s]\n", trx->bts->nr, trx->nr, + + if (!trx->bts || !trx->bts->oml_link) { + /* Set initial state which will be sent when BTS connects. */ + trx->mo.nm_state.administrative = new_state; + return; + } + + LOGP(DNM, LOGL_NOTICE, "(bts=%d,trx=%d) Requesting administrative state change %s -> %s [%s]\n", + trx->bts->nr, trx->nr, get_value_string(abis_nm_adm_state_names, trx->mo.nm_state.administrative), get_value_string(abis_nm_adm_state_names, new_state), reason); - - trx->mo.nm_state.administrative = new_state; - if (!trx->bts || !trx->bts->oml_link) - return; abis_nm_chg_adm_state(trx->bts, NM_OC_RADIO_CARRIER, trx->bts->bts_nr, trx->nr, 0xff, diff --git a/src/libbsc/acc_ramp.c b/src/libbsc/acc_ramp.c index 7116107..da61094 100644 --- a/src/libbsc/acc_ramp.c +++ b/src/libbsc/acc_ramp.c @@ -28,6 +28,7 @@ #include #include #include +#include /* * Check if an ACC has been permanently barred for a BTS, @@ -144,6 +145,7 @@ struct nm_statechg_signal_data *nsd = signal_data; struct acc_ramp *acc_ramp = handler_data; struct gsm_bts_trx *trx = NULL; + bool trigger_ramping = false, abort_ramping = false; /* Handled signals map to an Administrative State Change ACK, or a State Changed Event Report. */ if (signal != S_NM_STATECHG_ADM && signal != S_NM_STATECHG_OPER) @@ -154,6 +156,17 @@ trx = nsd->obj; + if (signal == S_NM_STATECHG_ADM) + LOGP(DRSL, LOGL_DEBUG, "(bts=%d,trx=%d) ACC RAMP: administrative state %s -> %s\n", + acc_ramp->bts->nr, trx->nr, + get_value_string(abis_nm_adm_state_names, nsd->old_state->administrative), + get_value_string(abis_nm_adm_state_names, nsd->new_state->administrative)); + else if (signal == S_NM_STATECHG_OPER) + LOGP(DRSL, LOGL_DEBUG, "(bts=%d,trx=%d) ACC RAMP: operational state %s -> %s\n", + acc_ramp->bts->nr, trx->nr, + abis_nm_opstate_name(nsd->old_state->operational), + abis_nm_opstate_name(nsd->new_state->operational)); + /* We only care about state changes of the first TRX. */ if (trx->nr != 0) return 0; @@ -162,29 +175,54 @@ if (trx->rsl_link == NULL) return 0; - /* Trigger or abort ACC ramping based on the new 'RF lock' state of this TRX. */ - switch (nsd->new_state->administrative) { - case NM_STATE_UNLOCKED: - /* - * Do not re-trigger ACC ramping if ramping is already in progress. - * A BTS might send several "unlock" change events: One in the Administrative - * State Change ACK, and/or another in a State Changed Event Report. - * For instance, the nanobts is known to send both. - */ - if (!osmo_timer_pending(&acc_ramp->step_timer)) - acc_ramp_trigger(acc_ramp); - break; - case NM_STATE_LOCKED: - case NM_STATE_SHUTDOWN: - acc_ramp_abort(acc_ramp); - break; - case NM_STATE_NULL: - break; - default: - LOGP(DRSL, LOGL_NOTICE, "(bts=%d) ACC RAMP: unrecognized administrative state '0x%x' reported for TRX 0\n", - acc_ramp->bts->nr, nsd->new_state->administrative); - break; + /* Trigger or abort ACC ramping based on the new state of this TRX. */ + if (nsd->old_state->administrative != nsd->new_state->administrative) { + switch (nsd->new_state->administrative) { + case NM_STATE_UNLOCKED: + if (trx_is_usable(trx)) /* cross-check with operational state */ + trigger_ramping = true; + break; + case NM_STATE_LOCKED: + case NM_STATE_SHUTDOWN: + abort_ramping = true; + break; + case NM_STATE_NULL: + break; + default: + LOGP(DRSL, LOGL_NOTICE, "(bts=%d) ACC RAMP: unrecognized administrative state '0x%x' " + "reported for TRX 0\n", acc_ramp->bts->nr, nsd->new_state->administrative); + break; + } } + if (nsd->old_state->operational != nsd->new_state->operational) { + switch (nsd->new_state->operational) { + case NM_OPSTATE_ENABLED: + /* cross-check with administrative state */ + if (trx->mo.nm_state.administrative == NM_STATE_UNLOCKED) + trigger_ramping = true; + break; + case NM_OPSTATE_DISABLED: + abort_ramping = true; + break; + case NM_OPSTATE_NULL: + break; + default: + LOGP(DRSL, LOGL_NOTICE, "(bts=%d) ACC RAMP: unrecognized operational state '0x%x' " + "reported for TRX 0\n", acc_ramp->bts->nr, nsd->new_state->administrative); + break; + } + } + + /* + * Do not re-trigger ACC ramping if ramping is already in progress. + * A BTS might send several "RF unlock" change events: One in the Administrative + * State Change ACK, and/or another in a State Changed Event Report. + * For instance, the nanobts is known to send both. + */ + if (trigger_ramping && !osmo_timer_pending(&acc_ramp->step_timer)) + acc_ramp_trigger(acc_ramp); + else if (abort_ramping) + acc_ramp_abort(acc_ramp); return 0; } diff --git a/src/libbsc/bsc_init.c b/src/libbsc/bsc_init.c index c357105..429d3c7 100644 --- a/src/libbsc/bsc_init.c +++ b/src/libbsc/bsc_init.c @@ -339,8 +339,10 @@ /* * Trigger ACC ramping before sending system information to BTS. * This ensures that RACH control in system information is configured correctly. + * TRX 0 should be usable and unlocked, otherwise starting ACC ramping is pointless. */ - acc_ramp_trigger(&trx->bts->acc_ramp); + if (trx_is_usable(trx) && trx->mo.nm_state.administrative == NM_STATE_UNLOCKED) + acc_ramp_trigger(&trx->bts->acc_ramp); gsm_bts_trx_set_system_infos(trx); -- To view, visit https://gerrit.osmocom.org/7784 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newpatchset Gerrit-Change-Id: Ib3291439655598fb5ddc891a3e4cc35b0bad250f Gerrit-PatchSet: 3 Gerrit-Project: osmo-bsc Gerrit-Branch: master Gerrit-Owner: Stefan Sperling Gerrit-Reviewer: Jenkins Builder From gerrit-no-reply at lists.osmocom.org Thu Apr 12 14:16:50 2018 From: gerrit-no-reply at lists.osmocom.org (Neels Hofmeyr) Date: Thu, 12 Apr 2018 14:16:50 +0000 Subject: osmo-hlr[master]: rewrite subscriber_update_notify() without calls into luop In-Reply-To: References: Message-ID: Patch Set 1: (8 comments) This review touches on various topics that are not strictly related to this, especially determining the cn_domain. What I'd like to improve in this patch the most: would it not be easy to factor out the common parts instead of code dup and copy FIXME code around? https://gerrit.osmocom.org/#/c/7743/1//COMMIT_MSG Commit Message: Line 18: advertise itself as an SGSN in the IPA unit name). In the osmo_gsup_message, we have a cn_domain indicator. I suppose our GSUP connection dance doesn't send this to the GSUP server, does it? If we did that, we would save the need to interpret an IPA peer name as PS or not. Also thinking, so far, a GSUP client is always either PS or not, so as soon as we receive the first lu_op request, we can remember the cn_domain globally for that peer. That would also save us from string parsing. (and fail loudly as soon as a peer changes its cn_domain; or allow a peer to collect both ps and cs flags, while practically MSC would just remain cs and SGSN would just remain ps) https://gerrit.osmocom.org/#/c/7743/1/src/hlr.c File src/hlr.c: Line 76: unit_len = osmo_gsup_conn_ccm_get(co, &unit, IPAC_IDTAG_UNITNAME); heh, I wasn't actually aware that we keep the GSUP conn peer info in a tlv ... looks like we might want to decode the key tlvs once upon connecting, instead of every time we revisit it? Line 89: "IMSI='%s': Cannot notify GSUP client, cannot get peer address " slightly confusing nomenclature ... IDTAG_SERNR is an IPA peer name, we call it addr in osmo_gsup_server_ccm_cb(), but that might not be a good choice. The log message could say IPA peer name instead. Line 97: gsup.message_type = OSMO_GSUP_MSGT_INSERT_DATA_REQUEST; (syntactically nicer IMHO, above: struct osmo_gsup_msg gsup = { .message_type = OSMO...., }; Initializes all remaining members to zero.) Line 109: /* XXX Cast to 'char *' avoids a "pointer targets differ in signedness" warning from GCC 7.2.0. */ (does this need an "XXX"? it's ok to cast like this, right?) Line 110: is_ps = (strncmp((char *)unit, "SGSN", 4) == 0); if we do this slightly hacky determination whether the peer is ps or not, I'd really want this to be in one central place upon the peer connecting, and then keep that flag in struct osmo_gsup_conn. (also possible: have one separate central function that does the determination, but again it doesn't make sense to re-determine every time we visit this peer) (hmm, osmo_gsup_conn is defined in osmo-hlr; for some time now we want the osmo_ prefix reserved for libosmocore definitions. just noting. could rename if we had the time) Line 115: instead of wildcard APN */ so this is copied from lu_op_tx_insert_subscr_data(). Now we have the same FIXME twice. I don't see what's so hard about separating common code into a separate function to serve both use cases and avoid code dup? Line 127: /* Send ISD to VLR/SGSN */ (in an aside, the MSC and SGSN are both supposed to have a VLR, this comment wants to say "to MSC/SGSN") -- To view, visit https://gerrit.osmocom.org/7743 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I06c43ece2b48dc63d599000eb6d6d51e08963067 Gerrit-PatchSet: 1 Gerrit-Project: osmo-hlr Gerrit-Branch: master Gerrit-Owner: Stefan Sperling Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Neels Hofmeyr Gerrit-Reviewer: neels Gerrit-HasComments: Yes From gerrit-no-reply at lists.osmocom.org Thu Apr 12 14:36:54 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Thu, 12 Apr 2018 14:36:54 +0000 Subject: [PATCH] libosmo-netif[master]: tests: osmo-pcap-test: Fix pcap includes not found in old ve... Message-ID: Review at https://gerrit.osmocom.org/7785 tests: osmo-pcap-test: Fix pcap includes not found in old versions pcap/dlt.h only exists on newer versions of libpcap. On older versions, same defines are available in pcap/bpf.h, which in newer versions include pcap/dlt.h, so we are always fine include pcap/bpf.h. As a side note, there's a lots of comments in pcap/dlt.h stating that those symbols used to reside in pcap/bpf.h but were moved there at some point. Change-Id: I824671a415eb3f35f480c934b9780ff13510011a --- M tests/osmo-pcap-test/l2_eth.c M tests/osmo-pcap-test/l2_sll.c 2 files changed, 2 insertions(+), 2 deletions(-) git pull ssh://gerrit.osmocom.org:29418/libosmo-netif refs/changes/85/7785/1 diff --git a/tests/osmo-pcap-test/l2_eth.c b/tests/osmo-pcap-test/l2_eth.c index 3171fd7..34f003a 100644 --- a/tests/osmo-pcap-test/l2_eth.c +++ b/tests/osmo-pcap-test/l2_eth.c @@ -12,7 +12,7 @@ #include #include #include -#include +#include #include "proto.h" diff --git a/tests/osmo-pcap-test/l2_sll.c b/tests/osmo-pcap-test/l2_sll.c index 5a600ff..0f44e61 100644 --- a/tests/osmo-pcap-test/l2_sll.c +++ b/tests/osmo-pcap-test/l2_sll.c @@ -12,7 +12,7 @@ #include #include #include -#include +#include #include "proto.h" -- To view, visit https://gerrit.osmocom.org/7785 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I824671a415eb3f35f480c934b9780ff13510011a Gerrit-PatchSet: 1 Gerrit-Project: libosmo-netif Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol From jenkins at lists.osmocom.org Thu Apr 12 15:10:06 2018 From: jenkins at lists.osmocom.org (jenkins at lists.osmocom.org) Date: Thu, 12 Apr 2018 15:10:06 +0000 (UTC) Subject: =?UTF-8?Q?Build_failed_in_Jenkins:_master-asn1c_=C2=BB_a1=3Ddefaul?= =?UTF-8?Q?t,a2=3Ddefault,a3=3Ddefault,osmocom-master-debian9_#89?= Message-ID: <1326704731.275.1523545806509.JavaMail.jenkins@jenkins.osmocom.org> See ------------------------------------------ [...truncated 2.08 KB...] + ./configure checking build system type... x86_64-unknown-linux-gnu checking host system type... x86_64-unknown-linux-gnu checking target system type... x86_64-unknown-linux-gnu checking for a BSD-compatible install... /usr/bin/install -c checking whether build environment is sane... yes checking for gawk... gawk checking whether make sets $(MAKE)... yes checking whether to enable maintainer-specific portions of Makefiles... no checking for style of include used by make... GNU checking for gcc... gcc checking for C compiler default output file name... a.out checking whether the C compiler works... yes checking whether we are cross compiling... no checking for suffix of executables... checking for suffix of object files... o checking whether we are using the GNU C compiler... yes checking whether gcc accepts -g... yes checking for gcc option to accept ISO C89... none needed checking dependency style of gcc... gcc3 checking for a sed that does not truncate output... /bin/sed checking for grep that handles long lines and -e... /bin/grep checking for egrep... /bin/grep -E checking for ld used by gcc... /usr/bin/ld checking if the linker (/usr/bin/ld) is GNU ld... yes checking for /usr/bin/ld option to reload object files... -r checking for BSD-compatible nm... /usr/bin/nm -B checking whether ln -s works... yes checking how to recognise dependent libraries... pass_all checking how to run the C preprocessor... gcc -E checking for ANSI C header files... yes checking for sys/types.h... yes checking for sys/stat.h... yes checking for stdlib.h... yes checking for string.h... yes checking for memory.h... yes checking for strings.h... yes checking for inttypes.h... yes checking for stdint.h... yes checking for unistd.h... yes checking dlfcn.h usability... yes checking dlfcn.h presence... yes checking for dlfcn.h... yes checking for g++... g++ checking whether we are using the GNU C++ compiler... yes checking whether g++ accepts -g... yes checking dependency style of g++... gcc3 checking how to run the C++ preprocessor... g++ -E checking for g77... no checking for f77... no checking for xlf... no checking for frt... no checking for pgf77... no checking for cf77... no checking for fort77... no checking for fl32... no checking for af77... no checking for f90... no checking for xlf90... no checking for pgf90... no checking for pghpf... no checking for epcf90... no checking for gfortran... no checking for g95... no checking for f95... no checking for fort... no checking for xlf95... no checking for ifort... no checking for ifc... no checking for efc... no checking for pgf95... no checking for lf95... no checking for ftn... no checking whether we are using the GNU Fortran 77 compiler... no checking whether accepts -g... no checking the maximum length of command line arguments... 32768 checking command to parse /usr/bin/nm -B output from gcc object... ok checking for objdir... .libs checking for ar... ar checking for ranlib... ranlib checking for strip... strip checking if gcc supports -fno-rtti -fno-exceptions... no checking for gcc option to produce PIC... -fPIC checking if gcc PIC flag -fPIC works... yes checking if gcc static flag -static works... yes checking if gcc supports -c -o file.o... yes checking whether the gcc linker (/usr/bin/ld -m elf_x86_64) supports shared libraries... yes checking whether -lc should be explicitly linked in... no checking dynamic linker characteristics... GNU/Linux ld.so checking how to hardcode library paths into programs... immediate checking whether stripping libraries is possible... yes checking if libtool supports shared libraries... yes checking whether to build shared libraries... yes checking whether to build static libraries... yes configure: creating libtool appending configuration tag "CXX" to libtool checking for ld used by g++... /usr/bin/ld -m elf_x86_64 checking if the linker (/usr/bin/ld -m elf_x86_64) is GNU ld... yes checking whether the g++ linker (/usr/bin/ld -m elf_x86_64) supports shared libraries... yes checking for g++ option to produce PIC... -fPIC checking if g++ PIC flag -fPIC works... yes checking if g++ static flag -static works... yes checking if g++ supports -c -o file.o... yes checking whether the g++ linker (/usr/bin/ld -m elf_x86_64) supports shared libraries... yes checking dynamic linker characteristics... GNU/Linux ld.so checking how to hardcode library paths into programs... immediate appending configuration tag "F77" to libtool checking for autoconf... /usr/bin/autoconf checking for autoheader... /usr/bin/autoheader checking for gcc... (cached) gcc checking whether we are using the GNU C compiler... (cached) yes checking whether gcc accepts -g... (cached) yes checking for gcc option to accept ISO C89... (cached) none needed checking dependency style of gcc... (cached) gcc3 checking how to run the C preprocessor... gcc -E checking for a BSD-compatible install... /usr/bin/install -c checking whether ln -s works... yes checking whether make sets $(MAKE)... (cached) yes checking for bison... bison -y checking for flex... flex checking for yywrap in -lfl... yes checking lex output file root... lex.yy checking whether yytext is a pointer... yes checking for ar... /usr/bin/ar checking for ANSI C header files... (cached) yes checking sys/param.h usability... yes checking sys/param.h presence... yes checking for sys/param.h... yes checking whether byte ordering is bigendian... no checking for off_t... yes checking for size_t... yes checking whether struct tm is in sys/time.h or time.h... time.h checking for intmax_t... yes checking for library containing getopt... none required checking for strtoimax... yes checking for strtoll... yes checking for mergesort... no checking for mkstemps... yes configure: creating ./config.status config.status: creating skeletons/standard-modules/Makefile config.status: creating skeletons/tests/Makefile config.status: creating libasn1compiler/Makefile config.status: creating libasn1parser/Makefile config.status: creating libasn1print/Makefile config.status: creating asn1c/webcgi/Makefile config.status: creating asn1c/tests/Makefile config.status: creating libasn1fix/Makefile config.status: creating skeletons/Makefile config.status: creating examples/Makefile config.status: creating tests/Makefile config.status: creating asn1c/Makefile config.status: creating doc/Makefile config.status: creating asn1c.spec config.status: creating Makefile config.status: creating config.h config.status: executing depfiles commands + make -j 8 make all-recursive make[1]: Entering directory ' Making all in libasn1parser make[2]: Entering directory ' if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1parser.lo -MD -MP -MF ".deps/asn1parser.Tpo" -c -o asn1parser.lo asn1parser.c; \ then mv -f ".deps/asn1parser.Tpo" ".deps/asn1parser.Plo"; else rm -f ".deps/asn1parser.Tpo"; exit 1; fi bison -y -p asn1p_ -d asn1p_y.y if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_l.lo -MD -MP -MF ".deps/asn1p_l.Tpo" -c -o asn1p_l.lo asn1p_l.c; \ then mv -f ".deps/asn1p_l.Tpo" ".deps/asn1p_l.Plo"; else rm -f ".deps/asn1p_l.Tpo"; exit 1; fi if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_module.lo -MD -MP -MF ".deps/asn1p_module.Tpo" -c -o asn1p_module.lo asn1p_module.c; \ then mv -f ".deps/asn1p_module.Tpo" ".deps/asn1p_module.Plo"; else rm -f ".deps/asn1p_module.Tpo"; exit 1; fi if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_oid.lo -MD -MP -MF ".deps/asn1p_oid.Tpo" -c -o asn1p_oid.lo asn1p_oid.c; \ then mv -f ".deps/asn1p_oid.Tpo" ".deps/asn1p_oid.Plo"; else rm -f ".deps/asn1p_oid.Tpo"; exit 1; fi if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_value.lo -MD -MP -MF ".deps/asn1p_value.Tpo" -c -o asn1p_value.lo asn1p_value.c; \ then mv -f ".deps/asn1p_value.Tpo" ".deps/asn1p_value.Plo"; else rm -f ".deps/asn1p_value.Tpo"; exit 1; fi if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_expr.lo -MD -MP -MF ".deps/asn1p_expr.Tpo" -c -o asn1p_expr.lo asn1p_expr.c; \ then mv -f ".deps/asn1p_expr.Tpo" ".deps/asn1p_expr.Plo"; else rm -f ".deps/asn1p_expr.Tpo"; exit 1; fi if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_xports.lo -MD -MP -MF ".deps/asn1p_xports.Tpo" -c -o asn1p_xports.lo asn1p_xports.c; \ then mv -f ".deps/asn1p_xports.Tpo" ".deps/asn1p_xports.Plo"; else rm -f ".deps/asn1p_xports.Tpo"; exit 1; fi asn1p_y.y: warning: 2 shift/reduce conflicts [-Wconflicts-sr] mkdir .libs gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_xports.lo -MD -MP -MF .deps/asn1p_xports.Tpo -c asn1p_xports.c -fPIC -DPIC -o .libs/asn1p_xports.o gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_module.lo -MD -MP -MF .deps/asn1p_module.Tpo -c asn1p_module.c -fPIC -DPIC -o .libs/asn1p_module.o gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_value.lo -MD -MP -MF .deps/asn1p_value.Tpo -c asn1p_value.c -fPIC -DPIC -o .libs/asn1p_value.o gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_expr.lo -MD -MP -MF .deps/asn1p_expr.Tpo -c asn1p_expr.c -fPIC -DPIC -o .libs/asn1p_expr.o gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_l.lo -MD -MP -MF .deps/asn1p_l.Tpo -c asn1p_l.c -fPIC -DPIC -o .libs/asn1p_l.o gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_oid.lo -MD -MP -MF .deps/asn1p_oid.Tpo -c asn1p_oid.c -fPIC -DPIC -o .libs/asn1p_oid.o gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1parser.lo -MD -MP -MF .deps/asn1parser.Tpo -c asn1parser.c -fPIC -DPIC -o .libs/asn1parser.o gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_xports.lo -MD -MP -MF .deps/asn1p_xports.Tpo -c asn1p_xports.c -o asn1p_xports.o >/dev/null 2>&1 gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_module.lo -MD -MP -MF .deps/asn1p_module.Tpo -c asn1p_module.c -o asn1p_module.o >/dev/null 2>&1 gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_oid.lo -MD -MP -MF .deps/asn1p_oid.Tpo -c asn1p_oid.c -o asn1p_oid.o >/dev/null 2>&1 asn1p_l.c:3521:12: warning: 'input' defined but not used [-Wunused-function] static int input() ^~~~~ gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_value.lo -MD -MP -MF .deps/asn1p_value.Tpo -c asn1p_value.c -o asn1p_value.o >/dev/null 2>&1 gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1parser.lo -MD -MP -MF .deps/asn1parser.Tpo -c asn1parser.c -o asn1parser.o >/dev/null 2>&1 if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_constr.lo -MD -MP -MF ".deps/asn1p_constr.Tpo" -c -o asn1p_constr.lo asn1p_constr.c; \ then mv -f ".deps/asn1p_constr.Tpo" ".deps/asn1p_constr.Plo"; else rm -f ".deps/asn1p_constr.Tpo"; exit 1; fi if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_param.lo -MD -MP -MF ".deps/asn1p_param.Tpo" -c -o asn1p_param.lo asn1p_param.c; \ then mv -f ".deps/asn1p_param.Tpo" ".deps/asn1p_param.Plo"; else rm -f ".deps/asn1p_param.Tpo"; exit 1; fi gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_expr.lo -MD -MP -MF .deps/asn1p_expr.Tpo -c asn1p_expr.c -o asn1p_expr.o >/dev/null 2>&1 if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_class.lo -MD -MP -MF ".deps/asn1p_class.Tpo" -c -o asn1p_class.lo asn1p_class.c; \ then mv -f ".deps/asn1p_class.Tpo" ".deps/asn1p_class.Plo"; else rm -f ".deps/asn1p_class.Tpo"; exit 1; fi if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_ref.lo -MD -MP -MF ".deps/asn1p_ref.Tpo" -c -o asn1p_ref.lo asn1p_ref.c; \ then mv -f ".deps/asn1p_ref.Tpo" ".deps/asn1p_ref.Plo"; else rm -f ".deps/asn1p_ref.Tpo"; exit 1; fi gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_constr.lo -MD -MP -MF .deps/asn1p_constr.Tpo -c asn1p_constr.c -fPIC -DPIC -o .libs/asn1p_constr.o gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_param.lo -MD -MP -MF .deps/asn1p_param.Tpo -c asn1p_param.c -fPIC -DPIC -o .libs/asn1p_param.o if test -f y.tab.h; then \ to=`echo "asn1p_y_H" | sed \ -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/' \ -e 's/[^ABCDEFGHIJKLMNOPQRSTUVWXYZ]/_/g'`; \ sed -e "/^#/!b" -e "s/Y_TAB_H/$to/g" -e "s|y\.tab\.h|asn1p_y.h|" \ y.tab.h >asn1p_y.ht; \ rm -f y.tab.h; \ if cmp -s asn1p_y.ht asn1p_y.h; then \ rm -f asn1p_y.ht ;\ else \ mv asn1p_y.ht asn1p_y.h; \ fi; \ fi gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_class.lo -MD -MP -MF .deps/asn1p_class.Tpo -c asn1p_class.c -fPIC -DPIC -o .libs/asn1p_class.o if test -f y.output; then \ mv y.output asn1p_y.output; \ fi sed '/^#/ s|y\.tab\.c|asn1p_y.c|' y.tab.c >asn1p_y.ct && mv asn1p_y.ct asn1p_y.c gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_ref.lo -MD -MP -MF .deps/asn1p_ref.Tpo -c asn1p_ref.c -fPIC -DPIC -o .libs/asn1p_ref.o rm -f y.tab.c if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_y.lo -MD -MP -MF ".deps/asn1p_y.Tpo" -c -o asn1p_y.lo asn1p_y.c; \ then mv -f ".deps/asn1p_y.Tpo" ".deps/asn1p_y.Plo"; else rm -f ".deps/asn1p_y.Tpo"; exit 1; fi gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_param.lo -MD -MP -MF .deps/asn1p_param.Tpo -c asn1p_param.c -o asn1p_param.o >/dev/null 2>&1 gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_constr.lo -MD -MP -MF .deps/asn1p_constr.Tpo -c asn1p_constr.c -o asn1p_constr.o >/dev/null 2>&1 gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_ref.lo -MD -MP -MF .deps/asn1p_ref.Tpo -c asn1p_ref.c -o asn1p_ref.o >/dev/null 2>&1 gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_class.lo -MD -MP -MF .deps/asn1p_class.Tpo -c asn1p_class.c -o asn1p_class.o >/dev/null 2>&1 gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_y.lo -MD -MP -MF .deps/asn1p_y.Tpo -c asn1p_y.c -fPIC -DPIC -o .libs/asn1p_y.o asn1p_y.y: In function 'asn1p_parse': asn1p_y.y:357:13: error: 'param' undeclared (first use in this function) *(void **)param = $1; ^~~~~ asn1p_y.y:357:13: note: each undeclared identifier is reported only once for each function it appears in Makefile:299: recipe for target 'asn1p_y.lo' failed make[2]: *** [asn1p_y.lo] Error 1 make[2]: *** Waiting for unfinished jobs.... gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_l.lo -MD -MP -MF .deps/asn1p_l.Tpo -c asn1p_l.c -o asn1p_l.o >/dev/null 2>&1 make[2]: Leaving directory ' Makefile:302: recipe for target 'all-recursive' failed make[1]: *** [all-recursive] Error 1 make[1]: Leaving directory ' Makefile:212: recipe for target 'all' failed make: *** [all] Error 2 Build step 'Execute shell' marked build as failure [WARNINGS] Skipping publisher since build result is FAILURE From gerrit-no-reply at lists.osmocom.org Thu Apr 12 16:50:29 2018 From: gerrit-no-reply at lists.osmocom.org (Stefan Sperling) Date: Thu, 12 Apr 2018 16:50:29 +0000 Subject: [PATCH] osmo-hlr[master]: rewrite subscriber_update_notify() without calls into luop In-Reply-To: References: Message-ID: Hello Jenkins Builder, I'd like you to reexamine a change. Please visit https://gerrit.osmocom.org/7743 to look at the new patch set (#2). rewrite subscriber_update_notify() without calls into luop This function relied on implementation details of the luop code. Port what is necessary for an independent Insert Subscriber Data Tx operation from the luop code into this function. A next possible step would be to try to merge both of these into a common implementation, but that is left for future work. The TTCN3 test TC_vty_msisdn_isd is still passing (it currently triggers the "circuit switched domain" case because it does not advertise itself as an SGSN in the IPA unit name). Change-Id: I06c43ece2b48dc63d599000eb6d6d51e08963067 Related: OS#2785 --- M src/gsup_server.h M src/hlr.c M src/luop.c 3 files changed, 79 insertions(+), 7 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-hlr refs/changes/43/7743/2 diff --git a/src/gsup_server.h b/src/gsup_server.h index 74062d4..1f40f21 100644 --- a/src/gsup_server.h +++ b/src/gsup_server.h @@ -4,6 +4,7 @@ #include #include #include +#include struct osmo_gsup_conn; @@ -33,6 +34,8 @@ struct tlv_parsed ccm; unsigned int auc_3g_ind; /*!< IND index used for UMTS AKA SQN */ + + enum osmo_gsup_cn_domain cn_domain; /* Set when first Location Update is received. */ }; diff --git a/src/hlr.c b/src/hlr.c index 4fbc268..80330d1 100644 --- a/src/hlr.c +++ b/src/hlr.c @@ -62,19 +62,72 @@ return; llist_for_each_entry(co, &g_hlr->gs->clients, list) { - struct lu_operation *luop = lu_op_alloc_conn(co); - if (!luop) { + struct osmo_gsup_message gsup = { + .message_type = OSMO_GSUP_MSGT_INSERT_DATA_REQUEST + }; + uint8_t *peer; + int peer_len; + uint8_t msisdn_enc[43]; /* TODO use constant; TS 24.008 10.5.4.7 */ + uint8_t apn[APN_MAXLEN]; + int len; + struct msgb *msg_out; + + peer_len = osmo_gsup_conn_ccm_get(co, &peer, IPAC_IDTAG_SERNR); + if (peer_len < 0) { LOGP(DMAIN, LOGL_ERROR, - "IMSI='%s': Cannot notify GSUP client, cannot allocate lu_operation," + "IMSI='%s': Cannot notify GSUP client, cannot get peer name " " for %s:%u\n", subscr->imsi, co && co->conn && co->conn->server? co->conn->server->addr : "unset", co && co->conn && co->conn->server? co->conn->server->port : 0); continue; } - luop->subscr = *subscr; - luop->state = LU_S_LU_RECEIVED; /* Pretend we received a location update. */ - lu_op_tx_insert_subscr_data(luop); - lu_op_free(luop); + + osmo_strlcpy(gsup.imsi, subscr->imsi, GSM23003_IMSI_MAX_DIGITS + 1); + + len = gsm48_encode_bcd_number(msisdn_enc, sizeof(msisdn_enc), 0, subscr->msisdn); + if (len < 1) { + LOGP(DMAIN, LOGL_ERROR, "%s: Error: cannot encode MSISDN '%s'\n", + subscr->imsi, subscr->msisdn); + continue; + } + gsup.msisdn_enc = msisdn_enc; + gsup.msisdn_enc_len = len; + + gsup.cn_domain = co->cn_domain; + if (gsup.cn_domain == OSMO_GSUP_CN_DOMAIN_PS) { + /* FIXME: PDP infos - use more fine-grained access control + instead of wildcard APN */ + len = osmo_apn_from_str(apn, sizeof(apn), "*"); + if (len > 0) { + gsup.pdp_infos[0].apn_enc = apn; + gsup.pdp_infos[0].apn_enc_len = len; + gsup.pdp_infos[0].have_info = 1; + gsup.num_pdp_infos = 1; + /* FIXME: use real value: */ + gsup.pdp_infos[0].context_id = 1; + } + } + + /* Send ISD to MSC/SGSN */ + msg_out = msgb_alloc_headroom(1024+16, 16, "GSUP ISD UPDATE"); + if (msg_out == NULL) { + LOGP(DMAIN, LOGL_ERROR, + "IMSI='%s': Cannot notify GSUP client; could not allocate msg buffer " + " for %s:%u\n", subscr->imsi, + co && co->conn && co->conn->server? co->conn->server->addr : "unset", + co && co->conn && co->conn->server? co->conn->server->port : 0); + continue; + } + + osmo_gsup_encode(msg_out, &gsup); + if (osmo_gsup_addr_send(g_hlr->gs, peer, peer_len, msg_out) < 0) { + LOGP(DMAIN, LOGL_ERROR, + "IMSI='%s': Cannot notify GSUP client; send operation failed " + " for %s:%u\n", subscr->imsi, + co && co->conn && co->conn->server? co->conn->server->addr : "unset", + co && co->conn && co->conn->server? co->conn->server->port : 0); + continue; + } } } diff --git a/src/luop.c b/src/luop.c index 02c41d0..4236dd6 100644 --- a/src/luop.c +++ b/src/luop.c @@ -129,6 +129,8 @@ { uint8_t *peer_addr; struct lu_operation *luop = lu_op_alloc(conn->server); + uint8_t *unit; + int unit_len; int rc = osmo_gsup_conn_ccm_get(conn, &peer_addr, IPAC_IDTAG_SERNR); if (rc < 0) { lu_op_free(luop); @@ -137,6 +139,20 @@ luop->peer = talloc_memdup(luop, peer_addr, rc); + unit_len = osmo_gsup_conn_ccm_get(conn, &unit, IPAC_IDTAG_UNITNAME); + if (conn->cn_domain == 0) { + if (unit_len >= 0) { + /* + * The cast to 'char *' avoids a "pointer targets differ in signedness" + * warning from GCC 7.2.0. + */ + bool is_sgsn = (strncmp((char *)unit, "SGSN", 4) == 0); + conn->cn_domain = is_sgsn ? OSMO_GSUP_CN_DOMAIN_PS : OSMO_GSUP_CN_DOMAIN_CS; + } else { + /* fall back to circuit-switched */ + conn->cn_domain = OSMO_GSUP_CN_DOMAIN_CS; + } + } return luop; } -- To view, visit https://gerrit.osmocom.org/7743 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newpatchset Gerrit-Change-Id: I06c43ece2b48dc63d599000eb6d6d51e08963067 Gerrit-PatchSet: 2 Gerrit-Project: osmo-hlr Gerrit-Branch: master Gerrit-Owner: Stefan Sperling Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Neels Hofmeyr Gerrit-Reviewer: neels From gerrit-no-reply at lists.osmocom.org Thu Apr 12 16:51:10 2018 From: gerrit-no-reply at lists.osmocom.org (Stefan Sperling) Date: Thu, 12 Apr 2018 16:51:10 +0000 Subject: osmo-hlr[master]: rewrite subscriber_update_notify() without calls into luop In-Reply-To: References: Message-ID: Patch Set 2: (6 comments) https://gerrit.osmocom.org/#/c/7743/1/src/hlr.c File src/hlr.c: Line 76: if (peer_len < 0) { > heh, I wasn't actually aware that we keep the GSUP conn peer info in a tlv Yes, now done when we receive a location update. Line 89: LOGP(DMAIN, LOGL_ERROR, "%s: Error: cannot encode MSISDN '%s'\n", > slightly confusing nomenclature ... IDTAG_SERNR is an IPA peer name, we cal Fixed. Line 97: if (gsup.cn_domain == OSMO_GSUP_CN_DOMAIN_PS) { > (syntactically nicer IMHO, above: OK. Line 110: > if we do this slightly hacky determination whether the peer is ps or not, I I've added a cn_domain field to the client connection struct. Line 115: "IMSI='%s': Cannot notify GSUP client; could not allocate msg buffer " > so this is copied from lu_op_tx_insert_subscr_data(). Now we have the same I wrote this as a separate function first because when I started out I did not have the slightest idea of what this function would look like when isolated from luop. Figuring out how to merge the two would be my next step. Line 127: co && co->conn && co->conn->server? co->conn->server->addr : "unset", > (in an aside, the MSC and SGSN are both supposed to have a VLR, this commen Fixed. -- To view, visit https://gerrit.osmocom.org/7743 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I06c43ece2b48dc63d599000eb6d6d51e08963067 Gerrit-PatchSet: 2 Gerrit-Project: osmo-hlr Gerrit-Branch: master Gerrit-Owner: Stefan Sperling Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Neels Hofmeyr Gerrit-Reviewer: Stefan Sperling Gerrit-Reviewer: neels Gerrit-HasComments: Yes From gerrit-no-reply at lists.osmocom.org Thu Apr 12 17:29:50 2018 From: gerrit-no-reply at lists.osmocom.org (Neels Hofmeyr) Date: Thu, 12 Apr 2018 17:29:50 +0000 Subject: [ABANDON] osmo-ttcn3-hacks[master]: */regen_makefile.sh: drop multiple naming of main ttcn file In-Reply-To: References: Message-ID: Neels Hofmeyr has abandoned this change. Change subject: */regen_makefile.sh: drop multiple naming of main ttcn file ...................................................................... Abandoned -- To view, visit https://gerrit.osmocom.org/7771 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: abandon Gerrit-Change-Id: I94f37d64198ce2e36c5cd8892ccd33987e1fba32 Gerrit-PatchSet: 2 Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Neels Hofmeyr Gerrit-Reviewer: Pau Espin Pedrol From gerrit-no-reply at lists.osmocom.org Thu Apr 12 17:30:17 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Thu, 12 Apr 2018 17:30:17 +0000 Subject: osmo-bsc[master]: fix handling of state changes in acc ramping In-Reply-To: References: Message-ID: Patch Set 3: Code-Review-1 (5 comments) https://gerrit.osmocom.org/#/c/7784/3/src/libbsc/acc_ramp.c File src/libbsc/acc_ramp.c: Line 182: if (trx_is_usable(trx)) /* cross-check with operational state */ As discussed a few mins ago, when coming from S_NM_STATECHG_OPER signal in abis_nm_rx_statechg_rep, it can be that both operational and administrative status change at the same time (same call to this function). Case: admin LOCKED->UNLOCKED + oper DISABLED->ENABLED, we are not enabling ramping here because trx_is_usable() probably checks the current/old status which is still DISABLED. Line 190: break; we can probably removed this break to print an error too, unless NULL is really a valid state from the spec point of view (one to which we can change to). Line 201: if (trx->mo.nm_state.administrative == NM_STATE_UNLOCKED) Again, we need to check after the new one as it could have be different than the old/current one. Line 208: break; same, remove break? Line 222: if (trigger_ramping && !osmo_timer_pending(&acc_ramp->step_timer)) do we really need this osmo_timer_pending check here? This should never happen right? better move it inside the if() and add an OSMO_ASSERT() with it. -- To view, visit https://gerrit.osmocom.org/7784 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Ib3291439655598fb5ddc891a3e4cc35b0bad250f Gerrit-PatchSet: 3 Gerrit-Project: osmo-bsc Gerrit-Branch: master Gerrit-Owner: Stefan Sperling Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Pau Espin Pedrol Gerrit-HasComments: Yes From gerrit-no-reply at lists.osmocom.org Thu Apr 12 19:33:35 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Thu, 12 Apr 2018 19:33:35 +0000 Subject: libosmo-netif[master]: tests: osmo-pcap-test: Fix pcap includes not found in old ve... In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7785 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I824671a415eb3f35f480c934b9780ff13510011a Gerrit-PatchSet: 1 Gerrit-Project: libosmo-netif Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Thu Apr 12 19:33:37 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Thu, 12 Apr 2018 19:33:37 +0000 Subject: [MERGED] libosmo-netif[master]: tests: osmo-pcap-test: Fix pcap includes not found in old ve... In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: tests: osmo-pcap-test: Fix pcap includes not found in old versions ...................................................................... tests: osmo-pcap-test: Fix pcap includes not found in old versions pcap/dlt.h only exists on newer versions of libpcap. On older versions, same defines are available in pcap/bpf.h, which in newer versions include pcap/dlt.h, so we are always fine include pcap/bpf.h. As a side note, there's a lots of comments in pcap/dlt.h stating that those symbols used to reside in pcap/bpf.h but were moved there at some point. Change-Id: I824671a415eb3f35f480c934b9780ff13510011a --- M tests/osmo-pcap-test/l2_eth.c M tests/osmo-pcap-test/l2_sll.c 2 files changed, 2 insertions(+), 2 deletions(-) Approvals: Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/tests/osmo-pcap-test/l2_eth.c b/tests/osmo-pcap-test/l2_eth.c index 3171fd7..34f003a 100644 --- a/tests/osmo-pcap-test/l2_eth.c +++ b/tests/osmo-pcap-test/l2_eth.c @@ -12,7 +12,7 @@ #include #include #include -#include +#include #include "proto.h" diff --git a/tests/osmo-pcap-test/l2_sll.c b/tests/osmo-pcap-test/l2_sll.c index 5a600ff..0f44e61 100644 --- a/tests/osmo-pcap-test/l2_sll.c +++ b/tests/osmo-pcap-test/l2_sll.c @@ -12,7 +12,7 @@ #include #include #include -#include +#include #include "proto.h" -- To view, visit https://gerrit.osmocom.org/7785 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: I824671a415eb3f35f480c934b9780ff13510011a Gerrit-PatchSet: 1 Gerrit-Project: libosmo-netif Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder From gerrit-no-reply at lists.osmocom.org Thu Apr 12 19:33:52 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Thu, 12 Apr 2018 19:33:52 +0000 Subject: libosmo-netif[master]: osmux: osmux_xfrm_output_pull: Improve checks and log of mal... In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7783 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I143805bb5ee9f5e3ada46114e380a03ede80df9f Gerrit-PatchSet: 1 Gerrit-Project: libosmo-netif Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Thu Apr 12 19:33:53 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Thu, 12 Apr 2018 19:33:53 +0000 Subject: [MERGED] libosmo-netif[master]: osmux: osmux_xfrm_output_pull: Improve checks and log of mal... In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: osmux: osmux_xfrm_output_pull: Improve checks and log of malformed packets ...................................................................... osmux: osmux_xfrm_output_pull: Improve checks and log of malformed packets Change-Id: I143805bb5ee9f5e3ada46114e380a03ede80df9f Related: SYS#4182 --- M src/osmux.c 1 file changed, 11 insertions(+), 5 deletions(-) Approvals: Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/src/osmux.c b/src/osmux.c index a0563d2..03db469 100644 --- a/src/osmux.c +++ b/src/osmux.c @@ -85,8 +85,13 @@ case OSMUX_FT_VOICE_AMR: break; case OSMUX_FT_DUMMY: - msgb_pull(msg, osmux_ft_dummy_size(osmuxh->amr_ft, - osmuxh->ctr + 1)); + len = osmux_ft_dummy_size(osmuxh->amr_ft, osmuxh->ctr + 1); + if (msgb_length(msg) < len) { + LOGP(DLMUX, LOGL_ERROR, "Discarding bad Dummy FT: %s\n", + osmo_hexdump(msg->data, msgb_length(msg))); + return NULL; + } + msgb_pull(msg, len); goto next; default: LOGP(DLMUX, LOGL_ERROR, "Discarding unsupported Osmux FT %d\n", @@ -102,9 +107,10 @@ len = osmo_amr_bytes(osmuxh->amr_ft) * (osmuxh->ctr+1) + sizeof(struct osmux_hdr); - if (len > msg->len) { - LOGP(DLMUX, LOGL_ERROR, "Discarding malformed " - "OSMUX message\n"); + if (msgb_length(msg) < len) { + LOGP(DLMUX, LOGL_ERROR, + "Discarding malformed OSMUX message: %s\n", + osmo_hexdump(msg->data, msgb_length(msg))); return NULL; } -- To view, visit https://gerrit.osmocom.org/7783 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: I143805bb5ee9f5e3ada46114e380a03ede80df9f Gerrit-PatchSet: 2 Gerrit-Project: libosmo-netif Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder From gerrit-no-reply at lists.osmocom.org Thu Apr 12 19:34:25 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Thu, 12 Apr 2018 19:34:25 +0000 Subject: libosmo-netif[master]: tests: jibuf_tool: Initial commit In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7774 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I92307c8b1483dd488339771462290aae0ae5689a Gerrit-PatchSet: 1 Gerrit-Project: libosmo-netif Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Thu Apr 12 19:38:12 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Thu, 12 Apr 2018 19:38:12 +0000 Subject: libosmo-netif[master]: jibuf: Add initial implementation of Jitter Buffer In-Reply-To: References: Message-ID: Patch Set 1: Code-Review-1 (5 comments) https://gerrit.osmocom.org/#/c/7773/1/include/osmocom/netif/jibuf.h File include/osmocom/netif/jibuf.h: Line 1: #ifndef _JIBUF_H_ we genearlly use "#pragma once" these days. Line 21: struct jibuf { all new data structures and symbols of osmocom libraries must be prefixed with "osmo_", so it should be an "osmo_jibuf", just like all the API calls below. https://gerrit.osmocom.org/#/c/7773/1/src/jibuf.c File src/jibuf.c: Line 1: /* (C) 2017 by Pau Espin Pedrol copyright is with your employer sysmocom, you can list yourself as the author only, sorry. Line 6: * (at your option) any later version. good idea to add SPDX-License-Identifier to new files right from the beginning. https://gerrit.osmocom.org/#/c/7773/1/tests/jibuf/jibuf_test.c File tests/jibuf/jibuf_test.c: Line 1: /* (C) 207 by Pau Espin Pedrol same as my comments in jibuf.c, plus the year is wrong - or I seriously underestimated your age :P -- To view, visit https://gerrit.osmocom.org/7773 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I9688ba9c4d5b733b9f29d0f15f73750f9271ef55 Gerrit-PatchSet: 1 Gerrit-Project: libosmo-netif Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Pau Espin Pedrol Gerrit-HasComments: Yes From gerrit-no-reply at lists.osmocom.org Thu Apr 12 19:38:35 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Thu, 12 Apr 2018 19:38:35 +0000 Subject: libosmo-netif[master]: tests: jibuf_tool: Initial commit In-Reply-To: References: Message-ID: Patch Set 1: Code-Review-1 (1 comment) https://gerrit.osmocom.org/#/c/7774/1/tests/jibuf/jibuf_tool.c File tests/jibuf/jibuf_tool.c: Line 1: /* (C) 2017 by Pau Espin Pedrol same copyright + spdx comment as elsewhere -- To view, visit https://gerrit.osmocom.org/7774 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I92307c8b1483dd488339771462290aae0ae5689a Gerrit-PatchSet: 1 Gerrit-Project: libosmo-netif Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-HasComments: Yes From gerrit-no-reply at lists.osmocom.org Thu Apr 12 19:39:58 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Thu, 12 Apr 2018 19:39:58 +0000 Subject: osmo-msc[master]: refactor VLR FSM result handling In-Reply-To: References: Message-ID: Patch Set 3: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7709 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I27bf8d68737ff1f8dc6d11fb1eac3d391aab0cb1 Gerrit-PatchSet: 3 Gerrit-Project: osmo-msc Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Thu Apr 12 19:40:01 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Thu, 12 Apr 2018 19:40:01 +0000 Subject: [MERGED] osmo-msc[master]: refactor VLR FSM result handling In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: refactor VLR FSM result handling ...................................................................... refactor VLR FSM result handling Instead of keeping separate enums for FSM results and translating between those and the actual 04.08 reject causes that will ultimately reach the MS, just pass enum gsm48_reject_value cause codes around everywhere. Collapse some VLR *_timeout() and *_cancel() api to just *_cancel() with a gsm48 cause arg. (Hopefully) improve a few reject causes, but otherwise just aim for more transparent decisions on which cause value is used, for future fixes of returned causes. Depends: I6661f139e68a498fb1bef10c266c2f064b72774a (libosmocore) Change-Id: I27bf8d68737ff1f8dc6d11fb1eac3d391aab0cb1 --- M include/osmocom/msc/vlr.h M src/libmsc/gsm_04_08.c M src/libmsc/subscr_conn.c M src/libvlr/vlr.c M src/libvlr/vlr_access_req_fsm.c M src/libvlr/vlr_auth_fsm.c M src/libvlr/vlr_auth_fsm.h M src/libvlr/vlr_lu_fsm.c M tests/msc_vlr/msc_vlr_test_authen_reuse.err M tests/msc_vlr/msc_vlr_test_call.err M tests/msc_vlr/msc_vlr_test_gsm_authen.err M tests/msc_vlr/msc_vlr_test_gsm_ciph.err M tests/msc_vlr/msc_vlr_test_hlr_reject.err M tests/msc_vlr/msc_vlr_test_hlr_timeout.err M tests/msc_vlr/msc_vlr_test_ms_timeout.err M tests/msc_vlr/msc_vlr_test_no_authen.err M tests/msc_vlr/msc_vlr_test_reject_concurrency.c M tests/msc_vlr/msc_vlr_test_reject_concurrency.err M tests/msc_vlr/msc_vlr_test_rest.err M tests/msc_vlr/msc_vlr_test_umts_authen.err M tests/msc_vlr/msc_vlr_tests.c 21 files changed, 487 insertions(+), 512 deletions(-) Approvals: Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/include/osmocom/msc/vlr.h b/include/osmocom/msc/vlr.h index 96bfa2f..0a9ef6f 100644 --- a/include/osmocom/msc/vlr.h +++ b/include/osmocom/msc/vlr.h @@ -170,8 +170,6 @@ } cs; }; -enum vlr_proc_arq_result; - enum vlr_ciph { VLR_CIPH_NONE, /*< A5/0, no encryption */ VLR_CIPH_A5_1, /*< A5/1, encryption */ @@ -208,9 +206,9 @@ int (*tx_id_req)(void *msc_conn_ref, uint8_t mi_type); int (*tx_lu_acc)(void *msc_conn_ref, uint32_t send_tmsi); - int (*tx_lu_rej)(void *msc_conn_ref, uint8_t cause); + int (*tx_lu_rej)(void *msc_conn_ref, enum gsm48_reject_value cause); int (*tx_cm_serv_acc)(void *msc_conn_ref); - int (*tx_cm_serv_rej)(void *msc_conn_ref, enum vlr_proc_arq_result result); + int (*tx_cm_serv_rej)(void *msc_conn_ref, enum gsm48_reject_value cause); int (*set_ciph_mode)(void *msc_conn_ref, bool umts_aka, bool retrieve_imeisv); @@ -275,7 +273,9 @@ bool is_r99, bool is_utran, bool assign_tmsi); -void vlr_loc_update_conn_timeout(struct osmo_fsm_inst *fi); +void vlr_loc_update_cancel(struct osmo_fsm_inst *fi, + enum osmo_fsm_term_cause fsm_cause, + uint8_t gsm48_cause); /* tell the VLR that the subscriber connection is gone */ int vlr_subscr_disconnected(struct vlr_subscr *vsub); @@ -288,7 +288,6 @@ void vlr_subscr_rx_ciph_res(struct vlr_subscr *vsub, struct vlr_ciph_result *res); int vlr_subscr_rx_tmsi_reall_compl(struct vlr_subscr *vsub); int vlr_subscr_rx_imsi_detach(struct vlr_subscr *vsub); -void vlr_subscr_conn_timeout(struct vlr_subscr *vsub); struct vlr_instance *vlr_alloc(void *ctx, const struct vlr_ops *ops); int vlr_start(const char *gsup_unit_name, struct vlr_instance *vlr, @@ -376,28 +375,12 @@ int vlr_subscr_changed(struct vlr_subscr *vsub); int vlr_subscr_purge(struct vlr_subscr *vsub) __attribute__((warn_unused_result)); -void vlr_subscr_cancel(struct vlr_subscr *vsub, enum gsm48_gmm_cause cause); +void vlr_subscr_cancel_attach_fsm(struct vlr_subscr *vsub, + enum osmo_fsm_term_cause fsm_cause, + uint8_t gsm48_cause); /* Process Acccess Request FSM */ - -enum vlr_proc_arq_result { - VLR_PR_ARQ_RES_NONE, - VLR_PR_ARQ_RES_SYSTEM_FAILURE, - VLR_PR_ARQ_RES_ILLEGAL_SUBSCR, - VLR_PR_ARQ_RES_UNIDENT_SUBSCR, - VLR_PR_ARQ_RES_ROAMING_NOTALLOWED, - VLR_PR_ARQ_RES_ILLEGAL_EQUIP, - VLR_PR_ARQ_RES_UNKNOWN_ERROR, - VLR_PR_ARQ_RES_TIMEOUT, - VLR_PR_ARQ_RES_PASSED, -}; - -extern const struct value_string vlr_proc_arq_result_names[]; -static inline const char *vlr_proc_arq_result_name(enum vlr_proc_arq_result res) -{ - return get_value_string(vlr_proc_arq_result_names, res); -} enum proc_arq_vlr_event { PR_ARQ_E_START, @@ -431,7 +414,9 @@ bool ciphering_required, bool is_r99, bool is_utran); -void vlr_parq_conn_timeout(struct osmo_fsm_inst *fi); +void vlr_parq_cancel(struct osmo_fsm_inst *fi, + enum osmo_fsm_term_cause fsm_cause, + enum gsm48_reject_value gsm48_cause); void vlr_parq_fsm_init(void); diff --git a/src/libmsc/gsm_04_08.c b/src/libmsc/gsm_04_08.c index b51fd16..2b8e4c1 100644 --- a/src/libmsc/gsm_04_08.c +++ b/src/libmsc/gsm_04_08.c @@ -644,7 +644,7 @@ } static int msc_vlr_tx_cm_serv_acc(void *msc_conn_ref); -static int msc_vlr_tx_cm_serv_rej(void *msc_conn_ref, enum vlr_proc_arq_result result); +static int msc_vlr_tx_cm_serv_rej(void *msc_conn_ref, enum gsm48_reject_value result); static int cm_serv_reuse_conn(struct gsm_subscriber_connection *conn, const uint8_t *mi_lv) { @@ -675,7 +675,7 @@ LOGP(DMM, LOGL_ERROR, "%s: CM Service Request with mismatching mobile identity: %s %s\n", vlr_subscr_name(conn->vsub), gsm48_mi_type_name(mi_type), mi_string); - msc_vlr_tx_cm_serv_rej(conn, VLR_PR_ARQ_RES_ILLEGAL_SUBSCR); + msc_vlr_tx_cm_serv_rej(conn, GSM48_REJECT_ILLEGAL_MS); return -EINVAL; accept_reuse: @@ -774,7 +774,7 @@ if (msc_subscr_conn_is_establishing_auth_ciph(conn)) { LOGP(DMM, LOGL_ERROR, "Cannot accept CM Service Request, conn already busy establishing authenticity\n"); - msc_vlr_tx_cm_serv_rej(conn, VLR_PR_ARQ_RES_UNKNOWN_ERROR); + msc_vlr_tx_cm_serv_rej(conn, GSM48_REJECT_CONGESTION); return -EINVAL; /* or should we accept and note down the service request anyway? */ } @@ -3576,7 +3576,7 @@ } /* VLR asks us to transmit a Location Update Reject */ -static int msc_vlr_tx_lu_rej(void *msc_conn_ref, uint8_t cause) +static int msc_vlr_tx_lu_rej(void *msc_conn_ref, enum gsm48_reject_value cause) { struct gsm_subscriber_connection *conn = msc_conn_ref; return gsm0408_loc_upd_rej(conn, cause); @@ -3605,35 +3605,10 @@ } /* VLR asks us to transmit a CM Service Reject */ -static int msc_vlr_tx_cm_serv_rej(void *msc_conn_ref, enum vlr_proc_arq_result result) +static int msc_vlr_tx_cm_serv_rej(void *msc_conn_ref, enum gsm48_reject_value cause) { - uint8_t cause; struct gsm_subscriber_connection *conn = msc_conn_ref; int rc; - - switch (result) { - default: - case VLR_PR_ARQ_RES_NONE: - case VLR_PR_ARQ_RES_SYSTEM_FAILURE: - case VLR_PR_ARQ_RES_UNKNOWN_ERROR: - cause = GSM48_REJECT_NETWORK_FAILURE; - break; - case VLR_PR_ARQ_RES_ILLEGAL_SUBSCR: - cause = GSM48_REJECT_LOC_NOT_ALLOWED; - break; - case VLR_PR_ARQ_RES_UNIDENT_SUBSCR: - cause = GSM48_REJECT_INVALID_MANDANTORY_INF; - break; - case VLR_PR_ARQ_RES_ROAMING_NOTALLOWED: - cause = GSM48_REJECT_ROAMING_NOT_ALLOWED; - break; - case VLR_PR_ARQ_RES_ILLEGAL_EQUIP: - cause = GSM48_REJECT_ILLEGAL_MS; - break; - case VLR_PR_ARQ_RES_TIMEOUT: - cause = GSM48_REJECT_CONGESTION; - break; - }; rc = msc_gsm48_tx_mm_serv_rej(conn, cause); diff --git a/src/libmsc/subscr_conn.c b/src/libmsc/subscr_conn.c index 9f280bc..1b3b240 100644 --- a/src/libmsc/subscr_conn.c +++ b/src/libmsc/subscr_conn.c @@ -103,8 +103,11 @@ static void log_close_event(struct osmo_fsm_inst *fi, uint32_t event, void *data) { - if (data) - LOGPFSML(fi, LOGL_DEBUG, "Close event, cause %u\n", *(uint32_t*)data); + enum gsm48_reject_value *cause = data; + /* The close event itself is logged by the FSM. We can only add the cause value, if present. */ + if (!cause || !*cause) + return; + LOGPFSML(fi, LOGL_NOTICE, "Close event, cause: %s\n", gsm48_reject_value_name(*cause)); } static void subscr_conn_fsm_new(struct osmo_fsm_inst *fi, uint32_t event, void *data) @@ -250,7 +253,7 @@ LOGPFSML(fi, LOGL_ERROR, "Timeout while releasing, discarding right now\n"); osmo_fsm_inst_term(fi, OSMO_FSM_TERM_TIMEOUT, NULL); } else { - uint32_t cause = GSM_CAUSE_NET_FAIL; + enum gsm48_reject_value cause = GSM48_REJECT_CONGESTION; osmo_fsm_inst_dispatch(fi, SUBSCR_CONN_E_CN_CLOSE, &cause); } return 0; @@ -273,7 +276,7 @@ } /* Cancel all VLR FSMs, if any */ - vlr_subscr_conn_timeout(conn->vsub); + vlr_subscr_cancel_attach_fsm(conn->vsub, OSMO_FSM_TERM_ERROR, GSM48_REJECT_CONGESTION); /* If we're closing in a middle of a trans, we need to clean up */ trans_conn_closed(conn); diff --git a/src/libvlr/vlr.c b/src/libvlr/vlr.c index 3e14593..2d232be 100644 --- a/src/libvlr/vlr.c +++ b/src/libvlr/vlr.c @@ -271,23 +271,19 @@ return vlr_subscr_tx_gsup_message(vsub, &gsup_msg); } -void vlr_subscr_cancel(struct vlr_subscr *vsub, enum gsm48_gmm_cause cause) +void vlr_subscr_cancel_attach_fsm(struct vlr_subscr *vsub, + enum osmo_fsm_term_cause fsm_cause, + uint8_t gsm48_cause) { if (!vsub) return; - if (vsub->lu_fsm) { - if (vsub->lu_fsm->state == VLR_ULA_S_WAIT_HLR_UPD) - osmo_fsm_inst_dispatch(vsub->lu_fsm, - VLR_ULA_E_HLR_LU_RES, - (void*)&cause); - else - osmo_fsm_inst_term(vsub->lu_fsm, OSMO_FSM_TERM_ERROR, - 0); - } - + vlr_subscr_get(vsub); + if (vsub->lu_fsm) + vlr_loc_update_cancel(vsub->lu_fsm, fsm_cause, gsm48_cause); if (vsub->proc_arq_fsm) - osmo_fsm_inst_term(vsub->proc_arq_fsm, OSMO_FSM_TERM_ERROR, 0); + vlr_parq_cancel(vsub->proc_arq_fsm, fsm_cause, gsm48_cause); + vlr_subscr_put(vsub); } /* Call vlr_subscr_cancel(), then completely drop the entry from the VLR */ @@ -803,10 +799,111 @@ return 0; } +static void gmm_cause_to_fsm_and_mm_cause(enum gsm48_gmm_cause gmm_cause, + enum osmo_fsm_term_cause *fsm_cause_p, + enum gsm48_reject_value *gsm48_rej_p) +{ + enum osmo_fsm_term_cause fsm_cause = OSMO_FSM_TERM_ERROR; + enum gsm48_reject_value gsm48_rej = GSM48_REJECT_NETWORK_FAILURE; + switch (gmm_cause) { + case GMM_CAUSE_IMSI_UNKNOWN: + gsm48_rej = GSM48_REJECT_IMSI_UNKNOWN_IN_HLR; + break; + case GMM_CAUSE_ILLEGAL_MS: + gsm48_rej = GSM48_REJECT_ILLEGAL_MS; + break; + case GMM_CAUSE_IMEI_NOT_ACCEPTED: + gsm48_rej = GSM48_REJECT_IMEI_NOT_ACCEPTED; + break; + case GMM_CAUSE_ILLEGAL_ME: + gsm48_rej = GSM48_REJECT_ILLEGAL_ME; + break; + case GMM_CAUSE_GPRS_NOTALLOWED: + gsm48_rej = GSM48_REJECT_GPRS_NOT_ALLOWED; + break; + case GMM_CAUSE_GPRS_OTHER_NOTALLOWED: + gsm48_rej = GSM48_REJECT_SERVICES_NOT_ALLOWED; + break; + case GMM_CAUSE_MS_ID_NOT_DERIVED: + gsm48_rej = GSM48_REJECT_MS_IDENTITY_NOT_DERVIVABLE; + break; + case GMM_CAUSE_IMPL_DETACHED: + gsm48_rej = GSM48_REJECT_IMPLICITLY_DETACHED; + break; + case GMM_CAUSE_PLMN_NOTALLOWED: + gsm48_rej = GSM48_REJECT_PLMN_NOT_ALLOWED; + break; + case GMM_CAUSE_LA_NOTALLOWED: + gsm48_rej = GSM48_REJECT_LOC_NOT_ALLOWED; + break; + case GMM_CAUSE_ROAMING_NOTALLOWED: + gsm48_rej = GSM48_REJECT_ROAMING_NOT_ALLOWED; + break; + case GMM_CAUSE_NO_GPRS_PLMN: + gsm48_rej = GSM48_REJECT_GPRS_NOT_ALLOWED_IN_PLMN; + break; + case GMM_CAUSE_MSC_TEMP_NOTREACH: + gsm48_rej = GSM48_REJECT_MSC_TMP_NOT_REACHABLE; + break; + case GMM_CAUSE_SYNC_FAIL: + gsm48_rej = GSM48_REJECT_SYNCH_FAILURE; + break; + case GMM_CAUSE_CONGESTION: + gsm48_rej = GSM48_REJECT_CONGESTION; + break; + case GMM_CAUSE_SEM_INCORR_MSG: + gsm48_rej = GSM48_REJECT_INCORRECT_MESSAGE; + break; + case GMM_CAUSE_INV_MAND_INFO: + gsm48_rej = GSM48_REJECT_INVALID_MANDANTORY_INF; + break; + case GMM_CAUSE_MSGT_NOTEXIST_NOTIMPL: + gsm48_rej = GSM48_REJECT_MSG_TYPE_NOT_IMPLEMENTED; + break; + case GMM_CAUSE_MSGT_INCOMP_P_STATE: + gsm48_rej = GSM48_REJECT_MSG_TYPE_NOT_COMPATIBLE; + break; + case GMM_CAUSE_IE_NOTEXIST_NOTIMPL: + gsm48_rej = GSM48_REJECT_INF_ELEME_NOT_IMPLEMENTED; + break; + case GMM_CAUSE_COND_IE_ERR: + gsm48_rej = GSM48_REJECT_CONDTIONAL_IE_ERROR; + break; + case GMM_CAUSE_MSG_INCOMP_P_STATE: + gsm48_rej = GSM48_REJECT_MSG_NOT_COMPATIBLE; + break; + case GMM_CAUSE_PROTO_ERR_UNSPEC: + gsm48_rej = GSM48_REJECT_PROTOCOL_ERROR; + break; + + case GMM_CAUSE_NO_SUIT_CELL_IN_LA: + case GMM_CAUSE_MAC_FAIL: + case GMM_CAUSE_GSM_AUTH_UNACCEPT: + case GMM_CAUSE_NOT_AUTH_FOR_CSG: + case GMM_CAUSE_SMS_VIA_GPRS_IN_RA: + case GMM_CAUSE_NO_PDP_ACTIVATED: + case GMM_CAUSE_NET_FAIL: + gsm48_rej = GSM48_REJECT_NETWORK_FAILURE; + break; + } + switch (gmm_cause) { + /* refine any error causes here? */ + default: + fsm_cause = OSMO_FSM_TERM_ERROR; + break; + } + if (fsm_cause_p) + *fsm_cause_p = fsm_cause; + if (gsm48_rej_p) + *gsm48_rej_p = gsm48_rej; +} + /* Handle LOCATION CANCEL request from HLR */ static int vlr_subscr_handle_cancel_req(struct vlr_subscr *vsub, struct osmo_gsup_message *gsup_msg) { + enum gsm48_reject_value gsm48_rej; + enum osmo_fsm_term_cause fsm_cause; struct osmo_gsup_message gsup_reply = {0}; int rc, is_update_procedure = !gsup_msg->cancel_type || gsup_msg->cancel_type == OSMO_GSUP_CANCEL_TYPE_UPDATE; @@ -818,7 +915,8 @@ gsup_reply.message_type = OSMO_GSUP_MSGT_LOCATION_CANCEL_RESULT; rc = vlr_subscr_tx_gsup_message(vsub, &gsup_reply); - vlr_subscr_cancel(vsub, gsup_msg->cause); + gmm_cause_to_fsm_and_mm_cause(gsup_msg->cause, &fsm_cause, &gsm48_rej); + vlr_subscr_cancel_attach_fsm(vsub, fsm_cause, gsm48_rej); return rc; } @@ -998,7 +1096,7 @@ int vlr_subscr_rx_imsi_detach(struct vlr_subscr *vsub) { /* paranoia: should any LU or PARQ FSMs still be running, stop them. */ - vlr_subscr_cancel(vsub, GMM_CAUSE_IMPL_DETACHED); + vlr_subscr_cancel_attach_fsm(vsub, OSMO_FSM_TERM_ERROR, GSM48_REJECT_CONGESTION); vsub->imsi_detached_flag = true; @@ -1015,15 +1113,7 @@ */ void vlr_subscr_conn_timeout(struct vlr_subscr *vsub) { - if (!vsub) - return; - - vlr_subscr_get(vsub); - if (vsub->lu_fsm) - vlr_loc_update_conn_timeout(vsub->lu_fsm); - if (vsub->proc_arq_fsm) - vlr_parq_conn_timeout(vsub->proc_arq_fsm); - vlr_subscr_put(vsub); + vlr_subscr_cancel_attach_fsm(vsub, OSMO_FSM_TERM_TIMEOUT, GSM48_REJECT_CONGESTION); } struct vlr_instance *vlr_alloc(void *ctx, const struct vlr_ops *ops) diff --git a/src/libvlr/vlr_access_req_fsm.c b/src/libvlr/vlr_access_req_fsm.c index 3845f26..dd95821 100644 --- a/src/libvlr/vlr_access_req_fsm.c +++ b/src/libvlr/vlr_access_req_fsm.c @@ -36,19 +36,6 @@ * Process_Access_Request_VLR, TS 29.002 Chapter 25.4.2 ***********************************************************************/ -const struct value_string vlr_proc_arq_result_names[] = { - OSMO_VALUE_STRING(VLR_PR_ARQ_RES_NONE), - OSMO_VALUE_STRING(VLR_PR_ARQ_RES_SYSTEM_FAILURE), - OSMO_VALUE_STRING(VLR_PR_ARQ_RES_ILLEGAL_SUBSCR), - OSMO_VALUE_STRING(VLR_PR_ARQ_RES_UNIDENT_SUBSCR), - OSMO_VALUE_STRING(VLR_PR_ARQ_RES_ROAMING_NOTALLOWED), - OSMO_VALUE_STRING(VLR_PR_ARQ_RES_ILLEGAL_EQUIP), - OSMO_VALUE_STRING(VLR_PR_ARQ_RES_UNKNOWN_ERROR), - OSMO_VALUE_STRING(VLR_PR_ARQ_RES_TIMEOUT), - OSMO_VALUE_STRING(VLR_PR_ARQ_RES_PASSED), - { 0, NULL } -}; - static const struct value_string proc_arq_vlr_event_names[] = { OSMO_VALUE_STRING(PR_ARQ_E_START), OSMO_VALUE_STRING(PR_ARQ_E_ID_IMSI), @@ -73,7 +60,7 @@ void *parent_event_data; enum vlr_parq_type type; - enum vlr_proc_arq_result result; + enum gsm48_reject_value result; /*< 0 on success */ bool by_tmsi; char imsi[16]; uint32_t tmsi; @@ -97,15 +84,20 @@ vlr->ops.subscr_assoc(par->msc_conn_ref, par->vsub); } +static const char *vlr_proc_arq_result_name(const struct osmo_fsm_inst *fi) +{ + struct proc_arq_priv *par = fi->priv; + return par->result? gsm48_reject_value_name(par->result) : "PASSED"; +} + #define proc_arq_fsm_done(fi, res) _proc_arq_fsm_done(fi, res, __FILE__, __LINE__) static void _proc_arq_fsm_done(struct osmo_fsm_inst *fi, - enum vlr_proc_arq_result res, + enum gsm48_reject_value gsm48_rej, const char *file, int line) { struct proc_arq_priv *par = fi->priv; - LOGPFSMSRC(fi, file, line, "proc_arq_fsm_done(%s)\n", - vlr_proc_arq_result_name(res)); - par->result = res; + par->result = gsm48_rej; + LOGPFSMSRC(fi, file, line, "proc_arq_fsm_done(%s)\n", vlr_proc_arq_result_name(fi)); osmo_fsm_inst_state_chg(fi, PR_ARQ_S_DONE, 0, 0); } @@ -115,10 +107,9 @@ struct proc_arq_priv *par = fi->priv; bool success; int rc; - LOGPFSM(fi, "Process Access Request result: %s\n", - vlr_proc_arq_result_name(par->result)); + LOGPFSM(fi, "Process Access Request result: %s\n", vlr_proc_arq_result_name(fi)); - success = (par->result == VLR_PR_ARQ_RES_PASSED); + success = (par->result == 0); /* It would be logical to first dispatch the success event to the * parent FSM, but that could start actions that send messages to the @@ -184,7 +175,7 @@ return; } - proc_arq_fsm_done(fi, VLR_PR_ARQ_RES_PASSED); + proc_arq_fsm_done(fi, 0); } static void _proc_arq_vlr_post_trace(struct osmo_fsm_inst *fi) @@ -228,13 +219,13 @@ if (!vsub->sub_dataconf_by_hlr_ind) { /* Set User Error: Unidentified Subscriber */ - proc_arq_fsm_done(fi, VLR_PR_ARQ_RES_UNIDENT_SUBSCR); + proc_arq_fsm_done(fi, GSM48_REJECT_IMSI_UNKNOWN_IN_HLR); return; } /* We don't feature location area specific blocking (yet). */ if (0 /* roaming not allowed in LA */) { /* Set User Error: Roaming not allowed in this LA */ - proc_arq_fsm_done(fi, VLR_PR_ARQ_RES_ROAMING_NOTALLOWED); + proc_arq_fsm_done(fi, GSM48_REJECT_ROAMING_NOT_ALLOWED); return; } vsub->imsi_detached_flag = false; @@ -302,7 +293,7 @@ break; default: LOGPFSML(fi, LOGL_ERROR, "Cannot start ciphering, security context is not established\n"); - proc_arq_fsm_done(fi, VLR_PR_ARQ_RES_SYSTEM_FAILURE); + proc_arq_fsm_done(fi, GSM48_REJECT_NETWORK_FAILURE); return; } @@ -312,7 +303,7 @@ vsub->vlr->cfg.retrieve_imeisv_ciphered)) { LOGPFSML(fi, LOGL_ERROR, "Failed to send Ciphering Mode Command\n"); - proc_arq_fsm_done(fi, VLR_PR_ARQ_RES_SYSTEM_FAILURE); + proc_arq_fsm_done(fi, GSM48_REJECT_NETWORK_FAILURE); return; } @@ -377,7 +368,7 @@ " terminating the other FSM.\n", vlr_subscr_name(vsub)); proc_arq_fsm_done(vsub->proc_arq_fsm, - VLR_PR_ARQ_RES_SYSTEM_FAILURE); + GSM48_REJECT_NETWORK_FAILURE); } vsub->proc_arq_fsm = fi; assoc_par_with_subscr(fi, vsub); @@ -390,7 +381,7 @@ if (!par->by_tmsi) { /* We couldn't find a subscriber even by IMSI, * Set User Error: Unidentified Subscriber */ - proc_arq_fsm_done(fi, VLR_PR_ARQ_RES_UNIDENT_SUBSCR); + proc_arq_fsm_done(fi, GSM48_REJECT_MS_IDENTITY_NOT_DERVIVABLE); return; } else { /* TMSI was included, are we permitted to use it? */ @@ -401,7 +392,7 @@ return; } else { /* Set User Error: Unidentified Subscriber */ - proc_arq_fsm_done(fi, VLR_PR_ARQ_RES_UNIDENT_SUBSCR); + proc_arq_fsm_done(fi, GSM48_REJECT_MS_IDENTITY_NOT_DERVIVABLE); return; } } @@ -420,7 +411,7 @@ vsub = vlr_subscr_find_by_imsi(vlr, par->imsi); if (!vsub) { /* Set User Error: Unidentified Subscriber */ - proc_arq_fsm_done(fi, VLR_PR_ARQ_RES_UNIDENT_SUBSCR); + proc_arq_fsm_done(fi, GSM48_REJECT_MS_IDENTITY_NOT_DERVIVABLE); return; } assoc_par_with_subscr(fi, vsub); @@ -432,43 +423,17 @@ static void proc_arq_vlr_fn_w_auth(struct osmo_fsm_inst *fi, uint32_t event, void *data) { - enum vlr_auth_fsm_result res; - enum vlr_proc_arq_result ret; + enum gsm48_reject_value *cause = data; OSMO_ASSERT(event == PR_ARQ_E_AUTH_RES); - res = data ? *(enum vlr_auth_fsm_result*)data : -1; - LOGPFSM(fi, "got %s\n", vlr_auth_fsm_result_name(res)); - - switch (res) { - case VLR_AUTH_RES_PASSED: - /* Node 2 */ - _proc_arq_vlr_node2(fi); + if (!cause || *cause) { + proc_arq_fsm_done(fi, cause? *cause : GSM48_REJECT_NETWORK_FAILURE); return; - case VLR_AUTH_RES_ABORTED: - /* Error */ - ret = VLR_PR_ARQ_RES_UNKNOWN_ERROR; - break; - case VLR_AUTH_RES_UNKNOWN_SUBSCR: - /* Set User Error: Unidentified Subscriber */ - ret = VLR_PR_ARQ_RES_UNIDENT_SUBSCR; - break; - case VLR_AUTH_RES_AUTH_FAILED: - /* Set User Error: Illegal Subscriber */ - ret = VLR_PR_ARQ_RES_ILLEGAL_SUBSCR; - break; - case VLR_AUTH_RES_PROC_ERR: - /* Set User Error: System failure */ - ret = VLR_PR_ARQ_RES_SYSTEM_FAILURE; - break; - default: - LOGPFSML(fi, LOGL_ERROR, "Unexpected vlr_auth_fsm_result value: %d (data=%p)\n", res, data); - ret = VLR_PR_ARQ_RES_UNKNOWN_ERROR; - break; } - /* send process_access_req response to caller, enter error state */ - proc_arq_fsm_done(fi, ret); + /* Node 2 */ + _proc_arq_vlr_node2(fi); } static void proc_arq_vlr_fn_w_ciph(struct osmo_fsm_inst *fi, @@ -490,12 +455,12 @@ break; case VLR_CIPH_REJECT: LOGPFSM(fi, "ciphering rejected\n"); - proc_arq_fsm_done(fi, VLR_PR_ARQ_RES_ILLEGAL_SUBSCR); + proc_arq_fsm_done(fi, GSM48_REJECT_ILLEGAL_MS); return; default: LOGPFSML(fi, LOGL_ERROR, "invalid ciphering result: %d\n", res.cause); - proc_arq_fsm_done(fi, VLR_PR_ARQ_RES_ILLEGAL_SUBSCR); + proc_arq_fsm_done(fi, GSM48_REJECT_ILLEGAL_MS); return; } @@ -549,7 +514,7 @@ OSMO_ASSERT(event == PR_ARQ_E_TMSI_ACK); /* FIXME: check confirmation? unfreeze? */ - proc_arq_fsm_done(fi, VLR_PR_ARQ_RES_PASSED); + proc_arq_fsm_done(fi, 0); } static const struct osmo_fsm_state proc_arq_vlr_states[] = { @@ -722,8 +687,7 @@ case GSM_MI_TYPE_IMEI: /* TODO: IMEI (emergency call) */ default: - /* FIXME: directly send reject? */ - proc_arq_fsm_done(fi, VLR_PR_ARQ_RES_UNIDENT_SUBSCR); + proc_arq_fsm_done(fi, GSM48_REJECT_MS_IDENTITY_NOT_DERVIVABLE); return; } @@ -732,12 +696,14 @@ /* Gracefully terminate an FSM created by vlr_proc_acc_req() in case of * external timeout (i.e. from MSC). */ -void vlr_parq_conn_timeout(struct osmo_fsm_inst *fi) +void vlr_parq_cancel(struct osmo_fsm_inst *fi, + enum osmo_fsm_term_cause fsm_cause, + enum gsm48_reject_value gsm48_cause) { if (!fi || fi->state == PR_ARQ_S_DONE) return; - LOGPFSM(fi, "Connection timed out\n"); - proc_arq_fsm_done(fi, VLR_PR_ARQ_RES_TIMEOUT); + LOGPFSM(fi, "Cancel: %s\n", osmo_fsm_term_cause_name(fsm_cause)); + proc_arq_fsm_done(fi, gsm48_cause); } diff --git a/src/libvlr/vlr_auth_fsm.c b/src/libvlr/vlr_auth_fsm.c index f001eac..d5a8555 100644 --- a/src/libvlr/vlr_auth_fsm.c +++ b/src/libvlr/vlr_auth_fsm.c @@ -42,15 +42,6 @@ { 0, NULL } }; -const struct value_string vlr_auth_fsm_result_names[] = { - OSMO_VALUE_STRING(VLR_AUTH_RES_ABORTED), - OSMO_VALUE_STRING(VLR_AUTH_RES_UNKNOWN_SUBSCR), - OSMO_VALUE_STRING(VLR_AUTH_RES_PROC_ERR), - OSMO_VALUE_STRING(VLR_AUTH_RES_AUTH_FAILED), - OSMO_VALUE_STRING(VLR_AUTH_RES_PASSED), - {0, NULL} -}; - /* private state of the auth_fsm_instance */ struct auth_fsm_priv { struct vlr_subscr *vsub; @@ -239,23 +230,30 @@ } } +static const char *vlr_auth_fsm_result_name(enum gsm48_reject_value result) +{ + if (!result) + return "PASSED"; + return get_value_string(gsm48_gmm_cause_names, result); +} + /* Terminate the Auth FSM Instance and notify parent */ -static void auth_fsm_term(struct osmo_fsm_inst *fi, enum vlr_auth_fsm_result res) +static void auth_fsm_term(struct osmo_fsm_inst *fi, enum gsm48_reject_value result) { struct auth_fsm_priv *afp = fi->priv; struct vlr_subscr *vsub = afp->vsub; LOGPFSM(fi, "Authentication terminating with result %s\n", - vlr_auth_fsm_result_name(res)); + vlr_auth_fsm_result_name(result)); /* Do one final state transition (mostly for logging purpose) */ - if (res == VLR_AUTH_RES_PASSED) + if (!result) osmo_fsm_inst_state_chg(fi, VLR_SUB_AS_AUTHENTICATED, 0, 0); else osmo_fsm_inst_state_chg(fi, VLR_SUB_AS_AUTH_FAILED, 0, 0); /* return the result to the parent FSM */ - osmo_fsm_inst_term(fi, OSMO_FSM_TERM_REGULAR, &res); + osmo_fsm_inst_term(fi, OSMO_FSM_TERM_REGULAR, &result); vsub->auth_fsm = NULL; } @@ -274,7 +272,7 @@ LOGPFSML(fi, LOGL_ERROR, "A previous check ensured that an" " auth tuple was available, but now there is in fact" " none.\n"); - auth_fsm_term(fi, VLR_AUTH_RES_PROC_ERR); + auth_fsm_term(fi, GSM48_REJECT_NETWORK_FAILURE); return -1; } @@ -350,7 +348,7 @@ goto pass; } /* result = procedure error */ - auth_fsm_term(fi, VLR_AUTH_RES_PROC_ERR); + auth_fsm_term(fi, GSM48_REJECT_NETWORK_FAILURE); return; } @@ -362,8 +360,8 @@ case VLR_AUTH_E_HLR_SAI_NACK: auth_fsm_term(fi, gsup->cause == GMM_CAUSE_IMSI_UNKNOWN? - VLR_AUTH_RES_UNKNOWN_SUBSCR - : VLR_AUTH_RES_PROC_ERR); + GSM48_REJECT_IMSI_UNKNOWN_IN_HLR + : GSM48_REJECT_NETWORK_FAILURE); break; } @@ -396,10 +394,10 @@ VLR_SUB_AS_WAIT_ID_IMSI, vlr_timer(vlr, 3270), 3270); } else { - auth_fsm_term(fi, VLR_AUTH_RES_AUTH_FAILED); + auth_fsm_term(fi, GSM48_REJECT_ILLEGAL_MS); } } else { - auth_fsm_term(fi, VLR_AUTH_RES_PASSED); + auth_fsm_term(fi, 0); } break; case VLR_AUTH_E_MS_AUTH_FAIL: @@ -411,7 +409,7 @@ VLR_SUB_AS_NEEDS_AUTH_WAIT_SAI_RESYNC, GSM_29002_TIMER_M, 0); } else - auth_fsm_term(fi, VLR_AUTH_RES_AUTH_FAILED); + auth_fsm_term(fi, GSM48_REJECT_ILLEGAL_MS); break; } } @@ -431,7 +429,7 @@ gsup->cause != GMM_CAUSE_IMSI_UNKNOWN) || (event == VLR_AUTH_E_HLR_SAI_ABORT)) { /* result = procedure error */ - auth_fsm_term(fi, VLR_AUTH_RES_PROC_ERR); + auth_fsm_term(fi, GSM48_REJECT_NETWORK_FAILURE); } switch (event) { case VLR_AUTH_E_HLR_SAI_ACK: @@ -441,8 +439,8 @@ case VLR_AUTH_E_HLR_SAI_NACK: auth_fsm_term(fi, gsup->cause == GMM_CAUSE_IMSI_UNKNOWN? - VLR_AUTH_RES_UNKNOWN_SUBSCR - : VLR_AUTH_RES_PROC_ERR); + GSM48_REJECT_IMSI_UNKNOWN_IN_HLR + : GSM48_REJECT_NETWORK_FAILURE); break; } @@ -476,16 +474,16 @@ vlr_timer(vlr, 3270), 3270); } else { /* Result = Aborted */ - auth_fsm_term(fi, VLR_AUTH_RES_ABORTED); + auth_fsm_term(fi, GSM48_REJECT_SYNCH_FAILURE); } } else { /* Result = Pass */ - auth_fsm_term(fi, VLR_AUTH_RES_PASSED); + auth_fsm_term(fi, 0); } break; case VLR_AUTH_E_MS_AUTH_FAIL: /* Second failure: Result = Fail */ - auth_fsm_term(fi, VLR_AUTH_RES_AUTH_FAILED); + auth_fsm_term(fi, GSM48_REJECT_SYNCH_FAILURE); break; } } diff --git a/src/libvlr/vlr_auth_fsm.h b/src/libvlr/vlr_auth_fsm.h index 226435f..618462f 100644 --- a/src/libvlr/vlr_auth_fsm.h +++ b/src/libvlr/vlr_auth_fsm.h @@ -11,21 +11,6 @@ const uint8_t *auts; }; -/* Result communicated back to parent FMS */ -enum vlr_auth_fsm_result { - VLR_AUTH_RES_ABORTED, - VLR_AUTH_RES_UNKNOWN_SUBSCR, - VLR_AUTH_RES_PROC_ERR, - VLR_AUTH_RES_AUTH_FAILED, - VLR_AUTH_RES_PASSED, -}; - -extern const struct value_string vlr_auth_fsm_result_names[]; -static inline const char *vlr_auth_fsm_result_name(enum vlr_auth_fsm_result val) -{ - return get_value_string(vlr_auth_fsm_result_names, val); -} - enum vlr_fsm_auth_event { VLR_AUTH_E_START, /* TS 23.018 OAS_VLR1(2): SendAuthInfo ACK from HLR */ diff --git a/src/libvlr/vlr_lu_fsm.c b/src/libvlr/vlr_lu_fsm.c index 908e0e3..3073bd6 100644 --- a/src/libvlr/vlr_lu_fsm.c +++ b/src/libvlr/vlr_lu_fsm.c @@ -741,11 +741,10 @@ _lu_fsm_done(fi, VLR_FSM_RESULT_SUCCESS); } -static void lu_fsm_failure(struct osmo_fsm_inst *fi, uint8_t rej_cause) +static void lu_fsm_failure(struct osmo_fsm_inst *fi, enum gsm48_reject_value rej_cause) { struct lu_fsm_priv *lfp = lu_fsm_fi_priv(fi); - if (rej_cause) - lfp->vlr->ops.tx_lu_rej(lfp->msc_conn_ref, rej_cause); + lfp->vlr->ops.tx_lu_rej(lfp->msc_conn_ref, rej_cause ? : GSM48_REJECT_NETWORK_FAILURE); _lu_fsm_done(fi, VLR_FSM_RESULT_FAILURE); } @@ -1097,44 +1096,19 @@ void *data) { struct lu_fsm_priv *lfp = lu_fsm_fi_priv(fi); - enum vlr_auth_fsm_result *res = data; - uint8_t rej_cause = 0; + enum gsm48_reject_value *res = data; OSMO_ASSERT(event == VLR_ULA_E_AUTH_RES); lfp->upd_hlr_vlr_fsm = NULL; - if (res) { - switch (*res) { - case VLR_AUTH_RES_PASSED: - /* Result == Pass */ - vlr_loc_upd_post_auth(fi); - return; - case VLR_AUTH_RES_ABORTED: - /* go to Idle with no response */ - rej_cause = 0; - break; - case VLR_AUTH_RES_UNKNOWN_SUBSCR: - /* FIXME: delete subscribe record */ - rej_cause = GSM48_REJECT_IMSI_UNKNOWN_IN_HLR; - break; - case VLR_AUTH_RES_AUTH_FAILED: - /* cause = illegal subscriber */ - rej_cause = GSM48_REJECT_ILLEGAL_MS; - break; - case VLR_AUTH_RES_PROC_ERR: - /* cause = system failure */ - rej_cause = GSM48_REJECT_NETWORK_FAILURE; - break; - default: - LOGPFSML(fi, LOGL_ERROR, "event without effect: %s\n", - osmo_fsm_event_name(fi->fsm, event)); - break; - } - } else - rej_cause = GSM48_REJECT_NETWORK_FAILURE; + if (!res || *res) { + lu_fsm_failure(fi, res? *res : GSM48_REJECT_NETWORK_FAILURE); + return; + } - lu_fsm_failure(fi, rej_cause); + /* Result == Pass */ + vlr_loc_upd_post_auth(fi); } static void lu_fsm_wait_ciph(struct osmo_fsm_inst *fi, uint32_t event, @@ -1489,14 +1463,20 @@ return fi; } -/* Gracefully terminate an FSM created by vlr_loc_update() in case of external - * timeout (i.e. from MSC). */ -void vlr_loc_update_conn_timeout(struct osmo_fsm_inst *fi) +void vlr_loc_update_cancel(struct osmo_fsm_inst *fi, + enum osmo_fsm_term_cause fsm_cause, + uint8_t gsm48_cause) { - if (!fi || fi->state == VLR_ULA_S_DONE) - return; - LOGPFSM(fi, "Connection timed out\n"); - lu_fsm_failure(fi, GSM48_REJECT_CONGESTION); + struct lu_fsm_priv *lfp; + + OSMO_ASSERT(fi); + OSMO_ASSERT(fi->fsm == &vlr_lu_fsm); + + lfp = fi->priv; + lfp->rej_cause = gsm48_cause; + + if (fi->state != VLR_ULA_S_DONE) + lu_fsm_failure(fi, gsm48_cause); } void vlr_lu_fsm_init(void) diff --git a/tests/msc_vlr/msc_vlr_test_authen_reuse.err b/tests/msc_vlr/msc_vlr_test_authen_reuse.err index ddd48eb..7ac510b 100644 --- a/tests/msc_vlr/msc_vlr_test_authen_reuse.err +++ b/tests/msc_vlr/msc_vlr_test_authen_reuse.err @@ -58,7 +58,7 @@ DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP DVLR SUBSCR(IMSI:901700000010650) AUTH on GERAN received SRES/RES: e229c19e791f2e41 (8 bytes) DVLR SUBSCR(IMSI:901700000010650) AUTH established UMTS security context -DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result VLR_AUTH_RES_PASSED +DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Removing from parent vlr_lu_fsm(LU:901700000010650) @@ -230,23 +230,22 @@ DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP DVLR SUBSCR(MSISDN:42342) AUTH on GERAN received SRES/RES: e229c19e791f2e41 (8 bytes) DVLR SUBSCR(MSISDN:42342) AUTH established UMTS security context -DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result VLR_AUTH_RES_PASSED +DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Removing from parent Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650) DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Freeing instance DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Deallocated DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: Received Event PR_ARQ_E_AUTH_RES -DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: got VLR_AUTH_RES_PASSED DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2() DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2_post_ciph() DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2_post_vlr() DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_post_pres() DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_post_trace() DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_post_imei() -DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: proc_arq_fsm_done(VLR_PR_ARQ_RES_PASSED) +DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: proc_arq_fsm_done(PASSED) DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: state_chg to PR_ARQ_S_DONE -DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED +DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_DONE}: Process Access Request result: PASSED - sending CM Service Accept for MSISDN:42342 DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_AUTH_CIPH}: Received Event SUBSCR_CONN_E_ACCEPTED DREF MSISDN:42342: MSC conn use + cm_service == 2 (0xa) @@ -353,23 +352,22 @@ DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP DVLR SUBSCR(MSISDN:42342) AUTH on GERAN received SRES/RES: 7db47cf7f81e4dc7 (8 bytes) DVLR SUBSCR(MSISDN:42342) AUTH established UMTS security context -DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result VLR_AUTH_RES_PASSED +DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Removing from parent Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650) DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Freeing instance DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Deallocated DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: Received Event PR_ARQ_E_AUTH_RES -DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: got VLR_AUTH_RES_PASSED DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2() DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2_post_ciph() DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2_post_vlr() DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_post_pres() DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_post_trace() DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_post_imei() -DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: proc_arq_fsm_done(VLR_PR_ARQ_RES_PASSED) +DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: proc_arq_fsm_done(PASSED) DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: state_chg to PR_ARQ_S_DONE -DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED +DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_DONE}: Process Access Request result: PASSED - sending CM Service Accept for MSISDN:42342 DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_AUTH_CIPH}: Received Event SUBSCR_CONN_E_ACCEPTED DREF MSISDN:42342: MSC conn use + cm_service == 2 (0xa) @@ -425,11 +423,12 @@ DMM IMSI DETACH INDICATION: MI(IMSI)=901700000010650 DREF VLR subscr MSISDN:42342 usage increases to: 2 DMM IMSI DETACH for MSISDN:42342 +DREF VLR subscr MSISDN:42342 usage increases to: 3 +DREF VLR subscr MSISDN:42342 usage decreases to: 2 DREF VLR subscr MSISDN:42342 usage decreases to: 1 DREF VLR subscr MSISDN:42342 usage decreases to: 0 DREF freeing VLR subscr MSISDN:42342 DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_CN_CLOSE -DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: Close event, cause 0 DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASING DREF unknown: MSC conn use + release == 2 (0x101) - BSSAP Clear --RAN_GERAN_A--> MS @@ -506,7 +505,7 @@ DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP DVLR SUBSCR(IMSI:901700000010650) AUTH on UTRAN received RES: e229c19e791f2e41 (8 bytes) DVLR SUBSCR(IMSI:901700000010650) AUTH established UMTS security context -DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result VLR_AUTH_RES_PASSED +DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Removing from parent vlr_lu_fsm(LU:901700000010650) @@ -690,14 +689,13 @@ DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP DVLR SUBSCR(MSISDN:42342) AUTH on UTRAN received RES: e229c19e791f2e41 (8 bytes) DVLR SUBSCR(MSISDN:42342) AUTH established UMTS security context -DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result VLR_AUTH_RES_PASSED +DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Removing from parent Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650) DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Freeing instance DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Deallocated DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: Received Event PR_ARQ_E_AUTH_RES -DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: got VLR_AUTH_RES_PASSED DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2() DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: Set Ciphering Mode DMM -> SECURITY MODE CONTROL MSISDN:42342 @@ -719,9 +717,9 @@ DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_pres() DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_trace() DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_imei() -DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_CIPH}: proc_arq_fsm_done(VLR_PR_ARQ_RES_PASSED) +DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_CIPH}: proc_arq_fsm_done(PASSED) DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_CIPH}: state_chg to PR_ARQ_S_DONE -DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED +DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_DONE}: Process Access Request result: PASSED DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_AUTH_CIPH}: Received Event SUBSCR_CONN_E_ACCEPTED DREF MSISDN:42342: MSC conn use + cm_service == 1 (0x8) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_AUTH_CIPH}: state_chg to SUBSCR_CONN_S_ACCEPTED @@ -826,14 +824,13 @@ DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP DVLR SUBSCR(MSISDN:42342) AUTH on UTRAN received RES: 7db47cf7f81e4dc7 (8 bytes) DVLR SUBSCR(MSISDN:42342) AUTH established UMTS security context -DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result VLR_AUTH_RES_PASSED +DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Removing from parent Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650) DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Freeing instance DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Deallocated DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: Received Event PR_ARQ_E_AUTH_RES -DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: got VLR_AUTH_RES_PASSED DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2() DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: Set Ciphering Mode DMM -> SECURITY MODE CONTROL MSISDN:42342 @@ -855,9 +852,9 @@ DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_pres() DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_trace() DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_imei() -DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_CIPH}: proc_arq_fsm_done(VLR_PR_ARQ_RES_PASSED) +DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_CIPH}: proc_arq_fsm_done(PASSED) DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_CIPH}: state_chg to PR_ARQ_S_DONE -DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED +DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_DONE}: Process Access Request result: PASSED DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_AUTH_CIPH}: Received Event SUBSCR_CONN_E_ACCEPTED DREF MSISDN:42342: MSC conn use + cm_service == 1 (0x8) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_AUTH_CIPH}: state_chg to SUBSCR_CONN_S_ACCEPTED @@ -911,11 +908,12 @@ DMM IMSI DETACH INDICATION: MI(IMSI)=901700000010650 DREF VLR subscr MSISDN:42342 usage increases to: 2 DMM IMSI DETACH for MSISDN:42342 +DREF VLR subscr MSISDN:42342 usage increases to: 3 +DREF VLR subscr MSISDN:42342 usage decreases to: 2 DREF VLR subscr MSISDN:42342 usage decreases to: 1 DREF VLR subscr MSISDN:42342 usage decreases to: 0 DREF freeing VLR subscr MSISDN:42342 DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_CN_CLOSE -DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: Close event, cause 0 DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASING DREF unknown: MSC conn use + release == 2 (0x101) - Iu Release --RAN_UTRAN_IU--> MS @@ -992,7 +990,7 @@ DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP DVLR SUBSCR(IMSI:901700000010650) AUTH on GERAN received SRES/RES: e229c19e791f2e41 (8 bytes) DVLR SUBSCR(IMSI:901700000010650) AUTH established UMTS security context -DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result VLR_AUTH_RES_PASSED +DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Removing from parent vlr_lu_fsm(LU:901700000010650) @@ -1164,23 +1162,22 @@ DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP DVLR SUBSCR(MSISDN:42342) AUTH on GERAN received SRES/RES: e229c19e791f2e41 (8 bytes) DVLR SUBSCR(MSISDN:42342) AUTH established UMTS security context -DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result VLR_AUTH_RES_PASSED +DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Removing from parent Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650) DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Freeing instance DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Deallocated DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: Received Event PR_ARQ_E_AUTH_RES -DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: got VLR_AUTH_RES_PASSED DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2() DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2_post_ciph() DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2_post_vlr() DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_post_pres() DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_post_trace() DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_post_imei() -DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: proc_arq_fsm_done(VLR_PR_ARQ_RES_PASSED) +DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: proc_arq_fsm_done(PASSED) DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: state_chg to PR_ARQ_S_DONE -DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED +DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_DONE}: Process Access Request result: PASSED - sending CM Service Accept for MSISDN:42342 DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_AUTH_CIPH}: Received Event SUBSCR_CONN_E_ACCEPTED DREF MSISDN:42342: MSC conn use + cm_service == 2 (0xa) @@ -1273,23 +1270,22 @@ DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP DVLR SUBSCR(MSISDN:42342) AUTH on GERAN received SRES/RES: e229c19e791f2e41 (8 bytes) DVLR SUBSCR(MSISDN:42342) AUTH established UMTS security context -DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result VLR_AUTH_RES_PASSED +DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Removing from parent Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650) DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Freeing instance DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Deallocated DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: Received Event PR_ARQ_E_AUTH_RES -DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: got VLR_AUTH_RES_PASSED DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2() DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2_post_ciph() DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2_post_vlr() DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_post_pres() DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_post_trace() DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_post_imei() -DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: proc_arq_fsm_done(VLR_PR_ARQ_RES_PASSED) +DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: proc_arq_fsm_done(PASSED) DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: state_chg to PR_ARQ_S_DONE -DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED +DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_DONE}: Process Access Request result: PASSED - sending CM Service Accept for MSISDN:42342 DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_AUTH_CIPH}: Received Event SUBSCR_CONN_E_ACCEPTED DREF MSISDN:42342: MSC conn use + cm_service == 2 (0xa) @@ -1382,23 +1378,22 @@ DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP DVLR SUBSCR(MSISDN:42342) AUTH on GERAN received SRES/RES: e229c19e791f2e41 (8 bytes) DVLR SUBSCR(MSISDN:42342) AUTH established UMTS security context -DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result VLR_AUTH_RES_PASSED +DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Removing from parent Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650) DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Freeing instance DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Deallocated DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: Received Event PR_ARQ_E_AUTH_RES -DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: got VLR_AUTH_RES_PASSED DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2() DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2_post_ciph() DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2_post_vlr() DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_post_pres() DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_post_trace() DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_post_imei() -DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: proc_arq_fsm_done(VLR_PR_ARQ_RES_PASSED) +DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: proc_arq_fsm_done(PASSED) DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: state_chg to PR_ARQ_S_DONE -DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED +DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_DONE}: Process Access Request result: PASSED - sending CM Service Accept for MSISDN:42342 DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_AUTH_CIPH}: Received Event SUBSCR_CONN_E_ACCEPTED DREF MSISDN:42342: MSC conn use + cm_service == 2 (0xa) @@ -1454,11 +1449,12 @@ DMM IMSI DETACH INDICATION: MI(IMSI)=901700000010650 DREF VLR subscr MSISDN:42342 usage increases to: 2 DMM IMSI DETACH for MSISDN:42342 +DREF VLR subscr MSISDN:42342 usage increases to: 3 +DREF VLR subscr MSISDN:42342 usage decreases to: 2 DREF VLR subscr MSISDN:42342 usage decreases to: 1 DREF VLR subscr MSISDN:42342 usage decreases to: 0 DREF freeing VLR subscr MSISDN:42342 DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_CN_CLOSE -DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: Close event, cause 0 DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASING DREF unknown: MSC conn use + release == 2 (0x101) - BSSAP Clear --RAN_GERAN_A--> MS @@ -1535,7 +1531,7 @@ DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP DVLR SUBSCR(IMSI:901700000010650) AUTH on UTRAN received RES: e229c19e791f2e41 (8 bytes) DVLR SUBSCR(IMSI:901700000010650) AUTH established UMTS security context -DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result VLR_AUTH_RES_PASSED +DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Removing from parent vlr_lu_fsm(LU:901700000010650) @@ -1719,14 +1715,13 @@ DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP DVLR SUBSCR(MSISDN:42342) AUTH on UTRAN received RES: e229c19e791f2e41 (8 bytes) DVLR SUBSCR(MSISDN:42342) AUTH established UMTS security context -DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result VLR_AUTH_RES_PASSED +DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Removing from parent Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650) DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Freeing instance DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Deallocated DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: Received Event PR_ARQ_E_AUTH_RES -DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: got VLR_AUTH_RES_PASSED DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2() DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: Set Ciphering Mode DMM -> SECURITY MODE CONTROL MSISDN:42342 @@ -1748,9 +1743,9 @@ DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_pres() DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_trace() DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_imei() -DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_CIPH}: proc_arq_fsm_done(VLR_PR_ARQ_RES_PASSED) +DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_CIPH}: proc_arq_fsm_done(PASSED) DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_CIPH}: state_chg to PR_ARQ_S_DONE -DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED +DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_DONE}: Process Access Request result: PASSED DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_AUTH_CIPH}: Received Event SUBSCR_CONN_E_ACCEPTED DREF MSISDN:42342: MSC conn use + cm_service == 1 (0x8) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_AUTH_CIPH}: state_chg to SUBSCR_CONN_S_ACCEPTED @@ -1841,14 +1836,13 @@ DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP DVLR SUBSCR(MSISDN:42342) AUTH on UTRAN received RES: e229c19e791f2e41 (8 bytes) DVLR SUBSCR(MSISDN:42342) AUTH established UMTS security context -DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result VLR_AUTH_RES_PASSED +DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Removing from parent Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650) DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Freeing instance DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Deallocated DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: Received Event PR_ARQ_E_AUTH_RES -DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: got VLR_AUTH_RES_PASSED DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2() DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: Set Ciphering Mode DMM -> SECURITY MODE CONTROL MSISDN:42342 @@ -1870,9 +1864,9 @@ DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_pres() DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_trace() DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_imei() -DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_CIPH}: proc_arq_fsm_done(VLR_PR_ARQ_RES_PASSED) +DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_CIPH}: proc_arq_fsm_done(PASSED) DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_CIPH}: state_chg to PR_ARQ_S_DONE -DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED +DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_DONE}: Process Access Request result: PASSED DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_AUTH_CIPH}: Received Event SUBSCR_CONN_E_ACCEPTED DREF MSISDN:42342: MSC conn use + cm_service == 1 (0x8) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_AUTH_CIPH}: state_chg to SUBSCR_CONN_S_ACCEPTED @@ -1963,14 +1957,13 @@ DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP DVLR SUBSCR(MSISDN:42342) AUTH on UTRAN received RES: e229c19e791f2e41 (8 bytes) DVLR SUBSCR(MSISDN:42342) AUTH established UMTS security context -DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result VLR_AUTH_RES_PASSED +DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Removing from parent Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650) DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Freeing instance DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Deallocated DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: Received Event PR_ARQ_E_AUTH_RES -DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: got VLR_AUTH_RES_PASSED DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2() DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: Set Ciphering Mode DMM -> SECURITY MODE CONTROL MSISDN:42342 @@ -1992,9 +1985,9 @@ DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_pres() DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_trace() DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_imei() -DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_CIPH}: proc_arq_fsm_done(VLR_PR_ARQ_RES_PASSED) +DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_CIPH}: proc_arq_fsm_done(PASSED) DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_CIPH}: state_chg to PR_ARQ_S_DONE -DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED +DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_DONE}: Process Access Request result: PASSED DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_AUTH_CIPH}: Received Event SUBSCR_CONN_E_ACCEPTED DREF MSISDN:42342: MSC conn use + cm_service == 1 (0x8) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_AUTH_CIPH}: state_chg to SUBSCR_CONN_S_ACCEPTED @@ -2048,11 +2041,12 @@ DMM IMSI DETACH INDICATION: MI(IMSI)=901700000010650 DREF VLR subscr MSISDN:42342 usage increases to: 2 DMM IMSI DETACH for MSISDN:42342 +DREF VLR subscr MSISDN:42342 usage increases to: 3 +DREF VLR subscr MSISDN:42342 usage decreases to: 2 DREF VLR subscr MSISDN:42342 usage decreases to: 1 DREF VLR subscr MSISDN:42342 usage decreases to: 0 DREF freeing VLR subscr MSISDN:42342 DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_CN_CLOSE -DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: Close event, cause 0 DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASING DREF unknown: MSC conn use + release == 2 (0x101) - Iu Release --RAN_UTRAN_IU--> MS @@ -2129,7 +2123,7 @@ DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP DVLR SUBSCR(IMSI:901700000010650) AUTH on GERAN received SRES/RES: e229c19e791f2e41 (8 bytes) DVLR SUBSCR(IMSI:901700000010650) AUTH established UMTS security context -DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result VLR_AUTH_RES_PASSED +DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Removing from parent vlr_lu_fsm(LU:901700000010650) @@ -2315,23 +2309,22 @@ DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP DVLR SUBSCR(MSISDN:42342) AUTH on GERAN received SRES/RES: 7db47cf7f81e4dc7 (8 bytes) DVLR SUBSCR(MSISDN:42342) AUTH established UMTS security context -DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result VLR_AUTH_RES_PASSED +DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Removing from parent Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650) DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Freeing instance DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Deallocated DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: Received Event PR_ARQ_E_AUTH_RES -DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: got VLR_AUTH_RES_PASSED DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2() DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2_post_ciph() DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2_post_vlr() DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_post_pres() DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_post_trace() DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_post_imei() -DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: proc_arq_fsm_done(VLR_PR_ARQ_RES_PASSED) +DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: proc_arq_fsm_done(PASSED) DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: state_chg to PR_ARQ_S_DONE -DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED +DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_DONE}: Process Access Request result: PASSED - sending CM Service Accept for MSISDN:42342 DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_AUTH_CIPH}: Received Event SUBSCR_CONN_E_ACCEPTED DREF MSISDN:42342: MSC conn use + cm_service == 2 (0xa) @@ -2387,11 +2380,12 @@ DMM IMSI DETACH INDICATION: MI(IMSI)=901700000010650 DREF VLR subscr MSISDN:42342 usage increases to: 2 DMM IMSI DETACH for MSISDN:42342 +DREF VLR subscr MSISDN:42342 usage increases to: 3 +DREF VLR subscr MSISDN:42342 usage decreases to: 2 DREF VLR subscr MSISDN:42342 usage decreases to: 1 DREF VLR subscr MSISDN:42342 usage decreases to: 0 DREF freeing VLR subscr MSISDN:42342 DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_CN_CLOSE -DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: Close event, cause 0 DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASING DREF unknown: MSC conn use + release == 2 (0x101) - BSSAP Clear --RAN_GERAN_A--> MS @@ -2468,7 +2462,7 @@ DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP DVLR SUBSCR(IMSI:901700000010650) AUTH on UTRAN received RES: e229c19e791f2e41 (8 bytes) DVLR SUBSCR(IMSI:901700000010650) AUTH established UMTS security context -DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result VLR_AUTH_RES_PASSED +DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Removing from parent vlr_lu_fsm(LU:901700000010650) @@ -2666,14 +2660,13 @@ DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP DVLR SUBSCR(MSISDN:42342) AUTH on UTRAN received RES: 7db47cf7f81e4dc7 (8 bytes) DVLR SUBSCR(MSISDN:42342) AUTH established UMTS security context -DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result VLR_AUTH_RES_PASSED +DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Removing from parent Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650) DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Freeing instance DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Deallocated DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: Received Event PR_ARQ_E_AUTH_RES -DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: got VLR_AUTH_RES_PASSED DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2() DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: Set Ciphering Mode DMM -> SECURITY MODE CONTROL MSISDN:42342 @@ -2695,9 +2688,9 @@ DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_pres() DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_trace() DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_imei() -DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_CIPH}: proc_arq_fsm_done(VLR_PR_ARQ_RES_PASSED) +DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_CIPH}: proc_arq_fsm_done(PASSED) DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_CIPH}: state_chg to PR_ARQ_S_DONE -DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED +DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_DONE}: Process Access Request result: PASSED DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_AUTH_CIPH}: Received Event SUBSCR_CONN_E_ACCEPTED DREF MSISDN:42342: MSC conn use + cm_service == 1 (0x8) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_AUTH_CIPH}: state_chg to SUBSCR_CONN_S_ACCEPTED @@ -2751,11 +2744,12 @@ DMM IMSI DETACH INDICATION: MI(IMSI)=901700000010650 DREF VLR subscr MSISDN:42342 usage increases to: 2 DMM IMSI DETACH for MSISDN:42342 +DREF VLR subscr MSISDN:42342 usage increases to: 3 +DREF VLR subscr MSISDN:42342 usage decreases to: 2 DREF VLR subscr MSISDN:42342 usage decreases to: 1 DREF VLR subscr MSISDN:42342 usage decreases to: 0 DREF freeing VLR subscr MSISDN:42342 DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_CN_CLOSE -DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: Close event, cause 0 DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASING DREF unknown: MSC conn use + release == 2 (0x101) - Iu Release --RAN_UTRAN_IU--> MS diff --git a/tests/msc_vlr/msc_vlr_test_call.err b/tests/msc_vlr/msc_vlr_test_call.err index 4956616..1918357 100644 --- a/tests/msc_vlr/msc_vlr_test_call.err +++ b/tests/msc_vlr/msc_vlr_test_call.err @@ -59,7 +59,7 @@ DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP DVLR SUBSCR(IMSI:901700000010650) AUTH on UTRAN received RES: e229c19e791f2e41 (8 bytes) DVLR SUBSCR(IMSI:901700000010650) AUTH established UMTS security context -DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result VLR_AUTH_RES_PASSED +DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Removing from parent vlr_lu_fsm(LU:901700000010650) @@ -229,14 +229,13 @@ DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP DVLR SUBSCR(MSISDN:42342) AUTH on UTRAN received RES: 7db47cf7f81e4dc7 (8 bytes) DVLR SUBSCR(MSISDN:42342) AUTH established UMTS security context -DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result VLR_AUTH_RES_PASSED +DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Removing from parent Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650) DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Freeing instance DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Deallocated DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: Received Event PR_ARQ_E_AUTH_RES -DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: got VLR_AUTH_RES_PASSED DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2() DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: Set Ciphering Mode DMM -> SECURITY MODE CONTROL MSISDN:42342 @@ -258,9 +257,9 @@ DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_pres() DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_trace() DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_imei() -DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_CIPH}: proc_arq_fsm_done(VLR_PR_ARQ_RES_PASSED) +DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_CIPH}: proc_arq_fsm_done(PASSED) DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_CIPH}: state_chg to PR_ARQ_S_DONE -DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED +DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_DONE}: Process Access Request result: PASSED DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_AUTH_CIPH}: Received Event SUBSCR_CONN_E_ACCEPTED DREF MSISDN:42342: MSC conn use + cm_service == 1 (0x8) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_AUTH_CIPH}: state_chg to SUBSCR_CONN_S_ACCEPTED @@ -438,7 +437,7 @@ DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP DVLR SUBSCR(IMSI:901700000010650) AUTH on UTRAN received RES: e229c19e791f2e41 (8 bytes) DVLR SUBSCR(IMSI:901700000010650) AUTH established UMTS security context -DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result VLR_AUTH_RES_PASSED +DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Removing from parent vlr_lu_fsm(LU:901700000010650) @@ -617,14 +616,13 @@ DVLR VLR_Authenticate(PAGING_RESP:901700000010650){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP DVLR SUBSCR(MSISDN:42342) AUTH on UTRAN received RES: 7db47cf7f81e4dc7 (8 bytes) DVLR SUBSCR(MSISDN:42342) AUTH established UMTS security context -DVLR VLR_Authenticate(PAGING_RESP:901700000010650){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result VLR_AUTH_RES_PASSED +DVLR VLR_Authenticate(PAGING_RESP:901700000010650){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED DVLR VLR_Authenticate(PAGING_RESP:901700000010650){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED DVLR VLR_Authenticate(PAGING_RESP:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DVLR VLR_Authenticate(PAGING_RESP:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Removing from parent Process_Access_Request_VLR(PAGING_RESP:901700000010650) DVLR VLR_Authenticate(PAGING_RESP:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Freeing instance DVLR VLR_Authenticate(PAGING_RESP:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Deallocated DVLR Process_Access_Request_VLR(PAGING_RESP:901700000010650){PR_ARQ_S_WAIT_AUTH}: Received Event PR_ARQ_E_AUTH_RES -DVLR Process_Access_Request_VLR(PAGING_RESP:901700000010650){PR_ARQ_S_WAIT_AUTH}: got VLR_AUTH_RES_PASSED DVLR Process_Access_Request_VLR(PAGING_RESP:901700000010650){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2() DVLR Process_Access_Request_VLR(PAGING_RESP:901700000010650){PR_ARQ_S_WAIT_AUTH}: Set Ciphering Mode DMM -> SECURITY MODE CONTROL MSISDN:42342 @@ -645,9 +643,9 @@ DVLR Process_Access_Request_VLR(PAGING_RESP:901700000010650){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_pres() DVLR Process_Access_Request_VLR(PAGING_RESP:901700000010650){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_trace() DVLR Process_Access_Request_VLR(PAGING_RESP:901700000010650){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_imei() -DVLR Process_Access_Request_VLR(PAGING_RESP:901700000010650){PR_ARQ_S_WAIT_CIPH}: proc_arq_fsm_done(VLR_PR_ARQ_RES_PASSED) +DVLR Process_Access_Request_VLR(PAGING_RESP:901700000010650){PR_ARQ_S_WAIT_CIPH}: proc_arq_fsm_done(PASSED) DVLR Process_Access_Request_VLR(PAGING_RESP:901700000010650){PR_ARQ_S_WAIT_CIPH}: state_chg to PR_ARQ_S_DONE -DVLR Process_Access_Request_VLR(PAGING_RESP:901700000010650){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED +DVLR Process_Access_Request_VLR(PAGING_RESP:901700000010650){PR_ARQ_S_DONE}: Process Access Request result: PASSED DMM Subscr_Conn(PAGING_RESP:901700000010650){SUBSCR_CONN_S_AUTH_CIPH}: Received Event SUBSCR_CONN_E_ACCEPTED DPAG Paging success for MSISDN:42342 (event=0) DPAG Calling paging cbfn. @@ -822,7 +820,7 @@ DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP DVLR SUBSCR(IMSI:901700000010650) AUTH on UTRAN received RES: e229c19e791f2e41 (8 bytes) DVLR SUBSCR(IMSI:901700000010650) AUTH established UMTS security context -DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result VLR_AUTH_RES_PASSED +DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Removing from parent vlr_lu_fsm(LU:901700000010650) @@ -1001,14 +999,13 @@ DVLR VLR_Authenticate(PAGING_RESP:901700000010650){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP DVLR SUBSCR(MSISDN:42342) AUTH on UTRAN received RES: 7db47cf7f81e4dc7 (8 bytes) DVLR SUBSCR(MSISDN:42342) AUTH established UMTS security context -DVLR VLR_Authenticate(PAGING_RESP:901700000010650){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result VLR_AUTH_RES_PASSED +DVLR VLR_Authenticate(PAGING_RESP:901700000010650){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED DVLR VLR_Authenticate(PAGING_RESP:901700000010650){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED DVLR VLR_Authenticate(PAGING_RESP:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DVLR VLR_Authenticate(PAGING_RESP:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Removing from parent Process_Access_Request_VLR(PAGING_RESP:901700000010650) DVLR VLR_Authenticate(PAGING_RESP:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Freeing instance DVLR VLR_Authenticate(PAGING_RESP:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Deallocated DVLR Process_Access_Request_VLR(PAGING_RESP:901700000010650){PR_ARQ_S_WAIT_AUTH}: Received Event PR_ARQ_E_AUTH_RES -DVLR Process_Access_Request_VLR(PAGING_RESP:901700000010650){PR_ARQ_S_WAIT_AUTH}: got VLR_AUTH_RES_PASSED DVLR Process_Access_Request_VLR(PAGING_RESP:901700000010650){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2() DVLR Process_Access_Request_VLR(PAGING_RESP:901700000010650){PR_ARQ_S_WAIT_AUTH}: Set Ciphering Mode DMM -> SECURITY MODE CONTROL MSISDN:42342 @@ -1029,9 +1026,9 @@ DVLR Process_Access_Request_VLR(PAGING_RESP:901700000010650){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_pres() DVLR Process_Access_Request_VLR(PAGING_RESP:901700000010650){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_trace() DVLR Process_Access_Request_VLR(PAGING_RESP:901700000010650){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_imei() -DVLR Process_Access_Request_VLR(PAGING_RESP:901700000010650){PR_ARQ_S_WAIT_CIPH}: proc_arq_fsm_done(VLR_PR_ARQ_RES_PASSED) +DVLR Process_Access_Request_VLR(PAGING_RESP:901700000010650){PR_ARQ_S_WAIT_CIPH}: proc_arq_fsm_done(PASSED) DVLR Process_Access_Request_VLR(PAGING_RESP:901700000010650){PR_ARQ_S_WAIT_CIPH}: state_chg to PR_ARQ_S_DONE -DVLR Process_Access_Request_VLR(PAGING_RESP:901700000010650){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED +DVLR Process_Access_Request_VLR(PAGING_RESP:901700000010650){PR_ARQ_S_DONE}: Process Access Request result: PASSED DMM Subscr_Conn(PAGING_RESP:901700000010650){SUBSCR_CONN_S_AUTH_CIPH}: Received Event SUBSCR_CONN_E_ACCEPTED DPAG Paging success for MSISDN:42342 (event=0) DPAG Calling paging cbfn. @@ -1074,7 +1071,6 @@ - Total time passed: 16.000046 s - The call failed, the BSC sends a BSSMAP Clear Request DMM Subscr_Conn(PAGING_RESP:901700000010650){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_CN_CLOSE -DMM Subscr_Conn(PAGING_RESP:901700000010650){SUBSCR_CONN_S_COMMUNICATING}: Close event, cause 0 DMM Subscr_Conn(PAGING_RESP:901700000010650){SUBSCR_CONN_S_COMMUNICATING}: state_chg to SUBSCR_CONN_S_RELEASING DREF MSISDN:42342: MSC conn use + release == 2 (0x110) DREF VLR subscr MSISDN:42342 usage increases to: 4 @@ -1175,7 +1171,7 @@ DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP DVLR SUBSCR(IMSI:901700000010650) AUTH on UTRAN received RES: e229c19e791f2e41 (8 bytes) DVLR SUBSCR(IMSI:901700000010650) AUTH established UMTS security context -DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result VLR_AUTH_RES_PASSED +DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Removing from parent vlr_lu_fsm(LU:901700000010650) @@ -1345,14 +1341,13 @@ DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP DVLR SUBSCR(MSISDN:42342) AUTH on UTRAN received RES: 7db47cf7f81e4dc7 (8 bytes) DVLR SUBSCR(MSISDN:42342) AUTH established UMTS security context -DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result VLR_AUTH_RES_PASSED +DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Removing from parent Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650) DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Freeing instance DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Deallocated DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: Received Event PR_ARQ_E_AUTH_RES -DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: got VLR_AUTH_RES_PASSED DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2() DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: Set Ciphering Mode DMM -> SECURITY MODE CONTROL MSISDN:42342 @@ -1374,9 +1369,9 @@ DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_pres() DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_trace() DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_imei() -DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_CIPH}: proc_arq_fsm_done(VLR_PR_ARQ_RES_PASSED) +DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_CIPH}: proc_arq_fsm_done(PASSED) DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_CIPH}: state_chg to PR_ARQ_S_DONE -DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED +DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_DONE}: Process Access Request result: PASSED DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_AUTH_CIPH}: Received Event SUBSCR_CONN_E_ACCEPTED DREF MSISDN:42342: MSC conn use + cm_service == 1 (0x8) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_AUTH_CIPH}: state_chg to SUBSCR_CONN_S_ACCEPTED @@ -1520,7 +1515,7 @@ DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP DVLR SUBSCR(IMSI:901700000010650) AUTH on UTRAN received RES: e229c19e791f2e41 (8 bytes) DVLR SUBSCR(IMSI:901700000010650) AUTH established UMTS security context -DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result VLR_AUTH_RES_PASSED +DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Removing from parent vlr_lu_fsm(LU:901700000010650) @@ -1690,14 +1685,13 @@ DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP DVLR SUBSCR(MSISDN:42342) AUTH on UTRAN received RES: 7db47cf7f81e4dc7 (8 bytes) DVLR SUBSCR(MSISDN:42342) AUTH established UMTS security context -DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result VLR_AUTH_RES_PASSED +DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Removing from parent Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650) DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Freeing instance DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Deallocated DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: Received Event PR_ARQ_E_AUTH_RES -DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: got VLR_AUTH_RES_PASSED DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2() DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: Set Ciphering Mode DMM -> SECURITY MODE CONTROL MSISDN:42342 @@ -1719,9 +1713,9 @@ DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_pres() DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_trace() DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_imei() -DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_CIPH}: proc_arq_fsm_done(VLR_PR_ARQ_RES_PASSED) +DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_CIPH}: proc_arq_fsm_done(PASSED) DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_CIPH}: state_chg to PR_ARQ_S_DONE -DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED +DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_DONE}: Process Access Request result: PASSED DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_AUTH_CIPH}: Received Event SUBSCR_CONN_E_ACCEPTED DREF MSISDN:42342: MSC conn use + cm_service == 1 (0x8) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_AUTH_CIPH}: state_chg to SUBSCR_CONN_S_ACCEPTED diff --git a/tests/msc_vlr/msc_vlr_test_gsm_authen.err b/tests/msc_vlr/msc_vlr_test_gsm_authen.err index a34fd91..24a085f 100644 --- a/tests/msc_vlr/msc_vlr_test_gsm_authen.err +++ b/tests/msc_vlr/msc_vlr_test_gsm_authen.err @@ -76,7 +76,7 @@ DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP DVLR SUBSCR(IMSI:901700000004620) AUTH on GERAN received SRES/RES: 2d8b2c3e (4 bytes) DVLR SUBSCR(IMSI:901700000004620) AUTH established GSM security context -DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result VLR_AUTH_RES_PASSED +DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_AUTHENTICATED}: Removing from parent vlr_lu_fsm(LU:901700000004620) @@ -223,23 +223,22 @@ DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000004620){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP DVLR SUBSCR(MSISDN:46071) AUTH on GERAN received SRES/RES: 20bde240 (4 bytes) DVLR SUBSCR(MSISDN:46071) AUTH established GSM security context -DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000004620){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result VLR_AUTH_RES_PASSED +DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000004620){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000004620){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000004620){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000004620){VLR_SUB_AS_AUTHENTICATED}: Removing from parent Process_Access_Request_VLR(CM_SERVICE_REQ:901700000004620) DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000004620){VLR_SUB_AS_AUTHENTICATED}: Freeing instance DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000004620){VLR_SUB_AS_AUTHENTICATED}: Deallocated DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000004620){PR_ARQ_S_WAIT_AUTH}: Received Event PR_ARQ_E_AUTH_RES -DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000004620){PR_ARQ_S_WAIT_AUTH}: got VLR_AUTH_RES_PASSED DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000004620){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2() DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000004620){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2_post_ciph() DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000004620){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2_post_vlr() DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000004620){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_post_pres() DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000004620){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_post_trace() DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000004620){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_post_imei() -DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000004620){PR_ARQ_S_WAIT_AUTH}: proc_arq_fsm_done(VLR_PR_ARQ_RES_PASSED) +DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000004620){PR_ARQ_S_WAIT_AUTH}: proc_arq_fsm_done(PASSED) DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000004620){PR_ARQ_S_WAIT_AUTH}: state_chg to PR_ARQ_S_DONE -DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000004620){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED +DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000004620){PR_ARQ_S_DONE}: Process Access Request result: PASSED - sending CM Service Accept for MSISDN:46071 DMM Subscr_Conn(CM_SERVICE_REQ:901700000004620){SUBSCR_CONN_S_AUTH_CIPH}: Received Event SUBSCR_CONN_E_ACCEPTED DREF MSISDN:46071: MSC conn use + cm_service == 2 (0xa) @@ -352,23 +351,22 @@ DVLR VLR_Authenticate(PAGING_RESP:901700000004620){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP DVLR SUBSCR(MSISDN:46071) AUTH on GERAN received SRES/RES: a29514ae (4 bytes) DVLR SUBSCR(MSISDN:46071) AUTH established GSM security context -DVLR VLR_Authenticate(PAGING_RESP:901700000004620){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result VLR_AUTH_RES_PASSED +DVLR VLR_Authenticate(PAGING_RESP:901700000004620){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED DVLR VLR_Authenticate(PAGING_RESP:901700000004620){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED DVLR VLR_Authenticate(PAGING_RESP:901700000004620){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DVLR VLR_Authenticate(PAGING_RESP:901700000004620){VLR_SUB_AS_AUTHENTICATED}: Removing from parent Process_Access_Request_VLR(PAGING_RESP:901700000004620) DVLR VLR_Authenticate(PAGING_RESP:901700000004620){VLR_SUB_AS_AUTHENTICATED}: Freeing instance DVLR VLR_Authenticate(PAGING_RESP:901700000004620){VLR_SUB_AS_AUTHENTICATED}: Deallocated DVLR Process_Access_Request_VLR(PAGING_RESP:901700000004620){PR_ARQ_S_WAIT_AUTH}: Received Event PR_ARQ_E_AUTH_RES -DVLR Process_Access_Request_VLR(PAGING_RESP:901700000004620){PR_ARQ_S_WAIT_AUTH}: got VLR_AUTH_RES_PASSED DVLR Process_Access_Request_VLR(PAGING_RESP:901700000004620){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2() DVLR Process_Access_Request_VLR(PAGING_RESP:901700000004620){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2_post_ciph() DVLR Process_Access_Request_VLR(PAGING_RESP:901700000004620){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2_post_vlr() DVLR Process_Access_Request_VLR(PAGING_RESP:901700000004620){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_post_pres() DVLR Process_Access_Request_VLR(PAGING_RESP:901700000004620){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_post_trace() DVLR Process_Access_Request_VLR(PAGING_RESP:901700000004620){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_post_imei() -DVLR Process_Access_Request_VLR(PAGING_RESP:901700000004620){PR_ARQ_S_WAIT_AUTH}: proc_arq_fsm_done(VLR_PR_ARQ_RES_PASSED) +DVLR Process_Access_Request_VLR(PAGING_RESP:901700000004620){PR_ARQ_S_WAIT_AUTH}: proc_arq_fsm_done(PASSED) DVLR Process_Access_Request_VLR(PAGING_RESP:901700000004620){PR_ARQ_S_WAIT_AUTH}: state_chg to PR_ARQ_S_DONE -DVLR Process_Access_Request_VLR(PAGING_RESP:901700000004620){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED +DVLR Process_Access_Request_VLR(PAGING_RESP:901700000004620){PR_ARQ_S_DONE}: Process Access Request result: PASSED DMM Subscr_Conn(PAGING_RESP:901700000004620){SUBSCR_CONN_S_AUTH_CIPH}: Received Event SUBSCR_CONN_E_ACCEPTED DPAG Paging success for MSISDN:46071 (event=0) DPAG Calling paging cbfn. @@ -443,11 +441,12 @@ DMM IMSI DETACH INDICATION: MI(IMSI)=901700000004620 DREF VLR subscr MSISDN:46071 usage increases to: 2 DMM IMSI DETACH for MSISDN:46071 +DREF VLR subscr MSISDN:46071 usage increases to: 3 +DREF VLR subscr MSISDN:46071 usage decreases to: 2 DREF VLR subscr MSISDN:46071 usage decreases to: 1 DREF VLR subscr MSISDN:46071 usage decreases to: 0 DREF freeing VLR subscr MSISDN:46071 DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_CN_CLOSE -DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: Close event, cause 0 DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASING DREF unknown: MSC conn use + release == 2 (0x101) - BSSAP Clear --RAN_GERAN_A--> MS @@ -542,7 +541,7 @@ DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP DVLR SUBSCR(IMSI:901700000004620) AUTH on GERAN received SRES/RES: 2d8b2c3e (4 bytes) DVLR SUBSCR(IMSI:901700000004620) AUTH established GSM security context -DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result VLR_AUTH_RES_PASSED +DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_AUTHENTICATED}: Removing from parent vlr_lu_fsm(LU:901700000004620) @@ -725,23 +724,22 @@ DVLR VLR_Authenticate(CM_SERVICE_REQ:50462976){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP DVLR SUBSCR(MSISDN:46071) AUTH on GERAN received SRES/RES: 20bde240 (4 bytes) DVLR SUBSCR(MSISDN:46071) AUTH established GSM security context -DVLR VLR_Authenticate(CM_SERVICE_REQ:50462976){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result VLR_AUTH_RES_PASSED +DVLR VLR_Authenticate(CM_SERVICE_REQ:50462976){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED DVLR VLR_Authenticate(CM_SERVICE_REQ:50462976){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED DVLR VLR_Authenticate(CM_SERVICE_REQ:50462976){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DVLR VLR_Authenticate(CM_SERVICE_REQ:50462976){VLR_SUB_AS_AUTHENTICATED}: Removing from parent Process_Access_Request_VLR(CM_SERVICE_REQ:50462976) DVLR VLR_Authenticate(CM_SERVICE_REQ:50462976){VLR_SUB_AS_AUTHENTICATED}: Freeing instance DVLR VLR_Authenticate(CM_SERVICE_REQ:50462976){VLR_SUB_AS_AUTHENTICATED}: Deallocated DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:50462976){PR_ARQ_S_WAIT_AUTH}: Received Event PR_ARQ_E_AUTH_RES -DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:50462976){PR_ARQ_S_WAIT_AUTH}: got VLR_AUTH_RES_PASSED DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:50462976){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2() DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:50462976){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2_post_ciph() DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:50462976){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2_post_vlr() DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:50462976){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_post_pres() DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:50462976){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_post_trace() DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:50462976){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_post_imei() -DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:50462976){PR_ARQ_S_WAIT_AUTH}: proc_arq_fsm_done(VLR_PR_ARQ_RES_PASSED) +DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:50462976){PR_ARQ_S_WAIT_AUTH}: proc_arq_fsm_done(PASSED) DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:50462976){PR_ARQ_S_WAIT_AUTH}: state_chg to PR_ARQ_S_DONE -DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:50462976){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED +DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:50462976){PR_ARQ_S_DONE}: Process Access Request result: PASSED - sending CM Service Accept for MSISDN:46071 DMM Subscr_Conn(CM_SERVICE_REQ:50462976){SUBSCR_CONN_S_AUTH_CIPH}: Received Event SUBSCR_CONN_E_ACCEPTED DREF MSISDN:46071: MSC conn use + cm_service == 2 (0xa) @@ -854,23 +852,22 @@ DVLR VLR_Authenticate(PAGING_RESP:50462976){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP DVLR SUBSCR(MSISDN:46071) AUTH on GERAN received SRES/RES: a29514ae (4 bytes) DVLR SUBSCR(MSISDN:46071) AUTH established GSM security context -DVLR VLR_Authenticate(PAGING_RESP:50462976){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result VLR_AUTH_RES_PASSED +DVLR VLR_Authenticate(PAGING_RESP:50462976){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED DVLR VLR_Authenticate(PAGING_RESP:50462976){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED DVLR VLR_Authenticate(PAGING_RESP:50462976){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DVLR VLR_Authenticate(PAGING_RESP:50462976){VLR_SUB_AS_AUTHENTICATED}: Removing from parent Process_Access_Request_VLR(PAGING_RESP:50462976) DVLR VLR_Authenticate(PAGING_RESP:50462976){VLR_SUB_AS_AUTHENTICATED}: Freeing instance DVLR VLR_Authenticate(PAGING_RESP:50462976){VLR_SUB_AS_AUTHENTICATED}: Deallocated DVLR Process_Access_Request_VLR(PAGING_RESP:50462976){PR_ARQ_S_WAIT_AUTH}: Received Event PR_ARQ_E_AUTH_RES -DVLR Process_Access_Request_VLR(PAGING_RESP:50462976){PR_ARQ_S_WAIT_AUTH}: got VLR_AUTH_RES_PASSED DVLR Process_Access_Request_VLR(PAGING_RESP:50462976){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2() DVLR Process_Access_Request_VLR(PAGING_RESP:50462976){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2_post_ciph() DVLR Process_Access_Request_VLR(PAGING_RESP:50462976){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2_post_vlr() DVLR Process_Access_Request_VLR(PAGING_RESP:50462976){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_post_pres() DVLR Process_Access_Request_VLR(PAGING_RESP:50462976){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_post_trace() DVLR Process_Access_Request_VLR(PAGING_RESP:50462976){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_post_imei() -DVLR Process_Access_Request_VLR(PAGING_RESP:50462976){PR_ARQ_S_WAIT_AUTH}: proc_arq_fsm_done(VLR_PR_ARQ_RES_PASSED) +DVLR Process_Access_Request_VLR(PAGING_RESP:50462976){PR_ARQ_S_WAIT_AUTH}: proc_arq_fsm_done(PASSED) DVLR Process_Access_Request_VLR(PAGING_RESP:50462976){PR_ARQ_S_WAIT_AUTH}: state_chg to PR_ARQ_S_DONE -DVLR Process_Access_Request_VLR(PAGING_RESP:50462976){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED +DVLR Process_Access_Request_VLR(PAGING_RESP:50462976){PR_ARQ_S_DONE}: Process Access Request result: PASSED DMM Subscr_Conn(PAGING_RESP:50462976){SUBSCR_CONN_S_AUTH_CIPH}: Received Event SUBSCR_CONN_E_ACCEPTED DPAG Paging success for MSISDN:46071 (event=0) DPAG Calling paging cbfn. @@ -978,7 +975,7 @@ DVLR VLR_Authenticate(LU:50462976){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP DVLR SUBSCR(MSISDN:46071) AUTH on GERAN received SRES/RES: 5afc8d72 (4 bytes) DVLR SUBSCR(MSISDN:46071) AUTH established GSM security context -DVLR VLR_Authenticate(LU:50462976){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result VLR_AUTH_RES_PASSED +DVLR VLR_Authenticate(LU:50462976){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED DVLR VLR_Authenticate(LU:50462976){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED DVLR VLR_Authenticate(LU:50462976){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DVLR VLR_Authenticate(LU:50462976){VLR_SUB_AS_AUTHENTICATED}: Removing from parent vlr_lu_fsm(LU:50462976) @@ -1118,11 +1115,12 @@ DMM IMSI DETACH INDICATION: MI(TMSI)=117835012 DREF VLR subscr MSISDN:46071 usage increases to: 2 DMM IMSI DETACH for MSISDN:46071 +DREF VLR subscr MSISDN:46071 usage increases to: 3 +DREF VLR subscr MSISDN:46071 usage decreases to: 2 DREF VLR subscr MSISDN:46071 usage decreases to: 1 DREF VLR subscr MSISDN:46071 usage decreases to: 0 DREF freeing VLR subscr MSISDN:46071 DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_CN_CLOSE -DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: Close event, cause 0 DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASING DREF unknown: MSC conn use + release == 2 (0x101) - BSSAP Clear --RAN_GERAN_A--> MS @@ -1217,7 +1215,7 @@ DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP DVLR SUBSCR(IMSI:901700000004620) AUTH on GERAN received SRES/RES: 2d8b2c3e (4 bytes) DVLR SUBSCR(IMSI:901700000004620) AUTH established GSM security context -DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result VLR_AUTH_RES_PASSED +DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_AUTHENTICATED}: Removing from parent vlr_lu_fsm(LU:901700000004620) @@ -1354,11 +1352,12 @@ DMM IMSI DETACH INDICATION: MI(IMSI)=901700000004620 DREF VLR subscr MSISDN:46071 usage increases to: 2 DMM IMSI DETACH for MSISDN:46071 +DREF VLR subscr MSISDN:46071 usage increases to: 3 +DREF VLR subscr MSISDN:46071 usage decreases to: 2 DREF VLR subscr MSISDN:46071 usage decreases to: 1 DREF VLR subscr MSISDN:46071 usage decreases to: 0 DREF freeing VLR subscr MSISDN:46071 DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_CN_CLOSE -DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: Close event, cause 0 DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASING DREF unknown: MSC conn use + release == 2 (0x101) - BSSAP Clear --RAN_GERAN_A--> MS @@ -1453,7 +1452,7 @@ DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP DVLR SUBSCR(IMSI:901700000004620) AUTH on GERAN received SRES/RES: 2d8b2c3e (4 bytes) DVLR SUBSCR(IMSI:901700000004620) AUTH established GSM security context -DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result VLR_AUTH_RES_PASSED +DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_AUTHENTICATED}: Removing from parent vlr_lu_fsm(LU:901700000004620) @@ -1622,11 +1621,12 @@ DMM IMSI DETACH INDICATION: MI(TMSI)=50462976 DREF VLR subscr MSISDN:46071 usage increases to: 2 DMM IMSI DETACH for MSISDN:46071 +DREF VLR subscr MSISDN:46071 usage increases to: 3 +DREF VLR subscr MSISDN:46071 usage decreases to: 2 DREF VLR subscr MSISDN:46071 usage decreases to: 1 DREF VLR subscr MSISDN:46071 usage decreases to: 0 DREF freeing VLR subscr MSISDN:46071 DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_CN_CLOSE -DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: Close event, cause 0 DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASING DREF unknown: MSC conn use + release == 2 (0x101) - BSSAP Clear --RAN_GERAN_A--> MS @@ -1702,7 +1702,7 @@ DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP DVLR SUBSCR(IMSI:901700000010650) AUTH on GERAN received SRES/RES: 9b36efdf (4 bytes) DVLR SUBSCR(IMSI:901700000010650) AUTH established GSM security context -DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result VLR_AUTH_RES_PASSED +DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Removing from parent vlr_lu_fsm(LU:901700000010650) @@ -1849,23 +1849,22 @@ DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP DVLR SUBSCR(MSISDN:42342) AUTH on GERAN received SRES/RES: 85aa3130 (4 bytes) DVLR SUBSCR(MSISDN:42342) AUTH established GSM security context -DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result VLR_AUTH_RES_PASSED +DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Removing from parent Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650) DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Freeing instance DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Deallocated DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: Received Event PR_ARQ_E_AUTH_RES -DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: got VLR_AUTH_RES_PASSED DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2() DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2_post_ciph() DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2_post_vlr() DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_post_pres() DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_post_trace() DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_post_imei() -DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: proc_arq_fsm_done(VLR_PR_ARQ_RES_PASSED) +DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: proc_arq_fsm_done(PASSED) DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: state_chg to PR_ARQ_S_DONE -DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED +DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_DONE}: Process Access Request result: PASSED - sending CM Service Accept for MSISDN:42342 DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_AUTH_CIPH}: Received Event SUBSCR_CONN_E_ACCEPTED DREF MSISDN:42342: MSC conn use + cm_service == 2 (0xa) @@ -1978,23 +1977,22 @@ DVLR VLR_Authenticate(PAGING_RESP:901700000010650){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP DVLR SUBSCR(MSISDN:42342) AUTH on GERAN received SRES/RES: 69d5f9fb (4 bytes) DVLR SUBSCR(MSISDN:42342) AUTH established GSM security context -DVLR VLR_Authenticate(PAGING_RESP:901700000010650){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result VLR_AUTH_RES_PASSED +DVLR VLR_Authenticate(PAGING_RESP:901700000010650){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED DVLR VLR_Authenticate(PAGING_RESP:901700000010650){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED DVLR VLR_Authenticate(PAGING_RESP:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DVLR VLR_Authenticate(PAGING_RESP:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Removing from parent Process_Access_Request_VLR(PAGING_RESP:901700000010650) DVLR VLR_Authenticate(PAGING_RESP:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Freeing instance DVLR VLR_Authenticate(PAGING_RESP:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Deallocated DVLR Process_Access_Request_VLR(PAGING_RESP:901700000010650){PR_ARQ_S_WAIT_AUTH}: Received Event PR_ARQ_E_AUTH_RES -DVLR Process_Access_Request_VLR(PAGING_RESP:901700000010650){PR_ARQ_S_WAIT_AUTH}: got VLR_AUTH_RES_PASSED DVLR Process_Access_Request_VLR(PAGING_RESP:901700000010650){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2() DVLR Process_Access_Request_VLR(PAGING_RESP:901700000010650){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2_post_ciph() DVLR Process_Access_Request_VLR(PAGING_RESP:901700000010650){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2_post_vlr() DVLR Process_Access_Request_VLR(PAGING_RESP:901700000010650){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_post_pres() DVLR Process_Access_Request_VLR(PAGING_RESP:901700000010650){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_post_trace() DVLR Process_Access_Request_VLR(PAGING_RESP:901700000010650){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_post_imei() -DVLR Process_Access_Request_VLR(PAGING_RESP:901700000010650){PR_ARQ_S_WAIT_AUTH}: proc_arq_fsm_done(VLR_PR_ARQ_RES_PASSED) +DVLR Process_Access_Request_VLR(PAGING_RESP:901700000010650){PR_ARQ_S_WAIT_AUTH}: proc_arq_fsm_done(PASSED) DVLR Process_Access_Request_VLR(PAGING_RESP:901700000010650){PR_ARQ_S_WAIT_AUTH}: state_chg to PR_ARQ_S_DONE -DVLR Process_Access_Request_VLR(PAGING_RESP:901700000010650){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED +DVLR Process_Access_Request_VLR(PAGING_RESP:901700000010650){PR_ARQ_S_DONE}: Process Access Request result: PASSED DMM Subscr_Conn(PAGING_RESP:901700000010650){SUBSCR_CONN_S_AUTH_CIPH}: Received Event SUBSCR_CONN_E_ACCEPTED DPAG Paging success for MSISDN:42342 (event=0) DPAG Calling paging cbfn. @@ -2069,11 +2067,12 @@ DMM IMSI DETACH INDICATION: MI(IMSI)=901700000010650 DREF VLR subscr MSISDN:42342 usage increases to: 2 DMM IMSI DETACH for MSISDN:42342 +DREF VLR subscr MSISDN:42342 usage increases to: 3 +DREF VLR subscr MSISDN:42342 usage decreases to: 2 DREF VLR subscr MSISDN:42342 usage decreases to: 1 DREF VLR subscr MSISDN:42342 usage decreases to: 0 DREF freeing VLR subscr MSISDN:42342 DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_CN_CLOSE -DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: Close event, cause 0 DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASING DREF unknown: MSC conn use + release == 2 (0x101) - BSSAP Clear --RAN_GERAN_A--> MS @@ -2171,7 +2170,7 @@ DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP DVLR SUBSCR(IMSI:901700000004620) AUTH on GERAN received SRES/RES: (0 bytes) DVLR SUBSCR(IMSI:901700000004620) AUTH SRES/RES missing -DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result VLR_AUTH_RES_AUTH_FAILED +DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result Illegal MS DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTH_FAILED DVLR GSUP tx: 0b010809710000004026f0 GSUP --> HLR: OSMO_GSUP_MSGT_AUTH_FAIL_REPORT: 0b010809710000004026f0 diff --git a/tests/msc_vlr/msc_vlr_test_gsm_ciph.err b/tests/msc_vlr/msc_vlr_test_gsm_ciph.err index 6f3c7ab..d5ddb6a 100644 --- a/tests/msc_vlr/msc_vlr_test_gsm_ciph.err +++ b/tests/msc_vlr/msc_vlr_test_gsm_ciph.err @@ -57,7 +57,7 @@ DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP DVLR SUBSCR(IMSI:901700000004620) AUTH on GERAN received SRES/RES: 2d8b2c3e (4 bytes) DVLR SUBSCR(IMSI:901700000004620) AUTH established GSM security context -DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result VLR_AUTH_RES_PASSED +DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_AUTHENTICATED}: Removing from parent vlr_lu_fsm(LU:901700000004620) @@ -227,14 +227,13 @@ DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000004620){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP DVLR SUBSCR(MSISDN:46071) AUTH on GERAN received SRES/RES: 20bde240 (4 bytes) DVLR SUBSCR(MSISDN:46071) AUTH established GSM security context -DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000004620){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result VLR_AUTH_RES_PASSED +DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000004620){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000004620){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000004620){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000004620){VLR_SUB_AS_AUTHENTICATED}: Removing from parent Process_Access_Request_VLR(CM_SERVICE_REQ:901700000004620) DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000004620){VLR_SUB_AS_AUTHENTICATED}: Freeing instance DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000004620){VLR_SUB_AS_AUTHENTICATED}: Deallocated DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000004620){PR_ARQ_S_WAIT_AUTH}: Received Event PR_ARQ_E_AUTH_RES -DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000004620){PR_ARQ_S_WAIT_AUTH}: got VLR_AUTH_RES_PASSED DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000004620){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2() DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000004620){PR_ARQ_S_WAIT_AUTH}: Set Ciphering Mode DMM -> CIPHER MODE COMMAND MSISDN:46071 @@ -268,9 +267,9 @@ DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000004620){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_pres() DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000004620){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_trace() DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000004620){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_imei() -DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000004620){PR_ARQ_S_WAIT_CIPH}: proc_arq_fsm_done(VLR_PR_ARQ_RES_PASSED) +DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000004620){PR_ARQ_S_WAIT_CIPH}: proc_arq_fsm_done(PASSED) DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000004620){PR_ARQ_S_WAIT_CIPH}: state_chg to PR_ARQ_S_DONE -DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000004620){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED +DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000004620){PR_ARQ_S_DONE}: Process Access Request result: PASSED DMM Subscr_Conn(CM_SERVICE_REQ:901700000004620){SUBSCR_CONN_S_AUTH_CIPH}: Received Event SUBSCR_CONN_E_ACCEPTED DREF MSISDN:46071: MSC conn use + cm_service == 1 (0x8) DMM Subscr_Conn(CM_SERVICE_REQ:901700000004620){SUBSCR_CONN_S_AUTH_CIPH}: state_chg to SUBSCR_CONN_S_ACCEPTED @@ -381,14 +380,13 @@ DVLR VLR_Authenticate(PAGING_RESP:901700000004620){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP DVLR SUBSCR(MSISDN:46071) AUTH on GERAN received SRES/RES: a29514ae (4 bytes) DVLR SUBSCR(MSISDN:46071) AUTH established GSM security context -DVLR VLR_Authenticate(PAGING_RESP:901700000004620){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result VLR_AUTH_RES_PASSED +DVLR VLR_Authenticate(PAGING_RESP:901700000004620){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED DVLR VLR_Authenticate(PAGING_RESP:901700000004620){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED DVLR VLR_Authenticate(PAGING_RESP:901700000004620){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DVLR VLR_Authenticate(PAGING_RESP:901700000004620){VLR_SUB_AS_AUTHENTICATED}: Removing from parent Process_Access_Request_VLR(PAGING_RESP:901700000004620) DVLR VLR_Authenticate(PAGING_RESP:901700000004620){VLR_SUB_AS_AUTHENTICATED}: Freeing instance DVLR VLR_Authenticate(PAGING_RESP:901700000004620){VLR_SUB_AS_AUTHENTICATED}: Deallocated DVLR Process_Access_Request_VLR(PAGING_RESP:901700000004620){PR_ARQ_S_WAIT_AUTH}: Received Event PR_ARQ_E_AUTH_RES -DVLR Process_Access_Request_VLR(PAGING_RESP:901700000004620){PR_ARQ_S_WAIT_AUTH}: got VLR_AUTH_RES_PASSED DVLR Process_Access_Request_VLR(PAGING_RESP:901700000004620){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2() DVLR Process_Access_Request_VLR(PAGING_RESP:901700000004620){PR_ARQ_S_WAIT_AUTH}: Set Ciphering Mode DMM -> CIPHER MODE COMMAND MSISDN:46071 @@ -421,9 +419,9 @@ DVLR Process_Access_Request_VLR(PAGING_RESP:901700000004620){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_pres() DVLR Process_Access_Request_VLR(PAGING_RESP:901700000004620){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_trace() DVLR Process_Access_Request_VLR(PAGING_RESP:901700000004620){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_imei() -DVLR Process_Access_Request_VLR(PAGING_RESP:901700000004620){PR_ARQ_S_WAIT_CIPH}: proc_arq_fsm_done(VLR_PR_ARQ_RES_PASSED) +DVLR Process_Access_Request_VLR(PAGING_RESP:901700000004620){PR_ARQ_S_WAIT_CIPH}: proc_arq_fsm_done(PASSED) DVLR Process_Access_Request_VLR(PAGING_RESP:901700000004620){PR_ARQ_S_WAIT_CIPH}: state_chg to PR_ARQ_S_DONE -DVLR Process_Access_Request_VLR(PAGING_RESP:901700000004620){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED +DVLR Process_Access_Request_VLR(PAGING_RESP:901700000004620){PR_ARQ_S_DONE}: Process Access Request result: PASSED DMM Subscr_Conn(PAGING_RESP:901700000004620){SUBSCR_CONN_S_AUTH_CIPH}: Received Event SUBSCR_CONN_E_ACCEPTED DPAG Paging success for MSISDN:46071 (event=0) DPAG Calling paging cbfn. @@ -497,11 +495,12 @@ DMM IMSI DETACH INDICATION: MI(IMSI)=901700000004620 DREF VLR subscr MSISDN:46071 usage increases to: 2 DMM IMSI DETACH for MSISDN:46071 +DREF VLR subscr MSISDN:46071 usage increases to: 3 +DREF VLR subscr MSISDN:46071 usage decreases to: 2 DREF VLR subscr MSISDN:46071 usage decreases to: 1 DREF VLR subscr MSISDN:46071 usage decreases to: 0 DREF freeing VLR subscr MSISDN:46071 DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_CN_CLOSE -DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: Close event, cause 0 DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASING DREF unknown: MSC conn use + release == 2 (0x101) - BSSAP Clear --RAN_GERAN_A--> MS @@ -577,7 +576,7 @@ DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP DVLR SUBSCR(IMSI:901700000004620) AUTH on GERAN received SRES/RES: 2d8b2c3e (4 bytes) DVLR SUBSCR(IMSI:901700000004620) AUTH established GSM security context -DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result VLR_AUTH_RES_PASSED +DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_AUTHENTICATED}: Removing from parent vlr_lu_fsm(LU:901700000004620) @@ -784,14 +783,13 @@ DVLR VLR_Authenticate(CM_SERVICE_REQ:50462976){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP DVLR SUBSCR(MSISDN:46071) AUTH on GERAN received SRES/RES: 20bde240 (4 bytes) DVLR SUBSCR(MSISDN:46071) AUTH established GSM security context -DVLR VLR_Authenticate(CM_SERVICE_REQ:50462976){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result VLR_AUTH_RES_PASSED +DVLR VLR_Authenticate(CM_SERVICE_REQ:50462976){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED DVLR VLR_Authenticate(CM_SERVICE_REQ:50462976){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED DVLR VLR_Authenticate(CM_SERVICE_REQ:50462976){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DVLR VLR_Authenticate(CM_SERVICE_REQ:50462976){VLR_SUB_AS_AUTHENTICATED}: Removing from parent Process_Access_Request_VLR(CM_SERVICE_REQ:50462976) DVLR VLR_Authenticate(CM_SERVICE_REQ:50462976){VLR_SUB_AS_AUTHENTICATED}: Freeing instance DVLR VLR_Authenticate(CM_SERVICE_REQ:50462976){VLR_SUB_AS_AUTHENTICATED}: Deallocated DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:50462976){PR_ARQ_S_WAIT_AUTH}: Received Event PR_ARQ_E_AUTH_RES -DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:50462976){PR_ARQ_S_WAIT_AUTH}: got VLR_AUTH_RES_PASSED DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:50462976){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2() DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:50462976){PR_ARQ_S_WAIT_AUTH}: Set Ciphering Mode DMM -> CIPHER MODE COMMAND MSISDN:46071 @@ -825,9 +823,9 @@ DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:50462976){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_pres() DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:50462976){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_trace() DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:50462976){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_imei() -DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:50462976){PR_ARQ_S_WAIT_CIPH}: proc_arq_fsm_done(VLR_PR_ARQ_RES_PASSED) +DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:50462976){PR_ARQ_S_WAIT_CIPH}: proc_arq_fsm_done(PASSED) DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:50462976){PR_ARQ_S_WAIT_CIPH}: state_chg to PR_ARQ_S_DONE -DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:50462976){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED +DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:50462976){PR_ARQ_S_DONE}: Process Access Request result: PASSED DMM Subscr_Conn(CM_SERVICE_REQ:50462976){SUBSCR_CONN_S_AUTH_CIPH}: Received Event SUBSCR_CONN_E_ACCEPTED DREF MSISDN:46071: MSC conn use + cm_service == 1 (0x8) DMM Subscr_Conn(CM_SERVICE_REQ:50462976){SUBSCR_CONN_S_AUTH_CIPH}: state_chg to SUBSCR_CONN_S_ACCEPTED @@ -938,14 +936,13 @@ DVLR VLR_Authenticate(PAGING_RESP:50462976){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP DVLR SUBSCR(MSISDN:46071) AUTH on GERAN received SRES/RES: a29514ae (4 bytes) DVLR SUBSCR(MSISDN:46071) AUTH established GSM security context -DVLR VLR_Authenticate(PAGING_RESP:50462976){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result VLR_AUTH_RES_PASSED +DVLR VLR_Authenticate(PAGING_RESP:50462976){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED DVLR VLR_Authenticate(PAGING_RESP:50462976){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED DVLR VLR_Authenticate(PAGING_RESP:50462976){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DVLR VLR_Authenticate(PAGING_RESP:50462976){VLR_SUB_AS_AUTHENTICATED}: Removing from parent Process_Access_Request_VLR(PAGING_RESP:50462976) DVLR VLR_Authenticate(PAGING_RESP:50462976){VLR_SUB_AS_AUTHENTICATED}: Freeing instance DVLR VLR_Authenticate(PAGING_RESP:50462976){VLR_SUB_AS_AUTHENTICATED}: Deallocated DVLR Process_Access_Request_VLR(PAGING_RESP:50462976){PR_ARQ_S_WAIT_AUTH}: Received Event PR_ARQ_E_AUTH_RES -DVLR Process_Access_Request_VLR(PAGING_RESP:50462976){PR_ARQ_S_WAIT_AUTH}: got VLR_AUTH_RES_PASSED DVLR Process_Access_Request_VLR(PAGING_RESP:50462976){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2() DVLR Process_Access_Request_VLR(PAGING_RESP:50462976){PR_ARQ_S_WAIT_AUTH}: Set Ciphering Mode DMM -> CIPHER MODE COMMAND MSISDN:46071 @@ -978,9 +975,9 @@ DVLR Process_Access_Request_VLR(PAGING_RESP:50462976){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_pres() DVLR Process_Access_Request_VLR(PAGING_RESP:50462976){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_trace() DVLR Process_Access_Request_VLR(PAGING_RESP:50462976){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_imei() -DVLR Process_Access_Request_VLR(PAGING_RESP:50462976){PR_ARQ_S_WAIT_CIPH}: proc_arq_fsm_done(VLR_PR_ARQ_RES_PASSED) +DVLR Process_Access_Request_VLR(PAGING_RESP:50462976){PR_ARQ_S_WAIT_CIPH}: proc_arq_fsm_done(PASSED) DVLR Process_Access_Request_VLR(PAGING_RESP:50462976){PR_ARQ_S_WAIT_CIPH}: state_chg to PR_ARQ_S_DONE -DVLR Process_Access_Request_VLR(PAGING_RESP:50462976){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED +DVLR Process_Access_Request_VLR(PAGING_RESP:50462976){PR_ARQ_S_DONE}: Process Access Request result: PASSED DMM Subscr_Conn(PAGING_RESP:50462976){SUBSCR_CONN_S_AUTH_CIPH}: Received Event SUBSCR_CONN_E_ACCEPTED DPAG Paging success for MSISDN:46071 (event=0) DPAG Calling paging cbfn. @@ -1054,11 +1051,12 @@ DMM IMSI DETACH INDICATION: MI(TMSI)=50462976 DREF VLR subscr MSISDN:46071 usage increases to: 2 DMM IMSI DETACH for MSISDN:46071 +DREF VLR subscr MSISDN:46071 usage increases to: 3 +DREF VLR subscr MSISDN:46071 usage decreases to: 2 DREF VLR subscr MSISDN:46071 usage decreases to: 1 DREF VLR subscr MSISDN:46071 usage decreases to: 0 DREF freeing VLR subscr MSISDN:46071 DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_CN_CLOSE -DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: Close event, cause 0 DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASING DREF unknown: MSC conn use + release == 2 (0x101) - BSSAP Clear --RAN_GERAN_A--> MS @@ -1134,7 +1132,7 @@ DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP DVLR SUBSCR(IMSI:901700000004620) AUTH on GERAN received SRES/RES: 2d8b2c3e (4 bytes) DVLR SUBSCR(IMSI:901700000004620) AUTH established GSM security context -DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result VLR_AUTH_RES_PASSED +DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_AUTHENTICATED}: Removing from parent vlr_lu_fsm(LU:901700000004620) @@ -1294,11 +1292,12 @@ DMM IMSI DETACH INDICATION: MI(IMSI)=901700000004620 DREF VLR subscr MSISDN:46071 usage increases to: 2 DMM IMSI DETACH for MSISDN:46071 +DREF VLR subscr MSISDN:46071 usage increases to: 3 +DREF VLR subscr MSISDN:46071 usage decreases to: 2 DREF VLR subscr MSISDN:46071 usage decreases to: 1 DREF VLR subscr MSISDN:46071 usage decreases to: 0 DREF freeing VLR subscr MSISDN:46071 DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_CN_CLOSE -DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: Close event, cause 0 DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASING DREF unknown: MSC conn use + release == 2 (0x101) - BSSAP Clear --RAN_GERAN_A--> MS @@ -1374,7 +1373,7 @@ DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP DVLR SUBSCR(IMSI:901700000004620) AUTH on GERAN received SRES/RES: 2d8b2c3e (4 bytes) DVLR SUBSCR(IMSI:901700000004620) AUTH established GSM security context -DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result VLR_AUTH_RES_PASSED +DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_AUTHENTICATED}: Removing from parent vlr_lu_fsm(LU:901700000004620) @@ -1523,11 +1522,12 @@ DMM IMSI DETACH INDICATION: MI(IMSI)=901700000004620 DREF VLR subscr MSISDN:46071 usage increases to: 2 DMM IMSI DETACH for MSISDN:46071 +DREF VLR subscr MSISDN:46071 usage increases to: 3 +DREF VLR subscr MSISDN:46071 usage decreases to: 2 DREF VLR subscr MSISDN:46071 usage decreases to: 1 DREF VLR subscr MSISDN:46071 usage decreases to: 0 DREF freeing VLR subscr MSISDN:46071 DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_CN_CLOSE -DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: Close event, cause 0 DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASING DREF unknown: MSC conn use + release == 2 (0x101) - BSSAP Clear --RAN_GERAN_A--> MS @@ -1603,7 +1603,7 @@ DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP DVLR SUBSCR(IMSI:901700000004620) AUTH on GERAN received SRES/RES: 2d8b2c3e (4 bytes) DVLR SUBSCR(IMSI:901700000004620) AUTH established GSM security context -DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result VLR_AUTH_RES_PASSED +DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_AUTHENTICATED}: Removing from parent vlr_lu_fsm(LU:901700000004620) @@ -1795,11 +1795,12 @@ DMM IMSI DETACH INDICATION: MI(TMSI)=50462976 DREF VLR subscr MSISDN:46071 usage increases to: 2 DMM IMSI DETACH for MSISDN:46071 +DREF VLR subscr MSISDN:46071 usage increases to: 3 +DREF VLR subscr MSISDN:46071 usage decreases to: 2 DREF VLR subscr MSISDN:46071 usage decreases to: 1 DREF VLR subscr MSISDN:46071 usage decreases to: 0 DREF freeing VLR subscr MSISDN:46071 DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_CN_CLOSE -DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: Close event, cause 0 DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASING DREF unknown: MSC conn use + release == 2 (0x101) - BSSAP Clear --RAN_GERAN_A--> MS @@ -1876,7 +1877,7 @@ DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP DVLR SUBSCR(IMSI:901700000010650) AUTH on GERAN received SRES/RES: dacc4b26 (4 bytes) DVLR SUBSCR(IMSI:901700000010650) AUTH established GSM security context -DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result VLR_AUTH_RES_PASSED +DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Removing from parent vlr_lu_fsm(LU:901700000010650) @@ -2035,14 +2036,13 @@ DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP DVLR SUBSCR(MSISDN:42342) AUTH on GERAN received SRES/RES: 2fb4cfad (4 bytes) DVLR SUBSCR(MSISDN:42342) AUTH established GSM security context -DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result VLR_AUTH_RES_PASSED +DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Removing from parent Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650) DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Freeing instance DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Deallocated DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: Received Event PR_ARQ_E_AUTH_RES -DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: got VLR_AUTH_RES_PASSED DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2() DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: Set Ciphering Mode DMM -> CIPHER MODE COMMAND MSISDN:42342 @@ -2065,9 +2065,9 @@ DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_pres() DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_trace() DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_imei() -DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_CIPH}: proc_arq_fsm_done(VLR_PR_ARQ_RES_PASSED) +DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_CIPH}: proc_arq_fsm_done(PASSED) DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_CIPH}: state_chg to PR_ARQ_S_DONE -DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED +DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_DONE}: Process Access Request result: PASSED DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_AUTH_CIPH}: Received Event SUBSCR_CONN_E_ACCEPTED DREF MSISDN:42342: MSC conn use + cm_service == 1 (0x8) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_AUTH_CIPH}: state_chg to SUBSCR_CONN_S_ACCEPTED @@ -2179,14 +2179,13 @@ DVLR VLR_Authenticate(PAGING_RESP:901700000010650){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP DVLR SUBSCR(MSISDN:42342) AUTH on GERAN received SRES/RES: 0ff61e0f (4 bytes) DVLR SUBSCR(MSISDN:42342) AUTH established GSM security context -DVLR VLR_Authenticate(PAGING_RESP:901700000010650){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result VLR_AUTH_RES_PASSED +DVLR VLR_Authenticate(PAGING_RESP:901700000010650){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED DVLR VLR_Authenticate(PAGING_RESP:901700000010650){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED DVLR VLR_Authenticate(PAGING_RESP:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DVLR VLR_Authenticate(PAGING_RESP:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Removing from parent Process_Access_Request_VLR(PAGING_RESP:901700000010650) DVLR VLR_Authenticate(PAGING_RESP:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Freeing instance DVLR VLR_Authenticate(PAGING_RESP:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Deallocated DVLR Process_Access_Request_VLR(PAGING_RESP:901700000010650){PR_ARQ_S_WAIT_AUTH}: Received Event PR_ARQ_E_AUTH_RES -DVLR Process_Access_Request_VLR(PAGING_RESP:901700000010650){PR_ARQ_S_WAIT_AUTH}: got VLR_AUTH_RES_PASSED DVLR Process_Access_Request_VLR(PAGING_RESP:901700000010650){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2() DVLR Process_Access_Request_VLR(PAGING_RESP:901700000010650){PR_ARQ_S_WAIT_AUTH}: Set Ciphering Mode DMM -> CIPHER MODE COMMAND MSISDN:42342 @@ -2208,9 +2207,9 @@ DVLR Process_Access_Request_VLR(PAGING_RESP:901700000010650){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_pres() DVLR Process_Access_Request_VLR(PAGING_RESP:901700000010650){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_trace() DVLR Process_Access_Request_VLR(PAGING_RESP:901700000010650){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_imei() -DVLR Process_Access_Request_VLR(PAGING_RESP:901700000010650){PR_ARQ_S_WAIT_CIPH}: proc_arq_fsm_done(VLR_PR_ARQ_RES_PASSED) +DVLR Process_Access_Request_VLR(PAGING_RESP:901700000010650){PR_ARQ_S_WAIT_CIPH}: proc_arq_fsm_done(PASSED) DVLR Process_Access_Request_VLR(PAGING_RESP:901700000010650){PR_ARQ_S_WAIT_CIPH}: state_chg to PR_ARQ_S_DONE -DVLR Process_Access_Request_VLR(PAGING_RESP:901700000010650){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED +DVLR Process_Access_Request_VLR(PAGING_RESP:901700000010650){PR_ARQ_S_DONE}: Process Access Request result: PASSED DMM Subscr_Conn(PAGING_RESP:901700000010650){SUBSCR_CONN_S_AUTH_CIPH}: Received Event SUBSCR_CONN_E_ACCEPTED DPAG Paging success for MSISDN:42342 (event=0) DPAG Calling paging cbfn. @@ -2284,11 +2283,12 @@ DMM IMSI DETACH INDICATION: MI(IMSI)=901700000010650 DREF VLR subscr MSISDN:42342 usage increases to: 2 DMM IMSI DETACH for MSISDN:42342 +DREF VLR subscr MSISDN:42342 usage increases to: 3 +DREF VLR subscr MSISDN:42342 usage decreases to: 2 DREF VLR subscr MSISDN:42342 usage decreases to: 1 DREF VLR subscr MSISDN:42342 usage decreases to: 0 DREF freeing VLR subscr MSISDN:42342 DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_CN_CLOSE -DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: Close event, cause 0 DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASING DREF unknown: MSC conn use + release == 2 (0x101) - BSSAP Clear --RAN_GERAN_A--> MS @@ -2365,7 +2365,7 @@ DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP DVLR SUBSCR(IMSI:901700000004620) AUTH on GERAN received SRES/RES: 2d8b2c3e (4 bytes) DVLR SUBSCR(IMSI:901700000004620) AUTH established GSM security context -DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result VLR_AUTH_RES_PASSED +DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_AUTHENTICATED}: Removing from parent vlr_lu_fsm(LU:901700000004620) diff --git a/tests/msc_vlr/msc_vlr_test_hlr_reject.err b/tests/msc_vlr/msc_vlr_test_hlr_reject.err index eda3be7..ac191be 100644 --- a/tests/msc_vlr/msc_vlr_test_hlr_reject.err +++ b/tests/msc_vlr/msc_vlr_test_hlr_reject.err @@ -40,7 +40,7 @@ DREF VLR subscr IMSI:901700000004620 usage increases to: 2 DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: Received Event VLR_AUTH_E_HLR_SAI_NACK DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: GSUP: rx Auth Info Error cause: 2: IMSI unknown in HLR -DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: Authentication terminating with result VLR_AUTH_RES_UNKNOWN_SUBSCR +DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: Authentication terminating with result IMSI unknown in HLR DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: state_chg to VLR_SUB_AS_AUTH_FAILED DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_AUTH_FAILED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_AUTH_FAILED}: Removing from parent vlr_lu_fsm(LU:901700000004620) @@ -120,7 +120,7 @@ DREF VLR subscr IMSI:901700000004620 usage increases to: 2 DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: Received Event VLR_AUTH_E_HLR_SAI_NACK DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: GSUP: rx Auth Info Error cause: 17: Network failure -DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: Authentication terminating with result VLR_AUTH_RES_PROC_ERR +DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: Authentication terminating with result Network failure DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: state_chg to VLR_SUB_AS_AUTH_FAILED DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_AUTH_FAILED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_AUTH_FAILED}: Removing from parent vlr_lu_fsm(LU:901700000004620) @@ -219,7 +219,7 @@ DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP DVLR SUBSCR(IMSI:901700000004620) AUTH on GERAN received SRES/RES: 2d8b2c3e (4 bytes) DVLR SUBSCR(IMSI:901700000004620) AUTH established GSM security context -DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result VLR_AUTH_RES_PASSED +DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_AUTHENTICATED}: Removing from parent vlr_lu_fsm(LU:901700000004620) @@ -374,7 +374,7 @@ DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP DVLR SUBSCR(MSISDN:46071) AUTH on GERAN received SRES/RES: 2d8b2c3e (4 bytes) DVLR SUBSCR(MSISDN:46071) AUTH established GSM security context -DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result VLR_AUTH_RES_PASSED +DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_AUTHENTICATED}: Removing from parent vlr_lu_fsm(LU:901700000004620) @@ -532,7 +532,7 @@ DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP DVLR SUBSCR(IMSI:901700000004620) AUTH on GERAN received SRES/RES: 2d8b2c3e (4 bytes) DVLR SUBSCR(IMSI:901700000004620) AUTH established GSM security context -DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result VLR_AUTH_RES_PASSED +DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_AUTHENTICATED}: Removing from parent vlr_lu_fsm(LU:901700000004620) @@ -670,7 +670,7 @@ DREF VLR subscr MSISDN:46071 usage increases to: 3 DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: Received Event VLR_AUTH_E_HLR_SAI_NACK DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: GSUP: rx Auth Info Error cause: 17: Network failure -DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: Authentication terminating with result VLR_AUTH_RES_PROC_ERR +DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: Authentication terminating with result Network failure DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: state_chg to VLR_SUB_AS_AUTH_FAILED DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_AUTH_FAILED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_AUTH_FAILED}: Removing from parent vlr_lu_fsm(LU:901700000004620) @@ -769,7 +769,7 @@ DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP DVLR SUBSCR(IMSI:901700000004620) AUTH on GERAN received SRES/RES: 2d8b2c3e (4 bytes) DVLR SUBSCR(IMSI:901700000004620) AUTH established GSM security context -DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result VLR_AUTH_RES_PASSED +DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_AUTHENTICATED}: Removing from parent vlr_lu_fsm(LU:901700000004620) @@ -908,7 +908,7 @@ DREF VLR subscr MSISDN:46071 usage increases to: 3 DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: Received Event VLR_AUTH_E_HLR_SAI_NACK DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: GSUP: rx Auth Info Error cause: 2: IMSI unknown in HLR -DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: Authentication terminating with result VLR_AUTH_RES_UNKNOWN_SUBSCR +DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: Authentication terminating with result IMSI unknown in HLR DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: state_chg to VLR_SUB_AS_AUTH_FAILED DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_AUTH_FAILED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_AUTH_FAILED}: Removing from parent vlr_lu_fsm(LU:901700000004620) @@ -987,7 +987,7 @@ DVLR GSUP rx 11: 0a010809710000004026f0 DREF VLR subscr IMSI:901700000004620 usage increases to: 2 DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: Received Event VLR_AUTH_E_HLR_SAI_ACK -DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: Authentication terminating with result VLR_AUTH_RES_PROC_ERR +DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: Authentication terminating with result Network failure DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: state_chg to VLR_SUB_AS_AUTH_FAILED DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_AUTH_FAILED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_AUTH_FAILED}: Removing from parent vlr_lu_fsm(LU:901700000004620) diff --git a/tests/msc_vlr/msc_vlr_test_hlr_timeout.err b/tests/msc_vlr/msc_vlr_test_hlr_timeout.err index f4d10a3..646f078 100644 --- a/tests/msc_vlr/msc_vlr_test_hlr_timeout.err +++ b/tests/msc_vlr/msc_vlr_test_hlr_timeout.err @@ -51,11 +51,10 @@ - Total time passed: 5.001598 s DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_AUTH_CIPH}: Timeout of T0 DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_AUTH_CIPH}: Received Event SUBSCR_CONN_E_CN_CLOSE -DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_AUTH_CIPH}: Close event, cause 38 +DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_AUTH_CIPH}: Close event, cause: CONGESTION DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_AUTH_CIPH}: state_chg to SUBSCR_CONN_S_RELEASING DREF IMSI:901700000004620: MSC conn use + release == 1 (0x100) DREF VLR subscr IMSI:901700000004620 usage increases to: 2 -DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_WAIT_AUTH}: Connection timed out - sending LU Reject for IMSI:901700000004620, cause 22 DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_WAIT_AUTH}: state_chg to VLR_ULA_S_DONE DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_CN_CLOSE @@ -159,11 +158,10 @@ - Total time passed: 5.001598 s DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_AUTH_CIPH}: Timeout of T0 DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_AUTH_CIPH}: Received Event SUBSCR_CONN_E_CN_CLOSE -DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_AUTH_CIPH}: Close event, cause 38 +DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_AUTH_CIPH}: Close event, cause: CONGESTION DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_AUTH_CIPH}: state_chg to SUBSCR_CONN_S_RELEASING DREF MSISDN:46071: MSC conn use + release == 1 (0x100) DREF VLR subscr MSISDN:46071 usage increases to: 2 -DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_WAIT_HLR_UPD}: Connection timed out - sending LU Reject for MSISDN:46071, cause 22 DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_WAIT_HLR_UPD}: state_chg to VLR_ULA_S_DONE DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_CN_CLOSE diff --git a/tests/msc_vlr/msc_vlr_test_ms_timeout.err b/tests/msc_vlr/msc_vlr_test_ms_timeout.err index b16feaf..a6f5411 100644 --- a/tests/msc_vlr/msc_vlr_test_ms_timeout.err +++ b/tests/msc_vlr/msc_vlr_test_ms_timeout.err @@ -71,11 +71,10 @@ - Total time passed: 5.001598 s DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_AUTH_CIPH}: Timeout of T0 DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_AUTH_CIPH}: Received Event SUBSCR_CONN_E_CN_CLOSE -DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_AUTH_CIPH}: Close event, cause 38 +DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_AUTH_CIPH}: Close event, cause: CONGESTION DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_AUTH_CIPH}: state_chg to SUBSCR_CONN_S_RELEASING DREF IMSI:901700000004620: MSC conn use + release == 1 (0x100) DREF VLR subscr IMSI:901700000004620 usage increases to: 2 -DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_WAIT_AUTH}: Connection timed out - sending LU Reject for IMSI:901700000004620, cause 22 DVLR vlr_lu_fsm(LU:901700000004620){VLR_ULA_S_WAIT_AUTH}: state_chg to VLR_ULA_S_DONE DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_CN_CLOSE @@ -167,7 +166,7 @@ DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP DVLR SUBSCR(IMSI:901700000004620) AUTH on GERAN received SRES/RES: 2d8b2c3e (4 bytes) DVLR SUBSCR(IMSI:901700000004620) AUTH established GSM security context -DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result VLR_AUTH_RES_PASSED +DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DVLR VLR_Authenticate(LU:901700000004620){VLR_SUB_AS_AUTHENTICATED}: Removing from parent vlr_lu_fsm(LU:901700000004620) @@ -316,15 +315,15 @@ - Total time passed: 5.001598 s DMM Subscr_Conn(CM_SERVICE_REQ:901700000004620){SUBSCR_CONN_S_AUTH_CIPH}: Timeout of T0 DMM Subscr_Conn(CM_SERVICE_REQ:901700000004620){SUBSCR_CONN_S_AUTH_CIPH}: Received Event SUBSCR_CONN_E_CN_CLOSE -DMM Subscr_Conn(CM_SERVICE_REQ:901700000004620){SUBSCR_CONN_S_AUTH_CIPH}: Close event, cause 38 +DMM Subscr_Conn(CM_SERVICE_REQ:901700000004620){SUBSCR_CONN_S_AUTH_CIPH}: Close event, cause: CONGESTION DMM Subscr_Conn(CM_SERVICE_REQ:901700000004620){SUBSCR_CONN_S_AUTH_CIPH}: state_chg to SUBSCR_CONN_S_RELEASING DREF MSISDN:46071: MSC conn use + release == 1 (0x100) DREF VLR subscr MSISDN:46071 usage increases to: 3 -DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000004620){PR_ARQ_S_WAIT_AUTH}: Connection timed out -DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000004620){PR_ARQ_S_WAIT_AUTH}: proc_arq_fsm_done(VLR_PR_ARQ_RES_TIMEOUT) +DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000004620){PR_ARQ_S_WAIT_AUTH}: Cancel: OSMO_FSM_TERM_ERROR +DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000004620){PR_ARQ_S_WAIT_AUTH}: proc_arq_fsm_done(CONGESTION) DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000004620){PR_ARQ_S_WAIT_AUTH}: state_chg to PR_ARQ_S_DONE -DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000004620){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_TIMEOUT -- sending CM Service Reject for MSISDN:46071, result VLR_PR_ARQ_RES_TIMEOUT +DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000004620){PR_ARQ_S_DONE}: Process Access Request result: CONGESTION +- sending CM Service Reject for MSISDN:46071, cause: CONGESTION DMM Subscr_Conn(CM_SERVICE_REQ:901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_CN_CLOSE DMM Subscr_Conn(CM_SERVICE_REQ:901700000004620){SUBSCR_CONN_S_RELEASING}: Event SUBSCR_CONN_E_CN_CLOSE not permitted DREF VLR subscr MSISDN:46071 usage decreases to: 2 @@ -529,11 +528,12 @@ DPAG Calling paging cbfn. DREF VLR subscr MSISDN:46071 usage decreases to: 3 DREF VLR subscr MSISDN:46071 usage decreases to: 2 +DREF VLR subscr MSISDN:46071 usage increases to: 3 +DREF VLR subscr MSISDN:46071 usage decreases to: 2 DREF VLR subscr MSISDN:46071 usage decreases to: 1 DREF VLR subscr MSISDN:46071 usage decreases to: 0 DREF freeing VLR subscr MSISDN:46071 DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_CN_CLOSE -DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: Close event, cause 0 DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASING DREF unknown: MSC conn use + release == 2 (0x101) - BSSAP Clear --RAN_GERAN_A--> MS diff --git a/tests/msc_vlr/msc_vlr_test_no_authen.err b/tests/msc_vlr/msc_vlr_test_no_authen.err index f0d9c50..90bf697 100644 --- a/tests/msc_vlr/msc_vlr_test_no_authen.err +++ b/tests/msc_vlr/msc_vlr_test_no_authen.err @@ -145,9 +145,9 @@ DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000004620){PR_ARQ_S_INIT}: _proc_arq_vlr_post_pres() DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000004620){PR_ARQ_S_INIT}: _proc_arq_vlr_post_trace() DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000004620){PR_ARQ_S_INIT}: _proc_arq_vlr_post_imei() -DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000004620){PR_ARQ_S_INIT}: proc_arq_fsm_done(VLR_PR_ARQ_RES_PASSED) +DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000004620){PR_ARQ_S_INIT}: proc_arq_fsm_done(PASSED) DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000004620){PR_ARQ_S_INIT}: state_chg to PR_ARQ_S_DONE -DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000004620){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED +DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000004620){PR_ARQ_S_DONE}: Process Access Request result: PASSED - sending CM Service Accept for MSISDN:46071 DMM Subscr_Conn(CM_SERVICE_REQ:901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED DREF MSISDN:46071: MSC conn use + cm_service == 2 (0x9) @@ -236,9 +236,9 @@ DVLR Process_Access_Request_VLR(PAGING_RESP:901700000004620){PR_ARQ_S_INIT}: _proc_arq_vlr_post_pres() DVLR Process_Access_Request_VLR(PAGING_RESP:901700000004620){PR_ARQ_S_INIT}: _proc_arq_vlr_post_trace() DVLR Process_Access_Request_VLR(PAGING_RESP:901700000004620){PR_ARQ_S_INIT}: _proc_arq_vlr_post_imei() -DVLR Process_Access_Request_VLR(PAGING_RESP:901700000004620){PR_ARQ_S_INIT}: proc_arq_fsm_done(VLR_PR_ARQ_RES_PASSED) +DVLR Process_Access_Request_VLR(PAGING_RESP:901700000004620){PR_ARQ_S_INIT}: proc_arq_fsm_done(PASSED) DVLR Process_Access_Request_VLR(PAGING_RESP:901700000004620){PR_ARQ_S_INIT}: state_chg to PR_ARQ_S_DONE -DVLR Process_Access_Request_VLR(PAGING_RESP:901700000004620){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED +DVLR Process_Access_Request_VLR(PAGING_RESP:901700000004620){PR_ARQ_S_DONE}: Process Access Request result: PASSED DMM Subscr_Conn(PAGING_RESP:901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED DPAG Paging success for MSISDN:46071 (event=0) DPAG Calling paging cbfn. @@ -316,11 +316,12 @@ DMM IMSI DETACH INDICATION: MI(IMSI)=901700000004620 DREF VLR subscr MSISDN:46071 usage increases to: 2 DMM IMSI DETACH for MSISDN:46071 +DREF VLR subscr MSISDN:46071 usage increases to: 3 +DREF VLR subscr MSISDN:46071 usage decreases to: 2 DREF VLR subscr MSISDN:46071 usage decreases to: 1 DREF VLR subscr MSISDN:46071 usage decreases to: 0 DREF freeing VLR subscr MSISDN:46071 DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_CN_CLOSE -DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: Close event, cause 0 DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASING DREF unknown: MSC conn use + release == 2 (0x101) - BSSAP Clear --RAN_GERAN_A--> MS @@ -520,9 +521,9 @@ DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:50462976){PR_ARQ_S_INIT}: _proc_arq_vlr_post_pres() DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:50462976){PR_ARQ_S_INIT}: _proc_arq_vlr_post_trace() DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:50462976){PR_ARQ_S_INIT}: _proc_arq_vlr_post_imei() -DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:50462976){PR_ARQ_S_INIT}: proc_arq_fsm_done(VLR_PR_ARQ_RES_PASSED) +DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:50462976){PR_ARQ_S_INIT}: proc_arq_fsm_done(PASSED) DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:50462976){PR_ARQ_S_INIT}: state_chg to PR_ARQ_S_DONE -DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:50462976){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED +DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:50462976){PR_ARQ_S_DONE}: Process Access Request result: PASSED - sending CM Service Accept for MSISDN:46071 DMM Subscr_Conn(CM_SERVICE_REQ:50462976){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED DREF MSISDN:46071: MSC conn use + cm_service == 2 (0x9) @@ -610,9 +611,9 @@ DVLR Process_Access_Request_VLR(PAGING_RESP:50462976){PR_ARQ_S_INIT}: _proc_arq_vlr_post_pres() DVLR Process_Access_Request_VLR(PAGING_RESP:50462976){PR_ARQ_S_INIT}: _proc_arq_vlr_post_trace() DVLR Process_Access_Request_VLR(PAGING_RESP:50462976){PR_ARQ_S_INIT}: _proc_arq_vlr_post_imei() -DVLR Process_Access_Request_VLR(PAGING_RESP:50462976){PR_ARQ_S_INIT}: proc_arq_fsm_done(VLR_PR_ARQ_RES_PASSED) +DVLR Process_Access_Request_VLR(PAGING_RESP:50462976){PR_ARQ_S_INIT}: proc_arq_fsm_done(PASSED) DVLR Process_Access_Request_VLR(PAGING_RESP:50462976){PR_ARQ_S_INIT}: state_chg to PR_ARQ_S_DONE -DVLR Process_Access_Request_VLR(PAGING_RESP:50462976){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED +DVLR Process_Access_Request_VLR(PAGING_RESP:50462976){PR_ARQ_S_DONE}: Process Access Request result: PASSED DMM Subscr_Conn(PAGING_RESP:50462976){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED DPAG Paging success for MSISDN:46071 (event=0) DPAG Calling paging cbfn. @@ -846,11 +847,12 @@ DMM IMSI DETACH INDICATION: MI(TMSI)=117835012 DREF VLR subscr MSISDN:46071 usage increases to: 2 DMM IMSI DETACH for MSISDN:46071 +DREF VLR subscr MSISDN:46071 usage increases to: 3 +DREF VLR subscr MSISDN:46071 usage decreases to: 2 DREF VLR subscr MSISDN:46071 usage decreases to: 1 DREF VLR subscr MSISDN:46071 usage decreases to: 0 DREF freeing VLR subscr MSISDN:46071 DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_CN_CLOSE -DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: Close event, cause 0 DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASING DREF unknown: MSC conn use + release == 2 (0x101) - BSSAP Clear --RAN_GERAN_A--> MS @@ -1034,11 +1036,12 @@ DMM IMSI DETACH INDICATION: MI(IMSI)=901700000004620 DREF VLR subscr MSISDN:46071 usage increases to: 2 DMM IMSI DETACH for MSISDN:46071 +DREF VLR subscr MSISDN:46071 usage increases to: 3 +DREF VLR subscr MSISDN:46071 usage decreases to: 2 DREF VLR subscr MSISDN:46071 usage decreases to: 1 DREF VLR subscr MSISDN:46071 usage decreases to: 0 DREF freeing VLR subscr MSISDN:46071 DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_CN_CLOSE -DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: Close event, cause 0 DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASING DREF unknown: MSC conn use + release == 2 (0x101) - BSSAP Clear --RAN_GERAN_A--> MS @@ -1248,11 +1251,12 @@ DMM IMSI DETACH INDICATION: MI(IMSI)=901700000004620 DREF VLR subscr MSISDN:46071 usage increases to: 2 DMM IMSI DETACH for MSISDN:46071 +DREF VLR subscr MSISDN:46071 usage increases to: 3 +DREF VLR subscr MSISDN:46071 usage decreases to: 2 DREF VLR subscr MSISDN:46071 usage decreases to: 1 DREF VLR subscr MSISDN:46071 usage decreases to: 0 DREF freeing VLR subscr MSISDN:46071 DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_CN_CLOSE -DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: Close event, cause 0 DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASING DREF unknown: MSC conn use + release == 2 (0x101) - BSSAP Clear --RAN_GERAN_A--> MS @@ -1422,11 +1426,12 @@ DMM IMSI DETACH INDICATION: MI(IMSI)=901700000004620 DREF VLR subscr MSISDN:46071 usage increases to: 2 DMM IMSI DETACH for MSISDN:46071 +DREF VLR subscr MSISDN:46071 usage increases to: 3 +DREF VLR subscr MSISDN:46071 usage decreases to: 2 DREF VLR subscr MSISDN:46071 usage decreases to: 1 DREF VLR subscr MSISDN:46071 usage decreases to: 0 DREF freeing VLR subscr MSISDN:46071 DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_CN_CLOSE -DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: Close event, cause 0 DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASING DREF unknown: MSC conn use + release == 2 (0x101) - BSSAP Clear --RAN_GERAN_A--> MS @@ -1628,11 +1633,12 @@ DMM IMSI DETACH INDICATION: MI(IMSI)=901700000004620 DREF VLR subscr MSISDN:46071 usage increases to: 2 DMM IMSI DETACH for MSISDN:46071 +DREF VLR subscr MSISDN:46071 usage increases to: 3 +DREF VLR subscr MSISDN:46071 usage decreases to: 2 DREF VLR subscr MSISDN:46071 usage decreases to: 1 DREF VLR subscr MSISDN:46071 usage decreases to: 0 DREF freeing VLR subscr MSISDN:46071 DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_CN_CLOSE -DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: Close event, cause 0 DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASING DREF unknown: MSC conn use + release == 2 (0x101) - BSSAP Clear --RAN_GERAN_A--> MS @@ -2005,11 +2011,12 @@ DMM IMSI DETACH INDICATION: MI(TMSI)=117835012 DREF VLR subscr MSISDN:46071 usage increases to: 2 DMM IMSI DETACH for MSISDN:46071 +DREF VLR subscr MSISDN:46071 usage increases to: 3 +DREF VLR subscr MSISDN:46071 usage decreases to: 2 DREF VLR subscr MSISDN:46071 usage decreases to: 1 DREF VLR subscr MSISDN:46071 usage decreases to: 0 DREF freeing VLR subscr MSISDN:46071 DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_CN_CLOSE -DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: Close event, cause 0 DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASING DREF unknown: MSC conn use + release == 2 (0x101) - BSSAP Clear --RAN_GERAN_A--> MS @@ -2238,11 +2245,12 @@ DMM IMSI DETACH INDICATION: MI(IMSI)=901700000004620 DREF VLR subscr MSISDN:46071 usage increases to: 2 DMM IMSI DETACH for MSISDN:46071 +DREF VLR subscr MSISDN:46071 usage increases to: 3 +DREF VLR subscr MSISDN:46071 usage decreases to: 2 DREF VLR subscr MSISDN:46071 usage decreases to: 1 DREF VLR subscr MSISDN:46071 usage decreases to: 0 DREF freeing VLR subscr MSISDN:46071 DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_CN_CLOSE -DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: Close event, cause 0 DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASING DREF unknown: MSC conn use + release == 2 (0x101) - BSSAP Clear --RAN_GERAN_A--> MS diff --git a/tests/msc_vlr/msc_vlr_test_reject_concurrency.c b/tests/msc_vlr/msc_vlr_test_reject_concurrency.c index cf9d8c9..ea8c32c 100644 --- a/tests/msc_vlr/msc_vlr_test_reject_concurrency.c +++ b/tests/msc_vlr/msc_vlr_test_reject_concurrency.c @@ -220,7 +220,7 @@ BTW("A CM Service Request in the middle of a LU is rejected"); cm_service_result_sent = RES_NONE; - dtap_expect_tx("052211"); + dtap_expect_tx("052216"); ms_sends_msg("05247803305886089910070000006402"); VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d"); VERBOSE_ASSERT(cm_service_result_sent, == RES_NONE, "%d"); diff --git a/tests/msc_vlr/msc_vlr_test_reject_concurrency.err b/tests/msc_vlr/msc_vlr_test_reject_concurrency.err index 563ff3d..bc14fa4 100644 --- a/tests/msc_vlr/msc_vlr_test_reject_concurrency.err +++ b/tests/msc_vlr/msc_vlr_test_reject_concurrency.err @@ -334,9 +334,9 @@ DRLL Dispatching 04.08 message GSM48_MT_MM_CM_SERV_REQ (0x5:0x24) DMM <- CM SERVICE REQUEST serv_type=0x08 MI(IMSI)=901700000004620 DMM Cannot accept CM Service Request, conn already busy establishing authenticity -DMM -> CM SERVICE Reject cause: 17 +DMM -> CM SERVICE Reject cause: 22 DMSC msc_tx 3 bytes to IMSI:901700000004620 via RAN_GERAN_A -- DTAP --RAN_GERAN_A--> MS: GSM48_MT_MM_CM_SERV_REJ: 052211 +- DTAP --RAN_GERAN_A--> MS: GSM48_MT_MM_CM_SERV_REJ: 052216 - DTAP matches expected message DREF IMSI:901700000004620: MSC conn use - dtap == 0 (0x0) DMM Subscr_Conn(LU:901700000004620){SUBSCR_CONN_S_AUTH_CIPH}: Received Event SUBSCR_CONN_E_UNUSED @@ -692,9 +692,9 @@ DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000004620){PR_ARQ_S_INIT}: _proc_arq_vlr_post_pres() DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000004620){PR_ARQ_S_INIT}: _proc_arq_vlr_post_trace() DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000004620){PR_ARQ_S_INIT}: _proc_arq_vlr_post_imei() -DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000004620){PR_ARQ_S_INIT}: proc_arq_fsm_done(VLR_PR_ARQ_RES_PASSED) +DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000004620){PR_ARQ_S_INIT}: proc_arq_fsm_done(PASSED) DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000004620){PR_ARQ_S_INIT}: state_chg to PR_ARQ_S_DONE -DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000004620){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED +DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000004620){PR_ARQ_S_DONE}: Process Access Request result: PASSED - sending CM Service Accept for MSISDN:46071 DMM Subscr_Conn(CM_SERVICE_REQ:901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED DREF MSISDN:46071: MSC conn use + cm_service == 2 (0x9) @@ -722,20 +722,17 @@ DMM IMSI DETACH INDICATION: MI(IMSI)=901700000004620 DREF VLR subscr MSISDN:46071 usage increases to: 3 DMM IMSI DETACH for MSISDN:46071 -DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000004620){PR_ARQ_S_DONE}: Terminating (cause = OSMO_FSM_TERM_ERROR) -DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000004620){PR_ARQ_S_DONE}: Removing from parent Subscr_Conn(CM_SERVICE_REQ:901700000004620) -DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000004620){PR_ARQ_S_DONE}: Freeing instance -DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000004620){PR_ARQ_S_DONE}: Deallocated +DREF VLR subscr MSISDN:46071 usage increases to: 4 +DREF VLR subscr MSISDN:46071 usage decreases to: 3 +DREF VLR subscr MSISDN:46071 usage decreases to: 2 +DREF VLR subscr MSISDN:46071 usage decreases to: 1 DMM Subscr_Conn(CM_SERVICE_REQ:901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_CN_CLOSE DMM Subscr_Conn(CM_SERVICE_REQ:901700000004620){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_RELEASING DREF MSISDN:46071: MSC conn use + release == 3 (0x10a) DREF MSISDN:46071: MSC conn use - cm_service == 2 (0x102) -DREF VLR subscr MSISDN:46071 usage increases to: 4 -DREF VLR subscr MSISDN:46071 usage decreases to: 3 -- BSSAP Clear --RAN_GERAN_A--> MS -DREF VLR subscr MSISDN:46071 usage decreases to: 2 +DREF VLR subscr MSISDN:46071 usage increases to: 2 DREF VLR subscr MSISDN:46071 usage decreases to: 1 -DMM conn_close(vsub=MSISDN:46071, cause=0): already in release, ignore. +- BSSAP Clear --RAN_GERAN_A--> MS DREF MSISDN:46071: MSC conn use - dtap == 1 (0x100) bssap_clear_sent == 1 - BSS sends BSSMAP Clear Complete @@ -743,6 +740,10 @@ DMM Subscr_Conn(CM_SERVICE_REQ:901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(CM_SERVICE_REQ:901700000004620){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn(CM_SERVICE_REQ:901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) +DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000004620){PR_ARQ_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT) +DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000004620){PR_ARQ_S_DONE}: Removing from parent Subscr_Conn(CM_SERVICE_REQ:901700000004620) +DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000004620){PR_ARQ_S_DONE}: Freeing instance +DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000004620){PR_ARQ_S_DONE}: Deallocated DRLL MSISDN:46071: Freeing subscriber connection DREF VLR subscr MSISDN:46071 usage decreases to: 0 DREF freeing VLR subscr MSISDN:46071 @@ -889,9 +890,9 @@ DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000004620){PR_ARQ_S_INIT}: _proc_arq_vlr_post_pres() DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000004620){PR_ARQ_S_INIT}: _proc_arq_vlr_post_trace() DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000004620){PR_ARQ_S_INIT}: _proc_arq_vlr_post_imei() -DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000004620){PR_ARQ_S_INIT}: proc_arq_fsm_done(VLR_PR_ARQ_RES_PASSED) +DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000004620){PR_ARQ_S_INIT}: proc_arq_fsm_done(PASSED) DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000004620){PR_ARQ_S_INIT}: state_chg to PR_ARQ_S_DONE -DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000004620){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED +DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000004620){PR_ARQ_S_DONE}: Process Access Request result: PASSED - sending CM Service Accept for MSISDN:46071 DMM Subscr_Conn(CM_SERVICE_REQ:901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED DREF MSISDN:46071: MSC conn use + cm_service == 2 (0x9) @@ -922,20 +923,17 @@ DMM IMSI DETACH INDICATION: MI(IMSI)=901700000004620 DREF VLR subscr MSISDN:46071 usage increases to: 3 DMM IMSI DETACH for MSISDN:46071 -DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000004620){PR_ARQ_S_DONE}: Terminating (cause = OSMO_FSM_TERM_ERROR) -DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000004620){PR_ARQ_S_DONE}: Removing from parent Subscr_Conn(CM_SERVICE_REQ:901700000004620) -DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000004620){PR_ARQ_S_DONE}: Freeing instance -DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000004620){PR_ARQ_S_DONE}: Deallocated +DREF VLR subscr MSISDN:46071 usage increases to: 4 +DREF VLR subscr MSISDN:46071 usage decreases to: 3 +DREF VLR subscr MSISDN:46071 usage decreases to: 2 +DREF VLR subscr MSISDN:46071 usage decreases to: 1 DMM Subscr_Conn(CM_SERVICE_REQ:901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_CN_CLOSE DMM Subscr_Conn(CM_SERVICE_REQ:901700000004620){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_RELEASING DREF MSISDN:46071: MSC conn use + release == 3 (0x10a) DREF MSISDN:46071: MSC conn use - cm_service == 2 (0x102) -DREF VLR subscr MSISDN:46071 usage increases to: 4 -DREF VLR subscr MSISDN:46071 usage decreases to: 3 -- BSSAP Clear --RAN_GERAN_A--> MS -DREF VLR subscr MSISDN:46071 usage decreases to: 2 +DREF VLR subscr MSISDN:46071 usage increases to: 2 DREF VLR subscr MSISDN:46071 usage decreases to: 1 -DMM conn_close(vsub=MSISDN:46071, cause=0): already in release, ignore. +- BSSAP Clear --RAN_GERAN_A--> MS DREF MSISDN:46071: MSC conn use - dtap == 1 (0x100) bssap_clear_sent == 1 - BSS sends BSSMAP Clear Complete @@ -943,6 +941,10 @@ DMM Subscr_Conn(CM_SERVICE_REQ:901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(CM_SERVICE_REQ:901700000004620){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn(CM_SERVICE_REQ:901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) +DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000004620){PR_ARQ_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT) +DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000004620){PR_ARQ_S_DONE}: Removing from parent Subscr_Conn(CM_SERVICE_REQ:901700000004620) +DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000004620){PR_ARQ_S_DONE}: Freeing instance +DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000004620){PR_ARQ_S_DONE}: Deallocated DRLL MSISDN:46071: Freeing subscriber connection DREF VLR subscr MSISDN:46071 usage decreases to: 0 DREF freeing VLR subscr MSISDN:46071 @@ -1089,9 +1091,9 @@ DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000004620){PR_ARQ_S_INIT}: _proc_arq_vlr_post_pres() DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000004620){PR_ARQ_S_INIT}: _proc_arq_vlr_post_trace() DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000004620){PR_ARQ_S_INIT}: _proc_arq_vlr_post_imei() -DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000004620){PR_ARQ_S_INIT}: proc_arq_fsm_done(VLR_PR_ARQ_RES_PASSED) +DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000004620){PR_ARQ_S_INIT}: proc_arq_fsm_done(PASSED) DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000004620){PR_ARQ_S_INIT}: state_chg to PR_ARQ_S_DONE -DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000004620){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED +DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000004620){PR_ARQ_S_DONE}: Process Access Request result: PASSED - sending CM Service Accept for MSISDN:46071 DMM Subscr_Conn(CM_SERVICE_REQ:901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED DREF MSISDN:46071: MSC conn use + cm_service == 2 (0x9) @@ -1304,9 +1306,9 @@ DVLR Process_Access_Request_VLR(PAGING_RESP:901700000004620){PR_ARQ_S_INIT}: _proc_arq_vlr_post_pres() DVLR Process_Access_Request_VLR(PAGING_RESP:901700000004620){PR_ARQ_S_INIT}: _proc_arq_vlr_post_trace() DVLR Process_Access_Request_VLR(PAGING_RESP:901700000004620){PR_ARQ_S_INIT}: _proc_arq_vlr_post_imei() -DVLR Process_Access_Request_VLR(PAGING_RESP:901700000004620){PR_ARQ_S_INIT}: proc_arq_fsm_done(VLR_PR_ARQ_RES_PASSED) +DVLR Process_Access_Request_VLR(PAGING_RESP:901700000004620){PR_ARQ_S_INIT}: proc_arq_fsm_done(PASSED) DVLR Process_Access_Request_VLR(PAGING_RESP:901700000004620){PR_ARQ_S_INIT}: state_chg to PR_ARQ_S_DONE -DVLR Process_Access_Request_VLR(PAGING_RESP:901700000004620){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED +DVLR Process_Access_Request_VLR(PAGING_RESP:901700000004620){PR_ARQ_S_DONE}: Process Access Request result: PASSED DMM Subscr_Conn(PAGING_RESP:901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED DPAG Paging success for MSISDN:46071 (event=0) DPAG Calling paging cbfn. @@ -1532,9 +1534,9 @@ DVLR Process_Access_Request_VLR(PAGING_RESP:901700000004620){PR_ARQ_S_INIT}: _proc_arq_vlr_post_pres() DVLR Process_Access_Request_VLR(PAGING_RESP:901700000004620){PR_ARQ_S_INIT}: _proc_arq_vlr_post_trace() DVLR Process_Access_Request_VLR(PAGING_RESP:901700000004620){PR_ARQ_S_INIT}: _proc_arq_vlr_post_imei() -DVLR Process_Access_Request_VLR(PAGING_RESP:901700000004620){PR_ARQ_S_INIT}: proc_arq_fsm_done(VLR_PR_ARQ_RES_PASSED) +DVLR Process_Access_Request_VLR(PAGING_RESP:901700000004620){PR_ARQ_S_INIT}: proc_arq_fsm_done(PASSED) DVLR Process_Access_Request_VLR(PAGING_RESP:901700000004620){PR_ARQ_S_INIT}: state_chg to PR_ARQ_S_DONE -DVLR Process_Access_Request_VLR(PAGING_RESP:901700000004620){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED +DVLR Process_Access_Request_VLR(PAGING_RESP:901700000004620){PR_ARQ_S_DONE}: Process Access Request result: PASSED DMM Subscr_Conn(PAGING_RESP:901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED DPAG Paging success for MSISDN:46071 (event=0) DPAG Calling paging cbfn. @@ -1600,20 +1602,17 @@ DMM IMSI DETACH INDICATION: MI(IMSI)=901700000004620 DREF VLR subscr MSISDN:46071 usage increases to: 3 DMM IMSI DETACH for MSISDN:46071 -DVLR Process_Access_Request_VLR(PAGING_RESP:901700000004620){PR_ARQ_S_DONE}: Terminating (cause = OSMO_FSM_TERM_ERROR) -DVLR Process_Access_Request_VLR(PAGING_RESP:901700000004620){PR_ARQ_S_DONE}: Removing from parent Subscr_Conn(PAGING_RESP:901700000004620) -DVLR Process_Access_Request_VLR(PAGING_RESP:901700000004620){PR_ARQ_S_DONE}: Freeing instance -DVLR Process_Access_Request_VLR(PAGING_RESP:901700000004620){PR_ARQ_S_DONE}: Deallocated +DREF VLR subscr MSISDN:46071 usage increases to: 4 +DREF VLR subscr MSISDN:46071 usage decreases to: 3 +DREF VLR subscr MSISDN:46071 usage decreases to: 2 +DREF VLR subscr MSISDN:46071 usage decreases to: 1 DMM Subscr_Conn(PAGING_RESP:901700000004620){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_CN_CLOSE DMM Subscr_Conn(PAGING_RESP:901700000004620){SUBSCR_CONN_S_COMMUNICATING}: state_chg to SUBSCR_CONN_S_RELEASING DREF MSISDN:46071: MSC conn use + release == 3 (0x10a) DREF MSISDN:46071: MSC conn use - cm_service == 2 (0x102) -DREF VLR subscr MSISDN:46071 usage increases to: 4 -DREF VLR subscr MSISDN:46071 usage decreases to: 3 -- BSSAP Clear --RAN_GERAN_A--> MS -DREF VLR subscr MSISDN:46071 usage decreases to: 2 +DREF VLR subscr MSISDN:46071 usage increases to: 2 DREF VLR subscr MSISDN:46071 usage decreases to: 1 -DMM conn_close(vsub=MSISDN:46071, cause=0): already in release, ignore. +- BSSAP Clear --RAN_GERAN_A--> MS DREF MSISDN:46071: MSC conn use - dtap == 1 (0x100) bssap_clear_sent == 1 - BSS sends BSSMAP Clear Complete @@ -1621,6 +1620,10 @@ DMM Subscr_Conn(PAGING_RESP:901700000004620){SUBSCR_CONN_S_RELEASING}: Received Event SUBSCR_CONN_E_UNUSED DMM Subscr_Conn(PAGING_RESP:901700000004620){SUBSCR_CONN_S_RELEASING}: state_chg to SUBSCR_CONN_S_RELEASED DMM Subscr_Conn(PAGING_RESP:901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) +DVLR Process_Access_Request_VLR(PAGING_RESP:901700000004620){PR_ARQ_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT) +DVLR Process_Access_Request_VLR(PAGING_RESP:901700000004620){PR_ARQ_S_DONE}: Removing from parent Subscr_Conn(PAGING_RESP:901700000004620) +DVLR Process_Access_Request_VLR(PAGING_RESP:901700000004620){PR_ARQ_S_DONE}: Freeing instance +DVLR Process_Access_Request_VLR(PAGING_RESP:901700000004620){PR_ARQ_S_DONE}: Deallocated DRLL MSISDN:46071: Freeing subscriber connection DREF VLR subscr MSISDN:46071 usage decreases to: 0 DREF freeing VLR subscr MSISDN:46071 @@ -1779,9 +1782,9 @@ DVLR Process_Access_Request_VLR(PAGING_RESP:901700000004620){PR_ARQ_S_INIT}: _proc_arq_vlr_post_pres() DVLR Process_Access_Request_VLR(PAGING_RESP:901700000004620){PR_ARQ_S_INIT}: _proc_arq_vlr_post_trace() DVLR Process_Access_Request_VLR(PAGING_RESP:901700000004620){PR_ARQ_S_INIT}: _proc_arq_vlr_post_imei() -DVLR Process_Access_Request_VLR(PAGING_RESP:901700000004620){PR_ARQ_S_INIT}: proc_arq_fsm_done(VLR_PR_ARQ_RES_PASSED) +DVLR Process_Access_Request_VLR(PAGING_RESP:901700000004620){PR_ARQ_S_INIT}: proc_arq_fsm_done(PASSED) DVLR Process_Access_Request_VLR(PAGING_RESP:901700000004620){PR_ARQ_S_INIT}: state_chg to PR_ARQ_S_DONE -DVLR Process_Access_Request_VLR(PAGING_RESP:901700000004620){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED +DVLR Process_Access_Request_VLR(PAGING_RESP:901700000004620){PR_ARQ_S_DONE}: Process Access Request result: PASSED DMM Subscr_Conn(PAGING_RESP:901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED DPAG Paging success for MSISDN:46071 (event=0) DPAG Calling paging cbfn. diff --git a/tests/msc_vlr/msc_vlr_test_rest.err b/tests/msc_vlr/msc_vlr_test_rest.err index ff0a27e..d9c69e4 100644 --- a/tests/msc_vlr/msc_vlr_test_rest.err +++ b/tests/msc_vlr/msc_vlr_test_rest.err @@ -63,10 +63,10 @@ DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000004620){PR_ARQ_S_INIT}: is child of Subscr_Conn(CM_SERVICE_REQ:901700000004620) DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000004620){PR_ARQ_S_INIT}: rev=GSM net=GERAN (no Auth) DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000004620){PR_ARQ_S_INIT}: Received Event PR_ARQ_E_START -DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000004620){PR_ARQ_S_INIT}: proc_arq_fsm_done(VLR_PR_ARQ_RES_UNIDENT_SUBSCR) +DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000004620){PR_ARQ_S_INIT}: proc_arq_fsm_done(MS_IDENTITY_NOT_DERVIVABLE) DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000004620){PR_ARQ_S_INIT}: state_chg to PR_ARQ_S_DONE -DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000004620){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_UNIDENT_SUBSCR -- sending CM Service Reject for unknown, result VLR_PR_ARQ_RES_UNIDENT_SUBSCR +DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000004620){PR_ARQ_S_DONE}: Process Access Request result: MS_IDENTITY_NOT_DERVIVABLE +- sending CM Service Reject for unknown, cause: MS_IDENTITY_NOT_DERVIVABLE DMM Subscr_Conn(CM_SERVICE_REQ:901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_CN_CLOSE DMM Subscr_Conn(CM_SERVICE_REQ:901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASING DREF unknown: MSC conn use + release == 2 (0x101) @@ -346,11 +346,12 @@ DMM IMSI DETACH INDICATION: MI(IMSI)=901700000004620 DREF VLR subscr MSISDN:46071 usage increases to: 2 DMM IMSI DETACH for MSISDN:46071 +DREF VLR subscr MSISDN:46071 usage increases to: 3 +DREF VLR subscr MSISDN:46071 usage decreases to: 2 DREF VLR subscr MSISDN:46071 usage decreases to: 1 DREF VLR subscr MSISDN:46071 usage decreases to: 0 DREF freeing VLR subscr MSISDN:46071 DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_CN_CLOSE -DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: Close event, cause 0 DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASING DREF unknown: MSC conn use + release == 2 (0x101) - BSSAP Clear --RAN_GERAN_A--> MS diff --git a/tests/msc_vlr/msc_vlr_test_umts_authen.err b/tests/msc_vlr/msc_vlr_test_umts_authen.err index 9063104..e460fd1 100644 --- a/tests/msc_vlr/msc_vlr_test_umts_authen.err +++ b/tests/msc_vlr/msc_vlr_test_umts_authen.err @@ -58,7 +58,7 @@ DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP DVLR SUBSCR(IMSI:901700000010650) AUTH on GERAN received SRES/RES: e229c19e791f2e41 (8 bytes) DVLR SUBSCR(IMSI:901700000010650) AUTH established UMTS security context -DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result VLR_AUTH_RES_PASSED +DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Removing from parent vlr_lu_fsm(LU:901700000010650) @@ -236,23 +236,22 @@ DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP DVLR SUBSCR(MSISDN:42342) AUTH on GERAN received SRES/RES: 7db47cf7f81e4dc7 (8 bytes) DVLR SUBSCR(MSISDN:42342) AUTH established UMTS security context -DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result VLR_AUTH_RES_PASSED +DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Removing from parent Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650) DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Freeing instance DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Deallocated DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: Received Event PR_ARQ_E_AUTH_RES -DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: got VLR_AUTH_RES_PASSED DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2() DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2_post_ciph() DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2_post_vlr() DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_post_pres() DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_post_trace() DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_post_imei() -DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: proc_arq_fsm_done(VLR_PR_ARQ_RES_PASSED) +DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: proc_arq_fsm_done(PASSED) DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: state_chg to PR_ARQ_S_DONE -DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED +DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_DONE}: Process Access Request result: PASSED - sending CM Service Accept for MSISDN:42342 DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_AUTH_CIPH}: Received Event SUBSCR_CONN_E_ACCEPTED DREF MSISDN:42342: MSC conn use + cm_service == 2 (0xa) @@ -366,23 +365,22 @@ DVLR VLR_Authenticate(PAGING_RESP:901700000010650){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP DVLR SUBSCR(MSISDN:42342) AUTH on GERAN received SRES/RES: 706f996719ba609c (8 bytes) DVLR SUBSCR(MSISDN:42342) AUTH established UMTS security context -DVLR VLR_Authenticate(PAGING_RESP:901700000010650){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result VLR_AUTH_RES_PASSED +DVLR VLR_Authenticate(PAGING_RESP:901700000010650){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED DVLR VLR_Authenticate(PAGING_RESP:901700000010650){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED DVLR VLR_Authenticate(PAGING_RESP:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DVLR VLR_Authenticate(PAGING_RESP:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Removing from parent Process_Access_Request_VLR(PAGING_RESP:901700000010650) DVLR VLR_Authenticate(PAGING_RESP:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Freeing instance DVLR VLR_Authenticate(PAGING_RESP:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Deallocated DVLR Process_Access_Request_VLR(PAGING_RESP:901700000010650){PR_ARQ_S_WAIT_AUTH}: Received Event PR_ARQ_E_AUTH_RES -DVLR Process_Access_Request_VLR(PAGING_RESP:901700000010650){PR_ARQ_S_WAIT_AUTH}: got VLR_AUTH_RES_PASSED DVLR Process_Access_Request_VLR(PAGING_RESP:901700000010650){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2() DVLR Process_Access_Request_VLR(PAGING_RESP:901700000010650){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2_post_ciph() DVLR Process_Access_Request_VLR(PAGING_RESP:901700000010650){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2_post_vlr() DVLR Process_Access_Request_VLR(PAGING_RESP:901700000010650){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_post_pres() DVLR Process_Access_Request_VLR(PAGING_RESP:901700000010650){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_post_trace() DVLR Process_Access_Request_VLR(PAGING_RESP:901700000010650){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_post_imei() -DVLR Process_Access_Request_VLR(PAGING_RESP:901700000010650){PR_ARQ_S_WAIT_AUTH}: proc_arq_fsm_done(VLR_PR_ARQ_RES_PASSED) +DVLR Process_Access_Request_VLR(PAGING_RESP:901700000010650){PR_ARQ_S_WAIT_AUTH}: proc_arq_fsm_done(PASSED) DVLR Process_Access_Request_VLR(PAGING_RESP:901700000010650){PR_ARQ_S_WAIT_AUTH}: state_chg to PR_ARQ_S_DONE -DVLR Process_Access_Request_VLR(PAGING_RESP:901700000010650){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED +DVLR Process_Access_Request_VLR(PAGING_RESP:901700000010650){PR_ARQ_S_DONE}: Process Access Request result: PASSED DMM Subscr_Conn(PAGING_RESP:901700000010650){SUBSCR_CONN_S_AUTH_CIPH}: Received Event SUBSCR_CONN_E_ACCEPTED DPAG Paging success for MSISDN:42342 (event=0) DPAG Calling paging cbfn. @@ -457,11 +455,12 @@ DMM IMSI DETACH INDICATION: MI(IMSI)=901700000010650 DREF VLR subscr MSISDN:42342 usage increases to: 2 DMM IMSI DETACH for MSISDN:42342 +DREF VLR subscr MSISDN:42342 usage increases to: 3 +DREF VLR subscr MSISDN:42342 usage decreases to: 2 DREF VLR subscr MSISDN:42342 usage decreases to: 1 DREF VLR subscr MSISDN:42342 usage decreases to: 0 DREF freeing VLR subscr MSISDN:42342 DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_CN_CLOSE -DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: Close event, cause 0 DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASING DREF unknown: MSC conn use + release == 2 (0x101) - BSSAP Clear --RAN_GERAN_A--> MS @@ -538,7 +537,7 @@ DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP DVLR SUBSCR(IMSI:901700000010650) AUTH on UTRAN received RES: e229c19e791f2e41 (8 bytes) DVLR SUBSCR(IMSI:901700000010650) AUTH established UMTS security context -DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result VLR_AUTH_RES_PASSED +DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Removing from parent vlr_lu_fsm(LU:901700000010650) @@ -728,14 +727,13 @@ DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP DVLR SUBSCR(MSISDN:42342) AUTH on UTRAN received RES: 7db47cf7f81e4dc7 (8 bytes) DVLR SUBSCR(MSISDN:42342) AUTH established UMTS security context -DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result VLR_AUTH_RES_PASSED +DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Removing from parent Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650) DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Freeing instance DVLR VLR_Authenticate(CM_SERVICE_REQ:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Deallocated DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: Received Event PR_ARQ_E_AUTH_RES -DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: got VLR_AUTH_RES_PASSED DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2() DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_AUTH}: Set Ciphering Mode DMM -> SECURITY MODE CONTROL MSISDN:42342 @@ -757,9 +755,9 @@ DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_pres() DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_trace() DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_imei() -DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_CIPH}: proc_arq_fsm_done(VLR_PR_ARQ_RES_PASSED) +DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_CIPH}: proc_arq_fsm_done(PASSED) DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_WAIT_CIPH}: state_chg to PR_ARQ_S_DONE -DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED +DVLR Process_Access_Request_VLR(CM_SERVICE_REQ:901700000010650){PR_ARQ_S_DONE}: Process Access Request result: PASSED DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_AUTH_CIPH}: Received Event SUBSCR_CONN_E_ACCEPTED DREF MSISDN:42342: MSC conn use + cm_service == 1 (0x8) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_AUTH_CIPH}: state_chg to SUBSCR_CONN_S_ACCEPTED @@ -871,14 +869,13 @@ DVLR VLR_Authenticate(PAGING_RESP:901700000010650){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP DVLR SUBSCR(MSISDN:42342) AUTH on UTRAN received RES: 706f996719ba609c (8 bytes) DVLR SUBSCR(MSISDN:42342) AUTH established UMTS security context -DVLR VLR_Authenticate(PAGING_RESP:901700000010650){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result VLR_AUTH_RES_PASSED +DVLR VLR_Authenticate(PAGING_RESP:901700000010650){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED DVLR VLR_Authenticate(PAGING_RESP:901700000010650){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED DVLR VLR_Authenticate(PAGING_RESP:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DVLR VLR_Authenticate(PAGING_RESP:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Removing from parent Process_Access_Request_VLR(PAGING_RESP:901700000010650) DVLR VLR_Authenticate(PAGING_RESP:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Freeing instance DVLR VLR_Authenticate(PAGING_RESP:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Deallocated DVLR Process_Access_Request_VLR(PAGING_RESP:901700000010650){PR_ARQ_S_WAIT_AUTH}: Received Event PR_ARQ_E_AUTH_RES -DVLR Process_Access_Request_VLR(PAGING_RESP:901700000010650){PR_ARQ_S_WAIT_AUTH}: got VLR_AUTH_RES_PASSED DVLR Process_Access_Request_VLR(PAGING_RESP:901700000010650){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2() DVLR Process_Access_Request_VLR(PAGING_RESP:901700000010650){PR_ARQ_S_WAIT_AUTH}: Set Ciphering Mode DMM -> SECURITY MODE CONTROL MSISDN:42342 @@ -900,9 +897,9 @@ DVLR Process_Access_Request_VLR(PAGING_RESP:901700000010650){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_pres() DVLR Process_Access_Request_VLR(PAGING_RESP:901700000010650){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_trace() DVLR Process_Access_Request_VLR(PAGING_RESP:901700000010650){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_imei() -DVLR Process_Access_Request_VLR(PAGING_RESP:901700000010650){PR_ARQ_S_WAIT_CIPH}: proc_arq_fsm_done(VLR_PR_ARQ_RES_PASSED) +DVLR Process_Access_Request_VLR(PAGING_RESP:901700000010650){PR_ARQ_S_WAIT_CIPH}: proc_arq_fsm_done(PASSED) DVLR Process_Access_Request_VLR(PAGING_RESP:901700000010650){PR_ARQ_S_WAIT_CIPH}: state_chg to PR_ARQ_S_DONE -DVLR Process_Access_Request_VLR(PAGING_RESP:901700000010650){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED +DVLR Process_Access_Request_VLR(PAGING_RESP:901700000010650){PR_ARQ_S_DONE}: Process Access Request result: PASSED DMM Subscr_Conn(PAGING_RESP:901700000010650){SUBSCR_CONN_S_AUTH_CIPH}: Received Event SUBSCR_CONN_E_ACCEPTED DPAG Paging success for MSISDN:42342 (event=0) DPAG Calling paging cbfn. @@ -975,11 +972,12 @@ DMM IMSI DETACH INDICATION: MI(IMSI)=901700000010650 DREF VLR subscr MSISDN:42342 usage increases to: 2 DMM IMSI DETACH for MSISDN:42342 +DREF VLR subscr MSISDN:42342 usage increases to: 3 +DREF VLR subscr MSISDN:42342 usage decreases to: 2 DREF VLR subscr MSISDN:42342 usage decreases to: 1 DREF VLR subscr MSISDN:42342 usage decreases to: 0 DREF freeing VLR subscr MSISDN:42342 DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_CN_CLOSE -DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: Close event, cause 0 DMM Subscr_Conn{SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASING DREF unknown: MSC conn use + release == 2 (0x101) - Iu Release --RAN_UTRAN_IU--> MS @@ -1087,7 +1085,7 @@ DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_WAIT_RESP_RESYNC}: Received Event VLR_AUTH_E_MS_AUTH_RESP DVLR SUBSCR(IMSI:901700000010650) AUTH on GERAN received SRES/RES: 1df5f0b4f22b696e (8 bytes) DVLR SUBSCR(IMSI:901700000010650) AUTH established UMTS security context -DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_WAIT_RESP_RESYNC}: Authentication terminating with result VLR_AUTH_RES_PASSED +DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_WAIT_RESP_RESYNC}: Authentication terminating with result PASSED DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_WAIT_RESP_RESYNC}: state_chg to VLR_SUB_AS_AUTHENTICATED DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Removing from parent vlr_lu_fsm(LU:901700000010650) @@ -1306,7 +1304,7 @@ DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_WAIT_RESP_RESYNC}: Received Event VLR_AUTH_E_MS_AUTH_RESP DVLR SUBSCR(IMSI:901700000010650) AUTH on UTRAN received RES: 1df5f0b4f22b696e (8 bytes) DVLR SUBSCR(IMSI:901700000010650) AUTH established UMTS security context -DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_WAIT_RESP_RESYNC}: Authentication terminating with result VLR_AUTH_RES_PASSED +DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_WAIT_RESP_RESYNC}: Authentication terminating with result PASSED DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_WAIT_RESP_RESYNC}: state_chg to VLR_SUB_AS_AUTHENTICATED DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_AUTHENTICATED}: Removing from parent vlr_lu_fsm(LU:901700000010650) @@ -1506,7 +1504,7 @@ DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP DVLR SUBSCR(IMSI:901700000010650) AUTH on GERAN received SRES/RES: e229c19e791f2e (7 bytes) DVLR SUBSCR(IMSI:901700000010650) AUTH SRES/RES has invalid length: 7. Expected either 4 (GSM AKA) or 8 (UMTS AKA) -DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result VLR_AUTH_RES_AUTH_FAILED +DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result Illegal MS DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTH_FAILED DVLR GSUP tx: 0b010809710000000156f0 GSUP --> HLR: OSMO_GSUP_MSGT_AUTH_FAIL_REPORT: 0b010809710000000156f0 @@ -1604,7 +1602,7 @@ DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP DVLR SUBSCR(IMSI:901700000010650) AUTH on UTRAN received RES: e229c19e791f2e (7 bytes) DVLR SUBSCR(IMSI:901700000010650) AUTH RES has invalid length: 7. Expected 8 (UMTS AKA) -DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result VLR_AUTH_RES_AUTH_FAILED +DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result Illegal MS DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTH_FAILED DVLR GSUP tx: 0b010809710000000156f0 GSUP --> HLR: OSMO_GSUP_MSGT_AUTH_FAIL_REPORT: 0b010809710000000156f0 @@ -1702,7 +1700,7 @@ DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP DVLR SUBSCR(IMSI:901700000010650) AUTH on GERAN received SRES/RES: e229c19e791f2e4123 (9 bytes) DVLR SUBSCR(IMSI:901700000010650) AUTH SRES/RES has invalid length: 9. Expected either 4 (GSM AKA) or 8 (UMTS AKA) -DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result VLR_AUTH_RES_AUTH_FAILED +DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result Illegal MS DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTH_FAILED DVLR GSUP tx: 0b010809710000000156f0 GSUP --> HLR: OSMO_GSUP_MSGT_AUTH_FAIL_REPORT: 0b010809710000000156f0 @@ -1800,7 +1798,7 @@ DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP DVLR SUBSCR(IMSI:901700000010650) AUTH on UTRAN received RES: e229c19e791f2e4123 (9 bytes) DVLR SUBSCR(IMSI:901700000010650) AUTH RES has invalid length: 9. Expected 8 (UMTS AKA) -DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result VLR_AUTH_RES_AUTH_FAILED +DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result Illegal MS DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTH_FAILED DVLR GSUP tx: 0b010809710000000156f0 GSUP --> HLR: OSMO_GSUP_MSGT_AUTH_FAIL_REPORT: 0b010809710000000156f0 @@ -1898,7 +1896,7 @@ DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP DVLR SUBSCR(IMSI:901700000010650) AUTH on GERAN received SRES/RES: e229c19e (4 bytes) DVLR SUBSCR(IMSI:901700000010650) GSM AUTH failure: mismatching sres (expected sres=9b 36 ef df ) -DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result VLR_AUTH_RES_AUTH_FAILED +DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result Illegal MS DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTH_FAILED DVLR GSUP tx: 0b010809710000000156f0 GSUP --> HLR: OSMO_GSUP_MSGT_AUTH_FAIL_REPORT: 0b010809710000000156f0 @@ -1996,7 +1994,7 @@ DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP DVLR SUBSCR(IMSI:901700000010650) AUTH on UTRAN received RES: e229c19e (4 bytes) DVLR SUBSCR(IMSI:901700000010650) AUTH via UTRAN, cannot allow GSM AKA (MS is R99 capable, vec has UMTS AKA tokens, res_len=4 is INVALID on UTRAN) -DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result VLR_AUTH_RES_AUTH_FAILED +DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result Illegal MS DVLR VLR_Authenticate(LU:901700000010650){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTH_FAILED DVLR GSUP tx: 0b010809710000000156f0 GSUP --> HLR: OSMO_GSUP_MSGT_AUTH_FAIL_REPORT: 0b010809710000000156f0 diff --git a/tests/msc_vlr/msc_vlr_tests.c b/tests/msc_vlr/msc_vlr_tests.c index eda3ea1..5c01896 100644 --- a/tests/msc_vlr/msc_vlr_tests.c +++ b/tests/msc_vlr/msc_vlr_tests.c @@ -637,7 +637,7 @@ return 0; } -static int fake_vlr_tx_lu_rej(void *msc_conn_ref, uint8_t cause) +static int fake_vlr_tx_lu_rej(void *msc_conn_ref, enum gsm48_reject_value cause) { struct gsm_subscriber_connection *conn = msc_conn_ref; btw("sending LU Reject for %s, cause %u", vlr_subscr_name(conn->vsub), cause); @@ -653,13 +653,11 @@ return 0; } -static int fake_vlr_tx_cm_serv_rej(void *msc_conn_ref, - enum vlr_proc_arq_result result) +static int fake_vlr_tx_cm_serv_rej(void *msc_conn_ref, enum gsm48_reject_value cause) { struct gsm_subscriber_connection *conn = msc_conn_ref; - btw("sending CM Service Reject for %s, result %s", - vlr_subscr_name(conn->vsub), - vlr_proc_arq_result_name(result)); + btw("sending CM Service Reject for %s, cause: %s", + vlr_subscr_name(conn->vsub), gsm48_reject_value_name(cause)); cm_service_result_sent |= RES_REJECT; return 0; } -- To view, visit https://gerrit.osmocom.org/7709 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: I27bf8d68737ff1f8dc6d11fb1eac3d391aab0cb1 Gerrit-PatchSet: 4 Gerrit-Project: osmo-msc Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder From gerrit-no-reply at lists.osmocom.org Thu Apr 12 19:40:02 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Thu, 12 Apr 2018 19:40:02 +0000 Subject: [MERGED] osmo-msc[master]: msc conn ref counts: log human readable list of conn owners In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: msc conn ref counts: log human readable list of conn owners ...................................................................... msc conn ref counts: log human readable list of conn owners Change-Id: I2a09efafbdbdde0399238f7d79feea8612605201 --- M src/libmsc/osmo_msc.c M tests/msc_vlr/msc_vlr_test_authen_reuse.err M tests/msc_vlr/msc_vlr_test_call.err M tests/msc_vlr/msc_vlr_test_gsm_authen.err M tests/msc_vlr/msc_vlr_test_gsm_ciph.err M tests/msc_vlr/msc_vlr_test_hlr_reject.err M tests/msc_vlr/msc_vlr_test_hlr_timeout.err M tests/msc_vlr/msc_vlr_test_ms_timeout.err M tests/msc_vlr/msc_vlr_test_no_authen.err M tests/msc_vlr/msc_vlr_test_reject_concurrency.err M tests/msc_vlr/msc_vlr_test_rest.err M tests/msc_vlr/msc_vlr_test_umts_authen.err 12 files changed, 1,107 insertions(+), 1,076 deletions(-) Approvals: Harald Welte: Looks good to me, approved Jenkins Builder: Verified -- To view, visit https://gerrit.osmocom.org/7710 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: I2a09efafbdbdde0399238f7d79feea8612605201 Gerrit-PatchSet: 4 Gerrit-Project: osmo-msc Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder From gerrit-no-reply at lists.osmocom.org Fri Apr 13 03:24:22 2018 From: gerrit-no-reply at lists.osmocom.org (Neels Hofmeyr) Date: Fri, 13 Apr 2018 03:24:22 +0000 Subject: [PATCH] libosmocore[master]: add osmo_cgi_name() Message-ID: Review at https://gerrit.osmocom.org/7786 add osmo_cgi_name() Change-Id: Iebc5cdf61b697b1603900993fc265af3eca0cedf --- M include/osmocom/gsm/gsm23003.h M src/gsm/gsm23003.c M src/gsm/libosmogsm.map 3 files changed, 22 insertions(+), 0 deletions(-) git pull ssh://gerrit.osmocom.org:29418/libosmocore refs/changes/86/7786/1 diff --git a/include/osmocom/gsm/gsm23003.h b/include/osmocom/gsm/gsm23003.h index 02e7971..fd4f369 100644 --- a/include/osmocom/gsm/gsm23003.h +++ b/include/osmocom/gsm/gsm23003.h @@ -99,6 +99,8 @@ const char *osmo_plmn_name(const struct osmo_plmn_id *plmn); const char *osmo_plmn_name2(const struct osmo_plmn_id *plmn); const char *osmo_lai_name(const struct osmo_location_area_id *lai); +const char *osmo_cgi_name(const struct osmo_cell_global_id *cgi); +const char *osmo_cgi_name2(const struct osmo_cell_global_id *cgi); void osmo_plmn_to_bcd(uint8_t *bcd_dst, const struct osmo_plmn_id *plmn); void osmo_plmn_from_bcd(const uint8_t *bcd_src, struct osmo_plmn_id *plmn); diff --git a/src/gsm/gsm23003.c b/src/gsm/gsm23003.c index 574400d..878ebc0 100644 --- a/src/gsm/gsm23003.c +++ b/src/gsm/gsm23003.c @@ -133,6 +133,24 @@ return buf; } +static const char *_cgi_name(const struct osmo_cell_global_id *cgi, char *buf, size_t buflen) +{ + snprintf(buf, buflen, "%s-%u", osmo_lai_name(&cgi->lai), cgi->cell_identity); + return buf; +} + +const char *osmo_cgi_name(const struct osmo_cell_global_id *cgi) +{ + static char buf[32]; + return _cgi_name(cgi, buf, sizeof(buf)); +} + +const char *osmo_cgi_name2(const struct osmo_cell_global_id *cgi) +{ + static char buf[32]; + return _cgi_name(cgi, buf, sizeof(buf)); +} + static void to_bcd(uint8_t *bcd, uint16_t val) { bcd[2] = val % 10; diff --git a/src/gsm/libosmogsm.map b/src/gsm/libosmogsm.map index 31717d5..a6ea47d 100644 --- a/src/gsm/libosmogsm.map +++ b/src/gsm/libosmogsm.map @@ -277,6 +277,8 @@ osmo_plmn_name2; osmo_lai_name; osmo_rai_name; +osmo_cgi_name; +osmo_cgi_name2; osmo_mnc_from_str; osmo_mnc_cmp; osmo_plmn_cmp; -- To view, visit https://gerrit.osmocom.org/7786 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Iebc5cdf61b697b1603900993fc265af3eca0cedf Gerrit-PatchSet: 1 Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr From gerrit-no-reply at lists.osmocom.org Fri Apr 13 03:24:26 2018 From: gerrit-no-reply at lists.osmocom.org (Neels Hofmeyr) Date: Fri, 13 Apr 2018 03:24:26 +0000 Subject: [PATCH] libosmocore[master]: add gsm0808_cell_id_list_add() to combine two cell identifie... Message-ID: Review at https://gerrit.osmocom.org/7787 add gsm0808_cell_id_list_add() to combine two cell identifier lists This will be used by the upcoming neighbor_ident API in osmo-bsc, where the vty interface allows composing neihbor BSS cell identifier lists, and we want to allow adding individual items from individual user commands. It will also be useful to accumulate cell identifiers in case a subscriber sees multiple alternative cells from a neighboring BSS, and we want to pass these on to the MSC in a Handover Required. Related: OS#2283 (inter-BSC HO, BSC side) Change-Id: I5781f5fa5339c92ab2e2620489b002829d206925 --- M include/osmocom/gsm/gsm0808_utils.h M src/gsm/gsm0808_utils.c M src/gsm/libosmogsm.map M tests/gsm0808/gsm0808_test.c M tests/gsm0808/gsm0808_test.ok 5 files changed, 361 insertions(+), 0 deletions(-) git pull ssh://gerrit.osmocom.org:29418/libosmocore refs/changes/87/7787/1 diff --git a/include/osmocom/gsm/gsm0808_utils.h b/include/osmocom/gsm/gsm0808_utils.h index 363fc39..34eae43 100644 --- a/include/osmocom/gsm/gsm0808_utils.h +++ b/include/osmocom/gsm/gsm0808_utils.h @@ -77,6 +77,7 @@ int gsm0808_dec_cell_id_list(struct gsm0808_cell_id_list *cil, const uint8_t *elem, uint8_t len) OSMO_DEPRECATED("use gsm0808_dec_cell_id_list2 instead"); +int gsm0808_cell_id_list_add(struct gsm0808_cell_id_list2 *dst, const struct gsm0808_cell_id_list2 *src); int gsm0808_chan_type_to_speech_codec(uint8_t perm_spch); int gsm0808_speech_codec_from_chan_type(struct gsm0808_speech_codec *sc, uint8_t perm_spch); diff --git a/src/gsm/gsm0808_utils.c b/src/gsm/gsm0808_utils.c index e4872b8..996456e 100644 --- a/src/gsm/gsm0808_utils.c +++ b/src/gsm/gsm0808_utils.c @@ -909,6 +909,85 @@ return (int)(elem - old_elem); } +static bool same_cell_id_list_entries(const struct gsm0808_cell_id_list2 *a, int ai, + const struct gsm0808_cell_id_list2 *b, int bi) +{ + struct gsm0808_cell_id_list2 tmp = { + .id_discr = a->id_discr, + .id_list_len = 1, + }; + uint8_t buf_a[32 + sizeof(struct msgb)]; + uint8_t buf_b[32 + sizeof(struct msgb)]; + struct msgb *msg_a = (void*)buf_a; + struct msgb *msg_b = (void*)buf_b; + + msg_a->data_len = 32; + msg_b->data_len = 32; + msgb_reset(msg_a); + msgb_reset(msg_b); + + if (a->id_discr != b->id_discr) + return false; + if (ai >= a->id_list_len + || bi >= b->id_list_len) + return false; + + tmp.id_list[0] = a->id_list[ai]; + gsm0808_enc_cell_id_list2(msg_a, &tmp); + + tmp.id_list[0] = b->id_list[bi]; + gsm0808_enc_cell_id_list2(msg_b, &tmp); + + if (msg_a->len != msg_b->len) + return false; + if (memcmp(msg_a->data, msg_b->data, msg_a->len)) + return false; + + return true; +} + +/*! Append entries from one Cell Identifier List to another. + * The cell identifier types must be identical between the two lists. + * \param dst[out] Append entries to this list. + * \param src[in] Append these entries to \a dst. + * \returns the nr of items added, or negative on error: -EINVAL if the id_discr mismatch + * between the lists, -ENOSPC if the destination list does not have enough space. If an error is + * returned, \a dst may have already been changed (particularly on -ENOSPC). Note that a return value + * of zero may occur when the src->id_list_len is zero, or when all entries from \a src already exist + * in \a dst, and does not indicate error per se. */ +int gsm0808_cell_id_list_add(struct gsm0808_cell_id_list2 *dst, const struct gsm0808_cell_id_list2 *src) +{ + int i, j; + int added = 0; + + if (dst->id_list_len == 0 + && dst->id_discr != CELL_IDENT_BSS) + dst->id_discr = src->id_discr; + else if (dst->id_discr != src->id_discr) + return -EINVAL; + + for (i = 0; i < src->id_list_len; i++) { + /* don't add duplicate entries */ + bool skip = false; + for (j = 0; j < dst->id_list_len; j++) { + if (same_cell_id_list_entries(dst, j, src, i)) { + skip = true; + break; + } + } + if (skip) + continue; + + if (dst->id_list_len >= ARRAY_SIZE(dst->id_list)) + return -ENOSPC; + + dst->id_list[dst->id_list_len++] = src->id_list[i]; + added ++; + } + + return added; +} + /*! Convert the representation of the permitted speech codec identifier * that is used in struct gsm0808_channel_type to the speech codec * representation we use in struct gsm0808_speech_codec. diff --git a/src/gsm/libosmogsm.map b/src/gsm/libosmogsm.map index a6ea47d..d99121e 100644 --- a/src/gsm/libosmogsm.map +++ b/src/gsm/libosmogsm.map @@ -176,6 +176,7 @@ gsm0808_enc_cell_id_list2; gsm0808_dec_cell_id_list; gsm0808_dec_cell_id_list2; +gsm0808_cell_id_list_add; gsm0808_chan_type_to_speech_codec; gsm0808_speech_codec_from_chan_type; gsm0808_speech_codec_type_names; diff --git a/tests/gsm0808/gsm0808_test.c b/tests/gsm0808/gsm0808_test.c index 9730be2..f467099 100644 --- a/tests/gsm0808/gsm0808_test.c +++ b/tests/gsm0808/gsm0808_test.c @@ -28,6 +28,7 @@ #include #include #include +#include #define VERIFY(msg, data, len) \ if (msgb_l3len(msg) != len) { \ @@ -1063,6 +1064,198 @@ msgb_free(msg); } +static void print_cil(const struct gsm0808_cell_id_list2 *cil) +{ + unsigned int i; + if (!cil) { + printf(" cell_id_list == NULL\n"); + return; + } + switch (cil->id_discr) { + case CELL_IDENT_WHOLE_GLOBAL: + printf(" cell_id_list cgi[%u] = {\n", cil->id_list_len); + for (i = 0; i < cil->id_list_len; i++) + printf(" %2d: %s\n", i, osmo_cgi_name(&cil->id_list[i].global)); + printf(" }\n"); + break; + case CELL_IDENT_LAC: + printf(" cell_id_list lac[%u] = {\n", cil->id_list_len); + for (i = 0; i < cil->id_list_len; i++) + printf(" %2d: %u\n", i, cil->id_list[i].lac); + printf(" }\n"); + break; + case CELL_IDENT_BSS: + printf(" cell_id_list bss[%u]\n", cil->id_list_len); + break; + case CELL_IDENT_NO_CELL: + printf(" cell_id_list no_cell[%u]\n", cil->id_list_len); + break; + default: + printf(" Unimplemented id_disc\n"); + } +} + +void test_cell_id_list_add() { + const struct gsm0808_cell_id_list2 cgi1 = { + .id_discr = CELL_IDENT_WHOLE_GLOBAL, + .id_list_len = 1, + .id_list = { + { + .global = { + .lai = { + .plmn = { .mcc = 1, .mnc = 2, .mnc_3_digits = false }, + .lac = 3, + }, + .cell_identity = 4, + } + }, + }, + }; + + const struct gsm0808_cell_id_list2 cgi2 = { + .id_discr = CELL_IDENT_WHOLE_GLOBAL, + .id_list_len = 2, + .id_list = { + { + .global = { + .lai = { + .plmn = { .mcc = 1, .mnc = 2, .mnc_3_digits = true }, + .lac = 3, + }, + .cell_identity = 4, + } + }, + { + .global = { + .lai = { + .plmn = { .mcc = 5, .mnc = 6, .mnc_3_digits = true }, + .lac = 7, + }, + .cell_identity = 8, + } + }, + }, + }; + + const struct gsm0808_cell_id_list2 cgi2a = { + .id_discr = CELL_IDENT_WHOLE_GLOBAL, + .id_list_len = 2, + .id_list = { + { + .global = cgi2.id_list[0].global + }, + { + .global = { + .lai = { + .plmn = { .mcc = 9, .mnc = 10, .mnc_3_digits = true }, + .lac = 11, + }, + .cell_identity = 12, + } + }, + }, + }; + + const struct gsm0808_cell_id_list2 cgi3 = { + .id_discr = CELL_IDENT_WHOLE_GLOBAL, + .id_list_len = 2, + .id_list = { + { + .global = { + .lai = { + .plmn = { .mcc = 13, .mnc = 14, .mnc_3_digits = true }, + .lac = 15, + }, + .cell_identity = 16, + } + }, + { + .global = { + .lai = { + .plmn = { .mcc = 16, .mnc = 17, .mnc_3_digits = true }, + .lac = 18, + }, + .cell_identity = 19, + } + }, + }, + }; + + + const struct gsm0808_cell_id_list2 lac1 = { + .id_discr = CELL_IDENT_LAC, + .id_list_len = 1, + .id_list = { + { + .lac = 123 + }, + }, + }; + + const struct gsm0808_cell_id_list2 lac2 = { + .id_discr = CELL_IDENT_LAC, + .id_list_len = 2, + .id_list = { + { + .lac = 456 + }, + { + .lac = 789 + }, + }, + }; + + struct gsm0808_cell_id_list2 cil = {}; + + printf("------- %s\n", __func__); + + print_cil(&cil); + +#define ADD_QUIET(other_cil, expect_rc) do { \ + int rc = gsm0808_cell_id_list_add(&cil, &other_cil); \ + printf("\ngsm0808_cell_id_list_add(&cil, &" #other_cil ") --> rc = %d\n", rc); \ + OSMO_ASSERT(rc == expect_rc); \ + } while(0) + +#define ADD(other_cil, expect_rc) ADD_QUIET(other_cil, expect_rc); print_cil(&cil) + + ADD(lac1, 1); + ADD(lac1, 0); + ADD(lac2, 2); + ADD(lac2, 0); + ADD(cil, 0); + ADD(cgi1, -EINVAL); + + printf("\ncan't add to BSS list\n"); + cil.id_list_len = 0; + cil.id_discr = CELL_IDENT_BSS; + print_cil(&cil); + ADD(lac1, -EINVAL); + + printf("\nother types (including NO_CELL) take on new type iff empty\n"); + cil.id_list_len = 0; + cil.id_discr = CELL_IDENT_NO_CELL; + print_cil(&cil); + ADD(cgi1, 1); + ADD(cgi1, 0); + ADD(cgi2, 2); + ADD(cgi2, 0); + + cil.id_list_len = GSM0808_CELL_ID_LIST2_MAXLEN - 1; + printf("\ncil.id_list_len = %u", cil.id_list_len); + ADD_QUIET(cgi2a, 1); + printf("cil.id_list_len = %u\n", cil.id_list_len); + + cil.id_list_len = GSM0808_CELL_ID_LIST2_MAXLEN - 1; + printf("\ncil.id_list_len = %u", cil.id_list_len); + ADD_QUIET(cgi3, -ENOSPC); + printf("cil.id_list_len = %u", cil.id_list_len); + ADD_QUIET(cgi2a, -ENOSPC); + printf("cil.id_list_len = %u\n", cil.id_list_len); + + printf("------- %s done\n", __func__); +} + int main(int argc, char **argv) { printf("Testing generation of GSM0808 messages\n"); @@ -1103,6 +1296,8 @@ test_gsm0808_enc_dec_cell_id_list_multi_lac_and_ci(); test_gsm0808_enc_dec_cell_id_list_multi_global(); + test_cell_id_list_add(); + printf("Done\n"); return EXIT_SUCCESS; } diff --git a/tests/gsm0808/gsm0808_test.ok b/tests/gsm0808/gsm0808_test.ok index e101d65..a049dec 100644 --- a/tests/gsm0808/gsm0808_test.ok +++ b/tests/gsm0808/gsm0808_test.ok @@ -19,4 +19,89 @@ Testing creating Paging Request Testing creating DTAP Testing prepend DTAP +------- test_cell_id_list_add + cell_id_list cgi[0] = { + } + +gsm0808_cell_id_list_add(&cil, &lac1) --> rc = 1 + cell_id_list lac[1] = { + 0: 123 + } + +gsm0808_cell_id_list_add(&cil, &lac1) --> rc = 0 + cell_id_list lac[1] = { + 0: 123 + } + +gsm0808_cell_id_list_add(&cil, &lac2) --> rc = 2 + cell_id_list lac[3] = { + 0: 123 + 1: 456 + 2: 789 + } + +gsm0808_cell_id_list_add(&cil, &lac2) --> rc = 0 + cell_id_list lac[3] = { + 0: 123 + 1: 456 + 2: 789 + } + +gsm0808_cell_id_list_add(&cil, &cil) --> rc = 0 + cell_id_list lac[3] = { + 0: 123 + 1: 456 + 2: 789 + } + +gsm0808_cell_id_list_add(&cil, &cgi1) --> rc = -22 + cell_id_list lac[3] = { + 0: 123 + 1: 456 + 2: 789 + } + +can't add to BSS list + cell_id_list bss[0] + +gsm0808_cell_id_list_add(&cil, &lac1) --> rc = -22 + cell_id_list bss[0] + +other types (including NO_CELL) take on new type iff empty + cell_id_list no_cell[0] + +gsm0808_cell_id_list_add(&cil, &cgi1) --> rc = 1 + cell_id_list cgi[1] = { + 0: 001-02-3-4 + } + +gsm0808_cell_id_list_add(&cil, &cgi1) --> rc = 0 + cell_id_list cgi[1] = { + 0: 001-02-3-4 + } + +gsm0808_cell_id_list_add(&cil, &cgi2) --> rc = 2 + cell_id_list cgi[3] = { + 0: 001-02-3-4 + 1: 001-002-3-4 + 2: 005-006-7-8 + } + +gsm0808_cell_id_list_add(&cil, &cgi2) --> rc = 0 + cell_id_list cgi[3] = { + 0: 001-02-3-4 + 1: 001-002-3-4 + 2: 005-006-7-8 + } + +cil.id_list_len = 126 +gsm0808_cell_id_list_add(&cil, &cgi2a) --> rc = 1 +cil.id_list_len = 127 + +cil.id_list_len = 126 +gsm0808_cell_id_list_add(&cil, &cgi3) --> rc = -28 +cil.id_list_len = 127 +gsm0808_cell_id_list_add(&cil, &cgi2a) --> rc = -28 +cil.id_list_len = 127 +------- test_cell_id_list_add done Done -- To view, visit https://gerrit.osmocom.org/7787 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I5781f5fa5339c92ab2e2620489b002829d206925 Gerrit-PatchSet: 1 Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr From gerrit-no-reply at lists.osmocom.org Fri Apr 13 03:24:26 2018 From: gerrit-no-reply at lists.osmocom.org (Neels Hofmeyr) Date: Fri, 13 Apr 2018 03:24:26 +0000 Subject: [PATCH] libosmocore[master]: add tlv_parse2(), capable of multiple instances of the same IE Message-ID: Review at https://gerrit.osmocom.org/7788 add tlv_parse2(), capable of multiple instances of the same IE Allow passing multiple struct tlv_parsed in an array, to allow parsing as many repeated IEs as are expected by the caller. >From tlv_parse(), call tlv_parse2() with dec_multiple = 1 to yield the previous behavior. tlv_parse() remains valid API. An example of multiple IEs is the BSSMAP Handover Request, containing Cell Identifier (Serving) and Cell Identifier (Target), both defined by 3GPP TS 48.008 3.2.2.17 with identical IE tags; both are mandatory. Related: OS#2283 (inter-BSC HO, BSC side) Change-Id: Id04008eaf0a1cafdbdc11b7efc556e3035b1c84d --- M include/osmocom/gsm/tlv.h M src/gsm/libosmogsm.map M src/gsm/tlv_parser.c M tests/tlv/tlv_test.c 4 files changed, 83 insertions(+), 24 deletions(-) git pull ssh://gerrit.osmocom.org:29418/libosmocore refs/changes/88/7788/1 diff --git a/include/osmocom/gsm/tlv.h b/include/osmocom/gsm/tlv.h index 8654893..996f6aa 100644 --- a/include/osmocom/gsm/tlv.h +++ b/include/osmocom/gsm/tlv.h @@ -433,6 +433,9 @@ const uint8_t *buf, int buf_len); int tlv_parse(struct tlv_parsed *dec, const struct tlv_definition *def, const uint8_t *buf, int buf_len, uint8_t lv_tag, uint8_t lv_tag2); +int tlv_parse2(struct tlv_parsed *dec, int dec_multiples, + const struct tlv_definition *def, const uint8_t *buf, int buf_len, + uint8_t lv_tag, uint8_t lv_tag2); /* take a master (src) tlv def and fill up all empty slots in 'dst' */ void tlv_def_patch(struct tlv_definition *dst, const struct tlv_definition *src); diff --git a/src/gsm/libosmogsm.map b/src/gsm/libosmogsm.map index d99121e..4d009e0 100644 --- a/src/gsm/libosmogsm.map +++ b/src/gsm/libosmogsm.map @@ -406,6 +406,7 @@ tlv_def_patch; tlv_dump; tlv_parse; +tlv_parse2; tlv_parse_one; tvlv_att_def; vtvlv_gan_att_def; diff --git a/src/gsm/tlv_parser.c b/src/gsm/tlv_parser.c index f693971..6e089f7 100644 --- a/src/gsm/tlv_parser.c +++ b/src/gsm/tlv_parser.c @@ -220,7 +220,12 @@ return len; } -/*! Parse an entire buffer of TLV encoded Information Elements +/*! Parse an entire buffer of TLV encoded Information Elements. + * In case of multiple occurences of an IE, keep only the first occurence. + * Most GSM related protocols clearly indicate that in case of duplicate + * IEs, only the first occurrence shall be used, while any further occurrences + * shall be ignored. See e.g. 3GPP TS 24.008 Section 8.6.3. + * For multiple occurences, use tlv_parse2(). * \param[out] dec caller-allocated pointer to \ref tlv_parsed * \param[in] def structure defining the valid TLV tags / configurations * \param[in] buf the input data buffer to be parsed @@ -233,38 +238,77 @@ const uint8_t *buf, int buf_len, uint8_t lv_tag, uint8_t lv_tag2) { + return tlv_parse2(dec, 1, def, buf, buf_len, lv_tag, lv_tag2); +} + +/*! Like tlv_parse(), but capable of decoding multiple occurences of the same IE. + * Parse an entire buffer of TLV encoded Information Elements. + * To decode multiple occurences of IEs, provide in dec an _array_ of tlv_parsed, and + * pass the size of that array in dec_multiples. The first occurence of each IE + * is stored in dec[0], the second in dec[1] and so forth. If there are more + * occurences than the array length given in dec_multiples, the remaining + * occurences are dropped. + * \param[out] dec caller-allocated pointer to \ref tlv_parsed + * \param[in] dec_multiples length of the tlv_parsed[] in \a dec. + * \param[in] def structure defining the valid TLV tags / configurations + * \param[in] buf the input data buffer to be parsed + * \param[in] buf_len length of the input data buffer + * \param[in] lv_tag an initial LV tag at the start of the buffer + * \param[in] lv_tag2 a second initial LV tag following the \a lv_tag + * \returns number of TLV entries parsed; negative in case of error + */ +int tlv_parse2(struct tlv_parsed *dec, int dec_multiples, + const struct tlv_definition *def, const uint8_t *buf, int buf_len, + uint8_t lv_tag, uint8_t lv_tag2) +{ int ofs = 0, num_parsed = 0; uint16_t len; + int dec_i; - memset(dec, 0, sizeof(*dec)); + for (dec_i = 0; dec_i < dec_multiples; dec_i++) + memset(&dec[dec_i], 0, sizeof(*dec)); if (lv_tag) { + const uint8_t *val; + uint16_t parsed_len; if (ofs > buf_len) return -1; - dec->lv[lv_tag].val = &buf[ofs+1]; - dec->lv[lv_tag].len = buf[ofs]; - len = dec->lv[lv_tag].len + 1; - if (ofs + len > buf_len) { - dec->lv[lv_tag].val = NULL; - dec->lv[lv_tag].len = 0; + val = &buf[ofs+1]; + len = buf[ofs]; + parsed_len = len + 1; + if (ofs + parsed_len > buf_len) return -2; - } num_parsed++; - ofs += len; + ofs += parsed_len; + /* store the resulting val and len */ + for (dec_i = 0; dec_i < dec_multiples; dec_i++) { + if (dec[dec_i].lv[lv_tag].val != NULL) + continue; + dec->lv[lv_tag].val = val; + dec->lv[lv_tag].len = len; + break; + } } if (lv_tag2) { + const uint8_t *val; + uint16_t parsed_len; if (ofs > buf_len) return -1; - dec->lv[lv_tag2].val = &buf[ofs+1]; - dec->lv[lv_tag2].len = buf[ofs]; - len = dec->lv[lv_tag2].len + 1; - if (ofs + len > buf_len) { - dec->lv[lv_tag2].val = NULL; - dec->lv[lv_tag2].len = 0; + val = &buf[ofs+1]; + len = buf[ofs]; + parsed_len = len + 1; + if (ofs + parsed_len > buf_len) return -2; - } num_parsed++; - ofs += len; + ofs += parsed_len; + /* store the resulting val and len */ + for (dec_i = 0; dec_i < dec_multiples; dec_i++) { + if (dec[dec_i].lv[lv_tag2].val != NULL) + continue; + dec->lv[lv_tag2].val = val; + dec->lv[lv_tag2].len = len; + break; + } } while (ofs < buf_len) { @@ -276,12 +320,12 @@ &buf[ofs], buf_len-ofs); if (rv < 0) return rv; - /* Most GSM related protocols clearly indicate that in case of duplicate - * IEs, only the first occurrence shall be used, while any further occurrences - * shall be ignored. See e.g. 3GPP TS 24.008 Section 8.6.3 */ - if (dec->lv[tag].val == NULL) { - dec->lv[tag].val = val; - dec->lv[tag].len = len; + for (dec_i = 0; dec_i < dec_multiples; dec_i++) { + if (dec[dec_i].lv[tag].val != NULL) + continue; + dec[dec_i].lv[tag].val = val; + dec[dec_i].lv[tag].len = len; + break; } ofs += rv; num_parsed++; diff --git a/tests/tlv/tlv_test.c b/tests/tlv/tlv_test.c index 3973275..e2065b0 100644 --- a/tests/tlv/tlv_test.c +++ b/tests/tlv/tlv_test.c @@ -254,6 +254,7 @@ int i, rc; const uint8_t tag = 0x1a; struct tlv_parsed dec; + struct tlv_parsed dec3[3]; struct tlv_definition def; memset(&def, 0, sizeof(def)); @@ -273,6 +274,16 @@ /* Value pointer should point at first value in test data array. */ OSMO_ASSERT(dec.lv[tag].val == &test_data[2]); OSMO_ASSERT(*dec.lv[tag].val == test_data[2]); + + /* Accept three decodings, pointing at first, second and third val */ + rc = tlv_parse2(dec3, 3, &def, &test_data[1], sizeof(test_data) - 1, tag, 0); + OSMO_ASSERT(rc == i/3); + OSMO_ASSERT(dec3[0].lv[tag].len == 1); + OSMO_ASSERT(dec3[0].lv[tag].val == &test_data[2]); + OSMO_ASSERT(dec3[1].lv[tag].len == 1); + OSMO_ASSERT(dec3[1].lv[tag].val == &test_data[2 + 3]); + OSMO_ASSERT(dec3[2].lv[tag].len == 1); + OSMO_ASSERT(dec3[2].lv[tag].val == &test_data[2 + 3 + 3]); } int main(int argc, char **argv) -- To view, visit https://gerrit.osmocom.org/7788 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Id04008eaf0a1cafdbdc11b7efc556e3035b1c84d Gerrit-PatchSet: 1 Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr From gerrit-no-reply at lists.osmocom.org Fri Apr 13 03:24:27 2018 From: gerrit-no-reply at lists.osmocom.org (Neels Hofmeyr) Date: Fri, 13 Apr 2018 03:24:27 +0000 Subject: [PATCH] libosmocore[master]: add gsm0808_{enc,dec}_cell_id Message-ID: Review at https://gerrit.osmocom.org/7789 add gsm0808_{enc,dec}_cell_id Clarify semantics and micro-optimise for the case of single Cell Identifer IEs. Test in gsm0808_test.c So far we have gsm0808_enc_cell_id_list2(), but there also exist instances of single Cell Identifiers (3GPP TS 48.008 3.2.2.17). It is possible to decode the same using the cell identifier list API, but this forces the caller to also keep a full struct gsm0808_cell_id_list2 with all its 127 entries around. E.g. for handover, there are two Cell Identifiers (Serving and Target); I'd need two full cell id lists for each, and these would be dynamically allocated for each handover operation, whether it uses them or not. Related: OS#2283 (inter-BSC HO, BSC side) Change-Id: I9f9c528965775698ab62ac386af0516192c4b0cc --- M include/osmocom/gsm/gsm0808_utils.h M src/gsm/gsm0808_utils.c M src/gsm/libosmogsm.map M tests/gsm0808/gsm0808_test.c M tests/gsm0808/gsm0808_test.ok 5 files changed, 251 insertions(+), 12 deletions(-) git pull ssh://gerrit.osmocom.org:29418/libosmocore refs/changes/89/7789/1 diff --git a/include/osmocom/gsm/gsm0808_utils.h b/include/osmocom/gsm/gsm0808_utils.h index 34eae43..8e71b43 100644 --- a/include/osmocom/gsm/gsm0808_utils.h +++ b/include/osmocom/gsm/gsm0808_utils.h @@ -31,20 +31,27 @@ /*! (225-1)/2 is the maximum number of elements in a cell identifier list. */ #define GSM0808_CELL_ID_LIST2_MAXLEN 127 -/*! Parsed representation of a cell identifier list IE. */ +/*! Instead of this, use either struct gsm0808_cell_id or gsm0808_cell_id_list2. + * All elements contain parsed representations of the data in the corresponding IE, in host-byte order. + */ +union gsm0808_cell_id_u { + struct osmo_cell_global_id global; + struct osmo_lac_and_ci_id lac_and_ci; + uint16_t ci; + struct osmo_location_area_id lai_and_lac; + uint16_t lac; +}; + +/*! Parsed representation of Cell Identifier IE (3GPP TS 48.008 3.2.2.17) */ +struct gsm0808_cell_id { + enum CELL_IDENT id_discr; + union gsm0808_cell_id_u id; +}; + +/*! Parsed representation of a Cell Identifier List IE (3GPP TS 48.008 3.2.2.27). */ struct gsm0808_cell_id_list2 { enum CELL_IDENT id_discr; - union { - /*! - * All elements of these arrays contain parsed representations of the - * data in the corresponding IE, in host-byte order. - */ - struct osmo_cell_global_id global; - struct osmo_lac_and_ci_id lac_and_ci; - uint16_t ci; - struct osmo_location_area_id lai_and_lac; - uint16_t lac; - } id_list[GSM0808_CELL_ID_LIST2_MAXLEN]; + union gsm0808_cell_id_u id_list[GSM0808_CELL_ID_LIST2_MAXLEN]; unsigned int id_list_len; }; @@ -78,6 +85,8 @@ const uint8_t *elem, uint8_t len) OSMO_DEPRECATED("use gsm0808_dec_cell_id_list2 instead"); int gsm0808_cell_id_list_add(struct gsm0808_cell_id_list2 *dst, const struct gsm0808_cell_id_list2 *src); +uint8_t gsm0808_enc_cell_id(struct msgb *msg, const struct gsm0808_cell_id *ci); +int gsm0808_dec_cell_id(struct gsm0808_cell_id *ci, const uint8_t *elem, uint8_t len); int gsm0808_chan_type_to_speech_codec(uint8_t perm_spch); int gsm0808_speech_codec_from_chan_type(struct gsm0808_speech_codec *sc, uint8_t perm_spch); diff --git a/src/gsm/gsm0808_utils.c b/src/gsm/gsm0808_utils.c index 996456e..1c05576 100644 --- a/src/gsm/gsm0808_utils.c +++ b/src/gsm/gsm0808_utils.c @@ -988,6 +988,52 @@ return added; } +/*! Encode Cell Identifier IE (3GPP TS 48.008 3.2.2.17). + * \param[out] msg Message Buffer to which IE is to be appended + * \param[in] ci Cell ID to be encoded + * \returns number of bytes appended to \a msg */ +uint8_t gsm0808_enc_cell_id(struct msgb *msg, const struct gsm0808_cell_id *ci) +{ + uint8_t rc; + uint8_t *ie_tag; + struct gsm0808_cell_id_list2 cil = { + .id_discr = ci->id_discr, + .id_list = { ci->id }, + .id_list_len = 1, + }; + + OSMO_ASSERT(msg); + OSMO_ASSERT(ci); + + ie_tag = msg->tail; + rc = gsm0808_enc_cell_id_list2(msg, &cil); + + if (rc <= 0) + return rc; + + *ie_tag = GSM0808_IE_CELL_IDENTIFIER; + return rc; +} + +/*! Decode Cell Identifier IE (3GPP TS 48.008 3.2.2.17). + * \param[out] ci Caller-provided memory to store Cell ID. + * \param[in] elem IE value to be decoded. + * \param[in] len Length of \a elem in bytes. + * \returns number of bytes parsed; negative on error */ +int gsm0808_dec_cell_id(struct gsm0808_cell_id *ci, const uint8_t *elem, uint8_t len) +{ + struct gsm0808_cell_id_list2 cil; + int rc; + rc = gsm0808_dec_cell_id_list2(&cil, elem, len); + if (rc < 0 + || (cil.id_discr == CELL_IDENT_BSS && cil.id_list_len != 0) + || (cil.id_discr != CELL_IDENT_BSS && cil.id_list_len != 1)) + return -EINVAL; + ci->id_discr = cil.id_discr; + ci->id = cil.id_list[0]; + return rc; +} + /*! Convert the representation of the permitted speech codec identifier * that is used in struct gsm0808_channel_type to the speech codec * representation we use in struct gsm0808_speech_codec. diff --git a/src/gsm/libosmogsm.map b/src/gsm/libosmogsm.map index 4d009e0..388fcc0 100644 --- a/src/gsm/libosmogsm.map +++ b/src/gsm/libosmogsm.map @@ -177,6 +177,8 @@ gsm0808_dec_cell_id_list; gsm0808_dec_cell_id_list2; gsm0808_cell_id_list_add; +gsm0808_enc_cell_id; +gsm0808_dec_cell_id; gsm0808_chan_type_to_speech_codec; gsm0808_speech_codec_from_chan_type; gsm0808_speech_codec_type_names; diff --git a/tests/gsm0808/gsm0808_test.c b/tests/gsm0808/gsm0808_test.c index f467099..13ae3ce 100644 --- a/tests/gsm0808/gsm0808_test.c +++ b/tests/gsm0808/gsm0808_test.c @@ -1256,6 +1256,174 @@ printf("------- %s done\n", __func__); } +#define EXPECT_ENCODED(hexstr) do { \ + const char *enc_str = msgb_hexdump(msg); \ + printf("%s: encoded: %s(rc = %u)\n", __func__, enc_str, rc_enc); \ + OSMO_ASSERT(strcmp(enc_str, hexstr " ") == 0); \ + OSMO_ASSERT(rc_enc == msg->len); \ + } while(0) + +static void test_gsm0808_enc_dec_cell_id_lac() +{ + struct gsm0808_cell_id enc_ci = { + .id_discr = CELL_IDENT_LAC, + .id.lac = 0x0124, + }; + struct gsm0808_cell_id dec_ci; + struct msgb *msg; + uint8_t rc_enc; + int rc_dec; + + memset(&dec_ci, 0xa5, sizeof(dec_ci)); + + msg = msgb_alloc(1024, "output buffer"); + rc_enc = gsm0808_enc_cell_id(msg, &enc_ci); + EXPECT_ENCODED("05 03 05 01 24"); + + rc_dec = gsm0808_dec_cell_id(&dec_ci, msg->data + 2, msg->len - 2); + OSMO_ASSERT(rc_dec == 3); + + OSMO_ASSERT(enc_ci.id_discr == dec_ci.id_discr + && enc_ci.id.lac == dec_ci.id.lac); + + msgb_free(msg); +} + +static void test_gsm0808_enc_dec_cell_id_bss() +{ + struct gsm0808_cell_id enc_ci = { + .id_discr = CELL_IDENT_BSS, + }; + struct gsm0808_cell_id dec_ci; + struct msgb *msg; + uint8_t rc_enc; + int rc_dec; + + msg = msgb_alloc(1024, "output buffer"); + rc_enc = gsm0808_enc_cell_id(msg, &enc_ci); + EXPECT_ENCODED("05 01 06"); + + rc_dec = gsm0808_dec_cell_id(&dec_ci, msg->data + 2, msg->len - 2); + OSMO_ASSERT(rc_dec == 1); + + OSMO_ASSERT(enc_ci.id_discr == dec_ci.id_discr); + + msgb_free(msg); +} + +static void test_gsm0808_enc_dec_cell_id_lai_and_lac() +{ + struct gsm0808_cell_id enc_ci = { + .id_discr = CELL_IDENT_LAI_AND_LAC, + .id.lai_and_lac = { + .plmn = { + .mcc = 123, + .mnc = 456, + }, + .lac = 0x2342, + }, + }; + struct gsm0808_cell_id dec_ci; + struct msgb *msg; + uint8_t rc_enc; + int rc_dec; + + msg = msgb_alloc(1024, "output buffer"); + rc_enc = gsm0808_enc_cell_id(msg, &enc_ci); + EXPECT_ENCODED("05 06 04 21 63 54 23 42"); + + memset(&dec_ci, 0xa5, sizeof(dec_ci)); + rc_dec = gsm0808_dec_cell_id(&dec_ci, msg->data + 2, msg->len - 2); + OSMO_ASSERT(rc_dec == msg->len - 2); + + OSMO_ASSERT(enc_ci.id_discr == dec_ci.id_discr + && osmo_plmn_cmp(&enc_ci.id.lai_and_lac.plmn, &dec_ci.id.lai_and_lac.plmn) == 0 + && enc_ci.id.lai_and_lac.lac == dec_ci.id.lai_and_lac.lac); + msgb_free(msg); +} + +static void test_gsm0808_enc_dec_cell_id_ci() +{ + struct gsm0808_cell_id enc_ci = { + .id_discr = CELL_IDENT_CI, + .id.ci = 0x423, + }; + struct gsm0808_cell_id dec_ci; + struct msgb *msg; + uint8_t rc_enc; + int rc_dec; + + msg = msgb_alloc(1024, "output buffer"); + rc_enc = gsm0808_enc_cell_id(msg, &enc_ci); + EXPECT_ENCODED("05 03 02 04 23"); + + rc_dec = gsm0808_dec_cell_id(&dec_ci, msg->data + 2, msg->len - 2); + OSMO_ASSERT(rc_dec == msg->len - 2); + OSMO_ASSERT(enc_ci.id_discr == dec_ci.id_discr + && enc_ci.id.ci == dec_ci.id.ci); + + msgb_free(msg); +} + +static void test_gsm0808_enc_dec_cell_id_lac_and_ci() +{ + struct gsm0808_cell_id enc_ci = { + .id_discr = CELL_IDENT_LAC_AND_CI, + .id.lac_and_ci = { + .lac = 0x423, + .ci = 0x235, + }, + }; + struct gsm0808_cell_id dec_ci; + struct msgb *msg; + uint8_t rc_enc; + int rc_dec; + + msg = msgb_alloc(1024, "output buffer"); + rc_enc = gsm0808_enc_cell_id(msg, &enc_ci); + EXPECT_ENCODED("05 05 01 04 23 02 35"); + + rc_dec = gsm0808_dec_cell_id(&dec_ci, msg->data + 2, msg->len - 2); + OSMO_ASSERT(rc_dec == msg->len - 2); + OSMO_ASSERT(enc_ci.id_discr == dec_ci.id_discr + && enc_ci.id.lac_and_ci.lac == dec_ci.id.lac_and_ci.lac + && enc_ci.id.lac_and_ci.ci == dec_ci.id.lac_and_ci.ci); + + msgb_free(msg); +} + +static void test_gsm0808_enc_dec_cell_id_global() +{ + struct gsm0808_cell_id enc_ci = { + .id_discr = CELL_IDENT_WHOLE_GLOBAL, + .id.global = { + .lai = { + .plmn = { .mcc = 123, .mnc = 456 }, + .lac = 0x2342 + }, + .cell_identity = 0x423, + } + }; + struct gsm0808_cell_id dec_ci; + struct msgb *msg; + uint8_t rc_enc; + int rc_dec; + + msg = msgb_alloc(1024, "output buffer"); + rc_enc = gsm0808_enc_cell_id(msg, &enc_ci); + EXPECT_ENCODED("05 08 00 21 63 54 23 42 04 23"); + + rc_dec = gsm0808_dec_cell_id(&dec_ci, msg->data + 2, msg->len - 2); + OSMO_ASSERT(rc_dec == msg->len - 2); + + OSMO_ASSERT(enc_ci.id_discr == dec_ci.id_discr + && osmo_plmn_cmp(&enc_ci.id.global.lai.plmn, + &dec_ci.id.global.lai.plmn) == 0 + && enc_ci.id.global.lai.lac == dec_ci.id.global.lai.lac + && enc_ci.id.global.cell_identity == dec_ci.id.global.cell_identity); + msgb_free(msg); +} + int main(int argc, char **argv) { printf("Testing generation of GSM0808 messages\n"); @@ -1287,6 +1455,7 @@ test_gsm0808_enc_dec_speech_codec_list(); test_gsm0808_enc_dec_channel_type(); test_gsm0808_enc_dec_encrypt_info(); + test_gsm0808_enc_dec_cell_id_list_lac(); test_gsm0808_enc_dec_cell_id_list_single_lac(); test_gsm0808_enc_dec_cell_id_list_multi_lac(); @@ -1298,6 +1467,13 @@ test_cell_id_list_add(); + test_gsm0808_enc_dec_cell_id_lac(); + test_gsm0808_enc_dec_cell_id_bss(); + test_gsm0808_enc_dec_cell_id_lai_and_lac(); + test_gsm0808_enc_dec_cell_id_ci(); + test_gsm0808_enc_dec_cell_id_lac_and_ci(); + test_gsm0808_enc_dec_cell_id_global(); + printf("Done\n"); return EXIT_SUCCESS; } diff --git a/tests/gsm0808/gsm0808_test.ok b/tests/gsm0808/gsm0808_test.ok index a049dec..1f51aea 100644 --- a/tests/gsm0808/gsm0808_test.ok +++ b/tests/gsm0808/gsm0808_test.ok @@ -104,4 +104,10 @@ gsm0808_cell_id_list_add(&cil, &cgi2a) --> rc = -28 cil.id_list_len = 127 ------- test_cell_id_list_add done +test_gsm0808_enc_dec_cell_id_lac: encoded: 05 03 05 01 24 (rc = 5) +test_gsm0808_enc_dec_cell_id_bss: encoded: 05 01 06 (rc = 3) +test_gsm0808_enc_dec_cell_id_lai_and_lac: encoded: 05 06 04 21 63 54 23 42 (rc = 8) +test_gsm0808_enc_dec_cell_id_ci: encoded: 05 03 02 04 23 (rc = 5) +test_gsm0808_enc_dec_cell_id_lac_and_ci: encoded: 05 05 01 04 23 02 35 (rc = 7) +test_gsm0808_enc_dec_cell_id_global: encoded: 05 08 00 21 63 54 23 42 04 23 (rc = 10) Done -- To view, visit https://gerrit.osmocom.org/7789 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I9f9c528965775698ab62ac386af0516192c4b0cc Gerrit-PatchSet: 1 Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr From gerrit-no-reply at lists.osmocom.org Fri Apr 13 03:24:27 2018 From: gerrit-no-reply at lists.osmocom.org (Neels Hofmeyr) Date: Fri, 13 Apr 2018 03:24:27 +0000 Subject: [PATCH] libosmocore[master]: test_gsm0808_enc_dec_cell_id_list_lac(): validate encoded bytes Message-ID: Review at https://gerrit.osmocom.org/7790 test_gsm0808_enc_dec_cell_id_list_lac(): validate encoded bytes Change-Id: I81b1ffbe6a5ec566c112492c2cbaf99c018c45bb --- M tests/gsm0808/gsm0808_test.c M tests/gsm0808/gsm0808_test.ok 2 files changed, 9 insertions(+), 8 deletions(-) git pull ssh://gerrit.osmocom.org:29418/libosmocore refs/changes/90/7790/1 diff --git a/tests/gsm0808/gsm0808_test.c b/tests/gsm0808/gsm0808_test.c index 13ae3ce..4e91832 100644 --- a/tests/gsm0808/gsm0808_test.c +++ b/tests/gsm0808/gsm0808_test.c @@ -750,6 +750,13 @@ msgb_free(msg); } +#define EXPECT_ENCODED(hexstr) do { \ + const char *enc_str = msgb_hexdump(msg); \ + printf("%s: encoded: %s(rc = %u)\n", __func__, enc_str, rc_enc); \ + OSMO_ASSERT(strcmp(enc_str, hexstr " ") == 0); \ + OSMO_ASSERT(rc_enc == msg->len); \ + } while(0) + static void test_gsm0808_enc_dec_cell_id_list_lac() { struct gsm0808_cell_id_list2 enc_cil; @@ -767,7 +774,7 @@ msg = msgb_alloc(1024, "output buffer"); rc_enc = gsm0808_enc_cell_id_list2(msg, &enc_cil); - OSMO_ASSERT(rc_enc == 9); + EXPECT_ENCODED("1a 07 05 56 78 00 00 00 00"); rc_dec = gsm0808_dec_cell_id_list2(&dec_cil, msg->data + 2, msg->len - 2); OSMO_ASSERT(rc_dec == 7); @@ -1255,13 +1262,6 @@ printf("------- %s done\n", __func__); } - -#define EXPECT_ENCODED(hexstr) do { \ - const char *enc_str = msgb_hexdump(msg); \ - printf("%s: encoded: %s(rc = %u)\n", __func__, enc_str, rc_enc); \ - OSMO_ASSERT(strcmp(enc_str, hexstr " ") == 0); \ - OSMO_ASSERT(rc_enc == msg->len); \ - } while(0) static void test_gsm0808_enc_dec_cell_id_lac() { diff --git a/tests/gsm0808/gsm0808_test.ok b/tests/gsm0808/gsm0808_test.ok index 1f51aea..6e5e118 100644 --- a/tests/gsm0808/gsm0808_test.ok +++ b/tests/gsm0808/gsm0808_test.ok @@ -19,6 +19,7 @@ Testing creating Paging Request Testing creating DTAP Testing prepend DTAP +test_gsm0808_enc_dec_cell_id_list_lac: encoded: 1a 07 05 56 78 00 00 00 00 (rc = 9) ------- test_cell_id_list_add cell_id_list cgi[0] = { } -- To view, visit https://gerrit.osmocom.org/7790 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I81b1ffbe6a5ec566c112492c2cbaf99c018c45bb Gerrit-PatchSet: 1 Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr From gerrit-no-reply at lists.osmocom.org Fri Apr 13 03:24:27 2018 From: gerrit-no-reply at lists.osmocom.org (Neels Hofmeyr) Date: Fri, 13 Apr 2018 03:24:27 +0000 Subject: [PATCH] libosmocore[master]: test_gsm0808_enc_dec_cell_id_list_lac(): populate all LACs Message-ID: Review at https://gerrit.osmocom.org/7791 test_gsm0808_enc_dec_cell_id_list_lac(): populate all LACs Change-Id: I7535166a2827c03a954fe72d5d99217e4f25868f --- M tests/gsm0808/gsm0808_test.c M tests/gsm0808/gsm0808_test.ok 2 files changed, 4 insertions(+), 4 deletions(-) git pull ssh://gerrit.osmocom.org:29418/libosmocore refs/changes/91/7791/1 diff --git a/tests/gsm0808/gsm0808_test.c b/tests/gsm0808/gsm0808_test.c index 4e91832..8dcb1e0 100644 --- a/tests/gsm0808/gsm0808_test.c +++ b/tests/gsm0808/gsm0808_test.c @@ -768,13 +768,13 @@ memset(&enc_cil, 0, sizeof(enc_cil)); enc_cil.id_discr = CELL_IDENT_LAC; enc_cil.id_list[0].lac = 0x0124; - enc_cil.id_list[0].lac = 0xABCD; - enc_cil.id_list[0].lac = 0x5678; + enc_cil.id_list[1].lac = 0xABCD; + enc_cil.id_list[2].lac = 0x5678; enc_cil.id_list_len = 3; msg = msgb_alloc(1024, "output buffer"); rc_enc = gsm0808_enc_cell_id_list2(msg, &enc_cil); - EXPECT_ENCODED("1a 07 05 56 78 00 00 00 00"); + EXPECT_ENCODED("1a 07 05 01 24 ab cd 56 78"); rc_dec = gsm0808_dec_cell_id_list2(&dec_cil, msg->data + 2, msg->len - 2); OSMO_ASSERT(rc_dec == 7); diff --git a/tests/gsm0808/gsm0808_test.ok b/tests/gsm0808/gsm0808_test.ok index 6e5e118..1dbe2f8 100644 --- a/tests/gsm0808/gsm0808_test.ok +++ b/tests/gsm0808/gsm0808_test.ok @@ -19,7 +19,7 @@ Testing creating Paging Request Testing creating DTAP Testing prepend DTAP -test_gsm0808_enc_dec_cell_id_list_lac: encoded: 1a 07 05 56 78 00 00 00 00 (rc = 9) +test_gsm0808_enc_dec_cell_id_list_lac: encoded: 1a 07 05 01 24 ab cd 56 78 (rc = 9) ------- test_cell_id_list_add cell_id_list cgi[0] = { } -- To view, visit https://gerrit.osmocom.org/7791 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I7535166a2827c03a954fe72d5d99217e4f25868f Gerrit-PatchSet: 1 Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr From gerrit-no-reply at lists.osmocom.org Fri Apr 13 03:28:56 2018 From: gerrit-no-reply at lists.osmocom.org (Neels Hofmeyr) Date: Fri, 13 Apr 2018 03:28:56 +0000 Subject: [PATCH] libosmocore[master]: add osmo_cgi_name() In-Reply-To: References: Message-ID: Hello Jenkins Builder, I'd like you to reexamine a change. Please visit https://gerrit.osmocom.org/7786 to look at the new patch set (#2). add osmo_cgi_name() This will be used by cell idenitifier list code, like upcoming neighbor_ident VTY in osmo-bsc and regression tests. Change-Id: Iebc5cdf61b697b1603900993fc265af3eca0cedf --- M include/osmocom/gsm/gsm23003.h M src/gsm/gsm23003.c M src/gsm/libosmogsm.map 3 files changed, 31 insertions(+), 0 deletions(-) git pull ssh://gerrit.osmocom.org:29418/libosmocore refs/changes/86/7786/2 diff --git a/include/osmocom/gsm/gsm23003.h b/include/osmocom/gsm/gsm23003.h index 02e7971..fd4f369 100644 --- a/include/osmocom/gsm/gsm23003.h +++ b/include/osmocom/gsm/gsm23003.h @@ -99,6 +99,8 @@ const char *osmo_plmn_name(const struct osmo_plmn_id *plmn); const char *osmo_plmn_name2(const struct osmo_plmn_id *plmn); const char *osmo_lai_name(const struct osmo_location_area_id *lai); +const char *osmo_cgi_name(const struct osmo_cell_global_id *cgi); +const char *osmo_cgi_name2(const struct osmo_cell_global_id *cgi); void osmo_plmn_to_bcd(uint8_t *bcd_dst, const struct osmo_plmn_id *plmn); void osmo_plmn_from_bcd(const uint8_t *bcd_src, struct osmo_plmn_id *plmn); diff --git a/src/gsm/gsm23003.c b/src/gsm/gsm23003.c index 574400d..2c3b21e 100644 --- a/src/gsm/gsm23003.c +++ b/src/gsm/gsm23003.c @@ -133,6 +133,33 @@ return buf; } +static const char *_cgi_name(const struct osmo_cell_global_id *cgi, char *buf, size_t buflen) +{ + snprintf(buf, buflen, "%s-%u", osmo_lai_name(&cgi->lai), cgi->cell_identity); + return buf; +} + +/*! Return MCC-MNC-LAC-CI as string, in a static buffer. + * \param[in] cgi CGI to encode. + * \returns Static string buffer. + */ +const char *osmo_cgi_name(const struct osmo_cell_global_id *cgi) +{ + static char buf[32]; + return _cgi_name(cgi, buf, sizeof(buf)); +} + +/*! Same as osmo_cgi_name(), but uses a different static buffer. + * Useful for printing two distinct CGIs in the same printf format. + * \param[in] cgi CGI to encode. + * \returns Static string buffer. + */ +const char *osmo_cgi_name2(const struct osmo_cell_global_id *cgi) +{ + static char buf[32]; + return _cgi_name(cgi, buf, sizeof(buf)); +} + static void to_bcd(uint8_t *bcd, uint16_t val) { bcd[2] = val % 10; diff --git a/src/gsm/libosmogsm.map b/src/gsm/libosmogsm.map index 31717d5..a6ea47d 100644 --- a/src/gsm/libosmogsm.map +++ b/src/gsm/libosmogsm.map @@ -277,6 +277,8 @@ osmo_plmn_name2; osmo_lai_name; osmo_rai_name; +osmo_cgi_name; +osmo_cgi_name2; osmo_mnc_from_str; osmo_mnc_cmp; osmo_plmn_cmp; -- To view, visit https://gerrit.osmocom.org/7786 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newpatchset Gerrit-Change-Id: Iebc5cdf61b697b1603900993fc265af3eca0cedf Gerrit-PatchSet: 2 Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr Gerrit-Reviewer: Jenkins Builder From gerrit-no-reply at lists.osmocom.org Fri Apr 13 03:39:02 2018 From: gerrit-no-reply at lists.osmocom.org (Neels Hofmeyr) Date: Fri, 13 Apr 2018 03:39:02 +0000 Subject: [PATCH] libosmocore[master]: add gsm0808_{enc,dec}_cell_id In-Reply-To: References: Message-ID: Hello Jenkins Builder, I'd like you to reexamine a change. Please visit https://gerrit.osmocom.org/7789 to look at the new patch set (#3). add gsm0808_{enc,dec}_cell_id Clarify semantics and micro-optimise for the case of single Cell Identifer IEs. Test in gsm0808_test.c So far we have gsm0808_enc_cell_id_list2(), but there also exist instances of single Cell Identifiers (3GPP TS 48.008 3.2.2.17). It is possible to decode the same using the cell identifier list API, but this forces the caller to also keep a full struct gsm0808_cell_id_list2 with all its 127 entries around. E.g. for handover, there are two Cell Identifiers (Serving and Target); I'd need two full cell id lists for each, and these would be dynamically allocated for each handover operation, whether it uses them or not. Related: OS#2283 (inter-BSC HO, BSC side) Change-Id: I9f9c528965775698ab62ac386af0516192c4b0cc --- M include/osmocom/gsm/gsm0808_utils.h M src/gsm/gsm0808_utils.c M src/gsm/libosmogsm.map M tests/gsm0808/gsm0808_test.c M tests/gsm0808/gsm0808_test.ok 5 files changed, 280 insertions(+), 12 deletions(-) git pull ssh://gerrit.osmocom.org:29418/libosmocore refs/changes/89/7789/3 diff --git a/include/osmocom/gsm/gsm0808_utils.h b/include/osmocom/gsm/gsm0808_utils.h index 34eae43..8e71b43 100644 --- a/include/osmocom/gsm/gsm0808_utils.h +++ b/include/osmocom/gsm/gsm0808_utils.h @@ -31,20 +31,27 @@ /*! (225-1)/2 is the maximum number of elements in a cell identifier list. */ #define GSM0808_CELL_ID_LIST2_MAXLEN 127 -/*! Parsed representation of a cell identifier list IE. */ +/*! Instead of this, use either struct gsm0808_cell_id or gsm0808_cell_id_list2. + * All elements contain parsed representations of the data in the corresponding IE, in host-byte order. + */ +union gsm0808_cell_id_u { + struct osmo_cell_global_id global; + struct osmo_lac_and_ci_id lac_and_ci; + uint16_t ci; + struct osmo_location_area_id lai_and_lac; + uint16_t lac; +}; + +/*! Parsed representation of Cell Identifier IE (3GPP TS 48.008 3.2.2.17) */ +struct gsm0808_cell_id { + enum CELL_IDENT id_discr; + union gsm0808_cell_id_u id; +}; + +/*! Parsed representation of a Cell Identifier List IE (3GPP TS 48.008 3.2.2.27). */ struct gsm0808_cell_id_list2 { enum CELL_IDENT id_discr; - union { - /*! - * All elements of these arrays contain parsed representations of the - * data in the corresponding IE, in host-byte order. - */ - struct osmo_cell_global_id global; - struct osmo_lac_and_ci_id lac_and_ci; - uint16_t ci; - struct osmo_location_area_id lai_and_lac; - uint16_t lac; - } id_list[GSM0808_CELL_ID_LIST2_MAXLEN]; + union gsm0808_cell_id_u id_list[GSM0808_CELL_ID_LIST2_MAXLEN]; unsigned int id_list_len; }; @@ -78,6 +85,8 @@ const uint8_t *elem, uint8_t len) OSMO_DEPRECATED("use gsm0808_dec_cell_id_list2 instead"); int gsm0808_cell_id_list_add(struct gsm0808_cell_id_list2 *dst, const struct gsm0808_cell_id_list2 *src); +uint8_t gsm0808_enc_cell_id(struct msgb *msg, const struct gsm0808_cell_id *ci); +int gsm0808_dec_cell_id(struct gsm0808_cell_id *ci, const uint8_t *elem, uint8_t len); int gsm0808_chan_type_to_speech_codec(uint8_t perm_spch); int gsm0808_speech_codec_from_chan_type(struct gsm0808_speech_codec *sc, uint8_t perm_spch); diff --git a/src/gsm/gsm0808_utils.c b/src/gsm/gsm0808_utils.c index 996456e..73d9362 100644 --- a/src/gsm/gsm0808_utils.c +++ b/src/gsm/gsm0808_utils.c @@ -988,6 +988,57 @@ return added; } +/*! Encode Cell Identifier IE (3GPP TS 48.008 3.2.2.17). + * \param[out] msg Message Buffer to which IE is to be appended + * \param[in] ci Cell ID to be encoded + * \returns number of bytes appended to \a msg */ +uint8_t gsm0808_enc_cell_id(struct msgb *msg, const struct gsm0808_cell_id *ci) +{ + uint8_t rc; + uint8_t *ie_tag; + struct gsm0808_cell_id_list2 cil = { + .id_discr = ci->id_discr, + .id_list = { ci->id }, + .id_list_len = 1, + }; + + OSMO_ASSERT(msg); + OSMO_ASSERT(ci); + + ie_tag = msg->tail; + rc = gsm0808_enc_cell_id_list2(msg, &cil); + + if (rc <= 0) + return rc; + + *ie_tag = GSM0808_IE_CELL_IDENTIFIER; + return rc; +} + +/*! Decode Cell Identifier IE (3GPP TS 48.008 3.2.2.17). + * \param[out] ci Caller-provided memory to store Cell ID. + * \param[in] elem IE value to be decoded. + * \param[in] len Length of \a elem in bytes. + * \returns number of bytes parsed; negative on error */ +int gsm0808_dec_cell_id(struct gsm0808_cell_id *ci, const uint8_t *elem, uint8_t len) +{ + struct gsm0808_cell_id_list2 cil; + int rc; + rc = gsm0808_dec_cell_id_list2(&cil, elem, len); + if (rc < 0) + return rc; + if (cil.id_discr == CELL_IDENT_BSS || cil.id_discr == CELL_IDENT_NO_CELL) { + if (cil.id_list_len != 0) + return -EINVAL; + } else { + if (cil.id_list_len != 1) + return -EINVAL; + } + ci->id_discr = cil.id_discr; + ci->id = cil.id_list[0]; + return rc; +} + /*! Convert the representation of the permitted speech codec identifier * that is used in struct gsm0808_channel_type to the speech codec * representation we use in struct gsm0808_speech_codec. diff --git a/src/gsm/libosmogsm.map b/src/gsm/libosmogsm.map index 4d009e0..388fcc0 100644 --- a/src/gsm/libosmogsm.map +++ b/src/gsm/libosmogsm.map @@ -177,6 +177,8 @@ gsm0808_dec_cell_id_list; gsm0808_dec_cell_id_list2; gsm0808_cell_id_list_add; +gsm0808_enc_cell_id; +gsm0808_dec_cell_id; gsm0808_chan_type_to_speech_codec; gsm0808_speech_codec_from_chan_type; gsm0808_speech_codec_type_names; diff --git a/tests/gsm0808/gsm0808_test.c b/tests/gsm0808/gsm0808_test.c index f467099..8c184dd 100644 --- a/tests/gsm0808/gsm0808_test.c +++ b/tests/gsm0808/gsm0808_test.c @@ -1256,6 +1256,196 @@ printf("------- %s done\n", __func__); } +#define EXPECT_ENCODED(hexstr) do { \ + const char *enc_str = msgb_hexdump(msg); \ + printf("%s: encoded: %s(rc = %u)\n", __func__, enc_str, rc_enc); \ + OSMO_ASSERT(strcmp(enc_str, hexstr " ") == 0); \ + OSMO_ASSERT(rc_enc == msg->len); \ + } while(0) + +static void test_gsm0808_enc_dec_cell_id_lac() +{ + struct gsm0808_cell_id enc_ci = { + .id_discr = CELL_IDENT_LAC, + .id.lac = 0x0124, + }; + struct gsm0808_cell_id dec_ci; + struct msgb *msg; + uint8_t rc_enc; + int rc_dec; + + memset(&dec_ci, 0xa5, sizeof(dec_ci)); + + msg = msgb_alloc(1024, "output buffer"); + rc_enc = gsm0808_enc_cell_id(msg, &enc_ci); + EXPECT_ENCODED("05 03 05 01 24"); + + rc_dec = gsm0808_dec_cell_id(&dec_ci, msg->data + 2, msg->len - 2); + OSMO_ASSERT(rc_dec == 3); + + OSMO_ASSERT(enc_ci.id_discr == dec_ci.id_discr + && enc_ci.id.lac == dec_ci.id.lac); + + msgb_free(msg); +} + +static void test_gsm0808_enc_dec_cell_id_bss() +{ + struct gsm0808_cell_id enc_ci = { + .id_discr = CELL_IDENT_BSS, + }; + struct gsm0808_cell_id dec_ci; + struct msgb *msg; + uint8_t rc_enc; + int rc_dec; + + msg = msgb_alloc(1024, "output buffer"); + rc_enc = gsm0808_enc_cell_id(msg, &enc_ci); + EXPECT_ENCODED("05 01 06"); + + rc_dec = gsm0808_dec_cell_id(&dec_ci, msg->data + 2, msg->len - 2); + OSMO_ASSERT(rc_dec == 1); + + OSMO_ASSERT(enc_ci.id_discr == dec_ci.id_discr); + + msgb_free(msg); +} + +static void test_gsm0808_enc_dec_cell_id_no_cell() +{ + struct gsm0808_cell_id enc_ci = { + .id_discr = CELL_IDENT_NO_CELL, + }; + struct gsm0808_cell_id dec_ci; + struct msgb *msg; + uint8_t rc_enc; + int rc_dec; + + msg = msgb_alloc(1024, "output buffer"); + rc_enc = gsm0808_enc_cell_id(msg, &enc_ci); + EXPECT_ENCODED("05 01 03"); + + rc_dec = gsm0808_dec_cell_id(&dec_ci, msg->data + 2, msg->len - 2); + OSMO_ASSERT(rc_dec == 1); + + OSMO_ASSERT(enc_ci.id_discr == dec_ci.id_discr); + + msgb_free(msg); +} + +static void test_gsm0808_enc_dec_cell_id_lai_and_lac() +{ + struct gsm0808_cell_id enc_ci = { + .id_discr = CELL_IDENT_LAI_AND_LAC, + .id.lai_and_lac = { + .plmn = { + .mcc = 123, + .mnc = 456, + }, + .lac = 0x2342, + }, + }; + struct gsm0808_cell_id dec_ci; + struct msgb *msg; + uint8_t rc_enc; + int rc_dec; + + msg = msgb_alloc(1024, "output buffer"); + rc_enc = gsm0808_enc_cell_id(msg, &enc_ci); + EXPECT_ENCODED("05 06 04 21 63 54 23 42"); + + memset(&dec_ci, 0xa5, sizeof(dec_ci)); + rc_dec = gsm0808_dec_cell_id(&dec_ci, msg->data + 2, msg->len - 2); + OSMO_ASSERT(rc_dec == msg->len - 2); + + OSMO_ASSERT(enc_ci.id_discr == dec_ci.id_discr + && osmo_plmn_cmp(&enc_ci.id.lai_and_lac.plmn, &dec_ci.id.lai_and_lac.plmn) == 0 + && enc_ci.id.lai_and_lac.lac == dec_ci.id.lai_and_lac.lac); + msgb_free(msg); +} + +static void test_gsm0808_enc_dec_cell_id_ci() +{ + struct gsm0808_cell_id enc_ci = { + .id_discr = CELL_IDENT_CI, + .id.ci = 0x423, + }; + struct gsm0808_cell_id dec_ci; + struct msgb *msg; + uint8_t rc_enc; + int rc_dec; + + msg = msgb_alloc(1024, "output buffer"); + rc_enc = gsm0808_enc_cell_id(msg, &enc_ci); + EXPECT_ENCODED("05 03 02 04 23"); + + rc_dec = gsm0808_dec_cell_id(&dec_ci, msg->data + 2, msg->len - 2); + OSMO_ASSERT(rc_dec == msg->len - 2); + OSMO_ASSERT(enc_ci.id_discr == dec_ci.id_discr + && enc_ci.id.ci == dec_ci.id.ci); + + msgb_free(msg); +} + +static void test_gsm0808_enc_dec_cell_id_lac_and_ci() +{ + struct gsm0808_cell_id enc_ci = { + .id_discr = CELL_IDENT_LAC_AND_CI, + .id.lac_and_ci = { + .lac = 0x423, + .ci = 0x235, + }, + }; + struct gsm0808_cell_id dec_ci; + struct msgb *msg; + uint8_t rc_enc; + int rc_dec; + + msg = msgb_alloc(1024, "output buffer"); + rc_enc = gsm0808_enc_cell_id(msg, &enc_ci); + EXPECT_ENCODED("05 05 01 04 23 02 35"); + + rc_dec = gsm0808_dec_cell_id(&dec_ci, msg->data + 2, msg->len - 2); + OSMO_ASSERT(rc_dec == msg->len - 2); + OSMO_ASSERT(enc_ci.id_discr == dec_ci.id_discr + && enc_ci.id.lac_and_ci.lac == dec_ci.id.lac_and_ci.lac + && enc_ci.id.lac_and_ci.ci == dec_ci.id.lac_and_ci.ci); + + msgb_free(msg); +} + +static void test_gsm0808_enc_dec_cell_id_global() +{ + struct gsm0808_cell_id enc_ci = { + .id_discr = CELL_IDENT_WHOLE_GLOBAL, + .id.global = { + .lai = { + .plmn = { .mcc = 123, .mnc = 456 }, + .lac = 0x2342 + }, + .cell_identity = 0x423, + } + }; + struct gsm0808_cell_id dec_ci; + struct msgb *msg; + uint8_t rc_enc; + int rc_dec; + + msg = msgb_alloc(1024, "output buffer"); + rc_enc = gsm0808_enc_cell_id(msg, &enc_ci); + EXPECT_ENCODED("05 08 00 21 63 54 23 42 04 23"); + + rc_dec = gsm0808_dec_cell_id(&dec_ci, msg->data + 2, msg->len - 2); + OSMO_ASSERT(rc_dec == msg->len - 2); + + OSMO_ASSERT(enc_ci.id_discr == dec_ci.id_discr + && osmo_plmn_cmp(&enc_ci.id.global.lai.plmn, + &dec_ci.id.global.lai.plmn) == 0 + && enc_ci.id.global.lai.lac == dec_ci.id.global.lai.lac + && enc_ci.id.global.cell_identity == dec_ci.id.global.cell_identity); + msgb_free(msg); +} + int main(int argc, char **argv) { printf("Testing generation of GSM0808 messages\n"); @@ -1287,6 +1477,7 @@ test_gsm0808_enc_dec_speech_codec_list(); test_gsm0808_enc_dec_channel_type(); test_gsm0808_enc_dec_encrypt_info(); + test_gsm0808_enc_dec_cell_id_list_lac(); test_gsm0808_enc_dec_cell_id_list_single_lac(); test_gsm0808_enc_dec_cell_id_list_multi_lac(); @@ -1298,6 +1489,14 @@ test_cell_id_list_add(); + test_gsm0808_enc_dec_cell_id_lac(); + test_gsm0808_enc_dec_cell_id_bss(); + test_gsm0808_enc_dec_cell_id_no_cell(); + test_gsm0808_enc_dec_cell_id_lai_and_lac(); + test_gsm0808_enc_dec_cell_id_ci(); + test_gsm0808_enc_dec_cell_id_lac_and_ci(); + test_gsm0808_enc_dec_cell_id_global(); + printf("Done\n"); return EXIT_SUCCESS; } diff --git a/tests/gsm0808/gsm0808_test.ok b/tests/gsm0808/gsm0808_test.ok index a049dec..27170f2 100644 --- a/tests/gsm0808/gsm0808_test.ok +++ b/tests/gsm0808/gsm0808_test.ok @@ -104,4 +104,11 @@ gsm0808_cell_id_list_add(&cil, &cgi2a) --> rc = -28 cil.id_list_len = 127 ------- test_cell_id_list_add done +test_gsm0808_enc_dec_cell_id_lac: encoded: 05 03 05 01 24 (rc = 5) +test_gsm0808_enc_dec_cell_id_bss: encoded: 05 01 06 (rc = 3) +test_gsm0808_enc_dec_cell_id_no_cell: encoded: 05 01 03 (rc = 3) +test_gsm0808_enc_dec_cell_id_lai_and_lac: encoded: 05 06 04 21 63 54 23 42 (rc = 8) +test_gsm0808_enc_dec_cell_id_ci: encoded: 05 03 02 04 23 (rc = 5) +test_gsm0808_enc_dec_cell_id_lac_and_ci: encoded: 05 05 01 04 23 02 35 (rc = 7) +test_gsm0808_enc_dec_cell_id_global: encoded: 05 08 00 21 63 54 23 42 04 23 (rc = 10) Done -- To view, visit https://gerrit.osmocom.org/7789 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newpatchset Gerrit-Change-Id: I9f9c528965775698ab62ac386af0516192c4b0cc Gerrit-PatchSet: 3 Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr Gerrit-Reviewer: Jenkins Builder From gerrit-no-reply at lists.osmocom.org Fri Apr 13 07:35:20 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Fri, 13 Apr 2018 07:35:20 +0000 Subject: [PATCH] libosmo-netif[master]: Update README.md Message-ID: Review at https://gerrit.osmocom.org/7792 Update README.md Fixed "interface" double references Change-Id: Icb41dc65dec56d6b8d8f23dfc9bbc2e85cf6dc3b --- M README.md 1 file changed, 1 insertion(+), 1 deletion(-) git pull ssh://gerrit.osmocom.org:29418/libosmo-netif refs/changes/92/7792/1 diff --git a/README.md b/README.md index b73ffe7..01267ea 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -libosmo-netif- Osmocom network interface interface library +libosmo-netif- Osmocom network interface library ========================================================== This repository contains a C-language library that form the -- To view, visit https://gerrit.osmocom.org/7792 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Icb41dc65dec56d6b8d8f23dfc9bbc2e85cf6dc3b Gerrit-PatchSet: 1 Gerrit-Project: libosmo-netif Gerrit-Branch: master Gerrit-Owner: Harald Welte From gerrit-no-reply at lists.osmocom.org Fri Apr 13 07:36:31 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Fri, 13 Apr 2018 07:36:31 +0000 Subject: libosmo-netif[master]: Update README.md In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7792 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Icb41dc65dec56d6b8d8f23dfc9bbc2e85cf6dc3b Gerrit-PatchSet: 1 Gerrit-Project: libosmo-netif Gerrit-Branch: master Gerrit-Owner: Harald Welte Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Fri Apr 13 07:38:35 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Fri, 13 Apr 2018 07:38:35 +0000 Subject: libosmocore[master]: add osmo_cgi_name() In-Reply-To: References: Message-ID: Patch Set 2: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7786 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Iebc5cdf61b697b1603900993fc265af3eca0cedf Gerrit-PatchSet: 2 Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Fri Apr 13 07:39:42 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Fri, 13 Apr 2018 07:39:42 +0000 Subject: libosmocore[master]: add gsm0808_cell_id_list_add() to combine two cell identifie... In-Reply-To: References: Message-ID: Patch Set 2: Code-Review+2 (1 comment) https://gerrit.osmocom.org/#/c/7787/2/src/gsm/gsm0808_utils.c File src/gsm/gsm0808_utils.c: Line 958: int gsm0808_cell_id_list_add(struct gsm0808_cell_id_list2 *dst, const struct gsm0808_cell_id_list2 *src) I would have called it "_merge", but it really doesn't matter. -- To view, visit https://gerrit.osmocom.org/7787 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I5781f5fa5339c92ab2e2620489b002829d206925 Gerrit-PatchSet: 2 Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-HasComments: Yes From gerrit-no-reply at lists.osmocom.org Fri Apr 13 07:41:04 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Fri, 13 Apr 2018 07:41:04 +0000 Subject: libosmocore[master]: add tlv_parse2(), capable of multiple instances of the same IE In-Reply-To: References: Message-ID: Patch Set 2: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7788 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Id04008eaf0a1cafdbdc11b7efc556e3035b1c84d Gerrit-PatchSet: 2 Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Fri Apr 13 07:42:32 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Fri, 13 Apr 2018 07:42:32 +0000 Subject: libosmocore[master]: add gsm0808_{enc,dec}_cell_id In-Reply-To: References: Message-ID: Patch Set 3: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7789 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I9f9c528965775698ab62ac386af0516192c4b0cc Gerrit-PatchSet: 3 Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Fri Apr 13 07:43:58 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Fri, 13 Apr 2018 07:43:58 +0000 Subject: libosmocore[master]: test_gsm0808_enc_dec_cell_id_list_lac(): validate encoded bytes In-Reply-To: References: Message-ID: Patch Set 3: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7790 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I81b1ffbe6a5ec566c112492c2cbaf99c018c45bb Gerrit-PatchSet: 3 Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Fri Apr 13 07:44:00 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Fri, 13 Apr 2018 07:44:00 +0000 Subject: libosmocore[master]: test_gsm0808_enc_dec_cell_id_list_lac(): populate all LACs In-Reply-To: References: Message-ID: Patch Set 3: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7791 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I7535166a2827c03a954fe72d5d99217e4f25868f Gerrit-PatchSet: 3 Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Fri Apr 13 07:44:35 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Fri, 13 Apr 2018 07:44:35 +0000 Subject: [MERGED] libosmo-netif[master]: Update README.md In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: Update README.md ...................................................................... Update README.md Fixed "interface" double references Change-Id: Icb41dc65dec56d6b8d8f23dfc9bbc2e85cf6dc3b --- M README.md 1 file changed, 1 insertion(+), 1 deletion(-) Approvals: Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/README.md b/README.md index b73ffe7..01267ea 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -libosmo-netif- Osmocom network interface interface library +libosmo-netif- Osmocom network interface library ========================================================== This repository contains a C-language library that form the -- To view, visit https://gerrit.osmocom.org/7792 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: Icb41dc65dec56d6b8d8f23dfc9bbc2e85cf6dc3b Gerrit-PatchSet: 1 Gerrit-Project: libosmo-netif Gerrit-Branch: master Gerrit-Owner: Harald Welte Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder From gerrit-no-reply at lists.osmocom.org Fri Apr 13 12:38:11 2018 From: gerrit-no-reply at lists.osmocom.org (Stefan Sperling) Date: Fri, 13 Apr 2018 12:38:11 +0000 Subject: osmo-bsc[master]: fix handling of state changes in acc ramping In-Reply-To: References: Message-ID: Patch Set 3: (3 comments) https://gerrit.osmocom.org/#/c/7784/3/src/libbsc/acc_ramp.c File src/libbsc/acc_ramp.c: Line 182: if (trx_is_usable(trx)) /* cross-check with operational state */ > As discussed a few mins ago, when coming from S_NM_STATECHG_OPER signal in Indeed. Fixed in next patch set. Line 190: break; > we can probably removed this break to print an error too, unless NULL is re Sure. Line 222: if (trigger_ramping && !osmo_timer_pending(&acc_ramp->step_timer)) > do we really need this osmo_timer_pending check here? This should never hap I'm afraid of putting an assert in there. It should not be needed in the next patch set so I've just removed the check entirely. -- To view, visit https://gerrit.osmocom.org/7784 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Ib3291439655598fb5ddc891a3e4cc35b0bad250f Gerrit-PatchSet: 3 Gerrit-Project: osmo-bsc Gerrit-Branch: master Gerrit-Owner: Stefan Sperling Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Pau Espin Pedrol Gerrit-Reviewer: Stefan Sperling Gerrit-HasComments: Yes From gerrit-no-reply at lists.osmocom.org Fri Apr 13 12:43:23 2018 From: gerrit-no-reply at lists.osmocom.org (Stefan Sperling) Date: Fri, 13 Apr 2018 12:43:23 +0000 Subject: [PATCH] osmo-bsc[master]: fix handling of state changes in acc ramping In-Reply-To: References: Message-ID: Hello Pau Espin Pedrol, Jenkins Builder, I'd like you to reexamine a change. Please visit https://gerrit.osmocom.org/7784 to look at the new patch set (#4). fix handling of state changes in acc ramping Take both the operative and administrative states into account when deciding whether to start ACC ramping, and examine old/new state values to avoid triggering ramping for a no-op state change. This requires a fix to gsm_trx_lock_rf(): This function overwrote the old administrative state of a trx before enqueuing a state change request towards the BTS. The BTS will confirm this request with an ACK, at which time a signal is generated which the ACC ramp code listens to. We must not overwrite the old state value until the signal has been handled, otherwise the signal handler cannot tell what the old state was. Tested with a virtphy setup, nanobts, and osmo-bts. Change-Id: Ib3291439655598fb5ddc891a3e4cc35b0bad250f Related: OS#2591 --- M src/libbsc/abis_nm.c M src/libbsc/acc_ramp.c M src/libbsc/bsc_init.c 3 files changed, 113 insertions(+), 37 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-bsc refs/changes/84/7784/4 diff --git a/src/libbsc/abis_nm.c b/src/libbsc/abis_nm.c index 2ee2e24..e3c4408 100644 --- a/src/libbsc/abis_nm.c +++ b/src/libbsc/abis_nm.c @@ -2844,13 +2844,17 @@ { uint8_t new_state = locked ? NM_STATE_LOCKED : NM_STATE_UNLOCKED; - LOGP(DNM, LOGL_NOTICE, "(bts=%d,trx=%d) Changing adm. state %s -> %s [%s]\n", trx->bts->nr, trx->nr, + + if (!trx->bts || !trx->bts->oml_link) { + /* Set initial state which will be sent when BTS connects. */ + trx->mo.nm_state.administrative = new_state; + return; + } + + LOGP(DNM, LOGL_NOTICE, "(bts=%d,trx=%d) Requesting administrative state change %s -> %s [%s]\n", + trx->bts->nr, trx->nr, get_value_string(abis_nm_adm_state_names, trx->mo.nm_state.administrative), get_value_string(abis_nm_adm_state_names, new_state), reason); - - trx->mo.nm_state.administrative = new_state; - if (!trx->bts || !trx->bts->oml_link) - return; abis_nm_chg_adm_state(trx->bts, NM_OC_RADIO_CARRIER, trx->bts->bts_nr, trx->nr, 0xff, diff --git a/src/libbsc/acc_ramp.c b/src/libbsc/acc_ramp.c index 7116107..ff8ff0e 100644 --- a/src/libbsc/acc_ramp.c +++ b/src/libbsc/acc_ramp.c @@ -28,6 +28,7 @@ #include #include #include +#include /* * Check if an ACC has been permanently barred for a BTS, @@ -144,6 +145,7 @@ struct nm_statechg_signal_data *nsd = signal_data; struct acc_ramp *acc_ramp = handler_data; struct gsm_bts_trx *trx = NULL; + bool trigger_ramping = false, abort_ramping = false; /* Handled signals map to an Administrative State Change ACK, or a State Changed Event Report. */ if (signal != S_NM_STATECHG_ADM && signal != S_NM_STATECHG_OPER) @@ -154,37 +156,109 @@ trx = nsd->obj; + LOGP(DRSL, LOGL_DEBUG, "(bts=%d,trx=%d) ACC RAMP: administrative state %s -> %s\n", + acc_ramp->bts->nr, trx->nr, + get_value_string(abis_nm_adm_state_names, nsd->old_state->administrative), + get_value_string(abis_nm_adm_state_names, nsd->new_state->administrative)); + LOGP(DRSL, LOGL_DEBUG, "(bts=%d,trx=%d) ACC RAMP: operational state %s -> %s\n", + acc_ramp->bts->nr, trx->nr, + abis_nm_opstate_name(nsd->old_state->operational), + abis_nm_opstate_name(nsd->new_state->operational)); + /* We only care about state changes of the first TRX. */ if (trx->nr != 0) return 0; /* RSL must already be up. We cannot send RACH system information to the BTS otherwise. */ - if (trx->rsl_link == NULL) + if (trx->rsl_link == NULL) { + LOGP(DRSL, LOGL_DEBUG, "(bts=%d,trx=%d) ACC RAMP: ignoring state change because RSL link is down\n", + acc_ramp->bts->nr, trx->nr); return 0; - - /* Trigger or abort ACC ramping based on the new 'RF lock' state of this TRX. */ - switch (nsd->new_state->administrative) { - case NM_STATE_UNLOCKED: - /* - * Do not re-trigger ACC ramping if ramping is already in progress. - * A BTS might send several "unlock" change events: One in the Administrative - * State Change ACK, and/or another in a State Changed Event Report. - * For instance, the nanobts is known to send both. - */ - if (!osmo_timer_pending(&acc_ramp->step_timer)) - acc_ramp_trigger(acc_ramp); - break; - case NM_STATE_LOCKED: - case NM_STATE_SHUTDOWN: - acc_ramp_abort(acc_ramp); - break; - case NM_STATE_NULL: - break; - default: - LOGP(DRSL, LOGL_NOTICE, "(bts=%d) ACC RAMP: unrecognized administrative state '0x%x' reported for TRX 0\n", - acc_ramp->bts->nr, nsd->new_state->administrative); - break; } + + /* Trigger or abort ACC ramping based on the new state of this TRX. */ + if (nsd->old_state->administrative != nsd->new_state->administrative) { + switch (nsd->new_state->administrative) { + case NM_STATE_UNLOCKED: + if (nsd->old_state->operational != nsd->new_state->operational) { + /* + * Administrative and operational state have both changed. + * Trigger ramping only if TRX 0 will be both enabled and unlocked. + */ + if (nsd->new_state->operational == NM_OPSTATE_ENABLED) + trigger_ramping = true; + else + LOGP(DRSL, LOGL_DEBUG, "(bts=%d,trx=%d) ACC RAMP: ignoring state change " + "because TRX is transitioning into operational state '%s'\n", + acc_ramp->bts->nr, trx->nr, + abis_nm_opstate_name(nsd->new_state->operational)); + } else { + /* + * Operational state has not changed. + * Trigger ramping only if TRX 0 is already usable. + */ + if (trx_is_usable(trx)) + trigger_ramping = true; + else + LOGP(DRSL, LOGL_DEBUG, "(bts=%d,trx=%d) ACC RAMP: ignoring state change " + "because TRX is not usable\n", acc_ramp->bts->nr, trx->nr); + } + break; + case NM_STATE_LOCKED: + case NM_STATE_SHUTDOWN: + abort_ramping = true; + break; + case NM_STATE_NULL: + default: + LOGP(DRSL, LOGL_NOTICE, "(bts=%d) ACC RAMP: unrecognized administrative state '0x%x' " + "reported for TRX 0\n", acc_ramp->bts->nr, nsd->new_state->administrative); + break; + } + } + if (nsd->old_state->operational != nsd->new_state->operational) { + switch (nsd->new_state->operational) { + case NM_OPSTATE_ENABLED: + if (nsd->old_state->administrative != nsd->new_state->administrative) { + /* + * Administrative and operational state have both changed. + * Trigger ramping only if TRX 0 will be both enabled and unlocked. + */ + if (nsd->new_state->administrative == NM_STATE_UNLOCKED) + trigger_ramping = true; + else + LOGP(DRSL, LOGL_DEBUG, "(bts=%d,trx=%d) ACC RAMP: ignoring state change " + "because TRX is transitioning into administrative state '%s'\n", + acc_ramp->bts->nr, trx->nr, + get_value_string(abis_nm_adm_state_names, nsd->new_state->administrative)); + } else { + /* + * Administrative state has not changed. + * Trigger ramping only if TRX 0 is already unlocked. + */ + if (trx->mo.nm_state.administrative == NM_STATE_UNLOCKED) + trigger_ramping = true; + else + LOGP(DRSL, LOGL_DEBUG, "(bts=%d,trx=%d) ACC RAMP: ignoring state change " + "because TRX is in administrative state '%s'\n", + acc_ramp->bts->nr, trx->nr, + get_value_string(abis_nm_adm_state_names, trx->mo.nm_state.administrative)); + } + break; + case NM_OPSTATE_DISABLED: + abort_ramping = true; + break; + case NM_OPSTATE_NULL: + default: + LOGP(DRSL, LOGL_NOTICE, "(bts=%d) ACC RAMP: unrecognized operational state '0x%x' " + "reported for TRX 0\n", acc_ramp->bts->nr, nsd->new_state->administrative); + break; + } + } + + if (trigger_ramping) + acc_ramp_trigger(acc_ramp); + else if (abort_ramping) + acc_ramp_abort(acc_ramp); return 0; } @@ -270,13 +344,9 @@ acc_ramp_abort(acc_ramp); if (acc_ramp_is_enabled(acc_ramp)) { - struct gsm_bts_trx *trx0 = gsm_bts_trx_by_nr(acc_ramp->bts, 0); - /* TRX 0 should be usable and unlocked, otherwise starting ACC ramping is pointless. */ - if (trx0 && trx_is_usable(trx0) && trx0->mo.nm_state.administrative == NM_STATE_UNLOCKED) { - /* Set all available ACCs to barred and start ramping up. */ - barr_all_accs(acc_ramp); - do_acc_ramping_step(acc_ramp); - } + /* Set all available ACCs to barred and start ramping up. */ + barr_all_accs(acc_ramp); + do_acc_ramping_step(acc_ramp); } } diff --git a/src/libbsc/bsc_init.c b/src/libbsc/bsc_init.c index c357105..429d3c7 100644 --- a/src/libbsc/bsc_init.c +++ b/src/libbsc/bsc_init.c @@ -339,8 +339,10 @@ /* * Trigger ACC ramping before sending system information to BTS. * This ensures that RACH control in system information is configured correctly. + * TRX 0 should be usable and unlocked, otherwise starting ACC ramping is pointless. */ - acc_ramp_trigger(&trx->bts->acc_ramp); + if (trx_is_usable(trx) && trx->mo.nm_state.administrative == NM_STATE_UNLOCKED) + acc_ramp_trigger(&trx->bts->acc_ramp); gsm_bts_trx_set_system_infos(trx); -- To view, visit https://gerrit.osmocom.org/7784 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newpatchset Gerrit-Change-Id: Ib3291439655598fb5ddc891a3e4cc35b0bad250f Gerrit-PatchSet: 4 Gerrit-Project: osmo-bsc Gerrit-Branch: master Gerrit-Owner: Stefan Sperling Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Pau Espin Pedrol Gerrit-Reviewer: Stefan Sperling From gerrit-no-reply at lists.osmocom.org Fri Apr 13 13:25:38 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Fri, 13 Apr 2018 13:25:38 +0000 Subject: osmo-bsc[master]: fix handling of state changes in acc ramping In-Reply-To: References: Message-ID: Patch Set 4: Code-Review+1 -- To view, visit https://gerrit.osmocom.org/7784 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Ib3291439655598fb5ddc891a3e4cc35b0bad250f Gerrit-PatchSet: 4 Gerrit-Project: osmo-bsc Gerrit-Branch: master Gerrit-Owner: Stefan Sperling Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Pau Espin Pedrol Gerrit-Reviewer: Stefan Sperling Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Fri Apr 13 14:19:07 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Fri, 13 Apr 2018 14:19:07 +0000 Subject: [PATCH] libosmo-netif[master]: jibuf: Take RTP marker into account In-Reply-To: References: Message-ID: Hello Jenkins Builder, I'd like you to reexamine a change. Please visit https://gerrit.osmocom.org/7778 to look at the new patch set (#2). jibuf: Take RTP marker into account Change-Id: Ie142acfb45650e0af775f58226fd191beaf8178e --- M src/jibuf.c M tests/jibuf/jibuf_test.c M tests/jibuf/jibuf_test.ok M tests/jibuf/jibuf_tool.c 4 files changed, 89 insertions(+), 5 deletions(-) git pull ssh://gerrit.osmocom.org:29418/libosmo-netif refs/changes/78/7778/2 diff --git a/src/jibuf.c b/src/jibuf.c index c3d6bad..dfeb12e 100644 --- a/src/jibuf.c +++ b/src/jibuf.c @@ -115,6 +115,14 @@ } +static bool msg_get_marker(struct msgb *msg) +{ + /* TODO: make it more generic as a callback so that different types of + * pkts can be used ? */ + struct rtp_hdr *rtph = osmo_rtp_get_hdr(msg); + return rtph->marker; +} + static uint16_t msg_get_sequence(struct msgb *msg) { struct rtp_hdr *rtph = osmo_rtp_get_hdr(msg); @@ -275,7 +283,11 @@ clock_gettime_timeval(CLOCK_MONOTONIC, &jb->last_enqueue_time); - if (!jb->started) { + /* If packet contains a mark -> start of talkspurt. + * A lot of packets may have been suppressed by the sender before it, + * so let's take it as a reference + */ + if (!jb->started || msg_get_marker(msg)) { jb->started = true; msg_set_as_reference(jb, msg); rel_delay = 0; @@ -310,10 +322,10 @@ timeradd(&jb->last_enqueue_time, &delay_ts, &sched_ts); LOGP(DLJIBUF, LOGL_DEBUG, "enqueuing packet seq=%"PRIu16" rel=%d delay=%d" \ - " thres=%d {%lu.%06lu -> %lu.%06lu}\n", + " thres=%d {%lu.%06lu -> %lu.%06lu} %s\n", msg_get_sequence(msg), rel_delay, delay, jb->threshold_delay, jb->last_enqueue_time.tv_sec, jb->last_enqueue_time.tv_usec, - sched_ts.tv_sec, sched_ts.tv_usec); + sched_ts.tv_sec, sched_ts.tv_usec, msg_get_marker(msg)? "M" : ""); /* Add scheduled dequeue time in msg->cb so we can check it later */ unsigned long *old_cb = talloc_memdup(jb->talloc_ctx, msg->cb, sizeof(msg->cb)); diff --git a/tests/jibuf/jibuf_test.c b/tests/jibuf/jibuf_test.c index ba21906..9965387 100644 --- a/tests/jibuf/jibuf_test.c +++ b/tests/jibuf/jibuf_test.c @@ -568,6 +568,56 @@ osmo_jibuf_delete(jb); } +static void test_rtp_marker(void) +{ + int min_delay = 60; + struct msgb *msg; + struct rtp_hdr *rtph; + + printf("===test_rtp_marker===\n"); + + clock_override_enable(true); + clock_override_set(0, 0); + rtp_init(32, 400); + jb = osmo_jibuf_alloc(NULL); + osmo_jibuf_set_dequeue_cb(jb, dequeue_cb, NULL); + osmo_jibuf_set_min_delay(jb, min_delay); + osmo_jibuf_set_max_delay(jb, 200); + + /* First rtp at t=0, should be scheduled in min_delay time */ + clock_debug("enqueue 1st packet"); + ENQUEUE_NEXT(jb); + clock_override_add(0, TIME_RTP_PKT_MS*1000); + clock_debug("enqueue 2nd packet"); + ENQUEUE_NEXT(jb); + clock_override_add(0, min_delay*1000); + clock_debug("2 packets dequeued"); + osmo_select_main(0); + + clock_override_add(0, 40*1000); + /* We are at t=120, next non-marked (consecutive seq) packet arriving at + * this time should be dropped, but since marker establishes new ref, + * it will be accepted as well an ext paket */ + clock_debug("enqueue late pkt with marker=1, will be enqueued"); + msg = rtp_next(); + rtph = osmo_rtp_get_hdr(msg); + rtph->marker = 1; + OSMO_ASSERT(osmo_jibuf_enqueue(jb, msg) == 0); + + clock_debug("enqueue late pkt after pkt with marker=1, will be enqueued"); + clock_override_add(0, TIME_RTP_PKT_MS*1000); + ENQUEUE_NEXT(jb); + + clock_debug("2 packets dequeued"); + clock_override_add(0, min_delay*1000); + osmo_select_main(0); + + /* t=120, 4 enqueued, 4 dequeued.*/ + OSMO_ASSERT(osmo_jibuf_empty(jb)); + + osmo_jibuf_delete(jb); +} + int main(int argc, char **argv) { @@ -592,6 +642,7 @@ test_buffer_threshold_change(); test_seq_wraparound(); test_timestamp_wraparound(); + test_rtp_marker(); fprintf(stdout, "OK: Test passed\n"); return EXIT_SUCCESS; diff --git a/tests/jibuf/jibuf_test.ok b/tests/jibuf/jibuf_test.ok index 5a0f121..3103781 100644 --- a/tests/jibuf/jibuf_test.ok +++ b/tests/jibuf/jibuf_test.ok @@ -348,4 +348,21 @@ sys={0.160000}, mono={0.160000}: clock_override_add sys={0.160000}, mono={0.160000}: dequeue 5th packet (ts=334) sys={0.160000}, mono={0.160000}: dequeue: seq=37 ts=334 LATEST +===test_rtp_marker=== +sys={0.000000}, mono={0.000000}: clock_override_set +sys={0.000000}, mono={0.000000}: enqueue 1st packet +sys={0.020000}, mono={0.020000}: clock_override_add +sys={0.020000}, mono={0.020000}: enqueue 2nd packet +sys={0.080000}, mono={0.080000}: clock_override_add +sys={0.080000}, mono={0.080000}: 2 packets dequeued +sys={0.080000}, mono={0.080000}: dequeue: seq=33 ts=560 INTERMEDIATE +sys={0.080000}, mono={0.080000}: dequeue: seq=34 ts=720 LATEST +sys={0.120000}, mono={0.120000}: clock_override_add +sys={0.120000}, mono={0.120000}: enqueue late pkt with marker=1, will be enqueued +sys={0.120000}, mono={0.120000}: enqueue late pkt after pkt with marker=1, will be enqueued +sys={0.140000}, mono={0.140000}: clock_override_add +sys={0.140000}, mono={0.140000}: 2 packets dequeued +sys={0.200000}, mono={0.200000}: clock_override_add +sys={0.200000}, mono={0.200000}: dequeue: seq=35 ts=880 INTERMEDIATE +sys={0.200000}, mono={0.200000}: dequeue: seq=36 ts=1040 LATEST OK: Test passed diff --git a/tests/jibuf/jibuf_tool.c b/tests/jibuf/jibuf_tool.c index d24086c..00c6f7e 100644 --- a/tests/jibuf/jibuf_tool.c +++ b/tests/jibuf/jibuf_tool.c @@ -218,7 +218,9 @@ gettimeofday(&pinfo->postqueue.ts, NULL); pinfo->postqueue.timestamp = htonl(rtph->timestamp); - if (postqueue_started) { + /* If pkt->marker -> init of talkspurt, there may be missing packets before, + * better to start calculating the jitter from here */ + if (postqueue_started && !rtph->marker) { /* In random test mode we now the sender time, so we get real * jitter results using it */ if(opt_test_rand) { @@ -269,7 +271,9 @@ gettimeofday(&pinfo->prequeue.ts, NULL); pinfo->prequeue.timestamp = htonl(rtph->timestamp); - if (prequeue_started) { + /* If pkt->marker -> init of talkspurt, there may be missing packets before, + * better to start calculating the jitter from here */ + if (prequeue_started && !rtph->marker) { /* In random test mode we now the sender time, so we get real * jitter results using it */ if(opt_test_rand) { -- To view, visit https://gerrit.osmocom.org/7778 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newpatchset Gerrit-Change-Id: Ie142acfb45650e0af775f58226fd191beaf8178e Gerrit-PatchSet: 2 Gerrit-Project: libosmo-netif Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Jenkins Builder From gerrit-no-reply at lists.osmocom.org Fri Apr 13 14:19:07 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Fri, 13 Apr 2018 14:19:07 +0000 Subject: [PATCH] libosmo-netif[master]: jibuf: re-sync clock out of sync timestamps In-Reply-To: References: Message-ID: Hello Jenkins Builder, I'd like you to reexamine a change. Please visit https://gerrit.osmocom.org/7779 to look at the new patch set (#2). jibuf: re-sync clock out of sync timestamps Change-Id: I33556b33d7549654442d9bdd7f31128792506652 --- M src/jibuf.c M tests/jibuf/jibuf_test.c M tests/jibuf/jibuf_test.ok M tests/jibuf/jibuf_tool.c 4 files changed, 152 insertions(+), 7 deletions(-) git pull ssh://gerrit.osmocom.org:29418/libosmo-netif refs/changes/79/7779/2 diff --git a/src/jibuf.c b/src/jibuf.c index dfeb12e..774ddfc 100644 --- a/src/jibuf.c +++ b/src/jibuf.c @@ -36,6 +36,7 @@ /* Sampling rate (in Hz) */ /* TODO: SAMPLE RATE can be guessed from rtp.p_type */ +#define SAMPLES_PER_PKT 160 #define SAMPLE_RATE 8000 /* TUNABLE PARAMETERS: */ @@ -149,6 +150,27 @@ uint32_t current_tx_ts = msg_get_timestamp(msg); return samples2ms((current_tx_ts - jb->ref_tx_ts)) - (current_rx_ts - jb->ref_rx_ts); +} + +static bool msg_is_in_sequence(struct osmo_jibuf *jb, struct msgb *msg) +{ + uint32_t current_tx_ts = msg_get_timestamp(msg); + uint16_t current_seq = msg_get_sequence(msg); + return (current_tx_ts - jb->ref_tx_ts) == (current_seq - jb->ref_tx_seq)*SAMPLES_PER_PKT; +} + +/* If packet contains a mark -> start of talkspurt. + * A lot of packets may have been suppressed by the sender before it, + * so let's take it as a reference + * If packet timestamp is not aligned with sequence + * number, then we are most probaly starting a talkspurt */ +static bool msg_is_syncpoint(struct osmo_jibuf *jb, struct msgb* msg) +{ + bool res = msg_get_marker(msg) || !msg_is_in_sequence(jb, msg); + if(res) + LOGP(DLMIB, LOGL_DEBUG, "syncpoint: %"PRIu16": marker=%d in_seq=%d\n", + msg_get_sequence(msg), msg_get_marker(msg), msg_is_in_sequence(jb, msg)); + return res; } static void msg_set_as_reference(struct osmo_jibuf *jb, struct msgb *msg) @@ -283,11 +305,8 @@ clock_gettime_timeval(CLOCK_MONOTONIC, &jb->last_enqueue_time); - /* If packet contains a mark -> start of talkspurt. - * A lot of packets may have been suppressed by the sender before it, - * so let's take it as a reference - */ - if (!jb->started || msg_get_marker(msg)) { + /* Check if it's time to sync, ie. start of talkspurt */ + if (!jb->started || msg_is_syncpoint(jb, msg)) { jb->started = true; msg_set_as_reference(jb, msg); rel_delay = 0; diff --git a/tests/jibuf/jibuf_test.c b/tests/jibuf/jibuf_test.c index 9965387..cbfe0af 100644 --- a/tests/jibuf/jibuf_test.c +++ b/tests/jibuf/jibuf_test.c @@ -618,6 +618,72 @@ osmo_jibuf_delete(jb); } +void test_rtp_out_of_sync(unsigned int time_inc_ms, uint16_t seq_nosync_inc, uint32_t ts_nosync_inc, bool expect_drop) +{ + int min_delay = 60; + struct msgb *msg; + int rc; + + printf("===test_rtp_out_of_sync(%u, %"PRIu16", %"PRIu32", %d)===\n", + time_inc_ms, seq_nosync_inc, ts_nosync_inc, expect_drop); + + clock_override_enable(true); + clock_override_set(0, 0); + rtp_init(32, 400); + jb = osmo_jibuf_alloc(NULL); + osmo_jibuf_set_dequeue_cb(jb, dequeue_cb, NULL); + osmo_jibuf_set_min_delay(jb, min_delay); + osmo_jibuf_set_max_delay(jb, 200); + + /* First rtp at t=0, should be scheduled in min_delay time */ + clock_debug("enqueue 1st packet (seq=33, ts=560)"); + ENQUEUE_NEXT(jb); + clock_override_add(0, TIME_RTP_PKT_MS*1000); + clock_debug("enqueue 2nd packet (seq=34, ts=720)"); + ENQUEUE_NEXT(jb); + + clock_override_add(0, time_inc_ms*1000); + clock_debug("2 packets dequeued"); + osmo_select_main(0); + + /* We are at t=20+time_inc_ms, next pkt would normally be dropped since it is + * pretty late, but since seq and timestamp are out of sync, which + * means the sender had some clock issues, the jibuf is going to take + * this new tuple as reference and accept it. + */ + clock_debug("enqueue late pkt with possible sync change"); + rtp_init(rtp_next_seq + seq_nosync_inc, rtp_next_ts + ts_nosync_inc); + msg = rtp_new(rtp_next_seq, rtp_next_ts); + rc = osmo_jibuf_enqueue(jb, msg); + if (expect_drop) { + OSMO_ASSERT(rc < 0); + msgb_free(msg); + } else { + OSMO_ASSERT(rc == 0); + } + + clock_debug("enqueue late pkt after possible resync"); + clock_override_add(0, TIME_RTP_PKT_MS*1000); + msg = rtp_next(); + rc = osmo_jibuf_enqueue(jb, msg); + if (expect_drop) { + OSMO_ASSERT(rc < 0); + msgb_free(msg); + } else { + OSMO_ASSERT(rc == 0); + } + + if (!expect_drop) { + clock_debug("2 packets dequeued"); + clock_override_add(0, min_delay*1000); + osmo_select_main(0); + } + + OSMO_ASSERT(osmo_jibuf_empty(jb)); + + osmo_jibuf_delete(jb); +} + int main(int argc, char **argv) { @@ -643,6 +709,9 @@ test_seq_wraparound(); test_timestamp_wraparound(); test_rtp_marker(); + test_rtp_out_of_sync(80*TIME_RTP_PKT_MS, 5, 5*SAMPLES_PER_PKT, true); + test_rtp_out_of_sync(80*TIME_RTP_PKT_MS, 6, 5*SAMPLES_PER_PKT, false); + test_rtp_out_of_sync(80*TIME_RTP_PKT_MS, 5, 5*SAMPLES_PER_PKT + 3, false); fprintf(stdout, "OK: Test passed\n"); return EXIT_SUCCESS; diff --git a/tests/jibuf/jibuf_test.ok b/tests/jibuf/jibuf_test.ok index 3103781..a152d24 100644 --- a/tests/jibuf/jibuf_test.ok +++ b/tests/jibuf/jibuf_test.ok @@ -365,4 +365,48 @@ sys={0.200000}, mono={0.200000}: clock_override_add sys={0.200000}, mono={0.200000}: dequeue: seq=35 ts=880 INTERMEDIATE sys={0.200000}, mono={0.200000}: dequeue: seq=36 ts=1040 LATEST +===test_rtp_out_of_sync(1600, 5, 800, 1)=== +sys={0.000000}, mono={0.000000}: clock_override_set +sys={0.000000}, mono={0.000000}: enqueue 1st packet (seq=33, ts=560) +sys={0.020000}, mono={0.020000}: clock_override_add +sys={0.020000}, mono={0.020000}: enqueue 2nd packet (seq=34, ts=720) +sys={1.620000}, mono={1.620000}: clock_override_add +sys={1.620000}, mono={1.620000}: 2 packets dequeued +sys={1.620000}, mono={1.620000}: dequeue: seq=33 ts=560 INTERMEDIATE +sys={1.620000}, mono={1.620000}: dequeue: seq=34 ts=720 LATEST +sys={1.620000}, mono={1.620000}: enqueue late pkt with possible sync change +sys={1.620000}, mono={1.620000}: enqueue late pkt after possible resync +sys={1.640000}, mono={1.640000}: clock_override_add +===test_rtp_out_of_sync(1600, 6, 800, 0)=== +sys={0.000000}, mono={0.000000}: clock_override_set +sys={0.000000}, mono={0.000000}: enqueue 1st packet (seq=33, ts=560) +sys={0.020000}, mono={0.020000}: clock_override_add +sys={0.020000}, mono={0.020000}: enqueue 2nd packet (seq=34, ts=720) +sys={1.620000}, mono={1.620000}: clock_override_add +sys={1.620000}, mono={1.620000}: 2 packets dequeued +sys={1.620000}, mono={1.620000}: dequeue: seq=33 ts=560 INTERMEDIATE +sys={1.620000}, mono={1.620000}: dequeue: seq=34 ts=720 LATEST +sys={1.620000}, mono={1.620000}: enqueue late pkt with possible sync change +sys={1.620000}, mono={1.620000}: enqueue late pkt after possible resync +sys={1.640000}, mono={1.640000}: clock_override_add +sys={1.640000}, mono={1.640000}: 2 packets dequeued +sys={1.700000}, mono={1.700000}: clock_override_add +sys={1.700000}, mono={1.700000}: dequeue: seq=40 ts=1520 INTERMEDIATE +sys={1.700000}, mono={1.700000}: dequeue: seq=41 ts=1680 LATEST +===test_rtp_out_of_sync(1600, 5, 803, 0)=== +sys={0.000000}, mono={0.000000}: clock_override_set +sys={0.000000}, mono={0.000000}: enqueue 1st packet (seq=33, ts=560) +sys={0.020000}, mono={0.020000}: clock_override_add +sys={0.020000}, mono={0.020000}: enqueue 2nd packet (seq=34, ts=720) +sys={1.620000}, mono={1.620000}: clock_override_add +sys={1.620000}, mono={1.620000}: 2 packets dequeued +sys={1.620000}, mono={1.620000}: dequeue: seq=33 ts=560 INTERMEDIATE +sys={1.620000}, mono={1.620000}: dequeue: seq=34 ts=720 LATEST +sys={1.620000}, mono={1.620000}: enqueue late pkt with possible sync change +sys={1.620000}, mono={1.620000}: enqueue late pkt after possible resync +sys={1.640000}, mono={1.640000}: clock_override_add +sys={1.640000}, mono={1.640000}: 2 packets dequeued +sys={1.700000}, mono={1.700000}: clock_override_add +sys={1.700000}, mono={1.700000}: dequeue: seq=39 ts=1523 INTERMEDIATE +sys={1.700000}, mono={1.700000}: dequeue: seq=40 ts=1683 LATEST OK: Test passed diff --git a/tests/jibuf/jibuf_tool.c b/tests/jibuf/jibuf_tool.c index 00c6f7e..830c8cf 100644 --- a/tests/jibuf/jibuf_tool.c +++ b/tests/jibuf/jibuf_tool.c @@ -39,6 +39,7 @@ int transit; double jitter; uint32_t timestamp; + uint16_t seq; }; struct rtp_pkt_info { @@ -131,6 +132,16 @@ return ts->tv_sec * 1000 + ts->tv_usec / 1000; } +bool pkt_is_syncpoint(struct msgb* msg, uint16_t prev_seq, uint32_t prev_timestamp) +{ + struct rtp_hdr *rtph = osmo_rtp_get_hdr(msg); + + uint16_t current_seq = ntohs(rtph->sequence); + uint32_t current_tx_ts = ntohl(rtph->timestamp); + bool insync = (current_tx_ts - prev_timestamp) == (current_seq - prev_seq)*SAMPLES_PER_PKT; + return !insync || rtph->marker; +} + int32_t calc_rel_transmit_time(uint32_t tx_0, uint32_t tx_f, uint32_t rx_0, uint32_t rx_f, bool tx_is_samples, bool pre) { int32_t rxdiff, txdiff, res; @@ -220,7 +231,7 @@ /* If pkt->marker -> init of talkspurt, there may be missing packets before, * better to start calculating the jitter from here */ - if (postqueue_started && !rtph->marker) { + if (postqueue_started && !pkt_is_syncpoint(msg, postqueue_prev.seq, postqueue_prev.timestamp)) { /* In random test mode we now the sender time, so we get real * jitter results using it */ if(opt_test_rand) { @@ -248,6 +259,7 @@ } postqueue_prev = pinfo->postqueue; + postqueue_prev.seq = htons(rtph->sequence); pkt_add_result(msg, false); @@ -273,7 +285,7 @@ /* If pkt->marker -> init of talkspurt, there may be missing packets before, * better to start calculating the jitter from here */ - if (prequeue_started && !rtph->marker) { + if (prequeue_started && !pkt_is_syncpoint(msg, prequeue_prev.seq, prequeue_prev.timestamp)) { /* In random test mode we now the sender time, so we get real * jitter results using it */ if(opt_test_rand) { @@ -301,6 +313,7 @@ } prequeue_prev = pinfo->prequeue; + prequeue_prev.seq = htons(rtph->sequence); int n = osmo_jibuf_enqueue(jb, msg); -- To view, visit https://gerrit.osmocom.org/7779 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newpatchset Gerrit-Change-Id: I33556b33d7549654442d9bdd7f31128792506652 Gerrit-PatchSet: 2 Gerrit-Project: libosmo-netif Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Jenkins Builder From gerrit-no-reply at lists.osmocom.org Fri Apr 13 14:19:07 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Fri, 13 Apr 2018 14:19:07 +0000 Subject: [PATCH] libosmo-netif[master]: jibuf: Estimate src clock skew In-Reply-To: References: Message-ID: Hello Jenkins Builder, I'd like you to reexamine a change. Please visit https://gerrit.osmocom.org/7781 to look at the new patch set (#2). jibuf: Estimate src clock skew Change-Id: Ifae633d53107417a8e2f9b0f200d2711db72d199 --- M include/osmocom/netif/jibuf.h M src/jibuf.c M tests/jibuf/jibuf_test.c M tests/jibuf/jibuf_test.ok M tests/jibuf/jibuf_tool.c M tests/jibuf/jitter.plt 6 files changed, 1,005 insertions(+), 13 deletions(-) git pull ssh://gerrit.osmocom.org:29418/libosmo-netif refs/changes/81/7781/2 diff --git a/include/osmocom/netif/jibuf.h b/include/osmocom/netif/jibuf.h index 6273983..dff8309 100644 --- a/include/osmocom/netif/jibuf.h +++ b/include/osmocom/netif/jibuf.h @@ -40,6 +40,9 @@ struct timeval last_enqueue_time; struct timeval next_dequeue_time; + bool skew_enabled; + int32_t skew_us; /* src clock skew, in usec */ + struct { uint32_t total_enqueued; uint64_t total_dropped; @@ -58,6 +61,8 @@ void osmo_jibuf_set_min_delay(struct osmo_jibuf *jb, uint32_t min_delay); void osmo_jibuf_set_max_delay(struct osmo_jibuf *jb, uint32_t max_delay); +void osmo_jibuf_enable_skew_compensation(struct osmo_jibuf *jb, bool enable); + void osmo_jibuf_set_dequeue_cb(struct osmo_jibuf *jb, osmo_jibuf_dequeue_cb dequeue_cb, void* cb_data); /*! @} */ diff --git a/src/jibuf.c b/src/jibuf.c index 774ddfc..45019ae 100644 --- a/src/jibuf.c +++ b/src/jibuf.c @@ -60,6 +60,9 @@ #define JIBUF_BUFFER_INC_STEP 20 #define JIBUF_BUFFER_DEC_STEP 5 +/* weight of each new packet in calculation of clock skew */ +#define JIBUF_SKEW_WEIGHT ((double)1/32) + struct osmo_jibuf_msgb_cb { struct timeval ts; unsigned long *old_cb; @@ -178,6 +181,7 @@ jb->ref_rx_ts = timeval2ms(&jb->last_enqueue_time); jb->ref_tx_ts = msg_get_timestamp(msg); jb->ref_tx_seq = msg_get_sequence(msg); + jb->skew_us = 0; LOGP(DLJIBUF, LOGL_DEBUG, "New reference (seq=%"PRIu16" rx=%"PRIu32 \ " tx=%"PRIu32")\n", jb->ref_tx_seq, jb->ref_rx_ts, jb->ref_tx_ts); @@ -216,6 +220,14 @@ /* XXX: maybe try to tune the threshold based on the calculated output jitter? */ /* XXX: try to find holes in the list and create fake pkts to improve the jitter when packets do not arrive on time */ +} + +static void recalc_clock_skew(struct osmo_jibuf *jb, int32_t rel_delay) +{ + if(!jb->skew_enabled) + return; + + jb->skew_us = (int32_t) (rel_delay * 1000 * JIBUF_SKEW_WEIGHT + jb->skew_us * (1.0 - JIBUF_SKEW_WEIGHT)); } static void recalc_threshold_delay(struct osmo_jibuf *jb) @@ -312,6 +324,7 @@ rel_delay = 0; } else { rel_delay = calc_pkt_rel_delay(jb, msg); + recalc_clock_skew(jb, rel_delay); } /* Avoid time skew with sender (or drop-everything state), @@ -319,7 +332,7 @@ //if ((int)(msg_get_sequence(msg) - jb->ref_tx_seq) > JIBUF_REFERENCE_TS_FREQ) // msg_set_as_reference(jb, msg); - delay = jb->threshold_delay + rel_delay; + delay = jb->threshold_delay + rel_delay - jb->skew_us/1000; /* packet too late, let's drop it and incr buffer size if encouraged */ if (delay < 0) { @@ -341,8 +354,8 @@ timeradd(&jb->last_enqueue_time, &delay_ts, &sched_ts); LOGP(DLJIBUF, LOGL_DEBUG, "enqueuing packet seq=%"PRIu16" rel=%d delay=%d" \ - " thres=%d {%lu.%06lu -> %lu.%06lu} %s\n", - msg_get_sequence(msg), rel_delay, delay, jb->threshold_delay, + " skew=%d thres=%d {%lu.%06lu -> %lu.%06lu} %s\n", + msg_get_sequence(msg), rel_delay, delay, jb->skew_us, jb->threshold_delay, jb->last_enqueue_time.tv_sec, jb->last_enqueue_time.tv_usec, sched_ts.tv_sec, sched_ts.tv_usec, msg_get_marker(msg)? "M" : ""); @@ -397,6 +410,18 @@ jb->threshold_delay = OSMO_MIN(jb->max_delay, jb->threshold_delay); } +/*! \brief Toggle use of skew detection and compensation mechanism + * \param[in] jb jitter buffer instance + * \param[in] enable Whether to enable or not (default) the skew estimation and compensation mechanism + * + * When this function is called, the estimated skew is reset. + */ +void osmo_jibuf_enable_skew_compensation(struct osmo_jibuf *jb, bool enable) +{ + jb->skew_enabled = enable; + jb->skew_us = 0; +} + /*! \brief Set dequeue callback for the jitter buffer * \param[in] jb jitter buffer instance * \param[in] dequeue_cb function pointer to call back when the dequeue timer for a given packet expires diff --git a/tests/jibuf/jibuf_test.c b/tests/jibuf/jibuf_test.c index cbfe0af..8771eeb 100644 --- a/tests/jibuf/jibuf_test.c +++ b/tests/jibuf/jibuf_test.c @@ -127,13 +127,14 @@ clock_debug("clock_override_set"); } -static void clock_override_add(long sec, long usec) +static void clock_override_add_debug(long sec, long usec, bool dbg) { osmo_gettimeofday_override_add(sec, usec); osmo_clock_override_add(CLOCK_MONOTONIC, sec, usec*1000); - clock_debug("clock_override_add"); + if (dbg) + clock_debug("clock_override_add"); } - +#define clock_override_add(sec, usec) clock_override_add_debug(sec, usec, true) static void dequeue_cb(struct msgb *msg, void *data) { @@ -684,6 +685,48 @@ osmo_jibuf_delete(jb); } + +void test_skew(unsigned int skew_inc_us, bool skew_compensation) { + int min_delay = 40; + unsigned int dropped = 0; + struct msgb *msg; + int i; + char buf[250]; + + printf("===test_skew(%u, %d)===\n", skew_inc_us, skew_compensation); + + clock_override_enable(true); + clock_override_set(0, 0); + rtp_init(32, 400); + jb = osmo_jibuf_alloc(NULL); + osmo_jibuf_set_dequeue_cb(jb, dequeue_cb, NULL); + osmo_jibuf_set_min_delay(jb, min_delay); + /*set buffer static, otherwise will grow with drops and enqueue some more packets: */ + osmo_jibuf_set_max_delay(jb, min_delay); + osmo_jibuf_enable_skew_compensation(jb, skew_compensation); + + /* If no skew compensation is used, jitterbuffer should start dropping + * packets (all too late) after around min_delay*1000/skew_inc_us packets. */ + for (i = 0; iskew_us); + } else { + OSMO_ASSERT(dropped); + OSMO_ASSERT(!jb->skew_us); + } +} + int main(int argc, char **argv) { @@ -712,6 +755,8 @@ test_rtp_out_of_sync(80*TIME_RTP_PKT_MS, 5, 5*SAMPLES_PER_PKT, true); test_rtp_out_of_sync(80*TIME_RTP_PKT_MS, 6, 5*SAMPLES_PER_PKT, false); test_rtp_out_of_sync(80*TIME_RTP_PKT_MS, 5, 5*SAMPLES_PER_PKT + 3, false); + test_skew(100, false); + test_skew(100, true); fprintf(stdout, "OK: Test passed\n"); return EXIT_SUCCESS; diff --git a/tests/jibuf/jibuf_test.ok b/tests/jibuf/jibuf_test.ok index a152d24..e495435 100644 --- a/tests/jibuf/jibuf_test.ok +++ b/tests/jibuf/jibuf_test.ok @@ -409,4 +409,908 @@ sys={1.700000}, mono={1.700000}: clock_override_add sys={1.700000}, mono={1.700000}: dequeue: seq=39 ts=1523 INTERMEDIATE sys={1.700000}, mono={1.700000}: dequeue: seq=40 ts=1683 LATEST +===test_skew(100, 0)=== +sys={0.000000}, mono={0.000000}: clock_override_set +sys={0.000000}, mono={0.000000}: enqueue packet 0 (accum_skew_us = 0) +sys={0.020100}, mono={0.020100}: enqueue packet 1 (accum_skew_us = 100) +sys={0.040200}, mono={0.040200}: enqueue packet 2 (accum_skew_us = 200) +sys={0.060300}, mono={0.060300}: enqueue packet 3 (accum_skew_us = 300) +sys={0.080400}, mono={0.080400}: enqueue packet 4 (accum_skew_us = 400) +sys={0.100500}, mono={0.100500}: enqueue packet 5 (accum_skew_us = 500) +sys={0.120600}, mono={0.120600}: enqueue packet 6 (accum_skew_us = 600) +sys={0.140700}, mono={0.140700}: enqueue packet 7 (accum_skew_us = 700) +sys={0.160800}, mono={0.160800}: enqueue packet 8 (accum_skew_us = 800) +sys={0.180900}, mono={0.180900}: enqueue packet 9 (accum_skew_us = 900) +sys={0.201000}, mono={0.201000}: enqueue packet 10 (accum_skew_us = 1000) +sys={0.221100}, mono={0.221100}: enqueue packet 11 (accum_skew_us = 1100) +sys={0.241200}, mono={0.241200}: enqueue packet 12 (accum_skew_us = 1200) +sys={0.261300}, mono={0.261300}: enqueue packet 13 (accum_skew_us = 1300) +sys={0.281400}, mono={0.281400}: enqueue packet 14 (accum_skew_us = 1400) +sys={0.301500}, mono={0.301500}: enqueue packet 15 (accum_skew_us = 1500) +sys={0.321600}, mono={0.321600}: enqueue packet 16 (accum_skew_us = 1600) +sys={0.341700}, mono={0.341700}: enqueue packet 17 (accum_skew_us = 1700) +sys={0.361800}, mono={0.361800}: enqueue packet 18 (accum_skew_us = 1800) +sys={0.381900}, mono={0.381900}: enqueue packet 19 (accum_skew_us = 1900) +sys={0.402000}, mono={0.402000}: enqueue packet 20 (accum_skew_us = 2000) +sys={0.422100}, mono={0.422100}: enqueue packet 21 (accum_skew_us = 2100) +sys={0.442200}, mono={0.442200}: enqueue packet 22 (accum_skew_us = 2200) +sys={0.462300}, mono={0.462300}: enqueue packet 23 (accum_skew_us = 2300) +sys={0.482400}, mono={0.482400}: enqueue packet 24 (accum_skew_us = 2400) +sys={0.502500}, mono={0.502500}: enqueue packet 25 (accum_skew_us = 2500) +sys={0.522600}, mono={0.522600}: enqueue packet 26 (accum_skew_us = 2600) +sys={0.542700}, mono={0.542700}: enqueue packet 27 (accum_skew_us = 2700) +sys={0.562800}, mono={0.562800}: enqueue packet 28 (accum_skew_us = 2800) +sys={0.582900}, mono={0.582900}: enqueue packet 29 (accum_skew_us = 2900) +sys={0.603000}, mono={0.603000}: enqueue packet 30 (accum_skew_us = 3000) +sys={0.623100}, mono={0.623100}: enqueue packet 31 (accum_skew_us = 3100) +sys={0.643200}, mono={0.643200}: enqueue packet 32 (accum_skew_us = 3200) +sys={0.663300}, mono={0.663300}: enqueue packet 33 (accum_skew_us = 3300) +sys={0.683400}, mono={0.683400}: enqueue packet 34 (accum_skew_us = 3400) +sys={0.703500}, mono={0.703500}: enqueue packet 35 (accum_skew_us = 3500) +sys={0.723600}, mono={0.723600}: enqueue packet 36 (accum_skew_us = 3600) +sys={0.743700}, mono={0.743700}: enqueue packet 37 (accum_skew_us = 3700) +sys={0.763800}, mono={0.763800}: enqueue packet 38 (accum_skew_us = 3800) +sys={0.783900}, mono={0.783900}: enqueue packet 39 (accum_skew_us = 3900) +sys={0.804000}, mono={0.804000}: enqueue packet 40 (accum_skew_us = 4000) +sys={0.824100}, mono={0.824100}: enqueue packet 41 (accum_skew_us = 4100) +sys={0.844200}, mono={0.844200}: enqueue packet 42 (accum_skew_us = 4200) +sys={0.864300}, mono={0.864300}: enqueue packet 43 (accum_skew_us = 4300) +sys={0.884400}, mono={0.884400}: enqueue packet 44 (accum_skew_us = 4400) +sys={0.904500}, mono={0.904500}: enqueue packet 45 (accum_skew_us = 4500) +sys={0.924600}, mono={0.924600}: enqueue packet 46 (accum_skew_us = 4600) +sys={0.944700}, mono={0.944700}: enqueue packet 47 (accum_skew_us = 4700) +sys={0.964800}, mono={0.964800}: enqueue packet 48 (accum_skew_us = 4800) +sys={0.984900}, mono={0.984900}: enqueue packet 49 (accum_skew_us = 4900) +sys={1.005000}, mono={1.005000}: enqueue packet 50 (accum_skew_us = 5000) +sys={1.025100}, mono={1.025100}: enqueue packet 51 (accum_skew_us = 5100) +sys={1.045200}, mono={1.045200}: enqueue packet 52 (accum_skew_us = 5200) +sys={1.065300}, mono={1.065300}: enqueue packet 53 (accum_skew_us = 5300) +sys={1.085400}, mono={1.085400}: enqueue packet 54 (accum_skew_us = 5400) +sys={1.105500}, mono={1.105500}: enqueue packet 55 (accum_skew_us = 5500) +sys={1.125600}, mono={1.125600}: enqueue packet 56 (accum_skew_us = 5600) +sys={1.145700}, mono={1.145700}: enqueue packet 57 (accum_skew_us = 5700) +sys={1.165800}, mono={1.165800}: enqueue packet 58 (accum_skew_us = 5800) +sys={1.185900}, mono={1.185900}: enqueue packet 59 (accum_skew_us = 5900) +sys={1.206000}, mono={1.206000}: enqueue packet 60 (accum_skew_us = 6000) +sys={1.226100}, mono={1.226100}: enqueue packet 61 (accum_skew_us = 6100) +sys={1.246200}, mono={1.246200}: enqueue packet 62 (accum_skew_us = 6200) +sys={1.266300}, mono={1.266300}: enqueue packet 63 (accum_skew_us = 6300) +sys={1.286400}, mono={1.286400}: enqueue packet 64 (accum_skew_us = 6400) +sys={1.306500}, mono={1.306500}: enqueue packet 65 (accum_skew_us = 6500) +sys={1.326600}, mono={1.326600}: enqueue packet 66 (accum_skew_us = 6600) +sys={1.346700}, mono={1.346700}: enqueue packet 67 (accum_skew_us = 6700) +sys={1.366800}, mono={1.366800}: enqueue packet 68 (accum_skew_us = 6800) +sys={1.386900}, mono={1.386900}: enqueue packet 69 (accum_skew_us = 6900) +sys={1.407000}, mono={1.407000}: enqueue packet 70 (accum_skew_us = 7000) +sys={1.427100}, mono={1.427100}: enqueue packet 71 (accum_skew_us = 7100) +sys={1.447200}, mono={1.447200}: enqueue packet 72 (accum_skew_us = 7200) +sys={1.467300}, mono={1.467300}: enqueue packet 73 (accum_skew_us = 7300) +sys={1.487400}, mono={1.487400}: enqueue packet 74 (accum_skew_us = 7400) +sys={1.507500}, mono={1.507500}: enqueue packet 75 (accum_skew_us = 7500) +sys={1.527600}, mono={1.527600}: enqueue packet 76 (accum_skew_us = 7600) +sys={1.547700}, mono={1.547700}: enqueue packet 77 (accum_skew_us = 7700) +sys={1.567800}, mono={1.567800}: enqueue packet 78 (accum_skew_us = 7800) +sys={1.587900}, mono={1.587900}: enqueue packet 79 (accum_skew_us = 7900) +sys={1.608000}, mono={1.608000}: enqueue packet 80 (accum_skew_us = 8000) +sys={1.628100}, mono={1.628100}: enqueue packet 81 (accum_skew_us = 8100) +sys={1.648200}, mono={1.648200}: enqueue packet 82 (accum_skew_us = 8200) +sys={1.668300}, mono={1.668300}: enqueue packet 83 (accum_skew_us = 8300) +sys={1.688400}, mono={1.688400}: enqueue packet 84 (accum_skew_us = 8400) +sys={1.708500}, mono={1.708500}: enqueue packet 85 (accum_skew_us = 8500) +sys={1.728600}, mono={1.728600}: enqueue packet 86 (accum_skew_us = 8600) +sys={1.748700}, mono={1.748700}: enqueue packet 87 (accum_skew_us = 8700) +sys={1.768800}, mono={1.768800}: enqueue packet 88 (accum_skew_us = 8800) +sys={1.788900}, mono={1.788900}: enqueue packet 89 (accum_skew_us = 8900) +sys={1.809000}, mono={1.809000}: enqueue packet 90 (accum_skew_us = 9000) +sys={1.829100}, mono={1.829100}: enqueue packet 91 (accum_skew_us = 9100) +sys={1.849200}, mono={1.849200}: enqueue packet 92 (accum_skew_us = 9200) +sys={1.869300}, mono={1.869300}: enqueue packet 93 (accum_skew_us = 9300) +sys={1.889400}, mono={1.889400}: enqueue packet 94 (accum_skew_us = 9400) +sys={1.909500}, mono={1.909500}: enqueue packet 95 (accum_skew_us = 9500) +sys={1.929600}, mono={1.929600}: enqueue packet 96 (accum_skew_us = 9600) +sys={1.949700}, mono={1.949700}: enqueue packet 97 (accum_skew_us = 9700) +sys={1.969800}, mono={1.969800}: enqueue packet 98 (accum_skew_us = 9800) +sys={1.989900}, mono={1.989900}: enqueue packet 99 (accum_skew_us = 9900) +sys={2.010000}, mono={2.010000}: enqueue packet 100 (accum_skew_us = 10000) +sys={2.030100}, mono={2.030100}: enqueue packet 101 (accum_skew_us = 10100) +sys={2.050200}, mono={2.050200}: enqueue packet 102 (accum_skew_us = 10200) +sys={2.070300}, mono={2.070300}: enqueue packet 103 (accum_skew_us = 10300) +sys={2.090400}, mono={2.090400}: enqueue packet 104 (accum_skew_us = 10400) +sys={2.110500}, mono={2.110500}: enqueue packet 105 (accum_skew_us = 10500) +sys={2.130600}, mono={2.130600}: enqueue packet 106 (accum_skew_us = 10600) +sys={2.150700}, mono={2.150700}: enqueue packet 107 (accum_skew_us = 10700) +sys={2.170800}, mono={2.170800}: enqueue packet 108 (accum_skew_us = 10800) +sys={2.190900}, mono={2.190900}: enqueue packet 109 (accum_skew_us = 10900) +sys={2.211000}, mono={2.211000}: enqueue packet 110 (accum_skew_us = 11000) +sys={2.231100}, mono={2.231100}: enqueue packet 111 (accum_skew_us = 11100) +sys={2.251200}, mono={2.251200}: enqueue packet 112 (accum_skew_us = 11200) +sys={2.271300}, mono={2.271300}: enqueue packet 113 (accum_skew_us = 11300) +sys={2.291400}, mono={2.291400}: enqueue packet 114 (accum_skew_us = 11400) +sys={2.311500}, mono={2.311500}: enqueue packet 115 (accum_skew_us = 11500) +sys={2.331600}, mono={2.331600}: enqueue packet 116 (accum_skew_us = 11600) +sys={2.351700}, mono={2.351700}: enqueue packet 117 (accum_skew_us = 11700) +sys={2.371800}, mono={2.371800}: enqueue packet 118 (accum_skew_us = 11800) +sys={2.391900}, mono={2.391900}: enqueue packet 119 (accum_skew_us = 11900) +sys={2.412000}, mono={2.412000}: enqueue packet 120 (accum_skew_us = 12000) +sys={2.432100}, mono={2.432100}: enqueue packet 121 (accum_skew_us = 12100) +sys={2.452200}, mono={2.452200}: enqueue packet 122 (accum_skew_us = 12200) +sys={2.472300}, mono={2.472300}: enqueue packet 123 (accum_skew_us = 12300) +sys={2.492400}, mono={2.492400}: enqueue packet 124 (accum_skew_us = 12400) +sys={2.512500}, mono={2.512500}: enqueue packet 125 (accum_skew_us = 12500) +sys={2.532600}, mono={2.532600}: enqueue packet 126 (accum_skew_us = 12600) +sys={2.552700}, mono={2.552700}: enqueue packet 127 (accum_skew_us = 12700) +sys={2.572800}, mono={2.572800}: enqueue packet 128 (accum_skew_us = 12800) +sys={2.592900}, mono={2.592900}: enqueue packet 129 (accum_skew_us = 12900) +sys={2.613000}, mono={2.613000}: enqueue packet 130 (accum_skew_us = 13000) +sys={2.633100}, mono={2.633100}: enqueue packet 131 (accum_skew_us = 13100) +sys={2.653200}, mono={2.653200}: enqueue packet 132 (accum_skew_us = 13200) +sys={2.673300}, mono={2.673300}: enqueue packet 133 (accum_skew_us = 13300) +sys={2.693400}, mono={2.693400}: enqueue packet 134 (accum_skew_us = 13400) +sys={2.713500}, mono={2.713500}: enqueue packet 135 (accum_skew_us = 13500) +sys={2.733600}, mono={2.733600}: enqueue packet 136 (accum_skew_us = 13600) +sys={2.753700}, mono={2.753700}: enqueue packet 137 (accum_skew_us = 13700) +sys={2.773800}, mono={2.773800}: enqueue packet 138 (accum_skew_us = 13800) +sys={2.793900}, mono={2.793900}: enqueue packet 139 (accum_skew_us = 13900) +sys={2.814000}, mono={2.814000}: enqueue packet 140 (accum_skew_us = 14000) +sys={2.834100}, mono={2.834100}: enqueue packet 141 (accum_skew_us = 14100) +sys={2.854200}, mono={2.854200}: enqueue packet 142 (accum_skew_us = 14200) +sys={2.874300}, mono={2.874300}: enqueue packet 143 (accum_skew_us = 14300) +sys={2.894400}, mono={2.894400}: enqueue packet 144 (accum_skew_us = 14400) +sys={2.914500}, mono={2.914500}: enqueue packet 145 (accum_skew_us = 14500) +sys={2.934600}, mono={2.934600}: enqueue packet 146 (accum_skew_us = 14600) +sys={2.954700}, mono={2.954700}: enqueue packet 147 (accum_skew_us = 14700) +sys={2.974800}, mono={2.974800}: enqueue packet 148 (accum_skew_us = 14800) +sys={2.994900}, mono={2.994900}: enqueue packet 149 (accum_skew_us = 14900) +sys={3.015000}, mono={3.015000}: enqueue packet 150 (accum_skew_us = 15000) +sys={3.035100}, mono={3.035100}: enqueue packet 151 (accum_skew_us = 15100) +sys={3.055200}, mono={3.055200}: enqueue packet 152 (accum_skew_us = 15200) +sys={3.075300}, mono={3.075300}: enqueue packet 153 (accum_skew_us = 15300) +sys={3.095400}, mono={3.095400}: enqueue packet 154 (accum_skew_us = 15400) +sys={3.115500}, mono={3.115500}: enqueue packet 155 (accum_skew_us = 15500) +sys={3.135600}, mono={3.135600}: enqueue packet 156 (accum_skew_us = 15600) +sys={3.155700}, mono={3.155700}: enqueue packet 157 (accum_skew_us = 15700) +sys={3.175800}, mono={3.175800}: enqueue packet 158 (accum_skew_us = 15800) +sys={3.195900}, mono={3.195900}: enqueue packet 159 (accum_skew_us = 15900) +sys={3.216000}, mono={3.216000}: enqueue packet 160 (accum_skew_us = 16000) +sys={3.236100}, mono={3.236100}: enqueue packet 161 (accum_skew_us = 16100) +sys={3.256200}, mono={3.256200}: enqueue packet 162 (accum_skew_us = 16200) +sys={3.276300}, mono={3.276300}: enqueue packet 163 (accum_skew_us = 16300) +sys={3.296400}, mono={3.296400}: enqueue packet 164 (accum_skew_us = 16400) +sys={3.316500}, mono={3.316500}: enqueue packet 165 (accum_skew_us = 16500) +sys={3.336600}, mono={3.336600}: enqueue packet 166 (accum_skew_us = 16600) +sys={3.356700}, mono={3.356700}: enqueue packet 167 (accum_skew_us = 16700) +sys={3.376800}, mono={3.376800}: enqueue packet 168 (accum_skew_us = 16800) +sys={3.396900}, mono={3.396900}: enqueue packet 169 (accum_skew_us = 16900) +sys={3.417000}, mono={3.417000}: enqueue packet 170 (accum_skew_us = 17000) +sys={3.437100}, mono={3.437100}: enqueue packet 171 (accum_skew_us = 17100) +sys={3.457200}, mono={3.457200}: enqueue packet 172 (accum_skew_us = 17200) +sys={3.477300}, mono={3.477300}: enqueue packet 173 (accum_skew_us = 17300) +sys={3.497400}, mono={3.497400}: enqueue packet 174 (accum_skew_us = 17400) +sys={3.517500}, mono={3.517500}: enqueue packet 175 (accum_skew_us = 17500) +sys={3.537600}, mono={3.537600}: enqueue packet 176 (accum_skew_us = 17600) +sys={3.557700}, mono={3.557700}: enqueue packet 177 (accum_skew_us = 17700) +sys={3.577800}, mono={3.577800}: enqueue packet 178 (accum_skew_us = 17800) +sys={3.597900}, mono={3.597900}: enqueue packet 179 (accum_skew_us = 17900) +sys={3.618000}, mono={3.618000}: enqueue packet 180 (accum_skew_us = 18000) +sys={3.638100}, mono={3.638100}: enqueue packet 181 (accum_skew_us = 18100) +sys={3.658200}, mono={3.658200}: enqueue packet 182 (accum_skew_us = 18200) +sys={3.678300}, mono={3.678300}: enqueue packet 183 (accum_skew_us = 18300) +sys={3.698400}, mono={3.698400}: enqueue packet 184 (accum_skew_us = 18400) +sys={3.718500}, mono={3.718500}: enqueue packet 185 (accum_skew_us = 18500) +sys={3.738600}, mono={3.738600}: enqueue packet 186 (accum_skew_us = 18600) +sys={3.758700}, mono={3.758700}: enqueue packet 187 (accum_skew_us = 18700) +sys={3.778800}, mono={3.778800}: enqueue packet 188 (accum_skew_us = 18800) +sys={3.798900}, mono={3.798900}: enqueue packet 189 (accum_skew_us = 18900) +sys={3.819000}, mono={3.819000}: enqueue packet 190 (accum_skew_us = 19000) +sys={3.839100}, mono={3.839100}: enqueue packet 191 (accum_skew_us = 19100) +sys={3.859200}, mono={3.859200}: enqueue packet 192 (accum_skew_us = 19200) +sys={3.879300}, mono={3.879300}: enqueue packet 193 (accum_skew_us = 19300) +sys={3.899400}, mono={3.899400}: enqueue packet 194 (accum_skew_us = 19400) +sys={3.919500}, mono={3.919500}: enqueue packet 195 (accum_skew_us = 19500) +sys={3.939600}, mono={3.939600}: enqueue packet 196 (accum_skew_us = 19600) +sys={3.959700}, mono={3.959700}: enqueue packet 197 (accum_skew_us = 19700) +sys={3.979800}, mono={3.979800}: enqueue packet 198 (accum_skew_us = 19800) +sys={3.999900}, mono={3.999900}: enqueue packet 199 (accum_skew_us = 19900) +sys={4.020000}, mono={4.020000}: enqueue packet 200 (accum_skew_us = 20000) +sys={4.040100}, mono={4.040100}: enqueue packet 201 (accum_skew_us = 20100) +sys={4.060200}, mono={4.060200}: enqueue packet 202 (accum_skew_us = 20200) +sys={4.080300}, mono={4.080300}: enqueue packet 203 (accum_skew_us = 20300) +sys={4.100400}, mono={4.100400}: enqueue packet 204 (accum_skew_us = 20400) +sys={4.120500}, mono={4.120500}: enqueue packet 205 (accum_skew_us = 20500) +sys={4.140600}, mono={4.140600}: enqueue packet 206 (accum_skew_us = 20600) +sys={4.160700}, mono={4.160700}: enqueue packet 207 (accum_skew_us = 20700) +sys={4.180800}, mono={4.180800}: enqueue packet 208 (accum_skew_us = 20800) +sys={4.200900}, mono={4.200900}: enqueue packet 209 (accum_skew_us = 20900) +sys={4.221000}, mono={4.221000}: enqueue packet 210 (accum_skew_us = 21000) +sys={4.241100}, mono={4.241100}: enqueue packet 211 (accum_skew_us = 21100) +sys={4.261200}, mono={4.261200}: enqueue packet 212 (accum_skew_us = 21200) +sys={4.281300}, mono={4.281300}: enqueue packet 213 (accum_skew_us = 21300) +sys={4.301400}, mono={4.301400}: enqueue packet 214 (accum_skew_us = 21400) +sys={4.321500}, mono={4.321500}: enqueue packet 215 (accum_skew_us = 21500) +sys={4.341600}, mono={4.341600}: enqueue packet 216 (accum_skew_us = 21600) +sys={4.361700}, mono={4.361700}: enqueue packet 217 (accum_skew_us = 21700) +sys={4.381800}, mono={4.381800}: enqueue packet 218 (accum_skew_us = 21800) +sys={4.401900}, mono={4.401900}: enqueue packet 219 (accum_skew_us = 21900) +sys={4.422000}, mono={4.422000}: enqueue packet 220 (accum_skew_us = 22000) +sys={4.442100}, mono={4.442100}: enqueue packet 221 (accum_skew_us = 22100) +sys={4.462200}, mono={4.462200}: enqueue packet 222 (accum_skew_us = 22200) +sys={4.482300}, mono={4.482300}: enqueue packet 223 (accum_skew_us = 22300) +sys={4.502400}, mono={4.502400}: enqueue packet 224 (accum_skew_us = 22400) +sys={4.522500}, mono={4.522500}: enqueue packet 225 (accum_skew_us = 22500) +sys={4.542600}, mono={4.542600}: enqueue packet 226 (accum_skew_us = 22600) +sys={4.562700}, mono={4.562700}: enqueue packet 227 (accum_skew_us = 22700) +sys={4.582800}, mono={4.582800}: enqueue packet 228 (accum_skew_us = 22800) +sys={4.602900}, mono={4.602900}: enqueue packet 229 (accum_skew_us = 22900) +sys={4.623000}, mono={4.623000}: enqueue packet 230 (accum_skew_us = 23000) +sys={4.643100}, mono={4.643100}: enqueue packet 231 (accum_skew_us = 23100) +sys={4.663200}, mono={4.663200}: enqueue packet 232 (accum_skew_us = 23200) +sys={4.683300}, mono={4.683300}: enqueue packet 233 (accum_skew_us = 23300) +sys={4.703400}, mono={4.703400}: enqueue packet 234 (accum_skew_us = 23400) +sys={4.723500}, mono={4.723500}: enqueue packet 235 (accum_skew_us = 23500) +sys={4.743600}, mono={4.743600}: enqueue packet 236 (accum_skew_us = 23600) +sys={4.763700}, mono={4.763700}: enqueue packet 237 (accum_skew_us = 23700) +sys={4.783800}, mono={4.783800}: enqueue packet 238 (accum_skew_us = 23800) +sys={4.803900}, mono={4.803900}: enqueue packet 239 (accum_skew_us = 23900) +sys={4.824000}, mono={4.824000}: enqueue packet 240 (accum_skew_us = 24000) +sys={4.844100}, mono={4.844100}: enqueue packet 241 (accum_skew_us = 24100) +sys={4.864200}, mono={4.864200}: enqueue packet 242 (accum_skew_us = 24200) +sys={4.884300}, mono={4.884300}: enqueue packet 243 (accum_skew_us = 24300) +sys={4.904400}, mono={4.904400}: enqueue packet 244 (accum_skew_us = 24400) +sys={4.924500}, mono={4.924500}: enqueue packet 245 (accum_skew_us = 24500) +sys={4.944600}, mono={4.944600}: enqueue packet 246 (accum_skew_us = 24600) +sys={4.964700}, mono={4.964700}: enqueue packet 247 (accum_skew_us = 24700) +sys={4.984800}, mono={4.984800}: enqueue packet 248 (accum_skew_us = 24800) +sys={5.004900}, mono={5.004900}: enqueue packet 249 (accum_skew_us = 24900) +sys={5.025000}, mono={5.025000}: enqueue packet 250 (accum_skew_us = 25000) +sys={5.045100}, mono={5.045100}: enqueue packet 251 (accum_skew_us = 25100) +sys={5.065200}, mono={5.065200}: enqueue packet 252 (accum_skew_us = 25200) +sys={5.085300}, mono={5.085300}: enqueue packet 253 (accum_skew_us = 25300) +sys={5.105400}, mono={5.105400}: enqueue packet 254 (accum_skew_us = 25400) +sys={5.125500}, mono={5.125500}: enqueue packet 255 (accum_skew_us = 25500) +sys={5.145600}, mono={5.145600}: enqueue packet 256 (accum_skew_us = 25600) +sys={5.165700}, mono={5.165700}: enqueue packet 257 (accum_skew_us = 25700) +sys={5.185800}, mono={5.185800}: enqueue packet 258 (accum_skew_us = 25800) +sys={5.205900}, mono={5.205900}: enqueue packet 259 (accum_skew_us = 25900) +sys={5.226000}, mono={5.226000}: enqueue packet 260 (accum_skew_us = 26000) +sys={5.246100}, mono={5.246100}: enqueue packet 261 (accum_skew_us = 26100) +sys={5.266200}, mono={5.266200}: enqueue packet 262 (accum_skew_us = 26200) +sys={5.286300}, mono={5.286300}: enqueue packet 263 (accum_skew_us = 26300) +sys={5.306400}, mono={5.306400}: enqueue packet 264 (accum_skew_us = 26400) +sys={5.326500}, mono={5.326500}: enqueue packet 265 (accum_skew_us = 26500) +sys={5.346600}, mono={5.346600}: enqueue packet 266 (accum_skew_us = 26600) +sys={5.366700}, mono={5.366700}: enqueue packet 267 (accum_skew_us = 26700) +sys={5.386800}, mono={5.386800}: enqueue packet 268 (accum_skew_us = 26800) +sys={5.406900}, mono={5.406900}: enqueue packet 269 (accum_skew_us = 26900) +sys={5.427000}, mono={5.427000}: enqueue packet 270 (accum_skew_us = 27000) +sys={5.447100}, mono={5.447100}: enqueue packet 271 (accum_skew_us = 27100) +sys={5.467200}, mono={5.467200}: enqueue packet 272 (accum_skew_us = 27200) +sys={5.487300}, mono={5.487300}: enqueue packet 273 (accum_skew_us = 27300) +sys={5.507400}, mono={5.507400}: enqueue packet 274 (accum_skew_us = 27400) +sys={5.527500}, mono={5.527500}: enqueue packet 275 (accum_skew_us = 27500) +sys={5.547600}, mono={5.547600}: enqueue packet 276 (accum_skew_us = 27600) +sys={5.567700}, mono={5.567700}: enqueue packet 277 (accum_skew_us = 27700) +sys={5.587800}, mono={5.587800}: enqueue packet 278 (accum_skew_us = 27800) +sys={5.607900}, mono={5.607900}: enqueue packet 279 (accum_skew_us = 27900) +sys={5.628000}, mono={5.628000}: enqueue packet 280 (accum_skew_us = 28000) +sys={5.648100}, mono={5.648100}: enqueue packet 281 (accum_skew_us = 28100) +sys={5.668200}, mono={5.668200}: enqueue packet 282 (accum_skew_us = 28200) +sys={5.688300}, mono={5.688300}: enqueue packet 283 (accum_skew_us = 28300) +sys={5.708400}, mono={5.708400}: enqueue packet 284 (accum_skew_us = 28400) +sys={5.728500}, mono={5.728500}: enqueue packet 285 (accum_skew_us = 28500) +sys={5.748600}, mono={5.748600}: enqueue packet 286 (accum_skew_us = 28600) +sys={5.768700}, mono={5.768700}: enqueue packet 287 (accum_skew_us = 28700) +sys={5.788800}, mono={5.788800}: enqueue packet 288 (accum_skew_us = 28800) +sys={5.808900}, mono={5.808900}: enqueue packet 289 (accum_skew_us = 28900) +sys={5.829000}, mono={5.829000}: enqueue packet 290 (accum_skew_us = 29000) +sys={5.849100}, mono={5.849100}: enqueue packet 291 (accum_skew_us = 29100) +sys={5.869200}, mono={5.869200}: enqueue packet 292 (accum_skew_us = 29200) +sys={5.889300}, mono={5.889300}: enqueue packet 293 (accum_skew_us = 29300) +sys={5.909400}, mono={5.909400}: enqueue packet 294 (accum_skew_us = 29400) +sys={5.929500}, mono={5.929500}: enqueue packet 295 (accum_skew_us = 29500) +sys={5.949600}, mono={5.949600}: enqueue packet 296 (accum_skew_us = 29600) +sys={5.969700}, mono={5.969700}: enqueue packet 297 (accum_skew_us = 29700) +sys={5.989800}, mono={5.989800}: enqueue packet 298 (accum_skew_us = 29800) +sys={6.009900}, mono={6.009900}: enqueue packet 299 (accum_skew_us = 29900) +sys={6.030000}, mono={6.030000}: enqueue packet 300 (accum_skew_us = 30000) +sys={6.050100}, mono={6.050100}: enqueue packet 301 (accum_skew_us = 30100) +sys={6.070200}, mono={6.070200}: enqueue packet 302 (accum_skew_us = 30200) +sys={6.090300}, mono={6.090300}: enqueue packet 303 (accum_skew_us = 30300) +sys={6.110400}, mono={6.110400}: enqueue packet 304 (accum_skew_us = 30400) +sys={6.130500}, mono={6.130500}: enqueue packet 305 (accum_skew_us = 30500) +sys={6.150600}, mono={6.150600}: enqueue packet 306 (accum_skew_us = 30600) +sys={6.170700}, mono={6.170700}: enqueue packet 307 (accum_skew_us = 30700) +sys={6.190800}, mono={6.190800}: enqueue packet 308 (accum_skew_us = 30800) +sys={6.210900}, mono={6.210900}: enqueue packet 309 (accum_skew_us = 30900) +sys={6.231000}, mono={6.231000}: enqueue packet 310 (accum_skew_us = 31000) +sys={6.251100}, mono={6.251100}: enqueue packet 311 (accum_skew_us = 31100) +sys={6.271200}, mono={6.271200}: enqueue packet 312 (accum_skew_us = 31200) +sys={6.291300}, mono={6.291300}: enqueue packet 313 (accum_skew_us = 31300) +sys={6.311400}, mono={6.311400}: enqueue packet 314 (accum_skew_us = 31400) +sys={6.331500}, mono={6.331500}: enqueue packet 315 (accum_skew_us = 31500) +sys={6.351600}, mono={6.351600}: enqueue packet 316 (accum_skew_us = 31600) +sys={6.371700}, mono={6.371700}: enqueue packet 317 (accum_skew_us = 31700) +sys={6.391800}, mono={6.391800}: enqueue packet 318 (accum_skew_us = 31800) +sys={6.411900}, mono={6.411900}: enqueue packet 319 (accum_skew_us = 31900) +sys={6.432000}, mono={6.432000}: enqueue packet 320 (accum_skew_us = 32000) +sys={6.452100}, mono={6.452100}: enqueue packet 321 (accum_skew_us = 32100) +sys={6.472200}, mono={6.472200}: enqueue packet 322 (accum_skew_us = 32200) +sys={6.492300}, mono={6.492300}: enqueue packet 323 (accum_skew_us = 32300) +sys={6.512400}, mono={6.512400}: enqueue packet 324 (accum_skew_us = 32400) +sys={6.532500}, mono={6.532500}: enqueue packet 325 (accum_skew_us = 32500) +sys={6.552600}, mono={6.552600}: enqueue packet 326 (accum_skew_us = 32600) +sys={6.572700}, mono={6.572700}: enqueue packet 327 (accum_skew_us = 32700) +sys={6.592800}, mono={6.592800}: enqueue packet 328 (accum_skew_us = 32800) +sys={6.612900}, mono={6.612900}: enqueue packet 329 (accum_skew_us = 32900) +sys={6.633000}, mono={6.633000}: enqueue packet 330 (accum_skew_us = 33000) +sys={6.653100}, mono={6.653100}: enqueue packet 331 (accum_skew_us = 33100) +sys={6.673200}, mono={6.673200}: enqueue packet 332 (accum_skew_us = 33200) +sys={6.693300}, mono={6.693300}: enqueue packet 333 (accum_skew_us = 33300) +sys={6.713400}, mono={6.713400}: enqueue packet 334 (accum_skew_us = 33400) +sys={6.733500}, mono={6.733500}: enqueue packet 335 (accum_skew_us = 33500) +sys={6.753600}, mono={6.753600}: enqueue packet 336 (accum_skew_us = 33600) +sys={6.773700}, mono={6.773700}: enqueue packet 337 (accum_skew_us = 33700) +sys={6.793800}, mono={6.793800}: enqueue packet 338 (accum_skew_us = 33800) +sys={6.813900}, mono={6.813900}: enqueue packet 339 (accum_skew_us = 33900) +sys={6.834000}, mono={6.834000}: enqueue packet 340 (accum_skew_us = 34000) +sys={6.854100}, mono={6.854100}: enqueue packet 341 (accum_skew_us = 34100) +sys={6.874200}, mono={6.874200}: enqueue packet 342 (accum_skew_us = 34200) +sys={6.894300}, mono={6.894300}: enqueue packet 343 (accum_skew_us = 34300) +sys={6.914400}, mono={6.914400}: enqueue packet 344 (accum_skew_us = 34400) +sys={6.934500}, mono={6.934500}: enqueue packet 345 (accum_skew_us = 34500) +sys={6.954600}, mono={6.954600}: enqueue packet 346 (accum_skew_us = 34600) +sys={6.974700}, mono={6.974700}: enqueue packet 347 (accum_skew_us = 34700) +sys={6.994800}, mono={6.994800}: enqueue packet 348 (accum_skew_us = 34800) +sys={7.014900}, mono={7.014900}: enqueue packet 349 (accum_skew_us = 34900) +sys={7.035000}, mono={7.035000}: enqueue packet 350 (accum_skew_us = 35000) +sys={7.055100}, mono={7.055100}: enqueue packet 351 (accum_skew_us = 35100) +sys={7.075200}, mono={7.075200}: enqueue packet 352 (accum_skew_us = 35200) +sys={7.095300}, mono={7.095300}: enqueue packet 353 (accum_skew_us = 35300) +sys={7.115400}, mono={7.115400}: enqueue packet 354 (accum_skew_us = 35400) +sys={7.135500}, mono={7.135500}: enqueue packet 355 (accum_skew_us = 35500) +sys={7.155600}, mono={7.155600}: enqueue packet 356 (accum_skew_us = 35600) +sys={7.175700}, mono={7.175700}: enqueue packet 357 (accum_skew_us = 35700) +sys={7.195800}, mono={7.195800}: enqueue packet 358 (accum_skew_us = 35800) +sys={7.215900}, mono={7.215900}: enqueue packet 359 (accum_skew_us = 35900) +sys={7.236000}, mono={7.236000}: enqueue packet 360 (accum_skew_us = 36000) +sys={7.256100}, mono={7.256100}: enqueue packet 361 (accum_skew_us = 36100) +sys={7.276200}, mono={7.276200}: enqueue packet 362 (accum_skew_us = 36200) +sys={7.296300}, mono={7.296300}: enqueue packet 363 (accum_skew_us = 36300) +sys={7.316400}, mono={7.316400}: enqueue packet 364 (accum_skew_us = 36400) +sys={7.336500}, mono={7.336500}: enqueue packet 365 (accum_skew_us = 36500) +sys={7.356600}, mono={7.356600}: enqueue packet 366 (accum_skew_us = 36600) +sys={7.376700}, mono={7.376700}: enqueue packet 367 (accum_skew_us = 36700) +sys={7.396800}, mono={7.396800}: enqueue packet 368 (accum_skew_us = 36800) +sys={7.416900}, mono={7.416900}: enqueue packet 369 (accum_skew_us = 36900) +sys={7.437000}, mono={7.437000}: enqueue packet 370 (accum_skew_us = 37000) +sys={7.457100}, mono={7.457100}: enqueue packet 371 (accum_skew_us = 37100) +sys={7.477200}, mono={7.477200}: enqueue packet 372 (accum_skew_us = 37200) +sys={7.497300}, mono={7.497300}: enqueue packet 373 (accum_skew_us = 37300) +sys={7.517400}, mono={7.517400}: enqueue packet 374 (accum_skew_us = 37400) +sys={7.537500}, mono={7.537500}: enqueue packet 375 (accum_skew_us = 37500) +sys={7.557600}, mono={7.557600}: enqueue packet 376 (accum_skew_us = 37600) +sys={7.577700}, mono={7.577700}: enqueue packet 377 (accum_skew_us = 37700) +sys={7.597800}, mono={7.597800}: enqueue packet 378 (accum_skew_us = 37800) +sys={7.617900}, mono={7.617900}: enqueue packet 379 (accum_skew_us = 37900) +sys={7.638000}, mono={7.638000}: enqueue packet 380 (accum_skew_us = 38000) +sys={7.658100}, mono={7.658100}: enqueue packet 381 (accum_skew_us = 38100) +sys={7.678200}, mono={7.678200}: enqueue packet 382 (accum_skew_us = 38200) +sys={7.698300}, mono={7.698300}: enqueue packet 383 (accum_skew_us = 38300) +sys={7.718400}, mono={7.718400}: enqueue packet 384 (accum_skew_us = 38400) +sys={7.738500}, mono={7.738500}: enqueue packet 385 (accum_skew_us = 38500) +sys={7.758600}, mono={7.758600}: enqueue packet 386 (accum_skew_us = 38600) +sys={7.778700}, mono={7.778700}: enqueue packet 387 (accum_skew_us = 38700) +sys={7.798800}, mono={7.798800}: enqueue packet 388 (accum_skew_us = 38800) +sys={7.818900}, mono={7.818900}: enqueue packet 389 (accum_skew_us = 38900) +sys={7.839000}, mono={7.839000}: enqueue packet 390 (accum_skew_us = 39000) +sys={7.859100}, mono={7.859100}: enqueue packet 391 (accum_skew_us = 39100) +sys={7.879200}, mono={7.879200}: enqueue packet 392 (accum_skew_us = 39200) +sys={7.899300}, mono={7.899300}: enqueue packet 393 (accum_skew_us = 39300) +sys={7.919400}, mono={7.919400}: enqueue packet 394 (accum_skew_us = 39400) +sys={7.939500}, mono={7.939500}: enqueue packet 395 (accum_skew_us = 39500) +sys={7.959600}, mono={7.959600}: enqueue packet 396 (accum_skew_us = 39600) +sys={7.979700}, mono={7.979700}: enqueue packet 397 (accum_skew_us = 39700) +sys={7.999800}, mono={7.999800}: enqueue packet 398 (accum_skew_us = 39800) +sys={8.019900}, mono={8.019900}: enqueue packet 399 (accum_skew_us = 39900) +sys={8.040000}, mono={8.040000}: enqueue packet 400 (accum_skew_us = 40000) +sys={8.060100}, mono={8.060100}: enqueue packet 401 (accum_skew_us = 40100) +sys={8.080200}, mono={8.080200}: enqueue packet 402 (accum_skew_us = 40200) +sys={8.100300}, mono={8.100300}: enqueue packet 403 (accum_skew_us = 40300) +sys={8.120400}, mono={8.120400}: enqueue packet 404 (accum_skew_us = 40400) +sys={8.140500}, mono={8.140500}: enqueue packet 405 (accum_skew_us = 40500) +sys={8.160600}, mono={8.160600}: enqueue packet 406 (accum_skew_us = 40600) +sys={8.180700}, mono={8.180700}: enqueue packet 407 (accum_skew_us = 40700) +sys={8.200800}, mono={8.200800}: enqueue packet 408 (accum_skew_us = 40800) +sys={8.220900}, mono={8.220900}: enqueue packet 409 (accum_skew_us = 40900) +sys={8.241000}, mono={8.241000}: enqueue packet 410 (accum_skew_us = 41000) +sys={8.261100}, mono={8.261100}: enqueue packet 411 (accum_skew_us = 41100) +sys={8.281200}, mono={8.281200}: enqueue packet 412 (accum_skew_us = 41200) +sys={8.301300}, mono={8.301300}: enqueue packet 413 (accum_skew_us = 41300) +sys={8.321400}, mono={8.321400}: enqueue packet 414 (accum_skew_us = 41400) +sys={8.341500}, mono={8.341500}: enqueue packet 415 (accum_skew_us = 41500) +sys={8.361600}, mono={8.361600}: enqueue packet 416 (accum_skew_us = 41600) +sys={8.381700}, mono={8.381700}: enqueue packet 417 (accum_skew_us = 41700) +sys={8.401800}, mono={8.401800}: enqueue packet 418 (accum_skew_us = 41800) +sys={8.421900}, mono={8.421900}: enqueue packet 419 (accum_skew_us = 41900) +sys={8.442000}, mono={8.442000}: enqueue packet 420 (accum_skew_us = 42000) +sys={8.462100}, mono={8.462100}: enqueue packet 421 (accum_skew_us = 42100) +sys={8.482200}, mono={8.482200}: enqueue packet 422 (accum_skew_us = 42200) +sys={8.502300}, mono={8.502300}: enqueue packet 423 (accum_skew_us = 42300) +sys={8.522400}, mono={8.522400}: enqueue packet 424 (accum_skew_us = 42400) +sys={8.542500}, mono={8.542500}: enqueue packet 425 (accum_skew_us = 42500) +sys={8.562600}, mono={8.562600}: enqueue packet 426 (accum_skew_us = 42600) +sys={8.582700}, mono={8.582700}: enqueue packet 427 (accum_skew_us = 42700) +sys={8.602800}, mono={8.602800}: enqueue packet 428 (accum_skew_us = 42800) +sys={8.622900}, mono={8.622900}: enqueue packet 429 (accum_skew_us = 42900) +sys={8.643000}, mono={8.643000}: enqueue packet 430 (accum_skew_us = 43000) +sys={8.663100}, mono={8.663100}: enqueue packet 431 (accum_skew_us = 43100) +sys={8.683200}, mono={8.683200}: enqueue packet 432 (accum_skew_us = 43200) +sys={8.703300}, mono={8.703300}: enqueue packet 433 (accum_skew_us = 43300) +sys={8.723400}, mono={8.723400}: enqueue packet 434 (accum_skew_us = 43400) +sys={8.743500}, mono={8.743500}: enqueue packet 435 (accum_skew_us = 43500) +sys={8.763600}, mono={8.763600}: enqueue packet 436 (accum_skew_us = 43600) +sys={8.783700}, mono={8.783700}: enqueue packet 437 (accum_skew_us = 43700) +sys={8.803800}, mono={8.803800}: enqueue packet 438 (accum_skew_us = 43800) +sys={8.823900}, mono={8.823900}: enqueue packet 439 (accum_skew_us = 43900) +sys={8.844000}, mono={8.844000}: enqueue packet 440 (accum_skew_us = 44000) +sys={8.864100}, mono={8.864100}: enqueue packet 441 (accum_skew_us = 44100) +sys={8.884200}, mono={8.884200}: enqueue packet 442 (accum_skew_us = 44200) +sys={8.904300}, mono={8.904300}: enqueue packet 443 (accum_skew_us = 44300) +sys={8.924400}, mono={8.924400}: enqueue packet 444 (accum_skew_us = 44400) +sys={8.944500}, mono={8.944500}: enqueue packet 445 (accum_skew_us = 44500) +sys={8.964600}, mono={8.964600}: enqueue packet 446 (accum_skew_us = 44600) +sys={8.984700}, mono={8.984700}: enqueue packet 447 (accum_skew_us = 44700) +sys={9.004800}, mono={9.004800}: enqueue packet 448 (accum_skew_us = 44800) +sys={9.024900}, mono={9.024900}: enqueue packet 449 (accum_skew_us = 44900) +===test_skew(100, 1)=== +sys={0.000000}, mono={0.000000}: clock_override_set +sys={0.000000}, mono={0.000000}: enqueue packet 0 (accum_skew_us = 0) +sys={0.020100}, mono={0.020100}: enqueue packet 1 (accum_skew_us = 100) +sys={0.040200}, mono={0.040200}: enqueue packet 2 (accum_skew_us = 200) +sys={0.060300}, mono={0.060300}: enqueue packet 3 (accum_skew_us = 300) +sys={0.080400}, mono={0.080400}: enqueue packet 4 (accum_skew_us = 400) +sys={0.100500}, mono={0.100500}: enqueue packet 5 (accum_skew_us = 500) +sys={0.120600}, mono={0.120600}: enqueue packet 6 (accum_skew_us = 600) +sys={0.140700}, mono={0.140700}: enqueue packet 7 (accum_skew_us = 700) +sys={0.160800}, mono={0.160800}: enqueue packet 8 (accum_skew_us = 800) +sys={0.180900}, mono={0.180900}: enqueue packet 9 (accum_skew_us = 900) +sys={0.201000}, mono={0.201000}: enqueue packet 10 (accum_skew_us = 1000) +sys={0.221100}, mono={0.221100}: enqueue packet 11 (accum_skew_us = 1100) +sys={0.241200}, mono={0.241200}: enqueue packet 12 (accum_skew_us = 1200) +sys={0.261300}, mono={0.261300}: enqueue packet 13 (accum_skew_us = 1300) +sys={0.281400}, mono={0.281400}: enqueue packet 14 (accum_skew_us = 1400) +sys={0.301500}, mono={0.301500}: enqueue packet 15 (accum_skew_us = 1500) +sys={0.321600}, mono={0.321600}: enqueue packet 16 (accum_skew_us = 1600) +sys={0.341700}, mono={0.341700}: enqueue packet 17 (accum_skew_us = 1700) +sys={0.361800}, mono={0.361800}: enqueue packet 18 (accum_skew_us = 1800) +sys={0.381900}, mono={0.381900}: enqueue packet 19 (accum_skew_us = 1900) +sys={0.402000}, mono={0.402000}: enqueue packet 20 (accum_skew_us = 2000) +sys={0.422100}, mono={0.422100}: enqueue packet 21 (accum_skew_us = 2100) +sys={0.442200}, mono={0.442200}: enqueue packet 22 (accum_skew_us = 2200) +sys={0.462300}, mono={0.462300}: enqueue packet 23 (accum_skew_us = 2300) +sys={0.482400}, mono={0.482400}: enqueue packet 24 (accum_skew_us = 2400) +sys={0.502500}, mono={0.502500}: enqueue packet 25 (accum_skew_us = 2500) +sys={0.522600}, mono={0.522600}: enqueue packet 26 (accum_skew_us = 2600) +sys={0.542700}, mono={0.542700}: enqueue packet 27 (accum_skew_us = 2700) +sys={0.562800}, mono={0.562800}: enqueue packet 28 (accum_skew_us = 2800) +sys={0.582900}, mono={0.582900}: enqueue packet 29 (accum_skew_us = 2900) +sys={0.603000}, mono={0.603000}: enqueue packet 30 (accum_skew_us = 3000) +sys={0.623100}, mono={0.623100}: enqueue packet 31 (accum_skew_us = 3100) +sys={0.643200}, mono={0.643200}: enqueue packet 32 (accum_skew_us = 3200) +sys={0.663300}, mono={0.663300}: enqueue packet 33 (accum_skew_us = 3300) +sys={0.683400}, mono={0.683400}: enqueue packet 34 (accum_skew_us = 3400) +sys={0.703500}, mono={0.703500}: enqueue packet 35 (accum_skew_us = 3500) +sys={0.723600}, mono={0.723600}: enqueue packet 36 (accum_skew_us = 3600) +sys={0.743700}, mono={0.743700}: enqueue packet 37 (accum_skew_us = 3700) +sys={0.763800}, mono={0.763800}: enqueue packet 38 (accum_skew_us = 3800) +sys={0.783900}, mono={0.783900}: enqueue packet 39 (accum_skew_us = 3900) +sys={0.804000}, mono={0.804000}: enqueue packet 40 (accum_skew_us = 4000) +sys={0.824100}, mono={0.824100}: enqueue packet 41 (accum_skew_us = 4100) +sys={0.844200}, mono={0.844200}: enqueue packet 42 (accum_skew_us = 4200) +sys={0.864300}, mono={0.864300}: enqueue packet 43 (accum_skew_us = 4300) +sys={0.884400}, mono={0.884400}: enqueue packet 44 (accum_skew_us = 4400) +sys={0.904500}, mono={0.904500}: enqueue packet 45 (accum_skew_us = 4500) +sys={0.924600}, mono={0.924600}: enqueue packet 46 (accum_skew_us = 4600) +sys={0.944700}, mono={0.944700}: enqueue packet 47 (accum_skew_us = 4700) +sys={0.964800}, mono={0.964800}: enqueue packet 48 (accum_skew_us = 4800) +sys={0.984900}, mono={0.984900}: enqueue packet 49 (accum_skew_us = 4900) +sys={1.005000}, mono={1.005000}: enqueue packet 50 (accum_skew_us = 5000) +sys={1.025100}, mono={1.025100}: enqueue packet 51 (accum_skew_us = 5100) +sys={1.045200}, mono={1.045200}: enqueue packet 52 (accum_skew_us = 5200) +sys={1.065300}, mono={1.065300}: enqueue packet 53 (accum_skew_us = 5300) +sys={1.085400}, mono={1.085400}: enqueue packet 54 (accum_skew_us = 5400) +sys={1.105500}, mono={1.105500}: enqueue packet 55 (accum_skew_us = 5500) +sys={1.125600}, mono={1.125600}: enqueue packet 56 (accum_skew_us = 5600) +sys={1.145700}, mono={1.145700}: enqueue packet 57 (accum_skew_us = 5700) +sys={1.165800}, mono={1.165800}: enqueue packet 58 (accum_skew_us = 5800) +sys={1.185900}, mono={1.185900}: enqueue packet 59 (accum_skew_us = 5900) +sys={1.206000}, mono={1.206000}: enqueue packet 60 (accum_skew_us = 6000) +sys={1.226100}, mono={1.226100}: enqueue packet 61 (accum_skew_us = 6100) +sys={1.246200}, mono={1.246200}: enqueue packet 62 (accum_skew_us = 6200) +sys={1.266300}, mono={1.266300}: enqueue packet 63 (accum_skew_us = 6300) +sys={1.286400}, mono={1.286400}: enqueue packet 64 (accum_skew_us = 6400) +sys={1.306500}, mono={1.306500}: enqueue packet 65 (accum_skew_us = 6500) +sys={1.326600}, mono={1.326600}: enqueue packet 66 (accum_skew_us = 6600) +sys={1.346700}, mono={1.346700}: enqueue packet 67 (accum_skew_us = 6700) +sys={1.366800}, mono={1.366800}: enqueue packet 68 (accum_skew_us = 6800) +sys={1.386900}, mono={1.386900}: enqueue packet 69 (accum_skew_us = 6900) +sys={1.407000}, mono={1.407000}: enqueue packet 70 (accum_skew_us = 7000) +sys={1.427100}, mono={1.427100}: enqueue packet 71 (accum_skew_us = 7100) +sys={1.447200}, mono={1.447200}: enqueue packet 72 (accum_skew_us = 7200) +sys={1.467300}, mono={1.467300}: enqueue packet 73 (accum_skew_us = 7300) +sys={1.487400}, mono={1.487400}: enqueue packet 74 (accum_skew_us = 7400) +sys={1.507500}, mono={1.507500}: enqueue packet 75 (accum_skew_us = 7500) +sys={1.527600}, mono={1.527600}: enqueue packet 76 (accum_skew_us = 7600) +sys={1.547700}, mono={1.547700}: enqueue packet 77 (accum_skew_us = 7700) +sys={1.567800}, mono={1.567800}: enqueue packet 78 (accum_skew_us = 7800) +sys={1.587900}, mono={1.587900}: enqueue packet 79 (accum_skew_us = 7900) +sys={1.608000}, mono={1.608000}: enqueue packet 80 (accum_skew_us = 8000) +sys={1.628100}, mono={1.628100}: enqueue packet 81 (accum_skew_us = 8100) +sys={1.648200}, mono={1.648200}: enqueue packet 82 (accum_skew_us = 8200) +sys={1.668300}, mono={1.668300}: enqueue packet 83 (accum_skew_us = 8300) +sys={1.688400}, mono={1.688400}: enqueue packet 84 (accum_skew_us = 8400) +sys={1.708500}, mono={1.708500}: enqueue packet 85 (accum_skew_us = 8500) +sys={1.728600}, mono={1.728600}: enqueue packet 86 (accum_skew_us = 8600) +sys={1.748700}, mono={1.748700}: enqueue packet 87 (accum_skew_us = 8700) +sys={1.768800}, mono={1.768800}: enqueue packet 88 (accum_skew_us = 8800) +sys={1.788900}, mono={1.788900}: enqueue packet 89 (accum_skew_us = 8900) +sys={1.809000}, mono={1.809000}: enqueue packet 90 (accum_skew_us = 9000) +sys={1.829100}, mono={1.829100}: enqueue packet 91 (accum_skew_us = 9100) +sys={1.849200}, mono={1.849200}: enqueue packet 92 (accum_skew_us = 9200) +sys={1.869300}, mono={1.869300}: enqueue packet 93 (accum_skew_us = 9300) +sys={1.889400}, mono={1.889400}: enqueue packet 94 (accum_skew_us = 9400) +sys={1.909500}, mono={1.909500}: enqueue packet 95 (accum_skew_us = 9500) +sys={1.929600}, mono={1.929600}: enqueue packet 96 (accum_skew_us = 9600) +sys={1.949700}, mono={1.949700}: enqueue packet 97 (accum_skew_us = 9700) +sys={1.969800}, mono={1.969800}: enqueue packet 98 (accum_skew_us = 9800) +sys={1.989900}, mono={1.989900}: enqueue packet 99 (accum_skew_us = 9900) +sys={2.010000}, mono={2.010000}: enqueue packet 100 (accum_skew_us = 10000) +sys={2.030100}, mono={2.030100}: enqueue packet 101 (accum_skew_us = 10100) +sys={2.050200}, mono={2.050200}: enqueue packet 102 (accum_skew_us = 10200) +sys={2.070300}, mono={2.070300}: enqueue packet 103 (accum_skew_us = 10300) +sys={2.090400}, mono={2.090400}: enqueue packet 104 (accum_skew_us = 10400) +sys={2.110500}, mono={2.110500}: enqueue packet 105 (accum_skew_us = 10500) +sys={2.130600}, mono={2.130600}: enqueue packet 106 (accum_skew_us = 10600) +sys={2.150700}, mono={2.150700}: enqueue packet 107 (accum_skew_us = 10700) +sys={2.170800}, mono={2.170800}: enqueue packet 108 (accum_skew_us = 10800) +sys={2.190900}, mono={2.190900}: enqueue packet 109 (accum_skew_us = 10900) +sys={2.211000}, mono={2.211000}: enqueue packet 110 (accum_skew_us = 11000) +sys={2.231100}, mono={2.231100}: enqueue packet 111 (accum_skew_us = 11100) +sys={2.251200}, mono={2.251200}: enqueue packet 112 (accum_skew_us = 11200) +sys={2.271300}, mono={2.271300}: enqueue packet 113 (accum_skew_us = 11300) +sys={2.291400}, mono={2.291400}: enqueue packet 114 (accum_skew_us = 11400) +sys={2.311500}, mono={2.311500}: enqueue packet 115 (accum_skew_us = 11500) +sys={2.331600}, mono={2.331600}: enqueue packet 116 (accum_skew_us = 11600) +sys={2.351700}, mono={2.351700}: enqueue packet 117 (accum_skew_us = 11700) +sys={2.371800}, mono={2.371800}: enqueue packet 118 (accum_skew_us = 11800) +sys={2.391900}, mono={2.391900}: enqueue packet 119 (accum_skew_us = 11900) +sys={2.412000}, mono={2.412000}: enqueue packet 120 (accum_skew_us = 12000) +sys={2.432100}, mono={2.432100}: enqueue packet 121 (accum_skew_us = 12100) +sys={2.452200}, mono={2.452200}: enqueue packet 122 (accum_skew_us = 12200) +sys={2.472300}, mono={2.472300}: enqueue packet 123 (accum_skew_us = 12300) +sys={2.492400}, mono={2.492400}: enqueue packet 124 (accum_skew_us = 12400) +sys={2.512500}, mono={2.512500}: enqueue packet 125 (accum_skew_us = 12500) +sys={2.532600}, mono={2.532600}: enqueue packet 126 (accum_skew_us = 12600) +sys={2.552700}, mono={2.552700}: enqueue packet 127 (accum_skew_us = 12700) +sys={2.572800}, mono={2.572800}: enqueue packet 128 (accum_skew_us = 12800) +sys={2.592900}, mono={2.592900}: enqueue packet 129 (accum_skew_us = 12900) +sys={2.613000}, mono={2.613000}: enqueue packet 130 (accum_skew_us = 13000) +sys={2.633100}, mono={2.633100}: enqueue packet 131 (accum_skew_us = 13100) +sys={2.653200}, mono={2.653200}: enqueue packet 132 (accum_skew_us = 13200) +sys={2.673300}, mono={2.673300}: enqueue packet 133 (accum_skew_us = 13300) +sys={2.693400}, mono={2.693400}: enqueue packet 134 (accum_skew_us = 13400) +sys={2.713500}, mono={2.713500}: enqueue packet 135 (accum_skew_us = 13500) +sys={2.733600}, mono={2.733600}: enqueue packet 136 (accum_skew_us = 13600) +sys={2.753700}, mono={2.753700}: enqueue packet 137 (accum_skew_us = 13700) +sys={2.773800}, mono={2.773800}: enqueue packet 138 (accum_skew_us = 13800) +sys={2.793900}, mono={2.793900}: enqueue packet 139 (accum_skew_us = 13900) +sys={2.814000}, mono={2.814000}: enqueue packet 140 (accum_skew_us = 14000) +sys={2.834100}, mono={2.834100}: enqueue packet 141 (accum_skew_us = 14100) +sys={2.854200}, mono={2.854200}: enqueue packet 142 (accum_skew_us = 14200) +sys={2.874300}, mono={2.874300}: enqueue packet 143 (accum_skew_us = 14300) +sys={2.894400}, mono={2.894400}: enqueue packet 144 (accum_skew_us = 14400) +sys={2.914500}, mono={2.914500}: enqueue packet 145 (accum_skew_us = 14500) +sys={2.934600}, mono={2.934600}: enqueue packet 146 (accum_skew_us = 14600) +sys={2.954700}, mono={2.954700}: enqueue packet 147 (accum_skew_us = 14700) +sys={2.974800}, mono={2.974800}: enqueue packet 148 (accum_skew_us = 14800) +sys={2.994900}, mono={2.994900}: enqueue packet 149 (accum_skew_us = 14900) +sys={3.015000}, mono={3.015000}: enqueue packet 150 (accum_skew_us = 15000) +sys={3.035100}, mono={3.035100}: enqueue packet 151 (accum_skew_us = 15100) +sys={3.055200}, mono={3.055200}: enqueue packet 152 (accum_skew_us = 15200) +sys={3.075300}, mono={3.075300}: enqueue packet 153 (accum_skew_us = 15300) +sys={3.095400}, mono={3.095400}: enqueue packet 154 (accum_skew_us = 15400) +sys={3.115500}, mono={3.115500}: enqueue packet 155 (accum_skew_us = 15500) +sys={3.135600}, mono={3.135600}: enqueue packet 156 (accum_skew_us = 15600) +sys={3.155700}, mono={3.155700}: enqueue packet 157 (accum_skew_us = 15700) +sys={3.175800}, mono={3.175800}: enqueue packet 158 (accum_skew_us = 15800) +sys={3.195900}, mono={3.195900}: enqueue packet 159 (accum_skew_us = 15900) +sys={3.216000}, mono={3.216000}: enqueue packet 160 (accum_skew_us = 16000) +sys={3.236100}, mono={3.236100}: enqueue packet 161 (accum_skew_us = 16100) +sys={3.256200}, mono={3.256200}: enqueue packet 162 (accum_skew_us = 16200) +sys={3.276300}, mono={3.276300}: enqueue packet 163 (accum_skew_us = 16300) +sys={3.296400}, mono={3.296400}: enqueue packet 164 (accum_skew_us = 16400) +sys={3.316500}, mono={3.316500}: enqueue packet 165 (accum_skew_us = 16500) +sys={3.336600}, mono={3.336600}: enqueue packet 166 (accum_skew_us = 16600) +sys={3.356700}, mono={3.356700}: enqueue packet 167 (accum_skew_us = 16700) +sys={3.376800}, mono={3.376800}: enqueue packet 168 (accum_skew_us = 16800) +sys={3.396900}, mono={3.396900}: enqueue packet 169 (accum_skew_us = 16900) +sys={3.417000}, mono={3.417000}: enqueue packet 170 (accum_skew_us = 17000) +sys={3.437100}, mono={3.437100}: enqueue packet 171 (accum_skew_us = 17100) +sys={3.457200}, mono={3.457200}: enqueue packet 172 (accum_skew_us = 17200) +sys={3.477300}, mono={3.477300}: enqueue packet 173 (accum_skew_us = 17300) +sys={3.497400}, mono={3.497400}: enqueue packet 174 (accum_skew_us = 17400) +sys={3.517500}, mono={3.517500}: enqueue packet 175 (accum_skew_us = 17500) +sys={3.537600}, mono={3.537600}: enqueue packet 176 (accum_skew_us = 17600) +sys={3.557700}, mono={3.557700}: enqueue packet 177 (accum_skew_us = 17700) +sys={3.577800}, mono={3.577800}: enqueue packet 178 (accum_skew_us = 17800) +sys={3.597900}, mono={3.597900}: enqueue packet 179 (accum_skew_us = 17900) +sys={3.618000}, mono={3.618000}: enqueue packet 180 (accum_skew_us = 18000) +sys={3.638100}, mono={3.638100}: enqueue packet 181 (accum_skew_us = 18100) +sys={3.658200}, mono={3.658200}: enqueue packet 182 (accum_skew_us = 18200) +sys={3.678300}, mono={3.678300}: enqueue packet 183 (accum_skew_us = 18300) +sys={3.698400}, mono={3.698400}: enqueue packet 184 (accum_skew_us = 18400) +sys={3.718500}, mono={3.718500}: enqueue packet 185 (accum_skew_us = 18500) +sys={3.738600}, mono={3.738600}: enqueue packet 186 (accum_skew_us = 18600) +sys={3.758700}, mono={3.758700}: enqueue packet 187 (accum_skew_us = 18700) +sys={3.778800}, mono={3.778800}: enqueue packet 188 (accum_skew_us = 18800) +sys={3.798900}, mono={3.798900}: enqueue packet 189 (accum_skew_us = 18900) +sys={3.819000}, mono={3.819000}: enqueue packet 190 (accum_skew_us = 19000) +sys={3.839100}, mono={3.839100}: enqueue packet 191 (accum_skew_us = 19100) +sys={3.859200}, mono={3.859200}: enqueue packet 192 (accum_skew_us = 19200) +sys={3.879300}, mono={3.879300}: enqueue packet 193 (accum_skew_us = 19300) +sys={3.899400}, mono={3.899400}: enqueue packet 194 (accum_skew_us = 19400) +sys={3.919500}, mono={3.919500}: enqueue packet 195 (accum_skew_us = 19500) +sys={3.939600}, mono={3.939600}: enqueue packet 196 (accum_skew_us = 19600) +sys={3.959700}, mono={3.959700}: enqueue packet 197 (accum_skew_us = 19700) +sys={3.979800}, mono={3.979800}: enqueue packet 198 (accum_skew_us = 19800) +sys={3.999900}, mono={3.999900}: enqueue packet 199 (accum_skew_us = 19900) +sys={4.020000}, mono={4.020000}: enqueue packet 200 (accum_skew_us = 20000) +sys={4.040100}, mono={4.040100}: enqueue packet 201 (accum_skew_us = 20100) +sys={4.060200}, mono={4.060200}: enqueue packet 202 (accum_skew_us = 20200) +sys={4.080300}, mono={4.080300}: enqueue packet 203 (accum_skew_us = 20300) +sys={4.100400}, mono={4.100400}: enqueue packet 204 (accum_skew_us = 20400) +sys={4.120500}, mono={4.120500}: enqueue packet 205 (accum_skew_us = 20500) +sys={4.140600}, mono={4.140600}: enqueue packet 206 (accum_skew_us = 20600) +sys={4.160700}, mono={4.160700}: enqueue packet 207 (accum_skew_us = 20700) +sys={4.180800}, mono={4.180800}: enqueue packet 208 (accum_skew_us = 20800) +sys={4.200900}, mono={4.200900}: enqueue packet 209 (accum_skew_us = 20900) +sys={4.221000}, mono={4.221000}: enqueue packet 210 (accum_skew_us = 21000) +sys={4.241100}, mono={4.241100}: enqueue packet 211 (accum_skew_us = 21100) +sys={4.261200}, mono={4.261200}: enqueue packet 212 (accum_skew_us = 21200) +sys={4.281300}, mono={4.281300}: enqueue packet 213 (accum_skew_us = 21300) +sys={4.301400}, mono={4.301400}: enqueue packet 214 (accum_skew_us = 21400) +sys={4.321500}, mono={4.321500}: enqueue packet 215 (accum_skew_us = 21500) +sys={4.341600}, mono={4.341600}: enqueue packet 216 (accum_skew_us = 21600) +sys={4.361700}, mono={4.361700}: enqueue packet 217 (accum_skew_us = 21700) +sys={4.381800}, mono={4.381800}: enqueue packet 218 (accum_skew_us = 21800) +sys={4.401900}, mono={4.401900}: enqueue packet 219 (accum_skew_us = 21900) +sys={4.422000}, mono={4.422000}: enqueue packet 220 (accum_skew_us = 22000) +sys={4.442100}, mono={4.442100}: enqueue packet 221 (accum_skew_us = 22100) +sys={4.462200}, mono={4.462200}: enqueue packet 222 (accum_skew_us = 22200) +sys={4.482300}, mono={4.482300}: enqueue packet 223 (accum_skew_us = 22300) +sys={4.502400}, mono={4.502400}: enqueue packet 224 (accum_skew_us = 22400) +sys={4.522500}, mono={4.522500}: enqueue packet 225 (accum_skew_us = 22500) +sys={4.542600}, mono={4.542600}: enqueue packet 226 (accum_skew_us = 22600) +sys={4.562700}, mono={4.562700}: enqueue packet 227 (accum_skew_us = 22700) +sys={4.582800}, mono={4.582800}: enqueue packet 228 (accum_skew_us = 22800) +sys={4.602900}, mono={4.602900}: enqueue packet 229 (accum_skew_us = 22900) +sys={4.623000}, mono={4.623000}: enqueue packet 230 (accum_skew_us = 23000) +sys={4.643100}, mono={4.643100}: enqueue packet 231 (accum_skew_us = 23100) +sys={4.663200}, mono={4.663200}: enqueue packet 232 (accum_skew_us = 23200) +sys={4.683300}, mono={4.683300}: enqueue packet 233 (accum_skew_us = 23300) +sys={4.703400}, mono={4.703400}: enqueue packet 234 (accum_skew_us = 23400) +sys={4.723500}, mono={4.723500}: enqueue packet 235 (accum_skew_us = 23500) +sys={4.743600}, mono={4.743600}: enqueue packet 236 (accum_skew_us = 23600) +sys={4.763700}, mono={4.763700}: enqueue packet 237 (accum_skew_us = 23700) +sys={4.783800}, mono={4.783800}: enqueue packet 238 (accum_skew_us = 23800) +sys={4.803900}, mono={4.803900}: enqueue packet 239 (accum_skew_us = 23900) +sys={4.824000}, mono={4.824000}: enqueue packet 240 (accum_skew_us = 24000) +sys={4.844100}, mono={4.844100}: enqueue packet 241 (accum_skew_us = 24100) +sys={4.864200}, mono={4.864200}: enqueue packet 242 (accum_skew_us = 24200) +sys={4.884300}, mono={4.884300}: enqueue packet 243 (accum_skew_us = 24300) +sys={4.904400}, mono={4.904400}: enqueue packet 244 (accum_skew_us = 24400) +sys={4.924500}, mono={4.924500}: enqueue packet 245 (accum_skew_us = 24500) +sys={4.944600}, mono={4.944600}: enqueue packet 246 (accum_skew_us = 24600) +sys={4.964700}, mono={4.964700}: enqueue packet 247 (accum_skew_us = 24700) +sys={4.984800}, mono={4.984800}: enqueue packet 248 (accum_skew_us = 24800) +sys={5.004900}, mono={5.004900}: enqueue packet 249 (accum_skew_us = 24900) +sys={5.025000}, mono={5.025000}: enqueue packet 250 (accum_skew_us = 25000) +sys={5.045100}, mono={5.045100}: enqueue packet 251 (accum_skew_us = 25100) +sys={5.065200}, mono={5.065200}: enqueue packet 252 (accum_skew_us = 25200) +sys={5.085300}, mono={5.085300}: enqueue packet 253 (accum_skew_us = 25300) +sys={5.105400}, mono={5.105400}: enqueue packet 254 (accum_skew_us = 25400) +sys={5.125500}, mono={5.125500}: enqueue packet 255 (accum_skew_us = 25500) +sys={5.145600}, mono={5.145600}: enqueue packet 256 (accum_skew_us = 25600) +sys={5.165700}, mono={5.165700}: enqueue packet 257 (accum_skew_us = 25700) +sys={5.185800}, mono={5.185800}: enqueue packet 258 (accum_skew_us = 25800) +sys={5.205900}, mono={5.205900}: enqueue packet 259 (accum_skew_us = 25900) +sys={5.226000}, mono={5.226000}: enqueue packet 260 (accum_skew_us = 26000) +sys={5.246100}, mono={5.246100}: enqueue packet 261 (accum_skew_us = 26100) +sys={5.266200}, mono={5.266200}: enqueue packet 262 (accum_skew_us = 26200) +sys={5.286300}, mono={5.286300}: enqueue packet 263 (accum_skew_us = 26300) +sys={5.306400}, mono={5.306400}: enqueue packet 264 (accum_skew_us = 26400) +sys={5.326500}, mono={5.326500}: enqueue packet 265 (accum_skew_us = 26500) +sys={5.346600}, mono={5.346600}: enqueue packet 266 (accum_skew_us = 26600) +sys={5.366700}, mono={5.366700}: enqueue packet 267 (accum_skew_us = 26700) +sys={5.386800}, mono={5.386800}: enqueue packet 268 (accum_skew_us = 26800) +sys={5.406900}, mono={5.406900}: enqueue packet 269 (accum_skew_us = 26900) +sys={5.427000}, mono={5.427000}: enqueue packet 270 (accum_skew_us = 27000) +sys={5.447100}, mono={5.447100}: enqueue packet 271 (accum_skew_us = 27100) +sys={5.467200}, mono={5.467200}: enqueue packet 272 (accum_skew_us = 27200) +sys={5.487300}, mono={5.487300}: enqueue packet 273 (accum_skew_us = 27300) +sys={5.507400}, mono={5.507400}: enqueue packet 274 (accum_skew_us = 27400) +sys={5.527500}, mono={5.527500}: enqueue packet 275 (accum_skew_us = 27500) +sys={5.547600}, mono={5.547600}: enqueue packet 276 (accum_skew_us = 27600) +sys={5.567700}, mono={5.567700}: enqueue packet 277 (accum_skew_us = 27700) +sys={5.587800}, mono={5.587800}: enqueue packet 278 (accum_skew_us = 27800) +sys={5.607900}, mono={5.607900}: enqueue packet 279 (accum_skew_us = 27900) +sys={5.628000}, mono={5.628000}: enqueue packet 280 (accum_skew_us = 28000) +sys={5.648100}, mono={5.648100}: enqueue packet 281 (accum_skew_us = 28100) +sys={5.668200}, mono={5.668200}: enqueue packet 282 (accum_skew_us = 28200) +sys={5.688300}, mono={5.688300}: enqueue packet 283 (accum_skew_us = 28300) +sys={5.708400}, mono={5.708400}: enqueue packet 284 (accum_skew_us = 28400) +sys={5.728500}, mono={5.728500}: enqueue packet 285 (accum_skew_us = 28500) +sys={5.748600}, mono={5.748600}: enqueue packet 286 (accum_skew_us = 28600) +sys={5.768700}, mono={5.768700}: enqueue packet 287 (accum_skew_us = 28700) +sys={5.788800}, mono={5.788800}: enqueue packet 288 (accum_skew_us = 28800) +sys={5.808900}, mono={5.808900}: enqueue packet 289 (accum_skew_us = 28900) +sys={5.829000}, mono={5.829000}: enqueue packet 290 (accum_skew_us = 29000) +sys={5.849100}, mono={5.849100}: enqueue packet 291 (accum_skew_us = 29100) +sys={5.869200}, mono={5.869200}: enqueue packet 292 (accum_skew_us = 29200) +sys={5.889300}, mono={5.889300}: enqueue packet 293 (accum_skew_us = 29300) +sys={5.909400}, mono={5.909400}: enqueue packet 294 (accum_skew_us = 29400) +sys={5.929500}, mono={5.929500}: enqueue packet 295 (accum_skew_us = 29500) +sys={5.949600}, mono={5.949600}: enqueue packet 296 (accum_skew_us = 29600) +sys={5.969700}, mono={5.969700}: enqueue packet 297 (accum_skew_us = 29700) +sys={5.989800}, mono={5.989800}: enqueue packet 298 (accum_skew_us = 29800) +sys={6.009900}, mono={6.009900}: enqueue packet 299 (accum_skew_us = 29900) +sys={6.030000}, mono={6.030000}: enqueue packet 300 (accum_skew_us = 30000) +sys={6.050100}, mono={6.050100}: enqueue packet 301 (accum_skew_us = 30100) +sys={6.070200}, mono={6.070200}: enqueue packet 302 (accum_skew_us = 30200) +sys={6.090300}, mono={6.090300}: enqueue packet 303 (accum_skew_us = 30300) +sys={6.110400}, mono={6.110400}: enqueue packet 304 (accum_skew_us = 30400) +sys={6.130500}, mono={6.130500}: enqueue packet 305 (accum_skew_us = 30500) +sys={6.150600}, mono={6.150600}: enqueue packet 306 (accum_skew_us = 30600) +sys={6.170700}, mono={6.170700}: enqueue packet 307 (accum_skew_us = 30700) +sys={6.190800}, mono={6.190800}: enqueue packet 308 (accum_skew_us = 30800) +sys={6.210900}, mono={6.210900}: enqueue packet 309 (accum_skew_us = 30900) +sys={6.231000}, mono={6.231000}: enqueue packet 310 (accum_skew_us = 31000) +sys={6.251100}, mono={6.251100}: enqueue packet 311 (accum_skew_us = 31100) +sys={6.271200}, mono={6.271200}: enqueue packet 312 (accum_skew_us = 31200) +sys={6.291300}, mono={6.291300}: enqueue packet 313 (accum_skew_us = 31300) +sys={6.311400}, mono={6.311400}: enqueue packet 314 (accum_skew_us = 31400) +sys={6.331500}, mono={6.331500}: enqueue packet 315 (accum_skew_us = 31500) +sys={6.351600}, mono={6.351600}: enqueue packet 316 (accum_skew_us = 31600) +sys={6.371700}, mono={6.371700}: enqueue packet 317 (accum_skew_us = 31700) +sys={6.391800}, mono={6.391800}: enqueue packet 318 (accum_skew_us = 31800) +sys={6.411900}, mono={6.411900}: enqueue packet 319 (accum_skew_us = 31900) +sys={6.432000}, mono={6.432000}: enqueue packet 320 (accum_skew_us = 32000) +sys={6.452100}, mono={6.452100}: enqueue packet 321 (accum_skew_us = 32100) +sys={6.472200}, mono={6.472200}: enqueue packet 322 (accum_skew_us = 32200) +sys={6.492300}, mono={6.492300}: enqueue packet 323 (accum_skew_us = 32300) +sys={6.512400}, mono={6.512400}: enqueue packet 324 (accum_skew_us = 32400) +sys={6.532500}, mono={6.532500}: enqueue packet 325 (accum_skew_us = 32500) +sys={6.552600}, mono={6.552600}: enqueue packet 326 (accum_skew_us = 32600) +sys={6.572700}, mono={6.572700}: enqueue packet 327 (accum_skew_us = 32700) +sys={6.592800}, mono={6.592800}: enqueue packet 328 (accum_skew_us = 32800) +sys={6.612900}, mono={6.612900}: enqueue packet 329 (accum_skew_us = 32900) +sys={6.633000}, mono={6.633000}: enqueue packet 330 (accum_skew_us = 33000) +sys={6.653100}, mono={6.653100}: enqueue packet 331 (accum_skew_us = 33100) +sys={6.673200}, mono={6.673200}: enqueue packet 332 (accum_skew_us = 33200) +sys={6.693300}, mono={6.693300}: enqueue packet 333 (accum_skew_us = 33300) +sys={6.713400}, mono={6.713400}: enqueue packet 334 (accum_skew_us = 33400) +sys={6.733500}, mono={6.733500}: enqueue packet 335 (accum_skew_us = 33500) +sys={6.753600}, mono={6.753600}: enqueue packet 336 (accum_skew_us = 33600) +sys={6.773700}, mono={6.773700}: enqueue packet 337 (accum_skew_us = 33700) +sys={6.793800}, mono={6.793800}: enqueue packet 338 (accum_skew_us = 33800) +sys={6.813900}, mono={6.813900}: enqueue packet 339 (accum_skew_us = 33900) +sys={6.834000}, mono={6.834000}: enqueue packet 340 (accum_skew_us = 34000) +sys={6.854100}, mono={6.854100}: enqueue packet 341 (accum_skew_us = 34100) +sys={6.874200}, mono={6.874200}: enqueue packet 342 (accum_skew_us = 34200) +sys={6.894300}, mono={6.894300}: enqueue packet 343 (accum_skew_us = 34300) +sys={6.914400}, mono={6.914400}: enqueue packet 344 (accum_skew_us = 34400) +sys={6.934500}, mono={6.934500}: enqueue packet 345 (accum_skew_us = 34500) +sys={6.954600}, mono={6.954600}: enqueue packet 346 (accum_skew_us = 34600) +sys={6.974700}, mono={6.974700}: enqueue packet 347 (accum_skew_us = 34700) +sys={6.994800}, mono={6.994800}: enqueue packet 348 (accum_skew_us = 34800) +sys={7.014900}, mono={7.014900}: enqueue packet 349 (accum_skew_us = 34900) +sys={7.035000}, mono={7.035000}: enqueue packet 350 (accum_skew_us = 35000) +sys={7.055100}, mono={7.055100}: enqueue packet 351 (accum_skew_us = 35100) +sys={7.075200}, mono={7.075200}: enqueue packet 352 (accum_skew_us = 35200) +sys={7.095300}, mono={7.095300}: enqueue packet 353 (accum_skew_us = 35300) +sys={7.115400}, mono={7.115400}: enqueue packet 354 (accum_skew_us = 35400) +sys={7.135500}, mono={7.135500}: enqueue packet 355 (accum_skew_us = 35500) +sys={7.155600}, mono={7.155600}: enqueue packet 356 (accum_skew_us = 35600) +sys={7.175700}, mono={7.175700}: enqueue packet 357 (accum_skew_us = 35700) +sys={7.195800}, mono={7.195800}: enqueue packet 358 (accum_skew_us = 35800) +sys={7.215900}, mono={7.215900}: enqueue packet 359 (accum_skew_us = 35900) +sys={7.236000}, mono={7.236000}: enqueue packet 360 (accum_skew_us = 36000) +sys={7.256100}, mono={7.256100}: enqueue packet 361 (accum_skew_us = 36100) +sys={7.276200}, mono={7.276200}: enqueue packet 362 (accum_skew_us = 36200) +sys={7.296300}, mono={7.296300}: enqueue packet 363 (accum_skew_us = 36300) +sys={7.316400}, mono={7.316400}: enqueue packet 364 (accum_skew_us = 36400) +sys={7.336500}, mono={7.336500}: enqueue packet 365 (accum_skew_us = 36500) +sys={7.356600}, mono={7.356600}: enqueue packet 366 (accum_skew_us = 36600) +sys={7.376700}, mono={7.376700}: enqueue packet 367 (accum_skew_us = 36700) +sys={7.396800}, mono={7.396800}: enqueue packet 368 (accum_skew_us = 36800) +sys={7.416900}, mono={7.416900}: enqueue packet 369 (accum_skew_us = 36900) +sys={7.437000}, mono={7.437000}: enqueue packet 370 (accum_skew_us = 37000) +sys={7.457100}, mono={7.457100}: enqueue packet 371 (accum_skew_us = 37100) +sys={7.477200}, mono={7.477200}: enqueue packet 372 (accum_skew_us = 37200) +sys={7.497300}, mono={7.497300}: enqueue packet 373 (accum_skew_us = 37300) +sys={7.517400}, mono={7.517400}: enqueue packet 374 (accum_skew_us = 37400) +sys={7.537500}, mono={7.537500}: enqueue packet 375 (accum_skew_us = 37500) +sys={7.557600}, mono={7.557600}: enqueue packet 376 (accum_skew_us = 37600) +sys={7.577700}, mono={7.577700}: enqueue packet 377 (accum_skew_us = 37700) +sys={7.597800}, mono={7.597800}: enqueue packet 378 (accum_skew_us = 37800) +sys={7.617900}, mono={7.617900}: enqueue packet 379 (accum_skew_us = 37900) +sys={7.638000}, mono={7.638000}: enqueue packet 380 (accum_skew_us = 38000) +sys={7.658100}, mono={7.658100}: enqueue packet 381 (accum_skew_us = 38100) +sys={7.678200}, mono={7.678200}: enqueue packet 382 (accum_skew_us = 38200) +sys={7.698300}, mono={7.698300}: enqueue packet 383 (accum_skew_us = 38300) +sys={7.718400}, mono={7.718400}: enqueue packet 384 (accum_skew_us = 38400) +sys={7.738500}, mono={7.738500}: enqueue packet 385 (accum_skew_us = 38500) +sys={7.758600}, mono={7.758600}: enqueue packet 386 (accum_skew_us = 38600) +sys={7.778700}, mono={7.778700}: enqueue packet 387 (accum_skew_us = 38700) +sys={7.798800}, mono={7.798800}: enqueue packet 388 (accum_skew_us = 38800) +sys={7.818900}, mono={7.818900}: enqueue packet 389 (accum_skew_us = 38900) +sys={7.839000}, mono={7.839000}: enqueue packet 390 (accum_skew_us = 39000) +sys={7.859100}, mono={7.859100}: enqueue packet 391 (accum_skew_us = 39100) +sys={7.879200}, mono={7.879200}: enqueue packet 392 (accum_skew_us = 39200) +sys={7.899300}, mono={7.899300}: enqueue packet 393 (accum_skew_us = 39300) +sys={7.919400}, mono={7.919400}: enqueue packet 394 (accum_skew_us = 39400) +sys={7.939500}, mono={7.939500}: enqueue packet 395 (accum_skew_us = 39500) +sys={7.959600}, mono={7.959600}: enqueue packet 396 (accum_skew_us = 39600) +sys={7.979700}, mono={7.979700}: enqueue packet 397 (accum_skew_us = 39700) +sys={7.999800}, mono={7.999800}: enqueue packet 398 (accum_skew_us = 39800) +sys={8.019900}, mono={8.019900}: enqueue packet 399 (accum_skew_us = 39900) +sys={8.040000}, mono={8.040000}: enqueue packet 400 (accum_skew_us = 40000) +sys={8.060100}, mono={8.060100}: enqueue packet 401 (accum_skew_us = 40100) +sys={8.080200}, mono={8.080200}: enqueue packet 402 (accum_skew_us = 40200) +sys={8.100300}, mono={8.100300}: enqueue packet 403 (accum_skew_us = 40300) +sys={8.120400}, mono={8.120400}: enqueue packet 404 (accum_skew_us = 40400) +sys={8.140500}, mono={8.140500}: enqueue packet 405 (accum_skew_us = 40500) +sys={8.160600}, mono={8.160600}: enqueue packet 406 (accum_skew_us = 40600) +sys={8.180700}, mono={8.180700}: enqueue packet 407 (accum_skew_us = 40700) +sys={8.200800}, mono={8.200800}: enqueue packet 408 (accum_skew_us = 40800) +sys={8.220900}, mono={8.220900}: enqueue packet 409 (accum_skew_us = 40900) +sys={8.241000}, mono={8.241000}: enqueue packet 410 (accum_skew_us = 41000) +sys={8.261100}, mono={8.261100}: enqueue packet 411 (accum_skew_us = 41100) +sys={8.281200}, mono={8.281200}: enqueue packet 412 (accum_skew_us = 41200) +sys={8.301300}, mono={8.301300}: enqueue packet 413 (accum_skew_us = 41300) +sys={8.321400}, mono={8.321400}: enqueue packet 414 (accum_skew_us = 41400) +sys={8.341500}, mono={8.341500}: enqueue packet 415 (accum_skew_us = 41500) +sys={8.361600}, mono={8.361600}: enqueue packet 416 (accum_skew_us = 41600) +sys={8.381700}, mono={8.381700}: enqueue packet 417 (accum_skew_us = 41700) +sys={8.401800}, mono={8.401800}: enqueue packet 418 (accum_skew_us = 41800) +sys={8.421900}, mono={8.421900}: enqueue packet 419 (accum_skew_us = 41900) +sys={8.442000}, mono={8.442000}: enqueue packet 420 (accum_skew_us = 42000) +sys={8.462100}, mono={8.462100}: enqueue packet 421 (accum_skew_us = 42100) +sys={8.482200}, mono={8.482200}: enqueue packet 422 (accum_skew_us = 42200) +sys={8.502300}, mono={8.502300}: enqueue packet 423 (accum_skew_us = 42300) +sys={8.522400}, mono={8.522400}: enqueue packet 424 (accum_skew_us = 42400) +sys={8.542500}, mono={8.542500}: enqueue packet 425 (accum_skew_us = 42500) +sys={8.562600}, mono={8.562600}: enqueue packet 426 (accum_skew_us = 42600) +sys={8.582700}, mono={8.582700}: enqueue packet 427 (accum_skew_us = 42700) +sys={8.602800}, mono={8.602800}: enqueue packet 428 (accum_skew_us = 42800) +sys={8.622900}, mono={8.622900}: enqueue packet 429 (accum_skew_us = 42900) +sys={8.643000}, mono={8.643000}: enqueue packet 430 (accum_skew_us = 43000) +sys={8.663100}, mono={8.663100}: enqueue packet 431 (accum_skew_us = 43100) +sys={8.683200}, mono={8.683200}: enqueue packet 432 (accum_skew_us = 43200) +sys={8.703300}, mono={8.703300}: enqueue packet 433 (accum_skew_us = 43300) +sys={8.723400}, mono={8.723400}: enqueue packet 434 (accum_skew_us = 43400) +sys={8.743500}, mono={8.743500}: enqueue packet 435 (accum_skew_us = 43500) +sys={8.763600}, mono={8.763600}: enqueue packet 436 (accum_skew_us = 43600) +sys={8.783700}, mono={8.783700}: enqueue packet 437 (accum_skew_us = 43700) +sys={8.803800}, mono={8.803800}: enqueue packet 438 (accum_skew_us = 43800) +sys={8.823900}, mono={8.823900}: enqueue packet 439 (accum_skew_us = 43900) +sys={8.844000}, mono={8.844000}: enqueue packet 440 (accum_skew_us = 44000) +sys={8.864100}, mono={8.864100}: enqueue packet 441 (accum_skew_us = 44100) +sys={8.884200}, mono={8.884200}: enqueue packet 442 (accum_skew_us = 44200) +sys={8.904300}, mono={8.904300}: enqueue packet 443 (accum_skew_us = 44300) +sys={8.924400}, mono={8.924400}: enqueue packet 444 (accum_skew_us = 44400) +sys={8.944500}, mono={8.944500}: enqueue packet 445 (accum_skew_us = 44500) +sys={8.964600}, mono={8.964600}: enqueue packet 446 (accum_skew_us = 44600) +sys={8.984700}, mono={8.984700}: enqueue packet 447 (accum_skew_us = 44700) +sys={9.004800}, mono={9.004800}: enqueue packet 448 (accum_skew_us = 44800) +sys={9.024900}, mono={9.024900}: enqueue packet 449 (accum_skew_us = 44900) OK: Test passed diff --git a/tests/jibuf/jibuf_tool.c b/tests/jibuf/jibuf_tool.c index 830c8cf..c8d8bda 100644 --- a/tests/jibuf/jibuf_tool.c +++ b/tests/jibuf/jibuf_tool.c @@ -47,6 +47,7 @@ struct timeval tx_prev_time; struct timeval tx_time; uint32_t tx_delay; + int32_t skew_us; struct checkpoint prequeue; struct checkpoint postqueue; }; @@ -60,6 +61,7 @@ static bool opt_debug_human; static bool opt_debug_table; static bool opt_osmux; +static bool opt_skew; static char* opt_pcap_file; uint32_t opt_buffer_min = 60; uint32_t opt_buffer_max = 500; @@ -165,12 +167,12 @@ if (opt_debug_human) { uint32_t total_delay_ms = timeval2ms(&total_delay); LOGP(DLJIBUF, LOGL_DEBUG, "%s: seq=%"PRIu16" ts=%"PRIu32" (%ld.%06ld) tx_delay=%"PRIu32 \ - " end_delay=%"PRIu32" pre_trans=%d pre_jitter=%f post_trans=%d post_jitter=%f\n", + " end_delay=%"PRIu32" pre_trans=%d pre_jitter=%f post_trans=%d post_jitter=%f skew=%"PRId32"\n", info, ntohs(rtph->sequence), ntohl(rtph->timestamp), pinfo->tx_time.tv_sec, pinfo->tx_time.tv_usec, pinfo->tx_delay, total_delay_ms, pinfo->prequeue.transit, pinfo->prequeue.jitter, - pinfo->postqueue.transit, pinfo->postqueue.jitter); + pinfo->postqueue.transit, pinfo->postqueue.jitter, pinfo->skew_us); if (pinfo->prequeue.jitter < pinfo->postqueue.jitter) LOGP(DLJIBUF, LOGL_ERROR, "JITTER HIGHER THAN REF: seq=%"PRIu16" ts=%"PRIu32 \ @@ -190,12 +192,12 @@ uint32_t tx_time_ms = timeval2ms(&pinfo->tx_time); uint32_t prequeue_time_ms = timeval2ms(&pinfo->prequeue.ts); uint32_t postqueue_time_ms = timeval2ms(&pinfo->postqueue.ts); - fprintf(stderr, "%"PRIu16"\t%"PRIu32"\t%"PRIu32"\t%"PRIu32"\t%d\t%d\t%f\t%f\t%"PRIu32"\t%"PRIu32"\n", + fprintf(stderr, "%"PRIu16"\t%"PRIu32"\t%"PRIu32"\t%"PRIu32"\t%d\t%d\t%f\t%f\t%"PRIu32"\t%"PRIu32"\t%f\n", ntohs(rtph->sequence), tx_time_ms, prequeue_time_ms, postqueue_time_ms, pinfo->prequeue.transit, pinfo->postqueue.transit, pinfo->prequeue.jitter, pinfo->postqueue.jitter, - packets_dropped, jb->threshold_delay); + packets_dropped, jb->threshold_delay, (double)jb->skew_us/1000.0); } } @@ -316,6 +318,10 @@ prequeue_prev.seq = htons(rtph->sequence); int n = osmo_jibuf_enqueue(jb, msg); + + /* skew has been updated with this new packet. We pick the updated one + * as it's the one applied to this packet. */ + pinfo->skew_us = jb->skew_us; if (n<0) { pkt_add_result(msg, true); @@ -482,7 +488,7 @@ osmo_jibuf_set_min_delay(jb, GENERATED_JITTER_MS - RTP_FREQ_MS); osmo_jibuf_set_max_delay(jb, GENERATED_JITTER_MS + RTP_FREQ_MS*2); - + osmo_jibuf_enable_skew_compensation(jb, opt_skew); osmo_jibuf_set_dequeue_cb(jb, dequeue_cb, NULL); /* first run */ @@ -522,6 +528,7 @@ osmo_jibuf_set_dequeue_cb(jb, dequeue_cb, NULL); osmo_jibuf_set_min_delay(jb, opt_buffer_min); osmo_jibuf_set_max_delay(jb, opt_buffer_max); + osmo_jibuf_enable_skew_compensation(jb, opt_skew); /* first run */ pcap_pkt_timer_cb(NULL); @@ -536,13 +543,14 @@ static void print_help(void) { - printf("jibuf_test [-r] [-p pcap] [-o] [-d] [-g] [-m ms] [-M ms]\n"); + printf("jibuf_test [-r] [-p pcap] [-o] [-d] [-g] [-s] [-m ms] [-M ms]\n"); printf(" -h Print this help message\n"); printf(" -r Run test with randomly generated jitter\n"); printf(" -p Run test with specified pcap file\n"); printf(" -o The pcap contains OSMUX packets isntead of RTP\n"); printf(" -d Enable packet trace debug suitable for humans\n"); printf(" -t Enable packet trace debug suitable for gnuplot\n"); + printf(" -s Enable skew estimation and compensation algorithm on the jitter-buffer\n"); printf(" -m Minimum buffer size for the jitter-buffer, in ms (only used in -p mode)\n"); printf(" -M Maximum buffer size for the jitter-buffer, in ms (only used in -p mode)\n"); } @@ -551,7 +559,7 @@ { int opt; - while ((opt = getopt(argc, argv, "hdtrop:m:M:")) != -1) { + while ((opt = getopt(argc, argv, "hdtrosp:m:M:")) != -1) { switch (opt) { case 'h': print_help(); @@ -568,6 +576,9 @@ case 'o': opt_osmux = true; break; + case 's': + opt_skew = true; + break; case 'p': opt_pcap_file = strdup(optarg); break; diff --git a/tests/jibuf/jitter.plt b/tests/jibuf/jitter.plt index 0235170..fb606cf 100644 --- a/tests/jibuf/jitter.plt +++ b/tests/jibuf/jitter.plt @@ -33,6 +33,7 @@ '/tmp/bla' using 4:8 with linespoints title 'post.jitter' axes x1y1, \ '/tmp/bla' using 3:9 with linespoints title 'pre.dropped' axes x1y1, \ '/tmp/bla' using 3:10 with linespoints title 'pre.buffer' axes x1y1, \ + '/tmp/bla' using 3:11 with linespoints title 'pre.skew' axes x1y1, \ '/tmp/bla' using 4:((column(4)-column(2))) with linespoints title 'post.delay' axes x1y1 } else { @@ -43,6 +44,7 @@ '/tmp/bla' using 4:8 with linespoints title 'post.jitter' axes x1y1, \ '/tmp/bla' using 3:9 with linespoints title 'pre.dropped' axes x1y1, \ '/tmp/bla' using 3:10 with linespoints title 'pre.buffer' axes x1y1, \ + '/tmp/bla' using 3:11 with linespoints title 'pre.skew' axes x1y1, \ '/tmp/bla' using 3:((column(3)-column(2))) with linespoints title 'pre.delay' axes x1y1, \ '/tmp/bla' using 4:((column(4)-column(2))) with linespoints title 'post.delay' axes x1y1 } -- To view, visit https://gerrit.osmocom.org/7781 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newpatchset Gerrit-Change-Id: Ifae633d53107417a8e2f9b0f200d2711db72d199 Gerrit-PatchSet: 2 Gerrit-Project: libosmo-netif Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Jenkins Builder From gerrit-no-reply at lists.osmocom.org Fri Apr 13 14:19:07 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Fri, 13 Apr 2018 14:19:07 +0000 Subject: [PATCH] libosmo-netif[master]: jibuf: Add initial implementation of Jitter Buffer In-Reply-To: References: Message-ID: Hello Harald Welte, Jenkins Builder, I'd like you to reexamine a change. Please visit https://gerrit.osmocom.org/7773 to look at the new patch set (#2). jibuf: Add initial implementation of Jitter Buffer Change-Id: I9688ba9c4d5b733b9f29d0f15f73750f9271ef55 --- M include/osmocom/netif/Makefile.am A include/osmocom/netif/jibuf.h M src/Makefile.am A src/jibuf.c M tests/Makefile.am A tests/jibuf/jibuf_test.c A tests/jibuf/jibuf_test.ok M tests/testsuite.at 8 files changed, 1,407 insertions(+), 2 deletions(-) git pull ssh://gerrit.osmocom.org:29418/libosmo-netif refs/changes/73/7773/2 diff --git a/include/osmocom/netif/Makefile.am b/include/osmocom/netif/Makefile.am index cbaff5c..0db78fb 100644 --- a/include/osmocom/netif/Makefile.am +++ b/include/osmocom/netif/Makefile.am @@ -3,6 +3,7 @@ osmonetif_HEADERS = amr.h \ channel.h \ datagram.h \ + jibuf.h \ osmux.h \ ipa.h \ ipa_unit.h \ diff --git a/include/osmocom/netif/jibuf.h b/include/osmocom/netif/jibuf.h new file mode 100644 index 0000000..6273983 --- /dev/null +++ b/include/osmocom/netif/jibuf.h @@ -0,0 +1,63 @@ +#pragma once + +#include +#include +#include + +#include + +/*! \defgroup jibuf Osmocom Jitter Buffer + * @{ + */ + +/*! \file jibuf.h + * \brief Osmocom Jitter Buffer helpers + */ + +typedef void (*osmo_jibuf_dequeue_cb)(struct msgb *msg, void *data); + +/*! \brief A structure representing a single instance of a jitter buffer */ +struct osmo_jibuf { + void *talloc_ctx; + bool started; + struct osmo_timer_list timer; + struct llist_head msg_list; /* sorted by output ts */ + uint32_t min_delay; /* in msec */ + uint32_t max_delay; /* in msec */ + uint32_t threshold_delay; /* in msec */ + + osmo_jibuf_dequeue_cb dequeue_cb; + void *dequeue_cb_data; + + /* number of pkt drops since we last changed the buffer size */ + uint32_t last_dropped; + uint32_t consecutive_drops; + + uint32_t ref_rx_ts; + uint32_t ref_tx_ts; + uint16_t ref_tx_seq; + + struct timeval last_enqueue_time; + struct timeval next_dequeue_time; + + struct { + uint32_t total_enqueued; + uint64_t total_dropped; + } stats; +}; + + +struct osmo_jibuf *osmo_jibuf_alloc(void *talloc_ctx); + +void osmo_jibuf_delete(struct osmo_jibuf *jb); + +int osmo_jibuf_enqueue(struct osmo_jibuf *jb, struct msgb *msg); + +bool osmo_jibuf_empty(struct osmo_jibuf *jb); + +void osmo_jibuf_set_min_delay(struct osmo_jibuf *jb, uint32_t min_delay); +void osmo_jibuf_set_max_delay(struct osmo_jibuf *jb, uint32_t max_delay); + +void osmo_jibuf_set_dequeue_cb(struct osmo_jibuf *jb, osmo_jibuf_dequeue_cb dequeue_cb, void* cb_data); + +/*! @} */ diff --git a/src/Makefile.am b/src/Makefile.am index 81a55b4..79e3685 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -18,6 +18,7 @@ datagram.c \ ipa.c \ ipa_unit.c \ + jibuf.c \ osmux.c \ rs232.c \ rtp.c \ diff --git a/src/jibuf.c b/src/jibuf.c new file mode 100644 index 0000000..c3d6bad --- /dev/null +++ b/src/jibuf.c @@ -0,0 +1,381 @@ +/* (C) 2017 by sysmocom - s.f.m.c. GmbH + * + * Author: Pau Espin Pedrol + * + * SPDX-License-Identifier: GPL-2.0+ + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + */ + +#include +#include +#include + +#include +#include +#include +#include +#include + +#include +#include +#include + +#include + +/*! \addtogroup jibuf Osmocom Jitter Buffer + * @{ + */ + +/*! \file jibuf.c + * \brief Osmocom Jitter Buffer helpers + */ + +/* Sampling rate (in Hz) */ +/* TODO: SAMPLE RATE can be guessed from rtp.p_type */ +#define SAMPLE_RATE 8000 + +/* TUNABLE PARAMETERS: */ + +/* default {min,max}_delay values if set_{min,max}_delay() is never called */ +#define JIBUF_DEFAULT_MIN_DELAY_MS 60 +#define JIBUF_DEFAULT_MAX_DELAY_MS 200 + +/* How frequently (num of input packets) do we reselect a new reference? */ +#define JIBUF_REFERENCE_TS_FREQ 60 + +/* How frequently (num of input packets) do we check if we should adapt the + * buffer size (threshold_delay) ? */ +#define JIBUF_BUFFER_RECALC_FREQ 40 +/* How many pkts should be dropped at max every JIBUF_BUFFER_RECALC_FREQ input + * pkts? */ +#define JIBUF_ALLOWED_PKT_DROP 3 +/* How many consecutive pkts can be dropped before triggering a buffer size incr ? */ +#define JIBUF_ALLOWED_PKT_CONSECUTIVE_DROP 1 +/* How much do we incr/decr the buffer size every time we recalculate it? */ +#define JIBUF_BUFFER_INC_STEP 20 +#define JIBUF_BUFFER_DEC_STEP 5 + +struct osmo_jibuf_msgb_cb { + struct timeval ts; + unsigned long *old_cb; +}; + +#define JIBUF_MSGB_CB(__msgb) ((struct osmo_jibuf_msgb_cb *)&((__msgb)->cb[0])) + +static void ms2timeval(struct timeval *ts, uint32_t ms) +{ + ts->tv_sec = ms / 1000; + ts->tv_usec = (ms % 1000) * 1000; +} + +static uint32_t timeval2ms(const struct timeval *ts) +{ + return ts->tv_sec * 1000 + ts->tv_usec / 1000; +} + +static int clock_gettime_timeval(clockid_t clk_id, struct timeval *tp) +{ + struct timespec now; + int n; + + n = osmo_clock_gettime(clk_id, &now); + tp->tv_sec = now.tv_sec; + tp->tv_usec = now.tv_nsec / 1000; + + return n; +} + +static struct timeval *msgb_scheduled_ts(const struct msgb *msg) +{ + struct osmo_jibuf_msgb_cb *jbcb = JIBUF_MSGB_CB(msg); + return &jbcb->ts; +} + +/* Add msgb to the list sorted by its scheduled output ts */ +static void llist_add_sorted(struct msgb *msg, struct llist_head *msg_list) +{ + struct msgb *cur; + struct timeval *msg_ts = msgb_scheduled_ts(msg); + + /* TODO: not sure if I need to use _safe here */ + llist_for_each_entry(cur, msg_list, list) { + struct timeval *cur_ts = msgb_scheduled_ts(cur); + if (timercmp(msg_ts, cur_ts, <)) { + __llist_add(&msg->list, cur->list.prev, &cur->list); + return; + } + } + + /* we reached the end, add to the tail: */ + llist_add_tail(&msg->list, msg_list); + +} + +static uint16_t msg_get_sequence(struct msgb *msg) +{ + struct rtp_hdr *rtph = osmo_rtp_get_hdr(msg); + return ntohs(rtph->sequence); +} + +static uint32_t msg_get_timestamp(struct msgb *msg) +{ + struct rtp_hdr *rtph = osmo_rtp_get_hdr(msg); + return ntohl(rtph->timestamp); +} + +static int32_t samples2ms(int32_t samples) +{ + /* XXX: SAMPLE RATE can be guessed from rtp.p_type */ + return samples * 1000 / SAMPLE_RATE; +} + +/* Calculates pkt delay related to reference pkt. Similar concept to D(i,j) as + * defined in RFC3550 (RTP). */ +static int calc_pkt_rel_delay(struct osmo_jibuf *jb, struct msgb *msg) +{ + uint32_t current_rx_ts = timeval2ms(&jb->last_enqueue_time); + uint32_t current_tx_ts = msg_get_timestamp(msg); + + return samples2ms((current_tx_ts - jb->ref_tx_ts)) - (current_rx_ts - jb->ref_rx_ts); +} + +static void msg_set_as_reference(struct osmo_jibuf *jb, struct msgb *msg) +{ + jb->ref_rx_ts = timeval2ms(&jb->last_enqueue_time); + jb->ref_tx_ts = msg_get_timestamp(msg); + jb->ref_tx_seq = msg_get_sequence(msg); + + LOGP(DLJIBUF, LOGL_DEBUG, "New reference (seq=%"PRIu16" rx=%"PRIu32 \ + " tx=%"PRIu32")\n", jb->ref_tx_seq, jb->ref_rx_ts, jb->ref_tx_ts); +} + +static void dequeue_msg(struct osmo_jibuf *jb, struct msgb *msg) +{ + unsigned long *old_cb = JIBUF_MSGB_CB(msg)->old_cb; + memcpy(msg->cb, old_cb, sizeof(msg->cb)); + talloc_free(old_cb); + llist_del(&msg->list); + + jb->dequeue_cb(msg, jb->dequeue_cb_data); +} + +static void timer_expired(void *data) +{ + struct osmo_jibuf *jb = (struct osmo_jibuf*) data; + struct timeval delay_ts, now; + struct msgb *msg, *next; + + llist_for_each_entry_safe(msg, next, &jb->msg_list, list) { + struct timeval *msg_ts = msgb_scheduled_ts(msg); + clock_gettime_timeval(CLOCK_MONOTONIC, &now); + if (timercmp(msg_ts, &now, >)) { + jb->next_dequeue_time = *msg_ts; + timersub(msg_ts, &now, &delay_ts); + osmo_timer_schedule(&jb->timer, + delay_ts.tv_sec, delay_ts.tv_usec); + return; + } + + dequeue_msg(jb, msg); + } + + /* XXX: maybe try to tune the threshold based on the calculated output jitter? */ + /* XXX: try to find holes in the list and create fake pkts to improve the + jitter when packets do not arrive on time */ +} + +static void recalc_threshold_delay(struct osmo_jibuf *jb) +{ + + /* Recalculate every JIBUF_RECALC_FREQ_PKTS handled packets, or if we have too + many consecutive drops */ + uint32_t sum_pkts = jb->stats.total_enqueued + jb->stats.total_dropped + + jb->last_dropped; + + if (jb->consecutive_drops <= JIBUF_ALLOWED_PKT_CONSECUTIVE_DROP && + sum_pkts % JIBUF_BUFFER_RECALC_FREQ != 0) + return; + + if (jb->consecutive_drops > JIBUF_ALLOWED_PKT_CONSECUTIVE_DROP || + jb->last_dropped > JIBUF_ALLOWED_PKT_DROP) + jb->threshold_delay = OSMO_MIN( + jb->threshold_delay + JIBUF_BUFFER_INC_STEP, + jb->max_delay); + else + jb->threshold_delay = OSMO_MAX( + jb->threshold_delay - JIBUF_BUFFER_DEC_STEP, + jb->min_delay); + LOGP(DLJIBUF, LOGL_DEBUG, "New threshold: %u ms (freq=%d dropped=%d/%d consecutive=%d/%d)\n", + jb->threshold_delay, JIBUF_BUFFER_RECALC_FREQ, + jb->last_dropped, JIBUF_ALLOWED_PKT_DROP, + jb->consecutive_drops, JIBUF_ALLOWED_PKT_CONSECUTIVE_DROP); + + jb->stats.total_dropped += jb->last_dropped; + jb->last_dropped = 0; + +} + +//---------------------------------- + +/*! \brief Allocate a new jitter buffer instance + * \return the new allocated instance + */ +struct osmo_jibuf *osmo_jibuf_alloc(void *talloc_ctx) +{ + struct osmo_jibuf *jb; + jb = talloc_zero(talloc_ctx, struct osmo_jibuf); + + jb->min_delay = JIBUF_DEFAULT_MIN_DELAY_MS; + jb->max_delay = JIBUF_DEFAULT_MAX_DELAY_MS; + jb->threshold_delay = jb->min_delay; + + INIT_LLIST_HEAD(&jb->msg_list); + + jb->timer.cb = timer_expired; + jb->timer.data = jb; + + return jb; +} + +/*! \brief Destroy a previously allocated jitter buffer instance + * \param[in] jb Previously allocated (non-null) jitter buffer instance + * + * All the queued packets are dequeued before deleting the instance. + */ +void osmo_jibuf_delete(struct osmo_jibuf *jb) +{ + struct msgb *msg, *tmp; + osmo_timer_del(&jb->timer); + llist_for_each_entry_safe(msg, tmp, &jb->msg_list, list) + dequeue_msg(jb, msg); + + talloc_free(jb); +} + +/*! \brief Try to enqueue a packet into the jitter buffer + * \param[in] jb jitter buffer instance + * \param[in] msg msgb to enqueue, containing an RTP packet + * \return <0 if the packet was dropped, 0 otherwise + * + * This function calculates the delay for the enqueued packet. If the delay is + * bigger than the current buffer size, the function returns -1 and the caller + * owns the packet again and can free it if required. If the packet is enqueued, + * 0 is returned and the exact same packet (ownership transfer, no copy is made) + * will be available again through the dequeue_cb() when the queue timer for + * this packet expires. + */ +int osmo_jibuf_enqueue(struct osmo_jibuf *jb, struct msgb *msg) +{ + int rel_delay, delay; + struct timeval delay_ts, sched_ts; + + clock_gettime_timeval(CLOCK_MONOTONIC, &jb->last_enqueue_time); + + if (!jb->started) { + jb->started = true; + msg_set_as_reference(jb, msg); + rel_delay = 0; + } else { + rel_delay = calc_pkt_rel_delay(jb, msg); + } + + /* Avoid time skew with sender (or drop-everything state), + reselect a new reference from time to time */ + //if ((int)(msg_get_sequence(msg) - jb->ref_tx_seq) > JIBUF_REFERENCE_TS_FREQ) + // msg_set_as_reference(jb, msg); + + delay = jb->threshold_delay + rel_delay; + + /* packet too late, let's drop it and incr buffer size if encouraged */ + if (delay < 0) { + jb->last_dropped++; + jb->consecutive_drops++; + + LOGP(DLJIBUF, LOGL_DEBUG, "dropped %u > %u (seq=%"PRIu16" ts=%"PRIu32")\n", + rel_delay, jb->threshold_delay, msg_get_sequence(msg), + msg_get_timestamp(msg)); + + recalc_threshold_delay(jb); + return -1; + } else { + jb->consecutive_drops = 0; + jb->stats.total_enqueued++; + } + + ms2timeval(&delay_ts, (uint32_t) delay); + timeradd(&jb->last_enqueue_time, &delay_ts, &sched_ts); + + LOGP(DLJIBUF, LOGL_DEBUG, "enqueuing packet seq=%"PRIu16" rel=%d delay=%d" \ + " thres=%d {%lu.%06lu -> %lu.%06lu}\n", + msg_get_sequence(msg), rel_delay, delay, jb->threshold_delay, + jb->last_enqueue_time.tv_sec, jb->last_enqueue_time.tv_usec, + sched_ts.tv_sec, sched_ts.tv_usec); + + /* Add scheduled dequeue time in msg->cb so we can check it later */ + unsigned long *old_cb = talloc_memdup(jb->talloc_ctx, msg->cb, sizeof(msg->cb)); + struct osmo_jibuf_msgb_cb *jbcb = JIBUF_MSGB_CB(msg); + jbcb->ts = sched_ts; + jbcb->old_cb = old_cb; + + llist_add_sorted(msg, &jb->msg_list); + + + /* See if updating the timer is needed: */ + if (!osmo_timer_pending(&jb->timer) || + timercmp(&sched_ts, &jb->next_dequeue_time, <)) { + jb->next_dequeue_time = sched_ts; + osmo_timer_schedule(&jb->timer, 0, delay * 1000); + } + + /* Let's check packet loss stats to see if buffer_size must be changed */ + recalc_threshold_delay(jb); + + return 0; +} + +/*! \brief Check whether the jitter buffer instance has packets queued or not. + * \param[in] jb jitter buffer instance + * \return true if the queue is empty, false otherwise. + */ +bool osmo_jibuf_empty(struct osmo_jibuf *jb) +{ + return llist_empty(&jb->msg_list); +} + +/*! \brief Set minimum buffer size for the jitter buffer + * \param[in] jb jitter buffer instance + * \param[in] min_delay Minimum buffer size, as in minimum delay in milliseconds + */ +void osmo_jibuf_set_min_delay(struct osmo_jibuf *jb, uint32_t min_delay) +{ + jb->min_delay = min_delay ? min_delay : JIBUF_DEFAULT_MIN_DELAY_MS; + jb->threshold_delay = OSMO_MAX(jb->min_delay, jb->threshold_delay); +} + +/*! \brief Set maximum buffer size for the jitter buffer + * \param[in] jb jitter buffer instance + * \param[in] max_delay Maximum buffer size, as in maximum delay in milliseconds + */ +void osmo_jibuf_set_max_delay(struct osmo_jibuf *jb, uint32_t max_delay) +{ + jb->max_delay = max_delay ? max_delay : JIBUF_DEFAULT_MAX_DELAY_MS; + jb->threshold_delay = OSMO_MIN(jb->max_delay, jb->threshold_delay); +} + +/*! \brief Set dequeue callback for the jitter buffer + * \param[in] jb jitter buffer instance + * \param[in] dequeue_cb function pointer to call back when the dequeue timer for a given packet expires + * \param[in] cb_data data pointer to be passed to dequeue_cb together with the msgb. + */ +void osmo_jibuf_set_dequeue_cb(struct osmo_jibuf *jb, osmo_jibuf_dequeue_cb + dequeue_cb, void* cb_data) +{ + jb->dequeue_cb = dequeue_cb; + jb->dequeue_cb_data = cb_data; +} + +/*! @} */ diff --git a/tests/Makefile.am b/tests/Makefile.am index f99e276..bf1db1f 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -1,10 +1,13 @@ AM_CFLAGS = -Wall -I$(top_srcdir)/include $(LIBOSMOCORE_CFLAGS) -g AM_LDFLAGS = $(LIBOSMOCORE_LDFLAGS) -check_PROGRAMS = osmux/osmux_test +check_PROGRAMS = osmux/osmux_test jibuf/jibuf_test osmux_osmux_test_SOURCES = osmux/osmux_test.c osmux_osmux_test_LDADD = $(LIBOSMOCORE_LIBS) $(top_builddir)/src/libosmonetif.la + +jibuf_jibuf_test_SOURCES = jibuf/jibuf_test.c +jibuf_jibuf_test_LDADD = $(LIBOSMOCORE_LIBS) $(top_builddir)/src/libosmonetif.la # The `:;' works around a Bash 3.2 bug when the output is not writeable. $(srcdir)/package.m4: $(top_srcdir)/configure.ac @@ -25,7 +28,8 @@ } >'$(srcdir)/package.m4' EXTRA_DIST = testsuite.at $(srcdir)/package.m4 $(TESTSUITE) \ - osmux/osmux_test.ok + osmux/osmux_test.ok \ + jibuf/jibuf_test.ok DISTCLEANFILES = atconfig diff --git a/tests/jibuf/jibuf_test.c b/tests/jibuf/jibuf_test.c new file mode 100644 index 0000000..ba21906 --- /dev/null +++ b/tests/jibuf/jibuf_test.c @@ -0,0 +1,598 @@ +/* (C) 2017 by sysmocom - s.f.m.c. GmbH + * + * Author: Pau Espin Pedrol + * + * SPDX-License-Identifier: GPL-2.0+ + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include + +static struct osmo_jibuf *jb; + +static uint16_t rtp_next_seq; +static uint32_t rtp_next_ts; + +#define SAMPLES_PER_PKT 160 +#define TIME_RTP_PKT_MS 20 +/* RTP packet with AMR payload */ +static uint8_t rtp_pkt[] = { + 0x80, 0x62, 0x3f, 0xcc, 0x00, 0x01, 0xa7, 0x6f, /* RTP */ + 0x07, 0x09, 0x00, 0x62, 0x20, 0x14, 0xff, 0xd4, /* AMR */ + 0xf9, 0xff, 0xfb, 0xe7, 0xeb, 0xf9, 0x9f, 0xf8, + 0xf2, 0x26, 0x33, 0x65, 0x54, +}; + +/* ----------------------------- */ + +/* Logging related stuff */ +#define INT2IDX(x) (-1*(x)-1) +struct log_info_cat jibuf_test_cat[] = { + [INT2IDX(DLJIBUF)] = { + .name = "DLJIBUF", + .description = "Osmocom Jitter Buffer", + .enabled = 1, .loglevel = LOGL_DEBUG, + }, +}; +const struct log_info jibuf_test_log_info = { + .filter_fn = NULL, + .cat = jibuf_test_cat, + .num_cat = ARRAY_SIZE(jibuf_test_cat), +}; +/* ----------------------------- */ + +static void rtp_init(uint16_t seq, uint32_t timestamp) +{ + rtp_next_seq = seq; + rtp_next_ts = timestamp; +} + +static struct msgb *rtp_new(uint16_t seq, uint32_t timestamp) +{ + struct msgb *msg; + struct rtp_hdr *rtph; + + msg = msgb_alloc(1500, "test"); + if (!msg) + exit(EXIT_FAILURE); + memcpy(msg->data, rtp_pkt, sizeof(rtp_pkt)); + msgb_put(msg, sizeof(rtp_pkt)); + + rtph = osmo_rtp_get_hdr(msg); + rtph->sequence = htons(rtp_next_seq); + rtph->timestamp = htonl(rtp_next_ts); + return msg; +} + +static struct msgb *rtp_next(void) +{ + rtp_next_seq++; + rtp_next_ts += SAMPLES_PER_PKT; + return rtp_new(rtp_next_seq, rtp_next_ts); +} + +static void sigalarm_handler(int foo) +{ + printf("FAIL: test did not run successfully\n"); + exit(EXIT_FAILURE); +} + + +static void clock_debug(char* str) +{ + struct timespec ts; + struct timeval tv; + osmo_clock_gettime(CLOCK_MONOTONIC, &ts); + osmo_gettimeofday(&tv, NULL); + printf("sys={%lu.%06lu}, mono={%lu.%06lu}: %s\n", + tv.tv_sec, tv.tv_usec, ts.tv_sec, ts.tv_nsec/1000, str); +} + +static void clock_override_enable(bool enable) +{ + osmo_gettimeofday_override = enable; + osmo_clock_override_enable(CLOCK_MONOTONIC, enable); +} + +static void clock_override_set(long sec, long usec) +{ + struct timespec *mono; + osmo_gettimeofday_override_time.tv_sec = sec; + osmo_gettimeofday_override_time.tv_usec = usec; + mono = osmo_clock_override_gettimespec(CLOCK_MONOTONIC); + mono->tv_sec = sec; + mono->tv_nsec = usec*1000; + + clock_debug("clock_override_set"); +} + +static void clock_override_add(long sec, long usec) +{ + osmo_gettimeofday_override_add(sec, usec); + osmo_clock_override_add(CLOCK_MONOTONIC, sec, usec*1000); + clock_debug("clock_override_add"); +} + + +static void dequeue_cb(struct msgb *msg, void *data) +{ + struct rtp_hdr *rtph; + bool check_latest; + char buf[250]; + rtph = osmo_rtp_get_hdr(msg); + check_latest = rtph->sequence == htons(rtp_next_seq) && rtph->timestamp == htonl(rtp_next_ts); + snprintf(buf, sizeof(buf), "dequeue: seq=%"PRIu16" ts=%"PRIu32" %s", + ntohs(rtph->sequence), ntohl(rtph->timestamp), check_latest ? "LATEST" : "INTERMEDIATE"); + clock_debug(buf); + msgb_free(msg); +} + +#define ENQUEUE_NEXT(jb) { \ + struct msgb *_msg; \ + int _rc; \ + _msg = rtp_next(); \ + _rc = osmo_jibuf_enqueue(jb, _msg); \ + OSMO_ASSERT(!_rc); \ + } + +static void test_normal(void) +{ + int min_delay = 60; + + printf("===test_normal===\n"); + + clock_override_enable(true); + clock_override_set(0, 0); + rtp_init(32, 400); + jb = osmo_jibuf_alloc(NULL); + osmo_jibuf_set_dequeue_cb(jb, dequeue_cb, NULL); + osmo_jibuf_set_min_delay(jb, min_delay); + osmo_jibuf_set_max_delay(jb, 200); + + /* First rtp at t=0, should be scheduled in min_delay time */ + ENQUEUE_NEXT(jb); + clock_override_add(0, min_delay*1000); + clock_debug("first select, first dequed"); + osmo_select_main(0); + + /* We are at t=60, if we add a new packet and wait for 20msecs (next packet), we should show it dequeued*/ + ENQUEUE_NEXT(jb); + clock_override_add(0, TIME_RTP_PKT_MS*1000); + clock_debug("second select, one packet should be dequeued"); + osmo_select_main(0); + + /* We are at t=80, and only 2 packets were introduced. Let's add 2 more, should be dequeued by 80+40: */ + ENQUEUE_NEXT(jb); + ENQUEUE_NEXT(jb); + clock_override_add(0, TIME_RTP_PKT_MS*2*1000); + clock_debug("third select, two more dequed"); + osmo_select_main(0); + + /* t=120, 4 enqueued, 4 dequeued.*/ + OSMO_ASSERT(osmo_jibuf_empty(jb)); + + osmo_jibuf_delete(jb); +} + +static void test_delete_nonempty(void) +{ + int min_delay = 100; + + printf("===test_delete_nonempty===\n"); + + clock_override_enable(true); + clock_override_set(0, 0); + rtp_init(32, 400); + jb = osmo_jibuf_alloc(NULL); + osmo_jibuf_set_dequeue_cb(jb, dequeue_cb, NULL); + osmo_jibuf_set_min_delay(jb, min_delay); + osmo_jibuf_set_max_delay(jb, 200); + + ENQUEUE_NEXT(jb); + clock_override_add(0, TIME_RTP_PKT_MS*1000); + ENQUEUE_NEXT(jb); + clock_override_add(0, TIME_RTP_PKT_MS*1000); + ENQUEUE_NEXT(jb); + clock_override_add(0, TIME_RTP_PKT_MS*1000); + ENQUEUE_NEXT(jb); + + /* No need to update the time, all msgs should be dequeued at this time */ + OSMO_ASSERT(!osmo_jibuf_empty(jb)); + osmo_jibuf_delete(jb); +} + +static void test_packet_lost(void) +{ + int min_delay = 60; + + printf("===test_packet_lost===\n"); + + clock_override_enable(true); + clock_override_set(0, 0); + rtp_init(32, 400); + jb = osmo_jibuf_alloc(NULL); + osmo_jibuf_set_dequeue_cb(jb, dequeue_cb, NULL); + osmo_jibuf_set_min_delay(jb, min_delay); + osmo_jibuf_set_max_delay(jb, 200); + + /* First rtp at t=0, should be scheduled in min_delay time */ + clock_debug("enqueue 1st packet"); + ENQUEUE_NEXT(jb); + clock_override_add(0, TIME_RTP_PKT_MS*1000); + + clock_debug("packet lost: 2nd"); + clock_override_add(0, TIME_RTP_PKT_MS*1000); + clock_debug("packet lost: 3rd"); + clock_override_add(0, TIME_RTP_PKT_MS*1000); + clock_debug("packet lost: 4th"); + clock_override_add(0, TIME_RTP_PKT_MS*1000); + + /* We are at t=80 */ + clock_debug("enqueue 5th packet"); + ENQUEUE_NEXT(jb); + clock_override_add(0, min_delay*1000); + + /* We are at t=140, all out in order */ + osmo_select_main(0); + + OSMO_ASSERT(osmo_jibuf_empty(jb)); + + osmo_jibuf_delete(jb); +} + + +static void test_packet_drop(void) +{ + int min_delay = 60; + struct msgb *msg; + + printf("===test_packet_drop===\n"); + + clock_override_enable(true); + clock_override_set(0, 0); + rtp_init(32, 400); + jb = osmo_jibuf_alloc(NULL); + osmo_jibuf_set_dequeue_cb(jb, dequeue_cb, NULL); + osmo_jibuf_set_min_delay(jb, min_delay); + osmo_jibuf_set_max_delay(jb, 200); + + /* First rtp at t=0, should be scheduled in min_delay time */ + clock_debug("enqueue 1st packet"); + ENQUEUE_NEXT(jb); + clock_override_add(0, TIME_RTP_PKT_MS*1000); + clock_debug("enqueue 2nd packet"); + ENQUEUE_NEXT(jb); + clock_override_add(0, TIME_RTP_PKT_MS*1000); + clock_debug("enqueue 3rd packet"); + ENQUEUE_NEXT(jb); + clock_override_add(0, TIME_RTP_PKT_MS*1000); + clock_debug("enqueue 4th packet"); + ENQUEUE_NEXT(jb); + + /* We are at t=60, first comes out */ + osmo_select_main(0); + + /* We move to t=160, next packet in stream is too late:*/ + clock_override_add(0, 100*1000); + clock_debug("next packet should be dropped, too late"); + msg = rtp_next(); + OSMO_ASSERT(osmo_jibuf_enqueue(jb, msg) < 0); + msgb_free(msg); + + /* However, if we try to add a later one, it should work: */ + clock_debug("next packet should be enqueued"); + ENQUEUE_NEXT(jb); + + /* We are at t=160, all of them should be dequeued */ + osmo_select_main(0); + + /* t=160, 4 enqueued, 4 dequeued.*/ + OSMO_ASSERT(osmo_jibuf_empty(jb)); + + osmo_jibuf_delete(jb); +} + +static void test_packet_out_of_order(void) +{ + int min_delay = 60; + struct msgb *msg2, *msg3; + + printf("===test_packet_out_of_order===\n"); + + clock_override_enable(true); + clock_override_set(0, 0); + rtp_init(32, 400); + jb = osmo_jibuf_alloc(NULL); + osmo_jibuf_set_dequeue_cb(jb, dequeue_cb, NULL); + osmo_jibuf_set_min_delay(jb, min_delay); + osmo_jibuf_set_max_delay(jb, 200); + + /* First rtp at t=0, should be scheduled in min_delay time */ + clock_debug("enqueue 1st packet"); + ENQUEUE_NEXT(jb); + + /* 3rd packet arrives instead of 2nd one */ + msg2 = rtp_next(); + msg3 = rtp_next(); + clock_override_add(0, TIME_RTP_PKT_MS*2*1000); + clock_debug("enqueue 3rd packet"); + OSMO_ASSERT(osmo_jibuf_enqueue(jb, msg3) == 0); + clock_debug("enqueue 2nd packet"); + OSMO_ASSERT(osmo_jibuf_enqueue(jb, msg2) == 0); + + /* We are at t=100, all out in order */ + clock_override_add(0, min_delay*1000); + osmo_select_main(0); + + OSMO_ASSERT(osmo_jibuf_empty(jb)); + + osmo_jibuf_delete(jb); +} + +static void test_start_2nd_packet(void) +{ + int min_delay = 60; + struct msgb *msg1; + + printf("===test_start_2nd_packet===\n"); + + clock_override_enable(true); + clock_override_set(0, 0); + rtp_init(32, 400); + jb = osmo_jibuf_alloc(NULL); + osmo_jibuf_set_dequeue_cb(jb, dequeue_cb, NULL); + osmo_jibuf_set_min_delay(jb, min_delay); + osmo_jibuf_set_max_delay(jb, 200); + + /* First rtp at t=0, should be scheduled in min_delay time */ + clock_debug("1st packet is not yet enqueued"); + msg1 = rtp_next(); + clock_override_add(0, TIME_RTP_PKT_MS*2*1000); + + /* 2nd packet arrives instead of 2nd one */ + clock_debug("2nd packet is enqueuded as first"); + ENQUEUE_NEXT(jb); + + clock_debug("1st packet is enqueuded as second, should be enqueued with preference"); + OSMO_ASSERT(osmo_jibuf_enqueue(jb, msg1) == 0); + + /* 1st packet is dequeued */ + clock_override_add(0, (min_delay-TIME_RTP_PKT_MS)*1000); + osmo_select_main(0); + + /* 2nst packet is dequeued */ + clock_override_add(0, TIME_RTP_PKT_MS*1000); + osmo_select_main(0); + + OSMO_ASSERT(osmo_jibuf_empty(jb)); + + osmo_jibuf_delete(jb); +} + +static void test_buffer_threshold_change(void) +{ + int min_delay = 60; + struct msgb *msg; + uint32_t threshold_delay; + int i; + + printf("===test_buffer_threshold_change===\n"); + + clock_override_enable(true); + clock_override_set(0, 0); + rtp_init(32, 400); + jb = osmo_jibuf_alloc(NULL); + osmo_jibuf_set_dequeue_cb(jb, dequeue_cb, NULL); + osmo_jibuf_set_min_delay(jb, min_delay); + osmo_jibuf_set_max_delay(jb, 200); + + OSMO_ASSERT(min_delay == jb->threshold_delay); + threshold_delay = jb->threshold_delay; + + /* First rtp at t=0, should be scheduled in min_delay time */ + clock_debug("enqueue 1st packet"); + ENQUEUE_NEXT(jb); + clock_override_add(0, TIME_RTP_PKT_MS*1000); + clock_debug("enqueue 2nd packet"); + ENQUEUE_NEXT(jb); + clock_override_add(0, TIME_RTP_PKT_MS*1000); + clock_debug("enqueue 3rd packet"); + ENQUEUE_NEXT(jb); + clock_override_add(0, TIME_RTP_PKT_MS*1000); + clock_debug("enqueue 4th packet"); + ENQUEUE_NEXT(jb); + + /* We are at t=60, first comes out */ + osmo_select_main(0); + + /* We move to t=160, next packet in stream is too late:*/ + clock_override_add(0, 100*1000); + clock_debug("next packet should be dropped, too late"); + msg = rtp_next(); + OSMO_ASSERT(osmo_jibuf_enqueue(jb, msg) < 0); + msgb_free(msg); + + clock_override_add(0, TIME_RTP_PKT_MS*1000); + clock_debug("next packet is dropped, but buffer is increased"); + msg = rtp_next(); + OSMO_ASSERT(osmo_jibuf_enqueue(jb, msg) < 0); + msgb_free(msg); + OSMO_ASSERT(jb->threshold_delay > threshold_delay); + threshold_delay = jb->threshold_delay; + + clock_override_add(0, TIME_RTP_PKT_MS*1000); + clock_debug("next packet is enqueued since the buffer increased"); + ENQUEUE_NEXT(jb); + + /* As the last buffer was really late but still accepted, it is not delayed: */ + osmo_select_main(0); + + clock_debug("Enqueue late packets"); + for (i = 0; i<4; i++) { + ENQUEUE_NEXT(jb); + } + + clock_debug("Run perfectly for a while, buffer should decrease"); + for (i = 0; i<100; i++) { + clock_override_add(0, TIME_RTP_PKT_MS*1000); + ENQUEUE_NEXT(jb); + osmo_select_main(0); + } + clock_debug("Done, checking threshold and cleaning"); + OSMO_ASSERT(jb->threshold_delay < threshold_delay); + clock_override_add(0, jb->threshold_delay*1000); + osmo_select_main(0); + + OSMO_ASSERT(osmo_jibuf_empty(jb)); + + osmo_jibuf_delete(jb); +} + +static void test_seq_wraparound(void) +{ + int min_delay = 80; + + printf("===test_seq_wraparound===\n"); + + clock_override_enable(true); + clock_override_set(0, 0); + rtp_init(65533, 400); /* seq = 2^16 -3 */ + jb = osmo_jibuf_alloc(NULL); + osmo_jibuf_set_dequeue_cb(jb, dequeue_cb, NULL); + osmo_jibuf_set_min_delay(jb, min_delay); + osmo_jibuf_set_max_delay(jb, 200); + + clock_debug("enqueue 1st packet (seq=65534)"); + ENQUEUE_NEXT(jb); + clock_override_add(0, TIME_RTP_PKT_MS*1000); + clock_debug("enqueue 2nd packet (seq=65535)"); + ENQUEUE_NEXT(jb); + clock_override_add(0, TIME_RTP_PKT_MS*1000); + clock_debug("enqueue 3rd packet (seq=0, wraparound)"); + ENQUEUE_NEXT(jb); + clock_override_add(0, TIME_RTP_PKT_MS*1000); + clock_debug("enqueue 4th packet (seq=1)"); + ENQUEUE_NEXT(jb); + clock_override_add(0, TIME_RTP_PKT_MS*1000); + clock_debug("enqueue 5th packet (seq=2)"); + ENQUEUE_NEXT(jb); + + clock_debug("dequeue 1st packet (seq=65534)"); + osmo_select_main(0); + clock_override_add(0, TIME_RTP_PKT_MS*1000); + clock_debug("dequeue 2nd packet (seq=65535)"); + osmo_select_main(0); + clock_override_add(0, TIME_RTP_PKT_MS*1000); + clock_debug("dequeue 3rd packet (seq=0, wraparound)"); + osmo_select_main(0); + clock_override_add(0, TIME_RTP_PKT_MS*1000); + clock_debug("dequeue 4th packet (seq=1)"); + osmo_select_main(0); + clock_override_add(0, TIME_RTP_PKT_MS*1000); + clock_debug("dequeue 5th packet (seq=2)"); + osmo_select_main(0); + + OSMO_ASSERT(osmo_jibuf_empty(jb)); + + osmo_jibuf_delete(jb); +} + +static void test_timestamp_wraparound(void) +{ + int min_delay = 80; + unsigned int offset = 14; + + printf("===test_timestamp_wraparound===\n"); + + clock_override_enable(true); + clock_override_set(0, 0); + rtp_init(32, 4294966816 + offset); /* timestamp = 2^32 - 3*SAMPLES_PER_PKT + offset */ + jb = osmo_jibuf_alloc(NULL); + osmo_jibuf_set_dequeue_cb(jb, dequeue_cb, NULL); + osmo_jibuf_set_min_delay(jb, min_delay); + osmo_jibuf_set_max_delay(jb, 200); + + clock_debug("enqueue 1st packet (ts=4294966990)"); + ENQUEUE_NEXT(jb); + clock_override_add(0, TIME_RTP_PKT_MS*1000); + clock_debug("enqueue 2nd packet (ts=4294967150)"); + ENQUEUE_NEXT(jb); + clock_override_add(0, TIME_RTP_PKT_MS*1000); + clock_debug("enqueue 3rd packet (ts=14, wraparound)"); + ENQUEUE_NEXT(jb); + clock_override_add(0, TIME_RTP_PKT_MS*1000); + clock_debug("enqueue 4th packet (ts=174)"); + ENQUEUE_NEXT(jb); + clock_override_add(0, TIME_RTP_PKT_MS*1000); + clock_debug("enqueue 5th packet (ts=334)"); + ENQUEUE_NEXT(jb); + + clock_debug("dequeue 1st packet (ts=4294966990)"); + osmo_select_main(0); + clock_override_add(0, TIME_RTP_PKT_MS*1000); + clock_debug("dequeue 2nd packet (ts=4294967150)"); + osmo_select_main(0); + clock_override_add(0, TIME_RTP_PKT_MS*1000); + clock_debug("dequeue 3rd packet (ts=14, wraparound)"); + osmo_select_main(0); + clock_override_add(0, TIME_RTP_PKT_MS*1000); + clock_debug("dequeue 4th packet (ts=174)"); + osmo_select_main(0); + clock_override_add(0, TIME_RTP_PKT_MS*1000); + clock_debug("dequeue 5th packet (ts=334)"); + osmo_select_main(0); + + OSMO_ASSERT(osmo_jibuf_empty(jb)); + + osmo_jibuf_delete(jb); +} + +int main(int argc, char **argv) +{ + + if (signal(SIGALRM, sigalarm_handler) == SIG_ERR) { + perror("signal"); + exit(EXIT_FAILURE); + } + + osmo_init_logging(&jibuf_test_log_info); + log_set_print_filename(osmo_stderr_target, 0); + log_set_log_level(osmo_stderr_target, LOGL_DEBUG); + log_set_category_filter(osmo_stderr_target, DLJIBUF, 1, LOGL_DEBUG); + + alarm(10); + + test_normal(); + test_delete_nonempty(); + test_packet_lost(); + test_packet_drop(); + test_packet_out_of_order(); + test_start_2nd_packet(); + test_buffer_threshold_change(); + test_seq_wraparound(); + test_timestamp_wraparound(); + + fprintf(stdout, "OK: Test passed\n"); + return EXIT_SUCCESS; +} diff --git a/tests/jibuf/jibuf_test.ok b/tests/jibuf/jibuf_test.ok new file mode 100644 index 0000000..5a0f121 --- /dev/null +++ b/tests/jibuf/jibuf_test.ok @@ -0,0 +1,351 @@ +===test_normal=== +sys={0.000000}, mono={0.000000}: clock_override_set +sys={0.060000}, mono={0.060000}: clock_override_add +sys={0.060000}, mono={0.060000}: first select, first dequed +sys={0.060000}, mono={0.060000}: dequeue: seq=33 ts=560 LATEST +sys={0.080000}, mono={0.080000}: clock_override_add +sys={0.080000}, mono={0.080000}: second select, one packet should be dequeued +sys={0.080000}, mono={0.080000}: dequeue: seq=34 ts=720 LATEST +sys={0.120000}, mono={0.120000}: clock_override_add +sys={0.120000}, mono={0.120000}: third select, two more dequed +sys={0.120000}, mono={0.120000}: dequeue: seq=35 ts=880 INTERMEDIATE +sys={0.120000}, mono={0.120000}: dequeue: seq=36 ts=1040 LATEST +===test_delete_nonempty=== +sys={0.000000}, mono={0.000000}: clock_override_set +sys={0.020000}, mono={0.020000}: clock_override_add +sys={0.040000}, mono={0.040000}: clock_override_add +sys={0.060000}, mono={0.060000}: clock_override_add +sys={0.060000}, mono={0.060000}: dequeue: seq=33 ts=560 INTERMEDIATE +sys={0.060000}, mono={0.060000}: dequeue: seq=34 ts=720 INTERMEDIATE +sys={0.060000}, mono={0.060000}: dequeue: seq=35 ts=880 INTERMEDIATE +sys={0.060000}, mono={0.060000}: dequeue: seq=36 ts=1040 LATEST +===test_packet_lost=== +sys={0.000000}, mono={0.000000}: clock_override_set +sys={0.000000}, mono={0.000000}: enqueue 1st packet +sys={0.020000}, mono={0.020000}: clock_override_add +sys={0.020000}, mono={0.020000}: packet lost: 2nd +sys={0.040000}, mono={0.040000}: clock_override_add +sys={0.040000}, mono={0.040000}: packet lost: 3rd +sys={0.060000}, mono={0.060000}: clock_override_add +sys={0.060000}, mono={0.060000}: packet lost: 4th +sys={0.080000}, mono={0.080000}: clock_override_add +sys={0.080000}, mono={0.080000}: enqueue 5th packet +sys={0.140000}, mono={0.140000}: clock_override_add +sys={0.140000}, mono={0.140000}: dequeue: seq=33 ts=560 INTERMEDIATE +sys={0.140000}, mono={0.140000}: dequeue: seq=34 ts=720 LATEST +===test_packet_drop=== +sys={0.000000}, mono={0.000000}: clock_override_set +sys={0.000000}, mono={0.000000}: enqueue 1st packet +sys={0.020000}, mono={0.020000}: clock_override_add +sys={0.020000}, mono={0.020000}: enqueue 2nd packet +sys={0.040000}, mono={0.040000}: clock_override_add +sys={0.040000}, mono={0.040000}: enqueue 3rd packet +sys={0.060000}, mono={0.060000}: clock_override_add +sys={0.060000}, mono={0.060000}: enqueue 4th packet +sys={0.060000}, mono={0.060000}: dequeue: seq=33 ts=560 INTERMEDIATE +sys={0.160000}, mono={0.160000}: clock_override_add +sys={0.160000}, mono={0.160000}: next packet should be dropped, too late +sys={0.160000}, mono={0.160000}: next packet should be enqueued +sys={0.160000}, mono={0.160000}: dequeue: seq=34 ts=720 INTERMEDIATE +sys={0.160000}, mono={0.160000}: dequeue: seq=35 ts=880 INTERMEDIATE +sys={0.160000}, mono={0.160000}: dequeue: seq=36 ts=1040 INTERMEDIATE +sys={0.160000}, mono={0.160000}: dequeue: seq=38 ts=1360 LATEST +===test_packet_out_of_order=== +sys={0.000000}, mono={0.000000}: clock_override_set +sys={0.000000}, mono={0.000000}: enqueue 1st packet +sys={0.040000}, mono={0.040000}: clock_override_add +sys={0.040000}, mono={0.040000}: enqueue 3rd packet +sys={0.040000}, mono={0.040000}: enqueue 2nd packet +sys={0.100000}, mono={0.100000}: clock_override_add +sys={0.100000}, mono={0.100000}: dequeue: seq=33 ts=560 INTERMEDIATE +sys={0.100000}, mono={0.100000}: dequeue: seq=34 ts=720 INTERMEDIATE +sys={0.100000}, mono={0.100000}: dequeue: seq=35 ts=880 LATEST +===test_start_2nd_packet=== +sys={0.000000}, mono={0.000000}: clock_override_set +sys={0.000000}, mono={0.000000}: 1st packet is not yet enqueued +sys={0.040000}, mono={0.040000}: clock_override_add +sys={0.040000}, mono={0.040000}: 2nd packet is enqueuded as first +sys={0.040000}, mono={0.040000}: 1st packet is enqueuded as second, should be enqueued with preference +sys={0.080000}, mono={0.080000}: clock_override_add +sys={0.080000}, mono={0.080000}: dequeue: seq=33 ts=560 INTERMEDIATE +sys={0.100000}, mono={0.100000}: clock_override_add +sys={0.100000}, mono={0.100000}: dequeue: seq=34 ts=720 LATEST +===test_buffer_threshold_change=== +sys={0.000000}, mono={0.000000}: clock_override_set +sys={0.000000}, mono={0.000000}: enqueue 1st packet +sys={0.020000}, mono={0.020000}: clock_override_add +sys={0.020000}, mono={0.020000}: enqueue 2nd packet +sys={0.040000}, mono={0.040000}: clock_override_add +sys={0.040000}, mono={0.040000}: enqueue 3rd packet +sys={0.060000}, mono={0.060000}: clock_override_add +sys={0.060000}, mono={0.060000}: enqueue 4th packet +sys={0.060000}, mono={0.060000}: dequeue: seq=33 ts=560 INTERMEDIATE +sys={0.160000}, mono={0.160000}: clock_override_add +sys={0.160000}, mono={0.160000}: next packet should be dropped, too late +sys={0.180000}, mono={0.180000}: clock_override_add +sys={0.180000}, mono={0.180000}: next packet is dropped, but buffer is increased +sys={0.200000}, mono={0.200000}: clock_override_add +sys={0.200000}, mono={0.200000}: next packet is enqueued since the buffer increased +sys={0.200000}, mono={0.200000}: dequeue: seq=34 ts=720 INTERMEDIATE +sys={0.200000}, mono={0.200000}: dequeue: seq=35 ts=880 INTERMEDIATE +sys={0.200000}, mono={0.200000}: dequeue: seq=36 ts=1040 INTERMEDIATE +sys={0.200000}, mono={0.200000}: dequeue: seq=39 ts=1520 LATEST +sys={0.200000}, mono={0.200000}: Enqueue late packets +sys={0.200000}, mono={0.200000}: Run perfectly for a while, buffer should decrease +sys={0.220000}, mono={0.220000}: clock_override_add +sys={0.220000}, mono={0.220000}: dequeue: seq=40 ts=1680 INTERMEDIATE +sys={0.240000}, mono={0.240000}: clock_override_add +sys={0.240000}, mono={0.240000}: dequeue: seq=41 ts=1840 INTERMEDIATE +sys={0.260000}, mono={0.260000}: clock_override_add +sys={0.260000}, mono={0.260000}: dequeue: seq=42 ts=2000 INTERMEDIATE +sys={0.280000}, mono={0.280000}: clock_override_add +sys={0.280000}, mono={0.280000}: dequeue: seq=43 ts=2160 INTERMEDIATE +sys={0.300000}, mono={0.300000}: clock_override_add +sys={0.300000}, mono={0.300000}: dequeue: seq=44 ts=2320 INTERMEDIATE +sys={0.320000}, mono={0.320000}: clock_override_add +sys={0.320000}, mono={0.320000}: dequeue: seq=45 ts=2480 INTERMEDIATE +sys={0.340000}, mono={0.340000}: clock_override_add +sys={0.340000}, mono={0.340000}: dequeue: seq=46 ts=2640 INTERMEDIATE +sys={0.360000}, mono={0.360000}: clock_override_add +sys={0.360000}, mono={0.360000}: dequeue: seq=47 ts=2800 INTERMEDIATE +sys={0.380000}, mono={0.380000}: clock_override_add +sys={0.380000}, mono={0.380000}: dequeue: seq=48 ts=2960 INTERMEDIATE +sys={0.400000}, mono={0.400000}: clock_override_add +sys={0.400000}, mono={0.400000}: dequeue: seq=49 ts=3120 INTERMEDIATE +sys={0.420000}, mono={0.420000}: clock_override_add +sys={0.420000}, mono={0.420000}: dequeue: seq=50 ts=3280 INTERMEDIATE +sys={0.440000}, mono={0.440000}: clock_override_add +sys={0.440000}, mono={0.440000}: dequeue: seq=51 ts=3440 INTERMEDIATE +sys={0.460000}, mono={0.460000}: clock_override_add +sys={0.460000}, mono={0.460000}: dequeue: seq=52 ts=3600 INTERMEDIATE +sys={0.480000}, mono={0.480000}: clock_override_add +sys={0.480000}, mono={0.480000}: dequeue: seq=53 ts=3760 INTERMEDIATE +sys={0.500000}, mono={0.500000}: clock_override_add +sys={0.500000}, mono={0.500000}: dequeue: seq=54 ts=3920 INTERMEDIATE +sys={0.520000}, mono={0.520000}: clock_override_add +sys={0.520000}, mono={0.520000}: dequeue: seq=55 ts=4080 INTERMEDIATE +sys={0.540000}, mono={0.540000}: clock_override_add +sys={0.540000}, mono={0.540000}: dequeue: seq=56 ts=4240 INTERMEDIATE +sys={0.560000}, mono={0.560000}: clock_override_add +sys={0.560000}, mono={0.560000}: dequeue: seq=57 ts=4400 INTERMEDIATE +sys={0.580000}, mono={0.580000}: clock_override_add +sys={0.580000}, mono={0.580000}: dequeue: seq=58 ts=4560 INTERMEDIATE +sys={0.600000}, mono={0.600000}: clock_override_add +sys={0.600000}, mono={0.600000}: dequeue: seq=59 ts=4720 INTERMEDIATE +sys={0.620000}, mono={0.620000}: clock_override_add +sys={0.620000}, mono={0.620000}: dequeue: seq=60 ts=4880 INTERMEDIATE +sys={0.640000}, mono={0.640000}: clock_override_add +sys={0.640000}, mono={0.640000}: dequeue: seq=61 ts=5040 INTERMEDIATE +sys={0.660000}, mono={0.660000}: clock_override_add +sys={0.660000}, mono={0.660000}: dequeue: seq=62 ts=5200 INTERMEDIATE +sys={0.680000}, mono={0.680000}: clock_override_add +sys={0.680000}, mono={0.680000}: dequeue: seq=63 ts=5360 INTERMEDIATE +sys={0.700000}, mono={0.700000}: clock_override_add +sys={0.700000}, mono={0.700000}: dequeue: seq=64 ts=5520 INTERMEDIATE +sys={0.720000}, mono={0.720000}: clock_override_add +sys={0.720000}, mono={0.720000}: dequeue: seq=65 ts=5680 INTERMEDIATE +sys={0.740000}, mono={0.740000}: clock_override_add +sys={0.740000}, mono={0.740000}: dequeue: seq=66 ts=5840 INTERMEDIATE +sys={0.760000}, mono={0.760000}: clock_override_add +sys={0.760000}, mono={0.760000}: dequeue: seq=67 ts=6000 INTERMEDIATE +sys={0.780000}, mono={0.780000}: clock_override_add +sys={0.780000}, mono={0.780000}: dequeue: seq=68 ts=6160 INTERMEDIATE +sys={0.800000}, mono={0.800000}: clock_override_add +sys={0.800000}, mono={0.800000}: dequeue: seq=69 ts=6320 INTERMEDIATE +sys={0.820000}, mono={0.820000}: clock_override_add +sys={0.820000}, mono={0.820000}: dequeue: seq=70 ts=6480 INTERMEDIATE +sys={0.840000}, mono={0.840000}: clock_override_add +sys={0.840000}, mono={0.840000}: dequeue: seq=71 ts=6640 INTERMEDIATE +sys={0.860000}, mono={0.860000}: clock_override_add +sys={0.860000}, mono={0.860000}: dequeue: seq=72 ts=6800 INTERMEDIATE +sys={0.880000}, mono={0.880000}: clock_override_add +sys={0.880000}, mono={0.880000}: dequeue: seq=73 ts=6960 INTERMEDIATE +sys={0.900000}, mono={0.900000}: clock_override_add +sys={0.900000}, mono={0.900000}: dequeue: seq=74 ts=7120 INTERMEDIATE +sys={0.920000}, mono={0.920000}: clock_override_add +sys={0.920000}, mono={0.920000}: dequeue: seq=75 ts=7280 INTERMEDIATE +sys={0.940000}, mono={0.940000}: clock_override_add +sys={0.940000}, mono={0.940000}: dequeue: seq=76 ts=7440 INTERMEDIATE +sys={0.960000}, mono={0.960000}: clock_override_add +sys={0.960000}, mono={0.960000}: dequeue: seq=77 ts=7600 INTERMEDIATE +sys={0.980000}, mono={0.980000}: clock_override_add +sys={0.980000}, mono={0.980000}: dequeue: seq=78 ts=7760 INTERMEDIATE +sys={1.000000}, mono={1.000000}: clock_override_add +sys={1.000000}, mono={1.000000}: dequeue: seq=79 ts=7920 INTERMEDIATE +sys={1.020000}, mono={1.020000}: clock_override_add +sys={1.020000}, mono={1.020000}: dequeue: seq=80 ts=8080 INTERMEDIATE +sys={1.040000}, mono={1.040000}: clock_override_add +sys={1.040000}, mono={1.040000}: dequeue: seq=81 ts=8240 INTERMEDIATE +sys={1.060000}, mono={1.060000}: clock_override_add +sys={1.060000}, mono={1.060000}: dequeue: seq=82 ts=8400 INTERMEDIATE +sys={1.080000}, mono={1.080000}: clock_override_add +sys={1.080000}, mono={1.080000}: dequeue: seq=83 ts=8560 INTERMEDIATE +sys={1.100000}, mono={1.100000}: clock_override_add +sys={1.100000}, mono={1.100000}: dequeue: seq=84 ts=8720 INTERMEDIATE +sys={1.120000}, mono={1.120000}: clock_override_add +sys={1.120000}, mono={1.120000}: dequeue: seq=85 ts=8880 INTERMEDIATE +sys={1.140000}, mono={1.140000}: clock_override_add +sys={1.140000}, mono={1.140000}: dequeue: seq=86 ts=9040 INTERMEDIATE +sys={1.160000}, mono={1.160000}: clock_override_add +sys={1.160000}, mono={1.160000}: dequeue: seq=87 ts=9200 INTERMEDIATE +sys={1.180000}, mono={1.180000}: clock_override_add +sys={1.180000}, mono={1.180000}: dequeue: seq=88 ts=9360 INTERMEDIATE +sys={1.200000}, mono={1.200000}: clock_override_add +sys={1.200000}, mono={1.200000}: dequeue: seq=89 ts=9520 INTERMEDIATE +sys={1.220000}, mono={1.220000}: clock_override_add +sys={1.220000}, mono={1.220000}: dequeue: seq=90 ts=9680 INTERMEDIATE +sys={1.240000}, mono={1.240000}: clock_override_add +sys={1.240000}, mono={1.240000}: dequeue: seq=91 ts=9840 INTERMEDIATE +sys={1.260000}, mono={1.260000}: clock_override_add +sys={1.260000}, mono={1.260000}: dequeue: seq=92 ts=10000 INTERMEDIATE +sys={1.280000}, mono={1.280000}: clock_override_add +sys={1.280000}, mono={1.280000}: dequeue: seq=93 ts=10160 INTERMEDIATE +sys={1.300000}, mono={1.300000}: clock_override_add +sys={1.300000}, mono={1.300000}: dequeue: seq=94 ts=10320 INTERMEDIATE +sys={1.320000}, mono={1.320000}: clock_override_add +sys={1.320000}, mono={1.320000}: dequeue: seq=95 ts=10480 INTERMEDIATE +sys={1.340000}, mono={1.340000}: clock_override_add +sys={1.340000}, mono={1.340000}: dequeue: seq=96 ts=10640 INTERMEDIATE +sys={1.360000}, mono={1.360000}: clock_override_add +sys={1.360000}, mono={1.360000}: dequeue: seq=97 ts=10800 INTERMEDIATE +sys={1.380000}, mono={1.380000}: clock_override_add +sys={1.380000}, mono={1.380000}: dequeue: seq=98 ts=10960 INTERMEDIATE +sys={1.400000}, mono={1.400000}: clock_override_add +sys={1.400000}, mono={1.400000}: dequeue: seq=99 ts=11120 INTERMEDIATE +sys={1.420000}, mono={1.420000}: clock_override_add +sys={1.420000}, mono={1.420000}: dequeue: seq=100 ts=11280 INTERMEDIATE +sys={1.440000}, mono={1.440000}: clock_override_add +sys={1.440000}, mono={1.440000}: dequeue: seq=101 ts=11440 INTERMEDIATE +sys={1.460000}, mono={1.460000}: clock_override_add +sys={1.460000}, mono={1.460000}: dequeue: seq=102 ts=11600 INTERMEDIATE +sys={1.480000}, mono={1.480000}: clock_override_add +sys={1.480000}, mono={1.480000}: dequeue: seq=103 ts=11760 INTERMEDIATE +sys={1.500000}, mono={1.500000}: clock_override_add +sys={1.500000}, mono={1.500000}: dequeue: seq=104 ts=11920 INTERMEDIATE +sys={1.520000}, mono={1.520000}: clock_override_add +sys={1.520000}, mono={1.520000}: dequeue: seq=105 ts=12080 INTERMEDIATE +sys={1.540000}, mono={1.540000}: clock_override_add +sys={1.540000}, mono={1.540000}: dequeue: seq=106 ts=12240 INTERMEDIATE +sys={1.560000}, mono={1.560000}: clock_override_add +sys={1.560000}, mono={1.560000}: dequeue: seq=107 ts=12400 INTERMEDIATE +sys={1.580000}, mono={1.580000}: clock_override_add +sys={1.580000}, mono={1.580000}: dequeue: seq=108 ts=12560 INTERMEDIATE +sys={1.600000}, mono={1.600000}: clock_override_add +sys={1.600000}, mono={1.600000}: dequeue: seq=109 ts=12720 INTERMEDIATE +sys={1.620000}, mono={1.620000}: clock_override_add +sys={1.620000}, mono={1.620000}: dequeue: seq=110 ts=12880 INTERMEDIATE +sys={1.640000}, mono={1.640000}: clock_override_add +sys={1.640000}, mono={1.640000}: dequeue: seq=111 ts=13040 INTERMEDIATE +sys={1.660000}, mono={1.660000}: clock_override_add +sys={1.660000}, mono={1.660000}: dequeue: seq=112 ts=13200 INTERMEDIATE +sys={1.680000}, mono={1.680000}: clock_override_add +sys={1.680000}, mono={1.680000}: dequeue: seq=113 ts=13360 INTERMEDIATE +sys={1.700000}, mono={1.700000}: clock_override_add +sys={1.700000}, mono={1.700000}: dequeue: seq=114 ts=13520 INTERMEDIATE +sys={1.720000}, mono={1.720000}: clock_override_add +sys={1.720000}, mono={1.720000}: dequeue: seq=115 ts=13680 INTERMEDIATE +sys={1.740000}, mono={1.740000}: clock_override_add +sys={1.740000}, mono={1.740000}: dequeue: seq=116 ts=13840 INTERMEDIATE +sys={1.760000}, mono={1.760000}: clock_override_add +sys={1.760000}, mono={1.760000}: dequeue: seq=117 ts=14000 INTERMEDIATE +sys={1.780000}, mono={1.780000}: clock_override_add +sys={1.780000}, mono={1.780000}: dequeue: seq=118 ts=14160 INTERMEDIATE +sys={1.800000}, mono={1.800000}: clock_override_add +sys={1.800000}, mono={1.800000}: dequeue: seq=119 ts=14320 INTERMEDIATE +sys={1.820000}, mono={1.820000}: clock_override_add +sys={1.820000}, mono={1.820000}: dequeue: seq=120 ts=14480 INTERMEDIATE +sys={1.840000}, mono={1.840000}: clock_override_add +sys={1.840000}, mono={1.840000}: dequeue: seq=121 ts=14640 INTERMEDIATE +sys={1.860000}, mono={1.860000}: clock_override_add +sys={1.860000}, mono={1.860000}: dequeue: seq=122 ts=14800 INTERMEDIATE +sys={1.880000}, mono={1.880000}: clock_override_add +sys={1.880000}, mono={1.880000}: dequeue: seq=123 ts=14960 INTERMEDIATE +sys={1.900000}, mono={1.900000}: clock_override_add +sys={1.900000}, mono={1.900000}: dequeue: seq=124 ts=15120 INTERMEDIATE +sys={1.920000}, mono={1.920000}: clock_override_add +sys={1.920000}, mono={1.920000}: dequeue: seq=125 ts=15280 INTERMEDIATE +sys={1.940000}, mono={1.940000}: clock_override_add +sys={1.940000}, mono={1.940000}: dequeue: seq=126 ts=15440 INTERMEDIATE +sys={1.960000}, mono={1.960000}: clock_override_add +sys={1.960000}, mono={1.960000}: dequeue: seq=127 ts=15600 INTERMEDIATE +sys={1.980000}, mono={1.980000}: clock_override_add +sys={1.980000}, mono={1.980000}: dequeue: seq=128 ts=15760 INTERMEDIATE +sys={2.000000}, mono={2.000000}: clock_override_add +sys={2.000000}, mono={2.000000}: dequeue: seq=129 ts=15920 INTERMEDIATE +sys={2.020000}, mono={2.020000}: clock_override_add +sys={2.020000}, mono={2.020000}: dequeue: seq=130 ts=16080 INTERMEDIATE +sys={2.040000}, mono={2.040000}: clock_override_add +sys={2.040000}, mono={2.040000}: dequeue: seq=131 ts=16240 INTERMEDIATE +sys={2.060000}, mono={2.060000}: clock_override_add +sys={2.060000}, mono={2.060000}: dequeue: seq=132 ts=16400 INTERMEDIATE +sys={2.080000}, mono={2.080000}: clock_override_add +sys={2.080000}, mono={2.080000}: dequeue: seq=133 ts=16560 INTERMEDIATE +sys={2.100000}, mono={2.100000}: clock_override_add +sys={2.100000}, mono={2.100000}: dequeue: seq=134 ts=16720 INTERMEDIATE +sys={2.120000}, mono={2.120000}: clock_override_add +sys={2.120000}, mono={2.120000}: dequeue: seq=135 ts=16880 INTERMEDIATE +sys={2.140000}, mono={2.140000}: clock_override_add +sys={2.140000}, mono={2.140000}: dequeue: seq=136 ts=17040 INTERMEDIATE +sys={2.160000}, mono={2.160000}: clock_override_add +sys={2.160000}, mono={2.160000}: dequeue: seq=137 ts=17200 INTERMEDIATE +sys={2.180000}, mono={2.180000}: clock_override_add +sys={2.180000}, mono={2.180000}: dequeue: seq=138 ts=17360 INTERMEDIATE +sys={2.200000}, mono={2.200000}: clock_override_add +sys={2.200000}, mono={2.200000}: dequeue: seq=139 ts=17520 INTERMEDIATE +sys={2.200000}, mono={2.200000}: Done, checking threshold and cleaning +sys={2.270000}, mono={2.270000}: clock_override_add +sys={2.270000}, mono={2.270000}: dequeue: seq=140 ts=17680 INTERMEDIATE +sys={2.270000}, mono={2.270000}: dequeue: seq=141 ts=17840 INTERMEDIATE +sys={2.270000}, mono={2.270000}: dequeue: seq=142 ts=18000 INTERMEDIATE +sys={2.270000}, mono={2.270000}: dequeue: seq=143 ts=18160 LATEST +===test_seq_wraparound=== +sys={0.000000}, mono={0.000000}: clock_override_set +sys={0.000000}, mono={0.000000}: enqueue 1st packet (seq=65534) +sys={0.020000}, mono={0.020000}: clock_override_add +sys={0.020000}, mono={0.020000}: enqueue 2nd packet (seq=65535) +sys={0.040000}, mono={0.040000}: clock_override_add +sys={0.040000}, mono={0.040000}: enqueue 3rd packet (seq=0, wraparound) +sys={0.060000}, mono={0.060000}: clock_override_add +sys={0.060000}, mono={0.060000}: enqueue 4th packet (seq=1) +sys={0.080000}, mono={0.080000}: clock_override_add +sys={0.080000}, mono={0.080000}: enqueue 5th packet (seq=2) +sys={0.080000}, mono={0.080000}: dequeue 1st packet (seq=65534) +sys={0.080000}, mono={0.080000}: dequeue: seq=65534 ts=560 INTERMEDIATE +sys={0.100000}, mono={0.100000}: clock_override_add +sys={0.100000}, mono={0.100000}: dequeue 2nd packet (seq=65535) +sys={0.100000}, mono={0.100000}: dequeue: seq=65535 ts=720 INTERMEDIATE +sys={0.120000}, mono={0.120000}: clock_override_add +sys={0.120000}, mono={0.120000}: dequeue 3rd packet (seq=0, wraparound) +sys={0.120000}, mono={0.120000}: dequeue: seq=0 ts=880 INTERMEDIATE +sys={0.140000}, mono={0.140000}: clock_override_add +sys={0.140000}, mono={0.140000}: dequeue 4th packet (seq=1) +sys={0.140000}, mono={0.140000}: dequeue: seq=1 ts=1040 INTERMEDIATE +sys={0.160000}, mono={0.160000}: clock_override_add +sys={0.160000}, mono={0.160000}: dequeue 5th packet (seq=2) +sys={0.160000}, mono={0.160000}: dequeue: seq=2 ts=1200 LATEST +===test_timestamp_wraparound=== +sys={0.000000}, mono={0.000000}: clock_override_set +sys={0.000000}, mono={0.000000}: enqueue 1st packet (ts=4294966990) +sys={0.020000}, mono={0.020000}: clock_override_add +sys={0.020000}, mono={0.020000}: enqueue 2nd packet (ts=4294967150) +sys={0.040000}, mono={0.040000}: clock_override_add +sys={0.040000}, mono={0.040000}: enqueue 3rd packet (ts=14, wraparound) +sys={0.060000}, mono={0.060000}: clock_override_add +sys={0.060000}, mono={0.060000}: enqueue 4th packet (ts=174) +sys={0.080000}, mono={0.080000}: clock_override_add +sys={0.080000}, mono={0.080000}: enqueue 5th packet (ts=334) +sys={0.080000}, mono={0.080000}: dequeue 1st packet (ts=4294966990) +sys={0.080000}, mono={0.080000}: dequeue: seq=33 ts=4294966990 INTERMEDIATE +sys={0.100000}, mono={0.100000}: clock_override_add +sys={0.100000}, mono={0.100000}: dequeue 2nd packet (ts=4294967150) +sys={0.100000}, mono={0.100000}: dequeue: seq=34 ts=4294967150 INTERMEDIATE +sys={0.120000}, mono={0.120000}: clock_override_add +sys={0.120000}, mono={0.120000}: dequeue 3rd packet (ts=14, wraparound) +sys={0.120000}, mono={0.120000}: dequeue: seq=35 ts=14 INTERMEDIATE +sys={0.140000}, mono={0.140000}: clock_override_add +sys={0.140000}, mono={0.140000}: dequeue 4th packet (ts=174) +sys={0.140000}, mono={0.140000}: dequeue: seq=36 ts=174 INTERMEDIATE +sys={0.160000}, mono={0.160000}: clock_override_add +sys={0.160000}, mono={0.160000}: dequeue 5th packet (ts=334) +sys={0.160000}, mono={0.160000}: dequeue: seq=37 ts=334 LATEST +OK: Test passed diff --git a/tests/testsuite.at b/tests/testsuite.at index d0e55f6..81d40ba 100644 --- a/tests/testsuite.at +++ b/tests/testsuite.at @@ -6,3 +6,9 @@ cat $abs_srcdir/osmux/osmux_test.ok > expout AT_CHECK([$abs_top_builddir/tests/osmux/osmux_test], [0], [expout], [ignore]) AT_CLEANUP + +AT_SETUP([jibuf_test]) +AT_KEYWORDS([jibuf_test]) +cat $abs_srcdir/jibuf/jibuf_test.ok > expout +AT_CHECK([$abs_top_builddir/tests/jibuf/jibuf_test], [0], [expout], [ignore]) +AT_CLEANUP -- To view, visit https://gerrit.osmocom.org/7773 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newpatchset Gerrit-Change-Id: I9688ba9c4d5b733b9f29d0f15f73750f9271ef55 Gerrit-PatchSet: 2 Gerrit-Project: libosmo-netif Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Pau Espin Pedrol From gerrit-no-reply at lists.osmocom.org Fri Apr 13 14:19:07 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Fri, 13 Apr 2018 14:19:07 +0000 Subject: [PATCH] libosmo-netif[master]: tests: jibuf_tool: Initial commit In-Reply-To: References: Message-ID: Hello Harald Welte, Jenkins Builder, I'd like you to reexamine a change. Please visit https://gerrit.osmocom.org/7774 to look at the new patch set (#2). tests: jibuf_tool: Initial commit Change-Id: I92307c8b1483dd488339771462290aae0ae5689a --- M tests/Makefile.am A tests/jibuf/jibuf_tool.c A tests/jibuf/jitter.plt 3 files changed, 421 insertions(+), 1 deletion(-) git pull ssh://gerrit.osmocom.org:29418/libosmo-netif refs/changes/74/7774/2 diff --git a/tests/Makefile.am b/tests/Makefile.am index bf1db1f..a4abca2 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -1,7 +1,7 @@ AM_CFLAGS = -Wall -I$(top_srcdir)/include $(LIBOSMOCORE_CFLAGS) -g AM_LDFLAGS = $(LIBOSMOCORE_LDFLAGS) -check_PROGRAMS = osmux/osmux_test jibuf/jibuf_test +check_PROGRAMS = osmux/osmux_test jibuf/jibuf_test jibuf/jibuf_tool osmux_osmux_test_SOURCES = osmux/osmux_test.c osmux_osmux_test_LDADD = $(LIBOSMOCORE_LIBS) $(top_builddir)/src/libosmonetif.la @@ -9,6 +9,9 @@ jibuf_jibuf_test_SOURCES = jibuf/jibuf_test.c jibuf_jibuf_test_LDADD = $(LIBOSMOCORE_LIBS) $(top_builddir)/src/libosmonetif.la +jibuf_jibuf_tool_SOURCES = jibuf/jibuf_tool.c +jibuf_jibuf_tool_LDADD = $(LIBOSMOCORE_LIBS) $(top_builddir)/src/libosmonetif.la + # The `:;' works around a Bash 3.2 bug when the output is not writeable. $(srcdir)/package.m4: $(top_srcdir)/configure.ac :;{ \ diff --git a/tests/jibuf/jibuf_tool.c b/tests/jibuf/jibuf_tool.c new file mode 100644 index 0000000..810ecb4 --- /dev/null +++ b/tests/jibuf/jibuf_tool.c @@ -0,0 +1,382 @@ +/* (C) 2017 by sysmocom - s.f.m.c. GmbH + * + * Author: Pau Espin Pedrol + * + * SPDX-License-Identifier: GPL-2.0+ + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include + +/* Logging related stuff */ +#define INT2IDX(x) (-1*(x)-1) +struct log_info_cat jibuf_test_cat[] = { + [INT2IDX(DLJIBUF)] = { + .name = "DLJIBUF", + .description = "Osmocom Jitter Buffer", + .enabled = 1, .loglevel = LOGL_DEBUG, + }, +}; +const struct log_info jibuf_test_log_info = { + .filter_fn = NULL, + .cat = jibuf_test_cat, + .num_cat = ARRAY_SIZE(jibuf_test_cat), +}; + +/* RTP packet with AMR payload */ +static uint8_t rtp_pkt[] = { + 0x80, 0x62, 0x3f, 0xcc, 0x00, 0x01, 0xa7, 0x6f, /* RTP */ + 0x07, 0x09, 0x00, 0x62, 0x20, 0x14, 0xff, 0xd4, /* AMR */ + 0xf9, 0xff, 0xfb, 0xe7, 0xeb, 0xf9, 0x9f, 0xf8, + 0xf2, 0x26, 0x33, 0x65, 0x54, +}; + +static void sigalarm_handler(int foo) +{ + printf("FAIL: test did not run successfully\n"); + exit(EXIT_FAILURE); +} + +#define SAMPLES_PER_PKT 160 +#define RTP_FREQ_MS 20 +#define RTP_PKTS_PER_SEC (1000/RTP_FREQ_MS) +#define NET_DELAY_MS 300 +#define GENERATED_JITTER_MS 160 +#define NUM_PACKETS_TO_SEND 1000 + +#define TRACE_PACKE_DEBUG 0 +#define TRACE_PACKET_GNUPLOT 1 +#define TRACE_PACKET_TEST_JITTER 0 + +struct checkpoint { + struct timeval ts; + int transit; + double jitter; +}; + +struct rtp_pkt_info { + struct osmo_timer_list timer; + struct timeval tx_prev_time; + struct timeval tx_time; + uint32_t tx_delay; + struct checkpoint prequeue; + struct checkpoint postqueue; +}; + +struct rtp_pkt_info_cb { + struct rtp_pkt_info *data; +}; + +struct osmo_jibuf *jb; +uint16_t rtp_first_seq; +uint16_t rtp_next_seq; +uint32_t rtp_next_ts; +uint32_t packets_sent; +uint32_t packets_received; +uint32_t packets_dropped; +uint32_t packets_too_much_jitter; + +struct rtp_pkt_info *msgb_get_pinfo(struct msgb* msg) +{ + struct rtp_pkt_info_cb *cb = (struct rtp_pkt_info_cb *)&((msg)->cb[0]); + return cb->data; +} + +static uint32_t timeval2ms(const struct timeval *ts) +{ + return ts->tv_sec * 1000 + ts->tv_usec / 1000; +} + +int calc_relative_transmit_time(struct timeval *tx_0, struct timeval *tx_f, + struct timeval *rx_0, struct timeval *rx_f) +{ + struct timeval txdiff, rxdiff, diff; + timersub(rx_f, rx_0, &rxdiff); + timersub(tx_f, tx_0, &txdiff); + timersub(&rxdiff, &txdiff, &diff); + return timeval2ms(&diff); +} + +void trace_pkt(struct msgb *msg, char* info) { + struct timeval now, total_delay; + struct rtp_hdr *rtph = osmo_rtp_get_hdr(msg); + struct rtp_pkt_info *pinfo = msgb_get_pinfo(msg); + + gettimeofday(&now, NULL); + timersub(&now, &pinfo->tx_time, &total_delay); + +#if TRACE_PACKET_DEBUG + uint32_t total_delay_ms = timeval2ms(&total_delay); + LOGP(DLJIBUF, LOGL_DEBUG, "%s: seq=%"PRIu16" ts=%"PRIu32" (%ld.%06ld) tx_delay=%"PRIu32 \ + " end_delay=%"PRIu32" pre_trans=%d pre_jitter=%f post_trans=%d post_jitter=%f\n", + info, ntohs(rtph->sequence), ntohl(rtph->timestamp), + pinfo->tx_time.tv_sec, pinfo->tx_time.tv_usec, + pinfo->tx_delay, total_delay_ms, + pinfo->prequeue.transit, pinfo->prequeue.jitter, + pinfo->postqueue.transit, pinfo->postqueue.jitter); +#endif + +#if TRACE_PACKET_GNUPLOT + /* Used as input for gplot: "gnuplot -p jitter.plt -"" */ + uint32_t tx_time_ms = timeval2ms(&pinfo->tx_time); + uint32_t prequeue_time_ms = timeval2ms(&pinfo->prequeue.ts); + uint32_t postqueue_time_ms = timeval2ms(&pinfo->postqueue.ts); + fprintf(stderr, "%"PRIu16"\t%"PRIu32"\t%"PRIu32"\t%"PRIu32"\t%d\t%d\t%f\t%f\t%"PRIu32"\t%"PRIu32"\n", + ntohs(rtph->sequence), tx_time_ms, + prequeue_time_ms, postqueue_time_ms, + pinfo->prequeue.transit, pinfo->postqueue.transit, + pinfo->prequeue.jitter, pinfo->postqueue.jitter, + packets_dropped, jb->threshold_delay); +#endif +} + +void pkt_add_result(struct msgb *msg, bool dropped) +{ + struct rtp_pkt_info *pinfo = msgb_get_pinfo(msg); + + if (dropped) { + packets_dropped++; + trace_pkt(msg,"dropped"); + } else { + packets_received++; + trace_pkt(msg,"received"); + + if (pinfo->prequeue.jitter < pinfo->postqueue.jitter) { + packets_too_much_jitter++; +#if TRACE_PACKET_TEST_JITTER + LOGP(DLJIBUF, LOGL_ERROR, "JITTER HIGHER THAN REF: %s seq=%"PRIu16" ts=%"PRIu32 \ + " (%ld.%06ld) tx_delay=%"PRIu32" end_delay=%"PRIu32 \ + " pre_trans=%d pre_jitter=%f post_trans=%d post_jitter=%f dropped=%"PRIu32 \ + " buffer=%"PRIu32"\n", + info, ntohs(rtph->sequence), ntohl(rtph->timestamp), + pinfo->tx_time.tv_sec, pinfo->tx_time.tv_usec, + pinfo->tx_delay, total_delay_ms, + pinfo->prequeue.transit, pinfo->prequeue.jitter, + pinfo->postqueue.transit, pinfo->postqueue.jitter, + packets_dropped, jb->threshold_delay); +#endif + } + } +} + +void dequeue_cb(struct msgb *msg, void *data) +{ + static struct checkpoint postqueue_prev; + static bool postqueue_started = false; + + struct rtp_pkt_info *pinfo = msgb_get_pinfo(msg); + + gettimeofday(&pinfo->postqueue.ts, NULL); + + if (postqueue_started) { + pinfo->postqueue.transit = calc_relative_transmit_time( + &pinfo->tx_prev_time, &pinfo->tx_time, + &postqueue_prev.ts, &pinfo->postqueue.ts); + + uint32_t abs_transit = pinfo->postqueue.transit * + ( pinfo->postqueue.transit >= 0 ? 1 : -1 ); + + pinfo->postqueue.jitter = postqueue_prev.jitter + + ((double)abs_transit - postqueue_prev.jitter)/16.0; + } else { + postqueue_started = true; + pinfo->postqueue.transit = 0; + pinfo->postqueue.jitter = 0; + } + + postqueue_prev = pinfo->postqueue; + + pkt_add_result(msg, false); + + osmo_timer_del(&pinfo->timer); + msgb_free(msg); +} + +void pkt_arrived_cb(void *data) +{ + static struct checkpoint prequeue_prev; + static bool prequeue_started = false; + + struct msgb *msg = (struct msgb*) data; + struct rtp_pkt_info *pinfo = msgb_get_pinfo(msg); + + gettimeofday(&pinfo->prequeue.ts, NULL); + + if (prequeue_started) { + pinfo->prequeue.transit = calc_relative_transmit_time( + &pinfo->tx_prev_time, &pinfo->tx_time, + &prequeue_prev.ts, &pinfo->prequeue.ts); + + uint32_t abs_transit = pinfo->prequeue.transit * + ( pinfo->prequeue.transit >= 0 ? 1 : -1 ); + + pinfo->prequeue.jitter = prequeue_prev.jitter + + ((double)abs_transit - prequeue_prev.jitter)/16.0; + } else { + prequeue_started = true; + pinfo->prequeue.transit = 0; + pinfo->prequeue.jitter = 0; + } + + prequeue_prev = pinfo->prequeue; + + int n = osmo_jibuf_enqueue(jb, msg); + + if (n<0) { + pkt_add_result(msg, true); + osmo_timer_del(&pinfo->timer); + msgb_free(msg); + } +} + +void rand_send_rtp_packet() +{ + static struct timeval tx_prev_time; + + struct rtp_pkt_info *pinfo; + struct rtp_hdr *rtph; + struct msgb *msg; + + /* Set fake prev_time for 1st packet. Otherwise transit calculations for first + * packet can be really weird if they not arrive in order */ + if (rtp_next_seq == rtp_first_seq) { + struct timeval now, time_rate = { .tv_sec = 0, .tv_usec = RTP_FREQ_MS * 1000}; + gettimeofday(&now, NULL); + timersub(&now, &time_rate, &tx_prev_time); + } + + + msg = msgb_alloc(1500, "test"); + if (!msg) + exit(EXIT_FAILURE); + + memcpy(msg->data, rtp_pkt, sizeof(rtp_pkt)); + msgb_put(msg, sizeof(rtp_pkt)); + + rtph = osmo_rtp_get_hdr(msg); + + rtph->sequence = htons(rtp_next_seq); + rtp_next_seq++; + + rtph->timestamp = htonl(rtp_next_ts); + rtp_next_ts += SAMPLES_PER_PKT; + + pinfo = talloc_zero(msg, struct rtp_pkt_info); + struct rtp_pkt_info_cb *cb = (struct rtp_pkt_info_cb *)&((msg)->cb[0]); + cb->data = pinfo; + + gettimeofday(&pinfo->tx_time, NULL); + pinfo->tx_prev_time = tx_prev_time; + memset(&pinfo->timer, 0, sizeof(struct osmo_timer_list)); + pinfo->timer.cb = pkt_arrived_cb; + pinfo->timer.data = msg; + pinfo->tx_delay = NET_DELAY_MS + (random() % (GENERATED_JITTER_MS)); + + tx_prev_time = pinfo->tx_time; + + /* TODO: add a random() to lose/drop packets */ + + osmo_timer_schedule(&pinfo->timer, 0, pinfo->tx_delay * 1000); +} + +void generate_pkt_cb(void *data) +{ + static struct osmo_timer_list enqueue_timer = {.cb = generate_pkt_cb, .data = NULL}; + static struct timeval last_generated; + + struct timeval time_rate = { .tv_sec = 0, .tv_usec = RTP_FREQ_MS * 1000}; + struct timeval sched_ts; + + if (!packets_sent) + gettimeofday(&last_generated, NULL); + + rand_send_rtp_packet(); + packets_sent++; + + timeradd(&last_generated, &time_rate, &sched_ts); + last_generated = sched_ts; + if (packets_sent < NUM_PACKETS_TO_SEND) { + enqueue_timer.timeout = sched_ts; + osmo_timer_add(&enqueue_timer); + } +} + +void check_results() +{ + uint32_t drop_threshold = NUM_PACKETS_TO_SEND * 5 / 100; + if (packets_dropped > drop_threshold) { + fprintf(stdout, "Too many dropped packets (%"PRIu32" > %"PRIu32")\n", + packets_dropped, drop_threshold); + exit(1); + } + + uint32_t jitter_high_threshold = NUM_PACKETS_TO_SEND * 8 / 100; + if (packets_too_much_jitter > jitter_high_threshold) { + fprintf(stdout, "Too many packets with higher jitter (%"PRIu32" > %"PRIu32")\n", + packets_too_much_jitter, jitter_high_threshold); + exit(1); + } +} + +int main(void) +{ + + if (signal(SIGALRM, sigalarm_handler) == SIG_ERR) { + perror("signal"); + exit(EXIT_FAILURE); + } + + /* This test doesn't use it, but jibuf requires it internally. */ + osmo_init_logging(&jibuf_test_log_info); + log_set_category_filter(osmo_stderr_target, DLMIB, 1, LOGL_ERROR); + log_set_print_filename(osmo_stderr_target, 0); + log_set_log_level(osmo_stderr_target, LOGL_INFO); + + srandom(time(NULL)); + rtp_first_seq = (uint16_t) random(); + rtp_next_seq = rtp_first_seq; + rtp_next_ts = (uint32_t) random(); + jb = osmo_jibuf_alloc(NULL); + + osmo_jibuf_set_min_delay(jb, GENERATED_JITTER_MS - RTP_FREQ_MS); + osmo_jibuf_set_max_delay(jb, GENERATED_JITTER_MS + RTP_FREQ_MS*2); + + osmo_jibuf_set_dequeue_cb(jb, dequeue_cb, NULL); + + generate_pkt_cb(NULL); + + /* If the test takes longer than twice the time needed to generate the packets + plus 10 seconds, abort it */ + alarm(NUM_PACKETS_TO_SEND*20/1000 +10); + + while((packets_received + packets_dropped) < NUM_PACKETS_TO_SEND) + osmo_select_main(0); + + osmo_jibuf_delete(jb); + + check_results(); + + fprintf(stdout, "OK: Test passed\n"); + return EXIT_SUCCESS; +} diff --git a/tests/jibuf/jitter.plt b/tests/jibuf/jitter.plt new file mode 100644 index 0000000..37deb65 --- /dev/null +++ b/tests/jibuf/jitter.plt @@ -0,0 +1,35 @@ +#set terminal png size 1280,1024 enhanced font "Helvetica,20" +#set output 'output.png' +#set terminal qt +#set output + +set datafile separator "\t" +set datafile missing '0' + +#set multiplot + +# key/legend +set key top right +set key box +set key left bottom +set key bmargin + + +set title 'Jitter Graph' +set xlabel 'Timestamp' +set ylabel 'trans / jitter / delay / buffer size [ms]' +set ytics nomirror + +#set y2label 'delay [ms]' +#set y2tics nomirror + +plot \ + '/tmp/bla' using 3:5 with linespoints title 'pre.trans' axes x1y1, \ + '/tmp/bla' using 4:6 with linespoints title 'post.trans' axes x1y1, \ + '/tmp/bla' using 3:7 with linespoints title 'pre.jitter' axes x1y1, \ + '/tmp/bla' using 4:8 with linespoints title 'post.jitter' axes x1y1, \ + '/tmp/bla' using 3:9 with linespoints title 'pre.dropped' axes x1y1, \ + '/tmp/bla' using 3:10 with linespoints title 'pre.buffer' axes x1y1, \ + '/tmp/bla' using 3:((column(3)-column(2))) with linespoints title 'pre.delay' axes x1y1, \ + '/tmp/bla' using 4:((column(4)-column(2))) with linespoints title 'post.delay' axes x1y1 +pause mouse close; exit -- To view, visit https://gerrit.osmocom.org/7774 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newpatchset Gerrit-Change-Id: I92307c8b1483dd488339771462290aae0ae5689a Gerrit-PatchSet: 2 Gerrit-Project: libosmo-netif Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder From gerrit-no-reply at lists.osmocom.org Fri Apr 13 14:19:07 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Fri, 13 Apr 2018 14:19:07 +0000 Subject: [PATCH] libosmo-netif[master]: tests: jibuf_tool: Improve jibuf_test to read pcaps In-Reply-To: References: Message-ID: Hello Jenkins Builder, I'd like you to reexamine a change. Please visit https://gerrit.osmocom.org/7775 to look at the new patch set (#2). tests: jibuf_tool: Improve jibuf_test to read pcaps Change-Id: I7a13c823fb70e0adbc5fa0726fd66b15dc40014e Signed-off-by: Pau Espin Pedrol --- M tests/Makefile.am M tests/jibuf/jibuf_tool.c M tests/jibuf/jitter.plt 3 files changed, 315 insertions(+), 112 deletions(-) git pull ssh://gerrit.osmocom.org:29418/libosmo-netif refs/changes/75/7775/2 diff --git a/tests/Makefile.am b/tests/Makefile.am index a4abca2..dd0e2b2 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -2,6 +2,9 @@ AM_LDFLAGS = $(LIBOSMOCORE_LDFLAGS) check_PROGRAMS = osmux/osmux_test jibuf/jibuf_test jibuf/jibuf_tool +check_HEADERS = \ + osmo-pcap-test/osmo_pcap.h \ + osmo-pcap-test/proto.h osmux_osmux_test_SOURCES = osmux/osmux_test.c osmux_osmux_test_LDADD = $(LIBOSMOCORE_LIBS) $(top_builddir)/src/libosmonetif.la @@ -9,8 +12,20 @@ jibuf_jibuf_test_SOURCES = jibuf/jibuf_test.c jibuf_jibuf_test_LDADD = $(LIBOSMOCORE_LIBS) $(top_builddir)/src/libosmonetif.la -jibuf_jibuf_tool_SOURCES = jibuf/jibuf_tool.c -jibuf_jibuf_tool_LDADD = $(LIBOSMOCORE_LIBS) $(top_builddir)/src/libosmonetif.la +jibuf_jibuf_tool_SOURCES = \ + jibuf/jibuf_tool.c \ + osmo-pcap-test/proto.c \ + osmo-pcap-test/l2_eth.c \ + osmo-pcap-test/l2_sll.c \ + osmo-pcap-test/l3_ipv4.c \ + osmo-pcap-test/l4_tcp.c \ + osmo-pcap-test/l4_udp.c \ + osmo-pcap-test/pcap.c + +jibuf_jibuf_tool_LDADD = \ + $(LIBOSMOCORE_LIBS) \ + $(top_builddir)/src/libosmonetif.la \ + -lpcap # The `:;' works around a Bash 3.2 bug when the output is not writeable. $(srcdir)/package.m4: $(top_srcdir)/configure.ac diff --git a/tests/jibuf/jibuf_tool.c b/tests/jibuf/jibuf_tool.c index 810ecb4..7550c1c 100644 --- a/tests/jibuf/jibuf_tool.c +++ b/tests/jibuf/jibuf_tool.c @@ -20,6 +20,7 @@ #include #include #include +#include #include #include @@ -29,50 +30,14 @@ #include #include -/* Logging related stuff */ -#define INT2IDX(x) (-1*(x)-1) -struct log_info_cat jibuf_test_cat[] = { - [INT2IDX(DLJIBUF)] = { - .name = "DLJIBUF", - .description = "Osmocom Jitter Buffer", - .enabled = 1, .loglevel = LOGL_DEBUG, - }, -}; -const struct log_info jibuf_test_log_info = { - .filter_fn = NULL, - .cat = jibuf_test_cat, - .num_cat = ARRAY_SIZE(jibuf_test_cat), -}; +#include "osmo-pcap-test/osmo_pcap.h" -/* RTP packet with AMR payload */ -static uint8_t rtp_pkt[] = { - 0x80, 0x62, 0x3f, 0xcc, 0x00, 0x01, 0xa7, 0x6f, /* RTP */ - 0x07, 0x09, 0x00, 0x62, 0x20, 0x14, 0xff, 0xd4, /* AMR */ - 0xf9, 0xff, 0xfb, 0xe7, 0xeb, 0xf9, 0x9f, 0xf8, - 0xf2, 0x26, 0x33, 0x65, 0x54, -}; - -static void sigalarm_handler(int foo) -{ - printf("FAIL: test did not run successfully\n"); - exit(EXIT_FAILURE); -} - -#define SAMPLES_PER_PKT 160 -#define RTP_FREQ_MS 20 -#define RTP_PKTS_PER_SEC (1000/RTP_FREQ_MS) -#define NET_DELAY_MS 300 -#define GENERATED_JITTER_MS 160 -#define NUM_PACKETS_TO_SEND 1000 - -#define TRACE_PACKE_DEBUG 0 -#define TRACE_PACKET_GNUPLOT 1 -#define TRACE_PACKET_TEST_JITTER 0 struct checkpoint { struct timeval ts; int transit; double jitter; + uint32_t timestamp; }; struct rtp_pkt_info { @@ -88,14 +53,66 @@ struct rtp_pkt_info *data; }; -struct osmo_jibuf *jb; -uint16_t rtp_first_seq; -uint16_t rtp_next_seq; -uint32_t rtp_next_ts; -uint32_t packets_sent; -uint32_t packets_received; -uint32_t packets_dropped; -uint32_t packets_too_much_jitter; +/* Option parameters to the program */ +static bool opt_test_rand; +static bool opt_debug_human; +static bool opt_debug_table; +static char* opt_pcap_file; +/* ----------------------------- */ + +/* Logging related stuff */ +#define INT2IDX(x) (-1*(x)-1) +struct log_info_cat jibuf_test_cat[] = { + [INT2IDX(DLJIBUF)] = { + .name = "DLJIBUF", + .description = "Osmocom Jitter Buffer", + .enabled = 1, .loglevel = LOGL_DEBUG, + }, +}; +const struct log_info jibuf_test_log_info = { + .filter_fn = NULL, + .cat = jibuf_test_cat, + .num_cat = ARRAY_SIZE(jibuf_test_cat), +}; +/* ----------------------------- */ + +/* Used for test random: */ +#define SAMPLES_PER_PKT 160 +#define RTP_FREQ_MS 20 +#define RTP_PKTS_PER_SEC (1000/RTP_FREQ_MS) +#define NET_DELAY_MS 300 +#define GENERATED_JITTER_MS 160 +#define NUM_PACKETS_TO_SEND 1000 + +/* RTP packet with AMR payload */ +static uint8_t rtp_pkt[] = { + 0x80, 0x62, 0x3f, 0xcc, 0x00, 0x01, 0xa7, 0x6f, /* RTP */ + 0x07, 0x09, 0x00, 0x62, 0x20, 0x14, 0xff, 0xd4, /* AMR */ + 0xf9, 0xff, 0xfb, 0xe7, 0xeb, 0xf9, 0x9f, 0xf8, + 0xf2, 0x26, 0x33, 0x65, 0x54, +}; + +static struct osmo_jibuf *jb; +static uint16_t rtp_first_seq; +static uint16_t rtp_next_seq; +static uint32_t rtp_next_ts; +static struct timeval tx_prev_time; +static uint32_t packets_sent; +static uint32_t packets_received; +static uint32_t packets_dropped; +static uint32_t packets_too_much_jitter; +/* ----------------------------- */ + +/* Used for test pcap: */ +static struct osmo_pcap osmo_pcap; +static bool pcap_finished; +/* ----------------------------- */ + +static void sigalarm_handler(int foo) +{ + printf("FAIL: test did not run successfully\n"); + exit(EXIT_FAILURE); +} struct rtp_pkt_info *msgb_get_pinfo(struct msgb* msg) { @@ -108,14 +125,16 @@ return ts->tv_sec * 1000 + ts->tv_usec / 1000; } -int calc_relative_transmit_time(struct timeval *tx_0, struct timeval *tx_f, - struct timeval *rx_0, struct timeval *rx_f) +int32_t calc_rel_transmit_time(uint32_t tx_0, uint32_t tx_f, uint32_t rx_0, uint32_t rx_f, bool tx_is_samples, bool pre) { - struct timeval txdiff, rxdiff, diff; - timersub(rx_f, rx_0, &rxdiff); - timersub(tx_f, tx_0, &txdiff); - timersub(&rxdiff, &txdiff, &diff); - return timeval2ms(&diff); + int32_t rxdiff, txdiff, res; + rxdiff = (rx_f - rx_0); + txdiff = (tx_f - tx_0); + if(tx_is_samples) + txdiff = txdiff * RTP_FREQ_MS/SAMPLES_PER_PKT; + res = rxdiff - txdiff; + //fprintf(stderr, "%s: (%u - %u) - (%u - %u) = %d - %d (%d) = %d\n", (pre ? "pre" : "post"), rx_f, rx_0, tx_f, tx_0, rxdiff, txdiff, (tx_f - tx_0), res); + return res; } void trace_pkt(struct msgb *msg, char* info) { @@ -126,7 +145,7 @@ gettimeofday(&now, NULL); timersub(&now, &pinfo->tx_time, &total_delay); -#if TRACE_PACKET_DEBUG + if (opt_debug_human) { uint32_t total_delay_ms = timeval2ms(&total_delay); LOGP(DLJIBUF, LOGL_DEBUG, "%s: seq=%"PRIu16" ts=%"PRIu32" (%ld.%06ld) tx_delay=%"PRIu32 \ " end_delay=%"PRIu32" pre_trans=%d pre_jitter=%f post_trans=%d post_jitter=%f\n", @@ -135,9 +154,21 @@ pinfo->tx_delay, total_delay_ms, pinfo->prequeue.transit, pinfo->prequeue.jitter, pinfo->postqueue.transit, pinfo->postqueue.jitter); -#endif -#if TRACE_PACKET_GNUPLOT + if (pinfo->prequeue.jitter < pinfo->postqueue.jitter) + LOGP(DLJIBUF, LOGL_ERROR, "JITTER HIGHER THAN REF: seq=%"PRIu16" ts=%"PRIu32 \ + " (%ld.%06ld) tx_delay=%"PRIu32" end_delay=%"PRIu32 \ + " pre_trans=%d pre_jitter=%f post_trans=%d post_jitter=%f dropped=%"PRIu32 \ + " buffer=%"PRIu32"\n", + ntohs(rtph->sequence), ntohl(rtph->timestamp), + pinfo->tx_time.tv_sec, pinfo->tx_time.tv_usec, + pinfo->tx_delay, total_delay_ms, + pinfo->prequeue.transit, pinfo->prequeue.jitter, + pinfo->postqueue.transit, pinfo->postqueue.jitter, + packets_dropped, jb->threshold_delay); + } + + if (opt_debug_table) { /* Used as input for gplot: "gnuplot -p jitter.plt -"" */ uint32_t tx_time_ms = timeval2ms(&pinfo->tx_time); uint32_t prequeue_time_ms = timeval2ms(&pinfo->prequeue.ts); @@ -148,7 +179,7 @@ pinfo->prequeue.transit, pinfo->postqueue.transit, pinfo->prequeue.jitter, pinfo->postqueue.jitter, packets_dropped, jb->threshold_delay); -#endif + } } void pkt_add_result(struct msgb *msg, bool dropped) @@ -162,21 +193,8 @@ packets_received++; trace_pkt(msg,"received"); - if (pinfo->prequeue.jitter < pinfo->postqueue.jitter) { + if (pinfo->prequeue.jitter < pinfo->postqueue.jitter) packets_too_much_jitter++; -#if TRACE_PACKET_TEST_JITTER - LOGP(DLJIBUF, LOGL_ERROR, "JITTER HIGHER THAN REF: %s seq=%"PRIu16" ts=%"PRIu32 \ - " (%ld.%06ld) tx_delay=%"PRIu32" end_delay=%"PRIu32 \ - " pre_trans=%d pre_jitter=%f post_trans=%d post_jitter=%f dropped=%"PRIu32 \ - " buffer=%"PRIu32"\n", - info, ntohs(rtph->sequence), ntohl(rtph->timestamp), - pinfo->tx_time.tv_sec, pinfo->tx_time.tv_usec, - pinfo->tx_delay, total_delay_ms, - pinfo->prequeue.transit, pinfo->prequeue.jitter, - pinfo->postqueue.transit, pinfo->postqueue.jitter, - packets_dropped, jb->threshold_delay); -#endif - } } } @@ -185,14 +203,30 @@ static struct checkpoint postqueue_prev; static bool postqueue_started = false; + bool tx_is_samples; + struct rtp_hdr *rtph = osmo_rtp_get_hdr(msg); struct rtp_pkt_info *pinfo = msgb_get_pinfo(msg); + uint32_t tx1, tx0, rx0, rx1; + gettimeofday(&pinfo->postqueue.ts, NULL); + pinfo->postqueue.timestamp = htonl(rtph->timestamp); if (postqueue_started) { - pinfo->postqueue.transit = calc_relative_transmit_time( - &pinfo->tx_prev_time, &pinfo->tx_time, - &postqueue_prev.ts, &pinfo->postqueue.ts); + /* In random test mode we now the sender time, so we get real + * jitter results using it */ + if(opt_test_rand) { + tx0 = timeval2ms(&pinfo->tx_prev_time); + tx1 = timeval2ms(&pinfo->tx_time); + tx_is_samples = false; + } else { + tx0 = postqueue_prev.timestamp; + tx1 = pinfo->postqueue.timestamp; + tx_is_samples = true; + } + rx0 = timeval2ms(&postqueue_prev.ts); + rx1 = timeval2ms(&pinfo->postqueue.ts); + pinfo->postqueue.transit = calc_rel_transmit_time(tx0, tx1, rx0, rx1, tx_is_samples, 0); uint32_t abs_transit = pinfo->postqueue.transit * ( pinfo->postqueue.transit >= 0 ? 1 : -1 ); @@ -218,15 +252,32 @@ static struct checkpoint prequeue_prev; static bool prequeue_started = false; + bool tx_is_samples; struct msgb *msg = (struct msgb*) data; + struct rtp_hdr *rtph = osmo_rtp_get_hdr(msg); struct rtp_pkt_info *pinfo = msgb_get_pinfo(msg); + + uint32_t tx1, tx0, rx0, rx1; + gettimeofday(&pinfo->prequeue.ts, NULL); + pinfo->prequeue.timestamp = htonl(rtph->timestamp); if (prequeue_started) { - pinfo->prequeue.transit = calc_relative_transmit_time( - &pinfo->tx_prev_time, &pinfo->tx_time, - &prequeue_prev.ts, &pinfo->prequeue.ts); + /* In random test mode we now the sender time, so we get real + * jitter results using it */ + if(opt_test_rand) { + tx0 = timeval2ms(&pinfo->tx_prev_time); + tx1 = timeval2ms(&pinfo->tx_time); + tx_is_samples = false; + } else { + tx0 = prequeue_prev.timestamp; + tx1 = pinfo->prequeue.timestamp; + tx_is_samples = true; + } + rx0 = timeval2ms(&prequeue_prev.ts); + rx1 = timeval2ms(&pinfo->prequeue.ts); + pinfo->prequeue.transit = calc_rel_transmit_time(tx0, tx1, rx0, rx1, tx_is_samples, 1); uint32_t abs_transit = pinfo->prequeue.transit * ( pinfo->prequeue.transit >= 0 ? 1 : -1 ); @@ -250,9 +301,15 @@ } } +struct rtp_pkt_info * msgb_allocate_pinfo(struct msgb *msg) +{ + struct rtp_pkt_info_cb *cb = (struct rtp_pkt_info_cb *)&((msg)->cb[0]); + cb->data = (struct rtp_pkt_info *) talloc_zero(msg, struct rtp_pkt_info); + return cb->data; +} + void rand_send_rtp_packet() { - static struct timeval tx_prev_time; struct rtp_pkt_info *pinfo; struct rtp_hdr *rtph; @@ -282,9 +339,7 @@ rtph->timestamp = htonl(rtp_next_ts); rtp_next_ts += SAMPLES_PER_PKT; - pinfo = talloc_zero(msg, struct rtp_pkt_info); - struct rtp_pkt_info_cb *cb = (struct rtp_pkt_info_cb *)&((msg)->cb[0]); - cb->data = pinfo; + pinfo = msgb_allocate_pinfo(msg); gettimeofday(&pinfo->tx_time, NULL); pinfo->tx_prev_time = tx_prev_time; @@ -300,9 +355,9 @@ osmo_timer_schedule(&pinfo->timer, 0, pinfo->tx_delay * 1000); } -void generate_pkt_cb(void *data) +void rand_generate_pkt_cb(void *data) { - static struct osmo_timer_list enqueue_timer = {.cb = generate_pkt_cb, .data = NULL}; + static struct osmo_timer_list enqueue_timer = {.cb = rand_generate_pkt_cb, .data = NULL}; static struct timeval last_generated; struct timeval time_rate = { .tv_sec = 0, .tv_usec = RTP_FREQ_MS * 1000}; @@ -322,37 +377,56 @@ } } -void check_results() + +static int pcap_generate_pkt_cb(struct msgb *msg) +{ + struct rtp_pkt_info *pinfo; + /* Set fake prev_time for 1st packet. Otherwise transit calculations for first + * packet can be really weird if they not arrive in order */ + if (!packets_sent) { + struct timeval now, time_rate = { .tv_sec = 0, .tv_usec = RTP_FREQ_MS * 1000}; + gettimeofday(&now, NULL); + timersub(&now, &time_rate, &tx_prev_time); + } + + pinfo = msgb_allocate_pinfo(msg); + gettimeofday(&pinfo->tx_time, NULL); + pinfo->tx_prev_time = tx_prev_time; + + tx_prev_time = pinfo->tx_time; + packets_sent++; + pkt_arrived_cb(msg); + return 0; +} + +void pcap_pkt_timer_cb(void *data) +{ + if (osmo_pcap_test_run(&osmo_pcap, IPPROTO_UDP, pcap_generate_pkt_cb) < 0) { + osmo_pcap_stats_printf(); + osmo_pcap_test_close(osmo_pcap.h); + pcap_finished=true; + } +} + +void rand_test_check() { uint32_t drop_threshold = NUM_PACKETS_TO_SEND * 5 / 100; if (packets_dropped > drop_threshold) { fprintf(stdout, "Too many dropped packets (%"PRIu32" > %"PRIu32")\n", packets_dropped, drop_threshold); - exit(1); + exit(EXIT_FAILURE); } uint32_t jitter_high_threshold = NUM_PACKETS_TO_SEND * 8 / 100; if (packets_too_much_jitter > jitter_high_threshold) { fprintf(stdout, "Too many packets with higher jitter (%"PRIu32" > %"PRIu32")\n", packets_too_much_jitter, jitter_high_threshold); - exit(1); + exit(EXIT_FAILURE); } } -int main(void) +void rand_test() { - - if (signal(SIGALRM, sigalarm_handler) == SIG_ERR) { - perror("signal"); - exit(EXIT_FAILURE); - } - - /* This test doesn't use it, but jibuf requires it internally. */ - osmo_init_logging(&jibuf_test_log_info); - log_set_category_filter(osmo_stderr_target, DLMIB, 1, LOGL_ERROR); - log_set_print_filename(osmo_stderr_target, 0); - log_set_log_level(osmo_stderr_target, LOGL_INFO); - srandom(time(NULL)); rtp_first_seq = (uint16_t) random(); rtp_next_seq = rtp_first_seq; @@ -364,7 +438,8 @@ osmo_jibuf_set_dequeue_cb(jb, dequeue_cb, NULL); - generate_pkt_cb(NULL); + /* first run */ + rand_generate_pkt_cb(NULL); /* If the test takes longer than twice the time needed to generate the packets plus 10 seconds, abort it */ @@ -375,7 +450,106 @@ osmo_jibuf_delete(jb); - check_results(); + rand_test_check(); +} + +void pcap_test_check() { + +} + +void pcap_test() { + osmo_pcap_init(); + + osmo_pcap.h = osmo_pcap_test_open(opt_pcap_file); + if (osmo_pcap.h == NULL) + exit(EXIT_FAILURE); + + osmo_pcap.timer.cb = pcap_pkt_timer_cb; + + jb = osmo_jibuf_alloc(NULL); + osmo_jibuf_set_dequeue_cb(jb, dequeue_cb, NULL); + osmo_jibuf_set_min_delay(jb, 60); + osmo_jibuf_set_max_delay(jb, 500); + + /* first run */ + pcap_pkt_timer_cb(NULL); + + while(!pcap_finished || !osmo_jibuf_empty(jb)) + osmo_select_main(0); + + osmo_jibuf_delete(jb); + + pcap_test_check(); +} + +static void print_help(void) +{ + printf("jibuf_test [-r] [-p pcap] [-d] [-g]\n"); + printf(" -h Print this help message\n"); + printf(" -r Run test with randomly generated jitter\n"); + printf(" -p Run test with specified pcap file\n"); + printf(" -d Enable packet trace debug suitable for humans\n"); + printf(" -t Enable packet trace debug suitable for gnuplot\n"); +} + +static int parse_options(int argc, char **argv) +{ + int opt; + + while ((opt = getopt(argc, argv, "hdtrp:")) != -1) { + switch (opt) { + case 'h': + print_help(); + return -1; + case 'd': + opt_debug_human = true; + break; + case 't': + opt_debug_table = true; + break; + case 'r': + opt_test_rand = true; + break; + case 'p': + opt_pcap_file = strdup(optarg); + break; + default: + return -1; + } + } + + return 0; +} + +int main(int argc, char **argv) +{ + + if (signal(SIGALRM, sigalarm_handler) == SIG_ERR) { + perror("signal"); + exit(EXIT_FAILURE); + } + + if(parse_options(argc, argv) < 0) + exit(EXIT_FAILURE); + + osmo_init_logging(&jibuf_test_log_info); + log_set_print_filename(osmo_stderr_target, 0); + log_set_log_level(osmo_stderr_target, LOGL_DEBUG); + + if(opt_debug_human && !opt_debug_table) + log_set_category_filter(osmo_stderr_target, DLMIB, 1, LOGL_DEBUG); + + if(opt_pcap_file && opt_test_rand) { + print_help(); + exit(EXIT_FAILURE); + } + + + if(opt_pcap_file) + pcap_test(); + + if(opt_test_rand) + rand_test(); fprintf(stdout, "OK: Test passed\n"); return EXIT_SUCCESS; diff --git a/tests/jibuf/jitter.plt b/tests/jibuf/jitter.plt index 37deb65..0235170 100644 --- a/tests/jibuf/jitter.plt +++ b/tests/jibuf/jitter.plt @@ -23,13 +23,27 @@ #set y2label 'delay [ms]' #set y2tics nomirror -plot \ - '/tmp/bla' using 3:5 with linespoints title 'pre.trans' axes x1y1, \ - '/tmp/bla' using 4:6 with linespoints title 'post.trans' axes x1y1, \ - '/tmp/bla' using 3:7 with linespoints title 'pre.jitter' axes x1y1, \ - '/tmp/bla' using 4:8 with linespoints title 'post.jitter' axes x1y1, \ - '/tmp/bla' using 3:9 with linespoints title 'pre.dropped' axes x1y1, \ - '/tmp/bla' using 3:10 with linespoints title 'pre.buffer' axes x1y1, \ - '/tmp/bla' using 3:((column(3)-column(2))) with linespoints title 'pre.delay' axes x1y1, \ - '/tmp/bla' using 4:((column(4)-column(2))) with linespoints title 'post.delay' axes x1y1 +# For pcap based input, 'pre.delay' makes no sense (it's 0) as we can't know tx_delay +pcap = 1 +if (pcap) { + plot \ + '/tmp/bla' using 3:5 with linespoints title 'pre.trans' axes x1y1, \ + '/tmp/bla' using 4:6 with linespoints title 'post.trans' axes x1y1, \ + '/tmp/bla' using 3:7 with linespoints title 'pre.jitter' axes x1y1, \ + '/tmp/bla' using 4:8 with linespoints title 'post.jitter' axes x1y1, \ + '/tmp/bla' using 3:9 with linespoints title 'pre.dropped' axes x1y1, \ + '/tmp/bla' using 3:10 with linespoints title 'pre.buffer' axes x1y1, \ + '/tmp/bla' using 4:((column(4)-column(2))) with linespoints title 'post.delay' axes x1y1 + +} else { + plot \ + '/tmp/bla' using 3:5 with linespoints title 'pre.trans' axes x1y1, \ + '/tmp/bla' using 4:6 with linespoints title 'post.trans' axes x1y1, \ + '/tmp/bla' using 3:7 with linespoints title 'pre.jitter' axes x1y1, \ + '/tmp/bla' using 4:8 with linespoints title 'post.jitter' axes x1y1, \ + '/tmp/bla' using 3:9 with linespoints title 'pre.dropped' axes x1y1, \ + '/tmp/bla' using 3:10 with linespoints title 'pre.buffer' axes x1y1, \ + '/tmp/bla' using 3:((column(3)-column(2))) with linespoints title 'pre.delay' axes x1y1, \ + '/tmp/bla' using 4:((column(4)-column(2))) with linespoints title 'post.delay' axes x1y1 +} pause mouse close; exit -- To view, visit https://gerrit.osmocom.org/7775 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newpatchset Gerrit-Change-Id: I7a13c823fb70e0adbc5fa0726fd66b15dc40014e Gerrit-PatchSet: 2 Gerrit-Project: libosmo-netif Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Jenkins Builder From gerrit-no-reply at lists.osmocom.org Fri Apr 13 14:25:37 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Fri, 13 Apr 2018 14:25:37 +0000 Subject: [PATCH] openbsc[master]: mgcp: Add jitter buffer on the uplink receiver Message-ID: Review at https://gerrit.osmocom.org/7793 mgcp: Add jitter buffer on the uplink receiver Default usage values are defined in mgcp node, and can be per-BSC overriden on each bsc node. Change-Id: Ibf3932adc07442fb5e9c7a06404853f9d0a20959 --- M openbsc/include/openbsc/bsc_nat.h M openbsc/include/openbsc/mgcp.h M openbsc/include/openbsc/mgcp_internal.h M openbsc/src/libmgcp/mgcp_network.c M openbsc/src/libmgcp/mgcp_protocol.c M openbsc/src/libmgcp/mgcp_vty.c M openbsc/src/osmo-bsc_nat/bsc_mgcp_utils.c M openbsc/src/osmo-bsc_nat/bsc_nat_vty.c 8 files changed, 253 insertions(+), 3 deletions(-) git pull ssh://gerrit.osmocom.org:29418/openbsc refs/changes/93/7793/1 diff --git a/openbsc/include/openbsc/bsc_nat.h b/openbsc/include/openbsc/bsc_nat.h index fad3804..48cd034 100644 --- a/openbsc/include/openbsc/bsc_nat.h +++ b/openbsc/include/openbsc/bsc_nat.h @@ -175,6 +175,16 @@ /* Osmux is enabled/disabled per BSC */ int osmux; + + /* Use a jitterbuffer on the bts-side receiver */ + bool bts_use_jibuf; + /* Minimum and maximum buffer size for the jitter buffer */ + uint32_t bts_jitter_delay_min; + uint32_t bts_jitter_delay_max; + /* Enabled if explicitly configured through VTY: */ + bool bts_use_jibuf_override; + bool bts_jitter_delay_min_override; + bool bts_jitter_delay_max_override; }; struct bsc_lac_entry { diff --git a/openbsc/include/openbsc/mgcp.h b/openbsc/include/openbsc/mgcp.h index b2262bc..8dc3e76 100644 --- a/openbsc/include/openbsc/mgcp.h +++ b/openbsc/include/openbsc/mgcp.h @@ -236,6 +236,12 @@ * message. */ uint16_t osmux_dummy; + + /* Use a jitterbuffer on the bts-side receiver */ + bool bts_use_jibuf; + /* Minimum and maximum buffer size for the jitter buffer */ + uint32_t bts_jitter_delay_min; + uint32_t bts_jitter_delay_max; }; /* config management */ diff --git a/openbsc/include/openbsc/mgcp_internal.h b/openbsc/include/openbsc/mgcp_internal.h index 7c89d10..4bc4f43 100644 --- a/openbsc/include/openbsc/mgcp_internal.h +++ b/openbsc/include/openbsc/mgcp_internal.h @@ -25,6 +25,7 @@ #include #include +#include #define CI_UNUSED 0 @@ -205,6 +206,14 @@ uint32_t octets; } stats; } osmux; + + /* Jitter buffer */ + struct osmo_jibuf* bts_jb; + /* Use a jitterbuffer on the bts-side receiver */ + bool bts_use_jibuf; + /* Minimum and maximum buffer size for the jitter buffer */ + uint32_t bts_jitter_delay_min; + uint32_t bts_jitter_delay_max; }; #define for_each_line(line, save) \ @@ -340,3 +349,8 @@ return endp->cfg->bts_ports.bind_addr; return endp->cfg->source_addr; } + +/** + * Internal jitter buffer related + */ +void mgcp_dejitter_udp_send(struct msgb *msg, void *data); diff --git a/openbsc/src/libmgcp/mgcp_network.c b/openbsc/src/libmgcp/mgcp_network.c index abce6e4..799d998 100644 --- a/openbsc/src/libmgcp/mgcp_network.c +++ b/openbsc/src/libmgcp/mgcp_network.c @@ -580,6 +580,36 @@ return rc; } +void mgcp_dejitter_udp_send(struct msgb *msg, void *data) +{ + struct mgcp_rtp_end *rtp_end = (struct mgcp_rtp_end *) data; + + int rc = mgcp_udp_send(rtp_end->rtp.fd, &rtp_end->addr, + rtp_end->rtp_port, (char*) msg->data, msg->len); + if (rc != msg->len) + LOGP(DMGCP, LOGL_ERROR, + "Failed to send data after jitter buffer: %d\n", rc); + msgb_free(msg); +} + +static int enqueue_dejitter(struct osmo_jibuf *jb, struct mgcp_rtp_end *rtp_end, char *buf, int len) +{ + struct msgb *msg; + msg = msgb_alloc(len, "mgcp-jibuf"); + if (!msg) + return -1; + + memcpy(msg->data, buf, len); + msgb_put(msg, len); + + if (osmo_jibuf_enqueue(jb, msg) < 0) { + rtp_end->dropped_packets += 1; + msgb_free(msg); + } + + return len; +} + int mgcp_send(struct mgcp_endpoint *endp, int dest, int is_rtp, struct sockaddr_in *addr, char *buf, int rc) { @@ -587,6 +617,7 @@ struct mgcp_rtp_end *rtp_end; struct mgcp_rtp_state *rtp_state; int tap_idx; + struct osmo_jibuf *jb; /* For loop toggle the destination and then dispatch. */ if (tcfg->audio_loop) @@ -600,10 +631,12 @@ rtp_end = &endp->net_end; rtp_state = &endp->bts_state; tap_idx = MGCP_TAP_NET_OUT; + jb = endp->bts_jb; } else { rtp_end = &endp->bts_end; rtp_state = &endp->net_state; tap_idx = MGCP_TAP_BTS_OUT; + jb = NULL; } if (!rtp_end->output_enabled) @@ -621,9 +654,12 @@ mgcp_patch_and_count(endp, rtp_state, rtp_end, addr, buf, len); forward_data(rtp_end->rtp.fd, &endp->taps[tap_idx], buf, len); - rc = mgcp_udp_send(rtp_end->rtp.fd, - &rtp_end->addr, - rtp_end->rtp_port, buf, len); + if (jb) + rc = enqueue_dejitter(jb, rtp_end, buf, len); + else + rc = mgcp_udp_send(rtp_end->rtp.fd, + &rtp_end->addr, + rtp_end->rtp_port, buf, len); if (rc <= 0) return rc; diff --git a/openbsc/src/libmgcp/mgcp_protocol.c b/openbsc/src/libmgcp/mgcp_protocol.c index ae5c90b..0cdc07b 100644 --- a/openbsc/src/libmgcp/mgcp_protocol.c +++ b/openbsc/src/libmgcp/mgcp_protocol.c @@ -827,6 +827,12 @@ goto error2; } + /* Apply Jiter buffer settings for this endpoint, they can be overriden by CRCX policy later */ + endp->bts_use_jibuf = endp->cfg->bts_use_jibuf; + endp->bts_jitter_delay_min = endp->cfg->bts_jitter_delay_min; + endp->bts_jitter_delay_max = endp->cfg->bts_jitter_delay_max; + + endp->allocated = 1; /* set up RTP media parameters */ @@ -862,12 +868,27 @@ case MGCP_POLICY_DEFER: /* stop processing */ create_transcoder(endp); + /* Set up jitter buffer if required after policy has updated jibuf endp values */ + if(endp->bts_use_jibuf) { + endp->bts_jb = osmo_jibuf_alloc(tcfg->endpoints); + osmo_jibuf_set_min_delay(endp->bts_jb, endp->bts_jitter_delay_min); + osmo_jibuf_set_max_delay(endp->bts_jb, endp->bts_jitter_delay_max); + osmo_jibuf_set_dequeue_cb(endp->bts_jb, mgcp_dejitter_udp_send, &endp->net_end); + } return NULL; break; case MGCP_POLICY_CONT: /* just continue */ break; } + } + + /* Set up jitter buffer if required after policy has updated jibuf endp values */ + if(endp->bts_use_jibuf) { + endp->bts_jb = osmo_jibuf_alloc(tcfg->endpoints); + osmo_jibuf_set_min_delay(endp->bts_jb, endp->bts_jitter_delay_min); + osmo_jibuf_set_max_delay(endp->bts_jb, endp->bts_jitter_delay_max); + osmo_jibuf_set_dequeue_cb(endp->bts_jb, mgcp_dejitter_udp_send, &endp->net_end); } LOGP(DMGCP, LOGL_DEBUG, "Creating endpoint on: 0x%x CI: %u port: %u/%u\n", @@ -1333,6 +1354,9 @@ void mgcp_release_endp(struct mgcp_endpoint *endp) { LOGP(DMGCP, LOGL_DEBUG, "Releasing endpoint on: 0x%x\n", ENDPOINT_NUMBER(endp)); + if(endp->bts_jb) + osmo_jibuf_delete(endp->bts_jb); + endp->bts_jb = NULL; endp->ci = CI_UNUSED; endp->allocated = 0; diff --git a/openbsc/src/libmgcp/mgcp_vty.c b/openbsc/src/libmgcp/mgcp_vty.c index b97d7f8..7f56c9e 100644 --- a/openbsc/src/libmgcp/mgcp_vty.c +++ b/openbsc/src/libmgcp/mgcp_vty.c @@ -29,6 +29,7 @@ #include #include +#include #define RTCP_OMIT_STR "Drop RTCP packets in both directions\n" #define RTP_PATCH_STR "Modify RTP packet header in both directions\n" @@ -164,6 +165,13 @@ vty_out(vty, " osmux dummy %s%s", g_cfg->osmux_dummy ? "on" : "off", VTY_NEWLINE); } + if (g_cfg->bts_use_jibuf) + vty_out(vty, " bts-jitter-buffer%s", VTY_NEWLINE); + if (g_cfg->bts_jitter_delay_min) + vty_out(vty, " bts-jitter-delay-min %"PRIu32"%s", g_cfg->bts_jitter_delay_min, VTY_NEWLINE); + if (g_cfg->bts_jitter_delay_max) + vty_out(vty, " bts-jitter-delay-max %"PRIu32"%s", g_cfg->bts_jitter_delay_max, VTY_NEWLINE); + return CMD_SUCCESS; } @@ -241,6 +249,11 @@ if (g_cfg->osmux) vty_out(vty, "Osmux used CID: %d%s", osmux_used_cid(), VTY_NEWLINE); + vty_out(vty, "Jitter Buffer by default on Uplink : %s%s", + g_cfg->bts_use_jibuf ? "on" : "off", VTY_NEWLINE); + if (g_cfg->bts_use_jibuf) + vty_out(vty, "Jitter Buffer delays: min=%"PRIu32" max=%"PRIu32"%s", + g_cfg->bts_jitter_delay_min, g_cfg->bts_jitter_delay_max, VTY_NEWLINE); return CMD_SUCCESS; } @@ -1333,6 +1346,63 @@ return CMD_SUCCESS; } +#define DEJITTER_STR "Uplink Jitter Buffer" +DEFUN(cfg_mgcp_bts_use_jibuf, + cfg_mgcp_bts_use_jibuf_cmd, + "bts-jitter-buffer", + DEJITTER_STR "\n") +{ + g_cfg->bts_use_jibuf = true; + return CMD_SUCCESS; +} + +DEFUN(cfg_mgcp_no_bts_use_jibuf, + cfg_mgcp_no_bts_use_jibuf_cmd, + "no bts-jitter-buffer", + NO_STR DEJITTER_STR "\n") +{ + g_cfg->bts_use_jibuf = false; + return CMD_SUCCESS; +} + +DEFUN(cfg_mgcp_bts_jitter_delay_min, + cfg_mgcp_bts_jitter_delay_min_cmd, + "bts-jitter-buffer-delay-min <1-65535>", + DEJITTER_STR " Minimum Delay\n" "Minimum Delay\n") +{ + g_cfg->bts_jitter_delay_min = atoi(argv[0]); + if (!g_cfg->bts_jitter_delay_min) { + vty_out(vty, "bts-jitter-buffer-delay-min cannot be zero.%s", VTY_NEWLINE); + return CMD_WARNING; + } + if (g_cfg->bts_jitter_delay_min && g_cfg->bts_jitter_delay_max && + g_cfg->bts_jitter_delay_min > g_cfg->bts_jitter_delay_max) { + vty_out(vty, "bts-jitter-buffer-delay-min cannot be bigger than " \ + "bts-jitter-buffer-delay-max.%s", VTY_NEWLINE); + return CMD_WARNING; + } + return CMD_SUCCESS; +} + +DEFUN(cfg_mgcp_bts_jitter_delay_max, + cfg_mgcp_bts_jitter_delay_max_cmd, + "bts-jitter-buffer-delay-max <1-65535>", + DEJITTER_STR " Maximum Delay\n" "Maximum Delay\n") +{ + g_cfg->bts_jitter_delay_max = atoi(argv[0]); + if (!g_cfg->bts_jitter_delay_max) { + vty_out(vty, "bts-jitter-buffer-delay-max cannot be zero.%s", VTY_NEWLINE); + return CMD_WARNING; + } + if (g_cfg->bts_jitter_delay_min && g_cfg->bts_jitter_delay_max && + g_cfg->bts_jitter_delay_min > g_cfg->bts_jitter_delay_max) { + vty_out(vty, "bts-jitter-buffer-delay-max cannot be smaller than " \ + "bts-jitter-buffer-delay-min.%s", VTY_NEWLINE); + return CMD_WARNING; + } + return CMD_SUCCESS; +} + int mgcp_vty_init(void) { install_element_ve(&show_mgcp_cmd); @@ -1399,6 +1469,10 @@ install_element(MGCP_NODE, &cfg_mgcp_osmux_dummy_cmd); install_element(MGCP_NODE, &cfg_mgcp_allow_transcoding_cmd); install_element(MGCP_NODE, &cfg_mgcp_no_allow_transcoding_cmd); + install_element(MGCP_NODE, &cfg_mgcp_bts_use_jibuf_cmd); + install_element(MGCP_NODE, &cfg_mgcp_no_bts_use_jibuf_cmd); + install_element(MGCP_NODE, &cfg_mgcp_bts_jitter_delay_min_cmd); + install_element(MGCP_NODE, &cfg_mgcp_bts_jitter_delay_max_cmd); install_element(MGCP_NODE, &cfg_mgcp_trunk_cmd); diff --git a/openbsc/src/osmo-bsc_nat/bsc_mgcp_utils.c b/openbsc/src/osmo-bsc_nat/bsc_mgcp_utils.c index 48847865..80a8a7a 100644 --- a/openbsc/src/osmo-bsc_nat/bsc_mgcp_utils.c +++ b/openbsc/src/osmo-bsc_nat/bsc_mgcp_utils.c @@ -585,6 +585,16 @@ if (state == MGCP_ENDP_CRCX) { struct sockaddr_in sock; + /* set up jitter buffer parameters */ + if(bsc_endp->bsc->cfg->bts_use_jibuf_override) + mgcp_endp->bts_use_jibuf = bsc_endp->bsc->cfg->bts_use_jibuf; + + if(bsc_endp->bsc->cfg->bts_jitter_delay_min_override) + mgcp_endp->bts_jitter_delay_min = bsc_endp->bsc->cfg->bts_jitter_delay_min; + + if(bsc_endp->bsc->cfg->bts_jitter_delay_max_override) + mgcp_endp->bts_jitter_delay_max = bsc_endp->bsc->cfg->bts_jitter_delay_max; + /* Annotate the allocated Osmux CID until the bsc confirms that * it agrees to use Osmux for this voice flow. */ diff --git a/openbsc/src/osmo-bsc_nat/bsc_nat_vty.c b/openbsc/src/osmo-bsc_nat/bsc_nat_vty.c index d4cef5d..001780e 100644 --- a/openbsc/src/osmo-bsc_nat/bsc_nat_vty.c +++ b/openbsc/src/osmo-bsc_nat/bsc_nat_vty.c @@ -40,6 +40,7 @@ #include #include +#include static struct bsc_nat *_nat; @@ -173,6 +174,12 @@ vty_out(vty, " osmux only%s", VTY_NEWLINE); break; } + if (bsc->bts_use_jibuf_override) + vty_out(vty, " %sbts-jitter-buffer%s", bsc->bts_use_jibuf? "" : "no ", VTY_NEWLINE); + if (bsc->bts_jitter_delay_min_override) + vty_out(vty, " bts-jitter-delay-min %"PRIu32"%s", bsc->bts_jitter_delay_min, VTY_NEWLINE); + if (bsc->bts_jitter_delay_max_override) + vty_out(vty, " bts-jitter-delay-max %"PRIu32"%s", bsc->bts_jitter_delay_max, VTY_NEWLINE); } static int config_write_bsc(struct vty *vty) @@ -1231,6 +1238,71 @@ return CMD_SUCCESS; } +#define DEJITTER_STR "Uplink Jitter Buffer" +DEFUN(cfg_bsc_bts_use_jibuf, + cfg_bsc_bts_use_jibuf_cmd, + "bts-jitter-buffer", + DEJITTER_STR "\n") +{ + struct bsc_config *conf = vty->index; + conf->bts_use_jibuf = true; + conf->bts_use_jibuf_override = true; + return CMD_SUCCESS; +} + +DEFUN(cfg_bsc_no_bts_use_jibuf, + cfg_bsc_no_bts_use_jibuf_cmd, + "no bts-jitter-buffer", + NO_STR DEJITTER_STR "\n") +{ + struct bsc_config *conf = vty->index; + conf->bts_use_jibuf = false; + conf->bts_use_jibuf_override = true; + return CMD_SUCCESS; +} + +DEFUN(cfg_bsc_bts_jitter_delay_min, + cfg_bsc_bts_jitter_delay_min_cmd, + "bts-jitter-buffer-delay-min <1-65535>", + DEJITTER_STR " Minimum Delay\n" "Minimum Delay\n") +{ + struct bsc_config *conf = vty->index; + conf->bts_jitter_delay_min = atoi(argv[0]); + if (!conf->bts_jitter_delay_min) { + vty_out(vty, "bts-jitter-buffer-delay-min cannot be zero.%s", VTY_NEWLINE); + return CMD_WARNING; + } + if (conf->bts_jitter_delay_min && conf->bts_jitter_delay_max && + conf->bts_jitter_delay_min > conf->bts_jitter_delay_max) { + vty_out(vty, "bts-jitter-buffer-delay-min cannot be bigger than " \ + "bts-jitter-buffer-delay-max.%s", VTY_NEWLINE); + return CMD_WARNING; + } + conf->bts_jitter_delay_min_override = true; + return CMD_SUCCESS; +} + +DEFUN(cfg_bsc_bts_jitter_delay_max, + cfg_bsc_bts_jitter_delay_max_cmd, + "bts-jitter-buffer-delay-max <1-65535>", + DEJITTER_STR " Maximum Delay\n" "Maximum Delay\n") +{ + struct bsc_config *conf = vty->index; + conf->bts_jitter_delay_max = atoi(argv[0]); + if (!conf->bts_jitter_delay_max) { + vty_out(vty, "bts-jitter-buffer-delay-max cannot be zero.%s", VTY_NEWLINE); + return CMD_WARNING; + } + if (conf->bts_jitter_delay_min && conf->bts_jitter_delay_max && + conf->bts_jitter_delay_min > conf->bts_jitter_delay_max) { + vty_out(vty, "bts-jitter-buffer-delay-max cannot be smaller than " \ + "bts-jitter-buffer-delay-min.%s", VTY_NEWLINE); + return CMD_WARNING; + } + conf->bts_jitter_delay_max_override = true; + return CMD_SUCCESS; +} + int bsc_nat_vty_init(struct bsc_nat *nat) { _nat = nat; @@ -1318,6 +1390,10 @@ install_element(NAT_BSC_NODE, &cfg_bsc_paging_grp_cmd); install_element(NAT_BSC_NODE, &cfg_bsc_no_paging_grp_cmd); install_element(NAT_BSC_NODE, &cfg_bsc_osmux_cmd); + install_element(NAT_BSC_NODE, &cfg_bsc_bts_use_jibuf_cmd); + install_element(NAT_BSC_NODE, &cfg_bsc_no_bts_use_jibuf_cmd); + install_element(NAT_BSC_NODE, &cfg_bsc_bts_jitter_delay_min_cmd); + install_element(NAT_BSC_NODE, &cfg_bsc_bts_jitter_delay_max_cmd); mgcp_vty_init(); -- To view, visit https://gerrit.osmocom.org/7793 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Ibf3932adc07442fb5e9c7a06404853f9d0a20959 Gerrit-PatchSet: 1 Gerrit-Project: openbsc Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol From gerrit-no-reply at lists.osmocom.org Fri Apr 13 14:26:21 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Fri, 13 Apr 2018 14:26:21 +0000 Subject: [PATCH] openbsc[master]: nat: Add jitter buffer on the uplink receiver In-Reply-To: References: Message-ID: nat: Add jitter buffer on the uplink receiver Default usage values are defined in mgcp node, and can be per-BSC overriden on each bsc node. Change-Id: Ibf3932adc07442fb5e9c7a06404853f9d0a20959 --- M openbsc/include/openbsc/bsc_nat.h M openbsc/include/openbsc/mgcp.h M openbsc/include/openbsc/mgcp_internal.h M openbsc/src/libmgcp/mgcp_network.c M openbsc/src/libmgcp/mgcp_protocol.c M openbsc/src/libmgcp/mgcp_vty.c M openbsc/src/osmo-bsc_nat/bsc_mgcp_utils.c M openbsc/src/osmo-bsc_nat/bsc_nat_vty.c 8 files changed, 253 insertions(+), 3 deletions(-) git pull ssh://gerrit.osmocom.org:29418/openbsc refs/changes/93/7793/2 diff --git a/openbsc/include/openbsc/bsc_nat.h b/openbsc/include/openbsc/bsc_nat.h index fad3804..48cd034 100644 --- a/openbsc/include/openbsc/bsc_nat.h +++ b/openbsc/include/openbsc/bsc_nat.h @@ -175,6 +175,16 @@ /* Osmux is enabled/disabled per BSC */ int osmux; + + /* Use a jitterbuffer on the bts-side receiver */ + bool bts_use_jibuf; + /* Minimum and maximum buffer size for the jitter buffer */ + uint32_t bts_jitter_delay_min; + uint32_t bts_jitter_delay_max; + /* Enabled if explicitly configured through VTY: */ + bool bts_use_jibuf_override; + bool bts_jitter_delay_min_override; + bool bts_jitter_delay_max_override; }; struct bsc_lac_entry { diff --git a/openbsc/include/openbsc/mgcp.h b/openbsc/include/openbsc/mgcp.h index b2262bc..8dc3e76 100644 --- a/openbsc/include/openbsc/mgcp.h +++ b/openbsc/include/openbsc/mgcp.h @@ -236,6 +236,12 @@ * message. */ uint16_t osmux_dummy; + + /* Use a jitterbuffer on the bts-side receiver */ + bool bts_use_jibuf; + /* Minimum and maximum buffer size for the jitter buffer */ + uint32_t bts_jitter_delay_min; + uint32_t bts_jitter_delay_max; }; /* config management */ diff --git a/openbsc/include/openbsc/mgcp_internal.h b/openbsc/include/openbsc/mgcp_internal.h index 7c89d10..4bc4f43 100644 --- a/openbsc/include/openbsc/mgcp_internal.h +++ b/openbsc/include/openbsc/mgcp_internal.h @@ -25,6 +25,7 @@ #include #include +#include #define CI_UNUSED 0 @@ -205,6 +206,14 @@ uint32_t octets; } stats; } osmux; + + /* Jitter buffer */ + struct osmo_jibuf* bts_jb; + /* Use a jitterbuffer on the bts-side receiver */ + bool bts_use_jibuf; + /* Minimum and maximum buffer size for the jitter buffer */ + uint32_t bts_jitter_delay_min; + uint32_t bts_jitter_delay_max; }; #define for_each_line(line, save) \ @@ -340,3 +349,8 @@ return endp->cfg->bts_ports.bind_addr; return endp->cfg->source_addr; } + +/** + * Internal jitter buffer related + */ +void mgcp_dejitter_udp_send(struct msgb *msg, void *data); diff --git a/openbsc/src/libmgcp/mgcp_network.c b/openbsc/src/libmgcp/mgcp_network.c index abce6e4..799d998 100644 --- a/openbsc/src/libmgcp/mgcp_network.c +++ b/openbsc/src/libmgcp/mgcp_network.c @@ -580,6 +580,36 @@ return rc; } +void mgcp_dejitter_udp_send(struct msgb *msg, void *data) +{ + struct mgcp_rtp_end *rtp_end = (struct mgcp_rtp_end *) data; + + int rc = mgcp_udp_send(rtp_end->rtp.fd, &rtp_end->addr, + rtp_end->rtp_port, (char*) msg->data, msg->len); + if (rc != msg->len) + LOGP(DMGCP, LOGL_ERROR, + "Failed to send data after jitter buffer: %d\n", rc); + msgb_free(msg); +} + +static int enqueue_dejitter(struct osmo_jibuf *jb, struct mgcp_rtp_end *rtp_end, char *buf, int len) +{ + struct msgb *msg; + msg = msgb_alloc(len, "mgcp-jibuf"); + if (!msg) + return -1; + + memcpy(msg->data, buf, len); + msgb_put(msg, len); + + if (osmo_jibuf_enqueue(jb, msg) < 0) { + rtp_end->dropped_packets += 1; + msgb_free(msg); + } + + return len; +} + int mgcp_send(struct mgcp_endpoint *endp, int dest, int is_rtp, struct sockaddr_in *addr, char *buf, int rc) { @@ -587,6 +617,7 @@ struct mgcp_rtp_end *rtp_end; struct mgcp_rtp_state *rtp_state; int tap_idx; + struct osmo_jibuf *jb; /* For loop toggle the destination and then dispatch. */ if (tcfg->audio_loop) @@ -600,10 +631,12 @@ rtp_end = &endp->net_end; rtp_state = &endp->bts_state; tap_idx = MGCP_TAP_NET_OUT; + jb = endp->bts_jb; } else { rtp_end = &endp->bts_end; rtp_state = &endp->net_state; tap_idx = MGCP_TAP_BTS_OUT; + jb = NULL; } if (!rtp_end->output_enabled) @@ -621,9 +654,12 @@ mgcp_patch_and_count(endp, rtp_state, rtp_end, addr, buf, len); forward_data(rtp_end->rtp.fd, &endp->taps[tap_idx], buf, len); - rc = mgcp_udp_send(rtp_end->rtp.fd, - &rtp_end->addr, - rtp_end->rtp_port, buf, len); + if (jb) + rc = enqueue_dejitter(jb, rtp_end, buf, len); + else + rc = mgcp_udp_send(rtp_end->rtp.fd, + &rtp_end->addr, + rtp_end->rtp_port, buf, len); if (rc <= 0) return rc; diff --git a/openbsc/src/libmgcp/mgcp_protocol.c b/openbsc/src/libmgcp/mgcp_protocol.c index ae5c90b..0cdc07b 100644 --- a/openbsc/src/libmgcp/mgcp_protocol.c +++ b/openbsc/src/libmgcp/mgcp_protocol.c @@ -827,6 +827,12 @@ goto error2; } + /* Apply Jiter buffer settings for this endpoint, they can be overriden by CRCX policy later */ + endp->bts_use_jibuf = endp->cfg->bts_use_jibuf; + endp->bts_jitter_delay_min = endp->cfg->bts_jitter_delay_min; + endp->bts_jitter_delay_max = endp->cfg->bts_jitter_delay_max; + + endp->allocated = 1; /* set up RTP media parameters */ @@ -862,12 +868,27 @@ case MGCP_POLICY_DEFER: /* stop processing */ create_transcoder(endp); + /* Set up jitter buffer if required after policy has updated jibuf endp values */ + if(endp->bts_use_jibuf) { + endp->bts_jb = osmo_jibuf_alloc(tcfg->endpoints); + osmo_jibuf_set_min_delay(endp->bts_jb, endp->bts_jitter_delay_min); + osmo_jibuf_set_max_delay(endp->bts_jb, endp->bts_jitter_delay_max); + osmo_jibuf_set_dequeue_cb(endp->bts_jb, mgcp_dejitter_udp_send, &endp->net_end); + } return NULL; break; case MGCP_POLICY_CONT: /* just continue */ break; } + } + + /* Set up jitter buffer if required after policy has updated jibuf endp values */ + if(endp->bts_use_jibuf) { + endp->bts_jb = osmo_jibuf_alloc(tcfg->endpoints); + osmo_jibuf_set_min_delay(endp->bts_jb, endp->bts_jitter_delay_min); + osmo_jibuf_set_max_delay(endp->bts_jb, endp->bts_jitter_delay_max); + osmo_jibuf_set_dequeue_cb(endp->bts_jb, mgcp_dejitter_udp_send, &endp->net_end); } LOGP(DMGCP, LOGL_DEBUG, "Creating endpoint on: 0x%x CI: %u port: %u/%u\n", @@ -1333,6 +1354,9 @@ void mgcp_release_endp(struct mgcp_endpoint *endp) { LOGP(DMGCP, LOGL_DEBUG, "Releasing endpoint on: 0x%x\n", ENDPOINT_NUMBER(endp)); + if(endp->bts_jb) + osmo_jibuf_delete(endp->bts_jb); + endp->bts_jb = NULL; endp->ci = CI_UNUSED; endp->allocated = 0; diff --git a/openbsc/src/libmgcp/mgcp_vty.c b/openbsc/src/libmgcp/mgcp_vty.c index b97d7f8..7f56c9e 100644 --- a/openbsc/src/libmgcp/mgcp_vty.c +++ b/openbsc/src/libmgcp/mgcp_vty.c @@ -29,6 +29,7 @@ #include #include +#include #define RTCP_OMIT_STR "Drop RTCP packets in both directions\n" #define RTP_PATCH_STR "Modify RTP packet header in both directions\n" @@ -164,6 +165,13 @@ vty_out(vty, " osmux dummy %s%s", g_cfg->osmux_dummy ? "on" : "off", VTY_NEWLINE); } + if (g_cfg->bts_use_jibuf) + vty_out(vty, " bts-jitter-buffer%s", VTY_NEWLINE); + if (g_cfg->bts_jitter_delay_min) + vty_out(vty, " bts-jitter-delay-min %"PRIu32"%s", g_cfg->bts_jitter_delay_min, VTY_NEWLINE); + if (g_cfg->bts_jitter_delay_max) + vty_out(vty, " bts-jitter-delay-max %"PRIu32"%s", g_cfg->bts_jitter_delay_max, VTY_NEWLINE); + return CMD_SUCCESS; } @@ -241,6 +249,11 @@ if (g_cfg->osmux) vty_out(vty, "Osmux used CID: %d%s", osmux_used_cid(), VTY_NEWLINE); + vty_out(vty, "Jitter Buffer by default on Uplink : %s%s", + g_cfg->bts_use_jibuf ? "on" : "off", VTY_NEWLINE); + if (g_cfg->bts_use_jibuf) + vty_out(vty, "Jitter Buffer delays: min=%"PRIu32" max=%"PRIu32"%s", + g_cfg->bts_jitter_delay_min, g_cfg->bts_jitter_delay_max, VTY_NEWLINE); return CMD_SUCCESS; } @@ -1333,6 +1346,63 @@ return CMD_SUCCESS; } +#define DEJITTER_STR "Uplink Jitter Buffer" +DEFUN(cfg_mgcp_bts_use_jibuf, + cfg_mgcp_bts_use_jibuf_cmd, + "bts-jitter-buffer", + DEJITTER_STR "\n") +{ + g_cfg->bts_use_jibuf = true; + return CMD_SUCCESS; +} + +DEFUN(cfg_mgcp_no_bts_use_jibuf, + cfg_mgcp_no_bts_use_jibuf_cmd, + "no bts-jitter-buffer", + NO_STR DEJITTER_STR "\n") +{ + g_cfg->bts_use_jibuf = false; + return CMD_SUCCESS; +} + +DEFUN(cfg_mgcp_bts_jitter_delay_min, + cfg_mgcp_bts_jitter_delay_min_cmd, + "bts-jitter-buffer-delay-min <1-65535>", + DEJITTER_STR " Minimum Delay\n" "Minimum Delay\n") +{ + g_cfg->bts_jitter_delay_min = atoi(argv[0]); + if (!g_cfg->bts_jitter_delay_min) { + vty_out(vty, "bts-jitter-buffer-delay-min cannot be zero.%s", VTY_NEWLINE); + return CMD_WARNING; + } + if (g_cfg->bts_jitter_delay_min && g_cfg->bts_jitter_delay_max && + g_cfg->bts_jitter_delay_min > g_cfg->bts_jitter_delay_max) { + vty_out(vty, "bts-jitter-buffer-delay-min cannot be bigger than " \ + "bts-jitter-buffer-delay-max.%s", VTY_NEWLINE); + return CMD_WARNING; + } + return CMD_SUCCESS; +} + +DEFUN(cfg_mgcp_bts_jitter_delay_max, + cfg_mgcp_bts_jitter_delay_max_cmd, + "bts-jitter-buffer-delay-max <1-65535>", + DEJITTER_STR " Maximum Delay\n" "Maximum Delay\n") +{ + g_cfg->bts_jitter_delay_max = atoi(argv[0]); + if (!g_cfg->bts_jitter_delay_max) { + vty_out(vty, "bts-jitter-buffer-delay-max cannot be zero.%s", VTY_NEWLINE); + return CMD_WARNING; + } + if (g_cfg->bts_jitter_delay_min && g_cfg->bts_jitter_delay_max && + g_cfg->bts_jitter_delay_min > g_cfg->bts_jitter_delay_max) { + vty_out(vty, "bts-jitter-buffer-delay-max cannot be smaller than " \ + "bts-jitter-buffer-delay-min.%s", VTY_NEWLINE); + return CMD_WARNING; + } + return CMD_SUCCESS; +} + int mgcp_vty_init(void) { install_element_ve(&show_mgcp_cmd); @@ -1399,6 +1469,10 @@ install_element(MGCP_NODE, &cfg_mgcp_osmux_dummy_cmd); install_element(MGCP_NODE, &cfg_mgcp_allow_transcoding_cmd); install_element(MGCP_NODE, &cfg_mgcp_no_allow_transcoding_cmd); + install_element(MGCP_NODE, &cfg_mgcp_bts_use_jibuf_cmd); + install_element(MGCP_NODE, &cfg_mgcp_no_bts_use_jibuf_cmd); + install_element(MGCP_NODE, &cfg_mgcp_bts_jitter_delay_min_cmd); + install_element(MGCP_NODE, &cfg_mgcp_bts_jitter_delay_max_cmd); install_element(MGCP_NODE, &cfg_mgcp_trunk_cmd); diff --git a/openbsc/src/osmo-bsc_nat/bsc_mgcp_utils.c b/openbsc/src/osmo-bsc_nat/bsc_mgcp_utils.c index 48847865..80a8a7a 100644 --- a/openbsc/src/osmo-bsc_nat/bsc_mgcp_utils.c +++ b/openbsc/src/osmo-bsc_nat/bsc_mgcp_utils.c @@ -585,6 +585,16 @@ if (state == MGCP_ENDP_CRCX) { struct sockaddr_in sock; + /* set up jitter buffer parameters */ + if(bsc_endp->bsc->cfg->bts_use_jibuf_override) + mgcp_endp->bts_use_jibuf = bsc_endp->bsc->cfg->bts_use_jibuf; + + if(bsc_endp->bsc->cfg->bts_jitter_delay_min_override) + mgcp_endp->bts_jitter_delay_min = bsc_endp->bsc->cfg->bts_jitter_delay_min; + + if(bsc_endp->bsc->cfg->bts_jitter_delay_max_override) + mgcp_endp->bts_jitter_delay_max = bsc_endp->bsc->cfg->bts_jitter_delay_max; + /* Annotate the allocated Osmux CID until the bsc confirms that * it agrees to use Osmux for this voice flow. */ diff --git a/openbsc/src/osmo-bsc_nat/bsc_nat_vty.c b/openbsc/src/osmo-bsc_nat/bsc_nat_vty.c index d4cef5d..001780e 100644 --- a/openbsc/src/osmo-bsc_nat/bsc_nat_vty.c +++ b/openbsc/src/osmo-bsc_nat/bsc_nat_vty.c @@ -40,6 +40,7 @@ #include #include +#include static struct bsc_nat *_nat; @@ -173,6 +174,12 @@ vty_out(vty, " osmux only%s", VTY_NEWLINE); break; } + if (bsc->bts_use_jibuf_override) + vty_out(vty, " %sbts-jitter-buffer%s", bsc->bts_use_jibuf? "" : "no ", VTY_NEWLINE); + if (bsc->bts_jitter_delay_min_override) + vty_out(vty, " bts-jitter-delay-min %"PRIu32"%s", bsc->bts_jitter_delay_min, VTY_NEWLINE); + if (bsc->bts_jitter_delay_max_override) + vty_out(vty, " bts-jitter-delay-max %"PRIu32"%s", bsc->bts_jitter_delay_max, VTY_NEWLINE); } static int config_write_bsc(struct vty *vty) @@ -1231,6 +1238,71 @@ return CMD_SUCCESS; } +#define DEJITTER_STR "Uplink Jitter Buffer" +DEFUN(cfg_bsc_bts_use_jibuf, + cfg_bsc_bts_use_jibuf_cmd, + "bts-jitter-buffer", + DEJITTER_STR "\n") +{ + struct bsc_config *conf = vty->index; + conf->bts_use_jibuf = true; + conf->bts_use_jibuf_override = true; + return CMD_SUCCESS; +} + +DEFUN(cfg_bsc_no_bts_use_jibuf, + cfg_bsc_no_bts_use_jibuf_cmd, + "no bts-jitter-buffer", + NO_STR DEJITTER_STR "\n") +{ + struct bsc_config *conf = vty->index; + conf->bts_use_jibuf = false; + conf->bts_use_jibuf_override = true; + return CMD_SUCCESS; +} + +DEFUN(cfg_bsc_bts_jitter_delay_min, + cfg_bsc_bts_jitter_delay_min_cmd, + "bts-jitter-buffer-delay-min <1-65535>", + DEJITTER_STR " Minimum Delay\n" "Minimum Delay\n") +{ + struct bsc_config *conf = vty->index; + conf->bts_jitter_delay_min = atoi(argv[0]); + if (!conf->bts_jitter_delay_min) { + vty_out(vty, "bts-jitter-buffer-delay-min cannot be zero.%s", VTY_NEWLINE); + return CMD_WARNING; + } + if (conf->bts_jitter_delay_min && conf->bts_jitter_delay_max && + conf->bts_jitter_delay_min > conf->bts_jitter_delay_max) { + vty_out(vty, "bts-jitter-buffer-delay-min cannot be bigger than " \ + "bts-jitter-buffer-delay-max.%s", VTY_NEWLINE); + return CMD_WARNING; + } + conf->bts_jitter_delay_min_override = true; + return CMD_SUCCESS; +} + +DEFUN(cfg_bsc_bts_jitter_delay_max, + cfg_bsc_bts_jitter_delay_max_cmd, + "bts-jitter-buffer-delay-max <1-65535>", + DEJITTER_STR " Maximum Delay\n" "Maximum Delay\n") +{ + struct bsc_config *conf = vty->index; + conf->bts_jitter_delay_max = atoi(argv[0]); + if (!conf->bts_jitter_delay_max) { + vty_out(vty, "bts-jitter-buffer-delay-max cannot be zero.%s", VTY_NEWLINE); + return CMD_WARNING; + } + if (conf->bts_jitter_delay_min && conf->bts_jitter_delay_max && + conf->bts_jitter_delay_min > conf->bts_jitter_delay_max) { + vty_out(vty, "bts-jitter-buffer-delay-max cannot be smaller than " \ + "bts-jitter-buffer-delay-min.%s", VTY_NEWLINE); + return CMD_WARNING; + } + conf->bts_jitter_delay_max_override = true; + return CMD_SUCCESS; +} + int bsc_nat_vty_init(struct bsc_nat *nat) { _nat = nat; @@ -1318,6 +1390,10 @@ install_element(NAT_BSC_NODE, &cfg_bsc_paging_grp_cmd); install_element(NAT_BSC_NODE, &cfg_bsc_no_paging_grp_cmd); install_element(NAT_BSC_NODE, &cfg_bsc_osmux_cmd); + install_element(NAT_BSC_NODE, &cfg_bsc_bts_use_jibuf_cmd); + install_element(NAT_BSC_NODE, &cfg_bsc_no_bts_use_jibuf_cmd); + install_element(NAT_BSC_NODE, &cfg_bsc_bts_jitter_delay_min_cmd); + install_element(NAT_BSC_NODE, &cfg_bsc_bts_jitter_delay_max_cmd); mgcp_vty_init(); -- To view, visit https://gerrit.osmocom.org/7793 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newpatchset Gerrit-Change-Id: Ibf3932adc07442fb5e9c7a06404853f9d0a20959 Gerrit-PatchSet: 2 Gerrit-Project: openbsc Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Jenkins Builder From gerrit-no-reply at lists.osmocom.org Fri Apr 13 14:26:43 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Fri, 13 Apr 2018 14:26:43 +0000 Subject: openbsc[master]: nat: Add jitter buffer on the uplink receiver In-Reply-To: References: Message-ID: Patch Set 1: Depends on https://gerrit.osmocom.org/#/c/7773 for correct build. -- To view, visit https://gerrit.osmocom.org/7793 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Ibf3932adc07442fb5e9c7a06404853f9d0a20959 Gerrit-PatchSet: 1 Gerrit-Project: openbsc Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Pau Espin Pedrol Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Fri Apr 13 14:27:40 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Fri, 13 Apr 2018 14:27:40 +0000 Subject: openbsc[master]: nat: Add jitter buffer on the uplink receiver In-Reply-To: References: Message-ID: Patch Set 1: After I receive feedback for this one, I may add support to enable a jitterbuffer in the downstream too in a follow up commit. -- To view, visit https://gerrit.osmocom.org/7793 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Ibf3932adc07442fb5e9c7a06404853f9d0a20959 Gerrit-PatchSet: 1 Gerrit-Project: openbsc Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Pau Espin Pedrol Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Fri Apr 13 14:28:53 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Fri, 13 Apr 2018 14:28:53 +0000 Subject: osmo-bsc[master]: fix handling of state changes in acc ramping In-Reply-To: References: Message-ID: Patch Set 4: Remember to backport all related patches to openbsc! -- To view, visit https://gerrit.osmocom.org/7784 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Ib3291439655598fb5ddc891a3e4cc35b0bad250f Gerrit-PatchSet: 4 Gerrit-Project: osmo-bsc Gerrit-Branch: master Gerrit-Owner: Stefan Sperling Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Pau Espin Pedrol Gerrit-Reviewer: Stefan Sperling Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Fri Apr 13 14:56:11 2018 From: gerrit-no-reply at lists.osmocom.org (dexter) Date: Fri, 13 Apr 2018 14:56:11 +0000 Subject: [PATCH] osmo-bsc[master]: inform A-RESET FSM about MSC CR timeouts Message-ID: Review at https://gerrit.osmocom.org/7794 inform A-RESET FSM about MSC CR timeouts The SUBSCR_CONN (GSCON) fsm starts a timer (993210, 20sec.) when the CR to the MSC is made. When the timer reaches its timeout, then the SUBSC_CONN FSM terminates. Such a timeout event is also an indicator for a bad SCCP connection so we should call a_reset_conn_fail() to inform the A-RESET FSM about the event in order to cause a BSSMAP reset when too many timeouts occurr consecutively - Call a_reset_conn_fail() when 993210 expires Change-Id: I836a552f2ad37c160081246579f842d104d0dd35 Related: OS#3102 --- M src/libbsc/bsc_subscr_conn_fsm.c 1 file changed, 9 insertions(+), 2 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-bsc refs/changes/94/7794/1 diff --git a/src/libbsc/bsc_subscr_conn_fsm.c b/src/libbsc/bsc_subscr_conn_fsm.c index a24cb31..a63483e 100644 --- a/src/libbsc/bsc_subscr_conn_fsm.c +++ b/src/libbsc/bsc_subscr_conn_fsm.c @@ -1058,8 +1058,15 @@ switch (fi->T) { case 993210: - /* MSC has not responded/confirmed connection witH CC */ - /* N-DISCONNET.req is sent in gscon_cleanup() above */ + /* MSC has not responded/confirmed connection with CC, this + * could indicate a bad SCCP connection. We now inform the the + * FSM that controls the BSSMAP reset about the event. Maybe + * a BSSMAP reset is necessary. */ + a_reset_conn_fail(conn->sccp.msc->a.reset); + + /* Since we could not reach the MSC, we give up and terminate + * the FSM instance now (N-DISCONNET.req is sent in + * gscon_cleanup() above) */ osmo_fsm_inst_term(fi, OSMO_FSM_TERM_REGULAR, NULL); break; case GSM0808_T10_TIMER_NR: /* Assignment Failed */ -- To view, visit https://gerrit.osmocom.org/7794 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I836a552f2ad37c160081246579f842d104d0dd35 Gerrit-PatchSet: 1 Gerrit-Project: osmo-bsc Gerrit-Branch: master Gerrit-Owner: dexter From jenkins at lists.osmocom.org Fri Apr 13 15:10:06 2018 From: jenkins at lists.osmocom.org (jenkins at lists.osmocom.org) Date: Fri, 13 Apr 2018 15:10:06 +0000 (UTC) Subject: =?UTF-8?Q?Build_failed_in_Jenkins:_master-asn1c_=C2=BB_a1=3Ddefaul?= =?UTF-8?Q?t,a2=3Ddefault,a3=3Ddefault,osmocom-master-debian9_#90?= In-Reply-To: <1326704731.275.1523545806509.JavaMail.jenkins@jenkins.osmocom.org> References: <1326704731.275.1523545806509.JavaMail.jenkins@jenkins.osmocom.org> Message-ID: <539976271.294.1523632206458.JavaMail.jenkins@jenkins.osmocom.org> See ------------------------------------------ [...truncated 3.74 KB...] checking build system type... x86_64-unknown-linux-gnu checking host system type... x86_64-unknown-linux-gnu checking target system type... x86_64-unknown-linux-gnu checking for a BSD-compatible install... /usr/bin/install -c checking whether build environment is sane... yes checking for gawk... gawk checking whether make sets $(MAKE)... yes checking whether to enable maintainer-specific portions of Makefiles... no checking for style of include used by make... GNU checking for gcc... gcc checking for C compiler default output file name... a.out checking whether the C compiler works... yes checking whether we are cross compiling... no checking for suffix of executables... checking for suffix of object files... o checking whether we are using the GNU C compiler... yes checking whether gcc accepts -g... yes checking for gcc option to accept ISO C89... none needed checking dependency style of gcc... gcc3 checking for a sed that does not truncate output... /bin/sed checking for grep that handles long lines and -e... /bin/grep checking for egrep... /bin/grep -E checking for ld used by gcc... /usr/bin/ld checking if the linker (/usr/bin/ld) is GNU ld... yes checking for /usr/bin/ld option to reload object files... -r checking for BSD-compatible nm... /usr/bin/nm -B checking whether ln -s works... yes checking how to recognise dependent libraries... pass_all checking how to run the C preprocessor... gcc -E checking for ANSI C header files... yes checking for sys/types.h... yes checking for sys/stat.h... yes checking for stdlib.h... yes checking for string.h... yes checking for memory.h... yes checking for strings.h... yes checking for inttypes.h... yes checking for stdint.h... yes checking for unistd.h... yes checking dlfcn.h usability... yes checking dlfcn.h presence... yes checking for dlfcn.h... yes checking for g++... g++ checking whether we are using the GNU C++ compiler... yes checking whether g++ accepts -g... yes checking dependency style of g++... gcc3 checking how to run the C++ preprocessor... g++ -E checking for g77... no checking for f77... no checking for xlf... no checking for frt... no checking for pgf77... no checking for cf77... no checking for fort77... no checking for fl32... no checking for af77... no checking for f90... no checking for xlf90... no checking for pgf90... no checking for pghpf... no checking for epcf90... no checking for gfortran... no checking for g95... no checking for f95... no checking for fort... no checking for xlf95... no checking for ifort... no checking for ifc... no checking for efc... no checking for pgf95... no checking for lf95... no checking for ftn... no checking whether we are using the GNU Fortran 77 compiler... no checking whether accepts -g... no checking the maximum length of command line arguments... 32768 checking command to parse /usr/bin/nm -B output from gcc object... ok checking for objdir... .libs checking for ar... ar checking for ranlib... ranlib checking for strip... strip checking if gcc supports -fno-rtti -fno-exceptions... no checking for gcc option to produce PIC... -fPIC checking if gcc PIC flag -fPIC works... yes checking if gcc static flag -static works... yes checking if gcc supports -c -o file.o... yes checking whether the gcc linker (/usr/bin/ld -m elf_x86_64) supports shared libraries... yes checking whether -lc should be explicitly linked in... no checking dynamic linker characteristics... GNU/Linux ld.so checking how to hardcode library paths into programs... immediate checking whether stripping libraries is possible... yes checking if libtool supports shared libraries... yes checking whether to build shared libraries... yes checking whether to build static libraries... yes configure: creating libtool appending configuration tag "CXX" to libtool checking for ld used by g++... /usr/bin/ld -m elf_x86_64 checking if the linker (/usr/bin/ld -m elf_x86_64) is GNU ld... yes checking whether the g++ linker (/usr/bin/ld -m elf_x86_64) supports shared libraries... yes checking for g++ option to produce PIC... -fPIC checking if g++ PIC flag -fPIC works... yes checking if g++ static flag -static works... yes checking if g++ supports -c -o file.o... yes checking whether the g++ linker (/usr/bin/ld -m elf_x86_64) supports shared libraries... yes checking dynamic linker characteristics... GNU/Linux ld.so checking how to hardcode library paths into programs... immediate appending configuration tag "F77" to libtool checking for autoconf... /usr/bin/autoconf checking for autoheader... /usr/bin/autoheader checking for gcc... (cached) gcc checking whether we are using the GNU C compiler... (cached) yes checking whether gcc accepts -g... (cached) yes checking for gcc option to accept ISO C89... (cached) none needed checking dependency style of gcc... (cached) gcc3 checking how to run the C preprocessor... gcc -E checking for a BSD-compatible install... /usr/bin/install -c checking whether ln -s works... yes checking whether make sets $(MAKE)... (cached) yes checking for bison... bison -y checking for flex... flex checking for yywrap in -lfl... yes checking lex output file root... lex.yy checking whether yytext is a pointer... yes checking for ar... /usr/bin/ar checking for ANSI C header files... (cached) yes checking sys/param.h usability... yes checking sys/param.h presence... yes checking for sys/param.h... yes checking whether byte ordering is bigendian... no checking for off_t... yes checking for size_t... yes checking whether struct tm is in sys/time.h or time.h... time.h checking for intmax_t... yes checking for library containing getopt... none required checking for strtoimax... yes checking for strtoll... yes checking for mergesort... no checking for mkstemps... yes configure: creating ./config.status config.status: creating skeletons/standard-modules/Makefile config.status: creating skeletons/tests/Makefile config.status: creating libasn1compiler/Makefile config.status: creating libasn1parser/Makefile config.status: creating libasn1print/Makefile config.status: creating asn1c/webcgi/Makefile config.status: creating asn1c/tests/Makefile config.status: creating libasn1fix/Makefile config.status: creating skeletons/Makefile config.status: creating examples/Makefile config.status: creating tests/Makefile config.status: creating asn1c/Makefile config.status: creating doc/Makefile config.status: creating asn1c.spec config.status: creating Makefile config.status: creating config.h config.status: executing depfiles commands + make -j 8 make all-recursive make[1]: Entering directory ' Making all in libasn1parser make[2]: Entering directory ' if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1parser.lo -MD -MP -MF ".deps/asn1parser.Tpo" -c -o asn1parser.lo asn1parser.c; \ then mv -f ".deps/asn1parser.Tpo" ".deps/asn1parser.Plo"; else rm -f ".deps/asn1parser.Tpo"; exit 1; fi bison -y -p asn1p_ -d asn1p_y.y if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_l.lo -MD -MP -MF ".deps/asn1p_l.Tpo" -c -o asn1p_l.lo asn1p_l.c; \ then mv -f ".deps/asn1p_l.Tpo" ".deps/asn1p_l.Plo"; else rm -f ".deps/asn1p_l.Tpo"; exit 1; fi if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_module.lo -MD -MP -MF ".deps/asn1p_module.Tpo" -c -o asn1p_module.lo asn1p_module.c; \ then mv -f ".deps/asn1p_module.Tpo" ".deps/asn1p_module.Plo"; else rm -f ".deps/asn1p_module.Tpo"; exit 1; fi if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_oid.lo -MD -MP -MF ".deps/asn1p_oid.Tpo" -c -o asn1p_oid.lo asn1p_oid.c; \ then mv -f ".deps/asn1p_oid.Tpo" ".deps/asn1p_oid.Plo"; else rm -f ".deps/asn1p_oid.Tpo"; exit 1; fi if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_value.lo -MD -MP -MF ".deps/asn1p_value.Tpo" -c -o asn1p_value.lo asn1p_value.c; \ then mv -f ".deps/asn1p_value.Tpo" ".deps/asn1p_value.Plo"; else rm -f ".deps/asn1p_value.Tpo"; exit 1; fi if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_expr.lo -MD -MP -MF ".deps/asn1p_expr.Tpo" -c -o asn1p_expr.lo asn1p_expr.c; \ then mv -f ".deps/asn1p_expr.Tpo" ".deps/asn1p_expr.Plo"; else rm -f ".deps/asn1p_expr.Tpo"; exit 1; fi if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_xports.lo -MD -MP -MF ".deps/asn1p_xports.Tpo" -c -o asn1p_xports.lo asn1p_xports.c; \ then mv -f ".deps/asn1p_xports.Tpo" ".deps/asn1p_xports.Plo"; else rm -f ".deps/asn1p_xports.Tpo"; exit 1; fi asn1p_y.y: warning: 2 shift/reduce conflicts [-Wconflicts-sr] mkdir .libs mkdir .libs mkdir: cannot create directory '.libs': File exists gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_l.lo -MD -MP -MF .deps/asn1p_l.Tpo -c asn1p_l.c -fPIC -DPIC -o .libs/asn1p_l.o gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_oid.lo -MD -MP -MF .deps/asn1p_oid.Tpo -c asn1p_oid.c -fPIC -DPIC -o .libs/asn1p_oid.o gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_expr.lo -MD -MP -MF .deps/asn1p_expr.Tpo -c asn1p_expr.c -fPIC -DPIC -o .libs/asn1p_expr.o gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1parser.lo -MD -MP -MF .deps/asn1parser.Tpo -c asn1parser.c -fPIC -DPIC -o .libs/asn1parser.o gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_module.lo -MD -MP -MF .deps/asn1p_module.Tpo -c asn1p_module.c -fPIC -DPIC -o .libs/asn1p_module.o gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_value.lo -MD -MP -MF .deps/asn1p_value.Tpo -c asn1p_value.c -fPIC -DPIC -o .libs/asn1p_value.o gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_xports.lo -MD -MP -MF .deps/asn1p_xports.Tpo -c asn1p_xports.c -fPIC -DPIC -o .libs/asn1p_xports.o gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_module.lo -MD -MP -MF .deps/asn1p_module.Tpo -c asn1p_module.c -o asn1p_module.o >/dev/null 2>&1 gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_xports.lo -MD -MP -MF .deps/asn1p_xports.Tpo -c asn1p_xports.c -o asn1p_xports.o >/dev/null 2>&1 gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_oid.lo -MD -MP -MF .deps/asn1p_oid.Tpo -c asn1p_oid.c -o asn1p_oid.o >/dev/null 2>&1 asn1p_l.c:3521:12: warning: 'input' defined but not used [-Wunused-function] static int input() ^~~~~ gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1parser.lo -MD -MP -MF .deps/asn1parser.Tpo -c asn1parser.c -o asn1parser.o >/dev/null 2>&1 gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_value.lo -MD -MP -MF .deps/asn1p_value.Tpo -c asn1p_value.c -o asn1p_value.o >/dev/null 2>&1 gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_expr.lo -MD -MP -MF .deps/asn1p_expr.Tpo -c asn1p_expr.c -o asn1p_expr.o >/dev/null 2>&1 if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_constr.lo -MD -MP -MF ".deps/asn1p_constr.Tpo" -c -o asn1p_constr.lo asn1p_constr.c; \ then mv -f ".deps/asn1p_constr.Tpo" ".deps/asn1p_constr.Plo"; else rm -f ".deps/asn1p_constr.Tpo"; exit 1; fi if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_param.lo -MD -MP -MF ".deps/asn1p_param.Tpo" -c -o asn1p_param.lo asn1p_param.c; \ then mv -f ".deps/asn1p_param.Tpo" ".deps/asn1p_param.Plo"; else rm -f ".deps/asn1p_param.Tpo"; exit 1; fi if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_class.lo -MD -MP -MF ".deps/asn1p_class.Tpo" -c -o asn1p_class.lo asn1p_class.c; \ then mv -f ".deps/asn1p_class.Tpo" ".deps/asn1p_class.Plo"; else rm -f ".deps/asn1p_class.Tpo"; exit 1; fi if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_ref.lo -MD -MP -MF ".deps/asn1p_ref.Tpo" -c -o asn1p_ref.lo asn1p_ref.c; \ then mv -f ".deps/asn1p_ref.Tpo" ".deps/asn1p_ref.Plo"; else rm -f ".deps/asn1p_ref.Tpo"; exit 1; fi gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_constr.lo -MD -MP -MF .deps/asn1p_constr.Tpo -c asn1p_constr.c -fPIC -DPIC -o .libs/asn1p_constr.o gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_param.lo -MD -MP -MF .deps/asn1p_param.Tpo -c asn1p_param.c -fPIC -DPIC -o .libs/asn1p_param.o gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_ref.lo -MD -MP -MF .deps/asn1p_ref.Tpo -c asn1p_ref.c -fPIC -DPIC -o .libs/asn1p_ref.o gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_class.lo -MD -MP -MF .deps/asn1p_class.Tpo -c asn1p_class.c -fPIC -DPIC -o .libs/asn1p_class.o if test -f y.tab.h; then \ to=`echo "asn1p_y_H" | sed \ -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/' \ -e 's/[^ABCDEFGHIJKLMNOPQRSTUVWXYZ]/_/g'`; \ sed -e "/^#/!b" -e "s/Y_TAB_H/$to/g" -e "s|y\.tab\.h|asn1p_y.h|" \ y.tab.h >asn1p_y.ht; \ rm -f y.tab.h; \ if cmp -s asn1p_y.ht asn1p_y.h; then \ rm -f asn1p_y.ht ;\ else \ mv asn1p_y.ht asn1p_y.h; \ fi; \ fi if test -f y.output; then \ mv y.output asn1p_y.output; \ fi sed '/^#/ s|y\.tab\.c|asn1p_y.c|' y.tab.c >asn1p_y.ct && mv asn1p_y.ct asn1p_y.c rm -f y.tab.c if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_y.lo -MD -MP -MF ".deps/asn1p_y.Tpo" -c -o asn1p_y.lo asn1p_y.c; \ then mv -f ".deps/asn1p_y.Tpo" ".deps/asn1p_y.Plo"; else rm -f ".deps/asn1p_y.Tpo"; exit 1; fi gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_param.lo -MD -MP -MF .deps/asn1p_param.Tpo -c asn1p_param.c -o asn1p_param.o >/dev/null 2>&1 gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_constr.lo -MD -MP -MF .deps/asn1p_constr.Tpo -c asn1p_constr.c -o asn1p_constr.o >/dev/null 2>&1 gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_ref.lo -MD -MP -MF .deps/asn1p_ref.Tpo -c asn1p_ref.c -o asn1p_ref.o >/dev/null 2>&1 gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_class.lo -MD -MP -MF .deps/asn1p_class.Tpo -c asn1p_class.c -o asn1p_class.o >/dev/null 2>&1 gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_y.lo -MD -MP -MF .deps/asn1p_y.Tpo -c asn1p_y.c -fPIC -DPIC -o .libs/asn1p_y.o asn1p_y.y: In function 'asn1p_parse': asn1p_y.y:357:13: error: 'param' undeclared (first use in this function) *(void **)param = $1; ^~~~~ asn1p_y.y:357:13: note: each undeclared identifier is reported only once for each function it appears in gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_l.lo -MD -MP -MF .deps/asn1p_l.Tpo -c asn1p_l.c -o asn1p_l.o >/dev/null 2>&1 Makefile:299: recipe for target 'asn1p_y.lo' failed make[2]: *** [asn1p_y.lo] Error 1 make[2]: *** Waiting for unfinished jobs.... make[2]: Leaving directory ' Makefile:302: recipe for target 'all-recursive' failed make[1]: *** [all-recursive] Error 1 make[1]: Leaving directory ' Makefile:212: recipe for target 'all' failed make: *** [all] Error 2 Build step 'Execute shell' marked build as failure [WARNINGS] Skipping publisher since build result is FAILURE From jenkins at lists.osmocom.org Sat Apr 14 00:00:11 2018 From: jenkins at lists.osmocom.org (jenkins at lists.osmocom.org) Date: Sat, 14 Apr 2018 00:00:11 +0000 (UTC) Subject: =?UTF-8?Q?Build_failed_in_Jenkins:_master-osmo-bts_=C2=BB_lc15, origin/?= =?UTF-8?Q?nrw/litecell15-next,default,osmocom-master-debian9_#506?= Message-ID: <337048361.299.1523664011894.JavaMail.jenkins@jenkins.osmocom.org> See ------------------------------------------ [...truncated 112.71 KB...] + project=libosmo-abis + branch=master + git branch -a + grep -c remotes/origin/master$ + [ x1 != x0 ] + branch=origin/master + test -d libosmo-abis + cd libosmo-abis + git fetch --tags origin + git fetch origin + deps= osmo-clean-workspace.sh + chmod -R +w . + git checkout -f HEAD + git clean -dxf + [ -d ] + [ -d layer1-headers ] + git checkout -f origin/master HEAD is now at 43b5b69... configure.ac: Fix condition check for RTP_SIGNAL_PTR_CAST define + git rev-parse HEAD 43b5b69bb890441c7285541b36ef986063eab8cb + cd libosmo-abis + mkdir -p + autoreconf --install --force libtoolize: putting auxiliary files in AC_CONFIG_AUX_DIR, '.'. libtoolize: copying file './ltmain.sh' libtoolize: putting macros in AC_CONFIG_MACRO_DIRS, 'm4'. libtoolize: copying file 'm4/libtool.m4' libtoolize: copying file 'm4/ltoptions.m4' libtoolize: copying file 'm4/ltsugar.m4' libtoolize: copying file 'm4/ltversion.m4' libtoolize: copying file 'm4/lt~obsolete.m4' configure.ac:20: installing './compile' configure.ac:22: installing './config.guess' configure.ac:22: installing './config.sub' configure.ac:8: installing './install-sh' configure.ac:8: installing './missing' src/Makefile.am: installing './depcomp' + ./configure --prefix= checking for a BSD-compatible install... /usr/bin/install -c checking whether build environment is sane... yes checking for a thread-safe mkdir -p... /bin/mkdir -p checking for gawk... gawk checking whether make sets $(MAKE)... yes checking whether make supports nested variables... yes checking whether make supports nested variables... (cached) yes checking whether make sets $(MAKE)... (cached) yes checking for gcc... gcc checking whether the C compiler works... yes checking for C compiler default output file name... a.out checking for suffix of executables... checking whether we are cross compiling... no checking for suffix of object files... o checking whether we are using the GNU C compiler... yes checking whether gcc accepts -g... yes checking for gcc option to accept ISO C89... none needed checking whether gcc understands -c and -o together... yes checking for style of include used by make... GNU checking dependency style of gcc... gcc3 checking build system type... x86_64-pc-linux-gnu checking host system type... x86_64-pc-linux-gnu checking how to print strings... printf checking for a sed that does not truncate output... /bin/sed checking for grep that handles long lines and -e... /bin/grep checking for egrep... /bin/grep -E checking for fgrep... /bin/grep -F checking for ld used by gcc... /usr/bin/ld checking if the linker (/usr/bin/ld) is GNU ld... yes checking for BSD- or MS-compatible name lister (nm)... /usr/bin/nm -B checking the name lister (/usr/bin/nm -B) interface... BSD nm checking whether ln -s works... yes checking the maximum length of command line arguments... 1572864 checking how to convert x86_64-pc-linux-gnu file names to x86_64-pc-linux-gnu format... func_convert_file_noop checking how to convert x86_64-pc-linux-gnu file names to toolchain format... func_convert_file_noop checking for /usr/bin/ld option to reload object files... -r checking for objdump... objdump checking how to recognize dependent libraries... pass_all checking for dlltool... no checking how to associate runtime and link libraries... printf %s\n checking for ar... ar checking for archiver @FILE support... @ checking for strip... strip checking for ranlib... ranlib checking command to parse /usr/bin/nm -B output from gcc object... ok checking for sysroot... no checking for a working dd... /bin/dd checking how to truncate binary pipes... /bin/dd bs=4096 count=1 checking for mt... mt checking if mt is a manifest tool... no checking how to run the C preprocessor... gcc -E checking for ANSI C header files... yes checking for sys/types.h... yes checking for sys/stat.h... yes checking for stdlib.h... yes checking for string.h... yes checking for memory.h... yes checking for strings.h... yes checking for inttypes.h... yes checking for stdint.h... yes checking for unistd.h... yes checking for dlfcn.h... yes checking for objdir... .libs checking if gcc supports -fno-rtti -fno-exceptions... no checking for gcc option to produce PIC... -fPIC -DPIC checking if gcc PIC flag -fPIC -DPIC works... yes checking if gcc static flag -static works... yes checking if gcc supports -c -o file.o... yes checking if gcc supports -c -o file.o... (cached) yes checking whether the gcc linker (/usr/bin/ld -m elf_x86_64) supports shared libraries... yes checking whether -lc should be explicitly linked in... no checking dynamic linker characteristics... GNU/Linux ld.so checking how to hardcode library paths into programs... immediate checking whether stripping libraries is possible... yes checking if libtool supports shared libraries... yes checking whether to build shared libraries... yes checking whether to build static libraries... yes checking for pkg-config... /usr/bin/pkg-config checking for pkg-config... /usr/bin/pkg-config checking pkg-config is at least version 0.20... yes checking if gcc supports -fvisibility=hidden... yes checking for LIBOSMOCORE... yes checking for LIBOSMOVTY... yes checking for LIBOSMOGSM... yes checking for ORTP... yes checking dahdi/user.h usability... no checking dahdi/user.h presence... no checking for dahdi/user.h... no configure: WARNING: DAHDI input driver will not be built CFLAGS="-g -O2 -Wall" CPPFLAGS=" -Wall" checking that generated files are newer than configure... done configure: creating ./config.status config.status: creating libosmoabis.pc config.status: creating libosmotrau.pc config.status: creating include/Makefile config.status: creating src/Makefile config.status: creating tests/Makefile config.status: creating Makefile config.status: creating config.h config.status: executing tests/atconfig commands config.status: executing depfiles commands config.status: executing libtool commands + make -j 8 install echo 0.3.2.105-43b5 > .version-t && mv .version-t .version make install-recursive make[1]: Entering directory ' Making install in include make[2]: Entering directory ' make[3]: Entering directory ' make[3]: Nothing to be done for 'install-exec-am'. /bin/mkdir -p ' /bin/mkdir -p ' /usr/bin/install -c -m 644 osmocom/abis/ipa.h osmocom/abis/trau_frame.h osmocom/abis/ipa_proxy.h osmocom/abis/ipaccess.h osmocom/abis/abis.h osmocom/abis/subchan_demux.h osmocom/abis/e1_input.h osmocom/abis/lapd.h osmocom/abis/lapd_pcap.h osmocom/abis/unixsocket_proto.h ' /bin/mkdir -p ' /usr/bin/install -c -m 644 osmocom/trau/osmo_ortp.h ' make[3]: Leaving directory ' make[2]: Leaving directory ' Making install in src make[2]: Entering directory ' CC init.lo CC e1_input.lo CC e1_input_vty.lo CC ipa_proxy.lo CC trau_frame.lo CC subchan_demux.lo CC input/dahdi.lo CC input/ipa.lo CC input/ipaccess.lo CC input/lapd.lo CC input/lapd_pcap.lo CC input/misdn.lo CC input/rs232.lo CC input/unixsocket.lo CC trau/libosmotrau_la-osmo_ortp.lo trau/osmo_ortp.c:205:9: note: #pragma message: Using internal ortp API: rtp_session_rtcp_rec #pragma message ("Using internal ortp API: rtp_session_rtcp_rec") ^~~~~~~ CCLD libosmoabis.la CCLD libosmotrau.la ar: `u' modifier ignored since `D' is the default (see `U') ar: `u' modifier ignored since `D' is the default (see `U') make[3]: Entering directory ' make[3]: Nothing to be done for 'install-data-am'. /bin/mkdir -p ' /bin/bash ../libtool --mode=install /usr/bin/install -c libosmoabis.la libosmotrau.la ' libtool: install: /usr/bin/install -c .libs/libosmoabis.so.6.0.0 libtool: install: (cd && { ln -s -f libosmoabis.so.6.0.0 libosmoabis.so.6 || { rm -f libosmoabis.so.6 && ln -s libosmoabis.so.6.0.0 libosmoabis.so.6; }; }) libtool: install: (cd && { ln -s -f libosmoabis.so.6.0.0 libosmoabis.so || { rm -f libosmoabis.so && ln -s libosmoabis.so.6.0.0 libosmoabis.so; }; }) libtool: install: /usr/bin/install -c .libs/libosmoabis.lai libtool: install: /usr/bin/install -c .libs/libosmotrau.so.2.0.0 libtool: install: (cd && { ln -s -f libosmotrau.so.2.0.0 libosmotrau.so.2 || { rm -f libosmotrau.so.2 && ln -s libosmotrau.so.2.0.0 libosmotrau.so.2; }; }) libtool: install: (cd && { ln -s -f libosmotrau.so.2.0.0 libosmotrau.so || { rm -f libosmotrau.so && ln -s libosmotrau.so.2.0.0 libosmotrau.so; }; }) libtool: install: /usr/bin/install -c .libs/libosmotrau.lai libtool: install: /usr/bin/install -c .libs/libosmoabis.a libtool: install: chmod 644 libtool: install: ranlib libtool: install: /usr/bin/install -c .libs/libosmotrau.a libtool: install: chmod 644 libtool: install: ranlib libtool: finish: PATH="/usr/local/bin:/usr/bin:/bin:/usr/games:/home/osmocom-build/bin:/sbin" ldconfig -n ---------------------------------------------------------------------- Libraries have been installed in: If you ever happen to want to link against installed libraries in a given directory, LIBDIR, you must either use libtool, and specify the full pathname of the library, or use the '-LLIBDIR' flag during linking and do at least one of the following: - add LIBDIR to the 'LD_LIBRARY_PATH' environment variable during execution - add LIBDIR to the 'LD_RUN_PATH' environment variable during linking - use the '-Wl,-rpath -Wl,LIBDIR' linker flag - have your system administrator add LIBDIR to '/etc/ld.so.conf' See any operating system documentation about shared libraries for more information, such as the ld(1) and ld.so(8) manual pages. ---------------------------------------------------------------------- make[3]: Leaving directory ' make[2]: Leaving directory ' Making install in tests make[2]: Entering directory ' make[3]: Entering directory ' make[3]: Nothing to be done for 'install-exec-am'. make[3]: Nothing to be done for 'install-data-am'. make[3]: Leaving directory ' make[2]: Leaving directory ' make[2]: Entering directory ' make[3]: Entering directory ' make[3]: Nothing to be done for 'install-exec-am'. /bin/mkdir -p ' /usr/bin/install -c -m 644 libosmoabis.pc libosmotrau.pc ' make[3]: Leaving directory ' make[2]: Leaving directory ' make[1]: Leaving directory ' + STOW_DIR= stow --restow libosmo-abis + cd + osmo-layer1-headers.sh lc15 origin/nrw/litecell15-next + uri=https://gitlab.com/nrw_litecell15/litecell15-fw + version=origin/nrw/litecell15 + [ -n origin/nrw/litecell15-next ] + [ origin/nrw/litecell15-next != master ] + version=origin/nrw/litecell15-next + test -d layer1-headers + cd layer1-headers + git fetch origin + git checkout -f origin/nrw/litecell15-next error: pathspec 'origin/nrw/litecell15-next' did not match any file(s) known to git. Build step 'Execute shell' marked build as failure [WARNINGS]Skipping publisher since build result is FAILURE From jenkins at lists.osmocom.org Sat Apr 14 00:49:18 2018 From: jenkins at lists.osmocom.org (jenkins at lists.osmocom.org) Date: Sat, 14 Apr 2018 00:49:18 +0000 (UTC) Subject: =?UTF-8?Q?Jenkins_build_is_back_to_norm?= =?UTF-8?Q?al_:_master-osmo-bts_=C2=BB_lc15,or?= =?UTF-8?Q?igin/nrw/litecell15-next,default,osmocom-master-debian9_#507?= In-Reply-To: <337048361.299.1523664011894.JavaMail.jenkins@jenkins.osmocom.org> References: <337048361.299.1523664011894.JavaMail.jenkins@jenkins.osmocom.org> Message-ID: <112844093.301.1523666958311.JavaMail.jenkins@jenkins.osmocom.org> See From gerrit-no-reply at lists.osmocom.org Sat Apr 14 11:31:55 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Sat, 14 Apr 2018 11:31:55 +0000 Subject: libosmo-netif[master]: tests: jibuf_tool: Initial commit In-Reply-To: References: Message-ID: Patch Set 2: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7774 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I92307c8b1483dd488339771462290aae0ae5689a Gerrit-PatchSet: 2 Gerrit-Project: libosmo-netif Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Sat Apr 14 11:32:02 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Sat, 14 Apr 2018 11:32:02 +0000 Subject: libosmo-netif[master]: tests: jibuf_tool: Improve jibuf_test to read pcaps In-Reply-To: References: Message-ID: Patch Set 2: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7775 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I7a13c823fb70e0adbc5fa0726fd66b15dc40014e Gerrit-PatchSet: 2 Gerrit-Project: libosmo-netif Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Sat Apr 14 11:32:19 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Sat, 14 Apr 2018 11:32:19 +0000 Subject: libosmo-netif[master]: tests: jibuf_tool: Add OSMUX support In-Reply-To: References: Message-ID: Patch Set 2: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7776 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I0f02da0329e6739ff340d31113161bb520b1b760 Gerrit-PatchSet: 2 Gerrit-Project: libosmo-netif Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Sat Apr 14 11:32:35 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Sat, 14 Apr 2018 11:32:35 +0000 Subject: libosmo-netif[master]: tests: jibuf_tool: Add parameters to control size of buffer In-Reply-To: References: Message-ID: Patch Set 2: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7777 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I8a7fa39985f8d197e24c32cab80299aba2d03087 Gerrit-PatchSet: 2 Gerrit-Project: libosmo-netif Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Sat Apr 14 11:33:03 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Sat, 14 Apr 2018 11:33:03 +0000 Subject: libosmo-netif[master]: jibuf: Take RTP marker into account In-Reply-To: References: Message-ID: Patch Set 2: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7778 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Ie142acfb45650e0af775f58226fd191beaf8178e Gerrit-PatchSet: 2 Gerrit-Project: libosmo-netif Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Sat Apr 14 11:33:33 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Sat, 14 Apr 2018 11:33:33 +0000 Subject: libosmo-netif[master]: jibuf: re-sync clock out of sync timestamps In-Reply-To: References: Message-ID: Patch Set 2: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7779 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I33556b33d7549654442d9bdd7f31128792506652 Gerrit-PatchSet: 2 Gerrit-Project: libosmo-netif Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Sat Apr 14 11:33:38 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Sat, 14 Apr 2018 11:33:38 +0000 Subject: libosmo-netif[master]: tests: jibuf_tool: Add seq.plt In-Reply-To: References: Message-ID: Patch Set 2: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7780 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I37bb3ab372b7ad7c3c1d09c8134827c932bf8bf8 Gerrit-PatchSet: 2 Gerrit-Project: libosmo-netif Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Sat Apr 14 11:34:01 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Sat, 14 Apr 2018 11:34:01 +0000 Subject: libosmo-netif[master]: jibuf: Estimate src clock skew In-Reply-To: References: Message-ID: Patch Set 2: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7781 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Ifae633d53107417a8e2f9b0f200d2711db72d199 Gerrit-PatchSet: 2 Gerrit-Project: libosmo-netif Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Sat Apr 14 11:35:15 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Sat, 14 Apr 2018 11:35:15 +0000 Subject: osmo-bsc[master]: inform A-RESET FSM about MSC CR timeouts In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7794 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I836a552f2ad37c160081246579f842d104d0dd35 Gerrit-PatchSet: 1 Gerrit-Project: osmo-bsc Gerrit-Branch: master Gerrit-Owner: dexter Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Sat Apr 14 11:36:40 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Sat, 14 Apr 2018 11:36:40 +0000 Subject: [MERGED] libosmocore[master]: test_gsm0808_enc_dec_cell_id_list_lac(): populate all LACs In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: test_gsm0808_enc_dec_cell_id_list_lac(): populate all LACs ...................................................................... test_gsm0808_enc_dec_cell_id_list_lac(): populate all LACs Change-Id: I7535166a2827c03a954fe72d5d99217e4f25868f --- M tests/gsm0808/gsm0808_test.c M tests/gsm0808/gsm0808_test.ok 2 files changed, 4 insertions(+), 4 deletions(-) Approvals: Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/tests/gsm0808/gsm0808_test.c b/tests/gsm0808/gsm0808_test.c index 41d85a8..a9ab72b 100644 --- a/tests/gsm0808/gsm0808_test.c +++ b/tests/gsm0808/gsm0808_test.c @@ -768,13 +768,13 @@ memset(&enc_cil, 0, sizeof(enc_cil)); enc_cil.id_discr = CELL_IDENT_LAC; enc_cil.id_list[0].lac = 0x0124; - enc_cil.id_list[0].lac = 0xABCD; - enc_cil.id_list[0].lac = 0x5678; + enc_cil.id_list[1].lac = 0xABCD; + enc_cil.id_list[2].lac = 0x5678; enc_cil.id_list_len = 3; msg = msgb_alloc(1024, "output buffer"); rc_enc = gsm0808_enc_cell_id_list2(msg, &enc_cil); - EXPECT_ENCODED("1a 07 05 56 78 00 00 00 00"); + EXPECT_ENCODED("1a 07 05 01 24 ab cd 56 78"); rc_dec = gsm0808_dec_cell_id_list2(&dec_cil, msg->data + 2, msg->len - 2); OSMO_ASSERT(rc_dec == 7); diff --git a/tests/gsm0808/gsm0808_test.ok b/tests/gsm0808/gsm0808_test.ok index 0ec6d23..34d7ebf 100644 --- a/tests/gsm0808/gsm0808_test.ok +++ b/tests/gsm0808/gsm0808_test.ok @@ -19,7 +19,7 @@ Testing creating Paging Request Testing creating DTAP Testing prepend DTAP -test_gsm0808_enc_dec_cell_id_list_lac: encoded: 1a 07 05 56 78 00 00 00 00 (rc = 9) +test_gsm0808_enc_dec_cell_id_list_lac: encoded: 1a 07 05 01 24 ab cd 56 78 (rc = 9) ------- test_cell_id_list_add cell_id_list cgi[0] = { } -- To view, visit https://gerrit.osmocom.org/7791 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: I7535166a2827c03a954fe72d5d99217e4f25868f Gerrit-PatchSet: 3 Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder From gerrit-no-reply at lists.osmocom.org Sat Apr 14 11:36:43 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Sat, 14 Apr 2018 11:36:43 +0000 Subject: [MERGED] libosmocore[master]: test_gsm0808_enc_dec_cell_id_list_lac(): validate encoded bytes In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: test_gsm0808_enc_dec_cell_id_list_lac(): validate encoded bytes ...................................................................... test_gsm0808_enc_dec_cell_id_list_lac(): validate encoded bytes Change-Id: I81b1ffbe6a5ec566c112492c2cbaf99c018c45bb --- M tests/gsm0808/gsm0808_test.c M tests/gsm0808/gsm0808_test.ok 2 files changed, 9 insertions(+), 8 deletions(-) Approvals: Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/tests/gsm0808/gsm0808_test.c b/tests/gsm0808/gsm0808_test.c index 8c184dd..41d85a8 100644 --- a/tests/gsm0808/gsm0808_test.c +++ b/tests/gsm0808/gsm0808_test.c @@ -750,6 +750,13 @@ msgb_free(msg); } +#define EXPECT_ENCODED(hexstr) do { \ + const char *enc_str = msgb_hexdump(msg); \ + printf("%s: encoded: %s(rc = %u)\n", __func__, enc_str, rc_enc); \ + OSMO_ASSERT(strcmp(enc_str, hexstr " ") == 0); \ + OSMO_ASSERT(rc_enc == msg->len); \ + } while(0) + static void test_gsm0808_enc_dec_cell_id_list_lac() { struct gsm0808_cell_id_list2 enc_cil; @@ -767,7 +774,7 @@ msg = msgb_alloc(1024, "output buffer"); rc_enc = gsm0808_enc_cell_id_list2(msg, &enc_cil); - OSMO_ASSERT(rc_enc == 9); + EXPECT_ENCODED("1a 07 05 56 78 00 00 00 00"); rc_dec = gsm0808_dec_cell_id_list2(&dec_cil, msg->data + 2, msg->len - 2); OSMO_ASSERT(rc_dec == 7); @@ -1255,13 +1262,6 @@ printf("------- %s done\n", __func__); } - -#define EXPECT_ENCODED(hexstr) do { \ - const char *enc_str = msgb_hexdump(msg); \ - printf("%s: encoded: %s(rc = %u)\n", __func__, enc_str, rc_enc); \ - OSMO_ASSERT(strcmp(enc_str, hexstr " ") == 0); \ - OSMO_ASSERT(rc_enc == msg->len); \ - } while(0) static void test_gsm0808_enc_dec_cell_id_lac() { diff --git a/tests/gsm0808/gsm0808_test.ok b/tests/gsm0808/gsm0808_test.ok index 27170f2..0ec6d23 100644 --- a/tests/gsm0808/gsm0808_test.ok +++ b/tests/gsm0808/gsm0808_test.ok @@ -19,6 +19,7 @@ Testing creating Paging Request Testing creating DTAP Testing prepend DTAP +test_gsm0808_enc_dec_cell_id_list_lac: encoded: 1a 07 05 56 78 00 00 00 00 (rc = 9) ------- test_cell_id_list_add cell_id_list cgi[0] = { } -- To view, visit https://gerrit.osmocom.org/7790 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: I81b1ffbe6a5ec566c112492c2cbaf99c018c45bb Gerrit-PatchSet: 3 Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder From gerrit-no-reply at lists.osmocom.org Sat Apr 14 11:36:44 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Sat, 14 Apr 2018 11:36:44 +0000 Subject: [MERGED] libosmocore[master]: add gsm0808_{enc,dec}_cell_id In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: add gsm0808_{enc,dec}_cell_id ...................................................................... add gsm0808_{enc,dec}_cell_id Clarify semantics and micro-optimise for the case of single Cell Identifer IEs. Test in gsm0808_test.c So far we have gsm0808_enc_cell_id_list2(), but there also exist instances of single Cell Identifiers (3GPP TS 48.008 3.2.2.17). It is possible to decode the same using the cell identifier list API, but this forces the caller to also keep a full struct gsm0808_cell_id_list2 with all its 127 entries around. E.g. for handover, there are two Cell Identifiers (Serving and Target); I'd need two full cell id lists for each, and these would be dynamically allocated for each handover operation, whether it uses them or not. Related: OS#2283 (inter-BSC HO, BSC side) Change-Id: I9f9c528965775698ab62ac386af0516192c4b0cc --- M include/osmocom/gsm/gsm0808_utils.h M src/gsm/gsm0808_utils.c M src/gsm/libosmogsm.map M tests/gsm0808/gsm0808_test.c M tests/gsm0808/gsm0808_test.ok 5 files changed, 280 insertions(+), 12 deletions(-) Approvals: Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/include/osmocom/gsm/gsm0808_utils.h b/include/osmocom/gsm/gsm0808_utils.h index 34eae43..8e71b43 100644 --- a/include/osmocom/gsm/gsm0808_utils.h +++ b/include/osmocom/gsm/gsm0808_utils.h @@ -31,20 +31,27 @@ /*! (225-1)/2 is the maximum number of elements in a cell identifier list. */ #define GSM0808_CELL_ID_LIST2_MAXLEN 127 -/*! Parsed representation of a cell identifier list IE. */ +/*! Instead of this, use either struct gsm0808_cell_id or gsm0808_cell_id_list2. + * All elements contain parsed representations of the data in the corresponding IE, in host-byte order. + */ +union gsm0808_cell_id_u { + struct osmo_cell_global_id global; + struct osmo_lac_and_ci_id lac_and_ci; + uint16_t ci; + struct osmo_location_area_id lai_and_lac; + uint16_t lac; +}; + +/*! Parsed representation of Cell Identifier IE (3GPP TS 48.008 3.2.2.17) */ +struct gsm0808_cell_id { + enum CELL_IDENT id_discr; + union gsm0808_cell_id_u id; +}; + +/*! Parsed representation of a Cell Identifier List IE (3GPP TS 48.008 3.2.2.27). */ struct gsm0808_cell_id_list2 { enum CELL_IDENT id_discr; - union { - /*! - * All elements of these arrays contain parsed representations of the - * data in the corresponding IE, in host-byte order. - */ - struct osmo_cell_global_id global; - struct osmo_lac_and_ci_id lac_and_ci; - uint16_t ci; - struct osmo_location_area_id lai_and_lac; - uint16_t lac; - } id_list[GSM0808_CELL_ID_LIST2_MAXLEN]; + union gsm0808_cell_id_u id_list[GSM0808_CELL_ID_LIST2_MAXLEN]; unsigned int id_list_len; }; @@ -78,6 +85,8 @@ const uint8_t *elem, uint8_t len) OSMO_DEPRECATED("use gsm0808_dec_cell_id_list2 instead"); int gsm0808_cell_id_list_add(struct gsm0808_cell_id_list2 *dst, const struct gsm0808_cell_id_list2 *src); +uint8_t gsm0808_enc_cell_id(struct msgb *msg, const struct gsm0808_cell_id *ci); +int gsm0808_dec_cell_id(struct gsm0808_cell_id *ci, const uint8_t *elem, uint8_t len); int gsm0808_chan_type_to_speech_codec(uint8_t perm_spch); int gsm0808_speech_codec_from_chan_type(struct gsm0808_speech_codec *sc, uint8_t perm_spch); diff --git a/src/gsm/gsm0808_utils.c b/src/gsm/gsm0808_utils.c index 996456e..73d9362 100644 --- a/src/gsm/gsm0808_utils.c +++ b/src/gsm/gsm0808_utils.c @@ -988,6 +988,57 @@ return added; } +/*! Encode Cell Identifier IE (3GPP TS 48.008 3.2.2.17). + * \param[out] msg Message Buffer to which IE is to be appended + * \param[in] ci Cell ID to be encoded + * \returns number of bytes appended to \a msg */ +uint8_t gsm0808_enc_cell_id(struct msgb *msg, const struct gsm0808_cell_id *ci) +{ + uint8_t rc; + uint8_t *ie_tag; + struct gsm0808_cell_id_list2 cil = { + .id_discr = ci->id_discr, + .id_list = { ci->id }, + .id_list_len = 1, + }; + + OSMO_ASSERT(msg); + OSMO_ASSERT(ci); + + ie_tag = msg->tail; + rc = gsm0808_enc_cell_id_list2(msg, &cil); + + if (rc <= 0) + return rc; + + *ie_tag = GSM0808_IE_CELL_IDENTIFIER; + return rc; +} + +/*! Decode Cell Identifier IE (3GPP TS 48.008 3.2.2.17). + * \param[out] ci Caller-provided memory to store Cell ID. + * \param[in] elem IE value to be decoded. + * \param[in] len Length of \a elem in bytes. + * \returns number of bytes parsed; negative on error */ +int gsm0808_dec_cell_id(struct gsm0808_cell_id *ci, const uint8_t *elem, uint8_t len) +{ + struct gsm0808_cell_id_list2 cil; + int rc; + rc = gsm0808_dec_cell_id_list2(&cil, elem, len); + if (rc < 0) + return rc; + if (cil.id_discr == CELL_IDENT_BSS || cil.id_discr == CELL_IDENT_NO_CELL) { + if (cil.id_list_len != 0) + return -EINVAL; + } else { + if (cil.id_list_len != 1) + return -EINVAL; + } + ci->id_discr = cil.id_discr; + ci->id = cil.id_list[0]; + return rc; +} + /*! Convert the representation of the permitted speech codec identifier * that is used in struct gsm0808_channel_type to the speech codec * representation we use in struct gsm0808_speech_codec. diff --git a/src/gsm/libosmogsm.map b/src/gsm/libosmogsm.map index 4d009e0..388fcc0 100644 --- a/src/gsm/libosmogsm.map +++ b/src/gsm/libosmogsm.map @@ -177,6 +177,8 @@ gsm0808_dec_cell_id_list; gsm0808_dec_cell_id_list2; gsm0808_cell_id_list_add; +gsm0808_enc_cell_id; +gsm0808_dec_cell_id; gsm0808_chan_type_to_speech_codec; gsm0808_speech_codec_from_chan_type; gsm0808_speech_codec_type_names; diff --git a/tests/gsm0808/gsm0808_test.c b/tests/gsm0808/gsm0808_test.c index f467099..8c184dd 100644 --- a/tests/gsm0808/gsm0808_test.c +++ b/tests/gsm0808/gsm0808_test.c @@ -1256,6 +1256,196 @@ printf("------- %s done\n", __func__); } +#define EXPECT_ENCODED(hexstr) do { \ + const char *enc_str = msgb_hexdump(msg); \ + printf("%s: encoded: %s(rc = %u)\n", __func__, enc_str, rc_enc); \ + OSMO_ASSERT(strcmp(enc_str, hexstr " ") == 0); \ + OSMO_ASSERT(rc_enc == msg->len); \ + } while(0) + +static void test_gsm0808_enc_dec_cell_id_lac() +{ + struct gsm0808_cell_id enc_ci = { + .id_discr = CELL_IDENT_LAC, + .id.lac = 0x0124, + }; + struct gsm0808_cell_id dec_ci; + struct msgb *msg; + uint8_t rc_enc; + int rc_dec; + + memset(&dec_ci, 0xa5, sizeof(dec_ci)); + + msg = msgb_alloc(1024, "output buffer"); + rc_enc = gsm0808_enc_cell_id(msg, &enc_ci); + EXPECT_ENCODED("05 03 05 01 24"); + + rc_dec = gsm0808_dec_cell_id(&dec_ci, msg->data + 2, msg->len - 2); + OSMO_ASSERT(rc_dec == 3); + + OSMO_ASSERT(enc_ci.id_discr == dec_ci.id_discr + && enc_ci.id.lac == dec_ci.id.lac); + + msgb_free(msg); +} + +static void test_gsm0808_enc_dec_cell_id_bss() +{ + struct gsm0808_cell_id enc_ci = { + .id_discr = CELL_IDENT_BSS, + }; + struct gsm0808_cell_id dec_ci; + struct msgb *msg; + uint8_t rc_enc; + int rc_dec; + + msg = msgb_alloc(1024, "output buffer"); + rc_enc = gsm0808_enc_cell_id(msg, &enc_ci); + EXPECT_ENCODED("05 01 06"); + + rc_dec = gsm0808_dec_cell_id(&dec_ci, msg->data + 2, msg->len - 2); + OSMO_ASSERT(rc_dec == 1); + + OSMO_ASSERT(enc_ci.id_discr == dec_ci.id_discr); + + msgb_free(msg); +} + +static void test_gsm0808_enc_dec_cell_id_no_cell() +{ + struct gsm0808_cell_id enc_ci = { + .id_discr = CELL_IDENT_NO_CELL, + }; + struct gsm0808_cell_id dec_ci; + struct msgb *msg; + uint8_t rc_enc; + int rc_dec; + + msg = msgb_alloc(1024, "output buffer"); + rc_enc = gsm0808_enc_cell_id(msg, &enc_ci); + EXPECT_ENCODED("05 01 03"); + + rc_dec = gsm0808_dec_cell_id(&dec_ci, msg->data + 2, msg->len - 2); + OSMO_ASSERT(rc_dec == 1); + + OSMO_ASSERT(enc_ci.id_discr == dec_ci.id_discr); + + msgb_free(msg); +} + +static void test_gsm0808_enc_dec_cell_id_lai_and_lac() +{ + struct gsm0808_cell_id enc_ci = { + .id_discr = CELL_IDENT_LAI_AND_LAC, + .id.lai_and_lac = { + .plmn = { + .mcc = 123, + .mnc = 456, + }, + .lac = 0x2342, + }, + }; + struct gsm0808_cell_id dec_ci; + struct msgb *msg; + uint8_t rc_enc; + int rc_dec; + + msg = msgb_alloc(1024, "output buffer"); + rc_enc = gsm0808_enc_cell_id(msg, &enc_ci); + EXPECT_ENCODED("05 06 04 21 63 54 23 42"); + + memset(&dec_ci, 0xa5, sizeof(dec_ci)); + rc_dec = gsm0808_dec_cell_id(&dec_ci, msg->data + 2, msg->len - 2); + OSMO_ASSERT(rc_dec == msg->len - 2); + + OSMO_ASSERT(enc_ci.id_discr == dec_ci.id_discr + && osmo_plmn_cmp(&enc_ci.id.lai_and_lac.plmn, &dec_ci.id.lai_and_lac.plmn) == 0 + && enc_ci.id.lai_and_lac.lac == dec_ci.id.lai_and_lac.lac); + msgb_free(msg); +} + +static void test_gsm0808_enc_dec_cell_id_ci() +{ + struct gsm0808_cell_id enc_ci = { + .id_discr = CELL_IDENT_CI, + .id.ci = 0x423, + }; + struct gsm0808_cell_id dec_ci; + struct msgb *msg; + uint8_t rc_enc; + int rc_dec; + + msg = msgb_alloc(1024, "output buffer"); + rc_enc = gsm0808_enc_cell_id(msg, &enc_ci); + EXPECT_ENCODED("05 03 02 04 23"); + + rc_dec = gsm0808_dec_cell_id(&dec_ci, msg->data + 2, msg->len - 2); + OSMO_ASSERT(rc_dec == msg->len - 2); + OSMO_ASSERT(enc_ci.id_discr == dec_ci.id_discr + && enc_ci.id.ci == dec_ci.id.ci); + + msgb_free(msg); +} + +static void test_gsm0808_enc_dec_cell_id_lac_and_ci() +{ + struct gsm0808_cell_id enc_ci = { + .id_discr = CELL_IDENT_LAC_AND_CI, + .id.lac_and_ci = { + .lac = 0x423, + .ci = 0x235, + }, + }; + struct gsm0808_cell_id dec_ci; + struct msgb *msg; + uint8_t rc_enc; + int rc_dec; + + msg = msgb_alloc(1024, "output buffer"); + rc_enc = gsm0808_enc_cell_id(msg, &enc_ci); + EXPECT_ENCODED("05 05 01 04 23 02 35"); + + rc_dec = gsm0808_dec_cell_id(&dec_ci, msg->data + 2, msg->len - 2); + OSMO_ASSERT(rc_dec == msg->len - 2); + OSMO_ASSERT(enc_ci.id_discr == dec_ci.id_discr + && enc_ci.id.lac_and_ci.lac == dec_ci.id.lac_and_ci.lac + && enc_ci.id.lac_and_ci.ci == dec_ci.id.lac_and_ci.ci); + + msgb_free(msg); +} + +static void test_gsm0808_enc_dec_cell_id_global() +{ + struct gsm0808_cell_id enc_ci = { + .id_discr = CELL_IDENT_WHOLE_GLOBAL, + .id.global = { + .lai = { + .plmn = { .mcc = 123, .mnc = 456 }, + .lac = 0x2342 + }, + .cell_identity = 0x423, + } + }; + struct gsm0808_cell_id dec_ci; + struct msgb *msg; + uint8_t rc_enc; + int rc_dec; + + msg = msgb_alloc(1024, "output buffer"); + rc_enc = gsm0808_enc_cell_id(msg, &enc_ci); + EXPECT_ENCODED("05 08 00 21 63 54 23 42 04 23"); + + rc_dec = gsm0808_dec_cell_id(&dec_ci, msg->data + 2, msg->len - 2); + OSMO_ASSERT(rc_dec == msg->len - 2); + + OSMO_ASSERT(enc_ci.id_discr == dec_ci.id_discr + && osmo_plmn_cmp(&enc_ci.id.global.lai.plmn, + &dec_ci.id.global.lai.plmn) == 0 + && enc_ci.id.global.lai.lac == dec_ci.id.global.lai.lac + && enc_ci.id.global.cell_identity == dec_ci.id.global.cell_identity); + msgb_free(msg); +} + int main(int argc, char **argv) { printf("Testing generation of GSM0808 messages\n"); @@ -1287,6 +1477,7 @@ test_gsm0808_enc_dec_speech_codec_list(); test_gsm0808_enc_dec_channel_type(); test_gsm0808_enc_dec_encrypt_info(); + test_gsm0808_enc_dec_cell_id_list_lac(); test_gsm0808_enc_dec_cell_id_list_single_lac(); test_gsm0808_enc_dec_cell_id_list_multi_lac(); @@ -1298,6 +1489,14 @@ test_cell_id_list_add(); + test_gsm0808_enc_dec_cell_id_lac(); + test_gsm0808_enc_dec_cell_id_bss(); + test_gsm0808_enc_dec_cell_id_no_cell(); + test_gsm0808_enc_dec_cell_id_lai_and_lac(); + test_gsm0808_enc_dec_cell_id_ci(); + test_gsm0808_enc_dec_cell_id_lac_and_ci(); + test_gsm0808_enc_dec_cell_id_global(); + printf("Done\n"); return EXIT_SUCCESS; } diff --git a/tests/gsm0808/gsm0808_test.ok b/tests/gsm0808/gsm0808_test.ok index a049dec..27170f2 100644 --- a/tests/gsm0808/gsm0808_test.ok +++ b/tests/gsm0808/gsm0808_test.ok @@ -104,4 +104,11 @@ gsm0808_cell_id_list_add(&cil, &cgi2a) --> rc = -28 cil.id_list_len = 127 ------- test_cell_id_list_add done +test_gsm0808_enc_dec_cell_id_lac: encoded: 05 03 05 01 24 (rc = 5) +test_gsm0808_enc_dec_cell_id_bss: encoded: 05 01 06 (rc = 3) +test_gsm0808_enc_dec_cell_id_no_cell: encoded: 05 01 03 (rc = 3) +test_gsm0808_enc_dec_cell_id_lai_and_lac: encoded: 05 06 04 21 63 54 23 42 (rc = 8) +test_gsm0808_enc_dec_cell_id_ci: encoded: 05 03 02 04 23 (rc = 5) +test_gsm0808_enc_dec_cell_id_lac_and_ci: encoded: 05 05 01 04 23 02 35 (rc = 7) +test_gsm0808_enc_dec_cell_id_global: encoded: 05 08 00 21 63 54 23 42 04 23 (rc = 10) Done -- To view, visit https://gerrit.osmocom.org/7789 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: I9f9c528965775698ab62ac386af0516192c4b0cc Gerrit-PatchSet: 3 Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder From gerrit-no-reply at lists.osmocom.org Sat Apr 14 11:36:46 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Sat, 14 Apr 2018 11:36:46 +0000 Subject: [MERGED] libosmocore[master]: add tlv_parse2(), capable of multiple instances of the same IE In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: add tlv_parse2(), capable of multiple instances of the same IE ...................................................................... add tlv_parse2(), capable of multiple instances of the same IE Allow passing multiple struct tlv_parsed in an array, to allow parsing as many repeated IEs as are expected by the caller. >From tlv_parse(), call tlv_parse2() with dec_multiple = 1 to yield the previous behavior. tlv_parse() remains valid API. An example of multiple IEs is the BSSMAP Handover Request, containing Cell Identifier (Serving) and Cell Identifier (Target), both defined by 3GPP TS 48.008 3.2.2.17 with identical IE tags; both are mandatory. Related: OS#2283 (inter-BSC HO, BSC side) Change-Id: Id04008eaf0a1cafdbdc11b7efc556e3035b1c84d --- M include/osmocom/gsm/tlv.h M src/gsm/libosmogsm.map M src/gsm/tlv_parser.c M tests/tlv/tlv_test.c 4 files changed, 83 insertions(+), 24 deletions(-) Approvals: Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/include/osmocom/gsm/tlv.h b/include/osmocom/gsm/tlv.h index 8654893..996f6aa 100644 --- a/include/osmocom/gsm/tlv.h +++ b/include/osmocom/gsm/tlv.h @@ -433,6 +433,9 @@ const uint8_t *buf, int buf_len); int tlv_parse(struct tlv_parsed *dec, const struct tlv_definition *def, const uint8_t *buf, int buf_len, uint8_t lv_tag, uint8_t lv_tag2); +int tlv_parse2(struct tlv_parsed *dec, int dec_multiples, + const struct tlv_definition *def, const uint8_t *buf, int buf_len, + uint8_t lv_tag, uint8_t lv_tag2); /* take a master (src) tlv def and fill up all empty slots in 'dst' */ void tlv_def_patch(struct tlv_definition *dst, const struct tlv_definition *src); diff --git a/src/gsm/libosmogsm.map b/src/gsm/libosmogsm.map index d99121e..4d009e0 100644 --- a/src/gsm/libosmogsm.map +++ b/src/gsm/libosmogsm.map @@ -406,6 +406,7 @@ tlv_def_patch; tlv_dump; tlv_parse; +tlv_parse2; tlv_parse_one; tvlv_att_def; vtvlv_gan_att_def; diff --git a/src/gsm/tlv_parser.c b/src/gsm/tlv_parser.c index f693971..6e089f7 100644 --- a/src/gsm/tlv_parser.c +++ b/src/gsm/tlv_parser.c @@ -220,7 +220,12 @@ return len; } -/*! Parse an entire buffer of TLV encoded Information Elements +/*! Parse an entire buffer of TLV encoded Information Elements. + * In case of multiple occurences of an IE, keep only the first occurence. + * Most GSM related protocols clearly indicate that in case of duplicate + * IEs, only the first occurrence shall be used, while any further occurrences + * shall be ignored. See e.g. 3GPP TS 24.008 Section 8.6.3. + * For multiple occurences, use tlv_parse2(). * \param[out] dec caller-allocated pointer to \ref tlv_parsed * \param[in] def structure defining the valid TLV tags / configurations * \param[in] buf the input data buffer to be parsed @@ -233,38 +238,77 @@ const uint8_t *buf, int buf_len, uint8_t lv_tag, uint8_t lv_tag2) { + return tlv_parse2(dec, 1, def, buf, buf_len, lv_tag, lv_tag2); +} + +/*! Like tlv_parse(), but capable of decoding multiple occurences of the same IE. + * Parse an entire buffer of TLV encoded Information Elements. + * To decode multiple occurences of IEs, provide in dec an _array_ of tlv_parsed, and + * pass the size of that array in dec_multiples. The first occurence of each IE + * is stored in dec[0], the second in dec[1] and so forth. If there are more + * occurences than the array length given in dec_multiples, the remaining + * occurences are dropped. + * \param[out] dec caller-allocated pointer to \ref tlv_parsed + * \param[in] dec_multiples length of the tlv_parsed[] in \a dec. + * \param[in] def structure defining the valid TLV tags / configurations + * \param[in] buf the input data buffer to be parsed + * \param[in] buf_len length of the input data buffer + * \param[in] lv_tag an initial LV tag at the start of the buffer + * \param[in] lv_tag2 a second initial LV tag following the \a lv_tag + * \returns number of TLV entries parsed; negative in case of error + */ +int tlv_parse2(struct tlv_parsed *dec, int dec_multiples, + const struct tlv_definition *def, const uint8_t *buf, int buf_len, + uint8_t lv_tag, uint8_t lv_tag2) +{ int ofs = 0, num_parsed = 0; uint16_t len; + int dec_i; - memset(dec, 0, sizeof(*dec)); + for (dec_i = 0; dec_i < dec_multiples; dec_i++) + memset(&dec[dec_i], 0, sizeof(*dec)); if (lv_tag) { + const uint8_t *val; + uint16_t parsed_len; if (ofs > buf_len) return -1; - dec->lv[lv_tag].val = &buf[ofs+1]; - dec->lv[lv_tag].len = buf[ofs]; - len = dec->lv[lv_tag].len + 1; - if (ofs + len > buf_len) { - dec->lv[lv_tag].val = NULL; - dec->lv[lv_tag].len = 0; + val = &buf[ofs+1]; + len = buf[ofs]; + parsed_len = len + 1; + if (ofs + parsed_len > buf_len) return -2; - } num_parsed++; - ofs += len; + ofs += parsed_len; + /* store the resulting val and len */ + for (dec_i = 0; dec_i < dec_multiples; dec_i++) { + if (dec[dec_i].lv[lv_tag].val != NULL) + continue; + dec->lv[lv_tag].val = val; + dec->lv[lv_tag].len = len; + break; + } } if (lv_tag2) { + const uint8_t *val; + uint16_t parsed_len; if (ofs > buf_len) return -1; - dec->lv[lv_tag2].val = &buf[ofs+1]; - dec->lv[lv_tag2].len = buf[ofs]; - len = dec->lv[lv_tag2].len + 1; - if (ofs + len > buf_len) { - dec->lv[lv_tag2].val = NULL; - dec->lv[lv_tag2].len = 0; + val = &buf[ofs+1]; + len = buf[ofs]; + parsed_len = len + 1; + if (ofs + parsed_len > buf_len) return -2; - } num_parsed++; - ofs += len; + ofs += parsed_len; + /* store the resulting val and len */ + for (dec_i = 0; dec_i < dec_multiples; dec_i++) { + if (dec[dec_i].lv[lv_tag2].val != NULL) + continue; + dec->lv[lv_tag2].val = val; + dec->lv[lv_tag2].len = len; + break; + } } while (ofs < buf_len) { @@ -276,12 +320,12 @@ &buf[ofs], buf_len-ofs); if (rv < 0) return rv; - /* Most GSM related protocols clearly indicate that in case of duplicate - * IEs, only the first occurrence shall be used, while any further occurrences - * shall be ignored. See e.g. 3GPP TS 24.008 Section 8.6.3 */ - if (dec->lv[tag].val == NULL) { - dec->lv[tag].val = val; - dec->lv[tag].len = len; + for (dec_i = 0; dec_i < dec_multiples; dec_i++) { + if (dec[dec_i].lv[tag].val != NULL) + continue; + dec[dec_i].lv[tag].val = val; + dec[dec_i].lv[tag].len = len; + break; } ofs += rv; num_parsed++; diff --git a/tests/tlv/tlv_test.c b/tests/tlv/tlv_test.c index 3973275..e2065b0 100644 --- a/tests/tlv/tlv_test.c +++ b/tests/tlv/tlv_test.c @@ -254,6 +254,7 @@ int i, rc; const uint8_t tag = 0x1a; struct tlv_parsed dec; + struct tlv_parsed dec3[3]; struct tlv_definition def; memset(&def, 0, sizeof(def)); @@ -273,6 +274,16 @@ /* Value pointer should point at first value in test data array. */ OSMO_ASSERT(dec.lv[tag].val == &test_data[2]); OSMO_ASSERT(*dec.lv[tag].val == test_data[2]); + + /* Accept three decodings, pointing at first, second and third val */ + rc = tlv_parse2(dec3, 3, &def, &test_data[1], sizeof(test_data) - 1, tag, 0); + OSMO_ASSERT(rc == i/3); + OSMO_ASSERT(dec3[0].lv[tag].len == 1); + OSMO_ASSERT(dec3[0].lv[tag].val == &test_data[2]); + OSMO_ASSERT(dec3[1].lv[tag].len == 1); + OSMO_ASSERT(dec3[1].lv[tag].val == &test_data[2 + 3]); + OSMO_ASSERT(dec3[2].lv[tag].len == 1); + OSMO_ASSERT(dec3[2].lv[tag].val == &test_data[2 + 3 + 3]); } int main(int argc, char **argv) -- To view, visit https://gerrit.osmocom.org/7788 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: Id04008eaf0a1cafdbdc11b7efc556e3035b1c84d Gerrit-PatchSet: 2 Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder From gerrit-no-reply at lists.osmocom.org Sat Apr 14 11:36:47 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Sat, 14 Apr 2018 11:36:47 +0000 Subject: [MERGED] libosmocore[master]: add gsm0808_cell_id_list_add() to combine two cell identifie... In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: add gsm0808_cell_id_list_add() to combine two cell identifier lists ...................................................................... add gsm0808_cell_id_list_add() to combine two cell identifier lists This will be used by the upcoming neighbor_ident API in osmo-bsc, where the vty interface allows composing neihbor BSS cell identifier lists, and we want to allow adding individual items from individual user commands. It will also be useful to accumulate cell identifiers in case a subscriber sees multiple alternative cells from a neighboring BSS, and we want to pass these on to the MSC in a Handover Required. Related: OS#2283 (inter-BSC HO, BSC side) Change-Id: I5781f5fa5339c92ab2e2620489b002829d206925 --- M include/osmocom/gsm/gsm0808_utils.h M src/gsm/gsm0808_utils.c M src/gsm/libosmogsm.map M tests/gsm0808/gsm0808_test.c M tests/gsm0808/gsm0808_test.ok 5 files changed, 361 insertions(+), 0 deletions(-) Approvals: Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/include/osmocom/gsm/gsm0808_utils.h b/include/osmocom/gsm/gsm0808_utils.h index 363fc39..34eae43 100644 --- a/include/osmocom/gsm/gsm0808_utils.h +++ b/include/osmocom/gsm/gsm0808_utils.h @@ -77,6 +77,7 @@ int gsm0808_dec_cell_id_list(struct gsm0808_cell_id_list *cil, const uint8_t *elem, uint8_t len) OSMO_DEPRECATED("use gsm0808_dec_cell_id_list2 instead"); +int gsm0808_cell_id_list_add(struct gsm0808_cell_id_list2 *dst, const struct gsm0808_cell_id_list2 *src); int gsm0808_chan_type_to_speech_codec(uint8_t perm_spch); int gsm0808_speech_codec_from_chan_type(struct gsm0808_speech_codec *sc, uint8_t perm_spch); diff --git a/src/gsm/gsm0808_utils.c b/src/gsm/gsm0808_utils.c index e4872b8..996456e 100644 --- a/src/gsm/gsm0808_utils.c +++ b/src/gsm/gsm0808_utils.c @@ -909,6 +909,85 @@ return (int)(elem - old_elem); } +static bool same_cell_id_list_entries(const struct gsm0808_cell_id_list2 *a, int ai, + const struct gsm0808_cell_id_list2 *b, int bi) +{ + struct gsm0808_cell_id_list2 tmp = { + .id_discr = a->id_discr, + .id_list_len = 1, + }; + uint8_t buf_a[32 + sizeof(struct msgb)]; + uint8_t buf_b[32 + sizeof(struct msgb)]; + struct msgb *msg_a = (void*)buf_a; + struct msgb *msg_b = (void*)buf_b; + + msg_a->data_len = 32; + msg_b->data_len = 32; + msgb_reset(msg_a); + msgb_reset(msg_b); + + if (a->id_discr != b->id_discr) + return false; + if (ai >= a->id_list_len + || bi >= b->id_list_len) + return false; + + tmp.id_list[0] = a->id_list[ai]; + gsm0808_enc_cell_id_list2(msg_a, &tmp); + + tmp.id_list[0] = b->id_list[bi]; + gsm0808_enc_cell_id_list2(msg_b, &tmp); + + if (msg_a->len != msg_b->len) + return false; + if (memcmp(msg_a->data, msg_b->data, msg_a->len)) + return false; + + return true; +} + +/*! Append entries from one Cell Identifier List to another. + * The cell identifier types must be identical between the two lists. + * \param dst[out] Append entries to this list. + * \param src[in] Append these entries to \a dst. + * \returns the nr of items added, or negative on error: -EINVAL if the id_discr mismatch + * between the lists, -ENOSPC if the destination list does not have enough space. If an error is + * returned, \a dst may have already been changed (particularly on -ENOSPC). Note that a return value + * of zero may occur when the src->id_list_len is zero, or when all entries from \a src already exist + * in \a dst, and does not indicate error per se. */ +int gsm0808_cell_id_list_add(struct gsm0808_cell_id_list2 *dst, const struct gsm0808_cell_id_list2 *src) +{ + int i, j; + int added = 0; + + if (dst->id_list_len == 0 + && dst->id_discr != CELL_IDENT_BSS) + dst->id_discr = src->id_discr; + else if (dst->id_discr != src->id_discr) + return -EINVAL; + + for (i = 0; i < src->id_list_len; i++) { + /* don't add duplicate entries */ + bool skip = false; + for (j = 0; j < dst->id_list_len; j++) { + if (same_cell_id_list_entries(dst, j, src, i)) { + skip = true; + break; + } + } + if (skip) + continue; + + if (dst->id_list_len >= ARRAY_SIZE(dst->id_list)) + return -ENOSPC; + + dst->id_list[dst->id_list_len++] = src->id_list[i]; + added ++; + } + + return added; +} + /*! Convert the representation of the permitted speech codec identifier * that is used in struct gsm0808_channel_type to the speech codec * representation we use in struct gsm0808_speech_codec. diff --git a/src/gsm/libosmogsm.map b/src/gsm/libosmogsm.map index a6ea47d..d99121e 100644 --- a/src/gsm/libosmogsm.map +++ b/src/gsm/libosmogsm.map @@ -176,6 +176,7 @@ gsm0808_enc_cell_id_list2; gsm0808_dec_cell_id_list; gsm0808_dec_cell_id_list2; +gsm0808_cell_id_list_add; gsm0808_chan_type_to_speech_codec; gsm0808_speech_codec_from_chan_type; gsm0808_speech_codec_type_names; diff --git a/tests/gsm0808/gsm0808_test.c b/tests/gsm0808/gsm0808_test.c index 9730be2..f467099 100644 --- a/tests/gsm0808/gsm0808_test.c +++ b/tests/gsm0808/gsm0808_test.c @@ -28,6 +28,7 @@ #include #include #include +#include #define VERIFY(msg, data, len) \ if (msgb_l3len(msg) != len) { \ @@ -1063,6 +1064,198 @@ msgb_free(msg); } +static void print_cil(const struct gsm0808_cell_id_list2 *cil) +{ + unsigned int i; + if (!cil) { + printf(" cell_id_list == NULL\n"); + return; + } + switch (cil->id_discr) { + case CELL_IDENT_WHOLE_GLOBAL: + printf(" cell_id_list cgi[%u] = {\n", cil->id_list_len); + for (i = 0; i < cil->id_list_len; i++) + printf(" %2d: %s\n", i, osmo_cgi_name(&cil->id_list[i].global)); + printf(" }\n"); + break; + case CELL_IDENT_LAC: + printf(" cell_id_list lac[%u] = {\n", cil->id_list_len); + for (i = 0; i < cil->id_list_len; i++) + printf(" %2d: %u\n", i, cil->id_list[i].lac); + printf(" }\n"); + break; + case CELL_IDENT_BSS: + printf(" cell_id_list bss[%u]\n", cil->id_list_len); + break; + case CELL_IDENT_NO_CELL: + printf(" cell_id_list no_cell[%u]\n", cil->id_list_len); + break; + default: + printf(" Unimplemented id_disc\n"); + } +} + +void test_cell_id_list_add() { + const struct gsm0808_cell_id_list2 cgi1 = { + .id_discr = CELL_IDENT_WHOLE_GLOBAL, + .id_list_len = 1, + .id_list = { + { + .global = { + .lai = { + .plmn = { .mcc = 1, .mnc = 2, .mnc_3_digits = false }, + .lac = 3, + }, + .cell_identity = 4, + } + }, + }, + }; + + const struct gsm0808_cell_id_list2 cgi2 = { + .id_discr = CELL_IDENT_WHOLE_GLOBAL, + .id_list_len = 2, + .id_list = { + { + .global = { + .lai = { + .plmn = { .mcc = 1, .mnc = 2, .mnc_3_digits = true }, + .lac = 3, + }, + .cell_identity = 4, + } + }, + { + .global = { + .lai = { + .plmn = { .mcc = 5, .mnc = 6, .mnc_3_digits = true }, + .lac = 7, + }, + .cell_identity = 8, + } + }, + }, + }; + + const struct gsm0808_cell_id_list2 cgi2a = { + .id_discr = CELL_IDENT_WHOLE_GLOBAL, + .id_list_len = 2, + .id_list = { + { + .global = cgi2.id_list[0].global + }, + { + .global = { + .lai = { + .plmn = { .mcc = 9, .mnc = 10, .mnc_3_digits = true }, + .lac = 11, + }, + .cell_identity = 12, + } + }, + }, + }; + + const struct gsm0808_cell_id_list2 cgi3 = { + .id_discr = CELL_IDENT_WHOLE_GLOBAL, + .id_list_len = 2, + .id_list = { + { + .global = { + .lai = { + .plmn = { .mcc = 13, .mnc = 14, .mnc_3_digits = true }, + .lac = 15, + }, + .cell_identity = 16, + } + }, + { + .global = { + .lai = { + .plmn = { .mcc = 16, .mnc = 17, .mnc_3_digits = true }, + .lac = 18, + }, + .cell_identity = 19, + } + }, + }, + }; + + + const struct gsm0808_cell_id_list2 lac1 = { + .id_discr = CELL_IDENT_LAC, + .id_list_len = 1, + .id_list = { + { + .lac = 123 + }, + }, + }; + + const struct gsm0808_cell_id_list2 lac2 = { + .id_discr = CELL_IDENT_LAC, + .id_list_len = 2, + .id_list = { + { + .lac = 456 + }, + { + .lac = 789 + }, + }, + }; + + struct gsm0808_cell_id_list2 cil = {}; + + printf("------- %s\n", __func__); + + print_cil(&cil); + +#define ADD_QUIET(other_cil, expect_rc) do { \ + int rc = gsm0808_cell_id_list_add(&cil, &other_cil); \ + printf("\ngsm0808_cell_id_list_add(&cil, &" #other_cil ") --> rc = %d\n", rc); \ + OSMO_ASSERT(rc == expect_rc); \ + } while(0) + +#define ADD(other_cil, expect_rc) ADD_QUIET(other_cil, expect_rc); print_cil(&cil) + + ADD(lac1, 1); + ADD(lac1, 0); + ADD(lac2, 2); + ADD(lac2, 0); + ADD(cil, 0); + ADD(cgi1, -EINVAL); + + printf("\ncan't add to BSS list\n"); + cil.id_list_len = 0; + cil.id_discr = CELL_IDENT_BSS; + print_cil(&cil); + ADD(lac1, -EINVAL); + + printf("\nother types (including NO_CELL) take on new type iff empty\n"); + cil.id_list_len = 0; + cil.id_discr = CELL_IDENT_NO_CELL; + print_cil(&cil); + ADD(cgi1, 1); + ADD(cgi1, 0); + ADD(cgi2, 2); + ADD(cgi2, 0); + + cil.id_list_len = GSM0808_CELL_ID_LIST2_MAXLEN - 1; + printf("\ncil.id_list_len = %u", cil.id_list_len); + ADD_QUIET(cgi2a, 1); + printf("cil.id_list_len = %u\n", cil.id_list_len); + + cil.id_list_len = GSM0808_CELL_ID_LIST2_MAXLEN - 1; + printf("\ncil.id_list_len = %u", cil.id_list_len); + ADD_QUIET(cgi3, -ENOSPC); + printf("cil.id_list_len = %u", cil.id_list_len); + ADD_QUIET(cgi2a, -ENOSPC); + printf("cil.id_list_len = %u\n", cil.id_list_len); + + printf("------- %s done\n", __func__); +} + int main(int argc, char **argv) { printf("Testing generation of GSM0808 messages\n"); @@ -1103,6 +1296,8 @@ test_gsm0808_enc_dec_cell_id_list_multi_lac_and_ci(); test_gsm0808_enc_dec_cell_id_list_multi_global(); + test_cell_id_list_add(); + printf("Done\n"); return EXIT_SUCCESS; } diff --git a/tests/gsm0808/gsm0808_test.ok b/tests/gsm0808/gsm0808_test.ok index e101d65..a049dec 100644 --- a/tests/gsm0808/gsm0808_test.ok +++ b/tests/gsm0808/gsm0808_test.ok @@ -19,4 +19,89 @@ Testing creating Paging Request Testing creating DTAP Testing prepend DTAP +------- test_cell_id_list_add + cell_id_list cgi[0] = { + } + +gsm0808_cell_id_list_add(&cil, &lac1) --> rc = 1 + cell_id_list lac[1] = { + 0: 123 + } + +gsm0808_cell_id_list_add(&cil, &lac1) --> rc = 0 + cell_id_list lac[1] = { + 0: 123 + } + +gsm0808_cell_id_list_add(&cil, &lac2) --> rc = 2 + cell_id_list lac[3] = { + 0: 123 + 1: 456 + 2: 789 + } + +gsm0808_cell_id_list_add(&cil, &lac2) --> rc = 0 + cell_id_list lac[3] = { + 0: 123 + 1: 456 + 2: 789 + } + +gsm0808_cell_id_list_add(&cil, &cil) --> rc = 0 + cell_id_list lac[3] = { + 0: 123 + 1: 456 + 2: 789 + } + +gsm0808_cell_id_list_add(&cil, &cgi1) --> rc = -22 + cell_id_list lac[3] = { + 0: 123 + 1: 456 + 2: 789 + } + +can't add to BSS list + cell_id_list bss[0] + +gsm0808_cell_id_list_add(&cil, &lac1) --> rc = -22 + cell_id_list bss[0] + +other types (including NO_CELL) take on new type iff empty + cell_id_list no_cell[0] + +gsm0808_cell_id_list_add(&cil, &cgi1) --> rc = 1 + cell_id_list cgi[1] = { + 0: 001-02-3-4 + } + +gsm0808_cell_id_list_add(&cil, &cgi1) --> rc = 0 + cell_id_list cgi[1] = { + 0: 001-02-3-4 + } + +gsm0808_cell_id_list_add(&cil, &cgi2) --> rc = 2 + cell_id_list cgi[3] = { + 0: 001-02-3-4 + 1: 001-002-3-4 + 2: 005-006-7-8 + } + +gsm0808_cell_id_list_add(&cil, &cgi2) --> rc = 0 + cell_id_list cgi[3] = { + 0: 001-02-3-4 + 1: 001-002-3-4 + 2: 005-006-7-8 + } + +cil.id_list_len = 126 +gsm0808_cell_id_list_add(&cil, &cgi2a) --> rc = 1 +cil.id_list_len = 127 + +cil.id_list_len = 126 +gsm0808_cell_id_list_add(&cil, &cgi3) --> rc = -28 +cil.id_list_len = 127 +gsm0808_cell_id_list_add(&cil, &cgi2a) --> rc = -28 +cil.id_list_len = 127 +------- test_cell_id_list_add done Done -- To view, visit https://gerrit.osmocom.org/7787 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: I5781f5fa5339c92ab2e2620489b002829d206925 Gerrit-PatchSet: 2 Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder From gerrit-no-reply at lists.osmocom.org Sat Apr 14 11:36:47 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Sat, 14 Apr 2018 11:36:47 +0000 Subject: [MERGED] libosmocore[master]: add osmo_cgi_name() In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: add osmo_cgi_name() ...................................................................... add osmo_cgi_name() This will be used by cell idenitifier list code, like upcoming neighbor_ident VTY in osmo-bsc and regression tests. Change-Id: Iebc5cdf61b697b1603900993fc265af3eca0cedf --- M include/osmocom/gsm/gsm23003.h M src/gsm/gsm23003.c M src/gsm/libosmogsm.map 3 files changed, 31 insertions(+), 0 deletions(-) Approvals: Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/include/osmocom/gsm/gsm23003.h b/include/osmocom/gsm/gsm23003.h index 02e7971..fd4f369 100644 --- a/include/osmocom/gsm/gsm23003.h +++ b/include/osmocom/gsm/gsm23003.h @@ -99,6 +99,8 @@ const char *osmo_plmn_name(const struct osmo_plmn_id *plmn); const char *osmo_plmn_name2(const struct osmo_plmn_id *plmn); const char *osmo_lai_name(const struct osmo_location_area_id *lai); +const char *osmo_cgi_name(const struct osmo_cell_global_id *cgi); +const char *osmo_cgi_name2(const struct osmo_cell_global_id *cgi); void osmo_plmn_to_bcd(uint8_t *bcd_dst, const struct osmo_plmn_id *plmn); void osmo_plmn_from_bcd(const uint8_t *bcd_src, struct osmo_plmn_id *plmn); diff --git a/src/gsm/gsm23003.c b/src/gsm/gsm23003.c index 574400d..2c3b21e 100644 --- a/src/gsm/gsm23003.c +++ b/src/gsm/gsm23003.c @@ -133,6 +133,33 @@ return buf; } +static const char *_cgi_name(const struct osmo_cell_global_id *cgi, char *buf, size_t buflen) +{ + snprintf(buf, buflen, "%s-%u", osmo_lai_name(&cgi->lai), cgi->cell_identity); + return buf; +} + +/*! Return MCC-MNC-LAC-CI as string, in a static buffer. + * \param[in] cgi CGI to encode. + * \returns Static string buffer. + */ +const char *osmo_cgi_name(const struct osmo_cell_global_id *cgi) +{ + static char buf[32]; + return _cgi_name(cgi, buf, sizeof(buf)); +} + +/*! Same as osmo_cgi_name(), but uses a different static buffer. + * Useful for printing two distinct CGIs in the same printf format. + * \param[in] cgi CGI to encode. + * \returns Static string buffer. + */ +const char *osmo_cgi_name2(const struct osmo_cell_global_id *cgi) +{ + static char buf[32]; + return _cgi_name(cgi, buf, sizeof(buf)); +} + static void to_bcd(uint8_t *bcd, uint16_t val) { bcd[2] = val % 10; diff --git a/src/gsm/libosmogsm.map b/src/gsm/libosmogsm.map index 31717d5..a6ea47d 100644 --- a/src/gsm/libosmogsm.map +++ b/src/gsm/libosmogsm.map @@ -277,6 +277,8 @@ osmo_plmn_name2; osmo_lai_name; osmo_rai_name; +osmo_cgi_name; +osmo_cgi_name2; osmo_mnc_from_str; osmo_mnc_cmp; osmo_plmn_cmp; -- To view, visit https://gerrit.osmocom.org/7786 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: Iebc5cdf61b697b1603900993fc265af3eca0cedf Gerrit-PatchSet: 2 Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder From gerrit-no-reply at lists.osmocom.org Sat Apr 14 11:38:53 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Sat, 14 Apr 2018 11:38:53 +0000 Subject: osmo-bsc[master]: fix handling of state changes in acc ramping In-Reply-To: References: Message-ID: Patch Set 4: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7784 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Ib3291439655598fb5ddc891a3e4cc35b0bad250f Gerrit-PatchSet: 4 Gerrit-Project: osmo-bsc Gerrit-Branch: master Gerrit-Owner: Stefan Sperling Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Pau Espin Pedrol Gerrit-Reviewer: Stefan Sperling Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Sat Apr 14 11:39:08 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Sat, 14 Apr 2018 11:39:08 +0000 Subject: [MERGED] osmo-bsc[master]: fix handling of state changes in acc ramping In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: fix handling of state changes in acc ramping ...................................................................... fix handling of state changes in acc ramping Take both the operative and administrative states into account when deciding whether to start ACC ramping, and examine old/new state values to avoid triggering ramping for a no-op state change. This requires a fix to gsm_trx_lock_rf(): This function overwrote the old administrative state of a trx before enqueuing a state change request towards the BTS. The BTS will confirm this request with an ACK, at which time a signal is generated which the ACC ramp code listens to. We must not overwrite the old state value until the signal has been handled, otherwise the signal handler cannot tell what the old state was. Tested with a virtphy setup, nanobts, and osmo-bts. Change-Id: Ib3291439655598fb5ddc891a3e4cc35b0bad250f Related: OS#2591 --- M src/libbsc/abis_nm.c M src/libbsc/acc_ramp.c M src/libbsc/bsc_init.c 3 files changed, 113 insertions(+), 37 deletions(-) Approvals: Pau Espin Pedrol: Looks good to me, but someone else must approve Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/src/libbsc/abis_nm.c b/src/libbsc/abis_nm.c index 2ee2e24..e3c4408 100644 --- a/src/libbsc/abis_nm.c +++ b/src/libbsc/abis_nm.c @@ -2844,13 +2844,17 @@ { uint8_t new_state = locked ? NM_STATE_LOCKED : NM_STATE_UNLOCKED; - LOGP(DNM, LOGL_NOTICE, "(bts=%d,trx=%d) Changing adm. state %s -> %s [%s]\n", trx->bts->nr, trx->nr, + + if (!trx->bts || !trx->bts->oml_link) { + /* Set initial state which will be sent when BTS connects. */ + trx->mo.nm_state.administrative = new_state; + return; + } + + LOGP(DNM, LOGL_NOTICE, "(bts=%d,trx=%d) Requesting administrative state change %s -> %s [%s]\n", + trx->bts->nr, trx->nr, get_value_string(abis_nm_adm_state_names, trx->mo.nm_state.administrative), get_value_string(abis_nm_adm_state_names, new_state), reason); - - trx->mo.nm_state.administrative = new_state; - if (!trx->bts || !trx->bts->oml_link) - return; abis_nm_chg_adm_state(trx->bts, NM_OC_RADIO_CARRIER, trx->bts->bts_nr, trx->nr, 0xff, diff --git a/src/libbsc/acc_ramp.c b/src/libbsc/acc_ramp.c index 7116107..ff8ff0e 100644 --- a/src/libbsc/acc_ramp.c +++ b/src/libbsc/acc_ramp.c @@ -28,6 +28,7 @@ #include #include #include +#include /* * Check if an ACC has been permanently barred for a BTS, @@ -144,6 +145,7 @@ struct nm_statechg_signal_data *nsd = signal_data; struct acc_ramp *acc_ramp = handler_data; struct gsm_bts_trx *trx = NULL; + bool trigger_ramping = false, abort_ramping = false; /* Handled signals map to an Administrative State Change ACK, or a State Changed Event Report. */ if (signal != S_NM_STATECHG_ADM && signal != S_NM_STATECHG_OPER) @@ -154,37 +156,109 @@ trx = nsd->obj; + LOGP(DRSL, LOGL_DEBUG, "(bts=%d,trx=%d) ACC RAMP: administrative state %s -> %s\n", + acc_ramp->bts->nr, trx->nr, + get_value_string(abis_nm_adm_state_names, nsd->old_state->administrative), + get_value_string(abis_nm_adm_state_names, nsd->new_state->administrative)); + LOGP(DRSL, LOGL_DEBUG, "(bts=%d,trx=%d) ACC RAMP: operational state %s -> %s\n", + acc_ramp->bts->nr, trx->nr, + abis_nm_opstate_name(nsd->old_state->operational), + abis_nm_opstate_name(nsd->new_state->operational)); + /* We only care about state changes of the first TRX. */ if (trx->nr != 0) return 0; /* RSL must already be up. We cannot send RACH system information to the BTS otherwise. */ - if (trx->rsl_link == NULL) + if (trx->rsl_link == NULL) { + LOGP(DRSL, LOGL_DEBUG, "(bts=%d,trx=%d) ACC RAMP: ignoring state change because RSL link is down\n", + acc_ramp->bts->nr, trx->nr); return 0; - - /* Trigger or abort ACC ramping based on the new 'RF lock' state of this TRX. */ - switch (nsd->new_state->administrative) { - case NM_STATE_UNLOCKED: - /* - * Do not re-trigger ACC ramping if ramping is already in progress. - * A BTS might send several "unlock" change events: One in the Administrative - * State Change ACK, and/or another in a State Changed Event Report. - * For instance, the nanobts is known to send both. - */ - if (!osmo_timer_pending(&acc_ramp->step_timer)) - acc_ramp_trigger(acc_ramp); - break; - case NM_STATE_LOCKED: - case NM_STATE_SHUTDOWN: - acc_ramp_abort(acc_ramp); - break; - case NM_STATE_NULL: - break; - default: - LOGP(DRSL, LOGL_NOTICE, "(bts=%d) ACC RAMP: unrecognized administrative state '0x%x' reported for TRX 0\n", - acc_ramp->bts->nr, nsd->new_state->administrative); - break; } + + /* Trigger or abort ACC ramping based on the new state of this TRX. */ + if (nsd->old_state->administrative != nsd->new_state->administrative) { + switch (nsd->new_state->administrative) { + case NM_STATE_UNLOCKED: + if (nsd->old_state->operational != nsd->new_state->operational) { + /* + * Administrative and operational state have both changed. + * Trigger ramping only if TRX 0 will be both enabled and unlocked. + */ + if (nsd->new_state->operational == NM_OPSTATE_ENABLED) + trigger_ramping = true; + else + LOGP(DRSL, LOGL_DEBUG, "(bts=%d,trx=%d) ACC RAMP: ignoring state change " + "because TRX is transitioning into operational state '%s'\n", + acc_ramp->bts->nr, trx->nr, + abis_nm_opstate_name(nsd->new_state->operational)); + } else { + /* + * Operational state has not changed. + * Trigger ramping only if TRX 0 is already usable. + */ + if (trx_is_usable(trx)) + trigger_ramping = true; + else + LOGP(DRSL, LOGL_DEBUG, "(bts=%d,trx=%d) ACC RAMP: ignoring state change " + "because TRX is not usable\n", acc_ramp->bts->nr, trx->nr); + } + break; + case NM_STATE_LOCKED: + case NM_STATE_SHUTDOWN: + abort_ramping = true; + break; + case NM_STATE_NULL: + default: + LOGP(DRSL, LOGL_NOTICE, "(bts=%d) ACC RAMP: unrecognized administrative state '0x%x' " + "reported for TRX 0\n", acc_ramp->bts->nr, nsd->new_state->administrative); + break; + } + } + if (nsd->old_state->operational != nsd->new_state->operational) { + switch (nsd->new_state->operational) { + case NM_OPSTATE_ENABLED: + if (nsd->old_state->administrative != nsd->new_state->administrative) { + /* + * Administrative and operational state have both changed. + * Trigger ramping only if TRX 0 will be both enabled and unlocked. + */ + if (nsd->new_state->administrative == NM_STATE_UNLOCKED) + trigger_ramping = true; + else + LOGP(DRSL, LOGL_DEBUG, "(bts=%d,trx=%d) ACC RAMP: ignoring state change " + "because TRX is transitioning into administrative state '%s'\n", + acc_ramp->bts->nr, trx->nr, + get_value_string(abis_nm_adm_state_names, nsd->new_state->administrative)); + } else { + /* + * Administrative state has not changed. + * Trigger ramping only if TRX 0 is already unlocked. + */ + if (trx->mo.nm_state.administrative == NM_STATE_UNLOCKED) + trigger_ramping = true; + else + LOGP(DRSL, LOGL_DEBUG, "(bts=%d,trx=%d) ACC RAMP: ignoring state change " + "because TRX is in administrative state '%s'\n", + acc_ramp->bts->nr, trx->nr, + get_value_string(abis_nm_adm_state_names, trx->mo.nm_state.administrative)); + } + break; + case NM_OPSTATE_DISABLED: + abort_ramping = true; + break; + case NM_OPSTATE_NULL: + default: + LOGP(DRSL, LOGL_NOTICE, "(bts=%d) ACC RAMP: unrecognized operational state '0x%x' " + "reported for TRX 0\n", acc_ramp->bts->nr, nsd->new_state->administrative); + break; + } + } + + if (trigger_ramping) + acc_ramp_trigger(acc_ramp); + else if (abort_ramping) + acc_ramp_abort(acc_ramp); return 0; } @@ -270,13 +344,9 @@ acc_ramp_abort(acc_ramp); if (acc_ramp_is_enabled(acc_ramp)) { - struct gsm_bts_trx *trx0 = gsm_bts_trx_by_nr(acc_ramp->bts, 0); - /* TRX 0 should be usable and unlocked, otherwise starting ACC ramping is pointless. */ - if (trx0 && trx_is_usable(trx0) && trx0->mo.nm_state.administrative == NM_STATE_UNLOCKED) { - /* Set all available ACCs to barred and start ramping up. */ - barr_all_accs(acc_ramp); - do_acc_ramping_step(acc_ramp); - } + /* Set all available ACCs to barred and start ramping up. */ + barr_all_accs(acc_ramp); + do_acc_ramping_step(acc_ramp); } } diff --git a/src/libbsc/bsc_init.c b/src/libbsc/bsc_init.c index c357105..429d3c7 100644 --- a/src/libbsc/bsc_init.c +++ b/src/libbsc/bsc_init.c @@ -339,8 +339,10 @@ /* * Trigger ACC ramping before sending system information to BTS. * This ensures that RACH control in system information is configured correctly. + * TRX 0 should be usable and unlocked, otherwise starting ACC ramping is pointless. */ - acc_ramp_trigger(&trx->bts->acc_ramp); + if (trx_is_usable(trx) && trx->mo.nm_state.administrative == NM_STATE_UNLOCKED) + acc_ramp_trigger(&trx->bts->acc_ramp); gsm_bts_trx_set_system_infos(trx); -- To view, visit https://gerrit.osmocom.org/7784 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: Ib3291439655598fb5ddc891a3e4cc35b0bad250f Gerrit-PatchSet: 4 Gerrit-Project: osmo-bsc Gerrit-Branch: master Gerrit-Owner: Stefan Sperling Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Pau Espin Pedrol Gerrit-Reviewer: Stefan Sperling From gerrit-no-reply at lists.osmocom.org Sat Apr 14 11:39:56 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Sat, 14 Apr 2018 11:39:56 +0000 Subject: osmo-ci[master]: jobs: gerrit-osmo-ttcn3-hacks: Make deps before cleaning In-Reply-To: References: Message-ID: Patch Set 3: Verified+1 -- To view, visit https://gerrit.osmocom.org/7406 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I07fee78bba5b07c7f3f4359869e00ef2583e0769 Gerrit-PatchSet: 3 Gerrit-Project: osmo-ci Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Neels Hofmeyr Gerrit-Reviewer: Pau Espin Pedrol Gerrit-Reviewer: Stefan Sperling Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Sat Apr 14 11:40:05 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Sat, 14 Apr 2018 11:40:05 +0000 Subject: [MERGED] osmo-ci[master]: jobs: gerrit-osmo-ttcn3-hacks: Make deps before cleaning In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: jobs: gerrit-osmo-ttcn3-hacks: Make deps before cleaning ...................................................................... jobs: gerrit-osmo-ttcn3-hacks: Make deps before cleaning make clean has subdir/Makefile as dependency. As a result, subdir/gen_links.sh and subdir/makefile-regen.sh are called, and ttcn3_makefilegen in there fails because the dep symlinks are done against missing files (because git repos in deps have not been checked out). Additionally, since 61c11e9234b3f9e087aba94380892ab66abc1191 make deps-update is equivalent to make deps since the dependency tracking system was improved, so we can remove it as it's not needed anymore. Change-Id: I07fee78bba5b07c7f3f4359869e00ef2583e0769 --- M jobs/gerrit-verifications.yml 1 file changed, 2 insertions(+), 1 deletion(-) Approvals: Harald Welte: Looks good to me, approved; Verified diff --git a/jobs/gerrit-verifications.yml b/jobs/gerrit-verifications.yml index 640bde7..7613802 100644 --- a/jobs/gerrit-verifications.yml +++ b/jobs/gerrit-verifications.yml @@ -189,7 +189,8 @@ slave_axis: !!python/tuple [ttcn3] cmd: > # keep first line with less indent to preserve newlines - make clean; make deps-update && make compile + set -e + make deps; make clean; make compile jobs: - 'gerrit-{repos}' -- To view, visit https://gerrit.osmocom.org/7406 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: I07fee78bba5b07c7f3f4359869e00ef2583e0769 Gerrit-PatchSet: 4 Gerrit-Project: osmo-ci Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Neels Hofmeyr Gerrit-Reviewer: Pau Espin Pedrol Gerrit-Reviewer: Stefan Sperling From gerrit-no-reply at lists.osmocom.org Sat Apr 14 11:43:53 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Sat, 14 Apr 2018 11:43:53 +0000 Subject: osmo-ttcn3-hacks[master]: LAPDm: Re-structure: Merge Frame type A+B which are really t... In-Reply-To: References: Message-ID: Patch Set 3: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7254 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I7b3079899f42a61d67be03e3a17346af80d7b3be Gerrit-PatchSet: 3 Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Owner: Harald Welte Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Sat Apr 14 13:07:49 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Sat, 14 Apr 2018 13:07:49 +0000 Subject: [PATCH] osmo-msc[master]: smpp: Unset esme->acl on socket close Message-ID: Review at https://gerrit.osmocom.org/7795 smpp: Unset esme->acl on socket close We set acl->esme during _process_bind(), but we don't clear it in case the TCP connection for the ESME is dead. This leads to a stale acl->esme pointer, which we will attempt to dereference the next time a SMS is delivered to a route pointing to this acl, where it will be a heap use-after-free. This was discovered using AddressSanitizer and MSC_Tests.ttcn Closes: OS#3168 Change-Id: I1f140d7f9c7d89f200ddbcd81a8df66de69fb3e4 --- M src/libmsc/smpp_smsc.c 1 file changed, 6 insertions(+), 0 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-msc refs/changes/95/7795/1 diff --git a/src/libmsc/smpp_smsc.c b/src/libmsc/smpp_smsc.c index b889b52..7bbb0a4 100644 --- a/src/libmsc/smpp_smsc.c +++ b/src/libmsc/smpp_smsc.c @@ -249,6 +249,8 @@ } smpp_cmd_flush_pending(esme); llist_del(&esme->list); + if (esme->acl) + esme->acl->esme = NULL; talloc_free(esme); } @@ -875,6 +877,8 @@ osmo_fd_unregister(&esme->wqueue.bfd); close(esme->wqueue.bfd.fd); esme->wqueue.bfd.fd = -1; + if (esme->acl) + esme->acl->esme = NULL; smpp_esme_put(esme); return 0; @@ -891,6 +895,8 @@ osmo_fd_unregister(&esme->wqueue.bfd); close(esme->wqueue.bfd.fd); esme->wqueue.bfd.fd = -1; + if (esme->acl) + esme->acl->esme = NULL; smpp_esme_put(esme); } else if (rc < msgb_length(msg)) { LOGP(DSMPP, LOGL_ERROR, "[%s] Short write\n", esme->system_id); -- To view, visit https://gerrit.osmocom.org/7795 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I1f140d7f9c7d89f200ddbcd81a8df66de69fb3e4 Gerrit-PatchSet: 1 Gerrit-Project: osmo-msc Gerrit-Branch: master Gerrit-Owner: Harald Welte From jenkins at lists.osmocom.org Sat Apr 14 15:10:06 2018 From: jenkins at lists.osmocom.org (jenkins at lists.osmocom.org) Date: Sat, 14 Apr 2018 15:10:06 +0000 (UTC) Subject: =?UTF-8?Q?Build_failed_in_Jenkins:_master-asn1c_=C2=BB_a1=3Ddefaul?= =?UTF-8?Q?t,a2=3Ddefault,a3=3Ddefault,osmocom-master-debian9_#91?= In-Reply-To: <539976271.294.1523632206458.JavaMail.jenkins@jenkins.osmocom.org> References: <539976271.294.1523632206458.JavaMail.jenkins@jenkins.osmocom.org> Message-ID: <458280551.314.1523718606706.JavaMail.jenkins@jenkins.osmocom.org> See ------------------------------------------ [...truncated 3.74 KB...] checking build system type... x86_64-unknown-linux-gnu checking host system type... x86_64-unknown-linux-gnu checking target system type... x86_64-unknown-linux-gnu checking for a BSD-compatible install... /usr/bin/install -c checking whether build environment is sane... yes checking for gawk... gawk checking whether make sets $(MAKE)... yes checking whether to enable maintainer-specific portions of Makefiles... no checking for style of include used by make... GNU checking for gcc... gcc checking for C compiler default output file name... a.out checking whether the C compiler works... yes checking whether we are cross compiling... no checking for suffix of executables... checking for suffix of object files... o checking whether we are using the GNU C compiler... yes checking whether gcc accepts -g... yes checking for gcc option to accept ISO C89... none needed checking dependency style of gcc... gcc3 checking for a sed that does not truncate output... /bin/sed checking for grep that handles long lines and -e... /bin/grep checking for egrep... /bin/grep -E checking for ld used by gcc... /usr/bin/ld checking if the linker (/usr/bin/ld) is GNU ld... yes checking for /usr/bin/ld option to reload object files... -r checking for BSD-compatible nm... /usr/bin/nm -B checking whether ln -s works... yes checking how to recognise dependent libraries... pass_all checking how to run the C preprocessor... gcc -E checking for ANSI C header files... yes checking for sys/types.h... yes checking for sys/stat.h... yes checking for stdlib.h... yes checking for string.h... yes checking for memory.h... yes checking for strings.h... yes checking for inttypes.h... yes checking for stdint.h... yes checking for unistd.h... yes checking dlfcn.h usability... yes checking dlfcn.h presence... yes checking for dlfcn.h... yes checking for g++... g++ checking whether we are using the GNU C++ compiler... yes checking whether g++ accepts -g... yes checking dependency style of g++... gcc3 checking how to run the C++ preprocessor... g++ -E checking for g77... no checking for f77... no checking for xlf... no checking for frt... no checking for pgf77... no checking for cf77... no checking for fort77... no checking for fl32... no checking for af77... no checking for f90... no checking for xlf90... no checking for pgf90... no checking for pghpf... no checking for epcf90... no checking for gfortran... no checking for g95... no checking for f95... no checking for fort... no checking for xlf95... no checking for ifort... no checking for ifc... no checking for efc... no checking for pgf95... no checking for lf95... no checking for ftn... no checking whether we are using the GNU Fortran 77 compiler... no checking whether accepts -g... no checking the maximum length of command line arguments... 32768 checking command to parse /usr/bin/nm -B output from gcc object... ok checking for objdir... .libs checking for ar... ar checking for ranlib... ranlib checking for strip... strip checking if gcc supports -fno-rtti -fno-exceptions... no checking for gcc option to produce PIC... -fPIC checking if gcc PIC flag -fPIC works... yes checking if gcc static flag -static works... yes checking if gcc supports -c -o file.o... yes checking whether the gcc linker (/usr/bin/ld -m elf_x86_64) supports shared libraries... yes checking whether -lc should be explicitly linked in... no checking dynamic linker characteristics... GNU/Linux ld.so checking how to hardcode library paths into programs... immediate checking whether stripping libraries is possible... yes checking if libtool supports shared libraries... yes checking whether to build shared libraries... yes checking whether to build static libraries... yes configure: creating libtool appending configuration tag "CXX" to libtool checking for ld used by g++... /usr/bin/ld -m elf_x86_64 checking if the linker (/usr/bin/ld -m elf_x86_64) is GNU ld... yes checking whether the g++ linker (/usr/bin/ld -m elf_x86_64) supports shared libraries... yes checking for g++ option to produce PIC... -fPIC checking if g++ PIC flag -fPIC works... yes checking if g++ static flag -static works... yes checking if g++ supports -c -o file.o... yes checking whether the g++ linker (/usr/bin/ld -m elf_x86_64) supports shared libraries... yes checking dynamic linker characteristics... GNU/Linux ld.so checking how to hardcode library paths into programs... immediate appending configuration tag "F77" to libtool checking for autoconf... /usr/bin/autoconf checking for autoheader... /usr/bin/autoheader checking for gcc... (cached) gcc checking whether we are using the GNU C compiler... (cached) yes checking whether gcc accepts -g... (cached) yes checking for gcc option to accept ISO C89... (cached) none needed checking dependency style of gcc... (cached) gcc3 checking how to run the C preprocessor... gcc -E checking for a BSD-compatible install... /usr/bin/install -c checking whether ln -s works... yes checking whether make sets $(MAKE)... (cached) yes checking for bison... bison -y checking for flex... flex checking for yywrap in -lfl... yes checking lex output file root... lex.yy checking whether yytext is a pointer... yes checking for ar... /usr/bin/ar checking for ANSI C header files... (cached) yes checking sys/param.h usability... yes checking sys/param.h presence... yes checking for sys/param.h... yes checking whether byte ordering is bigendian... no checking for off_t... yes checking for size_t... yes checking whether struct tm is in sys/time.h or time.h... time.h checking for intmax_t... yes checking for library containing getopt... none required checking for strtoimax... yes checking for strtoll... yes checking for mergesort... no checking for mkstemps... yes configure: creating ./config.status config.status: creating skeletons/standard-modules/Makefile config.status: creating skeletons/tests/Makefile config.status: creating libasn1compiler/Makefile config.status: creating libasn1parser/Makefile config.status: creating libasn1print/Makefile config.status: creating asn1c/webcgi/Makefile config.status: creating asn1c/tests/Makefile config.status: creating libasn1fix/Makefile config.status: creating skeletons/Makefile config.status: creating examples/Makefile config.status: creating tests/Makefile config.status: creating asn1c/Makefile config.status: creating doc/Makefile config.status: creating asn1c.spec config.status: creating Makefile config.status: creating config.h config.status: executing depfiles commands + make -j 8 make all-recursive make[1]: Entering directory ' Making all in libasn1parser make[2]: Entering directory ' if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1parser.lo -MD -MP -MF ".deps/asn1parser.Tpo" -c -o asn1parser.lo asn1parser.c; \ then mv -f ".deps/asn1parser.Tpo" ".deps/asn1parser.Plo"; else rm -f ".deps/asn1parser.Tpo"; exit 1; fi bison -y -p asn1p_ -d asn1p_y.y flex -s -p -Cem -Pasn1p_ -olex.yy.c asn1p_l.l if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_module.lo -MD -MP -MF ".deps/asn1p_module.Tpo" -c -o asn1p_module.lo asn1p_module.c; \ then mv -f ".deps/asn1p_module.Tpo" ".deps/asn1p_module.Plo"; else rm -f ".deps/asn1p_module.Tpo"; exit 1; fi if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_oid.lo -MD -MP -MF ".deps/asn1p_oid.Tpo" -c -o asn1p_oid.lo asn1p_oid.c; \ then mv -f ".deps/asn1p_oid.Tpo" ".deps/asn1p_oid.Plo"; else rm -f ".deps/asn1p_oid.Tpo"; exit 1; fi if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_value.lo -MD -MP -MF ".deps/asn1p_value.Tpo" -c -o asn1p_value.lo asn1p_value.c; \ then mv -f ".deps/asn1p_value.Tpo" ".deps/asn1p_value.Plo"; else rm -f ".deps/asn1p_value.Tpo"; exit 1; fi if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_expr.lo -MD -MP -MF ".deps/asn1p_expr.Tpo" -c -o asn1p_expr.lo asn1p_expr.c; \ then mv -f ".deps/asn1p_expr.Tpo" ".deps/asn1p_expr.Plo"; else rm -f ".deps/asn1p_expr.Tpo"; exit 1; fi if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_xports.lo -MD -MP -MF ".deps/asn1p_xports.Tpo" -c -o asn1p_xports.lo asn1p_xports.c; \ then mv -f ".deps/asn1p_xports.Tpo" ".deps/asn1p_xports.Plo"; else rm -f ".deps/asn1p_xports.Tpo"; exit 1; fi %option yylineno entails a performance penalty ONLY on rules that can match newline characters REJECT entails a large performance penalty asn1p_y.y: warning: 2 shift/reduce conflicts [-Wconflicts-sr] sed '/^#/ s|lex.yy\.c|asn1p_l.c|' lex.yy.c >asn1p_l.c rm -f lex.yy.c if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_constr.lo -MD -MP -MF ".deps/asn1p_constr.Tpo" -c -o asn1p_constr.lo asn1p_constr.c; \ then mv -f ".deps/asn1p_constr.Tpo" ".deps/asn1p_constr.Plo"; else rm -f ".deps/asn1p_constr.Tpo"; exit 1; fi mkdir .libs gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_xports.lo -MD -MP -MF .deps/asn1p_xports.Tpo -c asn1p_xports.c -fPIC -DPIC -o .libs/asn1p_xports.o gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_value.lo -MD -MP -MF .deps/asn1p_value.Tpo -c asn1p_value.c -fPIC -DPIC -o .libs/asn1p_value.o gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_oid.lo -MD -MP -MF .deps/asn1p_oid.Tpo -c asn1p_oid.c -fPIC -DPIC -o .libs/asn1p_oid.o gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_expr.lo -MD -MP -MF .deps/asn1p_expr.Tpo -c asn1p_expr.c -fPIC -DPIC -o .libs/asn1p_expr.o gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_module.lo -MD -MP -MF .deps/asn1p_module.Tpo -c asn1p_module.c -fPIC -DPIC -o .libs/asn1p_module.o gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1parser.lo -MD -MP -MF .deps/asn1parser.Tpo -c asn1parser.c -fPIC -DPIC -o .libs/asn1parser.o gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_constr.lo -MD -MP -MF .deps/asn1p_constr.Tpo -c asn1p_constr.c -fPIC -DPIC -o .libs/asn1p_constr.o gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_xports.lo -MD -MP -MF .deps/asn1p_xports.Tpo -c asn1p_xports.c -o asn1p_xports.o >/dev/null 2>&1 gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_module.lo -MD -MP -MF .deps/asn1p_module.Tpo -c asn1p_module.c -o asn1p_module.o >/dev/null 2>&1 gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_oid.lo -MD -MP -MF .deps/asn1p_oid.Tpo -c asn1p_oid.c -o asn1p_oid.o >/dev/null 2>&1 gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_value.lo -MD -MP -MF .deps/asn1p_value.Tpo -c asn1p_value.c -o asn1p_value.o >/dev/null 2>&1 gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1parser.lo -MD -MP -MF .deps/asn1parser.Tpo -c asn1parser.c -o asn1parser.o >/dev/null 2>&1 if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_param.lo -MD -MP -MF ".deps/asn1p_param.Tpo" -c -o asn1p_param.lo asn1p_param.c; \ then mv -f ".deps/asn1p_param.Tpo" ".deps/asn1p_param.Plo"; else rm -f ".deps/asn1p_param.Tpo"; exit 1; fi gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_constr.lo -MD -MP -MF .deps/asn1p_constr.Tpo -c asn1p_constr.c -o asn1p_constr.o >/dev/null 2>&1 if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_class.lo -MD -MP -MF ".deps/asn1p_class.Tpo" -c -o asn1p_class.lo asn1p_class.c; \ then mv -f ".deps/asn1p_class.Tpo" ".deps/asn1p_class.Plo"; else rm -f ".deps/asn1p_class.Tpo"; exit 1; fi gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_expr.lo -MD -MP -MF .deps/asn1p_expr.Tpo -c asn1p_expr.c -o asn1p_expr.o >/dev/null 2>&1 if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_ref.lo -MD -MP -MF ".deps/asn1p_ref.Tpo" -c -o asn1p_ref.lo asn1p_ref.c; \ then mv -f ".deps/asn1p_ref.Tpo" ".deps/asn1p_ref.Plo"; else rm -f ".deps/asn1p_ref.Tpo"; exit 1; fi if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_l.lo -MD -MP -MF ".deps/asn1p_l.Tpo" -c -o asn1p_l.lo asn1p_l.c; \ then mv -f ".deps/asn1p_l.Tpo" ".deps/asn1p_l.Plo"; else rm -f ".deps/asn1p_l.Tpo"; exit 1; fi gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_param.lo -MD -MP -MF .deps/asn1p_param.Tpo -c asn1p_param.c -fPIC -DPIC -o .libs/asn1p_param.o gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_class.lo -MD -MP -MF .deps/asn1p_class.Tpo -c asn1p_class.c -fPIC -DPIC -o .libs/asn1p_class.o gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_ref.lo -MD -MP -MF .deps/asn1p_ref.Tpo -c asn1p_ref.c -fPIC -DPIC -o .libs/asn1p_ref.o if test -f y.tab.h; then \ to=`echo "asn1p_y_H" | sed \ -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/' \ -e 's/[^ABCDEFGHIJKLMNOPQRSTUVWXYZ]/_/g'`; \ sed -e "/^#/!b" -e "s/Y_TAB_H/$to/g" -e "s|y\.tab\.h|asn1p_y.h|" \ y.tab.h >asn1p_y.ht; \ rm -f y.tab.h; \ if cmp -s asn1p_y.ht asn1p_y.h; then \ rm -f asn1p_y.ht ;\ else \ mv asn1p_y.ht asn1p_y.h; \ fi; \ fi if test -f y.output; then \ mv y.output asn1p_y.output; \ fi sed '/^#/ s|y\.tab\.c|asn1p_y.c|' y.tab.c >asn1p_y.ct && mv asn1p_y.ct asn1p_y.c rm -f y.tab.c gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_param.lo -MD -MP -MF .deps/asn1p_param.Tpo -c asn1p_param.c -o asn1p_param.o >/dev/null 2>&1 if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_y.lo -MD -MP -MF ".deps/asn1p_y.Tpo" -c -o asn1p_y.lo asn1p_y.c; \ then mv -f ".deps/asn1p_y.Tpo" ".deps/asn1p_y.Plo"; else rm -f ".deps/asn1p_y.Tpo"; exit 1; fi gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_l.lo -MD -MP -MF .deps/asn1p_l.Tpo -c asn1p_l.c -fPIC -DPIC -o .libs/asn1p_l.o gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_class.lo -MD -MP -MF .deps/asn1p_class.Tpo -c asn1p_class.c -o asn1p_class.o >/dev/null 2>&1 gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_ref.lo -MD -MP -MF .deps/asn1p_ref.Tpo -c asn1p_ref.c -o asn1p_ref.o >/dev/null 2>&1 gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_y.lo -MD -MP -MF .deps/asn1p_y.Tpo -c asn1p_y.c -fPIC -DPIC -o .libs/asn1p_y.o asn1p_y.y: In function 'asn1p_parse': asn1p_y.y:357:13: error: 'param' undeclared (first use in this function) *(void **)param = $1; ^~~~~ asn1p_y.y:357:13: note: each undeclared identifier is reported only once for each function it appears in Makefile:299: recipe for target 'asn1p_y.lo' failed make[2]: *** [asn1p_y.lo] Error 1 make[2]: *** Waiting for unfinished jobs.... gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_l.lo -MD -MP -MF .deps/asn1p_l.Tpo -c asn1p_l.c -o asn1p_l.o >/dev/null 2>&1 make[2]: Leaving directory ' Makefile:302: recipe for target 'all-recursive' failed make[1]: *** [all-recursive] Error 1 make[1]: Leaving directory ' Makefile:212: recipe for target 'all' failed make: *** [all] Error 2 Build step 'Execute shell' marked build as failure [WARNINGS] Skipping publisher since build result is FAILURE From gerrit-no-reply at lists.osmocom.org Sat Apr 14 18:55:51 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Sat, 14 Apr 2018 18:55:51 +0000 Subject: [PATCH] osmo-msc[master]: sms_queue: fix use-after-free on 'pending' Message-ID: Review at https://gerrit.osmocom.org/7796 sms_queue: fix use-after-free on 'pending' This bug is super obvious: We cannot first call sms_pending_free(pending) and then in the next line still dereference the pending->sms_id member. Change-Id: Ibf17f270cdeb8153036eda3de274dd163bbff7e6 Closes: OS#3152 --- M src/libmsc/sms_queue.c 1 file changed, 1 insertion(+), 1 deletion(-) git pull ssh://gerrit.osmocom.org:29418/osmo-msc refs/changes/96/7796/1 diff --git a/src/libmsc/sms_queue.c b/src/libmsc/sms_queue.c index 7d59787..ed11123 100644 --- a/src/libmsc/sms_queue.c +++ b/src/libmsc/sms_queue.c @@ -480,8 +480,8 @@ /* Remember the subscriber and clear the pending entry */ network->sms_queue->pending -= 1; vsub = vlr_subscr_get(pending->vsub); - sms_pending_free(pending); db_sms_delete_sent_message_by_id(pending->sms_id); + sms_pending_free(pending); /* Attempt to send another SMS to this subscriber */ sms_send_next(vsub); vlr_subscr_put(vsub); -- To view, visit https://gerrit.osmocom.org/7796 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Ibf17f270cdeb8153036eda3de274dd163bbff7e6 Gerrit-PatchSet: 1 Gerrit-Project: osmo-msc Gerrit-Branch: master Gerrit-Owner: Harald Welte From gerrit-no-reply at lists.osmocom.org Sat Apr 14 18:58:15 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Sat, 14 Apr 2018 18:58:15 +0000 Subject: [PATCH] osmo-msc[master]: sms_queue: fix use-after-free on 'pending' In-Reply-To: References: Message-ID: sms_queue: fix use-after-free on 'pending' This bug is super obvious: We cannot first call sms_pending_free(pending) and then in the next line still dereference the pending->sms_id member. This bug was introduced in January with Change-Id: I3749855fe25d9d4e37ec96b0c2bffbc692b66a78 and apparently nobody has tested any MT-SMS with asan enabled since? Change-Id: Ibf17f270cdeb8153036eda3de274dd163bbff7e6 Closes: OS#3152 --- M src/libmsc/sms_queue.c 1 file changed, 1 insertion(+), 1 deletion(-) git pull ssh://gerrit.osmocom.org:29418/osmo-msc refs/changes/96/7796/2 diff --git a/src/libmsc/sms_queue.c b/src/libmsc/sms_queue.c index 7d59787..ed11123 100644 --- a/src/libmsc/sms_queue.c +++ b/src/libmsc/sms_queue.c @@ -480,8 +480,8 @@ /* Remember the subscriber and clear the pending entry */ network->sms_queue->pending -= 1; vsub = vlr_subscr_get(pending->vsub); - sms_pending_free(pending); db_sms_delete_sent_message_by_id(pending->sms_id); + sms_pending_free(pending); /* Attempt to send another SMS to this subscriber */ sms_send_next(vsub); vlr_subscr_put(vsub); -- To view, visit https://gerrit.osmocom.org/7796 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newpatchset Gerrit-Change-Id: Ibf17f270cdeb8153036eda3de274dd163bbff7e6 Gerrit-PatchSet: 2 Gerrit-Project: osmo-msc Gerrit-Branch: master Gerrit-Owner: Harald Welte Gerrit-Reviewer: Jenkins Builder From gerrit-no-reply at lists.osmocom.org Sat Apr 14 19:00:42 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Sat, 14 Apr 2018 19:00:42 +0000 Subject: osmo-msc[master]: smpp: Unset esme->acl on socket close In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7795 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I1f140d7f9c7d89f200ddbcd81a8df66de69fb3e4 Gerrit-PatchSet: 1 Gerrit-Project: osmo-msc Gerrit-Branch: master Gerrit-Owner: Harald Welte Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Sat Apr 14 19:01:13 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Sat, 14 Apr 2018 19:01:13 +0000 Subject: osmo-msc[master]: sms_queue: fix use-after-free on 'pending' In-Reply-To: References: Message-ID: Patch Set 2: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7796 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Ibf17f270cdeb8153036eda3de274dd163bbff7e6 Gerrit-PatchSet: 2 Gerrit-Project: osmo-msc Gerrit-Branch: master Gerrit-Owner: Harald Welte Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Sat Apr 14 19:01:16 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Sat, 14 Apr 2018 19:01:16 +0000 Subject: [MERGED] osmo-msc[master]: smpp: Unset esme->acl on socket close In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: smpp: Unset esme->acl on socket close ...................................................................... smpp: Unset esme->acl on socket close We set acl->esme during _process_bind(), but we don't clear it in case the TCP connection for the ESME is dead. This leads to a stale acl->esme pointer, which we will attempt to dereference the next time a SMS is delivered to a route pointing to this acl, where it will be a heap use-after-free. This was discovered using AddressSanitizer and MSC_Tests.ttcn Closes: OS#3168 Change-Id: I1f140d7f9c7d89f200ddbcd81a8df66de69fb3e4 --- M src/libmsc/smpp_smsc.c 1 file changed, 6 insertions(+), 0 deletions(-) Approvals: Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/src/libmsc/smpp_smsc.c b/src/libmsc/smpp_smsc.c index b889b52..7bbb0a4 100644 --- a/src/libmsc/smpp_smsc.c +++ b/src/libmsc/smpp_smsc.c @@ -249,6 +249,8 @@ } smpp_cmd_flush_pending(esme); llist_del(&esme->list); + if (esme->acl) + esme->acl->esme = NULL; talloc_free(esme); } @@ -875,6 +877,8 @@ osmo_fd_unregister(&esme->wqueue.bfd); close(esme->wqueue.bfd.fd); esme->wqueue.bfd.fd = -1; + if (esme->acl) + esme->acl->esme = NULL; smpp_esme_put(esme); return 0; @@ -891,6 +895,8 @@ osmo_fd_unregister(&esme->wqueue.bfd); close(esme->wqueue.bfd.fd); esme->wqueue.bfd.fd = -1; + if (esme->acl) + esme->acl->esme = NULL; smpp_esme_put(esme); } else if (rc < msgb_length(msg)) { LOGP(DSMPP, LOGL_ERROR, "[%s] Short write\n", esme->system_id); -- To view, visit https://gerrit.osmocom.org/7795 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: I1f140d7f9c7d89f200ddbcd81a8df66de69fb3e4 Gerrit-PatchSet: 1 Gerrit-Project: osmo-msc Gerrit-Branch: master Gerrit-Owner: Harald Welte Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder From gerrit-no-reply at lists.osmocom.org Sat Apr 14 19:01:58 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Sat, 14 Apr 2018 19:01:58 +0000 Subject: [MERGED] osmo-bsc[master]: inform A-RESET FSM about MSC CR timeouts In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: inform A-RESET FSM about MSC CR timeouts ...................................................................... inform A-RESET FSM about MSC CR timeouts The SUBSCR_CONN (GSCON) fsm starts a timer (993210, 20sec.) when the CR to the MSC is made. When the timer reaches its timeout, then the SUBSC_CONN FSM terminates. Such a timeout event is also an indicator for a bad SCCP connection so we should call a_reset_conn_fail() to inform the A-RESET FSM about the event in order to cause a BSSMAP reset when too many timeouts occurr consecutively - Call a_reset_conn_fail() when 993210 expires Change-Id: I836a552f2ad37c160081246579f842d104d0dd35 Related: OS#3102 --- M src/libbsc/bsc_subscr_conn_fsm.c 1 file changed, 9 insertions(+), 2 deletions(-) Approvals: Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/src/libbsc/bsc_subscr_conn_fsm.c b/src/libbsc/bsc_subscr_conn_fsm.c index a24cb31..a63483e 100644 --- a/src/libbsc/bsc_subscr_conn_fsm.c +++ b/src/libbsc/bsc_subscr_conn_fsm.c @@ -1058,8 +1058,15 @@ switch (fi->T) { case 993210: - /* MSC has not responded/confirmed connection witH CC */ - /* N-DISCONNET.req is sent in gscon_cleanup() above */ + /* MSC has not responded/confirmed connection with CC, this + * could indicate a bad SCCP connection. We now inform the the + * FSM that controls the BSSMAP reset about the event. Maybe + * a BSSMAP reset is necessary. */ + a_reset_conn_fail(conn->sccp.msc->a.reset); + + /* Since we could not reach the MSC, we give up and terminate + * the FSM instance now (N-DISCONNET.req is sent in + * gscon_cleanup() above) */ osmo_fsm_inst_term(fi, OSMO_FSM_TERM_REGULAR, NULL); break; case GSM0808_T10_TIMER_NR: /* Assignment Failed */ -- To view, visit https://gerrit.osmocom.org/7794 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: I836a552f2ad37c160081246579f842d104d0dd35 Gerrit-PatchSet: 2 Gerrit-Project: osmo-bsc Gerrit-Branch: master Gerrit-Owner: dexter Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder From gerrit-no-reply at lists.osmocom.org Sat Apr 14 19:35:29 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Sat, 14 Apr 2018 19:35:29 +0000 Subject: [PATCH] osmo-ttcn3-hacks[master]: msc: Fix ti_flag mistake in f_mt_sms() Message-ID: Review at https://gerrit.osmocom.org/7797 msc: Fix ti_flag mistake in f_mt_sms() The L3 transaction-id in MT-SMS is allocated in the MSC, so any messages we expect from the MSC must carry c_TIF_ORIG. Change-Id: I6ea977a7662fdfc9c504f13ac5632ac20a04f522 --- M msc/BSC_ConnectionHandler.ttcn 1 file changed, 1 insertion(+), 1 deletion(-) git pull ssh://gerrit.osmocom.org:29418/osmo-ttcn3-hacks refs/changes/97/7797/1 diff --git a/msc/BSC_ConnectionHandler.ttcn b/msc/BSC_ConnectionHandler.ttcn index 733daab..8c9b723 100644 --- a/msc/BSC_ConnectionHandler.ttcn +++ b/msc/BSC_ConnectionHandler.ttcn @@ -880,7 +880,7 @@ BSSAP.send(ts_PDU_DTAP_MO(l3_mo, spars.dlci, true)); /* expect CP-ACK for CP-DATA(RP-ACK) just sent */ - l3_mt := tr_ML3_MT_SMS(spars.tid, c_TIF_REPL, tr_CP_ACK_MT); + l3_mt := tr_ML3_MT_SMS(spars.tid, c_TIF_ORIG, tr_CP_ACK_MT); BSSAP.receive(tr_PDU_DTAP_MT(l3_mt, spars.dlci)); deactivate(d); -- To view, visit https://gerrit.osmocom.org/7797 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I6ea977a7662fdfc9c504f13ac5632ac20a04f522 Gerrit-PatchSet: 1 Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Owner: Harald Welte From gerrit-no-reply at lists.osmocom.org Sat Apr 14 19:35:29 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Sat, 14 Apr 2018 19:35:29 +0000 Subject: [PATCH] osmo-ttcn3-hacks[master]: deps: Use SMPP from osmocom fork Message-ID: Review at https://gerrit.osmocom.org/7798 deps: Use SMPP from osmocom fork the osmocom fork has support for AlertNotification, which upstream doesn't. Pull request is pending, so we have to use our osmocom fork repo meanwhile. Change-Id: I9b6b120fe74b46183517264d85651ac0d99b4035 --- M deps/Makefile 1 file changed, 2 insertions(+), 2 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-ttcn3-hacks refs/changes/98/7798/1 diff --git a/deps/Makefile b/deps/Makefile index d1545fd..bf2211b 100644 --- a/deps/Makefile +++ b/deps/Makefile @@ -9,7 +9,6 @@ titan.ProtocolModules.IP \ titan.ProtocolModules.L2TP \ titan.ProtocolModules.M3UA \ - titan.ProtocolModules.SMPP \ titan.ProtocolModules.TCP \ titan.ProtocolModules.UDP \ titan.ProtocolModules.RTP \ @@ -43,6 +42,7 @@ OSMOGITHUB_REPOS= titan.TestPorts.SCTPasp \ titan.TestPorts.MTP3asp \ titan.TestPorts.UNIX_DOMAIN_SOCKETasp \ + titan.ProtocolModules.SMPP \ titan.ProtocolEmulations.M3UA ALL_REPOS=$(ECLIPSEGIT_REPOS) $(ECLIPSEGIT2_REPOS) $(OSMOGITHUB_REPOS) @@ -72,7 +72,7 @@ titan.ProtocolModules.RTP_commit= R.5.A titan.ProtocolModules.SCTP_commit= R.2.A titan.ProtocolModules.SDP_commit= R.14.A -titan.ProtocolModules.SMPP_commit= R.2.A +titan.ProtocolModules.SMPP_commit= R.2.A-1-ge044a36 titan.ProtocolModules.SNDCP_v7.0.0_commit= R.2.A titan.ProtocolModules.SUA_commit= R.5.A titan.ProtocolModules.TCP_commit= R.3.A -- To view, visit https://gerrit.osmocom.org/7798 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I9b6b120fe74b46183517264d85651ac0d99b4035 Gerrit-PatchSet: 1 Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Owner: Harald Welte From gerrit-no-reply at lists.osmocom.org Sat Apr 14 19:35:30 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Sat, 14 Apr 2018 19:35:30 +0000 Subject: [PATCH] osmo-ttcn3-hacks[master]: msc: Add SMPP_CodecPort Message-ID: Review at https://gerrit.osmocom.org/7799 msc: Add SMPP_CodecPort Change-Id: I57640ccc5370d6820bc303003e162f27ddc9fcfd --- A library/SMPP_CodecPort.ttcn A library/SMPP_CodecPort_CtrlFunct.ttcn A library/SMPP_CodecPort_CtrlFunctDef.cc M msc/gen_links.sh M msc/regen_makefile.sh 5 files changed, 185 insertions(+), 1 deletion(-) git pull ssh://gerrit.osmocom.org:29418/osmo-ttcn3-hacks refs/changes/99/7799/1 diff --git a/library/SMPP_CodecPort.ttcn b/library/SMPP_CodecPort.ttcn new file mode 100644 index 0000000..0ac81ae --- /dev/null +++ b/library/SMPP_CodecPort.ttcn @@ -0,0 +1,65 @@ +module SMPP_CodecPort { + +/* Simple SMPP Codec Port, translating between raw TCP octetstring payload + * towards the IPL4asp port provider, and SMPP primitives + * which carry the decoded SMPP data types as payload. + * + * (C) 2018 by Harald Welte + * All rights reserved. + * + * Released under the terms of GNU General Public License, Version 2 or + * (at your option) any later version. + */ + + +import from IPL4asp_PortType all; +import from IPL4asp_Types all; +import from SMPP_Types all; + +type record SMPP_RecvFrom { + ConnectionId connId, + SMPP_PDU msg +} + +type record SMPP_Send { + ConnectionId connId, + SMPP_PDU msg +} + +template (value) SMPP_Send ts_SMPP_Send(ConnectionId conn_id, template (value) SMPP_PDU msg) := { + connId := conn_id, + msg := msg +} + +template SMPP_RecvFrom tr_SMPP_Recv(template ConnectionId conn_id, template SMPP_PDU msg) := { + connId := conn_id, + msg := msg +} + +private function IPL4_to_SMPP_RecvFrom(in ASP_RecvFrom pin, out SMPP_RecvFrom pout) { + var integer rc; + pout.connId := pin.connId; + rc := f_decode_SMPP(pin.msg, pout.msg); +} with { extension "prototype(fast)" } + +private function SMPP_to_IPL4_Send(in SMPP_Send pin, out ASP_Send pout) { + pout.connId := pin.connId; + pout.proto := { tcp := {} }; + f_encode_SMPP(pin.msg, pout.msg); +} with { extension "prototype(fast)" } + +type port SMPP_CODEC_PT message { + out SMPP_Send; + in SMPP_RecvFrom, + ASP_ConnId_ReadyToRelease, + ASP_Event; +} with { extension "user IPL4asp_PT + out(SMPP_Send -> ASP_Send: function(SMPP_to_IPL4_Send)) + in(ASP_RecvFrom -> SMPP_RecvFrom: function(IPL4_to_SMPP_RecvFrom); + ASP_ConnId_ReadyToRelease -> ASP_ConnId_ReadyToRelease: simple; + ASP_Event -> ASP_Event: simple)" +} + + + +} diff --git a/library/SMPP_CodecPort_CtrlFunct.ttcn b/library/SMPP_CodecPort_CtrlFunct.ttcn new file mode 100644 index 0000000..2f6d616 --- /dev/null +++ b/library/SMPP_CodecPort_CtrlFunct.ttcn @@ -0,0 +1,52 @@ +module SMPP_CodecPort_CtrlFunct { + + import from SMPP_CodecPort all; + import from IPL4asp_Types all; + + external function f_IPL4_listen( + inout SMPP_CODEC_PT portRef, + in HostName locName, + in PortNumber locPort, + in ProtoTuple proto, + in OptionList options := {} + ) return Result; + + external function f_IPL4_connect( + inout SMPP_CODEC_PT portRef, + in HostName remName, + in PortNumber remPort, + in HostName locName, + in PortNumber locPort, + in ConnectionId connId, + in ProtoTuple proto, + in OptionList options := {} + ) return Result; + + external function f_IPL4_close( + inout SMPP_CODEC_PT portRef, + in ConnectionId id, + in ProtoTuple proto := { unspecified := {} } + ) return Result; + + external function f_IPL4_setUserData( + inout SMPP_CODEC_PT portRef, + in ConnectionId id, + in UserData userData + ) return Result; + + external function f_IPL4_getUserData( + inout SMPP_CODEC_PT portRef, + in ConnectionId id, + out UserData userData + ) return Result; + + external function f_IPL4_setGetMsgLen( + inout SMPP_CODEC_PT portRef, + in ConnectionId id, + inout f_IPL4_getMsgLen f, + in ro_integer msgLenArgs + ); + + +} + diff --git a/library/SMPP_CodecPort_CtrlFunctDef.cc b/library/SMPP_CodecPort_CtrlFunctDef.cc new file mode 100644 index 0000000..31603e4 --- /dev/null +++ b/library/SMPP_CodecPort_CtrlFunctDef.cc @@ -0,0 +1,66 @@ +#include "IPL4asp_PortType.hh" +#include "SMPP_CodecPort.hh" +#include "IPL4asp_PT.hh" + +namespace SMPP__CodecPort__CtrlFunct { + + IPL4asp__Types::Result f__IPL4__listen( + SMPP__CodecPort::SMPP__CODEC__PT& portRef, + const IPL4asp__Types::HostName& locName, + const IPL4asp__Types::PortNumber& locPort, + const IPL4asp__Types::ProtoTuple& proto, + const IPL4asp__Types::OptionList& options) + { + return f__IPL4__PROVIDER__listen(portRef, locName, locPort, proto, options); + } + + IPL4asp__Types::Result f__IPL4__connect( + SMPP__CodecPort::SMPP__CODEC__PT& portRef, + const IPL4asp__Types::HostName& remName, + const IPL4asp__Types::PortNumber& remPort, + const IPL4asp__Types::HostName& locName, + const IPL4asp__Types::PortNumber& locPort, + const IPL4asp__Types::ConnectionId& connId, + const IPL4asp__Types::ProtoTuple& proto, + const IPL4asp__Types::OptionList& options) + { + return f__IPL4__PROVIDER__connect(portRef, remName, remPort, + locName, locPort, connId, proto, options); + } + + IPL4asp__Types::Result f__IPL4__close( + SMPP__CodecPort::SMPP__CODEC__PT& portRef, + const IPL4asp__Types::ConnectionId& connId, + const IPL4asp__Types::ProtoTuple& proto) + { + return f__IPL4__PROVIDER__close(portRef, connId, proto); + } + + IPL4asp__Types::Result f__IPL4__setUserData( + SMPP__CodecPort::SMPP__CODEC__PT& portRef, + const IPL4asp__Types::ConnectionId& connId, + const IPL4asp__Types::UserData& userData) + { + return f__IPL4__PROVIDER__setUserData(portRef, connId, userData); + } + + IPL4asp__Types::Result f__IPL4__getUserData( + SMPP__CodecPort::SMPP__CODEC__PT& portRef, + const IPL4asp__Types::ConnectionId& connId, + IPL4asp__Types::UserData& userData) + { + return f__IPL4__PROVIDER__getUserData(portRef, connId, userData); + } + + void f__IPL4__setGetMsgLen( + SMPP__CodecPort::SMPP__CODEC__PT& portRef, + const IPL4asp__Types::ConnectionId& connId, + Socket__API__Definitions::f__getMsgLen& f, + const Socket__API__Definitions::ro__integer& msgLenArgs) + { + return f__IPL4__PROVIDER__setGetMsgLen(portRef, connId, f, msgLenArgs); + } + + +} + diff --git a/msc/gen_links.sh b/msc/gen_links.sh index 6dea043..08d8de8 100755 --- a/msc/gen_links.sh +++ b/msc/gen_links.sh @@ -78,6 +78,7 @@ FILES+="BSSMAP_Emulation.ttcn BSSAP_CodecPort.ttcn BSSMAP_Templates.ttcn BSSAP_Adapter.ttcn MGCP_Types.ttcn MGCP_Templates.ttcn MGCP_CodecPort_CtrlFunct.ttcn MGCP_Emulation.ttcn " FILES+="RTP_CodecPort.ttcn RTP_CodecPort_CtrlFunctDef.cc " FILES+="MGCP_CodecPort.ttcn MGCP_CodecPort_CtrlFunctDef.cc " +FILES+="SMPP_CodecPort.ttcn SMPP_CodecPort_CtrlFunct.ttcn SMPP_CodecPort_CtrlFunctDef.cc " gen_links $DIR $FILES ignore_pp_results diff --git a/msc/regen_makefile.sh b/msc/regen_makefile.sh index 29b3f05..de8f7ab 100755 --- a/msc/regen_makefile.sh +++ b/msc/regen_makefile.sh @@ -1,6 +1,6 @@ #!/bin/sh -FILES="*.ttcn *.ttcnpp SCCP_EncDec.cc SCTPasp_PT.cc TCCConversion.cc TCCInterface.cc UD_PT.cc MNCC_EncDec.cc IPL4asp_PT.cc IPL4asp_discovery.cc SDP_EncDec.cc RTP_EncDec.cc IPA_CodecPort_CtrlFunctDef.cc RTP_CodecPort_CtrlFunctDef.cc MGCP_CodecPort_CtrlFunctDef.cc TELNETasp_PT.cc Native_FunctionDefs.cc SMPP_EncDec.cc *.c" +FILES="*.ttcn *.ttcnpp SCCP_EncDec.cc SCTPasp_PT.cc TCCConversion.cc TCCInterface.cc UD_PT.cc MNCC_EncDec.cc IPL4asp_PT.cc IPL4asp_discovery.cc SDP_EncDec.cc RTP_EncDec.cc IPA_CodecPort_CtrlFunctDef.cc RTP_CodecPort_CtrlFunctDef.cc MGCP_CodecPort_CtrlFunctDef.cc TELNETasp_PT.cc Native_FunctionDefs.cc SMPP_EncDec.cc SMPP_CodecPort_CtrlFunctDef.cc *.c" export CPPFLAGS_TTCN3="-DIPA_EMULATION_MGCP -DIPA_EMULATION_GSUP -DUSE_MTP3_DISTRIBUTOR" -- To view, visit https://gerrit.osmocom.org/7799 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I57640ccc5370d6820bc303003e162f27ddc9fcfd Gerrit-PatchSet: 1 Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Owner: Harald Welte From gerrit-no-reply at lists.osmocom.org Sat Apr 14 19:35:31 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Sat, 14 Apr 2018 19:35:31 +0000 Subject: [PATCH] osmo-ttcn3-hacks[master]: msc: Add SMPP_Emulation + SMPP_Templates Message-ID: Review at https://gerrit.osmocom.org/7800 msc: Add SMPP_Emulation + SMPP_Templates Change-Id: I80efe16f603227694c6242d556ae77590271e4c6 --- A library/SMPP_Emulation.ttcn A library/SMPP_Templates.ttcn M msc/gen_links.sh 3 files changed, 539 insertions(+), 1 deletion(-) git pull ssh://gerrit.osmocom.org:29418/osmo-ttcn3-hacks refs/changes/00/7800/1 diff --git a/library/SMPP_Emulation.ttcn b/library/SMPP_Emulation.ttcn new file mode 100644 index 0000000..83e7801 --- /dev/null +++ b/library/SMPP_Emulation.ttcn @@ -0,0 +1,413 @@ +module SMPP_Emulation { + +/* SMPP Emulation layer, sitting on top of SMPP_CodecPort. + * + * (C) 2018 by Harald Welte + * All rights reserved. + * + * Released under the terms of GNU General Public License, Version 2 or + * (at your option) any later version. + */ + + +import from Osmocom_Types all; +import from General_Types all; +import from SMPP_Types all; +import from SMPP_Templates all; +import from SMPP_CodecPort all; +import from SMPP_CodecPort_CtrlFunct all; +import from IPL4asp_Types all; +import from IPL4asp_PortType all; +import from Socket_API_Definitions all; + +/* general "base class" component definition, of which specific implementations + * derive themselves by menas of the "extends" feature */ +type component SMPP_ConnHdlr { + /* port towards SPPP_Emulation_CT */ + port SMPP_Conn_PT SMPP; + port SMPPEM_PROC_PT SMPP_PROC; +} + + +type component SMPP_Emulation_CT { + /* down-facing port to SMPP Codec port */ + port SMPP_CODEC_PT SMPP_PORT; + var IPL4asp_Types.ConnectionId g_smpp_conn_id := -1; + + var integer g_seq := 1; + + /* up-facing port to Clients */ + port SMPP_Conn_PT SMPP_CLIENT; + port SMPPEM_PROC_PT SMPP_PROC; + + var TransactionData TransactionTable[32]; + var ExpectData ExpectTable[32]; +} + +type port SMPP_Conn_PT message { + inout SMPP_PDU; +} with { extension "internal" }; + +type record TransactionData { + uint32_t tid optional, + SMPP_ConnHdlr vc_conn +} + +type record ExpectData { + SMPP_TON dst_ton optional, + SMPP_NPI dst_npi optional, + charstring dst_addr, + SMPP_ConnHdlr vc_conn +} + +private function f_trans_id_known(uint32_t tid) +runs on SMPP_Emulation_CT return boolean { + for (var integer i := 0; i < sizeof(TransactionTable); i := i+1) { + if (TransactionTable[i].tid == tid) { + return true; + } + } + return false; +} + +private function f_comp_known(SMPP_ConnHdlr client) +runs on SMPP_Emulation_CT return boolean { + for (var integer i := 0; i < sizeof(TransactionTable); i := i+1) { + if (TransactionTable[i].vc_conn == client) { + return true; + } + } + return false; +} + +private function f_comp_by_trans_id(uint32_t tid) +runs on SMPP_Emulation_CT return SMPP_ConnHdlr { + for (var integer i := 0; i < sizeof(TransactionTable); i := i+1) { + if (TransactionTable[i].tid == tid) { + return TransactionTable[i].vc_conn; + } + } + setverdict(fail, "No componten for SMPP TID ", tid); + self.stop; +} + + +private function f_trans_table_init() +runs on SMPP_Emulation_CT { + for (var integer i := 0; i < sizeof(TransactionTable); i := i+1) { + TransactionTable[i].vc_conn := null; + TransactionTable[i].tid := omit; + } +} + +private function f_trans_table_add(SMPP_ConnHdlr vc_conn, uint32_t trans_id) +runs on SMPP_Emulation_CT { + for (var integer i := 0; i < sizeof(TransactionTable); i := i+1) { + if (TransactionTable[i].vc_conn == null) { + TransactionTable[i].vc_conn := vc_conn; + TransactionTable[i].tid := trans_id; + return; + } + } + setverdict(fail, "SMPP Trans table full!"); + self.stop; +} + +private function f_trans_table_del(uint32_t trans_id) +runs on SMPP_Emulation_CT { + for (var integer i := 0; i < sizeof(TransactionTable); i := i+1) { + if (TransactionTable[i].tid == trans_id) { + TransactionTable[i].vc_conn := null; + TransactionTable[i].tid := omit; + return; + } + } + setverdict(fail, "SMPP Trans table attempt to delete non-existant ", trans_id); + self.stop; +} + + + +function f_connect(charstring remote_host, IPL4asp_Types.PortNumber remote_port, + charstring local_host, IPL4asp_Types.PortNumber local_port) +runs on SMPP_Emulation_CT { + var IPL4asp_Types.Result res; + res := SMPP_CodecPort_CtrlFunct.f_IPL4_connect(SMPP_PORT, remote_host, remote_port, + local_host, local_port, 0, { tcp :={} }); + g_smpp_conn_id := res.connId; +} + +/* Function to use to bind to a local port as IPA server, accepting remote clients */ +function f_bind(charstring local_host, IPL4asp_Types.PortNumber local_port) +runs on SMPP_Emulation_CT { + var IPL4asp_Types.Result res; + res := SMPP_CodecPort_CtrlFunct.f_IPL4_listen(SMPP_PORT, local_host, local_port, { tcp:={} }); + g_smpp_conn_id := res.connId; +} + + +function main_server(EsmePars pars, charstring local_host, integer local_port) +runs on SMPP_Emulation_CT { + f_bind(local_host, local_port); + f_mainloop(pars); +} + +function main_client(EsmePars pars, charstring remote_host, integer remote_port, + charstring local_host, integer local_port) +runs on SMPP_Emulation_CT { + f_connect(remote_host, remote_port, local_host, local_port); + f_mainloop(pars); +} + +type enumerated EsmeMode { + MODE_TRANSMITTER, + MODE_RECEIVER, + MODE_TRANSCEIVER +} +type record EsmePars { + EsmeMode mode, + SMPP_Bind bind, + boolean esme_role +} + +private function f_tx_smpp(template (value) SMPP_PDU pdu) runs on SMPP_Emulation_CT { + pdu.header.seq_num := g_seq; + SMPP_PORT.send(ts_SMPP_Send(g_smpp_conn_id, pdu)); + g_seq := g_seq+1; +} + +private function f_rx_smpp(template SMPP_PDU pdu) runs on SMPP_Emulation_CT { + timer T_wait := 3.0; + T_wait.start; + alt { + [] SMPP_PORT.receive(tr_SMPP_Recv(g_smpp_conn_id, pdu)) { } + [] T_wait.timeout { + setverdict(fail, "Timeout waiting for ", pdu); + self.stop; + } + } +} + +/* default altstep which we use throughout */ +private altstep as_smpp() runs on SMPP_Emulation_CT { + var SMPP_ConnHdlr vc_conn; + var SMPP_RecvFrom smpp_rf; + /* Answer to ENQUIRE LINK */ + [] SMPP_PORT.receive(tr_SMPP_Recv(g_smpp_conn_id, + tr_SMPP(c_SMPP_command_id_enquire_link, ESME_ROK))) { + f_tx_smpp(ts_SMPP_ENQ_LINK_resp); + } + [] SMPP_PORT.receive(tr_SMPP_Recv(g_smpp_conn_id, + tr_SMPP(c_SMPP_command_id_alert_notification, ESME_ROK))) -> value smpp_rf { + /* TODO: dispatch to ConnHdlr based on some kind of expect mechanism? */ + vc_conn := f_exp_lookup(smpp_rf.msg.body.alert_notif.source_addr_ton, + smpp_rf.msg.body.alert_notif.source_addr_npi, + smpp_rf.msg.body.alert_notif.source_addr); + SMPP_CLIENT.send(smpp_rf.msg) to vc_conn; + } + [] SMPP_PORT.receive { + setverdict(fail, "Unexpected SMPP from peer"); + self.stop; + } +} + +function f_mainloop(EsmePars pars) +runs on SMPP_Emulation_CT { + + /* Set function for dissecting the binary stream into packets */ + var f_IPL4_getMsgLen vl_f := refers(f_IPL4_fixedMsgLen); + /* Offset: 0, size of length: 4, delta: 0, multiplier: 1, big-endian */ + SMPP_CodecPort_CtrlFunct.f_IPL4_setGetMsgLen(SMPP_PORT, g_smpp_conn_id, vl_f, {0, 4, 0, 1, 0}); + + f_trans_table_init(); + f_expect_table_init(); + + /* activate default altstep */ + var default d := activate(as_smpp()); + + if (pars.esme_role) { + /* BIND to SMSC */ + select (pars.mode) { + case (MODE_TRANSMITTER) { + f_tx_smpp(ts_SMPP_BIND_TX(pars.bind)); + /* FIXME: do we have to check for SEQ? */ + f_rx_smpp(tr_SMPP(c_SMPP_command_id_bind_transmitter_resp, ESME_ROK, g_seq)); + } + case (MODE_RECEIVER) { + f_tx_smpp(ts_SMPP_BIND_RX(pars.bind)); + /* FIXME: do we have to check for SEQ? */ + f_rx_smpp(tr_SMPP(c_SMPP_command_id_bind_receiver_resp, ESME_ROK, g_seq)); + } + case (MODE_TRANSCEIVER) { + f_tx_smpp(ts_SMPP_BIND_TRX(pars.bind)); + /* FIXME: do we have to check for SEQ? */ + f_rx_smpp(tr_SMPP(c_SMPP_command_id_bind_transceiver_resp, ESME_ROK)); + } + } + } else { + var SMPP_Bind_resp bresp := { + system_id := pars.bind.system_id, + opt_pars := {} + } + /* Expect bind from ESME */ + select (pars.mode) { + case (MODE_TRANSMITTER) { + f_rx_smpp(tr_SMPP_BIND_TX(pars.bind)); + /* FIXME: do we have to check for SEQ? */ + f_tx_smpp(ts_SMPP_BIND_TX_resp(ESME_ROK, bresp)); + } + case (MODE_RECEIVER) { + f_rx_smpp(tr_SMPP_BIND_RX(pars.bind)); + /* FIXME: do we have to check for SEQ? */ + f_tx_smpp(ts_SMPP_BIND_RX_resp(ESME_ROK, bresp)); + } + case (MODE_TRANSCEIVER) { + f_rx_smpp(tr_SMPP_BIND_TRX(pars.bind)); + /* FIXME: do we have to check for SEQ? */ + f_tx_smpp(ts_SMPP_BIND_TRX_resp(ESME_ROK, bresp)); + } + } + } + + while (true) { + var SMPP_ConnHdlr vc_conn; + var SMPP_RecvFrom smpp_rf; + var SMPP_PDU smpp; + var charstring dest_addr; + alt { + /* SMSC -> CLIENT: response, map by seq_nr */ + [pars.esme_role] SMPP_PORT.receive(tr_SMPP_Recv(g_smpp_conn_id, + tr_SMPP_esme_resp)) -> value smpp_rf { + var uint32_t trans_id := smpp_rf.msg.header.seq_num; + if (f_trans_id_known(trans_id)) { + vc_conn := f_comp_by_trans_id(trans_id); + SMPP_CLIENT.send(smpp_rf.msg) to vc_conn; + f_trans_table_del(trans_id); + } else { + log("Received SMPP response for unknown trans_id ", smpp_rf); + /* FIXME */ + } + } + /* SMSC -> CLIENT: DELIVER-SM.req */ + [pars.esme_role] SMPP_PORT.receive(tr_SMPP_Recv(g_smpp_conn_id, + tr_SMPP(c_SMPP_command_id_deliver_sm, ESME_ROK))) -> value smpp_rf { + vc_conn := f_exp_lookup(smpp_rf.msg.body.deliver_sm.dest_addr_ton, + smpp_rf.msg.body.deliver_sm.dest_addr_npi, + smpp_rf.msg.body.deliver_sm.destination_addr); + SMPP_CLIENT.send(smpp_rf.msg) to vc_conn; + } + + /* record seq_nr for commands from CLIENT -> SMSC */ + [pars.esme_role] SMPP_CLIENT.receive(tr_SMPP_esme_req) -> value smpp sender vc_conn { + /* register current seq_nr/trans_id */ + f_trans_table_add(vc_conn, g_seq); + f_tx_smpp(smpp); + } + /* pass responses 1:1 through from CLIENT -> SMSC */ + [pars.esme_role] SMPP_CLIENT.receive(tr_SMPP_smsc_resp) -> value smpp sender vc_conn { + SMPP_PORT.send(ts_SMPP_Send(g_smpp_conn_id, smpp)); + } + + [] SMPP_PROC.getcall(SMPPEM_register:{?,?}) -> param(dest_addr, vc_conn) { + f_create_expect(dest_addr, vc_conn); + SMPP_PROC.reply(SMPPEM_register:{dest_addr, vc_conn}); + } + } + } +} + +/* Requests from ESME -> SMSC */ +template OCT4 SMPP_esme_req := ( + c_SMPP_command_id_submit_sm, + c_SMPP_command_id_replace_sm, + c_SMPP_command_id_cancel_sm, + c_SMPP_command_id_submit_multi +); +template SMPP_PDU tr_SMPP_esme_req := tr_SMPP(SMPP_esme_req, ?); + +/* Responses from ESME -> SMSC */ +template OCT4 SMPP_esme_resp := ( + c_SMPP_command_id_submit_sm_resp, + c_SMPP_command_id_replace_sm_resp, + c_SMPP_command_id_cancel_sm_resp, + c_SMPP_command_id_submit_multi_resp +); +template SMPP_PDU tr_SMPP_esme_resp := tr_SMPP(SMPP_esme_resp, ?); + +/* Requests from SMSC -> ESME */ +template OCT4 SMPP_smsc_req := ( + c_SMPP_command_id_deliver_sm +); +template SMPP_PDU tr_SMPP_smsc_req := tr_SMPP(SMPP_smsc_req, ?); + +/* Responses from SMSC -> ESME */ +template OCT4 SMPP_smsc_resp := ( + c_SMPP_command_id_deliver_sm_resp +); +template SMPP_PDU tr_SMPP_smsc_resp := tr_SMPP(SMPP_smsc_resp, ?); + + + +signature SMPPEM_register(charstring dst_addr, SMPP_ConnHdlr hdlr); + +type port SMPPEM_PROC_PT procedure { + inout SMPPEM_register; +} with { extension "internal" }; + +private function f_create_expect(charstring dest_number, SMPP_ConnHdlr hdlr) +runs on SMPP_Emulation_CT { + for (var integer i := 0; i < sizeof(ExpectTable); i := i+1) { + if (ExpectTable[i].vc_conn == null) { + ExpectTable[i] := { + dst_ton := omit, + dst_npi := omit, + dst_addr := dest_number, + vc_conn := hdlr + } + return; + } + } + setverdict(fail, "No space left in SmppExpectTable"); + self.stop; +} + +private function f_exp_lookup(SMPP_TON ton, SMPP_NPI npi, charstring dst) +runs on SMPP_Emulation_CT return SMPP_ConnHdlr { + for (var integer i := 0; i < sizeof(ExpectTable); i := i+1) { + if (ExpectTable[i].vc_conn != null and ExpectTable[i].dst_addr == dst) { + if (ispresent(ExpectTable[i].dst_ton) and ExpectTable[i].dst_ton != ton) { + continue; + } + if (ispresent(ExpectTable[i].dst_npi) and ExpectTable[i].dst_npi != npi) { + continue; + } + return ExpectTable[i].vc_conn; + } + } + return null; +} +private function f_expect_table_init() +runs on SMPP_Emulation_CT { + for (var integer i := 0; i < sizeof(ExpectTable); i := i+1) { + ExpectTable[i] := { + dst_ton := omit, + dst_npi := omit, + dst_addr := "", + vc_conn := null + }; + } +} + + + + + +/* client/conn_hdlr side function to use procedure port to create expect in emulation */ +function f_create_smpp_expect(charstring dest_number) runs on SMPP_ConnHdlr { + SMPP_PROC.call(SMPPEM_register:{dest_number, self}) { + [] SMPP_PROC.getreply(SMPPEM_register:{?,?}) {}; + } +} + + +} diff --git a/library/SMPP_Templates.ttcn b/library/SMPP_Templates.ttcn new file mode 100644 index 0000000..9a56cf2 --- /dev/null +++ b/library/SMPP_Templates.ttcn @@ -0,0 +1,125 @@ +module SMPP_Templates { + +import from General_Types all; +import from SMPP_Types all; + +template (value) SMPP_header ts_SMPP_hdr(OCT4 command_id, SMPP_error_code status, + integer seq := 0) := { + command_len := 0, + command_id := command_id, + command_status := status, + seq_num := seq +} +template SMPP_header tr_SMPP_hdr(template OCT4 command_id, template SMPP_error_code status, + template integer seq := ?) := { + command_len := ?, + command_id := command_id, + command_status := status, + seq_num := seq +} + +template (value) SMPP_PDU ts_SMPP(OCT4 command_id, SMPP_error_code status, + template (value) SMPP_operation_body body) := { + header := ts_SMPP_hdr(command_id, status), + body := body +} +template SMPP_PDU tr_SMPP(template OCT4 command_id, template SMPP_error_code status, + template integer seq := ?, + template SMPP_operation_body body := ?) := { + header := tr_SMPP_hdr(command_id, status, seq), + body := body +} + + + +template (value) SMPP_PDU ts_SMPP_BIND_TX(template (value) SMPP_Bind bind) := { + header := ts_SMPP_hdr(c_SMPP_command_id_bind_transmitter, ESME_ROK), + body := { + bind_transmitter := bind + } +} +template SMPP_PDU tr_SMPP_BIND_TX(template (value) SMPP_Bind bind, template integer seq := ?) := { + header := tr_SMPP_hdr(c_SMPP_command_id_bind_transmitter, ESME_ROK, seq), + body := { + bind_transmitter := bind + } +} + +template (value) SMPP_PDU ts_SMPP_BIND_TX_resp(SMPP_error_code status, + template (value) SMPP_Bind_resp bind) := { + header := ts_SMPP_hdr(c_SMPP_command_id_bind_transmitter_resp, status), + body := { + bind_transmitter_resp := bind + } +} + +template (value) SMPP_PDU ts_SMPP_BIND_RX(template (value) SMPP_Bind bind) := { + header := ts_SMPP_hdr(c_SMPP_command_id_bind_receiver, ESME_ROK), + body := { + bind_receiver := bind + } +} +template SMPP_PDU tr_SMPP_BIND_RX(template (value) SMPP_Bind bind, template integer seq := ?) := { + header := tr_SMPP_hdr(c_SMPP_command_id_bind_receiver, ESME_ROK, seq), + body := { + bind_receiver := bind + } +} + +template (value) SMPP_PDU ts_SMPP_BIND_RX_resp(SMPP_error_code status, + template (value) SMPP_Bind_resp bind) := { + header := ts_SMPP_hdr(c_SMPP_command_id_bind_receiver_resp, status), + body := { + bind_receiver_resp := bind + } +} + +template (value) SMPP_PDU ts_SMPP_BIND_TRX(template (value) SMPP_Bind bind) := { + header := ts_SMPP_hdr(c_SMPP_command_id_bind_transceiver, ESME_ROK), + body := { + bind_transceiver := bind + } +} +template SMPP_PDU tr_SMPP_BIND_TRX(template (value) SMPP_Bind bind, template integer seq := ?) := { + header := tr_SMPP_hdr(c_SMPP_command_id_bind_transceiver, ESME_ROK, seq), + body := { + bind_transceiver := bind + } +} + +template (value) SMPP_PDU ts_SMPP_BIND_TRX_resp(SMPP_error_code status, + template (value) SMPP_Bind_resp bind) := { + header := ts_SMPP_hdr(c_SMPP_command_id_bind_transceiver_resp, status), + body := { + bind_transceiver_resp := bind + } +} + +template (value) SMPP_PDU ts_SMPP_ENQ_LINK := { + header := ts_SMPP_hdr(c_SMPP_command_id_enquire_link, ESME_ROK), + body := { + enquire_link := {} + } +} + +template (value) SMPP_PDU ts_SMPP_ENQ_LINK_resp := { + header := ts_SMPP_hdr(c_SMPP_command_id_enquire_link_resp, ESME_ROK), + body := { + enquire_link_resp := {} + } +} + +template (value) SMPP_PDU ts_SMPP_DELIVER_SM_resp(SMPP_error_code status, integer seq) := { + header := ts_SMPP_hdr(c_SMPP_command_id_deliver_sm_resp, status, seq), + body := { + deliver_sm_resp := { + message_id := "", /* unused */ + opt_pars := omit + } + } +} + + + + +} diff --git a/msc/gen_links.sh b/msc/gen_links.sh index 08d8de8..a5444db 100755 --- a/msc/gen_links.sh +++ b/msc/gen_links.sh @@ -78,7 +78,7 @@ FILES+="BSSMAP_Emulation.ttcn BSSAP_CodecPort.ttcn BSSMAP_Templates.ttcn BSSAP_Adapter.ttcn MGCP_Types.ttcn MGCP_Templates.ttcn MGCP_CodecPort_CtrlFunct.ttcn MGCP_Emulation.ttcn " FILES+="RTP_CodecPort.ttcn RTP_CodecPort_CtrlFunctDef.cc " FILES+="MGCP_CodecPort.ttcn MGCP_CodecPort_CtrlFunctDef.cc " -FILES+="SMPP_CodecPort.ttcn SMPP_CodecPort_CtrlFunct.ttcn SMPP_CodecPort_CtrlFunctDef.cc " +FILES+="SMPP_CodecPort.ttcn SMPP_CodecPort_CtrlFunct.ttcn SMPP_CodecPort_CtrlFunctDef.cc SMPP_Emulation.ttcn SMPP_Templates.ttcn " gen_links $DIR $FILES ignore_pp_results -- To view, visit https://gerrit.osmocom.org/7800 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I80efe16f603227694c6242d556ae77590271e4c6 Gerrit-PatchSet: 1 Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Owner: Harald Welte From gerrit-no-reply at lists.osmocom.org Sat Apr 14 19:35:31 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Sat, 14 Apr 2018 19:35:31 +0000 Subject: [PATCH] osmo-ttcn3-hacks[master]: msc: Add SMPP tests for MO + MT SMS Message-ID: Review at https://gerrit.osmocom.org/7801 msc: Add SMPP tests for MO + MT SMS Change-Id: I5349559c7c3096533fb07fcf53f0a44ff7f6567f --- M library/Osmocom_VTY_Functions.ttcn M library/SMPP_Templates.ttcn M msc/BSC_ConnectionHandler.ttcn M msc/MSC_Tests.ttcn 4 files changed, 269 insertions(+), 4 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-ttcn3-hacks refs/changes/01/7801/1 diff --git a/library/Osmocom_VTY_Functions.ttcn b/library/Osmocom_VTY_Functions.ttcn index 9258fa5..2b74694 100644 --- a/library/Osmocom_VTY_Functions.ttcn +++ b/library/Osmocom_VTY_Functions.ttcn @@ -108,11 +108,14 @@ f_vty_transceive(pt, "timeslot " & int2str(ts)); } -function f_vty_config(TELNETasp_PT pt, charstring config_node, charstring cmd) +type record of charstring rof_charstring; +function f_vty_config2(TELNETasp_PT pt, rof_charstring config_nodes, charstring cmd) { /* enter config mode; enter node */ f_vty_enter_config(pt); - f_vty_transceive(pt, config_node); + for (var integer i := 0; i < sizeof(config_nodes); i := i+1) { + f_vty_transceive(pt, config_nodes[i]); + } /* execute command */ f_vty_transceive(pt, cmd); /* leave config mode */ @@ -120,4 +123,10 @@ } +function f_vty_config(TELNETasp_PT pt, charstring config_node, charstring cmd) +{ + f_vty_config2(pt, {config_node}, cmd); +} + + } diff --git a/library/SMPP_Templates.ttcn b/library/SMPP_Templates.ttcn index 9a56cf2..2ff675d 100644 --- a/library/SMPP_Templates.ttcn +++ b/library/SMPP_Templates.ttcn @@ -119,6 +119,21 @@ } } +template (value) SMPP_PDU ts_SMPP_SUBMIT_SM(SMPP_SM sm) := { + header := ts_SMPP_hdr(c_SMPP_command_id_submit_sm, ESME_ROK), + body := { + submit_sm := sm + } +} + +/* Section 5.2.12 esm_class */ +template SMPP_BIT1 tr_ESM_CLASS_DEFAULT := '??????00'B; +template SMPP_BIT1 tr_ESM_CLASS_DATAGRAM := '??????01'B; +template SMPP_BIT1 tr_ESM_CLASS_TRANSACTION := '??????10'B; +template SMPP_BIT1 tr_ESM_CLASS_STORE_FORWARD := '??????11'B; +template SMPP_BIT1 tr_ESM_CLASS_UDHI := '?1??????'B; +template SMPP_BIT1 tr_ESM_CLASS_REPLYP_PATH := '1???????'B; + diff --git a/msc/BSC_ConnectionHandler.ttcn b/msc/BSC_ConnectionHandler.ttcn index 8c9b723..b7a4f50 100644 --- a/msc/BSC_ConnectionHandler.ttcn +++ b/msc/BSC_ConnectionHandler.ttcn @@ -29,8 +29,10 @@ import from L3_Templates all; import from L3_Common all; +import from SMPP_Emulation all; + /* this component represents a single subscriber connection */ -type component BSC_ConnHdlr extends BSSAP_ConnHdlr, MNCC_ConnHdlr, GSUP_ConnHdlr, MGCP_ConnHdlr { +type component BSC_ConnHdlr extends BSSAP_ConnHdlr, MNCC_ConnHdlr, GSUP_ConnHdlr, MGCP_ConnHdlr, SMPP_ConnHdlr { var BSC_ConnHdlrPars g_pars; timer g_Tguard := 60.0; } @@ -118,6 +120,8 @@ /* Start guard timer and activate it as default */ g_Tguard.start(t_guard); activate(as_Tguard()); + /* Route all SMPP messages for our MSISDN to us */ + f_create_smpp_expect(hex2str(pars.msisdn)); } @@ -817,6 +821,9 @@ var default d := activate(as_other_sms()); + /* just in case this is routed to SMPP.. */ + f_create_smpp_expect(hex2str(spars.tp.da.tP_DA_NoPad.tP_DAValue)); + tp_mo := ts_SMS_SUBMIT(spars.tp.msg_ref, spars.tp.da, spars.tp.pid, spars.tp.dcs, spars.tp.udl, spars.tp.ud); rp_mo := ts_RP_DATA_MO(spars.rp.msg_ref, spars.rp.orig, spars.rp.dest, tp_mo); diff --git a/msc/MSC_Tests.ttcn b/msc/MSC_Tests.ttcn index bb28c74..1ede8e6 100644 --- a/msc/MSC_Tests.ttcn +++ b/msc/MSC_Tests.ttcn @@ -47,6 +47,10 @@ import from L3_Templates all; import from L3_Common all; +import from SMPP_Types all; +import from SMPP_Templates all; +import from SMPP_Emulation all; + const integer NUM_BSC := 2; type record of BSSAP_Configuration BSSAP_Configurations; @@ -60,6 +64,7 @@ var MGCP_Emulation_CT vc_MGCP; var GSUP_Emulation_CT vc_GSUP; var IPA_Emulation_CT vc_GSUP_IPA; + var SMPP_Emulation_CT vc_SMPP; /* only to get events from IPA underneath GSUP */ port IPA_CTRL_PT GSUP_IPA_EVENT; @@ -90,6 +95,10 @@ integer mp_mgw_port := 2427; charstring mp_msc_mncc := "/tmp/mncc"; + + integer mp_msc_smpp_port := 2775; + charstring mp_smpp_system_id := "msc_tester"; + charstring mp_smpp_password := "osmocom1"; BSSAP_Configurations mp_bssap_cfg := { { @@ -123,6 +132,28 @@ self.stop; } } + +function f_init_smpp(charstring id) runs on MTC_CT { + id := id & "-SMPP"; + var EsmePars pars := { + mode := MODE_TRANSCEIVER, + bind := { + system_id := mp_smpp_system_id, + password := mp_smpp_password, + system_type := "MSC_Tests", + interface_version := hex2int('34'H), + addr_ton := unknown, + addr_npi := unknown, + address_range := "" + }, + esme_role := true + } + + vc_SMPP := SMPP_Emulation_CT.create(id); + map(vc_SMPP:SMPP_PORT, system:SMPP_PORT); + vc_SMPP.start(SMPP_Emulation.main_client(pars, mp_msc_ip, mp_msc_smpp_port, "", -1)); +} + function f_init_mncc(charstring id) runs on MTC_CT { id := id & "-MNCC"; @@ -206,6 +237,7 @@ f_init_mncc("MSC_Test"); f_init_mgcp("MSC_Test"); f_init_gsup("MSC_Test"); + f_init_smpp("MSC_Test"); map(self:MSCVTY, system:MSCVTY); f_vty_set_prompts(MSCVTY); @@ -437,6 +469,9 @@ /* GSUP part */ connect(vc_conn:GSUP, vc_GSUP:GSUP_CLIENT); connect(vc_conn:GSUP_PROC, vc_GSUP:GSUP_PROC); + /* SMPP part */ + connect(vc_conn:SMPP, vc_SMPP:SMPP_CLIENT); + connect(vc_conn:SMPP_PROC, vc_SMPP:SMPP_PROC); /* We cannot use vc_conn.start(f_init_handler(fn, id, pars)); as we cannot have * a stand-alone 'derefers()' call, see https://www.eclipse.org/forums/index.php/t/1091364/ */ @@ -1812,6 +1847,10 @@ setverdict(pass); } +/*********************************************************************** + * SMS Testing + ***********************************************************************/ + /* LU followed by MO SMS */ private function f_tc_lu_and_mo_sms(charstring id, BSC_ConnHdlrPars pars) runs on BSC_ConnHdlr { var SmsParameters spars := valueof(t_SmsPars); @@ -1881,9 +1920,202 @@ vc_conn.done; } +/* mobile originated SMS from MS/BTS/BSC side to SMPP */ +private function f_tc_smpp_mo_sms(charstring id, BSC_ConnHdlrPars pars) runs on BSC_ConnHdlr { + var SmsParameters spars := valueof(t_SmsPars); + f_init_handler(pars); -/* TODO: + /* Perform location update so IMSI is known + registered in MSC/VLR */ + f_perform_lu(); + f_establish_fully(EST_TYPE_MO_SMS); + + f_mo_sms(spars); + + var SMPP_PDU smpp; + var template SMPP_PDU tr_smpp := tr_SMPP(c_SMPP_command_id_deliver_sm, ESME_ROK); + tr_smpp.body.deliver_sm := { + service_type := "CMT", + source_addr_ton := network_specific, + source_addr_npi := isdn, + source_addr := hex2str(pars.msisdn), + dest_addr_ton := f_sm_ton_from_gsm(spars.tp.da.tP_DA_NoPad.tP_TypeOfNumber), + dest_addr_npi := f_sm_npi_from_gsm(spars.tp.da.tP_DA_NoPad.tP_NumberingPlanID), + destination_addr := hex2str(spars.tp.da.tP_DA_NoPad.tP_DAValue), + esm_class := '00000001'B, + protocol_id := 0, + priority_flag := 0, + schedule_delivery_time := "", + replace_if_present := 0, + data_coding := '00000001'B, + sm_default_msg_id := 0, + sm_length := ?, + short_message := spars.tp.ud, + opt_pars := { + { + tag := user_message_reference, + len := 2, + opt_value := { + int2_val := oct2int(spars.tp.msg_ref) + } + } + } + }; + alt { + [] SMPP.receive(tr_smpp) -> value smpp { + SMPP.send(ts_SMPP_DELIVER_SM_resp(ESME_ROK, smpp.header.seq_num)); + } + [] SMPP.receive(tr_SMPP(c_SMPP_command_id_alert_notification, ESME_ROK)) { repeat; } + } + + f_expect_clear(); +} +testcase TC_smpp_mo_sms() runs on MTC_CT { + var BSC_ConnHdlr vc_conn; + f_init(); + f_vty_config2(MSCVTY, { "smpp", "esme msc_tester"}, "default-route"); + vc_conn := f_start_handler(refers(f_tc_smpp_mo_sms), 44); + vc_conn.done; + f_vty_config2(MSCVTY, { "smpp", "esme msc_tester"}, "no default-route"); +} + +/* convert GSM L3 TON to SMPP_TON enum */ +function f_sm_ton_from_gsm(BIT3 ton) return SMPP_TON { + select (ton) { + case ('000'B) { return unknown; } + case ('001'B) { return international; } + case ('010'B) { return national; } + case ('011'B) { return network_specific; } + case ('100'B) { return subscriber_number; } + case ('101'B) { return alphanumeric; } + case ('110'B) { return abbreviated; } + } + setverdict(fail, "Unknown TON ", ton); + self.stop; +} +/* convert GSM L3 NPI to SMPP_NPI enum */ +function f_sm_npi_from_gsm(BIT4 npi) return SMPP_NPI { + select (npi) { + case ('0000'B) { return unknown; } + case ('0001'B) { return isdn; } + case ('0011'B) { return data; } + case ('0100'B) { return telex; } + case ('0110'B) { return land_mobile; } + case ('1000'B) { return national; } + case ('1001'B) { return private_; } + case ('1010'B) { return ermes; } + } + setverdict(fail, "Unknown NPI ", npi); + self.stop; +} + +/* build a SMPP_SM from SmsParameters */ +function f_mt_sm_from_spars(SmsParameters spars) +runs on BSC_ConnHdlr return SMPP_SM { + var SMPP_SM sm := { + service_type := "CMT", + source_addr_ton := f_sm_ton_from_gsm(spars.tp.da.tP_DA_NoPad.tP_TypeOfNumber), + source_addr_npi := f_sm_npi_from_gsm(spars.tp.da.tP_DA_NoPad.tP_NumberingPlanID), + source_addr := hex2str(spars.tp.da.tP_DA_NoPad.tP_DAValue), + dest_addr_ton := international, + dest_addr_npi := isdn, + destination_addr := hex2str(g_pars.msisdn), + esm_class := '00000001'B, + protocol_id := 0, + priority_flag := 0, + schedule_delivery_time := "", + validity_period := "", + registered_delivery := '00000000'B, + replace_if_present := 0, + data_coding := '00000001'B, + sm_default_msg_id := 0, + sm_length := spars.tp.udl, + short_message := spars.tp.ud, + opt_pars := {} + }; + return sm; +} + +/* helper function to encode SMS from 'spars', send it via SMPP to MSC; receive it on MS side */ +private function f_smpp_mt_sms(SmsParameters spars, boolean trans_mode) runs on BSC_ConnHdlr { + var SMPP_SM sm := f_mt_sm_from_spars(spars); + if (trans_mode) { + sm.esm_class := '00000010'B; + } + + /* actually cause MSC to send a SMS via SUBMIT-SM from SMPP side */ + SMPP.send(ts_SMPP_SUBMIT_SM(sm)); + if (not match(sm.esm_class, tr_ESM_CLASS_TRANSACTION)) { + /* if we're not in SMPP transaction mode, we expect the SMPP-level ACK + * before we expect the SMS delivery on the BSC/radio side */ + SMPP.receive(tr_SMPP(c_SMPP_command_id_submit_sm_resp, ESME_ROK)); + } + + /* MSC->BSC: expect PAGING from MSC */ + BSSAP.receive(tr_BSSMAP_Paging(g_pars.imsi)); + /* Establish DTAP / BSSAP / SCCP connection */ + f_establish_fully(EST_TYPE_PAG_RESP); + SMPP.receive(tr_SMPP(c_SMPP_command_id_alert_notification, ESME_ROK)); + + f_mt_sms(spars); + + if (match(sm.esm_class, tr_ESM_CLASS_TRANSACTION)) { + SMPP.receive(tr_SMPP(c_SMPP_command_id_submit_sm_resp, ESME_ROK)); + } + f_expect_clear(); +} + +/* mobile terminated SMS, from SMPP to BSC/BTS/MS */ +private function f_tc_smpp_mt_sms(charstring id, BSC_ConnHdlrPars pars) runs on BSC_ConnHdlr { + f_init_handler(pars); + + /* Perform location update so IMSI is known + registered in MSC/VLR */ + f_perform_lu(); + SMPP.receive(tr_SMPP(c_SMPP_command_id_alert_notification, ESME_ROK)); + + /* register an 'expect' for given IMSI (+TMSI) */ + var OCT4 tmsi; + if (isvalue(g_pars.tmsi)) { + tmsi := g_pars.tmsi; + } else { + tmsi := 'FFFFFFFF'O; + } + f_bssmap_register_imsi(g_pars.imsi, tmsi); + + var SmsParameters spars := valueof(t_SmsPars); + /* TODO: test with more intelligent user data; test different coding schemes */ + spars.tp.ud := '00'O; + spars.tp.udl := 1; + + /* first test the non-transaction store+forward mode */ + f_smpp_mt_sms(spars, false); + + /* then test the transaction mode */ + f_smpp_mt_sms(spars, true); +} +testcase TC_smpp_mt_sms() runs on MTC_CT { + var BSC_ConnHdlr vc_conn; + f_init(); + vc_conn := f_start_handler(refers(f_tc_smpp_mt_sms), 45); + vc_conn.done; +} + +/* TODO (SMS): + * different user data lengths + * SMPP transaction mode with unsuccessful delivery + * queued MT-SMS with no paging response + later delivery + * different data coding schemes + * multi-part SMS + * user-data headers + * TP-PID for SMS to SIM + * behavior if SMS memory is full + RP-SMMA + * delivery reports + * SMPP osmocom extensions + * more-messages-to-send + * SMS during ongoing call (SACCH/SAPI3) + */ + +/* TODO (General): * continue to send repeated MO signalling messages to keep channel open: does MSC tmeout? * malformed messages (missing IE, invalid message type): properly rejected? * MT call while LU or is ongoing: Do we use existing lchan or page while lchan active? @@ -1946,6 +2178,8 @@ execute( TC_lu_and_mo_sms() ); execute( TC_lu_and_mt_sms() ); + execute( TC_smpp_mo_sms() ); + execute( TC_smpp_mt_sms() ); /* Run this last: at the time of writing this test crashes the MSC */ execute( TC_lu_imsi_auth_tmsi_encr_3_1_log_msc_debug() ); -- To view, visit https://gerrit.osmocom.org/7801 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I5349559c7c3096533fb07fcf53f0a44ff7f6567f Gerrit-PatchSet: 1 Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Owner: Harald Welte From gerrit-no-reply at lists.osmocom.org Sat Apr 14 19:36:52 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Sat, 14 Apr 2018 19:36:52 +0000 Subject: osmo-msc[master]: sms_queue: fix use-after-free on 'pending' In-Reply-To: References: Message-ID: Patch Set 2: Verified+1 -- To view, visit https://gerrit.osmocom.org/7796 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Ibf17f270cdeb8153036eda3de274dd163bbff7e6 Gerrit-PatchSet: 2 Gerrit-Project: osmo-msc Gerrit-Branch: master Gerrit-Owner: Harald Welte Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Stefan Sperling Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Sat Apr 14 19:36:54 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Sat, 14 Apr 2018 19:36:54 +0000 Subject: [MERGED] osmo-msc[master]: sms_queue: fix use-after-free on 'pending' In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: sms_queue: fix use-after-free on 'pending' ...................................................................... sms_queue: fix use-after-free on 'pending' This bug is super obvious: We cannot first call sms_pending_free(pending) and then in the next line still dereference the pending->sms_id member. This bug was introduced in January with Change-Id: I3749855fe25d9d4e37ec96b0c2bffbc692b66a78 and apparently nobody has tested any MT-SMS with asan enabled since? Change-Id: Ibf17f270cdeb8153036eda3de274dd163bbff7e6 Closes: OS#3152 --- M src/libmsc/sms_queue.c 1 file changed, 1 insertion(+), 1 deletion(-) Approvals: Harald Welte: Looks good to me, approved; Verified diff --git a/src/libmsc/sms_queue.c b/src/libmsc/sms_queue.c index 7d59787..ed11123 100644 --- a/src/libmsc/sms_queue.c +++ b/src/libmsc/sms_queue.c @@ -480,8 +480,8 @@ /* Remember the subscriber and clear the pending entry */ network->sms_queue->pending -= 1; vsub = vlr_subscr_get(pending->vsub); - sms_pending_free(pending); db_sms_delete_sent_message_by_id(pending->sms_id); + sms_pending_free(pending); /* Attempt to send another SMS to this subscriber */ sms_send_next(vsub); vlr_subscr_put(vsub); -- To view, visit https://gerrit.osmocom.org/7796 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: Ibf17f270cdeb8153036eda3de274dd163bbff7e6 Gerrit-PatchSet: 2 Gerrit-Project: osmo-msc Gerrit-Branch: master Gerrit-Owner: Harald Welte Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Stefan Sperling From gerrit-no-reply at lists.osmocom.org Sat Apr 14 19:37:02 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Sat, 14 Apr 2018 19:37:02 +0000 Subject: osmo-ttcn3-hacks[master]: msc: Fix ti_flag mistake in f_mt_sms() In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7797 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I6ea977a7662fdfc9c504f13ac5632ac20a04f522 Gerrit-PatchSet: 1 Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Owner: Harald Welte Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Sat Apr 14 19:37:11 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Sat, 14 Apr 2018 19:37:11 +0000 Subject: osmo-ttcn3-hacks[master]: deps: Use SMPP from osmocom fork In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7798 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I9b6b120fe74b46183517264d85651ac0d99b4035 Gerrit-PatchSet: 1 Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Owner: Harald Welte Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Sat Apr 14 19:37:16 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Sat, 14 Apr 2018 19:37:16 +0000 Subject: osmo-ttcn3-hacks[master]: msc: Add SMPP_CodecPort In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7799 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I57640ccc5370d6820bc303003e162f27ddc9fcfd Gerrit-PatchSet: 1 Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Owner: Harald Welte Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Sat Apr 14 19:37:22 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Sat, 14 Apr 2018 19:37:22 +0000 Subject: osmo-ttcn3-hacks[master]: msc: Add SMPP_Emulation + SMPP_Templates In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7800 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I80efe16f603227694c6242d556ae77590271e4c6 Gerrit-PatchSet: 1 Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Owner: Harald Welte Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Sat Apr 14 19:37:25 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Sat, 14 Apr 2018 19:37:25 +0000 Subject: osmo-ttcn3-hacks[master]: msc: Add SMPP tests for MO + MT SMS In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7801 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I5349559c7c3096533fb07fcf53f0a44ff7f6567f Gerrit-PatchSet: 1 Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Owner: Harald Welte Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Sat Apr 14 19:37:35 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Sat, 14 Apr 2018 19:37:35 +0000 Subject: [MERGED] osmo-ttcn3-hacks[master]: msc: Fix ti_flag mistake in f_mt_sms() In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: msc: Fix ti_flag mistake in f_mt_sms() ...................................................................... msc: Fix ti_flag mistake in f_mt_sms() The L3 transaction-id in MT-SMS is allocated in the MSC, so any messages we expect from the MSC must carry c_TIF_ORIG. Change-Id: I6ea977a7662fdfc9c504f13ac5632ac20a04f522 --- M msc/BSC_ConnectionHandler.ttcn 1 file changed, 1 insertion(+), 1 deletion(-) Approvals: Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/msc/BSC_ConnectionHandler.ttcn b/msc/BSC_ConnectionHandler.ttcn index 733daab..8c9b723 100644 --- a/msc/BSC_ConnectionHandler.ttcn +++ b/msc/BSC_ConnectionHandler.ttcn @@ -880,7 +880,7 @@ BSSAP.send(ts_PDU_DTAP_MO(l3_mo, spars.dlci, true)); /* expect CP-ACK for CP-DATA(RP-ACK) just sent */ - l3_mt := tr_ML3_MT_SMS(spars.tid, c_TIF_REPL, tr_CP_ACK_MT); + l3_mt := tr_ML3_MT_SMS(spars.tid, c_TIF_ORIG, tr_CP_ACK_MT); BSSAP.receive(tr_PDU_DTAP_MT(l3_mt, spars.dlci)); deactivate(d); -- To view, visit https://gerrit.osmocom.org/7797 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: I6ea977a7662fdfc9c504f13ac5632ac20a04f522 Gerrit-PatchSet: 1 Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Owner: Harald Welte Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder From gerrit-no-reply at lists.osmocom.org Sat Apr 14 19:58:30 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Sat, 14 Apr 2018 19:58:30 +0000 Subject: [PATCH] osmo-ttcn3-hacks[master]: msc: Fix console log levels Message-ID: Review at https://gerrit.osmocom.org/7802 msc: Fix console log levels In Change-Id I52a4c8118828c1605cf672889982f987568ad17d we introduced a name change for the SCCP/M3UA components, which meant that the log level configuration did no longer apply as intended. Change-Id: Iebdaf3446a81ea5f8310110f5cca2bdb3e552e3f --- M msc/MSC_Tests.default 1 file changed, 4 insertions(+), 2 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-ttcn3-hacks refs/changes/02/7802/1 diff --git a/msc/MSC_Tests.default b/msc/MSC_Tests.default index 93f0f80..cd984fd 100644 --- a/msc/MSC_Tests.default +++ b/msc/MSC_Tests.default @@ -2,8 +2,10 @@ FileMask := LOG_ALL | TTCN_MATCHING; BSSAP.FileMask := LOG_NOTHING; -"MSC_Test-M3UA".FileMask := ERROR | WARNING; -"MSC_Test-SCCP".FileMask := ERROR | WARNING; +"MSC_Test_0-M3UA".FileMask := ERROR | WARNING; +"MSC_Test_0-SCCP".FileMask := ERROR | WARNING; +"MSC_Test_1-M3UA".FileMask := ERROR | WARNING; +"MSC_Test_1-SCCP".FileMask := ERROR | WARNING; "MSC_Test-GSUP-IPA".FileMask := ERROR | WARNING; "MSC_Test-GSUP".FileMask := ERROR | WARNING; "IPA-CTRL-IPA".FileMask := ERROR | WARNING; -- To view, visit https://gerrit.osmocom.org/7802 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Iebdaf3446a81ea5f8310110f5cca2bdb3e552e3f Gerrit-PatchSet: 1 Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Owner: Harald Welte From gerrit-no-reply at lists.osmocom.org Sat Apr 14 20:11:21 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Sat, 14 Apr 2018 20:11:21 +0000 Subject: osmo-ttcn3-hacks[master]: msc: Fix console log levels In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7802 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Iebdaf3446a81ea5f8310110f5cca2bdb3e552e3f Gerrit-PatchSet: 1 Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Owner: Harald Welte Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Sat Apr 14 20:11:30 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Sat, 14 Apr 2018 20:11:30 +0000 Subject: [MERGED] osmo-ttcn3-hacks[master]: msc: Fix console log levels In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: msc: Fix console log levels ...................................................................... msc: Fix console log levels In Change-Id I52a4c8118828c1605cf672889982f987568ad17d we introduced a name change for the SCCP/M3UA components, which meant that the log level configuration did no longer apply as intended. Change-Id: Iebdaf3446a81ea5f8310110f5cca2bdb3e552e3f --- M msc/MSC_Tests.default 1 file changed, 4 insertions(+), 2 deletions(-) Approvals: Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/msc/MSC_Tests.default b/msc/MSC_Tests.default index 93f0f80..cd984fd 100644 --- a/msc/MSC_Tests.default +++ b/msc/MSC_Tests.default @@ -2,8 +2,10 @@ FileMask := LOG_ALL | TTCN_MATCHING; BSSAP.FileMask := LOG_NOTHING; -"MSC_Test-M3UA".FileMask := ERROR | WARNING; -"MSC_Test-SCCP".FileMask := ERROR | WARNING; +"MSC_Test_0-M3UA".FileMask := ERROR | WARNING; +"MSC_Test_0-SCCP".FileMask := ERROR | WARNING; +"MSC_Test_1-M3UA".FileMask := ERROR | WARNING; +"MSC_Test_1-SCCP".FileMask := ERROR | WARNING; "MSC_Test-GSUP-IPA".FileMask := ERROR | WARNING; "MSC_Test-GSUP".FileMask := ERROR | WARNING; "IPA-CTRL-IPA".FileMask := ERROR | WARNING; -- To view, visit https://gerrit.osmocom.org/7802 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: Iebdaf3446a81ea5f8310110f5cca2bdb3e552e3f Gerrit-PatchSet: 1 Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Owner: Harald Welte Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: dexter From gerrit-no-reply at lists.osmocom.org Sat Apr 14 20:12:31 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Sat, 14 Apr 2018 20:12:31 +0000 Subject: [MERGED] osmo-ttcn3-hacks[master]: msc: Add SMPP tests for MO + MT SMS In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: msc: Add SMPP tests for MO + MT SMS ...................................................................... msc: Add SMPP tests for MO + MT SMS Change-Id: I5349559c7c3096533fb07fcf53f0a44ff7f6567f --- M library/Osmocom_VTY_Functions.ttcn M library/SMPP_Templates.ttcn M msc/BSC_ConnectionHandler.ttcn M msc/MSC_Tests.ttcn 4 files changed, 269 insertions(+), 4 deletions(-) Approvals: Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/library/Osmocom_VTY_Functions.ttcn b/library/Osmocom_VTY_Functions.ttcn index 9258fa5..2b74694 100644 --- a/library/Osmocom_VTY_Functions.ttcn +++ b/library/Osmocom_VTY_Functions.ttcn @@ -108,11 +108,14 @@ f_vty_transceive(pt, "timeslot " & int2str(ts)); } -function f_vty_config(TELNETasp_PT pt, charstring config_node, charstring cmd) +type record of charstring rof_charstring; +function f_vty_config2(TELNETasp_PT pt, rof_charstring config_nodes, charstring cmd) { /* enter config mode; enter node */ f_vty_enter_config(pt); - f_vty_transceive(pt, config_node); + for (var integer i := 0; i < sizeof(config_nodes); i := i+1) { + f_vty_transceive(pt, config_nodes[i]); + } /* execute command */ f_vty_transceive(pt, cmd); /* leave config mode */ @@ -120,4 +123,10 @@ } +function f_vty_config(TELNETasp_PT pt, charstring config_node, charstring cmd) +{ + f_vty_config2(pt, {config_node}, cmd); +} + + } diff --git a/library/SMPP_Templates.ttcn b/library/SMPP_Templates.ttcn index 9a56cf2..2ff675d 100644 --- a/library/SMPP_Templates.ttcn +++ b/library/SMPP_Templates.ttcn @@ -119,6 +119,21 @@ } } +template (value) SMPP_PDU ts_SMPP_SUBMIT_SM(SMPP_SM sm) := { + header := ts_SMPP_hdr(c_SMPP_command_id_submit_sm, ESME_ROK), + body := { + submit_sm := sm + } +} + +/* Section 5.2.12 esm_class */ +template SMPP_BIT1 tr_ESM_CLASS_DEFAULT := '??????00'B; +template SMPP_BIT1 tr_ESM_CLASS_DATAGRAM := '??????01'B; +template SMPP_BIT1 tr_ESM_CLASS_TRANSACTION := '??????10'B; +template SMPP_BIT1 tr_ESM_CLASS_STORE_FORWARD := '??????11'B; +template SMPP_BIT1 tr_ESM_CLASS_UDHI := '?1??????'B; +template SMPP_BIT1 tr_ESM_CLASS_REPLYP_PATH := '1???????'B; + diff --git a/msc/BSC_ConnectionHandler.ttcn b/msc/BSC_ConnectionHandler.ttcn index 8c9b723..b7a4f50 100644 --- a/msc/BSC_ConnectionHandler.ttcn +++ b/msc/BSC_ConnectionHandler.ttcn @@ -29,8 +29,10 @@ import from L3_Templates all; import from L3_Common all; +import from SMPP_Emulation all; + /* this component represents a single subscriber connection */ -type component BSC_ConnHdlr extends BSSAP_ConnHdlr, MNCC_ConnHdlr, GSUP_ConnHdlr, MGCP_ConnHdlr { +type component BSC_ConnHdlr extends BSSAP_ConnHdlr, MNCC_ConnHdlr, GSUP_ConnHdlr, MGCP_ConnHdlr, SMPP_ConnHdlr { var BSC_ConnHdlrPars g_pars; timer g_Tguard := 60.0; } @@ -118,6 +120,8 @@ /* Start guard timer and activate it as default */ g_Tguard.start(t_guard); activate(as_Tguard()); + /* Route all SMPP messages for our MSISDN to us */ + f_create_smpp_expect(hex2str(pars.msisdn)); } @@ -817,6 +821,9 @@ var default d := activate(as_other_sms()); + /* just in case this is routed to SMPP.. */ + f_create_smpp_expect(hex2str(spars.tp.da.tP_DA_NoPad.tP_DAValue)); + tp_mo := ts_SMS_SUBMIT(spars.tp.msg_ref, spars.tp.da, spars.tp.pid, spars.tp.dcs, spars.tp.udl, spars.tp.ud); rp_mo := ts_RP_DATA_MO(spars.rp.msg_ref, spars.rp.orig, spars.rp.dest, tp_mo); diff --git a/msc/MSC_Tests.ttcn b/msc/MSC_Tests.ttcn index bb28c74..1ede8e6 100644 --- a/msc/MSC_Tests.ttcn +++ b/msc/MSC_Tests.ttcn @@ -47,6 +47,10 @@ import from L3_Templates all; import from L3_Common all; +import from SMPP_Types all; +import from SMPP_Templates all; +import from SMPP_Emulation all; + const integer NUM_BSC := 2; type record of BSSAP_Configuration BSSAP_Configurations; @@ -60,6 +64,7 @@ var MGCP_Emulation_CT vc_MGCP; var GSUP_Emulation_CT vc_GSUP; var IPA_Emulation_CT vc_GSUP_IPA; + var SMPP_Emulation_CT vc_SMPP; /* only to get events from IPA underneath GSUP */ port IPA_CTRL_PT GSUP_IPA_EVENT; @@ -90,6 +95,10 @@ integer mp_mgw_port := 2427; charstring mp_msc_mncc := "/tmp/mncc"; + + integer mp_msc_smpp_port := 2775; + charstring mp_smpp_system_id := "msc_tester"; + charstring mp_smpp_password := "osmocom1"; BSSAP_Configurations mp_bssap_cfg := { { @@ -123,6 +132,28 @@ self.stop; } } + +function f_init_smpp(charstring id) runs on MTC_CT { + id := id & "-SMPP"; + var EsmePars pars := { + mode := MODE_TRANSCEIVER, + bind := { + system_id := mp_smpp_system_id, + password := mp_smpp_password, + system_type := "MSC_Tests", + interface_version := hex2int('34'H), + addr_ton := unknown, + addr_npi := unknown, + address_range := "" + }, + esme_role := true + } + + vc_SMPP := SMPP_Emulation_CT.create(id); + map(vc_SMPP:SMPP_PORT, system:SMPP_PORT); + vc_SMPP.start(SMPP_Emulation.main_client(pars, mp_msc_ip, mp_msc_smpp_port, "", -1)); +} + function f_init_mncc(charstring id) runs on MTC_CT { id := id & "-MNCC"; @@ -206,6 +237,7 @@ f_init_mncc("MSC_Test"); f_init_mgcp("MSC_Test"); f_init_gsup("MSC_Test"); + f_init_smpp("MSC_Test"); map(self:MSCVTY, system:MSCVTY); f_vty_set_prompts(MSCVTY); @@ -437,6 +469,9 @@ /* GSUP part */ connect(vc_conn:GSUP, vc_GSUP:GSUP_CLIENT); connect(vc_conn:GSUP_PROC, vc_GSUP:GSUP_PROC); + /* SMPP part */ + connect(vc_conn:SMPP, vc_SMPP:SMPP_CLIENT); + connect(vc_conn:SMPP_PROC, vc_SMPP:SMPP_PROC); /* We cannot use vc_conn.start(f_init_handler(fn, id, pars)); as we cannot have * a stand-alone 'derefers()' call, see https://www.eclipse.org/forums/index.php/t/1091364/ */ @@ -1812,6 +1847,10 @@ setverdict(pass); } +/*********************************************************************** + * SMS Testing + ***********************************************************************/ + /* LU followed by MO SMS */ private function f_tc_lu_and_mo_sms(charstring id, BSC_ConnHdlrPars pars) runs on BSC_ConnHdlr { var SmsParameters spars := valueof(t_SmsPars); @@ -1881,9 +1920,202 @@ vc_conn.done; } +/* mobile originated SMS from MS/BTS/BSC side to SMPP */ +private function f_tc_smpp_mo_sms(charstring id, BSC_ConnHdlrPars pars) runs on BSC_ConnHdlr { + var SmsParameters spars := valueof(t_SmsPars); + f_init_handler(pars); -/* TODO: + /* Perform location update so IMSI is known + registered in MSC/VLR */ + f_perform_lu(); + f_establish_fully(EST_TYPE_MO_SMS); + + f_mo_sms(spars); + + var SMPP_PDU smpp; + var template SMPP_PDU tr_smpp := tr_SMPP(c_SMPP_command_id_deliver_sm, ESME_ROK); + tr_smpp.body.deliver_sm := { + service_type := "CMT", + source_addr_ton := network_specific, + source_addr_npi := isdn, + source_addr := hex2str(pars.msisdn), + dest_addr_ton := f_sm_ton_from_gsm(spars.tp.da.tP_DA_NoPad.tP_TypeOfNumber), + dest_addr_npi := f_sm_npi_from_gsm(spars.tp.da.tP_DA_NoPad.tP_NumberingPlanID), + destination_addr := hex2str(spars.tp.da.tP_DA_NoPad.tP_DAValue), + esm_class := '00000001'B, + protocol_id := 0, + priority_flag := 0, + schedule_delivery_time := "", + replace_if_present := 0, + data_coding := '00000001'B, + sm_default_msg_id := 0, + sm_length := ?, + short_message := spars.tp.ud, + opt_pars := { + { + tag := user_message_reference, + len := 2, + opt_value := { + int2_val := oct2int(spars.tp.msg_ref) + } + } + } + }; + alt { + [] SMPP.receive(tr_smpp) -> value smpp { + SMPP.send(ts_SMPP_DELIVER_SM_resp(ESME_ROK, smpp.header.seq_num)); + } + [] SMPP.receive(tr_SMPP(c_SMPP_command_id_alert_notification, ESME_ROK)) { repeat; } + } + + f_expect_clear(); +} +testcase TC_smpp_mo_sms() runs on MTC_CT { + var BSC_ConnHdlr vc_conn; + f_init(); + f_vty_config2(MSCVTY, { "smpp", "esme msc_tester"}, "default-route"); + vc_conn := f_start_handler(refers(f_tc_smpp_mo_sms), 44); + vc_conn.done; + f_vty_config2(MSCVTY, { "smpp", "esme msc_tester"}, "no default-route"); +} + +/* convert GSM L3 TON to SMPP_TON enum */ +function f_sm_ton_from_gsm(BIT3 ton) return SMPP_TON { + select (ton) { + case ('000'B) { return unknown; } + case ('001'B) { return international; } + case ('010'B) { return national; } + case ('011'B) { return network_specific; } + case ('100'B) { return subscriber_number; } + case ('101'B) { return alphanumeric; } + case ('110'B) { return abbreviated; } + } + setverdict(fail, "Unknown TON ", ton); + self.stop; +} +/* convert GSM L3 NPI to SMPP_NPI enum */ +function f_sm_npi_from_gsm(BIT4 npi) return SMPP_NPI { + select (npi) { + case ('0000'B) { return unknown; } + case ('0001'B) { return isdn; } + case ('0011'B) { return data; } + case ('0100'B) { return telex; } + case ('0110'B) { return land_mobile; } + case ('1000'B) { return national; } + case ('1001'B) { return private_; } + case ('1010'B) { return ermes; } + } + setverdict(fail, "Unknown NPI ", npi); + self.stop; +} + +/* build a SMPP_SM from SmsParameters */ +function f_mt_sm_from_spars(SmsParameters spars) +runs on BSC_ConnHdlr return SMPP_SM { + var SMPP_SM sm := { + service_type := "CMT", + source_addr_ton := f_sm_ton_from_gsm(spars.tp.da.tP_DA_NoPad.tP_TypeOfNumber), + source_addr_npi := f_sm_npi_from_gsm(spars.tp.da.tP_DA_NoPad.tP_NumberingPlanID), + source_addr := hex2str(spars.tp.da.tP_DA_NoPad.tP_DAValue), + dest_addr_ton := international, + dest_addr_npi := isdn, + destination_addr := hex2str(g_pars.msisdn), + esm_class := '00000001'B, + protocol_id := 0, + priority_flag := 0, + schedule_delivery_time := "", + validity_period := "", + registered_delivery := '00000000'B, + replace_if_present := 0, + data_coding := '00000001'B, + sm_default_msg_id := 0, + sm_length := spars.tp.udl, + short_message := spars.tp.ud, + opt_pars := {} + }; + return sm; +} + +/* helper function to encode SMS from 'spars', send it via SMPP to MSC; receive it on MS side */ +private function f_smpp_mt_sms(SmsParameters spars, boolean trans_mode) runs on BSC_ConnHdlr { + var SMPP_SM sm := f_mt_sm_from_spars(spars); + if (trans_mode) { + sm.esm_class := '00000010'B; + } + + /* actually cause MSC to send a SMS via SUBMIT-SM from SMPP side */ + SMPP.send(ts_SMPP_SUBMIT_SM(sm)); + if (not match(sm.esm_class, tr_ESM_CLASS_TRANSACTION)) { + /* if we're not in SMPP transaction mode, we expect the SMPP-level ACK + * before we expect the SMS delivery on the BSC/radio side */ + SMPP.receive(tr_SMPP(c_SMPP_command_id_submit_sm_resp, ESME_ROK)); + } + + /* MSC->BSC: expect PAGING from MSC */ + BSSAP.receive(tr_BSSMAP_Paging(g_pars.imsi)); + /* Establish DTAP / BSSAP / SCCP connection */ + f_establish_fully(EST_TYPE_PAG_RESP); + SMPP.receive(tr_SMPP(c_SMPP_command_id_alert_notification, ESME_ROK)); + + f_mt_sms(spars); + + if (match(sm.esm_class, tr_ESM_CLASS_TRANSACTION)) { + SMPP.receive(tr_SMPP(c_SMPP_command_id_submit_sm_resp, ESME_ROK)); + } + f_expect_clear(); +} + +/* mobile terminated SMS, from SMPP to BSC/BTS/MS */ +private function f_tc_smpp_mt_sms(charstring id, BSC_ConnHdlrPars pars) runs on BSC_ConnHdlr { + f_init_handler(pars); + + /* Perform location update so IMSI is known + registered in MSC/VLR */ + f_perform_lu(); + SMPP.receive(tr_SMPP(c_SMPP_command_id_alert_notification, ESME_ROK)); + + /* register an 'expect' for given IMSI (+TMSI) */ + var OCT4 tmsi; + if (isvalue(g_pars.tmsi)) { + tmsi := g_pars.tmsi; + } else { + tmsi := 'FFFFFFFF'O; + } + f_bssmap_register_imsi(g_pars.imsi, tmsi); + + var SmsParameters spars := valueof(t_SmsPars); + /* TODO: test with more intelligent user data; test different coding schemes */ + spars.tp.ud := '00'O; + spars.tp.udl := 1; + + /* first test the non-transaction store+forward mode */ + f_smpp_mt_sms(spars, false); + + /* then test the transaction mode */ + f_smpp_mt_sms(spars, true); +} +testcase TC_smpp_mt_sms() runs on MTC_CT { + var BSC_ConnHdlr vc_conn; + f_init(); + vc_conn := f_start_handler(refers(f_tc_smpp_mt_sms), 45); + vc_conn.done; +} + +/* TODO (SMS): + * different user data lengths + * SMPP transaction mode with unsuccessful delivery + * queued MT-SMS with no paging response + later delivery + * different data coding schemes + * multi-part SMS + * user-data headers + * TP-PID for SMS to SIM + * behavior if SMS memory is full + RP-SMMA + * delivery reports + * SMPP osmocom extensions + * more-messages-to-send + * SMS during ongoing call (SACCH/SAPI3) + */ + +/* TODO (General): * continue to send repeated MO signalling messages to keep channel open: does MSC tmeout? * malformed messages (missing IE, invalid message type): properly rejected? * MT call while LU or is ongoing: Do we use existing lchan or page while lchan active? @@ -1946,6 +2178,8 @@ execute( TC_lu_and_mo_sms() ); execute( TC_lu_and_mt_sms() ); + execute( TC_smpp_mo_sms() ); + execute( TC_smpp_mt_sms() ); /* Run this last: at the time of writing this test crashes the MSC */ execute( TC_lu_imsi_auth_tmsi_encr_3_1_log_msc_debug() ); -- To view, visit https://gerrit.osmocom.org/7801 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: I5349559c7c3096533fb07fcf53f0a44ff7f6567f Gerrit-PatchSet: 2 Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Owner: Harald Welte Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder From gerrit-no-reply at lists.osmocom.org Sat Apr 14 20:12:31 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Sat, 14 Apr 2018 20:12:31 +0000 Subject: [MERGED] osmo-ttcn3-hacks[master]: msc: Add SMPP_Emulation + SMPP_Templates In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: msc: Add SMPP_Emulation + SMPP_Templates ...................................................................... msc: Add SMPP_Emulation + SMPP_Templates Change-Id: I80efe16f603227694c6242d556ae77590271e4c6 --- A library/SMPP_Emulation.ttcn A library/SMPP_Templates.ttcn M msc/gen_links.sh 3 files changed, 539 insertions(+), 1 deletion(-) Approvals: Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/library/SMPP_Emulation.ttcn b/library/SMPP_Emulation.ttcn new file mode 100644 index 0000000..83e7801 --- /dev/null +++ b/library/SMPP_Emulation.ttcn @@ -0,0 +1,413 @@ +module SMPP_Emulation { + +/* SMPP Emulation layer, sitting on top of SMPP_CodecPort. + * + * (C) 2018 by Harald Welte + * All rights reserved. + * + * Released under the terms of GNU General Public License, Version 2 or + * (at your option) any later version. + */ + + +import from Osmocom_Types all; +import from General_Types all; +import from SMPP_Types all; +import from SMPP_Templates all; +import from SMPP_CodecPort all; +import from SMPP_CodecPort_CtrlFunct all; +import from IPL4asp_Types all; +import from IPL4asp_PortType all; +import from Socket_API_Definitions all; + +/* general "base class" component definition, of which specific implementations + * derive themselves by menas of the "extends" feature */ +type component SMPP_ConnHdlr { + /* port towards SPPP_Emulation_CT */ + port SMPP_Conn_PT SMPP; + port SMPPEM_PROC_PT SMPP_PROC; +} + + +type component SMPP_Emulation_CT { + /* down-facing port to SMPP Codec port */ + port SMPP_CODEC_PT SMPP_PORT; + var IPL4asp_Types.ConnectionId g_smpp_conn_id := -1; + + var integer g_seq := 1; + + /* up-facing port to Clients */ + port SMPP_Conn_PT SMPP_CLIENT; + port SMPPEM_PROC_PT SMPP_PROC; + + var TransactionData TransactionTable[32]; + var ExpectData ExpectTable[32]; +} + +type port SMPP_Conn_PT message { + inout SMPP_PDU; +} with { extension "internal" }; + +type record TransactionData { + uint32_t tid optional, + SMPP_ConnHdlr vc_conn +} + +type record ExpectData { + SMPP_TON dst_ton optional, + SMPP_NPI dst_npi optional, + charstring dst_addr, + SMPP_ConnHdlr vc_conn +} + +private function f_trans_id_known(uint32_t tid) +runs on SMPP_Emulation_CT return boolean { + for (var integer i := 0; i < sizeof(TransactionTable); i := i+1) { + if (TransactionTable[i].tid == tid) { + return true; + } + } + return false; +} + +private function f_comp_known(SMPP_ConnHdlr client) +runs on SMPP_Emulation_CT return boolean { + for (var integer i := 0; i < sizeof(TransactionTable); i := i+1) { + if (TransactionTable[i].vc_conn == client) { + return true; + } + } + return false; +} + +private function f_comp_by_trans_id(uint32_t tid) +runs on SMPP_Emulation_CT return SMPP_ConnHdlr { + for (var integer i := 0; i < sizeof(TransactionTable); i := i+1) { + if (TransactionTable[i].tid == tid) { + return TransactionTable[i].vc_conn; + } + } + setverdict(fail, "No componten for SMPP TID ", tid); + self.stop; +} + + +private function f_trans_table_init() +runs on SMPP_Emulation_CT { + for (var integer i := 0; i < sizeof(TransactionTable); i := i+1) { + TransactionTable[i].vc_conn := null; + TransactionTable[i].tid := omit; + } +} + +private function f_trans_table_add(SMPP_ConnHdlr vc_conn, uint32_t trans_id) +runs on SMPP_Emulation_CT { + for (var integer i := 0; i < sizeof(TransactionTable); i := i+1) { + if (TransactionTable[i].vc_conn == null) { + TransactionTable[i].vc_conn := vc_conn; + TransactionTable[i].tid := trans_id; + return; + } + } + setverdict(fail, "SMPP Trans table full!"); + self.stop; +} + +private function f_trans_table_del(uint32_t trans_id) +runs on SMPP_Emulation_CT { + for (var integer i := 0; i < sizeof(TransactionTable); i := i+1) { + if (TransactionTable[i].tid == trans_id) { + TransactionTable[i].vc_conn := null; + TransactionTable[i].tid := omit; + return; + } + } + setverdict(fail, "SMPP Trans table attempt to delete non-existant ", trans_id); + self.stop; +} + + + +function f_connect(charstring remote_host, IPL4asp_Types.PortNumber remote_port, + charstring local_host, IPL4asp_Types.PortNumber local_port) +runs on SMPP_Emulation_CT { + var IPL4asp_Types.Result res; + res := SMPP_CodecPort_CtrlFunct.f_IPL4_connect(SMPP_PORT, remote_host, remote_port, + local_host, local_port, 0, { tcp :={} }); + g_smpp_conn_id := res.connId; +} + +/* Function to use to bind to a local port as IPA server, accepting remote clients */ +function f_bind(charstring local_host, IPL4asp_Types.PortNumber local_port) +runs on SMPP_Emulation_CT { + var IPL4asp_Types.Result res; + res := SMPP_CodecPort_CtrlFunct.f_IPL4_listen(SMPP_PORT, local_host, local_port, { tcp:={} }); + g_smpp_conn_id := res.connId; +} + + +function main_server(EsmePars pars, charstring local_host, integer local_port) +runs on SMPP_Emulation_CT { + f_bind(local_host, local_port); + f_mainloop(pars); +} + +function main_client(EsmePars pars, charstring remote_host, integer remote_port, + charstring local_host, integer local_port) +runs on SMPP_Emulation_CT { + f_connect(remote_host, remote_port, local_host, local_port); + f_mainloop(pars); +} + +type enumerated EsmeMode { + MODE_TRANSMITTER, + MODE_RECEIVER, + MODE_TRANSCEIVER +} +type record EsmePars { + EsmeMode mode, + SMPP_Bind bind, + boolean esme_role +} + +private function f_tx_smpp(template (value) SMPP_PDU pdu) runs on SMPP_Emulation_CT { + pdu.header.seq_num := g_seq; + SMPP_PORT.send(ts_SMPP_Send(g_smpp_conn_id, pdu)); + g_seq := g_seq+1; +} + +private function f_rx_smpp(template SMPP_PDU pdu) runs on SMPP_Emulation_CT { + timer T_wait := 3.0; + T_wait.start; + alt { + [] SMPP_PORT.receive(tr_SMPP_Recv(g_smpp_conn_id, pdu)) { } + [] T_wait.timeout { + setverdict(fail, "Timeout waiting for ", pdu); + self.stop; + } + } +} + +/* default altstep which we use throughout */ +private altstep as_smpp() runs on SMPP_Emulation_CT { + var SMPP_ConnHdlr vc_conn; + var SMPP_RecvFrom smpp_rf; + /* Answer to ENQUIRE LINK */ + [] SMPP_PORT.receive(tr_SMPP_Recv(g_smpp_conn_id, + tr_SMPP(c_SMPP_command_id_enquire_link, ESME_ROK))) { + f_tx_smpp(ts_SMPP_ENQ_LINK_resp); + } + [] SMPP_PORT.receive(tr_SMPP_Recv(g_smpp_conn_id, + tr_SMPP(c_SMPP_command_id_alert_notification, ESME_ROK))) -> value smpp_rf { + /* TODO: dispatch to ConnHdlr based on some kind of expect mechanism? */ + vc_conn := f_exp_lookup(smpp_rf.msg.body.alert_notif.source_addr_ton, + smpp_rf.msg.body.alert_notif.source_addr_npi, + smpp_rf.msg.body.alert_notif.source_addr); + SMPP_CLIENT.send(smpp_rf.msg) to vc_conn; + } + [] SMPP_PORT.receive { + setverdict(fail, "Unexpected SMPP from peer"); + self.stop; + } +} + +function f_mainloop(EsmePars pars) +runs on SMPP_Emulation_CT { + + /* Set function for dissecting the binary stream into packets */ + var f_IPL4_getMsgLen vl_f := refers(f_IPL4_fixedMsgLen); + /* Offset: 0, size of length: 4, delta: 0, multiplier: 1, big-endian */ + SMPP_CodecPort_CtrlFunct.f_IPL4_setGetMsgLen(SMPP_PORT, g_smpp_conn_id, vl_f, {0, 4, 0, 1, 0}); + + f_trans_table_init(); + f_expect_table_init(); + + /* activate default altstep */ + var default d := activate(as_smpp()); + + if (pars.esme_role) { + /* BIND to SMSC */ + select (pars.mode) { + case (MODE_TRANSMITTER) { + f_tx_smpp(ts_SMPP_BIND_TX(pars.bind)); + /* FIXME: do we have to check for SEQ? */ + f_rx_smpp(tr_SMPP(c_SMPP_command_id_bind_transmitter_resp, ESME_ROK, g_seq)); + } + case (MODE_RECEIVER) { + f_tx_smpp(ts_SMPP_BIND_RX(pars.bind)); + /* FIXME: do we have to check for SEQ? */ + f_rx_smpp(tr_SMPP(c_SMPP_command_id_bind_receiver_resp, ESME_ROK, g_seq)); + } + case (MODE_TRANSCEIVER) { + f_tx_smpp(ts_SMPP_BIND_TRX(pars.bind)); + /* FIXME: do we have to check for SEQ? */ + f_rx_smpp(tr_SMPP(c_SMPP_command_id_bind_transceiver_resp, ESME_ROK)); + } + } + } else { + var SMPP_Bind_resp bresp := { + system_id := pars.bind.system_id, + opt_pars := {} + } + /* Expect bind from ESME */ + select (pars.mode) { + case (MODE_TRANSMITTER) { + f_rx_smpp(tr_SMPP_BIND_TX(pars.bind)); + /* FIXME: do we have to check for SEQ? */ + f_tx_smpp(ts_SMPP_BIND_TX_resp(ESME_ROK, bresp)); + } + case (MODE_RECEIVER) { + f_rx_smpp(tr_SMPP_BIND_RX(pars.bind)); + /* FIXME: do we have to check for SEQ? */ + f_tx_smpp(ts_SMPP_BIND_RX_resp(ESME_ROK, bresp)); + } + case (MODE_TRANSCEIVER) { + f_rx_smpp(tr_SMPP_BIND_TRX(pars.bind)); + /* FIXME: do we have to check for SEQ? */ + f_tx_smpp(ts_SMPP_BIND_TRX_resp(ESME_ROK, bresp)); + } + } + } + + while (true) { + var SMPP_ConnHdlr vc_conn; + var SMPP_RecvFrom smpp_rf; + var SMPP_PDU smpp; + var charstring dest_addr; + alt { + /* SMSC -> CLIENT: response, map by seq_nr */ + [pars.esme_role] SMPP_PORT.receive(tr_SMPP_Recv(g_smpp_conn_id, + tr_SMPP_esme_resp)) -> value smpp_rf { + var uint32_t trans_id := smpp_rf.msg.header.seq_num; + if (f_trans_id_known(trans_id)) { + vc_conn := f_comp_by_trans_id(trans_id); + SMPP_CLIENT.send(smpp_rf.msg) to vc_conn; + f_trans_table_del(trans_id); + } else { + log("Received SMPP response for unknown trans_id ", smpp_rf); + /* FIXME */ + } + } + /* SMSC -> CLIENT: DELIVER-SM.req */ + [pars.esme_role] SMPP_PORT.receive(tr_SMPP_Recv(g_smpp_conn_id, + tr_SMPP(c_SMPP_command_id_deliver_sm, ESME_ROK))) -> value smpp_rf { + vc_conn := f_exp_lookup(smpp_rf.msg.body.deliver_sm.dest_addr_ton, + smpp_rf.msg.body.deliver_sm.dest_addr_npi, + smpp_rf.msg.body.deliver_sm.destination_addr); + SMPP_CLIENT.send(smpp_rf.msg) to vc_conn; + } + + /* record seq_nr for commands from CLIENT -> SMSC */ + [pars.esme_role] SMPP_CLIENT.receive(tr_SMPP_esme_req) -> value smpp sender vc_conn { + /* register current seq_nr/trans_id */ + f_trans_table_add(vc_conn, g_seq); + f_tx_smpp(smpp); + } + /* pass responses 1:1 through from CLIENT -> SMSC */ + [pars.esme_role] SMPP_CLIENT.receive(tr_SMPP_smsc_resp) -> value smpp sender vc_conn { + SMPP_PORT.send(ts_SMPP_Send(g_smpp_conn_id, smpp)); + } + + [] SMPP_PROC.getcall(SMPPEM_register:{?,?}) -> param(dest_addr, vc_conn) { + f_create_expect(dest_addr, vc_conn); + SMPP_PROC.reply(SMPPEM_register:{dest_addr, vc_conn}); + } + } + } +} + +/* Requests from ESME -> SMSC */ +template OCT4 SMPP_esme_req := ( + c_SMPP_command_id_submit_sm, + c_SMPP_command_id_replace_sm, + c_SMPP_command_id_cancel_sm, + c_SMPP_command_id_submit_multi +); +template SMPP_PDU tr_SMPP_esme_req := tr_SMPP(SMPP_esme_req, ?); + +/* Responses from ESME -> SMSC */ +template OCT4 SMPP_esme_resp := ( + c_SMPP_command_id_submit_sm_resp, + c_SMPP_command_id_replace_sm_resp, + c_SMPP_command_id_cancel_sm_resp, + c_SMPP_command_id_submit_multi_resp +); +template SMPP_PDU tr_SMPP_esme_resp := tr_SMPP(SMPP_esme_resp, ?); + +/* Requests from SMSC -> ESME */ +template OCT4 SMPP_smsc_req := ( + c_SMPP_command_id_deliver_sm +); +template SMPP_PDU tr_SMPP_smsc_req := tr_SMPP(SMPP_smsc_req, ?); + +/* Responses from SMSC -> ESME */ +template OCT4 SMPP_smsc_resp := ( + c_SMPP_command_id_deliver_sm_resp +); +template SMPP_PDU tr_SMPP_smsc_resp := tr_SMPP(SMPP_smsc_resp, ?); + + + +signature SMPPEM_register(charstring dst_addr, SMPP_ConnHdlr hdlr); + +type port SMPPEM_PROC_PT procedure { + inout SMPPEM_register; +} with { extension "internal" }; + +private function f_create_expect(charstring dest_number, SMPP_ConnHdlr hdlr) +runs on SMPP_Emulation_CT { + for (var integer i := 0; i < sizeof(ExpectTable); i := i+1) { + if (ExpectTable[i].vc_conn == null) { + ExpectTable[i] := { + dst_ton := omit, + dst_npi := omit, + dst_addr := dest_number, + vc_conn := hdlr + } + return; + } + } + setverdict(fail, "No space left in SmppExpectTable"); + self.stop; +} + +private function f_exp_lookup(SMPP_TON ton, SMPP_NPI npi, charstring dst) +runs on SMPP_Emulation_CT return SMPP_ConnHdlr { + for (var integer i := 0; i < sizeof(ExpectTable); i := i+1) { + if (ExpectTable[i].vc_conn != null and ExpectTable[i].dst_addr == dst) { + if (ispresent(ExpectTable[i].dst_ton) and ExpectTable[i].dst_ton != ton) { + continue; + } + if (ispresent(ExpectTable[i].dst_npi) and ExpectTable[i].dst_npi != npi) { + continue; + } + return ExpectTable[i].vc_conn; + } + } + return null; +} +private function f_expect_table_init() +runs on SMPP_Emulation_CT { + for (var integer i := 0; i < sizeof(ExpectTable); i := i+1) { + ExpectTable[i] := { + dst_ton := omit, + dst_npi := omit, + dst_addr := "", + vc_conn := null + }; + } +} + + + + + +/* client/conn_hdlr side function to use procedure port to create expect in emulation */ +function f_create_smpp_expect(charstring dest_number) runs on SMPP_ConnHdlr { + SMPP_PROC.call(SMPPEM_register:{dest_number, self}) { + [] SMPP_PROC.getreply(SMPPEM_register:{?,?}) {}; + } +} + + +} diff --git a/library/SMPP_Templates.ttcn b/library/SMPP_Templates.ttcn new file mode 100644 index 0000000..9a56cf2 --- /dev/null +++ b/library/SMPP_Templates.ttcn @@ -0,0 +1,125 @@ +module SMPP_Templates { + +import from General_Types all; +import from SMPP_Types all; + +template (value) SMPP_header ts_SMPP_hdr(OCT4 command_id, SMPP_error_code status, + integer seq := 0) := { + command_len := 0, + command_id := command_id, + command_status := status, + seq_num := seq +} +template SMPP_header tr_SMPP_hdr(template OCT4 command_id, template SMPP_error_code status, + template integer seq := ?) := { + command_len := ?, + command_id := command_id, + command_status := status, + seq_num := seq +} + +template (value) SMPP_PDU ts_SMPP(OCT4 command_id, SMPP_error_code status, + template (value) SMPP_operation_body body) := { + header := ts_SMPP_hdr(command_id, status), + body := body +} +template SMPP_PDU tr_SMPP(template OCT4 command_id, template SMPP_error_code status, + template integer seq := ?, + template SMPP_operation_body body := ?) := { + header := tr_SMPP_hdr(command_id, status, seq), + body := body +} + + + +template (value) SMPP_PDU ts_SMPP_BIND_TX(template (value) SMPP_Bind bind) := { + header := ts_SMPP_hdr(c_SMPP_command_id_bind_transmitter, ESME_ROK), + body := { + bind_transmitter := bind + } +} +template SMPP_PDU tr_SMPP_BIND_TX(template (value) SMPP_Bind bind, template integer seq := ?) := { + header := tr_SMPP_hdr(c_SMPP_command_id_bind_transmitter, ESME_ROK, seq), + body := { + bind_transmitter := bind + } +} + +template (value) SMPP_PDU ts_SMPP_BIND_TX_resp(SMPP_error_code status, + template (value) SMPP_Bind_resp bind) := { + header := ts_SMPP_hdr(c_SMPP_command_id_bind_transmitter_resp, status), + body := { + bind_transmitter_resp := bind + } +} + +template (value) SMPP_PDU ts_SMPP_BIND_RX(template (value) SMPP_Bind bind) := { + header := ts_SMPP_hdr(c_SMPP_command_id_bind_receiver, ESME_ROK), + body := { + bind_receiver := bind + } +} +template SMPP_PDU tr_SMPP_BIND_RX(template (value) SMPP_Bind bind, template integer seq := ?) := { + header := tr_SMPP_hdr(c_SMPP_command_id_bind_receiver, ESME_ROK, seq), + body := { + bind_receiver := bind + } +} + +template (value) SMPP_PDU ts_SMPP_BIND_RX_resp(SMPP_error_code status, + template (value) SMPP_Bind_resp bind) := { + header := ts_SMPP_hdr(c_SMPP_command_id_bind_receiver_resp, status), + body := { + bind_receiver_resp := bind + } +} + +template (value) SMPP_PDU ts_SMPP_BIND_TRX(template (value) SMPP_Bind bind) := { + header := ts_SMPP_hdr(c_SMPP_command_id_bind_transceiver, ESME_ROK), + body := { + bind_transceiver := bind + } +} +template SMPP_PDU tr_SMPP_BIND_TRX(template (value) SMPP_Bind bind, template integer seq := ?) := { + header := tr_SMPP_hdr(c_SMPP_command_id_bind_transceiver, ESME_ROK, seq), + body := { + bind_transceiver := bind + } +} + +template (value) SMPP_PDU ts_SMPP_BIND_TRX_resp(SMPP_error_code status, + template (value) SMPP_Bind_resp bind) := { + header := ts_SMPP_hdr(c_SMPP_command_id_bind_transceiver_resp, status), + body := { + bind_transceiver_resp := bind + } +} + +template (value) SMPP_PDU ts_SMPP_ENQ_LINK := { + header := ts_SMPP_hdr(c_SMPP_command_id_enquire_link, ESME_ROK), + body := { + enquire_link := {} + } +} + +template (value) SMPP_PDU ts_SMPP_ENQ_LINK_resp := { + header := ts_SMPP_hdr(c_SMPP_command_id_enquire_link_resp, ESME_ROK), + body := { + enquire_link_resp := {} + } +} + +template (value) SMPP_PDU ts_SMPP_DELIVER_SM_resp(SMPP_error_code status, integer seq) := { + header := ts_SMPP_hdr(c_SMPP_command_id_deliver_sm_resp, status, seq), + body := { + deliver_sm_resp := { + message_id := "", /* unused */ + opt_pars := omit + } + } +} + + + + +} diff --git a/msc/gen_links.sh b/msc/gen_links.sh index 08d8de8..a5444db 100755 --- a/msc/gen_links.sh +++ b/msc/gen_links.sh @@ -78,7 +78,7 @@ FILES+="BSSMAP_Emulation.ttcn BSSAP_CodecPort.ttcn BSSMAP_Templates.ttcn BSSAP_Adapter.ttcn MGCP_Types.ttcn MGCP_Templates.ttcn MGCP_CodecPort_CtrlFunct.ttcn MGCP_Emulation.ttcn " FILES+="RTP_CodecPort.ttcn RTP_CodecPort_CtrlFunctDef.cc " FILES+="MGCP_CodecPort.ttcn MGCP_CodecPort_CtrlFunctDef.cc " -FILES+="SMPP_CodecPort.ttcn SMPP_CodecPort_CtrlFunct.ttcn SMPP_CodecPort_CtrlFunctDef.cc " +FILES+="SMPP_CodecPort.ttcn SMPP_CodecPort_CtrlFunct.ttcn SMPP_CodecPort_CtrlFunctDef.cc SMPP_Emulation.ttcn SMPP_Templates.ttcn " gen_links $DIR $FILES ignore_pp_results -- To view, visit https://gerrit.osmocom.org/7800 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: I80efe16f603227694c6242d556ae77590271e4c6 Gerrit-PatchSet: 2 Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Owner: Harald Welte Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder From gerrit-no-reply at lists.osmocom.org Sat Apr 14 20:12:32 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Sat, 14 Apr 2018 20:12:32 +0000 Subject: [MERGED] osmo-ttcn3-hacks[master]: msc: Add SMPP_CodecPort In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: msc: Add SMPP_CodecPort ...................................................................... msc: Add SMPP_CodecPort Change-Id: I57640ccc5370d6820bc303003e162f27ddc9fcfd --- A library/SMPP_CodecPort.ttcn A library/SMPP_CodecPort_CtrlFunct.ttcn A library/SMPP_CodecPort_CtrlFunctDef.cc M msc/gen_links.sh M msc/regen_makefile.sh 5 files changed, 185 insertions(+), 1 deletion(-) Approvals: Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/library/SMPP_CodecPort.ttcn b/library/SMPP_CodecPort.ttcn new file mode 100644 index 0000000..0ac81ae --- /dev/null +++ b/library/SMPP_CodecPort.ttcn @@ -0,0 +1,65 @@ +module SMPP_CodecPort { + +/* Simple SMPP Codec Port, translating between raw TCP octetstring payload + * towards the IPL4asp port provider, and SMPP primitives + * which carry the decoded SMPP data types as payload. + * + * (C) 2018 by Harald Welte + * All rights reserved. + * + * Released under the terms of GNU General Public License, Version 2 or + * (at your option) any later version. + */ + + +import from IPL4asp_PortType all; +import from IPL4asp_Types all; +import from SMPP_Types all; + +type record SMPP_RecvFrom { + ConnectionId connId, + SMPP_PDU msg +} + +type record SMPP_Send { + ConnectionId connId, + SMPP_PDU msg +} + +template (value) SMPP_Send ts_SMPP_Send(ConnectionId conn_id, template (value) SMPP_PDU msg) := { + connId := conn_id, + msg := msg +} + +template SMPP_RecvFrom tr_SMPP_Recv(template ConnectionId conn_id, template SMPP_PDU msg) := { + connId := conn_id, + msg := msg +} + +private function IPL4_to_SMPP_RecvFrom(in ASP_RecvFrom pin, out SMPP_RecvFrom pout) { + var integer rc; + pout.connId := pin.connId; + rc := f_decode_SMPP(pin.msg, pout.msg); +} with { extension "prototype(fast)" } + +private function SMPP_to_IPL4_Send(in SMPP_Send pin, out ASP_Send pout) { + pout.connId := pin.connId; + pout.proto := { tcp := {} }; + f_encode_SMPP(pin.msg, pout.msg); +} with { extension "prototype(fast)" } + +type port SMPP_CODEC_PT message { + out SMPP_Send; + in SMPP_RecvFrom, + ASP_ConnId_ReadyToRelease, + ASP_Event; +} with { extension "user IPL4asp_PT + out(SMPP_Send -> ASP_Send: function(SMPP_to_IPL4_Send)) + in(ASP_RecvFrom -> SMPP_RecvFrom: function(IPL4_to_SMPP_RecvFrom); + ASP_ConnId_ReadyToRelease -> ASP_ConnId_ReadyToRelease: simple; + ASP_Event -> ASP_Event: simple)" +} + + + +} diff --git a/library/SMPP_CodecPort_CtrlFunct.ttcn b/library/SMPP_CodecPort_CtrlFunct.ttcn new file mode 100644 index 0000000..2f6d616 --- /dev/null +++ b/library/SMPP_CodecPort_CtrlFunct.ttcn @@ -0,0 +1,52 @@ +module SMPP_CodecPort_CtrlFunct { + + import from SMPP_CodecPort all; + import from IPL4asp_Types all; + + external function f_IPL4_listen( + inout SMPP_CODEC_PT portRef, + in HostName locName, + in PortNumber locPort, + in ProtoTuple proto, + in OptionList options := {} + ) return Result; + + external function f_IPL4_connect( + inout SMPP_CODEC_PT portRef, + in HostName remName, + in PortNumber remPort, + in HostName locName, + in PortNumber locPort, + in ConnectionId connId, + in ProtoTuple proto, + in OptionList options := {} + ) return Result; + + external function f_IPL4_close( + inout SMPP_CODEC_PT portRef, + in ConnectionId id, + in ProtoTuple proto := { unspecified := {} } + ) return Result; + + external function f_IPL4_setUserData( + inout SMPP_CODEC_PT portRef, + in ConnectionId id, + in UserData userData + ) return Result; + + external function f_IPL4_getUserData( + inout SMPP_CODEC_PT portRef, + in ConnectionId id, + out UserData userData + ) return Result; + + external function f_IPL4_setGetMsgLen( + inout SMPP_CODEC_PT portRef, + in ConnectionId id, + inout f_IPL4_getMsgLen f, + in ro_integer msgLenArgs + ); + + +} + diff --git a/library/SMPP_CodecPort_CtrlFunctDef.cc b/library/SMPP_CodecPort_CtrlFunctDef.cc new file mode 100644 index 0000000..31603e4 --- /dev/null +++ b/library/SMPP_CodecPort_CtrlFunctDef.cc @@ -0,0 +1,66 @@ +#include "IPL4asp_PortType.hh" +#include "SMPP_CodecPort.hh" +#include "IPL4asp_PT.hh" + +namespace SMPP__CodecPort__CtrlFunct { + + IPL4asp__Types::Result f__IPL4__listen( + SMPP__CodecPort::SMPP__CODEC__PT& portRef, + const IPL4asp__Types::HostName& locName, + const IPL4asp__Types::PortNumber& locPort, + const IPL4asp__Types::ProtoTuple& proto, + const IPL4asp__Types::OptionList& options) + { + return f__IPL4__PROVIDER__listen(portRef, locName, locPort, proto, options); + } + + IPL4asp__Types::Result f__IPL4__connect( + SMPP__CodecPort::SMPP__CODEC__PT& portRef, + const IPL4asp__Types::HostName& remName, + const IPL4asp__Types::PortNumber& remPort, + const IPL4asp__Types::HostName& locName, + const IPL4asp__Types::PortNumber& locPort, + const IPL4asp__Types::ConnectionId& connId, + const IPL4asp__Types::ProtoTuple& proto, + const IPL4asp__Types::OptionList& options) + { + return f__IPL4__PROVIDER__connect(portRef, remName, remPort, + locName, locPort, connId, proto, options); + } + + IPL4asp__Types::Result f__IPL4__close( + SMPP__CodecPort::SMPP__CODEC__PT& portRef, + const IPL4asp__Types::ConnectionId& connId, + const IPL4asp__Types::ProtoTuple& proto) + { + return f__IPL4__PROVIDER__close(portRef, connId, proto); + } + + IPL4asp__Types::Result f__IPL4__setUserData( + SMPP__CodecPort::SMPP__CODEC__PT& portRef, + const IPL4asp__Types::ConnectionId& connId, + const IPL4asp__Types::UserData& userData) + { + return f__IPL4__PROVIDER__setUserData(portRef, connId, userData); + } + + IPL4asp__Types::Result f__IPL4__getUserData( + SMPP__CodecPort::SMPP__CODEC__PT& portRef, + const IPL4asp__Types::ConnectionId& connId, + IPL4asp__Types::UserData& userData) + { + return f__IPL4__PROVIDER__getUserData(portRef, connId, userData); + } + + void f__IPL4__setGetMsgLen( + SMPP__CodecPort::SMPP__CODEC__PT& portRef, + const IPL4asp__Types::ConnectionId& connId, + Socket__API__Definitions::f__getMsgLen& f, + const Socket__API__Definitions::ro__integer& msgLenArgs) + { + return f__IPL4__PROVIDER__setGetMsgLen(portRef, connId, f, msgLenArgs); + } + + +} + diff --git a/msc/gen_links.sh b/msc/gen_links.sh index 6dea043..08d8de8 100755 --- a/msc/gen_links.sh +++ b/msc/gen_links.sh @@ -78,6 +78,7 @@ FILES+="BSSMAP_Emulation.ttcn BSSAP_CodecPort.ttcn BSSMAP_Templates.ttcn BSSAP_Adapter.ttcn MGCP_Types.ttcn MGCP_Templates.ttcn MGCP_CodecPort_CtrlFunct.ttcn MGCP_Emulation.ttcn " FILES+="RTP_CodecPort.ttcn RTP_CodecPort_CtrlFunctDef.cc " FILES+="MGCP_CodecPort.ttcn MGCP_CodecPort_CtrlFunctDef.cc " +FILES+="SMPP_CodecPort.ttcn SMPP_CodecPort_CtrlFunct.ttcn SMPP_CodecPort_CtrlFunctDef.cc " gen_links $DIR $FILES ignore_pp_results diff --git a/msc/regen_makefile.sh b/msc/regen_makefile.sh index 29b3f05..de8f7ab 100755 --- a/msc/regen_makefile.sh +++ b/msc/regen_makefile.sh @@ -1,6 +1,6 @@ #!/bin/sh -FILES="*.ttcn *.ttcnpp SCCP_EncDec.cc SCTPasp_PT.cc TCCConversion.cc TCCInterface.cc UD_PT.cc MNCC_EncDec.cc IPL4asp_PT.cc IPL4asp_discovery.cc SDP_EncDec.cc RTP_EncDec.cc IPA_CodecPort_CtrlFunctDef.cc RTP_CodecPort_CtrlFunctDef.cc MGCP_CodecPort_CtrlFunctDef.cc TELNETasp_PT.cc Native_FunctionDefs.cc SMPP_EncDec.cc *.c" +FILES="*.ttcn *.ttcnpp SCCP_EncDec.cc SCTPasp_PT.cc TCCConversion.cc TCCInterface.cc UD_PT.cc MNCC_EncDec.cc IPL4asp_PT.cc IPL4asp_discovery.cc SDP_EncDec.cc RTP_EncDec.cc IPA_CodecPort_CtrlFunctDef.cc RTP_CodecPort_CtrlFunctDef.cc MGCP_CodecPort_CtrlFunctDef.cc TELNETasp_PT.cc Native_FunctionDefs.cc SMPP_EncDec.cc SMPP_CodecPort_CtrlFunctDef.cc *.c" export CPPFLAGS_TTCN3="-DIPA_EMULATION_MGCP -DIPA_EMULATION_GSUP -DUSE_MTP3_DISTRIBUTOR" -- To view, visit https://gerrit.osmocom.org/7799 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: I57640ccc5370d6820bc303003e162f27ddc9fcfd Gerrit-PatchSet: 2 Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Owner: Harald Welte Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder From gerrit-no-reply at lists.osmocom.org Sat Apr 14 20:12:32 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Sat, 14 Apr 2018 20:12:32 +0000 Subject: [MERGED] osmo-ttcn3-hacks[master]: deps: Use SMPP from osmocom fork In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: deps: Use SMPP from osmocom fork ...................................................................... deps: Use SMPP from osmocom fork the osmocom fork has support for AlertNotification, which upstream doesn't. Pull request is pending, so we have to use our osmocom fork repo meanwhile. Change-Id: I9b6b120fe74b46183517264d85651ac0d99b4035 --- M deps/Makefile 1 file changed, 2 insertions(+), 2 deletions(-) Approvals: Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/deps/Makefile b/deps/Makefile index d1545fd..bf2211b 100644 --- a/deps/Makefile +++ b/deps/Makefile @@ -9,7 +9,6 @@ titan.ProtocolModules.IP \ titan.ProtocolModules.L2TP \ titan.ProtocolModules.M3UA \ - titan.ProtocolModules.SMPP \ titan.ProtocolModules.TCP \ titan.ProtocolModules.UDP \ titan.ProtocolModules.RTP \ @@ -43,6 +42,7 @@ OSMOGITHUB_REPOS= titan.TestPorts.SCTPasp \ titan.TestPorts.MTP3asp \ titan.TestPorts.UNIX_DOMAIN_SOCKETasp \ + titan.ProtocolModules.SMPP \ titan.ProtocolEmulations.M3UA ALL_REPOS=$(ECLIPSEGIT_REPOS) $(ECLIPSEGIT2_REPOS) $(OSMOGITHUB_REPOS) @@ -72,7 +72,7 @@ titan.ProtocolModules.RTP_commit= R.5.A titan.ProtocolModules.SCTP_commit= R.2.A titan.ProtocolModules.SDP_commit= R.14.A -titan.ProtocolModules.SMPP_commit= R.2.A +titan.ProtocolModules.SMPP_commit= R.2.A-1-ge044a36 titan.ProtocolModules.SNDCP_v7.0.0_commit= R.2.A titan.ProtocolModules.SUA_commit= R.5.A titan.ProtocolModules.TCP_commit= R.3.A -- To view, visit https://gerrit.osmocom.org/7798 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: I9b6b120fe74b46183517264d85651ac0d99b4035 Gerrit-PatchSet: 2 Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Owner: Harald Welte Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder From gerrit-no-reply at lists.osmocom.org Sat Apr 14 20:12:51 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Sat, 14 Apr 2018 20:12:51 +0000 Subject: [PATCH] docker-playground[master]: ttcn3-msc-test: Add SMPP config bits Message-ID: Review at https://gerrit.osmocom.org/7803 ttcn3-msc-test: Add SMPP config bits Change-Id: I595a1ca2d47667e654f8a0a69bfe98c91ac58d39 --- M ttcn3-msc-test/osmo-msc.cfg 1 file changed, 6 insertions(+), 0 deletions(-) git pull ssh://gerrit.osmocom.org:29418/docker-playground refs/changes/03/7803/1 diff --git a/ttcn3-msc-test/osmo-msc.cfg b/ttcn3-msc-test/osmo-msc.cfg index 349966f..8fa38ad 100644 --- a/ttcn3-msc-test/osmo-msc.cfg +++ b/ttcn3-msc-test/osmo-msc.cfg @@ -76,6 +76,12 @@ mncc-int default-codec tch-f fr default-codec tch-h hr +smpp + local-tcp-port 2775 + policy closed + no smpp-first + esme msc_tester + password osmocom1 hlr remote-ip 172.18.1.103 remote-port 4222 -- To view, visit https://gerrit.osmocom.org/7803 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I595a1ca2d47667e654f8a0a69bfe98c91ac58d39 Gerrit-PatchSet: 1 Gerrit-Project: docker-playground Gerrit-Branch: master Gerrit-Owner: Harald Welte From gerrit-no-reply at lists.osmocom.org Sat Apr 14 20:13:02 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Sat, 14 Apr 2018 20:13:02 +0000 Subject: docker-playground[master]: ttcn3-msc-test: Add SMPP config bits In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 Verified+1 -- To view, visit https://gerrit.osmocom.org/7803 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I595a1ca2d47667e654f8a0a69bfe98c91ac58d39 Gerrit-PatchSet: 1 Gerrit-Project: docker-playground Gerrit-Branch: master Gerrit-Owner: Harald Welte Gerrit-Reviewer: Harald Welte Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Sat Apr 14 20:13:04 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Sat, 14 Apr 2018 20:13:04 +0000 Subject: [MERGED] docker-playground[master]: ttcn3-msc-test: Add SMPP config bits In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: ttcn3-msc-test: Add SMPP config bits ...................................................................... ttcn3-msc-test: Add SMPP config bits Change-Id: I595a1ca2d47667e654f8a0a69bfe98c91ac58d39 --- M ttcn3-msc-test/osmo-msc.cfg 1 file changed, 6 insertions(+), 0 deletions(-) Approvals: Harald Welte: Looks good to me, approved; Verified diff --git a/ttcn3-msc-test/osmo-msc.cfg b/ttcn3-msc-test/osmo-msc.cfg index 349966f..8fa38ad 100644 --- a/ttcn3-msc-test/osmo-msc.cfg +++ b/ttcn3-msc-test/osmo-msc.cfg @@ -76,6 +76,12 @@ mncc-int default-codec tch-f fr default-codec tch-h hr +smpp + local-tcp-port 2775 + policy closed + no smpp-first + esme msc_tester + password osmocom1 hlr remote-ip 172.18.1.103 remote-port 4222 -- To view, visit https://gerrit.osmocom.org/7803 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: I595a1ca2d47667e654f8a0a69bfe98c91ac58d39 Gerrit-PatchSet: 1 Gerrit-Project: docker-playground Gerrit-Branch: master Gerrit-Owner: Harald Welte Gerrit-Reviewer: Harald Welte From gerrit-no-reply at lists.osmocom.org Sat Apr 14 22:51:31 2018 From: gerrit-no-reply at lists.osmocom.org (Vadim Yanitskiy) Date: Sat, 14 Apr 2018 22:51:31 +0000 Subject: osmocom-bb[fixeria/trx]: trxcon/scheduler: fix Measurement Reporting on SACCH In-Reply-To: References: Message-ID: Patch Set 1: Verified-1 -- To view, visit https://gerrit.osmocom.org/7470 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: If1b8dc74ced746d6270676fdde75fcda32f91a3d Gerrit-PatchSet: 1 Gerrit-Project: osmocom-bb Gerrit-Branch: fixeria/trx Gerrit-Owner: Vadim Yanitskiy Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Vadim Yanitskiy Gerrit-HasComments: No From jenkins at lists.osmocom.org Sun Apr 15 00:54:46 2018 From: jenkins at lists.osmocom.org (jenkins at lists.osmocom.org) Date: Sun, 15 Apr 2018 00:54:46 +0000 (UTC) Subject: =?UTF-8?Q?Build_failed_in_Jenkins:_master-osmo-iuh_=C2=BB_a1=3Ddefau?= =?UTF-8?Q?lt,a2=3Ddefault,a3=3Ddefault,osmocom-master-debian9_#932?= Message-ID: <303523275.317.1523753686632.JavaMail.jenkins@jenkins.osmocom.org> See ------------------------------------------ [...truncated 765.68 KB...] ^~~~ ../include/osmocom/ranap/RANAP_RABParametersList.h:29:2: note: in expansion of macro ?A_SEQUENCE_OF? A_SEQUENCE_OF(struct MemberB { ^~~~~~~~~~~~~ ../include/osmocom/ranap/RANAP_UnsuccessfulLinking-IEs.h:27:23: warning: ?struct MemberD? declared inside parameter list will not be visible outside of this definition or declaration A_SEQUENCE_OF(struct MemberD { ^ :17:16: note: in definition of macro ?A_SET_OF? void (*free)(type *); \ ^~~~ ../include/osmocom/ranap/RANAP_UnsuccessfulLinking-IEs.h:27:2: note: in expansion of macro ?A_SEQUENCE_OF? A_SEQUENCE_OF(struct MemberD { ^~~~~~~~~~~~~ ../include/osmocom/ranap/RANAP_CriticalityDiagnostics-IE-List.h:28:23: warning: ?struct MemberG? declared inside parameter list will not be visible outside of this definition or declaration A_SEQUENCE_OF(struct MemberG { ^ :17:16: note: in definition of macro ?A_SET_OF? void (*free)(type *); \ ^~~~ ../include/osmocom/ranap/RANAP_CriticalityDiagnostics-IE-List.h:28:2: note: in expansion of macro ?A_SEQUENCE_OF? A_SEQUENCE_OF(struct MemberG { ^~~~~~~~~~~~~ ../include/osmocom/ranap/RANAP_UnsuccessfulLinking-IEs.h:27:23: warning: ?struct MemberD? declared inside parameter list will not be visible outside of this definition or declaration A_SEQUENCE_OF(struct MemberD { ^ :17:16: note: in definition of macro ?A_SET_OF? void (*free)(type *); \ ^~~~ ../include/osmocom/ranap/RANAP_UnsuccessfulLinking-IEs.h:27:2: note: in expansion of macro ?A_SEQUENCE_OF? A_SEQUENCE_OF(struct MemberD { ^~~~~~~~~~~~~ ../include/osmocom/ranap/RANAP_DataVolumeList.h:27:23: warning: ?struct MemberH? declared inside parameter list will not be visible outside of this definition or declaration A_SEQUENCE_OF(struct MemberH { ^ :17:16: note: in definition of macro ?A_SET_OF? void (*free)(type *); \ ^~~~ ../include/osmocom/ranap/RANAP_DataVolumeList.h:27:2: note: in expansion of macro ?A_SEQUENCE_OF? A_SEQUENCE_OF(struct MemberH { ^~~~~~~~~~~~~ ../include/osmocom/ranap/RANAP_EUTRANFrequencies.h:27:23: warning: ?struct MemberJ? declared inside parameter list will not be visible outside of this definition or declaration A_SEQUENCE_OF(struct MemberJ { ^ :17:16: note: in definition of macro ?A_SET_OF? void (*free)(type *); \ ^~~~ ../include/osmocom/ranap/RANAP_EUTRANFrequencies.h:27:2: note: in expansion of macro ?A_SEQUENCE_OF? A_SEQUENCE_OF(struct MemberJ { ^~~~~~~~~~~~~ In file included from ../include/osmocom/ranap/ranap_common.h:592:0, from ranap_encoder.c:7: ../include/osmocom/ranap/ranap_ies_defs.h:126:0: warning: "ENHANCEDRELOCATIONCOMPLETEREQUESTIES_RANAP_EXTENDEDRNC_ID_PRESENT" redefined #define ENHANCEDRELOCATIONCOMPLETEREQUESTIES_RANAP_EXTENDEDRNC_ID_PRESENT (1 << 1) ../include/osmocom/ranap/ranap_ies_defs.h:125:0: note: this is the location of the previous definition #define ENHANCEDRELOCATIONCOMPLETEREQUESTIES_RANAP_EXTENDEDRNC_ID_PRESENT (1 << 0) ../include/osmocom/ranap/ranap_ies_defs.h:436:0: warning: "RANAP_ENHANCEDRELOCATIONINFORMATIONREQUESTIES_RANAP_IUSIGNALLINGCONNECTIONIDENTIFIER_PRESENT" redefined #define RANAP_ENHANCEDRELOCATIONINFORMATIONREQUESTIES_RANAP_IUSIGNALLINGCONNECTIONIDENTIFIER_PRESENT (1 << 2) ../include/osmocom/ranap/ranap_ies_defs.h:434:0: note: this is the location of the previous definition #define RANAP_ENHANCEDRELOCATIONINFORMATIONREQUESTIES_RANAP_IUSIGNALLINGCONNECTIONIDENTIFIER_PRESENT (1 << 0) ../include/osmocom/ranap/ranap_ies_defs.h:437:0: warning: "RANAP_ENHANCEDRELOCATIONINFORMATIONREQUESTIES_RANAP_GLOBALCN_ID_PRESENT" redefined #define RANAP_ENHANCEDRELOCATIONINFORMATIONREQUESTIES_RANAP_GLOBALCN_ID_PRESENT (1 << 3) ../include/osmocom/ranap/ranap_ies_defs.h:435:0: note: this is the location of the previous definition #define RANAP_ENHANCEDRELOCATIONINFORMATIONREQUESTIES_RANAP_GLOBALCN_ID_PRESENT (1 << 1) In file included from :8:0, from ../include/osmocom/ranap/RANAP_IE-Extensions.h:15, from ../include/osmocom/ranap/RANAP_AllocationOrRetentionPriority.h:18, from ../include/osmocom/ranap/ranap_common.h:8, from ranap_common.c:26: ../include/osmocom/ranap/RANAP_LA-LIST.h:27:23: warning: ?struct MemberA? declared inside parameter list will not be visible outside of this definition or declaration A_SEQUENCE_OF(struct MemberA { ^ :17:16: note: in definition of macro ?A_SET_OF? void (*free)(type *); \ ^~~~ ../include/osmocom/ranap/RANAP_LA-LIST.h:27:2: note: in expansion of macro ?A_SEQUENCE_OF? A_SEQUENCE_OF(struct MemberA { ^~~~~~~~~~~~~ ../include/osmocom/ranap/RANAP_LeftMBMSBearerService-IEs.h:26:23: warning: ?struct MemberK? declared inside parameter list will not be visible outside of this definition or declaration A_SEQUENCE_OF(struct MemberK { ^ :17:16: note: in definition of macro ?A_SET_OF? void (*free)(type *); \ ^~~~ ../include/osmocom/ranap/RANAP_LeftMBMSBearerService-IEs.h:26:2: note: in expansion of macro ?A_SEQUENCE_OF? A_SEQUENCE_OF(struct MemberK { ^~~~~~~~~~~~~ ../include/osmocom/ranap/RANAP_UnsuccessfulLinking-IEs.h:27:23: warning: ?struct MemberD? declared inside parameter list will not be visible outside of this definition or declaration A_SEQUENCE_OF(struct MemberD { ^ :17:16: note: in definition of macro ?A_SET_OF? void (*free)(type *); \ ^~~~ ../include/osmocom/ranap/RANAP_UnsuccessfulLinking-IEs.h:27:2: note: in expansion of macro ?A_SEQUENCE_OF? A_SEQUENCE_OF(struct MemberD { ^~~~~~~~~~~~~ In file included from ../include/osmocom/ranap/ranap_common.h:592:0, from ranap_msg_factory.c:27: ../include/osmocom/ranap/ranap_ies_defs.h:126:0: warning: "ENHANCEDRELOCATIONCOMPLETEREQUESTIES_RANAP_EXTENDEDRNC_ID_PRESENT" redefined #define ENHANCEDRELOCATIONCOMPLETEREQUESTIES_RANAP_EXTENDEDRNC_ID_PRESENT (1 << 1) ../include/osmocom/ranap/ranap_ies_defs.h:125:0: note: this is the location of the previous definition #define ENHANCEDRELOCATIONCOMPLETEREQUESTIES_RANAP_EXTENDEDRNC_ID_PRESENT (1 << 0) ../include/osmocom/ranap/ranap_ies_defs.h:436:0: warning: "RANAP_ENHANCEDRELOCATIONINFORMATIONREQUESTIES_RANAP_IUSIGNALLINGCONNECTIONIDENTIFIER_PRESENT" redefined #define RANAP_ENHANCEDRELOCATIONINFORMATIONREQUESTIES_RANAP_IUSIGNALLINGCONNECTIONIDENTIFIER_PRESENT (1 << 2) ../include/osmocom/ranap/ranap_ies_defs.h:434:0: note: this is the location of the previous definition #define RANAP_ENHANCEDRELOCATIONINFORMATIONREQUESTIES_RANAP_IUSIGNALLINGCONNECTIONIDENTIFIER_PRESENT (1 << 0) ../include/osmocom/ranap/ranap_ies_defs.h:437:0: warning: "RANAP_ENHANCEDRELOCATIONINFORMATIONREQUESTIES_RANAP_GLOBALCN_ID_PRESENT" redefined #define RANAP_ENHANCEDRELOCATIONINFORMATIONREQUESTIES_RANAP_GLOBALCN_ID_PRESENT (1 << 3) ../include/osmocom/ranap/ranap_ies_defs.h:435:0: note: this is the location of the previous definition #define RANAP_ENHANCEDRELOCATIONINFORMATIONREQUESTIES_RANAP_GLOBALCN_ID_PRESENT (1 << 1) ../include/osmocom/ranap/RANAP_MessageStructure.h:27:23: warning: ?struct MemberL? declared inside parameter list will not be visible outside of this definition or declaration A_SEQUENCE_OF(struct MemberL { ^ :17:16: note: in definition of macro ?A_SET_OF? void (*free)(type *); \ ^~~~ ../include/osmocom/ranap/RANAP_MessageStructure.h:27:2: note: in expansion of macro ?A_SEQUENCE_OF? A_SEQUENCE_OF(struct MemberL { ^~~~~~~~~~~~~ ../include/osmocom/ranap/RANAP_PLMNs-in-shared-network.h:27:23: warning: ?struct MemberM? declared inside parameter list will not be visible outside of this definition or declaration A_SEQUENCE_OF(struct MemberM { ^ :17:16: note: in definition of macro ?A_SET_OF? void (*free)(type *); \ ^~~~ ../include/osmocom/ranap/RANAP_PLMNs-in-shared-network.h:27:2: note: in expansion of macro ?A_SEQUENCE_OF? A_SEQUENCE_OF(struct MemberM { ^~~~~~~~~~~~~ ../include/osmocom/ranap/RANAP_UnsuccessfulLinking-IEs.h:27:23: warning: ?struct MemberD? declared inside parameter list will not be visible outside of this definition or declaration A_SEQUENCE_OF(struct MemberD { ^ :17:16: note: in definition of macro ?A_SET_OF? void (*free)(type *); \ ^~~~ ../include/osmocom/ranap/RANAP_UnsuccessfulLinking-IEs.h:27:2: note: in expansion of macro ?A_SEQUENCE_OF? A_SEQUENCE_OF(struct MemberD { ^~~~~~~~~~~~~ In file included from ../include/osmocom/ranap/ranap_common.h:592:0, from ranap_common_cn.c:28: ../include/osmocom/ranap/ranap_ies_defs.h:126:0: warning: "ENHANCEDRELOCATIONCOMPLETEREQUESTIES_RANAP_EXTENDEDRNC_ID_PRESENT" redefined #define ENHANCEDRELOCATIONCOMPLETEREQUESTIES_RANAP_EXTENDEDRNC_ID_PRESENT (1 << 1) ../include/osmocom/ranap/ranap_ies_defs.h:125:0: note: this is the location of the previous definition #define ENHANCEDRELOCATIONCOMPLETEREQUESTIES_RANAP_EXTENDEDRNC_ID_PRESENT (1 << 0) ../include/osmocom/ranap/ranap_ies_defs.h:436:0: warning: "RANAP_ENHANCEDRELOCATIONINFORMATIONREQUESTIES_RANAP_IUSIGNALLINGCONNECTIONIDENTIFIER_PRESENT" redefined #define RANAP_ENHANCEDRELOCATIONINFORMATIONREQUESTIES_RANAP_IUSIGNALLINGCONNECTIONIDENTIFIER_PRESENT (1 << 2) ../include/osmocom/ranap/ranap_ies_defs.h:434:0: note: this is the location of the previous definition #define RANAP_ENHANCEDRELOCATIONINFORMATIONREQUESTIES_RANAP_IUSIGNALLINGCONNECTIONIDENTIFIER_PRESENT (1 << 0) ../include/osmocom/ranap/ranap_ies_defs.h:437:0: warning: "RANAP_ENHANCEDRELOCATIONINFORMATIONREQUESTIES_RANAP_GLOBALCN_ID_PRESENT" redefined #define RANAP_ENHANCEDRELOCATIONINFORMATIONREQUESTIES_RANAP_GLOBALCN_ID_PRESENT (1 << 3) ../include/osmocom/ranap/ranap_ies_defs.h:435:0: note: this is the location of the previous definition #define RANAP_ENHANCEDRELOCATIONINFORMATIONREQUESTIES_RANAP_GLOBALCN_ID_PRESENT (1 << 1) ../include/osmocom/ranap/RANAP_RABDataVolumeReport.h:27:23: warning: ?struct MemberN? declared inside parameter list will not be visible outside of this definition or declaration A_SEQUENCE_OF(struct MemberN { ^ :17:16: note: in definition of macro ?A_SET_OF? void (*free)(type *); \ ^~~~ ../include/osmocom/ranap/RANAP_RABDataVolumeReport.h:27:2: note: in expansion of macro ?A_SEQUENCE_OF? A_SEQUENCE_OF(struct MemberN { ^~~~~~~~~~~~~ ../include/osmocom/ranap/RANAP_RABParametersList.h:29:23: warning: ?struct MemberB? declared inside parameter list will not be visible outside of this definition or declaration A_SEQUENCE_OF(struct MemberB { ^ :17:16: note: in definition of macro ?A_SET_OF? void (*free)(type *); \ ^~~~ ../include/osmocom/ranap/RANAP_RABParametersList.h:29:2: note: in expansion of macro ?A_SEQUENCE_OF? A_SEQUENCE_OF(struct MemberB { ^~~~~~~~~~~~~ ../include/osmocom/ranap/RANAP_UnsuccessfulLinking-IEs.h:27:23: warning: ?struct MemberD? declared inside parameter list will not be visible outside of this definition or declaration A_SEQUENCE_OF(struct MemberD { ^ :17:16: note: in definition of macro ?A_SET_OF? void (*free)(type *); \ ^~~~ ../include/osmocom/ranap/RANAP_UnsuccessfulLinking-IEs.h:27:2: note: in expansion of macro ?A_SEQUENCE_OF? A_SEQUENCE_OF(struct MemberD { ^~~~~~~~~~~~~ In file included from ../include/osmocom/ranap/ranap_common.h:592:0, from ranap_common.c:26: ../include/osmocom/ranap/ranap_ies_defs.h:126:0: warning: "ENHANCEDRELOCATIONCOMPLETEREQUESTIES_RANAP_EXTENDEDRNC_ID_PRESENT" redefined #define ENHANCEDRELOCATIONCOMPLETEREQUESTIES_RANAP_EXTENDEDRNC_ID_PRESENT (1 << 1) ../include/osmocom/ranap/ranap_ies_defs.h:125:0: note: this is the location of the previous definition #define ENHANCEDRELOCATIONCOMPLETEREQUESTIES_RANAP_EXTENDEDRNC_ID_PRESENT (1 << 0) ../include/osmocom/ranap/ranap_ies_defs.h:436:0: warning: "RANAP_ENHANCEDRELOCATIONINFORMATIONREQUESTIES_RANAP_IUSIGNALLINGCONNECTIONIDENTIFIER_PRESENT" redefined #define RANAP_ENHANCEDRELOCATIONINFORMATIONREQUESTIES_RANAP_IUSIGNALLINGCONNECTIONIDENTIFIER_PRESENT (1 << 2) ../include/osmocom/ranap/ranap_ies_defs.h:434:0: note: this is the location of the previous definition #define RANAP_ENHANCEDRELOCATIONINFORMATIONREQUESTIES_RANAP_IUSIGNALLINGCONNECTIONIDENTIFIER_PRESENT (1 << 0) ../include/osmocom/ranap/ranap_ies_defs.h:437:0: warning: "RANAP_ENHANCEDRELOCATIONINFORMATIONREQUESTIES_RANAP_GLOBALCN_ID_PRESENT" redefined #define RANAP_ENHANCEDRELOCATIONINFORMATIONREQUESTIES_RANAP_GLOBALCN_ID_PRESENT (1 << 3) ../include/osmocom/ranap/ranap_ies_defs.h:435:0: note: this is the location of the previous definition #define RANAP_ENHANCEDRELOCATIONINFORMATIONREQUESTIES_RANAP_GLOBALCN_ID_PRESENT (1 << 1) In file included from ../include/osmocom/ranap/ranap_common.h:592:0, from ranap_decoder.c:7: ../include/osmocom/ranap/ranap_ies_defs.h:126:0: warning: "ENHANCEDRELOCATIONCOMPLETEREQUESTIES_RANAP_EXTENDEDRNC_ID_PRESENT" redefined #define ENHANCEDRELOCATIONCOMPLETEREQUESTIES_RANAP_EXTENDEDRNC_ID_PRESENT (1 << 1) ../include/osmocom/ranap/ranap_ies_defs.h:125:0: note: this is the location of the previous definition #define ENHANCEDRELOCATIONCOMPLETEREQUESTIES_RANAP_EXTENDEDRNC_ID_PRESENT (1 << 0) ../include/osmocom/ranap/ranap_ies_defs.h:436:0: warning: "RANAP_ENHANCEDRELOCATIONINFORMATIONREQUESTIES_RANAP_IUSIGNALLINGCONNECTIONIDENTIFIER_PRESENT" redefined #define RANAP_ENHANCEDRELOCATIONINFORMATIONREQUESTIES_RANAP_IUSIGNALLINGCONNECTIONIDENTIFIER_PRESENT (1 << 2) ../include/osmocom/ranap/ranap_ies_defs.h:434:0: note: this is the location of the previous definition #define RANAP_ENHANCEDRELOCATIONINFORMATIONREQUESTIES_RANAP_IUSIGNALLINGCONNECTIONIDENTIFIER_PRESENT (1 << 0) ../include/osmocom/ranap/ranap_ies_defs.h:437:0: warning: "RANAP_ENHANCEDRELOCATIONINFORMATIONREQUESTIES_RANAP_GLOBALCN_ID_PRESENT" redefined #define RANAP_ENHANCEDRELOCATIONINFORMATIONREQUESTIES_RANAP_GLOBALCN_ID_PRESENT (1 << 3) ../include/osmocom/ranap/ranap_ies_defs.h:435:0: note: this is the location of the previous definition #define RANAP_ENHANCEDRELOCATIONINFORMATIONREQUESTIES_RANAP_GLOBALCN_ID_PRESENT (1 << 1) make[4]: Leaving directory ' Makefile:641: recipe for target 'all-recursive' failed make[3]: *** [all-recursive] Error 1 make[3]: Leaving directory ' Makefile:453: recipe for target 'all' failed make[2]: *** [all] Error 2 make[2]: Leaving directory ' Makefile:454: recipe for target 'all-recursive' failed make[1]: *** [all-recursive] Error 1 make[1]: Leaving directory ' Makefile:378: recipe for target 'all' failed make: *** [all] Error 2 Build step 'Execute shell' marked build as failure [WARNINGS]Skipping publisher since build result is FAILURE From jenkins at lists.osmocom.org Sun Apr 15 06:20:10 2018 From: jenkins at lists.osmocom.org (jenkins at lists.osmocom.org) Date: Sun, 15 Apr 2018 06:20:10 +0000 (UTC) Subject: =?UTF-8?Q?Jenkins_build_is_back_to_normal_:_master-osmo-iuh_=C2=BB_a1=3Dd?= =?UTF-8?Q?efault,a2=3Ddefault,a3=3Ddefault,osmocom-master-debian9_#933?= In-Reply-To: <303523275.317.1523753686632.JavaMail.jenkins@jenkins.osmocom.org> References: <303523275.317.1523753686632.JavaMail.jenkins@jenkins.osmocom.org> Message-ID: <139462785.324.1523773210819.JavaMail.jenkins@jenkins.osmocom.org> See From gerrit-no-reply at lists.osmocom.org Sun Apr 15 07:28:44 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Sun, 15 Apr 2018 07:28:44 +0000 Subject: osmocom-bb[fixeria/trx]: trxcon/scheduler: fix Measurement Reporting on SACCH In-Reply-To: References: Message-ID: Patch Set 1: I think the main problem here is that you're missing the L1 header in this message. A SACCH message doesn't have a 23byte LAPDm message, but only a 21 byte LAPDm message prefixed by a 2-byte Layer1 header. So now the first two bytes of your frame are misinterpreted as L1 header. -- To view, visit https://gerrit.osmocom.org/7470 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: If1b8dc74ced746d6270676fdde75fcda32f91a3d Gerrit-PatchSet: 1 Gerrit-Project: osmocom-bb Gerrit-Branch: fixeria/trx Gerrit-Owner: Vadim Yanitskiy Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Vadim Yanitskiy Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Sun Apr 15 08:11:47 2018 From: gerrit-no-reply at lists.osmocom.org (Vadim Yanitskiy) Date: Sun, 15 Apr 2018 08:11:47 +0000 Subject: osmocom-bb[fixeria/trx]: trxcon/scheduler: fix Measurement Reporting on SACCH In-Reply-To: References: Message-ID: Patch Set 1: > I think the main problem here is that you're missing the L1 header It's a problem of the current master. If you apply this change, it should work, but there are some disadvantages of this approach: - Both actual Timing Advance and MS Power level are used, while the higher layers may send Measurement Reports with spoofed value. - The Measurement Reports coming from the higher layers may contain neighbour measurements, while the messages being sent by trxcon (see sched_prim_sacch()) doesn't. So, what I am going to do is to store a last Measurement Report somewhere, and transmit it until a new one is arrived from the higher layers. Probably, some parts of the Measurement Reporting implementation should be moved to L1, i.e. to the firmware, trxcon and VIRT-PHY. This way each Measurement Report would always contain the actual measurement results at the moment of transmission... -- To view, visit https://gerrit.osmocom.org/7470 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: If1b8dc74ced746d6270676fdde75fcda32f91a3d Gerrit-PatchSet: 1 Gerrit-Project: osmocom-bb Gerrit-Branch: fixeria/trx Gerrit-Owner: Vadim Yanitskiy Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Vadim Yanitskiy Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Sun Apr 15 09:08:33 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Sun, 15 Apr 2018 09:08:33 +0000 Subject: [PATCH] osmo-ttcn3-hacks[master]: deps: Use upstream titan.TestPorts.UNIX_DOMAIN_SOCKETasp again Message-ID: Review at https://gerrit.osmocom.org/7805 deps: Use upstream titan.TestPorts.UNIX_DOMAIN_SOCKETasp again Our patch has been merged upstream, there's no need for using our forked repository anymore. Change-Id: Ibfbc5d1457181fd6c893993e4a34fdb2fb3baa92 --- M deps/Makefile 1 file changed, 2 insertions(+), 2 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-ttcn3-hacks refs/changes/05/7805/1 diff --git a/deps/Makefile b/deps/Makefile index bf2211b..d09d917 100644 --- a/deps/Makefile +++ b/deps/Makefile @@ -19,7 +19,8 @@ titan.TestPorts.SIPmsg \ titan.TestPorts.TCPasp \ titan.TestPorts.TELNETasp \ - titan.TestPorts.UDPasp + titan.TestPorts.UDPasp \ + titan.TestPorts.UNIX_DOMAIN_SOCKETasp ECLIPSEGIT2_REPOS= titan.ProtocolModules.GRE \ titan.ProtocolModules.M2PA \ @@ -41,7 +42,6 @@ OSMOGITHUB_REPOS= titan.TestPorts.SCTPasp \ titan.TestPorts.MTP3asp \ - titan.TestPorts.UNIX_DOMAIN_SOCKETasp \ titan.ProtocolModules.SMPP \ titan.ProtocolEmulations.M3UA -- To view, visit https://gerrit.osmocom.org/7805 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Ibfbc5d1457181fd6c893993e4a34fdb2fb3baa92 Gerrit-PatchSet: 1 Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Owner: Harald Welte From gerrit-no-reply at lists.osmocom.org Sun Apr 15 09:08:33 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Sun, 15 Apr 2018 09:08:33 +0000 Subject: [PATCH] osmo-ttcn3-hacks[master]: L1CTL: Correctly parse L1CTL messages with zero-length payload Message-ID: Review at https://gerrit.osmocom.org/7806 L1CTL: Correctly parse L1CTL messages with zero-length payload Some messages can happen with zero-length payload section, e.g. a DL_DATA_IND with CRC errors. Change-Id: Ice1d872c12fb33bc4e2d285870fdb877f6efe355 --- M library/L1CTL_Types.ttcn 1 file changed, 3 insertions(+), 3 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-ttcn3-hacks refs/changes/06/7806/1 diff --git a/library/L1CTL_Types.ttcn b/library/L1CTL_Types.ttcn index 7403099..4c0e14d 100644 --- a/library/L1CTL_Types.ttcn +++ b/library/L1CTL_Types.ttcn @@ -170,7 +170,7 @@ type record L1ctlDlMessage { L1ctlHeader header, L1ctlDlInfo dl_info optional, - L1ctlDlPayload payload + L1ctlDlPayload payload optional } with { variant (dl_info) "PRESENCE(header.msg_type = L1CTL_FBSB_CONF, header.msg_type = L1CTL_RACH_CONF, header.msg_type = L1CTL_DATA_IND, @@ -442,7 +442,7 @@ template L1ctlDlMessage tr_L1CTL_MsgType(template L1ctlMsgType msg_type) := { header := tr_L1ctlHeader(msg_type), dl_info := *, - payload := ? + payload := * } template L1ctlDlMessage tr_L1CTL_CCCH_MODE_CONF := tr_L1CTL_MsgType(L1CTL_CCCH_MODE_CONF); @@ -604,7 +604,7 @@ template L1ctlDlMessage tr_L1CTL_RACH_CONF := { header := tr_L1ctlHeader(L1CTL_RACH_CONF), dl_info := ?, - payload := ? + payload := * }; /* for matching against incoming DATA_IND */ -- To view, visit https://gerrit.osmocom.org/7806 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Ice1d872c12fb33bc4e2d285870fdb877f6efe355 Gerrit-PatchSet: 1 Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Owner: Harald Welte From gerrit-no-reply at lists.osmocom.org Sun Apr 15 09:09:34 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Sun, 15 Apr 2018 09:09:34 +0000 Subject: [PATCH] osmocom-bb[master]: trxcon: Prefix SACCH fill frame with L1 header Message-ID: Review at https://gerrit.osmocom.org/7807 trxcon: Prefix SACCH fill frame with L1 header The main problem here is that the existing implementatin missing the L1 header in this message. A SACCH message doesn't have a 23byte LAPDm message, but only a 21 byte LAPDm message prefixed by a 2-byte Layer1 header. So on the receiver in the BTS, right now the first two bytes of the UL SACCH frame are misinterpreted as L1 header. This it what causes RLL ERROR INDICATION on the Abis side, which is why our BTS_Tests fail. Change-Id: Id7776bf3604d0e8a32e04547e01b8bd377903272 Related: OS#3170 --- M src/host/trxcon/sched_prim.c 1 file changed, 12 insertions(+), 2 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmocom-bb refs/changes/07/7807/1 diff --git a/src/host/trxcon/sched_prim.c b/src/host/trxcon/sched_prim.c index e1c87bb..2ee06d7 100644 --- a/src/host/trxcon/sched_prim.c +++ b/src/host/trxcon/sched_prim.c @@ -275,8 +275,18 @@ /* FIXME: should we do anything for CSD? */ return 0; } else { + uint8_t *cur = prim_buffer; + + if (CHAN_IS_SACCH(chan)) { + /* Add 2-byte SACCH header */ + /* FIXME: How to get TA and MS Tx Power from l1l->trx->tx_power + l1l->trx->ta? */ + cur[0] = cur[1] = 0x00; + cur += 2; + } + /* Copy a fill frame payload */ - memcpy(prim_buffer, lapdm_fill_frame, sizeof(lapdm_fill_frame)); + memcpy(cur, lapdm_fill_frame, sizeof(lapdm_fill_frame)); + cur += sizeof(lapdm_fill_frame); /** * TS 144.006, section 5.2 "Frame delimitation and fill bits" @@ -284,7 +294,7 @@ * be set to the binary value "00101011", each fill bit should * be set to a random value when sent by the network. */ - for (i = sizeof(lapdm_fill_frame); i < GSM_MACBLOCK_LEN; i++) + for (i = cur - prim_buffer; i < GSM_MACBLOCK_LEN; i++) prim_buffer[i] = (uint8_t) rand(); /* Define a prim length */ -- To view, visit https://gerrit.osmocom.org/7807 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Id7776bf3604d0e8a32e04547e01b8bd377903272 Gerrit-PatchSet: 1 Gerrit-Project: osmocom-bb Gerrit-Branch: master Gerrit-Owner: Harald Welte From gerrit-no-reply at lists.osmocom.org Sun Apr 15 09:09:44 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Sun, 15 Apr 2018 09:09:44 +0000 Subject: osmo-ttcn3-hacks[master]: deps: Use upstream titan.TestPorts.UNIX_DOMAIN_SOCKETasp again In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7805 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Ibfbc5d1457181fd6c893993e4a34fdb2fb3baa92 Gerrit-PatchSet: 1 Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Owner: Harald Welte Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Sun Apr 15 09:09:46 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Sun, 15 Apr 2018 09:09:46 +0000 Subject: osmo-ttcn3-hacks[master]: L1CTL: Correctly parse L1CTL messages with zero-length payload In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7806 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Ice1d872c12fb33bc4e2d285870fdb877f6efe355 Gerrit-PatchSet: 1 Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Owner: Harald Welte Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Sun Apr 15 09:09:47 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Sun, 15 Apr 2018 09:09:47 +0000 Subject: [MERGED] osmo-ttcn3-hacks[master]: L1CTL: Correctly parse L1CTL messages with zero-length payload In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: L1CTL: Correctly parse L1CTL messages with zero-length payload ...................................................................... L1CTL: Correctly parse L1CTL messages with zero-length payload Some messages can happen with zero-length payload section, e.g. a DL_DATA_IND with CRC errors. Change-Id: Ice1d872c12fb33bc4e2d285870fdb877f6efe355 --- M library/L1CTL_Types.ttcn 1 file changed, 3 insertions(+), 3 deletions(-) Approvals: Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/library/L1CTL_Types.ttcn b/library/L1CTL_Types.ttcn index 7403099..4c0e14d 100644 --- a/library/L1CTL_Types.ttcn +++ b/library/L1CTL_Types.ttcn @@ -170,7 +170,7 @@ type record L1ctlDlMessage { L1ctlHeader header, L1ctlDlInfo dl_info optional, - L1ctlDlPayload payload + L1ctlDlPayload payload optional } with { variant (dl_info) "PRESENCE(header.msg_type = L1CTL_FBSB_CONF, header.msg_type = L1CTL_RACH_CONF, header.msg_type = L1CTL_DATA_IND, @@ -442,7 +442,7 @@ template L1ctlDlMessage tr_L1CTL_MsgType(template L1ctlMsgType msg_type) := { header := tr_L1ctlHeader(msg_type), dl_info := *, - payload := ? + payload := * } template L1ctlDlMessage tr_L1CTL_CCCH_MODE_CONF := tr_L1CTL_MsgType(L1CTL_CCCH_MODE_CONF); @@ -604,7 +604,7 @@ template L1ctlDlMessage tr_L1CTL_RACH_CONF := { header := tr_L1ctlHeader(L1CTL_RACH_CONF), dl_info := ?, - payload := ? + payload := * }; /* for matching against incoming DATA_IND */ -- To view, visit https://gerrit.osmocom.org/7806 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: Ice1d872c12fb33bc4e2d285870fdb877f6efe355 Gerrit-PatchSet: 1 Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Owner: Harald Welte Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder From gerrit-no-reply at lists.osmocom.org Sun Apr 15 09:09:49 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Sun, 15 Apr 2018 09:09:49 +0000 Subject: [MERGED] osmo-ttcn3-hacks[master]: deps: Use upstream titan.TestPorts.UNIX_DOMAIN_SOCKETasp again In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: deps: Use upstream titan.TestPorts.UNIX_DOMAIN_SOCKETasp again ...................................................................... deps: Use upstream titan.TestPorts.UNIX_DOMAIN_SOCKETasp again Our patch has been merged upstream, there's no need for using our forked repository anymore. Change-Id: Ibfbc5d1457181fd6c893993e4a34fdb2fb3baa92 --- M deps/Makefile 1 file changed, 2 insertions(+), 2 deletions(-) Approvals: Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/deps/Makefile b/deps/Makefile index bf2211b..d09d917 100644 --- a/deps/Makefile +++ b/deps/Makefile @@ -19,7 +19,8 @@ titan.TestPorts.SIPmsg \ titan.TestPorts.TCPasp \ titan.TestPorts.TELNETasp \ - titan.TestPorts.UDPasp + titan.TestPorts.UDPasp \ + titan.TestPorts.UNIX_DOMAIN_SOCKETasp ECLIPSEGIT2_REPOS= titan.ProtocolModules.GRE \ titan.ProtocolModules.M2PA \ @@ -41,7 +42,6 @@ OSMOGITHUB_REPOS= titan.TestPorts.SCTPasp \ titan.TestPorts.MTP3asp \ - titan.TestPorts.UNIX_DOMAIN_SOCKETasp \ titan.ProtocolModules.SMPP \ titan.ProtocolEmulations.M3UA -- To view, visit https://gerrit.osmocom.org/7805 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: Ibfbc5d1457181fd6c893993e4a34fdb2fb3baa92 Gerrit-PatchSet: 1 Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Owner: Harald Welte Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder From gerrit-no-reply at lists.osmocom.org Sun Apr 15 09:11:09 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Sun, 15 Apr 2018 09:11:09 +0000 Subject: osmocom-bb[master]: trxcon: Prefix SACCH fill frame with L1 header In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7807 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Id7776bf3604d0e8a32e04547e01b8bd377903272 Gerrit-PatchSet: 1 Gerrit-Project: osmocom-bb Gerrit-Branch: master Gerrit-Owner: Harald Welte Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: fixeria Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Sun Apr 15 09:11:12 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Sun, 15 Apr 2018 09:11:12 +0000 Subject: [MERGED] osmocom-bb[master]: trxcon: Prefix SACCH fill frame with L1 header In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: trxcon: Prefix SACCH fill frame with L1 header ...................................................................... trxcon: Prefix SACCH fill frame with L1 header The main problem here is that the existing implementatin missing the L1 header in this message. A SACCH message doesn't have a 23byte LAPDm message, but only a 21 byte LAPDm message prefixed by a 2-byte Layer1 header. So on the receiver in the BTS, right now the first two bytes of the UL SACCH frame are misinterpreted as L1 header. This it what causes RLL ERROR INDICATION on the Abis side, which is why our BTS_Tests fail. Change-Id: Id7776bf3604d0e8a32e04547e01b8bd377903272 Related: OS#3170 --- M src/host/trxcon/sched_prim.c 1 file changed, 12 insertions(+), 2 deletions(-) Approvals: Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/src/host/trxcon/sched_prim.c b/src/host/trxcon/sched_prim.c index e1c87bb..2ee06d7 100644 --- a/src/host/trxcon/sched_prim.c +++ b/src/host/trxcon/sched_prim.c @@ -275,8 +275,18 @@ /* FIXME: should we do anything for CSD? */ return 0; } else { + uint8_t *cur = prim_buffer; + + if (CHAN_IS_SACCH(chan)) { + /* Add 2-byte SACCH header */ + /* FIXME: How to get TA and MS Tx Power from l1l->trx->tx_power + l1l->trx->ta? */ + cur[0] = cur[1] = 0x00; + cur += 2; + } + /* Copy a fill frame payload */ - memcpy(prim_buffer, lapdm_fill_frame, sizeof(lapdm_fill_frame)); + memcpy(cur, lapdm_fill_frame, sizeof(lapdm_fill_frame)); + cur += sizeof(lapdm_fill_frame); /** * TS 144.006, section 5.2 "Frame delimitation and fill bits" @@ -284,7 +294,7 @@ * be set to the binary value "00101011", each fill bit should * be set to a random value when sent by the network. */ - for (i = sizeof(lapdm_fill_frame); i < GSM_MACBLOCK_LEN; i++) + for (i = cur - prim_buffer; i < GSM_MACBLOCK_LEN; i++) prim_buffer[i] = (uint8_t) rand(); /* Define a prim length */ -- To view, visit https://gerrit.osmocom.org/7807 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: Id7776bf3604d0e8a32e04547e01b8bd377903272 Gerrit-PatchSet: 1 Gerrit-Project: osmocom-bb Gerrit-Branch: master Gerrit-Owner: Harald Welte Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: fixeria From gerrit-no-reply at lists.osmocom.org Sun Apr 15 13:36:30 2018 From: gerrit-no-reply at lists.osmocom.org (Vadim Yanitskiy) Date: Sun, 15 Apr 2018 13:36:30 +0000 Subject: [PATCH] osmocom-bb[master]: VIRT_PHY: add missing L1CTL_BURST_IND to l1ctlPrimNames Message-ID: Review at https://gerrit.osmocom.org/7808 VIRT_PHY: add missing L1CTL_BURST_IND to l1ctlPrimNames Change-Id: I442305c034bbba5eaed080fb262a61895623eb4f --- M src/host/virt_phy/src/logging.c 1 file changed, 1 insertion(+), 0 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmocom-bb refs/changes/08/7808/1 diff --git a/src/host/virt_phy/src/logging.c b/src/host/virt_phy/src/logging.c index 631a6e6..a3e63bc 100644 --- a/src/host/virt_phy/src/logging.c +++ b/src/host/virt_phy/src/logging.c @@ -57,6 +57,7 @@ "L1CTL_TRAFFIC_REQ", "L1CTL_TRAFFIC_CONF", "L1CTL_TRAFFIC_IND", + "L1CTL_BURST_IND", "L1CTL_TBF_CFG_REQ", "L1CTL_TBF_CFG_CONF", "L1CTL_DATA_TBF_REQ", -- To view, visit https://gerrit.osmocom.org/7808 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I442305c034bbba5eaed080fb262a61895623eb4f Gerrit-PatchSet: 1 Gerrit-Project: osmocom-bb Gerrit-Branch: master Gerrit-Owner: Vadim Yanitskiy From gerrit-no-reply at lists.osmocom.org Sun Apr 15 14:25:53 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Sun, 15 Apr 2018 14:25:53 +0000 Subject: [PATCH] osmo-ttcn3-hacks[master]: RSL_Emulation: Less verbose logging Message-ID: Review at https://gerrit.osmocom.org/7809 RSL_Emulation: Less verbose logging Don't use explicit log() statements for normal message forwarding between ports. This will be visible in the automatically-generated log statements anyway... Change-Id: Idcfb1897dd00df1839cf1a0182a5a030bf71c0cb --- M library/RSL_Emulation.ttcn 1 file changed, 0 insertions(+), 4 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-ttcn3-hacks refs/changes/09/7809/1 diff --git a/library/RSL_Emulation.ttcn b/library/RSL_Emulation.ttcn index b743d60..3ad062b 100644 --- a/library/RSL_Emulation.ttcn +++ b/library/RSL_Emulation.ttcn @@ -354,7 +354,6 @@ var GsmRrMessage rr; var OCT1 ra; var GsmFrameNumber fn; - log("IMM ASS INFO ", rx_rsl.rsl.ies[1].body); rr := dec_GsmRrMessage(rx_rsl.rsl.ies[1].body.full_imm_ass_info.payload); if (ischosen(rr.payload.imm_ass)) { ra := bit2oct(rr.payload.imm_ass.req_ref.ra); @@ -389,7 +388,6 @@ } [bts_role] IPA_PT.receive(tr_RSL(tr_RSL_PAGING_CMD(?, ?))) -> value rx_rsl { - log("PAGING IDENTITY ", rx_rsl.rsl.ies[2].body.other); /* broadcast to all clients? */ for (i := 0; i < sizeof(ConnectionTable); i := i + 1) { if (ispresent(ConnectionTable[i].comp_ref)) { @@ -400,13 +398,11 @@ /* Forward common channel management to the special port for it */ [] IPA_PT.receive(tr_RSL(tr_RSL_MsgTypeT(?))) -> value rx_rsl { - log("Forwarding TRX Mgmt ", rx_rsl.rsl); CCHAN_PT.send(rx_rsl); } /* Forward common channel management to the special port for it */ [] IPA_PT.receive(tr_RSL(tr_RSL_MsgTypeC(?))) -> value rx_rsl { - log("Forwarding Common Channel Mgmt ", rx_rsl.rsl); CCHAN_PT.send(rx_rsl); } -- To view, visit https://gerrit.osmocom.org/7809 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Idcfb1897dd00df1839cf1a0182a5a030bf71c0cb Gerrit-PatchSet: 1 Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Owner: Harald Welte From gerrit-no-reply at lists.osmocom.org Sun Apr 15 14:25:53 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Sun, 15 Apr 2018 14:25:53 +0000 Subject: [PATCH] osmo-ttcn3-hacks[master]: bts: Fix SI13 related scheduling tests Message-ID: Review at https://gerrit.osmocom.org/7810 bts: Fix SI13 related scheduling tests Closes: OS#3027 Change-Id: I9363763035007bd11877b867fe360c3614e4c7ce --- M bts/BTS_Tests.ttcn 1 file changed, 2 insertions(+), 2 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-ttcn3-hacks refs/changes/10/7810/1 diff --git a/bts/BTS_Tests.ttcn b/bts/BTS_Tests.ttcn index 6f34e03..14e51eb 100644 --- a/bts/BTS_Tests.ttcn +++ b/bts/BTS_Tests.ttcn @@ -2107,7 +2107,7 @@ testcase TC_si_sched_13() runs on test_CT { f_init(); si_cfg.si13_present := true; - //f_rsl_bcch_fill_raw(RSL_SYSTEM_INFO_13, fixme); + f_rsl_bcch_fill_raw(RSL_SYSTEM_INFO_13, '0106009000185a6fc9e08410ab2b2b2b2b2b2b2b2b2b2b'O); f_TC_si_sched(); f_shutdown(); } @@ -2121,7 +2121,7 @@ si_cfg.si2quater_present := true; f_rsl_bcch_fill_raw(RSL_SYSTEM_INFO_2quater, '050607a8a0364aa698d72ff424feee0506d5e7fff02043'O); si_cfg.si13_present := true; - //f_rsl_bcch_fill_raw(RSL_SYSTEM_INFO_13, fixme); + f_rsl_bcch_fill_raw(RSL_SYSTEM_INFO_13, '0106009000185a6fc9e08410ab2b2b2b2b2b2b2b2b2b2b'O); f_TC_si_sched(); f_shutdown(); } -- To view, visit https://gerrit.osmocom.org/7810 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I9363763035007bd11877b867fe360c3614e4c7ce Gerrit-PatchSet: 1 Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Owner: Harald Welte From gerrit-no-reply at lists.osmocom.org Sun Apr 15 14:26:21 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Sun, 15 Apr 2018 14:26:21 +0000 Subject: osmo-ttcn3-hacks[master]: RSL_Emulation: Less verbose logging In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7809 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Idcfb1897dd00df1839cf1a0182a5a030bf71c0cb Gerrit-PatchSet: 1 Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Owner: Harald Welte Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Sun Apr 15 14:26:24 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Sun, 15 Apr 2018 14:26:24 +0000 Subject: osmo-ttcn3-hacks[master]: bts: Fix SI13 related scheduling tests In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7810 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I9363763035007bd11877b867fe360c3614e4c7ce Gerrit-PatchSet: 1 Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Owner: Harald Welte Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Sun Apr 15 14:26:26 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Sun, 15 Apr 2018 14:26:26 +0000 Subject: [MERGED] osmo-ttcn3-hacks[master]: bts: Fix SI13 related scheduling tests In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: bts: Fix SI13 related scheduling tests ...................................................................... bts: Fix SI13 related scheduling tests Closes: OS#3027 Change-Id: I9363763035007bd11877b867fe360c3614e4c7ce --- M bts/BTS_Tests.ttcn 1 file changed, 2 insertions(+), 2 deletions(-) Approvals: Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/bts/BTS_Tests.ttcn b/bts/BTS_Tests.ttcn index 6f34e03..14e51eb 100644 --- a/bts/BTS_Tests.ttcn +++ b/bts/BTS_Tests.ttcn @@ -2107,7 +2107,7 @@ testcase TC_si_sched_13() runs on test_CT { f_init(); si_cfg.si13_present := true; - //f_rsl_bcch_fill_raw(RSL_SYSTEM_INFO_13, fixme); + f_rsl_bcch_fill_raw(RSL_SYSTEM_INFO_13, '0106009000185a6fc9e08410ab2b2b2b2b2b2b2b2b2b2b'O); f_TC_si_sched(); f_shutdown(); } @@ -2121,7 +2121,7 @@ si_cfg.si2quater_present := true; f_rsl_bcch_fill_raw(RSL_SYSTEM_INFO_2quater, '050607a8a0364aa698d72ff424feee0506d5e7fff02043'O); si_cfg.si13_present := true; - //f_rsl_bcch_fill_raw(RSL_SYSTEM_INFO_13, fixme); + f_rsl_bcch_fill_raw(RSL_SYSTEM_INFO_13, '0106009000185a6fc9e08410ab2b2b2b2b2b2b2b2b2b2b'O); f_TC_si_sched(); f_shutdown(); } -- To view, visit https://gerrit.osmocom.org/7810 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: I9363763035007bd11877b867fe360c3614e4c7ce Gerrit-PatchSet: 1 Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Owner: Harald Welte Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder From gerrit-no-reply at lists.osmocom.org Sun Apr 15 14:26:26 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Sun, 15 Apr 2018 14:26:26 +0000 Subject: [MERGED] osmo-ttcn3-hacks[master]: RSL_Emulation: Less verbose logging In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: RSL_Emulation: Less verbose logging ...................................................................... RSL_Emulation: Less verbose logging Don't use explicit log() statements for normal message forwarding between ports. This will be visible in the automatically-generated log statements anyway... Change-Id: Idcfb1897dd00df1839cf1a0182a5a030bf71c0cb --- M library/RSL_Emulation.ttcn 1 file changed, 0 insertions(+), 4 deletions(-) Approvals: Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/library/RSL_Emulation.ttcn b/library/RSL_Emulation.ttcn index b743d60..3ad062b 100644 --- a/library/RSL_Emulation.ttcn +++ b/library/RSL_Emulation.ttcn @@ -354,7 +354,6 @@ var GsmRrMessage rr; var OCT1 ra; var GsmFrameNumber fn; - log("IMM ASS INFO ", rx_rsl.rsl.ies[1].body); rr := dec_GsmRrMessage(rx_rsl.rsl.ies[1].body.full_imm_ass_info.payload); if (ischosen(rr.payload.imm_ass)) { ra := bit2oct(rr.payload.imm_ass.req_ref.ra); @@ -389,7 +388,6 @@ } [bts_role] IPA_PT.receive(tr_RSL(tr_RSL_PAGING_CMD(?, ?))) -> value rx_rsl { - log("PAGING IDENTITY ", rx_rsl.rsl.ies[2].body.other); /* broadcast to all clients? */ for (i := 0; i < sizeof(ConnectionTable); i := i + 1) { if (ispresent(ConnectionTable[i].comp_ref)) { @@ -400,13 +398,11 @@ /* Forward common channel management to the special port for it */ [] IPA_PT.receive(tr_RSL(tr_RSL_MsgTypeT(?))) -> value rx_rsl { - log("Forwarding TRX Mgmt ", rx_rsl.rsl); CCHAN_PT.send(rx_rsl); } /* Forward common channel management to the special port for it */ [] IPA_PT.receive(tr_RSL(tr_RSL_MsgTypeC(?))) -> value rx_rsl { - log("Forwarding Common Channel Mgmt ", rx_rsl.rsl); CCHAN_PT.send(rx_rsl); } -- To view, visit https://gerrit.osmocom.org/7809 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: Idcfb1897dd00df1839cf1a0182a5a030bf71c0cb Gerrit-PatchSet: 1 Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Owner: Harald Welte Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder From jenkins at lists.osmocom.org Sun Apr 15 15:10:06 2018 From: jenkins at lists.osmocom.org (jenkins at lists.osmocom.org) Date: Sun, 15 Apr 2018 15:10:06 +0000 (UTC) Subject: =?UTF-8?Q?Build_failed_in_Jenkins:_master-asn1c_=C2=BB_a1=3Ddefaul?= =?UTF-8?Q?t,a2=3Ddefault,a3=3Ddefault,osmocom-master-debian9_#92?= In-Reply-To: <458280551.314.1523718606706.JavaMail.jenkins@jenkins.osmocom.org> References: <458280551.314.1523718606706.JavaMail.jenkins@jenkins.osmocom.org> Message-ID: <1659048997.329.1523805006816.JavaMail.jenkins@jenkins.osmocom.org> See ------------------------------------------ [...truncated 3.74 KB...] checking build system type... x86_64-unknown-linux-gnu checking host system type... x86_64-unknown-linux-gnu checking target system type... x86_64-unknown-linux-gnu checking for a BSD-compatible install... /usr/bin/install -c checking whether build environment is sane... yes checking for gawk... gawk checking whether make sets $(MAKE)... yes checking whether to enable maintainer-specific portions of Makefiles... no checking for style of include used by make... GNU checking for gcc... gcc checking for C compiler default output file name... a.out checking whether the C compiler works... yes checking whether we are cross compiling... no checking for suffix of executables... checking for suffix of object files... o checking whether we are using the GNU C compiler... yes checking whether gcc accepts -g... yes checking for gcc option to accept ISO C89... none needed checking dependency style of gcc... gcc3 checking for a sed that does not truncate output... /bin/sed checking for grep that handles long lines and -e... /bin/grep checking for egrep... /bin/grep -E checking for ld used by gcc... /usr/bin/ld checking if the linker (/usr/bin/ld) is GNU ld... yes checking for /usr/bin/ld option to reload object files... -r checking for BSD-compatible nm... /usr/bin/nm -B checking whether ln -s works... yes checking how to recognise dependent libraries... pass_all checking how to run the C preprocessor... gcc -E checking for ANSI C header files... yes checking for sys/types.h... yes checking for sys/stat.h... yes checking for stdlib.h... yes checking for string.h... yes checking for memory.h... yes checking for strings.h... yes checking for inttypes.h... yes checking for stdint.h... yes checking for unistd.h... yes checking dlfcn.h usability... yes checking dlfcn.h presence... yes checking for dlfcn.h... yes checking for g++... g++ checking whether we are using the GNU C++ compiler... yes checking whether g++ accepts -g... yes checking dependency style of g++... gcc3 checking how to run the C++ preprocessor... g++ -E checking for g77... no checking for f77... no checking for xlf... no checking for frt... no checking for pgf77... no checking for cf77... no checking for fort77... no checking for fl32... no checking for af77... no checking for f90... no checking for xlf90... no checking for pgf90... no checking for pghpf... no checking for epcf90... no checking for gfortran... no checking for g95... no checking for f95... no checking for fort... no checking for xlf95... no checking for ifort... no checking for ifc... no checking for efc... no checking for pgf95... no checking for lf95... no checking for ftn... no checking whether we are using the GNU Fortran 77 compiler... no checking whether accepts -g... no checking the maximum length of command line arguments... 32768 checking command to parse /usr/bin/nm -B output from gcc object... ok checking for objdir... .libs checking for ar... ar checking for ranlib... ranlib checking for strip... strip checking if gcc supports -fno-rtti -fno-exceptions... no checking for gcc option to produce PIC... -fPIC checking if gcc PIC flag -fPIC works... yes checking if gcc static flag -static works... yes checking if gcc supports -c -o file.o... yes checking whether the gcc linker (/usr/bin/ld -m elf_x86_64) supports shared libraries... yes checking whether -lc should be explicitly linked in... no checking dynamic linker characteristics... GNU/Linux ld.so checking how to hardcode library paths into programs... immediate checking whether stripping libraries is possible... yes checking if libtool supports shared libraries... yes checking whether to build shared libraries... yes checking whether to build static libraries... yes configure: creating libtool appending configuration tag "CXX" to libtool checking for ld used by g++... /usr/bin/ld -m elf_x86_64 checking if the linker (/usr/bin/ld -m elf_x86_64) is GNU ld... yes checking whether the g++ linker (/usr/bin/ld -m elf_x86_64) supports shared libraries... yes checking for g++ option to produce PIC... -fPIC checking if g++ PIC flag -fPIC works... yes checking if g++ static flag -static works... yes checking if g++ supports -c -o file.o... yes checking whether the g++ linker (/usr/bin/ld -m elf_x86_64) supports shared libraries... yes checking dynamic linker characteristics... GNU/Linux ld.so checking how to hardcode library paths into programs... immediate appending configuration tag "F77" to libtool checking for autoconf... /usr/bin/autoconf checking for autoheader... /usr/bin/autoheader checking for gcc... (cached) gcc checking whether we are using the GNU C compiler... (cached) yes checking whether gcc accepts -g... (cached) yes checking for gcc option to accept ISO C89... (cached) none needed checking dependency style of gcc... (cached) gcc3 checking how to run the C preprocessor... gcc -E checking for a BSD-compatible install... /usr/bin/install -c checking whether ln -s works... yes checking whether make sets $(MAKE)... (cached) yes checking for bison... bison -y checking for flex... flex checking for yywrap in -lfl... yes checking lex output file root... lex.yy checking whether yytext is a pointer... yes checking for ar... /usr/bin/ar checking for ANSI C header files... (cached) yes checking sys/param.h usability... yes checking sys/param.h presence... yes checking for sys/param.h... yes checking whether byte ordering is bigendian... no checking for off_t... yes checking for size_t... yes checking whether struct tm is in sys/time.h or time.h... time.h checking for intmax_t... yes checking for library containing getopt... none required checking for strtoimax... yes checking for strtoll... yes checking for mergesort... no checking for mkstemps... yes configure: creating ./config.status config.status: creating skeletons/standard-modules/Makefile config.status: creating skeletons/tests/Makefile config.status: creating libasn1compiler/Makefile config.status: creating libasn1parser/Makefile config.status: creating libasn1print/Makefile config.status: creating asn1c/webcgi/Makefile config.status: creating asn1c/tests/Makefile config.status: creating libasn1fix/Makefile config.status: creating skeletons/Makefile config.status: creating examples/Makefile config.status: creating tests/Makefile config.status: creating asn1c/Makefile config.status: creating doc/Makefile config.status: creating asn1c.spec config.status: creating Makefile config.status: creating config.h config.status: executing depfiles commands + make -j 8 make all-recursive make[1]: Entering directory ' Making all in libasn1parser make[2]: Entering directory ' if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1parser.lo -MD -MP -MF ".deps/asn1parser.Tpo" -c -o asn1parser.lo asn1parser.c; \ then mv -f ".deps/asn1parser.Tpo" ".deps/asn1parser.Plo"; else rm -f ".deps/asn1parser.Tpo"; exit 1; fi bison -y -p asn1p_ -d asn1p_y.y flex -s -p -Cem -Pasn1p_ -olex.yy.c asn1p_l.l if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_module.lo -MD -MP -MF ".deps/asn1p_module.Tpo" -c -o asn1p_module.lo asn1p_module.c; \ then mv -f ".deps/asn1p_module.Tpo" ".deps/asn1p_module.Plo"; else rm -f ".deps/asn1p_module.Tpo"; exit 1; fi if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_oid.lo -MD -MP -MF ".deps/asn1p_oid.Tpo" -c -o asn1p_oid.lo asn1p_oid.c; \ then mv -f ".deps/asn1p_oid.Tpo" ".deps/asn1p_oid.Plo"; else rm -f ".deps/asn1p_oid.Tpo"; exit 1; fi if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_value.lo -MD -MP -MF ".deps/asn1p_value.Tpo" -c -o asn1p_value.lo asn1p_value.c; \ then mv -f ".deps/asn1p_value.Tpo" ".deps/asn1p_value.Plo"; else rm -f ".deps/asn1p_value.Tpo"; exit 1; fi if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_expr.lo -MD -MP -MF ".deps/asn1p_expr.Tpo" -c -o asn1p_expr.lo asn1p_expr.c; \ then mv -f ".deps/asn1p_expr.Tpo" ".deps/asn1p_expr.Plo"; else rm -f ".deps/asn1p_expr.Tpo"; exit 1; fi if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_xports.lo -MD -MP -MF ".deps/asn1p_xports.Tpo" -c -o asn1p_xports.lo asn1p_xports.c; \ then mv -f ".deps/asn1p_xports.Tpo" ".deps/asn1p_xports.Plo"; else rm -f ".deps/asn1p_xports.Tpo"; exit 1; fi %option yylineno entails a performance penalty ONLY on rules that can match newline characters REJECT entails a large performance penalty asn1p_y.y: warning: 2 shift/reduce conflicts [-Wconflicts-sr] sed '/^#/ s|lex.yy\.c|asn1p_l.c|' lex.yy.c >asn1p_l.c rm -f lex.yy.c if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_constr.lo -MD -MP -MF ".deps/asn1p_constr.Tpo" -c -o asn1p_constr.lo asn1p_constr.c; \ then mv -f ".deps/asn1p_constr.Tpo" ".deps/asn1p_constr.Plo"; else rm -f ".deps/asn1p_constr.Tpo"; exit 1; fi mkdir .libs gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_oid.lo -MD -MP -MF .deps/asn1p_oid.Tpo -c asn1p_oid.c -fPIC -DPIC -o .libs/asn1p_oid.o gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_value.lo -MD -MP -MF .deps/asn1p_value.Tpo -c asn1p_value.c -fPIC -DPIC -o .libs/asn1p_value.o gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1parser.lo -MD -MP -MF .deps/asn1parser.Tpo -c asn1parser.c -fPIC -DPIC -o .libs/asn1parser.o gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_expr.lo -MD -MP -MF .deps/asn1p_expr.Tpo -c asn1p_expr.c -fPIC -DPIC -o .libs/asn1p_expr.o gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_module.lo -MD -MP -MF .deps/asn1p_module.Tpo -c asn1p_module.c -fPIC -DPIC -o .libs/asn1p_module.o gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_xports.lo -MD -MP -MF .deps/asn1p_xports.Tpo -c asn1p_xports.c -fPIC -DPIC -o .libs/asn1p_xports.o gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_constr.lo -MD -MP -MF .deps/asn1p_constr.Tpo -c asn1p_constr.c -fPIC -DPIC -o .libs/asn1p_constr.o gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_module.lo -MD -MP -MF .deps/asn1p_module.Tpo -c asn1p_module.c -o asn1p_module.o >/dev/null 2>&1 gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_xports.lo -MD -MP -MF .deps/asn1p_xports.Tpo -c asn1p_xports.c -o asn1p_xports.o >/dev/null 2>&1 gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_oid.lo -MD -MP -MF .deps/asn1p_oid.Tpo -c asn1p_oid.c -o asn1p_oid.o >/dev/null 2>&1 gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1parser.lo -MD -MP -MF .deps/asn1parser.Tpo -c asn1parser.c -o asn1parser.o >/dev/null 2>&1 gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_value.lo -MD -MP -MF .deps/asn1p_value.Tpo -c asn1p_value.c -o asn1p_value.o >/dev/null 2>&1 if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_param.lo -MD -MP -MF ".deps/asn1p_param.Tpo" -c -o asn1p_param.lo asn1p_param.c; \ then mv -f ".deps/asn1p_param.Tpo" ".deps/asn1p_param.Plo"; else rm -f ".deps/asn1p_param.Tpo"; exit 1; fi if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_class.lo -MD -MP -MF ".deps/asn1p_class.Tpo" -c -o asn1p_class.lo asn1p_class.c; \ then mv -f ".deps/asn1p_class.Tpo" ".deps/asn1p_class.Plo"; else rm -f ".deps/asn1p_class.Tpo"; exit 1; fi gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_expr.lo -MD -MP -MF .deps/asn1p_expr.Tpo -c asn1p_expr.c -o asn1p_expr.o >/dev/null 2>&1 gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_constr.lo -MD -MP -MF .deps/asn1p_constr.Tpo -c asn1p_constr.c -o asn1p_constr.o >/dev/null 2>&1 if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_ref.lo -MD -MP -MF ".deps/asn1p_ref.Tpo" -c -o asn1p_ref.lo asn1p_ref.c; \ then mv -f ".deps/asn1p_ref.Tpo" ".deps/asn1p_ref.Plo"; else rm -f ".deps/asn1p_ref.Tpo"; exit 1; fi if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_l.lo -MD -MP -MF ".deps/asn1p_l.Tpo" -c -o asn1p_l.lo asn1p_l.c; \ then mv -f ".deps/asn1p_l.Tpo" ".deps/asn1p_l.Plo"; else rm -f ".deps/asn1p_l.Tpo"; exit 1; fi gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_class.lo -MD -MP -MF .deps/asn1p_class.Tpo -c asn1p_class.c -fPIC -DPIC -o .libs/asn1p_class.o gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_param.lo -MD -MP -MF .deps/asn1p_param.Tpo -c asn1p_param.c -fPIC -DPIC -o .libs/asn1p_param.o gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_ref.lo -MD -MP -MF .deps/asn1p_ref.Tpo -c asn1p_ref.c -fPIC -DPIC -o .libs/asn1p_ref.o gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_l.lo -MD -MP -MF .deps/asn1p_l.Tpo -c asn1p_l.c -fPIC -DPIC -o .libs/asn1p_l.o if test -f y.tab.h; then \ to=`echo "asn1p_y_H" | sed \ -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/' \ -e 's/[^ABCDEFGHIJKLMNOPQRSTUVWXYZ]/_/g'`; \ sed -e "/^#/!b" -e "s/Y_TAB_H/$to/g" -e "s|y\.tab\.h|asn1p_y.h|" \ y.tab.h >asn1p_y.ht; \ rm -f y.tab.h; \ if cmp -s asn1p_y.ht asn1p_y.h; then \ rm -f asn1p_y.ht ;\ else \ mv asn1p_y.ht asn1p_y.h; \ fi; \ fi if test -f y.output; then \ mv y.output asn1p_y.output; \ fi sed '/^#/ s|y\.tab\.c|asn1p_y.c|' y.tab.c >asn1p_y.ct && mv asn1p_y.ct asn1p_y.c rm -f y.tab.c gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_param.lo -MD -MP -MF .deps/asn1p_param.Tpo -c asn1p_param.c -o asn1p_param.o >/dev/null 2>&1 if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_y.lo -MD -MP -MF ".deps/asn1p_y.Tpo" -c -o asn1p_y.lo asn1p_y.c; \ then mv -f ".deps/asn1p_y.Tpo" ".deps/asn1p_y.Plo"; else rm -f ".deps/asn1p_y.Tpo"; exit 1; fi gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_class.lo -MD -MP -MF .deps/asn1p_class.Tpo -c asn1p_class.c -o asn1p_class.o >/dev/null 2>&1 gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_ref.lo -MD -MP -MF .deps/asn1p_ref.Tpo -c asn1p_ref.c -o asn1p_ref.o >/dev/null 2>&1 gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_y.lo -MD -MP -MF .deps/asn1p_y.Tpo -c asn1p_y.c -fPIC -DPIC -o .libs/asn1p_y.o asn1p_y.y: In function 'asn1p_parse': asn1p_y.y:357:13: error: 'param' undeclared (first use in this function) *(void **)param = $1; ^~~~~ asn1p_y.y:357:13: note: each undeclared identifier is reported only once for each function it appears in Makefile:299: recipe for target 'asn1p_y.lo' failed make[2]: *** [asn1p_y.lo] Error 1 make[2]: *** Waiting for unfinished jobs.... gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_l.lo -MD -MP -MF .deps/asn1p_l.Tpo -c asn1p_l.c -o asn1p_l.o >/dev/null 2>&1 make[2]: Leaving directory ' Makefile:302: recipe for target 'all-recursive' failed make[1]: *** [all-recursive] Error 1 make[1]: Leaving directory ' Makefile:212: recipe for target 'all' failed make: *** [all] Error 2 Build step 'Execute shell' marked build as failure [WARNINGS] Skipping publisher since build result is FAILURE From jenkins at lists.osmocom.org Sun Apr 15 16:08:17 2018 From: jenkins at lists.osmocom.org (jenkins at lists.osmocom.org) Date: Sun, 15 Apr 2018 16:08:17 +0000 (UTC) Subject: =?UTF-8?Q?Build_failed_in_Jenkins:_master-osmo-iuh_=C2=BB_a1=3Ddefau?= =?UTF-8?Q?lt,a2=3Ddefault,a3=3Ddefault,osmocom-master-debian9_#936?= Message-ID: <95314303.331.1523808497490.JavaMail.jenkins@jenkins.osmocom.org> See ------------------------------------------ [...truncated 202.32 KB...] checking for strip... strip checking for ranlib... ranlib checking command to parse /usr/bin/nm -B output from gcc object... ok checking for sysroot... no checking for a working dd... /bin/dd checking how to truncate binary pipes... /bin/dd bs=4096 count=1 checking for mt... mt checking if mt is a manifest tool... no checking how to run the C preprocessor... gcc -E checking for ANSI C header files... yes checking for sys/types.h... yes checking for sys/stat.h... yes checking for stdlib.h... yes checking for string.h... yes checking for memory.h... yes checking for strings.h... yes checking for inttypes.h... yes checking for stdint.h... yes checking for unistd.h... yes checking for dlfcn.h... yes checking for objdir... .libs checking if gcc supports -fno-rtti -fno-exceptions... no checking for gcc option to produce PIC... -fPIC -DPIC checking if gcc PIC flag -fPIC -DPIC works... yes checking if gcc static flag -static works... yes checking if gcc supports -c -o file.o... yes checking if gcc supports -c -o file.o... (cached) yes checking whether the gcc linker (/usr/bin/ld -m elf_x86_64) supports shared libraries... yes checking whether -lc should be explicitly linked in... no checking dynamic linker characteristics... GNU/Linux ld.so checking how to hardcode library paths into programs... immediate checking whether stripping libraries is possible... yes checking if libtool supports shared libraries... yes checking whether to build shared libraries... yes checking whether to build static libraries... no checking for pkg-config... /usr/bin/pkg-config checking for pkg-config... /usr/bin/pkg-config checking pkg-config is at least version 0.20... yes checking for ANSI C header files... (cached) yes checking execinfo.h usability... yes checking execinfo.h presence... yes checking for execinfo.h... yes checking sys/select.h usability... yes checking sys/select.h presence... yes checking for sys/select.h... yes checking sys/socket.h usability... yes checking sys/socket.h presence... yes checking for sys/socket.h... yes checking syslog.h usability... yes checking syslog.h presence... yes checking for syslog.h... yes checking ctype.h usability... yes checking ctype.h presence... yes checking for ctype.h... yes checking netinet/tcp.h usability... yes checking netinet/tcp.h presence... yes checking for netinet/tcp.h... yes checking for size_t... yes checking for working alloca.h... yes checking for alloca... yes checking for library containing dlopen... -ldl checking for backtrace in -lexecinfo... no checking for doxygen... /usr/bin/doxygen checking whether SYS_getrandom is declared... yes checking if gcc supports -fvisibility=hidden... yes checking whether struct tm has tm_gmtoff member... yes checking for TALLOC... yes checking for PCSC... yes checking for LIBGNUTLS... yes checking whether C compiler accepts -mavx2... yes checking whether C compiler accepts -mssse3... yes checking whether C compiler accepts -msse4.1... yes checking whether gcc has __builtin_cpu_supports built-in... yes CFLAGS="-g -O2 -DBUILDING_LIBOSMOCORE -Wall" CPPFLAGS=" -DBUILDING_LIBOSMOCORE -Wall" checking that generated files are newer than configure... done configure: creating ./config.status config.status: creating libosmocore.pc config.status: creating libosmocodec.pc config.status: creating libosmocoding.pc config.status: creating libosmovty.pc config.status: creating libosmogsm.pc config.status: creating libosmogb.pc config.status: creating libosmoctrl.pc config.status: creating libosmosim.pc config.status: creating include/Makefile config.status: creating src/Makefile config.status: creating src/vty/Makefile config.status: creating src/codec/Makefile config.status: creating src/coding/Makefile config.status: creating src/sim/Makefile config.status: creating src/gsm/Makefile config.status: creating src/gb/Makefile config.status: creating src/ctrl/Makefile config.status: creating src/pseudotalloc/Makefile config.status: creating tests/Makefile config.status: creating tests/atlocal config.status: creating utils/Makefile config.status: creating Doxyfile.core config.status: creating Doxyfile.gsm config.status: creating Doxyfile.vty config.status: creating Doxyfile.codec config.status: creating Doxyfile.coding config.status: creating Doxyfile.gb config.status: creating Makefile config.status: creating config.h config.status: executing tests/atconfig commands config.status: executing depfiles commands config.status: executing libtool commands + make -j 8 install echo 0.10.2.265-db2f > .version-t && mv .version-t .version make install-recursive make[1]: Entering directory ' Making install in include make[2]: Entering directory ' GEN osmocom/gsm/gsm0503.h Generating header file... Generate 'xcch' declaration Generate 'rach' declaration Generate 'rach_ext' declaration Generate 'sch' declaration Generate 'cs2' declaration Generate 'cs3' declaration Generate 'cs2_np' declaration Generate 'cs3_np' declaration Generate 'tch_afs_12_2' declaration Generate 'tch_afs_10_2' declaration Generate 'tch_afs_7_95' declaration Generate 'tch_afs_7_4' declaration Generate 'tch_afs_6_7' declaration Generate 'tch_afs_5_9' declaration Generate 'tch_afs_5_15' declaration Generate 'tch_afs_4_75' declaration Generate 'tch_fr' declaration Generate 'tch_hr' declaration Generate 'tch_ahs_7_95' declaration Generate 'tch_ahs_7_4' declaration Generate 'tch_ahs_6_7' declaration Generate 'tch_ahs_5_9' declaration Generate 'tch_ahs_5_15' declaration Generate 'tch_ahs_4_75' declaration Generate 'mcs1_dl_hdr' declaration Generate 'mcs1_ul_hdr' declaration Generate 'mcs1' declaration Generate 'mcs2' declaration Generate 'mcs3' declaration Generate 'mcs4' declaration Generate 'mcs5_dl_hdr' declaration Generate 'mcs5_ul_hdr' declaration Generate 'mcs5' declaration Generate 'mcs6' declaration Generate 'mcs7_dl_hdr' declaration Generate 'mcs7_ul_hdr' declaration Generate 'mcs7' declaration Generate 'mcs8' declaration Generate 'mcs9' declaration Generation complete. make install-am make[3]: Entering directory ' GEN osmocom/core/bit16gen.h GEN osmocom/core/bit32gen.h GEN osmocom/core/crc16gen.h GEN osmocom/core/bit64gen.h GEN osmocom/core/crc32gen.h GEN osmocom/core/crc64gen.h GEN osmocom/core/crc8gen.h GEN osmocom/core/crc16gen.h GEN osmocom/core/crc64gen.h GEN osmocom/core/bit16gen.h GEN osmocom/core/bit32gen.h GEN osmocom/core/bit64gen.h GEN osmocom/core/crc32gen.h GEN osmocom/core/crc8gen.h make[4]: Entering directory ' make[4]: Nothing to be done for 'install-exec-am'. /bin/mkdir -p ' /bin/mkdir -p ' /usr/bin/install -c -m 644 osmocom/core/application.h osmocom/core/backtrace.h osmocom/core/bit16gen.h osmocom/core/bit32gen.h osmocom/core/bit64gen.h osmocom/core/bits.h osmocom/core/bitvec.h osmocom/core/bitcomp.h osmocom/core/byteswap.h osmocom/core/conv.h osmocom/core/counter.h osmocom/core/crc16.h osmocom/core/crc16gen.h osmocom/core/crc32gen.h osmocom/core/crc64gen.h osmocom/core/crc8gen.h osmocom/core/crcgen.h osmocom/core/endian.h osmocom/core/defs.h osmocom/core/fsm.h osmocom/core/gsmtap.h osmocom/core/gsmtap_util.h osmocom/core/linuxlist.h osmocom/core/linuxrbtree.h osmocom/core/logging.h osmocom/core/loggingrb.h osmocom/core/stats.h osmocom/core/macaddr.h osmocom/core/msgb.h osmocom/core/panic.h osmocom/core/prbs.h osmocom/core/prim.h osmocom/core/process.h osmocom/core/rate_ctr.h osmocom/core/stat_item.h osmocom/core/select.h osmocom/core/sercomm.h osmocom/core/signal.h osmocom/core/socket.h osmocom/core/statistics.h ' /bin/mkdir -p ' /usr/bin/install -c -m 644 osmocom/coding/gsm0503_tables.h osmocom/coding/gsm0503_parity.h osmocom/coding/gsm0503_mapping.h osmocom/coding/gsm0503_interleaving.h osmocom/coding/gsm0503_coding.h ' /bin/mkdir -p ' /usr/bin/install -c -m 644 osmocom/core/strrb.h osmocom/core/talloc.h osmocom/core/timer.h osmocom/core/timer_compat.h osmocom/core/utils.h osmocom/core/write_queue.h osmocom/core/plugin.h osmocom/core/msgfile.h osmocom/core/serial.h ' /bin/mkdir -p ' /usr/bin/install -c -m 644 osmocom/vty/buffer.h osmocom/vty/command.h osmocom/vty/logging.h osmocom/vty/stats.h osmocom/vty/misc.h osmocom/vty/telnet_interface.h osmocom/vty/vector.h osmocom/vty/vty.h osmocom/vty/ports.h ' /bin/mkdir -p ' /usr/bin/install -c -m 644 osmocom/gsm/protocol/gsm_03_40.h osmocom/gsm/protocol/gsm_03_41.h osmocom/gsm/protocol/gsm_04_08.h osmocom/gsm/protocol/gsm_04_08_gprs.h osmocom/gsm/protocol/gsm_04_11.h osmocom/gsm/protocol/gsm_04_12.h osmocom/gsm/protocol/gsm_04_14.h osmocom/gsm/protocol/gsm_04_80.h osmocom/gsm/protocol/gsm_08_08.h osmocom/gsm/protocol/gsm_08_58.h osmocom/gsm/protocol/gsm_09_02.h osmocom/gsm/protocol/gsm_12_21.h osmocom/gsm/protocol/gsm_23_003.h osmocom/gsm/protocol/gsm_44_318.h osmocom/gsm/protocol/ipaccess.h osmocom/gsm/protocol/smpp34_osmocom.h ' /bin/mkdir -p ' /usr/bin/install -c -m 644 osmocom/sim/class_tables.h osmocom/sim/sim.h ' /bin/mkdir -p ' /usr/bin/install -c -m 644 osmocom/gprs/gprs_bssgp.h osmocom/gprs/gprs_bssgp_bss.h osmocom/gprs/gprs_msgb.h osmocom/gprs/gprs_ns.h osmocom/gprs/gprs_ns_frgre.h osmocom/gprs/gprs_rlc.h ' /bin/mkdir -p ' /usr/bin/install -c -m 644 osmocom/crypt/auth.h osmocom/crypt/gprs_cipher.h ' /bin/mkdir -p ' /usr/bin/install -c -m 644 osmocom/gsm/a5.h osmocom/gsm/abis_nm.h osmocom/gsm/apn.h osmocom/gsm/bts_features.h osmocom/gsm/comp128.h osmocom/gsm/comp128v23.h osmocom/gsm/bitvec_gsm.h osmocom/gsm/gan.h osmocom/gsm/gsm0341.h osmocom/gsm/gsm0411_smc.h osmocom/gsm/gsm0411_smr.h osmocom/gsm/gsm0411_utils.h osmocom/gsm/gsm0480.h osmocom/gsm/gsm0502.h osmocom/gsm/gsm0503.h osmocom/gsm/gsm0808.h osmocom/gsm/gsm0808_utils.h osmocom/gsm/gsm23003.h osmocom/gsm/gsm48.h osmocom/gsm/gsm48_ie.h osmocom/gsm/gsm_utils.h osmocom/gsm/gsup.h osmocom/gsm/ipa.h osmocom/gsm/lapd_core.h osmocom/gsm/lapdm.h osmocom/gsm/meas_rep.h osmocom/gsm/mncc.h osmocom/gsm/prim.h osmocom/gsm/l1sap.h osmocom/gsm/oap.h osmocom/gsm/rsl.h osmocom/gsm/rxlev_stat.h osmocom/gsm/sysinfo.h osmocom/gsm/tlv.h ' /bin/mkdir -p ' /usr/bin/install -c -m 644 osmocom/ctrl/control_cmd.h osmocom/ctrl/control_if.h osmocom/ctrl/ports.h osmocom/ctrl/control_vty.h ' /bin/mkdir -p ' /usr/bin/install -c -m 644 osmocom/gprs/protocol/gsm_04_60.h osmocom/gprs/protocol/gsm_08_16.h osmocom/gprs/protocol/gsm_08_18.h ' /bin/mkdir -p ' /usr/bin/install -c -m 644 osmocom/codec/ecu.h osmocom/codec/codec.h osmocom/codec/gsm610_bits.h ' make[4]: Leaving directory ' make[3]: Leaving directory ' make[2]: Leaving directory ' Making install in src make[2]: Entering directory ' GEN crc16gen.c GEN crc8gen.c GEN crc64gen.c GEN crc32gen.c make install-am make[3]: Entering directory ' CC timer_gettimeofday.lo CC timer.lo CC timer_clockgettime.lo CC select.lo CC signal.lo CC bitvec.lo CC bits.lo CC msgb.lo CC bitcomp.lo CC counter.lo CC fsm.lo CC write_queue.lo CC utils.lo CC socket.lo CC logging.lo CC logging_syslog.lo CC logging_gsmtap.lo CC rate_ctr.lo CC gsmtap_util.lo CC crc16.lo CC panic.lo CC backtrace.lo CC conv.lo /bin/bash: line 2: 7127 Segmentation fault /bin/bash ../libtool --silent --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I.. -I../include -I../include -DBUILDING_LIBOSMOCORE -Wall -Wall -g -O2 -DBUILDING_LIBOSMOCORE -Wall -MT backtrace.lo -MD -MP -MF $depbase.Tpo -c -o backtrace.lo backtrace.c Makefile:545: recipe for target 'backtrace.lo' failed make[3]: *** [backtrace.lo] Error 139 make[3]: *** Waiting for unfinished jobs.... make[3]: Leaving directory ' Makefile:649: recipe for target 'install' failed make[2]: *** [install] Error 2 make[2]: Leaving directory ' Makefile:600: recipe for target 'install-recursive' failed make[1]: *** [install-recursive] Error 1 make[1]: Leaving directory ' Makefile:899: recipe for target 'install' failed make: *** [install] Error 2 Build step 'Execute shell' marked build as failure [WARNINGS]Skipping publisher since build result is FAILURE From gerrit-no-reply at lists.osmocom.org Sun Apr 15 19:38:07 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Sun, 15 Apr 2018 19:38:07 +0000 Subject: [PATCH] osmo-ttcn3-hacks[master]: bts: Reduce threshold for BTS_Tests.TC_paging_tmsi_200percent Message-ID: Review at https://gerrit.osmocom.org/7811 bts: Reduce threshold for BTS_Tests.TC_paging_tmsi_200percent for some reason, the number of TMSI paging requests that arrive on the jenkins build slave is quite a bit lower than those I see on my laptop. Let's adjust our expectations to make the test pass. Change-Id: I548dedd1b3391d059a141a2eef71c32be4b97cc1 Closes: OS#3025 --- M bts/BTS_Tests.ttcn 1 file changed, 1 insertion(+), 1 deletion(-) git pull ssh://gerrit.osmocom.org:29418/osmo-ttcn3-hacks refs/changes/11/7811/1 diff --git a/bts/BTS_Tests.ttcn b/bts/BTS_Tests.ttcn index 14e51eb..6cb20c3 100644 --- a/bts/BTS_Tests.ttcn +++ b/bts/BTS_Tests.ttcn @@ -1655,7 +1655,7 @@ var PagingTestState st := f_TC_paging(cfg); /* We expect about 70% to pass, given that we can fill the paging buffer of 200 * slots and will fully drain that buffer before returning */ - var template integer tpl := (st.num_paging_sent*68/100 .. st.num_paging_sent *72/100); + var template integer tpl := (st.num_paging_sent*66/100 .. st.num_paging_sent *72/100); if (not match(st.num_paging_rcv_ids, tpl)) { setverdict(fail, "Expected ", tpl, " pagings but have ", st.num_paging_rcv_ids); } else { -- To view, visit https://gerrit.osmocom.org/7811 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I548dedd1b3391d059a141a2eef71c32be4b97cc1 Gerrit-PatchSet: 1 Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Owner: Harald Welte From gerrit-no-reply at lists.osmocom.org Sun Apr 15 19:40:07 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Sun, 15 Apr 2018 19:40:07 +0000 Subject: osmo-ttcn3-hacks[master]: bts: Reduce threshold for BTS_Tests.TC_paging_tmsi_200percent In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7811 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I548dedd1b3391d059a141a2eef71c32be4b97cc1 Gerrit-PatchSet: 1 Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Owner: Harald Welte Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Sun Apr 15 19:40:08 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Sun, 15 Apr 2018 19:40:08 +0000 Subject: [MERGED] osmo-ttcn3-hacks[master]: bts: Reduce threshold for BTS_Tests.TC_paging_tmsi_200percent In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: bts: Reduce threshold for BTS_Tests.TC_paging_tmsi_200percent ...................................................................... bts: Reduce threshold for BTS_Tests.TC_paging_tmsi_200percent for some reason, the number of TMSI paging requests that arrive on the jenkins build slave is quite a bit lower than those I see on my laptop. Let's adjust our expectations to make the test pass. Change-Id: I548dedd1b3391d059a141a2eef71c32be4b97cc1 Closes: OS#3025 --- M bts/BTS_Tests.ttcn 1 file changed, 1 insertion(+), 1 deletion(-) Approvals: Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/bts/BTS_Tests.ttcn b/bts/BTS_Tests.ttcn index 14e51eb..6cb20c3 100644 --- a/bts/BTS_Tests.ttcn +++ b/bts/BTS_Tests.ttcn @@ -1655,7 +1655,7 @@ var PagingTestState st := f_TC_paging(cfg); /* We expect about 70% to pass, given that we can fill the paging buffer of 200 * slots and will fully drain that buffer before returning */ - var template integer tpl := (st.num_paging_sent*68/100 .. st.num_paging_sent *72/100); + var template integer tpl := (st.num_paging_sent*66/100 .. st.num_paging_sent *72/100); if (not match(st.num_paging_rcv_ids, tpl)) { setverdict(fail, "Expected ", tpl, " pagings but have ", st.num_paging_rcv_ids); } else { -- To view, visit https://gerrit.osmocom.org/7811 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: I548dedd1b3391d059a141a2eef71c32be4b97cc1 Gerrit-PatchSet: 1 Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Owner: Harald Welte Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder From gerrit-no-reply at lists.osmocom.org Sun Apr 15 19:41:01 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Sun, 15 Apr 2018 19:41:01 +0000 Subject: osmocom-bb[master]: VIRT_PHY: add missing L1CTL_BURST_IND to l1ctlPrimNames In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 (1 comment) https://gerrit.osmocom.org/#/c/7808/1/src/host/virt_phy/src/logging.c File src/host/virt_phy/src/logging.c: Line 64: "L1CTL_DATA_TBF_CONF" it's probably a good time to convert this to value_string. Having an array with *implicit* index is really error-prone and should be avoided. -- To view, visit https://gerrit.osmocom.org/7808 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I442305c034bbba5eaed080fb262a61895623eb4f Gerrit-PatchSet: 1 Gerrit-Project: osmocom-bb Gerrit-Branch: master Gerrit-Owner: Vadim Yanitskiy Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-HasComments: Yes From gerrit-no-reply at lists.osmocom.org Sun Apr 15 20:13:59 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Sun, 15 Apr 2018 20:13:59 +0000 Subject: [PATCH] osmo-sip-connector[master]: sip: Register log callback function with sofia-sip Message-ID: Review at https://gerrit.osmocom.org/7812 sip: Register log callback function with sofia-sip sofia-sip allows applications to register a log backend function which will be called every time the library wants to log something. We register such a call-back and make it log using the libosmocore logging framework. The problem is that sofia-sip has its own log level management, and by the time the message hits libosmocore, we don't know which log level we shall use :( Change-Id: Ib269b6b50f9d79bbd13acc43a626834921f05edb Related: OS#3105 --- M src/app.h M src/main.c M src/sip.c M src/vty.c 4 files changed, 33 insertions(+), 1 deletion(-) git pull ssh://gerrit.osmocom.org:29418/osmo-sip-connector refs/changes/12/7812/1 diff --git a/src/app.h b/src/app.h index ff48c79..96c8902 100644 --- a/src/app.h +++ b/src/app.h @@ -9,6 +9,7 @@ struct { const char *local_addr; int local_port; + int sofia_log_level; const char *remote_addr; int remote_port; diff --git a/src/main.c b/src/main.c index 558eaec..b4ffb63 100644 --- a/src/main.c +++ b/src/main.c @@ -126,7 +126,7 @@ /* parsing and setup */ - + g_app.sip.sofia_log_level = 2; handle_options(argc, argv); rc = vty_read_config_file(config_file, NULL); if (rc < 0) { diff --git a/src/sip.c b/src/sip.c index 4f3d034..84d1f6e 100644 --- a/src/sip.c +++ b/src/sip.c @@ -27,6 +27,7 @@ #include #include +#include #include @@ -383,12 +384,24 @@ agent->app->sip.local_port); } +/* http://sofia-sip.sourceforge.net/refdocs/debug_logs.html */ +static void sip_logger(void *stream, char const *fmt, va_list ap) +{ + /* this is ugly, as unfortunately sofia-sip does not pass the log level to + * the log handler call-back function, so we have no clue what log level the + * currently logged message was sent for :( As a result, we can only use one + * hard-coded LOGL_NOTICE here */ + osmo_vlogp(DSIP, LOGL_NOTICE, "", 0, 0, fmt, ap); +} + void sip_agent_init(struct sip_agent *agent, struct app_config *app) { agent->app = app; su_init(); su_home_init(&agent->home); + su_log_redirect(su_log_default, &sip_logger, NULL); + su_log_redirect(su_log_global, &sip_logger, NULL); agent->root = su_glib_root_create(NULL); su_root_threading(agent->root, 0); } diff --git a/src/vty.c b/src/vty.c index bea1f9f..540e2de 100644 --- a/src/vty.c +++ b/src/vty.c @@ -1,5 +1,6 @@ /* * (C) 2016 by Holger Hans Peter Freyther + * (C) 2018 by Harald Welte * * All Rights Reserved * @@ -24,6 +25,8 @@ #include "mncc.h" #include + +#include extern void *tall_mncc_ctx; @@ -88,6 +91,7 @@ vty_out(vty, "sip%s", VTY_NEWLINE); vty_out(vty, " local %s %d%s", g_app.sip.local_addr, g_app.sip.local_port, VTY_NEWLINE); vty_out(vty, " remote %s %d%s", g_app.sip.remote_addr, g_app.sip.remote_port, VTY_NEWLINE); + vty_out(vty, " sofia-sip log-level %d%s", g_app.sip.sofia_log_level, VTY_NEWLINE); return CMD_SUCCESS; } @@ -130,6 +134,19 @@ talloc_free((char *) g_app.sip.remote_addr); g_app.sip.remote_addr = talloc_strdup(tall_mncc_ctx, argv[0]); g_app.sip.remote_port = atoi(argv[1]); + return CMD_SUCCESS; +} + +DEFUN(cfg_sip_sofia_log_level, cfg_sip_sofia_log_level_cmd, + "sofia-sip log-level <0-9>", + "sofia-sip library configuration\n" + "global log-level for sofia-sip\n" + "(0 = nothing, 9 = super-verbose)\n") +{ + g_app.sip.sofia_log_level = atoi(argv[0]); + su_log_set_level(su_log_default, g_app.sip.sofia_log_level); + su_log_set_level(su_log_global, g_app.sip.sofia_log_level); + return CMD_SUCCESS; } @@ -302,6 +319,7 @@ install_node(&sip_node, config_write_sip); install_element(SIP_NODE, &cfg_sip_local_addr_cmd); install_element(SIP_NODE, &cfg_sip_remote_addr_cmd); + install_element(SIP_NODE, &cfg_sip_sofia_log_level_cmd); install_element(CONFIG_NODE, &cfg_mncc_cmd); install_node(&mncc_node, config_write_mncc); -- To view, visit https://gerrit.osmocom.org/7812 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Ib269b6b50f9d79bbd13acc43a626834921f05edb Gerrit-PatchSet: 1 Gerrit-Project: osmo-sip-connector Gerrit-Branch: master Gerrit-Owner: Harald Welte From gerrit-no-reply at lists.osmocom.org Sun Apr 15 20:15:49 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Sun, 15 Apr 2018 20:15:49 +0000 Subject: [PATCH] osmo-sip-connector[master]: use osmo_init_logging2() to avoid allocating from NULL context Message-ID: Review at https://gerrit.osmocom.org/7813 use osmo_init_logging2() to avoid allocating from NULL context This requires libosmocore I216837780e9405fdaec8059c63d10699c695b360 or later to work. Change-Id: Id704689c9ad35a0db97aedae014e8b36eb1f86e2 --- M src/main.c 1 file changed, 1 insertion(+), 1 deletion(-) git pull ssh://gerrit.osmocom.org:29418/osmo-sip-connector refs/changes/13/7813/1 diff --git a/src/main.c b/src/main.c index b4ffb63..c267f5f 100644 --- a/src/main.c +++ b/src/main.c @@ -117,7 +117,7 @@ /* initialize osmocom */ tall_mncc_ctx = talloc_named_const(NULL, 0, "MNCC CTX"); osmo_init_ignore_signals(); - osmo_init_logging(&mncc_sip_info); + osmo_init_logging2(tall_mncc_ctx, &mncc_sip_info); osmo_stats_init(tall_mncc_ctx); mncc_sip_vty_init(); -- To view, visit https://gerrit.osmocom.org/7813 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Id704689c9ad35a0db97aedae014e8b36eb1f86e2 Gerrit-PatchSet: 1 Gerrit-Project: osmo-sip-connector Gerrit-Branch: master Gerrit-Owner: Harald Welte From gerrit-no-reply at lists.osmocom.org Sun Apr 15 20:17:23 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Sun, 15 Apr 2018 20:17:23 +0000 Subject: osmo-sip-connector[master]: use osmo_init_logging2() to avoid allocating from NULL context In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7813 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Id704689c9ad35a0db97aedae014e8b36eb1f86e2 Gerrit-PatchSet: 1 Gerrit-Project: osmo-sip-connector Gerrit-Branch: master Gerrit-Owner: Harald Welte Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Sun Apr 15 20:17:25 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Sun, 15 Apr 2018 20:17:25 +0000 Subject: osmo-sip-connector[master]: sip: Register log callback function with sofia-sip In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7812 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Ib269b6b50f9d79bbd13acc43a626834921f05edb Gerrit-PatchSet: 1 Gerrit-Project: osmo-sip-connector Gerrit-Branch: master Gerrit-Owner: Harald Welte Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Sun Apr 15 20:17:27 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Sun, 15 Apr 2018 20:17:27 +0000 Subject: [MERGED] osmo-sip-connector[master]: sip: Register log callback function with sofia-sip In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: sip: Register log callback function with sofia-sip ...................................................................... sip: Register log callback function with sofia-sip sofia-sip allows applications to register a log backend function which will be called every time the library wants to log something. We register such a call-back and make it log using the libosmocore logging framework. The problem is that sofia-sip has its own log level management, and by the time the message hits libosmocore, we don't know which log level we shall use :( Change-Id: Ib269b6b50f9d79bbd13acc43a626834921f05edb Related: OS#3105 --- M src/app.h M src/main.c M src/sip.c M src/vty.c 4 files changed, 33 insertions(+), 1 deletion(-) Approvals: Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/src/app.h b/src/app.h index ff48c79..96c8902 100644 --- a/src/app.h +++ b/src/app.h @@ -9,6 +9,7 @@ struct { const char *local_addr; int local_port; + int sofia_log_level; const char *remote_addr; int remote_port; diff --git a/src/main.c b/src/main.c index 558eaec..b4ffb63 100644 --- a/src/main.c +++ b/src/main.c @@ -126,7 +126,7 @@ /* parsing and setup */ - + g_app.sip.sofia_log_level = 2; handle_options(argc, argv); rc = vty_read_config_file(config_file, NULL); if (rc < 0) { diff --git a/src/sip.c b/src/sip.c index 4f3d034..84d1f6e 100644 --- a/src/sip.c +++ b/src/sip.c @@ -27,6 +27,7 @@ #include #include +#include #include @@ -383,12 +384,24 @@ agent->app->sip.local_port); } +/* http://sofia-sip.sourceforge.net/refdocs/debug_logs.html */ +static void sip_logger(void *stream, char const *fmt, va_list ap) +{ + /* this is ugly, as unfortunately sofia-sip does not pass the log level to + * the log handler call-back function, so we have no clue what log level the + * currently logged message was sent for :( As a result, we can only use one + * hard-coded LOGL_NOTICE here */ + osmo_vlogp(DSIP, LOGL_NOTICE, "", 0, 0, fmt, ap); +} + void sip_agent_init(struct sip_agent *agent, struct app_config *app) { agent->app = app; su_init(); su_home_init(&agent->home); + su_log_redirect(su_log_default, &sip_logger, NULL); + su_log_redirect(su_log_global, &sip_logger, NULL); agent->root = su_glib_root_create(NULL); su_root_threading(agent->root, 0); } diff --git a/src/vty.c b/src/vty.c index bea1f9f..540e2de 100644 --- a/src/vty.c +++ b/src/vty.c @@ -1,5 +1,6 @@ /* * (C) 2016 by Holger Hans Peter Freyther + * (C) 2018 by Harald Welte * * All Rights Reserved * @@ -24,6 +25,8 @@ #include "mncc.h" #include + +#include extern void *tall_mncc_ctx; @@ -88,6 +91,7 @@ vty_out(vty, "sip%s", VTY_NEWLINE); vty_out(vty, " local %s %d%s", g_app.sip.local_addr, g_app.sip.local_port, VTY_NEWLINE); vty_out(vty, " remote %s %d%s", g_app.sip.remote_addr, g_app.sip.remote_port, VTY_NEWLINE); + vty_out(vty, " sofia-sip log-level %d%s", g_app.sip.sofia_log_level, VTY_NEWLINE); return CMD_SUCCESS; } @@ -130,6 +134,19 @@ talloc_free((char *) g_app.sip.remote_addr); g_app.sip.remote_addr = talloc_strdup(tall_mncc_ctx, argv[0]); g_app.sip.remote_port = atoi(argv[1]); + return CMD_SUCCESS; +} + +DEFUN(cfg_sip_sofia_log_level, cfg_sip_sofia_log_level_cmd, + "sofia-sip log-level <0-9>", + "sofia-sip library configuration\n" + "global log-level for sofia-sip\n" + "(0 = nothing, 9 = super-verbose)\n") +{ + g_app.sip.sofia_log_level = atoi(argv[0]); + su_log_set_level(su_log_default, g_app.sip.sofia_log_level); + su_log_set_level(su_log_global, g_app.sip.sofia_log_level); + return CMD_SUCCESS; } @@ -302,6 +319,7 @@ install_node(&sip_node, config_write_sip); install_element(SIP_NODE, &cfg_sip_local_addr_cmd); install_element(SIP_NODE, &cfg_sip_remote_addr_cmd); + install_element(SIP_NODE, &cfg_sip_sofia_log_level_cmd); install_element(CONFIG_NODE, &cfg_mncc_cmd); install_node(&mncc_node, config_write_mncc); -- To view, visit https://gerrit.osmocom.org/7812 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: Ib269b6b50f9d79bbd13acc43a626834921f05edb Gerrit-PatchSet: 1 Gerrit-Project: osmo-sip-connector Gerrit-Branch: master Gerrit-Owner: Harald Welte Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder From gerrit-no-reply at lists.osmocom.org Sun Apr 15 20:17:27 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Sun, 15 Apr 2018 20:17:27 +0000 Subject: [MERGED] osmo-sip-connector[master]: use osmo_init_logging2() to avoid allocating from NULL context In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: use osmo_init_logging2() to avoid allocating from NULL context ...................................................................... use osmo_init_logging2() to avoid allocating from NULL context This requires libosmocore I216837780e9405fdaec8059c63d10699c695b360 or later to work. Change-Id: Id704689c9ad35a0db97aedae014e8b36eb1f86e2 --- M src/main.c 1 file changed, 1 insertion(+), 1 deletion(-) Approvals: Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/src/main.c b/src/main.c index b4ffb63..c267f5f 100644 --- a/src/main.c +++ b/src/main.c @@ -117,7 +117,7 @@ /* initialize osmocom */ tall_mncc_ctx = talloc_named_const(NULL, 0, "MNCC CTX"); osmo_init_ignore_signals(); - osmo_init_logging(&mncc_sip_info); + osmo_init_logging2(tall_mncc_ctx, &mncc_sip_info); osmo_stats_init(tall_mncc_ctx); mncc_sip_vty_init(); -- To view, visit https://gerrit.osmocom.org/7813 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: Id704689c9ad35a0db97aedae014e8b36eb1f86e2 Gerrit-PatchSet: 1 Gerrit-Project: osmo-sip-connector Gerrit-Branch: master Gerrit-Owner: Harald Welte Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder From gerrit-no-reply at lists.osmocom.org Sun Apr 15 20:54:48 2018 From: gerrit-no-reply at lists.osmocom.org (Neels Hofmeyr) Date: Sun, 15 Apr 2018 20:54:48 +0000 Subject: [PATCH] osmo-bsc[master]: prevent ARFCN+BSIC collisions in config Message-ID: Review at https://gerrit.osmocom.org/7814 prevent ARFCN+BSIC collisions in config If multiple BTS are configured with identical ARFCN+BSIC, handover cannot possibly work. Add warn_on_arfcn_bsic_collisions() and when collisions are detected: - exit right away on program startup. - warn on vty bts node-exit (go_parent_cb()), i.e. when ARFCN+BSIC collide implicitly from default values. - warn on vty bts/base_station_id_code cmd coming from telnet vty, i.e. when the user actively configures colliding BSIC. - warn on vty trx/arfcn cmd coming from telnet vty, i.e. when the user actively configures colliding ARFCN. When warning, warn on all of: - DHO log, - stderr, - vty_out() in case a vty instance is passed (i.e. from interactive vty). It's better to log this once too often than let the user miss it. Rationale: when I started to implement ttcn3 tests for inter-bsc HO, I saw that the new code based on ARFCN+BSIC would cause a handover request intended to go from BTS 0 to BTS 1 to instead go from BTS 0 to back to BTS 0 -- because of identical ARFCN+BSIC in the config of ttcn3-bsc-tests. Such a config badly confuses handover: measurement reports interpreted to come from the wrong cell, all handovers attempted to go to the first BTS (sometimes correctly, sometimes wrongly), in short, non-obvious failure across the handover board. The network would appear to work well, but occasionally a handover would kill a call without apparent reason. It seems worthwhile to prevent such misconfiguration as early as possible, and even allow previous ARFCN+BSIC misconfiguration that used to work to instead break now (only upon reading config during program startup, to not cause program exit just because a user introduces a temporary collision in an interactive vty session). Change-Id: Ia7c38188ccbad5d8b7398e3e5220015e62c08c8b --- M include/osmocom/bsc/vty.h M src/libbsc/bsc_vty.c M src/osmo-bsc/osmo_bsc_main.c 3 files changed, 36 insertions(+), 0 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-bsc refs/changes/14/7814/1 diff --git a/include/osmocom/bsc/vty.h b/include/osmocom/bsc/vty.h index e632755..bfea69d 100644 --- a/include/osmocom/bsc/vty.h +++ b/include/osmocom/bsc/vty.h @@ -35,4 +35,6 @@ struct gsm_network *gsmnet_from_vty(struct vty *vty); +int warn_on_arfcn_bsic_collisions(struct gsm_network *net, struct vty *vty); + #endif diff --git a/src/libbsc/bsc_vty.c b/src/libbsc/bsc_vty.c index c8d1637..ddb6669 100644 --- a/src/libbsc/bsc_vty.c +++ b/src/libbsc/bsc_vty.c @@ -2071,6 +2071,30 @@ return CMD_SUCCESS; } +int warn_on_arfcn_bsic_collisions(struct gsm_network *net, struct vty *vty) +{ + struct gsm_bts *bts, *bts2; + int errors = 0; + + llist_for_each_entry(bts, &net->bts_list, list) { + struct neighbor_ident_key *nik = bts_ident_key(bts); + + bts2 = bts_by_neighbor_ident(net, nik); + if (bts != bts2) { + LOGP(DHO, LOGL_ERROR, "CONFIG ERROR: Multiple BTS match %s: %d and %d\n", + neighbor_ident_key_name(nik), bts->nr, bts2->nr); + fprintf(stderr, "CONFIG ERROR: Multiple BTS match %s: %d and %d\n", + neighbor_ident_key_name(nik), bts->nr, bts2->nr); + if (vty) + vty_out(vty, "%% CONFIG ERROR: Multiple BTS match %s: %d and %d%s", + neighbor_ident_key_name(nik), bts->nr, bts2->nr, + VTY_NEWLINE); + errors ++; + } + } + return errors; +} + DEFUN(cfg_bts_bsic, cfg_bts_bsic_cmd, "base_station_id_code <0-63>", @@ -2086,6 +2110,9 @@ return CMD_WARNING; } bts->bsic = bsic; + + if (vty->type != VTY_FILE) + warn_on_arfcn_bsic_collisions(bts->network, vty); return CMD_SUCCESS; } @@ -3836,6 +3863,9 @@ /* FIXME: use OML layer to update the ARFCN */ /* FIXME: use RSL layer to update SYSTEM INFORMATION */ + if (vty->type != VTY_FILE) + warn_on_arfcn_bsic_collisions(trx->bts->network, vty); + return CMD_SUCCESS; } diff --git a/src/osmo-bsc/osmo_bsc_main.c b/src/osmo-bsc/osmo_bsc_main.c index 89d0d02..e6c085c 100644 --- a/src/osmo-bsc/osmo_bsc_main.c +++ b/src/osmo-bsc/osmo_bsc_main.c @@ -162,6 +162,8 @@ vty->index = bts->network; vty->index_sub = NULL; } + if (vty->type != VTY_FILE) + warn_on_arfcn_bsic_collisions(bsc_gsmnet, vty); break; case TRX_NODE: vty->node = BTS_NODE; @@ -456,6 +458,8 @@ fprintf(stderr, "Bootstrapping the network failed. exiting.\n"); exit(1); } + if (warn_on_arfcn_bsic_collisions(bsc_gsmnet, NULL)) + exit(1); bsc_api_init(bsc_gsmnet, osmo_bsc_api()); /* start control interface after reading config for -- To view, visit https://gerrit.osmocom.org/7814 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Ia7c38188ccbad5d8b7398e3e5220015e62c08c8b Gerrit-PatchSet: 1 Gerrit-Project: osmo-bsc Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr From gerrit-no-reply at lists.osmocom.org Sun Apr 15 21:44:11 2018 From: gerrit-no-reply at lists.osmocom.org (Neels Hofmeyr) Date: Sun, 15 Apr 2018 21:44:11 +0000 Subject: [PATCH] libosmocore[master]: test_gsm0808_enc_dec_speech_codec_with_cfg: initialize properly Message-ID: Review at https://gerrit.osmocom.org/7815 test_gsm0808_enc_dec_speech_codec_with_cfg: initialize properly The uninitialized members of enc_sc sporadically hit address sanitizer failure during gsm0808_test, like: ../../../../src/libosmocore/src/gsm/gsm0808_utils.c:187:8: runtime error: load of value 13, which is not a valid value for type '_Bool' ../../../../src/libosmocore/src/gsm/gsm0808_utils.c:191:8: runtime error: load of value 119, which is not a valid value for type '_Bool' How the test survived so long is a mystery to me; as soon as some uninitialized members would by coincidence not be zero, the test should always have failed at OSMO_ASSERT(memcmp(&enc_sc, &dec_sc, sizeof(enc_sc)) == 0). Related: OS#3148 Change-Id: Iaa20c59f624fbdc69a018cabd0f7e9c5a1389519 --- M tests/gsm0808/gsm0808_test.c 1 file changed, 7 insertions(+), 7 deletions(-) git pull ssh://gerrit.osmocom.org:29418/libosmocore refs/changes/15/7815/1 diff --git a/tests/gsm0808/gsm0808_test.c b/tests/gsm0808/gsm0808_test.c index a9ab72b..49673fe 100644 --- a/tests/gsm0808/gsm0808_test.c +++ b/tests/gsm0808/gsm0808_test.c @@ -595,16 +595,16 @@ static void test_gsm0808_enc_dec_speech_codec_with_cfg() { - struct gsm0808_speech_codec enc_sc; - struct gsm0808_speech_codec dec_sc; + struct gsm0808_speech_codec enc_sc = { + .pi = true, + .tf = true, + .type = GSM0808_SCT_FR3, + .cfg = 0xabcd, + }; + struct gsm0808_speech_codec dec_sc = {}; struct msgb *msg; uint8_t rc_enc; int rc_dec; - - enc_sc.pi = true; - enc_sc.tf = true; - enc_sc.type = GSM0808_SCT_FR3; - enc_sc.cfg = 0xabcd; msg = msgb_alloc(1024, "output buffer"); rc_enc = gsm0808_enc_speech_codec(msg, &enc_sc); -- To view, visit https://gerrit.osmocom.org/7815 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Iaa20c59f624fbdc69a018cabd0f7e9c5a1389519 Gerrit-PatchSet: 1 Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr From gerrit-no-reply at lists.osmocom.org Sun Apr 15 23:05:50 2018 From: gerrit-no-reply at lists.osmocom.org (Neels Hofmeyr) Date: Sun, 15 Apr 2018 23:05:50 +0000 Subject: [PATCH] osmo-sgsn[master]: use osmo_init_logging2(), fix regression test memleaks Message-ID: Review at https://gerrit.osmocom.org/7816 use osmo_init_logging2(), fix regression test memleaks Particularly gbproxy_test.c had various mem leaks, which (will) show up with gcc (Debian 7.3.0-15) 7.3.0 address sanitizer. Fix those leaks to verify that we don't have memleaks in the production code. Change-Id: Ia4204c8b3d895b42c103edecb61b99d3d22bd36f --- M src/gprs/gb_proxy_main.c M src/gprs/gtphub_main.c M src/gprs/sgsn_main.c M src/libcommon/gsup_test_client.c M tests/gbproxy/gbproxy_test.c M tests/gprs/gprs_test.c M tests/gtphub/gtphub_test.c M tests/oap/oap_client_test.c M tests/sgsn/sgsn_test.c M tests/slhc/slhc_test.c M tests/sndcp_xid/sndcp_xid_test.c M tests/v42bis/v42bis_test.c M tests/xid/xid_test.c 13 files changed, 96 insertions(+), 40 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-sgsn refs/changes/16/7816/1 diff --git a/src/gprs/gb_proxy_main.c b/src/gprs/gb_proxy_main.c index 1416ff5..04143bb 100644 --- a/src/gprs/gb_proxy_main.c +++ b/src/gprs/gb_proxy_main.c @@ -275,7 +275,7 @@ signal(SIGUSR2, &signal_handler); osmo_init_ignore_signals(); - osmo_init_logging(&gprs_log_info); + osmo_init_logging2(tall_bsc_ctx, &gprs_log_info); vty_info.copyright = openbsc_copyright; vty_init(&vty_info); diff --git a/src/gprs/gtphub_main.c b/src/gprs/gtphub_main.c index 197c5e3..a1a2c1d 100644 --- a/src/gprs/gtphub_main.c +++ b/src/gprs/gtphub_main.c @@ -346,7 +346,7 @@ signal(SIGUSR2, &signal_handler); osmo_init_ignore_signals(); - osmo_init_logging(>phub_log_info); + osmo_init_logging2(osmo_gtphub_ctx, >phub_log_info); vty_info.copyright = gtphub_copyright; vty_init(&vty_info); diff --git a/src/gprs/sgsn_main.c b/src/gprs/sgsn_main.c index 0276e34..feffefb 100644 --- a/src/gprs/sgsn_main.c +++ b/src/gprs/sgsn_main.c @@ -386,7 +386,7 @@ signal(SIGUSR2, &signal_handler); osmo_init_ignore_signals(); - osmo_init_logging(&gprs_log_info); + osmo_init_logging2(tall_bsc_ctx, &gprs_log_info); osmo_stats_init(tall_bsc_ctx); vty_info.copyright = openbsc_copyright; diff --git a/src/libcommon/gsup_test_client.c b/src/libcommon/gsup_test_client.c index cc0f58b..2357ba5 100644 --- a/src/libcommon/gsup_test_client.c +++ b/src/libcommon/gsup_test_client.c @@ -272,10 +272,11 @@ unsigned long long i; char *server_host = "127.0.0.1"; uint16_t server_port = OSMO_GSUP_PORT; + void *ctx = talloc_named_const(NULL, 0, "gsup_test_client"); - osmo_init_logging(&gsup_test_client_log_info); + osmo_init_logging2(ctx, &gsup_test_client_log_info); - g_gc = gsup_client_create("GSUPTEST", server_host, server_port, + g_gc = gsup_client_create(ctx, "GSUPTEST", server_host, server_port, gsupc_read_cb, NULL); diff --git a/tests/gbproxy/gbproxy_test.c b/tests/gbproxy/gbproxy_test.c index 8edb171..f9a1c6b 100644 --- a/tests/gbproxy/gbproxy_test.c +++ b/tests/gbproxy/gbproxy_test.c @@ -47,7 +47,7 @@ #define MATCH_ANY (-1) -void *tall_bsc_ctx; +void *tall_bsc_ctx = NULL; struct gbproxy_config gbcfg = {0}; @@ -1329,7 +1329,7 @@ static void test_gbproxy() { - struct gprs_ns_inst *nsi = gprs_ns_instantiate(gprs_ns_callback, NULL); + struct gprs_ns_inst *nsi = gprs_ns_instantiate(gprs_ns_callback, tall_bsc_ctx); struct sockaddr_in bss_peer[4] = {{0},}; struct sockaddr_in sgsn_peer= {0}; @@ -1497,7 +1497,7 @@ static void test_gbproxy_ident_changes() { - struct gprs_ns_inst *nsi = gprs_ns_instantiate(gprs_ns_callback, NULL); + struct gprs_ns_inst *nsi = gprs_ns_instantiate(gprs_ns_callback, tall_bsc_ctx); struct sockaddr_in bss_peer[1] = {{0},}; struct sockaddr_in sgsn_peer= {0}; uint16_t nsei[2] = {0x1000, 0x2000}; @@ -1629,7 +1629,7 @@ static void test_gbproxy_ra_patching() { - struct gprs_ns_inst *nsi = gprs_ns_instantiate(gprs_ns_callback, NULL); + struct gprs_ns_inst *nsi = gprs_ns_instantiate(gprs_ns_callback, tall_bsc_ctx); struct sockaddr_in bss_peer[1] = {{0},}; struct sockaddr_in sgsn_peer= {0}; struct gprs_ra_id rai_bss = @@ -1657,7 +1657,7 @@ gbcfg.nsi = bssgp_nsi; gbcfg.nsip_sgsn_nsei = SGSN_NSEI; gbcfg.core_plmn = (struct osmo_plmn_id){ .mcc = 123, .mnc = 456 }; - gbcfg.core_apn = talloc_zero_size(NULL, 100); + gbcfg.core_apn = talloc_zero_size(tall_bsc_ctx, 100); gbcfg.core_apn_size = gprs_str_to_apn(gbcfg.core_apn, 100, "foo.bar"); gbcfg.patch_ptmsi = 0; @@ -1960,6 +1960,9 @@ OSMO_ASSERT(!expect_msg()); received_messages = NULL; + talloc_free(gbcfg.core_apn); + gbcfg.core_apn = NULL; + gbproxy_clear_patch_filter(&gbcfg.matches[GBPROX_MATCH_PATCHING]); gbprox_reset(&gbcfg); gprs_ns_destroy(nsi); @@ -1968,7 +1971,7 @@ static void test_gbproxy_ptmsi_assignment() { - struct gprs_ns_inst *nsi = gprs_ns_instantiate(gprs_ns_callback, NULL); + struct gprs_ns_inst *nsi = gprs_ns_instantiate(gprs_ns_callback, tall_bsc_ctx); struct sockaddr_in bss_peer[1] = {{0},}; struct sockaddr_in sgsn_peer= {0}; struct gprs_ra_id rai_bss = @@ -1997,7 +2000,7 @@ gbcfg.nsi = bssgp_nsi; gbcfg.nsip_sgsn_nsei = SGSN_NSEI; gbcfg.core_plmn = (struct osmo_plmn_id){}; - gbcfg.core_apn = talloc_zero_size(NULL, 100); + gbcfg.core_apn = talloc_zero_size(tall_bsc_ctx, 100); gbcfg.core_apn_size = gprs_str_to_apn(gbcfg.core_apn, 100, "foo.bar"); gbcfg.patch_ptmsi = 0; @@ -2172,6 +2175,9 @@ dump_global(stdout, 0); + talloc_free(gbcfg.core_apn); + gbcfg.core_apn = NULL; + gbprox_reset(&gbcfg); gprs_ns_destroy(nsi); nsi = NULL; @@ -2181,7 +2187,7 @@ static void test_gbproxy_ptmsi_patching() { - struct gprs_ns_inst *nsi = gprs_ns_instantiate(gprs_ns_callback, NULL); + struct gprs_ns_inst *nsi = gprs_ns_instantiate(gprs_ns_callback, tall_bsc_ctx); struct sockaddr_in bss_peer[1] = {{0},}; struct sockaddr_in sgsn_peer= {0}; struct gprs_ra_id rai_bss = @@ -2230,7 +2236,7 @@ gbcfg.nsi = bssgp_nsi; gbcfg.nsip_sgsn_nsei = SGSN_NSEI; gbcfg.core_plmn = (struct osmo_plmn_id){ .mcc = 123, .mnc = 456 }; - gbcfg.core_apn = talloc_zero_size(NULL, 100); + gbcfg.core_apn = talloc_zero_size(tall_bsc_ctx, 100); gbcfg.core_apn_size = gprs_str_to_apn(gbcfg.core_apn, 100, "foo.bar"); gbcfg.patch_ptmsi = 1; @@ -2508,6 +2514,9 @@ dump_global(stdout, 0); + talloc_free(gbcfg.core_apn); + gbcfg.core_apn = NULL; + gbprox_reset(&gbcfg); gprs_ns_destroy(nsi); nsi = NULL; @@ -2517,7 +2526,7 @@ static void test_gbproxy_ptmsi_patching_bad_cases() { - struct gprs_ns_inst *nsi = gprs_ns_instantiate(gprs_ns_callback, NULL); + struct gprs_ns_inst *nsi = gprs_ns_instantiate(gprs_ns_callback, tall_bsc_ctx); struct sockaddr_in bss_peer[1] = {{0},}; struct sockaddr_in sgsn_peer= {0}; struct gprs_ra_id rai_bss = @@ -2548,7 +2557,7 @@ gbcfg.nsi = bssgp_nsi; gbcfg.nsip_sgsn_nsei = SGSN_NSEI; gbcfg.core_plmn = (struct osmo_plmn_id){ .mcc = 123, .mnc = 456 }; - gbcfg.core_apn = talloc_zero_size(NULL, 100); + gbcfg.core_apn = talloc_zero_size(tall_bsc_ctx, 100); gbcfg.core_apn_size = gprs_str_to_apn(gbcfg.core_apn, 100, "foo.bar"); gbcfg.patch_ptmsi = 1; @@ -2686,6 +2695,9 @@ dump_global(stdout, 0); + talloc_free(gbcfg.core_apn); + gbcfg.core_apn = NULL; + gbprox_reset(&gbcfg); gprs_ns_destroy(nsi); nsi = NULL; @@ -2696,7 +2708,7 @@ static void test_gbproxy_imsi_acquisition() { - struct gprs_ns_inst *nsi = gprs_ns_instantiate(gprs_ns_callback, NULL); + struct gprs_ns_inst *nsi = gprs_ns_instantiate(gprs_ns_callback, tall_bsc_ctx); struct sockaddr_in bss_peer[1] = {{0},}; struct sockaddr_in sgsn_peer= {0}; struct gprs_ra_id rai_bss = @@ -2731,7 +2743,7 @@ gbcfg.nsi = bssgp_nsi; gbcfg.nsip_sgsn_nsei = SGSN_NSEI; gbcfg.core_plmn = (struct osmo_plmn_id){ .mcc = 123, .mnc = 456 }; - gbcfg.core_apn = talloc_zero_size(NULL, 100); + gbcfg.core_apn = talloc_zero_size(tall_bsc_ctx, 100); gbcfg.core_apn_size = gprs_str_to_apn(gbcfg.core_apn, 100, "foo.bar"); gbcfg.patch_ptmsi = 1; gbcfg.acquire_imsi = 1; @@ -2997,6 +3009,9 @@ dump_global(stdout, 0); + talloc_free(gbcfg.core_apn); + gbcfg.core_apn = NULL; + gbprox_reset(&gbcfg); gprs_ns_destroy(nsi); nsi = NULL; @@ -3006,7 +3021,7 @@ static void test_gbproxy_secondary_sgsn() { - struct gprs_ns_inst *nsi = gprs_ns_instantiate(gprs_ns_callback, NULL); + struct gprs_ns_inst *nsi = gprs_ns_instantiate(gprs_ns_callback, tall_bsc_ctx); struct sockaddr_in bss_peer[1] = {{0},}; struct sockaddr_in sgsn_peer[2]= {{0},}; struct gprs_ra_id rai_bss = @@ -3056,7 +3071,7 @@ gbcfg.nsi = bssgp_nsi; gbcfg.nsip_sgsn_nsei = SGSN_NSEI; gbcfg.core_plmn = (struct osmo_plmn_id){ .mcc = 123, .mnc = 456 }; - gbcfg.core_apn = talloc_zero_size(NULL, 100); + gbcfg.core_apn = talloc_zero_size(tall_bsc_ctx, 100); gbcfg.core_apn_size = gprs_str_to_apn(gbcfg.core_apn, 100, "foo.bar"); gbcfg.patch_ptmsi = 1; gbcfg.acquire_imsi = 1; @@ -3497,6 +3512,9 @@ dump_global(stdout, 0); + talloc_free(gbcfg.core_apn); + gbcfg.core_apn = NULL; + gbproxy_clear_patch_filter(&gbcfg.matches[GBPROX_MATCH_ROUTING]); gbprox_reset(&gbcfg); gprs_ns_destroy(nsi); @@ -3507,7 +3525,7 @@ static void test_gbproxy_keep_info() { - struct gprs_ns_inst *nsi = gprs_ns_instantiate(gprs_ns_callback, NULL); + struct gprs_ns_inst *nsi = gprs_ns_instantiate(gprs_ns_callback, tall_bsc_ctx); struct sockaddr_in bss_peer[1] = {{0},}; struct sockaddr_in sgsn_peer= {0}; struct gprs_ra_id rai_bss = @@ -4440,6 +4458,9 @@ dump_global(stdout, 0); + talloc_free(gbcfg.core_apn); + gbcfg.core_apn = NULL; + gbprox_reset(&gbcfg); gprs_ns_destroy(nsi); nsi = NULL; @@ -4728,6 +4749,8 @@ } gbproxy_clear_patch_filter(&cfg.matches[GBPROX_MATCH_PATCHING]); gbprox_reset(&cfg); + /* gbprox_reset() frees the rate_ctr, but re-allocates it again. */ + rate_ctr_group_free(cfg.ctrg); cleanup_test(); } @@ -4810,7 +4833,7 @@ static void test_gbproxy_stored_messages() { - struct gprs_ns_inst *nsi = gprs_ns_instantiate(gprs_ns_callback, NULL); + struct gprs_ns_inst *nsi = gprs_ns_instantiate(gprs_ns_callback, tall_bsc_ctx); struct sockaddr_in bss_peer[1] = {{0},}; struct sockaddr_in sgsn_peer= {0}; struct gprs_ra_id rai_bss = @@ -4834,7 +4857,7 @@ gbcfg.nsi = bssgp_nsi; gbcfg.nsip_sgsn_nsei = SGSN_NSEI; gbcfg.core_plmn = (struct osmo_plmn_id){}; - gbcfg.core_apn = talloc_zero_size(NULL, 100); + gbcfg.core_apn = talloc_zero_size(tall_bsc_ctx, 100); gbcfg.core_apn_size = gprs_str_to_apn(gbcfg.core_apn, 100, "foo.bar"); gbcfg.patch_ptmsi = 0; gbcfg.acquire_imsi = 1; @@ -4894,6 +4917,9 @@ dump_global(stdout, 0); + talloc_free(gbcfg.core_apn); + gbcfg.core_apn = NULL; + gbprox_reset(&gbcfg); gprs_ns_destroy(nsi); nsi = NULL; @@ -4926,9 +4952,13 @@ int main(int argc, char **argv) { - msgb_talloc_ctx_init(NULL, 0); + talloc_enable_leak_report(); + tall_bsc_ctx = talloc_named_const(NULL, 0, "gbproxy_test"); + void *log_ctx = talloc_named_const(tall_bsc_ctx, 0, "log"); - osmo_init_logging(&info); + msgb_talloc_ctx_init(tall_bsc_ctx, 0); + + osmo_init_logging2(log_ctx, &info); log_set_use_color(osmo_stderr_target, 0); log_set_print_filename(osmo_stderr_target, 0); osmo_signal_register_handler(SS_L_NS, &test_signal, &gbcfg); @@ -4937,7 +4967,7 @@ log_set_log_level(osmo_stderr_target, LOGL_DEBUG); log_set_all_filter(osmo_stderr_target, 1); - rate_ctr_init(NULL); + rate_ctr_init(tall_bsc_ctx); setlinebuf(stdout); @@ -4955,7 +4985,15 @@ test_gbproxy_keep_info(); test_gbproxy_tlli_expire(); test_gbproxy_stored_messages(); + gbprox_reset(&gbcfg); + /* gbprox_reset() frees the rate_ctr, but re-allocates it again. */ + rate_ctr_group_free(gbcfg.ctrg); printf("===== GbProxy test END\n\n"); - exit(EXIT_SUCCESS); + talloc_free(log_ctx); + /* expecting root and msgb ctx, empty */ + OSMO_ASSERT(talloc_total_blocks(tall_bsc_ctx) == 2); + talloc_free(tall_bsc_ctx); + + return 0; } diff --git a/tests/gprs/gprs_test.c b/tests/gprs/gprs_test.c index 2dcbafa..99e3ea5 100644 --- a/tests/gprs/gprs_test.c +++ b/tests/gprs/gprs_test.c @@ -130,7 +130,8 @@ int main(int argc, char **argv) { - osmo_init_logging(&info); + void *ctx = talloc_named_const(NULL, 0, "gprs_test"); + osmo_init_logging2(ctx, &info); test_8_4_2(); test_gprs_timer_enc_dec(); diff --git a/tests/gtphub/gtphub_test.c b/tests/gtphub/gtphub_test.c index ac0223b..2e48bb1 100644 --- a/tests/gtphub/gtphub_test.c +++ b/tests/gtphub/gtphub_test.c @@ -1762,8 +1762,9 @@ int main(int argc, char **argv) { - osmo_init_logging(&info); osmo_gtphub_ctx = talloc_named_const(NULL, 0, "osmo_gtphub"); + void *log_ctx = talloc_named_const(osmo_gtphub_ctx, 0, "log"); + osmo_init_logging2(log_ctx, &info); test_nr_map_basic(); test_nr_map_wrap(); @@ -1780,7 +1781,9 @@ printf("Done\n"); talloc_report_full(osmo_gtphub_ctx, stderr); + talloc_free(log_ctx); OSMO_ASSERT(talloc_total_blocks(osmo_gtphub_ctx) == 1); + talloc_free(osmo_gtphub_ctx); return 0; } diff --git a/tests/oap/oap_client_test.c b/tests/oap/oap_client_test.c index 7adae83..87d2070 100644 --- a/tests/oap/oap_client_test.c +++ b/tests/oap/oap_client_test.c @@ -252,8 +252,9 @@ int main(int argc, char **argv) { - msgb_talloc_ctx_init(NULL, 0); - osmo_init_logging(&info); + void *ctx = talloc_named_const(NULL, 0, "oap_client_test"); + msgb_talloc_ctx_init(ctx, 0); + osmo_init_logging2(ctx, &info); OSMO_ASSERT(osmo_stderr_target); log_set_use_color(osmo_stderr_target, 0); diff --git a/tests/sgsn/sgsn_test.c b/tests/sgsn/sgsn_test.c index 2fbd6e4..df4df3b 100644 --- a/tests/sgsn/sgsn_test.c +++ b/tests/sgsn/sgsn_test.c @@ -2444,8 +2444,8 @@ void *osmo_sgsn_ctx; void *msgb_ctx; - osmo_init_logging(&info); osmo_sgsn_ctx = talloc_named_const(NULL, 0, "osmo_sgsn"); + osmo_init_logging2(osmo_sgsn_ctx, &info); tall_bsc_ctx = talloc_named_const(osmo_sgsn_ctx, 0, "bsc"); msgb_ctx = msgb_talloc_ctx_init(osmo_sgsn_ctx, 0); diff --git a/tests/slhc/slhc_test.c b/tests/slhc/slhc_test.c index bb0e26c..5c13313 100644 --- a/tests/slhc/slhc_test.c +++ b/tests/slhc/slhc_test.c @@ -250,17 +250,20 @@ int main(int argc, char **argv) { void *ctx; - - osmo_init_logging(&info); + void *log_ctx; ctx = talloc_named_const(NULL, 0, "slhc_ctx"); + log_ctx = talloc_named_const(ctx, 0, "log"); + osmo_init_logging2(log_ctx, &info); test_slhc(ctx); printf("Done\n"); talloc_report_full(ctx, stderr); + talloc_free(log_ctx); OSMO_ASSERT(talloc_total_blocks(ctx) == 1); + talloc_free(ctx); return 0; } diff --git a/tests/sndcp_xid/sndcp_xid_test.c b/tests/sndcp_xid/sndcp_xid_test.c index dc6da82..5ed695c 100644 --- a/tests/sndcp_xid/sndcp_xid_test.c +++ b/tests/sndcp_xid/sndcp_xid_test.c @@ -261,10 +261,11 @@ int main(int argc, char **argv) { void *xid_ctx; - - osmo_init_logging(&info); + void *log_ctx; xid_ctx = talloc_named_const(NULL, 0, "xid_ctx"); + log_ctx = talloc_named_const(xid_ctx, 0, "log"); + osmo_init_logging2(log_ctx, &info); test_xid_decode_realworld(xid_ctx); test_xid_encode_decode(xid_ctx); @@ -272,7 +273,9 @@ printf("Done\n"); talloc_report_full(xid_ctx, stderr); + talloc_free(log_ctx); OSMO_ASSERT(talloc_total_blocks(xid_ctx) == 1); + talloc_free(xid_ctx); return 0; } diff --git a/tests/v42bis/v42bis_test.c b/tests/v42bis/v42bis_test.c index 41d23b0..e9c5069 100644 --- a/tests/v42bis/v42bis_test.c +++ b/tests/v42bis/v42bis_test.c @@ -407,11 +407,12 @@ int main(int argc, char **argv) { void *v42bis_ctx; + void *log_ctx; int i; - osmo_init_logging(&info); - v42bis_ctx = talloc_named_const(NULL, 0, "v42bis_ctx"); + log_ctx = talloc_named_const(v42bis_ctx, 0, "log"); + osmo_init_logging2(log_ctx, &info); test_v42bis(v42bis_ctx); @@ -423,7 +424,9 @@ printf("Done\n"); talloc_report_full(v42bis_ctx, stderr); + talloc_free(log_ctx); OSMO_ASSERT(talloc_total_blocks(v42bis_ctx) == 1); + talloc_free(v42bis_ctx); return 0; } diff --git a/tests/xid/xid_test.c b/tests/xid/xid_test.c index e30a14f..89d82e9 100644 --- a/tests/xid/xid_test.c +++ b/tests/xid/xid_test.c @@ -142,17 +142,20 @@ int main(int argc, char **argv) { void *xid_ctx; - - osmo_init_logging(&info); + void *log_ctx; xid_ctx = talloc_named_const(NULL, 0, "xid_ctx"); + log_ctx = talloc_named_const(xid_ctx, 0, "log"); + osmo_init_logging2(log_ctx, &info); test_xid_decode(xid_ctx); test_xid_encode(xid_ctx); printf("Done\n"); talloc_report_full(xid_ctx, stderr); + talloc_free(log_ctx); OSMO_ASSERT(talloc_total_blocks(xid_ctx) == 1); + talloc_free(xid_ctx); return 0; } -- To view, visit https://gerrit.osmocom.org/7816 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Ia4204c8b3d895b42c103edecb61b99d3d22bd36f Gerrit-PatchSet: 1 Gerrit-Project: osmo-sgsn Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr From gerrit-no-reply at lists.osmocom.org Sun Apr 15 23:08:15 2018 From: gerrit-no-reply at lists.osmocom.org (Neels Hofmeyr) Date: Sun, 15 Apr 2018 23:08:15 +0000 Subject: [PATCH] libosmocore[master]: cosmetic: log: fix typo, clarify msg for rate_ctr name mangling Message-ID: Review at https://gerrit.osmocom.org/7817 cosmetic: log: fix typo, clarify msg for rate_ctr name mangling Change-Id: I9a04d501698f8a3360ef9dcbf04b57c5ac10e63b --- M src/rate_ctr.c 1 file changed, 3 insertions(+), 2 deletions(-) git pull ssh://gerrit.osmocom.org:29418/libosmocore refs/changes/17/7817/1 diff --git a/src/rate_ctr.c b/src/rate_ctr.c index ec054c5..777a42a 100644 --- a/src/rate_ctr.c +++ b/src/rate_ctr.c @@ -169,8 +169,9 @@ goto err_free; } - LOGP(DLGLOBAL, LOGL_INFO, "Needed to mangle ounter group '%s' names still using '.' as " - "separator, please consider updating the application\n", desc->group_name_prefix); + LOGP(DLGLOBAL, LOGL_INFO, "Needed to mangle counter group '%s' names: it is still using '.' as " + "separator, which is not allowed. please consider updating the application\n", + desc->group_name_prefix); return desc_new; err_free: -- To view, visit https://gerrit.osmocom.org/7817 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I9a04d501698f8a3360ef9dcbf04b57c5ac10e63b Gerrit-PatchSet: 1 Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr From gerrit-no-reply at lists.osmocom.org Sun Apr 15 23:11:09 2018 From: gerrit-no-reply at lists.osmocom.org (Neels Hofmeyr) Date: Sun, 15 Apr 2018 23:11:09 +0000 Subject: osmo-bsc[master]: prevent ARFCN+BSIC collisions in config In-Reply-To: References: Message-ID: Patch Set 1: ah, didn't realize this already depends on the neighbor_ident API -- To view, visit https://gerrit.osmocom.org/7814 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Ia7c38188ccbad5d8b7398e3e5220015e62c08c8b Gerrit-PatchSet: 1 Gerrit-Project: osmo-bsc Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Neels Hofmeyr Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Sun Apr 15 23:29:40 2018 From: gerrit-no-reply at lists.osmocom.org (Neels Hofmeyr) Date: Sun, 15 Apr 2018 23:29:40 +0000 Subject: osmo-hlr[master]: rewrite subscriber_update_notify() without calls into luop In-Reply-To: References: Message-ID: Patch Set 2: Code-Review-1 (3 comments) nice; let's still resolve that luop.c:142 question. So, you'd like to commit this first instead of avoiding the code dup right away? :) I'd do it the other way round, but I don't mind if you do clean it up later; added bonus for already having that patch sitting next to this one. https://gerrit.osmocom.org/#/c/7743/1/src/hlr.c File src/hlr.c: Line 127: co && co->conn && co->conn->server? co->conn->server->addr : "unset", > Fixed. (sorry, didn't actually mean that you should include it in the patch; technically it is an unrelated cosmetic change which would rather stay separate from functional changes. but ok, let's leave it in, maybe next time) https://gerrit.osmocom.org/#/c/7743/2/src/hlr.c File src/hlr.c: Line 79: " for %s:%u\n", subscr->imsi, (ah, double space in log msg) https://gerrit.osmocom.org/#/c/7743/2/src/luop.c File src/luop.c: Line 142: unit_len = osmo_gsup_conn_ccm_get(conn, &unit, IPAC_IDTAG_UNITNAME); the idea goes in the right direction, could you verify though whether this actually belongs in osmo_gsup_server_accept_cb()? IIRC that conn name "SGSN-0-0-0" comes in at that time, and hence that's when we would determine once whether that conn is an SGSN or not. This function here is just adding a lu_op to the conn, i.e. just one of many requests that peer (MSC, SGSN) asks on the persistent conn. (Admitted, the name sounds like it's allocating the conn here.) -- To view, visit https://gerrit.osmocom.org/7743 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I06c43ece2b48dc63d599000eb6d6d51e08963067 Gerrit-PatchSet: 2 Gerrit-Project: osmo-hlr Gerrit-Branch: master Gerrit-Owner: Stefan Sperling Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Neels Hofmeyr Gerrit-Reviewer: Stefan Sperling Gerrit-Reviewer: neels Gerrit-HasComments: Yes From gerrit-no-reply at lists.osmocom.org Sun Apr 15 23:33:34 2018 From: gerrit-no-reply at lists.osmocom.org (Neels Hofmeyr) Date: Sun, 15 Apr 2018 23:33:34 +0000 Subject: [PATCH] osmo-msc[master]: cosmetic: use enum ranap_nsap_addr_enc instead of int In-Reply-To: References: Message-ID: Hello Harald Welte, Jenkins Builder, I'd like you to reexamine a change. Please visit https://gerrit.osmocom.org/7296 to look at the new patch set (#3). cosmetic: use enum ranap_nsap_addr_enc instead of int The only reason to use int instead of the enum was the lack of header iu_client.h when not building with Iu support. Rather use the configure result properly, include the header when Iu support is built and use the proper enum. Omit the entire iu sub-struct when building without Iu. Add LIBOSMORANAP_CFLAGS to libcommon in order to find the iu_client.h header. Rationale: Instead of using a questionable typecast from int* to enum*, we can now use the enum member directly without needing to silence compiler warnings. Change-Id: Ic9f8bf53f4b605c166e84cd7edd90c10fe7d7a1f --- M include/osmocom/msc/gsm_data.h M src/libgsupclient/Makefile.am M src/libmsc/msc_vty.c 3 files changed, 12 insertions(+), 2 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-msc refs/changes/96/7296/3 diff --git a/include/osmocom/msc/gsm_data.h b/include/osmocom/msc/gsm_data.h index c5e7aaf..73047ee 100644 --- a/include/osmocom/msc/gsm_data.h +++ b/include/osmocom/msc/gsm_data.h @@ -23,6 +23,11 @@ /* TS 48.008 DLCI containing DCCH/ACCH + SAPI */ #define OMSC_LINKID_CB(__msgb) (__msgb)->cb[3] +#include "../../bscconfig.h" +#if BUILD_IU +#include +#endif + /** annotations for msgb ownership */ #define __uses @@ -311,12 +316,14 @@ struct mgcp_client *client; } mgw; +#if BUILD_IU struct { /* CS7 instance id number (set via VTY) */ uint32_t cs7_instance; - int rab_assign_addr_enc; + enum ranap_nsap_addr_enc rab_assign_addr_enc; struct osmo_sccp_instance *sccp; } iu; +#endif struct { /* CS7 instance id number (set via VTY) */ diff --git a/src/libgsupclient/Makefile.am b/src/libgsupclient/Makefile.am index a33fb38..6b4826d 100644 --- a/src/libgsupclient/Makefile.am +++ b/src/libgsupclient/Makefile.am @@ -10,6 +10,9 @@ $(LIBOSMOGSM_CFLAGS) \ $(LIBOSMOVTY_CFLAGS) \ $(LIBOSMOABIS_CFLAGS) \ + $(LIBOSMOSCCP_CFLAGS) \ + $(LIBOSMOMGCPCLIENT_CFLAGS) \ + $(LIBOSMORANAP_CFLAGS) \ $(COVERAGE_CFLAGS) \ $(NULL) diff --git a/src/libmsc/msc_vty.c b/src/libmsc/msc_vty.c index 84d4d14..4ca6d55 100644 --- a/src/libmsc/msc_vty.c +++ b/src/libmsc/msc_vty.c @@ -1422,7 +1422,7 @@ mgcp_client_vty_init(msc_network, MSC_NODE, &msc_network->mgw.conf); #ifdef BUILD_IU - ranap_iu_vty_init(MSC_NODE, (enum ranap_nsap_addr_enc*)&msc_network->iu.rab_assign_addr_enc); + ranap_iu_vty_init(MSC_NODE, &msc_network->iu.rab_assign_addr_enc); #endif osmo_fsm_vty_add_cmds(); -- To view, visit https://gerrit.osmocom.org/7296 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newpatchset Gerrit-Change-Id: Ic9f8bf53f4b605c166e84cd7edd90c10fe7d7a1f Gerrit-PatchSet: 3 Gerrit-Project: osmo-msc Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Neels Hofmeyr From gerrit-no-reply at lists.osmocom.org Sun Apr 15 23:34:03 2018 From: gerrit-no-reply at lists.osmocom.org (Neels Hofmeyr) Date: Sun, 15 Apr 2018 23:34:03 +0000 Subject: osmo-msc[master]: cosmetic: use enum ranap_nsap_addr_enc instead of int In-Reply-To: References: Message-ID: Patch Set 3: Code-Review+2 re-add previous +2, merely resolved merge conflicts -- To view, visit https://gerrit.osmocom.org/7296 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Ic9f8bf53f4b605c166e84cd7edd90c10fe7d7a1f Gerrit-PatchSet: 3 Gerrit-Project: osmo-msc Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Neels Hofmeyr Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Sun Apr 15 23:52:04 2018 From: gerrit-no-reply at lists.osmocom.org (Neels Hofmeyr) Date: Sun, 15 Apr 2018 23:52:04 +0000 Subject: [PATCH] osmo-msc[master]: cosmetic: use enum ranap_nsap_addr_enc instead of int In-Reply-To: References: Message-ID: Hello Harald Welte, Jenkins Builder, I'd like you to reexamine a change. Please visit https://gerrit.osmocom.org/7296 to look at the new patch set (#4). cosmetic: use enum ranap_nsap_addr_enc instead of int The only reason to use int instead of the enum was the lack of header iu_client.h when not building with Iu support. Rather use the configure result properly, include the header when Iu support is built and use the proper enum. Omit the entire iu sub-struct when building without Iu. Add LIBOSMORANAP_CFLAGS to libvlr, in order to find the iu_client.h header (now also included from gsm_data.h). Rationale: Instead of using a questionable typecast from int* to enum*, we can now use the enum member directly without needing to silence compiler warnings. Change-Id: Ic9f8bf53f4b605c166e84cd7edd90c10fe7d7a1f --- M include/osmocom/msc/gsm_data.h M src/libmsc/msc_vty.c M src/libvlr/Makefile.am 3 files changed, 18 insertions(+), 2 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-msc refs/changes/96/7296/4 diff --git a/include/osmocom/msc/gsm_data.h b/include/osmocom/msc/gsm_data.h index c5e7aaf..73047ee 100644 --- a/include/osmocom/msc/gsm_data.h +++ b/include/osmocom/msc/gsm_data.h @@ -23,6 +23,11 @@ /* TS 48.008 DLCI containing DCCH/ACCH + SAPI */ #define OMSC_LINKID_CB(__msgb) (__msgb)->cb[3] +#include "../../bscconfig.h" +#if BUILD_IU +#include +#endif + /** annotations for msgb ownership */ #define __uses @@ -311,12 +316,14 @@ struct mgcp_client *client; } mgw; +#if BUILD_IU struct { /* CS7 instance id number (set via VTY) */ uint32_t cs7_instance; - int rab_assign_addr_enc; + enum ranap_nsap_addr_enc rab_assign_addr_enc; struct osmo_sccp_instance *sccp; } iu; +#endif struct { /* CS7 instance id number (set via VTY) */ diff --git a/src/libmsc/msc_vty.c b/src/libmsc/msc_vty.c index 84d4d14..d10028e 100644 --- a/src/libmsc/msc_vty.c +++ b/src/libmsc/msc_vty.c @@ -380,8 +380,14 @@ "cs7-instance-iu <0-15>", "Set SS7 to be used by the Iu-Interface.\n" "SS7 instance reference number\n") { +#if BUILD_IU gsmnet->iu.cs7_instance = atoi(argv[0]); return CMD_SUCCESS; +#else + vty_out(vty, "WARNING: 'cs7-instance-iu' without effect: built without Iu support%s", + VTY_NEWLINE); + return CMD_WARNING; +#endif } DEFUN(cfg_msc_auth_tuple_max_reuse_count, cfg_msc_auth_tuple_max_reuse_count_cmd, @@ -437,8 +443,10 @@ vty_out(vty, " cs7-instance-a %u%s", gsmnet->a.cs7_instance, VTY_NEWLINE); +#if BUILD_IU vty_out(vty, " cs7-instance-iu %u%s", gsmnet->iu.cs7_instance, VTY_NEWLINE); +#endif if (gsmnet->vlr->cfg.auth_tuple_max_reuse_count) vty_out(vty, " auth-tuple-max-reuse-count %d%s", @@ -1422,7 +1430,7 @@ mgcp_client_vty_init(msc_network, MSC_NODE, &msc_network->mgw.conf); #ifdef BUILD_IU - ranap_iu_vty_init(MSC_NODE, (enum ranap_nsap_addr_enc*)&msc_network->iu.rab_assign_addr_enc); + ranap_iu_vty_init(MSC_NODE, &msc_network->iu.rab_assign_addr_enc); #endif osmo_fsm_vty_add_cmds(); diff --git a/src/libvlr/Makefile.am b/src/libvlr/Makefile.am index e3d5ced..1408f6c 100644 --- a/src/libvlr/Makefile.am +++ b/src/libvlr/Makefile.am @@ -6,6 +6,7 @@ $(LIBOSMOSCCP_CFLAGS) \ $(LIBOSMOMGCPCLIENT_CFLAGS) \ $(LIBOSMOABIS_CFLAGS) \ + $(LIBOSMORANAP_CFLAGS) \ $(COVERAGE_CFLAGS) \ $(NULL) -- To view, visit https://gerrit.osmocom.org/7296 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newpatchset Gerrit-Change-Id: Ic9f8bf53f4b605c166e84cd7edd90c10fe7d7a1f Gerrit-PatchSet: 4 Gerrit-Project: osmo-msc Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Neels Hofmeyr From jenkins at lists.osmocom.org Mon Apr 16 00:00:46 2018 From: jenkins at lists.osmocom.org (jenkins at lists.osmocom.org) Date: Mon, 16 Apr 2018 00:00:46 +0000 (UTC) Subject: =?UTF-8?Q?Build_failed_in_Jenkins:_master-osmo-bts_=C2=BB_lc15, origin/?= =?UTF-8?Q?nrw/litecell15-next,default,osmocom-master-debian9_#513?= Message-ID: <1789507941.335.1523836846916.JavaMail.jenkins@jenkins.osmocom.org> See ------------------------------------------ [...truncated 112.76 KB...] + project=libosmo-abis + branch=master + git branch -a + grep -c remotes/origin/master$ + [ x1 != x0 ] + branch=origin/master + test -d libosmo-abis + cd libosmo-abis + git fetch --tags origin + git fetch origin + deps= osmo-clean-workspace.sh + chmod -R +w . + git checkout -f HEAD + git clean -dxf + [ -d ] + [ -d layer1-headers ] + git checkout -f origin/master HEAD is now at 43b5b69... configure.ac: Fix condition check for RTP_SIGNAL_PTR_CAST define + git rev-parse HEAD 43b5b69bb890441c7285541b36ef986063eab8cb + cd libosmo-abis + mkdir -p + autoreconf --install --force libtoolize: putting auxiliary files in AC_CONFIG_AUX_DIR, '.'. libtoolize: copying file './ltmain.sh' libtoolize: putting macros in AC_CONFIG_MACRO_DIRS, 'm4'. libtoolize: copying file 'm4/libtool.m4' libtoolize: copying file 'm4/ltoptions.m4' libtoolize: copying file 'm4/ltsugar.m4' libtoolize: copying file 'm4/ltversion.m4' libtoolize: copying file 'm4/lt~obsolete.m4' configure.ac:20: installing './compile' configure.ac:22: installing './config.guess' configure.ac:22: installing './config.sub' configure.ac:8: installing './install-sh' configure.ac:8: installing './missing' src/Makefile.am: installing './depcomp' + ./configure --prefix= checking for a BSD-compatible install... /usr/bin/install -c checking whether build environment is sane... yes checking for a thread-safe mkdir -p... /bin/mkdir -p checking for gawk... gawk checking whether make sets $(MAKE)... yes checking whether make supports nested variables... yes checking whether make supports nested variables... (cached) yes checking whether make sets $(MAKE)... (cached) yes checking for gcc... gcc checking whether the C compiler works... yes checking for C compiler default output file name... a.out checking for suffix of executables... checking whether we are cross compiling... no checking for suffix of object files... o checking whether we are using the GNU C compiler... yes checking whether gcc accepts -g... yes checking for gcc option to accept ISO C89... none needed checking whether gcc understands -c and -o together... yes checking for style of include used by make... GNU checking dependency style of gcc... gcc3 checking build system type... x86_64-pc-linux-gnu checking host system type... x86_64-pc-linux-gnu checking how to print strings... printf checking for a sed that does not truncate output... /bin/sed checking for grep that handles long lines and -e... /bin/grep checking for egrep... /bin/grep -E checking for fgrep... /bin/grep -F checking for ld used by gcc... /usr/bin/ld checking if the linker (/usr/bin/ld) is GNU ld... yes checking for BSD- or MS-compatible name lister (nm)... /usr/bin/nm -B checking the name lister (/usr/bin/nm -B) interface... BSD nm checking whether ln -s works... yes checking the maximum length of command line arguments... 1572864 checking how to convert x86_64-pc-linux-gnu file names to x86_64-pc-linux-gnu format... func_convert_file_noop checking how to convert x86_64-pc-linux-gnu file names to toolchain format... func_convert_file_noop checking for /usr/bin/ld option to reload object files... -r checking for objdump... objdump checking how to recognize dependent libraries... pass_all checking for dlltool... no checking how to associate runtime and link libraries... printf %s\n checking for ar... ar checking for archiver @FILE support... @ checking for strip... strip checking for ranlib... ranlib checking command to parse /usr/bin/nm -B output from gcc object... ok checking for sysroot... no checking for a working dd... /bin/dd checking how to truncate binary pipes... /bin/dd bs=4096 count=1 checking for mt... mt checking if mt is a manifest tool... no checking how to run the C preprocessor... gcc -E checking for ANSI C header files... yes checking for sys/types.h... yes checking for sys/stat.h... yes checking for stdlib.h... yes checking for string.h... yes checking for memory.h... yes checking for strings.h... yes checking for inttypes.h... yes checking for stdint.h... yes checking for unistd.h... yes checking for dlfcn.h... yes checking for objdir... .libs checking if gcc supports -fno-rtti -fno-exceptions... no checking for gcc option to produce PIC... -fPIC -DPIC checking if gcc PIC flag -fPIC -DPIC works... yes checking if gcc static flag -static works... yes checking if gcc supports -c -o file.o... yes checking if gcc supports -c -o file.o... (cached) yes checking whether the gcc linker (/usr/bin/ld -m elf_x86_64) supports shared libraries... yes checking whether -lc should be explicitly linked in... no checking dynamic linker characteristics... GNU/Linux ld.so checking how to hardcode library paths into programs... immediate checking whether stripping libraries is possible... yes checking if libtool supports shared libraries... yes checking whether to build shared libraries... yes checking whether to build static libraries... yes checking for pkg-config... /usr/bin/pkg-config checking for pkg-config... /usr/bin/pkg-config checking pkg-config is at least version 0.20... yes checking if gcc supports -fvisibility=hidden... yes checking for LIBOSMOCORE... yes checking for LIBOSMOVTY... yes checking for LIBOSMOGSM... yes checking for ORTP... yes checking dahdi/user.h usability... no checking dahdi/user.h presence... no checking for dahdi/user.h... no configure: WARNING: DAHDI input driver will not be built CFLAGS="-g -O2 -Wall" CPPFLAGS=" -Wall" checking that generated files are newer than configure... done configure: creating ./config.status config.status: creating libosmoabis.pc config.status: creating libosmotrau.pc config.status: creating include/Makefile config.status: creating src/Makefile config.status: creating tests/Makefile config.status: creating Makefile config.status: creating config.h config.status: executing tests/atconfig commands config.status: executing depfiles commands config.status: executing libtool commands + make -j 8 install echo 0.3.2.105-43b5 > .version-t && mv .version-t .version make install-recursive make[1]: Entering directory ' Making install in include make[2]: Entering directory ' make[3]: Entering directory ' make[3]: Nothing to be done for 'install-exec-am'. /bin/mkdir -p ' /bin/mkdir -p ' /usr/bin/install -c -m 644 osmocom/abis/ipa.h osmocom/abis/trau_frame.h osmocom/abis/ipa_proxy.h osmocom/abis/ipaccess.h osmocom/abis/abis.h osmocom/abis/subchan_demux.h osmocom/abis/e1_input.h osmocom/abis/lapd.h osmocom/abis/lapd_pcap.h osmocom/abis/unixsocket_proto.h ' /bin/mkdir -p ' /usr/bin/install -c -m 644 osmocom/trau/osmo_ortp.h ' make[3]: Leaving directory ' make[2]: Leaving directory ' Making install in src make[2]: Entering directory ' CC init.lo CC e1_input.lo CC e1_input_vty.lo CC ipa_proxy.lo CC subchan_demux.lo CC trau_frame.lo CC input/dahdi.lo CC input/ipa.lo CC input/ipaccess.lo CC input/lapd.lo CC input/lapd_pcap.lo CC input/misdn.lo CC input/rs232.lo CC input/unixsocket.lo CC trau/libosmotrau_la-osmo_ortp.lo trau/osmo_ortp.c:205:9: note: #pragma message: Using internal ortp API: rtp_session_rtcp_rec #pragma message ("Using internal ortp API: rtp_session_rtcp_rec") ^~~~~~~ CCLD libosmoabis.la CCLD libosmotrau.la ar: `u' modifier ignored since `D' is the default (see `U') ar: `u' modifier ignored since `D' is the default (see `U') make[3]: Entering directory ' make[3]: Nothing to be done for 'install-data-am'. /bin/mkdir -p ' /bin/bash ../libtool --mode=install /usr/bin/install -c libosmoabis.la libosmotrau.la ' libtool: install: /usr/bin/install -c .libs/libosmoabis.so.6.0.0 libtool: install: (cd && { ln -s -f libosmoabis.so.6.0.0 libosmoabis.so.6 || { rm -f libosmoabis.so.6 && ln -s libosmoabis.so.6.0.0 libosmoabis.so.6; }; }) libtool: install: (cd && { ln -s -f libosmoabis.so.6.0.0 libosmoabis.so || { rm -f libosmoabis.so && ln -s libosmoabis.so.6.0.0 libosmoabis.so; }; }) libtool: install: /usr/bin/install -c .libs/libosmoabis.lai libtool: install: /usr/bin/install -c .libs/libosmotrau.so.2.0.0 libtool: install: (cd && { ln -s -f libosmotrau.so.2.0.0 libosmotrau.so.2 || { rm -f libosmotrau.so.2 && ln -s libosmotrau.so.2.0.0 libosmotrau.so.2; }; }) libtool: install: (cd && { ln -s -f libosmotrau.so.2.0.0 libosmotrau.so || { rm -f libosmotrau.so && ln -s libosmotrau.so.2.0.0 libosmotrau.so; }; }) libtool: install: /usr/bin/install -c .libs/libosmotrau.lai libtool: install: /usr/bin/install -c .libs/libosmoabis.a libtool: install: chmod 644 libtool: install: ranlib libtool: install: /usr/bin/install -c .libs/libosmotrau.a libtool: install: chmod 644 libtool: install: ranlib libtool: finish: PATH="/usr/local/bin:/usr/bin:/bin:/usr/games:/home/osmocom-build/bin:/sbin" ldconfig -n ---------------------------------------------------------------------- Libraries have been installed in: If you ever happen to want to link against installed libraries in a given directory, LIBDIR, you must either use libtool, and specify the full pathname of the library, or use the '-LLIBDIR' flag during linking and do at least one of the following: - add LIBDIR to the 'LD_LIBRARY_PATH' environment variable during execution - add LIBDIR to the 'LD_RUN_PATH' environment variable during linking - use the '-Wl,-rpath -Wl,LIBDIR' linker flag - have your system administrator add LIBDIR to '/etc/ld.so.conf' See any operating system documentation about shared libraries for more information, such as the ld(1) and ld.so(8) manual pages. ---------------------------------------------------------------------- make[3]: Leaving directory ' make[2]: Leaving directory ' Making install in tests make[2]: Entering directory ' make[3]: Entering directory ' make[3]: Nothing to be done for 'install-exec-am'. make[3]: Nothing to be done for 'install-data-am'. make[3]: Leaving directory ' make[2]: Leaving directory ' make[2]: Entering directory ' make[3]: Entering directory ' make[3]: Nothing to be done for 'install-exec-am'. /bin/mkdir -p ' /usr/bin/install -c -m 644 libosmoabis.pc libosmotrau.pc ' make[3]: Leaving directory ' make[2]: Leaving directory ' make[1]: Leaving directory ' + STOW_DIR= stow --restow libosmo-abis + cd + osmo-layer1-headers.sh lc15 origin/nrw/litecell15-next + uri=https://gitlab.com/nrw_litecell15/litecell15-fw + version=origin/nrw/litecell15 + [ -n origin/nrw/litecell15-next ] + [ origin/nrw/litecell15-next != master ] + version=origin/nrw/litecell15-next + test -d layer1-headers + cd layer1-headers + git fetch origin + git checkout -f origin/nrw/litecell15-next error: pathspec 'origin/nrw/litecell15-next' did not match any file(s) known to git. Build step 'Execute shell' marked build as failure [WARNINGS]Skipping publisher since build result is FAILURE From jenkins at lists.osmocom.org Mon Apr 16 00:15:46 2018 From: jenkins at lists.osmocom.org (jenkins at lists.osmocom.org) Date: Mon, 16 Apr 2018 00:15:46 +0000 (UTC) Subject: =?UTF-8?Q?Jenkins_build_is_back_to_normal_:_master-osmo-iuh_=C2=BB_a1=3Dd?= =?UTF-8?Q?efault,a2=3Ddefault,a3=3Ddefault,osmocom-master-debian9_#937?= In-Reply-To: <95314303.331.1523808497490.JavaMail.jenkins@jenkins.osmocom.org> References: <95314303.331.1523808497490.JavaMail.jenkins@jenkins.osmocom.org> Message-ID: <291180667.336.1523837746782.JavaMail.jenkins@jenkins.osmocom.org> See From jenkins at lists.osmocom.org Mon Apr 16 00:49:16 2018 From: jenkins at lists.osmocom.org (jenkins at lists.osmocom.org) Date: Mon, 16 Apr 2018 00:49:16 +0000 (UTC) Subject: =?UTF-8?Q?Jenkins_build_is_back_to_norm?= =?UTF-8?Q?al_:_master-osmo-bts_=C2=BB_lc15,or?= =?UTF-8?Q?igin/nrw/litecell15-next,default,osmocom-master-debian9_#514?= In-Reply-To: <1789507941.335.1523836846916.JavaMail.jenkins@jenkins.osmocom.org> References: <1789507941.335.1523836846916.JavaMail.jenkins@jenkins.osmocom.org> Message-ID: <1298427969.337.1523839756733.JavaMail.jenkins@jenkins.osmocom.org> See From admin at opensuse.org Mon Apr 16 06:00:02 2018 From: admin at opensuse.org (OBS Notification) Date: Mon, 16 Apr 2018 06:00:02 +0000 Subject: Build failure of network:osmocom:nightly/osmo-msc in Debian_9.0/armv7l In-Reply-To: References: Message-ID: <5ad43beda5fe4_79024766846864a0@build.opensuse.org> Visit https://build.opensuse.org/package/live_build_log/network:osmocom:nightly/osmo-msc/Debian_9.0/armv7l Package network:osmocom:nightly/osmo-msc failed to build in Debian_9.0/armv7l Check out the package for editing: osc checkout network:osmocom:nightly osmo-msc Last lines of build log: [ 11s] [64/70] preinstalling bash... [ 11s] [65/70] preinstalling mount... [ 12s] [66/70] preinstalling util-linux... [ 12s] [67/70] preinstalling sysvinit-utils... [ 12s] [68/70] preinstalling e2fsprogs... [ 12s] [69/70] preinstalling sysv-rc... [ 12s] [70/70] preinstalling initscripts... [ 12s] [ 12s] [1/1] preinstalling libdevmapper1.02.1... [ 13s] copying packages... [ 14s] reordering...cycle: libc6 -> libgcc1 [ 14s] breaking dependency libgcc1 -> libc6 [ 14s] cycle: debhelper -> dh-autoreconf [ 14s] breaking dependency debhelper -> dh-autoreconf [ 14s] cycle: dh-strip-nondeterminism -> debhelper [ 14s] breaking dependency debhelper -> dh-strip-nondeterminism [ 14s] done [ 14s] objdump: /boot/Image.guest32: File format not recognized [ 15s] booting kvm... [ 15s] linux64 /usr/bin/qemu-system-aarch64 -nodefaults -no-reboot -nographic -vga none -enable-kvm -cpu host,aarch64=off -M virt,gic-version=host -object rng-random,filename=/dev/random,id=rng0 -device virtio-rng-device,rng=rng0 -runas qemu -mem-prealloc -mem-path /dev/hugepages -net none -kernel /boot/Image.guest32 -initrd /boot/initrd.guest32 -append root=/dev/disk/by-id/virtio-0 rootfstype=ext3 rootflags=data=writeback,nobarrier,commit=150,noatime panic=1 quiet no-kvmclock nmi_watchdog=0 rw rd.driver.pre=binfmt_misc elevator=noop console=ttyAMA0 init=/.build/initvm.aarch64 -m 9216 -drive file=/var/cache/obs/worker/root_23/root,format=raw,if=none,id=disk,serial=0,cache=unsafe -device virtio-blk-device,drive=disk -drive file=/var/cache/obs/worker/root_23/swap,format=raw,if=none,id=swap,serial=1,cache=unsafe -device virtio-blk-device,drive=swap -serial stdio -chardev socket,id=monitor,server,nowait,path=/var/cache/obs/worker/root_23/root.qemu/monitor -mon chardev=monitor,mode=readline -smp 8 [ 15s] qemu-system-aarch64: -drive file=/var/cache/obs/worker/root_23/root,format=raw,if=none,id=disk,serial=0,cache=unsafe: 'serial' is deprecated, please use the corresponding option of '-device' instead [ 15s] qemu-system-aarch64: -drive file=/var/cache/obs/worker/root_23/swap,format=raw,if=none,id=swap,serial=1,cache=unsafe: 'serial' is deprecated, please use the corresponding option of '-device' instead Job seems to be stuck here, killed. (after 28800 seconds of inactivity) [28825s] qemu-system-aarch64: terminating on signal 15 from pid 32761 () [28826s] /var/run/obs/worker/23/build/build-vm: line 920: warning: command substitution: ignored null byte in input [28826s] No buildstatus set, either the base system is broken (kernel/initrd/udev/glibc/bash/perl) [28826s] or the build host has a kernel or hardware problem... -- Configure notifications at https://build.opensuse.org/user/notifications openSUSE Build Service (https://build.opensuse.org/) From jenkins at lists.osmocom.org Mon Apr 16 06:16:41 2018 From: jenkins at lists.osmocom.org (jenkins at lists.osmocom.org) Date: Mon, 16 Apr 2018 06:16:41 +0000 (UTC) Subject: =?UTF-8?Q?Build_failed_in_Jenkins:_maste?= =?UTF-8?Q?r-openbsc_=C2=BB_--disable-iu,--enab?= =?UTF-8?Q?le-mgcp-transcoding,--enable-smpp,osmocom-master-debian9_#1651?= Message-ID: <597887218.343.1523859401524.JavaMail.jenkins@jenkins.osmocom.org> See ------------------------------------------ Started by upstream project "master-openbsc" build number 1651 originally caused by: Started by upstream project "master-libosmo-sccp" build number 705 originally caused by: Started by timer Building remotely on build2-deb9build-ansible (ttcn3 osmo-gsm-tester-build osmocom-gerrit-debian9 osmocom-master-debian9 coverity) in workspace > git rev-parse --is-inside-work-tree # timeout=10 Fetching changes from the remote Git repository > git config remote.origin.url git://git.osmocom.org/openbsc # timeout=10 Fetching upstream changes from git://git.osmocom.org/openbsc > git --version # timeout=10 > git fetch --tags --progress git://git.osmocom.org/openbsc +refs/heads/*:refs/remotes/origin/* Checking out Revision 77c6e48cb9f9fa69ad23752759415a8438964601 (refs/remotes/origin/master) > git config core.sparsecheckout # timeout=10 > git checkout -f 77c6e48cb9f9fa69ad23752759415a8438964601 Commit message: "bsc_nat: ctrl: Fix crash on receveing bsc reply" > git rev-list --no-walk 77c6e48cb9f9fa69ad23752759415a8438964601 # timeout=10 [osmocom-master-debian9] $ /bin/sh -xe /tmp/jenkins7736264888417507849.sh + ARTIFACT_STORE=/home/osmocom-build/jenkins_build_artifact_store + mkdir -p /home/osmocom-build/jenkins_build_artifact_store + docker run --rm=true -e HOME=/build -e ARTIFACT_STORE=/artifact_store -e JOB_NAME=master-openbsc/IU=--disable-iu,MGCP=--enable-mgcp-transcoding,SMPP=--enable-smpp,label=osmocom-master-debian9 -e MAKE=make -e PARALLEL_MAKE=-j 8 -e IU=--disable-iu -e SMPP=--enable-smpp -e MGCP=--enable-mgcp-transcoding -e PATH=/usr/local/bin:/usr/bin:/bin:/usr/games:/home/osmocom-build/bin:/build_bin -e OSMOPY_DEBUG_TCP_SOCKETS=1 -w /build -i -u build -v :/build -v /home/osmocom-build/bin:/build_bin -v /home/osmocom-build/jenkins_build_artifact_store:/artifact_store osmocom:amd64 /build/contrib/jenkins.sh + osmo-clean-workspace.sh + chmod -R +w . + git checkout -f HEAD + git clean -dxf Skipping repository deps/libosmocore Skipping repository deps/libosmo-sccp Skipping repository deps/libosmo-netif Skipping repository deps/openggsn Skipping repository deps/libsmpp34 Skipping repository deps/libosmo-abis + [ -d ] + [ -d layer1-headers ] + [ x--disable-iu = x--enable-iu ] + . osmo-build.sh + log source sanity check to ensure that sourcing script holds necessary functions + set +x + type artifact_deps + type build_deps + type build_project + log check whether necessary dependency build scripts are in PATH + set +x [INFO] source sanity check to ensure that sourcing script holds necessary functions artifact_deps is a shell function build_deps is a shell function build_project is a shell function [INFO] check whether necessary dependency build scripts are in PATH + type osmo-build-dep.sh + type osmo-deps.sh osmo-build-dep.sh is /build_bin/osmo-build-dep.sh osmo-deps.sh is /build_bin/osmo-deps.sh + build + init_build + [ -z master-openbsc/IU=--disable-iu,MGCP=--enable-mgcp-transcoding,SMPP=--enable-smpp,label=osmocom-master-debian9 ] + [ -z /artifact_store ] + pwd + base=/build + deps=/build/deps + inst=/build/deps/install + rm -rf /build/deps + git config --get --local remote.origin.url + cut -d / -f4 + cut -d . -f1 + project=openbsc + echo master-openbsc/IU=--disable-iu,MGCP=--enable-mgcp-transcoding,SMPP=--enable-smpp,label=osmocom-master-debian9 + tr / _ + job_name=master-openbsc_IU=--disable-iu,MGCP=--enable-mgcp-transcoding,SMPP=--enable-smpp,label=osmocom-master-debian9 + export base deps inst project job_name + export PKG_CONFIG_PATH=/build/deps/install/lib/pkgconfig: + export LD_LIBRARY_PATH=/build/deps/install/lib + log openbsc build initialized + set +x [INFO] openbsc build initialized + artifact_name + [ -d /build/deps ] + artifact_deps branch_and_rev_of_remote_repo + branch_and_rev_of_remote_repo libosmocore + [ -z ] + branch=master + echo master + tr / _ + branch=master + git ls-remote git://git.osmocom.org/libosmocore refs/heads/master + rev=db2fa4e0d5a112adedf17948a73b481c69022e14 refs/heads/master + [ db2fa4e0d5a112adedf17948a73b481c69022e14 refs/heads/master = ] + echo db2fa4e0d5a112adedf17948a73b481c69022e14 refs/heads/master + cut -c 1-7 + rev=db2fa4e + echo libosmocore.master.db2fa4e + x=libosmocore.master.db2fa4e + branch_and_rev_of_remote_repo libosmo-abis + [ -z ] + branch=master + echo master + tr / _ + branch=master + git ls-remote git://git.osmocom.org/libosmo-abis refs/heads/master + rev=43b5b69bb890441c7285541b36ef986063eab8cb refs/heads/master + [ 43b5b69bb890441c7285541b36ef986063eab8cb refs/heads/master = ] + echo 43b5b69bb890441c7285541b36ef986063eab8cb refs/heads/master + cut -c 1-7 + rev=43b5b69 + echo libosmo-abis.master.43b5b69 + x=libosmocore.master.db2fa4e_libosmo-abis.master.43b5b69 + branch_and_rev_of_remote_repo libosmo-netif + [ -z ] + branch=master + echo master + tr / _ + branch=master + git ls-remote git://git.osmocom.org/libosmo-netif refs/heads/master + rev=5c962c2f3eb1c4e1497edf0f540006c76deb06fd refs/heads/master + [ 5c962c2f3eb1c4e1497edf0f540006c76deb06fd refs/heads/master = ] + echo 5c962c2f3eb1c4e1497edf0f540006c76deb06fd refs/heads/master + cut -c 1-7 + rev=5c962c2 + echo libosmo-netif.master.5c962c2 + x=libosmocore.master.db2fa4e_libosmo-abis.master.43b5b69_libosmo-netif.master.5c962c2 + branch_and_rev_of_remote_repo libosmo-sccp + [ -z x ] + branch= + echo + tr / _ + branch= + git ls-remote git://git.osmocom.org/libosmo-sccp refs/heads/ + rev= + [ = ] + echo libosmo-sccp. + x=libosmocore.master.db2fa4e_libosmo-abis.master.43b5b69_libosmo-netif.master.5c962c2_libosmo-sccp. + branch_and_rev_of_remote_repo libsmpp34 + [ -z ] + branch=master + echo master + tr / _ + branch=master + git ls-remote git://git.osmocom.org/libsmpp34 refs/heads/master + rev=0cad3b4538710a91881ddbb80424c2d7c62de962 refs/heads/master + [ 0cad3b4538710a91881ddbb80424c2d7c62de962 refs/heads/master = ] + echo 0cad3b4538710a91881ddbb80424c2d7c62de962 refs/heads/master + cut -c 1-7 + rev=0cad3b4 + echo libsmpp34.master.0cad3b4 + x=libosmocore.master.db2fa4e_libosmo-abis.master.43b5b69_libosmo-netif.master.5c962c2_libosmo-sccp._libsmpp34.master.0cad3b4 + branch_and_rev_of_remote_repo openggsn + [ -z ] + branch=master + echo master + tr / _ + branch=master + git ls-remote git://git.osmocom.org/openggsn refs/heads/master + rev=242266da789e512dce0e9947864844d6a946d3b1 refs/heads/master + [ 242266da789e512dce0e9947864844d6a946d3b1 refs/heads/master = ] + echo 242266da789e512dce0e9947864844d6a946d3b1 refs/heads/master + cut -c 1-7 + rev=242266d + echo openggsn.master.242266d + x=libosmocore.master.db2fa4e_libosmo-abis.master.43b5b69_libosmo-netif.master.5c962c2_libosmo-sccp._libsmpp34.master.0cad3b4_openggsn.master.242266d + [ x--disable-iu = x--enable-iu ] + echo libosmocore.master.db2fa4e_libosmo-abis.master.43b5b69_libosmo-netif.master.5c962c2_libosmo-sccp._libsmpp34.master.0cad3b4_openggsn.master.242266d.tar.gz + artifact_name=libosmocore.master.db2fa4e_libosmo-abis.master.43b5b69_libosmo-netif.master.5c962c2_libosmo-sccp._libsmpp34.master.0cad3b4_openggsn.master.242266d.tar.gz + [ -f /artifact_store/master-openbsc_IU=--disable-iu,MGCP=--enable-mgcp-transcoding,SMPP=--enable-smpp,label=osmocom-master-debian9/libosmocore.master.db2fa4e_libosmo-abis.master.43b5b69_libosmo-netif.master.5c962c2_libosmo-sccp._libsmpp34.master.0cad3b4_openggsn.master.242266d.tar.gz ] [INFO] Compile openbsc dependencies from source. + log Compile openbsc dependencies from source. + set +x + mkdir -p /build/deps + rm -rf /build/deps/install + build_deps + osmo-build-dep.sh libosmocore master ac_cv_path_DOXYGEN=false =============================== libosmocore =============================== + mkdir -p /build/deps + cd /build/deps + osmo-deps.sh libosmocore master + project=libosmocore + branch=master + git branch -a + grep -c remotes/origin/master$ + [ x1 != x0 ] + branch=origin/master + test -d libosmocore + git clone git://git.osmocom.org/libosmocore libosmocore Cloning into 'libosmocore'... + cd libosmocore + git fetch --tags origin + git fetch origin + deps= osmo-clean-workspace.sh + chmod -R +w . + git checkout -f HEAD Your branch is up-to-date with 'origin/master'. + git clean -dxf + [ -d ] + [ -d layer1-headers ] + git checkout -f origin/master Note: checking out 'origin/master'. You are in 'detached HEAD' state. You can look around, make experimental changes and commit them, and you can discard any commits you make in this state without impacting any branches by performing another checkout. If you want to create a new branch to retain commits you create, you may do so (now or later) by using -b with the checkout command again. Example: git checkout -b new_branch_name HEAD is now at db2fa4e... test_gsm0808_enc_dec_cell_id_list_lac(): populate all LACs + git rev-parse HEAD db2fa4e0d5a112adedf17948a73b481c69022e14 + cd libosmocore + mkdir -p /build/deps/install/stow + autoreconf --install --force autom4te: cannot create /tmp/arUT6vmW/am4t3985.109: No space left on device at /usr/bin/autom4te line 969. aclocal: error: echo failed with exit status: 28 autoreconf: aclocal failed with exit status: 28 Build step 'Execute shell' marked build as failure [WARNINGS]Skipping publisher since build result is FAILURE From jenkins at lists.osmocom.org Mon Apr 16 06:16:42 2018 From: jenkins at lists.osmocom.org (jenkins at lists.osmocom.org) Date: Mon, 16 Apr 2018 06:16:42 +0000 (UTC) Subject: =?UTF-8?Q?Build_failed_in_Jenkins:_master-osmo-sgsn_=C2=BB_--disable?= =?UTF-8?Q?-iu,a2=3Ddefault,a3=3Ddefault,osmocom-master-debian9_#2363?= Message-ID: <24426003.344.1523859402568.JavaMail.jenkins@jenkins.osmocom.org> See ------------------------------------------ Started by upstream project "master-osmo-sgsn" build number 2363 originally caused by: Started by upstream project "master-libosmo-sccp" build number 705 originally caused by: Started by timer Building remotely on build2-deb9build-ansible (ttcn3 osmo-gsm-tester-build osmocom-gerrit-debian9 osmocom-master-debian9 coverity) in workspace > git rev-parse --is-inside-work-tree # timeout=10 Fetching changes from the remote Git repository > git config remote.origin.url git://git.osmocom.org/osmo-sgsn # timeout=10 Fetching upstream changes from git://git.osmocom.org/osmo-sgsn > git --version # timeout=10 > git fetch --tags --progress git://git.osmocom.org/osmo-sgsn +refs/heads/*:refs/remotes/origin/* Checking out Revision 69e356be93c420b5e2f8b96fbc89ef889cbcfe53 (refs/remotes/origin/master) > git config core.sparsecheckout # timeout=10 > git checkout -f 69e356be93c420b5e2f8b96fbc89ef889cbcfe53 Commit message: "compiler warnings: use enum ranap_nsap_addr_enc, constify local var" > git rev-list --no-walk 69e356be93c420b5e2f8b96fbc89ef889cbcfe53 # timeout=10 [osmocom-master-debian9] $ /bin/sh -xe /tmp/jenkins3488472229903219758.sh + docker run --rm=true -e HOME=/build -e MAKE=make -e PARALLEL_MAKE=-j 8 -e IU=--disable-iu -e PATH=/usr/local/bin:/usr/bin:/bin:/usr/games:/home/osmocom-build/bin:/build_bin -e OSMOPY_DEBUG_TCP_SOCKETS=1 -w /build -i -u build -v :/build -v /home/osmocom-build/bin:/build_bin osmocom:amd64 /build/contrib/jenkins.sh + base=/build + deps=/build/deps + inst=/build/deps/install + export deps inst + osmo-clean-workspace.sh + chmod -R +w . + git checkout -f HEAD + git clean -dxf Skipping repository deps/libosmocore Skipping repository deps/libosmo-netif Skipping repository deps/osmo-ggsn Skipping repository deps/libosmo-abis + [ -d /build/deps ] + git_clean /build/deps/libosmo-abis + repos=/build/deps/libosmo-abis + [ ! -d /build/deps/libosmo-abis ] + [ ! -d /build/deps/libosmo-abis/.git ] + git -C /build/deps/libosmo-abis checkout -f HEAD + git -C /build/deps/libosmo-abis clean -dxf + git_clean /build/deps/libosmo-netif + repos=/build/deps/libosmo-netif + [ ! -d /build/deps/libosmo-netif ] + [ ! -d /build/deps/libosmo-netif/.git ] + git -C /build/deps/libosmo-netif checkout -f HEAD + git -C /build/deps/libosmo-netif clean -dxf + git_clean /build/deps/libosmocore + repos=/build/deps/libosmocore + [ ! -d /build/deps/libosmocore ] + [ ! -d /build/deps/libosmocore/.git ] + git -C /build/deps/libosmocore checkout -f HEAD + git -C /build/deps/libosmocore clean -dxf + git_clean /build/deps/osmo-ggsn + repos=/build/deps/osmo-ggsn + [ ! -d /build/deps/osmo-ggsn ] + [ ! -d /build/deps/osmo-ggsn/.git ] + git -C /build/deps/osmo-ggsn checkout -f HEAD + git -C /build/deps/osmo-ggsn clean -dxf + [ -d layer1-headers ] + mkdir /build/deps mkdir: cannot create directory '/build/deps': File exists + true + osmo-build-dep.sh libosmocore '' ac_cv_path_DOXYGEN=false =============================== libosmocore =============================== + mkdir -p /build/deps + cd /build/deps + osmo-deps.sh libosmocore + project=libosmocore + branch=master + git branch -a + grep -c remotes/origin/master$ + [ x1 != x0 ] + branch=origin/master + test -d libosmocore + cd libosmocore + git fetch --tags origin + git fetch origin + deps= osmo-clean-workspace.sh + chmod -R +w . + git checkout -f HEAD + git clean -dxf + [ -d ] + [ -d layer1-headers ] + git checkout -f origin/master HEAD is now at db2fa4e... test_gsm0808_enc_dec_cell_id_list_lac(): populate all LACs + git rev-parse HEAD db2fa4e0d5a112adedf17948a73b481c69022e14 + cd libosmocore + mkdir -p /build/deps/install/stow + autoreconf --install --force libtoolize: putting auxiliary files in AC_CONFIG_AUX_DIR, `.'. libtoolize: copying file `./ltmain.sh' libtoolize: putting macros in AC_CONFIG_MACRO_DIR, `m4'. libtoolize: copying file `m4/libtool.m4' libtoolize: copying file `m4/ltoptions.m4' libtoolize: copying file `m4/ltsugar.m4' libtoolize: copying file `m4/ltversion.m4' libtoolize: copying file `m4/lt~obsolete.m4' autom4te: cannot create /tmp/arRC3rGn/am4t9937.659: No space left on device at /usr/bin/autom4te line 969. aclocal: error: echo failed with exit status: 28 autoreconf: aclocal failed with exit status: 28 Build step 'Execute shell' marked build as failure [WARNINGS]Skipping publisher since build result is FAILURE From jenkins at lists.osmocom.org Mon Apr 16 06:20:29 2018 From: jenkins at lists.osmocom.org (jenkins at lists.osmocom.org) Date: Mon, 16 Apr 2018 06:20:29 +0000 (UTC) Subject: =?UTF-8?Q?Build_failed_in_Jenkins:_master-osmo-msc_=C2=BB_--disable-?= =?UTF-8?Q?iu,a2=3Ddefault,a3=3Ddefault,osmocom-master-debian9_#2845?= Message-ID: <365738018.346.1523859629039.JavaMail.jenkins@jenkins.osmocom.org> See ------------------------------------------ [...truncated 766.06 KB...] lr-x------ 1 build build 64 Apr 16 06:19 4 -> /dev/urandom > ss -tn State Recv-Q Send-Q Local Address:Port Peer Address:Port > ss -tln State Recv-Q Send-Q Local Address:Port Peer Address:Port > ps xua | grep osmo build 2998 0.0 0.0 21474971600 14680 ? R 06:20 0:00 ./src/osmo-msc/osmo-msc -c /build/tests/../doc/examples/osmo-msc/osmo-msc.cfg build 3005 0.0 0.0 4336 768 ? S 06:20 0:00 /bin/sh -c ps xua | grep osmo build 3007 0.0 0.0 11128 944 ? S 06:20 0:00 grep osmo Socket: in 1 tries, connected to 127.0.0.1:4254 (1 sockets open) Socket: closing 127.0.0.1:4254 (0 sockets open) Terminating took 2.679s ok testSmppFirst (__main__.TestVTYMSC) ... Launching: PWD=/build './src/osmo-msc/osmo-msc' '-c' '/build/tests/../doc/examples/osmo-msc/osmo-msc.cfg' > ls -l /proc/2967/fd total 0 lr-x------ 1 build build 64 Apr 16 06:19 0 -> pipe:[644694871] l-wx------ 1 build build 64 Apr 16 06:19 1 -> pipe:[644694872] l-wx------ 1 build build 64 Apr 16 06:19 2 -> pipe:[644694873] l-wx------ 1 build build 64 Apr 16 06:19 3 -> /dev/null lr-x------ 1 build build 64 Apr 16 06:19 4 -> /dev/urandom > ss -tn State Recv-Q Send-Q Local Address:Port Peer Address:Port > ss -tln State Recv-Q Send-Q Local Address:Port Peer Address:Port LISTEN 0 10 127.0.0.1:4254 *:* LISTEN 0 10 127.0.0.1:4255 *:* LISTEN 0 10 *:2775 *:* > ps xua | grep osmo build 3008 0.0 0.0 21474971600 14952 ? D 06:20 0:00 ./src/osmo-msc/osmo-msc -c /build/tests/../doc/examples/osmo-msc/osmo-msc.cfg build 3015 0.0 0.0 4336 772 ? S 06:20 0:00 /bin/sh -c ps xua | grep osmo build 3017 0.0 0.0 4336 108 ? R 06:20 0:00 /bin/sh -c ps xua | grep osmo Socket: in 1 tries, connected to 127.0.0.1:4254 (1 sockets open) Socket: closing 127.0.0.1:4254 (0 sockets open) Terminating took 2.679s ok testVtyTree (__main__.TestVTYMSC) ... Launching: PWD=/build './src/osmo-msc/osmo-msc' '-c' '/build/tests/../doc/examples/osmo-msc/osmo-msc.cfg' > ls -l /proc/2967/fd total 0 lr-x------ 1 build build 64 Apr 16 06:19 0 -> pipe:[644694871] l-wx------ 1 build build 64 Apr 16 06:19 1 -> pipe:[644694872] l-wx------ 1 build build 64 Apr 16 06:19 2 -> pipe:[644694873] l-wx------ 1 build build 64 Apr 16 06:19 3 -> /dev/null lr-x------ 1 build build 64 Apr 16 06:19 4 -> /dev/urandom > ss -tn State Recv-Q Send-Q Local Address:Port Peer Address:Port > ss -tln State Recv-Q Send-Q Local Address:Port Peer Address:Port > ps xua | grep osmo build 3018 0.0 0.0 21474966520 8380 ? R 06:20 0:00 ./src/osmo-msc/osmo-msc -c /build/tests/../doc/examples/osmo-msc/osmo-msc.cfg build 3025 0.0 0.0 4336 816 ? S 06:20 0:00 /bin/sh -c ps xua | grep osmo build 3027 0.0 0.0 11128 1036 ? S 06:20 0:00 grep osmo Connecting socket failed, retrying... Socket: in 2 tries, connected to 127.0.0.1:4254 (1 sockets open) Socket: closing 127.0.0.1:4254 (0 sockets open) Terminating took 2.679s ok ---------------------------------------------------------------------- Ran 6 tests in 20.881s OK /usr/bin/python ./ctrl_test_runner.py -w /build -v testRateCounters (__main__.TestCtrlMSC) ... ok ---------------------------------------------------------------------- Ran 1 test in 5.408s OK confpath /build/tests/.., workdir /build Running tests for specific control commands Opening /dev/null Launching: PWD=/build './src/osmo-msc/osmo-msc' '-c' '/build/tests/../doc/examples/osmo-msc/osmo-msc.cfg' Connecting to host 127.0.0.1:4255 Sending "GET 1000 rate_ctr.*" Got message: ERROR 1000 GET variable contains invalid characters Decoded replies: {1000: {'mtype': 'ERROR', 'id': 1000, 'error': 'GET variable contains invalid characters'}} Terminating took 2.679s /usr/bin/python ./smpp_test_runner.py -w /build -v testSMPPCrashes (__main__.TestSMPPMSC) ... confpath /build/tests/.., workdir /build Running tests for specific SMPP Opening /dev/null Launching: PWD=/build './src/osmo-msc/osmo-msc' '-c' '/build/tests/../doc/examples/osmo-msc/osmo-msc.cfg' > ls -l /proc/3030/fd total 0 lr-x------ 1 build build 64 Apr 16 06:20 0 -> pipe:[644694871] l-wx------ 1 build build 64 Apr 16 06:20 1 -> pipe:[644694872] l-wx------ 1 build build 64 Apr 16 06:20 2 -> pipe:[644694873] l-wx------ 1 build build 64 Apr 16 06:20 3 -> /dev/null > ss -tn State Recv-Q Send-Q Local Address:Port Peer Address:Port > ss -tln State Recv-Q Send-Q Local Address:Port Peer Address:Port > ps xua | grep osmo build 3031 0.0 0.0 21474966520 8592 ? R 06:20 0:00 ./src/osmo-msc/osmo-msc -c /build/tests/../doc/examples/osmo-msc/osmo-msc.cfg build 3038 0.0 0.0 4336 816 ? S 06:20 0:00 /bin/sh -c ps xua | grep osmo build 3040 0.0 0.0 11128 1044 ? S 06:20 0:00 grep osmo ok ---------------------------------------------------------------------- Ran 1 test in 3.520s OK Connecting socket failed, retrying... Socket: in 2 tries, connected to 127.0.0.1:4254 (1 sockets open) Socket: closing 127.0.0.1:4254 (0 sockets open) Terminating took 2.679s rm -f ../sms.db make[5]: Leaving directory '/build/tests' make[4]: Leaving directory '/build/tests' make[3]: Leaving directory '/build/tests' make[2]: Leaving directory '/build/tests' make[2]: Entering directory '/build' make[2]: Leaving directory '/build' make[1]: Leaving directory '/build' + LD_LIBRARY_PATH=/build/deps/install/lib + DISTCHECK_CONFIGURE_FLAGS='--enable-smpp --disable-iu --enable-external-tests' + make distcheck make dist-bzip2 dist-gzip am__post_remove_distdir='@:' make[1]: Entering directory '/build' if test -d "osmo-msc-1.1.2.262-37a3a"; then find "osmo-msc-1.1.2.262-37a3a" -type d ! -perm -200 -exec chmod u+w {} ';' && rm -rf "osmo-msc-1.1.2.262-37a3a" || { sleep 5 && rm -rf "osmo-msc-1.1.2.262-37a3a"; }; else :; fi test -d "osmo-msc-1.1.2.262-37a3a" || mkdir "osmo-msc-1.1.2.262-37a3a" (cd doc && make top_distdir=../osmo-msc-1.1.2.262-37a3a distdir=../osmo-msc-1.1.2.262-37a3a/doc \ am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir) make[2]: Entering directory '/build/doc' (cd examples && make top_distdir=../../osmo-msc-1.1.2.262-37a3a distdir=../../osmo-msc-1.1.2.262-37a3a/doc/examples \ am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir) make[3]: Entering directory '/build/doc/examples' make \ top_distdir="../../osmo-msc-1.1.2.262-37a3a" distdir="../../osmo-msc-1.1.2.262-37a3a/doc/examples" \ dist-hook make[4]: Entering directory '/build/doc/examples' for f in $(find . -name '*.cfg*' | sed -e 's,^.,,'); do \ j="../../osmo-msc-1.1.2.262-37a3a/doc/examples/$f" && \ mkdir -p "$(dirname $j)" && \ /usr/bin/install -c -m 644 ./$f $j; \ done make[4]: Leaving directory '/build/doc/examples' make[3]: Leaving directory '/build/doc/examples' make[2]: Leaving directory '/build/doc' (cd include && make top_distdir=../osmo-msc-1.1.2.262-37a3a distdir=../osmo-msc-1.1.2.262-37a3a/include \ am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir) make[2]: Entering directory '/build/include' (cd osmocom && make top_distdir=../../osmo-msc-1.1.2.262-37a3a distdir=../../osmo-msc-1.1.2.262-37a3a/include/osmocom \ am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir) make[3]: Entering directory '/build/include/osmocom' (cd msc && make top_distdir=../../../osmo-msc-1.1.2.262-37a3a distdir=../../../osmo-msc-1.1.2.262-37a3a/include/osmocom/msc \ am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir) make[4]: Entering directory '/build/include/osmocom/msc' make[4]: Leaving directory '/build/include/osmocom/msc' make[3]: Leaving directory '/build/include/osmocom' make[2]: Leaving directory '/build/include' (cd src && make top_distdir=../osmo-msc-1.1.2.262-37a3a distdir=../osmo-msc-1.1.2.262-37a3a/src \ am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir) make[2]: Entering directory '/build/src' (cd libgsupclient && make top_distdir=../../osmo-msc-1.1.2.262-37a3a distdir=../../osmo-msc-1.1.2.262-37a3a/src/libgsupclient \ am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir) make[3]: Entering directory '/build/src/libgsupclient' make[3]: Leaving directory '/build/src/libgsupclient' (cd libvlr && make top_distdir=../../osmo-msc-1.1.2.262-37a3a distdir=../../osmo-msc-1.1.2.262-37a3a/src/libvlr \ am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir) make[3]: Entering directory '/build/src/libvlr' make[3]: Leaving directory '/build/src/libvlr' (cd libmsc && make top_distdir=../../osmo-msc-1.1.2.262-37a3a distdir=../../osmo-msc-1.1.2.262-37a3a/src/libmsc \ am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir) make[3]: Entering directory '/build/src/libmsc' make[3]: Leaving directory '/build/src/libmsc' (cd osmo-msc && make top_distdir=../../osmo-msc-1.1.2.262-37a3a distdir=../../osmo-msc-1.1.2.262-37a3a/src/osmo-msc \ am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir) make[3]: Entering directory '/build/src/osmo-msc' make[3]: Leaving directory '/build/src/osmo-msc' (cd utils && make top_distdir=../../osmo-msc-1.1.2.262-37a3a distdir=../../osmo-msc-1.1.2.262-37a3a/src/utils \ am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir) make[3]: Entering directory '/build/src/utils' make[3]: Leaving directory '/build/src/utils' make[2]: Leaving directory '/build/src' (cd tests && make top_distdir=../osmo-msc-1.1.2.262-37a3a distdir=../osmo-msc-1.1.2.262-37a3a/tests \ am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir) make[2]: Entering directory '/build/tests' (cd sms_queue && make top_distdir=../../osmo-msc-1.1.2.262-37a3a distdir=../../osmo-msc-1.1.2.262-37a3a/tests/sms_queue \ am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir) make[3]: Entering directory '/build/tests/sms_queue' make[3]: Leaving directory '/build/tests/sms_queue' (cd msc_vlr && make top_distdir=../../osmo-msc-1.1.2.262-37a3a distdir=../../osmo-msc-1.1.2.262-37a3a/tests/msc_vlr \ am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir) make[3]: Entering directory '/build/tests/msc_vlr' make[3]: Leaving directory '/build/tests/msc_vlr' (cd smpp && make top_distdir=../../osmo-msc-1.1.2.262-37a3a distdir=../../osmo-msc-1.1.2.262-37a3a/tests/smpp \ am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir) make[3]: Entering directory '/build/tests/smpp' make[3]: Leaving directory '/build/tests/smpp' make[2]: Leaving directory '/build/tests' make \ top_distdir="osmo-msc-1.1.2.262-37a3a" distdir="osmo-msc-1.1.2.262-37a3a" \ dist-hook make[2]: Entering directory '/build' echo 1.1.2.262-37a3a > osmo-msc-1.1.2.262-37a3a/.tarball-version make[2]: Leaving directory '/build' test -n "" \ || find "osmo-msc-1.1.2.262-37a3a" -type d ! -perm -755 \ -exec chmod u+rwx,go+rx {} \; -o \ ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \ ! -type d ! -perm -400 -exec chmod a+r {} \; -o \ ! -type d ! -perm -444 -exec /bin/bash /build/install-sh -c -m a+r {} {} \; \ || chmod -R a+r "osmo-msc-1.1.2.262-37a3a" tardir=osmo-msc-1.1.2.262-37a3a && ${TAR-tar} chof - "$tardir" | BZIP2=${BZIP2--9} bzip2 -c >osmo-msc-1.1.2.262-37a3a.tar.bz2 bzip2: I/O or other error, bailing out. Possible reason follows. bzip2: No space left on device Input file = (stdin), output file = (stdout) make[1]: *** [dist-bzip2] Error 1 Makefile:615: recipe for target 'dist-bzip2' failed make[1]: Leaving directory '/build' Makefile:646: recipe for target 'dist' failed make: *** [dist] Error 2 + cat-testlogs.sh Build step 'Execute shell' marked build as failure [WARNINGS]Skipping publisher since build result is FAILURE From jenkins at lists.osmocom.org Mon Apr 16 06:20:39 2018 From: jenkins at lists.osmocom.org (jenkins at lists.osmocom.org) Date: Mon, 16 Apr 2018 06:20:39 +0000 (UTC) Subject: =?UTF-8?Q?Build_failed_in_Jenkins:_master-osmo-msc_=C2=BB_--disable-?= =?UTF-8?Q?iu,a2=3Ddefault,a3=3Ddefault,osmocom-master-debian9_#2846?= In-Reply-To: <365738018.346.1523859629039.JavaMail.jenkins@jenkins.osmocom.org> References: <365738018.346.1523859629039.JavaMail.jenkins@jenkins.osmocom.org> Message-ID: <443945348.347.1523859639781.JavaMail.jenkins@jenkins.osmocom.org> See ------------------------------------------ Started by upstream project "master-osmo-msc" build number 2846 originally caused by: Started by upstream project "master-osmo-iuh" build number 939 originally caused by: Started by upstream project "master-libasn1c" build number 89 originally caused by: Started by timer Building remotely on build2-deb9build-ansible (ttcn3 osmo-gsm-tester-build osmocom-gerrit-debian9 osmocom-master-debian9 coverity) in workspace > git rev-parse --is-inside-work-tree # timeout=10 Fetching changes from the remote Git repository > git config remote.origin.url git://git.osmocom.org/osmo-msc # timeout=10 Fetching upstream changes from git://git.osmocom.org/osmo-msc > git --version # timeout=10 > git fetch --tags --progress git://git.osmocom.org/osmo-msc +refs/heads/*:refs/remotes/origin/* Checking out Revision 37a3ae8585df2d7b8d849b194705e3ef0d2e0f6e (refs/remotes/origin/master) > git config core.sparsecheckout # timeout=10 > git checkout -f 37a3ae8585df2d7b8d849b194705e3ef0d2e0f6e Commit message: "sms_queue: fix use-after-free on 'pending'" > git rev-list --no-walk 37a3ae8585df2d7b8d849b194705e3ef0d2e0f6e # timeout=10 [osmocom-master-debian9] $ /bin/sh -xe /tmp/jenkins6252614367087779087.sh + ARTIFACT_STORE=/home/osmocom-build/jenkins_build_artifact_store + mkdir -p /home/osmocom-build/jenkins_build_artifact_store + docker run --rm=true -i -e HOME=/build -e ARTIFACT_STORE=/artifact_store -e JOB_NAME=master-osmo-msc/IU=--disable-iu,a2=default,a3=default,label=osmocom-master-debian9 -e MAKE=make -e PARALLEL_MAKE=-j 8 -e IU=--disable-iu -e PATH=/usr/local/bin:/usr/bin:/bin:/usr/games:/home/osmocom-build/bin:/build_bin -e OSMOPY_DEBUG_TCP_SOCKETS=1 -w /build -u build -v :/build -v /home/osmocom-build/bin:/build_bin -v /home/osmocom-build/jenkins_build_artifact_store:/artifact_store osmocom:amd64 /build/contrib/jenkins.sh + base=/build + deps=/build/deps + inst=/build/deps/install + export deps inst + osmo-clean-workspace.sh + chmod -R +w . + git checkout -f HEAD + git clean -dxf Skipping repository deps/libosmocore Skipping repository deps/libosmo-sccp Skipping repository deps/libosmo-netif Skipping repository deps/libsmpp34 Skipping repository deps/libosmo-abis Skipping repository deps/osmo-mgw + [ -d /build/deps ] + git_clean /build/deps/libosmo-abis + repos=/build/deps/libosmo-abis + [ ! -d /build/deps/libosmo-abis ] + [ ! -d /build/deps/libosmo-abis/.git ] + git -C /build/deps/libosmo-abis checkout -f HEAD + git -C /build/deps/libosmo-abis clean -dxf + git_clean /build/deps/libosmo-netif + repos=/build/deps/libosmo-netif + [ ! -d /build/deps/libosmo-netif ] + [ ! -d /build/deps/libosmo-netif/.git ] + git -C /build/deps/libosmo-netif checkout -f HEAD + git -C /build/deps/libosmo-netif clean -dxf + git_clean /build/deps/libosmo-sccp + repos=/build/deps/libosmo-sccp + [ ! -d /build/deps/libosmo-sccp ] + [ ! -d /build/deps/libosmo-sccp/.git ] + git -C /build/deps/libosmo-sccp checkout -f HEAD + git -C /build/deps/libosmo-sccp clean -dxf + git_clean /build/deps/libosmocore + repos=/build/deps/libosmocore + [ ! -d /build/deps/libosmocore ] + [ ! -d /build/deps/libosmocore/.git ] + git -C /build/deps/libosmocore checkout -f HEAD + git -C /build/deps/libosmocore clean -dxf + git_clean /build/deps/libsmpp34 + repos=/build/deps/libsmpp34 + [ ! -d /build/deps/libsmpp34 ] + [ ! -d /build/deps/libsmpp34/.git ] + git -C /build/deps/libsmpp34 checkout -f HEAD + git -C /build/deps/libsmpp34 clean -dxf + git_clean /build/deps/osmo-mgw + repos=/build/deps/osmo-mgw + [ ! -d /build/deps/osmo-mgw ] + [ ! -d /build/deps/osmo-mgw/.git ] + git -C /build/deps/osmo-mgw checkout -f HEAD + git -C /build/deps/osmo-mgw clean -dxf + [ -d layer1-headers ] + mkdir /build/deps mkdir: cannot create directory '/build/deps': File exists + true + osmo-build-dep.sh libosmocore '' ac_cv_path_DOXYGEN=false =============================== libosmocore =============================== + mkdir -p /build/deps + cd /build/deps + osmo-deps.sh libosmocore + project=libosmocore + branch=master + git branch -a + grep -c remotes/origin/master$ + [ x1 != x0 ] + branch=origin/master + test -d libosmocore + cd libosmocore + git fetch --tags origin >From git://git.osmocom.org/libosmocore cefce66..db2fa4e master -> origin/master + ebee2ec...f142216 neels/inter_bsc_ho -> origin/neels/inter_bsc_ho (forced update) + git fetch origin + deps= osmo-clean-workspace.sh + chmod -R +w . + git checkout -f HEAD + git clean -dxf + [ -d ] + [ -d layer1-headers ] + git checkout -f origin/master Previous HEAD position was cefce66... fix issue on big endian architecture HEAD is now at db2fa4e... test_gsm0808_enc_dec_cell_id_list_lac(): populate all LACs + git rev-parse HEAD db2fa4e0d5a112adedf17948a73b481c69022e14 + cd libosmocore + mkdir -p /build/deps/install/stow + autoreconf --install --force autom4te: cannot create /tmp/ar6R1pvj/am4t7931.93: No space left on device at /usr/bin/autom4te line 969. aclocal: error: echo failed with exit status: 28 autoreconf: aclocal failed with exit status: 28 Build step 'Execute shell' marked build as failure [WARNINGS]Skipping publisher since build result is FAILURE From jenkins at lists.osmocom.org Mon Apr 16 06:21:14 2018 From: jenkins at lists.osmocom.org (jenkins at lists.osmocom.org) Date: Mon, 16 Apr 2018 06:21:14 +0000 (UTC) Subject: =?UTF-8?Q?Build_failed_in_Jenkins:_master?= =?UTF-8?Q?-openbsc_=C2=BB_--disable-iu,--disab?= =?UTF-8?Q?le-mgcp-transcoding,--enable-smpp,osmocom-master-debian9_#1651?= Message-ID: <448828917.348.1523859674309.JavaMail.jenkins@jenkins.osmocom.org> See ------------------------------------------ [...truncated 849.12 KB...] > ps xua | grep osmo build 5220 0.0 0.0 47996 5376 ? S 06:21 0:00 ./src/osmo-bsc_nat/osmo-bsc_nat -l 127.0.0.1 -c /build/openbsc/tests/../doc/examples/osmo-bsc_nat/osmo-bsc_nat.cfg build 5227 0.0 0.0 4336 724 ? S 06:21 0:00 /bin/sh -c ps xua | grep osmo build 5229 0.0 0.0 11128 1004 ? S 06:21 0:00 grep osmo Socket: in 1 tries, connected to 127.0.0.1:4244 (1 sockets open) Socket: closing 127.0.0.1:4244 (0 sockets open) ok testRewriteNoRewrite (__main__.TestVTYNAT) ... Launching: PWD=/build/openbsc './src/osmo-bsc_nat/osmo-bsc_nat' '-l' '127.0.0.1' '-c' '/build/openbsc/tests/../doc/examples/osmo-bsc_nat/osmo-bsc_nat.cfg' > ls -l /proc/4939/fd total 0 lr-x------ 1 build build 64 Apr 16 06:19 0 -> pipe:[644683512] l-wx------ 1 build build 64 Apr 16 06:19 1 -> pipe:[644683513] l-wx------ 1 build build 64 Apr 16 06:19 2 -> pipe:[644683514] l-wx------ 1 build build 64 Apr 16 06:19 3 -> /dev/null lr-x------ 1 build build 64 Apr 16 06:19 5 -> /dev/urandom > ss -tn State Recv-Q Send-Q Local Address:Port Peer Address:Port > ss -tln State Recv-Q Send-Q Local Address:Port Peer Address:Port LISTEN 0 1 127.0.0.1:5000 *:* LISTEN 0 1 *:5001 *:* LISTEN 0 10 127.0.0.1:4244 *:* LISTEN 0 10 127.0.0.1:4250 *:* > ps xua | grep osmo build 5230 0.0 0.0 47996 5424 ? S 06:21 0:00 ./src/osmo-bsc_nat/osmo-bsc_nat -l 127.0.0.1 -c /build/openbsc/tests/../doc/examples/osmo-bsc_nat/osmo-bsc_nat.cfg build 5237 0.0 0.0 4336 820 ? S 06:21 0:00 /bin/sh -c ps xua | grep osmo build 5239 0.0 0.0 11128 1004 ? S 06:21 0:00 grep osmo Socket: in 1 tries, connected to 127.0.0.1:4244 (1 sockets open) Socket: closing 127.0.0.1:4244 (0 sockets open) ok testRewritePostNoRewrite (__main__.TestVTYNAT) ... Launching: PWD=/build/openbsc './src/osmo-bsc_nat/osmo-bsc_nat' '-l' '127.0.0.1' '-c' '/build/openbsc/tests/../doc/examples/osmo-bsc_nat/osmo-bsc_nat.cfg' > ls -l /proc/4939/fd total 0 lr-x------ 1 build build 64 Apr 16 06:19 0 -> pipe:[644683512] l-wx------ 1 build build 64 Apr 16 06:19 1 -> pipe:[644683513] l-wx------ 1 build build 64 Apr 16 06:19 2 -> pipe:[644683514] l-wx------ 1 build build 64 Apr 16 06:19 3 -> /dev/null lr-x------ 1 build build 64 Apr 16 06:19 5 -> /dev/urandom > ss -tn State Recv-Q Send-Q Local Address:Port Peer Address:Port > ss -tln State Recv-Q Send-Q Local Address:Port Peer Address:Port LISTEN 0 1 127.0.0.1:5000 *:* LISTEN 0 1 *:5001 *:* LISTEN 0 10 127.0.0.1:4244 *:* LISTEN 0 10 127.0.0.1:4250 *:* > ps xua | grep osmo build 5240 0.0 0.0 47996 5272 ? S 06:21 0:00 ./src/osmo-bsc_nat/osmo-bsc_nat -l 127.0.0.1 -c /build/openbsc/tests/../doc/examples/osmo-bsc_nat/osmo-bsc_nat.cfg build 5247 0.0 0.0 4336 744 ? S 06:21 0:00 /bin/sh -c ps xua | grep osmo build 5249 0.0 0.0 11128 1044 ? S 06:21 0:00 grep osmo Socket: in 1 tries, connected to 127.0.0.1:4244 (1 sockets open) Socket: closing 127.0.0.1:4244 (0 sockets open) ok testUssdSideChannelProvider (__main__.TestVTYNAT) ... Launching: PWD=/build/openbsc './src/osmo-bsc_nat/osmo-bsc_nat' '-l' '127.0.0.1' '-c' '/build/openbsc/tests/../doc/examples/osmo-bsc_nat/osmo-bsc_nat.cfg' > ls -l /proc/4939/fd total 0 lr-x------ 1 build build 64 Apr 16 06:19 0 -> pipe:[644683512] l-wx------ 1 build build 64 Apr 16 06:19 1 -> pipe:[644683513] l-wx------ 1 build build 64 Apr 16 06:19 2 -> pipe:[644683514] l-wx------ 1 build build 64 Apr 16 06:19 3 -> /dev/null lr-x------ 1 build build 64 Apr 16 06:19 5 -> /dev/urandom > ss -tn State Recv-Q Send-Q Local Address:Port Peer Address:Port > ss -tln State Recv-Q Send-Q Local Address:Port Peer Address:Port LISTEN 0 1 127.0.0.1:5000 *:* LISTEN 0 1 *:5001 *:* LISTEN 0 10 127.0.0.1:4244 *:* LISTEN 0 10 127.0.0.1:4250 *:* > ps xua | grep osmo build 5250 0.0 0.0 47996 5356 ? S 06:21 0:00 ./src/osmo-bsc_nat/osmo-bsc_nat -l 127.0.0.1 -c /build/openbsc/tests/../doc/examples/osmo-bsc_nat/osmo-bsc_nat.cfg build 5257 0.0 0.0 4336 768 ? S 06:21 0:00 /bin/sh -c ps xua | grep osmo build 5259 0.0 0.0 11128 1044 ? S 06:21 0:00 grep osmo Socket: in 1 tries, connected to 127.0.0.1:4244 (1 sockets open) Connected to 127.0.0.1:5001 Expecting ID_GET request Going to send ID_RESP response Going to send PING request Expecting PONG response Going to shut down connection Expecting EOF Socket: closing 127.0.0.1:4244 (0 sockets open) ok testVtyTree (__main__.TestVTYNAT) ... Launching: PWD=/build/openbsc './src/osmo-bsc_nat/osmo-bsc_nat' '-l' '127.0.0.1' '-c' '/build/openbsc/tests/../doc/examples/osmo-bsc_nat/osmo-bsc_nat.cfg' > ls -l /proc/4939/fd total 0 lr-x------ 1 build build 64 Apr 16 06:19 0 -> pipe:[644683512] l-wx------ 1 build build 64 Apr 16 06:19 1 -> pipe:[644683513] l-wx------ 1 build build 64 Apr 16 06:19 2 -> pipe:[644683514] l-wx------ 1 build build 64 Apr 16 06:19 3 -> /dev/null lr-x------ 1 build build 64 Apr 16 06:19 5 -> /dev/urandom > ss -tn State Recv-Q Send-Q Local Address:Port Peer Address:Port > ss -tln State Recv-Q Send-Q Local Address:Port Peer Address:Port LISTEN 0 1 127.0.0.1:5000 *:* LISTEN 0 1 *:5001 *:* LISTEN 0 10 127.0.0.1:4244 *:* LISTEN 0 10 127.0.0.1:4250 *:* > ps xua | grep osmo build 5260 0.0 0.0 47996 5324 ? S 06:21 0:00 ./src/osmo-bsc_nat/osmo-bsc_nat -l 127.0.0.1 -c /build/openbsc/tests/../doc/examples/osmo-bsc_nat/osmo-bsc_nat.cfg build 5267 0.0 0.0 4336 800 ? S 06:21 0:00 /bin/sh -c ps xua | grep osmo build 5269 0.0 0.0 11128 1004 ? S 06:21 0:00 grep osmo Socket: in 1 tries, connected to 127.0.0.1:4244 (1 sockets open) Socket: closing 127.0.0.1:4244 (0 sockets open) ok ====================================================================== ERROR: testSmppFirst (__main__.TestVTYNITB) ---------------------------------------------------------------------- Traceback (most recent call last): File "./vty_test_runner.py", line 188, in testSmppFirst self.vty.enable() File "build/bdist.linux-x86_64/egg/osmopy/obscvty.py", line 218, in enable self.command("enable") File "build/bdist.linux-x86_64/egg/osmopy/obscvty.py", line 223, in command return self._common_command(request, close) File "build/bdist.linux-x86_64/egg/osmopy/obscvty.py", line 176, in _common_command self._connect_socket() File "build/bdist.linux-x86_64/egg/osmopy/obscvty.py", line 83, in _connect_socket self.socket.connect((self.host, self.port)) File "/usr/lib/python2.7/socket.py", line 224, in meth return getattr(self._sock,name)(*args) error: [Errno 111] Connection refused ====================================================================== ERROR: testSubscriberCreateDelete (__main__.TestVTYNITB) ---------------------------------------------------------------------- Traceback (most recent call last): File "./vty_test_runner.py", line 407, in testSubscriberCreateDelete self.vty.enable() File "build/bdist.linux-x86_64/egg/osmopy/obscvty.py", line 218, in enable self.command("enable") File "build/bdist.linux-x86_64/egg/osmopy/obscvty.py", line 223, in command return self._common_command(request, close) File "build/bdist.linux-x86_64/egg/osmopy/obscvty.py", line 176, in _common_command self._connect_socket() File "build/bdist.linux-x86_64/egg/osmopy/obscvty.py", line 100, in _connect_socket self.socket.recv(4096) error: [Errno 104] Connection reset by peer ====================================================================== ERROR: testSubscriberCreateDeleteTwice (__main__.TestVTYNITB) ---------------------------------------------------------------------- Traceback (most recent call last): File "./vty_test_runner.py", line 378, in testSubscriberCreateDeleteTwice self.vty.enable() File "build/bdist.linux-x86_64/egg/osmopy/obscvty.py", line 218, in enable self.command("enable") File "build/bdist.linux-x86_64/egg/osmopy/obscvty.py", line 223, in command return self._common_command(request, close) File "build/bdist.linux-x86_64/egg/osmopy/obscvty.py", line 176, in _common_command self._connect_socket() File "build/bdist.linux-x86_64/egg/osmopy/obscvty.py", line 83, in _connect_socket self.socket.connect((self.host, self.port)) File "/usr/lib/python2.7/socket.py", line 224, in meth return getattr(self._sock,name)(*args) error: [Errno 111] Connection refused ====================================================================== ERROR: testVtyAuthorization (__main__.TestVTYNITB) ---------------------------------------------------------------------- Traceback (most recent call last): File "./vty_test_runner.py", line 242, in testVtyAuthorization self.vty.enable() File "build/bdist.linux-x86_64/egg/osmopy/obscvty.py", line 218, in enable self.command("enable") File "build/bdist.linux-x86_64/egg/osmopy/obscvty.py", line 223, in command return self._common_command(request, close) File "build/bdist.linux-x86_64/egg/osmopy/obscvty.py", line 176, in _common_command self._connect_socket() File "build/bdist.linux-x86_64/egg/osmopy/obscvty.py", line 100, in _connect_socket self.socket.recv(4096) error: [Errno 104] Connection reset by peer ====================================================================== ERROR: testVtyTree (__main__.TestVTYNITB) ---------------------------------------------------------------------- Traceback (most recent call last): File "./vty_test_runner.py", line 210, in testVtyTree self.vty.enable() File "build/bdist.linux-x86_64/egg/osmopy/obscvty.py", line 218, in enable self.command("enable") File "build/bdist.linux-x86_64/egg/osmopy/obscvty.py", line 223, in command return self._common_command(request, close) File "build/bdist.linux-x86_64/egg/osmopy/obscvty.py", line 176, in _common_command self._connect_socket() File "build/bdist.linux-x86_64/egg/osmopy/obscvty.py", line 100, in _connect_socket self.socket.recv(4096) error: [Errno 104] Connection reset by peer ---------------------------------------------------------------------- Ran 33 tests in 73.252s FAILED (errors=5) make[5]: *** [python-tests] Error 5 Makefile:711: recipe for target 'python-tests' failed make[5]: Leaving directory '/build/openbsc/tests' Makefile:721: recipe for target 'check-local' failed make[4]: Leaving directory '/build/openbsc/tests' make[4]: *** [check-local] Error 2 Makefile:573: recipe for target 'check-am' failed make[3]: Leaving directory '/build/openbsc/tests' make[3]: *** [check-am] Error 2 Makefile:425: recipe for target 'check-recursive' failed make[2]: Leaving directory '/build/openbsc/tests' make[2]: *** [check-recursive] Error 1 make[1]: *** [check-recursive] Error 1 Makefile:507: recipe for target 'check-recursive' failed make[1]: Leaving directory '/build/openbsc' Makefile:798: recipe for target 'check' failed make: *** [check] Error 2 + cat-testlogs.sh Build step 'Execute shell' marked build as failure [WARNINGS]Skipping publisher since build result is FAILURE From jenkins at lists.osmocom.org Mon Apr 16 06:23:48 2018 From: jenkins at lists.osmocom.org (jenkins at lists.osmocom.org) Date: Mon, 16 Apr 2018 06:23:48 +0000 (UTC) Subject: =?UTF-8?Q?Jenkins_build_is_back_to_normal_:_master-osmo-sgsn_=C2=BB_--dis?= =?UTF-8?Q?able-iu,a2=3Ddefault,a3=3Ddefault,osmocom-master-debian9_#2364?= In-Reply-To: <24426003.344.1523859402568.JavaMail.jenkins@jenkins.osmocom.org> References: <24426003.344.1523859402568.JavaMail.jenkins@jenkins.osmocom.org> Message-ID: <1924209141.349.1523859828082.JavaMail.jenkins@jenkins.osmocom.org> See From jenkins at lists.osmocom.org Mon Apr 16 06:31:28 2018 From: jenkins at lists.osmocom.org (jenkins at lists.osmocom.org) Date: Mon, 16 Apr 2018 06:31:28 +0000 (UTC) Subject: =?UTF-8?Q?Build_failed_in_Jenkins:_master-osmo-msc_=C2=BB_--disable-?= =?UTF-8?Q?iu,a2=3Ddefault,a3=3Ddefault,osmocom-master-debian9_#2847?= In-Reply-To: <443945348.347.1523859639781.JavaMail.jenkins@jenkins.osmocom.org> References: <443945348.347.1523859639781.JavaMail.jenkins@jenkins.osmocom.org> Message-ID: <575732771.350.1523860288674.JavaMail.jenkins@jenkins.osmocom.org> See ------------------------------------------ [...truncated 784.96 KB...] State Recv-Q Send-Q Local Address:Port Peer Address:Port > ss -tln State Recv-Q Send-Q Local Address:Port Peer Address:Port LISTEN 0 10 127.0.0.1:4254 *:* LISTEN 0 10 127.0.0.1:4255 *:* LISTEN 0 10 *:2775 *:* > ps xua | grep osmo build 2866 0.2 0.0 39692 15048 ? S 06:30 0:00 /usr/bin/python2 /usr/local/bin/osmotestconfig.py -p /build -w /build -v build 2907 0.0 0.0 21474971600 14796 ? D 06:30 0:00 src/osmo-msc/osmo-msc -c /build/writtenconfig/osmo-msc_custom-sccp.cfgic37Yp build 2914 0.0 0.0 4336 764 ? S 06:30 0:00 /bin/sh -c ps xua | grep osmo build 2916 0.0 0.0 11128 976 ? S 06:30 0:00 grep osmo Socket: in 1 tries, connected to 127.0.0.1:4254 (1 sockets open) Terminating took 2.679s Socket: closing 127.0.0.1:4254 (0 sockets open) Verifying src/osmo-msc/osmo-msc -c /build/writtenconfig/osmo-msc_custom-sccp.cfgic37Yp, test token_vty_command Launching: PWD=/build 'src/osmo-msc/osmo-msc' '-c' '/build/writtenconfig/osmo-msc_custom-sccp.cfgic37Yp' > ls -l /proc/2866/fd total 0 lr-x------ 1 build build 64 Apr 16 06:30 0 -> pipe:[644787115] l-wx------ 1 build build 64 Apr 16 06:30 1 -> pipe:[644787116] lr-x------ 1 build build 64 Apr 16 06:30 11 -> /dev/urandom l-wx------ 1 build build 64 Apr 16 06:30 2 -> pipe:[644787117] l-wx------ 1 build build 64 Apr 16 06:30 3 -> /dev/null > ss -tn State Recv-Q Send-Q Local Address:Port Peer Address:Port > ss -tln State Recv-Q Send-Q Local Address:Port Peer Address:Port > ps xua | grep osmo build 2866 0.2 0.0 39692 15048 ? S 06:30 0:00 /usr/bin/python2 /usr/local/bin/osmotestconfig.py -p /build -w /build -v build 2917 0.0 0.0 21474971600 15104 ? D 06:31 0:00 src/osmo-msc/osmo-msc -c /build/writtenconfig/osmo-msc_custom-sccp.cfgic37Yp build 2924 0.0 0.0 4336 760 ? S 06:31 0:00 /bin/sh -c ps xua | grep osmo build 2926 0.0 0.0 11128 1044 ? S 06:31 0:00 grep osmo Socket: in 1 tries, connected to 127.0.0.1:4254 (1 sockets open) Terminating took 2.679s Socket: closing 127.0.0.1:4254 (0 sockets open) Verifying src/osmo-msc/osmo-msc -c /build/doc/examples/osmo-msc/osmo-msc_multi-cs7.cfg, test verify_doc Launching: PWD=/build 'src/osmo-msc/osmo-msc' '-c' '/build/doc/examples/osmo-msc/osmo-msc_multi-cs7.cfg' > ls -l /proc/2866/fd total 0 lr-x------ 1 build build 64 Apr 16 06:30 0 -> pipe:[644787115] l-wx------ 1 build build 64 Apr 16 06:30 1 -> pipe:[644787116] lr-x------ 1 build build 64 Apr 16 06:30 11 -> /dev/urandom l-wx------ 1 build build 64 Apr 16 06:30 2 -> pipe:[644787117] l-wx------ 1 build build 64 Apr 16 06:30 3 -> /dev/null > ss -tn State Recv-Q Send-Q Local Address:Port Peer Address:Port > ss -tln State Recv-Q Send-Q Local Address:Port Peer Address:Port > ps xua | grep osmo build 2866 0.1 0.0 39692 15048 ? S 06:30 0:00 /usr/bin/python2 /usr/local/bin/osmotestconfig.py -p /build -w /build -v build 2927 0.0 0.0 21474966660 13004 ? R 06:31 0:00 src/osmo-msc/osmo-msc -c /build/doc/examples/osmo-msc/osmo-msc_multi-cs7.cfg build 2934 0.0 0.0 4336 720 ? S 06:31 0:00 /bin/sh -c ps xua | grep osmo build 2936 0.0 0.0 4336 104 ? R 06:31 0:00 /bin/sh -c ps xua | grep osmo Socket: in 1 tries, connected to 127.0.0.1:4254 (1 sockets open) Terminating took 2.679s Socket: closing 127.0.0.1:4254 (0 sockets open) Verifying src/osmo-msc/osmo-msc -c /build/writtenconfig/osmo-msc_multi-cs7.cfggLDliR, test write_config Launching: PWD=/build 'src/osmo-msc/osmo-msc' '-c' '/build/writtenconfig/osmo-msc_multi-cs7.cfggLDliR' > ls -l /proc/2866/fd total 0 lr-x------ 1 build build 64 Apr 16 06:30 0 -> pipe:[644787115] l-wx------ 1 build build 64 Apr 16 06:30 1 -> pipe:[644787116] lr-x------ 1 build build 64 Apr 16 06:30 11 -> /dev/urandom l-wx------ 1 build build 64 Apr 16 06:30 2 -> pipe:[644787117] l-wx------ 1 build build 64 Apr 16 06:30 3 -> /dev/null > ss -tn State Recv-Q Send-Q Local Address:Port Peer Address:Port > ss -tln State Recv-Q Send-Q Local Address:Port Peer Address:Port > ps xua | grep osmo build 2866 0.2 0.0 39692 15048 ? S 06:30 0:00 /usr/bin/python2 /usr/local/bin/osmotestconfig.py -p /build -w /build -v build 2937 0.0 0.0 21474966520 8576 ? R 06:31 0:00 src/osmo-msc/osmo-msc -c /build/writtenconfig/osmo-msc_multi-cs7.cfggLDliR build 2944 0.0 0.0 4336 712 ? S 06:31 0:00 /bin/sh -c ps xua | grep osmo build 2946 0.0 0.0 4336 104 ? R 06:31 0:00 /bin/sh -c ps xua | grep osmo Connecting socket failed, retrying... Socket: in 2 tries, connected to 127.0.0.1:4254 (1 sockets open) Terminating took 2.679s Socket: closing 127.0.0.1:4254 (0 sockets open) Verifying src/osmo-msc/osmo-msc -c /build/writtenconfig/osmo-msc_multi-cs7.cfggLDliR, test token_vty_command Launching: PWD=/build 'src/osmo-msc/osmo-msc' '-c' '/build/writtenconfig/osmo-msc_multi-cs7.cfggLDliR' > ls -l /proc/2866/fd total 0 lr-x------ 1 build build 64 Apr 16 06:30 0 -> pipe:[644787115] l-wx------ 1 build build 64 Apr 16 06:30 1 -> pipe:[644787116] lr-x------ 1 build build 64 Apr 16 06:30 11 -> /dev/urandom l-wx------ 1 build build 64 Apr 16 06:30 2 -> pipe:[644787117] l-wx------ 1 build build 64 Apr 16 06:30 3 -> /dev/null > ss -tn State Recv-Q Send-Q Local Address:Port Peer Address:Port > ss -tln State Recv-Q Send-Q Local Address:Port Peer Address:Port > ps xua | grep osmo build 2866 0.1 0.0 39692 15048 ? S 06:30 0:00 /usr/bin/python2 /usr/local/bin/osmotestconfig.py -p /build -w /build -v build 2947 0.0 0.0 21474966660 13972 ? R 06:31 0:00 src/osmo-msc/osmo-msc -c /build/writtenconfig/osmo-msc_multi-cs7.cfggLDliR build 2954 0.0 0.0 4336 720 ? S 06:31 0:00 /bin/sh -c ps xua | grep osmo build 2956 0.0 0.0 11128 976 ? S 06:31 0:00 grep osmo Failed to verify src/osmo-msc/osmo-msc -c /build/writtenconfig/osmo-msc_multi-cs7.cfggLDliR Current directory: /build Error was [Errno 104] Connection reset by peer Config was ! ! OsmoMSC (1.1.2.262-37a3a) configuration saved from vty !! ! log stderr logging filter all 1 logging color 1 logging print category 0 logging timestamp 0 logging print file 1 logging level all everything logging level rll notice logging level cc notice logging level mm notice logging level rr notice logging level mncc notice logging level pag notice logging level msc notice logging level mgcp notice logging level ho notice logging level db notice logging level ref notice logging level ctrl notice logging level smpp debug logging level ranap debug logging level vlr debug logging level iucs debug logging level bssap notice logging level lglobal notice logging level llapd notice logging level linp notice logging level lmux notice logging level lmi notice logging level lmib notice logging level lsms notice logging level lctrl notice logging level lgtp notice logging level lstats notice logging level lgsup notice logging level loap notice logging level lss7 notice logging level lsccp notice logging level lsua notice logging level lm3ua notice logging level lmgcp notice logging level ljibuf notice ! stats interval 5 ! line vty no login ! cs7 instance 1 point-code 0.23.2 asp asp-clnt-OsmoMSC-Iu 2905 0 m3ua remote-ip 127.0.0.6 cs7 instance 0 point-code 0.23.1 asp asp-clnt-OsmoMSC-A 2905 0 m3ua remote-ip 127.0.0.5 as as-clnt-OsmoMSC-A m3ua asp asp-clnt-OsmoMSC-A routing-key 0 0.23.1 network network country code 001 mobile network code 01 short name OsmoMSC long name OsmoMSC encryption a5 0 authentication optional rrlp mode none mm info 1 periodic location update 30 msc assign-tmsi cs7-instance-a 0 cs7-instance-iu 1 mgw remote-ip 10.23.24.1 mncc-int default-codec tch-f fr default-codec tch-h hr smpp local-tcp-port 2775 policy closed no smpp-first hlr remote-ip 127.0.0.1 remote-port 4222 ERRORS: 1 Socket: in 1 tries, connected to 127.0.0.1:4254 (1 sockets open) Socket: closing 127.0.0.1:4254 (0 sockets open) Makefile:693: recipe for target 'python-tests' failed make[5]: Leaving directory '/build/tests' make[5]: *** [python-tests] Error 1 make[4]: *** [check-local] Error 2 Makefile:703: recipe for target 'check-local' failed make[4]: Leaving directory '/build/tests' Makefile:555: recipe for target 'check-am' failed make[3]: Leaving directory '/build/tests' make[3]: *** [check-am] Error 2 Makefile:407: recipe for target 'check-recursive' failed make[2]: Leaving directory '/build/tests' make[2]: *** [check-recursive] Error 1 Makefile:445: recipe for target 'check-recursive' failed make[1]: Leaving directory '/build' make[1]: *** [check-recursive] Error 1 Makefile:736: recipe for target 'check' failed make: *** [check] Error 2 + cat-testlogs.sh Build step 'Execute shell' marked build as failure [WARNINGS]Skipping publisher since build result is FAILURE From jenkins at lists.osmocom.org Mon Apr 16 07:29:30 2018 From: jenkins at lists.osmocom.org (jenkins at lists.osmocom.org) Date: Mon, 16 Apr 2018 07:29:30 +0000 (UTC) Subject: =?UTF-8?Q?Build_failed_in_Jenkins:_master-osmo-pcu_=C2=BB_?= =?UTF-8?Q?master,osmocom-master-debian9,lc15,True_#385?= Message-ID: <2100902346.354.1523863770403.JavaMail.jenkins@jenkins.osmocom.org> See ------------------------------------------ [...truncated 1.31 KB...] ERROR: Error fetching remote repo 'origin' hudson.plugins.git.GitException: Failed to fetch from git://git.osmocom.org/osmo-pcu at hudson.plugins.git.GitSCM.fetchFrom(GitSCM.java:862) at hudson.plugins.git.GitSCM.retrieveChanges(GitSCM.java:1129) at hudson.plugins.git.GitSCM.checkout(GitSCM.java:1160) at hudson.scm.SCM.checkout(SCM.java:495) at hudson.model.AbstractProject.checkout(AbstractProject.java:1202) at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:574) at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:86) at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:499) at hudson.model.Run.execute(Run.java:1724) at hudson.matrix.MatrixRun.run(MatrixRun.java:146) at hudson.model.ResourceController.execute(ResourceController.java:97) at hudson.model.Executor.run(Executor.java:429) Caused by: hudson.plugins.git.GitException: Command "git config remote.origin.url git://git.osmocom.org/osmo-pcu" returned status code 4: stdout: stderr: error: failed to write new configuration file at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1996) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1964) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1960) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommand(CliGitAPIImpl.java:1597) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommand(CliGitAPIImpl.java:1609) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.setRemoteUrl(CliGitAPIImpl.java:1243) at hudson.plugins.git.GitAPI.setRemoteUrl(GitAPI.java:160) at sun.reflect.GeneratedMethodAccessor26.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at hudson.remoting.RemoteInvocationHandler$RPCRequest.perform(RemoteInvocationHandler.java:922) at hudson.remoting.RemoteInvocationHandler$RPCRequest.call(RemoteInvocationHandler.java:896) at hudson.remoting.RemoteInvocationHandler$RPCRequest.call(RemoteInvocationHandler.java:853) at hudson.remoting.UserRequest.perform(UserRequest.java:207) at hudson.remoting.UserRequest.perform(UserRequest.java:53) at hudson.remoting.Request$2.run(Request.java:358) at hudson.remoting.InterceptingExecutorService$1.call(InterceptingExecutorService.java:72) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:748) Suppressed: hudson.remoting.Channel$CallSiteStackTrace: Remote call to build2-deb9build-ansible at hudson.remoting.Channel.attachCallSiteStackTrace(Channel.java:1693) at hudson.remoting.UserResponse.retrieve(UserRequest.java:310) at hudson.remoting.Channel.call(Channel.java:908) at hudson.remoting.RemoteInvocationHandler.invoke(RemoteInvocationHandler.java:281) at com.sun.proxy.$Proxy56.setRemoteUrl(Unknown Source) at org.jenkinsci.plugins.gitclient.RemoteGitImpl.setRemoteUrl(RemoteGitImpl.java:295) at hudson.plugins.git.GitSCM.fetchFrom(GitSCM.java:850) at hudson.plugins.git.GitSCM.retrieveChanges(GitSCM.java:1129) at hudson.plugins.git.GitSCM.checkout(GitSCM.java:1160) at hudson.scm.SCM.checkout(SCM.java:495) at hudson.model.AbstractProject.checkout(AbstractProject.java:1202) at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:574) at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:86) at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:499) at hudson.model.Run.execute(Run.java:1724) at hudson.matrix.MatrixRun.run(MatrixRun.java:146) at hudson.model.ResourceController.execute(ResourceController.java:97) at hudson.model.Executor.run(Executor.java:429) ERROR: Error fetching remote repo 'origin' Retrying after 10 seconds > git rev-parse --is-inside-work-tree # timeout=10 Fetching changes from the remote Git repository > git config remote.origin.url git://git.osmocom.org/osmo-pcu # timeout=10 ERROR: Error fetching remote repo 'origin' hudson.plugins.git.GitException: Failed to fetch from git://git.osmocom.org/osmo-pcu at hudson.plugins.git.GitSCM.fetchFrom(GitSCM.java:862) at hudson.plugins.git.GitSCM.retrieveChanges(GitSCM.java:1129) at hudson.plugins.git.GitSCM.checkout(GitSCM.java:1160) at hudson.scm.SCM.checkout(SCM.java:495) at hudson.model.AbstractProject.checkout(AbstractProject.java:1202) at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:574) at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:86) at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:499) at hudson.model.Run.execute(Run.java:1724) at hudson.matrix.MatrixRun.run(MatrixRun.java:146) at hudson.model.ResourceController.execute(ResourceController.java:97) at hudson.model.Executor.run(Executor.java:429) Caused by: hudson.plugins.git.GitException: Command "git config remote.origin.url git://git.osmocom.org/osmo-pcu" returned status code 4: stdout: stderr: error: failed to write new configuration file at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1996) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1964) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1960) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommand(CliGitAPIImpl.java:1597) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommand(CliGitAPIImpl.java:1609) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.setRemoteUrl(CliGitAPIImpl.java:1243) at hudson.plugins.git.GitAPI.setRemoteUrl(GitAPI.java:160) at sun.reflect.GeneratedMethodAccessor26.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at hudson.remoting.RemoteInvocationHandler$RPCRequest.perform(RemoteInvocationHandler.java:922) at hudson.remoting.RemoteInvocationHandler$RPCRequest.call(RemoteInvocationHandler.java:896) at hudson.remoting.RemoteInvocationHandler$RPCRequest.call(RemoteInvocationHandler.java:853) at hudson.remoting.UserRequest.perform(UserRequest.java:207) at hudson.remoting.UserRequest.perform(UserRequest.java:53) at hudson.remoting.Request$2.run(Request.java:358) at hudson.remoting.InterceptingExecutorService$1.call(InterceptingExecutorService.java:72) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:748) Suppressed: hudson.remoting.Channel$CallSiteStackTrace: Remote call to build2-deb9build-ansible at hudson.remoting.Channel.attachCallSiteStackTrace(Channel.java:1693) at hudson.remoting.UserResponse.retrieve(UserRequest.java:310) at hudson.remoting.Channel.call(Channel.java:908) at hudson.remoting.RemoteInvocationHandler.invoke(RemoteInvocationHandler.java:281) at com.sun.proxy.$Proxy56.setRemoteUrl(Unknown Source) at org.jenkinsci.plugins.gitclient.RemoteGitImpl.setRemoteUrl(RemoteGitImpl.java:295) at hudson.plugins.git.GitSCM.fetchFrom(GitSCM.java:850) at hudson.plugins.git.GitSCM.retrieveChanges(GitSCM.java:1129) at hudson.plugins.git.GitSCM.checkout(GitSCM.java:1160) at hudson.scm.SCM.checkout(SCM.java:495) at hudson.model.AbstractProject.checkout(AbstractProject.java:1202) at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:574) at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:86) at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:499) at hudson.model.Run.execute(Run.java:1724) at hudson.matrix.MatrixRun.run(MatrixRun.java:146) at hudson.model.ResourceController.execute(ResourceController.java:97) at hudson.model.Executor.run(Executor.java:429) ERROR: Error fetching remote repo 'origin' Retrying after 10 seconds > git rev-parse --is-inside-work-tree # timeout=10 Fetching changes from the remote Git repository > git config remote.origin.url git://git.osmocom.org/osmo-pcu # timeout=10 ERROR: Error fetching remote repo 'origin' hudson.plugins.git.GitException: Failed to fetch from git://git.osmocom.org/osmo-pcu at hudson.plugins.git.GitSCM.fetchFrom(GitSCM.java:862) at hudson.plugins.git.GitSCM.retrieveChanges(GitSCM.java:1129) at hudson.plugins.git.GitSCM.checkout(GitSCM.java:1160) at hudson.scm.SCM.checkout(SCM.java:495) at hudson.model.AbstractProject.checkout(AbstractProject.java:1202) at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:574) at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:86) at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:499) at hudson.model.Run.execute(Run.java:1724) at hudson.matrix.MatrixRun.run(MatrixRun.java:146) at hudson.model.ResourceController.execute(ResourceController.java:97) at hudson.model.Executor.run(Executor.java:429) Caused by: hudson.plugins.git.GitException: Command "git config remote.origin.url git://git.osmocom.org/osmo-pcu" returned status code 4: stdout: stderr: error: failed to write new configuration file at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1996) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1964) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1960) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommand(CliGitAPIImpl.java:1597) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommand(CliGitAPIImpl.java:1609) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.setRemoteUrl(CliGitAPIImpl.java:1243) at hudson.plugins.git.GitAPI.setRemoteUrl(GitAPI.java:160) at sun.reflect.GeneratedMethodAccessor26.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at hudson.remoting.RemoteInvocationHandler$RPCRequest.perform(RemoteInvocationHandler.java:922) at hudson.remoting.RemoteInvocationHandler$RPCRequest.call(RemoteInvocationHandler.java:896) at hudson.remoting.RemoteInvocationHandler$RPCRequest.call(RemoteInvocationHandler.java:853) at hudson.remoting.UserRequest.perform(UserRequest.java:207) at hudson.remoting.UserRequest.perform(UserRequest.java:53) at hudson.remoting.Request$2.run(Request.java:358) at hudson.remoting.InterceptingExecutorService$1.call(InterceptingExecutorService.java:72) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:748) Suppressed: hudson.remoting.Channel$CallSiteStackTrace: Remote call to build2-deb9build-ansible at hudson.remoting.Channel.attachCallSiteStackTrace(Channel.java:1693) at hudson.remoting.UserResponse.retrieve(UserRequest.java:310) at hudson.remoting.Channel.call(Channel.java:908) at hudson.remoting.RemoteInvocationHandler.invoke(RemoteInvocationHandler.java:281) at com.sun.proxy.$Proxy56.setRemoteUrl(Unknown Source) at org.jenkinsci.plugins.gitclient.RemoteGitImpl.setRemoteUrl(RemoteGitImpl.java:295) at hudson.plugins.git.GitSCM.fetchFrom(GitSCM.java:850) at hudson.plugins.git.GitSCM.retrieveChanges(GitSCM.java:1129) at hudson.plugins.git.GitSCM.checkout(GitSCM.java:1160) at hudson.scm.SCM.checkout(SCM.java:495) at hudson.model.AbstractProject.checkout(AbstractProject.java:1202) at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:574) at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:86) at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:499) at hudson.model.Run.execute(Run.java:1724) at hudson.matrix.MatrixRun.run(MatrixRun.java:146) at hudson.model.ResourceController.execute(ResourceController.java:97) at hudson.model.Executor.run(Executor.java:429) ERROR: Error fetching remote repo 'origin' Retrying after 10 seconds > git rev-parse --is-inside-work-tree # timeout=10 Fetching changes from the remote Git repository > git config remote.origin.url git://git.osmocom.org/osmo-pcu # timeout=10 ERROR: Error fetching remote repo 'origin' hudson.plugins.git.GitException: Failed to fetch from git://git.osmocom.org/osmo-pcu at hudson.plugins.git.GitSCM.fetchFrom(GitSCM.java:862) at hudson.plugins.git.GitSCM.retrieveChanges(GitSCM.java:1129) at hudson.plugins.git.GitSCM.checkout(GitSCM.java:1160) at hudson.scm.SCM.checkout(SCM.java:495) at hudson.model.AbstractProject.checkout(AbstractProject.java:1202) at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:574) at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:86) at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:499) at hudson.model.Run.execute(Run.java:1724) at hudson.matrix.MatrixRun.run(MatrixRun.java:146) at hudson.model.ResourceController.execute(ResourceController.java:97) at hudson.model.Executor.run(Executor.java:429) Caused by: hudson.plugins.git.GitException: Command "git config remote.origin.url git://git.osmocom.org/osmo-pcu" returned status code 4: stdout: stderr: error: failed to write new configuration file at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1996) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1964) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1960) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommand(CliGitAPIImpl.java:1597) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommand(CliGitAPIImpl.java:1609) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.setRemoteUrl(CliGitAPIImpl.java:1243) at hudson.plugins.git.GitAPI.setRemoteUrl(GitAPI.java:160) at sun.reflect.GeneratedMethodAccessor26.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at hudson.remoting.RemoteInvocationHandler$RPCRequest.perform(RemoteInvocationHandler.java:922) at hudson.remoting.RemoteInvocationHandler$RPCRequest.call(RemoteInvocationHandler.java:896) at hudson.remoting.RemoteInvocationHandler$RPCRequest.call(RemoteInvocationHandler.java:853) at hudson.remoting.UserRequest.perform(UserRequest.java:207) at hudson.remoting.UserRequest.perform(UserRequest.java:53) at hudson.remoting.Request$2.run(Request.java:358) at hudson.remoting.InterceptingExecutorService$1.call(InterceptingExecutorService.java:72) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:748) Suppressed: hudson.remoting.Channel$CallSiteStackTrace: Remote call to build2-deb9build-ansible at hudson.remoting.Channel.attachCallSiteStackTrace(Channel.java:1693) at hudson.remoting.UserResponse.retrieve(UserRequest.java:310) at hudson.remoting.Channel.call(Channel.java:908) at hudson.remoting.RemoteInvocationHandler.invoke(RemoteInvocationHandler.java:281) at com.sun.proxy.$Proxy56.setRemoteUrl(Unknown Source) at org.jenkinsci.plugins.gitclient.RemoteGitImpl.setRemoteUrl(RemoteGitImpl.java:295) at hudson.plugins.git.GitSCM.fetchFrom(GitSCM.java:850) at hudson.plugins.git.GitSCM.retrieveChanges(GitSCM.java:1129) at hudson.plugins.git.GitSCM.checkout(GitSCM.java:1160) at hudson.scm.SCM.checkout(SCM.java:495) at hudson.model.AbstractProject.checkout(AbstractProject.java:1202) at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:574) at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:86) at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:499) at hudson.model.Run.execute(Run.java:1724) at hudson.matrix.MatrixRun.run(MatrixRun.java:146) at hudson.model.ResourceController.execute(ResourceController.java:97) at hudson.model.Executor.run(Executor.java:429) ERROR: Error fetching remote repo 'origin' [WARNINGS]Skipping publisher since build result is FAILURE From jenkins at lists.osmocom.org Mon Apr 16 07:30:02 2018 From: jenkins at lists.osmocom.org (jenkins at lists.osmocom.org) Date: Mon, 16 Apr 2018 07:30:02 +0000 (UTC) Subject: =?UTF-8?Q?Build_failed_in_Jenkins:_master-osmo-pcu_=C2=BB_origin/nrw?= =?UTF-8?Q?/litecell15-next,osmocom-master-debian9,lc15,True_#385?= Message-ID: <7810494.355.1523863802359.JavaMail.jenkins@jenkins.osmocom.org> See ------------------------------------------ [...truncated 1.33 KB...] ERROR: Error fetching remote repo 'origin' hudson.plugins.git.GitException: Failed to fetch from git://git.osmocom.org/osmo-pcu at hudson.plugins.git.GitSCM.fetchFrom(GitSCM.java:862) at hudson.plugins.git.GitSCM.retrieveChanges(GitSCM.java:1129) at hudson.plugins.git.GitSCM.checkout(GitSCM.java:1160) at hudson.scm.SCM.checkout(SCM.java:495) at hudson.model.AbstractProject.checkout(AbstractProject.java:1202) at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:574) at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:86) at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:499) at hudson.model.Run.execute(Run.java:1724) at hudson.matrix.MatrixRun.run(MatrixRun.java:146) at hudson.model.ResourceController.execute(ResourceController.java:97) at hudson.model.Executor.run(Executor.java:429) Caused by: hudson.plugins.git.GitException: Command "git config remote.origin.url git://git.osmocom.org/osmo-pcu" returned status code 4: stdout: stderr: error: failed to write new configuration file at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1996) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1964) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1960) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommand(CliGitAPIImpl.java:1597) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommand(CliGitAPIImpl.java:1609) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.setRemoteUrl(CliGitAPIImpl.java:1243) at hudson.plugins.git.GitAPI.setRemoteUrl(GitAPI.java:160) at sun.reflect.GeneratedMethodAccessor26.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at hudson.remoting.RemoteInvocationHandler$RPCRequest.perform(RemoteInvocationHandler.java:922) at hudson.remoting.RemoteInvocationHandler$RPCRequest.call(RemoteInvocationHandler.java:896) at hudson.remoting.RemoteInvocationHandler$RPCRequest.call(RemoteInvocationHandler.java:853) at hudson.remoting.UserRequest.perform(UserRequest.java:207) at hudson.remoting.UserRequest.perform(UserRequest.java:53) at hudson.remoting.Request$2.run(Request.java:358) at hudson.remoting.InterceptingExecutorService$1.call(InterceptingExecutorService.java:72) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:748) Suppressed: hudson.remoting.Channel$CallSiteStackTrace: Remote call to build2-deb9build-ansible at hudson.remoting.Channel.attachCallSiteStackTrace(Channel.java:1693) at hudson.remoting.UserResponse.retrieve(UserRequest.java:310) at hudson.remoting.Channel.call(Channel.java:908) at hudson.remoting.RemoteInvocationHandler.invoke(RemoteInvocationHandler.java:281) at com.sun.proxy.$Proxy56.setRemoteUrl(Unknown Source) at org.jenkinsci.plugins.gitclient.RemoteGitImpl.setRemoteUrl(RemoteGitImpl.java:295) at hudson.plugins.git.GitSCM.fetchFrom(GitSCM.java:850) at hudson.plugins.git.GitSCM.retrieveChanges(GitSCM.java:1129) at hudson.plugins.git.GitSCM.checkout(GitSCM.java:1160) at hudson.scm.SCM.checkout(SCM.java:495) at hudson.model.AbstractProject.checkout(AbstractProject.java:1202) at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:574) at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:86) at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:499) at hudson.model.Run.execute(Run.java:1724) at hudson.matrix.MatrixRun.run(MatrixRun.java:146) at hudson.model.ResourceController.execute(ResourceController.java:97) at hudson.model.Executor.run(Executor.java:429) ERROR: Error fetching remote repo 'origin' Retrying after 10 seconds > git rev-parse --is-inside-work-tree # timeout=10 Fetching changes from the remote Git repository > git config remote.origin.url git://git.osmocom.org/osmo-pcu # timeout=10 ERROR: Error fetching remote repo 'origin' hudson.plugins.git.GitException: Failed to fetch from git://git.osmocom.org/osmo-pcu at hudson.plugins.git.GitSCM.fetchFrom(GitSCM.java:862) at hudson.plugins.git.GitSCM.retrieveChanges(GitSCM.java:1129) at hudson.plugins.git.GitSCM.checkout(GitSCM.java:1160) at hudson.scm.SCM.checkout(SCM.java:495) at hudson.model.AbstractProject.checkout(AbstractProject.java:1202) at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:574) at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:86) at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:499) at hudson.model.Run.execute(Run.java:1724) at hudson.matrix.MatrixRun.run(MatrixRun.java:146) at hudson.model.ResourceController.execute(ResourceController.java:97) at hudson.model.Executor.run(Executor.java:429) Caused by: hudson.plugins.git.GitException: Command "git config remote.origin.url git://git.osmocom.org/osmo-pcu" returned status code 4: stdout: stderr: error: failed to write new configuration file at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1996) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1964) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1960) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommand(CliGitAPIImpl.java:1597) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommand(CliGitAPIImpl.java:1609) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.setRemoteUrl(CliGitAPIImpl.java:1243) at hudson.plugins.git.GitAPI.setRemoteUrl(GitAPI.java:160) at sun.reflect.GeneratedMethodAccessor26.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at hudson.remoting.RemoteInvocationHandler$RPCRequest.perform(RemoteInvocationHandler.java:922) at hudson.remoting.RemoteInvocationHandler$RPCRequest.call(RemoteInvocationHandler.java:896) at hudson.remoting.RemoteInvocationHandler$RPCRequest.call(RemoteInvocationHandler.java:853) at hudson.remoting.UserRequest.perform(UserRequest.java:207) at hudson.remoting.UserRequest.perform(UserRequest.java:53) at hudson.remoting.Request$2.run(Request.java:358) at hudson.remoting.InterceptingExecutorService$1.call(InterceptingExecutorService.java:72) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:748) Suppressed: hudson.remoting.Channel$CallSiteStackTrace: Remote call to build2-deb9build-ansible at hudson.remoting.Channel.attachCallSiteStackTrace(Channel.java:1693) at hudson.remoting.UserResponse.retrieve(UserRequest.java:310) at hudson.remoting.Channel.call(Channel.java:908) at hudson.remoting.RemoteInvocationHandler.invoke(RemoteInvocationHandler.java:281) at com.sun.proxy.$Proxy56.setRemoteUrl(Unknown Source) at org.jenkinsci.plugins.gitclient.RemoteGitImpl.setRemoteUrl(RemoteGitImpl.java:295) at hudson.plugins.git.GitSCM.fetchFrom(GitSCM.java:850) at hudson.plugins.git.GitSCM.retrieveChanges(GitSCM.java:1129) at hudson.plugins.git.GitSCM.checkout(GitSCM.java:1160) at hudson.scm.SCM.checkout(SCM.java:495) at hudson.model.AbstractProject.checkout(AbstractProject.java:1202) at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:574) at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:86) at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:499) at hudson.model.Run.execute(Run.java:1724) at hudson.matrix.MatrixRun.run(MatrixRun.java:146) at hudson.model.ResourceController.execute(ResourceController.java:97) at hudson.model.Executor.run(Executor.java:429) ERROR: Error fetching remote repo 'origin' Retrying after 10 seconds > git rev-parse --is-inside-work-tree # timeout=10 Fetching changes from the remote Git repository > git config remote.origin.url git://git.osmocom.org/osmo-pcu # timeout=10 ERROR: Error fetching remote repo 'origin' hudson.plugins.git.GitException: Failed to fetch from git://git.osmocom.org/osmo-pcu at hudson.plugins.git.GitSCM.fetchFrom(GitSCM.java:862) at hudson.plugins.git.GitSCM.retrieveChanges(GitSCM.java:1129) at hudson.plugins.git.GitSCM.checkout(GitSCM.java:1160) at hudson.scm.SCM.checkout(SCM.java:495) at hudson.model.AbstractProject.checkout(AbstractProject.java:1202) at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:574) at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:86) at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:499) at hudson.model.Run.execute(Run.java:1724) at hudson.matrix.MatrixRun.run(MatrixRun.java:146) at hudson.model.ResourceController.execute(ResourceController.java:97) at hudson.model.Executor.run(Executor.java:429) Caused by: hudson.plugins.git.GitException: Command "git config remote.origin.url git://git.osmocom.org/osmo-pcu" returned status code 4: stdout: stderr: error: failed to write new configuration file at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1996) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1964) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1960) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommand(CliGitAPIImpl.java:1597) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommand(CliGitAPIImpl.java:1609) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.setRemoteUrl(CliGitAPIImpl.java:1243) at hudson.plugins.git.GitAPI.setRemoteUrl(GitAPI.java:160) at sun.reflect.GeneratedMethodAccessor26.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at hudson.remoting.RemoteInvocationHandler$RPCRequest.perform(RemoteInvocationHandler.java:922) at hudson.remoting.RemoteInvocationHandler$RPCRequest.call(RemoteInvocationHandler.java:896) at hudson.remoting.RemoteInvocationHandler$RPCRequest.call(RemoteInvocationHandler.java:853) at hudson.remoting.UserRequest.perform(UserRequest.java:207) at hudson.remoting.UserRequest.perform(UserRequest.java:53) at hudson.remoting.Request$2.run(Request.java:358) at hudson.remoting.InterceptingExecutorService$1.call(InterceptingExecutorService.java:72) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:748) Suppressed: hudson.remoting.Channel$CallSiteStackTrace: Remote call to build2-deb9build-ansible at hudson.remoting.Channel.attachCallSiteStackTrace(Channel.java:1693) at hudson.remoting.UserResponse.retrieve(UserRequest.java:310) at hudson.remoting.Channel.call(Channel.java:908) at hudson.remoting.RemoteInvocationHandler.invoke(RemoteInvocationHandler.java:281) at com.sun.proxy.$Proxy56.setRemoteUrl(Unknown Source) at org.jenkinsci.plugins.gitclient.RemoteGitImpl.setRemoteUrl(RemoteGitImpl.java:295) at hudson.plugins.git.GitSCM.fetchFrom(GitSCM.java:850) at hudson.plugins.git.GitSCM.retrieveChanges(GitSCM.java:1129) at hudson.plugins.git.GitSCM.checkout(GitSCM.java:1160) at hudson.scm.SCM.checkout(SCM.java:495) at hudson.model.AbstractProject.checkout(AbstractProject.java:1202) at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:574) at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:86) at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:499) at hudson.model.Run.execute(Run.java:1724) at hudson.matrix.MatrixRun.run(MatrixRun.java:146) at hudson.model.ResourceController.execute(ResourceController.java:97) at hudson.model.Executor.run(Executor.java:429) ERROR: Error fetching remote repo 'origin' Retrying after 10 seconds > git rev-parse --is-inside-work-tree # timeout=10 Fetching changes from the remote Git repository > git config remote.origin.url git://git.osmocom.org/osmo-pcu # timeout=10 ERROR: Error fetching remote repo 'origin' hudson.plugins.git.GitException: Failed to fetch from git://git.osmocom.org/osmo-pcu at hudson.plugins.git.GitSCM.fetchFrom(GitSCM.java:862) at hudson.plugins.git.GitSCM.retrieveChanges(GitSCM.java:1129) at hudson.plugins.git.GitSCM.checkout(GitSCM.java:1160) at hudson.scm.SCM.checkout(SCM.java:495) at hudson.model.AbstractProject.checkout(AbstractProject.java:1202) at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:574) at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:86) at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:499) at hudson.model.Run.execute(Run.java:1724) at hudson.matrix.MatrixRun.run(MatrixRun.java:146) at hudson.model.ResourceController.execute(ResourceController.java:97) at hudson.model.Executor.run(Executor.java:429) Caused by: hudson.plugins.git.GitException: Command "git config remote.origin.url git://git.osmocom.org/osmo-pcu" returned status code 4: stdout: stderr: error: failed to write new configuration file at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1996) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1964) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1960) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommand(CliGitAPIImpl.java:1597) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommand(CliGitAPIImpl.java:1609) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.setRemoteUrl(CliGitAPIImpl.java:1243) at hudson.plugins.git.GitAPI.setRemoteUrl(GitAPI.java:160) at sun.reflect.GeneratedMethodAccessor26.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at hudson.remoting.RemoteInvocationHandler$RPCRequest.perform(RemoteInvocationHandler.java:922) at hudson.remoting.RemoteInvocationHandler$RPCRequest.call(RemoteInvocationHandler.java:896) at hudson.remoting.RemoteInvocationHandler$RPCRequest.call(RemoteInvocationHandler.java:853) at hudson.remoting.UserRequest.perform(UserRequest.java:207) at hudson.remoting.UserRequest.perform(UserRequest.java:53) at hudson.remoting.Request$2.run(Request.java:358) at hudson.remoting.InterceptingExecutorService$1.call(InterceptingExecutorService.java:72) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:748) Suppressed: hudson.remoting.Channel$CallSiteStackTrace: Remote call to build2-deb9build-ansible at hudson.remoting.Channel.attachCallSiteStackTrace(Channel.java:1693) at hudson.remoting.UserResponse.retrieve(UserRequest.java:310) at hudson.remoting.Channel.call(Channel.java:908) at hudson.remoting.RemoteInvocationHandler.invoke(RemoteInvocationHandler.java:281) at com.sun.proxy.$Proxy56.setRemoteUrl(Unknown Source) at org.jenkinsci.plugins.gitclient.RemoteGitImpl.setRemoteUrl(RemoteGitImpl.java:295) at hudson.plugins.git.GitSCM.fetchFrom(GitSCM.java:850) at hudson.plugins.git.GitSCM.retrieveChanges(GitSCM.java:1129) at hudson.plugins.git.GitSCM.checkout(GitSCM.java:1160) at hudson.scm.SCM.checkout(SCM.java:495) at hudson.model.AbstractProject.checkout(AbstractProject.java:1202) at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:574) at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:86) at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:499) at hudson.model.Run.execute(Run.java:1724) at hudson.matrix.MatrixRun.run(MatrixRun.java:146) at hudson.model.ResourceController.execute(ResourceController.java:97) at hudson.model.Executor.run(Executor.java:429) ERROR: Error fetching remote repo 'origin' [WARNINGS]Skipping publisher since build result is FAILURE From jenkins at lists.osmocom.org Mon Apr 16 07:34:06 2018 From: jenkins at lists.osmocom.org (jenkins at lists.osmocom.org) Date: Mon, 16 Apr 2018 07:34:06 +0000 (UTC) Subject: =?UTF-8?Q?Build_failed_in_Jenkins:_master-osmo-pcu_=C2=BB_v?= =?UTF-8?Q?2017.01,osmocom-master-debian9,lc15,True_#385?= Message-ID: <1761023395.356.1523864046386.JavaMail.jenkins@jenkins.osmocom.org> See ------------------------------------------ [...truncated 1.31 KB...] ERROR: Error fetching remote repo 'origin' hudson.plugins.git.GitException: Failed to fetch from git://git.osmocom.org/osmo-pcu at hudson.plugins.git.GitSCM.fetchFrom(GitSCM.java:862) at hudson.plugins.git.GitSCM.retrieveChanges(GitSCM.java:1129) at hudson.plugins.git.GitSCM.checkout(GitSCM.java:1160) at hudson.scm.SCM.checkout(SCM.java:495) at hudson.model.AbstractProject.checkout(AbstractProject.java:1202) at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:574) at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:86) at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:499) at hudson.model.Run.execute(Run.java:1724) at hudson.matrix.MatrixRun.run(MatrixRun.java:146) at hudson.model.ResourceController.execute(ResourceController.java:97) at hudson.model.Executor.run(Executor.java:429) Caused by: hudson.plugins.git.GitException: Command "git config remote.origin.url git://git.osmocom.org/osmo-pcu" returned status code 4: stdout: stderr: error: failed to write new configuration file at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1996) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1964) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1960) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommand(CliGitAPIImpl.java:1597) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommand(CliGitAPIImpl.java:1609) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.setRemoteUrl(CliGitAPIImpl.java:1243) at hudson.plugins.git.GitAPI.setRemoteUrl(GitAPI.java:160) at sun.reflect.GeneratedMethodAccessor26.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at hudson.remoting.RemoteInvocationHandler$RPCRequest.perform(RemoteInvocationHandler.java:922) at hudson.remoting.RemoteInvocationHandler$RPCRequest.call(RemoteInvocationHandler.java:896) at hudson.remoting.RemoteInvocationHandler$RPCRequest.call(RemoteInvocationHandler.java:853) at hudson.remoting.UserRequest.perform(UserRequest.java:207) at hudson.remoting.UserRequest.perform(UserRequest.java:53) at hudson.remoting.Request$2.run(Request.java:358) at hudson.remoting.InterceptingExecutorService$1.call(InterceptingExecutorService.java:72) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:748) Suppressed: hudson.remoting.Channel$CallSiteStackTrace: Remote call to build2-deb9build-ansible at hudson.remoting.Channel.attachCallSiteStackTrace(Channel.java:1693) at hudson.remoting.UserResponse.retrieve(UserRequest.java:310) at hudson.remoting.Channel.call(Channel.java:908) at hudson.remoting.RemoteInvocationHandler.invoke(RemoteInvocationHandler.java:281) at com.sun.proxy.$Proxy56.setRemoteUrl(Unknown Source) at org.jenkinsci.plugins.gitclient.RemoteGitImpl.setRemoteUrl(RemoteGitImpl.java:295) at hudson.plugins.git.GitSCM.fetchFrom(GitSCM.java:850) at hudson.plugins.git.GitSCM.retrieveChanges(GitSCM.java:1129) at hudson.plugins.git.GitSCM.checkout(GitSCM.java:1160) at hudson.scm.SCM.checkout(SCM.java:495) at hudson.model.AbstractProject.checkout(AbstractProject.java:1202) at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:574) at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:86) at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:499) at hudson.model.Run.execute(Run.java:1724) at hudson.matrix.MatrixRun.run(MatrixRun.java:146) at hudson.model.ResourceController.execute(ResourceController.java:97) at hudson.model.Executor.run(Executor.java:429) ERROR: Error fetching remote repo 'origin' Retrying after 10 seconds > git rev-parse --is-inside-work-tree # timeout=10 Fetching changes from the remote Git repository > git config remote.origin.url git://git.osmocom.org/osmo-pcu # timeout=10 ERROR: Error fetching remote repo 'origin' hudson.plugins.git.GitException: Failed to fetch from git://git.osmocom.org/osmo-pcu at hudson.plugins.git.GitSCM.fetchFrom(GitSCM.java:862) at hudson.plugins.git.GitSCM.retrieveChanges(GitSCM.java:1129) at hudson.plugins.git.GitSCM.checkout(GitSCM.java:1160) at hudson.scm.SCM.checkout(SCM.java:495) at hudson.model.AbstractProject.checkout(AbstractProject.java:1202) at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:574) at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:86) at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:499) at hudson.model.Run.execute(Run.java:1724) at hudson.matrix.MatrixRun.run(MatrixRun.java:146) at hudson.model.ResourceController.execute(ResourceController.java:97) at hudson.model.Executor.run(Executor.java:429) Caused by: hudson.plugins.git.GitException: Command "git config remote.origin.url git://git.osmocom.org/osmo-pcu" returned status code 4: stdout: stderr: error: failed to write new configuration file at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1996) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1964) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1960) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommand(CliGitAPIImpl.java:1597) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommand(CliGitAPIImpl.java:1609) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.setRemoteUrl(CliGitAPIImpl.java:1243) at hudson.plugins.git.GitAPI.setRemoteUrl(GitAPI.java:160) at sun.reflect.GeneratedMethodAccessor26.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at hudson.remoting.RemoteInvocationHandler$RPCRequest.perform(RemoteInvocationHandler.java:922) at hudson.remoting.RemoteInvocationHandler$RPCRequest.call(RemoteInvocationHandler.java:896) at hudson.remoting.RemoteInvocationHandler$RPCRequest.call(RemoteInvocationHandler.java:853) at hudson.remoting.UserRequest.perform(UserRequest.java:207) at hudson.remoting.UserRequest.perform(UserRequest.java:53) at hudson.remoting.Request$2.run(Request.java:358) at hudson.remoting.InterceptingExecutorService$1.call(InterceptingExecutorService.java:72) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:748) Suppressed: hudson.remoting.Channel$CallSiteStackTrace: Remote call to build2-deb9build-ansible at hudson.remoting.Channel.attachCallSiteStackTrace(Channel.java:1693) at hudson.remoting.UserResponse.retrieve(UserRequest.java:310) at hudson.remoting.Channel.call(Channel.java:908) at hudson.remoting.RemoteInvocationHandler.invoke(RemoteInvocationHandler.java:281) at com.sun.proxy.$Proxy56.setRemoteUrl(Unknown Source) at org.jenkinsci.plugins.gitclient.RemoteGitImpl.setRemoteUrl(RemoteGitImpl.java:295) at hudson.plugins.git.GitSCM.fetchFrom(GitSCM.java:850) at hudson.plugins.git.GitSCM.retrieveChanges(GitSCM.java:1129) at hudson.plugins.git.GitSCM.checkout(GitSCM.java:1160) at hudson.scm.SCM.checkout(SCM.java:495) at hudson.model.AbstractProject.checkout(AbstractProject.java:1202) at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:574) at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:86) at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:499) at hudson.model.Run.execute(Run.java:1724) at hudson.matrix.MatrixRun.run(MatrixRun.java:146) at hudson.model.ResourceController.execute(ResourceController.java:97) at hudson.model.Executor.run(Executor.java:429) ERROR: Error fetching remote repo 'origin' Retrying after 10 seconds > git rev-parse --is-inside-work-tree # timeout=10 Fetching changes from the remote Git repository > git config remote.origin.url git://git.osmocom.org/osmo-pcu # timeout=10 ERROR: Error fetching remote repo 'origin' hudson.plugins.git.GitException: Failed to fetch from git://git.osmocom.org/osmo-pcu at hudson.plugins.git.GitSCM.fetchFrom(GitSCM.java:862) at hudson.plugins.git.GitSCM.retrieveChanges(GitSCM.java:1129) at hudson.plugins.git.GitSCM.checkout(GitSCM.java:1160) at hudson.scm.SCM.checkout(SCM.java:495) at hudson.model.AbstractProject.checkout(AbstractProject.java:1202) at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:574) at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:86) at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:499) at hudson.model.Run.execute(Run.java:1724) at hudson.matrix.MatrixRun.run(MatrixRun.java:146) at hudson.model.ResourceController.execute(ResourceController.java:97) at hudson.model.Executor.run(Executor.java:429) Caused by: hudson.plugins.git.GitException: Command "git config remote.origin.url git://git.osmocom.org/osmo-pcu" returned status code 4: stdout: stderr: error: failed to write new configuration file at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1996) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1964) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1960) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommand(CliGitAPIImpl.java:1597) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommand(CliGitAPIImpl.java:1609) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.setRemoteUrl(CliGitAPIImpl.java:1243) at hudson.plugins.git.GitAPI.setRemoteUrl(GitAPI.java:160) at sun.reflect.GeneratedMethodAccessor26.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at hudson.remoting.RemoteInvocationHandler$RPCRequest.perform(RemoteInvocationHandler.java:922) at hudson.remoting.RemoteInvocationHandler$RPCRequest.call(RemoteInvocationHandler.java:896) at hudson.remoting.RemoteInvocationHandler$RPCRequest.call(RemoteInvocationHandler.java:853) at hudson.remoting.UserRequest.perform(UserRequest.java:207) at hudson.remoting.UserRequest.perform(UserRequest.java:53) at hudson.remoting.Request$2.run(Request.java:358) at hudson.remoting.InterceptingExecutorService$1.call(InterceptingExecutorService.java:72) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:748) Suppressed: hudson.remoting.Channel$CallSiteStackTrace: Remote call to build2-deb9build-ansible at hudson.remoting.Channel.attachCallSiteStackTrace(Channel.java:1693) at hudson.remoting.UserResponse.retrieve(UserRequest.java:310) at hudson.remoting.Channel.call(Channel.java:908) at hudson.remoting.RemoteInvocationHandler.invoke(RemoteInvocationHandler.java:281) at com.sun.proxy.$Proxy56.setRemoteUrl(Unknown Source) at org.jenkinsci.plugins.gitclient.RemoteGitImpl.setRemoteUrl(RemoteGitImpl.java:295) at hudson.plugins.git.GitSCM.fetchFrom(GitSCM.java:850) at hudson.plugins.git.GitSCM.retrieveChanges(GitSCM.java:1129) at hudson.plugins.git.GitSCM.checkout(GitSCM.java:1160) at hudson.scm.SCM.checkout(SCM.java:495) at hudson.model.AbstractProject.checkout(AbstractProject.java:1202) at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:574) at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:86) at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:499) at hudson.model.Run.execute(Run.java:1724) at hudson.matrix.MatrixRun.run(MatrixRun.java:146) at hudson.model.ResourceController.execute(ResourceController.java:97) at hudson.model.Executor.run(Executor.java:429) ERROR: Error fetching remote repo 'origin' Retrying after 10 seconds > git rev-parse --is-inside-work-tree # timeout=10 Fetching changes from the remote Git repository > git config remote.origin.url git://git.osmocom.org/osmo-pcu # timeout=10 ERROR: Error fetching remote repo 'origin' hudson.plugins.git.GitException: Failed to fetch from git://git.osmocom.org/osmo-pcu at hudson.plugins.git.GitSCM.fetchFrom(GitSCM.java:862) at hudson.plugins.git.GitSCM.retrieveChanges(GitSCM.java:1129) at hudson.plugins.git.GitSCM.checkout(GitSCM.java:1160) at hudson.scm.SCM.checkout(SCM.java:495) at hudson.model.AbstractProject.checkout(AbstractProject.java:1202) at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:574) at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:86) at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:499) at hudson.model.Run.execute(Run.java:1724) at hudson.matrix.MatrixRun.run(MatrixRun.java:146) at hudson.model.ResourceController.execute(ResourceController.java:97) at hudson.model.Executor.run(Executor.java:429) Caused by: hudson.plugins.git.GitException: Command "git config remote.origin.url git://git.osmocom.org/osmo-pcu" returned status code 4: stdout: stderr: error: failed to write new configuration file at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1996) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1964) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1960) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommand(CliGitAPIImpl.java:1597) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommand(CliGitAPIImpl.java:1609) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.setRemoteUrl(CliGitAPIImpl.java:1243) at hudson.plugins.git.GitAPI.setRemoteUrl(GitAPI.java:160) at sun.reflect.GeneratedMethodAccessor26.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at hudson.remoting.RemoteInvocationHandler$RPCRequest.perform(RemoteInvocationHandler.java:922) at hudson.remoting.RemoteInvocationHandler$RPCRequest.call(RemoteInvocationHandler.java:896) at hudson.remoting.RemoteInvocationHandler$RPCRequest.call(RemoteInvocationHandler.java:853) at hudson.remoting.UserRequest.perform(UserRequest.java:207) at hudson.remoting.UserRequest.perform(UserRequest.java:53) at hudson.remoting.Request$2.run(Request.java:358) at hudson.remoting.InterceptingExecutorService$1.call(InterceptingExecutorService.java:72) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:748) Suppressed: hudson.remoting.Channel$CallSiteStackTrace: Remote call to build2-deb9build-ansible at hudson.remoting.Channel.attachCallSiteStackTrace(Channel.java:1693) at hudson.remoting.UserResponse.retrieve(UserRequest.java:310) at hudson.remoting.Channel.call(Channel.java:908) at hudson.remoting.RemoteInvocationHandler.invoke(RemoteInvocationHandler.java:281) at com.sun.proxy.$Proxy56.setRemoteUrl(Unknown Source) at org.jenkinsci.plugins.gitclient.RemoteGitImpl.setRemoteUrl(RemoteGitImpl.java:295) at hudson.plugins.git.GitSCM.fetchFrom(GitSCM.java:850) at hudson.plugins.git.GitSCM.retrieveChanges(GitSCM.java:1129) at hudson.plugins.git.GitSCM.checkout(GitSCM.java:1160) at hudson.scm.SCM.checkout(SCM.java:495) at hudson.model.AbstractProject.checkout(AbstractProject.java:1202) at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:574) at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:86) at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:499) at hudson.model.Run.execute(Run.java:1724) at hudson.matrix.MatrixRun.run(MatrixRun.java:146) at hudson.model.ResourceController.execute(ResourceController.java:97) at hudson.model.Executor.run(Executor.java:429) ERROR: Error fetching remote repo 'origin' [WARNINGS]Skipping publisher since build result is FAILURE From jenkins at lists.osmocom.org Mon Apr 16 08:31:30 2018 From: jenkins at lists.osmocom.org (jenkins at lists.osmocom.org) Date: Mon, 16 Apr 2018 08:31:30 +0000 (UTC) Subject: =?UTF-8?Q?Build_failed_in_Jenkins:_mast?= =?UTF-8?Q?er-osmo-mgw_=C2=BB_--disable-mgcp-t?= =?UTF-8?Q?ranscoding,a2=3Ddefault,a3=3Ddefau?= =?UTF-8?Q?lt,osmocom-master-debian9_#660?= Message-ID: <1100888586.357.1523867490309.JavaMail.jenkins@jenkins.osmocom.org> See ------------------------------------------ [...truncated 1.31 KB...] ERROR: Error fetching remote repo 'origin' hudson.plugins.git.GitException: Failed to fetch from git://git.osmocom.org/osmo-mgw at hudson.plugins.git.GitSCM.fetchFrom(GitSCM.java:862) at hudson.plugins.git.GitSCM.retrieveChanges(GitSCM.java:1129) at hudson.plugins.git.GitSCM.checkout(GitSCM.java:1160) at hudson.scm.SCM.checkout(SCM.java:495) at hudson.model.AbstractProject.checkout(AbstractProject.java:1202) at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:574) at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:86) at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:499) at hudson.model.Run.execute(Run.java:1724) at hudson.matrix.MatrixRun.run(MatrixRun.java:146) at hudson.model.ResourceController.execute(ResourceController.java:97) at hudson.model.Executor.run(Executor.java:429) Caused by: hudson.plugins.git.GitException: Command "git config remote.origin.url git://git.osmocom.org/osmo-mgw" returned status code 4: stdout: stderr: error: failed to write new configuration file at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1996) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1964) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1960) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommand(CliGitAPIImpl.java:1597) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommand(CliGitAPIImpl.java:1609) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.setRemoteUrl(CliGitAPIImpl.java:1243) at hudson.plugins.git.GitAPI.setRemoteUrl(GitAPI.java:160) at sun.reflect.GeneratedMethodAccessor26.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at hudson.remoting.RemoteInvocationHandler$RPCRequest.perform(RemoteInvocationHandler.java:922) at hudson.remoting.RemoteInvocationHandler$RPCRequest.call(RemoteInvocationHandler.java:896) at hudson.remoting.RemoteInvocationHandler$RPCRequest.call(RemoteInvocationHandler.java:853) at hudson.remoting.UserRequest.perform(UserRequest.java:207) at hudson.remoting.UserRequest.perform(UserRequest.java:53) at hudson.remoting.Request$2.run(Request.java:358) at hudson.remoting.InterceptingExecutorService$1.call(InterceptingExecutorService.java:72) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:748) Suppressed: hudson.remoting.Channel$CallSiteStackTrace: Remote call to build2-deb9build-ansible at hudson.remoting.Channel.attachCallSiteStackTrace(Channel.java:1693) at hudson.remoting.UserResponse.retrieve(UserRequest.java:310) at hudson.remoting.Channel.call(Channel.java:908) at hudson.remoting.RemoteInvocationHandler.invoke(RemoteInvocationHandler.java:281) at com.sun.proxy.$Proxy56.setRemoteUrl(Unknown Source) at org.jenkinsci.plugins.gitclient.RemoteGitImpl.setRemoteUrl(RemoteGitImpl.java:295) at hudson.plugins.git.GitSCM.fetchFrom(GitSCM.java:850) at hudson.plugins.git.GitSCM.retrieveChanges(GitSCM.java:1129) at hudson.plugins.git.GitSCM.checkout(GitSCM.java:1160) at hudson.scm.SCM.checkout(SCM.java:495) at hudson.model.AbstractProject.checkout(AbstractProject.java:1202) at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:574) at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:86) at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:499) at hudson.model.Run.execute(Run.java:1724) at hudson.matrix.MatrixRun.run(MatrixRun.java:146) at hudson.model.ResourceController.execute(ResourceController.java:97) at hudson.model.Executor.run(Executor.java:429) ERROR: Error fetching remote repo 'origin' Retrying after 10 seconds > git rev-parse --is-inside-work-tree # timeout=10 Fetching changes from the remote Git repository > git config remote.origin.url git://git.osmocom.org/osmo-mgw # timeout=10 ERROR: Error fetching remote repo 'origin' hudson.plugins.git.GitException: Failed to fetch from git://git.osmocom.org/osmo-mgw at hudson.plugins.git.GitSCM.fetchFrom(GitSCM.java:862) at hudson.plugins.git.GitSCM.retrieveChanges(GitSCM.java:1129) at hudson.plugins.git.GitSCM.checkout(GitSCM.java:1160) at hudson.scm.SCM.checkout(SCM.java:495) at hudson.model.AbstractProject.checkout(AbstractProject.java:1202) at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:574) at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:86) at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:499) at hudson.model.Run.execute(Run.java:1724) at hudson.matrix.MatrixRun.run(MatrixRun.java:146) at hudson.model.ResourceController.execute(ResourceController.java:97) at hudson.model.Executor.run(Executor.java:429) Caused by: hudson.plugins.git.GitException: Command "git config remote.origin.url git://git.osmocom.org/osmo-mgw" returned status code 4: stdout: stderr: error: failed to write new configuration file at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1996) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1964) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1960) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommand(CliGitAPIImpl.java:1597) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommand(CliGitAPIImpl.java:1609) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.setRemoteUrl(CliGitAPIImpl.java:1243) at hudson.plugins.git.GitAPI.setRemoteUrl(GitAPI.java:160) at sun.reflect.GeneratedMethodAccessor26.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at hudson.remoting.RemoteInvocationHandler$RPCRequest.perform(RemoteInvocationHandler.java:922) at hudson.remoting.RemoteInvocationHandler$RPCRequest.call(RemoteInvocationHandler.java:896) at hudson.remoting.RemoteInvocationHandler$RPCRequest.call(RemoteInvocationHandler.java:853) at hudson.remoting.UserRequest.perform(UserRequest.java:207) at hudson.remoting.UserRequest.perform(UserRequest.java:53) at hudson.remoting.Request$2.run(Request.java:358) at hudson.remoting.InterceptingExecutorService$1.call(InterceptingExecutorService.java:72) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:748) Suppressed: hudson.remoting.Channel$CallSiteStackTrace: Remote call to build2-deb9build-ansible at hudson.remoting.Channel.attachCallSiteStackTrace(Channel.java:1693) at hudson.remoting.UserResponse.retrieve(UserRequest.java:310) at hudson.remoting.Channel.call(Channel.java:908) at hudson.remoting.RemoteInvocationHandler.invoke(RemoteInvocationHandler.java:281) at com.sun.proxy.$Proxy56.setRemoteUrl(Unknown Source) at org.jenkinsci.plugins.gitclient.RemoteGitImpl.setRemoteUrl(RemoteGitImpl.java:295) at hudson.plugins.git.GitSCM.fetchFrom(GitSCM.java:850) at hudson.plugins.git.GitSCM.retrieveChanges(GitSCM.java:1129) at hudson.plugins.git.GitSCM.checkout(GitSCM.java:1160) at hudson.scm.SCM.checkout(SCM.java:495) at hudson.model.AbstractProject.checkout(AbstractProject.java:1202) at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:574) at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:86) at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:499) at hudson.model.Run.execute(Run.java:1724) at hudson.matrix.MatrixRun.run(MatrixRun.java:146) at hudson.model.ResourceController.execute(ResourceController.java:97) at hudson.model.Executor.run(Executor.java:429) ERROR: Error fetching remote repo 'origin' Retrying after 10 seconds > git rev-parse --is-inside-work-tree # timeout=10 Fetching changes from the remote Git repository > git config remote.origin.url git://git.osmocom.org/osmo-mgw # timeout=10 ERROR: Error fetching remote repo 'origin' hudson.plugins.git.GitException: Failed to fetch from git://git.osmocom.org/osmo-mgw at hudson.plugins.git.GitSCM.fetchFrom(GitSCM.java:862) at hudson.plugins.git.GitSCM.retrieveChanges(GitSCM.java:1129) at hudson.plugins.git.GitSCM.checkout(GitSCM.java:1160) at hudson.scm.SCM.checkout(SCM.java:495) at hudson.model.AbstractProject.checkout(AbstractProject.java:1202) at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:574) at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:86) at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:499) at hudson.model.Run.execute(Run.java:1724) at hudson.matrix.MatrixRun.run(MatrixRun.java:146) at hudson.model.ResourceController.execute(ResourceController.java:97) at hudson.model.Executor.run(Executor.java:429) Caused by: hudson.plugins.git.GitException: Command "git config remote.origin.url git://git.osmocom.org/osmo-mgw" returned status code 4: stdout: stderr: error: failed to write new configuration file at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1996) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1964) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1960) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommand(CliGitAPIImpl.java:1597) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommand(CliGitAPIImpl.java:1609) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.setRemoteUrl(CliGitAPIImpl.java:1243) at hudson.plugins.git.GitAPI.setRemoteUrl(GitAPI.java:160) at sun.reflect.GeneratedMethodAccessor26.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at hudson.remoting.RemoteInvocationHandler$RPCRequest.perform(RemoteInvocationHandler.java:922) at hudson.remoting.RemoteInvocationHandler$RPCRequest.call(RemoteInvocationHandler.java:896) at hudson.remoting.RemoteInvocationHandler$RPCRequest.call(RemoteInvocationHandler.java:853) at hudson.remoting.UserRequest.perform(UserRequest.java:207) at hudson.remoting.UserRequest.perform(UserRequest.java:53) at hudson.remoting.Request$2.run(Request.java:358) at hudson.remoting.InterceptingExecutorService$1.call(InterceptingExecutorService.java:72) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:748) Suppressed: hudson.remoting.Channel$CallSiteStackTrace: Remote call to build2-deb9build-ansible at hudson.remoting.Channel.attachCallSiteStackTrace(Channel.java:1693) at hudson.remoting.UserResponse.retrieve(UserRequest.java:310) at hudson.remoting.Channel.call(Channel.java:908) at hudson.remoting.RemoteInvocationHandler.invoke(RemoteInvocationHandler.java:281) at com.sun.proxy.$Proxy56.setRemoteUrl(Unknown Source) at org.jenkinsci.plugins.gitclient.RemoteGitImpl.setRemoteUrl(RemoteGitImpl.java:295) at hudson.plugins.git.GitSCM.fetchFrom(GitSCM.java:850) at hudson.plugins.git.GitSCM.retrieveChanges(GitSCM.java:1129) at hudson.plugins.git.GitSCM.checkout(GitSCM.java:1160) at hudson.scm.SCM.checkout(SCM.java:495) at hudson.model.AbstractProject.checkout(AbstractProject.java:1202) at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:574) at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:86) at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:499) at hudson.model.Run.execute(Run.java:1724) at hudson.matrix.MatrixRun.run(MatrixRun.java:146) at hudson.model.ResourceController.execute(ResourceController.java:97) at hudson.model.Executor.run(Executor.java:429) ERROR: Error fetching remote repo 'origin' Retrying after 10 seconds > git rev-parse --is-inside-work-tree # timeout=10 Fetching changes from the remote Git repository > git config remote.origin.url git://git.osmocom.org/osmo-mgw # timeout=10 ERROR: Error fetching remote repo 'origin' hudson.plugins.git.GitException: Failed to fetch from git://git.osmocom.org/osmo-mgw at hudson.plugins.git.GitSCM.fetchFrom(GitSCM.java:862) at hudson.plugins.git.GitSCM.retrieveChanges(GitSCM.java:1129) at hudson.plugins.git.GitSCM.checkout(GitSCM.java:1160) at hudson.scm.SCM.checkout(SCM.java:495) at hudson.model.AbstractProject.checkout(AbstractProject.java:1202) at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:574) at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:86) at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:499) at hudson.model.Run.execute(Run.java:1724) at hudson.matrix.MatrixRun.run(MatrixRun.java:146) at hudson.model.ResourceController.execute(ResourceController.java:97) at hudson.model.Executor.run(Executor.java:429) Caused by: hudson.plugins.git.GitException: Command "git config remote.origin.url git://git.osmocom.org/osmo-mgw" returned status code 4: stdout: stderr: error: failed to write new configuration file at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1996) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1964) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1960) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommand(CliGitAPIImpl.java:1597) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommand(CliGitAPIImpl.java:1609) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.setRemoteUrl(CliGitAPIImpl.java:1243) at hudson.plugins.git.GitAPI.setRemoteUrl(GitAPI.java:160) at sun.reflect.GeneratedMethodAccessor26.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at hudson.remoting.RemoteInvocationHandler$RPCRequest.perform(RemoteInvocationHandler.java:922) at hudson.remoting.RemoteInvocationHandler$RPCRequest.call(RemoteInvocationHandler.java:896) at hudson.remoting.RemoteInvocationHandler$RPCRequest.call(RemoteInvocationHandler.java:853) at hudson.remoting.UserRequest.perform(UserRequest.java:207) at hudson.remoting.UserRequest.perform(UserRequest.java:53) at hudson.remoting.Request$2.run(Request.java:358) at hudson.remoting.InterceptingExecutorService$1.call(InterceptingExecutorService.java:72) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:748) Suppressed: hudson.remoting.Channel$CallSiteStackTrace: Remote call to build2-deb9build-ansible at hudson.remoting.Channel.attachCallSiteStackTrace(Channel.java:1693) at hudson.remoting.UserResponse.retrieve(UserRequest.java:310) at hudson.remoting.Channel.call(Channel.java:908) at hudson.remoting.RemoteInvocationHandler.invoke(RemoteInvocationHandler.java:281) at com.sun.proxy.$Proxy56.setRemoteUrl(Unknown Source) at org.jenkinsci.plugins.gitclient.RemoteGitImpl.setRemoteUrl(RemoteGitImpl.java:295) at hudson.plugins.git.GitSCM.fetchFrom(GitSCM.java:850) at hudson.plugins.git.GitSCM.retrieveChanges(GitSCM.java:1129) at hudson.plugins.git.GitSCM.checkout(GitSCM.java:1160) at hudson.scm.SCM.checkout(SCM.java:495) at hudson.model.AbstractProject.checkout(AbstractProject.java:1202) at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:574) at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:86) at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:499) at hudson.model.Run.execute(Run.java:1724) at hudson.matrix.MatrixRun.run(MatrixRun.java:146) at hudson.model.ResourceController.execute(ResourceController.java:97) at hudson.model.Executor.run(Executor.java:429) ERROR: Error fetching remote repo 'origin' [WARNINGS]Skipping publisher since build result is FAILURE From jenkins at lists.osmocom.org Mon Apr 16 10:41:34 2018 From: jenkins at lists.osmocom.org (jenkins at lists.osmocom.org) Date: Mon, 16 Apr 2018 10:41:34 +0000 (UTC) Subject: =?UTF-8?Q?Jenkins_build_is_back_to_normal_:_master-asn1c_=C2=BB_a1=3Dde?= =?UTF-8?Q?fault,a2=3Ddefault,a3=3Ddefault,osmocom-master-debian9_#93?= In-Reply-To: <1659048997.329.1523805006816.JavaMail.jenkins@jenkins.osmocom.org> References: <1659048997.329.1523805006816.JavaMail.jenkins@jenkins.osmocom.org> Message-ID: <1181336544.359.1523875294176.JavaMail.jenkins@jenkins.osmocom.org> See From jenkins at lists.osmocom.org Mon Apr 16 10:58:10 2018 From: jenkins at lists.osmocom.org (jenkins at lists.osmocom.org) Date: Mon, 16 Apr 2018 10:58:10 +0000 (UTC) Subject: =?UTF-8?Q?Build_failed_in_Jenkins:_master-osmo-msc_=C2=BB_--disable-?= =?UTF-8?Q?iu,a2=3Ddefault,a3=3Ddefault,osmocom-master-debian9_#2848?= In-Reply-To: <575732771.350.1523860288674.JavaMail.jenkins@jenkins.osmocom.org> References: <575732771.350.1523860288674.JavaMail.jenkins@jenkins.osmocom.org> Message-ID: <2926481.361.1523876290689.JavaMail.jenkins@jenkins.osmocom.org> See ------------------------------------------ [...truncated 1.93 KB...] ERROR: Error fetching remote repo 'origin' hudson.plugins.git.GitException: Failed to fetch from git://git.osmocom.org/osmo-msc at hudson.plugins.git.GitSCM.fetchFrom(GitSCM.java:862) at hudson.plugins.git.GitSCM.retrieveChanges(GitSCM.java:1129) at hudson.plugins.git.GitSCM.checkout(GitSCM.java:1160) at hudson.scm.SCM.checkout(SCM.java:495) at hudson.model.AbstractProject.checkout(AbstractProject.java:1202) at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:574) at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:86) at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:499) at hudson.model.Run.execute(Run.java:1724) at hudson.matrix.MatrixRun.run(MatrixRun.java:146) at hudson.model.ResourceController.execute(ResourceController.java:97) at hudson.model.Executor.run(Executor.java:429) Caused by: hudson.plugins.git.GitException: Command "git config remote.origin.url git://git.osmocom.org/osmo-msc" returned status code 4: stdout: stderr: error: failed to write new configuration file at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1996) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1964) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1960) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommand(CliGitAPIImpl.java:1597) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommand(CliGitAPIImpl.java:1609) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.setRemoteUrl(CliGitAPIImpl.java:1243) at hudson.plugins.git.GitAPI.setRemoteUrl(GitAPI.java:160) at sun.reflect.GeneratedMethodAccessor26.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at hudson.remoting.RemoteInvocationHandler$RPCRequest.perform(RemoteInvocationHandler.java:922) at hudson.remoting.RemoteInvocationHandler$RPCRequest.call(RemoteInvocationHandler.java:896) at hudson.remoting.RemoteInvocationHandler$RPCRequest.call(RemoteInvocationHandler.java:853) at hudson.remoting.UserRequest.perform(UserRequest.java:207) at hudson.remoting.UserRequest.perform(UserRequest.java:53) at hudson.remoting.Request$2.run(Request.java:358) at hudson.remoting.InterceptingExecutorService$1.call(InterceptingExecutorService.java:72) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:748) Suppressed: hudson.remoting.Channel$CallSiteStackTrace: Remote call to build2-deb9build-ansible at hudson.remoting.Channel.attachCallSiteStackTrace(Channel.java:1693) at hudson.remoting.UserResponse.retrieve(UserRequest.java:310) at hudson.remoting.Channel.call(Channel.java:908) at hudson.remoting.RemoteInvocationHandler.invoke(RemoteInvocationHandler.java:281) at com.sun.proxy.$Proxy56.setRemoteUrl(Unknown Source) at org.jenkinsci.plugins.gitclient.RemoteGitImpl.setRemoteUrl(RemoteGitImpl.java:295) at hudson.plugins.git.GitSCM.fetchFrom(GitSCM.java:850) at hudson.plugins.git.GitSCM.retrieveChanges(GitSCM.java:1129) at hudson.plugins.git.GitSCM.checkout(GitSCM.java:1160) at hudson.scm.SCM.checkout(SCM.java:495) at hudson.model.AbstractProject.checkout(AbstractProject.java:1202) at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:574) at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:86) at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:499) at hudson.model.Run.execute(Run.java:1724) at hudson.matrix.MatrixRun.run(MatrixRun.java:146) at hudson.model.ResourceController.execute(ResourceController.java:97) at hudson.model.Executor.run(Executor.java:429) ERROR: Error fetching remote repo 'origin' Retrying after 10 seconds > git rev-parse --is-inside-work-tree # timeout=10 Fetching changes from the remote Git repository > git config remote.origin.url git://git.osmocom.org/osmo-msc # timeout=10 ERROR: Error fetching remote repo 'origin' hudson.plugins.git.GitException: Failed to fetch from git://git.osmocom.org/osmo-msc at hudson.plugins.git.GitSCM.fetchFrom(GitSCM.java:862) at hudson.plugins.git.GitSCM.retrieveChanges(GitSCM.java:1129) at hudson.plugins.git.GitSCM.checkout(GitSCM.java:1160) at hudson.scm.SCM.checkout(SCM.java:495) at hudson.model.AbstractProject.checkout(AbstractProject.java:1202) at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:574) at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:86) at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:499) at hudson.model.Run.execute(Run.java:1724) at hudson.matrix.MatrixRun.run(MatrixRun.java:146) at hudson.model.ResourceController.execute(ResourceController.java:97) at hudson.model.Executor.run(Executor.java:429) Caused by: hudson.plugins.git.GitException: Command "git config remote.origin.url git://git.osmocom.org/osmo-msc" returned status code 4: stdout: stderr: error: failed to write new configuration file at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1996) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1964) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1960) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommand(CliGitAPIImpl.java:1597) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommand(CliGitAPIImpl.java:1609) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.setRemoteUrl(CliGitAPIImpl.java:1243) at hudson.plugins.git.GitAPI.setRemoteUrl(GitAPI.java:160) at sun.reflect.GeneratedMethodAccessor26.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at hudson.remoting.RemoteInvocationHandler$RPCRequest.perform(RemoteInvocationHandler.java:922) at hudson.remoting.RemoteInvocationHandler$RPCRequest.call(RemoteInvocationHandler.java:896) at hudson.remoting.RemoteInvocationHandler$RPCRequest.call(RemoteInvocationHandler.java:853) at hudson.remoting.UserRequest.perform(UserRequest.java:207) at hudson.remoting.UserRequest.perform(UserRequest.java:53) at hudson.remoting.Request$2.run(Request.java:358) at hudson.remoting.InterceptingExecutorService$1.call(InterceptingExecutorService.java:72) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:748) Suppressed: hudson.remoting.Channel$CallSiteStackTrace: Remote call to build2-deb9build-ansible at hudson.remoting.Channel.attachCallSiteStackTrace(Channel.java:1693) at hudson.remoting.UserResponse.retrieve(UserRequest.java:310) at hudson.remoting.Channel.call(Channel.java:908) at hudson.remoting.RemoteInvocationHandler.invoke(RemoteInvocationHandler.java:281) at com.sun.proxy.$Proxy56.setRemoteUrl(Unknown Source) at org.jenkinsci.plugins.gitclient.RemoteGitImpl.setRemoteUrl(RemoteGitImpl.java:295) at hudson.plugins.git.GitSCM.fetchFrom(GitSCM.java:850) at hudson.plugins.git.GitSCM.retrieveChanges(GitSCM.java:1129) at hudson.plugins.git.GitSCM.checkout(GitSCM.java:1160) at hudson.scm.SCM.checkout(SCM.java:495) at hudson.model.AbstractProject.checkout(AbstractProject.java:1202) at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:574) at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:86) at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:499) at hudson.model.Run.execute(Run.java:1724) at hudson.matrix.MatrixRun.run(MatrixRun.java:146) at hudson.model.ResourceController.execute(ResourceController.java:97) at hudson.model.Executor.run(Executor.java:429) ERROR: Error fetching remote repo 'origin' Retrying after 10 seconds > git rev-parse --is-inside-work-tree # timeout=10 Fetching changes from the remote Git repository > git config remote.origin.url git://git.osmocom.org/osmo-msc # timeout=10 ERROR: Error fetching remote repo 'origin' hudson.plugins.git.GitException: Failed to fetch from git://git.osmocom.org/osmo-msc at hudson.plugins.git.GitSCM.fetchFrom(GitSCM.java:862) at hudson.plugins.git.GitSCM.retrieveChanges(GitSCM.java:1129) at hudson.plugins.git.GitSCM.checkout(GitSCM.java:1160) at hudson.scm.SCM.checkout(SCM.java:495) at hudson.model.AbstractProject.checkout(AbstractProject.java:1202) at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:574) at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:86) at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:499) at hudson.model.Run.execute(Run.java:1724) at hudson.matrix.MatrixRun.run(MatrixRun.java:146) at hudson.model.ResourceController.execute(ResourceController.java:97) at hudson.model.Executor.run(Executor.java:429) Caused by: hudson.plugins.git.GitException: Command "git config remote.origin.url git://git.osmocom.org/osmo-msc" returned status code 4: stdout: stderr: error: failed to write new configuration file at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1996) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1964) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1960) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommand(CliGitAPIImpl.java:1597) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommand(CliGitAPIImpl.java:1609) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.setRemoteUrl(CliGitAPIImpl.java:1243) at hudson.plugins.git.GitAPI.setRemoteUrl(GitAPI.java:160) at sun.reflect.GeneratedMethodAccessor26.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at hudson.remoting.RemoteInvocationHandler$RPCRequest.perform(RemoteInvocationHandler.java:922) at hudson.remoting.RemoteInvocationHandler$RPCRequest.call(RemoteInvocationHandler.java:896) at hudson.remoting.RemoteInvocationHandler$RPCRequest.call(RemoteInvocationHandler.java:853) at hudson.remoting.UserRequest.perform(UserRequest.java:207) at hudson.remoting.UserRequest.perform(UserRequest.java:53) at hudson.remoting.Request$2.run(Request.java:358) at hudson.remoting.InterceptingExecutorService$1.call(InterceptingExecutorService.java:72) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:748) Suppressed: hudson.remoting.Channel$CallSiteStackTrace: Remote call to build2-deb9build-ansible at hudson.remoting.Channel.attachCallSiteStackTrace(Channel.java:1693) at hudson.remoting.UserResponse.retrieve(UserRequest.java:310) at hudson.remoting.Channel.call(Channel.java:908) at hudson.remoting.RemoteInvocationHandler.invoke(RemoteInvocationHandler.java:281) at com.sun.proxy.$Proxy56.setRemoteUrl(Unknown Source) at org.jenkinsci.plugins.gitclient.RemoteGitImpl.setRemoteUrl(RemoteGitImpl.java:295) at hudson.plugins.git.GitSCM.fetchFrom(GitSCM.java:850) at hudson.plugins.git.GitSCM.retrieveChanges(GitSCM.java:1129) at hudson.plugins.git.GitSCM.checkout(GitSCM.java:1160) at hudson.scm.SCM.checkout(SCM.java:495) at hudson.model.AbstractProject.checkout(AbstractProject.java:1202) at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:574) at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:86) at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:499) at hudson.model.Run.execute(Run.java:1724) at hudson.matrix.MatrixRun.run(MatrixRun.java:146) at hudson.model.ResourceController.execute(ResourceController.java:97) at hudson.model.Executor.run(Executor.java:429) ERROR: Error fetching remote repo 'origin' Retrying after 10 seconds > git rev-parse --is-inside-work-tree # timeout=10 Fetching changes from the remote Git repository > git config remote.origin.url git://git.osmocom.org/osmo-msc # timeout=10 ERROR: Error fetching remote repo 'origin' hudson.plugins.git.GitException: Failed to fetch from git://git.osmocom.org/osmo-msc at hudson.plugins.git.GitSCM.fetchFrom(GitSCM.java:862) at hudson.plugins.git.GitSCM.retrieveChanges(GitSCM.java:1129) at hudson.plugins.git.GitSCM.checkout(GitSCM.java:1160) at hudson.scm.SCM.checkout(SCM.java:495) at hudson.model.AbstractProject.checkout(AbstractProject.java:1202) at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:574) at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:86) at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:499) at hudson.model.Run.execute(Run.java:1724) at hudson.matrix.MatrixRun.run(MatrixRun.java:146) at hudson.model.ResourceController.execute(ResourceController.java:97) at hudson.model.Executor.run(Executor.java:429) Caused by: hudson.plugins.git.GitException: Command "git config remote.origin.url git://git.osmocom.org/osmo-msc" returned status code 4: stdout: stderr: error: failed to write new configuration file at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1996) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1964) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1960) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommand(CliGitAPIImpl.java:1597) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommand(CliGitAPIImpl.java:1609) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.setRemoteUrl(CliGitAPIImpl.java:1243) at hudson.plugins.git.GitAPI.setRemoteUrl(GitAPI.java:160) at sun.reflect.GeneratedMethodAccessor26.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at hudson.remoting.RemoteInvocationHandler$RPCRequest.perform(RemoteInvocationHandler.java:922) at hudson.remoting.RemoteInvocationHandler$RPCRequest.call(RemoteInvocationHandler.java:896) at hudson.remoting.RemoteInvocationHandler$RPCRequest.call(RemoteInvocationHandler.java:853) at hudson.remoting.UserRequest.perform(UserRequest.java:207) at hudson.remoting.UserRequest.perform(UserRequest.java:53) at hudson.remoting.Request$2.run(Request.java:358) at hudson.remoting.InterceptingExecutorService$1.call(InterceptingExecutorService.java:72) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:748) Suppressed: hudson.remoting.Channel$CallSiteStackTrace: Remote call to build2-deb9build-ansible at hudson.remoting.Channel.attachCallSiteStackTrace(Channel.java:1693) at hudson.remoting.UserResponse.retrieve(UserRequest.java:310) at hudson.remoting.Channel.call(Channel.java:908) at hudson.remoting.RemoteInvocationHandler.invoke(RemoteInvocationHandler.java:281) at com.sun.proxy.$Proxy56.setRemoteUrl(Unknown Source) at org.jenkinsci.plugins.gitclient.RemoteGitImpl.setRemoteUrl(RemoteGitImpl.java:295) at hudson.plugins.git.GitSCM.fetchFrom(GitSCM.java:850) at hudson.plugins.git.GitSCM.retrieveChanges(GitSCM.java:1129) at hudson.plugins.git.GitSCM.checkout(GitSCM.java:1160) at hudson.scm.SCM.checkout(SCM.java:495) at hudson.model.AbstractProject.checkout(AbstractProject.java:1202) at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:574) at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:86) at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:499) at hudson.model.Run.execute(Run.java:1724) at hudson.matrix.MatrixRun.run(MatrixRun.java:146) at hudson.model.ResourceController.execute(ResourceController.java:97) at hudson.model.Executor.run(Executor.java:429) ERROR: Error fetching remote repo 'origin' [WARNINGS]Skipping publisher since build result is FAILURE From gerrit-no-reply at lists.osmocom.org Mon Apr 16 11:24:49 2018 From: gerrit-no-reply at lists.osmocom.org (Stefan Sperling) Date: Mon, 16 Apr 2018 11:24:49 +0000 Subject: [PATCH] openbsc[master]: only log actual access control class ramping changes Message-ID: Review at https://gerrit.osmocom.org/7818 only log actual access control class ramping changes Silence log messages about no-op changes to access granted to access control classes. For example, these always occur while configuration files are being loaded. This is a port of osmo-bsc commit 53d40e078e9df20103b7ed26daa936720c9dec83 Related: OS#2591 Change-Id: I2f892b998eb8119e623c1d87ffe865b48f7d5a87 --- M openbsc/src/libbsc/acc_ramp.c 1 file changed, 4 insertions(+), 2 deletions(-) git pull ssh://gerrit.osmocom.org:29418/openbsc refs/changes/18/7818/1 diff --git a/openbsc/src/libbsc/acc_ramp.c b/openbsc/src/libbsc/acc_ramp.c index 08810b5..9b3f90b 100644 --- a/openbsc/src/libbsc/acc_ramp.c +++ b/openbsc/src/libbsc/acc_ramp.c @@ -42,14 +42,16 @@ static void allow_one_acc(struct acc_ramp *acc_ramp, unsigned int acc) { OSMO_ASSERT(acc >= 0 && acc <= 9); - LOGP(DRSL, LOGL_DEBUG, "(bts=%d) ACC RAMP: allowing Access Control Class %u\n", acc_ramp->bts->nr, acc); + if (acc_ramp->barred_accs & (1 << acc)) + LOGP(DRSL, LOGL_DEBUG, "(bts=%d) ACC RAMP: allowing Access Control Class %u\n", acc_ramp->bts->nr, acc); acc_ramp->barred_accs &= ~(1 << acc); } static void barr_one_acc(struct acc_ramp *acc_ramp, unsigned int acc) { OSMO_ASSERT(acc >= 0 && acc <= 9); - LOGP(DRSL, LOGL_DEBUG, "(bts=%d) ACC RAMP: barring Access Control Class %u\n", acc_ramp->bts->nr, acc); + if ((acc_ramp->barred_accs & (1 << acc)) == 0) + LOGP(DRSL, LOGL_DEBUG, "(bts=%d) ACC RAMP: barring Access Control Class %u\n", acc_ramp->bts->nr, acc); acc_ramp->barred_accs |= (1 << acc); } -- To view, visit https://gerrit.osmocom.org/7818 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I2f892b998eb8119e623c1d87ffe865b48f7d5a87 Gerrit-PatchSet: 1 Gerrit-Project: openbsc Gerrit-Branch: master Gerrit-Owner: Stefan Sperling From jenkins at lists.osmocom.org Mon Apr 16 11:25:16 2018 From: jenkins at lists.osmocom.org (jenkins at lists.osmocom.org) Date: Mon, 16 Apr 2018 11:25:16 +0000 (UTC) Subject: =?UTF-8?Q?Jenkins_build_is_back_to_normal_?= =?UTF-8?Q?:_master-osmo-mgw_=C2=BB_--disable-mg?= =?UTF-8?Q?cp-transcoding,a2=3Ddefault,a3=3Ddef?= =?UTF-8?Q?ault,osmocom-master-debian9_#661?= In-Reply-To: <1100888586.357.1523867490309.JavaMail.jenkins@jenkins.osmocom.org> References: <1100888586.357.1523867490309.JavaMail.jenkins@jenkins.osmocom.org> Message-ID: <716321067.362.1523877916340.JavaMail.jenkins@jenkins.osmocom.org> See From jenkins at lists.osmocom.org Mon Apr 16 11:27:07 2018 From: jenkins at lists.osmocom.org (jenkins at lists.osmocom.org) Date: Mon, 16 Apr 2018 11:27:07 +0000 (UTC) Subject: =?UTF-8?Q?Build_failed_in_Jenkins:_master-osmo-pcu_=C2=BB_?= =?UTF-8?Q?master,osmocom-master-debian9,lc15,True_#386?= In-Reply-To: <2100902346.354.1523863770403.JavaMail.jenkins@jenkins.osmocom.org> References: <2100902346.354.1523863770403.JavaMail.jenkins@jenkins.osmocom.org> Message-ID: <1133161058.363.1523878028007.JavaMail.jenkins@jenkins.osmocom.org> See ------------------------------------------ Started by upstream project "master-osmo-pcu" build number 386 originally caused by: Started by timer Building remotely on build2-deb9build-ansible (ttcn3 osmo-gsm-tester-build osmocom-gerrit-debian9 osmocom-master-debian9 coverity) in workspace > git rev-parse --is-inside-work-tree # timeout=10 Fetching changes from the remote Git repository > git config remote.origin.url git://git.osmocom.org/osmo-pcu # timeout=10 Fetching upstream changes from git://git.osmocom.org/osmo-pcu > git --version # timeout=10 > git fetch --tags --progress git://git.osmocom.org/osmo-pcu +refs/heads/*:refs/remotes/origin/* Checking out Revision 33c52b6271677bbbbc44f70fd7f10270e4a2c06f (refs/remotes/origin/master) > git config core.sparsecheckout # timeout=10 > git checkout -f 33c52b6271677bbbbc44f70fd7f10270e4a2c06f Commit message: "tbf: add frame number to log output" > git rev-list --no-walk 33c52b6271677bbbbc44f70fd7f10270e4a2c06f # timeout=10 [True] $ /bin/sh -xe /tmp/jenkins5521260145078969749.sh + ./contrib/jenkins.sh + [ -z make ] + base= + deps= + inst= + export deps inst + osmo-clean-workspace.sh + chmod -R +w . + git checkout -f HEAD + git clean -dxf Skipping repository deps/libosmocore Skipping repository deps/layer1-headers + [ -d ] + git_clean + repos= + [ ! -d ] + [ ! -d ] + git -C checkout -f HEAD + git -C clean -dxf + git_clean + repos= + [ ! -d ] + [ ! -d ] + git -C checkout -f HEAD + git -C clean -dxf + [ -d layer1-headers ] + mkdir mkdir: cannot create directory ?: File exists + true + PCU_CONFIG= + [ lc15 = sysmo ] + [ lc15 = lc15 ] + PCU_CONFIG= --enable-lc15bts-phy --with-litecell15= + cd + osmo-layer1-headers.sh lc15 master + uri=https://gitlab.com/nrw_litecell15/litecell15-fw + version=origin/nrw/litecell15 + [ -n master ] + [ master != master ] + test -d layer1-headers + cd layer1-headers + git fetch origin fatal: unable to access 'https://gitlab.com/nrw_litecell15/litecell15-fw/': The requested URL returned error: 500 Build step 'Execute shell' marked build as failure [WARNINGS]Skipping publisher since build result is FAILURE From jenkins at lists.osmocom.org Mon Apr 16 11:27:10 2018 From: jenkins at lists.osmocom.org (jenkins at lists.osmocom.org) Date: Mon, 16 Apr 2018 11:27:10 +0000 (UTC) Subject: =?UTF-8?Q?Build_failed_in_Jenkins:_master-osmo-pcu_=C2=BB_origin/nrw?= =?UTF-8?Q?/litecell15-next,osmocom-master-debian9,lc15,True_#386?= In-Reply-To: <7810494.355.1523863802359.JavaMail.jenkins@jenkins.osmocom.org> References: <7810494.355.1523863802359.JavaMail.jenkins@jenkins.osmocom.org> Message-ID: <2145997243.364.1523878030900.JavaMail.jenkins@jenkins.osmocom.org> See ------------------------------------------ Started by upstream project "master-osmo-pcu" build number 386 originally caused by: Started by timer Building remotely on build2-deb9build-ansible (ttcn3 osmo-gsm-tester-build osmocom-gerrit-debian9 osmocom-master-debian9 coverity) in workspace > git rev-parse --is-inside-work-tree # timeout=10 Fetching changes from the remote Git repository > git config remote.origin.url git://git.osmocom.org/osmo-pcu # timeout=10 Fetching upstream changes from git://git.osmocom.org/osmo-pcu > git --version # timeout=10 > git fetch --tags --progress git://git.osmocom.org/osmo-pcu +refs/heads/*:refs/remotes/origin/* Checking out Revision 33c52b6271677bbbbc44f70fd7f10270e4a2c06f (refs/remotes/origin/master) > git config core.sparsecheckout # timeout=10 > git checkout -f 33c52b6271677bbbbc44f70fd7f10270e4a2c06f Commit message: "tbf: add frame number to log output" > git rev-list --no-walk 33c52b6271677bbbbc44f70fd7f10270e4a2c06f # timeout=10 [True] $ /bin/sh -xe /tmp/jenkins4661421903734739371.sh + ./contrib/jenkins.sh + [ -z make ] + base= + deps= + inst= + export deps inst + osmo-clean-workspace.sh + chmod -R +w . + git checkout -f HEAD + git clean -dxf Skipping repository deps/libosmocore Skipping repository deps/layer1-headers + [ -d ] + git_clean + repos= + [ ! -d ] + [ ! -d ] + git -C checkout -f HEAD + git -C clean -dxf + git_clean + repos= + [ ! -d ] + [ ! -d ] + git -C checkout -f HEAD + git -C clean -dxf + [ -d layer1-headers ] + mkdir mkdir: cannot create directory ?: File exists + true + PCU_CONFIG= + [ lc15 = sysmo ] + [ lc15 = lc15 ] + PCU_CONFIG= --enable-lc15bts-phy --with-litecell15= + cd + osmo-layer1-headers.sh lc15 origin/nrw/litecell15-next + uri=https://gitlab.com/nrw_litecell15/litecell15-fw + version=origin/nrw/litecell15 + [ -n origin/nrw/litecell15-next ] + [ origin/nrw/litecell15-next != master ] + version=origin/nrw/litecell15-next + test -d layer1-headers + cd layer1-headers + git fetch origin fatal: unable to access 'https://gitlab.com/nrw_litecell15/litecell15-fw/': The requested URL returned error: 500 Build step 'Execute shell' marked build as failure [WARNINGS]Skipping publisher since build result is FAILURE From jenkins at lists.osmocom.org Mon Apr 16 11:31:23 2018 From: jenkins at lists.osmocom.org (jenkins at lists.osmocom.org) Date: Mon, 16 Apr 2018 11:31:23 +0000 (UTC) Subject: =?UTF-8?Q?Jenkins_build_is_back_to_normal_:_master-osmo-msc_=C2=BB_--dis?= =?UTF-8?Q?able-iu,a2=3Ddefault,a3=3Ddefault,osmocom-master-debian9_#2849?= In-Reply-To: <2926481.361.1523876290689.JavaMail.jenkins@jenkins.osmocom.org> References: <2926481.361.1523876290689.JavaMail.jenkins@jenkins.osmocom.org> Message-ID: <1053966118.366.1523878283522.JavaMail.jenkins@jenkins.osmocom.org> See From gerrit-no-reply at lists.osmocom.org Mon Apr 16 11:31:51 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Mon, 16 Apr 2018 11:31:51 +0000 Subject: openbsc[master]: only log actual access control class ramping changes In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+1 -- To view, visit https://gerrit.osmocom.org/7818 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I2f892b998eb8119e623c1d87ffe865b48f7d5a87 Gerrit-PatchSet: 1 Gerrit-Project: openbsc Gerrit-Branch: master Gerrit-Owner: Stefan Sperling Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Pau Espin Pedrol Gerrit-HasComments: No From jenkins at lists.osmocom.org Mon Apr 16 11:33:35 2018 From: jenkins at lists.osmocom.org (jenkins at lists.osmocom.org) Date: Mon, 16 Apr 2018 11:33:35 +0000 (UTC) Subject: =?UTF-8?Q?Jenkins_build_is_back_to_normal_:?= =?UTF-8?Q?_master-openbsc_=C2=BB_--disable-iu,--?= =?UTF-8?Q?disable-mgcp-transcoding,--enable?= =?UTF-8?Q?-smpp,osmocom-master-debian9_#1652?= In-Reply-To: <448828917.348.1523859674309.JavaMail.jenkins@jenkins.osmocom.org> References: <448828917.348.1523859674309.JavaMail.jenkins@jenkins.osmocom.org> Message-ID: <1691815517.367.1523878415962.JavaMail.jenkins@jenkins.osmocom.org> See From jenkins at lists.osmocom.org Mon Apr 16 11:34:14 2018 From: jenkins at lists.osmocom.org (jenkins at lists.osmocom.org) Date: Mon, 16 Apr 2018 11:34:14 +0000 (UTC) Subject: =?UTF-8?Q?Jenkins_build_is_back_to_normal_:?= =?UTF-8?Q?_master-openbsc_=C2=BB_--disable-iu,--?= =?UTF-8?Q?enable-mgcp-transcoding,--enable-?= =?UTF-8?Q?smpp,osmocom-master-debian9_#1652?= In-Reply-To: <597887218.343.1523859401524.JavaMail.jenkins@jenkins.osmocom.org> References: <597887218.343.1523859401524.JavaMail.jenkins@jenkins.osmocom.org> Message-ID: <1122522935.368.1523878454800.JavaMail.jenkins@jenkins.osmocom.org> See From jenkins at lists.osmocom.org Mon Apr 16 11:36:25 2018 From: jenkins at lists.osmocom.org (jenkins at lists.osmocom.org) Date: Mon, 16 Apr 2018 11:36:25 +0000 (UTC) Subject: =?UTF-8?Q?Jenkins_build_is_back_to_normal_:_master-osmo-pcu?= =?UTF-8?Q?_=C2=BB_v2017.01,osmocom-master-debian9,lc15,True_#386?= In-Reply-To: <1761023395.356.1523864046386.JavaMail.jenkins@jenkins.osmocom.org> References: <1761023395.356.1523864046386.JavaMail.jenkins@jenkins.osmocom.org> Message-ID: <1196581483.369.1523878585508.JavaMail.jenkins@jenkins.osmocom.org> See From jenkins at lists.osmocom.org Mon Apr 16 11:38:45 2018 From: jenkins at lists.osmocom.org (jenkins at lists.osmocom.org) Date: Mon, 16 Apr 2018 11:38:45 +0000 (UTC) Subject: =?UTF-8?Q?Build_failed_in_Jenkins:_master-osmo-pcu_=C2=BB_?= =?UTF-8?Q?master,osmocom-master-debian9,lc15,True_#387?= In-Reply-To: <1133161058.363.1523878028007.JavaMail.jenkins@jenkins.osmocom.org> References: <1133161058.363.1523878028007.JavaMail.jenkins@jenkins.osmocom.org> Message-ID: <2038748291.370.1523878725146.JavaMail.jenkins@jenkins.osmocom.org> See ------------------------------------------ Started by upstream project "master-osmo-pcu" build number 387 originally caused by: Started by user laforge Building remotely on build2-deb9build-ansible (ttcn3 osmo-gsm-tester-build osmocom-gerrit-debian9 osmocom-master-debian9 coverity) in workspace > git rev-parse --is-inside-work-tree # timeout=10 Fetching changes from the remote Git repository > git config remote.origin.url git://git.osmocom.org/osmo-pcu # timeout=10 Fetching upstream changes from git://git.osmocom.org/osmo-pcu > git --version # timeout=10 > git fetch --tags --progress git://git.osmocom.org/osmo-pcu +refs/heads/*:refs/remotes/origin/* Checking out Revision 33c52b6271677bbbbc44f70fd7f10270e4a2c06f (refs/remotes/origin/master) > git config core.sparsecheckout # timeout=10 > git checkout -f 33c52b6271677bbbbc44f70fd7f10270e4a2c06f Commit message: "tbf: add frame number to log output" > git rev-list --no-walk 33c52b6271677bbbbc44f70fd7f10270e4a2c06f # timeout=10 [True] $ /bin/sh -xe /tmp/jenkins1301433586374776915.sh + ./contrib/jenkins.sh + [ -z make ] + base= + deps= + inst= + export deps inst + osmo-clean-workspace.sh + chmod -R +w . + git checkout -f HEAD + git clean -dxf Skipping repository deps/libosmocore Skipping repository deps/layer1-headers + [ -d ] + git_clean + repos= + [ ! -d ] + [ ! -d ] + git -C checkout -f HEAD + git -C clean -dxf + git_clean + repos= + [ ! -d ] + [ ! -d ] + git -C checkout -f HEAD + git -C clean -dxf + [ -d layer1-headers ] + mkdir mkdir: cannot create directory ?: File exists + true + PCU_CONFIG= + [ lc15 = sysmo ] + [ lc15 = lc15 ] + PCU_CONFIG= --enable-lc15bts-phy --with-litecell15= + cd + osmo-layer1-headers.sh lc15 master + uri=https://gitlab.com/nrw_litecell15/litecell15-fw + version=origin/nrw/litecell15 + [ -n master ] + [ master != master ] + test -d layer1-headers + cd layer1-headers + git fetch origin fatal: unable to access 'https://gitlab.com/nrw_litecell15/litecell15-fw/': The requested URL returned error: 500 Build step 'Execute shell' marked build as failure [WARNINGS]Skipping publisher since build result is FAILURE From jenkins at lists.osmocom.org Mon Apr 16 11:38:47 2018 From: jenkins at lists.osmocom.org (jenkins at lists.osmocom.org) Date: Mon, 16 Apr 2018 11:38:47 +0000 (UTC) Subject: =?UTF-8?Q?Build_failed_in_Jenkins:_master-osmo-pcu_=C2=BB_origin/nrw?= =?UTF-8?Q?/litecell15-next,osmocom-master-debian9,lc15,True_#387?= In-Reply-To: <2145997243.364.1523878030900.JavaMail.jenkins@jenkins.osmocom.org> References: <2145997243.364.1523878030900.JavaMail.jenkins@jenkins.osmocom.org> Message-ID: <1182980091.371.1523878727273.JavaMail.jenkins@jenkins.osmocom.org> See ------------------------------------------ Started by upstream project "master-osmo-pcu" build number 387 originally caused by: Started by user laforge Building remotely on build2-deb9build-ansible (ttcn3 osmo-gsm-tester-build osmocom-gerrit-debian9 osmocom-master-debian9 coverity) in workspace > git rev-parse --is-inside-work-tree # timeout=10 Fetching changes from the remote Git repository > git config remote.origin.url git://git.osmocom.org/osmo-pcu # timeout=10 Fetching upstream changes from git://git.osmocom.org/osmo-pcu > git --version # timeout=10 > git fetch --tags --progress git://git.osmocom.org/osmo-pcu +refs/heads/*:refs/remotes/origin/* Checking out Revision 33c52b6271677bbbbc44f70fd7f10270e4a2c06f (refs/remotes/origin/master) > git config core.sparsecheckout # timeout=10 > git checkout -f 33c52b6271677bbbbc44f70fd7f10270e4a2c06f Commit message: "tbf: add frame number to log output" > git rev-list --no-walk 33c52b6271677bbbbc44f70fd7f10270e4a2c06f # timeout=10 [True] $ /bin/sh -xe /tmp/jenkins791177603139680811.sh + ./contrib/jenkins.sh + [ -z make ] + base= + deps= + inst= + export deps inst + osmo-clean-workspace.sh + chmod -R +w . + git checkout -f HEAD + git clean -dxf Skipping repository deps/libosmocore Skipping repository deps/layer1-headers + [ -d ] + git_clean + repos= + [ ! -d ] + [ ! -d ] + git -C checkout -f HEAD + git -C clean -dxf + git_clean + repos= + [ ! -d ] + [ ! -d ] + git -C checkout -f HEAD + git -C clean -dxf + [ -d layer1-headers ] + mkdir mkdir: cannot create directory ?: File exists + true + PCU_CONFIG= + [ lc15 = sysmo ] + [ lc15 = lc15 ] + PCU_CONFIG= --enable-lc15bts-phy --with-litecell15= + cd + osmo-layer1-headers.sh lc15 origin/nrw/litecell15-next + uri=https://gitlab.com/nrw_litecell15/litecell15-fw + version=origin/nrw/litecell15 + [ -n origin/nrw/litecell15-next ] + [ origin/nrw/litecell15-next != master ] + version=origin/nrw/litecell15-next + test -d layer1-headers + cd layer1-headers + git fetch origin fatal: unable to access 'https://gitlab.com/nrw_litecell15/litecell15-fw/': The requested URL returned error: 500 Build step 'Execute shell' marked build as failure [WARNINGS]Skipping publisher since build result is FAILURE From gerrit-no-reply at lists.osmocom.org Mon Apr 16 11:40:51 2018 From: gerrit-no-reply at lists.osmocom.org (Keith Whyte) Date: Mon, 16 Apr 2018 11:40:51 +0000 Subject: [PATCH] osmo-bsc[master]: Cosmetic: Fix typo: Siganlling->Signalling Message-ID: Review at https://gerrit.osmocom.org/7819 Cosmetic: Fix typo: Siganlling->Signalling Change-Id: I92b39eebfba396ee7690e99de09ee20593b7139d --- M src/osmo-bsc/osmo_bsc_main.c M tests/handover/handover_test.c 2 files changed, 2 insertions(+), 2 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-bsc refs/changes/19/7819/1 diff --git a/src/osmo-bsc/osmo_bsc_main.c b/src/osmo-bsc/osmo_bsc_main.c index 89d0d02..db6bcdb 100644 --- a/src/osmo-bsc/osmo_bsc_main.c +++ b/src/osmo-bsc/osmo_bsc_main.c @@ -305,7 +305,7 @@ }, [DRSL] = { .name = "DRSL", - .description = "A-bis Radio Siganlling Link (RSL)", + .description = "A-bis Radio Signalling Link (RSL)", .color = "\033[1;35m", .enabled = 1, .loglevel = LOGL_NOTICE, }, diff --git a/tests/handover/handover_test.c b/tests/handover/handover_test.c index ab32a29..82afbe5 100644 --- a/tests/handover/handover_test.c +++ b/tests/handover/handover_test.c @@ -1323,7 +1323,7 @@ }, [DRSL] = { .name = "DRSL", - .description = "A-bis Radio Siganlling Link (RSL)", + .description = "A-bis Radio Signalling Link (RSL)", .color = "\033[1;35m", .enabled = 1, .loglevel = LOGL_DEBUG, }, -- To view, visit https://gerrit.osmocom.org/7819 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I92b39eebfba396ee7690e99de09ee20593b7139d Gerrit-PatchSet: 1 Gerrit-Project: osmo-bsc Gerrit-Branch: master Gerrit-Owner: Keith Whyte From gerrit-no-reply at lists.osmocom.org Mon Apr 16 11:43:30 2018 From: gerrit-no-reply at lists.osmocom.org (Stefan Sperling) Date: Mon, 16 Apr 2018 11:43:30 +0000 Subject: [PATCH] openbsc[master]: ensure that acc_ramp_init() is only called once Message-ID: Review at https://gerrit.osmocom.org/7820 ensure that acc_ramp_init() is only called once There are plans to register signal handlers in acc_ramp_init(). Once we do that, the acc_ramp_init() function should only be called once to avoid duplicate signal handlers on the handler list. However, the acc_ramp_init() function currently serves a dual-purpose: 1) Initialize the acc_ramp structure for a bts 2) Enable or disable ACC ramping Add new functions to support use case 2, and call acc_ramp_init() just once while reading the configuration file. The VTY commands which enable/disable ACC ramping use the new APIs instead. Also, rename acc_ramp_start() to acc_ramp_trigger() and tweak its semantics so that it can always be called regardless of what the current configuration settings are. This prepares us for triggering ACC ramping upon events other than "RSL link-up". This is a port of osmo-bsc commit ea33341cf7b52d432be98f2280b4a5f3129ef667. Also remove a call to acc_ramp_init() which should have been removed in openbsc commit ebc1e39d919f5f919cb176ee9c6cbbccc8d620b1 Change-Id: Iadd25016e6478a9dc5da1db42e6192ce0f5cc746 Related: OS2591 --- M openbsc/include/openbsc/acc_ramp.h M openbsc/src/libbsc/acc_ramp.c M openbsc/src/libbsc/bsc_init.c M openbsc/src/libbsc/bsc_vty.c 4 files changed, 43 insertions(+), 35 deletions(-) git pull ssh://gerrit.osmocom.org:29418/openbsc refs/changes/20/7820/1 diff --git a/openbsc/include/openbsc/acc_ramp.h b/openbsc/include/openbsc/acc_ramp.h index cb063bf..efb12b0 100644 --- a/openbsc/include/openbsc/acc_ramp.h +++ b/openbsc/include/openbsc/acc_ramp.h @@ -79,6 +79,18 @@ }; /*! + * Enable or disable ACC ramping. + * When enabled, ramping begins once acc_ramp_start() is called. + * When disabled, an ACC ramping process in progress will continue + * unless acc_ramp_abort() is called as well. + * \param[in] acc_ramp Pointer to acc_ramp structure. + */ +static inline void acc_ramp_set_enabled(struct acc_ramp *acc_ramp, bool enable) +{ + acc_ramp->acc_ramping_enabled = enable; +} + +/*! * Return true if ACC ramping is currently enabled, else false. * \param[in] acc_ramp Pointer to acc_ramp structure. */ @@ -141,9 +153,9 @@ rach_control->t3 |= acc_ramp_get_barred_t3(acc_ramp); } -void acc_ramp_init(struct acc_ramp *acc_ramp, bool enable, struct gsm_bts *bts); +void acc_ramp_init(struct acc_ramp *acc_ramp, struct gsm_bts *bts); int acc_ramp_set_step_size(struct acc_ramp *acc_ramp, unsigned int step_size); int acc_ramp_set_step_interval(struct acc_ramp *acc_ramp, unsigned int step_interval); void acc_ramp_set_step_interval_dynamic(struct acc_ramp *acc_ramp); -void acc_ramp_start(struct acc_ramp *acc_ramp); +void acc_ramp_trigger(struct acc_ramp *acc_ramp); void acc_ramp_abort(struct acc_ramp *acc_ramp); diff --git a/openbsc/src/libbsc/acc_ramp.c b/openbsc/src/libbsc/acc_ramp.c index 9b3f90b..e887723 100644 --- a/openbsc/src/libbsc/acc_ramp.c +++ b/openbsc/src/libbsc/acc_ramp.c @@ -140,28 +140,20 @@ * Initialize an acc_ramp data structure. * Storage for this structure must be provided by the caller. * - * If ACC ramping is enabled, all ACCs are denied by default. - * A subsequent call to acc_ramp_start() will begin the ramping process. - * If ACC ramping is disabled, all ACCs will be allowed by default, - * and there is no need to do anything else. + * By default, ACC ramping is disabled and all ACCs are allowed. * * \param[in] acc_ramp Pointer to acc_ramp structure to be initialized. - * \param[in] enable Indicates whether ACC ramping should be enabled or disabled. * \param[in] bts BTS which uses this ACC ramp data structure. */ -void acc_ramp_init(struct acc_ramp *acc_ramp, bool enable, struct gsm_bts *bts) +void acc_ramp_init(struct acc_ramp *acc_ramp, struct gsm_bts *bts) { acc_ramp->bts = bts; - acc_ramp->acc_ramping_enabled = enable; + acc_ramp_set_enabled(acc_ramp, false); acc_ramp->step_size = ACC_RAMP_STEP_SIZE_DEFAULT; acc_ramp->step_interval_sec = ACC_RAMP_STEP_INTERVAL_MIN; acc_ramp->step_interval_is_fixed = false; + allow_all_enabled_accs(acc_ramp); osmo_timer_setup(&acc_ramp->step_timer, do_acc_ramping_step, acc_ramp); - - if (acc_ramp->acc_ramping_enabled) - barr_all_enabled_accs(acc_ramp); - else - allow_all_enabled_accs(acc_ramp); } /*! @@ -211,28 +203,34 @@ } /*! - * Begin the ramping process. Perform at least one ramping step to allow 'step_size' ACCs. - * If 'step_size' is ACC_RAMP_STEP_SIZE_MAX, all ACCs will be allowed immediately. + * Determine if ACC ramping should be started according to configuration, and + * if ACC ramping is enabled, begin the ramping process. + * Perform at least one ramping step to allow 'step_size' ACCs. + * If 'step_size' is ACC_RAMP_STEP_SIZE_MAX, or if ACC ramping is disabled, + * all ACCs will be allowed immediately. * \param[in] acc_ramp Pointer to acc_ramp structure. */ -void acc_ramp_start(struct acc_ramp *acc_ramp) +void acc_ramp_trigger(struct acc_ramp *acc_ramp) { - /* Abort any previously running ramping process. */ + /* Abort any previously running ramping process and allow all available ACCs. */ acc_ramp_abort(acc_ramp); - /* Set all availble ACCs to barred and start ramping up. */ - barr_all_enabled_accs(acc_ramp); - do_acc_ramping_step(acc_ramp); + if (acc_ramp_is_enabled(acc_ramp)) { + /* Set all available ACCs to barred and start ramping up. */ + barr_all_enabled_accs(acc_ramp); + do_acc_ramping_step(acc_ramp); + } } /*! - * Abort the ramping process. If ramping is disabled or has already finished, - * then this function has no effect. + * Abort the ramping process and allow all available ACCs immediately. * \param[in] acc_ramp Pointer to acc_ramp structure. */ void acc_ramp_abort(struct acc_ramp *acc_ramp) { if (osmo_timer_pending(&acc_ramp->step_timer)) osmo_timer_del(&acc_ramp->step_timer); + + allow_all_enabled_accs(acc_ramp); } diff --git a/openbsc/src/libbsc/bsc_init.c b/openbsc/src/libbsc/bsc_init.c index 6147257..120955b 100644 --- a/openbsc/src/libbsc/bsc_init.c +++ b/openbsc/src/libbsc/bsc_init.c @@ -311,19 +311,16 @@ trx->bts->location_area_code, trx->bts->cell_identity, trx->bts->bsic); - /* - * Re-initialize ACC ramping to ensure ACCs are barred/allowed - * according to our current VTY configuration. - */ - acc_ramp_init(&trx->bts->acc_ramp, acc_ramp_is_enabled(&trx->bts->acc_ramp), trx->bts); - if (trx->bts->type == GSM_BTS_TYPE_NOKIA_SITE) { rsl_nokia_si_begin(trx); } - /* Configure ACC ramping before sending system information to BTS. */ - if (acc_ramp_is_enabled(&trx->bts->acc_ramp)) - acc_ramp_start(&trx->bts->acc_ramp); + /* + * Trigger ACC ramping before sending system information to BTS. + * This ensures that RACH control in system information is configured correctly. + */ + acc_ramp_trigger(&trx->bts->acc_ramp); + gsm_bts_trx_set_system_infos(trx); if (trx->bts->type == GSM_BTS_TYPE_NOKIA_SITE) { diff --git a/openbsc/src/libbsc/bsc_vty.c b/openbsc/src/libbsc/bsc_vty.c index f78247b..a076397 100644 --- a/openbsc/src/libbsc/bsc_vty.c +++ b/openbsc/src/libbsc/bsc_vty.c @@ -1655,7 +1655,7 @@ * Initalize bts->acc_ramp here. Else we could segfault while * processing a configuration file with ACC ramping settings. */ - acc_ramp_init(&bts->acc_ramp, false, bts); + acc_ramp_init(&bts->acc_ramp, bts); } else bts = gsm_bts_num(gsmnet, bts_nr); @@ -3042,7 +3042,8 @@ { struct gsm_bts *bts = vty->index; - acc_ramp_init(&bts->acc_ramp, true, bts); + if (!acc_ramp_is_enabled(&bts->acc_ramp)) + acc_ramp_set_enabled(&bts->acc_ramp, true); /* ACC ramping takes effect when the BTS reconnects. */ return CMD_SUCCESS; @@ -3057,7 +3058,7 @@ if (acc_ramp_is_enabled(&bts->acc_ramp)) { acc_ramp_abort(&bts->acc_ramp); - acc_ramp_init(&bts->acc_ramp, false, bts); + acc_ramp_set_enabled(&bts->acc_ramp, false); gsm_bts_set_system_infos(bts); } -- To view, visit https://gerrit.osmocom.org/7820 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Iadd25016e6478a9dc5da1db42e6192ce0f5cc746 Gerrit-PatchSet: 1 Gerrit-Project: openbsc Gerrit-Branch: master Gerrit-Owner: Stefan Sperling From gerrit-no-reply at lists.osmocom.org Mon Apr 16 11:53:03 2018 From: gerrit-no-reply at lists.osmocom.org (Stefan Sperling) Date: Mon, 16 Apr 2018 11:53:03 +0000 Subject: [PATCH] openbsc[master]: trigger acc ramping based on trx rf-locked state Message-ID: Review at https://gerrit.osmocom.org/7821 trigger acc ramping based on trx rf-locked state Make ACC ramping listen to network management signals and trigger or abort ACC ramping based on the RF locked state of TRX 0. This is a port of osmo-bsc commit 60ecdeffecf3db4ad044c5ee0185f384d1b16eb3 Change-Id: I4124f1da3dadec003de45c1da8435506ee8f0a34 --- M openbsc/src/libbsc/acc_ramp.c M openbsc/src/libbsc/bsc_vty.c 2 files changed, 49 insertions(+), 1 deletion(-) git pull ssh://gerrit.osmocom.org:29418/openbsc refs/changes/21/7821/1 diff --git a/openbsc/src/libbsc/acc_ramp.c b/openbsc/src/libbsc/acc_ramp.c index e887723..fd2c715 100644 --- a/openbsc/src/libbsc/acc_ramp.c +++ b/openbsc/src/libbsc/acc_ramp.c @@ -26,6 +26,7 @@ #include #include #include +#include /* * Check if an ACC has been permanently barred for a BTS, @@ -136,6 +137,49 @@ osmo_timer_schedule(&acc_ramp->step_timer, get_next_step_interval(acc_ramp), 0); } +/* Implements osmo_signal_cbfn() -- trigger or abort ACC ramping upon changes RF lock state. */ +static int acc_ramp_nm_sig_cb(unsigned int subsys, unsigned int signal, void *handler_data, void *signal_data) +{ + struct nm_statechg_signal_data *nsd = signal_data; + struct acc_ramp *acc_ramp = handler_data; + struct gsm_bts_trx *trx = NULL; + + if (signal != S_NM_STATECHG_ADM) + return 0; + + if (nsd->obj_class != NM_OC_RADIO_CARRIER) + return 0; + + trx = nsd->obj; + + /* We only care about state changes of the first TRX. */ + if (trx->nr != 0) + return 0; + + /* RSL must already be up. We cannot send RACH system information to the BTS otherwise. */ + if (trx->rsl_link == NULL) + return 0; + + /* Trigger or abort ACC ramping based on the new 'RF lock' state of this TRX. */ + switch (nsd->new_state->administrative) { + case NM_STATE_UNLOCKED: + acc_ramp_trigger(acc_ramp); + break; + case NM_STATE_LOCKED: + case NM_STATE_SHUTDOWN: + acc_ramp_abort(acc_ramp); + break; + case NM_STATE_NULL: + break; + default: + LOGP(DRSL, LOGL_NOTICE, "(bts=%d) ACC RAMP: unrecognized administrative state '0x%x' reported for TRX 0\n", + acc_ramp->bts->nr, nsd->new_state->administrative); + break; + } + + return 0; +} + /*! * Initialize an acc_ramp data structure. * Storage for this structure must be provided by the caller. @@ -154,6 +198,7 @@ acc_ramp->step_interval_is_fixed = false; allow_all_enabled_accs(acc_ramp); osmo_timer_setup(&acc_ramp->step_timer, do_acc_ramping_step, acc_ramp); + osmo_signal_register_handler(SS_NM, acc_ramp_nm_sig_cb, acc_ramp); } /*! diff --git a/openbsc/src/libbsc/bsc_vty.c b/openbsc/src/libbsc/bsc_vty.c index a076397..c71ea4a 100644 --- a/openbsc/src/libbsc/bsc_vty.c +++ b/openbsc/src/libbsc/bsc_vty.c @@ -3045,7 +3045,10 @@ if (!acc_ramp_is_enabled(&bts->acc_ramp)) acc_ramp_set_enabled(&bts->acc_ramp, true); - /* ACC ramping takes effect when the BTS reconnects. */ + /* + * ACC ramping takes effect either when the BTS reconnects RSL, + * or when RF administrative state changes to 'unlocked'. + */ return CMD_SUCCESS; } -- To view, visit https://gerrit.osmocom.org/7821 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I4124f1da3dadec003de45c1da8435506ee8f0a34 Gerrit-PatchSet: 1 Gerrit-Project: openbsc Gerrit-Branch: master Gerrit-Owner: Stefan Sperling From gerrit-no-reply at lists.osmocom.org Mon Apr 16 11:56:01 2018 From: gerrit-no-reply at lists.osmocom.org (Stefan Sperling) Date: Mon, 16 Apr 2018 11:56:01 +0000 Subject: [PATCH] openbsc[master]: rename helper functions in the acc ramp code to avoid confusion Message-ID: Review at https://gerrit.osmocom.org/7822 rename helper functions in the acc ramp code to avoid confusion The word 'enabled' was used in two contexts: Whether ACC ramp is enabled as a feature, and whether a particular access control class is permantly allowed/disallowed via VTY configuration. Rename some helper functions to avoid the use of the word 'enabled' in the latter context. This is a port of osmo-bsc commit 0ad90b39b9e638b5e3d926c9261d26e777ca478c Change-Id: Ic1e5a1f969823cfbfb9fe9e959db87c1717c3a83 Related: OS#2591 --- M openbsc/src/libbsc/acc_ramp.c 1 file changed, 13 insertions(+), 13 deletions(-) git pull ssh://gerrit.osmocom.org:29418/openbsc refs/changes/22/7822/1 diff --git a/openbsc/src/libbsc/acc_ramp.c b/openbsc/src/libbsc/acc_ramp.c index fd2c715..03ba80b 100644 --- a/openbsc/src/libbsc/acc_ramp.c +++ b/openbsc/src/libbsc/acc_ramp.c @@ -32,12 +32,12 @@ * Check if an ACC has been permanently barred for a BTS, * e.g. with the 'rach access-control-class' VTY command. */ -static bool acc_is_enabled(struct gsm_bts *bts, unsigned int acc) +static bool acc_is_permanently_barred(struct gsm_bts *bts, unsigned int acc) { OSMO_ASSERT(acc >= 0 && acc <= 9); if (acc == 8 || acc == 9) - return (bts->si_common.rach_control.t2 & (1 << (acc - 8))) == 0; - return (bts->si_common.rach_control.t3 & (1 << (acc))) == 0; + return (bts->si_common.rach_control.t2 & (1 << (acc - 8))); + return (bts->si_common.rach_control.t3 & (1 << (acc))); } static void allow_one_acc(struct acc_ramp *acc_ramp, unsigned int acc) @@ -56,20 +56,20 @@ acc_ramp->barred_accs |= (1 << acc); } -static void barr_all_enabled_accs(struct acc_ramp *acc_ramp) +static void barr_all_accs(struct acc_ramp *acc_ramp) { unsigned int acc; for (acc = 0; acc < 10; acc++) { - if (acc_is_enabled(acc_ramp->bts, acc)) + if (!acc_is_permanently_barred(acc_ramp->bts, acc)) barr_one_acc(acc_ramp, acc); } } -static void allow_all_enabled_accs(struct acc_ramp *acc_ramp) +static void allow_all_accs(struct acc_ramp *acc_ramp) { unsigned int acc; for (acc = 0; acc < 10; acc++) { - if (acc_is_enabled(acc_ramp->bts, acc)) + if (!acc_is_permanently_barred(acc_ramp->bts, acc)) allow_one_acc(acc_ramp, acc); } } @@ -102,7 +102,7 @@ /* Shortcut in case we only do one ramping step. */ if (acc_ramp->step_size == ACC_RAMP_STEP_SIZE_MAX) { - allow_all_enabled_accs(acc_ramp); + allow_all_accs(acc_ramp); gsm_bts_set_system_infos(acc_ramp->bts); return; } @@ -113,14 +113,14 @@ if (idx > 0) { /* One of ACC0-ACC7 is still bared. */ unsigned int acc = idx - 1; - if (acc_is_enabled(acc_ramp->bts, acc)) + if (!acc_is_permanently_barred(acc_ramp->bts, acc)) allow_one_acc(acc_ramp, acc); } else { idx = ffs(acc_ramp_get_barred_t2(acc_ramp)); if (idx == 1 || idx == 2) { /* ACC8 or ACC9 is still barred. */ unsigned int acc = idx - 1 + 8; - if (acc_is_enabled(acc_ramp->bts, acc)) + if (!acc_is_permanently_barred(acc_ramp->bts, acc)) allow_one_acc(acc_ramp, acc); } else { /* All ACCs are now allowed. */ @@ -196,7 +196,7 @@ acc_ramp->step_size = ACC_RAMP_STEP_SIZE_DEFAULT; acc_ramp->step_interval_sec = ACC_RAMP_STEP_INTERVAL_MIN; acc_ramp->step_interval_is_fixed = false; - allow_all_enabled_accs(acc_ramp); + allow_all_accs(acc_ramp); osmo_timer_setup(&acc_ramp->step_timer, do_acc_ramping_step, acc_ramp); osmo_signal_register_handler(SS_NM, acc_ramp_nm_sig_cb, acc_ramp); } @@ -262,7 +262,7 @@ if (acc_ramp_is_enabled(acc_ramp)) { /* Set all available ACCs to barred and start ramping up. */ - barr_all_enabled_accs(acc_ramp); + barr_all_accs(acc_ramp); do_acc_ramping_step(acc_ramp); } } @@ -276,6 +276,6 @@ if (osmo_timer_pending(&acc_ramp->step_timer)) osmo_timer_del(&acc_ramp->step_timer); - allow_all_enabled_accs(acc_ramp); + allow_all_accs(acc_ramp); } -- To view, visit https://gerrit.osmocom.org/7822 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Ic1e5a1f969823cfbfb9fe9e959db87c1717c3a83 Gerrit-PatchSet: 1 Gerrit-Project: openbsc Gerrit-Branch: master Gerrit-Owner: Stefan Sperling From gerrit-no-reply at lists.osmocom.org Mon Apr 16 11:57:34 2018 From: gerrit-no-reply at lists.osmocom.org (Stefan Sperling) Date: Mon, 16 Apr 2018 11:57:34 +0000 Subject: [PATCH] openbsc[master]: trigger acc ramping on state-changed-event reports Message-ID: Review at https://gerrit.osmocom.org/7823 trigger acc ramping on state-changed-event reports Trigger ACC ramping not only when an Administrative State Change ACK is received from a BTS, but also when an administrative state change is reported for TRX 0 in a State Changed Event Report. This should allow ACC ramping to work with any BTS which reports an administrative state change to 'unlock' using either of these OML messages. Tested with a sysmobts and a nanobts. The sysmobts only reports TRX locked/unlock changes in Administrative State Change ACKs, not via State Changed Event Reports. The nanobts is known to send both of these OML messages in quick succession, so do not re-trigger ramping if it's already in progress. This is a port of osmo-bsc commit b06c7a253752ecb67fd20cdf0b069688b561af0e Change-Id: I6443635b822b6cd776f6dc8a6ee73ab09e865b04 Related: OS#2591 --- M openbsc/src/libbsc/acc_ramp.c 1 file changed, 10 insertions(+), 2 deletions(-) git pull ssh://gerrit.osmocom.org:29418/openbsc refs/changes/23/7823/1 diff --git a/openbsc/src/libbsc/acc_ramp.c b/openbsc/src/libbsc/acc_ramp.c index 03ba80b..a866458 100644 --- a/openbsc/src/libbsc/acc_ramp.c +++ b/openbsc/src/libbsc/acc_ramp.c @@ -144,7 +144,8 @@ struct acc_ramp *acc_ramp = handler_data; struct gsm_bts_trx *trx = NULL; - if (signal != S_NM_STATECHG_ADM) + /* Handled signals map to an Administrative State Change ACK, or a State Changed Event Report. */ + if (signal != S_NM_STATECHG_ADM && signal != S_NM_STATECHG_OPER) return 0; if (nsd->obj_class != NM_OC_RADIO_CARRIER) @@ -163,7 +164,14 @@ /* Trigger or abort ACC ramping based on the new 'RF lock' state of this TRX. */ switch (nsd->new_state->administrative) { case NM_STATE_UNLOCKED: - acc_ramp_trigger(acc_ramp); + /* + * Do not re-trigger ACC ramping if ramping is already in progress. + * A BTS might send several "unlock" change events: One in the Administrative + * State Change ACK, and/or another in a State Changed Event Report. + * For instance, the nanobts is known to send both. + */ + if (!osmo_timer_pending(&acc_ramp->step_timer)) + acc_ramp_trigger(acc_ramp); break; case NM_STATE_LOCKED: case NM_STATE_SHUTDOWN: -- To view, visit https://gerrit.osmocom.org/7823 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I6443635b822b6cd776f6dc8a6ee73ab09e865b04 Gerrit-PatchSet: 1 Gerrit-Project: openbsc Gerrit-Branch: master Gerrit-Owner: Stefan Sperling From gerrit-no-reply at lists.osmocom.org Mon Apr 16 11:59:37 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Mon, 16 Apr 2018 11:59:37 +0000 Subject: [MERGED] osmo-bsc[master]: bsc_nat: ctrl: Fix crash on receveing bsc reply In-Reply-To: References: Message-ID: Pau Espin Pedrol has submitted this change and it was merged. Change subject: bsc_nat: ctrl: Fix crash on receveing bsc reply ...................................................................... bsc_nat: ctrl: Fix crash on receveing bsc reply Since libosmocore 7c0031fc8063771e604976233fb7b46d2b85c077, the cmd param passed to handlers in ctrl_handle_msg is always freed afterwards, thus it is owned by the same function. Avoid keeping it alive and accessing it later when it has already been freed. Related: OS#3157 Change-Id: I764917f641b170597e405f1865b0f7b94bae1597 --- M src/osmo-bsc_nat/bsc_nat_ctrl.c 1 file changed, 8 insertions(+), 2 deletions(-) Approvals: Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/src/osmo-bsc_nat/bsc_nat_ctrl.c b/src/osmo-bsc_nat/bsc_nat_ctrl.c index 7df3ca3..75c0dfa 100644 --- a/src/osmo-bsc_nat/bsc_nat_ctrl.c +++ b/src/osmo-bsc_nat/bsc_nat_ctrl.c @@ -80,7 +80,6 @@ { llist_del(&pending->list_entry); osmo_timer_del(&pending->timeout); - talloc_free(pending->cmd); talloc_free(pending); } @@ -276,8 +275,15 @@ cmd->reply = "Sending failed"; goto err; } + + /* caller owns cmd param and will destroy it after we return */ + pending->cmd = ctrl_cmd_cpy(pending, cmd); + if (!pending->cmd) { + cmd->reply = "Could not answer command"; + goto err; + } cmd->ccon->closed_cb = ctrl_conn_closed_cb; - pending->cmd = cmd; + pending->cmd->ccon = cmd->ccon; /* Setup the timeout */ osmo_timer_setup(&pending->timeout, pending_timeout_cb, -- To view, visit https://gerrit.osmocom.org/7765 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: I764917f641b170597e405f1865b0f7b94bae1597 Gerrit-PatchSet: 2 Gerrit-Project: osmo-bsc Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Pau Espin Pedrol From gerrit-no-reply at lists.osmocom.org Mon Apr 16 11:59:42 2018 From: gerrit-no-reply at lists.osmocom.org (Stefan Sperling) Date: Mon, 16 Apr 2018 11:59:42 +0000 Subject: [PATCH] openbsc[master]: only trigger acc ramping if trx 0 is usable and unlocked Message-ID: Review at https://gerrit.osmocom.org/7824 only trigger acc ramping if trx 0 is usable and unlocked Starting an ACC ramping process while TRX 0 is unusable or locked is pointless. For instance, after loading a config with 'rf_locked 1' for trx 0, the ramping process was started as soon as the BTS established RSL, even though the air interface was still down. ACC ramping should instead be triggered once TRX 0 is unlocked. This is a port of osmo-bsc commit 4d3d2436cdf3296ddc110be4022dc2ec13d3eb86 Related: OS#2591 Change-Id: I2cc9c1b8193546ea04ea5beb3751c2206f0215f2 --- M openbsc/src/libbsc/acc_ramp.c 1 file changed, 9 insertions(+), 4 deletions(-) git pull ssh://gerrit.osmocom.org:29418/openbsc refs/changes/24/7824/1 diff --git a/openbsc/src/libbsc/acc_ramp.c b/openbsc/src/libbsc/acc_ramp.c index a866458..6e64109 100644 --- a/openbsc/src/libbsc/acc_ramp.c +++ b/openbsc/src/libbsc/acc_ramp.c @@ -26,6 +26,7 @@ #include #include #include +#include #include /* @@ -257,7 +258,7 @@ /*! * Determine if ACC ramping should be started according to configuration, and - * if ACC ramping is enabled, begin the ramping process. + * begin the ramping process if the necessary conditions are present. * Perform at least one ramping step to allow 'step_size' ACCs. * If 'step_size' is ACC_RAMP_STEP_SIZE_MAX, or if ACC ramping is disabled, * all ACCs will be allowed immediately. @@ -269,9 +270,13 @@ acc_ramp_abort(acc_ramp); if (acc_ramp_is_enabled(acc_ramp)) { - /* Set all available ACCs to barred and start ramping up. */ - barr_all_accs(acc_ramp); - do_acc_ramping_step(acc_ramp); + struct gsm_bts_trx *trx0 = gsm_bts_trx_by_nr(acc_ramp->bts, 0); + /* TRX 0 should be usable and unlocked, otherwise starting ACC ramping is pointless. */ + if (trx0 && trx_is_usable(trx0) && trx0->mo.nm_state.administrative == NM_STATE_UNLOCKED) { + /* Set all available ACCs to barred and start ramping up. */ + barr_all_accs(acc_ramp); + do_acc_ramping_step(acc_ramp); + } } } -- To view, visit https://gerrit.osmocom.org/7824 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I2cc9c1b8193546ea04ea5beb3751c2206f0215f2 Gerrit-PatchSet: 1 Gerrit-Project: openbsc Gerrit-Branch: master Gerrit-Owner: Stefan Sperling From gerrit-no-reply at lists.osmocom.org Mon Apr 16 12:00:12 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Mon, 16 Apr 2018 12:00:12 +0000 Subject: osmo-bsc[master]: Cosmetic: Fix typo: Siganlling->Signalling In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+1 -- To view, visit https://gerrit.osmocom.org/7819 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I92b39eebfba396ee7690e99de09ee20593b7139d Gerrit-PatchSet: 1 Gerrit-Project: osmo-bsc Gerrit-Branch: master Gerrit-Owner: Keith Whyte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Pau Espin Pedrol Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Mon Apr 16 12:01:31 2018 From: gerrit-no-reply at lists.osmocom.org (Stefan Sperling) Date: Mon, 16 Apr 2018 12:01:31 +0000 Subject: [PATCH] openbsc[master]: fix handling of state changes in acc ramping Message-ID: Review at https://gerrit.osmocom.org/7825 fix handling of state changes in acc ramping Take both the operative and administrative states into account when deciding whether to start ACC ramping, and examine old/new state values to avoid triggering ramping for a no-op state change. This requires a fix to gsm_trx_lock_rf(): This function overwrote the old administrative state of a trx before enqueuing a state change request towards the BTS. The BTS will confirm this request with an ACK, at which time a signal is generated which the ACC ramp code listens to. We must not overwrite the old state value until the signal has been handled, otherwise the signal handler cannot tell what the old state was. Tested with a virtphy setup, nanobts, and osmo-bts. This is a port of osmo-bsc commit cda994edb20d24032d6ab4e916d0e9411671cfc0 Change-Id: I235d2c5fa962f2f338e77d0c11502921b37f4c36 Related: OS#2591 --- M openbsc/src/libbsc/abis_nm.c M openbsc/src/libbsc/acc_ramp.c M openbsc/src/libbsc/bsc_init.c 3 files changed, 113 insertions(+), 37 deletions(-) git pull ssh://gerrit.osmocom.org:29418/openbsc refs/changes/25/7825/1 diff --git a/openbsc/src/libbsc/abis_nm.c b/openbsc/src/libbsc/abis_nm.c index 8eadfa8..cbb255a 100644 --- a/openbsc/src/libbsc/abis_nm.c +++ b/openbsc/src/libbsc/abis_nm.c @@ -2797,13 +2797,17 @@ { uint8_t new_state = locked ? NM_STATE_LOCKED : NM_STATE_UNLOCKED; - LOGP(DNM, LOGL_NOTICE, "(bts=%d,trx=%d) Changing adm. state %s -> %s [%s]\n", trx->bts->nr, trx->nr, + + if (!trx->bts || !trx->bts->oml_link) { + /* Set initial state which will be sent when BTS connects. */ + trx->mo.nm_state.administrative = new_state; + return; + } + + LOGP(DNM, LOGL_NOTICE, "(bts=%d,trx=%d) Requesting administrative state change %s -> %s [%s]\n", + trx->bts->nr, trx->nr, get_value_string(abis_nm_adm_state_names, trx->mo.nm_state.administrative), get_value_string(abis_nm_adm_state_names, new_state), reason); - - trx->mo.nm_state.administrative = new_state; - if (!trx->bts || !trx->bts->oml_link) - return; abis_nm_chg_adm_state(trx->bts, NM_OC_RADIO_CARRIER, trx->bts->bts_nr, trx->nr, 0xff, diff --git a/openbsc/src/libbsc/acc_ramp.c b/openbsc/src/libbsc/acc_ramp.c index 6e64109..c90d087 100644 --- a/openbsc/src/libbsc/acc_ramp.c +++ b/openbsc/src/libbsc/acc_ramp.c @@ -28,6 +28,7 @@ #include #include #include +#include /* * Check if an ACC has been permanently barred for a BTS, @@ -144,6 +145,7 @@ struct nm_statechg_signal_data *nsd = signal_data; struct acc_ramp *acc_ramp = handler_data; struct gsm_bts_trx *trx = NULL; + bool trigger_ramping = false, abort_ramping = false; /* Handled signals map to an Administrative State Change ACK, or a State Changed Event Report. */ if (signal != S_NM_STATECHG_ADM && signal != S_NM_STATECHG_OPER) @@ -154,37 +156,109 @@ trx = nsd->obj; + LOGP(DRSL, LOGL_DEBUG, "(bts=%d,trx=%d) ACC RAMP: administrative state %s -> %s\n", + acc_ramp->bts->nr, trx->nr, + get_value_string(abis_nm_adm_state_names, nsd->old_state->administrative), + get_value_string(abis_nm_adm_state_names, nsd->new_state->administrative)); + LOGP(DRSL, LOGL_DEBUG, "(bts=%d,trx=%d) ACC RAMP: operational state %s -> %s\n", + acc_ramp->bts->nr, trx->nr, + abis_nm_opstate_name(nsd->old_state->operational), + abis_nm_opstate_name(nsd->new_state->operational)); + /* We only care about state changes of the first TRX. */ if (trx->nr != 0) return 0; /* RSL must already be up. We cannot send RACH system information to the BTS otherwise. */ - if (trx->rsl_link == NULL) + if (trx->rsl_link == NULL) { + LOGP(DRSL, LOGL_DEBUG, "(bts=%d,trx=%d) ACC RAMP: ignoring state change because RSL link is down\n", + acc_ramp->bts->nr, trx->nr); return 0; - - /* Trigger or abort ACC ramping based on the new 'RF lock' state of this TRX. */ - switch (nsd->new_state->administrative) { - case NM_STATE_UNLOCKED: - /* - * Do not re-trigger ACC ramping if ramping is already in progress. - * A BTS might send several "unlock" change events: One in the Administrative - * State Change ACK, and/or another in a State Changed Event Report. - * For instance, the nanobts is known to send both. - */ - if (!osmo_timer_pending(&acc_ramp->step_timer)) - acc_ramp_trigger(acc_ramp); - break; - case NM_STATE_LOCKED: - case NM_STATE_SHUTDOWN: - acc_ramp_abort(acc_ramp); - break; - case NM_STATE_NULL: - break; - default: - LOGP(DRSL, LOGL_NOTICE, "(bts=%d) ACC RAMP: unrecognized administrative state '0x%x' reported for TRX 0\n", - acc_ramp->bts->nr, nsd->new_state->administrative); - break; } + + /* Trigger or abort ACC ramping based on the new state of this TRX. */ + if (nsd->old_state->administrative != nsd->new_state->administrative) { + switch (nsd->new_state->administrative) { + case NM_STATE_UNLOCKED: + if (nsd->old_state->operational != nsd->new_state->operational) { + /* + * Administrative and operational state have both changed. + * Trigger ramping only if TRX 0 will be both enabled and unlocked. + */ + if (nsd->new_state->operational == NM_OPSTATE_ENABLED) + trigger_ramping = true; + else + LOGP(DRSL, LOGL_DEBUG, "(bts=%d,trx=%d) ACC RAMP: ignoring state change " + "because TRX is transitioning into operational state '%s'\n", + acc_ramp->bts->nr, trx->nr, + abis_nm_opstate_name(nsd->new_state->operational)); + } else { + /* + * Operational state has not changed. + * Trigger ramping only if TRX 0 is already usable. + */ + if (trx_is_usable(trx)) + trigger_ramping = true; + else + LOGP(DRSL, LOGL_DEBUG, "(bts=%d,trx=%d) ACC RAMP: ignoring state change " + "because TRX is not usable\n", acc_ramp->bts->nr, trx->nr); + } + break; + case NM_STATE_LOCKED: + case NM_STATE_SHUTDOWN: + abort_ramping = true; + break; + case NM_STATE_NULL: + default: + LOGP(DRSL, LOGL_NOTICE, "(bts=%d) ACC RAMP: unrecognized administrative state '0x%x' " + "reported for TRX 0\n", acc_ramp->bts->nr, nsd->new_state->administrative); + break; + } + } + if (nsd->old_state->operational != nsd->new_state->operational) { + switch (nsd->new_state->operational) { + case NM_OPSTATE_ENABLED: + if (nsd->old_state->administrative != nsd->new_state->administrative) { + /* + * Administrative and operational state have both changed. + * Trigger ramping only if TRX 0 will be both enabled and unlocked. + */ + if (nsd->new_state->administrative == NM_STATE_UNLOCKED) + trigger_ramping = true; + else + LOGP(DRSL, LOGL_DEBUG, "(bts=%d,trx=%d) ACC RAMP: ignoring state change " + "because TRX is transitioning into administrative state '%s'\n", + acc_ramp->bts->nr, trx->nr, + get_value_string(abis_nm_adm_state_names, nsd->new_state->administrative)); + } else { + /* + * Administrative state has not changed. + * Trigger ramping only if TRX 0 is already unlocked. + */ + if (trx->mo.nm_state.administrative == NM_STATE_UNLOCKED) + trigger_ramping = true; + else + LOGP(DRSL, LOGL_DEBUG, "(bts=%d,trx=%d) ACC RAMP: ignoring state change " + "because TRX is in administrative state '%s'\n", + acc_ramp->bts->nr, trx->nr, + get_value_string(abis_nm_adm_state_names, trx->mo.nm_state.administrative)); + } + break; + case NM_OPSTATE_DISABLED: + abort_ramping = true; + break; + case NM_OPSTATE_NULL: + default: + LOGP(DRSL, LOGL_NOTICE, "(bts=%d) ACC RAMP: unrecognized operational state '0x%x' " + "reported for TRX 0\n", acc_ramp->bts->nr, nsd->new_state->administrative); + break; + } + } + + if (trigger_ramping) + acc_ramp_trigger(acc_ramp); + else if (abort_ramping) + acc_ramp_abort(acc_ramp); return 0; } @@ -270,13 +344,9 @@ acc_ramp_abort(acc_ramp); if (acc_ramp_is_enabled(acc_ramp)) { - struct gsm_bts_trx *trx0 = gsm_bts_trx_by_nr(acc_ramp->bts, 0); - /* TRX 0 should be usable and unlocked, otherwise starting ACC ramping is pointless. */ - if (trx0 && trx_is_usable(trx0) && trx0->mo.nm_state.administrative == NM_STATE_UNLOCKED) { - /* Set all available ACCs to barred and start ramping up. */ - barr_all_accs(acc_ramp); - do_acc_ramping_step(acc_ramp); - } + /* Set all available ACCs to barred and start ramping up. */ + barr_all_accs(acc_ramp); + do_acc_ramping_step(acc_ramp); } } diff --git a/openbsc/src/libbsc/bsc_init.c b/openbsc/src/libbsc/bsc_init.c index 120955b..21ed2e1 100644 --- a/openbsc/src/libbsc/bsc_init.c +++ b/openbsc/src/libbsc/bsc_init.c @@ -318,8 +318,10 @@ /* * Trigger ACC ramping before sending system information to BTS. * This ensures that RACH control in system information is configured correctly. + * TRX 0 should be usable and unlocked, otherwise starting ACC ramping is pointless. */ - acc_ramp_trigger(&trx->bts->acc_ramp); + if (trx_is_usable(trx) && trx->mo.nm_state.administrative == NM_STATE_UNLOCKED) + acc_ramp_trigger(&trx->bts->acc_ramp); gsm_bts_trx_set_system_infos(trx); -- To view, visit https://gerrit.osmocom.org/7825 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I235d2c5fa962f2f338e77d0c11502921b37f4c36 Gerrit-PatchSet: 1 Gerrit-Project: openbsc Gerrit-Branch: master Gerrit-Owner: Stefan Sperling From gerrit-no-reply at lists.osmocom.org Mon Apr 16 12:03:40 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Mon, 16 Apr 2018 12:03:40 +0000 Subject: openbsc[master]: ensure that acc_ramp_init() is only called once In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+1 -- To view, visit https://gerrit.osmocom.org/7820 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Iadd25016e6478a9dc5da1db42e6192ce0f5cc746 Gerrit-PatchSet: 1 Gerrit-Project: openbsc Gerrit-Branch: master Gerrit-Owner: Stefan Sperling Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Pau Espin Pedrol Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Mon Apr 16 12:03:44 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Mon, 16 Apr 2018 12:03:44 +0000 Subject: openbsc[master]: trigger acc ramping based on trx rf-locked state In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+1 -- To view, visit https://gerrit.osmocom.org/7821 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I4124f1da3dadec003de45c1da8435506ee8f0a34 Gerrit-PatchSet: 1 Gerrit-Project: openbsc Gerrit-Branch: master Gerrit-Owner: Stefan Sperling Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Pau Espin Pedrol Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Mon Apr 16 12:03:48 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Mon, 16 Apr 2018 12:03:48 +0000 Subject: openbsc[master]: rename helper functions in the acc ramp code to avoid confusion In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+1 -- To view, visit https://gerrit.osmocom.org/7822 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Ic1e5a1f969823cfbfb9fe9e959db87c1717c3a83 Gerrit-PatchSet: 1 Gerrit-Project: openbsc Gerrit-Branch: master Gerrit-Owner: Stefan Sperling Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Pau Espin Pedrol Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Mon Apr 16 12:03:52 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Mon, 16 Apr 2018 12:03:52 +0000 Subject: openbsc[master]: trigger acc ramping on state-changed-event reports In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+1 -- To view, visit https://gerrit.osmocom.org/7823 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I6443635b822b6cd776f6dc8a6ee73ab09e865b04 Gerrit-PatchSet: 1 Gerrit-Project: openbsc Gerrit-Branch: master Gerrit-Owner: Stefan Sperling Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Pau Espin Pedrol Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Mon Apr 16 12:03:54 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Mon, 16 Apr 2018 12:03:54 +0000 Subject: openbsc[master]: only trigger acc ramping if trx 0 is usable and unlocked In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+1 -- To view, visit https://gerrit.osmocom.org/7824 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I2cc9c1b8193546ea04ea5beb3751c2206f0215f2 Gerrit-PatchSet: 1 Gerrit-Project: openbsc Gerrit-Branch: master Gerrit-Owner: Stefan Sperling Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Pau Espin Pedrol Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Mon Apr 16 12:03:57 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Mon, 16 Apr 2018 12:03:57 +0000 Subject: openbsc[master]: fix handling of state changes in acc ramping In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+1 -- To view, visit https://gerrit.osmocom.org/7825 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I235d2c5fa962f2f338e77d0c11502921b37f4c36 Gerrit-PatchSet: 1 Gerrit-Project: openbsc Gerrit-Branch: master Gerrit-Owner: Stefan Sperling Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Pau Espin Pedrol Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Mon Apr 16 12:38:57 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Mon, 16 Apr 2018 12:38:57 +0000 Subject: [PATCH] osmo-bts[master]: Include missing headers for osmo_init_logging2 Message-ID: Review at https://gerrit.osmocom.org/7826 Include missing headers for osmo_init_logging2 Fixes implicit declaration warning messages at compile time. Change-Id: I753ed49cdcbd1301ba7ea38dcea9113d99fecb06 --- M src/osmo-bts-omldummy/main.c M tests/agch/agch_test.c M tests/cipher/cipher_test.c M tests/paging/paging_test.c 4 files changed, 4 insertions(+), 0 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-bts refs/changes/26/7826/1 diff --git a/src/osmo-bts-omldummy/main.c b/src/osmo-bts-omldummy/main.c index ef94553..3f1d58c 100644 --- a/src/osmo-bts-omldummy/main.c +++ b/src/osmo-bts-omldummy/main.c @@ -1,5 +1,6 @@ #include +#include #include #include #include diff --git a/tests/agch/agch_test.c b/tests/agch/agch_test.c index ab59ebf..e6c56d9 100644 --- a/tests/agch/agch_test.c +++ b/tests/agch/agch_test.c @@ -20,6 +20,7 @@ * */ #include +#include #include #include diff --git a/tests/cipher/cipher_test.c b/tests/cipher/cipher_test.c index a7343c0..9d78a88 100644 --- a/tests/cipher/cipher_test.c +++ b/tests/cipher/cipher_test.c @@ -23,6 +23,7 @@ #include #include +#include #include #include diff --git a/tests/paging/paging_test.c b/tests/paging/paging_test.c index bf28661..0accd0f 100644 --- a/tests/paging/paging_test.c +++ b/tests/paging/paging_test.c @@ -19,6 +19,7 @@ * */ #include +#include #include #include -- To view, visit https://gerrit.osmocom.org/7826 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I753ed49cdcbd1301ba7ea38dcea9113d99fecb06 Gerrit-PatchSet: 1 Gerrit-Project: osmo-bts Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol From gerrit-no-reply at lists.osmocom.org Mon Apr 16 12:51:14 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Mon, 16 Apr 2018 12:51:14 +0000 Subject: [PATCH] osmo-trx[master]: use osmo_init_logging2() Message-ID: Review at https://gerrit.osmocom.org/7827 use osmo_init_logging2() Change-Id: I2c28e6e6e3eb9f587680b34330e03408e32c2b94 --- M Transceiver52M/osmo-trx.cpp M tests/CommonLibs/LogTest.cpp 2 files changed, 7 insertions(+), 2 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-trx refs/changes/27/7827/1 diff --git a/Transceiver52M/osmo-trx.cpp b/Transceiver52M/osmo-trx.cpp index 2eb8309..1b351d6 100644 --- a/Transceiver52M/osmo-trx.cpp +++ b/Transceiver52M/osmo-trx.cpp @@ -506,7 +506,7 @@ convolve_init(); convert_init(); - osmo_init_logging(&log_info); + osmo_init_logging2(tall_trx_ctx, &log_info); osmo_stats_init(tall_trx_ctx); vty_init(&g_vty_info); ctrl_vty_init(tall_trx_ctx); diff --git a/tests/CommonLibs/LogTest.cpp b/tests/CommonLibs/LogTest.cpp index b8677e6..5167a62 100644 --- a/tests/CommonLibs/LogTest.cpp +++ b/tests/CommonLibs/LogTest.cpp @@ -29,6 +29,8 @@ #include "Logger.h" extern "C" { +#include +#include #include #include #include "debug.h" @@ -50,7 +52,10 @@ linfo.cat = categories; linfo.num_cat = ARRAY_SIZE(categories); - osmo_init_logging(&linfo); + void *tall_ctx = talloc_named_const(NULL, 1, "OsmoTRX context"); + msgb_talloc_ctx_init(tall_ctx, 0); + + osmo_init_logging2(tall_ctx, &linfo); log_set_use_color(osmo_stderr_target, 0); log_set_print_filename(osmo_stderr_target, 0); -- To view, visit https://gerrit.osmocom.org/7827 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I2c28e6e6e3eb9f587680b34330e03408e32c2b94 Gerrit-PatchSet: 1 Gerrit-Project: osmo-trx Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol From gerrit-no-reply at lists.osmocom.org Mon Apr 16 13:29:01 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Mon, 16 Apr 2018 13:29:01 +0000 Subject: [PATCH] osmo-trx[master]: configure.ac: Add --enable-sanitize option Message-ID: Review at https://gerrit.osmocom.org/7828 configure.ac: Add --enable-sanitize option Change-Id: I1b5154a47bb2f66103ac254a0f422e8a80b2d3e0 --- M configure.ac 1 file changed, 17 insertions(+), 0 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-trx refs/changes/28/7828/1 diff --git a/configure.ac b/configure.ac index c80f1cf..8271dbf 100644 --- a/configure.ac +++ b/configure.ac @@ -78,6 +78,18 @@ PKG_CHECK_MODULES(LIBOSMOVTY, libosmovty >= 0.3.0) PKG_CHECK_MODULES(LIBOSMOCTRL, libosmoctrl >= 0.10.0) +AC_ARG_ENABLE(sanitize, + [AS_HELP_STRING( + [--enable-sanitize], + [Compile with address sanitizer enabled], + )], + [sanitize=$enableval], [sanitize="no"]) +if test x"$sanitize" = x"yes" +then + CPPFLAGS="$CPPFLAGS -fsanitize=address -fsanitize=undefined" + LDFLAGS="$LDFLAGS -fsanitize=address -fsanitize=undefined" +fi + AC_ARG_WITH(usrp1, [ AS_HELP_STRING([--with-usrp1], [enable USRP1 gnuradio based transceiver]) @@ -176,6 +188,11 @@ AC_CHECK_HEADER([boost/config.hpp],[], [AC_MSG_ERROR([boost/config.hpp not found, install e.g. libboost-dev])]) +AC_MSG_RESULT([CPPFLAGS="$CPPFLAGS"]) +AC_MSG_RESULT([CFLAGS="$CFLAGS"]) +AC_MSG_RESULT([CXXFLAGS="$CXXFLAGS"]) +AC_MSG_RESULT([LDFLAGS="$LDFLAGS"]) + dnl Output files AC_CONFIG_FILES([\ Makefile \ -- To view, visit https://gerrit.osmocom.org/7828 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I1b5154a47bb2f66103ac254a0f422e8a80b2d3e0 Gerrit-PatchSet: 1 Gerrit-Project: osmo-trx Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol From gerrit-no-reply at lists.osmocom.org Mon Apr 16 13:29:41 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Mon, 16 Apr 2018 13:29:41 +0000 Subject: [PATCH] osmo-trx[master]: configure.ac: Add --enable-sanitize option In-Reply-To: References: Message-ID: configure.ac: Add --enable-sanitize option Change-Id: I1b5154a47bb2f66103ac254a0f422e8a80b2d3e0 --- M configure.ac M contrib/jenkins.sh 2 files changed, 18 insertions(+), 1 deletion(-) git pull ssh://gerrit.osmocom.org:29418/osmo-trx refs/changes/28/7828/2 diff --git a/configure.ac b/configure.ac index c80f1cf..8271dbf 100644 --- a/configure.ac +++ b/configure.ac @@ -78,6 +78,18 @@ PKG_CHECK_MODULES(LIBOSMOVTY, libosmovty >= 0.3.0) PKG_CHECK_MODULES(LIBOSMOCTRL, libosmoctrl >= 0.10.0) +AC_ARG_ENABLE(sanitize, + [AS_HELP_STRING( + [--enable-sanitize], + [Compile with address sanitizer enabled], + )], + [sanitize=$enableval], [sanitize="no"]) +if test x"$sanitize" = x"yes" +then + CPPFLAGS="$CPPFLAGS -fsanitize=address -fsanitize=undefined" + LDFLAGS="$LDFLAGS -fsanitize=address -fsanitize=undefined" +fi + AC_ARG_WITH(usrp1, [ AS_HELP_STRING([--with-usrp1], [enable USRP1 gnuradio based transceiver]) @@ -176,6 +188,11 @@ AC_CHECK_HEADER([boost/config.hpp],[], [AC_MSG_ERROR([boost/config.hpp not found, install e.g. libboost-dev])]) +AC_MSG_RESULT([CPPFLAGS="$CPPFLAGS"]) +AC_MSG_RESULT([CFLAGS="$CFLAGS"]) +AC_MSG_RESULT([CXXFLAGS="$CXXFLAGS"]) +AC_MSG_RESULT([LDFLAGS="$LDFLAGS"]) + dnl Output files AC_CONFIG_FILES([\ Makefile \ diff --git a/contrib/jenkins.sh b/contrib/jenkins.sh index c4d786d..74992c1 100755 --- a/contrib/jenkins.sh +++ b/contrib/jenkins.sh @@ -63,7 +63,7 @@ mkdir "$deps" || true -osmo-build-dep.sh libosmocore "" "--disable-doxygen --disable-pcsc" +osmo-build-dep.sh libosmocore "" "--enable-sanitize --disable-doxygen --disable-pcsc" export PKG_CONFIG_PATH="$inst/lib/pkgconfig:$PKG_CONFIG_PATH" export LD_LIBRARY_PATH="$inst/lib" -- To view, visit https://gerrit.osmocom.org/7828 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newpatchset Gerrit-Change-Id: I1b5154a47bb2f66103ac254a0f422e8a80b2d3e0 Gerrit-PatchSet: 2 Gerrit-Project: osmo-trx Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Jenkins Builder From gerrit-no-reply at lists.osmocom.org Mon Apr 16 13:31:11 2018 From: gerrit-no-reply at lists.osmocom.org (Neels Hofmeyr) Date: Mon, 16 Apr 2018 13:31:11 +0000 Subject: osmo-bsc[master]: prevent ARFCN+BSIC collisions in config In-Reply-To: References: Message-ID: Patch Set 1: Code-Review-1 so, it's not that simple. Practically, one would want to be able to re-use the same ARFCN+BSIC even within the same BSC. When resolving an ARFCN+BSIC, the source BTS is the third part of information that needs to provide a unique match. i.e. each BTS has neighbors with unique ARFCN+BSIC configs, while the same ARFCN+BSIC might be re-used three neighbor hops further out. A - B - C - A While it might hold for now, we can't be that strict in the long term. Let me see whether it's simple enough to do it properly right from the start. -- To view, visit https://gerrit.osmocom.org/7814 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Ia7c38188ccbad5d8b7398e3e5220015e62c08c8b Gerrit-PatchSet: 1 Gerrit-Project: osmo-bsc Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Neels Hofmeyr Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Mon Apr 16 13:36:09 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Mon, 16 Apr 2018 13:36:09 +0000 Subject: [PATCH] osmo-trx[master]: tests: Makefile.am: Fix typo in include path Message-ID: Review at https://gerrit.osmocom.org/7829 tests: Makefile.am: Fix typo in include path Change-Id: I036f1f587f2a5eaf93ec8fb619bf76b571c1633a --- M tests/Transceiver52M/Makefile.am 1 file changed, 1 insertion(+), 1 deletion(-) git pull ssh://gerrit.osmocom.org:29418/osmo-trx refs/changes/29/7829/1 diff --git a/tests/Transceiver52M/Makefile.am b/tests/Transceiver52M/Makefile.am index 79f73c6..8a05bd8 100644 --- a/tests/Transceiver52M/Makefile.am +++ b/tests/Transceiver52M/Makefile.am @@ -1,6 +1,6 @@ include $(top_srcdir)/Makefile.common -AM_CFLAGS = -Wall -I$(top_srcdir)/Transciever52 $(STD_DEFINES_AND_INCLUDES) -g +AM_CFLAGS = -Wall -I$(top_srcdir)/Transceiver52M $(STD_DEFINES_AND_INCLUDES) -g EXTRA_DIST = convolve_test.ok -- To view, visit https://gerrit.osmocom.org/7829 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I036f1f587f2a5eaf93ec8fb619bf76b571c1633a Gerrit-PatchSet: 1 Gerrit-Project: osmo-trx Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol From gerrit-no-reply at lists.osmocom.org Mon Apr 16 13:51:00 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Mon, 16 Apr 2018 13:51:00 +0000 Subject: [PATCH] osmo-trx[master]: configure.ac: Add --enable-sanitize option In-Reply-To: References: Message-ID: Hello Jenkins Builder, I'd like you to reexamine a change. Please visit https://gerrit.osmocom.org/7828 to look at the new patch set (#3). configure.ac: Add --enable-sanitize option Change-Id: I1b5154a47bb2f66103ac254a0f422e8a80b2d3e0 --- M configure.ac M contrib/jenkins.sh 2 files changed, 19 insertions(+), 2 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-trx refs/changes/28/7828/3 diff --git a/configure.ac b/configure.ac index c80f1cf..8271dbf 100644 --- a/configure.ac +++ b/configure.ac @@ -78,6 +78,18 @@ PKG_CHECK_MODULES(LIBOSMOVTY, libosmovty >= 0.3.0) PKG_CHECK_MODULES(LIBOSMOCTRL, libosmoctrl >= 0.10.0) +AC_ARG_ENABLE(sanitize, + [AS_HELP_STRING( + [--enable-sanitize], + [Compile with address sanitizer enabled], + )], + [sanitize=$enableval], [sanitize="no"]) +if test x"$sanitize" = x"yes" +then + CPPFLAGS="$CPPFLAGS -fsanitize=address -fsanitize=undefined" + LDFLAGS="$LDFLAGS -fsanitize=address -fsanitize=undefined" +fi + AC_ARG_WITH(usrp1, [ AS_HELP_STRING([--with-usrp1], [enable USRP1 gnuradio based transceiver]) @@ -176,6 +188,11 @@ AC_CHECK_HEADER([boost/config.hpp],[], [AC_MSG_ERROR([boost/config.hpp not found, install e.g. libboost-dev])]) +AC_MSG_RESULT([CPPFLAGS="$CPPFLAGS"]) +AC_MSG_RESULT([CFLAGS="$CFLAGS"]) +AC_MSG_RESULT([CXXFLAGS="$CXXFLAGS"]) +AC_MSG_RESULT([LDFLAGS="$LDFLAGS"]) + dnl Output files AC_CONFIG_FILES([\ Makefile \ diff --git a/contrib/jenkins.sh b/contrib/jenkins.sh index c4d786d..e600e01 100755 --- a/contrib/jenkins.sh +++ b/contrib/jenkins.sh @@ -63,7 +63,7 @@ mkdir "$deps" || true -osmo-build-dep.sh libosmocore "" "--disable-doxygen --disable-pcsc" +osmo-build-dep.sh libosmocore "" "--enable-sanitize --disable-doxygen --disable-pcsc" export PKG_CONFIG_PATH="$inst/lib/pkgconfig:$PKG_CONFIG_PATH" export LD_LIBRARY_PATH="$inst/lib" @@ -78,7 +78,7 @@ cd "$base" autoreconf --install --force -./configure $INSTR +./configure --enable-sanitize $INSTR $MAKE $PARALLEL_MAKE $MAKE check \ || cat-testlogs.sh -- To view, visit https://gerrit.osmocom.org/7828 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newpatchset Gerrit-Change-Id: I1b5154a47bb2f66103ac254a0f422e8a80b2d3e0 Gerrit-PatchSet: 3 Gerrit-Project: osmo-trx Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Jenkins Builder From gerrit-no-reply at lists.osmocom.org Mon Apr 16 13:53:54 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Mon, 16 Apr 2018 13:53:54 +0000 Subject: [PATCH] osmo-gsm-tester[master]: contrib: Enable address-sanitize in builds Message-ID: Review at https://gerrit.osmocom.org/7830 contrib: Enable address-sanitize in builds Change-Id: Ibef6c2fc497bce0d799116a854a48872f9ca16d7 --- M contrib/jenkins-build-osmo-bsc.sh M contrib/jenkins-build-osmo-bts-sysmo.sh M contrib/jenkins-build-osmo-bts.sh M contrib/jenkins-build-osmo-ggsn.sh M contrib/jenkins-build-osmo-hlr.sh M contrib/jenkins-build-osmo-mgw.sh M contrib/jenkins-build-osmo-msc.sh M contrib/jenkins-build-osmo-nitb.sh M contrib/jenkins-build-osmo-pcu-sysmo.sh M contrib/jenkins-build-osmo-pcu.sh M contrib/jenkins-build-osmo-sgsn.sh M contrib/jenkins-build-osmo-stp.sh M contrib/jenkins-build-osmo-trx.sh 13 files changed, 49 insertions(+), 49 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-gsm-tester refs/changes/30/7830/1 diff --git a/contrib/jenkins-build-osmo-bsc.sh b/contrib/jenkins-build-osmo-bsc.sh index 28a1f5e..73e71e5 100755 --- a/contrib/jenkins-build-osmo-bsc.sh +++ b/contrib/jenkins-build-osmo-bsc.sh @@ -4,11 +4,11 @@ name="osmo-bsc" . "$(dirname "$0")/jenkins-build-common.sh" -build_repo libosmocore --disable-doxygen -build_repo libosmo-abis -build_repo libosmo-netif --disable-doxygen -build_repo libosmo-sccp -build_repo osmo-mgw -build_repo osmo-bsc +build_repo libosmocore --enable-sanitize --disable-doxygen +build_repo libosmo-abis --enable-sanitize +build_repo libosmo-netif --enable-sanitize --disable-doxygen +build_repo libosmo-sccp --enable-sanitize +build_repo osmo-mgw --enable-sanitize +build_repo osmo-bsc --enable-sanitize create_bin_tgz osmo-bsc abisip-find ipaccess-config diff --git a/contrib/jenkins-build-osmo-bts-sysmo.sh b/contrib/jenkins-build-osmo-bts-sysmo.sh index 98f8249..8b4e50b 100755 --- a/contrib/jenkins-build-osmo-bts-sysmo.sh +++ b/contrib/jenkins-build-osmo-bts-sysmo.sh @@ -21,8 +21,8 @@ # for gsm_data_shared.h have_repo openbsc -build_repo libosmocore --disable-pcsc --disable-doxygen --disable-gnutls -build_repo libosmo-abis -build_repo osmo-bts --enable-sysmocom-bts --with-openbsc=$base/openbsc/openbsc/include +build_repo libosmocore --enable-sanitize --disable-pcsc --disable-doxygen --disable-gnutls +build_repo libosmo-abis --enable-sanitize +build_repo osmo-bts --enable-sanitize --enable-sysmocom-bts --with-openbsc=$base/openbsc/openbsc/include create_bin_tgz osmo-bts-sysmo diff --git a/contrib/jenkins-build-osmo-bts.sh b/contrib/jenkins-build-osmo-bts.sh index 462bce0..b40c613 100755 --- a/contrib/jenkins-build-osmo-bts.sh +++ b/contrib/jenkins-build-osmo-bts.sh @@ -6,8 +6,8 @@ have_repo octphy-2g-headers -build_repo libosmocore --disable-doxygen -build_repo libosmo-abis -build_repo osmo-bts --enable-trx --with-openbsc=$base/openbsc/openbsc/include --enable-octphy --with-octsdr-2g=$base/octphy-2g-headers +build_repo libosmocore --enable-sanitize --disable-doxygen +build_repo libosmo-abis --enable-sanitize +build_repo osmo-bts --enable-sanitize --enable-trx --with-openbsc=$base/openbsc/openbsc/include --enable-octphy --with-octsdr-2g=$base/octphy-2g-headers create_bin_tgz osmo-bts-trx osmo-bts-octphy diff --git a/contrib/jenkins-build-osmo-ggsn.sh b/contrib/jenkins-build-osmo-ggsn.sh index a46c3aa..a2cf952 100755 --- a/contrib/jenkins-build-osmo-ggsn.sh +++ b/contrib/jenkins-build-osmo-ggsn.sh @@ -4,7 +4,7 @@ name="osmo-ggsn" . "$(dirname "$0")/jenkins-build-common.sh" -build_repo libosmocore --disable-doxygen -build_repo osmo-ggsn +build_repo libosmocore --enable-sanitize --disable-doxygen +build_repo osmo-ggsn --enable-sanitize create_bin_tgz osmo-ggsn diff --git a/contrib/jenkins-build-osmo-hlr.sh b/contrib/jenkins-build-osmo-hlr.sh index 460e9d6..3229e52 100755 --- a/contrib/jenkins-build-osmo-hlr.sh +++ b/contrib/jenkins-build-osmo-hlr.sh @@ -4,8 +4,8 @@ name="osmo-hlr" . "$(dirname "$0")/jenkins-build-common.sh" -build_repo libosmocore --disable-doxygen -build_repo libosmo-abis -build_repo osmo-hlr +build_repo libosmocore --enable-sanitize --disable-doxygen +build_repo libosmo-abis --enable-sanitize +build_repo osmo-hlr --enable-sanitize create_bin_tgz osmo-hlr diff --git a/contrib/jenkins-build-osmo-mgw.sh b/contrib/jenkins-build-osmo-mgw.sh index 1bc7b76..d4ff0b9 100755 --- a/contrib/jenkins-build-osmo-mgw.sh +++ b/contrib/jenkins-build-osmo-mgw.sh @@ -4,9 +4,9 @@ name="osmo-mgw" . "$(dirname "$0")/jenkins-build-common.sh" -build_repo libosmocore --disable-doxygen -build_repo libosmo-abis -build_repo libosmo-netif --disable-doxygen -build_repo osmo-mgw +build_repo libosmocore --enable-sanitize --disable-doxygen +build_repo libosmo-abis --enable-sanitize +build_repo libosmo-netif --enable-sanitize --disable-doxygen +build_repo osmo-mgw --enable-sanitize create_bin_tgz osmo-bsc_mgcp osmo-mgw diff --git a/contrib/jenkins-build-osmo-msc.sh b/contrib/jenkins-build-osmo-msc.sh index c0faf78..28d327b 100755 --- a/contrib/jenkins-build-osmo-msc.sh +++ b/contrib/jenkins-build-osmo-msc.sh @@ -4,12 +4,12 @@ name="osmo-msc" . "$(dirname "$0")/jenkins-build-common.sh" -build_repo libosmocore --disable-doxygen -build_repo libosmo-abis -build_repo libosmo-netif --disable-doxygen -build_repo libsmpp34 -build_repo libosmo-sccp -build_repo osmo-mgw -build_repo osmo-msc --enable-smpp --disable-iu +build_repo libosmocore --enable-sanitize --disable-doxygen +build_repo libosmo-abis --enable-sanitize +build_repo libosmo-netif --enable-sanitize --disable-doxygen +build_repo libsmpp34 --enable-sanitize +build_repo libosmo-sccp --enable-sanitize +build_repo osmo-mgw --enable-sanitize +build_repo osmo-msc --enable-sanitize --enable-smpp --disable-iu create_bin_tgz osmo-msc diff --git a/contrib/jenkins-build-osmo-nitb.sh b/contrib/jenkins-build-osmo-nitb.sh index ef55259..d12f110 100755 --- a/contrib/jenkins-build-osmo-nitb.sh +++ b/contrib/jenkins-build-osmo-nitb.sh @@ -4,12 +4,12 @@ name="osmo-nitb" . "$(dirname "$0")/jenkins-build-common.sh" -build_repo libosmocore --disable-doxygen -build_repo libosmo-abis -build_repo libosmo-netif --disable-doxygen -build_repo openggsn -build_repo libsmpp34 -build_repo libosmo-sccp +build_repo libosmocore --enable-sanitize --disable-doxygen +build_repo libosmo-abis --enable-sanitize +build_repo libosmo-netif --enable-sanitize --disable-doxygen +build_repo openggsn --enable-sanitize +build_repo libsmpp34 --enable-sanitize +build_repo libosmo-sccp --enable-sanitize build_repo openbsc --enable-smpp --enable-osmo-bsc --enable-nat create_bin_tgz osmo-nitb diff --git a/contrib/jenkins-build-osmo-pcu-sysmo.sh b/contrib/jenkins-build-osmo-pcu-sysmo.sh index 4dc7704..77541e5 100755 --- a/contrib/jenkins-build-osmo-pcu-sysmo.sh +++ b/contrib/jenkins-build-osmo-pcu-sysmo.sh @@ -18,7 +18,7 @@ prefix_real="$DESTDIR$prefix" . "$(dirname "$0")/jenkins-build-common.sh" -build_repo libosmocore --disable-pcsc --disable-doxygen --disable-gnutls -build_repo osmo-pcu --enable-sysmocom-dsp +build_repo libosmocore --enable-sanitize --disable-pcsc --disable-doxygen --disable-gnutls +build_repo osmo-pcu --enable-sanitize --enable-sysmocom-dsp create_bin_tgz osmo-pcu diff --git a/contrib/jenkins-build-osmo-pcu.sh b/contrib/jenkins-build-osmo-pcu.sh index 4d4277f..3d3fdd0 100755 --- a/contrib/jenkins-build-osmo-pcu.sh +++ b/contrib/jenkins-build-osmo-pcu.sh @@ -4,7 +4,7 @@ name="osmo-pcu" . "$(dirname "$0")/jenkins-build-common.sh" -build_repo libosmocore --disable-pcsc --disable-doxygen -build_repo osmo-pcu +build_repo libosmocore --enable-sanitize --disable-pcsc --disable-doxygen +build_repo osmo-pcu --enable-sanitize create_bin_tgz osmo-pcu diff --git a/contrib/jenkins-build-osmo-sgsn.sh b/contrib/jenkins-build-osmo-sgsn.sh index 45fae5e..4a23b33 100755 --- a/contrib/jenkins-build-osmo-sgsn.sh +++ b/contrib/jenkins-build-osmo-sgsn.sh @@ -4,11 +4,11 @@ name="osmo-sgsn" . "$(dirname "$0")/jenkins-build-common.sh" -build_repo libosmocore --disable-doxygen -build_repo libosmo-abis -build_repo libosmo-netif --disable-doxygen -build_repo libosmo-sccp -build_repo osmo-ggsn -build_repo osmo-sgsn --disable-iu +build_repo libosmocore --enable-sanitize --disable-doxygen +build_repo libosmo-abis --enable-sanitize +build_repo libosmo-netif --enable-sanitize --disable-doxygen +build_repo libosmo-sccp --enable-sanitize +build_repo osmo-ggsn --enable-sanitize +build_repo osmo-sgsn --enable-sanitize --disable-iu create_bin_tgz osmo-sgsn diff --git a/contrib/jenkins-build-osmo-stp.sh b/contrib/jenkins-build-osmo-stp.sh index 86cbe3d..985b090 100755 --- a/contrib/jenkins-build-osmo-stp.sh +++ b/contrib/jenkins-build-osmo-stp.sh @@ -4,9 +4,9 @@ name="osmo-stp" . "$(dirname "$0")/jenkins-build-common.sh" -build_repo libosmocore --disable-doxygen -build_repo libosmo-abis -build_repo libosmo-netif --disable-doxygen -build_repo libosmo-sccp +build_repo libosmocore --enable-sanitize --disable-doxygen +build_repo libosmo-abis --enable-sanitize +build_repo libosmo-netif --enable-sanitize --disable-doxygen +build_repo libosmo-sccp --enable-sanitize create_bin_tgz osmo-stp diff --git a/contrib/jenkins-build-osmo-trx.sh b/contrib/jenkins-build-osmo-trx.sh index 194266f..33eb07d 100755 --- a/contrib/jenkins-build-osmo-trx.sh +++ b/contrib/jenkins-build-osmo-trx.sh @@ -4,7 +4,7 @@ name="osmo-trx" . "$(dirname "$0")/jenkins-build-common.sh" -build_repo libosmocore --disable-doxygen +build_repo libosmocore --enable-sanitize --disable-doxygen build_repo osmo-trx --without-sse create_bin_tgz osmo-trx -- To view, visit https://gerrit.osmocom.org/7830 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Ibef6c2fc497bce0d799116a854a48872f9ca16d7 Gerrit-PatchSet: 1 Gerrit-Project: osmo-gsm-tester Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol From gerrit-no-reply at lists.osmocom.org Mon Apr 16 13:53:54 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Mon, 16 Apr 2018 13:53:54 +0000 Subject: [PATCH] osmo-gsm-tester[master]: contrib: build-osm-bts-sysmo: openbsc dep no longer needed Message-ID: Review at https://gerrit.osmocom.org/7831 contrib: build-osm-bts-sysmo: openbsc dep no longer needed Change-Id: Iafd5ee1df001719ff6165ada996359b92116671e --- M contrib/jenkins-build-osmo-bts-sysmo.sh 1 file changed, 0 insertions(+), 3 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-gsm-tester refs/changes/31/7831/1 diff --git a/contrib/jenkins-build-osmo-bts-sysmo.sh b/contrib/jenkins-build-osmo-bts-sysmo.sh index 8b4e50b..8e91df1 100755 --- a/contrib/jenkins-build-osmo-bts-sysmo.sh +++ b/contrib/jenkins-build-osmo-bts-sysmo.sh @@ -18,9 +18,6 @@ prefix_real="$DESTDIR$prefix" . "$(dirname "$0")/jenkins-build-common.sh" -# for gsm_data_shared.h -have_repo openbsc - build_repo libosmocore --enable-sanitize --disable-pcsc --disable-doxygen --disable-gnutls build_repo libosmo-abis --enable-sanitize build_repo osmo-bts --enable-sanitize --enable-sysmocom-bts --with-openbsc=$base/openbsc/openbsc/include -- To view, visit https://gerrit.osmocom.org/7831 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Iafd5ee1df001719ff6165ada996359b92116671e Gerrit-PatchSet: 1 Gerrit-Project: osmo-gsm-tester Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol From gerrit-no-reply at lists.osmocom.org Mon Apr 16 13:53:54 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Mon, 16 Apr 2018 13:53:54 +0000 Subject: [PATCH] osmo-gsm-tester[master]: contrib: build-osmo-trx: Enable addr sanitize for osmo-trx Message-ID: Review at https://gerrit.osmocom.org/7832 contrib: build-osmo-trx: Enable addr sanitize for osmo-trx Change-Id: Iad90c7c8c2098680276de000c36bec0224f9746d --- M contrib/jenkins-build-osmo-trx.sh 1 file changed, 1 insertion(+), 1 deletion(-) git pull ssh://gerrit.osmocom.org:29418/osmo-gsm-tester refs/changes/32/7832/1 diff --git a/contrib/jenkins-build-osmo-trx.sh b/contrib/jenkins-build-osmo-trx.sh index 33eb07d..480c787 100755 --- a/contrib/jenkins-build-osmo-trx.sh +++ b/contrib/jenkins-build-osmo-trx.sh @@ -5,6 +5,6 @@ . "$(dirname "$0")/jenkins-build-common.sh" build_repo libosmocore --enable-sanitize --disable-doxygen -build_repo osmo-trx --without-sse +build_repo osmo-trx --enable-sanitize --without-sse create_bin_tgz osmo-trx -- To view, visit https://gerrit.osmocom.org/7832 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Iad90c7c8c2098680276de000c36bec0224f9746d Gerrit-PatchSet: 1 Gerrit-Project: osmo-gsm-tester Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol From gerrit-no-reply at lists.osmocom.org Mon Apr 16 13:54:55 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Mon, 16 Apr 2018 13:54:55 +0000 Subject: osmo-gsm-tester[master]: contrib: build-osmo-trx: Enable addr sanitize for osmo-trx In-Reply-To: References: Message-ID: Patch Set 1: Depends on I1b5154a47bb2f66103ac254a0f422e8a80b2d3e0 not yet merged. -- To view, visit https://gerrit.osmocom.org/7832 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Iad90c7c8c2098680276de000c36bec0224f9746d Gerrit-PatchSet: 1 Gerrit-Project: osmo-gsm-tester Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Pau Espin Pedrol Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Mon Apr 16 14:33:44 2018 From: gerrit-no-reply at lists.osmocom.org (lynxis lazus) Date: Mon, 16 Apr 2018 14:33:44 +0000 Subject: [PATCH] osmo-ci[master]: ansible: osmocom-jenkins-slave: fix crontab for fstrim Message-ID: Review at https://gerrit.osmocom.org/7833 ansible: osmocom-jenkins-slave: fix crontab for fstrim Change-Id: Ib6aae8d1d986346dc7bc0fc945bab6491fff4f3f --- M ansible/roles/osmocom-jenkins-slave/tasks/main.yml 1 file changed, 1 insertion(+), 0 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-ci refs/changes/33/7833/1 diff --git a/ansible/roles/osmocom-jenkins-slave/tasks/main.yml b/ansible/roles/osmocom-jenkins-slave/tasks/main.yml index f8b29d8..b57c81a 100644 --- a/ansible/roles/osmocom-jenkins-slave/tasks/main.yml +++ b/ansible/roles/osmocom-jenkins-slave/tasks/main.yml @@ -114,5 +114,6 @@ cron: name: "fstrim" hour: "*/12" + minute: 0 job: "fstrim / >/dev/null 2>/dev/null || true" when: osmocom_jenkins_slave_fstrim -- To view, visit https://gerrit.osmocom.org/7833 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Ib6aae8d1d986346dc7bc0fc945bab6491fff4f3f Gerrit-PatchSet: 1 Gerrit-Project: osmo-ci Gerrit-Branch: master Gerrit-Owner: lynxis lazus From gerrit-no-reply at lists.osmocom.org Mon Apr 16 14:33:45 2018 From: gerrit-no-reply at lists.osmocom.org (lynxis lazus) Date: Mon, 16 Apr 2018 14:33:45 +0000 Subject: [PATCH] osmo-ci[master]: scripts/docker-cleanup.sh: set permissions to 755 Message-ID: Review at https://gerrit.osmocom.org/7834 scripts/docker-cleanup.sh: set permissions to 755 It will otherwise not executed by the cron, because the cron is checking for the executable bit Change-Id: Ie9d67b157d62b38b62f5e74406d14344f90d07b8 --- M scripts/docker-cleanup.sh 1 file changed, 0 insertions(+), 0 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-ci refs/changes/34/7834/1 diff --git a/scripts/docker-cleanup.sh b/scripts/docker-cleanup.sh old mode 100644 new mode 100755 -- To view, visit https://gerrit.osmocom.org/7834 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Ie9d67b157d62b38b62f5e74406d14344f90d07b8 Gerrit-PatchSet: 1 Gerrit-Project: osmo-ci Gerrit-Branch: master Gerrit-Owner: lynxis lazus From gerrit-no-reply at lists.osmocom.org Mon Apr 16 14:51:30 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Mon, 16 Apr 2018 14:51:30 +0000 Subject: [PATCH] osmo-gsm-tester[master]: contrib: Enable address-sanitize in builds In-Reply-To: References: Message-ID: contrib: Enable address-sanitize in builds Don't enable it for binaries built with sysmocom's cross-toolchain since it doesn't contain required libasan. Also, don't enable it on openbsc since we don't have an enable-sanitize flag there. Change-Id: Ibef6c2fc497bce0d799116a854a48872f9ca16d7 --- M contrib/jenkins-build-osmo-bsc.sh M contrib/jenkins-build-osmo-bts.sh M contrib/jenkins-build-osmo-ggsn.sh M contrib/jenkins-build-osmo-hlr.sh M contrib/jenkins-build-osmo-mgw.sh M contrib/jenkins-build-osmo-msc.sh M contrib/jenkins-build-osmo-pcu.sh M contrib/jenkins-build-osmo-sgsn.sh M contrib/jenkins-build-osmo-stp.sh M contrib/jenkins-build-osmo-trx.sh 10 files changed, 38 insertions(+), 38 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-gsm-tester refs/changes/30/7830/2 diff --git a/contrib/jenkins-build-osmo-bsc.sh b/contrib/jenkins-build-osmo-bsc.sh index 28a1f5e..73e71e5 100755 --- a/contrib/jenkins-build-osmo-bsc.sh +++ b/contrib/jenkins-build-osmo-bsc.sh @@ -4,11 +4,11 @@ name="osmo-bsc" . "$(dirname "$0")/jenkins-build-common.sh" -build_repo libosmocore --disable-doxygen -build_repo libosmo-abis -build_repo libosmo-netif --disable-doxygen -build_repo libosmo-sccp -build_repo osmo-mgw -build_repo osmo-bsc +build_repo libosmocore --enable-sanitize --disable-doxygen +build_repo libosmo-abis --enable-sanitize +build_repo libosmo-netif --enable-sanitize --disable-doxygen +build_repo libosmo-sccp --enable-sanitize +build_repo osmo-mgw --enable-sanitize +build_repo osmo-bsc --enable-sanitize create_bin_tgz osmo-bsc abisip-find ipaccess-config diff --git a/contrib/jenkins-build-osmo-bts.sh b/contrib/jenkins-build-osmo-bts.sh index 462bce0..b40c613 100755 --- a/contrib/jenkins-build-osmo-bts.sh +++ b/contrib/jenkins-build-osmo-bts.sh @@ -6,8 +6,8 @@ have_repo octphy-2g-headers -build_repo libosmocore --disable-doxygen -build_repo libosmo-abis -build_repo osmo-bts --enable-trx --with-openbsc=$base/openbsc/openbsc/include --enable-octphy --with-octsdr-2g=$base/octphy-2g-headers +build_repo libosmocore --enable-sanitize --disable-doxygen +build_repo libosmo-abis --enable-sanitize +build_repo osmo-bts --enable-sanitize --enable-trx --with-openbsc=$base/openbsc/openbsc/include --enable-octphy --with-octsdr-2g=$base/octphy-2g-headers create_bin_tgz osmo-bts-trx osmo-bts-octphy diff --git a/contrib/jenkins-build-osmo-ggsn.sh b/contrib/jenkins-build-osmo-ggsn.sh index a46c3aa..a2cf952 100755 --- a/contrib/jenkins-build-osmo-ggsn.sh +++ b/contrib/jenkins-build-osmo-ggsn.sh @@ -4,7 +4,7 @@ name="osmo-ggsn" . "$(dirname "$0")/jenkins-build-common.sh" -build_repo libosmocore --disable-doxygen -build_repo osmo-ggsn +build_repo libosmocore --enable-sanitize --disable-doxygen +build_repo osmo-ggsn --enable-sanitize create_bin_tgz osmo-ggsn diff --git a/contrib/jenkins-build-osmo-hlr.sh b/contrib/jenkins-build-osmo-hlr.sh index 460e9d6..3229e52 100755 --- a/contrib/jenkins-build-osmo-hlr.sh +++ b/contrib/jenkins-build-osmo-hlr.sh @@ -4,8 +4,8 @@ name="osmo-hlr" . "$(dirname "$0")/jenkins-build-common.sh" -build_repo libosmocore --disable-doxygen -build_repo libosmo-abis -build_repo osmo-hlr +build_repo libosmocore --enable-sanitize --disable-doxygen +build_repo libosmo-abis --enable-sanitize +build_repo osmo-hlr --enable-sanitize create_bin_tgz osmo-hlr diff --git a/contrib/jenkins-build-osmo-mgw.sh b/contrib/jenkins-build-osmo-mgw.sh index 1bc7b76..d4ff0b9 100755 --- a/contrib/jenkins-build-osmo-mgw.sh +++ b/contrib/jenkins-build-osmo-mgw.sh @@ -4,9 +4,9 @@ name="osmo-mgw" . "$(dirname "$0")/jenkins-build-common.sh" -build_repo libosmocore --disable-doxygen -build_repo libosmo-abis -build_repo libosmo-netif --disable-doxygen -build_repo osmo-mgw +build_repo libosmocore --enable-sanitize --disable-doxygen +build_repo libosmo-abis --enable-sanitize +build_repo libosmo-netif --enable-sanitize --disable-doxygen +build_repo osmo-mgw --enable-sanitize create_bin_tgz osmo-bsc_mgcp osmo-mgw diff --git a/contrib/jenkins-build-osmo-msc.sh b/contrib/jenkins-build-osmo-msc.sh index c0faf78..28d327b 100755 --- a/contrib/jenkins-build-osmo-msc.sh +++ b/contrib/jenkins-build-osmo-msc.sh @@ -4,12 +4,12 @@ name="osmo-msc" . "$(dirname "$0")/jenkins-build-common.sh" -build_repo libosmocore --disable-doxygen -build_repo libosmo-abis -build_repo libosmo-netif --disable-doxygen -build_repo libsmpp34 -build_repo libosmo-sccp -build_repo osmo-mgw -build_repo osmo-msc --enable-smpp --disable-iu +build_repo libosmocore --enable-sanitize --disable-doxygen +build_repo libosmo-abis --enable-sanitize +build_repo libosmo-netif --enable-sanitize --disable-doxygen +build_repo libsmpp34 --enable-sanitize +build_repo libosmo-sccp --enable-sanitize +build_repo osmo-mgw --enable-sanitize +build_repo osmo-msc --enable-sanitize --enable-smpp --disable-iu create_bin_tgz osmo-msc diff --git a/contrib/jenkins-build-osmo-pcu.sh b/contrib/jenkins-build-osmo-pcu.sh index 4d4277f..3d3fdd0 100755 --- a/contrib/jenkins-build-osmo-pcu.sh +++ b/contrib/jenkins-build-osmo-pcu.sh @@ -4,7 +4,7 @@ name="osmo-pcu" . "$(dirname "$0")/jenkins-build-common.sh" -build_repo libosmocore --disable-pcsc --disable-doxygen -build_repo osmo-pcu +build_repo libosmocore --enable-sanitize --disable-pcsc --disable-doxygen +build_repo osmo-pcu --enable-sanitize create_bin_tgz osmo-pcu diff --git a/contrib/jenkins-build-osmo-sgsn.sh b/contrib/jenkins-build-osmo-sgsn.sh index 45fae5e..4a23b33 100755 --- a/contrib/jenkins-build-osmo-sgsn.sh +++ b/contrib/jenkins-build-osmo-sgsn.sh @@ -4,11 +4,11 @@ name="osmo-sgsn" . "$(dirname "$0")/jenkins-build-common.sh" -build_repo libosmocore --disable-doxygen -build_repo libosmo-abis -build_repo libosmo-netif --disable-doxygen -build_repo libosmo-sccp -build_repo osmo-ggsn -build_repo osmo-sgsn --disable-iu +build_repo libosmocore --enable-sanitize --disable-doxygen +build_repo libosmo-abis --enable-sanitize +build_repo libosmo-netif --enable-sanitize --disable-doxygen +build_repo libosmo-sccp --enable-sanitize +build_repo osmo-ggsn --enable-sanitize +build_repo osmo-sgsn --enable-sanitize --disable-iu create_bin_tgz osmo-sgsn diff --git a/contrib/jenkins-build-osmo-stp.sh b/contrib/jenkins-build-osmo-stp.sh index 86cbe3d..985b090 100755 --- a/contrib/jenkins-build-osmo-stp.sh +++ b/contrib/jenkins-build-osmo-stp.sh @@ -4,9 +4,9 @@ name="osmo-stp" . "$(dirname "$0")/jenkins-build-common.sh" -build_repo libosmocore --disable-doxygen -build_repo libosmo-abis -build_repo libosmo-netif --disable-doxygen -build_repo libosmo-sccp +build_repo libosmocore --enable-sanitize --disable-doxygen +build_repo libosmo-abis --enable-sanitize +build_repo libosmo-netif --enable-sanitize --disable-doxygen +build_repo libosmo-sccp --enable-sanitize create_bin_tgz osmo-stp diff --git a/contrib/jenkins-build-osmo-trx.sh b/contrib/jenkins-build-osmo-trx.sh index 194266f..33eb07d 100755 --- a/contrib/jenkins-build-osmo-trx.sh +++ b/contrib/jenkins-build-osmo-trx.sh @@ -4,7 +4,7 @@ name="osmo-trx" . "$(dirname "$0")/jenkins-build-common.sh" -build_repo libosmocore --disable-doxygen +build_repo libosmocore --enable-sanitize --disable-doxygen build_repo osmo-trx --without-sse create_bin_tgz osmo-trx -- To view, visit https://gerrit.osmocom.org/7830 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newpatchset Gerrit-Change-Id: Ibef6c2fc497bce0d799116a854a48872f9ca16d7 Gerrit-PatchSet: 2 Gerrit-Project: osmo-gsm-tester Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol From gerrit-no-reply at lists.osmocom.org Mon Apr 16 14:51:30 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Mon, 16 Apr 2018 14:51:30 +0000 Subject: [PATCH] osmo-gsm-tester[master]: contrib: build-osm-bts-sysmo: openbsc dep no longer needed In-Reply-To: References: Message-ID: contrib: build-osm-bts-sysmo: openbsc dep no longer needed Change-Id: Iafd5ee1df001719ff6165ada996359b92116671e --- M contrib/jenkins-build-osmo-bts-sysmo.sh 1 file changed, 0 insertions(+), 3 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-gsm-tester refs/changes/31/7831/2 diff --git a/contrib/jenkins-build-osmo-bts-sysmo.sh b/contrib/jenkins-build-osmo-bts-sysmo.sh index 98f8249..afce771 100755 --- a/contrib/jenkins-build-osmo-bts-sysmo.sh +++ b/contrib/jenkins-build-osmo-bts-sysmo.sh @@ -18,9 +18,6 @@ prefix_real="$DESTDIR$prefix" . "$(dirname "$0")/jenkins-build-common.sh" -# for gsm_data_shared.h -have_repo openbsc - build_repo libosmocore --disable-pcsc --disable-doxygen --disable-gnutls build_repo libosmo-abis build_repo osmo-bts --enable-sysmocom-bts --with-openbsc=$base/openbsc/openbsc/include -- To view, visit https://gerrit.osmocom.org/7831 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newpatchset Gerrit-Change-Id: Iafd5ee1df001719ff6165ada996359b92116671e Gerrit-PatchSet: 2 Gerrit-Project: osmo-gsm-tester Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol From gerrit-no-reply at lists.osmocom.org Mon Apr 16 15:12:16 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Mon, 16 Apr 2018 15:12:16 +0000 Subject: osmo-trx[master]: configure.ac: Add --enable-sanitize option In-Reply-To: References: Message-ID: Patch Set 3: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7828 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I1b5154a47bb2f66103ac254a0f422e8a80b2d3e0 Gerrit-PatchSet: 3 Gerrit-Project: osmo-trx Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Mon Apr 16 15:14:56 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Mon, 16 Apr 2018 15:14:56 +0000 Subject: libosmo-netif[master]: jibuf: Add initial implementation of Jitter Buffer In-Reply-To: References: Message-ID: Patch Set 2: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7773 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I9688ba9c4d5b733b9f29d0f15f73750f9271ef55 Gerrit-PatchSet: 2 Gerrit-Project: libosmo-netif Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Pau Espin Pedrol Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Mon Apr 16 15:15:00 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Mon, 16 Apr 2018 15:15:00 +0000 Subject: [MERGED] libosmo-netif[master]: jibuf: Add initial implementation of Jitter Buffer In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: jibuf: Add initial implementation of Jitter Buffer ...................................................................... jibuf: Add initial implementation of Jitter Buffer Change-Id: I9688ba9c4d5b733b9f29d0f15f73750f9271ef55 --- M include/osmocom/netif/Makefile.am A include/osmocom/netif/jibuf.h M src/Makefile.am A src/jibuf.c M tests/Makefile.am A tests/jibuf/jibuf_test.c A tests/jibuf/jibuf_test.ok M tests/testsuite.at 8 files changed, 1,407 insertions(+), 2 deletions(-) Approvals: Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/include/osmocom/netif/Makefile.am b/include/osmocom/netif/Makefile.am index cbaff5c..0db78fb 100644 --- a/include/osmocom/netif/Makefile.am +++ b/include/osmocom/netif/Makefile.am @@ -3,6 +3,7 @@ osmonetif_HEADERS = amr.h \ channel.h \ datagram.h \ + jibuf.h \ osmux.h \ ipa.h \ ipa_unit.h \ diff --git a/include/osmocom/netif/jibuf.h b/include/osmocom/netif/jibuf.h new file mode 100644 index 0000000..6273983 --- /dev/null +++ b/include/osmocom/netif/jibuf.h @@ -0,0 +1,63 @@ +#pragma once + +#include +#include +#include + +#include + +/*! \defgroup jibuf Osmocom Jitter Buffer + * @{ + */ + +/*! \file jibuf.h + * \brief Osmocom Jitter Buffer helpers + */ + +typedef void (*osmo_jibuf_dequeue_cb)(struct msgb *msg, void *data); + +/*! \brief A structure representing a single instance of a jitter buffer */ +struct osmo_jibuf { + void *talloc_ctx; + bool started; + struct osmo_timer_list timer; + struct llist_head msg_list; /* sorted by output ts */ + uint32_t min_delay; /* in msec */ + uint32_t max_delay; /* in msec */ + uint32_t threshold_delay; /* in msec */ + + osmo_jibuf_dequeue_cb dequeue_cb; + void *dequeue_cb_data; + + /* number of pkt drops since we last changed the buffer size */ + uint32_t last_dropped; + uint32_t consecutive_drops; + + uint32_t ref_rx_ts; + uint32_t ref_tx_ts; + uint16_t ref_tx_seq; + + struct timeval last_enqueue_time; + struct timeval next_dequeue_time; + + struct { + uint32_t total_enqueued; + uint64_t total_dropped; + } stats; +}; + + +struct osmo_jibuf *osmo_jibuf_alloc(void *talloc_ctx); + +void osmo_jibuf_delete(struct osmo_jibuf *jb); + +int osmo_jibuf_enqueue(struct osmo_jibuf *jb, struct msgb *msg); + +bool osmo_jibuf_empty(struct osmo_jibuf *jb); + +void osmo_jibuf_set_min_delay(struct osmo_jibuf *jb, uint32_t min_delay); +void osmo_jibuf_set_max_delay(struct osmo_jibuf *jb, uint32_t max_delay); + +void osmo_jibuf_set_dequeue_cb(struct osmo_jibuf *jb, osmo_jibuf_dequeue_cb dequeue_cb, void* cb_data); + +/*! @} */ diff --git a/src/Makefile.am b/src/Makefile.am index 81a55b4..79e3685 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -18,6 +18,7 @@ datagram.c \ ipa.c \ ipa_unit.c \ + jibuf.c \ osmux.c \ rs232.c \ rtp.c \ diff --git a/src/jibuf.c b/src/jibuf.c new file mode 100644 index 0000000..c3d6bad --- /dev/null +++ b/src/jibuf.c @@ -0,0 +1,381 @@ +/* (C) 2017 by sysmocom - s.f.m.c. GmbH + * + * Author: Pau Espin Pedrol + * + * SPDX-License-Identifier: GPL-2.0+ + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + */ + +#include +#include +#include + +#include +#include +#include +#include +#include + +#include +#include +#include + +#include + +/*! \addtogroup jibuf Osmocom Jitter Buffer + * @{ + */ + +/*! \file jibuf.c + * \brief Osmocom Jitter Buffer helpers + */ + +/* Sampling rate (in Hz) */ +/* TODO: SAMPLE RATE can be guessed from rtp.p_type */ +#define SAMPLE_RATE 8000 + +/* TUNABLE PARAMETERS: */ + +/* default {min,max}_delay values if set_{min,max}_delay() is never called */ +#define JIBUF_DEFAULT_MIN_DELAY_MS 60 +#define JIBUF_DEFAULT_MAX_DELAY_MS 200 + +/* How frequently (num of input packets) do we reselect a new reference? */ +#define JIBUF_REFERENCE_TS_FREQ 60 + +/* How frequently (num of input packets) do we check if we should adapt the + * buffer size (threshold_delay) ? */ +#define JIBUF_BUFFER_RECALC_FREQ 40 +/* How many pkts should be dropped at max every JIBUF_BUFFER_RECALC_FREQ input + * pkts? */ +#define JIBUF_ALLOWED_PKT_DROP 3 +/* How many consecutive pkts can be dropped before triggering a buffer size incr ? */ +#define JIBUF_ALLOWED_PKT_CONSECUTIVE_DROP 1 +/* How much do we incr/decr the buffer size every time we recalculate it? */ +#define JIBUF_BUFFER_INC_STEP 20 +#define JIBUF_BUFFER_DEC_STEP 5 + +struct osmo_jibuf_msgb_cb { + struct timeval ts; + unsigned long *old_cb; +}; + +#define JIBUF_MSGB_CB(__msgb) ((struct osmo_jibuf_msgb_cb *)&((__msgb)->cb[0])) + +static void ms2timeval(struct timeval *ts, uint32_t ms) +{ + ts->tv_sec = ms / 1000; + ts->tv_usec = (ms % 1000) * 1000; +} + +static uint32_t timeval2ms(const struct timeval *ts) +{ + return ts->tv_sec * 1000 + ts->tv_usec / 1000; +} + +static int clock_gettime_timeval(clockid_t clk_id, struct timeval *tp) +{ + struct timespec now; + int n; + + n = osmo_clock_gettime(clk_id, &now); + tp->tv_sec = now.tv_sec; + tp->tv_usec = now.tv_nsec / 1000; + + return n; +} + +static struct timeval *msgb_scheduled_ts(const struct msgb *msg) +{ + struct osmo_jibuf_msgb_cb *jbcb = JIBUF_MSGB_CB(msg); + return &jbcb->ts; +} + +/* Add msgb to the list sorted by its scheduled output ts */ +static void llist_add_sorted(struct msgb *msg, struct llist_head *msg_list) +{ + struct msgb *cur; + struct timeval *msg_ts = msgb_scheduled_ts(msg); + + /* TODO: not sure if I need to use _safe here */ + llist_for_each_entry(cur, msg_list, list) { + struct timeval *cur_ts = msgb_scheduled_ts(cur); + if (timercmp(msg_ts, cur_ts, <)) { + __llist_add(&msg->list, cur->list.prev, &cur->list); + return; + } + } + + /* we reached the end, add to the tail: */ + llist_add_tail(&msg->list, msg_list); + +} + +static uint16_t msg_get_sequence(struct msgb *msg) +{ + struct rtp_hdr *rtph = osmo_rtp_get_hdr(msg); + return ntohs(rtph->sequence); +} + +static uint32_t msg_get_timestamp(struct msgb *msg) +{ + struct rtp_hdr *rtph = osmo_rtp_get_hdr(msg); + return ntohl(rtph->timestamp); +} + +static int32_t samples2ms(int32_t samples) +{ + /* XXX: SAMPLE RATE can be guessed from rtp.p_type */ + return samples * 1000 / SAMPLE_RATE; +} + +/* Calculates pkt delay related to reference pkt. Similar concept to D(i,j) as + * defined in RFC3550 (RTP). */ +static int calc_pkt_rel_delay(struct osmo_jibuf *jb, struct msgb *msg) +{ + uint32_t current_rx_ts = timeval2ms(&jb->last_enqueue_time); + uint32_t current_tx_ts = msg_get_timestamp(msg); + + return samples2ms((current_tx_ts - jb->ref_tx_ts)) - (current_rx_ts - jb->ref_rx_ts); +} + +static void msg_set_as_reference(struct osmo_jibuf *jb, struct msgb *msg) +{ + jb->ref_rx_ts = timeval2ms(&jb->last_enqueue_time); + jb->ref_tx_ts = msg_get_timestamp(msg); + jb->ref_tx_seq = msg_get_sequence(msg); + + LOGP(DLJIBUF, LOGL_DEBUG, "New reference (seq=%"PRIu16" rx=%"PRIu32 \ + " tx=%"PRIu32")\n", jb->ref_tx_seq, jb->ref_rx_ts, jb->ref_tx_ts); +} + +static void dequeue_msg(struct osmo_jibuf *jb, struct msgb *msg) +{ + unsigned long *old_cb = JIBUF_MSGB_CB(msg)->old_cb; + memcpy(msg->cb, old_cb, sizeof(msg->cb)); + talloc_free(old_cb); + llist_del(&msg->list); + + jb->dequeue_cb(msg, jb->dequeue_cb_data); +} + +static void timer_expired(void *data) +{ + struct osmo_jibuf *jb = (struct osmo_jibuf*) data; + struct timeval delay_ts, now; + struct msgb *msg, *next; + + llist_for_each_entry_safe(msg, next, &jb->msg_list, list) { + struct timeval *msg_ts = msgb_scheduled_ts(msg); + clock_gettime_timeval(CLOCK_MONOTONIC, &now); + if (timercmp(msg_ts, &now, >)) { + jb->next_dequeue_time = *msg_ts; + timersub(msg_ts, &now, &delay_ts); + osmo_timer_schedule(&jb->timer, + delay_ts.tv_sec, delay_ts.tv_usec); + return; + } + + dequeue_msg(jb, msg); + } + + /* XXX: maybe try to tune the threshold based on the calculated output jitter? */ + /* XXX: try to find holes in the list and create fake pkts to improve the + jitter when packets do not arrive on time */ +} + +static void recalc_threshold_delay(struct osmo_jibuf *jb) +{ + + /* Recalculate every JIBUF_RECALC_FREQ_PKTS handled packets, or if we have too + many consecutive drops */ + uint32_t sum_pkts = jb->stats.total_enqueued + jb->stats.total_dropped + + jb->last_dropped; + + if (jb->consecutive_drops <= JIBUF_ALLOWED_PKT_CONSECUTIVE_DROP && + sum_pkts % JIBUF_BUFFER_RECALC_FREQ != 0) + return; + + if (jb->consecutive_drops > JIBUF_ALLOWED_PKT_CONSECUTIVE_DROP || + jb->last_dropped > JIBUF_ALLOWED_PKT_DROP) + jb->threshold_delay = OSMO_MIN( + jb->threshold_delay + JIBUF_BUFFER_INC_STEP, + jb->max_delay); + else + jb->threshold_delay = OSMO_MAX( + jb->threshold_delay - JIBUF_BUFFER_DEC_STEP, + jb->min_delay); + LOGP(DLJIBUF, LOGL_DEBUG, "New threshold: %u ms (freq=%d dropped=%d/%d consecutive=%d/%d)\n", + jb->threshold_delay, JIBUF_BUFFER_RECALC_FREQ, + jb->last_dropped, JIBUF_ALLOWED_PKT_DROP, + jb->consecutive_drops, JIBUF_ALLOWED_PKT_CONSECUTIVE_DROP); + + jb->stats.total_dropped += jb->last_dropped; + jb->last_dropped = 0; + +} + +//---------------------------------- + +/*! \brief Allocate a new jitter buffer instance + * \return the new allocated instance + */ +struct osmo_jibuf *osmo_jibuf_alloc(void *talloc_ctx) +{ + struct osmo_jibuf *jb; + jb = talloc_zero(talloc_ctx, struct osmo_jibuf); + + jb->min_delay = JIBUF_DEFAULT_MIN_DELAY_MS; + jb->max_delay = JIBUF_DEFAULT_MAX_DELAY_MS; + jb->threshold_delay = jb->min_delay; + + INIT_LLIST_HEAD(&jb->msg_list); + + jb->timer.cb = timer_expired; + jb->timer.data = jb; + + return jb; +} + +/*! \brief Destroy a previously allocated jitter buffer instance + * \param[in] jb Previously allocated (non-null) jitter buffer instance + * + * All the queued packets are dequeued before deleting the instance. + */ +void osmo_jibuf_delete(struct osmo_jibuf *jb) +{ + struct msgb *msg, *tmp; + osmo_timer_del(&jb->timer); + llist_for_each_entry_safe(msg, tmp, &jb->msg_list, list) + dequeue_msg(jb, msg); + + talloc_free(jb); +} + +/*! \brief Try to enqueue a packet into the jitter buffer + * \param[in] jb jitter buffer instance + * \param[in] msg msgb to enqueue, containing an RTP packet + * \return <0 if the packet was dropped, 0 otherwise + * + * This function calculates the delay for the enqueued packet. If the delay is + * bigger than the current buffer size, the function returns -1 and the caller + * owns the packet again and can free it if required. If the packet is enqueued, + * 0 is returned and the exact same packet (ownership transfer, no copy is made) + * will be available again through the dequeue_cb() when the queue timer for + * this packet expires. + */ +int osmo_jibuf_enqueue(struct osmo_jibuf *jb, struct msgb *msg) +{ + int rel_delay, delay; + struct timeval delay_ts, sched_ts; + + clock_gettime_timeval(CLOCK_MONOTONIC, &jb->last_enqueue_time); + + if (!jb->started) { + jb->started = true; + msg_set_as_reference(jb, msg); + rel_delay = 0; + } else { + rel_delay = calc_pkt_rel_delay(jb, msg); + } + + /* Avoid time skew with sender (or drop-everything state), + reselect a new reference from time to time */ + //if ((int)(msg_get_sequence(msg) - jb->ref_tx_seq) > JIBUF_REFERENCE_TS_FREQ) + // msg_set_as_reference(jb, msg); + + delay = jb->threshold_delay + rel_delay; + + /* packet too late, let's drop it and incr buffer size if encouraged */ + if (delay < 0) { + jb->last_dropped++; + jb->consecutive_drops++; + + LOGP(DLJIBUF, LOGL_DEBUG, "dropped %u > %u (seq=%"PRIu16" ts=%"PRIu32")\n", + rel_delay, jb->threshold_delay, msg_get_sequence(msg), + msg_get_timestamp(msg)); + + recalc_threshold_delay(jb); + return -1; + } else { + jb->consecutive_drops = 0; + jb->stats.total_enqueued++; + } + + ms2timeval(&delay_ts, (uint32_t) delay); + timeradd(&jb->last_enqueue_time, &delay_ts, &sched_ts); + + LOGP(DLJIBUF, LOGL_DEBUG, "enqueuing packet seq=%"PRIu16" rel=%d delay=%d" \ + " thres=%d {%lu.%06lu -> %lu.%06lu}\n", + msg_get_sequence(msg), rel_delay, delay, jb->threshold_delay, + jb->last_enqueue_time.tv_sec, jb->last_enqueue_time.tv_usec, + sched_ts.tv_sec, sched_ts.tv_usec); + + /* Add scheduled dequeue time in msg->cb so we can check it later */ + unsigned long *old_cb = talloc_memdup(jb->talloc_ctx, msg->cb, sizeof(msg->cb)); + struct osmo_jibuf_msgb_cb *jbcb = JIBUF_MSGB_CB(msg); + jbcb->ts = sched_ts; + jbcb->old_cb = old_cb; + + llist_add_sorted(msg, &jb->msg_list); + + + /* See if updating the timer is needed: */ + if (!osmo_timer_pending(&jb->timer) || + timercmp(&sched_ts, &jb->next_dequeue_time, <)) { + jb->next_dequeue_time = sched_ts; + osmo_timer_schedule(&jb->timer, 0, delay * 1000); + } + + /* Let's check packet loss stats to see if buffer_size must be changed */ + recalc_threshold_delay(jb); + + return 0; +} + +/*! \brief Check whether the jitter buffer instance has packets queued or not. + * \param[in] jb jitter buffer instance + * \return true if the queue is empty, false otherwise. + */ +bool osmo_jibuf_empty(struct osmo_jibuf *jb) +{ + return llist_empty(&jb->msg_list); +} + +/*! \brief Set minimum buffer size for the jitter buffer + * \param[in] jb jitter buffer instance + * \param[in] min_delay Minimum buffer size, as in minimum delay in milliseconds + */ +void osmo_jibuf_set_min_delay(struct osmo_jibuf *jb, uint32_t min_delay) +{ + jb->min_delay = min_delay ? min_delay : JIBUF_DEFAULT_MIN_DELAY_MS; + jb->threshold_delay = OSMO_MAX(jb->min_delay, jb->threshold_delay); +} + +/*! \brief Set maximum buffer size for the jitter buffer + * \param[in] jb jitter buffer instance + * \param[in] max_delay Maximum buffer size, as in maximum delay in milliseconds + */ +void osmo_jibuf_set_max_delay(struct osmo_jibuf *jb, uint32_t max_delay) +{ + jb->max_delay = max_delay ? max_delay : JIBUF_DEFAULT_MAX_DELAY_MS; + jb->threshold_delay = OSMO_MIN(jb->max_delay, jb->threshold_delay); +} + +/*! \brief Set dequeue callback for the jitter buffer + * \param[in] jb jitter buffer instance + * \param[in] dequeue_cb function pointer to call back when the dequeue timer for a given packet expires + * \param[in] cb_data data pointer to be passed to dequeue_cb together with the msgb. + */ +void osmo_jibuf_set_dequeue_cb(struct osmo_jibuf *jb, osmo_jibuf_dequeue_cb + dequeue_cb, void* cb_data) +{ + jb->dequeue_cb = dequeue_cb; + jb->dequeue_cb_data = cb_data; +} + +/*! @} */ diff --git a/tests/Makefile.am b/tests/Makefile.am index f99e276..bf1db1f 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -1,10 +1,13 @@ AM_CFLAGS = -Wall -I$(top_srcdir)/include $(LIBOSMOCORE_CFLAGS) -g AM_LDFLAGS = $(LIBOSMOCORE_LDFLAGS) -check_PROGRAMS = osmux/osmux_test +check_PROGRAMS = osmux/osmux_test jibuf/jibuf_test osmux_osmux_test_SOURCES = osmux/osmux_test.c osmux_osmux_test_LDADD = $(LIBOSMOCORE_LIBS) $(top_builddir)/src/libosmonetif.la + +jibuf_jibuf_test_SOURCES = jibuf/jibuf_test.c +jibuf_jibuf_test_LDADD = $(LIBOSMOCORE_LIBS) $(top_builddir)/src/libosmonetif.la # The `:;' works around a Bash 3.2 bug when the output is not writeable. $(srcdir)/package.m4: $(top_srcdir)/configure.ac @@ -25,7 +28,8 @@ } >'$(srcdir)/package.m4' EXTRA_DIST = testsuite.at $(srcdir)/package.m4 $(TESTSUITE) \ - osmux/osmux_test.ok + osmux/osmux_test.ok \ + jibuf/jibuf_test.ok DISTCLEANFILES = atconfig diff --git a/tests/jibuf/jibuf_test.c b/tests/jibuf/jibuf_test.c new file mode 100644 index 0000000..ba21906 --- /dev/null +++ b/tests/jibuf/jibuf_test.c @@ -0,0 +1,598 @@ +/* (C) 2017 by sysmocom - s.f.m.c. GmbH + * + * Author: Pau Espin Pedrol + * + * SPDX-License-Identifier: GPL-2.0+ + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include + +static struct osmo_jibuf *jb; + +static uint16_t rtp_next_seq; +static uint32_t rtp_next_ts; + +#define SAMPLES_PER_PKT 160 +#define TIME_RTP_PKT_MS 20 +/* RTP packet with AMR payload */ +static uint8_t rtp_pkt[] = { + 0x80, 0x62, 0x3f, 0xcc, 0x00, 0x01, 0xa7, 0x6f, /* RTP */ + 0x07, 0x09, 0x00, 0x62, 0x20, 0x14, 0xff, 0xd4, /* AMR */ + 0xf9, 0xff, 0xfb, 0xe7, 0xeb, 0xf9, 0x9f, 0xf8, + 0xf2, 0x26, 0x33, 0x65, 0x54, +}; + +/* ----------------------------- */ + +/* Logging related stuff */ +#define INT2IDX(x) (-1*(x)-1) +struct log_info_cat jibuf_test_cat[] = { + [INT2IDX(DLJIBUF)] = { + .name = "DLJIBUF", + .description = "Osmocom Jitter Buffer", + .enabled = 1, .loglevel = LOGL_DEBUG, + }, +}; +const struct log_info jibuf_test_log_info = { + .filter_fn = NULL, + .cat = jibuf_test_cat, + .num_cat = ARRAY_SIZE(jibuf_test_cat), +}; +/* ----------------------------- */ + +static void rtp_init(uint16_t seq, uint32_t timestamp) +{ + rtp_next_seq = seq; + rtp_next_ts = timestamp; +} + +static struct msgb *rtp_new(uint16_t seq, uint32_t timestamp) +{ + struct msgb *msg; + struct rtp_hdr *rtph; + + msg = msgb_alloc(1500, "test"); + if (!msg) + exit(EXIT_FAILURE); + memcpy(msg->data, rtp_pkt, sizeof(rtp_pkt)); + msgb_put(msg, sizeof(rtp_pkt)); + + rtph = osmo_rtp_get_hdr(msg); + rtph->sequence = htons(rtp_next_seq); + rtph->timestamp = htonl(rtp_next_ts); + return msg; +} + +static struct msgb *rtp_next(void) +{ + rtp_next_seq++; + rtp_next_ts += SAMPLES_PER_PKT; + return rtp_new(rtp_next_seq, rtp_next_ts); +} + +static void sigalarm_handler(int foo) +{ + printf("FAIL: test did not run successfully\n"); + exit(EXIT_FAILURE); +} + + +static void clock_debug(char* str) +{ + struct timespec ts; + struct timeval tv; + osmo_clock_gettime(CLOCK_MONOTONIC, &ts); + osmo_gettimeofday(&tv, NULL); + printf("sys={%lu.%06lu}, mono={%lu.%06lu}: %s\n", + tv.tv_sec, tv.tv_usec, ts.tv_sec, ts.tv_nsec/1000, str); +} + +static void clock_override_enable(bool enable) +{ + osmo_gettimeofday_override = enable; + osmo_clock_override_enable(CLOCK_MONOTONIC, enable); +} + +static void clock_override_set(long sec, long usec) +{ + struct timespec *mono; + osmo_gettimeofday_override_time.tv_sec = sec; + osmo_gettimeofday_override_time.tv_usec = usec; + mono = osmo_clock_override_gettimespec(CLOCK_MONOTONIC); + mono->tv_sec = sec; + mono->tv_nsec = usec*1000; + + clock_debug("clock_override_set"); +} + +static void clock_override_add(long sec, long usec) +{ + osmo_gettimeofday_override_add(sec, usec); + osmo_clock_override_add(CLOCK_MONOTONIC, sec, usec*1000); + clock_debug("clock_override_add"); +} + + +static void dequeue_cb(struct msgb *msg, void *data) +{ + struct rtp_hdr *rtph; + bool check_latest; + char buf[250]; + rtph = osmo_rtp_get_hdr(msg); + check_latest = rtph->sequence == htons(rtp_next_seq) && rtph->timestamp == htonl(rtp_next_ts); + snprintf(buf, sizeof(buf), "dequeue: seq=%"PRIu16" ts=%"PRIu32" %s", + ntohs(rtph->sequence), ntohl(rtph->timestamp), check_latest ? "LATEST" : "INTERMEDIATE"); + clock_debug(buf); + msgb_free(msg); +} + +#define ENQUEUE_NEXT(jb) { \ + struct msgb *_msg; \ + int _rc; \ + _msg = rtp_next(); \ + _rc = osmo_jibuf_enqueue(jb, _msg); \ + OSMO_ASSERT(!_rc); \ + } + +static void test_normal(void) +{ + int min_delay = 60; + + printf("===test_normal===\n"); + + clock_override_enable(true); + clock_override_set(0, 0); + rtp_init(32, 400); + jb = osmo_jibuf_alloc(NULL); + osmo_jibuf_set_dequeue_cb(jb, dequeue_cb, NULL); + osmo_jibuf_set_min_delay(jb, min_delay); + osmo_jibuf_set_max_delay(jb, 200); + + /* First rtp at t=0, should be scheduled in min_delay time */ + ENQUEUE_NEXT(jb); + clock_override_add(0, min_delay*1000); + clock_debug("first select, first dequed"); + osmo_select_main(0); + + /* We are at t=60, if we add a new packet and wait for 20msecs (next packet), we should show it dequeued*/ + ENQUEUE_NEXT(jb); + clock_override_add(0, TIME_RTP_PKT_MS*1000); + clock_debug("second select, one packet should be dequeued"); + osmo_select_main(0); + + /* We are at t=80, and only 2 packets were introduced. Let's add 2 more, should be dequeued by 80+40: */ + ENQUEUE_NEXT(jb); + ENQUEUE_NEXT(jb); + clock_override_add(0, TIME_RTP_PKT_MS*2*1000); + clock_debug("third select, two more dequed"); + osmo_select_main(0); + + /* t=120, 4 enqueued, 4 dequeued.*/ + OSMO_ASSERT(osmo_jibuf_empty(jb)); + + osmo_jibuf_delete(jb); +} + +static void test_delete_nonempty(void) +{ + int min_delay = 100; + + printf("===test_delete_nonempty===\n"); + + clock_override_enable(true); + clock_override_set(0, 0); + rtp_init(32, 400); + jb = osmo_jibuf_alloc(NULL); + osmo_jibuf_set_dequeue_cb(jb, dequeue_cb, NULL); + osmo_jibuf_set_min_delay(jb, min_delay); + osmo_jibuf_set_max_delay(jb, 200); + + ENQUEUE_NEXT(jb); + clock_override_add(0, TIME_RTP_PKT_MS*1000); + ENQUEUE_NEXT(jb); + clock_override_add(0, TIME_RTP_PKT_MS*1000); + ENQUEUE_NEXT(jb); + clock_override_add(0, TIME_RTP_PKT_MS*1000); + ENQUEUE_NEXT(jb); + + /* No need to update the time, all msgs should be dequeued at this time */ + OSMO_ASSERT(!osmo_jibuf_empty(jb)); + osmo_jibuf_delete(jb); +} + +static void test_packet_lost(void) +{ + int min_delay = 60; + + printf("===test_packet_lost===\n"); + + clock_override_enable(true); + clock_override_set(0, 0); + rtp_init(32, 400); + jb = osmo_jibuf_alloc(NULL); + osmo_jibuf_set_dequeue_cb(jb, dequeue_cb, NULL); + osmo_jibuf_set_min_delay(jb, min_delay); + osmo_jibuf_set_max_delay(jb, 200); + + /* First rtp at t=0, should be scheduled in min_delay time */ + clock_debug("enqueue 1st packet"); + ENQUEUE_NEXT(jb); + clock_override_add(0, TIME_RTP_PKT_MS*1000); + + clock_debug("packet lost: 2nd"); + clock_override_add(0, TIME_RTP_PKT_MS*1000); + clock_debug("packet lost: 3rd"); + clock_override_add(0, TIME_RTP_PKT_MS*1000); + clock_debug("packet lost: 4th"); + clock_override_add(0, TIME_RTP_PKT_MS*1000); + + /* We are at t=80 */ + clock_debug("enqueue 5th packet"); + ENQUEUE_NEXT(jb); + clock_override_add(0, min_delay*1000); + + /* We are at t=140, all out in order */ + osmo_select_main(0); + + OSMO_ASSERT(osmo_jibuf_empty(jb)); + + osmo_jibuf_delete(jb); +} + + +static void test_packet_drop(void) +{ + int min_delay = 60; + struct msgb *msg; + + printf("===test_packet_drop===\n"); + + clock_override_enable(true); + clock_override_set(0, 0); + rtp_init(32, 400); + jb = osmo_jibuf_alloc(NULL); + osmo_jibuf_set_dequeue_cb(jb, dequeue_cb, NULL); + osmo_jibuf_set_min_delay(jb, min_delay); + osmo_jibuf_set_max_delay(jb, 200); + + /* First rtp at t=0, should be scheduled in min_delay time */ + clock_debug("enqueue 1st packet"); + ENQUEUE_NEXT(jb); + clock_override_add(0, TIME_RTP_PKT_MS*1000); + clock_debug("enqueue 2nd packet"); + ENQUEUE_NEXT(jb); + clock_override_add(0, TIME_RTP_PKT_MS*1000); + clock_debug("enqueue 3rd packet"); + ENQUEUE_NEXT(jb); + clock_override_add(0, TIME_RTP_PKT_MS*1000); + clock_debug("enqueue 4th packet"); + ENQUEUE_NEXT(jb); + + /* We are at t=60, first comes out */ + osmo_select_main(0); + + /* We move to t=160, next packet in stream is too late:*/ + clock_override_add(0, 100*1000); + clock_debug("next packet should be dropped, too late"); + msg = rtp_next(); + OSMO_ASSERT(osmo_jibuf_enqueue(jb, msg) < 0); + msgb_free(msg); + + /* However, if we try to add a later one, it should work: */ + clock_debug("next packet should be enqueued"); + ENQUEUE_NEXT(jb); + + /* We are at t=160, all of them should be dequeued */ + osmo_select_main(0); + + /* t=160, 4 enqueued, 4 dequeued.*/ + OSMO_ASSERT(osmo_jibuf_empty(jb)); + + osmo_jibuf_delete(jb); +} + +static void test_packet_out_of_order(void) +{ + int min_delay = 60; + struct msgb *msg2, *msg3; + + printf("===test_packet_out_of_order===\n"); + + clock_override_enable(true); + clock_override_set(0, 0); + rtp_init(32, 400); + jb = osmo_jibuf_alloc(NULL); + osmo_jibuf_set_dequeue_cb(jb, dequeue_cb, NULL); + osmo_jibuf_set_min_delay(jb, min_delay); + osmo_jibuf_set_max_delay(jb, 200); + + /* First rtp at t=0, should be scheduled in min_delay time */ + clock_debug("enqueue 1st packet"); + ENQUEUE_NEXT(jb); + + /* 3rd packet arrives instead of 2nd one */ + msg2 = rtp_next(); + msg3 = rtp_next(); + clock_override_add(0, TIME_RTP_PKT_MS*2*1000); + clock_debug("enqueue 3rd packet"); + OSMO_ASSERT(osmo_jibuf_enqueue(jb, msg3) == 0); + clock_debug("enqueue 2nd packet"); + OSMO_ASSERT(osmo_jibuf_enqueue(jb, msg2) == 0); + + /* We are at t=100, all out in order */ + clock_override_add(0, min_delay*1000); + osmo_select_main(0); + + OSMO_ASSERT(osmo_jibuf_empty(jb)); + + osmo_jibuf_delete(jb); +} + +static void test_start_2nd_packet(void) +{ + int min_delay = 60; + struct msgb *msg1; + + printf("===test_start_2nd_packet===\n"); + + clock_override_enable(true); + clock_override_set(0, 0); + rtp_init(32, 400); + jb = osmo_jibuf_alloc(NULL); + osmo_jibuf_set_dequeue_cb(jb, dequeue_cb, NULL); + osmo_jibuf_set_min_delay(jb, min_delay); + osmo_jibuf_set_max_delay(jb, 200); + + /* First rtp at t=0, should be scheduled in min_delay time */ + clock_debug("1st packet is not yet enqueued"); + msg1 = rtp_next(); + clock_override_add(0, TIME_RTP_PKT_MS*2*1000); + + /* 2nd packet arrives instead of 2nd one */ + clock_debug("2nd packet is enqueuded as first"); + ENQUEUE_NEXT(jb); + + clock_debug("1st packet is enqueuded as second, should be enqueued with preference"); + OSMO_ASSERT(osmo_jibuf_enqueue(jb, msg1) == 0); + + /* 1st packet is dequeued */ + clock_override_add(0, (min_delay-TIME_RTP_PKT_MS)*1000); + osmo_select_main(0); + + /* 2nst packet is dequeued */ + clock_override_add(0, TIME_RTP_PKT_MS*1000); + osmo_select_main(0); + + OSMO_ASSERT(osmo_jibuf_empty(jb)); + + osmo_jibuf_delete(jb); +} + +static void test_buffer_threshold_change(void) +{ + int min_delay = 60; + struct msgb *msg; + uint32_t threshold_delay; + int i; + + printf("===test_buffer_threshold_change===\n"); + + clock_override_enable(true); + clock_override_set(0, 0); + rtp_init(32, 400); + jb = osmo_jibuf_alloc(NULL); + osmo_jibuf_set_dequeue_cb(jb, dequeue_cb, NULL); + osmo_jibuf_set_min_delay(jb, min_delay); + osmo_jibuf_set_max_delay(jb, 200); + + OSMO_ASSERT(min_delay == jb->threshold_delay); + threshold_delay = jb->threshold_delay; + + /* First rtp at t=0, should be scheduled in min_delay time */ + clock_debug("enqueue 1st packet"); + ENQUEUE_NEXT(jb); + clock_override_add(0, TIME_RTP_PKT_MS*1000); + clock_debug("enqueue 2nd packet"); + ENQUEUE_NEXT(jb); + clock_override_add(0, TIME_RTP_PKT_MS*1000); + clock_debug("enqueue 3rd packet"); + ENQUEUE_NEXT(jb); + clock_override_add(0, TIME_RTP_PKT_MS*1000); + clock_debug("enqueue 4th packet"); + ENQUEUE_NEXT(jb); + + /* We are at t=60, first comes out */ + osmo_select_main(0); + + /* We move to t=160, next packet in stream is too late:*/ + clock_override_add(0, 100*1000); + clock_debug("next packet should be dropped, too late"); + msg = rtp_next(); + OSMO_ASSERT(osmo_jibuf_enqueue(jb, msg) < 0); + msgb_free(msg); + + clock_override_add(0, TIME_RTP_PKT_MS*1000); + clock_debug("next packet is dropped, but buffer is increased"); + msg = rtp_next(); + OSMO_ASSERT(osmo_jibuf_enqueue(jb, msg) < 0); + msgb_free(msg); + OSMO_ASSERT(jb->threshold_delay > threshold_delay); + threshold_delay = jb->threshold_delay; + + clock_override_add(0, TIME_RTP_PKT_MS*1000); + clock_debug("next packet is enqueued since the buffer increased"); + ENQUEUE_NEXT(jb); + + /* As the last buffer was really late but still accepted, it is not delayed: */ + osmo_select_main(0); + + clock_debug("Enqueue late packets"); + for (i = 0; i<4; i++) { + ENQUEUE_NEXT(jb); + } + + clock_debug("Run perfectly for a while, buffer should decrease"); + for (i = 0; i<100; i++) { + clock_override_add(0, TIME_RTP_PKT_MS*1000); + ENQUEUE_NEXT(jb); + osmo_select_main(0); + } + clock_debug("Done, checking threshold and cleaning"); + OSMO_ASSERT(jb->threshold_delay < threshold_delay); + clock_override_add(0, jb->threshold_delay*1000); + osmo_select_main(0); + + OSMO_ASSERT(osmo_jibuf_empty(jb)); + + osmo_jibuf_delete(jb); +} + +static void test_seq_wraparound(void) +{ + int min_delay = 80; + + printf("===test_seq_wraparound===\n"); + + clock_override_enable(true); + clock_override_set(0, 0); + rtp_init(65533, 400); /* seq = 2^16 -3 */ + jb = osmo_jibuf_alloc(NULL); + osmo_jibuf_set_dequeue_cb(jb, dequeue_cb, NULL); + osmo_jibuf_set_min_delay(jb, min_delay); + osmo_jibuf_set_max_delay(jb, 200); + + clock_debug("enqueue 1st packet (seq=65534)"); + ENQUEUE_NEXT(jb); + clock_override_add(0, TIME_RTP_PKT_MS*1000); + clock_debug("enqueue 2nd packet (seq=65535)"); + ENQUEUE_NEXT(jb); + clock_override_add(0, TIME_RTP_PKT_MS*1000); + clock_debug("enqueue 3rd packet (seq=0, wraparound)"); + ENQUEUE_NEXT(jb); + clock_override_add(0, TIME_RTP_PKT_MS*1000); + clock_debug("enqueue 4th packet (seq=1)"); + ENQUEUE_NEXT(jb); + clock_override_add(0, TIME_RTP_PKT_MS*1000); + clock_debug("enqueue 5th packet (seq=2)"); + ENQUEUE_NEXT(jb); + + clock_debug("dequeue 1st packet (seq=65534)"); + osmo_select_main(0); + clock_override_add(0, TIME_RTP_PKT_MS*1000); + clock_debug("dequeue 2nd packet (seq=65535)"); + osmo_select_main(0); + clock_override_add(0, TIME_RTP_PKT_MS*1000); + clock_debug("dequeue 3rd packet (seq=0, wraparound)"); + osmo_select_main(0); + clock_override_add(0, TIME_RTP_PKT_MS*1000); + clock_debug("dequeue 4th packet (seq=1)"); + osmo_select_main(0); + clock_override_add(0, TIME_RTP_PKT_MS*1000); + clock_debug("dequeue 5th packet (seq=2)"); + osmo_select_main(0); + + OSMO_ASSERT(osmo_jibuf_empty(jb)); + + osmo_jibuf_delete(jb); +} + +static void test_timestamp_wraparound(void) +{ + int min_delay = 80; + unsigned int offset = 14; + + printf("===test_timestamp_wraparound===\n"); + + clock_override_enable(true); + clock_override_set(0, 0); + rtp_init(32, 4294966816 + offset); /* timestamp = 2^32 - 3*SAMPLES_PER_PKT + offset */ + jb = osmo_jibuf_alloc(NULL); + osmo_jibuf_set_dequeue_cb(jb, dequeue_cb, NULL); + osmo_jibuf_set_min_delay(jb, min_delay); + osmo_jibuf_set_max_delay(jb, 200); + + clock_debug("enqueue 1st packet (ts=4294966990)"); + ENQUEUE_NEXT(jb); + clock_override_add(0, TIME_RTP_PKT_MS*1000); + clock_debug("enqueue 2nd packet (ts=4294967150)"); + ENQUEUE_NEXT(jb); + clock_override_add(0, TIME_RTP_PKT_MS*1000); + clock_debug("enqueue 3rd packet (ts=14, wraparound)"); + ENQUEUE_NEXT(jb); + clock_override_add(0, TIME_RTP_PKT_MS*1000); + clock_debug("enqueue 4th packet (ts=174)"); + ENQUEUE_NEXT(jb); + clock_override_add(0, TIME_RTP_PKT_MS*1000); + clock_debug("enqueue 5th packet (ts=334)"); + ENQUEUE_NEXT(jb); + + clock_debug("dequeue 1st packet (ts=4294966990)"); + osmo_select_main(0); + clock_override_add(0, TIME_RTP_PKT_MS*1000); + clock_debug("dequeue 2nd packet (ts=4294967150)"); + osmo_select_main(0); + clock_override_add(0, TIME_RTP_PKT_MS*1000); + clock_debug("dequeue 3rd packet (ts=14, wraparound)"); + osmo_select_main(0); + clock_override_add(0, TIME_RTP_PKT_MS*1000); + clock_debug("dequeue 4th packet (ts=174)"); + osmo_select_main(0); + clock_override_add(0, TIME_RTP_PKT_MS*1000); + clock_debug("dequeue 5th packet (ts=334)"); + osmo_select_main(0); + + OSMO_ASSERT(osmo_jibuf_empty(jb)); + + osmo_jibuf_delete(jb); +} + +int main(int argc, char **argv) +{ + + if (signal(SIGALRM, sigalarm_handler) == SIG_ERR) { + perror("signal"); + exit(EXIT_FAILURE); + } + + osmo_init_logging(&jibuf_test_log_info); + log_set_print_filename(osmo_stderr_target, 0); + log_set_log_level(osmo_stderr_target, LOGL_DEBUG); + log_set_category_filter(osmo_stderr_target, DLJIBUF, 1, LOGL_DEBUG); + + alarm(10); + + test_normal(); + test_delete_nonempty(); + test_packet_lost(); + test_packet_drop(); + test_packet_out_of_order(); + test_start_2nd_packet(); + test_buffer_threshold_change(); + test_seq_wraparound(); + test_timestamp_wraparound(); + + fprintf(stdout, "OK: Test passed\n"); + return EXIT_SUCCESS; +} diff --git a/tests/jibuf/jibuf_test.ok b/tests/jibuf/jibuf_test.ok new file mode 100644 index 0000000..5a0f121 --- /dev/null +++ b/tests/jibuf/jibuf_test.ok @@ -0,0 +1,351 @@ +===test_normal=== +sys={0.000000}, mono={0.000000}: clock_override_set +sys={0.060000}, mono={0.060000}: clock_override_add +sys={0.060000}, mono={0.060000}: first select, first dequed +sys={0.060000}, mono={0.060000}: dequeue: seq=33 ts=560 LATEST +sys={0.080000}, mono={0.080000}: clock_override_add +sys={0.080000}, mono={0.080000}: second select, one packet should be dequeued +sys={0.080000}, mono={0.080000}: dequeue: seq=34 ts=720 LATEST +sys={0.120000}, mono={0.120000}: clock_override_add +sys={0.120000}, mono={0.120000}: third select, two more dequed +sys={0.120000}, mono={0.120000}: dequeue: seq=35 ts=880 INTERMEDIATE +sys={0.120000}, mono={0.120000}: dequeue: seq=36 ts=1040 LATEST +===test_delete_nonempty=== +sys={0.000000}, mono={0.000000}: clock_override_set +sys={0.020000}, mono={0.020000}: clock_override_add +sys={0.040000}, mono={0.040000}: clock_override_add +sys={0.060000}, mono={0.060000}: clock_override_add +sys={0.060000}, mono={0.060000}: dequeue: seq=33 ts=560 INTERMEDIATE +sys={0.060000}, mono={0.060000}: dequeue: seq=34 ts=720 INTERMEDIATE +sys={0.060000}, mono={0.060000}: dequeue: seq=35 ts=880 INTERMEDIATE +sys={0.060000}, mono={0.060000}: dequeue: seq=36 ts=1040 LATEST +===test_packet_lost=== +sys={0.000000}, mono={0.000000}: clock_override_set +sys={0.000000}, mono={0.000000}: enqueue 1st packet +sys={0.020000}, mono={0.020000}: clock_override_add +sys={0.020000}, mono={0.020000}: packet lost: 2nd +sys={0.040000}, mono={0.040000}: clock_override_add +sys={0.040000}, mono={0.040000}: packet lost: 3rd +sys={0.060000}, mono={0.060000}: clock_override_add +sys={0.060000}, mono={0.060000}: packet lost: 4th +sys={0.080000}, mono={0.080000}: clock_override_add +sys={0.080000}, mono={0.080000}: enqueue 5th packet +sys={0.140000}, mono={0.140000}: clock_override_add +sys={0.140000}, mono={0.140000}: dequeue: seq=33 ts=560 INTERMEDIATE +sys={0.140000}, mono={0.140000}: dequeue: seq=34 ts=720 LATEST +===test_packet_drop=== +sys={0.000000}, mono={0.000000}: clock_override_set +sys={0.000000}, mono={0.000000}: enqueue 1st packet +sys={0.020000}, mono={0.020000}: clock_override_add +sys={0.020000}, mono={0.020000}: enqueue 2nd packet +sys={0.040000}, mono={0.040000}: clock_override_add +sys={0.040000}, mono={0.040000}: enqueue 3rd packet +sys={0.060000}, mono={0.060000}: clock_override_add +sys={0.060000}, mono={0.060000}: enqueue 4th packet +sys={0.060000}, mono={0.060000}: dequeue: seq=33 ts=560 INTERMEDIATE +sys={0.160000}, mono={0.160000}: clock_override_add +sys={0.160000}, mono={0.160000}: next packet should be dropped, too late +sys={0.160000}, mono={0.160000}: next packet should be enqueued +sys={0.160000}, mono={0.160000}: dequeue: seq=34 ts=720 INTERMEDIATE +sys={0.160000}, mono={0.160000}: dequeue: seq=35 ts=880 INTERMEDIATE +sys={0.160000}, mono={0.160000}: dequeue: seq=36 ts=1040 INTERMEDIATE +sys={0.160000}, mono={0.160000}: dequeue: seq=38 ts=1360 LATEST +===test_packet_out_of_order=== +sys={0.000000}, mono={0.000000}: clock_override_set +sys={0.000000}, mono={0.000000}: enqueue 1st packet +sys={0.040000}, mono={0.040000}: clock_override_add +sys={0.040000}, mono={0.040000}: enqueue 3rd packet +sys={0.040000}, mono={0.040000}: enqueue 2nd packet +sys={0.100000}, mono={0.100000}: clock_override_add +sys={0.100000}, mono={0.100000}: dequeue: seq=33 ts=560 INTERMEDIATE +sys={0.100000}, mono={0.100000}: dequeue: seq=34 ts=720 INTERMEDIATE +sys={0.100000}, mono={0.100000}: dequeue: seq=35 ts=880 LATEST +===test_start_2nd_packet=== +sys={0.000000}, mono={0.000000}: clock_override_set +sys={0.000000}, mono={0.000000}: 1st packet is not yet enqueued +sys={0.040000}, mono={0.040000}: clock_override_add +sys={0.040000}, mono={0.040000}: 2nd packet is enqueuded as first +sys={0.040000}, mono={0.040000}: 1st packet is enqueuded as second, should be enqueued with preference +sys={0.080000}, mono={0.080000}: clock_override_add +sys={0.080000}, mono={0.080000}: dequeue: seq=33 ts=560 INTERMEDIATE +sys={0.100000}, mono={0.100000}: clock_override_add +sys={0.100000}, mono={0.100000}: dequeue: seq=34 ts=720 LATEST +===test_buffer_threshold_change=== +sys={0.000000}, mono={0.000000}: clock_override_set +sys={0.000000}, mono={0.000000}: enqueue 1st packet +sys={0.020000}, mono={0.020000}: clock_override_add +sys={0.020000}, mono={0.020000}: enqueue 2nd packet +sys={0.040000}, mono={0.040000}: clock_override_add +sys={0.040000}, mono={0.040000}: enqueue 3rd packet +sys={0.060000}, mono={0.060000}: clock_override_add +sys={0.060000}, mono={0.060000}: enqueue 4th packet +sys={0.060000}, mono={0.060000}: dequeue: seq=33 ts=560 INTERMEDIATE +sys={0.160000}, mono={0.160000}: clock_override_add +sys={0.160000}, mono={0.160000}: next packet should be dropped, too late +sys={0.180000}, mono={0.180000}: clock_override_add +sys={0.180000}, mono={0.180000}: next packet is dropped, but buffer is increased +sys={0.200000}, mono={0.200000}: clock_override_add +sys={0.200000}, mono={0.200000}: next packet is enqueued since the buffer increased +sys={0.200000}, mono={0.200000}: dequeue: seq=34 ts=720 INTERMEDIATE +sys={0.200000}, mono={0.200000}: dequeue: seq=35 ts=880 INTERMEDIATE +sys={0.200000}, mono={0.200000}: dequeue: seq=36 ts=1040 INTERMEDIATE +sys={0.200000}, mono={0.200000}: dequeue: seq=39 ts=1520 LATEST +sys={0.200000}, mono={0.200000}: Enqueue late packets +sys={0.200000}, mono={0.200000}: Run perfectly for a while, buffer should decrease +sys={0.220000}, mono={0.220000}: clock_override_add +sys={0.220000}, mono={0.220000}: dequeue: seq=40 ts=1680 INTERMEDIATE +sys={0.240000}, mono={0.240000}: clock_override_add +sys={0.240000}, mono={0.240000}: dequeue: seq=41 ts=1840 INTERMEDIATE +sys={0.260000}, mono={0.260000}: clock_override_add +sys={0.260000}, mono={0.260000}: dequeue: seq=42 ts=2000 INTERMEDIATE +sys={0.280000}, mono={0.280000}: clock_override_add +sys={0.280000}, mono={0.280000}: dequeue: seq=43 ts=2160 INTERMEDIATE +sys={0.300000}, mono={0.300000}: clock_override_add +sys={0.300000}, mono={0.300000}: dequeue: seq=44 ts=2320 INTERMEDIATE +sys={0.320000}, mono={0.320000}: clock_override_add +sys={0.320000}, mono={0.320000}: dequeue: seq=45 ts=2480 INTERMEDIATE +sys={0.340000}, mono={0.340000}: clock_override_add +sys={0.340000}, mono={0.340000}: dequeue: seq=46 ts=2640 INTERMEDIATE +sys={0.360000}, mono={0.360000}: clock_override_add +sys={0.360000}, mono={0.360000}: dequeue: seq=47 ts=2800 INTERMEDIATE +sys={0.380000}, mono={0.380000}: clock_override_add +sys={0.380000}, mono={0.380000}: dequeue: seq=48 ts=2960 INTERMEDIATE +sys={0.400000}, mono={0.400000}: clock_override_add +sys={0.400000}, mono={0.400000}: dequeue: seq=49 ts=3120 INTERMEDIATE +sys={0.420000}, mono={0.420000}: clock_override_add +sys={0.420000}, mono={0.420000}: dequeue: seq=50 ts=3280 INTERMEDIATE +sys={0.440000}, mono={0.440000}: clock_override_add +sys={0.440000}, mono={0.440000}: dequeue: seq=51 ts=3440 INTERMEDIATE +sys={0.460000}, mono={0.460000}: clock_override_add +sys={0.460000}, mono={0.460000}: dequeue: seq=52 ts=3600 INTERMEDIATE +sys={0.480000}, mono={0.480000}: clock_override_add +sys={0.480000}, mono={0.480000}: dequeue: seq=53 ts=3760 INTERMEDIATE +sys={0.500000}, mono={0.500000}: clock_override_add +sys={0.500000}, mono={0.500000}: dequeue: seq=54 ts=3920 INTERMEDIATE +sys={0.520000}, mono={0.520000}: clock_override_add +sys={0.520000}, mono={0.520000}: dequeue: seq=55 ts=4080 INTERMEDIATE +sys={0.540000}, mono={0.540000}: clock_override_add +sys={0.540000}, mono={0.540000}: dequeue: seq=56 ts=4240 INTERMEDIATE +sys={0.560000}, mono={0.560000}: clock_override_add +sys={0.560000}, mono={0.560000}: dequeue: seq=57 ts=4400 INTERMEDIATE +sys={0.580000}, mono={0.580000}: clock_override_add +sys={0.580000}, mono={0.580000}: dequeue: seq=58 ts=4560 INTERMEDIATE +sys={0.600000}, mono={0.600000}: clock_override_add +sys={0.600000}, mono={0.600000}: dequeue: seq=59 ts=4720 INTERMEDIATE +sys={0.620000}, mono={0.620000}: clock_override_add +sys={0.620000}, mono={0.620000}: dequeue: seq=60 ts=4880 INTERMEDIATE +sys={0.640000}, mono={0.640000}: clock_override_add +sys={0.640000}, mono={0.640000}: dequeue: seq=61 ts=5040 INTERMEDIATE +sys={0.660000}, mono={0.660000}: clock_override_add +sys={0.660000}, mono={0.660000}: dequeue: seq=62 ts=5200 INTERMEDIATE +sys={0.680000}, mono={0.680000}: clock_override_add +sys={0.680000}, mono={0.680000}: dequeue: seq=63 ts=5360 INTERMEDIATE +sys={0.700000}, mono={0.700000}: clock_override_add +sys={0.700000}, mono={0.700000}: dequeue: seq=64 ts=5520 INTERMEDIATE +sys={0.720000}, mono={0.720000}: clock_override_add +sys={0.720000}, mono={0.720000}: dequeue: seq=65 ts=5680 INTERMEDIATE +sys={0.740000}, mono={0.740000}: clock_override_add +sys={0.740000}, mono={0.740000}: dequeue: seq=66 ts=5840 INTERMEDIATE +sys={0.760000}, mono={0.760000}: clock_override_add +sys={0.760000}, mono={0.760000}: dequeue: seq=67 ts=6000 INTERMEDIATE +sys={0.780000}, mono={0.780000}: clock_override_add +sys={0.780000}, mono={0.780000}: dequeue: seq=68 ts=6160 INTERMEDIATE +sys={0.800000}, mono={0.800000}: clock_override_add +sys={0.800000}, mono={0.800000}: dequeue: seq=69 ts=6320 INTERMEDIATE +sys={0.820000}, mono={0.820000}: clock_override_add +sys={0.820000}, mono={0.820000}: dequeue: seq=70 ts=6480 INTERMEDIATE +sys={0.840000}, mono={0.840000}: clock_override_add +sys={0.840000}, mono={0.840000}: dequeue: seq=71 ts=6640 INTERMEDIATE +sys={0.860000}, mono={0.860000}: clock_override_add +sys={0.860000}, mono={0.860000}: dequeue: seq=72 ts=6800 INTERMEDIATE +sys={0.880000}, mono={0.880000}: clock_override_add +sys={0.880000}, mono={0.880000}: dequeue: seq=73 ts=6960 INTERMEDIATE +sys={0.900000}, mono={0.900000}: clock_override_add +sys={0.900000}, mono={0.900000}: dequeue: seq=74 ts=7120 INTERMEDIATE +sys={0.920000}, mono={0.920000}: clock_override_add +sys={0.920000}, mono={0.920000}: dequeue: seq=75 ts=7280 INTERMEDIATE +sys={0.940000}, mono={0.940000}: clock_override_add +sys={0.940000}, mono={0.940000}: dequeue: seq=76 ts=7440 INTERMEDIATE +sys={0.960000}, mono={0.960000}: clock_override_add +sys={0.960000}, mono={0.960000}: dequeue: seq=77 ts=7600 INTERMEDIATE +sys={0.980000}, mono={0.980000}: clock_override_add +sys={0.980000}, mono={0.980000}: dequeue: seq=78 ts=7760 INTERMEDIATE +sys={1.000000}, mono={1.000000}: clock_override_add +sys={1.000000}, mono={1.000000}: dequeue: seq=79 ts=7920 INTERMEDIATE +sys={1.020000}, mono={1.020000}: clock_override_add +sys={1.020000}, mono={1.020000}: dequeue: seq=80 ts=8080 INTERMEDIATE +sys={1.040000}, mono={1.040000}: clock_override_add +sys={1.040000}, mono={1.040000}: dequeue: seq=81 ts=8240 INTERMEDIATE +sys={1.060000}, mono={1.060000}: clock_override_add +sys={1.060000}, mono={1.060000}: dequeue: seq=82 ts=8400 INTERMEDIATE +sys={1.080000}, mono={1.080000}: clock_override_add +sys={1.080000}, mono={1.080000}: dequeue: seq=83 ts=8560 INTERMEDIATE +sys={1.100000}, mono={1.100000}: clock_override_add +sys={1.100000}, mono={1.100000}: dequeue: seq=84 ts=8720 INTERMEDIATE +sys={1.120000}, mono={1.120000}: clock_override_add +sys={1.120000}, mono={1.120000}: dequeue: seq=85 ts=8880 INTERMEDIATE +sys={1.140000}, mono={1.140000}: clock_override_add +sys={1.140000}, mono={1.140000}: dequeue: seq=86 ts=9040 INTERMEDIATE +sys={1.160000}, mono={1.160000}: clock_override_add +sys={1.160000}, mono={1.160000}: dequeue: seq=87 ts=9200 INTERMEDIATE +sys={1.180000}, mono={1.180000}: clock_override_add +sys={1.180000}, mono={1.180000}: dequeue: seq=88 ts=9360 INTERMEDIATE +sys={1.200000}, mono={1.200000}: clock_override_add +sys={1.200000}, mono={1.200000}: dequeue: seq=89 ts=9520 INTERMEDIATE +sys={1.220000}, mono={1.220000}: clock_override_add +sys={1.220000}, mono={1.220000}: dequeue: seq=90 ts=9680 INTERMEDIATE +sys={1.240000}, mono={1.240000}: clock_override_add +sys={1.240000}, mono={1.240000}: dequeue: seq=91 ts=9840 INTERMEDIATE +sys={1.260000}, mono={1.260000}: clock_override_add +sys={1.260000}, mono={1.260000}: dequeue: seq=92 ts=10000 INTERMEDIATE +sys={1.280000}, mono={1.280000}: clock_override_add +sys={1.280000}, mono={1.280000}: dequeue: seq=93 ts=10160 INTERMEDIATE +sys={1.300000}, mono={1.300000}: clock_override_add +sys={1.300000}, mono={1.300000}: dequeue: seq=94 ts=10320 INTERMEDIATE +sys={1.320000}, mono={1.320000}: clock_override_add +sys={1.320000}, mono={1.320000}: dequeue: seq=95 ts=10480 INTERMEDIATE +sys={1.340000}, mono={1.340000}: clock_override_add +sys={1.340000}, mono={1.340000}: dequeue: seq=96 ts=10640 INTERMEDIATE +sys={1.360000}, mono={1.360000}: clock_override_add +sys={1.360000}, mono={1.360000}: dequeue: seq=97 ts=10800 INTERMEDIATE +sys={1.380000}, mono={1.380000}: clock_override_add +sys={1.380000}, mono={1.380000}: dequeue: seq=98 ts=10960 INTERMEDIATE +sys={1.400000}, mono={1.400000}: clock_override_add +sys={1.400000}, mono={1.400000}: dequeue: seq=99 ts=11120 INTERMEDIATE +sys={1.420000}, mono={1.420000}: clock_override_add +sys={1.420000}, mono={1.420000}: dequeue: seq=100 ts=11280 INTERMEDIATE +sys={1.440000}, mono={1.440000}: clock_override_add +sys={1.440000}, mono={1.440000}: dequeue: seq=101 ts=11440 INTERMEDIATE +sys={1.460000}, mono={1.460000}: clock_override_add +sys={1.460000}, mono={1.460000}: dequeue: seq=102 ts=11600 INTERMEDIATE +sys={1.480000}, mono={1.480000}: clock_override_add +sys={1.480000}, mono={1.480000}: dequeue: seq=103 ts=11760 INTERMEDIATE +sys={1.500000}, mono={1.500000}: clock_override_add +sys={1.500000}, mono={1.500000}: dequeue: seq=104 ts=11920 INTERMEDIATE +sys={1.520000}, mono={1.520000}: clock_override_add +sys={1.520000}, mono={1.520000}: dequeue: seq=105 ts=12080 INTERMEDIATE +sys={1.540000}, mono={1.540000}: clock_override_add +sys={1.540000}, mono={1.540000}: dequeue: seq=106 ts=12240 INTERMEDIATE +sys={1.560000}, mono={1.560000}: clock_override_add +sys={1.560000}, mono={1.560000}: dequeue: seq=107 ts=12400 INTERMEDIATE +sys={1.580000}, mono={1.580000}: clock_override_add +sys={1.580000}, mono={1.580000}: dequeue: seq=108 ts=12560 INTERMEDIATE +sys={1.600000}, mono={1.600000}: clock_override_add +sys={1.600000}, mono={1.600000}: dequeue: seq=109 ts=12720 INTERMEDIATE +sys={1.620000}, mono={1.620000}: clock_override_add +sys={1.620000}, mono={1.620000}: dequeue: seq=110 ts=12880 INTERMEDIATE +sys={1.640000}, mono={1.640000}: clock_override_add +sys={1.640000}, mono={1.640000}: dequeue: seq=111 ts=13040 INTERMEDIATE +sys={1.660000}, mono={1.660000}: clock_override_add +sys={1.660000}, mono={1.660000}: dequeue: seq=112 ts=13200 INTERMEDIATE +sys={1.680000}, mono={1.680000}: clock_override_add +sys={1.680000}, mono={1.680000}: dequeue: seq=113 ts=13360 INTERMEDIATE +sys={1.700000}, mono={1.700000}: clock_override_add +sys={1.700000}, mono={1.700000}: dequeue: seq=114 ts=13520 INTERMEDIATE +sys={1.720000}, mono={1.720000}: clock_override_add +sys={1.720000}, mono={1.720000}: dequeue: seq=115 ts=13680 INTERMEDIATE +sys={1.740000}, mono={1.740000}: clock_override_add +sys={1.740000}, mono={1.740000}: dequeue: seq=116 ts=13840 INTERMEDIATE +sys={1.760000}, mono={1.760000}: clock_override_add +sys={1.760000}, mono={1.760000}: dequeue: seq=117 ts=14000 INTERMEDIATE +sys={1.780000}, mono={1.780000}: clock_override_add +sys={1.780000}, mono={1.780000}: dequeue: seq=118 ts=14160 INTERMEDIATE +sys={1.800000}, mono={1.800000}: clock_override_add +sys={1.800000}, mono={1.800000}: dequeue: seq=119 ts=14320 INTERMEDIATE +sys={1.820000}, mono={1.820000}: clock_override_add +sys={1.820000}, mono={1.820000}: dequeue: seq=120 ts=14480 INTERMEDIATE +sys={1.840000}, mono={1.840000}: clock_override_add +sys={1.840000}, mono={1.840000}: dequeue: seq=121 ts=14640 INTERMEDIATE +sys={1.860000}, mono={1.860000}: clock_override_add +sys={1.860000}, mono={1.860000}: dequeue: seq=122 ts=14800 INTERMEDIATE +sys={1.880000}, mono={1.880000}: clock_override_add +sys={1.880000}, mono={1.880000}: dequeue: seq=123 ts=14960 INTERMEDIATE +sys={1.900000}, mono={1.900000}: clock_override_add +sys={1.900000}, mono={1.900000}: dequeue: seq=124 ts=15120 INTERMEDIATE +sys={1.920000}, mono={1.920000}: clock_override_add +sys={1.920000}, mono={1.920000}: dequeue: seq=125 ts=15280 INTERMEDIATE +sys={1.940000}, mono={1.940000}: clock_override_add +sys={1.940000}, mono={1.940000}: dequeue: seq=126 ts=15440 INTERMEDIATE +sys={1.960000}, mono={1.960000}: clock_override_add +sys={1.960000}, mono={1.960000}: dequeue: seq=127 ts=15600 INTERMEDIATE +sys={1.980000}, mono={1.980000}: clock_override_add +sys={1.980000}, mono={1.980000}: dequeue: seq=128 ts=15760 INTERMEDIATE +sys={2.000000}, mono={2.000000}: clock_override_add +sys={2.000000}, mono={2.000000}: dequeue: seq=129 ts=15920 INTERMEDIATE +sys={2.020000}, mono={2.020000}: clock_override_add +sys={2.020000}, mono={2.020000}: dequeue: seq=130 ts=16080 INTERMEDIATE +sys={2.040000}, mono={2.040000}: clock_override_add +sys={2.040000}, mono={2.040000}: dequeue: seq=131 ts=16240 INTERMEDIATE +sys={2.060000}, mono={2.060000}: clock_override_add +sys={2.060000}, mono={2.060000}: dequeue: seq=132 ts=16400 INTERMEDIATE +sys={2.080000}, mono={2.080000}: clock_override_add +sys={2.080000}, mono={2.080000}: dequeue: seq=133 ts=16560 INTERMEDIATE +sys={2.100000}, mono={2.100000}: clock_override_add +sys={2.100000}, mono={2.100000}: dequeue: seq=134 ts=16720 INTERMEDIATE +sys={2.120000}, mono={2.120000}: clock_override_add +sys={2.120000}, mono={2.120000}: dequeue: seq=135 ts=16880 INTERMEDIATE +sys={2.140000}, mono={2.140000}: clock_override_add +sys={2.140000}, mono={2.140000}: dequeue: seq=136 ts=17040 INTERMEDIATE +sys={2.160000}, mono={2.160000}: clock_override_add +sys={2.160000}, mono={2.160000}: dequeue: seq=137 ts=17200 INTERMEDIATE +sys={2.180000}, mono={2.180000}: clock_override_add +sys={2.180000}, mono={2.180000}: dequeue: seq=138 ts=17360 INTERMEDIATE +sys={2.200000}, mono={2.200000}: clock_override_add +sys={2.200000}, mono={2.200000}: dequeue: seq=139 ts=17520 INTERMEDIATE +sys={2.200000}, mono={2.200000}: Done, checking threshold and cleaning +sys={2.270000}, mono={2.270000}: clock_override_add +sys={2.270000}, mono={2.270000}: dequeue: seq=140 ts=17680 INTERMEDIATE +sys={2.270000}, mono={2.270000}: dequeue: seq=141 ts=17840 INTERMEDIATE +sys={2.270000}, mono={2.270000}: dequeue: seq=142 ts=18000 INTERMEDIATE +sys={2.270000}, mono={2.270000}: dequeue: seq=143 ts=18160 LATEST +===test_seq_wraparound=== +sys={0.000000}, mono={0.000000}: clock_override_set +sys={0.000000}, mono={0.000000}: enqueue 1st packet (seq=65534) +sys={0.020000}, mono={0.020000}: clock_override_add +sys={0.020000}, mono={0.020000}: enqueue 2nd packet (seq=65535) +sys={0.040000}, mono={0.040000}: clock_override_add +sys={0.040000}, mono={0.040000}: enqueue 3rd packet (seq=0, wraparound) +sys={0.060000}, mono={0.060000}: clock_override_add +sys={0.060000}, mono={0.060000}: enqueue 4th packet (seq=1) +sys={0.080000}, mono={0.080000}: clock_override_add +sys={0.080000}, mono={0.080000}: enqueue 5th packet (seq=2) +sys={0.080000}, mono={0.080000}: dequeue 1st packet (seq=65534) +sys={0.080000}, mono={0.080000}: dequeue: seq=65534 ts=560 INTERMEDIATE +sys={0.100000}, mono={0.100000}: clock_override_add +sys={0.100000}, mono={0.100000}: dequeue 2nd packet (seq=65535) +sys={0.100000}, mono={0.100000}: dequeue: seq=65535 ts=720 INTERMEDIATE +sys={0.120000}, mono={0.120000}: clock_override_add +sys={0.120000}, mono={0.120000}: dequeue 3rd packet (seq=0, wraparound) +sys={0.120000}, mono={0.120000}: dequeue: seq=0 ts=880 INTERMEDIATE +sys={0.140000}, mono={0.140000}: clock_override_add +sys={0.140000}, mono={0.140000}: dequeue 4th packet (seq=1) +sys={0.140000}, mono={0.140000}: dequeue: seq=1 ts=1040 INTERMEDIATE +sys={0.160000}, mono={0.160000}: clock_override_add +sys={0.160000}, mono={0.160000}: dequeue 5th packet (seq=2) +sys={0.160000}, mono={0.160000}: dequeue: seq=2 ts=1200 LATEST +===test_timestamp_wraparound=== +sys={0.000000}, mono={0.000000}: clock_override_set +sys={0.000000}, mono={0.000000}: enqueue 1st packet (ts=4294966990) +sys={0.020000}, mono={0.020000}: clock_override_add +sys={0.020000}, mono={0.020000}: enqueue 2nd packet (ts=4294967150) +sys={0.040000}, mono={0.040000}: clock_override_add +sys={0.040000}, mono={0.040000}: enqueue 3rd packet (ts=14, wraparound) +sys={0.060000}, mono={0.060000}: clock_override_add +sys={0.060000}, mono={0.060000}: enqueue 4th packet (ts=174) +sys={0.080000}, mono={0.080000}: clock_override_add +sys={0.080000}, mono={0.080000}: enqueue 5th packet (ts=334) +sys={0.080000}, mono={0.080000}: dequeue 1st packet (ts=4294966990) +sys={0.080000}, mono={0.080000}: dequeue: seq=33 ts=4294966990 INTERMEDIATE +sys={0.100000}, mono={0.100000}: clock_override_add +sys={0.100000}, mono={0.100000}: dequeue 2nd packet (ts=4294967150) +sys={0.100000}, mono={0.100000}: dequeue: seq=34 ts=4294967150 INTERMEDIATE +sys={0.120000}, mono={0.120000}: clock_override_add +sys={0.120000}, mono={0.120000}: dequeue 3rd packet (ts=14, wraparound) +sys={0.120000}, mono={0.120000}: dequeue: seq=35 ts=14 INTERMEDIATE +sys={0.140000}, mono={0.140000}: clock_override_add +sys={0.140000}, mono={0.140000}: dequeue 4th packet (ts=174) +sys={0.140000}, mono={0.140000}: dequeue: seq=36 ts=174 INTERMEDIATE +sys={0.160000}, mono={0.160000}: clock_override_add +sys={0.160000}, mono={0.160000}: dequeue 5th packet (ts=334) +sys={0.160000}, mono={0.160000}: dequeue: seq=37 ts=334 LATEST +OK: Test passed diff --git a/tests/testsuite.at b/tests/testsuite.at index d0e55f6..81d40ba 100644 --- a/tests/testsuite.at +++ b/tests/testsuite.at @@ -6,3 +6,9 @@ cat $abs_srcdir/osmux/osmux_test.ok > expout AT_CHECK([$abs_top_builddir/tests/osmux/osmux_test], [0], [expout], [ignore]) AT_CLEANUP + +AT_SETUP([jibuf_test]) +AT_KEYWORDS([jibuf_test]) +cat $abs_srcdir/jibuf/jibuf_test.ok > expout +AT_CHECK([$abs_top_builddir/tests/jibuf/jibuf_test], [0], [expout], [ignore]) +AT_CLEANUP -- To view, visit https://gerrit.osmocom.org/7773 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: I9688ba9c4d5b733b9f29d0f15f73750f9271ef55 Gerrit-PatchSet: 2 Gerrit-Project: libosmo-netif Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Pau Espin Pedrol From gerrit-no-reply at lists.osmocom.org Mon Apr 16 15:15:01 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Mon, 16 Apr 2018 15:15:01 +0000 Subject: [MERGED] libosmo-netif[master]: jibuf: Estimate src clock skew In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: jibuf: Estimate src clock skew ...................................................................... jibuf: Estimate src clock skew Change-Id: Ifae633d53107417a8e2f9b0f200d2711db72d199 --- M include/osmocom/netif/jibuf.h M src/jibuf.c M tests/jibuf/jibuf_test.c M tests/jibuf/jibuf_test.ok M tests/jibuf/jibuf_tool.c M tests/jibuf/jitter.plt 6 files changed, 1,005 insertions(+), 13 deletions(-) Approvals: Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/include/osmocom/netif/jibuf.h b/include/osmocom/netif/jibuf.h index 6273983..dff8309 100644 --- a/include/osmocom/netif/jibuf.h +++ b/include/osmocom/netif/jibuf.h @@ -40,6 +40,9 @@ struct timeval last_enqueue_time; struct timeval next_dequeue_time; + bool skew_enabled; + int32_t skew_us; /* src clock skew, in usec */ + struct { uint32_t total_enqueued; uint64_t total_dropped; @@ -58,6 +61,8 @@ void osmo_jibuf_set_min_delay(struct osmo_jibuf *jb, uint32_t min_delay); void osmo_jibuf_set_max_delay(struct osmo_jibuf *jb, uint32_t max_delay); +void osmo_jibuf_enable_skew_compensation(struct osmo_jibuf *jb, bool enable); + void osmo_jibuf_set_dequeue_cb(struct osmo_jibuf *jb, osmo_jibuf_dequeue_cb dequeue_cb, void* cb_data); /*! @} */ diff --git a/src/jibuf.c b/src/jibuf.c index 774ddfc..45019ae 100644 --- a/src/jibuf.c +++ b/src/jibuf.c @@ -60,6 +60,9 @@ #define JIBUF_BUFFER_INC_STEP 20 #define JIBUF_BUFFER_DEC_STEP 5 +/* weight of each new packet in calculation of clock skew */ +#define JIBUF_SKEW_WEIGHT ((double)1/32) + struct osmo_jibuf_msgb_cb { struct timeval ts; unsigned long *old_cb; @@ -178,6 +181,7 @@ jb->ref_rx_ts = timeval2ms(&jb->last_enqueue_time); jb->ref_tx_ts = msg_get_timestamp(msg); jb->ref_tx_seq = msg_get_sequence(msg); + jb->skew_us = 0; LOGP(DLJIBUF, LOGL_DEBUG, "New reference (seq=%"PRIu16" rx=%"PRIu32 \ " tx=%"PRIu32")\n", jb->ref_tx_seq, jb->ref_rx_ts, jb->ref_tx_ts); @@ -216,6 +220,14 @@ /* XXX: maybe try to tune the threshold based on the calculated output jitter? */ /* XXX: try to find holes in the list and create fake pkts to improve the jitter when packets do not arrive on time */ +} + +static void recalc_clock_skew(struct osmo_jibuf *jb, int32_t rel_delay) +{ + if(!jb->skew_enabled) + return; + + jb->skew_us = (int32_t) (rel_delay * 1000 * JIBUF_SKEW_WEIGHT + jb->skew_us * (1.0 - JIBUF_SKEW_WEIGHT)); } static void recalc_threshold_delay(struct osmo_jibuf *jb) @@ -312,6 +324,7 @@ rel_delay = 0; } else { rel_delay = calc_pkt_rel_delay(jb, msg); + recalc_clock_skew(jb, rel_delay); } /* Avoid time skew with sender (or drop-everything state), @@ -319,7 +332,7 @@ //if ((int)(msg_get_sequence(msg) - jb->ref_tx_seq) > JIBUF_REFERENCE_TS_FREQ) // msg_set_as_reference(jb, msg); - delay = jb->threshold_delay + rel_delay; + delay = jb->threshold_delay + rel_delay - jb->skew_us/1000; /* packet too late, let's drop it and incr buffer size if encouraged */ if (delay < 0) { @@ -341,8 +354,8 @@ timeradd(&jb->last_enqueue_time, &delay_ts, &sched_ts); LOGP(DLJIBUF, LOGL_DEBUG, "enqueuing packet seq=%"PRIu16" rel=%d delay=%d" \ - " thres=%d {%lu.%06lu -> %lu.%06lu} %s\n", - msg_get_sequence(msg), rel_delay, delay, jb->threshold_delay, + " skew=%d thres=%d {%lu.%06lu -> %lu.%06lu} %s\n", + msg_get_sequence(msg), rel_delay, delay, jb->skew_us, jb->threshold_delay, jb->last_enqueue_time.tv_sec, jb->last_enqueue_time.tv_usec, sched_ts.tv_sec, sched_ts.tv_usec, msg_get_marker(msg)? "M" : ""); @@ -397,6 +410,18 @@ jb->threshold_delay = OSMO_MIN(jb->max_delay, jb->threshold_delay); } +/*! \brief Toggle use of skew detection and compensation mechanism + * \param[in] jb jitter buffer instance + * \param[in] enable Whether to enable or not (default) the skew estimation and compensation mechanism + * + * When this function is called, the estimated skew is reset. + */ +void osmo_jibuf_enable_skew_compensation(struct osmo_jibuf *jb, bool enable) +{ + jb->skew_enabled = enable; + jb->skew_us = 0; +} + /*! \brief Set dequeue callback for the jitter buffer * \param[in] jb jitter buffer instance * \param[in] dequeue_cb function pointer to call back when the dequeue timer for a given packet expires diff --git a/tests/jibuf/jibuf_test.c b/tests/jibuf/jibuf_test.c index cbfe0af..8771eeb 100644 --- a/tests/jibuf/jibuf_test.c +++ b/tests/jibuf/jibuf_test.c @@ -127,13 +127,14 @@ clock_debug("clock_override_set"); } -static void clock_override_add(long sec, long usec) +static void clock_override_add_debug(long sec, long usec, bool dbg) { osmo_gettimeofday_override_add(sec, usec); osmo_clock_override_add(CLOCK_MONOTONIC, sec, usec*1000); - clock_debug("clock_override_add"); + if (dbg) + clock_debug("clock_override_add"); } - +#define clock_override_add(sec, usec) clock_override_add_debug(sec, usec, true) static void dequeue_cb(struct msgb *msg, void *data) { @@ -684,6 +685,48 @@ osmo_jibuf_delete(jb); } + +void test_skew(unsigned int skew_inc_us, bool skew_compensation) { + int min_delay = 40; + unsigned int dropped = 0; + struct msgb *msg; + int i; + char buf[250]; + + printf("===test_skew(%u, %d)===\n", skew_inc_us, skew_compensation); + + clock_override_enable(true); + clock_override_set(0, 0); + rtp_init(32, 400); + jb = osmo_jibuf_alloc(NULL); + osmo_jibuf_set_dequeue_cb(jb, dequeue_cb, NULL); + osmo_jibuf_set_min_delay(jb, min_delay); + /*set buffer static, otherwise will grow with drops and enqueue some more packets: */ + osmo_jibuf_set_max_delay(jb, min_delay); + osmo_jibuf_enable_skew_compensation(jb, skew_compensation); + + /* If no skew compensation is used, jitterbuffer should start dropping + * packets (all too late) after around min_delay*1000/skew_inc_us packets. */ + for (i = 0; iskew_us); + } else { + OSMO_ASSERT(dropped); + OSMO_ASSERT(!jb->skew_us); + } +} + int main(int argc, char **argv) { @@ -712,6 +755,8 @@ test_rtp_out_of_sync(80*TIME_RTP_PKT_MS, 5, 5*SAMPLES_PER_PKT, true); test_rtp_out_of_sync(80*TIME_RTP_PKT_MS, 6, 5*SAMPLES_PER_PKT, false); test_rtp_out_of_sync(80*TIME_RTP_PKT_MS, 5, 5*SAMPLES_PER_PKT + 3, false); + test_skew(100, false); + test_skew(100, true); fprintf(stdout, "OK: Test passed\n"); return EXIT_SUCCESS; diff --git a/tests/jibuf/jibuf_test.ok b/tests/jibuf/jibuf_test.ok index a152d24..e495435 100644 --- a/tests/jibuf/jibuf_test.ok +++ b/tests/jibuf/jibuf_test.ok @@ -409,4 +409,908 @@ sys={1.700000}, mono={1.700000}: clock_override_add sys={1.700000}, mono={1.700000}: dequeue: seq=39 ts=1523 INTERMEDIATE sys={1.700000}, mono={1.700000}: dequeue: seq=40 ts=1683 LATEST +===test_skew(100, 0)=== +sys={0.000000}, mono={0.000000}: clock_override_set +sys={0.000000}, mono={0.000000}: enqueue packet 0 (accum_skew_us = 0) +sys={0.020100}, mono={0.020100}: enqueue packet 1 (accum_skew_us = 100) +sys={0.040200}, mono={0.040200}: enqueue packet 2 (accum_skew_us = 200) +sys={0.060300}, mono={0.060300}: enqueue packet 3 (accum_skew_us = 300) +sys={0.080400}, mono={0.080400}: enqueue packet 4 (accum_skew_us = 400) +sys={0.100500}, mono={0.100500}: enqueue packet 5 (accum_skew_us = 500) +sys={0.120600}, mono={0.120600}: enqueue packet 6 (accum_skew_us = 600) +sys={0.140700}, mono={0.140700}: enqueue packet 7 (accum_skew_us = 700) +sys={0.160800}, mono={0.160800}: enqueue packet 8 (accum_skew_us = 800) +sys={0.180900}, mono={0.180900}: enqueue packet 9 (accum_skew_us = 900) +sys={0.201000}, mono={0.201000}: enqueue packet 10 (accum_skew_us = 1000) +sys={0.221100}, mono={0.221100}: enqueue packet 11 (accum_skew_us = 1100) +sys={0.241200}, mono={0.241200}: enqueue packet 12 (accum_skew_us = 1200) +sys={0.261300}, mono={0.261300}: enqueue packet 13 (accum_skew_us = 1300) +sys={0.281400}, mono={0.281400}: enqueue packet 14 (accum_skew_us = 1400) +sys={0.301500}, mono={0.301500}: enqueue packet 15 (accum_skew_us = 1500) +sys={0.321600}, mono={0.321600}: enqueue packet 16 (accum_skew_us = 1600) +sys={0.341700}, mono={0.341700}: enqueue packet 17 (accum_skew_us = 1700) +sys={0.361800}, mono={0.361800}: enqueue packet 18 (accum_skew_us = 1800) +sys={0.381900}, mono={0.381900}: enqueue packet 19 (accum_skew_us = 1900) +sys={0.402000}, mono={0.402000}: enqueue packet 20 (accum_skew_us = 2000) +sys={0.422100}, mono={0.422100}: enqueue packet 21 (accum_skew_us = 2100) +sys={0.442200}, mono={0.442200}: enqueue packet 22 (accum_skew_us = 2200) +sys={0.462300}, mono={0.462300}: enqueue packet 23 (accum_skew_us = 2300) +sys={0.482400}, mono={0.482400}: enqueue packet 24 (accum_skew_us = 2400) +sys={0.502500}, mono={0.502500}: enqueue packet 25 (accum_skew_us = 2500) +sys={0.522600}, mono={0.522600}: enqueue packet 26 (accum_skew_us = 2600) +sys={0.542700}, mono={0.542700}: enqueue packet 27 (accum_skew_us = 2700) +sys={0.562800}, mono={0.562800}: enqueue packet 28 (accum_skew_us = 2800) +sys={0.582900}, mono={0.582900}: enqueue packet 29 (accum_skew_us = 2900) +sys={0.603000}, mono={0.603000}: enqueue packet 30 (accum_skew_us = 3000) +sys={0.623100}, mono={0.623100}: enqueue packet 31 (accum_skew_us = 3100) +sys={0.643200}, mono={0.643200}: enqueue packet 32 (accum_skew_us = 3200) +sys={0.663300}, mono={0.663300}: enqueue packet 33 (accum_skew_us = 3300) +sys={0.683400}, mono={0.683400}: enqueue packet 34 (accum_skew_us = 3400) +sys={0.703500}, mono={0.703500}: enqueue packet 35 (accum_skew_us = 3500) +sys={0.723600}, mono={0.723600}: enqueue packet 36 (accum_skew_us = 3600) +sys={0.743700}, mono={0.743700}: enqueue packet 37 (accum_skew_us = 3700) +sys={0.763800}, mono={0.763800}: enqueue packet 38 (accum_skew_us = 3800) +sys={0.783900}, mono={0.783900}: enqueue packet 39 (accum_skew_us = 3900) +sys={0.804000}, mono={0.804000}: enqueue packet 40 (accum_skew_us = 4000) +sys={0.824100}, mono={0.824100}: enqueue packet 41 (accum_skew_us = 4100) +sys={0.844200}, mono={0.844200}: enqueue packet 42 (accum_skew_us = 4200) +sys={0.864300}, mono={0.864300}: enqueue packet 43 (accum_skew_us = 4300) +sys={0.884400}, mono={0.884400}: enqueue packet 44 (accum_skew_us = 4400) +sys={0.904500}, mono={0.904500}: enqueue packet 45 (accum_skew_us = 4500) +sys={0.924600}, mono={0.924600}: enqueue packet 46 (accum_skew_us = 4600) +sys={0.944700}, mono={0.944700}: enqueue packet 47 (accum_skew_us = 4700) +sys={0.964800}, mono={0.964800}: enqueue packet 48 (accum_skew_us = 4800) +sys={0.984900}, mono={0.984900}: enqueue packet 49 (accum_skew_us = 4900) +sys={1.005000}, mono={1.005000}: enqueue packet 50 (accum_skew_us = 5000) +sys={1.025100}, mono={1.025100}: enqueue packet 51 (accum_skew_us = 5100) +sys={1.045200}, mono={1.045200}: enqueue packet 52 (accum_skew_us = 5200) +sys={1.065300}, mono={1.065300}: enqueue packet 53 (accum_skew_us = 5300) +sys={1.085400}, mono={1.085400}: enqueue packet 54 (accum_skew_us = 5400) +sys={1.105500}, mono={1.105500}: enqueue packet 55 (accum_skew_us = 5500) +sys={1.125600}, mono={1.125600}: enqueue packet 56 (accum_skew_us = 5600) +sys={1.145700}, mono={1.145700}: enqueue packet 57 (accum_skew_us = 5700) +sys={1.165800}, mono={1.165800}: enqueue packet 58 (accum_skew_us = 5800) +sys={1.185900}, mono={1.185900}: enqueue packet 59 (accum_skew_us = 5900) +sys={1.206000}, mono={1.206000}: enqueue packet 60 (accum_skew_us = 6000) +sys={1.226100}, mono={1.226100}: enqueue packet 61 (accum_skew_us = 6100) +sys={1.246200}, mono={1.246200}: enqueue packet 62 (accum_skew_us = 6200) +sys={1.266300}, mono={1.266300}: enqueue packet 63 (accum_skew_us = 6300) +sys={1.286400}, mono={1.286400}: enqueue packet 64 (accum_skew_us = 6400) +sys={1.306500}, mono={1.306500}: enqueue packet 65 (accum_skew_us = 6500) +sys={1.326600}, mono={1.326600}: enqueue packet 66 (accum_skew_us = 6600) +sys={1.346700}, mono={1.346700}: enqueue packet 67 (accum_skew_us = 6700) +sys={1.366800}, mono={1.366800}: enqueue packet 68 (accum_skew_us = 6800) +sys={1.386900}, mono={1.386900}: enqueue packet 69 (accum_skew_us = 6900) +sys={1.407000}, mono={1.407000}: enqueue packet 70 (accum_skew_us = 7000) +sys={1.427100}, mono={1.427100}: enqueue packet 71 (accum_skew_us = 7100) +sys={1.447200}, mono={1.447200}: enqueue packet 72 (accum_skew_us = 7200) +sys={1.467300}, mono={1.467300}: enqueue packet 73 (accum_skew_us = 7300) +sys={1.487400}, mono={1.487400}: enqueue packet 74 (accum_skew_us = 7400) +sys={1.507500}, mono={1.507500}: enqueue packet 75 (accum_skew_us = 7500) +sys={1.527600}, mono={1.527600}: enqueue packet 76 (accum_skew_us = 7600) +sys={1.547700}, mono={1.547700}: enqueue packet 77 (accum_skew_us = 7700) +sys={1.567800}, mono={1.567800}: enqueue packet 78 (accum_skew_us = 7800) +sys={1.587900}, mono={1.587900}: enqueue packet 79 (accum_skew_us = 7900) +sys={1.608000}, mono={1.608000}: enqueue packet 80 (accum_skew_us = 8000) +sys={1.628100}, mono={1.628100}: enqueue packet 81 (accum_skew_us = 8100) +sys={1.648200}, mono={1.648200}: enqueue packet 82 (accum_skew_us = 8200) +sys={1.668300}, mono={1.668300}: enqueue packet 83 (accum_skew_us = 8300) +sys={1.688400}, mono={1.688400}: enqueue packet 84 (accum_skew_us = 8400) +sys={1.708500}, mono={1.708500}: enqueue packet 85 (accum_skew_us = 8500) +sys={1.728600}, mono={1.728600}: enqueue packet 86 (accum_skew_us = 8600) +sys={1.748700}, mono={1.748700}: enqueue packet 87 (accum_skew_us = 8700) +sys={1.768800}, mono={1.768800}: enqueue packet 88 (accum_skew_us = 8800) +sys={1.788900}, mono={1.788900}: enqueue packet 89 (accum_skew_us = 8900) +sys={1.809000}, mono={1.809000}: enqueue packet 90 (accum_skew_us = 9000) +sys={1.829100}, mono={1.829100}: enqueue packet 91 (accum_skew_us = 9100) +sys={1.849200}, mono={1.849200}: enqueue packet 92 (accum_skew_us = 9200) +sys={1.869300}, mono={1.869300}: enqueue packet 93 (accum_skew_us = 9300) +sys={1.889400}, mono={1.889400}: enqueue packet 94 (accum_skew_us = 9400) +sys={1.909500}, mono={1.909500}: enqueue packet 95 (accum_skew_us = 9500) +sys={1.929600}, mono={1.929600}: enqueue packet 96 (accum_skew_us = 9600) +sys={1.949700}, mono={1.949700}: enqueue packet 97 (accum_skew_us = 9700) +sys={1.969800}, mono={1.969800}: enqueue packet 98 (accum_skew_us = 9800) +sys={1.989900}, mono={1.989900}: enqueue packet 99 (accum_skew_us = 9900) +sys={2.010000}, mono={2.010000}: enqueue packet 100 (accum_skew_us = 10000) +sys={2.030100}, mono={2.030100}: enqueue packet 101 (accum_skew_us = 10100) +sys={2.050200}, mono={2.050200}: enqueue packet 102 (accum_skew_us = 10200) +sys={2.070300}, mono={2.070300}: enqueue packet 103 (accum_skew_us = 10300) +sys={2.090400}, mono={2.090400}: enqueue packet 104 (accum_skew_us = 10400) +sys={2.110500}, mono={2.110500}: enqueue packet 105 (accum_skew_us = 10500) +sys={2.130600}, mono={2.130600}: enqueue packet 106 (accum_skew_us = 10600) +sys={2.150700}, mono={2.150700}: enqueue packet 107 (accum_skew_us = 10700) +sys={2.170800}, mono={2.170800}: enqueue packet 108 (accum_skew_us = 10800) +sys={2.190900}, mono={2.190900}: enqueue packet 109 (accum_skew_us = 10900) +sys={2.211000}, mono={2.211000}: enqueue packet 110 (accum_skew_us = 11000) +sys={2.231100}, mono={2.231100}: enqueue packet 111 (accum_skew_us = 11100) +sys={2.251200}, mono={2.251200}: enqueue packet 112 (accum_skew_us = 11200) +sys={2.271300}, mono={2.271300}: enqueue packet 113 (accum_skew_us = 11300) +sys={2.291400}, mono={2.291400}: enqueue packet 114 (accum_skew_us = 11400) +sys={2.311500}, mono={2.311500}: enqueue packet 115 (accum_skew_us = 11500) +sys={2.331600}, mono={2.331600}: enqueue packet 116 (accum_skew_us = 11600) +sys={2.351700}, mono={2.351700}: enqueue packet 117 (accum_skew_us = 11700) +sys={2.371800}, mono={2.371800}: enqueue packet 118 (accum_skew_us = 11800) +sys={2.391900}, mono={2.391900}: enqueue packet 119 (accum_skew_us = 11900) +sys={2.412000}, mono={2.412000}: enqueue packet 120 (accum_skew_us = 12000) +sys={2.432100}, mono={2.432100}: enqueue packet 121 (accum_skew_us = 12100) +sys={2.452200}, mono={2.452200}: enqueue packet 122 (accum_skew_us = 12200) +sys={2.472300}, mono={2.472300}: enqueue packet 123 (accum_skew_us = 12300) +sys={2.492400}, mono={2.492400}: enqueue packet 124 (accum_skew_us = 12400) +sys={2.512500}, mono={2.512500}: enqueue packet 125 (accum_skew_us = 12500) +sys={2.532600}, mono={2.532600}: enqueue packet 126 (accum_skew_us = 12600) +sys={2.552700}, mono={2.552700}: enqueue packet 127 (accum_skew_us = 12700) +sys={2.572800}, mono={2.572800}: enqueue packet 128 (accum_skew_us = 12800) +sys={2.592900}, mono={2.592900}: enqueue packet 129 (accum_skew_us = 12900) +sys={2.613000}, mono={2.613000}: enqueue packet 130 (accum_skew_us = 13000) +sys={2.633100}, mono={2.633100}: enqueue packet 131 (accum_skew_us = 13100) +sys={2.653200}, mono={2.653200}: enqueue packet 132 (accum_skew_us = 13200) +sys={2.673300}, mono={2.673300}: enqueue packet 133 (accum_skew_us = 13300) +sys={2.693400}, mono={2.693400}: enqueue packet 134 (accum_skew_us = 13400) +sys={2.713500}, mono={2.713500}: enqueue packet 135 (accum_skew_us = 13500) +sys={2.733600}, mono={2.733600}: enqueue packet 136 (accum_skew_us = 13600) +sys={2.753700}, mono={2.753700}: enqueue packet 137 (accum_skew_us = 13700) +sys={2.773800}, mono={2.773800}: enqueue packet 138 (accum_skew_us = 13800) +sys={2.793900}, mono={2.793900}: enqueue packet 139 (accum_skew_us = 13900) +sys={2.814000}, mono={2.814000}: enqueue packet 140 (accum_skew_us = 14000) +sys={2.834100}, mono={2.834100}: enqueue packet 141 (accum_skew_us = 14100) +sys={2.854200}, mono={2.854200}: enqueue packet 142 (accum_skew_us = 14200) +sys={2.874300}, mono={2.874300}: enqueue packet 143 (accum_skew_us = 14300) +sys={2.894400}, mono={2.894400}: enqueue packet 144 (accum_skew_us = 14400) +sys={2.914500}, mono={2.914500}: enqueue packet 145 (accum_skew_us = 14500) +sys={2.934600}, mono={2.934600}: enqueue packet 146 (accum_skew_us = 14600) +sys={2.954700}, mono={2.954700}: enqueue packet 147 (accum_skew_us = 14700) +sys={2.974800}, mono={2.974800}: enqueue packet 148 (accum_skew_us = 14800) +sys={2.994900}, mono={2.994900}: enqueue packet 149 (accum_skew_us = 14900) +sys={3.015000}, mono={3.015000}: enqueue packet 150 (accum_skew_us = 15000) +sys={3.035100}, mono={3.035100}: enqueue packet 151 (accum_skew_us = 15100) +sys={3.055200}, mono={3.055200}: enqueue packet 152 (accum_skew_us = 15200) +sys={3.075300}, mono={3.075300}: enqueue packet 153 (accum_skew_us = 15300) +sys={3.095400}, mono={3.095400}: enqueue packet 154 (accum_skew_us = 15400) +sys={3.115500}, mono={3.115500}: enqueue packet 155 (accum_skew_us = 15500) +sys={3.135600}, mono={3.135600}: enqueue packet 156 (accum_skew_us = 15600) +sys={3.155700}, mono={3.155700}: enqueue packet 157 (accum_skew_us = 15700) +sys={3.175800}, mono={3.175800}: enqueue packet 158 (accum_skew_us = 15800) +sys={3.195900}, mono={3.195900}: enqueue packet 159 (accum_skew_us = 15900) +sys={3.216000}, mono={3.216000}: enqueue packet 160 (accum_skew_us = 16000) +sys={3.236100}, mono={3.236100}: enqueue packet 161 (accum_skew_us = 16100) +sys={3.256200}, mono={3.256200}: enqueue packet 162 (accum_skew_us = 16200) +sys={3.276300}, mono={3.276300}: enqueue packet 163 (accum_skew_us = 16300) +sys={3.296400}, mono={3.296400}: enqueue packet 164 (accum_skew_us = 16400) +sys={3.316500}, mono={3.316500}: enqueue packet 165 (accum_skew_us = 16500) +sys={3.336600}, mono={3.336600}: enqueue packet 166 (accum_skew_us = 16600) +sys={3.356700}, mono={3.356700}: enqueue packet 167 (accum_skew_us = 16700) +sys={3.376800}, mono={3.376800}: enqueue packet 168 (accum_skew_us = 16800) +sys={3.396900}, mono={3.396900}: enqueue packet 169 (accum_skew_us = 16900) +sys={3.417000}, mono={3.417000}: enqueue packet 170 (accum_skew_us = 17000) +sys={3.437100}, mono={3.437100}: enqueue packet 171 (accum_skew_us = 17100) +sys={3.457200}, mono={3.457200}: enqueue packet 172 (accum_skew_us = 17200) +sys={3.477300}, mono={3.477300}: enqueue packet 173 (accum_skew_us = 17300) +sys={3.497400}, mono={3.497400}: enqueue packet 174 (accum_skew_us = 17400) +sys={3.517500}, mono={3.517500}: enqueue packet 175 (accum_skew_us = 17500) +sys={3.537600}, mono={3.537600}: enqueue packet 176 (accum_skew_us = 17600) +sys={3.557700}, mono={3.557700}: enqueue packet 177 (accum_skew_us = 17700) +sys={3.577800}, mono={3.577800}: enqueue packet 178 (accum_skew_us = 17800) +sys={3.597900}, mono={3.597900}: enqueue packet 179 (accum_skew_us = 17900) +sys={3.618000}, mono={3.618000}: enqueue packet 180 (accum_skew_us = 18000) +sys={3.638100}, mono={3.638100}: enqueue packet 181 (accum_skew_us = 18100) +sys={3.658200}, mono={3.658200}: enqueue packet 182 (accum_skew_us = 18200) +sys={3.678300}, mono={3.678300}: enqueue packet 183 (accum_skew_us = 18300) +sys={3.698400}, mono={3.698400}: enqueue packet 184 (accum_skew_us = 18400) +sys={3.718500}, mono={3.718500}: enqueue packet 185 (accum_skew_us = 18500) +sys={3.738600}, mono={3.738600}: enqueue packet 186 (accum_skew_us = 18600) +sys={3.758700}, mono={3.758700}: enqueue packet 187 (accum_skew_us = 18700) +sys={3.778800}, mono={3.778800}: enqueue packet 188 (accum_skew_us = 18800) +sys={3.798900}, mono={3.798900}: enqueue packet 189 (accum_skew_us = 18900) +sys={3.819000}, mono={3.819000}: enqueue packet 190 (accum_skew_us = 19000) +sys={3.839100}, mono={3.839100}: enqueue packet 191 (accum_skew_us = 19100) +sys={3.859200}, mono={3.859200}: enqueue packet 192 (accum_skew_us = 19200) +sys={3.879300}, mono={3.879300}: enqueue packet 193 (accum_skew_us = 19300) +sys={3.899400}, mono={3.899400}: enqueue packet 194 (accum_skew_us = 19400) +sys={3.919500}, mono={3.919500}: enqueue packet 195 (accum_skew_us = 19500) +sys={3.939600}, mono={3.939600}: enqueue packet 196 (accum_skew_us = 19600) +sys={3.959700}, mono={3.959700}: enqueue packet 197 (accum_skew_us = 19700) +sys={3.979800}, mono={3.979800}: enqueue packet 198 (accum_skew_us = 19800) +sys={3.999900}, mono={3.999900}: enqueue packet 199 (accum_skew_us = 19900) +sys={4.020000}, mono={4.020000}: enqueue packet 200 (accum_skew_us = 20000) +sys={4.040100}, mono={4.040100}: enqueue packet 201 (accum_skew_us = 20100) +sys={4.060200}, mono={4.060200}: enqueue packet 202 (accum_skew_us = 20200) +sys={4.080300}, mono={4.080300}: enqueue packet 203 (accum_skew_us = 20300) +sys={4.100400}, mono={4.100400}: enqueue packet 204 (accum_skew_us = 20400) +sys={4.120500}, mono={4.120500}: enqueue packet 205 (accum_skew_us = 20500) +sys={4.140600}, mono={4.140600}: enqueue packet 206 (accum_skew_us = 20600) +sys={4.160700}, mono={4.160700}: enqueue packet 207 (accum_skew_us = 20700) +sys={4.180800}, mono={4.180800}: enqueue packet 208 (accum_skew_us = 20800) +sys={4.200900}, mono={4.200900}: enqueue packet 209 (accum_skew_us = 20900) +sys={4.221000}, mono={4.221000}: enqueue packet 210 (accum_skew_us = 21000) +sys={4.241100}, mono={4.241100}: enqueue packet 211 (accum_skew_us = 21100) +sys={4.261200}, mono={4.261200}: enqueue packet 212 (accum_skew_us = 21200) +sys={4.281300}, mono={4.281300}: enqueue packet 213 (accum_skew_us = 21300) +sys={4.301400}, mono={4.301400}: enqueue packet 214 (accum_skew_us = 21400) +sys={4.321500}, mono={4.321500}: enqueue packet 215 (accum_skew_us = 21500) +sys={4.341600}, mono={4.341600}: enqueue packet 216 (accum_skew_us = 21600) +sys={4.361700}, mono={4.361700}: enqueue packet 217 (accum_skew_us = 21700) +sys={4.381800}, mono={4.381800}: enqueue packet 218 (accum_skew_us = 21800) +sys={4.401900}, mono={4.401900}: enqueue packet 219 (accum_skew_us = 21900) +sys={4.422000}, mono={4.422000}: enqueue packet 220 (accum_skew_us = 22000) +sys={4.442100}, mono={4.442100}: enqueue packet 221 (accum_skew_us = 22100) +sys={4.462200}, mono={4.462200}: enqueue packet 222 (accum_skew_us = 22200) +sys={4.482300}, mono={4.482300}: enqueue packet 223 (accum_skew_us = 22300) +sys={4.502400}, mono={4.502400}: enqueue packet 224 (accum_skew_us = 22400) +sys={4.522500}, mono={4.522500}: enqueue packet 225 (accum_skew_us = 22500) +sys={4.542600}, mono={4.542600}: enqueue packet 226 (accum_skew_us = 22600) +sys={4.562700}, mono={4.562700}: enqueue packet 227 (accum_skew_us = 22700) +sys={4.582800}, mono={4.582800}: enqueue packet 228 (accum_skew_us = 22800) +sys={4.602900}, mono={4.602900}: enqueue packet 229 (accum_skew_us = 22900) +sys={4.623000}, mono={4.623000}: enqueue packet 230 (accum_skew_us = 23000) +sys={4.643100}, mono={4.643100}: enqueue packet 231 (accum_skew_us = 23100) +sys={4.663200}, mono={4.663200}: enqueue packet 232 (accum_skew_us = 23200) +sys={4.683300}, mono={4.683300}: enqueue packet 233 (accum_skew_us = 23300) +sys={4.703400}, mono={4.703400}: enqueue packet 234 (accum_skew_us = 23400) +sys={4.723500}, mono={4.723500}: enqueue packet 235 (accum_skew_us = 23500) +sys={4.743600}, mono={4.743600}: enqueue packet 236 (accum_skew_us = 23600) +sys={4.763700}, mono={4.763700}: enqueue packet 237 (accum_skew_us = 23700) +sys={4.783800}, mono={4.783800}: enqueue packet 238 (accum_skew_us = 23800) +sys={4.803900}, mono={4.803900}: enqueue packet 239 (accum_skew_us = 23900) +sys={4.824000}, mono={4.824000}: enqueue packet 240 (accum_skew_us = 24000) +sys={4.844100}, mono={4.844100}: enqueue packet 241 (accum_skew_us = 24100) +sys={4.864200}, mono={4.864200}: enqueue packet 242 (accum_skew_us = 24200) +sys={4.884300}, mono={4.884300}: enqueue packet 243 (accum_skew_us = 24300) +sys={4.904400}, mono={4.904400}: enqueue packet 244 (accum_skew_us = 24400) +sys={4.924500}, mono={4.924500}: enqueue packet 245 (accum_skew_us = 24500) +sys={4.944600}, mono={4.944600}: enqueue packet 246 (accum_skew_us = 24600) +sys={4.964700}, mono={4.964700}: enqueue packet 247 (accum_skew_us = 24700) +sys={4.984800}, mono={4.984800}: enqueue packet 248 (accum_skew_us = 24800) +sys={5.004900}, mono={5.004900}: enqueue packet 249 (accum_skew_us = 24900) +sys={5.025000}, mono={5.025000}: enqueue packet 250 (accum_skew_us = 25000) +sys={5.045100}, mono={5.045100}: enqueue packet 251 (accum_skew_us = 25100) +sys={5.065200}, mono={5.065200}: enqueue packet 252 (accum_skew_us = 25200) +sys={5.085300}, mono={5.085300}: enqueue packet 253 (accum_skew_us = 25300) +sys={5.105400}, mono={5.105400}: enqueue packet 254 (accum_skew_us = 25400) +sys={5.125500}, mono={5.125500}: enqueue packet 255 (accum_skew_us = 25500) +sys={5.145600}, mono={5.145600}: enqueue packet 256 (accum_skew_us = 25600) +sys={5.165700}, mono={5.165700}: enqueue packet 257 (accum_skew_us = 25700) +sys={5.185800}, mono={5.185800}: enqueue packet 258 (accum_skew_us = 25800) +sys={5.205900}, mono={5.205900}: enqueue packet 259 (accum_skew_us = 25900) +sys={5.226000}, mono={5.226000}: enqueue packet 260 (accum_skew_us = 26000) +sys={5.246100}, mono={5.246100}: enqueue packet 261 (accum_skew_us = 26100) +sys={5.266200}, mono={5.266200}: enqueue packet 262 (accum_skew_us = 26200) +sys={5.286300}, mono={5.286300}: enqueue packet 263 (accum_skew_us = 26300) +sys={5.306400}, mono={5.306400}: enqueue packet 264 (accum_skew_us = 26400) +sys={5.326500}, mono={5.326500}: enqueue packet 265 (accum_skew_us = 26500) +sys={5.346600}, mono={5.346600}: enqueue packet 266 (accum_skew_us = 26600) +sys={5.366700}, mono={5.366700}: enqueue packet 267 (accum_skew_us = 26700) +sys={5.386800}, mono={5.386800}: enqueue packet 268 (accum_skew_us = 26800) +sys={5.406900}, mono={5.406900}: enqueue packet 269 (accum_skew_us = 26900) +sys={5.427000}, mono={5.427000}: enqueue packet 270 (accum_skew_us = 27000) +sys={5.447100}, mono={5.447100}: enqueue packet 271 (accum_skew_us = 27100) +sys={5.467200}, mono={5.467200}: enqueue packet 272 (accum_skew_us = 27200) +sys={5.487300}, mono={5.487300}: enqueue packet 273 (accum_skew_us = 27300) +sys={5.507400}, mono={5.507400}: enqueue packet 274 (accum_skew_us = 27400) +sys={5.527500}, mono={5.527500}: enqueue packet 275 (accum_skew_us = 27500) +sys={5.547600}, mono={5.547600}: enqueue packet 276 (accum_skew_us = 27600) +sys={5.567700}, mono={5.567700}: enqueue packet 277 (accum_skew_us = 27700) +sys={5.587800}, mono={5.587800}: enqueue packet 278 (accum_skew_us = 27800) +sys={5.607900}, mono={5.607900}: enqueue packet 279 (accum_skew_us = 27900) +sys={5.628000}, mono={5.628000}: enqueue packet 280 (accum_skew_us = 28000) +sys={5.648100}, mono={5.648100}: enqueue packet 281 (accum_skew_us = 28100) +sys={5.668200}, mono={5.668200}: enqueue packet 282 (accum_skew_us = 28200) +sys={5.688300}, mono={5.688300}: enqueue packet 283 (accum_skew_us = 28300) +sys={5.708400}, mono={5.708400}: enqueue packet 284 (accum_skew_us = 28400) +sys={5.728500}, mono={5.728500}: enqueue packet 285 (accum_skew_us = 28500) +sys={5.748600}, mono={5.748600}: enqueue packet 286 (accum_skew_us = 28600) +sys={5.768700}, mono={5.768700}: enqueue packet 287 (accum_skew_us = 28700) +sys={5.788800}, mono={5.788800}: enqueue packet 288 (accum_skew_us = 28800) +sys={5.808900}, mono={5.808900}: enqueue packet 289 (accum_skew_us = 28900) +sys={5.829000}, mono={5.829000}: enqueue packet 290 (accum_skew_us = 29000) +sys={5.849100}, mono={5.849100}: enqueue packet 291 (accum_skew_us = 29100) +sys={5.869200}, mono={5.869200}: enqueue packet 292 (accum_skew_us = 29200) +sys={5.889300}, mono={5.889300}: enqueue packet 293 (accum_skew_us = 29300) +sys={5.909400}, mono={5.909400}: enqueue packet 294 (accum_skew_us = 29400) +sys={5.929500}, mono={5.929500}: enqueue packet 295 (accum_skew_us = 29500) +sys={5.949600}, mono={5.949600}: enqueue packet 296 (accum_skew_us = 29600) +sys={5.969700}, mono={5.969700}: enqueue packet 297 (accum_skew_us = 29700) +sys={5.989800}, mono={5.989800}: enqueue packet 298 (accum_skew_us = 29800) +sys={6.009900}, mono={6.009900}: enqueue packet 299 (accum_skew_us = 29900) +sys={6.030000}, mono={6.030000}: enqueue packet 300 (accum_skew_us = 30000) +sys={6.050100}, mono={6.050100}: enqueue packet 301 (accum_skew_us = 30100) +sys={6.070200}, mono={6.070200}: enqueue packet 302 (accum_skew_us = 30200) +sys={6.090300}, mono={6.090300}: enqueue packet 303 (accum_skew_us = 30300) +sys={6.110400}, mono={6.110400}: enqueue packet 304 (accum_skew_us = 30400) +sys={6.130500}, mono={6.130500}: enqueue packet 305 (accum_skew_us = 30500) +sys={6.150600}, mono={6.150600}: enqueue packet 306 (accum_skew_us = 30600) +sys={6.170700}, mono={6.170700}: enqueue packet 307 (accum_skew_us = 30700) +sys={6.190800}, mono={6.190800}: enqueue packet 308 (accum_skew_us = 30800) +sys={6.210900}, mono={6.210900}: enqueue packet 309 (accum_skew_us = 30900) +sys={6.231000}, mono={6.231000}: enqueue packet 310 (accum_skew_us = 31000) +sys={6.251100}, mono={6.251100}: enqueue packet 311 (accum_skew_us = 31100) +sys={6.271200}, mono={6.271200}: enqueue packet 312 (accum_skew_us = 31200) +sys={6.291300}, mono={6.291300}: enqueue packet 313 (accum_skew_us = 31300) +sys={6.311400}, mono={6.311400}: enqueue packet 314 (accum_skew_us = 31400) +sys={6.331500}, mono={6.331500}: enqueue packet 315 (accum_skew_us = 31500) +sys={6.351600}, mono={6.351600}: enqueue packet 316 (accum_skew_us = 31600) +sys={6.371700}, mono={6.371700}: enqueue packet 317 (accum_skew_us = 31700) +sys={6.391800}, mono={6.391800}: enqueue packet 318 (accum_skew_us = 31800) +sys={6.411900}, mono={6.411900}: enqueue packet 319 (accum_skew_us = 31900) +sys={6.432000}, mono={6.432000}: enqueue packet 320 (accum_skew_us = 32000) +sys={6.452100}, mono={6.452100}: enqueue packet 321 (accum_skew_us = 32100) +sys={6.472200}, mono={6.472200}: enqueue packet 322 (accum_skew_us = 32200) +sys={6.492300}, mono={6.492300}: enqueue packet 323 (accum_skew_us = 32300) +sys={6.512400}, mono={6.512400}: enqueue packet 324 (accum_skew_us = 32400) +sys={6.532500}, mono={6.532500}: enqueue packet 325 (accum_skew_us = 32500) +sys={6.552600}, mono={6.552600}: enqueue packet 326 (accum_skew_us = 32600) +sys={6.572700}, mono={6.572700}: enqueue packet 327 (accum_skew_us = 32700) +sys={6.592800}, mono={6.592800}: enqueue packet 328 (accum_skew_us = 32800) +sys={6.612900}, mono={6.612900}: enqueue packet 329 (accum_skew_us = 32900) +sys={6.633000}, mono={6.633000}: enqueue packet 330 (accum_skew_us = 33000) +sys={6.653100}, mono={6.653100}: enqueue packet 331 (accum_skew_us = 33100) +sys={6.673200}, mono={6.673200}: enqueue packet 332 (accum_skew_us = 33200) +sys={6.693300}, mono={6.693300}: enqueue packet 333 (accum_skew_us = 33300) +sys={6.713400}, mono={6.713400}: enqueue packet 334 (accum_skew_us = 33400) +sys={6.733500}, mono={6.733500}: enqueue packet 335 (accum_skew_us = 33500) +sys={6.753600}, mono={6.753600}: enqueue packet 336 (accum_skew_us = 33600) +sys={6.773700}, mono={6.773700}: enqueue packet 337 (accum_skew_us = 33700) +sys={6.793800}, mono={6.793800}: enqueue packet 338 (accum_skew_us = 33800) +sys={6.813900}, mono={6.813900}: enqueue packet 339 (accum_skew_us = 33900) +sys={6.834000}, mono={6.834000}: enqueue packet 340 (accum_skew_us = 34000) +sys={6.854100}, mono={6.854100}: enqueue packet 341 (accum_skew_us = 34100) +sys={6.874200}, mono={6.874200}: enqueue packet 342 (accum_skew_us = 34200) +sys={6.894300}, mono={6.894300}: enqueue packet 343 (accum_skew_us = 34300) +sys={6.914400}, mono={6.914400}: enqueue packet 344 (accum_skew_us = 34400) +sys={6.934500}, mono={6.934500}: enqueue packet 345 (accum_skew_us = 34500) +sys={6.954600}, mono={6.954600}: enqueue packet 346 (accum_skew_us = 34600) +sys={6.974700}, mono={6.974700}: enqueue packet 347 (accum_skew_us = 34700) +sys={6.994800}, mono={6.994800}: enqueue packet 348 (accum_skew_us = 34800) +sys={7.014900}, mono={7.014900}: enqueue packet 349 (accum_skew_us = 34900) +sys={7.035000}, mono={7.035000}: enqueue packet 350 (accum_skew_us = 35000) +sys={7.055100}, mono={7.055100}: enqueue packet 351 (accum_skew_us = 35100) +sys={7.075200}, mono={7.075200}: enqueue packet 352 (accum_skew_us = 35200) +sys={7.095300}, mono={7.095300}: enqueue packet 353 (accum_skew_us = 35300) +sys={7.115400}, mono={7.115400}: enqueue packet 354 (accum_skew_us = 35400) +sys={7.135500}, mono={7.135500}: enqueue packet 355 (accum_skew_us = 35500) +sys={7.155600}, mono={7.155600}: enqueue packet 356 (accum_skew_us = 35600) +sys={7.175700}, mono={7.175700}: enqueue packet 357 (accum_skew_us = 35700) +sys={7.195800}, mono={7.195800}: enqueue packet 358 (accum_skew_us = 35800) +sys={7.215900}, mono={7.215900}: enqueue packet 359 (accum_skew_us = 35900) +sys={7.236000}, mono={7.236000}: enqueue packet 360 (accum_skew_us = 36000) +sys={7.256100}, mono={7.256100}: enqueue packet 361 (accum_skew_us = 36100) +sys={7.276200}, mono={7.276200}: enqueue packet 362 (accum_skew_us = 36200) +sys={7.296300}, mono={7.296300}: enqueue packet 363 (accum_skew_us = 36300) +sys={7.316400}, mono={7.316400}: enqueue packet 364 (accum_skew_us = 36400) +sys={7.336500}, mono={7.336500}: enqueue packet 365 (accum_skew_us = 36500) +sys={7.356600}, mono={7.356600}: enqueue packet 366 (accum_skew_us = 36600) +sys={7.376700}, mono={7.376700}: enqueue packet 367 (accum_skew_us = 36700) +sys={7.396800}, mono={7.396800}: enqueue packet 368 (accum_skew_us = 36800) +sys={7.416900}, mono={7.416900}: enqueue packet 369 (accum_skew_us = 36900) +sys={7.437000}, mono={7.437000}: enqueue packet 370 (accum_skew_us = 37000) +sys={7.457100}, mono={7.457100}: enqueue packet 371 (accum_skew_us = 37100) +sys={7.477200}, mono={7.477200}: enqueue packet 372 (accum_skew_us = 37200) +sys={7.497300}, mono={7.497300}: enqueue packet 373 (accum_skew_us = 37300) +sys={7.517400}, mono={7.517400}: enqueue packet 374 (accum_skew_us = 37400) +sys={7.537500}, mono={7.537500}: enqueue packet 375 (accum_skew_us = 37500) +sys={7.557600}, mono={7.557600}: enqueue packet 376 (accum_skew_us = 37600) +sys={7.577700}, mono={7.577700}: enqueue packet 377 (accum_skew_us = 37700) +sys={7.597800}, mono={7.597800}: enqueue packet 378 (accum_skew_us = 37800) +sys={7.617900}, mono={7.617900}: enqueue packet 379 (accum_skew_us = 37900) +sys={7.638000}, mono={7.638000}: enqueue packet 380 (accum_skew_us = 38000) +sys={7.658100}, mono={7.658100}: enqueue packet 381 (accum_skew_us = 38100) +sys={7.678200}, mono={7.678200}: enqueue packet 382 (accum_skew_us = 38200) +sys={7.698300}, mono={7.698300}: enqueue packet 383 (accum_skew_us = 38300) +sys={7.718400}, mono={7.718400}: enqueue packet 384 (accum_skew_us = 38400) +sys={7.738500}, mono={7.738500}: enqueue packet 385 (accum_skew_us = 38500) +sys={7.758600}, mono={7.758600}: enqueue packet 386 (accum_skew_us = 38600) +sys={7.778700}, mono={7.778700}: enqueue packet 387 (accum_skew_us = 38700) +sys={7.798800}, mono={7.798800}: enqueue packet 388 (accum_skew_us = 38800) +sys={7.818900}, mono={7.818900}: enqueue packet 389 (accum_skew_us = 38900) +sys={7.839000}, mono={7.839000}: enqueue packet 390 (accum_skew_us = 39000) +sys={7.859100}, mono={7.859100}: enqueue packet 391 (accum_skew_us = 39100) +sys={7.879200}, mono={7.879200}: enqueue packet 392 (accum_skew_us = 39200) +sys={7.899300}, mono={7.899300}: enqueue packet 393 (accum_skew_us = 39300) +sys={7.919400}, mono={7.919400}: enqueue packet 394 (accum_skew_us = 39400) +sys={7.939500}, mono={7.939500}: enqueue packet 395 (accum_skew_us = 39500) +sys={7.959600}, mono={7.959600}: enqueue packet 396 (accum_skew_us = 39600) +sys={7.979700}, mono={7.979700}: enqueue packet 397 (accum_skew_us = 39700) +sys={7.999800}, mono={7.999800}: enqueue packet 398 (accum_skew_us = 39800) +sys={8.019900}, mono={8.019900}: enqueue packet 399 (accum_skew_us = 39900) +sys={8.040000}, mono={8.040000}: enqueue packet 400 (accum_skew_us = 40000) +sys={8.060100}, mono={8.060100}: enqueue packet 401 (accum_skew_us = 40100) +sys={8.080200}, mono={8.080200}: enqueue packet 402 (accum_skew_us = 40200) +sys={8.100300}, mono={8.100300}: enqueue packet 403 (accum_skew_us = 40300) +sys={8.120400}, mono={8.120400}: enqueue packet 404 (accum_skew_us = 40400) +sys={8.140500}, mono={8.140500}: enqueue packet 405 (accum_skew_us = 40500) +sys={8.160600}, mono={8.160600}: enqueue packet 406 (accum_skew_us = 40600) +sys={8.180700}, mono={8.180700}: enqueue packet 407 (accum_skew_us = 40700) +sys={8.200800}, mono={8.200800}: enqueue packet 408 (accum_skew_us = 40800) +sys={8.220900}, mono={8.220900}: enqueue packet 409 (accum_skew_us = 40900) +sys={8.241000}, mono={8.241000}: enqueue packet 410 (accum_skew_us = 41000) +sys={8.261100}, mono={8.261100}: enqueue packet 411 (accum_skew_us = 41100) +sys={8.281200}, mono={8.281200}: enqueue packet 412 (accum_skew_us = 41200) +sys={8.301300}, mono={8.301300}: enqueue packet 413 (accum_skew_us = 41300) +sys={8.321400}, mono={8.321400}: enqueue packet 414 (accum_skew_us = 41400) +sys={8.341500}, mono={8.341500}: enqueue packet 415 (accum_skew_us = 41500) +sys={8.361600}, mono={8.361600}: enqueue packet 416 (accum_skew_us = 41600) +sys={8.381700}, mono={8.381700}: enqueue packet 417 (accum_skew_us = 41700) +sys={8.401800}, mono={8.401800}: enqueue packet 418 (accum_skew_us = 41800) +sys={8.421900}, mono={8.421900}: enqueue packet 419 (accum_skew_us = 41900) +sys={8.442000}, mono={8.442000}: enqueue packet 420 (accum_skew_us = 42000) +sys={8.462100}, mono={8.462100}: enqueue packet 421 (accum_skew_us = 42100) +sys={8.482200}, mono={8.482200}: enqueue packet 422 (accum_skew_us = 42200) +sys={8.502300}, mono={8.502300}: enqueue packet 423 (accum_skew_us = 42300) +sys={8.522400}, mono={8.522400}: enqueue packet 424 (accum_skew_us = 42400) +sys={8.542500}, mono={8.542500}: enqueue packet 425 (accum_skew_us = 42500) +sys={8.562600}, mono={8.562600}: enqueue packet 426 (accum_skew_us = 42600) +sys={8.582700}, mono={8.582700}: enqueue packet 427 (accum_skew_us = 42700) +sys={8.602800}, mono={8.602800}: enqueue packet 428 (accum_skew_us = 42800) +sys={8.622900}, mono={8.622900}: enqueue packet 429 (accum_skew_us = 42900) +sys={8.643000}, mono={8.643000}: enqueue packet 430 (accum_skew_us = 43000) +sys={8.663100}, mono={8.663100}: enqueue packet 431 (accum_skew_us = 43100) +sys={8.683200}, mono={8.683200}: enqueue packet 432 (accum_skew_us = 43200) +sys={8.703300}, mono={8.703300}: enqueue packet 433 (accum_skew_us = 43300) +sys={8.723400}, mono={8.723400}: enqueue packet 434 (accum_skew_us = 43400) +sys={8.743500}, mono={8.743500}: enqueue packet 435 (accum_skew_us = 43500) +sys={8.763600}, mono={8.763600}: enqueue packet 436 (accum_skew_us = 43600) +sys={8.783700}, mono={8.783700}: enqueue packet 437 (accum_skew_us = 43700) +sys={8.803800}, mono={8.803800}: enqueue packet 438 (accum_skew_us = 43800) +sys={8.823900}, mono={8.823900}: enqueue packet 439 (accum_skew_us = 43900) +sys={8.844000}, mono={8.844000}: enqueue packet 440 (accum_skew_us = 44000) +sys={8.864100}, mono={8.864100}: enqueue packet 441 (accum_skew_us = 44100) +sys={8.884200}, mono={8.884200}: enqueue packet 442 (accum_skew_us = 44200) +sys={8.904300}, mono={8.904300}: enqueue packet 443 (accum_skew_us = 44300) +sys={8.924400}, mono={8.924400}: enqueue packet 444 (accum_skew_us = 44400) +sys={8.944500}, mono={8.944500}: enqueue packet 445 (accum_skew_us = 44500) +sys={8.964600}, mono={8.964600}: enqueue packet 446 (accum_skew_us = 44600) +sys={8.984700}, mono={8.984700}: enqueue packet 447 (accum_skew_us = 44700) +sys={9.004800}, mono={9.004800}: enqueue packet 448 (accum_skew_us = 44800) +sys={9.024900}, mono={9.024900}: enqueue packet 449 (accum_skew_us = 44900) +===test_skew(100, 1)=== +sys={0.000000}, mono={0.000000}: clock_override_set +sys={0.000000}, mono={0.000000}: enqueue packet 0 (accum_skew_us = 0) +sys={0.020100}, mono={0.020100}: enqueue packet 1 (accum_skew_us = 100) +sys={0.040200}, mono={0.040200}: enqueue packet 2 (accum_skew_us = 200) +sys={0.060300}, mono={0.060300}: enqueue packet 3 (accum_skew_us = 300) +sys={0.080400}, mono={0.080400}: enqueue packet 4 (accum_skew_us = 400) +sys={0.100500}, mono={0.100500}: enqueue packet 5 (accum_skew_us = 500) +sys={0.120600}, mono={0.120600}: enqueue packet 6 (accum_skew_us = 600) +sys={0.140700}, mono={0.140700}: enqueue packet 7 (accum_skew_us = 700) +sys={0.160800}, mono={0.160800}: enqueue packet 8 (accum_skew_us = 800) +sys={0.180900}, mono={0.180900}: enqueue packet 9 (accum_skew_us = 900) +sys={0.201000}, mono={0.201000}: enqueue packet 10 (accum_skew_us = 1000) +sys={0.221100}, mono={0.221100}: enqueue packet 11 (accum_skew_us = 1100) +sys={0.241200}, mono={0.241200}: enqueue packet 12 (accum_skew_us = 1200) +sys={0.261300}, mono={0.261300}: enqueue packet 13 (accum_skew_us = 1300) +sys={0.281400}, mono={0.281400}: enqueue packet 14 (accum_skew_us = 1400) +sys={0.301500}, mono={0.301500}: enqueue packet 15 (accum_skew_us = 1500) +sys={0.321600}, mono={0.321600}: enqueue packet 16 (accum_skew_us = 1600) +sys={0.341700}, mono={0.341700}: enqueue packet 17 (accum_skew_us = 1700) +sys={0.361800}, mono={0.361800}: enqueue packet 18 (accum_skew_us = 1800) +sys={0.381900}, mono={0.381900}: enqueue packet 19 (accum_skew_us = 1900) +sys={0.402000}, mono={0.402000}: enqueue packet 20 (accum_skew_us = 2000) +sys={0.422100}, mono={0.422100}: enqueue packet 21 (accum_skew_us = 2100) +sys={0.442200}, mono={0.442200}: enqueue packet 22 (accum_skew_us = 2200) +sys={0.462300}, mono={0.462300}: enqueue packet 23 (accum_skew_us = 2300) +sys={0.482400}, mono={0.482400}: enqueue packet 24 (accum_skew_us = 2400) +sys={0.502500}, mono={0.502500}: enqueue packet 25 (accum_skew_us = 2500) +sys={0.522600}, mono={0.522600}: enqueue packet 26 (accum_skew_us = 2600) +sys={0.542700}, mono={0.542700}: enqueue packet 27 (accum_skew_us = 2700) +sys={0.562800}, mono={0.562800}: enqueue packet 28 (accum_skew_us = 2800) +sys={0.582900}, mono={0.582900}: enqueue packet 29 (accum_skew_us = 2900) +sys={0.603000}, mono={0.603000}: enqueue packet 30 (accum_skew_us = 3000) +sys={0.623100}, mono={0.623100}: enqueue packet 31 (accum_skew_us = 3100) +sys={0.643200}, mono={0.643200}: enqueue packet 32 (accum_skew_us = 3200) +sys={0.663300}, mono={0.663300}: enqueue packet 33 (accum_skew_us = 3300) +sys={0.683400}, mono={0.683400}: enqueue packet 34 (accum_skew_us = 3400) +sys={0.703500}, mono={0.703500}: enqueue packet 35 (accum_skew_us = 3500) +sys={0.723600}, mono={0.723600}: enqueue packet 36 (accum_skew_us = 3600) +sys={0.743700}, mono={0.743700}: enqueue packet 37 (accum_skew_us = 3700) +sys={0.763800}, mono={0.763800}: enqueue packet 38 (accum_skew_us = 3800) +sys={0.783900}, mono={0.783900}: enqueue packet 39 (accum_skew_us = 3900) +sys={0.804000}, mono={0.804000}: enqueue packet 40 (accum_skew_us = 4000) +sys={0.824100}, mono={0.824100}: enqueue packet 41 (accum_skew_us = 4100) +sys={0.844200}, mono={0.844200}: enqueue packet 42 (accum_skew_us = 4200) +sys={0.864300}, mono={0.864300}: enqueue packet 43 (accum_skew_us = 4300) +sys={0.884400}, mono={0.884400}: enqueue packet 44 (accum_skew_us = 4400) +sys={0.904500}, mono={0.904500}: enqueue packet 45 (accum_skew_us = 4500) +sys={0.924600}, mono={0.924600}: enqueue packet 46 (accum_skew_us = 4600) +sys={0.944700}, mono={0.944700}: enqueue packet 47 (accum_skew_us = 4700) +sys={0.964800}, mono={0.964800}: enqueue packet 48 (accum_skew_us = 4800) +sys={0.984900}, mono={0.984900}: enqueue packet 49 (accum_skew_us = 4900) +sys={1.005000}, mono={1.005000}: enqueue packet 50 (accum_skew_us = 5000) +sys={1.025100}, mono={1.025100}: enqueue packet 51 (accum_skew_us = 5100) +sys={1.045200}, mono={1.045200}: enqueue packet 52 (accum_skew_us = 5200) +sys={1.065300}, mono={1.065300}: enqueue packet 53 (accum_skew_us = 5300) +sys={1.085400}, mono={1.085400}: enqueue packet 54 (accum_skew_us = 5400) +sys={1.105500}, mono={1.105500}: enqueue packet 55 (accum_skew_us = 5500) +sys={1.125600}, mono={1.125600}: enqueue packet 56 (accum_skew_us = 5600) +sys={1.145700}, mono={1.145700}: enqueue packet 57 (accum_skew_us = 5700) +sys={1.165800}, mono={1.165800}: enqueue packet 58 (accum_skew_us = 5800) +sys={1.185900}, mono={1.185900}: enqueue packet 59 (accum_skew_us = 5900) +sys={1.206000}, mono={1.206000}: enqueue packet 60 (accum_skew_us = 6000) +sys={1.226100}, mono={1.226100}: enqueue packet 61 (accum_skew_us = 6100) +sys={1.246200}, mono={1.246200}: enqueue packet 62 (accum_skew_us = 6200) +sys={1.266300}, mono={1.266300}: enqueue packet 63 (accum_skew_us = 6300) +sys={1.286400}, mono={1.286400}: enqueue packet 64 (accum_skew_us = 6400) +sys={1.306500}, mono={1.306500}: enqueue packet 65 (accum_skew_us = 6500) +sys={1.326600}, mono={1.326600}: enqueue packet 66 (accum_skew_us = 6600) +sys={1.346700}, mono={1.346700}: enqueue packet 67 (accum_skew_us = 6700) +sys={1.366800}, mono={1.366800}: enqueue packet 68 (accum_skew_us = 6800) +sys={1.386900}, mono={1.386900}: enqueue packet 69 (accum_skew_us = 6900) +sys={1.407000}, mono={1.407000}: enqueue packet 70 (accum_skew_us = 7000) +sys={1.427100}, mono={1.427100}: enqueue packet 71 (accum_skew_us = 7100) +sys={1.447200}, mono={1.447200}: enqueue packet 72 (accum_skew_us = 7200) +sys={1.467300}, mono={1.467300}: enqueue packet 73 (accum_skew_us = 7300) +sys={1.487400}, mono={1.487400}: enqueue packet 74 (accum_skew_us = 7400) +sys={1.507500}, mono={1.507500}: enqueue packet 75 (accum_skew_us = 7500) +sys={1.527600}, mono={1.527600}: enqueue packet 76 (accum_skew_us = 7600) +sys={1.547700}, mono={1.547700}: enqueue packet 77 (accum_skew_us = 7700) +sys={1.567800}, mono={1.567800}: enqueue packet 78 (accum_skew_us = 7800) +sys={1.587900}, mono={1.587900}: enqueue packet 79 (accum_skew_us = 7900) +sys={1.608000}, mono={1.608000}: enqueue packet 80 (accum_skew_us = 8000) +sys={1.628100}, mono={1.628100}: enqueue packet 81 (accum_skew_us = 8100) +sys={1.648200}, mono={1.648200}: enqueue packet 82 (accum_skew_us = 8200) +sys={1.668300}, mono={1.668300}: enqueue packet 83 (accum_skew_us = 8300) +sys={1.688400}, mono={1.688400}: enqueue packet 84 (accum_skew_us = 8400) +sys={1.708500}, mono={1.708500}: enqueue packet 85 (accum_skew_us = 8500) +sys={1.728600}, mono={1.728600}: enqueue packet 86 (accum_skew_us = 8600) +sys={1.748700}, mono={1.748700}: enqueue packet 87 (accum_skew_us = 8700) +sys={1.768800}, mono={1.768800}: enqueue packet 88 (accum_skew_us = 8800) +sys={1.788900}, mono={1.788900}: enqueue packet 89 (accum_skew_us = 8900) +sys={1.809000}, mono={1.809000}: enqueue packet 90 (accum_skew_us = 9000) +sys={1.829100}, mono={1.829100}: enqueue packet 91 (accum_skew_us = 9100) +sys={1.849200}, mono={1.849200}: enqueue packet 92 (accum_skew_us = 9200) +sys={1.869300}, mono={1.869300}: enqueue packet 93 (accum_skew_us = 9300) +sys={1.889400}, mono={1.889400}: enqueue packet 94 (accum_skew_us = 9400) +sys={1.909500}, mono={1.909500}: enqueue packet 95 (accum_skew_us = 9500) +sys={1.929600}, mono={1.929600}: enqueue packet 96 (accum_skew_us = 9600) +sys={1.949700}, mono={1.949700}: enqueue packet 97 (accum_skew_us = 9700) +sys={1.969800}, mono={1.969800}: enqueue packet 98 (accum_skew_us = 9800) +sys={1.989900}, mono={1.989900}: enqueue packet 99 (accum_skew_us = 9900) +sys={2.010000}, mono={2.010000}: enqueue packet 100 (accum_skew_us = 10000) +sys={2.030100}, mono={2.030100}: enqueue packet 101 (accum_skew_us = 10100) +sys={2.050200}, mono={2.050200}: enqueue packet 102 (accum_skew_us = 10200) +sys={2.070300}, mono={2.070300}: enqueue packet 103 (accum_skew_us = 10300) +sys={2.090400}, mono={2.090400}: enqueue packet 104 (accum_skew_us = 10400) +sys={2.110500}, mono={2.110500}: enqueue packet 105 (accum_skew_us = 10500) +sys={2.130600}, mono={2.130600}: enqueue packet 106 (accum_skew_us = 10600) +sys={2.150700}, mono={2.150700}: enqueue packet 107 (accum_skew_us = 10700) +sys={2.170800}, mono={2.170800}: enqueue packet 108 (accum_skew_us = 10800) +sys={2.190900}, mono={2.190900}: enqueue packet 109 (accum_skew_us = 10900) +sys={2.211000}, mono={2.211000}: enqueue packet 110 (accum_skew_us = 11000) +sys={2.231100}, mono={2.231100}: enqueue packet 111 (accum_skew_us = 11100) +sys={2.251200}, mono={2.251200}: enqueue packet 112 (accum_skew_us = 11200) +sys={2.271300}, mono={2.271300}: enqueue packet 113 (accum_skew_us = 11300) +sys={2.291400}, mono={2.291400}: enqueue packet 114 (accum_skew_us = 11400) +sys={2.311500}, mono={2.311500}: enqueue packet 115 (accum_skew_us = 11500) +sys={2.331600}, mono={2.331600}: enqueue packet 116 (accum_skew_us = 11600) +sys={2.351700}, mono={2.351700}: enqueue packet 117 (accum_skew_us = 11700) +sys={2.371800}, mono={2.371800}: enqueue packet 118 (accum_skew_us = 11800) +sys={2.391900}, mono={2.391900}: enqueue packet 119 (accum_skew_us = 11900) +sys={2.412000}, mono={2.412000}: enqueue packet 120 (accum_skew_us = 12000) +sys={2.432100}, mono={2.432100}: enqueue packet 121 (accum_skew_us = 12100) +sys={2.452200}, mono={2.452200}: enqueue packet 122 (accum_skew_us = 12200) +sys={2.472300}, mono={2.472300}: enqueue packet 123 (accum_skew_us = 12300) +sys={2.492400}, mono={2.492400}: enqueue packet 124 (accum_skew_us = 12400) +sys={2.512500}, mono={2.512500}: enqueue packet 125 (accum_skew_us = 12500) +sys={2.532600}, mono={2.532600}: enqueue packet 126 (accum_skew_us = 12600) +sys={2.552700}, mono={2.552700}: enqueue packet 127 (accum_skew_us = 12700) +sys={2.572800}, mono={2.572800}: enqueue packet 128 (accum_skew_us = 12800) +sys={2.592900}, mono={2.592900}: enqueue packet 129 (accum_skew_us = 12900) +sys={2.613000}, mono={2.613000}: enqueue packet 130 (accum_skew_us = 13000) +sys={2.633100}, mono={2.633100}: enqueue packet 131 (accum_skew_us = 13100) +sys={2.653200}, mono={2.653200}: enqueue packet 132 (accum_skew_us = 13200) +sys={2.673300}, mono={2.673300}: enqueue packet 133 (accum_skew_us = 13300) +sys={2.693400}, mono={2.693400}: enqueue packet 134 (accum_skew_us = 13400) +sys={2.713500}, mono={2.713500}: enqueue packet 135 (accum_skew_us = 13500) +sys={2.733600}, mono={2.733600}: enqueue packet 136 (accum_skew_us = 13600) +sys={2.753700}, mono={2.753700}: enqueue packet 137 (accum_skew_us = 13700) +sys={2.773800}, mono={2.773800}: enqueue packet 138 (accum_skew_us = 13800) +sys={2.793900}, mono={2.793900}: enqueue packet 139 (accum_skew_us = 13900) +sys={2.814000}, mono={2.814000}: enqueue packet 140 (accum_skew_us = 14000) +sys={2.834100}, mono={2.834100}: enqueue packet 141 (accum_skew_us = 14100) +sys={2.854200}, mono={2.854200}: enqueue packet 142 (accum_skew_us = 14200) +sys={2.874300}, mono={2.874300}: enqueue packet 143 (accum_skew_us = 14300) +sys={2.894400}, mono={2.894400}: enqueue packet 144 (accum_skew_us = 14400) +sys={2.914500}, mono={2.914500}: enqueue packet 145 (accum_skew_us = 14500) +sys={2.934600}, mono={2.934600}: enqueue packet 146 (accum_skew_us = 14600) +sys={2.954700}, mono={2.954700}: enqueue packet 147 (accum_skew_us = 14700) +sys={2.974800}, mono={2.974800}: enqueue packet 148 (accum_skew_us = 14800) +sys={2.994900}, mono={2.994900}: enqueue packet 149 (accum_skew_us = 14900) +sys={3.015000}, mono={3.015000}: enqueue packet 150 (accum_skew_us = 15000) +sys={3.035100}, mono={3.035100}: enqueue packet 151 (accum_skew_us = 15100) +sys={3.055200}, mono={3.055200}: enqueue packet 152 (accum_skew_us = 15200) +sys={3.075300}, mono={3.075300}: enqueue packet 153 (accum_skew_us = 15300) +sys={3.095400}, mono={3.095400}: enqueue packet 154 (accum_skew_us = 15400) +sys={3.115500}, mono={3.115500}: enqueue packet 155 (accum_skew_us = 15500) +sys={3.135600}, mono={3.135600}: enqueue packet 156 (accum_skew_us = 15600) +sys={3.155700}, mono={3.155700}: enqueue packet 157 (accum_skew_us = 15700) +sys={3.175800}, mono={3.175800}: enqueue packet 158 (accum_skew_us = 15800) +sys={3.195900}, mono={3.195900}: enqueue packet 159 (accum_skew_us = 15900) +sys={3.216000}, mono={3.216000}: enqueue packet 160 (accum_skew_us = 16000) +sys={3.236100}, mono={3.236100}: enqueue packet 161 (accum_skew_us = 16100) +sys={3.256200}, mono={3.256200}: enqueue packet 162 (accum_skew_us = 16200) +sys={3.276300}, mono={3.276300}: enqueue packet 163 (accum_skew_us = 16300) +sys={3.296400}, mono={3.296400}: enqueue packet 164 (accum_skew_us = 16400) +sys={3.316500}, mono={3.316500}: enqueue packet 165 (accum_skew_us = 16500) +sys={3.336600}, mono={3.336600}: enqueue packet 166 (accum_skew_us = 16600) +sys={3.356700}, mono={3.356700}: enqueue packet 167 (accum_skew_us = 16700) +sys={3.376800}, mono={3.376800}: enqueue packet 168 (accum_skew_us = 16800) +sys={3.396900}, mono={3.396900}: enqueue packet 169 (accum_skew_us = 16900) +sys={3.417000}, mono={3.417000}: enqueue packet 170 (accum_skew_us = 17000) +sys={3.437100}, mono={3.437100}: enqueue packet 171 (accum_skew_us = 17100) +sys={3.457200}, mono={3.457200}: enqueue packet 172 (accum_skew_us = 17200) +sys={3.477300}, mono={3.477300}: enqueue packet 173 (accum_skew_us = 17300) +sys={3.497400}, mono={3.497400}: enqueue packet 174 (accum_skew_us = 17400) +sys={3.517500}, mono={3.517500}: enqueue packet 175 (accum_skew_us = 17500) +sys={3.537600}, mono={3.537600}: enqueue packet 176 (accum_skew_us = 17600) +sys={3.557700}, mono={3.557700}: enqueue packet 177 (accum_skew_us = 17700) +sys={3.577800}, mono={3.577800}: enqueue packet 178 (accum_skew_us = 17800) +sys={3.597900}, mono={3.597900}: enqueue packet 179 (accum_skew_us = 17900) +sys={3.618000}, mono={3.618000}: enqueue packet 180 (accum_skew_us = 18000) +sys={3.638100}, mono={3.638100}: enqueue packet 181 (accum_skew_us = 18100) +sys={3.658200}, mono={3.658200}: enqueue packet 182 (accum_skew_us = 18200) +sys={3.678300}, mono={3.678300}: enqueue packet 183 (accum_skew_us = 18300) +sys={3.698400}, mono={3.698400}: enqueue packet 184 (accum_skew_us = 18400) +sys={3.718500}, mono={3.718500}: enqueue packet 185 (accum_skew_us = 18500) +sys={3.738600}, mono={3.738600}: enqueue packet 186 (accum_skew_us = 18600) +sys={3.758700}, mono={3.758700}: enqueue packet 187 (accum_skew_us = 18700) +sys={3.778800}, mono={3.778800}: enqueue packet 188 (accum_skew_us = 18800) +sys={3.798900}, mono={3.798900}: enqueue packet 189 (accum_skew_us = 18900) +sys={3.819000}, mono={3.819000}: enqueue packet 190 (accum_skew_us = 19000) +sys={3.839100}, mono={3.839100}: enqueue packet 191 (accum_skew_us = 19100) +sys={3.859200}, mono={3.859200}: enqueue packet 192 (accum_skew_us = 19200) +sys={3.879300}, mono={3.879300}: enqueue packet 193 (accum_skew_us = 19300) +sys={3.899400}, mono={3.899400}: enqueue packet 194 (accum_skew_us = 19400) +sys={3.919500}, mono={3.919500}: enqueue packet 195 (accum_skew_us = 19500) +sys={3.939600}, mono={3.939600}: enqueue packet 196 (accum_skew_us = 19600) +sys={3.959700}, mono={3.959700}: enqueue packet 197 (accum_skew_us = 19700) +sys={3.979800}, mono={3.979800}: enqueue packet 198 (accum_skew_us = 19800) +sys={3.999900}, mono={3.999900}: enqueue packet 199 (accum_skew_us = 19900) +sys={4.020000}, mono={4.020000}: enqueue packet 200 (accum_skew_us = 20000) +sys={4.040100}, mono={4.040100}: enqueue packet 201 (accum_skew_us = 20100) +sys={4.060200}, mono={4.060200}: enqueue packet 202 (accum_skew_us = 20200) +sys={4.080300}, mono={4.080300}: enqueue packet 203 (accum_skew_us = 20300) +sys={4.100400}, mono={4.100400}: enqueue packet 204 (accum_skew_us = 20400) +sys={4.120500}, mono={4.120500}: enqueue packet 205 (accum_skew_us = 20500) +sys={4.140600}, mono={4.140600}: enqueue packet 206 (accum_skew_us = 20600) +sys={4.160700}, mono={4.160700}: enqueue packet 207 (accum_skew_us = 20700) +sys={4.180800}, mono={4.180800}: enqueue packet 208 (accum_skew_us = 20800) +sys={4.200900}, mono={4.200900}: enqueue packet 209 (accum_skew_us = 20900) +sys={4.221000}, mono={4.221000}: enqueue packet 210 (accum_skew_us = 21000) +sys={4.241100}, mono={4.241100}: enqueue packet 211 (accum_skew_us = 21100) +sys={4.261200}, mono={4.261200}: enqueue packet 212 (accum_skew_us = 21200) +sys={4.281300}, mono={4.281300}: enqueue packet 213 (accum_skew_us = 21300) +sys={4.301400}, mono={4.301400}: enqueue packet 214 (accum_skew_us = 21400) +sys={4.321500}, mono={4.321500}: enqueue packet 215 (accum_skew_us = 21500) +sys={4.341600}, mono={4.341600}: enqueue packet 216 (accum_skew_us = 21600) +sys={4.361700}, mono={4.361700}: enqueue packet 217 (accum_skew_us = 21700) +sys={4.381800}, mono={4.381800}: enqueue packet 218 (accum_skew_us = 21800) +sys={4.401900}, mono={4.401900}: enqueue packet 219 (accum_skew_us = 21900) +sys={4.422000}, mono={4.422000}: enqueue packet 220 (accum_skew_us = 22000) +sys={4.442100}, mono={4.442100}: enqueue packet 221 (accum_skew_us = 22100) +sys={4.462200}, mono={4.462200}: enqueue packet 222 (accum_skew_us = 22200) +sys={4.482300}, mono={4.482300}: enqueue packet 223 (accum_skew_us = 22300) +sys={4.502400}, mono={4.502400}: enqueue packet 224 (accum_skew_us = 22400) +sys={4.522500}, mono={4.522500}: enqueue packet 225 (accum_skew_us = 22500) +sys={4.542600}, mono={4.542600}: enqueue packet 226 (accum_skew_us = 22600) +sys={4.562700}, mono={4.562700}: enqueue packet 227 (accum_skew_us = 22700) +sys={4.582800}, mono={4.582800}: enqueue packet 228 (accum_skew_us = 22800) +sys={4.602900}, mono={4.602900}: enqueue packet 229 (accum_skew_us = 22900) +sys={4.623000}, mono={4.623000}: enqueue packet 230 (accum_skew_us = 23000) +sys={4.643100}, mono={4.643100}: enqueue packet 231 (accum_skew_us = 23100) +sys={4.663200}, mono={4.663200}: enqueue packet 232 (accum_skew_us = 23200) +sys={4.683300}, mono={4.683300}: enqueue packet 233 (accum_skew_us = 23300) +sys={4.703400}, mono={4.703400}: enqueue packet 234 (accum_skew_us = 23400) +sys={4.723500}, mono={4.723500}: enqueue packet 235 (accum_skew_us = 23500) +sys={4.743600}, mono={4.743600}: enqueue packet 236 (accum_skew_us = 23600) +sys={4.763700}, mono={4.763700}: enqueue packet 237 (accum_skew_us = 23700) +sys={4.783800}, mono={4.783800}: enqueue packet 238 (accum_skew_us = 23800) +sys={4.803900}, mono={4.803900}: enqueue packet 239 (accum_skew_us = 23900) +sys={4.824000}, mono={4.824000}: enqueue packet 240 (accum_skew_us = 24000) +sys={4.844100}, mono={4.844100}: enqueue packet 241 (accum_skew_us = 24100) +sys={4.864200}, mono={4.864200}: enqueue packet 242 (accum_skew_us = 24200) +sys={4.884300}, mono={4.884300}: enqueue packet 243 (accum_skew_us = 24300) +sys={4.904400}, mono={4.904400}: enqueue packet 244 (accum_skew_us = 24400) +sys={4.924500}, mono={4.924500}: enqueue packet 245 (accum_skew_us = 24500) +sys={4.944600}, mono={4.944600}: enqueue packet 246 (accum_skew_us = 24600) +sys={4.964700}, mono={4.964700}: enqueue packet 247 (accum_skew_us = 24700) +sys={4.984800}, mono={4.984800}: enqueue packet 248 (accum_skew_us = 24800) +sys={5.004900}, mono={5.004900}: enqueue packet 249 (accum_skew_us = 24900) +sys={5.025000}, mono={5.025000}: enqueue packet 250 (accum_skew_us = 25000) +sys={5.045100}, mono={5.045100}: enqueue packet 251 (accum_skew_us = 25100) +sys={5.065200}, mono={5.065200}: enqueue packet 252 (accum_skew_us = 25200) +sys={5.085300}, mono={5.085300}: enqueue packet 253 (accum_skew_us = 25300) +sys={5.105400}, mono={5.105400}: enqueue packet 254 (accum_skew_us = 25400) +sys={5.125500}, mono={5.125500}: enqueue packet 255 (accum_skew_us = 25500) +sys={5.145600}, mono={5.145600}: enqueue packet 256 (accum_skew_us = 25600) +sys={5.165700}, mono={5.165700}: enqueue packet 257 (accum_skew_us = 25700) +sys={5.185800}, mono={5.185800}: enqueue packet 258 (accum_skew_us = 25800) +sys={5.205900}, mono={5.205900}: enqueue packet 259 (accum_skew_us = 25900) +sys={5.226000}, mono={5.226000}: enqueue packet 260 (accum_skew_us = 26000) +sys={5.246100}, mono={5.246100}: enqueue packet 261 (accum_skew_us = 26100) +sys={5.266200}, mono={5.266200}: enqueue packet 262 (accum_skew_us = 26200) +sys={5.286300}, mono={5.286300}: enqueue packet 263 (accum_skew_us = 26300) +sys={5.306400}, mono={5.306400}: enqueue packet 264 (accum_skew_us = 26400) +sys={5.326500}, mono={5.326500}: enqueue packet 265 (accum_skew_us = 26500) +sys={5.346600}, mono={5.346600}: enqueue packet 266 (accum_skew_us = 26600) +sys={5.366700}, mono={5.366700}: enqueue packet 267 (accum_skew_us = 26700) +sys={5.386800}, mono={5.386800}: enqueue packet 268 (accum_skew_us = 26800) +sys={5.406900}, mono={5.406900}: enqueue packet 269 (accum_skew_us = 26900) +sys={5.427000}, mono={5.427000}: enqueue packet 270 (accum_skew_us = 27000) +sys={5.447100}, mono={5.447100}: enqueue packet 271 (accum_skew_us = 27100) +sys={5.467200}, mono={5.467200}: enqueue packet 272 (accum_skew_us = 27200) +sys={5.487300}, mono={5.487300}: enqueue packet 273 (accum_skew_us = 27300) +sys={5.507400}, mono={5.507400}: enqueue packet 274 (accum_skew_us = 27400) +sys={5.527500}, mono={5.527500}: enqueue packet 275 (accum_skew_us = 27500) +sys={5.547600}, mono={5.547600}: enqueue packet 276 (accum_skew_us = 27600) +sys={5.567700}, mono={5.567700}: enqueue packet 277 (accum_skew_us = 27700) +sys={5.587800}, mono={5.587800}: enqueue packet 278 (accum_skew_us = 27800) +sys={5.607900}, mono={5.607900}: enqueue packet 279 (accum_skew_us = 27900) +sys={5.628000}, mono={5.628000}: enqueue packet 280 (accum_skew_us = 28000) +sys={5.648100}, mono={5.648100}: enqueue packet 281 (accum_skew_us = 28100) +sys={5.668200}, mono={5.668200}: enqueue packet 282 (accum_skew_us = 28200) +sys={5.688300}, mono={5.688300}: enqueue packet 283 (accum_skew_us = 28300) +sys={5.708400}, mono={5.708400}: enqueue packet 284 (accum_skew_us = 28400) +sys={5.728500}, mono={5.728500}: enqueue packet 285 (accum_skew_us = 28500) +sys={5.748600}, mono={5.748600}: enqueue packet 286 (accum_skew_us = 28600) +sys={5.768700}, mono={5.768700}: enqueue packet 287 (accum_skew_us = 28700) +sys={5.788800}, mono={5.788800}: enqueue packet 288 (accum_skew_us = 28800) +sys={5.808900}, mono={5.808900}: enqueue packet 289 (accum_skew_us = 28900) +sys={5.829000}, mono={5.829000}: enqueue packet 290 (accum_skew_us = 29000) +sys={5.849100}, mono={5.849100}: enqueue packet 291 (accum_skew_us = 29100) +sys={5.869200}, mono={5.869200}: enqueue packet 292 (accum_skew_us = 29200) +sys={5.889300}, mono={5.889300}: enqueue packet 293 (accum_skew_us = 29300) +sys={5.909400}, mono={5.909400}: enqueue packet 294 (accum_skew_us = 29400) +sys={5.929500}, mono={5.929500}: enqueue packet 295 (accum_skew_us = 29500) +sys={5.949600}, mono={5.949600}: enqueue packet 296 (accum_skew_us = 29600) +sys={5.969700}, mono={5.969700}: enqueue packet 297 (accum_skew_us = 29700) +sys={5.989800}, mono={5.989800}: enqueue packet 298 (accum_skew_us = 29800) +sys={6.009900}, mono={6.009900}: enqueue packet 299 (accum_skew_us = 29900) +sys={6.030000}, mono={6.030000}: enqueue packet 300 (accum_skew_us = 30000) +sys={6.050100}, mono={6.050100}: enqueue packet 301 (accum_skew_us = 30100) +sys={6.070200}, mono={6.070200}: enqueue packet 302 (accum_skew_us = 30200) +sys={6.090300}, mono={6.090300}: enqueue packet 303 (accum_skew_us = 30300) +sys={6.110400}, mono={6.110400}: enqueue packet 304 (accum_skew_us = 30400) +sys={6.130500}, mono={6.130500}: enqueue packet 305 (accum_skew_us = 30500) +sys={6.150600}, mono={6.150600}: enqueue packet 306 (accum_skew_us = 30600) +sys={6.170700}, mono={6.170700}: enqueue packet 307 (accum_skew_us = 30700) +sys={6.190800}, mono={6.190800}: enqueue packet 308 (accum_skew_us = 30800) +sys={6.210900}, mono={6.210900}: enqueue packet 309 (accum_skew_us = 30900) +sys={6.231000}, mono={6.231000}: enqueue packet 310 (accum_skew_us = 31000) +sys={6.251100}, mono={6.251100}: enqueue packet 311 (accum_skew_us = 31100) +sys={6.271200}, mono={6.271200}: enqueue packet 312 (accum_skew_us = 31200) +sys={6.291300}, mono={6.291300}: enqueue packet 313 (accum_skew_us = 31300) +sys={6.311400}, mono={6.311400}: enqueue packet 314 (accum_skew_us = 31400) +sys={6.331500}, mono={6.331500}: enqueue packet 315 (accum_skew_us = 31500) +sys={6.351600}, mono={6.351600}: enqueue packet 316 (accum_skew_us = 31600) +sys={6.371700}, mono={6.371700}: enqueue packet 317 (accum_skew_us = 31700) +sys={6.391800}, mono={6.391800}: enqueue packet 318 (accum_skew_us = 31800) +sys={6.411900}, mono={6.411900}: enqueue packet 319 (accum_skew_us = 31900) +sys={6.432000}, mono={6.432000}: enqueue packet 320 (accum_skew_us = 32000) +sys={6.452100}, mono={6.452100}: enqueue packet 321 (accum_skew_us = 32100) +sys={6.472200}, mono={6.472200}: enqueue packet 322 (accum_skew_us = 32200) +sys={6.492300}, mono={6.492300}: enqueue packet 323 (accum_skew_us = 32300) +sys={6.512400}, mono={6.512400}: enqueue packet 324 (accum_skew_us = 32400) +sys={6.532500}, mono={6.532500}: enqueue packet 325 (accum_skew_us = 32500) +sys={6.552600}, mono={6.552600}: enqueue packet 326 (accum_skew_us = 32600) +sys={6.572700}, mono={6.572700}: enqueue packet 327 (accum_skew_us = 32700) +sys={6.592800}, mono={6.592800}: enqueue packet 328 (accum_skew_us = 32800) +sys={6.612900}, mono={6.612900}: enqueue packet 329 (accum_skew_us = 32900) +sys={6.633000}, mono={6.633000}: enqueue packet 330 (accum_skew_us = 33000) +sys={6.653100}, mono={6.653100}: enqueue packet 331 (accum_skew_us = 33100) +sys={6.673200}, mono={6.673200}: enqueue packet 332 (accum_skew_us = 33200) +sys={6.693300}, mono={6.693300}: enqueue packet 333 (accum_skew_us = 33300) +sys={6.713400}, mono={6.713400}: enqueue packet 334 (accum_skew_us = 33400) +sys={6.733500}, mono={6.733500}: enqueue packet 335 (accum_skew_us = 33500) +sys={6.753600}, mono={6.753600}: enqueue packet 336 (accum_skew_us = 33600) +sys={6.773700}, mono={6.773700}: enqueue packet 337 (accum_skew_us = 33700) +sys={6.793800}, mono={6.793800}: enqueue packet 338 (accum_skew_us = 33800) +sys={6.813900}, mono={6.813900}: enqueue packet 339 (accum_skew_us = 33900) +sys={6.834000}, mono={6.834000}: enqueue packet 340 (accum_skew_us = 34000) +sys={6.854100}, mono={6.854100}: enqueue packet 341 (accum_skew_us = 34100) +sys={6.874200}, mono={6.874200}: enqueue packet 342 (accum_skew_us = 34200) +sys={6.894300}, mono={6.894300}: enqueue packet 343 (accum_skew_us = 34300) +sys={6.914400}, mono={6.914400}: enqueue packet 344 (accum_skew_us = 34400) +sys={6.934500}, mono={6.934500}: enqueue packet 345 (accum_skew_us = 34500) +sys={6.954600}, mono={6.954600}: enqueue packet 346 (accum_skew_us = 34600) +sys={6.974700}, mono={6.974700}: enqueue packet 347 (accum_skew_us = 34700) +sys={6.994800}, mono={6.994800}: enqueue packet 348 (accum_skew_us = 34800) +sys={7.014900}, mono={7.014900}: enqueue packet 349 (accum_skew_us = 34900) +sys={7.035000}, mono={7.035000}: enqueue packet 350 (accum_skew_us = 35000) +sys={7.055100}, mono={7.055100}: enqueue packet 351 (accum_skew_us = 35100) +sys={7.075200}, mono={7.075200}: enqueue packet 352 (accum_skew_us = 35200) +sys={7.095300}, mono={7.095300}: enqueue packet 353 (accum_skew_us = 35300) +sys={7.115400}, mono={7.115400}: enqueue packet 354 (accum_skew_us = 35400) +sys={7.135500}, mono={7.135500}: enqueue packet 355 (accum_skew_us = 35500) +sys={7.155600}, mono={7.155600}: enqueue packet 356 (accum_skew_us = 35600) +sys={7.175700}, mono={7.175700}: enqueue packet 357 (accum_skew_us = 35700) +sys={7.195800}, mono={7.195800}: enqueue packet 358 (accum_skew_us = 35800) +sys={7.215900}, mono={7.215900}: enqueue packet 359 (accum_skew_us = 35900) +sys={7.236000}, mono={7.236000}: enqueue packet 360 (accum_skew_us = 36000) +sys={7.256100}, mono={7.256100}: enqueue packet 361 (accum_skew_us = 36100) +sys={7.276200}, mono={7.276200}: enqueue packet 362 (accum_skew_us = 36200) +sys={7.296300}, mono={7.296300}: enqueue packet 363 (accum_skew_us = 36300) +sys={7.316400}, mono={7.316400}: enqueue packet 364 (accum_skew_us = 36400) +sys={7.336500}, mono={7.336500}: enqueue packet 365 (accum_skew_us = 36500) +sys={7.356600}, mono={7.356600}: enqueue packet 366 (accum_skew_us = 36600) +sys={7.376700}, mono={7.376700}: enqueue packet 367 (accum_skew_us = 36700) +sys={7.396800}, mono={7.396800}: enqueue packet 368 (accum_skew_us = 36800) +sys={7.416900}, mono={7.416900}: enqueue packet 369 (accum_skew_us = 36900) +sys={7.437000}, mono={7.437000}: enqueue packet 370 (accum_skew_us = 37000) +sys={7.457100}, mono={7.457100}: enqueue packet 371 (accum_skew_us = 37100) +sys={7.477200}, mono={7.477200}: enqueue packet 372 (accum_skew_us = 37200) +sys={7.497300}, mono={7.497300}: enqueue packet 373 (accum_skew_us = 37300) +sys={7.517400}, mono={7.517400}: enqueue packet 374 (accum_skew_us = 37400) +sys={7.537500}, mono={7.537500}: enqueue packet 375 (accum_skew_us = 37500) +sys={7.557600}, mono={7.557600}: enqueue packet 376 (accum_skew_us = 37600) +sys={7.577700}, mono={7.577700}: enqueue packet 377 (accum_skew_us = 37700) +sys={7.597800}, mono={7.597800}: enqueue packet 378 (accum_skew_us = 37800) +sys={7.617900}, mono={7.617900}: enqueue packet 379 (accum_skew_us = 37900) +sys={7.638000}, mono={7.638000}: enqueue packet 380 (accum_skew_us = 38000) +sys={7.658100}, mono={7.658100}: enqueue packet 381 (accum_skew_us = 38100) +sys={7.678200}, mono={7.678200}: enqueue packet 382 (accum_skew_us = 38200) +sys={7.698300}, mono={7.698300}: enqueue packet 383 (accum_skew_us = 38300) +sys={7.718400}, mono={7.718400}: enqueue packet 384 (accum_skew_us = 38400) +sys={7.738500}, mono={7.738500}: enqueue packet 385 (accum_skew_us = 38500) +sys={7.758600}, mono={7.758600}: enqueue packet 386 (accum_skew_us = 38600) +sys={7.778700}, mono={7.778700}: enqueue packet 387 (accum_skew_us = 38700) +sys={7.798800}, mono={7.798800}: enqueue packet 388 (accum_skew_us = 38800) +sys={7.818900}, mono={7.818900}: enqueue packet 389 (accum_skew_us = 38900) +sys={7.839000}, mono={7.839000}: enqueue packet 390 (accum_skew_us = 39000) +sys={7.859100}, mono={7.859100}: enqueue packet 391 (accum_skew_us = 39100) +sys={7.879200}, mono={7.879200}: enqueue packet 392 (accum_skew_us = 39200) +sys={7.899300}, mono={7.899300}: enqueue packet 393 (accum_skew_us = 39300) +sys={7.919400}, mono={7.919400}: enqueue packet 394 (accum_skew_us = 39400) +sys={7.939500}, mono={7.939500}: enqueue packet 395 (accum_skew_us = 39500) +sys={7.959600}, mono={7.959600}: enqueue packet 396 (accum_skew_us = 39600) +sys={7.979700}, mono={7.979700}: enqueue packet 397 (accum_skew_us = 39700) +sys={7.999800}, mono={7.999800}: enqueue packet 398 (accum_skew_us = 39800) +sys={8.019900}, mono={8.019900}: enqueue packet 399 (accum_skew_us = 39900) +sys={8.040000}, mono={8.040000}: enqueue packet 400 (accum_skew_us = 40000) +sys={8.060100}, mono={8.060100}: enqueue packet 401 (accum_skew_us = 40100) +sys={8.080200}, mono={8.080200}: enqueue packet 402 (accum_skew_us = 40200) +sys={8.100300}, mono={8.100300}: enqueue packet 403 (accum_skew_us = 40300) +sys={8.120400}, mono={8.120400}: enqueue packet 404 (accum_skew_us = 40400) +sys={8.140500}, mono={8.140500}: enqueue packet 405 (accum_skew_us = 40500) +sys={8.160600}, mono={8.160600}: enqueue packet 406 (accum_skew_us = 40600) +sys={8.180700}, mono={8.180700}: enqueue packet 407 (accum_skew_us = 40700) +sys={8.200800}, mono={8.200800}: enqueue packet 408 (accum_skew_us = 40800) +sys={8.220900}, mono={8.220900}: enqueue packet 409 (accum_skew_us = 40900) +sys={8.241000}, mono={8.241000}: enqueue packet 410 (accum_skew_us = 41000) +sys={8.261100}, mono={8.261100}: enqueue packet 411 (accum_skew_us = 41100) +sys={8.281200}, mono={8.281200}: enqueue packet 412 (accum_skew_us = 41200) +sys={8.301300}, mono={8.301300}: enqueue packet 413 (accum_skew_us = 41300) +sys={8.321400}, mono={8.321400}: enqueue packet 414 (accum_skew_us = 41400) +sys={8.341500}, mono={8.341500}: enqueue packet 415 (accum_skew_us = 41500) +sys={8.361600}, mono={8.361600}: enqueue packet 416 (accum_skew_us = 41600) +sys={8.381700}, mono={8.381700}: enqueue packet 417 (accum_skew_us = 41700) +sys={8.401800}, mono={8.401800}: enqueue packet 418 (accum_skew_us = 41800) +sys={8.421900}, mono={8.421900}: enqueue packet 419 (accum_skew_us = 41900) +sys={8.442000}, mono={8.442000}: enqueue packet 420 (accum_skew_us = 42000) +sys={8.462100}, mono={8.462100}: enqueue packet 421 (accum_skew_us = 42100) +sys={8.482200}, mono={8.482200}: enqueue packet 422 (accum_skew_us = 42200) +sys={8.502300}, mono={8.502300}: enqueue packet 423 (accum_skew_us = 42300) +sys={8.522400}, mono={8.522400}: enqueue packet 424 (accum_skew_us = 42400) +sys={8.542500}, mono={8.542500}: enqueue packet 425 (accum_skew_us = 42500) +sys={8.562600}, mono={8.562600}: enqueue packet 426 (accum_skew_us = 42600) +sys={8.582700}, mono={8.582700}: enqueue packet 427 (accum_skew_us = 42700) +sys={8.602800}, mono={8.602800}: enqueue packet 428 (accum_skew_us = 42800) +sys={8.622900}, mono={8.622900}: enqueue packet 429 (accum_skew_us = 42900) +sys={8.643000}, mono={8.643000}: enqueue packet 430 (accum_skew_us = 43000) +sys={8.663100}, mono={8.663100}: enqueue packet 431 (accum_skew_us = 43100) +sys={8.683200}, mono={8.683200}: enqueue packet 432 (accum_skew_us = 43200) +sys={8.703300}, mono={8.703300}: enqueue packet 433 (accum_skew_us = 43300) +sys={8.723400}, mono={8.723400}: enqueue packet 434 (accum_skew_us = 43400) +sys={8.743500}, mono={8.743500}: enqueue packet 435 (accum_skew_us = 43500) +sys={8.763600}, mono={8.763600}: enqueue packet 436 (accum_skew_us = 43600) +sys={8.783700}, mono={8.783700}: enqueue packet 437 (accum_skew_us = 43700) +sys={8.803800}, mono={8.803800}: enqueue packet 438 (accum_skew_us = 43800) +sys={8.823900}, mono={8.823900}: enqueue packet 439 (accum_skew_us = 43900) +sys={8.844000}, mono={8.844000}: enqueue packet 440 (accum_skew_us = 44000) +sys={8.864100}, mono={8.864100}: enqueue packet 441 (accum_skew_us = 44100) +sys={8.884200}, mono={8.884200}: enqueue packet 442 (accum_skew_us = 44200) +sys={8.904300}, mono={8.904300}: enqueue packet 443 (accum_skew_us = 44300) +sys={8.924400}, mono={8.924400}: enqueue packet 444 (accum_skew_us = 44400) +sys={8.944500}, mono={8.944500}: enqueue packet 445 (accum_skew_us = 44500) +sys={8.964600}, mono={8.964600}: enqueue packet 446 (accum_skew_us = 44600) +sys={8.984700}, mono={8.984700}: enqueue packet 447 (accum_skew_us = 44700) +sys={9.004800}, mono={9.004800}: enqueue packet 448 (accum_skew_us = 44800) +sys={9.024900}, mono={9.024900}: enqueue packet 449 (accum_skew_us = 44900) OK: Test passed diff --git a/tests/jibuf/jibuf_tool.c b/tests/jibuf/jibuf_tool.c index 830c8cf..c8d8bda 100644 --- a/tests/jibuf/jibuf_tool.c +++ b/tests/jibuf/jibuf_tool.c @@ -47,6 +47,7 @@ struct timeval tx_prev_time; struct timeval tx_time; uint32_t tx_delay; + int32_t skew_us; struct checkpoint prequeue; struct checkpoint postqueue; }; @@ -60,6 +61,7 @@ static bool opt_debug_human; static bool opt_debug_table; static bool opt_osmux; +static bool opt_skew; static char* opt_pcap_file; uint32_t opt_buffer_min = 60; uint32_t opt_buffer_max = 500; @@ -165,12 +167,12 @@ if (opt_debug_human) { uint32_t total_delay_ms = timeval2ms(&total_delay); LOGP(DLJIBUF, LOGL_DEBUG, "%s: seq=%"PRIu16" ts=%"PRIu32" (%ld.%06ld) tx_delay=%"PRIu32 \ - " end_delay=%"PRIu32" pre_trans=%d pre_jitter=%f post_trans=%d post_jitter=%f\n", + " end_delay=%"PRIu32" pre_trans=%d pre_jitter=%f post_trans=%d post_jitter=%f skew=%"PRId32"\n", info, ntohs(rtph->sequence), ntohl(rtph->timestamp), pinfo->tx_time.tv_sec, pinfo->tx_time.tv_usec, pinfo->tx_delay, total_delay_ms, pinfo->prequeue.transit, pinfo->prequeue.jitter, - pinfo->postqueue.transit, pinfo->postqueue.jitter); + pinfo->postqueue.transit, pinfo->postqueue.jitter, pinfo->skew_us); if (pinfo->prequeue.jitter < pinfo->postqueue.jitter) LOGP(DLJIBUF, LOGL_ERROR, "JITTER HIGHER THAN REF: seq=%"PRIu16" ts=%"PRIu32 \ @@ -190,12 +192,12 @@ uint32_t tx_time_ms = timeval2ms(&pinfo->tx_time); uint32_t prequeue_time_ms = timeval2ms(&pinfo->prequeue.ts); uint32_t postqueue_time_ms = timeval2ms(&pinfo->postqueue.ts); - fprintf(stderr, "%"PRIu16"\t%"PRIu32"\t%"PRIu32"\t%"PRIu32"\t%d\t%d\t%f\t%f\t%"PRIu32"\t%"PRIu32"\n", + fprintf(stderr, "%"PRIu16"\t%"PRIu32"\t%"PRIu32"\t%"PRIu32"\t%d\t%d\t%f\t%f\t%"PRIu32"\t%"PRIu32"\t%f\n", ntohs(rtph->sequence), tx_time_ms, prequeue_time_ms, postqueue_time_ms, pinfo->prequeue.transit, pinfo->postqueue.transit, pinfo->prequeue.jitter, pinfo->postqueue.jitter, - packets_dropped, jb->threshold_delay); + packets_dropped, jb->threshold_delay, (double)jb->skew_us/1000.0); } } @@ -316,6 +318,10 @@ prequeue_prev.seq = htons(rtph->sequence); int n = osmo_jibuf_enqueue(jb, msg); + + /* skew has been updated with this new packet. We pick the updated one + * as it's the one applied to this packet. */ + pinfo->skew_us = jb->skew_us; if (n<0) { pkt_add_result(msg, true); @@ -482,7 +488,7 @@ osmo_jibuf_set_min_delay(jb, GENERATED_JITTER_MS - RTP_FREQ_MS); osmo_jibuf_set_max_delay(jb, GENERATED_JITTER_MS + RTP_FREQ_MS*2); - + osmo_jibuf_enable_skew_compensation(jb, opt_skew); osmo_jibuf_set_dequeue_cb(jb, dequeue_cb, NULL); /* first run */ @@ -522,6 +528,7 @@ osmo_jibuf_set_dequeue_cb(jb, dequeue_cb, NULL); osmo_jibuf_set_min_delay(jb, opt_buffer_min); osmo_jibuf_set_max_delay(jb, opt_buffer_max); + osmo_jibuf_enable_skew_compensation(jb, opt_skew); /* first run */ pcap_pkt_timer_cb(NULL); @@ -536,13 +543,14 @@ static void print_help(void) { - printf("jibuf_test [-r] [-p pcap] [-o] [-d] [-g] [-m ms] [-M ms]\n"); + printf("jibuf_test [-r] [-p pcap] [-o] [-d] [-g] [-s] [-m ms] [-M ms]\n"); printf(" -h Print this help message\n"); printf(" -r Run test with randomly generated jitter\n"); printf(" -p Run test with specified pcap file\n"); printf(" -o The pcap contains OSMUX packets isntead of RTP\n"); printf(" -d Enable packet trace debug suitable for humans\n"); printf(" -t Enable packet trace debug suitable for gnuplot\n"); + printf(" -s Enable skew estimation and compensation algorithm on the jitter-buffer\n"); printf(" -m Minimum buffer size for the jitter-buffer, in ms (only used in -p mode)\n"); printf(" -M Maximum buffer size for the jitter-buffer, in ms (only used in -p mode)\n"); } @@ -551,7 +559,7 @@ { int opt; - while ((opt = getopt(argc, argv, "hdtrop:m:M:")) != -1) { + while ((opt = getopt(argc, argv, "hdtrosp:m:M:")) != -1) { switch (opt) { case 'h': print_help(); @@ -568,6 +576,9 @@ case 'o': opt_osmux = true; break; + case 's': + opt_skew = true; + break; case 'p': opt_pcap_file = strdup(optarg); break; diff --git a/tests/jibuf/jitter.plt b/tests/jibuf/jitter.plt index 0235170..fb606cf 100644 --- a/tests/jibuf/jitter.plt +++ b/tests/jibuf/jitter.plt @@ -33,6 +33,7 @@ '/tmp/bla' using 4:8 with linespoints title 'post.jitter' axes x1y1, \ '/tmp/bla' using 3:9 with linespoints title 'pre.dropped' axes x1y1, \ '/tmp/bla' using 3:10 with linespoints title 'pre.buffer' axes x1y1, \ + '/tmp/bla' using 3:11 with linespoints title 'pre.skew' axes x1y1, \ '/tmp/bla' using 4:((column(4)-column(2))) with linespoints title 'post.delay' axes x1y1 } else { @@ -43,6 +44,7 @@ '/tmp/bla' using 4:8 with linespoints title 'post.jitter' axes x1y1, \ '/tmp/bla' using 3:9 with linespoints title 'pre.dropped' axes x1y1, \ '/tmp/bla' using 3:10 with linespoints title 'pre.buffer' axes x1y1, \ + '/tmp/bla' using 3:11 with linespoints title 'pre.skew' axes x1y1, \ '/tmp/bla' using 3:((column(3)-column(2))) with linespoints title 'pre.delay' axes x1y1, \ '/tmp/bla' using 4:((column(4)-column(2))) with linespoints title 'post.delay' axes x1y1 } -- To view, visit https://gerrit.osmocom.org/7781 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: Ifae633d53107417a8e2f9b0f200d2711db72d199 Gerrit-PatchSet: 2 Gerrit-Project: libosmo-netif Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder From gerrit-no-reply at lists.osmocom.org Mon Apr 16 15:15:01 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Mon, 16 Apr 2018 15:15:01 +0000 Subject: [MERGED] libosmo-netif[master]: tests: jibuf_tool: Add seq.plt In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: tests: jibuf_tool: Add seq.plt ...................................................................... tests: jibuf_tool: Add seq.plt Change-Id: I37bb3ab372b7ad7c3c1d09c8134827c932bf8bf8 --- A tests/jibuf/seq.plt 1 file changed, 50 insertions(+), 0 deletions(-) Approvals: Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/tests/jibuf/seq.plt b/tests/jibuf/seq.plt new file mode 100644 index 0000000..dda8ad0 --- /dev/null +++ b/tests/jibuf/seq.plt @@ -0,0 +1,50 @@ +#set terminal png size 1280,1024 enhanced font "Helvetica,20" +#set output 'output.png' +#set terminal qt +#set output + +set datafile separator "\t" +set datafile missing '0' + +#set multiplot + +# key/legend +set key top right +set key box +set key left bottom +set key bmargin + + +set title 'Jitter Graph' +set xlabel 'Timestamp' +set ylabel 'Seq' +set ytics nomirror + +#set y2label 'delay [ms]' +#set y2tics nomirror + +# For pcap based input, 'pre.delay' makes no sense (it's 0) as we can't know tx_delay +pcap = 1 +if (pcap) { + plot \ + '/tmp/bla' using 3:1 with linespoints title 'pre.trans' axes x1y1, \ + '/tmp/bla' using 4:1 with linespoints title 'post.trans' axes x1y1, \ + '/tmp/bla' using 3:7 with linespoints title 'pre.jitter' axes x1y1, \ + '/tmp/bla' using 4:8 with linespoints title 'post.jitter' axes x1y1, \ + '/tmp/bla' using 3:10 with linespoints title 'pre.buffer' axes x1y1, \ + '/tmp/bla' using 4:((column(4)-column(3))) with linespoints title 'post.delay' axes x1y1 + +} else { + plot \ + '/tmp/bla' using 3:5 with linespoints title 'pre.trans' axes x1y1, \ + '/tmp/bla' using 4:6 with linespoints title 'post.trans' axes x1y1, \ + '/tmp/bla' using 3:7 with linespoints title 'pre.jitter' axes x1y1, \ + '/tmp/bla' using 4:8 with linespoints title 'post.jitter' axes x1y1, \ + '/tmp/bla' using 3:9 with linespoints title 'pre.dropped' axes x1y1, \ + '/tmp/bla' using 3:10 with linespoints title 'pre.buffer' axes x1y1, \ + '/tmp/bla' using 3:11 with linespoints title 'pre.skew' axes x1y1, \ + '/tmp/bla' using 3:((column(3)-column(2))) with linespoints title 'pre.delay' axes x1y1, \ + '/tmp/bla' using 4:((column(4)-column(2))) with linespoints title 'post.delay' axes x1y1 +} + +pause mouse close; exit -- To view, visit https://gerrit.osmocom.org/7780 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: I37bb3ab372b7ad7c3c1d09c8134827c932bf8bf8 Gerrit-PatchSet: 2 Gerrit-Project: libosmo-netif Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder From gerrit-no-reply at lists.osmocom.org Mon Apr 16 15:15:01 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Mon, 16 Apr 2018 15:15:01 +0000 Subject: [MERGED] libosmo-netif[master]: jibuf: re-sync clock out of sync timestamps In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: jibuf: re-sync clock out of sync timestamps ...................................................................... jibuf: re-sync clock out of sync timestamps Change-Id: I33556b33d7549654442d9bdd7f31128792506652 --- M src/jibuf.c M tests/jibuf/jibuf_test.c M tests/jibuf/jibuf_test.ok M tests/jibuf/jibuf_tool.c 4 files changed, 152 insertions(+), 7 deletions(-) Approvals: Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/src/jibuf.c b/src/jibuf.c index dfeb12e..774ddfc 100644 --- a/src/jibuf.c +++ b/src/jibuf.c @@ -36,6 +36,7 @@ /* Sampling rate (in Hz) */ /* TODO: SAMPLE RATE can be guessed from rtp.p_type */ +#define SAMPLES_PER_PKT 160 #define SAMPLE_RATE 8000 /* TUNABLE PARAMETERS: */ @@ -149,6 +150,27 @@ uint32_t current_tx_ts = msg_get_timestamp(msg); return samples2ms((current_tx_ts - jb->ref_tx_ts)) - (current_rx_ts - jb->ref_rx_ts); +} + +static bool msg_is_in_sequence(struct osmo_jibuf *jb, struct msgb *msg) +{ + uint32_t current_tx_ts = msg_get_timestamp(msg); + uint16_t current_seq = msg_get_sequence(msg); + return (current_tx_ts - jb->ref_tx_ts) == (current_seq - jb->ref_tx_seq)*SAMPLES_PER_PKT; +} + +/* If packet contains a mark -> start of talkspurt. + * A lot of packets may have been suppressed by the sender before it, + * so let's take it as a reference + * If packet timestamp is not aligned with sequence + * number, then we are most probaly starting a talkspurt */ +static bool msg_is_syncpoint(struct osmo_jibuf *jb, struct msgb* msg) +{ + bool res = msg_get_marker(msg) || !msg_is_in_sequence(jb, msg); + if(res) + LOGP(DLMIB, LOGL_DEBUG, "syncpoint: %"PRIu16": marker=%d in_seq=%d\n", + msg_get_sequence(msg), msg_get_marker(msg), msg_is_in_sequence(jb, msg)); + return res; } static void msg_set_as_reference(struct osmo_jibuf *jb, struct msgb *msg) @@ -283,11 +305,8 @@ clock_gettime_timeval(CLOCK_MONOTONIC, &jb->last_enqueue_time); - /* If packet contains a mark -> start of talkspurt. - * A lot of packets may have been suppressed by the sender before it, - * so let's take it as a reference - */ - if (!jb->started || msg_get_marker(msg)) { + /* Check if it's time to sync, ie. start of talkspurt */ + if (!jb->started || msg_is_syncpoint(jb, msg)) { jb->started = true; msg_set_as_reference(jb, msg); rel_delay = 0; diff --git a/tests/jibuf/jibuf_test.c b/tests/jibuf/jibuf_test.c index 9965387..cbfe0af 100644 --- a/tests/jibuf/jibuf_test.c +++ b/tests/jibuf/jibuf_test.c @@ -618,6 +618,72 @@ osmo_jibuf_delete(jb); } +void test_rtp_out_of_sync(unsigned int time_inc_ms, uint16_t seq_nosync_inc, uint32_t ts_nosync_inc, bool expect_drop) +{ + int min_delay = 60; + struct msgb *msg; + int rc; + + printf("===test_rtp_out_of_sync(%u, %"PRIu16", %"PRIu32", %d)===\n", + time_inc_ms, seq_nosync_inc, ts_nosync_inc, expect_drop); + + clock_override_enable(true); + clock_override_set(0, 0); + rtp_init(32, 400); + jb = osmo_jibuf_alloc(NULL); + osmo_jibuf_set_dequeue_cb(jb, dequeue_cb, NULL); + osmo_jibuf_set_min_delay(jb, min_delay); + osmo_jibuf_set_max_delay(jb, 200); + + /* First rtp at t=0, should be scheduled in min_delay time */ + clock_debug("enqueue 1st packet (seq=33, ts=560)"); + ENQUEUE_NEXT(jb); + clock_override_add(0, TIME_RTP_PKT_MS*1000); + clock_debug("enqueue 2nd packet (seq=34, ts=720)"); + ENQUEUE_NEXT(jb); + + clock_override_add(0, time_inc_ms*1000); + clock_debug("2 packets dequeued"); + osmo_select_main(0); + + /* We are at t=20+time_inc_ms, next pkt would normally be dropped since it is + * pretty late, but since seq and timestamp are out of sync, which + * means the sender had some clock issues, the jibuf is going to take + * this new tuple as reference and accept it. + */ + clock_debug("enqueue late pkt with possible sync change"); + rtp_init(rtp_next_seq + seq_nosync_inc, rtp_next_ts + ts_nosync_inc); + msg = rtp_new(rtp_next_seq, rtp_next_ts); + rc = osmo_jibuf_enqueue(jb, msg); + if (expect_drop) { + OSMO_ASSERT(rc < 0); + msgb_free(msg); + } else { + OSMO_ASSERT(rc == 0); + } + + clock_debug("enqueue late pkt after possible resync"); + clock_override_add(0, TIME_RTP_PKT_MS*1000); + msg = rtp_next(); + rc = osmo_jibuf_enqueue(jb, msg); + if (expect_drop) { + OSMO_ASSERT(rc < 0); + msgb_free(msg); + } else { + OSMO_ASSERT(rc == 0); + } + + if (!expect_drop) { + clock_debug("2 packets dequeued"); + clock_override_add(0, min_delay*1000); + osmo_select_main(0); + } + + OSMO_ASSERT(osmo_jibuf_empty(jb)); + + osmo_jibuf_delete(jb); +} + int main(int argc, char **argv) { @@ -643,6 +709,9 @@ test_seq_wraparound(); test_timestamp_wraparound(); test_rtp_marker(); + test_rtp_out_of_sync(80*TIME_RTP_PKT_MS, 5, 5*SAMPLES_PER_PKT, true); + test_rtp_out_of_sync(80*TIME_RTP_PKT_MS, 6, 5*SAMPLES_PER_PKT, false); + test_rtp_out_of_sync(80*TIME_RTP_PKT_MS, 5, 5*SAMPLES_PER_PKT + 3, false); fprintf(stdout, "OK: Test passed\n"); return EXIT_SUCCESS; diff --git a/tests/jibuf/jibuf_test.ok b/tests/jibuf/jibuf_test.ok index 3103781..a152d24 100644 --- a/tests/jibuf/jibuf_test.ok +++ b/tests/jibuf/jibuf_test.ok @@ -365,4 +365,48 @@ sys={0.200000}, mono={0.200000}: clock_override_add sys={0.200000}, mono={0.200000}: dequeue: seq=35 ts=880 INTERMEDIATE sys={0.200000}, mono={0.200000}: dequeue: seq=36 ts=1040 LATEST +===test_rtp_out_of_sync(1600, 5, 800, 1)=== +sys={0.000000}, mono={0.000000}: clock_override_set +sys={0.000000}, mono={0.000000}: enqueue 1st packet (seq=33, ts=560) +sys={0.020000}, mono={0.020000}: clock_override_add +sys={0.020000}, mono={0.020000}: enqueue 2nd packet (seq=34, ts=720) +sys={1.620000}, mono={1.620000}: clock_override_add +sys={1.620000}, mono={1.620000}: 2 packets dequeued +sys={1.620000}, mono={1.620000}: dequeue: seq=33 ts=560 INTERMEDIATE +sys={1.620000}, mono={1.620000}: dequeue: seq=34 ts=720 LATEST +sys={1.620000}, mono={1.620000}: enqueue late pkt with possible sync change +sys={1.620000}, mono={1.620000}: enqueue late pkt after possible resync +sys={1.640000}, mono={1.640000}: clock_override_add +===test_rtp_out_of_sync(1600, 6, 800, 0)=== +sys={0.000000}, mono={0.000000}: clock_override_set +sys={0.000000}, mono={0.000000}: enqueue 1st packet (seq=33, ts=560) +sys={0.020000}, mono={0.020000}: clock_override_add +sys={0.020000}, mono={0.020000}: enqueue 2nd packet (seq=34, ts=720) +sys={1.620000}, mono={1.620000}: clock_override_add +sys={1.620000}, mono={1.620000}: 2 packets dequeued +sys={1.620000}, mono={1.620000}: dequeue: seq=33 ts=560 INTERMEDIATE +sys={1.620000}, mono={1.620000}: dequeue: seq=34 ts=720 LATEST +sys={1.620000}, mono={1.620000}: enqueue late pkt with possible sync change +sys={1.620000}, mono={1.620000}: enqueue late pkt after possible resync +sys={1.640000}, mono={1.640000}: clock_override_add +sys={1.640000}, mono={1.640000}: 2 packets dequeued +sys={1.700000}, mono={1.700000}: clock_override_add +sys={1.700000}, mono={1.700000}: dequeue: seq=40 ts=1520 INTERMEDIATE +sys={1.700000}, mono={1.700000}: dequeue: seq=41 ts=1680 LATEST +===test_rtp_out_of_sync(1600, 5, 803, 0)=== +sys={0.000000}, mono={0.000000}: clock_override_set +sys={0.000000}, mono={0.000000}: enqueue 1st packet (seq=33, ts=560) +sys={0.020000}, mono={0.020000}: clock_override_add +sys={0.020000}, mono={0.020000}: enqueue 2nd packet (seq=34, ts=720) +sys={1.620000}, mono={1.620000}: clock_override_add +sys={1.620000}, mono={1.620000}: 2 packets dequeued +sys={1.620000}, mono={1.620000}: dequeue: seq=33 ts=560 INTERMEDIATE +sys={1.620000}, mono={1.620000}: dequeue: seq=34 ts=720 LATEST +sys={1.620000}, mono={1.620000}: enqueue late pkt with possible sync change +sys={1.620000}, mono={1.620000}: enqueue late pkt after possible resync +sys={1.640000}, mono={1.640000}: clock_override_add +sys={1.640000}, mono={1.640000}: 2 packets dequeued +sys={1.700000}, mono={1.700000}: clock_override_add +sys={1.700000}, mono={1.700000}: dequeue: seq=39 ts=1523 INTERMEDIATE +sys={1.700000}, mono={1.700000}: dequeue: seq=40 ts=1683 LATEST OK: Test passed diff --git a/tests/jibuf/jibuf_tool.c b/tests/jibuf/jibuf_tool.c index 00c6f7e..830c8cf 100644 --- a/tests/jibuf/jibuf_tool.c +++ b/tests/jibuf/jibuf_tool.c @@ -39,6 +39,7 @@ int transit; double jitter; uint32_t timestamp; + uint16_t seq; }; struct rtp_pkt_info { @@ -131,6 +132,16 @@ return ts->tv_sec * 1000 + ts->tv_usec / 1000; } +bool pkt_is_syncpoint(struct msgb* msg, uint16_t prev_seq, uint32_t prev_timestamp) +{ + struct rtp_hdr *rtph = osmo_rtp_get_hdr(msg); + + uint16_t current_seq = ntohs(rtph->sequence); + uint32_t current_tx_ts = ntohl(rtph->timestamp); + bool insync = (current_tx_ts - prev_timestamp) == (current_seq - prev_seq)*SAMPLES_PER_PKT; + return !insync || rtph->marker; +} + int32_t calc_rel_transmit_time(uint32_t tx_0, uint32_t tx_f, uint32_t rx_0, uint32_t rx_f, bool tx_is_samples, bool pre) { int32_t rxdiff, txdiff, res; @@ -220,7 +231,7 @@ /* If pkt->marker -> init of talkspurt, there may be missing packets before, * better to start calculating the jitter from here */ - if (postqueue_started && !rtph->marker) { + if (postqueue_started && !pkt_is_syncpoint(msg, postqueue_prev.seq, postqueue_prev.timestamp)) { /* In random test mode we now the sender time, so we get real * jitter results using it */ if(opt_test_rand) { @@ -248,6 +259,7 @@ } postqueue_prev = pinfo->postqueue; + postqueue_prev.seq = htons(rtph->sequence); pkt_add_result(msg, false); @@ -273,7 +285,7 @@ /* If pkt->marker -> init of talkspurt, there may be missing packets before, * better to start calculating the jitter from here */ - if (prequeue_started && !rtph->marker) { + if (prequeue_started && !pkt_is_syncpoint(msg, prequeue_prev.seq, prequeue_prev.timestamp)) { /* In random test mode we now the sender time, so we get real * jitter results using it */ if(opt_test_rand) { @@ -301,6 +313,7 @@ } prequeue_prev = pinfo->prequeue; + prequeue_prev.seq = htons(rtph->sequence); int n = osmo_jibuf_enqueue(jb, msg); -- To view, visit https://gerrit.osmocom.org/7779 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: I33556b33d7549654442d9bdd7f31128792506652 Gerrit-PatchSet: 2 Gerrit-Project: libosmo-netif Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder From gerrit-no-reply at lists.osmocom.org Mon Apr 16 15:15:02 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Mon, 16 Apr 2018 15:15:02 +0000 Subject: [MERGED] libosmo-netif[master]: jibuf: Take RTP marker into account In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: jibuf: Take RTP marker into account ...................................................................... jibuf: Take RTP marker into account Change-Id: Ie142acfb45650e0af775f58226fd191beaf8178e --- M src/jibuf.c M tests/jibuf/jibuf_test.c M tests/jibuf/jibuf_test.ok M tests/jibuf/jibuf_tool.c 4 files changed, 89 insertions(+), 5 deletions(-) Approvals: Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/src/jibuf.c b/src/jibuf.c index c3d6bad..dfeb12e 100644 --- a/src/jibuf.c +++ b/src/jibuf.c @@ -115,6 +115,14 @@ } +static bool msg_get_marker(struct msgb *msg) +{ + /* TODO: make it more generic as a callback so that different types of + * pkts can be used ? */ + struct rtp_hdr *rtph = osmo_rtp_get_hdr(msg); + return rtph->marker; +} + static uint16_t msg_get_sequence(struct msgb *msg) { struct rtp_hdr *rtph = osmo_rtp_get_hdr(msg); @@ -275,7 +283,11 @@ clock_gettime_timeval(CLOCK_MONOTONIC, &jb->last_enqueue_time); - if (!jb->started) { + /* If packet contains a mark -> start of talkspurt. + * A lot of packets may have been suppressed by the sender before it, + * so let's take it as a reference + */ + if (!jb->started || msg_get_marker(msg)) { jb->started = true; msg_set_as_reference(jb, msg); rel_delay = 0; @@ -310,10 +322,10 @@ timeradd(&jb->last_enqueue_time, &delay_ts, &sched_ts); LOGP(DLJIBUF, LOGL_DEBUG, "enqueuing packet seq=%"PRIu16" rel=%d delay=%d" \ - " thres=%d {%lu.%06lu -> %lu.%06lu}\n", + " thres=%d {%lu.%06lu -> %lu.%06lu} %s\n", msg_get_sequence(msg), rel_delay, delay, jb->threshold_delay, jb->last_enqueue_time.tv_sec, jb->last_enqueue_time.tv_usec, - sched_ts.tv_sec, sched_ts.tv_usec); + sched_ts.tv_sec, sched_ts.tv_usec, msg_get_marker(msg)? "M" : ""); /* Add scheduled dequeue time in msg->cb so we can check it later */ unsigned long *old_cb = talloc_memdup(jb->talloc_ctx, msg->cb, sizeof(msg->cb)); diff --git a/tests/jibuf/jibuf_test.c b/tests/jibuf/jibuf_test.c index ba21906..9965387 100644 --- a/tests/jibuf/jibuf_test.c +++ b/tests/jibuf/jibuf_test.c @@ -568,6 +568,56 @@ osmo_jibuf_delete(jb); } +static void test_rtp_marker(void) +{ + int min_delay = 60; + struct msgb *msg; + struct rtp_hdr *rtph; + + printf("===test_rtp_marker===\n"); + + clock_override_enable(true); + clock_override_set(0, 0); + rtp_init(32, 400); + jb = osmo_jibuf_alloc(NULL); + osmo_jibuf_set_dequeue_cb(jb, dequeue_cb, NULL); + osmo_jibuf_set_min_delay(jb, min_delay); + osmo_jibuf_set_max_delay(jb, 200); + + /* First rtp at t=0, should be scheduled in min_delay time */ + clock_debug("enqueue 1st packet"); + ENQUEUE_NEXT(jb); + clock_override_add(0, TIME_RTP_PKT_MS*1000); + clock_debug("enqueue 2nd packet"); + ENQUEUE_NEXT(jb); + clock_override_add(0, min_delay*1000); + clock_debug("2 packets dequeued"); + osmo_select_main(0); + + clock_override_add(0, 40*1000); + /* We are at t=120, next non-marked (consecutive seq) packet arriving at + * this time should be dropped, but since marker establishes new ref, + * it will be accepted as well an ext paket */ + clock_debug("enqueue late pkt with marker=1, will be enqueued"); + msg = rtp_next(); + rtph = osmo_rtp_get_hdr(msg); + rtph->marker = 1; + OSMO_ASSERT(osmo_jibuf_enqueue(jb, msg) == 0); + + clock_debug("enqueue late pkt after pkt with marker=1, will be enqueued"); + clock_override_add(0, TIME_RTP_PKT_MS*1000); + ENQUEUE_NEXT(jb); + + clock_debug("2 packets dequeued"); + clock_override_add(0, min_delay*1000); + osmo_select_main(0); + + /* t=120, 4 enqueued, 4 dequeued.*/ + OSMO_ASSERT(osmo_jibuf_empty(jb)); + + osmo_jibuf_delete(jb); +} + int main(int argc, char **argv) { @@ -592,6 +642,7 @@ test_buffer_threshold_change(); test_seq_wraparound(); test_timestamp_wraparound(); + test_rtp_marker(); fprintf(stdout, "OK: Test passed\n"); return EXIT_SUCCESS; diff --git a/tests/jibuf/jibuf_test.ok b/tests/jibuf/jibuf_test.ok index 5a0f121..3103781 100644 --- a/tests/jibuf/jibuf_test.ok +++ b/tests/jibuf/jibuf_test.ok @@ -348,4 +348,21 @@ sys={0.160000}, mono={0.160000}: clock_override_add sys={0.160000}, mono={0.160000}: dequeue 5th packet (ts=334) sys={0.160000}, mono={0.160000}: dequeue: seq=37 ts=334 LATEST +===test_rtp_marker=== +sys={0.000000}, mono={0.000000}: clock_override_set +sys={0.000000}, mono={0.000000}: enqueue 1st packet +sys={0.020000}, mono={0.020000}: clock_override_add +sys={0.020000}, mono={0.020000}: enqueue 2nd packet +sys={0.080000}, mono={0.080000}: clock_override_add +sys={0.080000}, mono={0.080000}: 2 packets dequeued +sys={0.080000}, mono={0.080000}: dequeue: seq=33 ts=560 INTERMEDIATE +sys={0.080000}, mono={0.080000}: dequeue: seq=34 ts=720 LATEST +sys={0.120000}, mono={0.120000}: clock_override_add +sys={0.120000}, mono={0.120000}: enqueue late pkt with marker=1, will be enqueued +sys={0.120000}, mono={0.120000}: enqueue late pkt after pkt with marker=1, will be enqueued +sys={0.140000}, mono={0.140000}: clock_override_add +sys={0.140000}, mono={0.140000}: 2 packets dequeued +sys={0.200000}, mono={0.200000}: clock_override_add +sys={0.200000}, mono={0.200000}: dequeue: seq=35 ts=880 INTERMEDIATE +sys={0.200000}, mono={0.200000}: dequeue: seq=36 ts=1040 LATEST OK: Test passed diff --git a/tests/jibuf/jibuf_tool.c b/tests/jibuf/jibuf_tool.c index d24086c..00c6f7e 100644 --- a/tests/jibuf/jibuf_tool.c +++ b/tests/jibuf/jibuf_tool.c @@ -218,7 +218,9 @@ gettimeofday(&pinfo->postqueue.ts, NULL); pinfo->postqueue.timestamp = htonl(rtph->timestamp); - if (postqueue_started) { + /* If pkt->marker -> init of talkspurt, there may be missing packets before, + * better to start calculating the jitter from here */ + if (postqueue_started && !rtph->marker) { /* In random test mode we now the sender time, so we get real * jitter results using it */ if(opt_test_rand) { @@ -269,7 +271,9 @@ gettimeofday(&pinfo->prequeue.ts, NULL); pinfo->prequeue.timestamp = htonl(rtph->timestamp); - if (prequeue_started) { + /* If pkt->marker -> init of talkspurt, there may be missing packets before, + * better to start calculating the jitter from here */ + if (prequeue_started && !rtph->marker) { /* In random test mode we now the sender time, so we get real * jitter results using it */ if(opt_test_rand) { -- To view, visit https://gerrit.osmocom.org/7778 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: Ie142acfb45650e0af775f58226fd191beaf8178e Gerrit-PatchSet: 2 Gerrit-Project: libosmo-netif Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder From gerrit-no-reply at lists.osmocom.org Mon Apr 16 15:15:02 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Mon, 16 Apr 2018 15:15:02 +0000 Subject: [MERGED] libosmo-netif[master]: tests: jibuf_tool: Add parameters to control size of buffer In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: tests: jibuf_tool: Add parameters to control size of buffer ...................................................................... tests: jibuf_tool: Add parameters to control size of buffer Change-Id: I8a7fa39985f8d197e24c32cab80299aba2d03087 --- M tests/jibuf/jibuf_tool.c 1 file changed, 14 insertions(+), 4 deletions(-) Approvals: Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/tests/jibuf/jibuf_tool.c b/tests/jibuf/jibuf_tool.c index ce6632a..d24086c 100644 --- a/tests/jibuf/jibuf_tool.c +++ b/tests/jibuf/jibuf_tool.c @@ -60,6 +60,8 @@ static bool opt_debug_table; static bool opt_osmux; static char* opt_pcap_file; +uint32_t opt_buffer_min = 60; +uint32_t opt_buffer_max = 500; /* ----------------------------- */ /* Logging related stuff */ @@ -501,8 +503,8 @@ jb = osmo_jibuf_alloc(NULL); osmo_jibuf_set_dequeue_cb(jb, dequeue_cb, NULL); - osmo_jibuf_set_min_delay(jb, 60); - osmo_jibuf_set_max_delay(jb, 500); + osmo_jibuf_set_min_delay(jb, opt_buffer_min); + osmo_jibuf_set_max_delay(jb, opt_buffer_max); /* first run */ pcap_pkt_timer_cb(NULL); @@ -517,20 +519,22 @@ static void print_help(void) { - printf("jibuf_test [-r] [-p pcap] [-o] [-d] [-g]\n"); + printf("jibuf_test [-r] [-p pcap] [-o] [-d] [-g] [-m ms] [-M ms]\n"); printf(" -h Print this help message\n"); printf(" -r Run test with randomly generated jitter\n"); printf(" -p Run test with specified pcap file\n"); printf(" -o The pcap contains OSMUX packets isntead of RTP\n"); printf(" -d Enable packet trace debug suitable for humans\n"); printf(" -t Enable packet trace debug suitable for gnuplot\n"); + printf(" -m Minimum buffer size for the jitter-buffer, in ms (only used in -p mode)\n"); + printf(" -M Maximum buffer size for the jitter-buffer, in ms (only used in -p mode)\n"); } static int parse_options(int argc, char **argv) { int opt; - while ((opt = getopt(argc, argv, "hdtrop:")) != -1) { + while ((opt = getopt(argc, argv, "hdtrop:m:M:")) != -1) { switch (opt) { case 'h': print_help(); @@ -550,6 +554,12 @@ case 'p': opt_pcap_file = strdup(optarg); break; + case 'm': + opt_buffer_min = (uint32_t) atoi(optarg); + break; + case 'M': + opt_buffer_max = (uint32_t) atoi(optarg); + break; default: return -1; } -- To view, visit https://gerrit.osmocom.org/7777 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: I8a7fa39985f8d197e24c32cab80299aba2d03087 Gerrit-PatchSet: 2 Gerrit-Project: libosmo-netif Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder From gerrit-no-reply at lists.osmocom.org Mon Apr 16 15:15:02 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Mon, 16 Apr 2018 15:15:02 +0000 Subject: [MERGED] libosmo-netif[master]: tests: jibuf_tool: Add OSMUX support In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: tests: jibuf_tool: Add OSMUX support ...................................................................... tests: jibuf_tool: Add OSMUX support Change-Id: I0f02da0329e6739ff340d31113161bb520b1b760 --- M tests/jibuf/jibuf_tool.c 1 file changed, 40 insertions(+), 3 deletions(-) Approvals: Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/tests/jibuf/jibuf_tool.c b/tests/jibuf/jibuf_tool.c index 7550c1c..ce6632a 100644 --- a/tests/jibuf/jibuf_tool.c +++ b/tests/jibuf/jibuf_tool.c @@ -29,6 +29,7 @@ #include #include #include +#include #include "osmo-pcap-test/osmo_pcap.h" @@ -57,6 +58,7 @@ static bool opt_test_rand; static bool opt_debug_human; static bool opt_debug_table; +static bool opt_osmux; static char* opt_pcap_file; /* ----------------------------- */ @@ -106,6 +108,8 @@ /* Used for test pcap: */ static struct osmo_pcap osmo_pcap; static bool pcap_finished; +static struct osmux_out_handle pcap_osmux_h; +static struct llist_head osmux_list; /* ----------------------------- */ static void sigalarm_handler(int foo) @@ -399,9 +403,33 @@ return 0; } +void glue_cb(struct msgb *msg, void *data) +{ + pcap_generate_pkt_cb(msg); +} + +int pcap_read_osmux(struct msgb *msg) +{ + struct osmux_hdr *osmuxh; + + /* This code below belongs to the osmux receiver */ + while((osmuxh = osmux_xfrm_output_pull(msg)) != NULL) { + osmux_xfrm_output(osmuxh, &pcap_osmux_h, &osmux_list); + osmux_tx_sched(&osmux_list, glue_cb, NULL); + } + msgb_free(msg); + return 0; +} + void pcap_pkt_timer_cb(void *data) { - if (osmo_pcap_test_run(&osmo_pcap, IPPROTO_UDP, pcap_generate_pkt_cb) < 0) { + int (*mycb)(struct msgb *msgb); + if(opt_osmux) + mycb = pcap_read_osmux; + else + mycb = pcap_generate_pkt_cb; + + if (osmo_pcap_test_run(&osmo_pcap, IPPROTO_UDP, mycb) < 0) { osmo_pcap_stats_printf(); osmo_pcap_test_close(osmo_pcap.h); pcap_finished=true; @@ -466,6 +494,11 @@ osmo_pcap.timer.cb = pcap_pkt_timer_cb; + if(opt_osmux) { + INIT_LLIST_HEAD(&osmux_list); + osmux_xfrm_output_init(&pcap_osmux_h, 0); + } + jb = osmo_jibuf_alloc(NULL); osmo_jibuf_set_dequeue_cb(jb, dequeue_cb, NULL); osmo_jibuf_set_min_delay(jb, 60); @@ -484,10 +517,11 @@ static void print_help(void) { - printf("jibuf_test [-r] [-p pcap] [-d] [-g]\n"); + printf("jibuf_test [-r] [-p pcap] [-o] [-d] [-g]\n"); printf(" -h Print this help message\n"); printf(" -r Run test with randomly generated jitter\n"); printf(" -p Run test with specified pcap file\n"); + printf(" -o The pcap contains OSMUX packets isntead of RTP\n"); printf(" -d Enable packet trace debug suitable for humans\n"); printf(" -t Enable packet trace debug suitable for gnuplot\n"); } @@ -496,7 +530,7 @@ { int opt; - while ((opt = getopt(argc, argv, "hdtrp:")) != -1) { + while ((opt = getopt(argc, argv, "hdtrop:")) != -1) { switch (opt) { case 'h': print_help(); @@ -510,6 +544,9 @@ case 'r': opt_test_rand = true; break; + case 'o': + opt_osmux = true; + break; case 'p': opt_pcap_file = strdup(optarg); break; -- To view, visit https://gerrit.osmocom.org/7776 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: I0f02da0329e6739ff340d31113161bb520b1b760 Gerrit-PatchSet: 2 Gerrit-Project: libosmo-netif Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder From gerrit-no-reply at lists.osmocom.org Mon Apr 16 15:15:02 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Mon, 16 Apr 2018 15:15:02 +0000 Subject: [MERGED] libosmo-netif[master]: tests: jibuf_tool: Improve jibuf_test to read pcaps In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: tests: jibuf_tool: Improve jibuf_test to read pcaps ...................................................................... tests: jibuf_tool: Improve jibuf_test to read pcaps Change-Id: I7a13c823fb70e0adbc5fa0726fd66b15dc40014e Signed-off-by: Pau Espin Pedrol --- M tests/Makefile.am M tests/jibuf/jibuf_tool.c M tests/jibuf/jitter.plt 3 files changed, 315 insertions(+), 112 deletions(-) Approvals: Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/tests/Makefile.am b/tests/Makefile.am index a4abca2..dd0e2b2 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -2,6 +2,9 @@ AM_LDFLAGS = $(LIBOSMOCORE_LDFLAGS) check_PROGRAMS = osmux/osmux_test jibuf/jibuf_test jibuf/jibuf_tool +check_HEADERS = \ + osmo-pcap-test/osmo_pcap.h \ + osmo-pcap-test/proto.h osmux_osmux_test_SOURCES = osmux/osmux_test.c osmux_osmux_test_LDADD = $(LIBOSMOCORE_LIBS) $(top_builddir)/src/libosmonetif.la @@ -9,8 +12,20 @@ jibuf_jibuf_test_SOURCES = jibuf/jibuf_test.c jibuf_jibuf_test_LDADD = $(LIBOSMOCORE_LIBS) $(top_builddir)/src/libosmonetif.la -jibuf_jibuf_tool_SOURCES = jibuf/jibuf_tool.c -jibuf_jibuf_tool_LDADD = $(LIBOSMOCORE_LIBS) $(top_builddir)/src/libosmonetif.la +jibuf_jibuf_tool_SOURCES = \ + jibuf/jibuf_tool.c \ + osmo-pcap-test/proto.c \ + osmo-pcap-test/l2_eth.c \ + osmo-pcap-test/l2_sll.c \ + osmo-pcap-test/l3_ipv4.c \ + osmo-pcap-test/l4_tcp.c \ + osmo-pcap-test/l4_udp.c \ + osmo-pcap-test/pcap.c + +jibuf_jibuf_tool_LDADD = \ + $(LIBOSMOCORE_LIBS) \ + $(top_builddir)/src/libosmonetif.la \ + -lpcap # The `:;' works around a Bash 3.2 bug when the output is not writeable. $(srcdir)/package.m4: $(top_srcdir)/configure.ac diff --git a/tests/jibuf/jibuf_tool.c b/tests/jibuf/jibuf_tool.c index 810ecb4..7550c1c 100644 --- a/tests/jibuf/jibuf_tool.c +++ b/tests/jibuf/jibuf_tool.c @@ -20,6 +20,7 @@ #include #include #include +#include #include #include @@ -29,50 +30,14 @@ #include #include -/* Logging related stuff */ -#define INT2IDX(x) (-1*(x)-1) -struct log_info_cat jibuf_test_cat[] = { - [INT2IDX(DLJIBUF)] = { - .name = "DLJIBUF", - .description = "Osmocom Jitter Buffer", - .enabled = 1, .loglevel = LOGL_DEBUG, - }, -}; -const struct log_info jibuf_test_log_info = { - .filter_fn = NULL, - .cat = jibuf_test_cat, - .num_cat = ARRAY_SIZE(jibuf_test_cat), -}; +#include "osmo-pcap-test/osmo_pcap.h" -/* RTP packet with AMR payload */ -static uint8_t rtp_pkt[] = { - 0x80, 0x62, 0x3f, 0xcc, 0x00, 0x01, 0xa7, 0x6f, /* RTP */ - 0x07, 0x09, 0x00, 0x62, 0x20, 0x14, 0xff, 0xd4, /* AMR */ - 0xf9, 0xff, 0xfb, 0xe7, 0xeb, 0xf9, 0x9f, 0xf8, - 0xf2, 0x26, 0x33, 0x65, 0x54, -}; - -static void sigalarm_handler(int foo) -{ - printf("FAIL: test did not run successfully\n"); - exit(EXIT_FAILURE); -} - -#define SAMPLES_PER_PKT 160 -#define RTP_FREQ_MS 20 -#define RTP_PKTS_PER_SEC (1000/RTP_FREQ_MS) -#define NET_DELAY_MS 300 -#define GENERATED_JITTER_MS 160 -#define NUM_PACKETS_TO_SEND 1000 - -#define TRACE_PACKE_DEBUG 0 -#define TRACE_PACKET_GNUPLOT 1 -#define TRACE_PACKET_TEST_JITTER 0 struct checkpoint { struct timeval ts; int transit; double jitter; + uint32_t timestamp; }; struct rtp_pkt_info { @@ -88,14 +53,66 @@ struct rtp_pkt_info *data; }; -struct osmo_jibuf *jb; -uint16_t rtp_first_seq; -uint16_t rtp_next_seq; -uint32_t rtp_next_ts; -uint32_t packets_sent; -uint32_t packets_received; -uint32_t packets_dropped; -uint32_t packets_too_much_jitter; +/* Option parameters to the program */ +static bool opt_test_rand; +static bool opt_debug_human; +static bool opt_debug_table; +static char* opt_pcap_file; +/* ----------------------------- */ + +/* Logging related stuff */ +#define INT2IDX(x) (-1*(x)-1) +struct log_info_cat jibuf_test_cat[] = { + [INT2IDX(DLJIBUF)] = { + .name = "DLJIBUF", + .description = "Osmocom Jitter Buffer", + .enabled = 1, .loglevel = LOGL_DEBUG, + }, +}; +const struct log_info jibuf_test_log_info = { + .filter_fn = NULL, + .cat = jibuf_test_cat, + .num_cat = ARRAY_SIZE(jibuf_test_cat), +}; +/* ----------------------------- */ + +/* Used for test random: */ +#define SAMPLES_PER_PKT 160 +#define RTP_FREQ_MS 20 +#define RTP_PKTS_PER_SEC (1000/RTP_FREQ_MS) +#define NET_DELAY_MS 300 +#define GENERATED_JITTER_MS 160 +#define NUM_PACKETS_TO_SEND 1000 + +/* RTP packet with AMR payload */ +static uint8_t rtp_pkt[] = { + 0x80, 0x62, 0x3f, 0xcc, 0x00, 0x01, 0xa7, 0x6f, /* RTP */ + 0x07, 0x09, 0x00, 0x62, 0x20, 0x14, 0xff, 0xd4, /* AMR */ + 0xf9, 0xff, 0xfb, 0xe7, 0xeb, 0xf9, 0x9f, 0xf8, + 0xf2, 0x26, 0x33, 0x65, 0x54, +}; + +static struct osmo_jibuf *jb; +static uint16_t rtp_first_seq; +static uint16_t rtp_next_seq; +static uint32_t rtp_next_ts; +static struct timeval tx_prev_time; +static uint32_t packets_sent; +static uint32_t packets_received; +static uint32_t packets_dropped; +static uint32_t packets_too_much_jitter; +/* ----------------------------- */ + +/* Used for test pcap: */ +static struct osmo_pcap osmo_pcap; +static bool pcap_finished; +/* ----------------------------- */ + +static void sigalarm_handler(int foo) +{ + printf("FAIL: test did not run successfully\n"); + exit(EXIT_FAILURE); +} struct rtp_pkt_info *msgb_get_pinfo(struct msgb* msg) { @@ -108,14 +125,16 @@ return ts->tv_sec * 1000 + ts->tv_usec / 1000; } -int calc_relative_transmit_time(struct timeval *tx_0, struct timeval *tx_f, - struct timeval *rx_0, struct timeval *rx_f) +int32_t calc_rel_transmit_time(uint32_t tx_0, uint32_t tx_f, uint32_t rx_0, uint32_t rx_f, bool tx_is_samples, bool pre) { - struct timeval txdiff, rxdiff, diff; - timersub(rx_f, rx_0, &rxdiff); - timersub(tx_f, tx_0, &txdiff); - timersub(&rxdiff, &txdiff, &diff); - return timeval2ms(&diff); + int32_t rxdiff, txdiff, res; + rxdiff = (rx_f - rx_0); + txdiff = (tx_f - tx_0); + if(tx_is_samples) + txdiff = txdiff * RTP_FREQ_MS/SAMPLES_PER_PKT; + res = rxdiff - txdiff; + //fprintf(stderr, "%s: (%u - %u) - (%u - %u) = %d - %d (%d) = %d\n", (pre ? "pre" : "post"), rx_f, rx_0, tx_f, tx_0, rxdiff, txdiff, (tx_f - tx_0), res); + return res; } void trace_pkt(struct msgb *msg, char* info) { @@ -126,7 +145,7 @@ gettimeofday(&now, NULL); timersub(&now, &pinfo->tx_time, &total_delay); -#if TRACE_PACKET_DEBUG + if (opt_debug_human) { uint32_t total_delay_ms = timeval2ms(&total_delay); LOGP(DLJIBUF, LOGL_DEBUG, "%s: seq=%"PRIu16" ts=%"PRIu32" (%ld.%06ld) tx_delay=%"PRIu32 \ " end_delay=%"PRIu32" pre_trans=%d pre_jitter=%f post_trans=%d post_jitter=%f\n", @@ -135,9 +154,21 @@ pinfo->tx_delay, total_delay_ms, pinfo->prequeue.transit, pinfo->prequeue.jitter, pinfo->postqueue.transit, pinfo->postqueue.jitter); -#endif -#if TRACE_PACKET_GNUPLOT + if (pinfo->prequeue.jitter < pinfo->postqueue.jitter) + LOGP(DLJIBUF, LOGL_ERROR, "JITTER HIGHER THAN REF: seq=%"PRIu16" ts=%"PRIu32 \ + " (%ld.%06ld) tx_delay=%"PRIu32" end_delay=%"PRIu32 \ + " pre_trans=%d pre_jitter=%f post_trans=%d post_jitter=%f dropped=%"PRIu32 \ + " buffer=%"PRIu32"\n", + ntohs(rtph->sequence), ntohl(rtph->timestamp), + pinfo->tx_time.tv_sec, pinfo->tx_time.tv_usec, + pinfo->tx_delay, total_delay_ms, + pinfo->prequeue.transit, pinfo->prequeue.jitter, + pinfo->postqueue.transit, pinfo->postqueue.jitter, + packets_dropped, jb->threshold_delay); + } + + if (opt_debug_table) { /* Used as input for gplot: "gnuplot -p jitter.plt -"" */ uint32_t tx_time_ms = timeval2ms(&pinfo->tx_time); uint32_t prequeue_time_ms = timeval2ms(&pinfo->prequeue.ts); @@ -148,7 +179,7 @@ pinfo->prequeue.transit, pinfo->postqueue.transit, pinfo->prequeue.jitter, pinfo->postqueue.jitter, packets_dropped, jb->threshold_delay); -#endif + } } void pkt_add_result(struct msgb *msg, bool dropped) @@ -162,21 +193,8 @@ packets_received++; trace_pkt(msg,"received"); - if (pinfo->prequeue.jitter < pinfo->postqueue.jitter) { + if (pinfo->prequeue.jitter < pinfo->postqueue.jitter) packets_too_much_jitter++; -#if TRACE_PACKET_TEST_JITTER - LOGP(DLJIBUF, LOGL_ERROR, "JITTER HIGHER THAN REF: %s seq=%"PRIu16" ts=%"PRIu32 \ - " (%ld.%06ld) tx_delay=%"PRIu32" end_delay=%"PRIu32 \ - " pre_trans=%d pre_jitter=%f post_trans=%d post_jitter=%f dropped=%"PRIu32 \ - " buffer=%"PRIu32"\n", - info, ntohs(rtph->sequence), ntohl(rtph->timestamp), - pinfo->tx_time.tv_sec, pinfo->tx_time.tv_usec, - pinfo->tx_delay, total_delay_ms, - pinfo->prequeue.transit, pinfo->prequeue.jitter, - pinfo->postqueue.transit, pinfo->postqueue.jitter, - packets_dropped, jb->threshold_delay); -#endif - } } } @@ -185,14 +203,30 @@ static struct checkpoint postqueue_prev; static bool postqueue_started = false; + bool tx_is_samples; + struct rtp_hdr *rtph = osmo_rtp_get_hdr(msg); struct rtp_pkt_info *pinfo = msgb_get_pinfo(msg); + uint32_t tx1, tx0, rx0, rx1; + gettimeofday(&pinfo->postqueue.ts, NULL); + pinfo->postqueue.timestamp = htonl(rtph->timestamp); if (postqueue_started) { - pinfo->postqueue.transit = calc_relative_transmit_time( - &pinfo->tx_prev_time, &pinfo->tx_time, - &postqueue_prev.ts, &pinfo->postqueue.ts); + /* In random test mode we now the sender time, so we get real + * jitter results using it */ + if(opt_test_rand) { + tx0 = timeval2ms(&pinfo->tx_prev_time); + tx1 = timeval2ms(&pinfo->tx_time); + tx_is_samples = false; + } else { + tx0 = postqueue_prev.timestamp; + tx1 = pinfo->postqueue.timestamp; + tx_is_samples = true; + } + rx0 = timeval2ms(&postqueue_prev.ts); + rx1 = timeval2ms(&pinfo->postqueue.ts); + pinfo->postqueue.transit = calc_rel_transmit_time(tx0, tx1, rx0, rx1, tx_is_samples, 0); uint32_t abs_transit = pinfo->postqueue.transit * ( pinfo->postqueue.transit >= 0 ? 1 : -1 ); @@ -218,15 +252,32 @@ static struct checkpoint prequeue_prev; static bool prequeue_started = false; + bool tx_is_samples; struct msgb *msg = (struct msgb*) data; + struct rtp_hdr *rtph = osmo_rtp_get_hdr(msg); struct rtp_pkt_info *pinfo = msgb_get_pinfo(msg); + + uint32_t tx1, tx0, rx0, rx1; + gettimeofday(&pinfo->prequeue.ts, NULL); + pinfo->prequeue.timestamp = htonl(rtph->timestamp); if (prequeue_started) { - pinfo->prequeue.transit = calc_relative_transmit_time( - &pinfo->tx_prev_time, &pinfo->tx_time, - &prequeue_prev.ts, &pinfo->prequeue.ts); + /* In random test mode we now the sender time, so we get real + * jitter results using it */ + if(opt_test_rand) { + tx0 = timeval2ms(&pinfo->tx_prev_time); + tx1 = timeval2ms(&pinfo->tx_time); + tx_is_samples = false; + } else { + tx0 = prequeue_prev.timestamp; + tx1 = pinfo->prequeue.timestamp; + tx_is_samples = true; + } + rx0 = timeval2ms(&prequeue_prev.ts); + rx1 = timeval2ms(&pinfo->prequeue.ts); + pinfo->prequeue.transit = calc_rel_transmit_time(tx0, tx1, rx0, rx1, tx_is_samples, 1); uint32_t abs_transit = pinfo->prequeue.transit * ( pinfo->prequeue.transit >= 0 ? 1 : -1 ); @@ -250,9 +301,15 @@ } } +struct rtp_pkt_info * msgb_allocate_pinfo(struct msgb *msg) +{ + struct rtp_pkt_info_cb *cb = (struct rtp_pkt_info_cb *)&((msg)->cb[0]); + cb->data = (struct rtp_pkt_info *) talloc_zero(msg, struct rtp_pkt_info); + return cb->data; +} + void rand_send_rtp_packet() { - static struct timeval tx_prev_time; struct rtp_pkt_info *pinfo; struct rtp_hdr *rtph; @@ -282,9 +339,7 @@ rtph->timestamp = htonl(rtp_next_ts); rtp_next_ts += SAMPLES_PER_PKT; - pinfo = talloc_zero(msg, struct rtp_pkt_info); - struct rtp_pkt_info_cb *cb = (struct rtp_pkt_info_cb *)&((msg)->cb[0]); - cb->data = pinfo; + pinfo = msgb_allocate_pinfo(msg); gettimeofday(&pinfo->tx_time, NULL); pinfo->tx_prev_time = tx_prev_time; @@ -300,9 +355,9 @@ osmo_timer_schedule(&pinfo->timer, 0, pinfo->tx_delay * 1000); } -void generate_pkt_cb(void *data) +void rand_generate_pkt_cb(void *data) { - static struct osmo_timer_list enqueue_timer = {.cb = generate_pkt_cb, .data = NULL}; + static struct osmo_timer_list enqueue_timer = {.cb = rand_generate_pkt_cb, .data = NULL}; static struct timeval last_generated; struct timeval time_rate = { .tv_sec = 0, .tv_usec = RTP_FREQ_MS * 1000}; @@ -322,37 +377,56 @@ } } -void check_results() + +static int pcap_generate_pkt_cb(struct msgb *msg) +{ + struct rtp_pkt_info *pinfo; + /* Set fake prev_time for 1st packet. Otherwise transit calculations for first + * packet can be really weird if they not arrive in order */ + if (!packets_sent) { + struct timeval now, time_rate = { .tv_sec = 0, .tv_usec = RTP_FREQ_MS * 1000}; + gettimeofday(&now, NULL); + timersub(&now, &time_rate, &tx_prev_time); + } + + pinfo = msgb_allocate_pinfo(msg); + gettimeofday(&pinfo->tx_time, NULL); + pinfo->tx_prev_time = tx_prev_time; + + tx_prev_time = pinfo->tx_time; + packets_sent++; + pkt_arrived_cb(msg); + return 0; +} + +void pcap_pkt_timer_cb(void *data) +{ + if (osmo_pcap_test_run(&osmo_pcap, IPPROTO_UDP, pcap_generate_pkt_cb) < 0) { + osmo_pcap_stats_printf(); + osmo_pcap_test_close(osmo_pcap.h); + pcap_finished=true; + } +} + +void rand_test_check() { uint32_t drop_threshold = NUM_PACKETS_TO_SEND * 5 / 100; if (packets_dropped > drop_threshold) { fprintf(stdout, "Too many dropped packets (%"PRIu32" > %"PRIu32")\n", packets_dropped, drop_threshold); - exit(1); + exit(EXIT_FAILURE); } uint32_t jitter_high_threshold = NUM_PACKETS_TO_SEND * 8 / 100; if (packets_too_much_jitter > jitter_high_threshold) { fprintf(stdout, "Too many packets with higher jitter (%"PRIu32" > %"PRIu32")\n", packets_too_much_jitter, jitter_high_threshold); - exit(1); + exit(EXIT_FAILURE); } } -int main(void) +void rand_test() { - - if (signal(SIGALRM, sigalarm_handler) == SIG_ERR) { - perror("signal"); - exit(EXIT_FAILURE); - } - - /* This test doesn't use it, but jibuf requires it internally. */ - osmo_init_logging(&jibuf_test_log_info); - log_set_category_filter(osmo_stderr_target, DLMIB, 1, LOGL_ERROR); - log_set_print_filename(osmo_stderr_target, 0); - log_set_log_level(osmo_stderr_target, LOGL_INFO); - srandom(time(NULL)); rtp_first_seq = (uint16_t) random(); rtp_next_seq = rtp_first_seq; @@ -364,7 +438,8 @@ osmo_jibuf_set_dequeue_cb(jb, dequeue_cb, NULL); - generate_pkt_cb(NULL); + /* first run */ + rand_generate_pkt_cb(NULL); /* If the test takes longer than twice the time needed to generate the packets plus 10 seconds, abort it */ @@ -375,7 +450,106 @@ osmo_jibuf_delete(jb); - check_results(); + rand_test_check(); +} + +void pcap_test_check() { + +} + +void pcap_test() { + osmo_pcap_init(); + + osmo_pcap.h = osmo_pcap_test_open(opt_pcap_file); + if (osmo_pcap.h == NULL) + exit(EXIT_FAILURE); + + osmo_pcap.timer.cb = pcap_pkt_timer_cb; + + jb = osmo_jibuf_alloc(NULL); + osmo_jibuf_set_dequeue_cb(jb, dequeue_cb, NULL); + osmo_jibuf_set_min_delay(jb, 60); + osmo_jibuf_set_max_delay(jb, 500); + + /* first run */ + pcap_pkt_timer_cb(NULL); + + while(!pcap_finished || !osmo_jibuf_empty(jb)) + osmo_select_main(0); + + osmo_jibuf_delete(jb); + + pcap_test_check(); +} + +static void print_help(void) +{ + printf("jibuf_test [-r] [-p pcap] [-d] [-g]\n"); + printf(" -h Print this help message\n"); + printf(" -r Run test with randomly generated jitter\n"); + printf(" -p Run test with specified pcap file\n"); + printf(" -d Enable packet trace debug suitable for humans\n"); + printf(" -t Enable packet trace debug suitable for gnuplot\n"); +} + +static int parse_options(int argc, char **argv) +{ + int opt; + + while ((opt = getopt(argc, argv, "hdtrp:")) != -1) { + switch (opt) { + case 'h': + print_help(); + return -1; + case 'd': + opt_debug_human = true; + break; + case 't': + opt_debug_table = true; + break; + case 'r': + opt_test_rand = true; + break; + case 'p': + opt_pcap_file = strdup(optarg); + break; + default: + return -1; + } + } + + return 0; +} + +int main(int argc, char **argv) +{ + + if (signal(SIGALRM, sigalarm_handler) == SIG_ERR) { + perror("signal"); + exit(EXIT_FAILURE); + } + + if(parse_options(argc, argv) < 0) + exit(EXIT_FAILURE); + + osmo_init_logging(&jibuf_test_log_info); + log_set_print_filename(osmo_stderr_target, 0); + log_set_log_level(osmo_stderr_target, LOGL_DEBUG); + + if(opt_debug_human && !opt_debug_table) + log_set_category_filter(osmo_stderr_target, DLMIB, 1, LOGL_DEBUG); + + if(opt_pcap_file && opt_test_rand) { + print_help(); + exit(EXIT_FAILURE); + } + + + if(opt_pcap_file) + pcap_test(); + + if(opt_test_rand) + rand_test(); fprintf(stdout, "OK: Test passed\n"); return EXIT_SUCCESS; diff --git a/tests/jibuf/jitter.plt b/tests/jibuf/jitter.plt index 37deb65..0235170 100644 --- a/tests/jibuf/jitter.plt +++ b/tests/jibuf/jitter.plt @@ -23,13 +23,27 @@ #set y2label 'delay [ms]' #set y2tics nomirror -plot \ - '/tmp/bla' using 3:5 with linespoints title 'pre.trans' axes x1y1, \ - '/tmp/bla' using 4:6 with linespoints title 'post.trans' axes x1y1, \ - '/tmp/bla' using 3:7 with linespoints title 'pre.jitter' axes x1y1, \ - '/tmp/bla' using 4:8 with linespoints title 'post.jitter' axes x1y1, \ - '/tmp/bla' using 3:9 with linespoints title 'pre.dropped' axes x1y1, \ - '/tmp/bla' using 3:10 with linespoints title 'pre.buffer' axes x1y1, \ - '/tmp/bla' using 3:((column(3)-column(2))) with linespoints title 'pre.delay' axes x1y1, \ - '/tmp/bla' using 4:((column(4)-column(2))) with linespoints title 'post.delay' axes x1y1 +# For pcap based input, 'pre.delay' makes no sense (it's 0) as we can't know tx_delay +pcap = 1 +if (pcap) { + plot \ + '/tmp/bla' using 3:5 with linespoints title 'pre.trans' axes x1y1, \ + '/tmp/bla' using 4:6 with linespoints title 'post.trans' axes x1y1, \ + '/tmp/bla' using 3:7 with linespoints title 'pre.jitter' axes x1y1, \ + '/tmp/bla' using 4:8 with linespoints title 'post.jitter' axes x1y1, \ + '/tmp/bla' using 3:9 with linespoints title 'pre.dropped' axes x1y1, \ + '/tmp/bla' using 3:10 with linespoints title 'pre.buffer' axes x1y1, \ + '/tmp/bla' using 4:((column(4)-column(2))) with linespoints title 'post.delay' axes x1y1 + +} else { + plot \ + '/tmp/bla' using 3:5 with linespoints title 'pre.trans' axes x1y1, \ + '/tmp/bla' using 4:6 with linespoints title 'post.trans' axes x1y1, \ + '/tmp/bla' using 3:7 with linespoints title 'pre.jitter' axes x1y1, \ + '/tmp/bla' using 4:8 with linespoints title 'post.jitter' axes x1y1, \ + '/tmp/bla' using 3:9 with linespoints title 'pre.dropped' axes x1y1, \ + '/tmp/bla' using 3:10 with linespoints title 'pre.buffer' axes x1y1, \ + '/tmp/bla' using 3:((column(3)-column(2))) with linespoints title 'pre.delay' axes x1y1, \ + '/tmp/bla' using 4:((column(4)-column(2))) with linespoints title 'post.delay' axes x1y1 +} pause mouse close; exit -- To view, visit https://gerrit.osmocom.org/7775 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: I7a13c823fb70e0adbc5fa0726fd66b15dc40014e Gerrit-PatchSet: 2 Gerrit-Project: libosmo-netif Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder From gerrit-no-reply at lists.osmocom.org Mon Apr 16 15:15:03 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Mon, 16 Apr 2018 15:15:03 +0000 Subject: [MERGED] libosmo-netif[master]: tests: jibuf_tool: Initial commit In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: tests: jibuf_tool: Initial commit ...................................................................... tests: jibuf_tool: Initial commit Change-Id: I92307c8b1483dd488339771462290aae0ae5689a --- M tests/Makefile.am A tests/jibuf/jibuf_tool.c A tests/jibuf/jitter.plt 3 files changed, 421 insertions(+), 1 deletion(-) Approvals: Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/tests/Makefile.am b/tests/Makefile.am index bf1db1f..a4abca2 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -1,7 +1,7 @@ AM_CFLAGS = -Wall -I$(top_srcdir)/include $(LIBOSMOCORE_CFLAGS) -g AM_LDFLAGS = $(LIBOSMOCORE_LDFLAGS) -check_PROGRAMS = osmux/osmux_test jibuf/jibuf_test +check_PROGRAMS = osmux/osmux_test jibuf/jibuf_test jibuf/jibuf_tool osmux_osmux_test_SOURCES = osmux/osmux_test.c osmux_osmux_test_LDADD = $(LIBOSMOCORE_LIBS) $(top_builddir)/src/libosmonetif.la @@ -9,6 +9,9 @@ jibuf_jibuf_test_SOURCES = jibuf/jibuf_test.c jibuf_jibuf_test_LDADD = $(LIBOSMOCORE_LIBS) $(top_builddir)/src/libosmonetif.la +jibuf_jibuf_tool_SOURCES = jibuf/jibuf_tool.c +jibuf_jibuf_tool_LDADD = $(LIBOSMOCORE_LIBS) $(top_builddir)/src/libosmonetif.la + # The `:;' works around a Bash 3.2 bug when the output is not writeable. $(srcdir)/package.m4: $(top_srcdir)/configure.ac :;{ \ diff --git a/tests/jibuf/jibuf_tool.c b/tests/jibuf/jibuf_tool.c new file mode 100644 index 0000000..810ecb4 --- /dev/null +++ b/tests/jibuf/jibuf_tool.c @@ -0,0 +1,382 @@ +/* (C) 2017 by sysmocom - s.f.m.c. GmbH + * + * Author: Pau Espin Pedrol + * + * SPDX-License-Identifier: GPL-2.0+ + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include + +/* Logging related stuff */ +#define INT2IDX(x) (-1*(x)-1) +struct log_info_cat jibuf_test_cat[] = { + [INT2IDX(DLJIBUF)] = { + .name = "DLJIBUF", + .description = "Osmocom Jitter Buffer", + .enabled = 1, .loglevel = LOGL_DEBUG, + }, +}; +const struct log_info jibuf_test_log_info = { + .filter_fn = NULL, + .cat = jibuf_test_cat, + .num_cat = ARRAY_SIZE(jibuf_test_cat), +}; + +/* RTP packet with AMR payload */ +static uint8_t rtp_pkt[] = { + 0x80, 0x62, 0x3f, 0xcc, 0x00, 0x01, 0xa7, 0x6f, /* RTP */ + 0x07, 0x09, 0x00, 0x62, 0x20, 0x14, 0xff, 0xd4, /* AMR */ + 0xf9, 0xff, 0xfb, 0xe7, 0xeb, 0xf9, 0x9f, 0xf8, + 0xf2, 0x26, 0x33, 0x65, 0x54, +}; + +static void sigalarm_handler(int foo) +{ + printf("FAIL: test did not run successfully\n"); + exit(EXIT_FAILURE); +} + +#define SAMPLES_PER_PKT 160 +#define RTP_FREQ_MS 20 +#define RTP_PKTS_PER_SEC (1000/RTP_FREQ_MS) +#define NET_DELAY_MS 300 +#define GENERATED_JITTER_MS 160 +#define NUM_PACKETS_TO_SEND 1000 + +#define TRACE_PACKE_DEBUG 0 +#define TRACE_PACKET_GNUPLOT 1 +#define TRACE_PACKET_TEST_JITTER 0 + +struct checkpoint { + struct timeval ts; + int transit; + double jitter; +}; + +struct rtp_pkt_info { + struct osmo_timer_list timer; + struct timeval tx_prev_time; + struct timeval tx_time; + uint32_t tx_delay; + struct checkpoint prequeue; + struct checkpoint postqueue; +}; + +struct rtp_pkt_info_cb { + struct rtp_pkt_info *data; +}; + +struct osmo_jibuf *jb; +uint16_t rtp_first_seq; +uint16_t rtp_next_seq; +uint32_t rtp_next_ts; +uint32_t packets_sent; +uint32_t packets_received; +uint32_t packets_dropped; +uint32_t packets_too_much_jitter; + +struct rtp_pkt_info *msgb_get_pinfo(struct msgb* msg) +{ + struct rtp_pkt_info_cb *cb = (struct rtp_pkt_info_cb *)&((msg)->cb[0]); + return cb->data; +} + +static uint32_t timeval2ms(const struct timeval *ts) +{ + return ts->tv_sec * 1000 + ts->tv_usec / 1000; +} + +int calc_relative_transmit_time(struct timeval *tx_0, struct timeval *tx_f, + struct timeval *rx_0, struct timeval *rx_f) +{ + struct timeval txdiff, rxdiff, diff; + timersub(rx_f, rx_0, &rxdiff); + timersub(tx_f, tx_0, &txdiff); + timersub(&rxdiff, &txdiff, &diff); + return timeval2ms(&diff); +} + +void trace_pkt(struct msgb *msg, char* info) { + struct timeval now, total_delay; + struct rtp_hdr *rtph = osmo_rtp_get_hdr(msg); + struct rtp_pkt_info *pinfo = msgb_get_pinfo(msg); + + gettimeofday(&now, NULL); + timersub(&now, &pinfo->tx_time, &total_delay); + +#if TRACE_PACKET_DEBUG + uint32_t total_delay_ms = timeval2ms(&total_delay); + LOGP(DLJIBUF, LOGL_DEBUG, "%s: seq=%"PRIu16" ts=%"PRIu32" (%ld.%06ld) tx_delay=%"PRIu32 \ + " end_delay=%"PRIu32" pre_trans=%d pre_jitter=%f post_trans=%d post_jitter=%f\n", + info, ntohs(rtph->sequence), ntohl(rtph->timestamp), + pinfo->tx_time.tv_sec, pinfo->tx_time.tv_usec, + pinfo->tx_delay, total_delay_ms, + pinfo->prequeue.transit, pinfo->prequeue.jitter, + pinfo->postqueue.transit, pinfo->postqueue.jitter); +#endif + +#if TRACE_PACKET_GNUPLOT + /* Used as input for gplot: "gnuplot -p jitter.plt -"" */ + uint32_t tx_time_ms = timeval2ms(&pinfo->tx_time); + uint32_t prequeue_time_ms = timeval2ms(&pinfo->prequeue.ts); + uint32_t postqueue_time_ms = timeval2ms(&pinfo->postqueue.ts); + fprintf(stderr, "%"PRIu16"\t%"PRIu32"\t%"PRIu32"\t%"PRIu32"\t%d\t%d\t%f\t%f\t%"PRIu32"\t%"PRIu32"\n", + ntohs(rtph->sequence), tx_time_ms, + prequeue_time_ms, postqueue_time_ms, + pinfo->prequeue.transit, pinfo->postqueue.transit, + pinfo->prequeue.jitter, pinfo->postqueue.jitter, + packets_dropped, jb->threshold_delay); +#endif +} + +void pkt_add_result(struct msgb *msg, bool dropped) +{ + struct rtp_pkt_info *pinfo = msgb_get_pinfo(msg); + + if (dropped) { + packets_dropped++; + trace_pkt(msg,"dropped"); + } else { + packets_received++; + trace_pkt(msg,"received"); + + if (pinfo->prequeue.jitter < pinfo->postqueue.jitter) { + packets_too_much_jitter++; +#if TRACE_PACKET_TEST_JITTER + LOGP(DLJIBUF, LOGL_ERROR, "JITTER HIGHER THAN REF: %s seq=%"PRIu16" ts=%"PRIu32 \ + " (%ld.%06ld) tx_delay=%"PRIu32" end_delay=%"PRIu32 \ + " pre_trans=%d pre_jitter=%f post_trans=%d post_jitter=%f dropped=%"PRIu32 \ + " buffer=%"PRIu32"\n", + info, ntohs(rtph->sequence), ntohl(rtph->timestamp), + pinfo->tx_time.tv_sec, pinfo->tx_time.tv_usec, + pinfo->tx_delay, total_delay_ms, + pinfo->prequeue.transit, pinfo->prequeue.jitter, + pinfo->postqueue.transit, pinfo->postqueue.jitter, + packets_dropped, jb->threshold_delay); +#endif + } + } +} + +void dequeue_cb(struct msgb *msg, void *data) +{ + static struct checkpoint postqueue_prev; + static bool postqueue_started = false; + + struct rtp_pkt_info *pinfo = msgb_get_pinfo(msg); + + gettimeofday(&pinfo->postqueue.ts, NULL); + + if (postqueue_started) { + pinfo->postqueue.transit = calc_relative_transmit_time( + &pinfo->tx_prev_time, &pinfo->tx_time, + &postqueue_prev.ts, &pinfo->postqueue.ts); + + uint32_t abs_transit = pinfo->postqueue.transit * + ( pinfo->postqueue.transit >= 0 ? 1 : -1 ); + + pinfo->postqueue.jitter = postqueue_prev.jitter + + ((double)abs_transit - postqueue_prev.jitter)/16.0; + } else { + postqueue_started = true; + pinfo->postqueue.transit = 0; + pinfo->postqueue.jitter = 0; + } + + postqueue_prev = pinfo->postqueue; + + pkt_add_result(msg, false); + + osmo_timer_del(&pinfo->timer); + msgb_free(msg); +} + +void pkt_arrived_cb(void *data) +{ + static struct checkpoint prequeue_prev; + static bool prequeue_started = false; + + struct msgb *msg = (struct msgb*) data; + struct rtp_pkt_info *pinfo = msgb_get_pinfo(msg); + + gettimeofday(&pinfo->prequeue.ts, NULL); + + if (prequeue_started) { + pinfo->prequeue.transit = calc_relative_transmit_time( + &pinfo->tx_prev_time, &pinfo->tx_time, + &prequeue_prev.ts, &pinfo->prequeue.ts); + + uint32_t abs_transit = pinfo->prequeue.transit * + ( pinfo->prequeue.transit >= 0 ? 1 : -1 ); + + pinfo->prequeue.jitter = prequeue_prev.jitter + + ((double)abs_transit - prequeue_prev.jitter)/16.0; + } else { + prequeue_started = true; + pinfo->prequeue.transit = 0; + pinfo->prequeue.jitter = 0; + } + + prequeue_prev = pinfo->prequeue; + + int n = osmo_jibuf_enqueue(jb, msg); + + if (n<0) { + pkt_add_result(msg, true); + osmo_timer_del(&pinfo->timer); + msgb_free(msg); + } +} + +void rand_send_rtp_packet() +{ + static struct timeval tx_prev_time; + + struct rtp_pkt_info *pinfo; + struct rtp_hdr *rtph; + struct msgb *msg; + + /* Set fake prev_time for 1st packet. Otherwise transit calculations for first + * packet can be really weird if they not arrive in order */ + if (rtp_next_seq == rtp_first_seq) { + struct timeval now, time_rate = { .tv_sec = 0, .tv_usec = RTP_FREQ_MS * 1000}; + gettimeofday(&now, NULL); + timersub(&now, &time_rate, &tx_prev_time); + } + + + msg = msgb_alloc(1500, "test"); + if (!msg) + exit(EXIT_FAILURE); + + memcpy(msg->data, rtp_pkt, sizeof(rtp_pkt)); + msgb_put(msg, sizeof(rtp_pkt)); + + rtph = osmo_rtp_get_hdr(msg); + + rtph->sequence = htons(rtp_next_seq); + rtp_next_seq++; + + rtph->timestamp = htonl(rtp_next_ts); + rtp_next_ts += SAMPLES_PER_PKT; + + pinfo = talloc_zero(msg, struct rtp_pkt_info); + struct rtp_pkt_info_cb *cb = (struct rtp_pkt_info_cb *)&((msg)->cb[0]); + cb->data = pinfo; + + gettimeofday(&pinfo->tx_time, NULL); + pinfo->tx_prev_time = tx_prev_time; + memset(&pinfo->timer, 0, sizeof(struct osmo_timer_list)); + pinfo->timer.cb = pkt_arrived_cb; + pinfo->timer.data = msg; + pinfo->tx_delay = NET_DELAY_MS + (random() % (GENERATED_JITTER_MS)); + + tx_prev_time = pinfo->tx_time; + + /* TODO: add a random() to lose/drop packets */ + + osmo_timer_schedule(&pinfo->timer, 0, pinfo->tx_delay * 1000); +} + +void generate_pkt_cb(void *data) +{ + static struct osmo_timer_list enqueue_timer = {.cb = generate_pkt_cb, .data = NULL}; + static struct timeval last_generated; + + struct timeval time_rate = { .tv_sec = 0, .tv_usec = RTP_FREQ_MS * 1000}; + struct timeval sched_ts; + + if (!packets_sent) + gettimeofday(&last_generated, NULL); + + rand_send_rtp_packet(); + packets_sent++; + + timeradd(&last_generated, &time_rate, &sched_ts); + last_generated = sched_ts; + if (packets_sent < NUM_PACKETS_TO_SEND) { + enqueue_timer.timeout = sched_ts; + osmo_timer_add(&enqueue_timer); + } +} + +void check_results() +{ + uint32_t drop_threshold = NUM_PACKETS_TO_SEND * 5 / 100; + if (packets_dropped > drop_threshold) { + fprintf(stdout, "Too many dropped packets (%"PRIu32" > %"PRIu32")\n", + packets_dropped, drop_threshold); + exit(1); + } + + uint32_t jitter_high_threshold = NUM_PACKETS_TO_SEND * 8 / 100; + if (packets_too_much_jitter > jitter_high_threshold) { + fprintf(stdout, "Too many packets with higher jitter (%"PRIu32" > %"PRIu32")\n", + packets_too_much_jitter, jitter_high_threshold); + exit(1); + } +} + +int main(void) +{ + + if (signal(SIGALRM, sigalarm_handler) == SIG_ERR) { + perror("signal"); + exit(EXIT_FAILURE); + } + + /* This test doesn't use it, but jibuf requires it internally. */ + osmo_init_logging(&jibuf_test_log_info); + log_set_category_filter(osmo_stderr_target, DLMIB, 1, LOGL_ERROR); + log_set_print_filename(osmo_stderr_target, 0); + log_set_log_level(osmo_stderr_target, LOGL_INFO); + + srandom(time(NULL)); + rtp_first_seq = (uint16_t) random(); + rtp_next_seq = rtp_first_seq; + rtp_next_ts = (uint32_t) random(); + jb = osmo_jibuf_alloc(NULL); + + osmo_jibuf_set_min_delay(jb, GENERATED_JITTER_MS - RTP_FREQ_MS); + osmo_jibuf_set_max_delay(jb, GENERATED_JITTER_MS + RTP_FREQ_MS*2); + + osmo_jibuf_set_dequeue_cb(jb, dequeue_cb, NULL); + + generate_pkt_cb(NULL); + + /* If the test takes longer than twice the time needed to generate the packets + plus 10 seconds, abort it */ + alarm(NUM_PACKETS_TO_SEND*20/1000 +10); + + while((packets_received + packets_dropped) < NUM_PACKETS_TO_SEND) + osmo_select_main(0); + + osmo_jibuf_delete(jb); + + check_results(); + + fprintf(stdout, "OK: Test passed\n"); + return EXIT_SUCCESS; +} diff --git a/tests/jibuf/jitter.plt b/tests/jibuf/jitter.plt new file mode 100644 index 0000000..37deb65 --- /dev/null +++ b/tests/jibuf/jitter.plt @@ -0,0 +1,35 @@ +#set terminal png size 1280,1024 enhanced font "Helvetica,20" +#set output 'output.png' +#set terminal qt +#set output + +set datafile separator "\t" +set datafile missing '0' + +#set multiplot + +# key/legend +set key top right +set key box +set key left bottom +set key bmargin + + +set title 'Jitter Graph' +set xlabel 'Timestamp' +set ylabel 'trans / jitter / delay / buffer size [ms]' +set ytics nomirror + +#set y2label 'delay [ms]' +#set y2tics nomirror + +plot \ + '/tmp/bla' using 3:5 with linespoints title 'pre.trans' axes x1y1, \ + '/tmp/bla' using 4:6 with linespoints title 'post.trans' axes x1y1, \ + '/tmp/bla' using 3:7 with linespoints title 'pre.jitter' axes x1y1, \ + '/tmp/bla' using 4:8 with linespoints title 'post.jitter' axes x1y1, \ + '/tmp/bla' using 3:9 with linespoints title 'pre.dropped' axes x1y1, \ + '/tmp/bla' using 3:10 with linespoints title 'pre.buffer' axes x1y1, \ + '/tmp/bla' using 3:((column(3)-column(2))) with linespoints title 'pre.delay' axes x1y1, \ + '/tmp/bla' using 4:((column(4)-column(2))) with linespoints title 'post.delay' axes x1y1 +pause mouse close; exit -- To view, visit https://gerrit.osmocom.org/7774 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: I92307c8b1483dd488339771462290aae0ae5689a Gerrit-PatchSet: 2 Gerrit-Project: libosmo-netif Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder From gerrit-no-reply at lists.osmocom.org Mon Apr 16 15:15:32 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Mon, 16 Apr 2018 15:15:32 +0000 Subject: osmo-trx[master]: use osmo_init_logging2() In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7827 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I2c28e6e6e3eb9f587680b34330e03408e32c2b94 Gerrit-PatchSet: 1 Gerrit-Project: osmo-trx Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Neels Hofmeyr Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Mon Apr 16 15:15:34 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Mon, 16 Apr 2018 15:15:34 +0000 Subject: [MERGED] osmo-trx[master]: use osmo_init_logging2() In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: use osmo_init_logging2() ...................................................................... use osmo_init_logging2() Change-Id: I2c28e6e6e3eb9f587680b34330e03408e32c2b94 --- M Transceiver52M/osmo-trx.cpp M tests/CommonLibs/LogTest.cpp 2 files changed, 7 insertions(+), 2 deletions(-) Approvals: Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/Transceiver52M/osmo-trx.cpp b/Transceiver52M/osmo-trx.cpp index 2eb8309..1b351d6 100644 --- a/Transceiver52M/osmo-trx.cpp +++ b/Transceiver52M/osmo-trx.cpp @@ -506,7 +506,7 @@ convolve_init(); convert_init(); - osmo_init_logging(&log_info); + osmo_init_logging2(tall_trx_ctx, &log_info); osmo_stats_init(tall_trx_ctx); vty_init(&g_vty_info); ctrl_vty_init(tall_trx_ctx); diff --git a/tests/CommonLibs/LogTest.cpp b/tests/CommonLibs/LogTest.cpp index b8677e6..5167a62 100644 --- a/tests/CommonLibs/LogTest.cpp +++ b/tests/CommonLibs/LogTest.cpp @@ -29,6 +29,8 @@ #include "Logger.h" extern "C" { +#include +#include #include #include #include "debug.h" @@ -50,7 +52,10 @@ linfo.cat = categories; linfo.num_cat = ARRAY_SIZE(categories); - osmo_init_logging(&linfo); + void *tall_ctx = talloc_named_const(NULL, 1, "OsmoTRX context"); + msgb_talloc_ctx_init(tall_ctx, 0); + + osmo_init_logging2(tall_ctx, &linfo); log_set_use_color(osmo_stderr_target, 0); log_set_print_filename(osmo_stderr_target, 0); -- To view, visit https://gerrit.osmocom.org/7827 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: I2c28e6e6e3eb9f587680b34330e03408e32c2b94 Gerrit-PatchSet: 1 Gerrit-Project: osmo-trx Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Neels Hofmeyr From gerrit-no-reply at lists.osmocom.org Mon Apr 16 15:15:42 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Mon, 16 Apr 2018 15:15:42 +0000 Subject: osmo-trx[master]: tests: Makefile.am: Fix typo in include path In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7829 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I036f1f587f2a5eaf93ec8fb619bf76b571c1633a Gerrit-PatchSet: 1 Gerrit-Project: osmo-trx Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Mon Apr 16 15:15:44 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Mon, 16 Apr 2018 15:15:44 +0000 Subject: [MERGED] osmo-trx[master]: tests: Makefile.am: Fix typo in include path In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: tests: Makefile.am: Fix typo in include path ...................................................................... tests: Makefile.am: Fix typo in include path Change-Id: I036f1f587f2a5eaf93ec8fb619bf76b571c1633a --- M tests/Transceiver52M/Makefile.am 1 file changed, 1 insertion(+), 1 deletion(-) Approvals: Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/tests/Transceiver52M/Makefile.am b/tests/Transceiver52M/Makefile.am index 79f73c6..8a05bd8 100644 --- a/tests/Transceiver52M/Makefile.am +++ b/tests/Transceiver52M/Makefile.am @@ -1,6 +1,6 @@ include $(top_srcdir)/Makefile.common -AM_CFLAGS = -Wall -I$(top_srcdir)/Transciever52 $(STD_DEFINES_AND_INCLUDES) -g +AM_CFLAGS = -Wall -I$(top_srcdir)/Transceiver52M $(STD_DEFINES_AND_INCLUDES) -g EXTRA_DIST = convolve_test.ok -- To view, visit https://gerrit.osmocom.org/7829 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: I036f1f587f2a5eaf93ec8fb619bf76b571c1633a Gerrit-PatchSet: 1 Gerrit-Project: osmo-trx Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder From gerrit-no-reply at lists.osmocom.org Mon Apr 16 15:16:13 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Mon, 16 Apr 2018 15:16:13 +0000 Subject: osmo-ci[master]: ansible: osmocom-jenkins-slave: fix crontab for fstrim In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 Verified+1 -- To view, visit https://gerrit.osmocom.org/7833 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Ib6aae8d1d986346dc7bc0fc945bab6491fff4f3f Gerrit-PatchSet: 1 Gerrit-Project: osmo-ci Gerrit-Branch: master Gerrit-Owner: lynxis lazus Gerrit-Reviewer: Harald Welte Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Mon Apr 16 15:16:25 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Mon, 16 Apr 2018 15:16:25 +0000 Subject: osmo-ci[master]: scripts/docker-cleanup.sh: set permissions to 755 In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 Verified+1 thanks, nice catch! -- To view, visit https://gerrit.osmocom.org/7834 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Ie9d67b157d62b38b62f5e74406d14344f90d07b8 Gerrit-PatchSet: 1 Gerrit-Project: osmo-ci Gerrit-Branch: master Gerrit-Owner: lynxis lazus Gerrit-Reviewer: Harald Welte Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Mon Apr 16 15:16:27 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Mon, 16 Apr 2018 15:16:27 +0000 Subject: [MERGED] osmo-ci[master]: scripts/docker-cleanup.sh: set permissions to 755 In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: scripts/docker-cleanup.sh: set permissions to 755 ...................................................................... scripts/docker-cleanup.sh: set permissions to 755 It will otherwise not executed by the cron, because the cron is checking for the executable bit Change-Id: Ie9d67b157d62b38b62f5e74406d14344f90d07b8 --- M scripts/docker-cleanup.sh 1 file changed, 0 insertions(+), 0 deletions(-) Approvals: Harald Welte: Looks good to me, approved; Verified diff --git a/scripts/docker-cleanup.sh b/scripts/docker-cleanup.sh old mode 100644 new mode 100755 -- To view, visit https://gerrit.osmocom.org/7834 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: Ie9d67b157d62b38b62f5e74406d14344f90d07b8 Gerrit-PatchSet: 1 Gerrit-Project: osmo-ci Gerrit-Branch: master Gerrit-Owner: lynxis lazus Gerrit-Reviewer: Harald Welte From gerrit-no-reply at lists.osmocom.org Mon Apr 16 15:16:27 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Mon, 16 Apr 2018 15:16:27 +0000 Subject: [MERGED] osmo-ci[master]: ansible: osmocom-jenkins-slave: fix crontab for fstrim In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: ansible: osmocom-jenkins-slave: fix crontab for fstrim ...................................................................... ansible: osmocom-jenkins-slave: fix crontab for fstrim Change-Id: Ib6aae8d1d986346dc7bc0fc945bab6491fff4f3f --- M ansible/roles/osmocom-jenkins-slave/tasks/main.yml 1 file changed, 1 insertion(+), 0 deletions(-) Approvals: Harald Welte: Looks good to me, approved; Verified diff --git a/ansible/roles/osmocom-jenkins-slave/tasks/main.yml b/ansible/roles/osmocom-jenkins-slave/tasks/main.yml index f8b29d8..b57c81a 100644 --- a/ansible/roles/osmocom-jenkins-slave/tasks/main.yml +++ b/ansible/roles/osmocom-jenkins-slave/tasks/main.yml @@ -114,5 +114,6 @@ cron: name: "fstrim" hour: "*/12" + minute: 0 job: "fstrim / >/dev/null 2>/dev/null || true" when: osmocom_jenkins_slave_fstrim -- To view, visit https://gerrit.osmocom.org/7833 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: Ib6aae8d1d986346dc7bc0fc945bab6491fff4f3f Gerrit-PatchSet: 1 Gerrit-Project: osmo-ci Gerrit-Branch: master Gerrit-Owner: lynxis lazus Gerrit-Reviewer: Harald Welte From gerrit-no-reply at lists.osmocom.org Mon Apr 16 15:17:21 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Mon, 16 Apr 2018 15:17:21 +0000 Subject: osmo-gsm-tester[master]: contrib: Enable address-sanitize in builds In-Reply-To: References: Message-ID: Patch Set 2: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7830 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Ibef6c2fc497bce0d799116a854a48872f9ca16d7 Gerrit-PatchSet: 2 Gerrit-Project: osmo-gsm-tester Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Harald Welte Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Mon Apr 16 15:17:30 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Mon, 16 Apr 2018 15:17:30 +0000 Subject: osmo-gsm-tester[master]: contrib: build-osm-bts-sysmo: openbsc dep no longer needed In-Reply-To: References: Message-ID: Patch Set 2: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7831 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Iafd5ee1df001719ff6165ada996359b92116671e Gerrit-PatchSet: 2 Gerrit-Project: osmo-gsm-tester Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Harald Welte Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Mon Apr 16 15:17:38 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Mon, 16 Apr 2018 15:17:38 +0000 Subject: osmo-gsm-tester[master]: contrib: build-osmo-trx: Enable addr sanitize for osmo-trx In-Reply-To: References: Message-ID: Patch Set 2: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7832 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Iad90c7c8c2098680276de000c36bec0224f9746d Gerrit-PatchSet: 2 Gerrit-Project: osmo-gsm-tester Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Pau Espin Pedrol Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Mon Apr 16 15:17:48 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Mon, 16 Apr 2018 15:17:48 +0000 Subject: [MERGED] osmo-trx[master]: configure.ac: Add --enable-sanitize option In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: configure.ac: Add --enable-sanitize option ...................................................................... configure.ac: Add --enable-sanitize option Change-Id: I1b5154a47bb2f66103ac254a0f422e8a80b2d3e0 --- M configure.ac M contrib/jenkins.sh 2 files changed, 19 insertions(+), 2 deletions(-) Approvals: Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/configure.ac b/configure.ac index c80f1cf..8271dbf 100644 --- a/configure.ac +++ b/configure.ac @@ -78,6 +78,18 @@ PKG_CHECK_MODULES(LIBOSMOVTY, libosmovty >= 0.3.0) PKG_CHECK_MODULES(LIBOSMOCTRL, libosmoctrl >= 0.10.0) +AC_ARG_ENABLE(sanitize, + [AS_HELP_STRING( + [--enable-sanitize], + [Compile with address sanitizer enabled], + )], + [sanitize=$enableval], [sanitize="no"]) +if test x"$sanitize" = x"yes" +then + CPPFLAGS="$CPPFLAGS -fsanitize=address -fsanitize=undefined" + LDFLAGS="$LDFLAGS -fsanitize=address -fsanitize=undefined" +fi + AC_ARG_WITH(usrp1, [ AS_HELP_STRING([--with-usrp1], [enable USRP1 gnuradio based transceiver]) @@ -176,6 +188,11 @@ AC_CHECK_HEADER([boost/config.hpp],[], [AC_MSG_ERROR([boost/config.hpp not found, install e.g. libboost-dev])]) +AC_MSG_RESULT([CPPFLAGS="$CPPFLAGS"]) +AC_MSG_RESULT([CFLAGS="$CFLAGS"]) +AC_MSG_RESULT([CXXFLAGS="$CXXFLAGS"]) +AC_MSG_RESULT([LDFLAGS="$LDFLAGS"]) + dnl Output files AC_CONFIG_FILES([\ Makefile \ diff --git a/contrib/jenkins.sh b/contrib/jenkins.sh index c4d786d..e600e01 100755 --- a/contrib/jenkins.sh +++ b/contrib/jenkins.sh @@ -63,7 +63,7 @@ mkdir "$deps" || true -osmo-build-dep.sh libosmocore "" "--disable-doxygen --disable-pcsc" +osmo-build-dep.sh libosmocore "" "--enable-sanitize --disable-doxygen --disable-pcsc" export PKG_CONFIG_PATH="$inst/lib/pkgconfig:$PKG_CONFIG_PATH" export LD_LIBRARY_PATH="$inst/lib" @@ -78,7 +78,7 @@ cd "$base" autoreconf --install --force -./configure $INSTR +./configure --enable-sanitize $INSTR $MAKE $PARALLEL_MAKE $MAKE check \ || cat-testlogs.sh -- To view, visit https://gerrit.osmocom.org/7828 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: I1b5154a47bb2f66103ac254a0f422e8a80b2d3e0 Gerrit-PatchSet: 4 Gerrit-Project: osmo-trx Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder From gerrit-no-reply at lists.osmocom.org Mon Apr 16 15:18:08 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Mon, 16 Apr 2018 15:18:08 +0000 Subject: openbsc[master]: only log actual access control class ramping changes In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7818 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I2f892b998eb8119e623c1d87ffe865b48f7d5a87 Gerrit-PatchSet: 1 Gerrit-Project: openbsc Gerrit-Branch: master Gerrit-Owner: Stefan Sperling Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Pau Espin Pedrol Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Mon Apr 16 15:18:20 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Mon, 16 Apr 2018 15:18:20 +0000 Subject: openbsc[master]: ensure that acc_ramp_init() is only called once In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7820 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Iadd25016e6478a9dc5da1db42e6192ce0f5cc746 Gerrit-PatchSet: 1 Gerrit-Project: openbsc Gerrit-Branch: master Gerrit-Owner: Stefan Sperling Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Pau Espin Pedrol Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Mon Apr 16 15:18:41 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Mon, 16 Apr 2018 15:18:41 +0000 Subject: openbsc[master]: trigger acc ramping based on trx rf-locked state In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7821 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I4124f1da3dadec003de45c1da8435506ee8f0a34 Gerrit-PatchSet: 1 Gerrit-Project: openbsc Gerrit-Branch: master Gerrit-Owner: Stefan Sperling Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Pau Espin Pedrol Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Mon Apr 16 15:18:51 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Mon, 16 Apr 2018 15:18:51 +0000 Subject: openbsc[master]: rename helper functions in the acc ramp code to avoid confusion In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7822 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Ic1e5a1f969823cfbfb9fe9e959db87c1717c3a83 Gerrit-PatchSet: 1 Gerrit-Project: openbsc Gerrit-Branch: master Gerrit-Owner: Stefan Sperling Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Pau Espin Pedrol Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Mon Apr 16 15:18:59 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Mon, 16 Apr 2018 15:18:59 +0000 Subject: openbsc[master]: trigger acc ramping on state-changed-event reports In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7823 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I6443635b822b6cd776f6dc8a6ee73ab09e865b04 Gerrit-PatchSet: 1 Gerrit-Project: openbsc Gerrit-Branch: master Gerrit-Owner: Stefan Sperling Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Pau Espin Pedrol Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Mon Apr 16 15:19:06 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Mon, 16 Apr 2018 15:19:06 +0000 Subject: openbsc[master]: only trigger acc ramping if trx 0 is usable and unlocked In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7824 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I2cc9c1b8193546ea04ea5beb3751c2206f0215f2 Gerrit-PatchSet: 1 Gerrit-Project: openbsc Gerrit-Branch: master Gerrit-Owner: Stefan Sperling Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Pau Espin Pedrol Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Mon Apr 16 15:19:07 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Mon, 16 Apr 2018 15:19:07 +0000 Subject: openbsc[master]: fix handling of state changes in acc ramping In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7825 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I235d2c5fa962f2f338e77d0c11502921b37f4c36 Gerrit-PatchSet: 1 Gerrit-Project: openbsc Gerrit-Branch: master Gerrit-Owner: Stefan Sperling Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Pau Espin Pedrol Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Mon Apr 16 15:19:13 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Mon, 16 Apr 2018 15:19:13 +0000 Subject: [MERGED] openbsc[master]: fix handling of state changes in acc ramping In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: fix handling of state changes in acc ramping ...................................................................... fix handling of state changes in acc ramping Take both the operative and administrative states into account when deciding whether to start ACC ramping, and examine old/new state values to avoid triggering ramping for a no-op state change. This requires a fix to gsm_trx_lock_rf(): This function overwrote the old administrative state of a trx before enqueuing a state change request towards the BTS. The BTS will confirm this request with an ACK, at which time a signal is generated which the ACC ramp code listens to. We must not overwrite the old state value until the signal has been handled, otherwise the signal handler cannot tell what the old state was. Tested with a virtphy setup, nanobts, and osmo-bts. This is a port of osmo-bsc commit cda994edb20d24032d6ab4e916d0e9411671cfc0 Change-Id: I235d2c5fa962f2f338e77d0c11502921b37f4c36 Related: OS#2591 --- M openbsc/src/libbsc/abis_nm.c M openbsc/src/libbsc/acc_ramp.c M openbsc/src/libbsc/bsc_init.c 3 files changed, 113 insertions(+), 37 deletions(-) Approvals: Pau Espin Pedrol: Looks good to me, but someone else must approve Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/openbsc/src/libbsc/abis_nm.c b/openbsc/src/libbsc/abis_nm.c index 8eadfa8..cbb255a 100644 --- a/openbsc/src/libbsc/abis_nm.c +++ b/openbsc/src/libbsc/abis_nm.c @@ -2797,13 +2797,17 @@ { uint8_t new_state = locked ? NM_STATE_LOCKED : NM_STATE_UNLOCKED; - LOGP(DNM, LOGL_NOTICE, "(bts=%d,trx=%d) Changing adm. state %s -> %s [%s]\n", trx->bts->nr, trx->nr, + + if (!trx->bts || !trx->bts->oml_link) { + /* Set initial state which will be sent when BTS connects. */ + trx->mo.nm_state.administrative = new_state; + return; + } + + LOGP(DNM, LOGL_NOTICE, "(bts=%d,trx=%d) Requesting administrative state change %s -> %s [%s]\n", + trx->bts->nr, trx->nr, get_value_string(abis_nm_adm_state_names, trx->mo.nm_state.administrative), get_value_string(abis_nm_adm_state_names, new_state), reason); - - trx->mo.nm_state.administrative = new_state; - if (!trx->bts || !trx->bts->oml_link) - return; abis_nm_chg_adm_state(trx->bts, NM_OC_RADIO_CARRIER, trx->bts->bts_nr, trx->nr, 0xff, diff --git a/openbsc/src/libbsc/acc_ramp.c b/openbsc/src/libbsc/acc_ramp.c index 6e64109..c90d087 100644 --- a/openbsc/src/libbsc/acc_ramp.c +++ b/openbsc/src/libbsc/acc_ramp.c @@ -28,6 +28,7 @@ #include #include #include +#include /* * Check if an ACC has been permanently barred for a BTS, @@ -144,6 +145,7 @@ struct nm_statechg_signal_data *nsd = signal_data; struct acc_ramp *acc_ramp = handler_data; struct gsm_bts_trx *trx = NULL; + bool trigger_ramping = false, abort_ramping = false; /* Handled signals map to an Administrative State Change ACK, or a State Changed Event Report. */ if (signal != S_NM_STATECHG_ADM && signal != S_NM_STATECHG_OPER) @@ -154,37 +156,109 @@ trx = nsd->obj; + LOGP(DRSL, LOGL_DEBUG, "(bts=%d,trx=%d) ACC RAMP: administrative state %s -> %s\n", + acc_ramp->bts->nr, trx->nr, + get_value_string(abis_nm_adm_state_names, nsd->old_state->administrative), + get_value_string(abis_nm_adm_state_names, nsd->new_state->administrative)); + LOGP(DRSL, LOGL_DEBUG, "(bts=%d,trx=%d) ACC RAMP: operational state %s -> %s\n", + acc_ramp->bts->nr, trx->nr, + abis_nm_opstate_name(nsd->old_state->operational), + abis_nm_opstate_name(nsd->new_state->operational)); + /* We only care about state changes of the first TRX. */ if (trx->nr != 0) return 0; /* RSL must already be up. We cannot send RACH system information to the BTS otherwise. */ - if (trx->rsl_link == NULL) + if (trx->rsl_link == NULL) { + LOGP(DRSL, LOGL_DEBUG, "(bts=%d,trx=%d) ACC RAMP: ignoring state change because RSL link is down\n", + acc_ramp->bts->nr, trx->nr); return 0; - - /* Trigger or abort ACC ramping based on the new 'RF lock' state of this TRX. */ - switch (nsd->new_state->administrative) { - case NM_STATE_UNLOCKED: - /* - * Do not re-trigger ACC ramping if ramping is already in progress. - * A BTS might send several "unlock" change events: One in the Administrative - * State Change ACK, and/or another in a State Changed Event Report. - * For instance, the nanobts is known to send both. - */ - if (!osmo_timer_pending(&acc_ramp->step_timer)) - acc_ramp_trigger(acc_ramp); - break; - case NM_STATE_LOCKED: - case NM_STATE_SHUTDOWN: - acc_ramp_abort(acc_ramp); - break; - case NM_STATE_NULL: - break; - default: - LOGP(DRSL, LOGL_NOTICE, "(bts=%d) ACC RAMP: unrecognized administrative state '0x%x' reported for TRX 0\n", - acc_ramp->bts->nr, nsd->new_state->administrative); - break; } + + /* Trigger or abort ACC ramping based on the new state of this TRX. */ + if (nsd->old_state->administrative != nsd->new_state->administrative) { + switch (nsd->new_state->administrative) { + case NM_STATE_UNLOCKED: + if (nsd->old_state->operational != nsd->new_state->operational) { + /* + * Administrative and operational state have both changed. + * Trigger ramping only if TRX 0 will be both enabled and unlocked. + */ + if (nsd->new_state->operational == NM_OPSTATE_ENABLED) + trigger_ramping = true; + else + LOGP(DRSL, LOGL_DEBUG, "(bts=%d,trx=%d) ACC RAMP: ignoring state change " + "because TRX is transitioning into operational state '%s'\n", + acc_ramp->bts->nr, trx->nr, + abis_nm_opstate_name(nsd->new_state->operational)); + } else { + /* + * Operational state has not changed. + * Trigger ramping only if TRX 0 is already usable. + */ + if (trx_is_usable(trx)) + trigger_ramping = true; + else + LOGP(DRSL, LOGL_DEBUG, "(bts=%d,trx=%d) ACC RAMP: ignoring state change " + "because TRX is not usable\n", acc_ramp->bts->nr, trx->nr); + } + break; + case NM_STATE_LOCKED: + case NM_STATE_SHUTDOWN: + abort_ramping = true; + break; + case NM_STATE_NULL: + default: + LOGP(DRSL, LOGL_NOTICE, "(bts=%d) ACC RAMP: unrecognized administrative state '0x%x' " + "reported for TRX 0\n", acc_ramp->bts->nr, nsd->new_state->administrative); + break; + } + } + if (nsd->old_state->operational != nsd->new_state->operational) { + switch (nsd->new_state->operational) { + case NM_OPSTATE_ENABLED: + if (nsd->old_state->administrative != nsd->new_state->administrative) { + /* + * Administrative and operational state have both changed. + * Trigger ramping only if TRX 0 will be both enabled and unlocked. + */ + if (nsd->new_state->administrative == NM_STATE_UNLOCKED) + trigger_ramping = true; + else + LOGP(DRSL, LOGL_DEBUG, "(bts=%d,trx=%d) ACC RAMP: ignoring state change " + "because TRX is transitioning into administrative state '%s'\n", + acc_ramp->bts->nr, trx->nr, + get_value_string(abis_nm_adm_state_names, nsd->new_state->administrative)); + } else { + /* + * Administrative state has not changed. + * Trigger ramping only if TRX 0 is already unlocked. + */ + if (trx->mo.nm_state.administrative == NM_STATE_UNLOCKED) + trigger_ramping = true; + else + LOGP(DRSL, LOGL_DEBUG, "(bts=%d,trx=%d) ACC RAMP: ignoring state change " + "because TRX is in administrative state '%s'\n", + acc_ramp->bts->nr, trx->nr, + get_value_string(abis_nm_adm_state_names, trx->mo.nm_state.administrative)); + } + break; + case NM_OPSTATE_DISABLED: + abort_ramping = true; + break; + case NM_OPSTATE_NULL: + default: + LOGP(DRSL, LOGL_NOTICE, "(bts=%d) ACC RAMP: unrecognized operational state '0x%x' " + "reported for TRX 0\n", acc_ramp->bts->nr, nsd->new_state->administrative); + break; + } + } + + if (trigger_ramping) + acc_ramp_trigger(acc_ramp); + else if (abort_ramping) + acc_ramp_abort(acc_ramp); return 0; } @@ -270,13 +344,9 @@ acc_ramp_abort(acc_ramp); if (acc_ramp_is_enabled(acc_ramp)) { - struct gsm_bts_trx *trx0 = gsm_bts_trx_by_nr(acc_ramp->bts, 0); - /* TRX 0 should be usable and unlocked, otherwise starting ACC ramping is pointless. */ - if (trx0 && trx_is_usable(trx0) && trx0->mo.nm_state.administrative == NM_STATE_UNLOCKED) { - /* Set all available ACCs to barred and start ramping up. */ - barr_all_accs(acc_ramp); - do_acc_ramping_step(acc_ramp); - } + /* Set all available ACCs to barred and start ramping up. */ + barr_all_accs(acc_ramp); + do_acc_ramping_step(acc_ramp); } } diff --git a/openbsc/src/libbsc/bsc_init.c b/openbsc/src/libbsc/bsc_init.c index 120955b..21ed2e1 100644 --- a/openbsc/src/libbsc/bsc_init.c +++ b/openbsc/src/libbsc/bsc_init.c @@ -318,8 +318,10 @@ /* * Trigger ACC ramping before sending system information to BTS. * This ensures that RACH control in system information is configured correctly. + * TRX 0 should be usable and unlocked, otherwise starting ACC ramping is pointless. */ - acc_ramp_trigger(&trx->bts->acc_ramp); + if (trx_is_usable(trx) && trx->mo.nm_state.administrative == NM_STATE_UNLOCKED) + acc_ramp_trigger(&trx->bts->acc_ramp); gsm_bts_trx_set_system_infos(trx); -- To view, visit https://gerrit.osmocom.org/7825 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: I235d2c5fa962f2f338e77d0c11502921b37f4c36 Gerrit-PatchSet: 1 Gerrit-Project: openbsc Gerrit-Branch: master Gerrit-Owner: Stefan Sperling Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Pau Espin Pedrol From gerrit-no-reply at lists.osmocom.org Mon Apr 16 15:19:14 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Mon, 16 Apr 2018 15:19:14 +0000 Subject: [MERGED] openbsc[master]: only trigger acc ramping if trx 0 is usable and unlocked In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: only trigger acc ramping if trx 0 is usable and unlocked ...................................................................... only trigger acc ramping if trx 0 is usable and unlocked Starting an ACC ramping process while TRX 0 is unusable or locked is pointless. For instance, after loading a config with 'rf_locked 1' for trx 0, the ramping process was started as soon as the BTS established RSL, even though the air interface was still down. ACC ramping should instead be triggered once TRX 0 is unlocked. This is a port of osmo-bsc commit 4d3d2436cdf3296ddc110be4022dc2ec13d3eb86 Related: OS#2591 Change-Id: I2cc9c1b8193546ea04ea5beb3751c2206f0215f2 --- M openbsc/src/libbsc/acc_ramp.c 1 file changed, 9 insertions(+), 4 deletions(-) Approvals: Pau Espin Pedrol: Looks good to me, but someone else must approve Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/openbsc/src/libbsc/acc_ramp.c b/openbsc/src/libbsc/acc_ramp.c index a866458..6e64109 100644 --- a/openbsc/src/libbsc/acc_ramp.c +++ b/openbsc/src/libbsc/acc_ramp.c @@ -26,6 +26,7 @@ #include #include #include +#include #include /* @@ -257,7 +258,7 @@ /*! * Determine if ACC ramping should be started according to configuration, and - * if ACC ramping is enabled, begin the ramping process. + * begin the ramping process if the necessary conditions are present. * Perform at least one ramping step to allow 'step_size' ACCs. * If 'step_size' is ACC_RAMP_STEP_SIZE_MAX, or if ACC ramping is disabled, * all ACCs will be allowed immediately. @@ -269,9 +270,13 @@ acc_ramp_abort(acc_ramp); if (acc_ramp_is_enabled(acc_ramp)) { - /* Set all available ACCs to barred and start ramping up. */ - barr_all_accs(acc_ramp); - do_acc_ramping_step(acc_ramp); + struct gsm_bts_trx *trx0 = gsm_bts_trx_by_nr(acc_ramp->bts, 0); + /* TRX 0 should be usable and unlocked, otherwise starting ACC ramping is pointless. */ + if (trx0 && trx_is_usable(trx0) && trx0->mo.nm_state.administrative == NM_STATE_UNLOCKED) { + /* Set all available ACCs to barred and start ramping up. */ + barr_all_accs(acc_ramp); + do_acc_ramping_step(acc_ramp); + } } } -- To view, visit https://gerrit.osmocom.org/7824 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: I2cc9c1b8193546ea04ea5beb3751c2206f0215f2 Gerrit-PatchSet: 1 Gerrit-Project: openbsc Gerrit-Branch: master Gerrit-Owner: Stefan Sperling Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Pau Espin Pedrol From gerrit-no-reply at lists.osmocom.org Mon Apr 16 15:19:14 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Mon, 16 Apr 2018 15:19:14 +0000 Subject: [MERGED] openbsc[master]: trigger acc ramping on state-changed-event reports In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: trigger acc ramping on state-changed-event reports ...................................................................... trigger acc ramping on state-changed-event reports Trigger ACC ramping not only when an Administrative State Change ACK is received from a BTS, but also when an administrative state change is reported for TRX 0 in a State Changed Event Report. This should allow ACC ramping to work with any BTS which reports an administrative state change to 'unlock' using either of these OML messages. Tested with a sysmobts and a nanobts. The sysmobts only reports TRX locked/unlock changes in Administrative State Change ACKs, not via State Changed Event Reports. The nanobts is known to send both of these OML messages in quick succession, so do not re-trigger ramping if it's already in progress. This is a port of osmo-bsc commit b06c7a253752ecb67fd20cdf0b069688b561af0e Change-Id: I6443635b822b6cd776f6dc8a6ee73ab09e865b04 Related: OS#2591 --- M openbsc/src/libbsc/acc_ramp.c 1 file changed, 10 insertions(+), 2 deletions(-) Approvals: Pau Espin Pedrol: Looks good to me, but someone else must approve Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/openbsc/src/libbsc/acc_ramp.c b/openbsc/src/libbsc/acc_ramp.c index 03ba80b..a866458 100644 --- a/openbsc/src/libbsc/acc_ramp.c +++ b/openbsc/src/libbsc/acc_ramp.c @@ -144,7 +144,8 @@ struct acc_ramp *acc_ramp = handler_data; struct gsm_bts_trx *trx = NULL; - if (signal != S_NM_STATECHG_ADM) + /* Handled signals map to an Administrative State Change ACK, or a State Changed Event Report. */ + if (signal != S_NM_STATECHG_ADM && signal != S_NM_STATECHG_OPER) return 0; if (nsd->obj_class != NM_OC_RADIO_CARRIER) @@ -163,7 +164,14 @@ /* Trigger or abort ACC ramping based on the new 'RF lock' state of this TRX. */ switch (nsd->new_state->administrative) { case NM_STATE_UNLOCKED: - acc_ramp_trigger(acc_ramp); + /* + * Do not re-trigger ACC ramping if ramping is already in progress. + * A BTS might send several "unlock" change events: One in the Administrative + * State Change ACK, and/or another in a State Changed Event Report. + * For instance, the nanobts is known to send both. + */ + if (!osmo_timer_pending(&acc_ramp->step_timer)) + acc_ramp_trigger(acc_ramp); break; case NM_STATE_LOCKED: case NM_STATE_SHUTDOWN: -- To view, visit https://gerrit.osmocom.org/7823 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: I6443635b822b6cd776f6dc8a6ee73ab09e865b04 Gerrit-PatchSet: 1 Gerrit-Project: openbsc Gerrit-Branch: master Gerrit-Owner: Stefan Sperling Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Pau Espin Pedrol From gerrit-no-reply at lists.osmocom.org Mon Apr 16 15:19:14 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Mon, 16 Apr 2018 15:19:14 +0000 Subject: [MERGED] openbsc[master]: rename helper functions in the acc ramp code to avoid confusion In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: rename helper functions in the acc ramp code to avoid confusion ...................................................................... rename helper functions in the acc ramp code to avoid confusion The word 'enabled' was used in two contexts: Whether ACC ramp is enabled as a feature, and whether a particular access control class is permantly allowed/disallowed via VTY configuration. Rename some helper functions to avoid the use of the word 'enabled' in the latter context. This is a port of osmo-bsc commit 0ad90b39b9e638b5e3d926c9261d26e777ca478c Change-Id: Ic1e5a1f969823cfbfb9fe9e959db87c1717c3a83 Related: OS#2591 --- M openbsc/src/libbsc/acc_ramp.c 1 file changed, 13 insertions(+), 13 deletions(-) Approvals: Pau Espin Pedrol: Looks good to me, but someone else must approve Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/openbsc/src/libbsc/acc_ramp.c b/openbsc/src/libbsc/acc_ramp.c index fd2c715..03ba80b 100644 --- a/openbsc/src/libbsc/acc_ramp.c +++ b/openbsc/src/libbsc/acc_ramp.c @@ -32,12 +32,12 @@ * Check if an ACC has been permanently barred for a BTS, * e.g. with the 'rach access-control-class' VTY command. */ -static bool acc_is_enabled(struct gsm_bts *bts, unsigned int acc) +static bool acc_is_permanently_barred(struct gsm_bts *bts, unsigned int acc) { OSMO_ASSERT(acc >= 0 && acc <= 9); if (acc == 8 || acc == 9) - return (bts->si_common.rach_control.t2 & (1 << (acc - 8))) == 0; - return (bts->si_common.rach_control.t3 & (1 << (acc))) == 0; + return (bts->si_common.rach_control.t2 & (1 << (acc - 8))); + return (bts->si_common.rach_control.t3 & (1 << (acc))); } static void allow_one_acc(struct acc_ramp *acc_ramp, unsigned int acc) @@ -56,20 +56,20 @@ acc_ramp->barred_accs |= (1 << acc); } -static void barr_all_enabled_accs(struct acc_ramp *acc_ramp) +static void barr_all_accs(struct acc_ramp *acc_ramp) { unsigned int acc; for (acc = 0; acc < 10; acc++) { - if (acc_is_enabled(acc_ramp->bts, acc)) + if (!acc_is_permanently_barred(acc_ramp->bts, acc)) barr_one_acc(acc_ramp, acc); } } -static void allow_all_enabled_accs(struct acc_ramp *acc_ramp) +static void allow_all_accs(struct acc_ramp *acc_ramp) { unsigned int acc; for (acc = 0; acc < 10; acc++) { - if (acc_is_enabled(acc_ramp->bts, acc)) + if (!acc_is_permanently_barred(acc_ramp->bts, acc)) allow_one_acc(acc_ramp, acc); } } @@ -102,7 +102,7 @@ /* Shortcut in case we only do one ramping step. */ if (acc_ramp->step_size == ACC_RAMP_STEP_SIZE_MAX) { - allow_all_enabled_accs(acc_ramp); + allow_all_accs(acc_ramp); gsm_bts_set_system_infos(acc_ramp->bts); return; } @@ -113,14 +113,14 @@ if (idx > 0) { /* One of ACC0-ACC7 is still bared. */ unsigned int acc = idx - 1; - if (acc_is_enabled(acc_ramp->bts, acc)) + if (!acc_is_permanently_barred(acc_ramp->bts, acc)) allow_one_acc(acc_ramp, acc); } else { idx = ffs(acc_ramp_get_barred_t2(acc_ramp)); if (idx == 1 || idx == 2) { /* ACC8 or ACC9 is still barred. */ unsigned int acc = idx - 1 + 8; - if (acc_is_enabled(acc_ramp->bts, acc)) + if (!acc_is_permanently_barred(acc_ramp->bts, acc)) allow_one_acc(acc_ramp, acc); } else { /* All ACCs are now allowed. */ @@ -196,7 +196,7 @@ acc_ramp->step_size = ACC_RAMP_STEP_SIZE_DEFAULT; acc_ramp->step_interval_sec = ACC_RAMP_STEP_INTERVAL_MIN; acc_ramp->step_interval_is_fixed = false; - allow_all_enabled_accs(acc_ramp); + allow_all_accs(acc_ramp); osmo_timer_setup(&acc_ramp->step_timer, do_acc_ramping_step, acc_ramp); osmo_signal_register_handler(SS_NM, acc_ramp_nm_sig_cb, acc_ramp); } @@ -262,7 +262,7 @@ if (acc_ramp_is_enabled(acc_ramp)) { /* Set all available ACCs to barred and start ramping up. */ - barr_all_enabled_accs(acc_ramp); + barr_all_accs(acc_ramp); do_acc_ramping_step(acc_ramp); } } @@ -276,6 +276,6 @@ if (osmo_timer_pending(&acc_ramp->step_timer)) osmo_timer_del(&acc_ramp->step_timer); - allow_all_enabled_accs(acc_ramp); + allow_all_accs(acc_ramp); } -- To view, visit https://gerrit.osmocom.org/7822 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: Ic1e5a1f969823cfbfb9fe9e959db87c1717c3a83 Gerrit-PatchSet: 1 Gerrit-Project: openbsc Gerrit-Branch: master Gerrit-Owner: Stefan Sperling Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Pau Espin Pedrol From gerrit-no-reply at lists.osmocom.org Mon Apr 16 15:19:15 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Mon, 16 Apr 2018 15:19:15 +0000 Subject: [MERGED] openbsc[master]: trigger acc ramping based on trx rf-locked state In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: trigger acc ramping based on trx rf-locked state ...................................................................... trigger acc ramping based on trx rf-locked state Make ACC ramping listen to network management signals and trigger or abort ACC ramping based on the RF locked state of TRX 0. This is a port of osmo-bsc commit 60ecdeffecf3db4ad044c5ee0185f384d1b16eb3 Change-Id: I4124f1da3dadec003de45c1da8435506ee8f0a34 --- M openbsc/src/libbsc/acc_ramp.c M openbsc/src/libbsc/bsc_vty.c 2 files changed, 49 insertions(+), 1 deletion(-) Approvals: Pau Espin Pedrol: Looks good to me, but someone else must approve Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/openbsc/src/libbsc/acc_ramp.c b/openbsc/src/libbsc/acc_ramp.c index e887723..fd2c715 100644 --- a/openbsc/src/libbsc/acc_ramp.c +++ b/openbsc/src/libbsc/acc_ramp.c @@ -26,6 +26,7 @@ #include #include #include +#include /* * Check if an ACC has been permanently barred for a BTS, @@ -136,6 +137,49 @@ osmo_timer_schedule(&acc_ramp->step_timer, get_next_step_interval(acc_ramp), 0); } +/* Implements osmo_signal_cbfn() -- trigger or abort ACC ramping upon changes RF lock state. */ +static int acc_ramp_nm_sig_cb(unsigned int subsys, unsigned int signal, void *handler_data, void *signal_data) +{ + struct nm_statechg_signal_data *nsd = signal_data; + struct acc_ramp *acc_ramp = handler_data; + struct gsm_bts_trx *trx = NULL; + + if (signal != S_NM_STATECHG_ADM) + return 0; + + if (nsd->obj_class != NM_OC_RADIO_CARRIER) + return 0; + + trx = nsd->obj; + + /* We only care about state changes of the first TRX. */ + if (trx->nr != 0) + return 0; + + /* RSL must already be up. We cannot send RACH system information to the BTS otherwise. */ + if (trx->rsl_link == NULL) + return 0; + + /* Trigger or abort ACC ramping based on the new 'RF lock' state of this TRX. */ + switch (nsd->new_state->administrative) { + case NM_STATE_UNLOCKED: + acc_ramp_trigger(acc_ramp); + break; + case NM_STATE_LOCKED: + case NM_STATE_SHUTDOWN: + acc_ramp_abort(acc_ramp); + break; + case NM_STATE_NULL: + break; + default: + LOGP(DRSL, LOGL_NOTICE, "(bts=%d) ACC RAMP: unrecognized administrative state '0x%x' reported for TRX 0\n", + acc_ramp->bts->nr, nsd->new_state->administrative); + break; + } + + return 0; +} + /*! * Initialize an acc_ramp data structure. * Storage for this structure must be provided by the caller. @@ -154,6 +198,7 @@ acc_ramp->step_interval_is_fixed = false; allow_all_enabled_accs(acc_ramp); osmo_timer_setup(&acc_ramp->step_timer, do_acc_ramping_step, acc_ramp); + osmo_signal_register_handler(SS_NM, acc_ramp_nm_sig_cb, acc_ramp); } /*! diff --git a/openbsc/src/libbsc/bsc_vty.c b/openbsc/src/libbsc/bsc_vty.c index a076397..c71ea4a 100644 --- a/openbsc/src/libbsc/bsc_vty.c +++ b/openbsc/src/libbsc/bsc_vty.c @@ -3045,7 +3045,10 @@ if (!acc_ramp_is_enabled(&bts->acc_ramp)) acc_ramp_set_enabled(&bts->acc_ramp, true); - /* ACC ramping takes effect when the BTS reconnects. */ + /* + * ACC ramping takes effect either when the BTS reconnects RSL, + * or when RF administrative state changes to 'unlocked'. + */ return CMD_SUCCESS; } -- To view, visit https://gerrit.osmocom.org/7821 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: I4124f1da3dadec003de45c1da8435506ee8f0a34 Gerrit-PatchSet: 1 Gerrit-Project: openbsc Gerrit-Branch: master Gerrit-Owner: Stefan Sperling Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Pau Espin Pedrol From gerrit-no-reply at lists.osmocom.org Mon Apr 16 15:19:15 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Mon, 16 Apr 2018 15:19:15 +0000 Subject: [MERGED] openbsc[master]: ensure that acc_ramp_init() is only called once In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: ensure that acc_ramp_init() is only called once ...................................................................... ensure that acc_ramp_init() is only called once There are plans to register signal handlers in acc_ramp_init(). Once we do that, the acc_ramp_init() function should only be called once to avoid duplicate signal handlers on the handler list. However, the acc_ramp_init() function currently serves a dual-purpose: 1) Initialize the acc_ramp structure for a bts 2) Enable or disable ACC ramping Add new functions to support use case 2, and call acc_ramp_init() just once while reading the configuration file. The VTY commands which enable/disable ACC ramping use the new APIs instead. Also, rename acc_ramp_start() to acc_ramp_trigger() and tweak its semantics so that it can always be called regardless of what the current configuration settings are. This prepares us for triggering ACC ramping upon events other than "RSL link-up". This is a port of osmo-bsc commit ea33341cf7b52d432be98f2280b4a5f3129ef667. Also remove a call to acc_ramp_init() which should have been removed in openbsc commit ebc1e39d919f5f919cb176ee9c6cbbccc8d620b1 Change-Id: Iadd25016e6478a9dc5da1db42e6192ce0f5cc746 Related: OS2591 --- M openbsc/include/openbsc/acc_ramp.h M openbsc/src/libbsc/acc_ramp.c M openbsc/src/libbsc/bsc_init.c M openbsc/src/libbsc/bsc_vty.c 4 files changed, 43 insertions(+), 35 deletions(-) Approvals: Pau Espin Pedrol: Looks good to me, but someone else must approve Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/openbsc/include/openbsc/acc_ramp.h b/openbsc/include/openbsc/acc_ramp.h index cb063bf..efb12b0 100644 --- a/openbsc/include/openbsc/acc_ramp.h +++ b/openbsc/include/openbsc/acc_ramp.h @@ -79,6 +79,18 @@ }; /*! + * Enable or disable ACC ramping. + * When enabled, ramping begins once acc_ramp_start() is called. + * When disabled, an ACC ramping process in progress will continue + * unless acc_ramp_abort() is called as well. + * \param[in] acc_ramp Pointer to acc_ramp structure. + */ +static inline void acc_ramp_set_enabled(struct acc_ramp *acc_ramp, bool enable) +{ + acc_ramp->acc_ramping_enabled = enable; +} + +/*! * Return true if ACC ramping is currently enabled, else false. * \param[in] acc_ramp Pointer to acc_ramp structure. */ @@ -141,9 +153,9 @@ rach_control->t3 |= acc_ramp_get_barred_t3(acc_ramp); } -void acc_ramp_init(struct acc_ramp *acc_ramp, bool enable, struct gsm_bts *bts); +void acc_ramp_init(struct acc_ramp *acc_ramp, struct gsm_bts *bts); int acc_ramp_set_step_size(struct acc_ramp *acc_ramp, unsigned int step_size); int acc_ramp_set_step_interval(struct acc_ramp *acc_ramp, unsigned int step_interval); void acc_ramp_set_step_interval_dynamic(struct acc_ramp *acc_ramp); -void acc_ramp_start(struct acc_ramp *acc_ramp); +void acc_ramp_trigger(struct acc_ramp *acc_ramp); void acc_ramp_abort(struct acc_ramp *acc_ramp); diff --git a/openbsc/src/libbsc/acc_ramp.c b/openbsc/src/libbsc/acc_ramp.c index 9b3f90b..e887723 100644 --- a/openbsc/src/libbsc/acc_ramp.c +++ b/openbsc/src/libbsc/acc_ramp.c @@ -140,28 +140,20 @@ * Initialize an acc_ramp data structure. * Storage for this structure must be provided by the caller. * - * If ACC ramping is enabled, all ACCs are denied by default. - * A subsequent call to acc_ramp_start() will begin the ramping process. - * If ACC ramping is disabled, all ACCs will be allowed by default, - * and there is no need to do anything else. + * By default, ACC ramping is disabled and all ACCs are allowed. * * \param[in] acc_ramp Pointer to acc_ramp structure to be initialized. - * \param[in] enable Indicates whether ACC ramping should be enabled or disabled. * \param[in] bts BTS which uses this ACC ramp data structure. */ -void acc_ramp_init(struct acc_ramp *acc_ramp, bool enable, struct gsm_bts *bts) +void acc_ramp_init(struct acc_ramp *acc_ramp, struct gsm_bts *bts) { acc_ramp->bts = bts; - acc_ramp->acc_ramping_enabled = enable; + acc_ramp_set_enabled(acc_ramp, false); acc_ramp->step_size = ACC_RAMP_STEP_SIZE_DEFAULT; acc_ramp->step_interval_sec = ACC_RAMP_STEP_INTERVAL_MIN; acc_ramp->step_interval_is_fixed = false; + allow_all_enabled_accs(acc_ramp); osmo_timer_setup(&acc_ramp->step_timer, do_acc_ramping_step, acc_ramp); - - if (acc_ramp->acc_ramping_enabled) - barr_all_enabled_accs(acc_ramp); - else - allow_all_enabled_accs(acc_ramp); } /*! @@ -211,28 +203,34 @@ } /*! - * Begin the ramping process. Perform at least one ramping step to allow 'step_size' ACCs. - * If 'step_size' is ACC_RAMP_STEP_SIZE_MAX, all ACCs will be allowed immediately. + * Determine if ACC ramping should be started according to configuration, and + * if ACC ramping is enabled, begin the ramping process. + * Perform at least one ramping step to allow 'step_size' ACCs. + * If 'step_size' is ACC_RAMP_STEP_SIZE_MAX, or if ACC ramping is disabled, + * all ACCs will be allowed immediately. * \param[in] acc_ramp Pointer to acc_ramp structure. */ -void acc_ramp_start(struct acc_ramp *acc_ramp) +void acc_ramp_trigger(struct acc_ramp *acc_ramp) { - /* Abort any previously running ramping process. */ + /* Abort any previously running ramping process and allow all available ACCs. */ acc_ramp_abort(acc_ramp); - /* Set all availble ACCs to barred and start ramping up. */ - barr_all_enabled_accs(acc_ramp); - do_acc_ramping_step(acc_ramp); + if (acc_ramp_is_enabled(acc_ramp)) { + /* Set all available ACCs to barred and start ramping up. */ + barr_all_enabled_accs(acc_ramp); + do_acc_ramping_step(acc_ramp); + } } /*! - * Abort the ramping process. If ramping is disabled or has already finished, - * then this function has no effect. + * Abort the ramping process and allow all available ACCs immediately. * \param[in] acc_ramp Pointer to acc_ramp structure. */ void acc_ramp_abort(struct acc_ramp *acc_ramp) { if (osmo_timer_pending(&acc_ramp->step_timer)) osmo_timer_del(&acc_ramp->step_timer); + + allow_all_enabled_accs(acc_ramp); } diff --git a/openbsc/src/libbsc/bsc_init.c b/openbsc/src/libbsc/bsc_init.c index 6147257..120955b 100644 --- a/openbsc/src/libbsc/bsc_init.c +++ b/openbsc/src/libbsc/bsc_init.c @@ -311,19 +311,16 @@ trx->bts->location_area_code, trx->bts->cell_identity, trx->bts->bsic); - /* - * Re-initialize ACC ramping to ensure ACCs are barred/allowed - * according to our current VTY configuration. - */ - acc_ramp_init(&trx->bts->acc_ramp, acc_ramp_is_enabled(&trx->bts->acc_ramp), trx->bts); - if (trx->bts->type == GSM_BTS_TYPE_NOKIA_SITE) { rsl_nokia_si_begin(trx); } - /* Configure ACC ramping before sending system information to BTS. */ - if (acc_ramp_is_enabled(&trx->bts->acc_ramp)) - acc_ramp_start(&trx->bts->acc_ramp); + /* + * Trigger ACC ramping before sending system information to BTS. + * This ensures that RACH control in system information is configured correctly. + */ + acc_ramp_trigger(&trx->bts->acc_ramp); + gsm_bts_trx_set_system_infos(trx); if (trx->bts->type == GSM_BTS_TYPE_NOKIA_SITE) { diff --git a/openbsc/src/libbsc/bsc_vty.c b/openbsc/src/libbsc/bsc_vty.c index f78247b..a076397 100644 --- a/openbsc/src/libbsc/bsc_vty.c +++ b/openbsc/src/libbsc/bsc_vty.c @@ -1655,7 +1655,7 @@ * Initalize bts->acc_ramp here. Else we could segfault while * processing a configuration file with ACC ramping settings. */ - acc_ramp_init(&bts->acc_ramp, false, bts); + acc_ramp_init(&bts->acc_ramp, bts); } else bts = gsm_bts_num(gsmnet, bts_nr); @@ -3042,7 +3042,8 @@ { struct gsm_bts *bts = vty->index; - acc_ramp_init(&bts->acc_ramp, true, bts); + if (!acc_ramp_is_enabled(&bts->acc_ramp)) + acc_ramp_set_enabled(&bts->acc_ramp, true); /* ACC ramping takes effect when the BTS reconnects. */ return CMD_SUCCESS; @@ -3057,7 +3058,7 @@ if (acc_ramp_is_enabled(&bts->acc_ramp)) { acc_ramp_abort(&bts->acc_ramp); - acc_ramp_init(&bts->acc_ramp, false, bts); + acc_ramp_set_enabled(&bts->acc_ramp, false); gsm_bts_set_system_infos(bts); } -- To view, visit https://gerrit.osmocom.org/7820 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: Iadd25016e6478a9dc5da1db42e6192ce0f5cc746 Gerrit-PatchSet: 1 Gerrit-Project: openbsc Gerrit-Branch: master Gerrit-Owner: Stefan Sperling Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Pau Espin Pedrol From gerrit-no-reply at lists.osmocom.org Mon Apr 16 15:19:16 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Mon, 16 Apr 2018 15:19:16 +0000 Subject: [MERGED] openbsc[master]: only log actual access control class ramping changes In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: only log actual access control class ramping changes ...................................................................... only log actual access control class ramping changes Silence log messages about no-op changes to access granted to access control classes. For example, these always occur while configuration files are being loaded. This is a port of osmo-bsc commit 53d40e078e9df20103b7ed26daa936720c9dec83 Related: OS#2591 Change-Id: I2f892b998eb8119e623c1d87ffe865b48f7d5a87 --- M openbsc/src/libbsc/acc_ramp.c 1 file changed, 4 insertions(+), 2 deletions(-) Approvals: Pau Espin Pedrol: Looks good to me, but someone else must approve Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/openbsc/src/libbsc/acc_ramp.c b/openbsc/src/libbsc/acc_ramp.c index 08810b5..9b3f90b 100644 --- a/openbsc/src/libbsc/acc_ramp.c +++ b/openbsc/src/libbsc/acc_ramp.c @@ -42,14 +42,16 @@ static void allow_one_acc(struct acc_ramp *acc_ramp, unsigned int acc) { OSMO_ASSERT(acc >= 0 && acc <= 9); - LOGP(DRSL, LOGL_DEBUG, "(bts=%d) ACC RAMP: allowing Access Control Class %u\n", acc_ramp->bts->nr, acc); + if (acc_ramp->barred_accs & (1 << acc)) + LOGP(DRSL, LOGL_DEBUG, "(bts=%d) ACC RAMP: allowing Access Control Class %u\n", acc_ramp->bts->nr, acc); acc_ramp->barred_accs &= ~(1 << acc); } static void barr_one_acc(struct acc_ramp *acc_ramp, unsigned int acc) { OSMO_ASSERT(acc >= 0 && acc <= 9); - LOGP(DRSL, LOGL_DEBUG, "(bts=%d) ACC RAMP: barring Access Control Class %u\n", acc_ramp->bts->nr, acc); + if ((acc_ramp->barred_accs & (1 << acc)) == 0) + LOGP(DRSL, LOGL_DEBUG, "(bts=%d) ACC RAMP: barring Access Control Class %u\n", acc_ramp->bts->nr, acc); acc_ramp->barred_accs |= (1 << acc); } -- To view, visit https://gerrit.osmocom.org/7818 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: I2f892b998eb8119e623c1d87ffe865b48f7d5a87 Gerrit-PatchSet: 1 Gerrit-Project: openbsc Gerrit-Branch: master Gerrit-Owner: Stefan Sperling Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Pau Espin Pedrol From gerrit-no-reply at lists.osmocom.org Mon Apr 16 15:26:33 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Mon, 16 Apr 2018 15:26:33 +0000 Subject: osmo-msc[master]: cosmetic: use enum ranap_nsap_addr_enc instead of int In-Reply-To: References: Message-ID: Patch Set 4: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7296 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Ic9f8bf53f4b605c166e84cd7edd90c10fe7d7a1f Gerrit-PatchSet: 4 Gerrit-Project: osmo-msc Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Neels Hofmeyr Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Mon Apr 16 15:26:49 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Mon, 16 Apr 2018 15:26:49 +0000 Subject: [MERGED] osmo-msc[master]: cosmetic: use enum ranap_nsap_addr_enc instead of int In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: cosmetic: use enum ranap_nsap_addr_enc instead of int ...................................................................... cosmetic: use enum ranap_nsap_addr_enc instead of int The only reason to use int instead of the enum was the lack of header iu_client.h when not building with Iu support. Rather use the configure result properly, include the header when Iu support is built and use the proper enum. Omit the entire iu sub-struct when building without Iu. Add LIBOSMORANAP_CFLAGS to libvlr, in order to find the iu_client.h header (now also included from gsm_data.h). Rationale: Instead of using a questionable typecast from int* to enum*, we can now use the enum member directly without needing to silence compiler warnings. Change-Id: Ic9f8bf53f4b605c166e84cd7edd90c10fe7d7a1f --- M include/osmocom/msc/gsm_data.h M src/libmsc/msc_vty.c M src/libvlr/Makefile.am 3 files changed, 18 insertions(+), 2 deletions(-) Approvals: Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/include/osmocom/msc/gsm_data.h b/include/osmocom/msc/gsm_data.h index c5e7aaf..73047ee 100644 --- a/include/osmocom/msc/gsm_data.h +++ b/include/osmocom/msc/gsm_data.h @@ -23,6 +23,11 @@ /* TS 48.008 DLCI containing DCCH/ACCH + SAPI */ #define OMSC_LINKID_CB(__msgb) (__msgb)->cb[3] +#include "../../bscconfig.h" +#if BUILD_IU +#include +#endif + /** annotations for msgb ownership */ #define __uses @@ -311,12 +316,14 @@ struct mgcp_client *client; } mgw; +#if BUILD_IU struct { /* CS7 instance id number (set via VTY) */ uint32_t cs7_instance; - int rab_assign_addr_enc; + enum ranap_nsap_addr_enc rab_assign_addr_enc; struct osmo_sccp_instance *sccp; } iu; +#endif struct { /* CS7 instance id number (set via VTY) */ diff --git a/src/libmsc/msc_vty.c b/src/libmsc/msc_vty.c index 84d4d14..d10028e 100644 --- a/src/libmsc/msc_vty.c +++ b/src/libmsc/msc_vty.c @@ -380,8 +380,14 @@ "cs7-instance-iu <0-15>", "Set SS7 to be used by the Iu-Interface.\n" "SS7 instance reference number\n") { +#if BUILD_IU gsmnet->iu.cs7_instance = atoi(argv[0]); return CMD_SUCCESS; +#else + vty_out(vty, "WARNING: 'cs7-instance-iu' without effect: built without Iu support%s", + VTY_NEWLINE); + return CMD_WARNING; +#endif } DEFUN(cfg_msc_auth_tuple_max_reuse_count, cfg_msc_auth_tuple_max_reuse_count_cmd, @@ -437,8 +443,10 @@ vty_out(vty, " cs7-instance-a %u%s", gsmnet->a.cs7_instance, VTY_NEWLINE); +#if BUILD_IU vty_out(vty, " cs7-instance-iu %u%s", gsmnet->iu.cs7_instance, VTY_NEWLINE); +#endif if (gsmnet->vlr->cfg.auth_tuple_max_reuse_count) vty_out(vty, " auth-tuple-max-reuse-count %d%s", @@ -1422,7 +1430,7 @@ mgcp_client_vty_init(msc_network, MSC_NODE, &msc_network->mgw.conf); #ifdef BUILD_IU - ranap_iu_vty_init(MSC_NODE, (enum ranap_nsap_addr_enc*)&msc_network->iu.rab_assign_addr_enc); + ranap_iu_vty_init(MSC_NODE, &msc_network->iu.rab_assign_addr_enc); #endif osmo_fsm_vty_add_cmds(); diff --git a/src/libvlr/Makefile.am b/src/libvlr/Makefile.am index e3d5ced..1408f6c 100644 --- a/src/libvlr/Makefile.am +++ b/src/libvlr/Makefile.am @@ -6,6 +6,7 @@ $(LIBOSMOSCCP_CFLAGS) \ $(LIBOSMOMGCPCLIENT_CFLAGS) \ $(LIBOSMOABIS_CFLAGS) \ + $(LIBOSMORANAP_CFLAGS) \ $(COVERAGE_CFLAGS) \ $(NULL) -- To view, visit https://gerrit.osmocom.org/7296 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: Ic9f8bf53f4b605c166e84cd7edd90c10fe7d7a1f Gerrit-PatchSet: 4 Gerrit-Project: osmo-msc Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Neels Hofmeyr From gerrit-no-reply at lists.osmocom.org Mon Apr 16 15:27:14 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Mon, 16 Apr 2018 15:27:14 +0000 Subject: libosmocore[master]: cosmetic: log: fix typo, clarify msg for rate_ctr name mangling In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7817 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I9a04d501698f8a3360ef9dcbf04b57c5ac10e63b Gerrit-PatchSet: 1 Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Mon Apr 16 15:27:40 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Mon, 16 Apr 2018 15:27:40 +0000 Subject: libosmocore[master]: test_gsm0808_enc_dec_speech_codec_with_cfg: initialize properly In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7815 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Iaa20c59f624fbdc69a018cabd0f7e9c5a1389519 Gerrit-PatchSet: 1 Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Mon Apr 16 15:27:51 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Mon, 16 Apr 2018 15:27:51 +0000 Subject: [MERGED] libosmocore[master]: test_gsm0808_enc_dec_speech_codec_with_cfg: initialize properly In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: test_gsm0808_enc_dec_speech_codec_with_cfg: initialize properly ...................................................................... test_gsm0808_enc_dec_speech_codec_with_cfg: initialize properly The uninitialized members of enc_sc sporadically hit address sanitizer failure during gsm0808_test, like: ../../../../src/libosmocore/src/gsm/gsm0808_utils.c:187:8: runtime error: load of value 13, which is not a valid value for type '_Bool' ../../../../src/libosmocore/src/gsm/gsm0808_utils.c:191:8: runtime error: load of value 119, which is not a valid value for type '_Bool' How the test survived so long is a mystery to me; as soon as some uninitialized members would by coincidence not be zero, the test should always have failed at OSMO_ASSERT(memcmp(&enc_sc, &dec_sc, sizeof(enc_sc)) == 0). Related: OS#3148 Change-Id: Iaa20c59f624fbdc69a018cabd0f7e9c5a1389519 --- M tests/gsm0808/gsm0808_test.c 1 file changed, 7 insertions(+), 7 deletions(-) Approvals: Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/tests/gsm0808/gsm0808_test.c b/tests/gsm0808/gsm0808_test.c index a9ab72b..49673fe 100644 --- a/tests/gsm0808/gsm0808_test.c +++ b/tests/gsm0808/gsm0808_test.c @@ -595,16 +595,16 @@ static void test_gsm0808_enc_dec_speech_codec_with_cfg() { - struct gsm0808_speech_codec enc_sc; - struct gsm0808_speech_codec dec_sc; + struct gsm0808_speech_codec enc_sc = { + .pi = true, + .tf = true, + .type = GSM0808_SCT_FR3, + .cfg = 0xabcd, + }; + struct gsm0808_speech_codec dec_sc = {}; struct msgb *msg; uint8_t rc_enc; int rc_dec; - - enc_sc.pi = true; - enc_sc.tf = true; - enc_sc.type = GSM0808_SCT_FR3; - enc_sc.cfg = 0xabcd; msg = msgb_alloc(1024, "output buffer"); rc_enc = gsm0808_enc_speech_codec(msg, &enc_sc); -- To view, visit https://gerrit.osmocom.org/7815 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: Iaa20c59f624fbdc69a018cabd0f7e9c5a1389519 Gerrit-PatchSet: 1 Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder From gerrit-no-reply at lists.osmocom.org Mon Apr 16 15:27:52 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Mon, 16 Apr 2018 15:27:52 +0000 Subject: [MERGED] libosmocore[master]: cosmetic: log: fix typo, clarify msg for rate_ctr name mangling In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: cosmetic: log: fix typo, clarify msg for rate_ctr name mangling ...................................................................... cosmetic: log: fix typo, clarify msg for rate_ctr name mangling Change-Id: I9a04d501698f8a3360ef9dcbf04b57c5ac10e63b --- M src/rate_ctr.c 1 file changed, 3 insertions(+), 2 deletions(-) Approvals: Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/src/rate_ctr.c b/src/rate_ctr.c index ec054c5..777a42a 100644 --- a/src/rate_ctr.c +++ b/src/rate_ctr.c @@ -169,8 +169,9 @@ goto err_free; } - LOGP(DLGLOBAL, LOGL_INFO, "Needed to mangle ounter group '%s' names still using '.' as " - "separator, please consider updating the application\n", desc->group_name_prefix); + LOGP(DLGLOBAL, LOGL_INFO, "Needed to mangle counter group '%s' names: it is still using '.' as " + "separator, which is not allowed. please consider updating the application\n", + desc->group_name_prefix); return desc_new; err_free: -- To view, visit https://gerrit.osmocom.org/7817 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: I9a04d501698f8a3360ef9dcbf04b57c5ac10e63b Gerrit-PatchSet: 1 Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder From gerrit-no-reply at lists.osmocom.org Mon Apr 16 15:28:14 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Mon, 16 Apr 2018 15:28:14 +0000 Subject: osmo-sgsn[master]: use osmo_init_logging2(), fix regression test memleaks In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7816 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Ia4204c8b3d895b42c103edecb61b99d3d22bd36f Gerrit-PatchSet: 1 Gerrit-Project: osmo-sgsn Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Mon Apr 16 15:28:15 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Mon, 16 Apr 2018 15:28:15 +0000 Subject: [MERGED] osmo-sgsn[master]: use osmo_init_logging2(), fix regression test memleaks In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: use osmo_init_logging2(), fix regression test memleaks ...................................................................... use osmo_init_logging2(), fix regression test memleaks Particularly gbproxy_test.c had various mem leaks, which (will) show up with gcc (Debian 7.3.0-15) 7.3.0 address sanitizer. Fix those leaks to verify that we don't have memleaks in the production code. Change-Id: Ia4204c8b3d895b42c103edecb61b99d3d22bd36f --- M src/gprs/gb_proxy_main.c M src/gprs/gtphub_main.c M src/gprs/sgsn_main.c M src/libcommon/gsup_test_client.c M tests/gbproxy/gbproxy_test.c M tests/gprs/gprs_test.c M tests/gtphub/gtphub_test.c M tests/oap/oap_client_test.c M tests/sgsn/sgsn_test.c M tests/slhc/slhc_test.c M tests/sndcp_xid/sndcp_xid_test.c M tests/v42bis/v42bis_test.c M tests/xid/xid_test.c 13 files changed, 96 insertions(+), 40 deletions(-) Approvals: Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/src/gprs/gb_proxy_main.c b/src/gprs/gb_proxy_main.c index 1416ff5..04143bb 100644 --- a/src/gprs/gb_proxy_main.c +++ b/src/gprs/gb_proxy_main.c @@ -275,7 +275,7 @@ signal(SIGUSR2, &signal_handler); osmo_init_ignore_signals(); - osmo_init_logging(&gprs_log_info); + osmo_init_logging2(tall_bsc_ctx, &gprs_log_info); vty_info.copyright = openbsc_copyright; vty_init(&vty_info); diff --git a/src/gprs/gtphub_main.c b/src/gprs/gtphub_main.c index 197c5e3..a1a2c1d 100644 --- a/src/gprs/gtphub_main.c +++ b/src/gprs/gtphub_main.c @@ -346,7 +346,7 @@ signal(SIGUSR2, &signal_handler); osmo_init_ignore_signals(); - osmo_init_logging(>phub_log_info); + osmo_init_logging2(osmo_gtphub_ctx, >phub_log_info); vty_info.copyright = gtphub_copyright; vty_init(&vty_info); diff --git a/src/gprs/sgsn_main.c b/src/gprs/sgsn_main.c index 0276e34..feffefb 100644 --- a/src/gprs/sgsn_main.c +++ b/src/gprs/sgsn_main.c @@ -386,7 +386,7 @@ signal(SIGUSR2, &signal_handler); osmo_init_ignore_signals(); - osmo_init_logging(&gprs_log_info); + osmo_init_logging2(tall_bsc_ctx, &gprs_log_info); osmo_stats_init(tall_bsc_ctx); vty_info.copyright = openbsc_copyright; diff --git a/src/libcommon/gsup_test_client.c b/src/libcommon/gsup_test_client.c index cc0f58b..2357ba5 100644 --- a/src/libcommon/gsup_test_client.c +++ b/src/libcommon/gsup_test_client.c @@ -272,10 +272,11 @@ unsigned long long i; char *server_host = "127.0.0.1"; uint16_t server_port = OSMO_GSUP_PORT; + void *ctx = talloc_named_const(NULL, 0, "gsup_test_client"); - osmo_init_logging(&gsup_test_client_log_info); + osmo_init_logging2(ctx, &gsup_test_client_log_info); - g_gc = gsup_client_create("GSUPTEST", server_host, server_port, + g_gc = gsup_client_create(ctx, "GSUPTEST", server_host, server_port, gsupc_read_cb, NULL); diff --git a/tests/gbproxy/gbproxy_test.c b/tests/gbproxy/gbproxy_test.c index 8edb171..f9a1c6b 100644 --- a/tests/gbproxy/gbproxy_test.c +++ b/tests/gbproxy/gbproxy_test.c @@ -47,7 +47,7 @@ #define MATCH_ANY (-1) -void *tall_bsc_ctx; +void *tall_bsc_ctx = NULL; struct gbproxy_config gbcfg = {0}; @@ -1329,7 +1329,7 @@ static void test_gbproxy() { - struct gprs_ns_inst *nsi = gprs_ns_instantiate(gprs_ns_callback, NULL); + struct gprs_ns_inst *nsi = gprs_ns_instantiate(gprs_ns_callback, tall_bsc_ctx); struct sockaddr_in bss_peer[4] = {{0},}; struct sockaddr_in sgsn_peer= {0}; @@ -1497,7 +1497,7 @@ static void test_gbproxy_ident_changes() { - struct gprs_ns_inst *nsi = gprs_ns_instantiate(gprs_ns_callback, NULL); + struct gprs_ns_inst *nsi = gprs_ns_instantiate(gprs_ns_callback, tall_bsc_ctx); struct sockaddr_in bss_peer[1] = {{0},}; struct sockaddr_in sgsn_peer= {0}; uint16_t nsei[2] = {0x1000, 0x2000}; @@ -1629,7 +1629,7 @@ static void test_gbproxy_ra_patching() { - struct gprs_ns_inst *nsi = gprs_ns_instantiate(gprs_ns_callback, NULL); + struct gprs_ns_inst *nsi = gprs_ns_instantiate(gprs_ns_callback, tall_bsc_ctx); struct sockaddr_in bss_peer[1] = {{0},}; struct sockaddr_in sgsn_peer= {0}; struct gprs_ra_id rai_bss = @@ -1657,7 +1657,7 @@ gbcfg.nsi = bssgp_nsi; gbcfg.nsip_sgsn_nsei = SGSN_NSEI; gbcfg.core_plmn = (struct osmo_plmn_id){ .mcc = 123, .mnc = 456 }; - gbcfg.core_apn = talloc_zero_size(NULL, 100); + gbcfg.core_apn = talloc_zero_size(tall_bsc_ctx, 100); gbcfg.core_apn_size = gprs_str_to_apn(gbcfg.core_apn, 100, "foo.bar"); gbcfg.patch_ptmsi = 0; @@ -1960,6 +1960,9 @@ OSMO_ASSERT(!expect_msg()); received_messages = NULL; + talloc_free(gbcfg.core_apn); + gbcfg.core_apn = NULL; + gbproxy_clear_patch_filter(&gbcfg.matches[GBPROX_MATCH_PATCHING]); gbprox_reset(&gbcfg); gprs_ns_destroy(nsi); @@ -1968,7 +1971,7 @@ static void test_gbproxy_ptmsi_assignment() { - struct gprs_ns_inst *nsi = gprs_ns_instantiate(gprs_ns_callback, NULL); + struct gprs_ns_inst *nsi = gprs_ns_instantiate(gprs_ns_callback, tall_bsc_ctx); struct sockaddr_in bss_peer[1] = {{0},}; struct sockaddr_in sgsn_peer= {0}; struct gprs_ra_id rai_bss = @@ -1997,7 +2000,7 @@ gbcfg.nsi = bssgp_nsi; gbcfg.nsip_sgsn_nsei = SGSN_NSEI; gbcfg.core_plmn = (struct osmo_plmn_id){}; - gbcfg.core_apn = talloc_zero_size(NULL, 100); + gbcfg.core_apn = talloc_zero_size(tall_bsc_ctx, 100); gbcfg.core_apn_size = gprs_str_to_apn(gbcfg.core_apn, 100, "foo.bar"); gbcfg.patch_ptmsi = 0; @@ -2172,6 +2175,9 @@ dump_global(stdout, 0); + talloc_free(gbcfg.core_apn); + gbcfg.core_apn = NULL; + gbprox_reset(&gbcfg); gprs_ns_destroy(nsi); nsi = NULL; @@ -2181,7 +2187,7 @@ static void test_gbproxy_ptmsi_patching() { - struct gprs_ns_inst *nsi = gprs_ns_instantiate(gprs_ns_callback, NULL); + struct gprs_ns_inst *nsi = gprs_ns_instantiate(gprs_ns_callback, tall_bsc_ctx); struct sockaddr_in bss_peer[1] = {{0},}; struct sockaddr_in sgsn_peer= {0}; struct gprs_ra_id rai_bss = @@ -2230,7 +2236,7 @@ gbcfg.nsi = bssgp_nsi; gbcfg.nsip_sgsn_nsei = SGSN_NSEI; gbcfg.core_plmn = (struct osmo_plmn_id){ .mcc = 123, .mnc = 456 }; - gbcfg.core_apn = talloc_zero_size(NULL, 100); + gbcfg.core_apn = talloc_zero_size(tall_bsc_ctx, 100); gbcfg.core_apn_size = gprs_str_to_apn(gbcfg.core_apn, 100, "foo.bar"); gbcfg.patch_ptmsi = 1; @@ -2508,6 +2514,9 @@ dump_global(stdout, 0); + talloc_free(gbcfg.core_apn); + gbcfg.core_apn = NULL; + gbprox_reset(&gbcfg); gprs_ns_destroy(nsi); nsi = NULL; @@ -2517,7 +2526,7 @@ static void test_gbproxy_ptmsi_patching_bad_cases() { - struct gprs_ns_inst *nsi = gprs_ns_instantiate(gprs_ns_callback, NULL); + struct gprs_ns_inst *nsi = gprs_ns_instantiate(gprs_ns_callback, tall_bsc_ctx); struct sockaddr_in bss_peer[1] = {{0},}; struct sockaddr_in sgsn_peer= {0}; struct gprs_ra_id rai_bss = @@ -2548,7 +2557,7 @@ gbcfg.nsi = bssgp_nsi; gbcfg.nsip_sgsn_nsei = SGSN_NSEI; gbcfg.core_plmn = (struct osmo_plmn_id){ .mcc = 123, .mnc = 456 }; - gbcfg.core_apn = talloc_zero_size(NULL, 100); + gbcfg.core_apn = talloc_zero_size(tall_bsc_ctx, 100); gbcfg.core_apn_size = gprs_str_to_apn(gbcfg.core_apn, 100, "foo.bar"); gbcfg.patch_ptmsi = 1; @@ -2686,6 +2695,9 @@ dump_global(stdout, 0); + talloc_free(gbcfg.core_apn); + gbcfg.core_apn = NULL; + gbprox_reset(&gbcfg); gprs_ns_destroy(nsi); nsi = NULL; @@ -2696,7 +2708,7 @@ static void test_gbproxy_imsi_acquisition() { - struct gprs_ns_inst *nsi = gprs_ns_instantiate(gprs_ns_callback, NULL); + struct gprs_ns_inst *nsi = gprs_ns_instantiate(gprs_ns_callback, tall_bsc_ctx); struct sockaddr_in bss_peer[1] = {{0},}; struct sockaddr_in sgsn_peer= {0}; struct gprs_ra_id rai_bss = @@ -2731,7 +2743,7 @@ gbcfg.nsi = bssgp_nsi; gbcfg.nsip_sgsn_nsei = SGSN_NSEI; gbcfg.core_plmn = (struct osmo_plmn_id){ .mcc = 123, .mnc = 456 }; - gbcfg.core_apn = talloc_zero_size(NULL, 100); + gbcfg.core_apn = talloc_zero_size(tall_bsc_ctx, 100); gbcfg.core_apn_size = gprs_str_to_apn(gbcfg.core_apn, 100, "foo.bar"); gbcfg.patch_ptmsi = 1; gbcfg.acquire_imsi = 1; @@ -2997,6 +3009,9 @@ dump_global(stdout, 0); + talloc_free(gbcfg.core_apn); + gbcfg.core_apn = NULL; + gbprox_reset(&gbcfg); gprs_ns_destroy(nsi); nsi = NULL; @@ -3006,7 +3021,7 @@ static void test_gbproxy_secondary_sgsn() { - struct gprs_ns_inst *nsi = gprs_ns_instantiate(gprs_ns_callback, NULL); + struct gprs_ns_inst *nsi = gprs_ns_instantiate(gprs_ns_callback, tall_bsc_ctx); struct sockaddr_in bss_peer[1] = {{0},}; struct sockaddr_in sgsn_peer[2]= {{0},}; struct gprs_ra_id rai_bss = @@ -3056,7 +3071,7 @@ gbcfg.nsi = bssgp_nsi; gbcfg.nsip_sgsn_nsei = SGSN_NSEI; gbcfg.core_plmn = (struct osmo_plmn_id){ .mcc = 123, .mnc = 456 }; - gbcfg.core_apn = talloc_zero_size(NULL, 100); + gbcfg.core_apn = talloc_zero_size(tall_bsc_ctx, 100); gbcfg.core_apn_size = gprs_str_to_apn(gbcfg.core_apn, 100, "foo.bar"); gbcfg.patch_ptmsi = 1; gbcfg.acquire_imsi = 1; @@ -3497,6 +3512,9 @@ dump_global(stdout, 0); + talloc_free(gbcfg.core_apn); + gbcfg.core_apn = NULL; + gbproxy_clear_patch_filter(&gbcfg.matches[GBPROX_MATCH_ROUTING]); gbprox_reset(&gbcfg); gprs_ns_destroy(nsi); @@ -3507,7 +3525,7 @@ static void test_gbproxy_keep_info() { - struct gprs_ns_inst *nsi = gprs_ns_instantiate(gprs_ns_callback, NULL); + struct gprs_ns_inst *nsi = gprs_ns_instantiate(gprs_ns_callback, tall_bsc_ctx); struct sockaddr_in bss_peer[1] = {{0},}; struct sockaddr_in sgsn_peer= {0}; struct gprs_ra_id rai_bss = @@ -4440,6 +4458,9 @@ dump_global(stdout, 0); + talloc_free(gbcfg.core_apn); + gbcfg.core_apn = NULL; + gbprox_reset(&gbcfg); gprs_ns_destroy(nsi); nsi = NULL; @@ -4728,6 +4749,8 @@ } gbproxy_clear_patch_filter(&cfg.matches[GBPROX_MATCH_PATCHING]); gbprox_reset(&cfg); + /* gbprox_reset() frees the rate_ctr, but re-allocates it again. */ + rate_ctr_group_free(cfg.ctrg); cleanup_test(); } @@ -4810,7 +4833,7 @@ static void test_gbproxy_stored_messages() { - struct gprs_ns_inst *nsi = gprs_ns_instantiate(gprs_ns_callback, NULL); + struct gprs_ns_inst *nsi = gprs_ns_instantiate(gprs_ns_callback, tall_bsc_ctx); struct sockaddr_in bss_peer[1] = {{0},}; struct sockaddr_in sgsn_peer= {0}; struct gprs_ra_id rai_bss = @@ -4834,7 +4857,7 @@ gbcfg.nsi = bssgp_nsi; gbcfg.nsip_sgsn_nsei = SGSN_NSEI; gbcfg.core_plmn = (struct osmo_plmn_id){}; - gbcfg.core_apn = talloc_zero_size(NULL, 100); + gbcfg.core_apn = talloc_zero_size(tall_bsc_ctx, 100); gbcfg.core_apn_size = gprs_str_to_apn(gbcfg.core_apn, 100, "foo.bar"); gbcfg.patch_ptmsi = 0; gbcfg.acquire_imsi = 1; @@ -4894,6 +4917,9 @@ dump_global(stdout, 0); + talloc_free(gbcfg.core_apn); + gbcfg.core_apn = NULL; + gbprox_reset(&gbcfg); gprs_ns_destroy(nsi); nsi = NULL; @@ -4926,9 +4952,13 @@ int main(int argc, char **argv) { - msgb_talloc_ctx_init(NULL, 0); + talloc_enable_leak_report(); + tall_bsc_ctx = talloc_named_const(NULL, 0, "gbproxy_test"); + void *log_ctx = talloc_named_const(tall_bsc_ctx, 0, "log"); - osmo_init_logging(&info); + msgb_talloc_ctx_init(tall_bsc_ctx, 0); + + osmo_init_logging2(log_ctx, &info); log_set_use_color(osmo_stderr_target, 0); log_set_print_filename(osmo_stderr_target, 0); osmo_signal_register_handler(SS_L_NS, &test_signal, &gbcfg); @@ -4937,7 +4967,7 @@ log_set_log_level(osmo_stderr_target, LOGL_DEBUG); log_set_all_filter(osmo_stderr_target, 1); - rate_ctr_init(NULL); + rate_ctr_init(tall_bsc_ctx); setlinebuf(stdout); @@ -4955,7 +4985,15 @@ test_gbproxy_keep_info(); test_gbproxy_tlli_expire(); test_gbproxy_stored_messages(); + gbprox_reset(&gbcfg); + /* gbprox_reset() frees the rate_ctr, but re-allocates it again. */ + rate_ctr_group_free(gbcfg.ctrg); printf("===== GbProxy test END\n\n"); - exit(EXIT_SUCCESS); + talloc_free(log_ctx); + /* expecting root and msgb ctx, empty */ + OSMO_ASSERT(talloc_total_blocks(tall_bsc_ctx) == 2); + talloc_free(tall_bsc_ctx); + + return 0; } diff --git a/tests/gprs/gprs_test.c b/tests/gprs/gprs_test.c index 2dcbafa..99e3ea5 100644 --- a/tests/gprs/gprs_test.c +++ b/tests/gprs/gprs_test.c @@ -130,7 +130,8 @@ int main(int argc, char **argv) { - osmo_init_logging(&info); + void *ctx = talloc_named_const(NULL, 0, "gprs_test"); + osmo_init_logging2(ctx, &info); test_8_4_2(); test_gprs_timer_enc_dec(); diff --git a/tests/gtphub/gtphub_test.c b/tests/gtphub/gtphub_test.c index ac0223b..2e48bb1 100644 --- a/tests/gtphub/gtphub_test.c +++ b/tests/gtphub/gtphub_test.c @@ -1762,8 +1762,9 @@ int main(int argc, char **argv) { - osmo_init_logging(&info); osmo_gtphub_ctx = talloc_named_const(NULL, 0, "osmo_gtphub"); + void *log_ctx = talloc_named_const(osmo_gtphub_ctx, 0, "log"); + osmo_init_logging2(log_ctx, &info); test_nr_map_basic(); test_nr_map_wrap(); @@ -1780,7 +1781,9 @@ printf("Done\n"); talloc_report_full(osmo_gtphub_ctx, stderr); + talloc_free(log_ctx); OSMO_ASSERT(talloc_total_blocks(osmo_gtphub_ctx) == 1); + talloc_free(osmo_gtphub_ctx); return 0; } diff --git a/tests/oap/oap_client_test.c b/tests/oap/oap_client_test.c index 7adae83..87d2070 100644 --- a/tests/oap/oap_client_test.c +++ b/tests/oap/oap_client_test.c @@ -252,8 +252,9 @@ int main(int argc, char **argv) { - msgb_talloc_ctx_init(NULL, 0); - osmo_init_logging(&info); + void *ctx = talloc_named_const(NULL, 0, "oap_client_test"); + msgb_talloc_ctx_init(ctx, 0); + osmo_init_logging2(ctx, &info); OSMO_ASSERT(osmo_stderr_target); log_set_use_color(osmo_stderr_target, 0); diff --git a/tests/sgsn/sgsn_test.c b/tests/sgsn/sgsn_test.c index 2fbd6e4..df4df3b 100644 --- a/tests/sgsn/sgsn_test.c +++ b/tests/sgsn/sgsn_test.c @@ -2444,8 +2444,8 @@ void *osmo_sgsn_ctx; void *msgb_ctx; - osmo_init_logging(&info); osmo_sgsn_ctx = talloc_named_const(NULL, 0, "osmo_sgsn"); + osmo_init_logging2(osmo_sgsn_ctx, &info); tall_bsc_ctx = talloc_named_const(osmo_sgsn_ctx, 0, "bsc"); msgb_ctx = msgb_talloc_ctx_init(osmo_sgsn_ctx, 0); diff --git a/tests/slhc/slhc_test.c b/tests/slhc/slhc_test.c index bb0e26c..5c13313 100644 --- a/tests/slhc/slhc_test.c +++ b/tests/slhc/slhc_test.c @@ -250,17 +250,20 @@ int main(int argc, char **argv) { void *ctx; - - osmo_init_logging(&info); + void *log_ctx; ctx = talloc_named_const(NULL, 0, "slhc_ctx"); + log_ctx = talloc_named_const(ctx, 0, "log"); + osmo_init_logging2(log_ctx, &info); test_slhc(ctx); printf("Done\n"); talloc_report_full(ctx, stderr); + talloc_free(log_ctx); OSMO_ASSERT(talloc_total_blocks(ctx) == 1); + talloc_free(ctx); return 0; } diff --git a/tests/sndcp_xid/sndcp_xid_test.c b/tests/sndcp_xid/sndcp_xid_test.c index dc6da82..5ed695c 100644 --- a/tests/sndcp_xid/sndcp_xid_test.c +++ b/tests/sndcp_xid/sndcp_xid_test.c @@ -261,10 +261,11 @@ int main(int argc, char **argv) { void *xid_ctx; - - osmo_init_logging(&info); + void *log_ctx; xid_ctx = talloc_named_const(NULL, 0, "xid_ctx"); + log_ctx = talloc_named_const(xid_ctx, 0, "log"); + osmo_init_logging2(log_ctx, &info); test_xid_decode_realworld(xid_ctx); test_xid_encode_decode(xid_ctx); @@ -272,7 +273,9 @@ printf("Done\n"); talloc_report_full(xid_ctx, stderr); + talloc_free(log_ctx); OSMO_ASSERT(talloc_total_blocks(xid_ctx) == 1); + talloc_free(xid_ctx); return 0; } diff --git a/tests/v42bis/v42bis_test.c b/tests/v42bis/v42bis_test.c index 41d23b0..e9c5069 100644 --- a/tests/v42bis/v42bis_test.c +++ b/tests/v42bis/v42bis_test.c @@ -407,11 +407,12 @@ int main(int argc, char **argv) { void *v42bis_ctx; + void *log_ctx; int i; - osmo_init_logging(&info); - v42bis_ctx = talloc_named_const(NULL, 0, "v42bis_ctx"); + log_ctx = talloc_named_const(v42bis_ctx, 0, "log"); + osmo_init_logging2(log_ctx, &info); test_v42bis(v42bis_ctx); @@ -423,7 +424,9 @@ printf("Done\n"); talloc_report_full(v42bis_ctx, stderr); + talloc_free(log_ctx); OSMO_ASSERT(talloc_total_blocks(v42bis_ctx) == 1); + talloc_free(v42bis_ctx); return 0; } diff --git a/tests/xid/xid_test.c b/tests/xid/xid_test.c index e30a14f..89d82e9 100644 --- a/tests/xid/xid_test.c +++ b/tests/xid/xid_test.c @@ -142,17 +142,20 @@ int main(int argc, char **argv) { void *xid_ctx; - - osmo_init_logging(&info); + void *log_ctx; xid_ctx = talloc_named_const(NULL, 0, "xid_ctx"); + log_ctx = talloc_named_const(xid_ctx, 0, "log"); + osmo_init_logging2(log_ctx, &info); test_xid_decode(xid_ctx); test_xid_encode(xid_ctx); printf("Done\n"); talloc_report_full(xid_ctx, stderr); + talloc_free(log_ctx); OSMO_ASSERT(talloc_total_blocks(xid_ctx) == 1); + talloc_free(xid_ctx); return 0; } -- To view, visit https://gerrit.osmocom.org/7816 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: Ia4204c8b3d895b42c103edecb61b99d3d22bd36f Gerrit-PatchSet: 1 Gerrit-Project: osmo-sgsn Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder From gerrit-no-reply at lists.osmocom.org Mon Apr 16 15:31:03 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Mon, 16 Apr 2018 15:31:03 +0000 Subject: osmo-gsm-tester[master]: contrib: Enable address-sanitize in builds In-Reply-To: References: Message-ID: Patch Set 2: Verified+1 -- To view, visit https://gerrit.osmocom.org/7830 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Ibef6c2fc497bce0d799116a854a48872f9ca16d7 Gerrit-PatchSet: 2 Gerrit-Project: osmo-gsm-tester Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Pau Espin Pedrol Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Mon Apr 16 15:32:00 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Mon, 16 Apr 2018 15:32:00 +0000 Subject: osmo-gsm-tester[master]: contrib: Enable address-sanitize in builds In-Reply-To: References: Message-ID: Patch Set 2: Tested/verified in https://jenkins.osmocom.org/jenkins/view/osmo-gsm-tester/job/osmo-gsm-tester_manual-build-all/60/ -- To view, visit https://gerrit.osmocom.org/7830 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Ibef6c2fc497bce0d799116a854a48872f9ca16d7 Gerrit-PatchSet: 2 Gerrit-Project: osmo-gsm-tester Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Pau Espin Pedrol Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Mon Apr 16 15:32:16 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Mon, 16 Apr 2018 15:32:16 +0000 Subject: openbsc[master]: nat: Add jitter buffer on the uplink receiver In-Reply-To: References: Message-ID: Patch Set 2: Code-Review-1 (7 comments) https://gerrit.osmocom.org/#/c/7793/2/openbsc/include/openbsc/mgcp_internal.h File openbsc/include/openbsc/mgcp_internal.h: Line 215: uint32_t bts_jitter_delay_min; what units is this? ms? us? bytes? codec-frames? If the varioable name doesn't indicate this (like delay_ms_min) the comment should at least state it. https://gerrit.osmocom.org/#/c/7793/2/openbsc/src/libmgcp/mgcp_protocol.c File openbsc/src/libmgcp/mgcp_protocol.c: Line 872: if(endp->bts_use_jibuf) { "if" is not a function (space needed) Line 887: if(endp->bts_use_jibuf) { same here Line 1357: if(endp->bts_jb) and again? https://gerrit.osmocom.org/#/c/7793/2/openbsc/src/libmgcp/mgcp_vty.c File openbsc/src/libmgcp/mgcp_vty.c: Line 1371: DEJITTER_STR " Minimum Delay\n" "Minimum Delay\n") see my other comment at the struct definition. The VTY user has no idea about the unit of the value he's supposed to enter here. the "?" help should make that clear. https://gerrit.osmocom.org/#/c/7793/2/openbsc/src/osmo-bsc_nat/bsc_mgcp_utils.c File openbsc/src/osmo-bsc_nat/bsc_mgcp_utils.c: Line 589: if(bsc_endp->bsc->cfg->bts_use_jibuf_override) if is not a function (below two more instances) https://gerrit.osmocom.org/#/c/7793/2/openbsc/src/osmo-bsc_nat/bsc_nat_vty.c File openbsc/src/osmo-bsc_nat/bsc_nat_vty.c: Line 1266: "bts-jitter-buffer-delay-min <1-65535>", same comment related to "unit" of the value -- To view, visit https://gerrit.osmocom.org/7793 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Ibf3932adc07442fb5e9c7a06404853f9d0a20959 Gerrit-PatchSet: 2 Gerrit-Project: openbsc Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Pau Espin Pedrol Gerrit-Reviewer: daniel Gerrit-HasComments: Yes From gerrit-no-reply at lists.osmocom.org Mon Apr 16 15:38:20 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Mon, 16 Apr 2018 15:38:20 +0000 Subject: [PATCH] osmo-ttcn3-hacks[master]: deps: Switch titan.ProtocolModules.SMPP back to upstream TITAN Message-ID: Review at https://gerrit.osmocom.org/7835 deps: Switch titan.ProtocolModules.SMPP back to upstream TITAN Our patch for SMPP AlertNotification was merged, so we can switch back to use upstream instead of our osmocom fork. Change-Id: Ib171451af264aa675b173b5cad37f08bcd64fbc3 --- M deps/Makefile 1 file changed, 2 insertions(+), 2 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-ttcn3-hacks refs/changes/35/7835/1 diff --git a/deps/Makefile b/deps/Makefile index d09d917..37e48e2 100644 --- a/deps/Makefile +++ b/deps/Makefile @@ -9,6 +9,7 @@ titan.ProtocolModules.IP \ titan.ProtocolModules.L2TP \ titan.ProtocolModules.M3UA \ + titan.ProtocolModules.SMPP \ titan.ProtocolModules.TCP \ titan.ProtocolModules.UDP \ titan.ProtocolModules.RTP \ @@ -42,7 +43,6 @@ OSMOGITHUB_REPOS= titan.TestPorts.SCTPasp \ titan.TestPorts.MTP3asp \ - titan.ProtocolModules.SMPP \ titan.ProtocolEmulations.M3UA ALL_REPOS=$(ECLIPSEGIT_REPOS) $(ECLIPSEGIT2_REPOS) $(OSMOGITHUB_REPOS) @@ -72,7 +72,7 @@ titan.ProtocolModules.RTP_commit= R.5.A titan.ProtocolModules.SCTP_commit= R.2.A titan.ProtocolModules.SDP_commit= R.14.A -titan.ProtocolModules.SMPP_commit= R.2.A-1-ge044a36 +titan.ProtocolModules.SMPP_commit= R.2.A-2-gb7aee69 titan.ProtocolModules.SNDCP_v7.0.0_commit= R.2.A titan.ProtocolModules.SUA_commit= R.5.A titan.ProtocolModules.TCP_commit= R.3.A -- To view, visit https://gerrit.osmocom.org/7835 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Ib171451af264aa675b173b5cad37f08bcd64fbc3 Gerrit-PatchSet: 1 Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Owner: Harald Welte From jenkins at lists.osmocom.org Mon Apr 16 15:38:26 2018 From: jenkins at lists.osmocom.org (jenkins at lists.osmocom.org) Date: Mon, 16 Apr 2018 15:38:26 +0000 (UTC) Subject: =?UTF-8?Q?Jenkins_build_is_back_to_normal_:_master-osmo-pc?= =?UTF-8?Q?u_=C2=BB_master,osmocom-master-debian9,lc15,True_#388?= In-Reply-To: <2038748291.370.1523878725146.JavaMail.jenkins@jenkins.osmocom.org> References: <2038748291.370.1523878725146.JavaMail.jenkins@jenkins.osmocom.org> Message-ID: <822202767.374.1523893106523.JavaMail.jenkins@jenkins.osmocom.org> See From jenkins at lists.osmocom.org Mon Apr 16 15:38:38 2018 From: jenkins at lists.osmocom.org (jenkins at lists.osmocom.org) Date: Mon, 16 Apr 2018 15:38:38 +0000 (UTC) Subject: =?UTF-8?Q?Build_failed_in_Jenkins:_master-osmo-bts_=C2=BB_lc15, origin/?= =?UTF-8?Q?nrw/litecell15-next,default,osmocom-master-debian9_#515?= Message-ID: <961292248.375.1523893118323.JavaMail.jenkins@jenkins.osmocom.org> See ------------------------------------------ [...truncated 112.78 KB...] + project=libosmo-abis + branch=master + git branch -a + grep -c remotes/origin/master$ + [ x1 != x0 ] + branch=origin/master + test -d libosmo-abis + cd libosmo-abis + git fetch --tags origin + git fetch origin + deps= osmo-clean-workspace.sh + chmod -R +w . + git checkout -f HEAD + git clean -dxf + [ -d ] + [ -d layer1-headers ] + git checkout -f origin/master HEAD is now at 43b5b69... configure.ac: Fix condition check for RTP_SIGNAL_PTR_CAST define + git rev-parse HEAD 43b5b69bb890441c7285541b36ef986063eab8cb + cd libosmo-abis + mkdir -p + autoreconf --install --force libtoolize: putting auxiliary files in AC_CONFIG_AUX_DIR, '.'. libtoolize: copying file './ltmain.sh' libtoolize: putting macros in AC_CONFIG_MACRO_DIRS, 'm4'. libtoolize: copying file 'm4/libtool.m4' libtoolize: copying file 'm4/ltoptions.m4' libtoolize: copying file 'm4/ltsugar.m4' libtoolize: copying file 'm4/ltversion.m4' libtoolize: copying file 'm4/lt~obsolete.m4' configure.ac:20: installing './compile' configure.ac:22: installing './config.guess' configure.ac:22: installing './config.sub' configure.ac:8: installing './install-sh' configure.ac:8: installing './missing' src/Makefile.am: installing './depcomp' + ./configure --prefix= checking for a BSD-compatible install... /usr/bin/install -c checking whether build environment is sane... yes checking for a thread-safe mkdir -p... /bin/mkdir -p checking for gawk... gawk checking whether make sets $(MAKE)... yes checking whether make supports nested variables... yes checking whether make supports nested variables... (cached) yes checking whether make sets $(MAKE)... (cached) yes checking for gcc... gcc checking whether the C compiler works... yes checking for C compiler default output file name... a.out checking for suffix of executables... checking whether we are cross compiling... no checking for suffix of object files... o checking whether we are using the GNU C compiler... yes checking whether gcc accepts -g... yes checking for gcc option to accept ISO C89... none needed checking whether gcc understands -c and -o together... yes checking for style of include used by make... GNU checking dependency style of gcc... gcc3 checking build system type... x86_64-pc-linux-gnu checking host system type... x86_64-pc-linux-gnu checking how to print strings... printf checking for a sed that does not truncate output... /bin/sed checking for grep that handles long lines and -e... /bin/grep checking for egrep... /bin/grep -E checking for fgrep... /bin/grep -F checking for ld used by gcc... /usr/bin/ld checking if the linker (/usr/bin/ld) is GNU ld... yes checking for BSD- or MS-compatible name lister (nm)... /usr/bin/nm -B checking the name lister (/usr/bin/nm -B) interface... BSD nm checking whether ln -s works... yes checking the maximum length of command line arguments... 1572864 checking how to convert x86_64-pc-linux-gnu file names to x86_64-pc-linux-gnu format... func_convert_file_noop checking how to convert x86_64-pc-linux-gnu file names to toolchain format... func_convert_file_noop checking for /usr/bin/ld option to reload object files... -r checking for objdump... objdump checking how to recognize dependent libraries... pass_all checking for dlltool... no checking how to associate runtime and link libraries... printf %s\n checking for ar... ar checking for archiver @FILE support... @ checking for strip... strip checking for ranlib... ranlib checking command to parse /usr/bin/nm -B output from gcc object... ok checking for sysroot... no checking for a working dd... /bin/dd checking how to truncate binary pipes... /bin/dd bs=4096 count=1 checking for mt... mt checking if mt is a manifest tool... no checking how to run the C preprocessor... gcc -E checking for ANSI C header files... yes checking for sys/types.h... yes checking for sys/stat.h... yes checking for stdlib.h... yes checking for string.h... yes checking for memory.h... yes checking for strings.h... yes checking for inttypes.h... yes checking for stdint.h... yes checking for unistd.h... yes checking for dlfcn.h... yes checking for objdir... .libs checking if gcc supports -fno-rtti -fno-exceptions... no checking for gcc option to produce PIC... -fPIC -DPIC checking if gcc PIC flag -fPIC -DPIC works... yes checking if gcc static flag -static works... yes checking if gcc supports -c -o file.o... yes checking if gcc supports -c -o file.o... (cached) yes checking whether the gcc linker (/usr/bin/ld -m elf_x86_64) supports shared libraries... yes checking whether -lc should be explicitly linked in... no checking dynamic linker characteristics... GNU/Linux ld.so checking how to hardcode library paths into programs... immediate checking whether stripping libraries is possible... yes checking if libtool supports shared libraries... yes checking whether to build shared libraries... yes checking whether to build static libraries... yes checking for pkg-config... /usr/bin/pkg-config checking for pkg-config... /usr/bin/pkg-config checking pkg-config is at least version 0.20... yes checking if gcc supports -fvisibility=hidden... yes checking for LIBOSMOCORE... yes checking for LIBOSMOVTY... yes checking for LIBOSMOGSM... yes checking for ORTP... yes checking dahdi/user.h usability... no checking dahdi/user.h presence... no checking for dahdi/user.h... no configure: WARNING: DAHDI input driver will not be built CFLAGS="-g -O2 -Wall" CPPFLAGS=" -Wall" checking that generated files are newer than configure... done configure: creating ./config.status config.status: creating libosmoabis.pc config.status: creating libosmotrau.pc config.status: creating include/Makefile config.status: creating src/Makefile config.status: creating tests/Makefile config.status: creating Makefile config.status: creating config.h config.status: executing tests/atconfig commands config.status: executing depfiles commands config.status: executing libtool commands + make -j 8 install echo 0.3.2.105-43b5 > .version-t && mv .version-t .version make install-recursive make[1]: Entering directory ' Making install in include make[2]: Entering directory ' make[3]: Entering directory ' make[3]: Nothing to be done for 'install-exec-am'. /bin/mkdir -p ' /bin/mkdir -p ' /usr/bin/install -c -m 644 osmocom/abis/ipa.h osmocom/abis/trau_frame.h osmocom/abis/ipa_proxy.h osmocom/abis/ipaccess.h osmocom/abis/abis.h osmocom/abis/subchan_demux.h osmocom/abis/e1_input.h osmocom/abis/lapd.h osmocom/abis/lapd_pcap.h osmocom/abis/unixsocket_proto.h ' /bin/mkdir -p ' /usr/bin/install -c -m 644 osmocom/trau/osmo_ortp.h ' make[3]: Leaving directory ' make[2]: Leaving directory ' Making install in src make[2]: Entering directory ' CC init.lo CC ipa_proxy.lo CC e1_input.lo CC e1_input_vty.lo CC subchan_demux.lo CC trau_frame.lo CC input/dahdi.lo CC input/ipa.lo CC input/ipaccess.lo CC input/lapd.lo CC input/lapd_pcap.lo CC input/misdn.lo CC input/rs232.lo CC input/unixsocket.lo CC trau/libosmotrau_la-osmo_ortp.lo trau/osmo_ortp.c:205:9: note: #pragma message: Using internal ortp API: rtp_session_rtcp_rec #pragma message ("Using internal ortp API: rtp_session_rtcp_rec") ^~~~~~~ CCLD libosmoabis.la CCLD libosmotrau.la ar: `u' modifier ignored since `D' is the default (see `U') ar: `u' modifier ignored since `D' is the default (see `U') make[3]: Entering directory ' make[3]: Nothing to be done for 'install-data-am'. /bin/mkdir -p ' /bin/bash ../libtool --mode=install /usr/bin/install -c libosmoabis.la libosmotrau.la ' libtool: install: /usr/bin/install -c .libs/libosmoabis.so.6.0.0 libtool: install: (cd && { ln -s -f libosmoabis.so.6.0.0 libosmoabis.so.6 || { rm -f libosmoabis.so.6 && ln -s libosmoabis.so.6.0.0 libosmoabis.so.6; }; }) libtool: install: (cd && { ln -s -f libosmoabis.so.6.0.0 libosmoabis.so || { rm -f libosmoabis.so && ln -s libosmoabis.so.6.0.0 libosmoabis.so; }; }) libtool: install: /usr/bin/install -c .libs/libosmoabis.lai libtool: install: /usr/bin/install -c .libs/libosmotrau.so.2.0.0 libtool: install: (cd && { ln -s -f libosmotrau.so.2.0.0 libosmotrau.so.2 || { rm -f libosmotrau.so.2 && ln -s libosmotrau.so.2.0.0 libosmotrau.so.2; }; }) libtool: install: (cd && { ln -s -f libosmotrau.so.2.0.0 libosmotrau.so || { rm -f libosmotrau.so && ln -s libosmotrau.so.2.0.0 libosmotrau.so; }; }) libtool: install: /usr/bin/install -c .libs/libosmotrau.lai libtool: install: /usr/bin/install -c .libs/libosmoabis.a libtool: install: chmod 644 libtool: install: ranlib libtool: install: /usr/bin/install -c .libs/libosmotrau.a libtool: install: chmod 644 libtool: install: ranlib libtool: finish: PATH="/usr/local/bin:/usr/bin:/bin:/usr/games:/home/osmocom-build/bin:/sbin" ldconfig -n ---------------------------------------------------------------------- Libraries have been installed in: If you ever happen to want to link against installed libraries in a given directory, LIBDIR, you must either use libtool, and specify the full pathname of the library, or use the '-LLIBDIR' flag during linking and do at least one of the following: - add LIBDIR to the 'LD_LIBRARY_PATH' environment variable during execution - add LIBDIR to the 'LD_RUN_PATH' environment variable during linking - use the '-Wl,-rpath -Wl,LIBDIR' linker flag - have your system administrator add LIBDIR to '/etc/ld.so.conf' See any operating system documentation about shared libraries for more information, such as the ld(1) and ld.so(8) manual pages. ---------------------------------------------------------------------- make[3]: Leaving directory ' make[2]: Leaving directory ' Making install in tests make[2]: Entering directory ' make[3]: Entering directory ' make[3]: Nothing to be done for 'install-exec-am'. make[3]: Nothing to be done for 'install-data-am'. make[3]: Leaving directory ' make[2]: Leaving directory ' make[2]: Entering directory ' make[3]: Entering directory ' make[3]: Nothing to be done for 'install-exec-am'. /bin/mkdir -p ' /usr/bin/install -c -m 644 libosmoabis.pc libosmotrau.pc ' make[3]: Leaving directory ' make[2]: Leaving directory ' make[1]: Leaving directory ' + STOW_DIR= stow --restow libosmo-abis + cd + osmo-layer1-headers.sh lc15 origin/nrw/litecell15-next + uri=https://gitlab.com/nrw_litecell15/litecell15-fw + version=origin/nrw/litecell15 + [ -n origin/nrw/litecell15-next ] + [ origin/nrw/litecell15-next != master ] + version=origin/nrw/litecell15-next + test -d layer1-headers + cd layer1-headers + git fetch origin + git checkout -f origin/nrw/litecell15-next error: pathspec 'origin/nrw/litecell15-next' did not match any file(s) known to git. Build step 'Execute shell' marked build as failure [WARNINGS]Skipping publisher since build result is FAILURE From jenkins at lists.osmocom.org Mon Apr 16 15:43:50 2018 From: jenkins at lists.osmocom.org (jenkins at lists.osmocom.org) Date: Mon, 16 Apr 2018 15:43:50 +0000 (UTC) Subject: =?UTF-8?Q?Jenkins_build_is_back_to_normal_:_master-osmo-pcu_=C2=BB_origin?= =?UTF-8?Q?/nrw/litecell15-next,osmocom-master-debian9,lc15,True_#388?= In-Reply-To: <1182980091.371.1523878727273.JavaMail.jenkins@jenkins.osmocom.org> References: <1182980091.371.1523878727273.JavaMail.jenkins@jenkins.osmocom.org> Message-ID: <618054596.376.1523893430249.JavaMail.jenkins@jenkins.osmocom.org> See From gerrit-no-reply at lists.osmocom.org Mon Apr 16 16:08:43 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Mon, 16 Apr 2018 16:08:43 +0000 Subject: [PATCH] openbsc[master]: nat: Add jitter buffer on the uplink receiver In-Reply-To: References: Message-ID: Hello Harald Welte, Jenkins Builder, I'd like you to reexamine a change. Please visit https://gerrit.osmocom.org/7793 to look at the new patch set (#3). nat: Add jitter buffer on the uplink receiver Default usage values are defined in mgcp node, and can be per-BSC overriden on each bsc node. Change-Id: Ibf3932adc07442fb5e9c7a06404853f9d0a20959 --- M openbsc/include/openbsc/bsc_nat.h M openbsc/include/openbsc/mgcp.h M openbsc/include/openbsc/mgcp_internal.h M openbsc/src/libmgcp/mgcp_network.c M openbsc/src/libmgcp/mgcp_protocol.c M openbsc/src/libmgcp/mgcp_vty.c M openbsc/src/osmo-bsc_nat/bsc_mgcp_utils.c M openbsc/src/osmo-bsc_nat/bsc_nat_vty.c 8 files changed, 253 insertions(+), 3 deletions(-) git pull ssh://gerrit.osmocom.org:29418/openbsc refs/changes/93/7793/3 diff --git a/openbsc/include/openbsc/bsc_nat.h b/openbsc/include/openbsc/bsc_nat.h index fad3804..5171c3e 100644 --- a/openbsc/include/openbsc/bsc_nat.h +++ b/openbsc/include/openbsc/bsc_nat.h @@ -175,6 +175,16 @@ /* Osmux is enabled/disabled per BSC */ int osmux; + + /* Use a jitterbuffer on the bts-side receiver */ + bool bts_use_jibuf; + /* Minimum and maximum buffer size for the jitter buffer, in ms */ + uint32_t bts_jitter_delay_min; + uint32_t bts_jitter_delay_max; + /* Enabled if explicitly configured through VTY: */ + bool bts_use_jibuf_override; + bool bts_jitter_delay_min_override; + bool bts_jitter_delay_max_override; }; struct bsc_lac_entry { diff --git a/openbsc/include/openbsc/mgcp.h b/openbsc/include/openbsc/mgcp.h index b2262bc..4d1c5ef 100644 --- a/openbsc/include/openbsc/mgcp.h +++ b/openbsc/include/openbsc/mgcp.h @@ -236,6 +236,12 @@ * message. */ uint16_t osmux_dummy; + + /* Use a jitterbuffer on the bts-side receiver */ + bool bts_use_jibuf; + /* Minimum and maximum buffer size for the jitter buffer, in ms */ + uint32_t bts_jitter_delay_min; + uint32_t bts_jitter_delay_max; }; /* config management */ diff --git a/openbsc/include/openbsc/mgcp_internal.h b/openbsc/include/openbsc/mgcp_internal.h index 7c89d10..cd6365f 100644 --- a/openbsc/include/openbsc/mgcp_internal.h +++ b/openbsc/include/openbsc/mgcp_internal.h @@ -25,6 +25,7 @@ #include #include +#include #define CI_UNUSED 0 @@ -205,6 +206,14 @@ uint32_t octets; } stats; } osmux; + + /* Jitter buffer */ + struct osmo_jibuf* bts_jb; + /* Use a jitterbuffer on the bts-side receiver */ + bool bts_use_jibuf; + /* Minimum and maximum buffer size for the jitter buffer, in ms */ + uint32_t bts_jitter_delay_min; + uint32_t bts_jitter_delay_max; }; #define for_each_line(line, save) \ @@ -340,3 +349,8 @@ return endp->cfg->bts_ports.bind_addr; return endp->cfg->source_addr; } + +/** + * Internal jitter buffer related + */ +void mgcp_dejitter_udp_send(struct msgb *msg, void *data); diff --git a/openbsc/src/libmgcp/mgcp_network.c b/openbsc/src/libmgcp/mgcp_network.c index abce6e4..799d998 100644 --- a/openbsc/src/libmgcp/mgcp_network.c +++ b/openbsc/src/libmgcp/mgcp_network.c @@ -580,6 +580,36 @@ return rc; } +void mgcp_dejitter_udp_send(struct msgb *msg, void *data) +{ + struct mgcp_rtp_end *rtp_end = (struct mgcp_rtp_end *) data; + + int rc = mgcp_udp_send(rtp_end->rtp.fd, &rtp_end->addr, + rtp_end->rtp_port, (char*) msg->data, msg->len); + if (rc != msg->len) + LOGP(DMGCP, LOGL_ERROR, + "Failed to send data after jitter buffer: %d\n", rc); + msgb_free(msg); +} + +static int enqueue_dejitter(struct osmo_jibuf *jb, struct mgcp_rtp_end *rtp_end, char *buf, int len) +{ + struct msgb *msg; + msg = msgb_alloc(len, "mgcp-jibuf"); + if (!msg) + return -1; + + memcpy(msg->data, buf, len); + msgb_put(msg, len); + + if (osmo_jibuf_enqueue(jb, msg) < 0) { + rtp_end->dropped_packets += 1; + msgb_free(msg); + } + + return len; +} + int mgcp_send(struct mgcp_endpoint *endp, int dest, int is_rtp, struct sockaddr_in *addr, char *buf, int rc) { @@ -587,6 +617,7 @@ struct mgcp_rtp_end *rtp_end; struct mgcp_rtp_state *rtp_state; int tap_idx; + struct osmo_jibuf *jb; /* For loop toggle the destination and then dispatch. */ if (tcfg->audio_loop) @@ -600,10 +631,12 @@ rtp_end = &endp->net_end; rtp_state = &endp->bts_state; tap_idx = MGCP_TAP_NET_OUT; + jb = endp->bts_jb; } else { rtp_end = &endp->bts_end; rtp_state = &endp->net_state; tap_idx = MGCP_TAP_BTS_OUT; + jb = NULL; } if (!rtp_end->output_enabled) @@ -621,9 +654,12 @@ mgcp_patch_and_count(endp, rtp_state, rtp_end, addr, buf, len); forward_data(rtp_end->rtp.fd, &endp->taps[tap_idx], buf, len); - rc = mgcp_udp_send(rtp_end->rtp.fd, - &rtp_end->addr, - rtp_end->rtp_port, buf, len); + if (jb) + rc = enqueue_dejitter(jb, rtp_end, buf, len); + else + rc = mgcp_udp_send(rtp_end->rtp.fd, + &rtp_end->addr, + rtp_end->rtp_port, buf, len); if (rc <= 0) return rc; diff --git a/openbsc/src/libmgcp/mgcp_protocol.c b/openbsc/src/libmgcp/mgcp_protocol.c index ae5c90b..84dbc1f 100644 --- a/openbsc/src/libmgcp/mgcp_protocol.c +++ b/openbsc/src/libmgcp/mgcp_protocol.c @@ -827,6 +827,12 @@ goto error2; } + /* Apply Jiter buffer settings for this endpoint, they can be overriden by CRCX policy later */ + endp->bts_use_jibuf = endp->cfg->bts_use_jibuf; + endp->bts_jitter_delay_min = endp->cfg->bts_jitter_delay_min; + endp->bts_jitter_delay_max = endp->cfg->bts_jitter_delay_max; + + endp->allocated = 1; /* set up RTP media parameters */ @@ -862,12 +868,27 @@ case MGCP_POLICY_DEFER: /* stop processing */ create_transcoder(endp); + /* Set up jitter buffer if required after policy has updated jibuf endp values */ + if (endp->bts_use_jibuf) { + endp->bts_jb = osmo_jibuf_alloc(tcfg->endpoints); + osmo_jibuf_set_min_delay(endp->bts_jb, endp->bts_jitter_delay_min); + osmo_jibuf_set_max_delay(endp->bts_jb, endp->bts_jitter_delay_max); + osmo_jibuf_set_dequeue_cb(endp->bts_jb, mgcp_dejitter_udp_send, &endp->net_end); + } return NULL; break; case MGCP_POLICY_CONT: /* just continue */ break; } + } + + /* Set up jitter buffer if required after policy has updated jibuf endp values */ + if (endp->bts_use_jibuf) { + endp->bts_jb = osmo_jibuf_alloc(tcfg->endpoints); + osmo_jibuf_set_min_delay(endp->bts_jb, endp->bts_jitter_delay_min); + osmo_jibuf_set_max_delay(endp->bts_jb, endp->bts_jitter_delay_max); + osmo_jibuf_set_dequeue_cb(endp->bts_jb, mgcp_dejitter_udp_send, &endp->net_end); } LOGP(DMGCP, LOGL_DEBUG, "Creating endpoint on: 0x%x CI: %u port: %u/%u\n", @@ -1333,6 +1354,9 @@ void mgcp_release_endp(struct mgcp_endpoint *endp) { LOGP(DMGCP, LOGL_DEBUG, "Releasing endpoint on: 0x%x\n", ENDPOINT_NUMBER(endp)); + if (endp->bts_jb) + osmo_jibuf_delete(endp->bts_jb); + endp->bts_jb = NULL; endp->ci = CI_UNUSED; endp->allocated = 0; diff --git a/openbsc/src/libmgcp/mgcp_vty.c b/openbsc/src/libmgcp/mgcp_vty.c index b97d7f8..6d1a7ac 100644 --- a/openbsc/src/libmgcp/mgcp_vty.c +++ b/openbsc/src/libmgcp/mgcp_vty.c @@ -29,6 +29,7 @@ #include #include +#include #define RTCP_OMIT_STR "Drop RTCP packets in both directions\n" #define RTP_PATCH_STR "Modify RTP packet header in both directions\n" @@ -164,6 +165,13 @@ vty_out(vty, " osmux dummy %s%s", g_cfg->osmux_dummy ? "on" : "off", VTY_NEWLINE); } + if (g_cfg->bts_use_jibuf) + vty_out(vty, " bts-jitter-buffer%s", VTY_NEWLINE); + if (g_cfg->bts_jitter_delay_min) + vty_out(vty, " bts-jitter-delay-min %"PRIu32"%s", g_cfg->bts_jitter_delay_min, VTY_NEWLINE); + if (g_cfg->bts_jitter_delay_max) + vty_out(vty, " bts-jitter-delay-max %"PRIu32"%s", g_cfg->bts_jitter_delay_max, VTY_NEWLINE); + return CMD_SUCCESS; } @@ -241,6 +249,11 @@ if (g_cfg->osmux) vty_out(vty, "Osmux used CID: %d%s", osmux_used_cid(), VTY_NEWLINE); + vty_out(vty, "Jitter Buffer by default on Uplink : %s%s", + g_cfg->bts_use_jibuf ? "on" : "off", VTY_NEWLINE); + if (g_cfg->bts_use_jibuf) + vty_out(vty, "Jitter Buffer delays: min=%"PRIu32" max=%"PRIu32"%s", + g_cfg->bts_jitter_delay_min, g_cfg->bts_jitter_delay_max, VTY_NEWLINE); return CMD_SUCCESS; } @@ -1333,6 +1346,63 @@ return CMD_SUCCESS; } +#define DEJITTER_STR "Uplink Jitter Buffer" +DEFUN(cfg_mgcp_bts_use_jibuf, + cfg_mgcp_bts_use_jibuf_cmd, + "bts-jitter-buffer", + DEJITTER_STR "\n") +{ + g_cfg->bts_use_jibuf = true; + return CMD_SUCCESS; +} + +DEFUN(cfg_mgcp_no_bts_use_jibuf, + cfg_mgcp_no_bts_use_jibuf_cmd, + "no bts-jitter-buffer", + NO_STR DEJITTER_STR "\n") +{ + g_cfg->bts_use_jibuf = false; + return CMD_SUCCESS; +} + +DEFUN(cfg_mgcp_bts_jitter_delay_min, + cfg_mgcp_bts_jitter_delay_min_cmd, + "bts-jitter-buffer-delay-min <1-65535>", + DEJITTER_STR " Minimum Delay in ms\n" "Minimum Delay in ms\n") +{ + g_cfg->bts_jitter_delay_min = atoi(argv[0]); + if (!g_cfg->bts_jitter_delay_min) { + vty_out(vty, "bts-jitter-buffer-delay-min cannot be zero.%s", VTY_NEWLINE); + return CMD_WARNING; + } + if (g_cfg->bts_jitter_delay_min && g_cfg->bts_jitter_delay_max && + g_cfg->bts_jitter_delay_min > g_cfg->bts_jitter_delay_max) { + vty_out(vty, "bts-jitter-buffer-delay-min cannot be bigger than " \ + "bts-jitter-buffer-delay-max.%s", VTY_NEWLINE); + return CMD_WARNING; + } + return CMD_SUCCESS; +} + +DEFUN(cfg_mgcp_bts_jitter_delay_max, + cfg_mgcp_bts_jitter_delay_max_cmd, + "bts-jitter-buffer-delay-max <1-65535>", + DEJITTER_STR " Maximum Delay in ms\n" "Maximum Delay in ms\n") +{ + g_cfg->bts_jitter_delay_max = atoi(argv[0]); + if (!g_cfg->bts_jitter_delay_max) { + vty_out(vty, "bts-jitter-buffer-delay-max cannot be zero.%s", VTY_NEWLINE); + return CMD_WARNING; + } + if (g_cfg->bts_jitter_delay_min && g_cfg->bts_jitter_delay_max && + g_cfg->bts_jitter_delay_min > g_cfg->bts_jitter_delay_max) { + vty_out(vty, "bts-jitter-buffer-delay-max cannot be smaller than " \ + "bts-jitter-buffer-delay-min.%s", VTY_NEWLINE); + return CMD_WARNING; + } + return CMD_SUCCESS; +} + int mgcp_vty_init(void) { install_element_ve(&show_mgcp_cmd); @@ -1399,6 +1469,10 @@ install_element(MGCP_NODE, &cfg_mgcp_osmux_dummy_cmd); install_element(MGCP_NODE, &cfg_mgcp_allow_transcoding_cmd); install_element(MGCP_NODE, &cfg_mgcp_no_allow_transcoding_cmd); + install_element(MGCP_NODE, &cfg_mgcp_bts_use_jibuf_cmd); + install_element(MGCP_NODE, &cfg_mgcp_no_bts_use_jibuf_cmd); + install_element(MGCP_NODE, &cfg_mgcp_bts_jitter_delay_min_cmd); + install_element(MGCP_NODE, &cfg_mgcp_bts_jitter_delay_max_cmd); install_element(MGCP_NODE, &cfg_mgcp_trunk_cmd); diff --git a/openbsc/src/osmo-bsc_nat/bsc_mgcp_utils.c b/openbsc/src/osmo-bsc_nat/bsc_mgcp_utils.c index 48847865..8cf4e94 100644 --- a/openbsc/src/osmo-bsc_nat/bsc_mgcp_utils.c +++ b/openbsc/src/osmo-bsc_nat/bsc_mgcp_utils.c @@ -585,6 +585,16 @@ if (state == MGCP_ENDP_CRCX) { struct sockaddr_in sock; + /* set up jitter buffer parameters */ + if (bsc_endp->bsc->cfg->bts_use_jibuf_override) + mgcp_endp->bts_use_jibuf = bsc_endp->bsc->cfg->bts_use_jibuf; + + if (bsc_endp->bsc->cfg->bts_jitter_delay_min_override) + mgcp_endp->bts_jitter_delay_min = bsc_endp->bsc->cfg->bts_jitter_delay_min; + + if (bsc_endp->bsc->cfg->bts_jitter_delay_max_override) + mgcp_endp->bts_jitter_delay_max = bsc_endp->bsc->cfg->bts_jitter_delay_max; + /* Annotate the allocated Osmux CID until the bsc confirms that * it agrees to use Osmux for this voice flow. */ diff --git a/openbsc/src/osmo-bsc_nat/bsc_nat_vty.c b/openbsc/src/osmo-bsc_nat/bsc_nat_vty.c index d4cef5d..e51de53 100644 --- a/openbsc/src/osmo-bsc_nat/bsc_nat_vty.c +++ b/openbsc/src/osmo-bsc_nat/bsc_nat_vty.c @@ -40,6 +40,7 @@ #include #include +#include static struct bsc_nat *_nat; @@ -173,6 +174,12 @@ vty_out(vty, " osmux only%s", VTY_NEWLINE); break; } + if (bsc->bts_use_jibuf_override) + vty_out(vty, " %sbts-jitter-buffer%s", bsc->bts_use_jibuf? "" : "no ", VTY_NEWLINE); + if (bsc->bts_jitter_delay_min_override) + vty_out(vty, " bts-jitter-delay-min %"PRIu32"%s", bsc->bts_jitter_delay_min, VTY_NEWLINE); + if (bsc->bts_jitter_delay_max_override) + vty_out(vty, " bts-jitter-delay-max %"PRIu32"%s", bsc->bts_jitter_delay_max, VTY_NEWLINE); } static int config_write_bsc(struct vty *vty) @@ -1231,6 +1238,71 @@ return CMD_SUCCESS; } +#define DEJITTER_STR "Uplink Jitter Buffer" +DEFUN(cfg_bsc_bts_use_jibuf, + cfg_bsc_bts_use_jibuf_cmd, + "bts-jitter-buffer", + DEJITTER_STR "\n") +{ + struct bsc_config *conf = vty->index; + conf->bts_use_jibuf = true; + conf->bts_use_jibuf_override = true; + return CMD_SUCCESS; +} + +DEFUN(cfg_bsc_no_bts_use_jibuf, + cfg_bsc_no_bts_use_jibuf_cmd, + "no bts-jitter-buffer", + NO_STR DEJITTER_STR "\n") +{ + struct bsc_config *conf = vty->index; + conf->bts_use_jibuf = false; + conf->bts_use_jibuf_override = true; + return CMD_SUCCESS; +} + +DEFUN(cfg_bsc_bts_jitter_delay_min, + cfg_bsc_bts_jitter_delay_min_cmd, + "bts-jitter-buffer-delay-min <1-65535>", + DEJITTER_STR " Minimum Delay in ms\n" "Minimum Delay in ms\n") +{ + struct bsc_config *conf = vty->index; + conf->bts_jitter_delay_min = atoi(argv[0]); + if (!conf->bts_jitter_delay_min) { + vty_out(vty, "bts-jitter-buffer-delay-min cannot be zero.%s", VTY_NEWLINE); + return CMD_WARNING; + } + if (conf->bts_jitter_delay_min && conf->bts_jitter_delay_max && + conf->bts_jitter_delay_min > conf->bts_jitter_delay_max) { + vty_out(vty, "bts-jitter-buffer-delay-min cannot be bigger than " \ + "bts-jitter-buffer-delay-max.%s", VTY_NEWLINE); + return CMD_WARNING; + } + conf->bts_jitter_delay_min_override = true; + return CMD_SUCCESS; +} + +DEFUN(cfg_bsc_bts_jitter_delay_max, + cfg_bsc_bts_jitter_delay_max_cmd, + "bts-jitter-buffer-delay-max <1-65535>", + DEJITTER_STR " Maximum Delay in ms\n" "Maximum Delay in ms\n") +{ + struct bsc_config *conf = vty->index; + conf->bts_jitter_delay_max = atoi(argv[0]); + if (!conf->bts_jitter_delay_max) { + vty_out(vty, "bts-jitter-buffer-delay-max cannot be zero.%s", VTY_NEWLINE); + return CMD_WARNING; + } + if (conf->bts_jitter_delay_min && conf->bts_jitter_delay_max && + conf->bts_jitter_delay_min > conf->bts_jitter_delay_max) { + vty_out(vty, "bts-jitter-buffer-delay-max cannot be smaller than " \ + "bts-jitter-buffer-delay-min.%s", VTY_NEWLINE); + return CMD_WARNING; + } + conf->bts_jitter_delay_max_override = true; + return CMD_SUCCESS; +} + int bsc_nat_vty_init(struct bsc_nat *nat) { _nat = nat; @@ -1318,6 +1390,10 @@ install_element(NAT_BSC_NODE, &cfg_bsc_paging_grp_cmd); install_element(NAT_BSC_NODE, &cfg_bsc_no_paging_grp_cmd); install_element(NAT_BSC_NODE, &cfg_bsc_osmux_cmd); + install_element(NAT_BSC_NODE, &cfg_bsc_bts_use_jibuf_cmd); + install_element(NAT_BSC_NODE, &cfg_bsc_no_bts_use_jibuf_cmd); + install_element(NAT_BSC_NODE, &cfg_bsc_bts_jitter_delay_min_cmd); + install_element(NAT_BSC_NODE, &cfg_bsc_bts_jitter_delay_max_cmd); mgcp_vty_init(); -- To view, visit https://gerrit.osmocom.org/7793 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newpatchset Gerrit-Change-Id: Ibf3932adc07442fb5e9c7a06404853f9d0a20959 Gerrit-PatchSet: 3 Gerrit-Project: openbsc Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Pau Espin Pedrol Gerrit-Reviewer: daniel From gerrit-no-reply at lists.osmocom.org Mon Apr 16 16:17:38 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Mon, 16 Apr 2018 16:17:38 +0000 Subject: osmo-ttcn3-hacks[master]: deps: Switch titan.ProtocolModules.SMPP back to upstream TITAN In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7835 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Ib171451af264aa675b173b5cad37f08bcd64fbc3 Gerrit-PatchSet: 1 Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Owner: Harald Welte Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Mon Apr 16 16:17:39 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Mon, 16 Apr 2018 16:17:39 +0000 Subject: [MERGED] osmo-ttcn3-hacks[master]: deps: Switch titan.ProtocolModules.SMPP back to upstream TITAN In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: deps: Switch titan.ProtocolModules.SMPP back to upstream TITAN ...................................................................... deps: Switch titan.ProtocolModules.SMPP back to upstream TITAN Our patch for SMPP AlertNotification was merged, so we can switch back to use upstream instead of our osmocom fork. Change-Id: Ib171451af264aa675b173b5cad37f08bcd64fbc3 --- M deps/Makefile 1 file changed, 2 insertions(+), 2 deletions(-) Approvals: Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/deps/Makefile b/deps/Makefile index d09d917..37e48e2 100644 --- a/deps/Makefile +++ b/deps/Makefile @@ -9,6 +9,7 @@ titan.ProtocolModules.IP \ titan.ProtocolModules.L2TP \ titan.ProtocolModules.M3UA \ + titan.ProtocolModules.SMPP \ titan.ProtocolModules.TCP \ titan.ProtocolModules.UDP \ titan.ProtocolModules.RTP \ @@ -42,7 +43,6 @@ OSMOGITHUB_REPOS= titan.TestPorts.SCTPasp \ titan.TestPorts.MTP3asp \ - titan.ProtocolModules.SMPP \ titan.ProtocolEmulations.M3UA ALL_REPOS=$(ECLIPSEGIT_REPOS) $(ECLIPSEGIT2_REPOS) $(OSMOGITHUB_REPOS) @@ -72,7 +72,7 @@ titan.ProtocolModules.RTP_commit= R.5.A titan.ProtocolModules.SCTP_commit= R.2.A titan.ProtocolModules.SDP_commit= R.14.A -titan.ProtocolModules.SMPP_commit= R.2.A-1-ge044a36 +titan.ProtocolModules.SMPP_commit= R.2.A-2-gb7aee69 titan.ProtocolModules.SNDCP_v7.0.0_commit= R.2.A titan.ProtocolModules.SUA_commit= R.5.A titan.ProtocolModules.TCP_commit= R.3.A -- To view, visit https://gerrit.osmocom.org/7835 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: Ib171451af264aa675b173b5cad37f08bcd64fbc3 Gerrit-PatchSet: 1 Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Owner: Harald Welte Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder From gerrit-no-reply at lists.osmocom.org Mon Apr 16 16:18:38 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Mon, 16 Apr 2018 16:18:38 +0000 Subject: openbsc[master]: nat: Add jitter buffer on the uplink receiver In-Reply-To: References: Message-ID: Patch Set 3: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7793 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Ibf3932adc07442fb5e9c7a06404853f9d0a20959 Gerrit-PatchSet: 3 Gerrit-Project: openbsc Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Pau Espin Pedrol Gerrit-Reviewer: daniel Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Mon Apr 16 16:18:41 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Mon, 16 Apr 2018 16:18:41 +0000 Subject: [MERGED] openbsc[master]: nat: Add jitter buffer on the uplink receiver In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: nat: Add jitter buffer on the uplink receiver ...................................................................... nat: Add jitter buffer on the uplink receiver Default usage values are defined in mgcp node, and can be per-BSC overriden on each bsc node. Change-Id: Ibf3932adc07442fb5e9c7a06404853f9d0a20959 --- M openbsc/include/openbsc/bsc_nat.h M openbsc/include/openbsc/mgcp.h M openbsc/include/openbsc/mgcp_internal.h M openbsc/src/libmgcp/mgcp_network.c M openbsc/src/libmgcp/mgcp_protocol.c M openbsc/src/libmgcp/mgcp_vty.c M openbsc/src/osmo-bsc_nat/bsc_mgcp_utils.c M openbsc/src/osmo-bsc_nat/bsc_nat_vty.c 8 files changed, 253 insertions(+), 3 deletions(-) Approvals: Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/openbsc/include/openbsc/bsc_nat.h b/openbsc/include/openbsc/bsc_nat.h index fad3804..5171c3e 100644 --- a/openbsc/include/openbsc/bsc_nat.h +++ b/openbsc/include/openbsc/bsc_nat.h @@ -175,6 +175,16 @@ /* Osmux is enabled/disabled per BSC */ int osmux; + + /* Use a jitterbuffer on the bts-side receiver */ + bool bts_use_jibuf; + /* Minimum and maximum buffer size for the jitter buffer, in ms */ + uint32_t bts_jitter_delay_min; + uint32_t bts_jitter_delay_max; + /* Enabled if explicitly configured through VTY: */ + bool bts_use_jibuf_override; + bool bts_jitter_delay_min_override; + bool bts_jitter_delay_max_override; }; struct bsc_lac_entry { diff --git a/openbsc/include/openbsc/mgcp.h b/openbsc/include/openbsc/mgcp.h index b2262bc..4d1c5ef 100644 --- a/openbsc/include/openbsc/mgcp.h +++ b/openbsc/include/openbsc/mgcp.h @@ -236,6 +236,12 @@ * message. */ uint16_t osmux_dummy; + + /* Use a jitterbuffer on the bts-side receiver */ + bool bts_use_jibuf; + /* Minimum and maximum buffer size for the jitter buffer, in ms */ + uint32_t bts_jitter_delay_min; + uint32_t bts_jitter_delay_max; }; /* config management */ diff --git a/openbsc/include/openbsc/mgcp_internal.h b/openbsc/include/openbsc/mgcp_internal.h index 7c89d10..cd6365f 100644 --- a/openbsc/include/openbsc/mgcp_internal.h +++ b/openbsc/include/openbsc/mgcp_internal.h @@ -25,6 +25,7 @@ #include #include +#include #define CI_UNUSED 0 @@ -205,6 +206,14 @@ uint32_t octets; } stats; } osmux; + + /* Jitter buffer */ + struct osmo_jibuf* bts_jb; + /* Use a jitterbuffer on the bts-side receiver */ + bool bts_use_jibuf; + /* Minimum and maximum buffer size for the jitter buffer, in ms */ + uint32_t bts_jitter_delay_min; + uint32_t bts_jitter_delay_max; }; #define for_each_line(line, save) \ @@ -340,3 +349,8 @@ return endp->cfg->bts_ports.bind_addr; return endp->cfg->source_addr; } + +/** + * Internal jitter buffer related + */ +void mgcp_dejitter_udp_send(struct msgb *msg, void *data); diff --git a/openbsc/src/libmgcp/mgcp_network.c b/openbsc/src/libmgcp/mgcp_network.c index abce6e4..799d998 100644 --- a/openbsc/src/libmgcp/mgcp_network.c +++ b/openbsc/src/libmgcp/mgcp_network.c @@ -580,6 +580,36 @@ return rc; } +void mgcp_dejitter_udp_send(struct msgb *msg, void *data) +{ + struct mgcp_rtp_end *rtp_end = (struct mgcp_rtp_end *) data; + + int rc = mgcp_udp_send(rtp_end->rtp.fd, &rtp_end->addr, + rtp_end->rtp_port, (char*) msg->data, msg->len); + if (rc != msg->len) + LOGP(DMGCP, LOGL_ERROR, + "Failed to send data after jitter buffer: %d\n", rc); + msgb_free(msg); +} + +static int enqueue_dejitter(struct osmo_jibuf *jb, struct mgcp_rtp_end *rtp_end, char *buf, int len) +{ + struct msgb *msg; + msg = msgb_alloc(len, "mgcp-jibuf"); + if (!msg) + return -1; + + memcpy(msg->data, buf, len); + msgb_put(msg, len); + + if (osmo_jibuf_enqueue(jb, msg) < 0) { + rtp_end->dropped_packets += 1; + msgb_free(msg); + } + + return len; +} + int mgcp_send(struct mgcp_endpoint *endp, int dest, int is_rtp, struct sockaddr_in *addr, char *buf, int rc) { @@ -587,6 +617,7 @@ struct mgcp_rtp_end *rtp_end; struct mgcp_rtp_state *rtp_state; int tap_idx; + struct osmo_jibuf *jb; /* For loop toggle the destination and then dispatch. */ if (tcfg->audio_loop) @@ -600,10 +631,12 @@ rtp_end = &endp->net_end; rtp_state = &endp->bts_state; tap_idx = MGCP_TAP_NET_OUT; + jb = endp->bts_jb; } else { rtp_end = &endp->bts_end; rtp_state = &endp->net_state; tap_idx = MGCP_TAP_BTS_OUT; + jb = NULL; } if (!rtp_end->output_enabled) @@ -621,9 +654,12 @@ mgcp_patch_and_count(endp, rtp_state, rtp_end, addr, buf, len); forward_data(rtp_end->rtp.fd, &endp->taps[tap_idx], buf, len); - rc = mgcp_udp_send(rtp_end->rtp.fd, - &rtp_end->addr, - rtp_end->rtp_port, buf, len); + if (jb) + rc = enqueue_dejitter(jb, rtp_end, buf, len); + else + rc = mgcp_udp_send(rtp_end->rtp.fd, + &rtp_end->addr, + rtp_end->rtp_port, buf, len); if (rc <= 0) return rc; diff --git a/openbsc/src/libmgcp/mgcp_protocol.c b/openbsc/src/libmgcp/mgcp_protocol.c index ae5c90b..84dbc1f 100644 --- a/openbsc/src/libmgcp/mgcp_protocol.c +++ b/openbsc/src/libmgcp/mgcp_protocol.c @@ -827,6 +827,12 @@ goto error2; } + /* Apply Jiter buffer settings for this endpoint, they can be overriden by CRCX policy later */ + endp->bts_use_jibuf = endp->cfg->bts_use_jibuf; + endp->bts_jitter_delay_min = endp->cfg->bts_jitter_delay_min; + endp->bts_jitter_delay_max = endp->cfg->bts_jitter_delay_max; + + endp->allocated = 1; /* set up RTP media parameters */ @@ -862,12 +868,27 @@ case MGCP_POLICY_DEFER: /* stop processing */ create_transcoder(endp); + /* Set up jitter buffer if required after policy has updated jibuf endp values */ + if (endp->bts_use_jibuf) { + endp->bts_jb = osmo_jibuf_alloc(tcfg->endpoints); + osmo_jibuf_set_min_delay(endp->bts_jb, endp->bts_jitter_delay_min); + osmo_jibuf_set_max_delay(endp->bts_jb, endp->bts_jitter_delay_max); + osmo_jibuf_set_dequeue_cb(endp->bts_jb, mgcp_dejitter_udp_send, &endp->net_end); + } return NULL; break; case MGCP_POLICY_CONT: /* just continue */ break; } + } + + /* Set up jitter buffer if required after policy has updated jibuf endp values */ + if (endp->bts_use_jibuf) { + endp->bts_jb = osmo_jibuf_alloc(tcfg->endpoints); + osmo_jibuf_set_min_delay(endp->bts_jb, endp->bts_jitter_delay_min); + osmo_jibuf_set_max_delay(endp->bts_jb, endp->bts_jitter_delay_max); + osmo_jibuf_set_dequeue_cb(endp->bts_jb, mgcp_dejitter_udp_send, &endp->net_end); } LOGP(DMGCP, LOGL_DEBUG, "Creating endpoint on: 0x%x CI: %u port: %u/%u\n", @@ -1333,6 +1354,9 @@ void mgcp_release_endp(struct mgcp_endpoint *endp) { LOGP(DMGCP, LOGL_DEBUG, "Releasing endpoint on: 0x%x\n", ENDPOINT_NUMBER(endp)); + if (endp->bts_jb) + osmo_jibuf_delete(endp->bts_jb); + endp->bts_jb = NULL; endp->ci = CI_UNUSED; endp->allocated = 0; diff --git a/openbsc/src/libmgcp/mgcp_vty.c b/openbsc/src/libmgcp/mgcp_vty.c index b97d7f8..6d1a7ac 100644 --- a/openbsc/src/libmgcp/mgcp_vty.c +++ b/openbsc/src/libmgcp/mgcp_vty.c @@ -29,6 +29,7 @@ #include #include +#include #define RTCP_OMIT_STR "Drop RTCP packets in both directions\n" #define RTP_PATCH_STR "Modify RTP packet header in both directions\n" @@ -164,6 +165,13 @@ vty_out(vty, " osmux dummy %s%s", g_cfg->osmux_dummy ? "on" : "off", VTY_NEWLINE); } + if (g_cfg->bts_use_jibuf) + vty_out(vty, " bts-jitter-buffer%s", VTY_NEWLINE); + if (g_cfg->bts_jitter_delay_min) + vty_out(vty, " bts-jitter-delay-min %"PRIu32"%s", g_cfg->bts_jitter_delay_min, VTY_NEWLINE); + if (g_cfg->bts_jitter_delay_max) + vty_out(vty, " bts-jitter-delay-max %"PRIu32"%s", g_cfg->bts_jitter_delay_max, VTY_NEWLINE); + return CMD_SUCCESS; } @@ -241,6 +249,11 @@ if (g_cfg->osmux) vty_out(vty, "Osmux used CID: %d%s", osmux_used_cid(), VTY_NEWLINE); + vty_out(vty, "Jitter Buffer by default on Uplink : %s%s", + g_cfg->bts_use_jibuf ? "on" : "off", VTY_NEWLINE); + if (g_cfg->bts_use_jibuf) + vty_out(vty, "Jitter Buffer delays: min=%"PRIu32" max=%"PRIu32"%s", + g_cfg->bts_jitter_delay_min, g_cfg->bts_jitter_delay_max, VTY_NEWLINE); return CMD_SUCCESS; } @@ -1333,6 +1346,63 @@ return CMD_SUCCESS; } +#define DEJITTER_STR "Uplink Jitter Buffer" +DEFUN(cfg_mgcp_bts_use_jibuf, + cfg_mgcp_bts_use_jibuf_cmd, + "bts-jitter-buffer", + DEJITTER_STR "\n") +{ + g_cfg->bts_use_jibuf = true; + return CMD_SUCCESS; +} + +DEFUN(cfg_mgcp_no_bts_use_jibuf, + cfg_mgcp_no_bts_use_jibuf_cmd, + "no bts-jitter-buffer", + NO_STR DEJITTER_STR "\n") +{ + g_cfg->bts_use_jibuf = false; + return CMD_SUCCESS; +} + +DEFUN(cfg_mgcp_bts_jitter_delay_min, + cfg_mgcp_bts_jitter_delay_min_cmd, + "bts-jitter-buffer-delay-min <1-65535>", + DEJITTER_STR " Minimum Delay in ms\n" "Minimum Delay in ms\n") +{ + g_cfg->bts_jitter_delay_min = atoi(argv[0]); + if (!g_cfg->bts_jitter_delay_min) { + vty_out(vty, "bts-jitter-buffer-delay-min cannot be zero.%s", VTY_NEWLINE); + return CMD_WARNING; + } + if (g_cfg->bts_jitter_delay_min && g_cfg->bts_jitter_delay_max && + g_cfg->bts_jitter_delay_min > g_cfg->bts_jitter_delay_max) { + vty_out(vty, "bts-jitter-buffer-delay-min cannot be bigger than " \ + "bts-jitter-buffer-delay-max.%s", VTY_NEWLINE); + return CMD_WARNING; + } + return CMD_SUCCESS; +} + +DEFUN(cfg_mgcp_bts_jitter_delay_max, + cfg_mgcp_bts_jitter_delay_max_cmd, + "bts-jitter-buffer-delay-max <1-65535>", + DEJITTER_STR " Maximum Delay in ms\n" "Maximum Delay in ms\n") +{ + g_cfg->bts_jitter_delay_max = atoi(argv[0]); + if (!g_cfg->bts_jitter_delay_max) { + vty_out(vty, "bts-jitter-buffer-delay-max cannot be zero.%s", VTY_NEWLINE); + return CMD_WARNING; + } + if (g_cfg->bts_jitter_delay_min && g_cfg->bts_jitter_delay_max && + g_cfg->bts_jitter_delay_min > g_cfg->bts_jitter_delay_max) { + vty_out(vty, "bts-jitter-buffer-delay-max cannot be smaller than " \ + "bts-jitter-buffer-delay-min.%s", VTY_NEWLINE); + return CMD_WARNING; + } + return CMD_SUCCESS; +} + int mgcp_vty_init(void) { install_element_ve(&show_mgcp_cmd); @@ -1399,6 +1469,10 @@ install_element(MGCP_NODE, &cfg_mgcp_osmux_dummy_cmd); install_element(MGCP_NODE, &cfg_mgcp_allow_transcoding_cmd); install_element(MGCP_NODE, &cfg_mgcp_no_allow_transcoding_cmd); + install_element(MGCP_NODE, &cfg_mgcp_bts_use_jibuf_cmd); + install_element(MGCP_NODE, &cfg_mgcp_no_bts_use_jibuf_cmd); + install_element(MGCP_NODE, &cfg_mgcp_bts_jitter_delay_min_cmd); + install_element(MGCP_NODE, &cfg_mgcp_bts_jitter_delay_max_cmd); install_element(MGCP_NODE, &cfg_mgcp_trunk_cmd); diff --git a/openbsc/src/osmo-bsc_nat/bsc_mgcp_utils.c b/openbsc/src/osmo-bsc_nat/bsc_mgcp_utils.c index 48847865..8cf4e94 100644 --- a/openbsc/src/osmo-bsc_nat/bsc_mgcp_utils.c +++ b/openbsc/src/osmo-bsc_nat/bsc_mgcp_utils.c @@ -585,6 +585,16 @@ if (state == MGCP_ENDP_CRCX) { struct sockaddr_in sock; + /* set up jitter buffer parameters */ + if (bsc_endp->bsc->cfg->bts_use_jibuf_override) + mgcp_endp->bts_use_jibuf = bsc_endp->bsc->cfg->bts_use_jibuf; + + if (bsc_endp->bsc->cfg->bts_jitter_delay_min_override) + mgcp_endp->bts_jitter_delay_min = bsc_endp->bsc->cfg->bts_jitter_delay_min; + + if (bsc_endp->bsc->cfg->bts_jitter_delay_max_override) + mgcp_endp->bts_jitter_delay_max = bsc_endp->bsc->cfg->bts_jitter_delay_max; + /* Annotate the allocated Osmux CID until the bsc confirms that * it agrees to use Osmux for this voice flow. */ diff --git a/openbsc/src/osmo-bsc_nat/bsc_nat_vty.c b/openbsc/src/osmo-bsc_nat/bsc_nat_vty.c index d4cef5d..e51de53 100644 --- a/openbsc/src/osmo-bsc_nat/bsc_nat_vty.c +++ b/openbsc/src/osmo-bsc_nat/bsc_nat_vty.c @@ -40,6 +40,7 @@ #include #include +#include static struct bsc_nat *_nat; @@ -173,6 +174,12 @@ vty_out(vty, " osmux only%s", VTY_NEWLINE); break; } + if (bsc->bts_use_jibuf_override) + vty_out(vty, " %sbts-jitter-buffer%s", bsc->bts_use_jibuf? "" : "no ", VTY_NEWLINE); + if (bsc->bts_jitter_delay_min_override) + vty_out(vty, " bts-jitter-delay-min %"PRIu32"%s", bsc->bts_jitter_delay_min, VTY_NEWLINE); + if (bsc->bts_jitter_delay_max_override) + vty_out(vty, " bts-jitter-delay-max %"PRIu32"%s", bsc->bts_jitter_delay_max, VTY_NEWLINE); } static int config_write_bsc(struct vty *vty) @@ -1231,6 +1238,71 @@ return CMD_SUCCESS; } +#define DEJITTER_STR "Uplink Jitter Buffer" +DEFUN(cfg_bsc_bts_use_jibuf, + cfg_bsc_bts_use_jibuf_cmd, + "bts-jitter-buffer", + DEJITTER_STR "\n") +{ + struct bsc_config *conf = vty->index; + conf->bts_use_jibuf = true; + conf->bts_use_jibuf_override = true; + return CMD_SUCCESS; +} + +DEFUN(cfg_bsc_no_bts_use_jibuf, + cfg_bsc_no_bts_use_jibuf_cmd, + "no bts-jitter-buffer", + NO_STR DEJITTER_STR "\n") +{ + struct bsc_config *conf = vty->index; + conf->bts_use_jibuf = false; + conf->bts_use_jibuf_override = true; + return CMD_SUCCESS; +} + +DEFUN(cfg_bsc_bts_jitter_delay_min, + cfg_bsc_bts_jitter_delay_min_cmd, + "bts-jitter-buffer-delay-min <1-65535>", + DEJITTER_STR " Minimum Delay in ms\n" "Minimum Delay in ms\n") +{ + struct bsc_config *conf = vty->index; + conf->bts_jitter_delay_min = atoi(argv[0]); + if (!conf->bts_jitter_delay_min) { + vty_out(vty, "bts-jitter-buffer-delay-min cannot be zero.%s", VTY_NEWLINE); + return CMD_WARNING; + } + if (conf->bts_jitter_delay_min && conf->bts_jitter_delay_max && + conf->bts_jitter_delay_min > conf->bts_jitter_delay_max) { + vty_out(vty, "bts-jitter-buffer-delay-min cannot be bigger than " \ + "bts-jitter-buffer-delay-max.%s", VTY_NEWLINE); + return CMD_WARNING; + } + conf->bts_jitter_delay_min_override = true; + return CMD_SUCCESS; +} + +DEFUN(cfg_bsc_bts_jitter_delay_max, + cfg_bsc_bts_jitter_delay_max_cmd, + "bts-jitter-buffer-delay-max <1-65535>", + DEJITTER_STR " Maximum Delay in ms\n" "Maximum Delay in ms\n") +{ + struct bsc_config *conf = vty->index; + conf->bts_jitter_delay_max = atoi(argv[0]); + if (!conf->bts_jitter_delay_max) { + vty_out(vty, "bts-jitter-buffer-delay-max cannot be zero.%s", VTY_NEWLINE); + return CMD_WARNING; + } + if (conf->bts_jitter_delay_min && conf->bts_jitter_delay_max && + conf->bts_jitter_delay_min > conf->bts_jitter_delay_max) { + vty_out(vty, "bts-jitter-buffer-delay-max cannot be smaller than " \ + "bts-jitter-buffer-delay-min.%s", VTY_NEWLINE); + return CMD_WARNING; + } + conf->bts_jitter_delay_max_override = true; + return CMD_SUCCESS; +} + int bsc_nat_vty_init(struct bsc_nat *nat) { _nat = nat; @@ -1318,6 +1390,10 @@ install_element(NAT_BSC_NODE, &cfg_bsc_paging_grp_cmd); install_element(NAT_BSC_NODE, &cfg_bsc_no_paging_grp_cmd); install_element(NAT_BSC_NODE, &cfg_bsc_osmux_cmd); + install_element(NAT_BSC_NODE, &cfg_bsc_bts_use_jibuf_cmd); + install_element(NAT_BSC_NODE, &cfg_bsc_no_bts_use_jibuf_cmd); + install_element(NAT_BSC_NODE, &cfg_bsc_bts_jitter_delay_min_cmd); + install_element(NAT_BSC_NODE, &cfg_bsc_bts_jitter_delay_max_cmd); mgcp_vty_init(); -- To view, visit https://gerrit.osmocom.org/7793 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: Ibf3932adc07442fb5e9c7a06404853f9d0a20959 Gerrit-PatchSet: 4 Gerrit-Project: openbsc Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Pau Espin Pedrol Gerrit-Reviewer: daniel From gerrit-no-reply at lists.osmocom.org Mon Apr 16 16:19:01 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Mon, 16 Apr 2018 16:19:01 +0000 Subject: [MERGED] osmo-gsm-tester[master]: contrib: build-osm-bts-sysmo: openbsc dep no longer needed In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: contrib: build-osm-bts-sysmo: openbsc dep no longer needed ...................................................................... contrib: build-osm-bts-sysmo: openbsc dep no longer needed Change-Id: Iafd5ee1df001719ff6165ada996359b92116671e --- M contrib/jenkins-build-osmo-bts-sysmo.sh 1 file changed, 0 insertions(+), 3 deletions(-) Approvals: Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/contrib/jenkins-build-osmo-bts-sysmo.sh b/contrib/jenkins-build-osmo-bts-sysmo.sh index 98f8249..afce771 100755 --- a/contrib/jenkins-build-osmo-bts-sysmo.sh +++ b/contrib/jenkins-build-osmo-bts-sysmo.sh @@ -18,9 +18,6 @@ prefix_real="$DESTDIR$prefix" . "$(dirname "$0")/jenkins-build-common.sh" -# for gsm_data_shared.h -have_repo openbsc - build_repo libosmocore --disable-pcsc --disable-doxygen --disable-gnutls build_repo libosmo-abis build_repo osmo-bts --enable-sysmocom-bts --with-openbsc=$base/openbsc/openbsc/include -- To view, visit https://gerrit.osmocom.org/7831 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: Iafd5ee1df001719ff6165ada996359b92116671e Gerrit-PatchSet: 2 Gerrit-Project: osmo-gsm-tester Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder From gerrit-no-reply at lists.osmocom.org Mon Apr 16 16:19:02 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Mon, 16 Apr 2018 16:19:02 +0000 Subject: [MERGED] osmo-gsm-tester[master]: contrib: Enable address-sanitize in builds In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: contrib: Enable address-sanitize in builds ...................................................................... contrib: Enable address-sanitize in builds Don't enable it for binaries built with sysmocom's cross-toolchain since it doesn't contain required libasan. Also, don't enable it on openbsc since we don't have an enable-sanitize flag there. Change-Id: Ibef6c2fc497bce0d799116a854a48872f9ca16d7 --- M contrib/jenkins-build-osmo-bsc.sh M contrib/jenkins-build-osmo-bts.sh M contrib/jenkins-build-osmo-ggsn.sh M contrib/jenkins-build-osmo-hlr.sh M contrib/jenkins-build-osmo-mgw.sh M contrib/jenkins-build-osmo-msc.sh M contrib/jenkins-build-osmo-pcu.sh M contrib/jenkins-build-osmo-sgsn.sh M contrib/jenkins-build-osmo-stp.sh M contrib/jenkins-build-osmo-trx.sh 10 files changed, 38 insertions(+), 38 deletions(-) Approvals: Pau Espin Pedrol: Verified Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/contrib/jenkins-build-osmo-bsc.sh b/contrib/jenkins-build-osmo-bsc.sh index 28a1f5e..73e71e5 100755 --- a/contrib/jenkins-build-osmo-bsc.sh +++ b/contrib/jenkins-build-osmo-bsc.sh @@ -4,11 +4,11 @@ name="osmo-bsc" . "$(dirname "$0")/jenkins-build-common.sh" -build_repo libosmocore --disable-doxygen -build_repo libosmo-abis -build_repo libosmo-netif --disable-doxygen -build_repo libosmo-sccp -build_repo osmo-mgw -build_repo osmo-bsc +build_repo libosmocore --enable-sanitize --disable-doxygen +build_repo libosmo-abis --enable-sanitize +build_repo libosmo-netif --enable-sanitize --disable-doxygen +build_repo libosmo-sccp --enable-sanitize +build_repo osmo-mgw --enable-sanitize +build_repo osmo-bsc --enable-sanitize create_bin_tgz osmo-bsc abisip-find ipaccess-config diff --git a/contrib/jenkins-build-osmo-bts.sh b/contrib/jenkins-build-osmo-bts.sh index 462bce0..b40c613 100755 --- a/contrib/jenkins-build-osmo-bts.sh +++ b/contrib/jenkins-build-osmo-bts.sh @@ -6,8 +6,8 @@ have_repo octphy-2g-headers -build_repo libosmocore --disable-doxygen -build_repo libosmo-abis -build_repo osmo-bts --enable-trx --with-openbsc=$base/openbsc/openbsc/include --enable-octphy --with-octsdr-2g=$base/octphy-2g-headers +build_repo libosmocore --enable-sanitize --disable-doxygen +build_repo libosmo-abis --enable-sanitize +build_repo osmo-bts --enable-sanitize --enable-trx --with-openbsc=$base/openbsc/openbsc/include --enable-octphy --with-octsdr-2g=$base/octphy-2g-headers create_bin_tgz osmo-bts-trx osmo-bts-octphy diff --git a/contrib/jenkins-build-osmo-ggsn.sh b/contrib/jenkins-build-osmo-ggsn.sh index a46c3aa..a2cf952 100755 --- a/contrib/jenkins-build-osmo-ggsn.sh +++ b/contrib/jenkins-build-osmo-ggsn.sh @@ -4,7 +4,7 @@ name="osmo-ggsn" . "$(dirname "$0")/jenkins-build-common.sh" -build_repo libosmocore --disable-doxygen -build_repo osmo-ggsn +build_repo libosmocore --enable-sanitize --disable-doxygen +build_repo osmo-ggsn --enable-sanitize create_bin_tgz osmo-ggsn diff --git a/contrib/jenkins-build-osmo-hlr.sh b/contrib/jenkins-build-osmo-hlr.sh index 460e9d6..3229e52 100755 --- a/contrib/jenkins-build-osmo-hlr.sh +++ b/contrib/jenkins-build-osmo-hlr.sh @@ -4,8 +4,8 @@ name="osmo-hlr" . "$(dirname "$0")/jenkins-build-common.sh" -build_repo libosmocore --disable-doxygen -build_repo libosmo-abis -build_repo osmo-hlr +build_repo libosmocore --enable-sanitize --disable-doxygen +build_repo libosmo-abis --enable-sanitize +build_repo osmo-hlr --enable-sanitize create_bin_tgz osmo-hlr diff --git a/contrib/jenkins-build-osmo-mgw.sh b/contrib/jenkins-build-osmo-mgw.sh index 1bc7b76..d4ff0b9 100755 --- a/contrib/jenkins-build-osmo-mgw.sh +++ b/contrib/jenkins-build-osmo-mgw.sh @@ -4,9 +4,9 @@ name="osmo-mgw" . "$(dirname "$0")/jenkins-build-common.sh" -build_repo libosmocore --disable-doxygen -build_repo libosmo-abis -build_repo libosmo-netif --disable-doxygen -build_repo osmo-mgw +build_repo libosmocore --enable-sanitize --disable-doxygen +build_repo libosmo-abis --enable-sanitize +build_repo libosmo-netif --enable-sanitize --disable-doxygen +build_repo osmo-mgw --enable-sanitize create_bin_tgz osmo-bsc_mgcp osmo-mgw diff --git a/contrib/jenkins-build-osmo-msc.sh b/contrib/jenkins-build-osmo-msc.sh index c0faf78..28d327b 100755 --- a/contrib/jenkins-build-osmo-msc.sh +++ b/contrib/jenkins-build-osmo-msc.sh @@ -4,12 +4,12 @@ name="osmo-msc" . "$(dirname "$0")/jenkins-build-common.sh" -build_repo libosmocore --disable-doxygen -build_repo libosmo-abis -build_repo libosmo-netif --disable-doxygen -build_repo libsmpp34 -build_repo libosmo-sccp -build_repo osmo-mgw -build_repo osmo-msc --enable-smpp --disable-iu +build_repo libosmocore --enable-sanitize --disable-doxygen +build_repo libosmo-abis --enable-sanitize +build_repo libosmo-netif --enable-sanitize --disable-doxygen +build_repo libsmpp34 --enable-sanitize +build_repo libosmo-sccp --enable-sanitize +build_repo osmo-mgw --enable-sanitize +build_repo osmo-msc --enable-sanitize --enable-smpp --disable-iu create_bin_tgz osmo-msc diff --git a/contrib/jenkins-build-osmo-pcu.sh b/contrib/jenkins-build-osmo-pcu.sh index 4d4277f..3d3fdd0 100755 --- a/contrib/jenkins-build-osmo-pcu.sh +++ b/contrib/jenkins-build-osmo-pcu.sh @@ -4,7 +4,7 @@ name="osmo-pcu" . "$(dirname "$0")/jenkins-build-common.sh" -build_repo libosmocore --disable-pcsc --disable-doxygen -build_repo osmo-pcu +build_repo libosmocore --enable-sanitize --disable-pcsc --disable-doxygen +build_repo osmo-pcu --enable-sanitize create_bin_tgz osmo-pcu diff --git a/contrib/jenkins-build-osmo-sgsn.sh b/contrib/jenkins-build-osmo-sgsn.sh index 45fae5e..4a23b33 100755 --- a/contrib/jenkins-build-osmo-sgsn.sh +++ b/contrib/jenkins-build-osmo-sgsn.sh @@ -4,11 +4,11 @@ name="osmo-sgsn" . "$(dirname "$0")/jenkins-build-common.sh" -build_repo libosmocore --disable-doxygen -build_repo libosmo-abis -build_repo libosmo-netif --disable-doxygen -build_repo libosmo-sccp -build_repo osmo-ggsn -build_repo osmo-sgsn --disable-iu +build_repo libosmocore --enable-sanitize --disable-doxygen +build_repo libosmo-abis --enable-sanitize +build_repo libosmo-netif --enable-sanitize --disable-doxygen +build_repo libosmo-sccp --enable-sanitize +build_repo osmo-ggsn --enable-sanitize +build_repo osmo-sgsn --enable-sanitize --disable-iu create_bin_tgz osmo-sgsn diff --git a/contrib/jenkins-build-osmo-stp.sh b/contrib/jenkins-build-osmo-stp.sh index 86cbe3d..985b090 100755 --- a/contrib/jenkins-build-osmo-stp.sh +++ b/contrib/jenkins-build-osmo-stp.sh @@ -4,9 +4,9 @@ name="osmo-stp" . "$(dirname "$0")/jenkins-build-common.sh" -build_repo libosmocore --disable-doxygen -build_repo libosmo-abis -build_repo libosmo-netif --disable-doxygen -build_repo libosmo-sccp +build_repo libosmocore --enable-sanitize --disable-doxygen +build_repo libosmo-abis --enable-sanitize +build_repo libosmo-netif --enable-sanitize --disable-doxygen +build_repo libosmo-sccp --enable-sanitize create_bin_tgz osmo-stp diff --git a/contrib/jenkins-build-osmo-trx.sh b/contrib/jenkins-build-osmo-trx.sh index 194266f..33eb07d 100755 --- a/contrib/jenkins-build-osmo-trx.sh +++ b/contrib/jenkins-build-osmo-trx.sh @@ -4,7 +4,7 @@ name="osmo-trx" . "$(dirname "$0")/jenkins-build-common.sh" -build_repo libosmocore --disable-doxygen +build_repo libosmocore --enable-sanitize --disable-doxygen build_repo osmo-trx --without-sse create_bin_tgz osmo-trx -- To view, visit https://gerrit.osmocom.org/7830 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: Ibef6c2fc497bce0d799116a854a48872f9ca16d7 Gerrit-PatchSet: 2 Gerrit-Project: osmo-gsm-tester Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Pau Espin Pedrol From gerrit-no-reply at lists.osmocom.org Mon Apr 16 16:19:17 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Mon, 16 Apr 2018 16:19:17 +0000 Subject: osmo-bsc[master]: Cosmetic: Fix typo: Siganlling->Signalling In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7819 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I92b39eebfba396ee7690e99de09ee20593b7139d Gerrit-PatchSet: 1 Gerrit-Project: osmo-bsc Gerrit-Branch: master Gerrit-Owner: Keith Whyte Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Pau Espin Pedrol Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Mon Apr 16 16:19:19 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Mon, 16 Apr 2018 16:19:19 +0000 Subject: [MERGED] osmo-bsc[master]: Cosmetic: Fix typo: Siganlling->Signalling In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: Cosmetic: Fix typo: Siganlling->Signalling ...................................................................... Cosmetic: Fix typo: Siganlling->Signalling Change-Id: I92b39eebfba396ee7690e99de09ee20593b7139d --- M src/osmo-bsc/osmo_bsc_main.c M tests/handover/handover_test.c 2 files changed, 2 insertions(+), 2 deletions(-) Approvals: Pau Espin Pedrol: Looks good to me, but someone else must approve Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/src/osmo-bsc/osmo_bsc_main.c b/src/osmo-bsc/osmo_bsc_main.c index 89d0d02..db6bcdb 100644 --- a/src/osmo-bsc/osmo_bsc_main.c +++ b/src/osmo-bsc/osmo_bsc_main.c @@ -305,7 +305,7 @@ }, [DRSL] = { .name = "DRSL", - .description = "A-bis Radio Siganlling Link (RSL)", + .description = "A-bis Radio Signalling Link (RSL)", .color = "\033[1;35m", .enabled = 1, .loglevel = LOGL_NOTICE, }, diff --git a/tests/handover/handover_test.c b/tests/handover/handover_test.c index ab32a29..82afbe5 100644 --- a/tests/handover/handover_test.c +++ b/tests/handover/handover_test.c @@ -1323,7 +1323,7 @@ }, [DRSL] = { .name = "DRSL", - .description = "A-bis Radio Siganlling Link (RSL)", + .description = "A-bis Radio Signalling Link (RSL)", .color = "\033[1;35m", .enabled = 1, .loglevel = LOGL_DEBUG, }, -- To view, visit https://gerrit.osmocom.org/7819 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: I92b39eebfba396ee7690e99de09ee20593b7139d Gerrit-PatchSet: 2 Gerrit-Project: osmo-bsc Gerrit-Branch: master Gerrit-Owner: Keith Whyte Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Pau Espin Pedrol From gerrit-no-reply at lists.osmocom.org Mon Apr 16 16:34:27 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Mon, 16 Apr 2018 16:34:27 +0000 Subject: [MERGED] osmo-gsm-tester[master]: contrib: build-osmo-trx: Enable addr sanitize for osmo-trx In-Reply-To: References: Message-ID: Pau Espin Pedrol has submitted this change and it was merged. Change subject: contrib: build-osmo-trx: Enable addr sanitize for osmo-trx ...................................................................... contrib: build-osmo-trx: Enable addr sanitize for osmo-trx Change-Id: Iad90c7c8c2098680276de000c36bec0224f9746d --- M contrib/jenkins-build-osmo-trx.sh 1 file changed, 1 insertion(+), 1 deletion(-) Approvals: Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/contrib/jenkins-build-osmo-trx.sh b/contrib/jenkins-build-osmo-trx.sh index 33eb07d..480c787 100755 --- a/contrib/jenkins-build-osmo-trx.sh +++ b/contrib/jenkins-build-osmo-trx.sh @@ -5,6 +5,6 @@ . "$(dirname "$0")/jenkins-build-common.sh" build_repo libosmocore --enable-sanitize --disable-doxygen -build_repo osmo-trx --without-sse +build_repo osmo-trx --enable-sanitize --without-sse create_bin_tgz osmo-trx -- To view, visit https://gerrit.osmocom.org/7832 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: Iad90c7c8c2098680276de000c36bec0224f9746d Gerrit-PatchSet: 2 Gerrit-Project: osmo-gsm-tester Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Pau Espin Pedrol From gerrit-no-reply at lists.osmocom.org Mon Apr 16 18:59:55 2018 From: gerrit-no-reply at lists.osmocom.org (Vadim Yanitskiy) Date: Mon, 16 Apr 2018 18:59:55 +0000 Subject: [MERGED] osmocom-bb[master]: VIRT_PHY: add missing L1CTL_BURST_IND to l1ctlPrimNames In-Reply-To: References: Message-ID: Vadim Yanitskiy has submitted this change and it was merged. Change subject: VIRT_PHY: add missing L1CTL_BURST_IND to l1ctlPrimNames ...................................................................... VIRT_PHY: add missing L1CTL_BURST_IND to l1ctlPrimNames Change-Id: I442305c034bbba5eaed080fb262a61895623eb4f --- M src/host/virt_phy/src/logging.c 1 file changed, 1 insertion(+), 0 deletions(-) Approvals: Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/src/host/virt_phy/src/logging.c b/src/host/virt_phy/src/logging.c index 631a6e6..a3e63bc 100644 --- a/src/host/virt_phy/src/logging.c +++ b/src/host/virt_phy/src/logging.c @@ -57,6 +57,7 @@ "L1CTL_TRAFFIC_REQ", "L1CTL_TRAFFIC_CONF", "L1CTL_TRAFFIC_IND", + "L1CTL_BURST_IND", "L1CTL_TBF_CFG_REQ", "L1CTL_TBF_CFG_CONF", "L1CTL_DATA_TBF_REQ", -- To view, visit https://gerrit.osmocom.org/7808 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: I442305c034bbba5eaed080fb262a61895623eb4f Gerrit-PatchSet: 1 Gerrit-Project: osmocom-bb Gerrit-Branch: master Gerrit-Owner: Vadim Yanitskiy Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Vadim Yanitskiy From gerrit-no-reply at lists.osmocom.org Mon Apr 16 19:35:00 2018 From: gerrit-no-reply at lists.osmocom.org (dexter) Date: Mon, 16 Apr 2018 19:35:00 +0000 Subject: [PATCH] osmo-ttcn3-hacks[master]: BSC_Tests: Assign g_pars in TC_assignment_sign Message-ID: Review at https://gerrit.osmocom.org/7836 BSC_Tests: Assign g_pars in TC_assignment_sign The testcase TC_assignment_sign does not assign g_pars in its test function. However, it assigns local variable pars but then never uses it. - remove local variable pars and assign g_pars instead Change-Id: Iad65d8ff8bfb98df2b212c69916f1e74dc2c61af Related: OS#2762 --- M bsc/BSC_Tests.ttcn 1 file changed, 1 insertion(+), 1 deletion(-) git pull ssh://gerrit.osmocom.org:29418/osmo-ttcn3-hacks refs/changes/36/7836/1 diff --git a/bsc/BSC_Tests.ttcn b/bsc/BSC_Tests.ttcn index 0dfb708..8380175 100644 --- a/bsc/BSC_Tests.ttcn +++ b/bsc/BSC_Tests.ttcn @@ -1558,7 +1558,7 @@ private function f_tc_assignment_sign(charstring id) runs on MSC_ConnHdlr { - var TestHdlrParams pars := valueof(t_def_TestHdlrPars); + g_pars := valueof(t_def_TestHdlrPars); var template PDU_BSSAP exp_compl := tr_BSSMAP_AssignmentComplete(omit, omit); var PDU_BSSAP ass_cmd := valueof(ts_BSSMAP_AssignmentReq(omit, omit)); -- To view, visit https://gerrit.osmocom.org/7836 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Iad65d8ff8bfb98df2b212c69916f1e74dc2c61af Gerrit-PatchSet: 1 Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Owner: dexter From gerrit-no-reply at lists.osmocom.org Mon Apr 16 19:35:00 2018 From: gerrit-no-reply at lists.osmocom.org (dexter) Date: Mon, 16 Apr 2018 19:35:00 +0000 Subject: [PATCH] osmo-ttcn3-hacks[master]: BSC_Tests: handle mode modify also for signalling Message-ID: Review at https://gerrit.osmocom.org/7837 BSC_Tests: handle mode modify also for signalling The Altstep as_modify() is designed to work only with assignments that assign a voice call (st.voice_call must be true). Howeber, it should also work on assignments that assign a signalling channel only. - Remove the test on st.voice_call from the guard statement of the two altsteps. Change-Id: Ie0e5f15c1a13b773a7693918942e7ff92dfb99d6 Related: OS#2762 --- M bsc/MSC_ConnectionHandler.ttcn 1 file changed, 2 insertions(+), 2 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-ttcn3-hacks refs/changes/37/7837/1 diff --git a/bsc/MSC_ConnectionHandler.ttcn b/bsc/MSC_ConnectionHandler.ttcn index e648427..71ad1f2 100644 --- a/bsc/MSC_ConnectionHandler.ttcn +++ b/bsc/MSC_ConnectionHandler.ttcn @@ -578,7 +578,7 @@ /* no assignment, just mode modify */ var RSL_Message rsl; - [st.voice_call and not st.rr_modify_seen] RSL.receive(tr_RSL_DATA_REQ(g_chan_nr)) -> value rsl { + [not st.rr_modify_seen] RSL.receive(tr_RSL_DATA_REQ(g_chan_nr)) -> value rsl { var PDU_ML3_NW_MS l3 := dec_PDU_ML3_NW_MS(rsl.ies[2].body.l3_info.payload); log("Rx L3 from net: ", l3); if (ischosen(l3.msgs.rrm.channelModeModify)) { @@ -588,7 +588,7 @@ } repeat; } - [st.voice_call and st.rr_modify_seen] RSL.receive(tr_RSL_MsgTypeD(RSL_MT_MODE_MODIFY_REQ)) -> value rsl { + [st.rr_modify_seen] RSL.receive(tr_RSL_MsgTypeD(RSL_MT_MODE_MODIFY_REQ)) -> value rsl { RSL.send(ts_RSL_MODE_MODIFY_ACK(g_chan_nr)); st.modify_done := true; repeat; -- To view, visit https://gerrit.osmocom.org/7837 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Ie0e5f15c1a13b773a7693918942e7ff92dfb99d6 Gerrit-PatchSet: 1 Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Owner: dexter From gerrit-no-reply at lists.osmocom.org Mon Apr 16 19:41:39 2018 From: gerrit-no-reply at lists.osmocom.org (dexter) Date: Mon, 16 Apr 2018 19:41:39 +0000 Subject: [PATCH] osmo-bsc[master]: gscon: fix assignment of signalling channels Message-ID: Review at https://gerrit.osmocom.org/7838 gscon: fix assignment of signalling channels On the assignmen of signalling channels, the voice related fields do not play a role. However the function send_ass_compl() that generates the assignment complete message is very strict about the presence of those voice related parameters. - Add a parameter to function send_ass_compl() to generate the different types of assignment complete messages Change-Id: I316ebcb1f27b668e17fe48fff028e047aac47f76 Related: OS#2762 --- M src/libbsc/bsc_subscr_conn_fsm.c 1 file changed, 20 insertions(+), 11 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-bsc refs/changes/38/7838/1 diff --git a/src/libbsc/bsc_subscr_conn_fsm.c b/src/libbsc/bsc_subscr_conn_fsm.c index a63483e..e18e466 100644 --- a/src/libbsc/bsc_subscr_conn_fsm.c +++ b/src/libbsc/bsc_subscr_conn_fsm.c @@ -226,29 +226,38 @@ } /* Generate and send assignment complete message */ -static void send_ass_compl(struct gsm_lchan *lchan, struct osmo_fsm_inst *fi) +static void send_ass_compl(struct gsm_lchan *lchan, struct osmo_fsm_inst *fi, bool voice) { struct msgb *resp; struct gsm0808_speech_codec sc; + struct gsm0808_speech_codec *sc_ptr = NULL; struct gsm_subscriber_connection *conn; - int perm_spch = bssap_speech_from_lchan(lchan); + struct sockaddr_storage *addr_local = NULL; + int perm_spch = 0; conn = lchan->conn; - - OSMO_ASSERT(lchan->abis_ip.ass_compl.valid); OSMO_ASSERT(conn); LOGPFSML(fi, LOGL_DEBUG, "Sending assignment complete message... (id=%i)\n", conn->sccp.conn_id); - /* Extrapolate speech codec from speech mode */ - gsm0808_speech_codec_from_chan_type(&sc, perm_spch); - /* FIXME: AMR codec configuration must be derived from lchan1! */ + /* Generate voice related fields */ + if (!voice) { + OSMO_ASSERT(lchan->abis_ip.ass_compl.valid); + perm_spch = bssap_speech_from_lchan(lchan); + addr_local = &conn->user_plane.aoip_rtp_addr_local; + + /* Extrapolate speech codec from speech mode */ + gsm0808_speech_codec_from_chan_type(&sc, perm_spch); + sc_ptr = ≻ + + /* FIXME: AMR codec configuration must be derived from lchan1! */ + } /* Generate message */ resp = gsm0808_create_ass_compl(lchan->abis_ip.ass_compl.rr_cause, lchan_to_chosen_channel(lchan), lchan->encr.alg_id, perm_spch, - &conn->user_plane.aoip_rtp_addr_local, &sc, NULL); + addr_local, sc_ptr, NULL); if (!resp) { LOGPFSML(fi, LOGL_ERROR, "Failed to generate assignment completed message! (id=%i)\n", @@ -586,7 +595,7 @@ case GSM48_CMODE_SIGN: /* Confirm the successful assignment on BSSMAP and * change back into active state */ - send_ass_compl(lchan, fi); + send_ass_compl(lchan, fi, false); osmo_fsm_inst_state_chg(fi, ST_ACTIVE, 0, 0); break; default: @@ -689,7 +698,7 @@ sin->sin_port = osmo_ntohs(conn_peer->port); /* Send assignment complete message to the MSC */ - send_ass_compl(lchan, fi); + send_ass_compl(lchan, fi, true); osmo_fsm_inst_state_chg(fi, ST_ACTIVE, 0, 0); @@ -723,7 +732,7 @@ /* FIXME: Check if this requires special handling. For now I assume that the send_ass_compl() * can be used. But I am not sure. */ - send_ass_compl(lchan, fi); + send_ass_compl(lchan, fi, false); break; /* FIXME: Do we need to handle DTAP traffic in this state? Maybe yes? Needs to be checked. */ -- To view, visit https://gerrit.osmocom.org/7838 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I316ebcb1f27b668e17fe48fff028e047aac47f76 Gerrit-PatchSet: 1 Gerrit-Project: osmo-bsc Gerrit-Branch: master Gerrit-Owner: dexter From gerrit-no-reply at lists.osmocom.org Mon Apr 16 19:41:41 2018 From: gerrit-no-reply at lists.osmocom.org (dexter) Date: Mon, 16 Apr 2018 19:41:41 +0000 Subject: [PATCH] osmo-bsc[master]: gscon: remove dead code Message-ID: Review at https://gerrit.osmocom.org/7839 gscon: remove dead code The state ST_WAIT_MODE_MODIFY_ACK can never be reached by the current FSM model. - Remove ST_WAIT_MODE_MODIFY_ACK and all related code Change-Id: Iacaae2ee50ca1956066b7dce4517bbc9c2b0897e Related: OS#2762 --- M include/osmocom/bsc/bsc_subscr_conn_fsm.h M src/libbsc/bsc_subscr_conn_fsm.c 2 files changed, 1 insertion(+), 45 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-bsc refs/changes/39/7839/1 diff --git a/include/osmocom/bsc/bsc_subscr_conn_fsm.h b/include/osmocom/bsc/bsc_subscr_conn_fsm.h index 9421528..9498d9f 100644 --- a/include/osmocom/bsc/bsc_subscr_conn_fsm.h +++ b/include/osmocom/bsc/bsc_subscr_conn_fsm.h @@ -21,8 +21,6 @@ GSCON_EV_RR_ASS_COMPL, /* RR ASSIGNMENT FAIL received */ GSCON_EV_RR_ASS_FAIL, - /* RR MODE MODIFY ACK received */ - GSCON_EV_RR_MODE_MODIFY_ACK, /* RSL RLL Release Indication */ GSCON_EV_RLL_REL_IND, diff --git a/src/libbsc/bsc_subscr_conn_fsm.c b/src/libbsc/bsc_subscr_conn_fsm.c index e18e466..d80e1ed 100644 --- a/src/libbsc/bsc_subscr_conn_fsm.c +++ b/src/libbsc/bsc_subscr_conn_fsm.c @@ -56,8 +56,6 @@ ST_ACTIVE, /* during assignment; waiting for ASS_CMPL */ ST_WAIT_ASS_CMPL, - /* during assignment; waiting for MODE_MODIFY_ACK */ - ST_WAIT_MODE_MODIFY_ACK, /* BSSMAP CLEAR has been received */ ST_CLEARING, @@ -99,7 +97,6 @@ {GSCON_EV_RR_ASS_COMPL, "RR_ASSIGN_COMPL"}, {GSCON_EV_RR_ASS_FAIL, "RR_ASSIGN_FAIL"}, - {GSCON_EV_RR_MODE_MODIFY_ACK, "RR_MODE_MODIFY_ACK"}, {GSCON_EV_RLL_REL_IND, "RLL_RELEASE.ind"}, {GSCON_EV_RSL_CONN_FAIL, "RSL_CONN_FAIL.ind"}, {GSCON_EV_RSL_CLEAR_COMPL, "RSL_CLEAR_COMPLETE"}, @@ -718,39 +715,6 @@ } } -/* We're waiting for a MODE MODIFY ACK from MS + BTS */ -static void gscon_fsm_wait_mode_modify_ack(struct osmo_fsm_inst *fi, uint32_t event, void *data) -{ - struct gsm_subscriber_connection *conn = fi->priv; - struct gsm_lchan *lchan = conn->lchan; - - switch (event) { - case GSCON_EV_RR_MODE_MODIFY_ACK: - /* we assume that not only have we received the RR MODE_MODIFY_ACK, but - * actually that also the BTS side of the channel mode has been changed accordingly */ - osmo_fsm_inst_state_chg(fi, ST_ACTIVE, 0, 0); - - /* FIXME: Check if this requires special handling. For now I assume that the send_ass_compl() - * can be used. But I am not sure. */ - send_ass_compl(lchan, fi, false); - - break; - /* FIXME: Do we need to handle DTAP traffic in this state? Maybe yes? Needs to be checked. */ - case GSCON_EV_MO_DTAP: - forward_dtap(conn, (struct msgb *)data, fi); - break; - case GSCON_EV_MT_DTAP: - submit_dtap(conn, (struct msgb *)data, fi); - break; - case GSCON_EV_TX_SCCP: - sigtran_send(conn, (struct msgb *)data, fi); - break; - default: - OSMO_ASSERT(false); - break; - } -} - static void gscon_fsm_clearing(struct osmo_fsm_inst *fi, uint32_t event, void *data) { struct gsm_subscriber_connection *conn = fi->priv; @@ -865,7 +829,7 @@ .in_event_mask = EV_TRANSPARENT_SCCP | S(GSCON_EV_A_ASSIGNMENT_CMD) | S(GSCON_EV_A_HO_REQ) | S(GSCON_EV_HO_START), .out_state_mask = S(ST_CLEARING) | S(ST_WAIT_CRCX_BTS) | S(ST_WAIT_ASS_CMPL) | - S(ST_WAIT_MODE_MODIFY_ACK) | S(ST_WAIT_MO_HO_CMD) | S(ST_WAIT_HO_COMPL), + S(ST_WAIT_MO_HO_CMD) | S(ST_WAIT_HO_COMPL), .action = gscon_fsm_active, }, [ST_WAIT_CRCX_BTS] = { @@ -891,12 +855,6 @@ .in_event_mask = EV_TRANSPARENT_SCCP | S(GSCON_EV_MGW_CRCX_RESP_MSC), .out_state_mask = S(ST_ACTIVE), .action = gscon_fsm_wait_crcx_msc, - }, - [ST_WAIT_MODE_MODIFY_ACK] = { - .name = OSMO_STRINGIFY(WAIT_MODE_MODIFY_ACK), - .in_event_mask = EV_TRANSPARENT_SCCP | S(GSCON_EV_RR_MODE_MODIFY_ACK), - .out_state_mask = S(ST_ACTIVE) | S(ST_CLEARING), - .action = gscon_fsm_wait_mode_modify_ack, }, [ST_CLEARING] = { .name = OSMO_STRINGIFY(CLEARING), -- To view, visit https://gerrit.osmocom.org/7839 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Iacaae2ee50ca1956066b7dce4517bbc9c2b0897e Gerrit-PatchSet: 1 Gerrit-Project: osmo-bsc Gerrit-Branch: master Gerrit-Owner: dexter From admin at opensuse.org Mon Apr 16 19:58:29 2018 From: admin at opensuse.org (OBS Notification) Date: Mon, 16 Apr 2018 19:58:29 +0000 Subject: Build failure of network:osmocom:nightly/libosmo-netif in Debian_9.0/i586 In-Reply-To: References: Message-ID: <5ad500714db30_7902476684977053@build.opensuse.org> Visit https://build.opensuse.org/package/live_build_log/network:osmocom:nightly/libosmo-netif/Debian_9.0/i586 Package network:osmocom:nightly/libosmo-netif failed to build in Debian_9.0/i586 Check out the package for editing: osc checkout network:osmocom:nightly libosmo-netif Last lines of build log: [ 122s] compilation terminated. [ 122s] Makefile:476: recipe for target 'jibuf/jibuf_tool.o' failed [ 122s] make[5]: *** [jibuf/jibuf_tool.o] Error 1 [ 122s] make[5]: Leaving directory '/usr/src/packages/BUILD/tests' [ 122s] Makefile:585: recipe for target 'check-am' failed [ 122s] make[4]: *** [check-am] Error 2 [ 122s] make[4]: Leaving directory '/usr/src/packages/BUILD/tests' [ 122s] Makefile:494: recipe for target 'check-recursive' failed [ 122s] make[3]: *** [check-recursive] Error 1 [ 122s] make[3]: Leaving directory '/usr/src/packages/BUILD' [ 122s] Makefile:785: recipe for target 'check' failed [ 122s] make[2]: *** [check] Error 2 [ 122s] make[2]: Leaving directory '/usr/src/packages/BUILD' [ 122s] dh_auto_test: make -j1 check VERBOSE=1 returned exit code 2 [ 122s] debian/rules:31: recipe for target 'override_dh_auto_test' failed [ 122s] make[1]: *** [override_dh_auto_test] Error 1 [ 122s] make[1]: Leaving directory '/usr/src/packages/BUILD' [ 122s] debian/rules:13: recipe for target 'build' failed [ 122s] make: *** [build] Error 2 [ 122s] dpkg-buildpackage: error: debian/rules build gave error exit status 2 [ 122s] [ 122s] lamb55 failed "build libosmo-netif_0.1.1.20180416.dsc" at Mon Apr 16 19:58:22 UTC 2018. [ 122s] [ 122s] ### VM INTERACTION START ### [ 125s] [ 116.174460] reboot: Power down [ 125s] ### VM INTERACTION END ### [ 125s] [ 125s] lamb55 failed "build libosmo-netif_0.1.1.20180416.dsc" at Mon Apr 16 19:58:26 UTC 2018. [ 125s] -- Configure notifications at https://build.opensuse.org/user/notifications openSUSE Build Service (https://build.opensuse.org/) From admin at opensuse.org Mon Apr 16 20:00:12 2018 From: admin at opensuse.org (OBS Notification) Date: Mon, 16 Apr 2018 20:00:12 +0000 Subject: Build failure of network:osmocom:nightly/libosmo-netif in xUbuntu_17.04/i586 In-Reply-To: References: Message-ID: <5ad500e85d2c0_79024766849775fd@build.opensuse.org> Visit https://build.opensuse.org/package/live_build_log/network:osmocom:nightly/libosmo-netif/xUbuntu_17.04/i586 Package network:osmocom:nightly/libosmo-netif failed to build in xUbuntu_17.04/i586 Check out the package for editing: osc checkout network:osmocom:nightly libosmo-netif Last lines of build log: [ 101s] compilation terminated. [ 101s] Makefile:476: recipe for target 'jibuf/jibuf_tool.o' failed [ 101s] make[5]: *** [jibuf/jibuf_tool.o] Error 1 [ 101s] make[5]: Leaving directory '/usr/src/packages/BUILD/tests' [ 101s] Makefile:585: recipe for target 'check-am' failed [ 101s] make[4]: *** [check-am] Error 2 [ 101s] make[4]: Leaving directory '/usr/src/packages/BUILD/tests' [ 101s] Makefile:494: recipe for target 'check-recursive' failed [ 101s] make[3]: *** [check-recursive] Error 1 [ 101s] make[3]: Leaving directory '/usr/src/packages/BUILD' [ 101s] Makefile:785: recipe for target 'check' failed [ 101s] make[2]: *** [check] Error 2 [ 101s] make[2]: Leaving directory '/usr/src/packages/BUILD' [ 101s] dh_auto_test: make -j1 check VERBOSE=1 returned exit code 2 [ 101s] debian/rules:31: recipe for target 'override_dh_auto_test' failed [ 101s] make[1]: *** [override_dh_auto_test] Error 1 [ 101s] make[1]: Leaving directory '/usr/src/packages/BUILD' [ 101s] debian/rules:13: recipe for target 'build' failed [ 101s] make: *** [build] Error 2 [ 101s] dpkg-buildpackage: error: debian/rules build gave error exit status 2 [ 101s] [ 101s] lamb03 failed "build libosmo-netif_0.1.1.20180416.dsc" at Mon Apr 16 20:00:01 UTC 2018. [ 101s] [ 101s] ### VM INTERACTION START ### [ 105s] [ 96.258389] reboot: Power down [ 105s] ### VM INTERACTION END ### [ 105s] [ 105s] lamb03 failed "build libosmo-netif_0.1.1.20180416.dsc" at Mon Apr 16 20:00:05 UTC 2018. [ 105s] -- Configure notifications at https://build.opensuse.org/user/notifications openSUSE Build Service (https://build.opensuse.org/) From admin at opensuse.org Mon Apr 16 20:00:12 2018 From: admin at opensuse.org (OBS Notification) Date: Mon, 16 Apr 2018 20:00:12 +0000 Subject: Build failure of network:osmocom:nightly/libosmo-netif in xUbuntu_16.04/i586 In-Reply-To: References: Message-ID: <5ad500e7d9e29_790247668497744a@build.opensuse.org> Visit https://build.opensuse.org/package/live_build_log/network:osmocom:nightly/libosmo-netif/xUbuntu_16.04/i586 Package network:osmocom:nightly/libosmo-netif failed to build in xUbuntu_16.04/i586 Check out the package for editing: osc checkout network:osmocom:nightly libosmo-netif Last lines of build log: [ 135s] compilation terminated. [ 135s] Makefile:476: recipe for target 'jibuf/jibuf_tool.o' failed [ 135s] make[5]: *** [jibuf/jibuf_tool.o] Error 1 [ 135s] make[5]: Leaving directory '/usr/src/packages/BUILD/tests' [ 135s] Makefile:585: recipe for target 'check-am' failed [ 135s] make[4]: *** [check-am] Error 2 [ 135s] make[4]: Leaving directory '/usr/src/packages/BUILD/tests' [ 135s] Makefile:494: recipe for target 'check-recursive' failed [ 135s] make[3]: *** [check-recursive] Error 1 [ 135s] make[3]: Leaving directory '/usr/src/packages/BUILD' [ 135s] Makefile:785: recipe for target 'check' failed [ 135s] make[2]: *** [check] Error 2 [ 135s] make[2]: Leaving directory '/usr/src/packages/BUILD' [ 135s] dh_auto_test: make -j1 check returned exit code 2 [ 135s] debian/rules:31: recipe for target 'override_dh_auto_test' failed [ 135s] make[1]: *** [override_dh_auto_test] Error 1 [ 135s] make[1]: Leaving directory '/usr/src/packages/BUILD' [ 135s] debian/rules:13: recipe for target 'build' failed [ 135s] make: *** [build] Error 2 [ 135s] dpkg-buildpackage: error: debian/rules build gave error exit status 2 [ 135s] [ 135s] cloud107 failed "build libosmo-netif_0.1.1.20180416.dsc" at Mon Apr 16 19:59:57 UTC 2018. [ 135s] [ 135s] ### VM INTERACTION START ### [ 138s] [ 121.786421] reboot: Power down [ 140s] ### VM INTERACTION END ### [ 140s] [ 140s] cloud107 failed "build libosmo-netif_0.1.1.20180416.dsc" at Mon Apr 16 20:00:03 UTC 2018. [ 140s] -- Configure notifications at https://build.opensuse.org/user/notifications openSUSE Build Service (https://build.opensuse.org/) From admin at opensuse.org Mon Apr 16 20:00:12 2018 From: admin at opensuse.org (OBS Notification) Date: Mon, 16 Apr 2018 20:00:12 +0000 Subject: Build failure of network:osmocom:nightly/libosmo-netif in Debian_8.0/i586 In-Reply-To: References: Message-ID: <5ad500e9b68f2_79024766849776e@build.opensuse.org> Visit https://build.opensuse.org/package/live_build_log/network:osmocom:nightly/libosmo-netif/Debian_8.0/i586 Package network:osmocom:nightly/libosmo-netif failed to build in Debian_8.0/i586 Check out the package for editing: osc checkout network:osmocom:nightly libosmo-netif Last lines of build log: [ 204s] Makefile:464: recipe for target 'jibuf/jibuf_tool.o' failed [ 204s] make[5]: *** [jibuf/jibuf_tool.o] Error 1 [ 204s] make[5]: Leaving directory '/usr/src/packages/BUILD/tests' [ 204s] Makefile:573: recipe for target 'check-am' failed [ 204s] make[4]: *** [check-am] Error 2 [ 204s] make[4]: Leaving directory '/usr/src/packages/BUILD/tests' [ 204s] Makefile:483: recipe for target 'check-recursive' failed [ 204s] make[3]: *** [check-recursive] Error 1 [ 204s] make[3]: Leaving directory '/usr/src/packages/BUILD' [ 204s] Makefile:774: recipe for target 'check' failed [ 204s] make[2]: *** [check] Error 2 [ 204s] make[2]: Leaving directory '/usr/src/packages/BUILD' [ 204s] dh_auto_test: make -j1 check returned exit code 2 [ 204s] debian/rules:31: recipe for target 'override_dh_auto_test' failed [ 204s] make[1]: *** [override_dh_auto_test] Error 1 [ 204s] make[1]: Leaving directory '/usr/src/packages/BUILD' [ 204s] debian/rules:13: recipe for target 'build' failed [ 204s] make: *** [build] Error 2 [ 204s] dpkg-buildpackage: error: debian/rules build gave error exit status 2 [ 204s] [ 204s] cloud115 failed "build libosmo-netif_0.1.1.20180416.dsc" at Mon Apr 16 19:59:52 UTC 2018. [ 204s] [ 204s] ### VM INTERACTION START ### [ 205s] Powering off. [ 205s] [ 164.329146] reboot: Power down [ 220s] ### VM INTERACTION END ### [ 220s] [ 220s] cloud115 failed "build libosmo-netif_0.1.1.20180416.dsc" at Mon Apr 16 20:00:08 UTC 2018. [ 220s] -- Configure notifications at https://build.opensuse.org/user/notifications openSUSE Build Service (https://build.opensuse.org/) From admin at opensuse.org Mon Apr 16 20:03:38 2018 From: admin at opensuse.org (OBS Notification) Date: Mon, 16 Apr 2018 20:03:38 +0000 Subject: Build failure of network:osmocom:nightly/openbsc in Debian_9.0/i586 In-Reply-To: References: Message-ID: <5ad501b8991f2_7902476684978464@build.opensuse.org> Visit https://build.opensuse.org/package/live_build_log/network:osmocom:nightly/openbsc/Debian_9.0/i586 Package network:osmocom:nightly/openbsc failed to build in Debian_9.0/i586 Check out the package for editing: osc checkout network:osmocom:nightly openbsc Last lines of build log: [ 79s] ../../include/openbsc/mgcp_internal.h:28:33: fatal error: osmocom/netif/jibuf.h: No such file or directory [ 79s] #include [ 79s] ^ [ 79s] compilation terminated. [ 79s] Makefile:455: recipe for target 'mgcp_protocol.o' failed [ 79s] make[4]: *** [mgcp_protocol.o] Error 1 [ 79s] make[4]: Leaving directory '/usr/src/packages/BUILD/openbsc/src/libmgcp' [ 79s] Makefile:447: recipe for target 'all-recursive' failed [ 79s] make[3]: *** [all-recursive] Error 1 [ 79s] make[3]: Leaving directory '/usr/src/packages/BUILD/openbsc/src' [ 79s] Makefile:518: recipe for target 'all-recursive' failed [ 79s] make[2]: *** [all-recursive] Error 1 [ 79s] make[2]: Leaving directory '/usr/src/packages/BUILD/openbsc' [ 79s] Makefile:427: recipe for target 'all' failed [ 79s] make[1]: *** [all] Error 2 [ 79s] make[1]: Leaving directory '/usr/src/packages/BUILD/openbsc' [ 79s] dh_auto_build: make -j1 returned exit code 2 [ 79s] debian/rules:13: recipe for target 'build' failed [ 79s] make: *** [build] Error 2 [ 79s] dpkg-buildpackage: error: debian/rules build gave error exit status 2 [ 79s] [ 79s] lamb75 failed "build openbsc_1.0.0.20180416.dsc" at Mon Apr 16 20:03:21 UTC 2018. [ 79s] [ 79s] ### VM INTERACTION START ### [ 82s] [ 73.509087] reboot: Power down [ 82s] ### VM INTERACTION END ### [ 82s] [ 82s] lamb75 failed "build openbsc_1.0.0.20180416.dsc" at Mon Apr 16 20:03:24 UTC 2018. [ 82s] -- Configure notifications at https://build.opensuse.org/user/notifications openSUSE Build Service (https://build.opensuse.org/) From admin at opensuse.org Mon Apr 16 20:04:12 2018 From: admin at opensuse.org (OBS Notification) Date: Mon, 16 Apr 2018 20:04:12 +0000 Subject: Build failure of network:osmocom:nightly/libosmo-netif in xUbuntu_16.10/i586 In-Reply-To: References: Message-ID: <5ad501d554df4_7902476684978569@build.opensuse.org> Visit https://build.opensuse.org/package/live_build_log/network:osmocom:nightly/libosmo-netif/xUbuntu_16.10/i586 Package network:osmocom:nightly/libosmo-netif failed to build in xUbuntu_16.10/i586 Check out the package for editing: osc checkout network:osmocom:nightly libosmo-netif Last lines of build log: [ 148s] compilation terminated. [ 148s] Makefile:476: recipe for target 'jibuf/jibuf_tool.o' failed [ 148s] make[5]: *** [jibuf/jibuf_tool.o] Error 1 [ 148s] make[5]: Leaving directory '/usr/src/packages/BUILD/tests' [ 148s] Makefile:585: recipe for target 'check-am' failed [ 148s] make[4]: *** [check-am] Error 2 [ 148s] make[4]: Leaving directory '/usr/src/packages/BUILD/tests' [ 148s] Makefile:494: recipe for target 'check-recursive' failed [ 148s] make[3]: *** [check-recursive] Error 1 [ 148s] make[3]: Leaving directory '/usr/src/packages/BUILD' [ 148s] Makefile:785: recipe for target 'check' failed [ 148s] make[2]: *** [check] Error 2 [ 148s] make[2]: Leaving directory '/usr/src/packages/BUILD' [ 148s] dh_auto_test: make -j1 check VERBOSE=1 returned exit code 2 [ 148s] debian/rules:31: recipe for target 'override_dh_auto_test' failed [ 148s] make[1]: *** [override_dh_auto_test] Error 1 [ 148s] make[1]: Leaving directory '/usr/src/packages/BUILD' [ 148s] debian/rules:13: recipe for target 'build' failed [ 148s] make: *** [build] Error 2 [ 148s] dpkg-buildpackage: error: debian/rules build gave error exit status 2 [ 148s] [ 148s] lamb59 failed "build libosmo-netif_0.1.1.20180416.dsc" at Mon Apr 16 20:04:07 UTC 2018. [ 148s] [ 148s] ### VM INTERACTION START ### [ 151s] [ 133.011725] reboot: Power down [ 151s] ### VM INTERACTION END ### [ 151s] [ 151s] lamb59 failed "build libosmo-netif_0.1.1.20180416.dsc" at Mon Apr 16 20:04:11 UTC 2018. [ 151s] -- Configure notifications at https://build.opensuse.org/user/notifications openSUSE Build Service (https://build.opensuse.org/) From admin at opensuse.org Mon Apr 16 20:04:29 2018 From: admin at opensuse.org (OBS Notification) Date: Mon, 16 Apr 2018 20:04:29 +0000 Subject: Build failure of network:osmocom:nightly/libosmo-netif in Debian_9.0/aarch64 In-Reply-To: References: Message-ID: <5ad501d5a701f_7902476684978620@build.opensuse.org> Visit https://build.opensuse.org/package/live_build_log/network:osmocom:nightly/libosmo-netif/Debian_9.0/aarch64 Package network:osmocom:nightly/libosmo-netif failed to build in Debian_9.0/aarch64 Check out the package for editing: osc checkout network:osmocom:nightly libosmo-netif Last lines of build log: [ 172s] Makefile:476: recipe for target 'jibuf/jibuf_tool.o' failed [ 172s] make[5]: *** [jibuf/jibuf_tool.o] Error 1 [ 172s] make[5]: Leaving directory '/usr/src/packages/BUILD/tests' [ 172s] Makefile:585: recipe for target 'check-am' failed [ 172s] make[4]: *** [check-am] Error 2 [ 172s] make[4]: Leaving directory '/usr/src/packages/BUILD/tests' [ 172s] Makefile:494: recipe for target 'check-recursive' failed [ 172s] make[3]: *** [check-recursive] Error 1 [ 172s] make[3]: Leaving directory '/usr/src/packages/BUILD' [ 172s] Makefile:785: recipe for target 'check' failed [ 172s] make[2]: *** [check] Error 2 [ 172s] make[2]: Leaving directory '/usr/src/packages/BUILD' [ 172s] dh_auto_test: make -j1 check VERBOSE=1 returned exit code 2 [ 172s] debian/rules:31: recipe for target 'override_dh_auto_test' failed [ 172s] make[1]: *** [override_dh_auto_test] Error 1 [ 172s] make[1]: Leaving directory '/usr/src/packages/BUILD' [ 172s] debian/rules:13: recipe for target 'build' failed [ 172s] make: *** [build] Error 2 [ 172s] dpkg-buildpackage: error: debian/rules build gave error exit status 2 [ 172s] [ 172s] obs-arm-2 failed "build libosmo-netif_0.1.1.20180416.dsc" at Mon Apr 16 20:04:11 UTC 2018. [ 172s] [ 172s] ### VM INTERACTION START ### [ 175s] [ 153.335109] sysrq: SysRq : Power Off [ 175s] [ 153.338484] reboot: Power down [ 175s] ### VM INTERACTION END ### [ 175s] [ 175s] obs-arm-2 failed "build libosmo-netif_0.1.1.20180416.dsc" at Mon Apr 16 20:04:13 UTC 2018. [ 175s] -- Configure notifications at https://build.opensuse.org/user/notifications openSUSE Build Service (https://build.opensuse.org/) From admin at opensuse.org Mon Apr 16 20:05:38 2018 From: admin at opensuse.org (OBS Notification) Date: Mon, 16 Apr 2018 20:05:38 +0000 Subject: Build failure of network:osmocom:nightly/openbsc in xUbuntu_17.04/i586 In-Reply-To: References: Message-ID: <5ad5022f33209_7902476684979222@build.opensuse.org> Visit https://build.opensuse.org/package/live_build_log/network:osmocom:nightly/openbsc/xUbuntu_17.04/i586 Package network:osmocom:nightly/openbsc failed to build in xUbuntu_17.04/i586 Check out the package for editing: osc checkout network:osmocom:nightly openbsc Last lines of build log: [ 78s] In file included from mgcp_protocol.c:37:0: [ 78s] ../../include/openbsc/mgcp_internal.h:28:33: fatal error: osmocom/netif/jibuf.h: No such file or directory [ 78s] #include [ 78s] ^ [ 78s] compilation terminated. [ 78s] Makefile:455: recipe for target 'mgcp_protocol.o' failed [ 78s] make[4]: *** [mgcp_protocol.o] Error 1 [ 78s] make[4]: Leaving directory '/usr/src/packages/BUILD/openbsc/src/libmgcp' [ 78s] Makefile:447: recipe for target 'all-recursive' failed [ 78s] make[3]: *** [all-recursive] Error 1 [ 78s] make[3]: Leaving directory '/usr/src/packages/BUILD/openbsc/src' [ 78s] Makefile:518: recipe for target 'all-recursive' failed [ 78s] make[2]: *** [all-recursive] Error 1 [ 78s] make[2]: Leaving directory '/usr/src/packages/BUILD/openbsc' [ 78s] Makefile:427: recipe for target 'all' failed [ 78s] make[1]: *** [all] Error 2 [ 78s] make[1]: Leaving directory '/usr/src/packages/BUILD/openbsc' [ 78s] dh_auto_build: make -j1 returned exit code 2 [ 78s] debian/rules:13: recipe for target 'build' failed [ 78s] make: *** [build] Error 2 [ 78s] dpkg-buildpackage: error: debian/rules build gave error exit status 2 [ 78s] [ 78s] build84 failed "build openbsc_1.0.0.20180416.dsc" at Mon Apr 16 20:05:31 UTC 2018. [ 78s] [ 78s] ### VM INTERACTION START ### [ 81s] [ 76.149311] reboot: Power down [ 82s] ### VM INTERACTION END ### [ 83s] [ 83s] build84 failed "build openbsc_1.0.0.20180416.dsc" at Mon Apr 16 20:05:36 UTC 2018. -- Configure notifications at https://build.opensuse.org/user/notifications openSUSE Build Service (https://build.opensuse.org/) From admin at opensuse.org Mon Apr 16 20:09:38 2018 From: admin at opensuse.org (OBS Notification) Date: Mon, 16 Apr 2018 20:09:38 +0000 Subject: Build failure of network:osmocom:nightly/libosmo-netif in xUbuntu_17.10/x86_64 In-Reply-To: References: Message-ID: <5ad50321e3450_79024766849799ca@build.opensuse.org> Visit https://build.opensuse.org/package/live_build_log/network:osmocom:nightly/libosmo-netif/xUbuntu_17.10/x86_64 Package network:osmocom:nightly/libosmo-netif failed to build in xUbuntu_17.10/x86_64 Check out the package for editing: osc checkout network:osmocom:nightly libosmo-netif Last lines of build log: [ 77s] compilation terminated. [ 77s] Makefile:476: recipe for target 'jibuf/jibuf_tool.o' failed [ 77s] make[5]: *** [jibuf/jibuf_tool.o] Error 1 [ 77s] make[5]: Leaving directory '/usr/src/packages/BUILD/tests' [ 77s] Makefile:585: recipe for target 'check-am' failed [ 77s] make[4]: *** [check-am] Error 2 [ 77s] make[4]: Leaving directory '/usr/src/packages/BUILD/tests' [ 77s] Makefile:494: recipe for target 'check-recursive' failed [ 77s] make[3]: *** [check-recursive] Error 1 [ 77s] make[3]: Leaving directory '/usr/src/packages/BUILD' [ 77s] Makefile:785: recipe for target 'check' failed [ 77s] make[2]: *** [check] Error 2 [ 77s] make[2]: Leaving directory '/usr/src/packages/BUILD' [ 77s] dh_auto_test: make -j1 check VERBOSE=1 returned exit code 2 [ 77s] debian/rules:31: recipe for target 'override_dh_auto_test' failed [ 77s] make[1]: *** [override_dh_auto_test] Error 1 [ 77s] make[1]: Leaving directory '/usr/src/packages/BUILD' [ 77s] debian/rules:13: recipe for target 'build' failed [ 77s] make: *** [build] Error 2 [ 77s] dpkg-buildpackage: error: debian/rules build gave error exit status 2 [ 77s] [ 77s] build78 failed "build libosmo-netif_0.1.1.20180416.dsc" at Mon Apr 16 20:09:28 UTC 2018. [ 77s] [ 77s] ### VM INTERACTION START ### [ 80s] [ 73.165320] reboot: Power down [ 80s] ### VM INTERACTION END ### [ 80s] [ 80s] build78 failed "build libosmo-netif_0.1.1.20180416.dsc" at Mon Apr 16 20:09:31 UTC 2018. [ 80s] -- Configure notifications at https://build.opensuse.org/user/notifications openSUSE Build Service (https://build.opensuse.org/) From admin at opensuse.org Mon Apr 16 20:09:55 2018 From: admin at opensuse.org (OBS Notification) Date: Mon, 16 Apr 2018 20:09:55 +0000 Subject: Build failure of network:osmocom:nightly/openbsc in xUbuntu_16.10/i586 In-Reply-To: References: Message-ID: <5ad50323744e5_79024766849801fc@build.opensuse.org> Visit https://build.opensuse.org/package/live_build_log/network:osmocom:nightly/openbsc/xUbuntu_16.10/i586 Package network:osmocom:nightly/openbsc failed to build in xUbuntu_16.10/i586 Check out the package for editing: osc checkout network:osmocom:nightly openbsc Last lines of build log: [ 111s] ../../include/openbsc/mgcp_internal.h:28:33: fatal error: osmocom/netif/jibuf.h: No such file or directory [ 111s] #include [ 111s] ^ [ 111s] compilation terminated. [ 111s] Makefile:455: recipe for target 'mgcp_protocol.o' failed [ 111s] make[4]: *** [mgcp_protocol.o] Error 1 [ 111s] make[4]: Leaving directory '/usr/src/packages/BUILD/openbsc/src/libmgcp' [ 111s] Makefile:447: recipe for target 'all-recursive' failed [ 111s] make[3]: *** [all-recursive] Error 1 [ 111s] make[3]: Leaving directory '/usr/src/packages/BUILD/openbsc/src' [ 111s] Makefile:518: recipe for target 'all-recursive' failed [ 111s] make[2]: *** [all-recursive] Error 1 [ 111s] make[2]: Leaving directory '/usr/src/packages/BUILD/openbsc' [ 111s] Makefile:427: recipe for target 'all' failed [ 111s] make[1]: *** [all] Error 2 [ 111s] make[1]: Leaving directory '/usr/src/packages/BUILD/openbsc' [ 111s] dh_auto_build: make -j1 returned exit code 2 [ 111s] debian/rules:13: recipe for target 'build' failed [ 111s] make: *** [build] Error 2 [ 111s] dpkg-buildpackage: error: debian/rules build gave error exit status 2 [ 111s] [ 111s] lamb01 failed "build openbsc_1.0.0.20180416.dsc" at Mon Apr 16 20:09:48 UTC 2018. [ 111s] [ 111s] ### VM INTERACTION START ### [ 114s] [ 107.698964] reboot: Power down [ 114s] ### VM INTERACTION END ### [ 114s] [ 114s] lamb01 failed "build openbsc_1.0.0.20180416.dsc" at Mon Apr 16 20:09:51 UTC 2018. [ 114s] -- Configure notifications at https://build.opensuse.org/user/notifications openSUSE Build Service (https://build.opensuse.org/) From admin at opensuse.org Mon Apr 16 20:10:12 2018 From: admin at opensuse.org (OBS Notification) Date: Mon, 16 Apr 2018 20:10:12 +0000 Subject: Build failure of network:osmocom:nightly/libosmo-netif in xUbuntu_16.10/x86_64 In-Reply-To: References: Message-ID: <5ad5033e90181_7902476684980310@build.opensuse.org> Visit https://build.opensuse.org/package/live_build_log/network:osmocom:nightly/libosmo-netif/xUbuntu_16.10/x86_64 Package network:osmocom:nightly/libosmo-netif failed to build in xUbuntu_16.10/x86_64 Check out the package for editing: osc checkout network:osmocom:nightly libosmo-netif Last lines of build log: [ 71s] compilation terminated. [ 71s] Makefile:476: recipe for target 'jibuf/jibuf_tool.o' failed [ 71s] make[5]: *** [jibuf/jibuf_tool.o] Error 1 [ 71s] make[5]: Leaving directory '/usr/src/packages/BUILD/tests' [ 71s] Makefile:585: recipe for target 'check-am' failed [ 71s] make[4]: *** [check-am] Error 2 [ 71s] make[4]: Leaving directory '/usr/src/packages/BUILD/tests' [ 71s] Makefile:494: recipe for target 'check-recursive' failed [ 71s] make[3]: *** [check-recursive] Error 1 [ 71s] make[3]: Leaving directory '/usr/src/packages/BUILD' [ 71s] Makefile:785: recipe for target 'check' failed [ 71s] make[2]: *** [check] Error 2 [ 71s] make[2]: Leaving directory '/usr/src/packages/BUILD' [ 71s] dh_auto_test: make -j1 check VERBOSE=1 returned exit code 2 [ 71s] debian/rules:31: recipe for target 'override_dh_auto_test' failed [ 71s] make[1]: *** [override_dh_auto_test] Error 1 [ 71s] make[1]: Leaving directory '/usr/src/packages/BUILD' [ 71s] debian/rules:13: recipe for target 'build' failed [ 71s] make: *** [build] Error 2 [ 71s] dpkg-buildpackage: error: debian/rules build gave error exit status 2 [ 71s] [ 71s] build81 failed "build libosmo-netif_0.1.1.20180416.dsc" at Mon Apr 16 20:10:05 UTC 2018. [ 71s] [ 71s] ### VM INTERACTION START ### [ 74s] [ 67.691230] reboot: Power down [ 74s] ### VM INTERACTION END ### [ 74s] [ 74s] build81 failed "build libosmo-netif_0.1.1.20180416.dsc" at Mon Apr 16 20:10:09 UTC 2018. [ 74s] -- Configure notifications at https://build.opensuse.org/user/notifications openSUSE Build Service (https://build.opensuse.org/) From admin at opensuse.org Mon Apr 16 20:10:29 2018 From: admin at opensuse.org (OBS Notification) Date: Mon, 16 Apr 2018 20:10:29 +0000 Subject: Build failure of network:osmocom:nightly/libosmo-netif in xUbuntu_17.04/x86_64 In-Reply-To: References: Message-ID: <5ad5033ef0ee9_79024766849804e9@build.opensuse.org> Visit https://build.opensuse.org/package/live_build_log/network:osmocom:nightly/libosmo-netif/xUbuntu_17.04/x86_64 Package network:osmocom:nightly/libosmo-netif failed to build in xUbuntu_17.04/x86_64 Check out the package for editing: osc checkout network:osmocom:nightly libosmo-netif Last lines of build log: [ 127s] compilation terminated. [ 127s] Makefile:476: recipe for target 'jibuf/jibuf_tool.o' failed [ 127s] make[5]: *** [jibuf/jibuf_tool.o] Error 1 [ 127s] make[5]: Leaving directory '/usr/src/packages/BUILD/tests' [ 127s] Makefile:585: recipe for target 'check-am' failed [ 127s] make[4]: *** [check-am] Error 2 [ 127s] make[4]: Leaving directory '/usr/src/packages/BUILD/tests' [ 127s] Makefile:494: recipe for target 'check-recursive' failed [ 127s] make[3]: *** [check-recursive] Error 1 [ 127s] make[3]: Leaving directory '/usr/src/packages/BUILD' [ 127s] Makefile:785: recipe for target 'check' failed [ 127s] make[2]: *** [check] Error 2 [ 127s] make[2]: Leaving directory '/usr/src/packages/BUILD' [ 127s] dh_auto_test: make -j1 check VERBOSE=1 returned exit code 2 [ 127s] debian/rules:31: recipe for target 'override_dh_auto_test' failed [ 127s] make[1]: *** [override_dh_auto_test] Error 1 [ 127s] make[1]: Leaving directory '/usr/src/packages/BUILD' [ 127s] debian/rules:13: recipe for target 'build' failed [ 127s] make: *** [build] Error 2 [ 127s] dpkg-buildpackage: error: debian/rules build gave error exit status 2 [ 127s] [ 127s] build34 failed "build libosmo-netif_0.1.1.20180416.dsc" at Mon Apr 16 20:10:10 UTC 2018. [ 127s] [ 127s] ### VM INTERACTION START ### [ 130s] [ 121.529726] reboot: Power down [ 130s] ### VM INTERACTION END ### [ 130s] [ 130s] build34 failed "build libosmo-netif_0.1.1.20180416.dsc" at Mon Apr 16 20:10:13 UTC 2018. [ 130s] -- Configure notifications at https://build.opensuse.org/user/notifications openSUSE Build Service (https://build.opensuse.org/) From admin at opensuse.org Mon Apr 16 20:11:04 2018 From: admin at opensuse.org (OBS Notification) Date: Mon, 16 Apr 2018 20:11:04 +0000 Subject: Build failure of network:osmocom:nightly/libosmo-netif in xUbuntu_16.04/x86_64 In-Reply-To: References: Message-ID: <5ad5035b2a51c_7902476684980687@build.opensuse.org> Visit https://build.opensuse.org/package/live_build_log/network:osmocom:nightly/libosmo-netif/xUbuntu_16.04/x86_64 Package network:osmocom:nightly/libosmo-netif failed to build in xUbuntu_16.04/x86_64 Check out the package for editing: osc checkout network:osmocom:nightly libosmo-netif Last lines of build log: [ 127s] compilation terminated. [ 127s] Makefile:476: recipe for target 'jibuf/jibuf_tool.o' failed [ 127s] make[5]: *** [jibuf/jibuf_tool.o] Error 1 [ 127s] make[5]: Leaving directory '/usr/src/packages/BUILD/tests' [ 127s] Makefile:585: recipe for target 'check-am' failed [ 127s] make[4]: *** [check-am] Error 2 [ 127s] make[4]: Leaving directory '/usr/src/packages/BUILD/tests' [ 127s] Makefile:494: recipe for target 'check-recursive' failed [ 127s] make[3]: *** [check-recursive] Error 1 [ 127s] make[3]: Leaving directory '/usr/src/packages/BUILD' [ 127s] Makefile:785: recipe for target 'check' failed [ 127s] make[2]: *** [check] Error 2 [ 127s] make[2]: Leaving directory '/usr/src/packages/BUILD' [ 127s] dh_auto_test: make -j1 check returned exit code 2 [ 127s] debian/rules:31: recipe for target 'override_dh_auto_test' failed [ 127s] make[1]: *** [override_dh_auto_test] Error 1 [ 127s] make[1]: Leaving directory '/usr/src/packages/BUILD' [ 127s] debian/rules:13: recipe for target 'build' failed [ 127s] make: *** [build] Error 2 [ 127s] dpkg-buildpackage: error: debian/rules build gave error exit status 2 [ 127s] [ 127s] build32 failed "build libosmo-netif_0.1.1.20180416.dsc" at Mon Apr 16 20:10:50 UTC 2018. [ 127s] [ 127s] ### VM INTERACTION START ### [ 130s] [ 119.218447] reboot: Power down [ 130s] ### VM INTERACTION END ### [ 130s] [ 130s] build32 failed "build libosmo-netif_0.1.1.20180416.dsc" at Mon Apr 16 20:10:54 UTC 2018. [ 130s] -- Configure notifications at https://build.opensuse.org/user/notifications openSUSE Build Service (https://build.opensuse.org/) From admin at opensuse.org Mon Apr 16 20:11:04 2018 From: admin at opensuse.org (OBS Notification) Date: Mon, 16 Apr 2018 20:11:04 +0000 Subject: Build failure of network:osmocom:nightly/openbsc in Debian_9.0/aarch64 In-Reply-To: References: Message-ID: <5ad5035b80aff_7902476684980748@build.opensuse.org> Visit https://build.opensuse.org/package/live_build_log/network:osmocom:nightly/openbsc/Debian_9.0/aarch64 Package network:osmocom:nightly/openbsc failed to build in Debian_9.0/aarch64 Check out the package for editing: osc checkout network:osmocom:nightly openbsc Last lines of build log: [ 149s] #include [ 149s] ^ [ 149s] compilation terminated. [ 149s] Makefile:455: recipe for target 'mgcp_protocol.o' failed [ 149s] make[4]: *** [mgcp_protocol.o] Error 1 [ 149s] make[4]: Leaving directory '/usr/src/packages/BUILD/openbsc/src/libmgcp' [ 149s] Makefile:447: recipe for target 'all-recursive' failed [ 149s] make[3]: *** [all-recursive] Error 1 [ 149s] make[3]: Leaving directory '/usr/src/packages/BUILD/openbsc/src' [ 149s] Makefile:518: recipe for target 'all-recursive' failed [ 149s] make[2]: *** [all-recursive] Error 1 [ 149s] make[2]: Leaving directory '/usr/src/packages/BUILD/openbsc' [ 149s] Makefile:427: recipe for target 'all' failed [ 149s] make[1]: *** [all] Error 2 [ 149s] make[1]: Leaving directory '/usr/src/packages/BUILD/openbsc' [ 149s] dh_auto_build: make -j1 returned exit code 2 [ 149s] debian/rules:13: recipe for target 'build' failed [ 149s] make: *** [build] Error 2 [ 149s] dpkg-buildpackage: error: debian/rules build gave error exit status 2 [ 149s] [ 149s] obs-arm-4 failed "build openbsc_1.0.0.20180416.dsc" at Mon Apr 16 20:10:51 UTC 2018. [ 149s] [ 149s] ### VM INTERACTION START ### [ 152s] [ 130.162336] sysrq: SysRq : Power Off [ 152s] [ 130.165697] reboot: Power down [ 152s] ### VM INTERACTION END ### [ 152s] [ 152s] obs-arm-4 failed "build openbsc_1.0.0.20180416.dsc" at Mon Apr 16 20:10:55 UTC 2018. [ 152s] -- Configure notifications at https://build.opensuse.org/user/notifications openSUSE Build Service (https://build.opensuse.org/) From admin at opensuse.org Mon Apr 16 20:11:55 2018 From: admin at opensuse.org (OBS Notification) Date: Mon, 16 Apr 2018 20:11:55 +0000 Subject: Build failure of network:osmocom:nightly/libosmo-netif in Debian_8.0/x86_64 In-Reply-To: References: Message-ID: <5ad5039725a2a_790247668498103a@build.opensuse.org> Visit https://build.opensuse.org/package/live_build_log/network:osmocom:nightly/libosmo-netif/Debian_8.0/x86_64 Package network:osmocom:nightly/libosmo-netif failed to build in Debian_8.0/x86_64 Check out the package for editing: osc checkout network:osmocom:nightly libosmo-netif Last lines of build log: [ 97s] Makefile:464: recipe for target 'jibuf/jibuf_tool.o' failed [ 97s] make[5]: *** [jibuf/jibuf_tool.o] Error 1 [ 97s] make[5]: Leaving directory '/usr/src/packages/BUILD/tests' [ 97s] Makefile:573: recipe for target 'check-am' failed [ 97s] make[4]: *** [check-am] Error 2 [ 97s] make[4]: Leaving directory '/usr/src/packages/BUILD/tests' [ 97s] Makefile:483: recipe for target 'check-recursive' failed [ 97s] make[3]: *** [check-recursive] Error 1 [ 97s] make[3]: Leaving directory '/usr/src/packages/BUILD' [ 97s] Makefile:774: recipe for target 'check' failed [ 97s] make[2]: *** [check] Error 2 [ 97s] make[2]: Leaving directory '/usr/src/packages/BUILD' [ 97s] dh_auto_test: make -j1 check returned exit code 2 [ 97s] debian/rules:31: recipe for target 'override_dh_auto_test' failed [ 97s] make[1]: *** [override_dh_auto_test] Error 1 [ 97s] make[1]: Leaving directory '/usr/src/packages/BUILD' [ 97s] debian/rules:13: recipe for target 'build' failed [ 97s] make: *** [build] Error 2 [ 97s] dpkg-buildpackage: error: debian/rules build gave error exit status 2 [ 97s] [ 97s] lamb53 failed "build libosmo-netif_0.1.1.20180416.dsc" at Mon Apr 16 20:11:50 UTC 2018. [ 97s] [ 97s] ### VM INTERACTION START ### [ 98s] Powering off. [ 98s] [ 90.908752] reboot: Power down [ 98s] ### VM INTERACTION END ### [ 98s] [ 98s] lamb53 failed "build libosmo-netif_0.1.1.20180416.dsc" at Mon Apr 16 20:11:52 UTC 2018. [ 98s] -- Configure notifications at https://build.opensuse.org/user/notifications openSUSE Build Service (https://build.opensuse.org/) From admin at opensuse.org Mon Apr 16 20:12:29 2018 From: admin at opensuse.org (OBS Notification) Date: Mon, 16 Apr 2018 20:12:29 +0000 Subject: Build failure of network:osmocom:nightly/libosmo-netif in Debian_9.0/x86_64 In-Reply-To: References: Message-ID: <5ad503b797313_7902476684981251@build.opensuse.org> Visit https://build.opensuse.org/package/live_build_log/network:osmocom:nightly/libosmo-netif/Debian_9.0/x86_64 Package network:osmocom:nightly/libosmo-netif failed to build in Debian_9.0/x86_64 Check out the package for editing: osc checkout network:osmocom:nightly libosmo-netif Last lines of build log: [ 93s] compilation terminated. [ 93s] Makefile:476: recipe for target 'jibuf/jibuf_tool.o' failed [ 93s] make[5]: *** [jibuf/jibuf_tool.o] Error 1 [ 93s] make[5]: Leaving directory '/usr/src/packages/BUILD/tests' [ 93s] Makefile:585: recipe for target 'check-am' failed [ 93s] make[4]: *** [check-am] Error 2 [ 93s] make[4]: Leaving directory '/usr/src/packages/BUILD/tests' [ 93s] Makefile:494: recipe for target 'check-recursive' failed [ 93s] make[3]: *** [check-recursive] Error 1 [ 93s] make[3]: Leaving directory '/usr/src/packages/BUILD' [ 93s] Makefile:785: recipe for target 'check' failed [ 93s] make[2]: *** [check] Error 2 [ 93s] make[2]: Leaving directory '/usr/src/packages/BUILD' [ 93s] dh_auto_test: make -j1 check VERBOSE=1 returned exit code 2 [ 93s] debian/rules:31: recipe for target 'override_dh_auto_test' failed [ 93s] make[1]: *** [override_dh_auto_test] Error 1 [ 93s] make[1]: Leaving directory '/usr/src/packages/BUILD' [ 93s] debian/rules:13: recipe for target 'build' failed [ 93s] make: *** [build] Error 2 [ 93s] dpkg-buildpackage: error: debian/rules build gave error exit status 2 [ 93s] [ 93s] lamb06 failed "build libosmo-netif_0.1.1.20180416.dsc" at Mon Apr 16 20:12:15 UTC 2018. [ 93s] [ 93s] ### VM INTERACTION START ### [ 96s] [ 88.094668] reboot: Power down [ 96s] ### VM INTERACTION END ### [ 96s] [ 96s] lamb06 failed "build libosmo-netif_0.1.1.20180416.dsc" at Mon Apr 16 20:12:19 UTC 2018. [ 96s] -- Configure notifications at https://build.opensuse.org/user/notifications openSUSE Build Service (https://build.opensuse.org/) From admin at opensuse.org Mon Apr 16 20:13:55 2018 From: admin at opensuse.org (OBS Notification) Date: Mon, 16 Apr 2018 20:13:55 +0000 Subject: Build failure of network:osmocom:nightly/openbsc in xUbuntu_17.10/x86_64 In-Reply-To: References: Message-ID: <5ad5041038e63_790247668498154d@build.opensuse.org> Visit https://build.opensuse.org/package/live_build_log/network:osmocom:nightly/openbsc/xUbuntu_17.10/x86_64 Package network:osmocom:nightly/openbsc failed to build in xUbuntu_17.10/x86_64 Check out the package for editing: osc checkout network:osmocom:nightly openbsc Last lines of build log: [ 72s] ../../include/openbsc/mgcp_internal.h:28:10: fatal error: osmocom/netif/jibuf.h: No such file or directory [ 72s] #include [ 72s] ^~~~~~~~~~~~~~~~~~~~~~~ [ 72s] compilation terminated. [ 72s] Makefile:455: recipe for target 'mgcp_protocol.o' failed [ 73s] make[4]: *** [mgcp_protocol.o] Error 1 [ 73s] make[4]: Leaving directory '/usr/src/packages/BUILD/openbsc/src/libmgcp' [ 73s] Makefile:447: recipe for target 'all-recursive' failed [ 73s] make[3]: *** [all-recursive] Error 1 [ 73s] make[3]: Leaving directory '/usr/src/packages/BUILD/openbsc/src' [ 73s] Makefile:518: recipe for target 'all-recursive' failed [ 73s] make[2]: *** [all-recursive] Error 1 [ 73s] make[2]: Leaving directory '/usr/src/packages/BUILD/openbsc' [ 73s] Makefile:427: recipe for target 'all' failed [ 73s] make[1]: *** [all] Error 2 [ 73s] make[1]: Leaving directory '/usr/src/packages/BUILD/openbsc' [ 73s] dh_auto_build: make -j1 returned exit code 2 [ 73s] debian/rules:13: recipe for target 'build' failed [ 73s] make: *** [build] Error 2 [ 73s] dpkg-buildpackage: error: debian/rules build gave error exit status 2 [ 73s] [ 73s] build84 failed "build openbsc_1.0.0.20180416.dsc" at Mon Apr 16 20:13:48 UTC 2018. [ 73s] [ 73s] ### VM INTERACTION START ### [ 76s] [ 69.372320] reboot: Power down [ 76s] ### VM INTERACTION END ### [ 77s] [ 77s] build84 failed "build openbsc_1.0.0.20180416.dsc" at Mon Apr 16 20:13:53 UTC 2018. [ 77s] -- Configure notifications at https://build.opensuse.org/user/notifications openSUSE Build Service (https://build.opensuse.org/) From admin at opensuse.org Mon Apr 16 20:16:46 2018 From: admin at opensuse.org (OBS Notification) Date: Mon, 16 Apr 2018 20:16:46 +0000 Subject: Build failure of network:osmocom:nightly/openbsc in xUbuntu_16.10/x86_64 In-Reply-To: References: Message-ID: <5ad504c4d1679_7902476684982130@build.opensuse.org> Visit https://build.opensuse.org/package/live_build_log/network:osmocom:nightly/openbsc/xUbuntu_16.10/x86_64 Package network:osmocom:nightly/openbsc failed to build in xUbuntu_16.10/x86_64 Check out the package for editing: osc checkout network:osmocom:nightly openbsc Last lines of build log: [ 85s] ../../include/openbsc/mgcp_internal.h:28:33: fatal error: osmocom/netif/jibuf.h: No such file or directory [ 85s] #include [ 85s] ^ [ 85s] compilation terminated. [ 85s] Makefile:455: recipe for target 'mgcp_protocol.o' failed [ 85s] make[4]: *** [mgcp_protocol.o] Error 1 [ 85s] make[4]: Leaving directory '/usr/src/packages/BUILD/openbsc/src/libmgcp' [ 85s] Makefile:447: recipe for target 'all-recursive' failed [ 85s] make[3]: *** [all-recursive] Error 1 [ 85s] make[3]: Leaving directory '/usr/src/packages/BUILD/openbsc/src' [ 85s] Makefile:518: recipe for target 'all-recursive' failed [ 85s] make[2]: *** [all-recursive] Error 1 [ 85s] make[2]: Leaving directory '/usr/src/packages/BUILD/openbsc' [ 85s] Makefile:427: recipe for target 'all' failed [ 85s] make[1]: *** [all] Error 2 [ 85s] make[1]: Leaving directory '/usr/src/packages/BUILD/openbsc' [ 85s] dh_auto_build: make -j1 returned exit code 2 [ 85s] debian/rules:13: recipe for target 'build' failed [ 85s] make: *** [build] Error 2 [ 85s] dpkg-buildpackage: error: debian/rules build gave error exit status 2 [ 85s] [ 85s] lamb19 failed "build openbsc_1.0.0.20180416.dsc" at Mon Apr 16 20:16:31 UTC 2018. [ 85s] [ 85s] ### VM INTERACTION START ### [ 88s] [ 80.338236] reboot: Power down [ 88s] ### VM INTERACTION END ### [ 88s] [ 88s] lamb19 failed "build openbsc_1.0.0.20180416.dsc" at Mon Apr 16 20:16:34 UTC 2018. [ 88s] -- Configure notifications at https://build.opensuse.org/user/notifications openSUSE Build Service (https://build.opensuse.org/) From admin at opensuse.org Mon Apr 16 20:17:04 2018 From: admin at opensuse.org (OBS Notification) Date: Mon, 16 Apr 2018 20:17:04 +0000 Subject: Build failure of network:osmocom:nightly/openbsc in xUbuntu_16.04/x86_64 In-Reply-To: References: Message-ID: <5ad504c6a08ae_79024766849823b7@build.opensuse.org> Visit https://build.opensuse.org/package/live_build_log/network:osmocom:nightly/openbsc/xUbuntu_16.04/x86_64 Package network:osmocom:nightly/openbsc failed to build in xUbuntu_16.04/x86_64 Check out the package for editing: osc checkout network:osmocom:nightly openbsc Last lines of build log: [ 146s] gcc -DHAVE_CONFIG_H -I. -I../.. -I../../include -I../.. -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -I/usr/include/ -I/usr/include/ -I/usr/include/ -g -O2 -fPIE -fstack-protector-strong -Wformat -Werror=format-security -Werror=implicit -Werror=maybe-uninitialized -Werror=memset-transposed-args -Werror=sizeof-array-argument -Werror=sizeof-pointer-memaccess -c -o mgcp_protocol.o mgcp_protocol.c [ 146s] In file included from mgcp_protocol.c:37:0: [ 146s] ../../include/openbsc/mgcp_internal.h:28:33: fatal error: osmocom/netif/jibuf.h: No such file or directory [ 146s] compilation terminated. [ 146s] Makefile:455: recipe for target 'mgcp_protocol.o' failed [ 146s] make[4]: *** [mgcp_protocol.o] Error 1 [ 146s] make[4]: Leaving directory '/usr/src/packages/BUILD/openbsc/src/libmgcp' [ 146s] Makefile:447: recipe for target 'all-recursive' failed [ 146s] make[3]: *** [all-recursive] Error 1 [ 146s] make[3]: Leaving directory '/usr/src/packages/BUILD/openbsc/src' [ 146s] Makefile:518: recipe for target 'all-recursive' failed [ 146s] make[2]: *** [all-recursive] Error 1 [ 146s] make[2]: Leaving directory '/usr/src/packages/BUILD/openbsc' [ 146s] Makefile:427: recipe for target 'all' failed [ 146s] make[1]: *** [all] Error 2 [ 146s] make[1]: Leaving directory '/usr/src/packages/BUILD/openbsc' [ 146s] dh_auto_build: make -j1 returned exit code 2 [ 146s] debian/rules:13: recipe for target 'build' failed [ 146s] make: *** [build] Error 2 [ 146s] dpkg-buildpackage: error: debian/rules build gave error exit status 2 [ 146s] [ 146s] cloud128 failed "build openbsc_1.0.0.20180416.dsc" at Mon Apr 16 20:16:41 UTC 2018. [ 146s] [ 146s] ### VM INTERACTION START ### [ 150s] [ 131.594769] reboot: Power down [ 151s] ### VM INTERACTION END ### [ 152s] [ 152s] cloud128 failed "build openbsc_1.0.0.20180416.dsc" at Mon Apr 16 20:16:46 UTC 2018. [ 152s] -- Configure notifications at https://build.opensuse.org/user/notifications openSUSE Build Service (https://build.opensuse.org/) From admin at opensuse.org Mon Apr 16 20:17:38 2018 From: admin at opensuse.org (OBS Notification) Date: Mon, 16 Apr 2018 20:17:38 +0000 Subject: Build failure of network:osmocom:nightly/openbsc in Debian_9.0/x86_64 In-Reply-To: References: Message-ID: <5ad504ff6f831_79024766849827b@build.opensuse.org> Visit https://build.opensuse.org/package/live_build_log/network:osmocom:nightly/openbsc/Debian_9.0/x86_64 Package network:osmocom:nightly/openbsc failed to build in Debian_9.0/x86_64 Check out the package for editing: osc checkout network:osmocom:nightly openbsc Last lines of build log: [ 82s] ../../include/openbsc/mgcp_internal.h:28:33: fatal error: osmocom/netif/jibuf.h: No such file or directory [ 82s] #include [ 82s] ^ [ 82s] compilation terminated. [ 82s] Makefile:455: recipe for target 'mgcp_protocol.o' failed [ 82s] make[4]: *** [mgcp_protocol.o] Error 1 [ 82s] make[4]: Leaving directory '/usr/src/packages/BUILD/openbsc/src/libmgcp' [ 82s] Makefile:447: recipe for target 'all-recursive' failed [ 82s] make[3]: *** [all-recursive] Error 1 [ 82s] make[3]: Leaving directory '/usr/src/packages/BUILD/openbsc/src' [ 82s] Makefile:518: recipe for target 'all-recursive' failed [ 82s] make[2]: *** [all-recursive] Error 1 [ 82s] make[2]: Leaving directory '/usr/src/packages/BUILD/openbsc' [ 82s] Makefile:427: recipe for target 'all' failed [ 82s] make[1]: *** [all] Error 2 [ 82s] make[1]: Leaving directory '/usr/src/packages/BUILD/openbsc' [ 82s] dh_auto_build: make -j1 returned exit code 2 [ 82s] debian/rules:13: recipe for target 'build' failed [ 82s] make: *** [build] Error 2 [ 82s] dpkg-buildpackage: error: debian/rules build gave error exit status 2 [ 82s] [ 82s] lamb59 failed "build openbsc_1.0.0.20180416.dsc" at Mon Apr 16 20:17:29 UTC 2018. [ 82s] [ 82s] ### VM INTERACTION START ### [ 85s] [ 77.506453] reboot: Power down [ 85s] ### VM INTERACTION END ### [ 85s] [ 85s] lamb59 failed "build openbsc_1.0.0.20180416.dsc" at Mon Apr 16 20:17:32 UTC 2018. [ 85s] -- Configure notifications at https://build.opensuse.org/user/notifications openSUSE Build Service (https://build.opensuse.org/) From admin at opensuse.org Mon Apr 16 20:17:38 2018 From: admin at opensuse.org (OBS Notification) Date: Mon, 16 Apr 2018 20:17:38 +0000 Subject: Build failure of network:osmocom:nightly/openbsc in Debian_8.0/x86_64 In-Reply-To: References: Message-ID: <5ad504ffa9fa9_79024766849828b9@build.opensuse.org> Visit https://build.opensuse.org/package/live_build_log/network:osmocom:nightly/openbsc/Debian_8.0/x86_64 Package network:osmocom:nightly/openbsc failed to build in Debian_8.0/x86_64 Check out the package for editing: osc checkout network:osmocom:nightly openbsc Last lines of build log: [ 94s] #include [ 94s] ^ [ 94s] compilation terminated. [ 94s] Makefile:443: recipe for target 'mgcp_protocol.o' failed [ 94s] make[4]: *** [mgcp_protocol.o] Error 1 [ 94s] make[4]: Leaving directory '/usr/src/packages/BUILD/openbsc/src/libmgcp' [ 94s] Makefile:435: recipe for target 'all-recursive' failed [ 94s] make[3]: *** [all-recursive] Error 1 [ 94s] make[3]: Leaving directory '/usr/src/packages/BUILD/openbsc/src' [ 94s] Makefile:507: recipe for target 'all-recursive' failed [ 94s] make[2]: *** [all-recursive] Error 1 [ 94s] make[2]: Leaving directory '/usr/src/packages/BUILD/openbsc' [ 94s] Makefile:415: recipe for target 'all' failed [ 94s] make[1]: *** [all] Error 2 [ 94s] make[1]: Leaving directory '/usr/src/packages/BUILD/openbsc' [ 94s] dh_auto_build: make -j1 returned exit code 2 [ 94s] debian/rules:13: recipe for target 'build' failed [ 94s] make: *** [build] Error 2 [ 94s] dpkg-buildpackage: error: debian/rules build gave error exit status 2 [ 94s] [ 94s] lamb53 failed "build openbsc_1.0.0.20180416.dsc" at Mon Apr 16 20:17:31 UTC 2018. [ 94s] [ 94s] ### VM INTERACTION START ### [ 95s] Powering off. [ 95s] [ 88.305247] reboot: Power down [ 95s] ### VM INTERACTION END ### [ 95s] [ 95s] lamb53 failed "build openbsc_1.0.0.20180416.dsc" at Mon Apr 16 20:17:33 UTC 2018. [ 95s] -- Configure notifications at https://build.opensuse.org/user/notifications openSUSE Build Service (https://build.opensuse.org/) From admin at opensuse.org Mon Apr 16 20:17:55 2018 From: admin at opensuse.org (OBS Notification) Date: Mon, 16 Apr 2018 20:17:55 +0000 Subject: Build failure of network:osmocom:nightly/openbsc in xUbuntu_17.04/x86_64 In-Reply-To: References: Message-ID: <5ad50501afad2_790247668498313f@build.opensuse.org> Visit https://build.opensuse.org/package/live_build_log/network:osmocom:nightly/openbsc/xUbuntu_17.04/x86_64 Package network:osmocom:nightly/openbsc failed to build in xUbuntu_17.04/x86_64 Check out the package for editing: osc checkout network:osmocom:nightly openbsc Last lines of build log: [ 98s] ../../include/openbsc/mgcp_internal.h:28:33: fatal error: osmocom/netif/jibuf.h: No such file or directory [ 98s] #include [ 98s] ^ [ 98s] compilation terminated. [ 98s] Makefile:455: recipe for target 'mgcp_protocol.o' failed [ 98s] make[4]: *** [mgcp_protocol.o] Error 1 [ 98s] make[4]: Leaving directory '/usr/src/packages/BUILD/openbsc/src/libmgcp' [ 98s] Makefile:447: recipe for target 'all-recursive' failed [ 98s] make[3]: *** [all-recursive] Error 1 [ 98s] make[3]: Leaving directory '/usr/src/packages/BUILD/openbsc/src' [ 98s] Makefile:518: recipe for target 'all-recursive' failed [ 98s] make[2]: *** [all-recursive] Error 1 [ 98s] make[2]: Leaving directory '/usr/src/packages/BUILD/openbsc' [ 98s] Makefile:427: recipe for target 'all' failed [ 98s] make[1]: *** [all] Error 2 [ 98s] make[1]: Leaving directory '/usr/src/packages/BUILD/openbsc' [ 98s] dh_auto_build: make -j1 returned exit code 2 [ 98s] debian/rules:13: recipe for target 'build' failed [ 98s] make: *** [build] Error 2 [ 98s] dpkg-buildpackage: error: debian/rules build gave error exit status 2 [ 98s] [ 98s] lamb56 failed "build openbsc_1.0.0.20180416.dsc" at Mon Apr 16 20:17:40 UTC 2018. [ 98s] [ 98s] ### VM INTERACTION START ### [ 102s] [ 94.385422] reboot: Power down [ 102s] ### VM INTERACTION END ### [ 102s] [ 102s] lamb56 failed "build openbsc_1.0.0.20180416.dsc" at Mon Apr 16 20:17:44 UTC 2018. [ 102s] -- Configure notifications at https://build.opensuse.org/user/notifications openSUSE Build Service (https://build.opensuse.org/) From gerrit-no-reply at lists.osmocom.org Mon Apr 16 20:38:03 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Mon, 16 Apr 2018 20:38:03 +0000 Subject: [ABANDON] openbsc[master]: Fix build after recent rate_ctr patches In-Reply-To: References: Message-ID: Harald Welte has abandoned this change. Change subject: Fix build after recent rate_ctr patches ...................................................................... Abandoned -- To view, visit https://gerrit.osmocom.org/4416 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: abandon Gerrit-Change-Id: I84558866b478abeb19855a771c9cb6483d04cca0 Gerrit-PatchSet: 1 Gerrit-Project: openbsc Gerrit-Branch: master Gerrit-Owner: Harald Welte Gerrit-Reviewer: Jenkins Builder From gerrit-no-reply at lists.osmocom.org Mon Apr 16 20:38:17 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Mon, 16 Apr 2018 20:38:17 +0000 Subject: [ABANDON] openbsc[master]: libmsc/db: Prevent subscr->extension without NULL termination In-Reply-To: References: Message-ID: Harald Welte has abandoned this change. Change subject: libmsc/db: Prevent subscr->extension without NULL termination ...................................................................... Abandoned -- To view, visit https://gerrit.osmocom.org/1311 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: abandon Gerrit-Change-Id: Ic1ae7b2d9dde8dab8f7795e5baa8918424f5f393 Gerrit-PatchSet: 4 Gerrit-Project: openbsc Gerrit-Branch: master Gerrit-Owner: Harald Welte Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder From gerrit-no-reply at lists.osmocom.org Mon Apr 16 20:39:12 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Mon, 16 Apr 2018 20:39:12 +0000 Subject: osmo-mgw[master]: stats: use libosmocore rate counter for in/out_stream.err_ts... In-Reply-To: References: Message-ID: Patch Set 2: comments were not addressed, patch seems to just have been rebased. -- To view, visit https://gerrit.osmocom.org/7555 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I67aa7a8602f60366ef3ba2c5b1319b1b85719f64 Gerrit-PatchSet: 2 Gerrit-Project: osmo-mgw Gerrit-Branch: master Gerrit-Owner: dexter Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Stefan Sperling Gerrit-Reviewer: neels Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Mon Apr 16 20:39:40 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Mon, 16 Apr 2018 20:39:40 +0000 Subject: osmo-ttcn3-hacks[master]: BSC_Tests: Assign g_pars in TC_assignment_sign In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7836 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Iad65d8ff8bfb98df2b212c69916f1e74dc2c61af Gerrit-PatchSet: 1 Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Owner: dexter Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Mon Apr 16 20:39:43 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Mon, 16 Apr 2018 20:39:43 +0000 Subject: [MERGED] osmo-ttcn3-hacks[master]: BSC_Tests: Assign g_pars in TC_assignment_sign In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: BSC_Tests: Assign g_pars in TC_assignment_sign ...................................................................... BSC_Tests: Assign g_pars in TC_assignment_sign The testcase TC_assignment_sign does not assign g_pars in its test function. However, it assigns local variable pars but then never uses it. - remove local variable pars and assign g_pars instead Change-Id: Iad65d8ff8bfb98df2b212c69916f1e74dc2c61af Related: OS#2762 --- M bsc/BSC_Tests.ttcn 1 file changed, 1 insertion(+), 1 deletion(-) Approvals: Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/bsc/BSC_Tests.ttcn b/bsc/BSC_Tests.ttcn index 0dfb708..8380175 100644 --- a/bsc/BSC_Tests.ttcn +++ b/bsc/BSC_Tests.ttcn @@ -1558,7 +1558,7 @@ private function f_tc_assignment_sign(charstring id) runs on MSC_ConnHdlr { - var TestHdlrParams pars := valueof(t_def_TestHdlrPars); + g_pars := valueof(t_def_TestHdlrPars); var template PDU_BSSAP exp_compl := tr_BSSMAP_AssignmentComplete(omit, omit); var PDU_BSSAP ass_cmd := valueof(ts_BSSMAP_AssignmentReq(omit, omit)); -- To view, visit https://gerrit.osmocom.org/7836 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: Iad65d8ff8bfb98df2b212c69916f1e74dc2c61af Gerrit-PatchSet: 2 Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Owner: dexter Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder From gerrit-no-reply at lists.osmocom.org Mon Apr 16 20:41:54 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Mon, 16 Apr 2018 20:41:54 +0000 Subject: osmo-ttcn3-hacks[master]: BSC_Tests: handle mode modify also for signalling In-Reply-To: References: Message-ID: Patch Set 1: Code-Review-1 why would we want a MODE MODIFY handling in a pure signaling assignment? What kind of modification is performed there? The channel is in SIGNALING mode from the point of immediate assignment onwards, and it still is in SIGNALING mode at the time we receive an assignment command (sign). So in this situation the expectation is that there's no modification (that would be signalling->speech) and no assignment (as that would change to a different channel). So all in all, there should just be BSSAP ASS CMD and BSSAP ASS CMPL with nothing happening at all on the RSL side. Please correct me if you think differenly -- To view, visit https://gerrit.osmocom.org/7837 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Ie0e5f15c1a13b773a7693918942e7ff92dfb99d6 Gerrit-PatchSet: 1 Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Owner: dexter Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Mon Apr 16 20:43:53 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Mon, 16 Apr 2018 20:43:53 +0000 Subject: osmo-bsc[master]: gscon: fix assignment of signalling channels In-Reply-To: References: Message-ID: Patch Set 1: Code-Review-1 (1 comment) https://gerrit.osmocom.org/#/c/7838/1/src/libbsc/bsc_subscr_conn_fsm.c File src/libbsc/bsc_subscr_conn_fsm.c: Line 244: if (!voice) { I think this is inverted logic here. "voice" parameter should indicate if it is a voice assingment (true) or not (false). But you're now checking if it's *not* a voice assignment, and then add speech codec related bits in such cases? -- To view, visit https://gerrit.osmocom.org/7838 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I316ebcb1f27b668e17fe48fff028e047aac47f76 Gerrit-PatchSet: 1 Gerrit-Project: osmo-bsc Gerrit-Branch: master Gerrit-Owner: dexter Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-HasComments: Yes From admin at opensuse.org Mon Apr 16 20:44:29 2018 From: admin at opensuse.org (OBS Notification) Date: Mon, 16 Apr 2018 20:44:29 +0000 Subject: Build failure of network:osmocom:nightly/libosmo-netif in Debian_9.0/armv7l In-Reply-To: References: Message-ID: <5ad50b3786c17_7902476684989898@build.opensuse.org> Visit https://build.opensuse.org/package/live_build_log/network:osmocom:nightly/libosmo-netif/Debian_9.0/armv7l Package network:osmocom:nightly/libosmo-netif failed to build in Debian_9.0/armv7l Check out the package for editing: osc checkout network:osmocom:nightly libosmo-netif Last lines of build log: [ 206s] Makefile:476: recipe for target 'jibuf/jibuf_tool.o' failed [ 206s] make[5]: *** [jibuf/jibuf_tool.o] Error 1 [ 206s] make[5]: Leaving directory '/usr/src/packages/BUILD/tests' [ 206s] Makefile:585: recipe for target 'check-am' failed [ 206s] make[4]: *** [check-am] Error 2 [ 206s] make[4]: Leaving directory '/usr/src/packages/BUILD/tests' [ 206s] Makefile:494: recipe for target 'check-recursive' failed [ 206s] make[3]: *** [check-recursive] Error 1 [ 206s] make[3]: Leaving directory '/usr/src/packages/BUILD' [ 206s] Makefile:785: recipe for target 'check' failed [ 206s] make[2]: *** [check] Error 2 [ 206s] make[2]: Leaving directory '/usr/src/packages/BUILD' [ 206s] dh_auto_test: make -j1 check VERBOSE=1 returned exit code 2 [ 206s] debian/rules:31: recipe for target 'override_dh_auto_test' failed [ 206s] make[1]: *** [override_dh_auto_test] Error 1 [ 206s] make[1]: Leaving directory '/usr/src/packages/BUILD' [ 206s] debian/rules:13: recipe for target 'build' failed [ 206s] make: *** [build] Error 2 [ 206s] dpkg-buildpackage: error: debian/rules build gave error exit status 2 [ 206s] [ 206s] armbuild15 failed "build libosmo-netif_0.1.1.20180416.dsc" at Mon Apr 16 20:44:19 UTC 2018. [ 206s] [ 206s] ### VM INTERACTION START ### [ 209s] [ 175.137606] sysrq: SysRq : Power Off [ 209s] [ 175.139900] reboot: Power down [ 209s] ### VM INTERACTION END ### [ 209s] [ 209s] armbuild15 failed "build libosmo-netif_0.1.1.20180416.dsc" at Mon Apr 16 20:44:23 UTC 2018. [ 209s] -- Configure notifications at https://build.opensuse.org/user/notifications openSUSE Build Service (https://build.opensuse.org/) From admin at opensuse.org Mon Apr 16 20:51:55 2018 From: admin at opensuse.org (OBS Notification) Date: Mon, 16 Apr 2018 20:51:55 +0000 Subject: Build failure of network:osmocom:nightly/openbsc in Debian_9.0/armv7l In-Reply-To: References: Message-ID: <5ad50cfa76606_790247668499159a@build.opensuse.org> Visit https://build.opensuse.org/package/live_build_log/network:osmocom:nightly/openbsc/Debian_9.0/armv7l Package network:osmocom:nightly/openbsc failed to build in Debian_9.0/armv7l Check out the package for editing: osc checkout network:osmocom:nightly openbsc Last lines of build log: [ 163s] #include [ 163s] ^ [ 163s] compilation terminated. [ 163s] Makefile:455: recipe for target 'mgcp_protocol.o' failed [ 163s] make[4]: *** [mgcp_protocol.o] Error 1 [ 163s] make[4]: Leaving directory '/usr/src/packages/BUILD/openbsc/src/libmgcp' [ 163s] Makefile:447: recipe for target 'all-recursive' failed [ 163s] make[3]: *** [all-recursive] Error 1 [ 163s] make[3]: Leaving directory '/usr/src/packages/BUILD/openbsc/src' [ 163s] Makefile:518: recipe for target 'all-recursive' failed [ 163s] make[2]: *** [all-recursive] Error 1 [ 163s] make[2]: Leaving directory '/usr/src/packages/BUILD/openbsc' [ 163s] Makefile:427: recipe for target 'all' failed [ 163s] make[1]: *** [all] Error 2 [ 163s] make[1]: Leaving directory '/usr/src/packages/BUILD/openbsc' [ 163s] dh_auto_build: make -j1 returned exit code 2 [ 163s] debian/rules:13: recipe for target 'build' failed [ 163s] make: *** [build] Error 2 [ 163s] dpkg-buildpackage: error: debian/rules build gave error exit status 2 [ 163s] [ 163s] armbuild16 failed "build openbsc_1.0.0.20180416.dsc" at Mon Apr 16 20:51:51 UTC 2018. [ 163s] [ 163s] ### VM INTERACTION START ### [ 166s] [ 133.393182] SysRq : Power Off [ 166s] [ 133.394645] reboot: Power down [ 166s] ### VM INTERACTION END ### [ 166s] [ 166s] armbuild16 failed "build openbsc_1.0.0.20180416.dsc" at Mon Apr 16 20:51:54 UTC 2018. [ 166s] -- Configure notifications at https://build.opensuse.org/user/notifications openSUSE Build Service (https://build.opensuse.org/) From gerrit-no-reply at lists.osmocom.org Mon Apr 16 20:54:43 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Mon, 16 Apr 2018 20:54:43 +0000 Subject: [PATCH] libosmocore[master]: prevent integer underflow in ipa_ccm_make_id_resp_from_req() Message-ID: Review at https://gerrit.osmocom.org/7840 prevent integer underflow in ipa_ccm_make_id_resp_from_req() don't blindly trust the tag-length value in an IPA CCM ID GET message. This could result in a remotely-triggered integer underflow. Change-Id: I4723361e1094b358310541a7dc4c5c921c778a15 --- M src/gsm/ipa.c 1 file changed, 6 insertions(+), 1 deletion(-) git pull ssh://gerrit.osmocom.org:29418/libosmocore refs/changes/40/7840/1 diff --git a/src/gsm/ipa.c b/src/gsm/ipa.c index e03f615..0c7aaad 100644 --- a/src/gsm/ipa.c +++ b/src/gsm/ipa.c @@ -328,7 +328,12 @@ ies[num_ies++] = t_tag; cur += t_len; - len -= t_len; + /* prevent any unsigned integer underflow due to somebody sending us + * messages with wrong length values */ + if (len <= t_len) + len -= t_len; + else + len = 0; } return ipa_ccm_make_id_resp(dev, ies, num_ies); } -- To view, visit https://gerrit.osmocom.org/7840 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I4723361e1094b358310541a7dc4c5c921c778a15 Gerrit-PatchSet: 1 Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Owner: Harald Welte From gerrit-no-reply at lists.osmocom.org Mon Apr 16 20:56:22 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Mon, 16 Apr 2018 20:56:22 +0000 Subject: [PATCH] libosmo-sccp[master]: ipa_asp_fsm: Prevent against integer underflow Message-ID: Review at https://gerrit.osmocom.org/7841 ipa_asp_fsm: Prevent against integer underflow Ensure we don't pass a negative integer as "unsigned int len" to ipa_asp_fsm_wait_id_get(). This could result in a remotely-triggered integer underflow. Change-Id: Idf9a5c0938e6ae6d47bf85ddfec3306fa3ddb3ce --- M src/xua_asp_fsm.c 1 file changed, 5 insertions(+), 0 deletions(-) git pull ssh://gerrit.osmocom.org:29418/libosmo-sccp refs/changes/41/7841/1 diff --git a/src/xua_asp_fsm.c b/src/xua_asp_fsm.c index e81f0af..93c76cb 100644 --- a/src/xua_asp_fsm.c +++ b/src/xua_asp_fsm.c @@ -881,6 +881,11 @@ data_len = msgb_l2len(msg_get)-1; LOGPFSM(fi, "Received IPA CCM IDENTITY REQUEST for IEs %s\n", osmo_hexdump(req_data, data_len)); + /* avoid possible unsigned integer underflow, as ipa_ccm_make_id_resp_from_req() + * expects an unsigned integer, and in case of a zero-length L2 message we might + * have data_len == -1 here */ + if (data_len < 0) + data_len = 0; /* Send ID_RESP to server */ msg_resp = ipa_ccm_make_id_resp_from_req(iafp->ipa_unit, req_data, data_len); if (!msg_resp) { -- To view, visit https://gerrit.osmocom.org/7841 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Idf9a5c0938e6ae6d47bf85ddfec3306fa3ddb3ce Gerrit-PatchSet: 1 Gerrit-Project: libosmo-sccp Gerrit-Branch: master Gerrit-Owner: Harald Welte From jenkins at lists.osmocom.org Mon Apr 16 23:20:27 2018 From: jenkins at lists.osmocom.org (jenkins at lists.osmocom.org) Date: Mon, 16 Apr 2018 23:20:27 +0000 (UTC) Subject: =?UTF-8?Q?Jenkins_build_is_back_to_norm?= =?UTF-8?Q?al_:_master-osmo-bts_=C2=BB_lc15,or?= =?UTF-8?Q?igin/nrw/litecell15-next,default,osmocom-master-debian9_#516?= In-Reply-To: <961292248.375.1523893118323.JavaMail.jenkins@jenkins.osmocom.org> References: <961292248.375.1523893118323.JavaMail.jenkins@jenkins.osmocom.org> Message-ID: <946445554.384.1523920827489.JavaMail.jenkins@jenkins.osmocom.org> See From gerrit-no-reply at lists.osmocom.org Tue Apr 17 01:42:08 2018 From: gerrit-no-reply at lists.osmocom.org (Neels Hofmeyr) Date: Tue, 17 Apr 2018 01:42:08 +0000 Subject: [PATCH] libosmocore[master]: tlv: add TLV_GET() and TLV_GET_MINLEN() Message-ID: Review at https://gerrit.osmocom.org/7842 tlv: add TLV_GET() and TLV_GET_MINLEN() Rationale: so far we use code like if (TLVP_PRESENT(&tp, VERY_LONG_ENUM_VALUE_NAME_THAT_NEVER_ENDS)) { val = TLVP_VAL(&tp, VERY_LONG_ENUM_VALUE_NAME_THAT_NEVER_ENDS); len = TLVP_LEN(&tp, VERY_L0NG_ENUM_VALUE_NAME_TH4T_NEVER_EMDS); } This is a) very long and b) prone to picking the wrong name one of the three times, which would use the wrong length or val without necessarily being noticed. A safer and shorter, more readable pattern is: struct tlv_p_entry *e = TVLP_GET(&tp, VERY_LONG_ENUM_VALUE_NAME_THAT_NEVER_ENDS); if (!e) return -ENOENT; hexdump(e->val, e->len); Change-Id: I445de17fc2daa3ab051f5708dd0cc185b23dc048 --- M include/osmocom/gsm/tlv.h 1 file changed, 10 insertions(+), 0 deletions(-) git pull ssh://gerrit.osmocom.org:29418/libosmocore refs/changes/42/7842/1 diff --git a/include/osmocom/gsm/tlv.h b/include/osmocom/gsm/tlv.h index 996f6aa..8fc7693 100644 --- a/include/osmocom/gsm/tlv.h +++ b/include/osmocom/gsm/tlv.h @@ -446,6 +446,16 @@ #define TLVP_PRES_LEN(tp, tag, min_len) \ (TLVP_PRESENT(tp, tag) && TLVP_LEN(tp, tag) >= min_len) +/* Usage: + * struct tlv_p_entry *e = TVLP_GET(&tp, TAG); + * if (!e) + * return -ENOENT; + * hexdump(e->val, e->len); + */ +#define TLVP_GET(_tp, tag) (TLVP_PRESENT(_tp, tag)? &_tp->lv[tag] : NULL) +#define TLVP_GET_MINLEN(_tp, tag, min_len) \ + (TLVP_PRES_LEN(_tp, tag, min_len)? &_tp->lv[tag] : NULL) + /*! Align given TLV element with 16 bit value to an even address * \param[in] tp pointer to \ref tlv_parsed * \param[in] pos element to return -- To view, visit https://gerrit.osmocom.org/7842 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I445de17fc2daa3ab051f5708dd0cc185b23dc048 Gerrit-PatchSet: 1 Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr From gerrit-no-reply at lists.osmocom.org Tue Apr 17 01:42:09 2018 From: gerrit-no-reply at lists.osmocom.org (Neels Hofmeyr) Date: Tue, 17 Apr 2018 01:42:09 +0000 Subject: [PATCH] libosmocore[master]: add gsm0808_cell_{id, id_list}_name() and friends Message-ID: Review at https://gerrit.osmocom.org/7843 add gsm0808_cell_{id,id_list}_name() and friends Provide comprehensive API to obtain string representations of Cell Identifiers and -Lists. Change gsm0808_test.c to use the new functions (which simplifies the output a bit), so that we don't duplicate printing code in gsm0808_test.c, and so that the not-so-trivial printing code is also tested. In gsm0808_test, also test gsm0808_cell_id_list_name_buf()'s return value and truncation behavior. The rationale for gsm0808_cell_id_list_name(), i.e. printing an entire list of cell identifiers, is that even though the maximum is 127 elements, a list of more than a few elements is hardly ever expected in practice (even more than one element isn't actually expected: either "entire BSS" or a single LAC). It is thus useful to log the entire list when it shows up in Paging and Handover. Change-Id: I9b2106805422f96c5cc96ebb9178451355582df3 --- M include/osmocom/gsm/gsm0808_utils.h M include/osmocom/gsm/protocol/gsm_08_08.h M src/gsm/gsm0808_utils.c M src/gsm/libosmogsm.map M tests/gsm0808/gsm0808_test.c M tests/gsm0808/gsm0808_test.ok 6 files changed, 199 insertions(+), 98 deletions(-) git pull ssh://gerrit.osmocom.org:29418/libosmocore refs/changes/43/7843/1 diff --git a/include/osmocom/gsm/gsm0808_utils.h b/include/osmocom/gsm/gsm0808_utils.h index 8e71b43..c007c28 100644 --- a/include/osmocom/gsm/gsm0808_utils.h +++ b/include/osmocom/gsm/gsm0808_utils.h @@ -55,6 +55,16 @@ unsigned int id_list_len; }; +extern const struct value_string gsm0808_cell_id_discr_names[]; +static inline const char *gsm0808_cell_id_discr_name(enum CELL_IDENT id_discr) +{ return get_value_string(gsm0808_cell_id_discr_names, id_discr); } + +const char *gsm0808_cell_id_name(const struct gsm0808_cell_id *cid); +const char *gsm0808_cell_id_list_name(const struct gsm0808_cell_id_list2 *cil); +int gsm0808_cell_id_list_name_buf(char *buf, size_t buflen, const struct gsm0808_cell_id_list2 *cil); +int gsm0808_cell_id_u_name(char *buf, size_t buflen, + enum CELL_IDENT id_discr, const union gsm0808_cell_id_u *u); + uint8_t gsm0808_enc_aoip_trasp_addr(struct msgb *msg, const struct sockaddr_storage *ss); int gsm0808_dec_aoip_trasp_addr(struct sockaddr_storage *ss, diff --git a/include/osmocom/gsm/protocol/gsm_08_08.h b/include/osmocom/gsm/protocol/gsm_08_08.h index 4539b96..5d2864f 100644 --- a/include/osmocom/gsm/protocol/gsm_08_08.h +++ b/include/osmocom/gsm/protocol/gsm_08_08.h @@ -10,7 +10,8 @@ /* * this is from GSM 03.03 CGI but is copied in GSM 08.08 - * in ? 3.2.2.27 for Cell Identifier List + * in ? 3.2.2.27 for Cell Identifier List. + * See gsm0808_cell_id_discr_name() for a human readable representation. */ enum CELL_IDENT { CELL_IDENT_WHOLE_GLOBAL = 0, diff --git a/src/gsm/gsm0808_utils.c b/src/gsm/gsm0808_utils.c index 73d9362..7ed4873 100644 --- a/src/gsm/gsm0808_utils.c +++ b/src/gsm/gsm0808_utils.c @@ -1130,4 +1130,132 @@ return 0; } +/*! Print a human readable name of the cell identifier to the char buffer. + * This is useful both for struct gsm0808_cell_id and struct gsm0808_cell_id_list2. + * See also gsm0808_cell_id_name() and gsm0808_cell_id_list_name(). + * \param[out] buf Destination buffer to write string representation to. + * \param[in] buflen Amount of memory available in \a buf. + * \param[in] id_discr Cell Identifier type. + * \param[in] u Cell Identifer value. + * \returns Like snprintf(): the amount of characters (excluding terminating nul) written, + * or that would have been written if the buffer were large enough. + */ +int gsm0808_cell_id_u_name(char *buf, size_t buflen, + enum CELL_IDENT id_discr, const union gsm0808_cell_id_u *u) +{ + switch (id_discr) { + case CELL_IDENT_LAC: + return snprintf(buf, buflen, "%u", u->lac); + case CELL_IDENT_CI: + return snprintf(buf, buflen, "%u", u->ci); + case CELL_IDENT_LAC_AND_CI: + return snprintf(buf, buflen, "%u-%u", u->lac_and_ci.lac, u->lac_and_ci.ci); + case CELL_IDENT_LAI_AND_LAC: + return snprintf(buf, buflen, "%s", osmo_lai_name(&u->lai_and_lac)); + case CELL_IDENT_WHOLE_GLOBAL: + return snprintf(buf, buflen, "%s", osmo_cgi_name(&u->global)); + default: + /* For CELL_IDENT_BSS and CELL_IDENT_NO_CELL, just print the discriminator. + * Same for kinds we have no string representation of yet. */ + return snprintf(buf, buflen, "%s", gsm0808_cell_id_discr_name(id_discr)); + } +} + +/*! value_string[] for enum CELL_IDENT. */ +const struct value_string gsm0808_cell_id_discr_names[] = { + { CELL_IDENT_WHOLE_GLOBAL, "CGI" }, + { CELL_IDENT_LAC_AND_CI, "LAC-CI" }, + { CELL_IDENT_CI, "CI" }, + { CELL_IDENT_NO_CELL, "NO-CELL" }, + { CELL_IDENT_LAI_AND_LAC, "LAI" }, + { CELL_IDENT_LAC, "LAC" }, + { CELL_IDENT_BSS, "BSS" }, + { CELL_IDENT_UTRAN_PLMN_LAC_RNC, "UTRAN-PLMN-LAC-RNC" }, + { CELL_IDENT_UTRAN_RNC, "UTRAN-RNC" }, + { CELL_IDENT_UTRAN_LAC_RNC, "UTRAN-LAC-RNC" }, + { 0, NULL } +}; + +#define APPEND_THING(func, args...) do { \ + int remain = buflen - (pos - buf); \ + int l = func(pos, remain, ##args); \ + if (l < 0 || l > remain) \ + pos = buf + buflen; \ + else \ + pos += l; \ + if (l > 0) \ + total_len += l; \ + } while(0) +#define APPEND_STR(fmt, args...) APPEND_THING(snprintf, fmt, ##args) +#define APPEND_CELL_ID_U(DISCR, U) APPEND_THING(gsm0808_cell_id_u_name, DISCR, U) + +/*! Return a human readable representation of a Cell Identifier, like "LAC:123" + * or "CGI:001-01-42-23". + * \param[in] cid Cell Identifer. + * \returns String in a static buffer. + */ +const char *gsm0808_cell_id_name(const struct gsm0808_cell_id *cid) +{ + static char buf[64]; + const size_t buflen = sizeof(buf); + char *pos = buf; + int total_len = 0; + APPEND_STR("%s:", gsm0808_cell_id_discr_name(cid->id_discr)); + APPEND_CELL_ID_U(cid->id_discr, &cid->id); + return buf; +} + +/*! Return a human readable representation of the Cell Identifier List, like + * "LAC[2]:{123, 456}". + * The return value semantics are like snprintf() and thus allow ensuring a complete + * untruncated string by determining the required string length from the return value. + * If buflen > 0, always nul-terminate the string in buf, also when it is truncated. + * If buflen == 0, do not modify buf, just return the would-be length. + * \param[out] buf Destination buffer to write string representation to. + * \param[in] buflen Amount of memory available in \a buf. + * \param[in] cil Cell Identifer List. + * \returns Like snprintf(): the amount of characters (excluding terminating nul) written, + * or that would have been written if the buffer were large enough. + */ +int gsm0808_cell_id_list_name_buf(char *buf, size_t buflen, const struct gsm0808_cell_id_list2 *cil) +{ + char *pos = buf; + int total_len = 0; + int i; + + APPEND_STR("%s[%u]", gsm0808_cell_id_discr_name(cil->id_discr), cil->id_list_len); + + switch (cil->id_discr) { + case CELL_IDENT_BSS: + case CELL_IDENT_NO_CELL: + return total_len; + default: + break; + } + + APPEND_STR(":{"); + + for (i = 0; i < cil->id_list_len; i++) { + if (i) + APPEND_STR(", "); + APPEND_CELL_ID_U(cil->id_discr, &cil->id_list[i]); + } + + APPEND_STR("}"); + return total_len; +} + +/*! Return a human-readable representation of \a cil in a static buffer. + * If the list is too long, the output may be truncated. + * See also gsm0808_cell_id_list_name_buf(). */ +const char *gsm0808_cell_id_list_name(const struct gsm0808_cell_id_list2 *cil) +{ + static char buf[1024]; + gsm0808_cell_id_list_name_buf(buf, sizeof(buf), cil); + return buf; +} + +#undef APPEND_STR +#undef APPEND_CELL_ID_U + /*! @} */ diff --git a/src/gsm/libosmogsm.map b/src/gsm/libosmogsm.map index 388fcc0..f5ed1bb 100644 --- a/src/gsm/libosmogsm.map +++ b/src/gsm/libosmogsm.map @@ -179,6 +179,11 @@ gsm0808_cell_id_list_add; gsm0808_enc_cell_id; gsm0808_dec_cell_id; +gsm0808_cell_id_name; +gsm0808_cell_id_list_name; +gsm0808_cell_id_list_name_buf; +gsm0808_cell_id_discr_names; +gsm0808_cell_id_u_name; gsm0808_chan_type_to_speech_codec; gsm0808_speech_codec_from_chan_type; gsm0808_speech_codec_type_names; diff --git a/tests/gsm0808/gsm0808_test.c b/tests/gsm0808/gsm0808_test.c index 49673fe..78238ff 100644 --- a/tests/gsm0808/gsm0808_test.c +++ b/tests/gsm0808/gsm0808_test.c @@ -1073,36 +1073,12 @@ static void print_cil(const struct gsm0808_cell_id_list2 *cil) { - unsigned int i; - if (!cil) { - printf(" cell_id_list == NULL\n"); - return; - } - switch (cil->id_discr) { - case CELL_IDENT_WHOLE_GLOBAL: - printf(" cell_id_list cgi[%u] = {\n", cil->id_list_len); - for (i = 0; i < cil->id_list_len; i++) - printf(" %2d: %s\n", i, osmo_cgi_name(&cil->id_list[i].global)); - printf(" }\n"); - break; - case CELL_IDENT_LAC: - printf(" cell_id_list lac[%u] = {\n", cil->id_list_len); - for (i = 0; i < cil->id_list_len; i++) - printf(" %2d: %u\n", i, cil->id_list[i].lac); - printf(" }\n"); - break; - case CELL_IDENT_BSS: - printf(" cell_id_list bss[%u]\n", cil->id_list_len); - break; - case CELL_IDENT_NO_CELL: - printf(" cell_id_list no_cell[%u]\n", cil->id_list_len); - break; - default: - printf(" Unimplemented id_disc\n"); - } + printf(" cell_id_list == %s\n", gsm0808_cell_id_list_name(cil)); } void test_cell_id_list_add() { + size_t zu; + const struct gsm0808_cell_id_list2 cgi1 = { .id_discr = CELL_IDENT_WHOLE_GLOBAL, .id_list_len = 1, @@ -1220,7 +1196,7 @@ #define ADD_QUIET(other_cil, expect_rc) do { \ int rc = gsm0808_cell_id_list_add(&cil, &other_cil); \ - printf("\ngsm0808_cell_id_list_add(&cil, &" #other_cil ") --> rc = %d\n", rc); \ + printf("gsm0808_cell_id_list_add(&cil, &" #other_cil ") --> rc = %d\n", rc); \ OSMO_ASSERT(rc == expect_rc); \ } while(0) @@ -1233,13 +1209,13 @@ ADD(cil, 0); ADD(cgi1, -EINVAL); - printf("\ncan't add to BSS list\n"); + printf("* can't add to BSS list\n"); cil.id_list_len = 0; cil.id_discr = CELL_IDENT_BSS; print_cil(&cil); ADD(lac1, -EINVAL); - printf("\nother types (including NO_CELL) take on new type iff empty\n"); + printf("* other types (including NO_CELL) take on new type iff empty\n"); cil.id_list_len = 0; cil.id_discr = CELL_IDENT_NO_CELL; print_cil(&cil); @@ -1248,15 +1224,34 @@ ADD(cgi2, 2); ADD(cgi2, 0); + printf("* test gsm0808_cell_id_list_name_buf()'s return val\n"); + zu = strlen(gsm0808_cell_id_list_name(&cil)); + printf(" strlen(gsm0808_cell_id_list_name(cil)) == %zu\n", zu); + zu ++; + while (1) { + char buf[128] = "?"; + int rc; + OSMO_ASSERT(zu < sizeof(buf)); + buf[zu] = '#'; + rc = gsm0808_cell_id_list_name_buf(buf, zu, &cil); + printf(" gsm0808_cell_id_list_name_buf(buf, %zu, cil)) == %d \"%s\"\n", + zu, rc, buf); + OSMO_ASSERT(buf[zu] == '#'); + if (!zu) + break; + zu /= 2; + } + + printf("* list-full behavior\n"); cil.id_list_len = GSM0808_CELL_ID_LIST2_MAXLEN - 1; - printf("\ncil.id_list_len = %u", cil.id_list_len); + printf("cil.id_list_len = %u\n", cil.id_list_len); ADD_QUIET(cgi2a, 1); printf("cil.id_list_len = %u\n", cil.id_list_len); cil.id_list_len = GSM0808_CELL_ID_LIST2_MAXLEN - 1; - printf("\ncil.id_list_len = %u", cil.id_list_len); + printf("cil.id_list_len = %u\n", cil.id_list_len); ADD_QUIET(cgi3, -ENOSPC); - printf("cil.id_list_len = %u", cil.id_list_len); + printf("cil.id_list_len = %u\n", cil.id_list_len); ADD_QUIET(cgi2a, -ENOSPC); printf("cil.id_list_len = %u\n", cil.id_list_len); diff --git a/tests/gsm0808/gsm0808_test.ok b/tests/gsm0808/gsm0808_test.ok index 34d7ebf..6cd7982 100644 --- a/tests/gsm0808/gsm0808_test.ok +++ b/tests/gsm0808/gsm0808_test.ok @@ -21,84 +21,46 @@ Testing prepend DTAP test_gsm0808_enc_dec_cell_id_list_lac: encoded: 1a 07 05 01 24 ab cd 56 78 (rc = 9) ------- test_cell_id_list_add - cell_id_list cgi[0] = { - } - + cell_id_list == CGI[0]:{} gsm0808_cell_id_list_add(&cil, &lac1) --> rc = 1 - cell_id_list lac[1] = { - 0: 123 - } - + cell_id_list == LAC[1]:{123} gsm0808_cell_id_list_add(&cil, &lac1) --> rc = 0 - cell_id_list lac[1] = { - 0: 123 - } - + cell_id_list == LAC[1]:{123} gsm0808_cell_id_list_add(&cil, &lac2) --> rc = 2 - cell_id_list lac[3] = { - 0: 123 - 1: 456 - 2: 789 - } - + cell_id_list == LAC[3]:{123, 456, 789} gsm0808_cell_id_list_add(&cil, &lac2) --> rc = 0 - cell_id_list lac[3] = { - 0: 123 - 1: 456 - 2: 789 - } - + cell_id_list == LAC[3]:{123, 456, 789} gsm0808_cell_id_list_add(&cil, &cil) --> rc = 0 - cell_id_list lac[3] = { - 0: 123 - 1: 456 - 2: 789 - } - + cell_id_list == LAC[3]:{123, 456, 789} gsm0808_cell_id_list_add(&cil, &cgi1) --> rc = -22 - cell_id_list lac[3] = { - 0: 123 - 1: 456 - 2: 789 - } - -can't add to BSS list - cell_id_list bss[0] - + cell_id_list == LAC[3]:{123, 456, 789} +* can't add to BSS list + cell_id_list == BSS[0] gsm0808_cell_id_list_add(&cil, &lac1) --> rc = -22 - cell_id_list bss[0] - -other types (including NO_CELL) take on new type iff empty - cell_id_list no_cell[0] - + cell_id_list == BSS[0] +* other types (including NO_CELL) take on new type iff empty + cell_id_list == NO-CELL[0] gsm0808_cell_id_list_add(&cil, &cgi1) --> rc = 1 - cell_id_list cgi[1] = { - 0: 001-02-3-4 - } - + cell_id_list == CGI[1]:{001-02-3-4} gsm0808_cell_id_list_add(&cil, &cgi1) --> rc = 0 - cell_id_list cgi[1] = { - 0: 001-02-3-4 - } - + cell_id_list == CGI[1]:{001-02-3-4} gsm0808_cell_id_list_add(&cil, &cgi2) --> rc = 2 - cell_id_list cgi[3] = { - 0: 001-02-3-4 - 1: 001-002-3-4 - 2: 005-006-7-8 - } - + cell_id_list == CGI[3]:{001-02-3-4, 001-002-3-4, 005-006-7-8} gsm0808_cell_id_list_add(&cil, &cgi2) --> rc = 0 - cell_id_list cgi[3] = { - 0: 001-02-3-4 - 1: 001-002-3-4 - 2: 005-006-7-8 - } - + cell_id_list == CGI[3]:{001-02-3-4, 001-002-3-4, 005-006-7-8} +* test gsm0808_cell_id_list_name_buf()'s return val + strlen(gsm0808_cell_id_list_name(cil)) == 45 + gsm0808_cell_id_list_name_buf(buf, 46, cil)) == 45 "CGI[3]:{001-02-3-4, 001-002-3-4, 005-006-7-8}" + gsm0808_cell_id_list_name_buf(buf, 23, cil)) == 45 "CGI[3]:{001-02-3-4, 00" + gsm0808_cell_id_list_name_buf(buf, 11, cil)) == 45 "CGI[3]:{00" + gsm0808_cell_id_list_name_buf(buf, 5, cil)) == 45 "CGI[" + gsm0808_cell_id_list_name_buf(buf, 2, cil)) == 45 "C" + gsm0808_cell_id_list_name_buf(buf, 1, cil)) == 45 "" + gsm0808_cell_id_list_name_buf(buf, 0, cil)) == 45 "#" +* list-full behavior cil.id_list_len = 126 gsm0808_cell_id_list_add(&cil, &cgi2a) --> rc = 1 cil.id_list_len = 127 - cil.id_list_len = 126 gsm0808_cell_id_list_add(&cil, &cgi3) --> rc = -28 cil.id_list_len = 127 -- To view, visit https://gerrit.osmocom.org/7843 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I9b2106805422f96c5cc96ebb9178451355582df3 Gerrit-PatchSet: 1 Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr From gerrit-no-reply at lists.osmocom.org Tue Apr 17 01:42:10 2018 From: gerrit-no-reply at lists.osmocom.org (Neels Hofmeyr) Date: Tue, 17 Apr 2018 01:42:10 +0000 Subject: [PATCH] libosmocore[master]: add gsm0808 channel enum to IE val conversion functions Message-ID: Review at https://gerrit.osmocom.org/7844 add gsm0808 channel enum to IE val conversion functions Add: - gsm0808_current_channel_type_1() - gsm0808_permitted_speech() - gsm0808_chosen_channel() gsm0808_permitted_speech() is moved from osmo-bsc's bssap_speech_from_lchan(); gsm0808_chosen_channel() is moved from osmo-bsc's lchan_to_chosen_channel(); Rationale: will be re-used by inter-BSC handover, makes sense to keep with the other gsm0808 utils. Related: OS#2283 (inter-BSC handover, BSC side) Change-Id: I8a3cc5d4548e9a78d945d54c69ccced251edcec9 --- M include/osmocom/gsm/gsm0808_utils.h 1 file changed, 104 insertions(+), 0 deletions(-) git pull ssh://gerrit.osmocom.org:29418/libosmocore refs/changes/44/7844/1 diff --git a/include/osmocom/gsm/gsm0808_utils.h b/include/osmocom/gsm/gsm0808_utils.h index c007c28..95bb315 100644 --- a/include/osmocom/gsm/gsm0808_utils.h +++ b/include/osmocom/gsm/gsm0808_utils.h @@ -27,6 +27,7 @@ #include #include +#include /*! (225-1)/2 is the maximum number of elements in a cell identifier list. */ #define GSM0808_CELL_ID_LIST2_MAXLEN 127 @@ -101,4 +102,107 @@ int gsm0808_speech_codec_from_chan_type(struct gsm0808_speech_codec *sc, uint8_t perm_spch); +/*! Return 3GPP TS 48.008 3.2.2.49 Current Channel Type 1 from enum gsm_chan_t. */ +static inline uint8_t gsm0808_current_channel_type_1(enum gsm_chan_t type) +{ + switch (type) { + default: + return 0; + case GSM_LCHAN_SDCCH: + return 0x01; + case GSM_LCHAN_TCH_F: + return 0x18; + case GSM_LCHAN_TCH_H: + return 0x19; + } +} + +/*! Return 3GPP TS 48.008 3.2.2.51 Speech Version aka permitted speech version indication in 3.2.2.11 + * Channel Type. */ +static inline enum gsm0808_permitted_speech gsm0808_permitted_speech(enum gsm_chan_t type, + enum gsm48_chan_mode mode) +{ + switch (mode) { + case GSM48_CMODE_SPEECH_V1: + switch (type) { + case GSM_LCHAN_TCH_F: + return GSM0808_PERM_FR1; + case GSM_LCHAN_TCH_H: + return GSM0808_PERM_HR1; + default: + return 0; + } + case GSM48_CMODE_SPEECH_EFR: + switch (type) { + case GSM_LCHAN_TCH_F: + return GSM0808_PERM_FR2; + case GSM_LCHAN_TCH_H: + return GSM0808_PERM_HR2; + default: + return 0; + } + case GSM48_CMODE_SPEECH_AMR: + switch (type) { + case GSM_LCHAN_TCH_F: + return GSM0808_PERM_HR3; + case GSM_LCHAN_TCH_H: + return GSM0808_PERM_HR3; + default: + return 0; + } + default: + return 0; + } +} + +/*! Return 3GPP TS 48.008 3.2.2.33 Chosen Channel. */ +static inline uint8_t gsm0808_chosen_channel(enum gsm_chan_t type, enum gsm48_chan_mode mode) +{ + uint8_t channel_mode = 0, channel = 0; + + switch (mode) { + case GSM48_CMODE_SPEECH_V1: + case GSM48_CMODE_SPEECH_EFR: + case GSM48_CMODE_SPEECH_AMR: + channel_mode = 0x9; + break; + case GSM48_CMODE_SIGN: + channel_mode = 0x8; + break; + case GSM48_CMODE_DATA_14k5: + channel_mode = 0xe; + break; + case GSM48_CMODE_DATA_12k0: + channel_mode = 0xb; + break; + case GSM48_CMODE_DATA_6k0: + channel_mode = 0xc; + break; + case GSM48_CMODE_DATA_3k6: + channel_mode = 0xd; + break; + default: + return 0; + } + + switch (type) { + case GSM_LCHAN_NONE: + channel = 0x0; + break; + case GSM_LCHAN_SDCCH: + channel = 0x1; + break; + case GSM_LCHAN_TCH_F: + channel = 0x8; + break; + case GSM_LCHAN_TCH_H: + channel = 0x9; + break; + default: + return 0; + } + + return channel_mode << 4 | channel; +} + /*! @} */ -- To view, visit https://gerrit.osmocom.org/7844 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I8a3cc5d4548e9a78d945d54c69ccced251edcec9 Gerrit-PatchSet: 1 Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr From gerrit-no-reply at lists.osmocom.org Tue Apr 17 04:23:50 2018 From: gerrit-no-reply at lists.osmocom.org (Vadim Yanitskiy) Date: Tue, 17 Apr 2018 04:23:50 +0000 Subject: [PATCH] libosmocore[master]: protocol/gsm_04_08.h: drop incorrect GSM48_PDISC_USSD Message-ID: Review at https://gerrit.osmocom.org/7845 protocol/gsm_04_08.h: drop incorrect GSM48_PDISC_USSD According to the GSM TS 04.07, section 11.2.3.1.1 "Protocol discriminator", bits 1 to 4 of the first octet of a standard L3 message contain the protocol discriminator IE. Meanwhile, the GSM48_PDISC_USSD represents value 0x11, i.e. 0b10001, that requires 5 bits, and moreover it is not documented anywhere. Let's drop it. Change-Id: Ic4eb8a6db4ff1dfd535bd0c84e7acf1908422f64 --- M include/osmocom/gsm/protocol/gsm_04_08.h M src/gsm/gsm48.c 2 files changed, 0 insertions(+), 2 deletions(-) git pull ssh://gerrit.osmocom.org:29418/libosmocore refs/changes/45/7845/1 diff --git a/include/osmocom/gsm/protocol/gsm_04_08.h b/include/osmocom/gsm/protocol/gsm_04_08.h index 6a5fb3b..68ba650 100644 --- a/include/osmocom/gsm/protocol/gsm_04_08.h +++ b/include/osmocom/gsm/protocol/gsm_04_08.h @@ -977,7 +977,6 @@ #define GSM48_PDISC_EXTEND 0x0e #define GSM48_PDISC_TEST 0x0f /* as per 11.10, 04.14 */ #define GSM48_PDISC_MASK 0x0f -#define GSM48_PDISC_USSD 0x11 extern const struct value_string gsm48_pdisc_names[]; static inline const char *gsm48_pdisc_name(uint8_t val) diff --git a/src/gsm/gsm48.c b/src/gsm/gsm48.c index 468b2a9..0bce1ed 100644 --- a/src/gsm/gsm48.c +++ b/src/gsm/gsm48.c @@ -775,7 +775,6 @@ { GSM48_PDISC_LOC, "LCS" }, { GSM48_PDISC_EXTEND, "EXTD" }, { GSM48_PDISC_MASK, "MASK" }, - { GSM48_PDISC_USSD, "USSD" }, { 0, NULL } }; -- To view, visit https://gerrit.osmocom.org/7845 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Ic4eb8a6db4ff1dfd535bd0c84e7acf1908422f64 Gerrit-PatchSet: 1 Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Owner: Vadim Yanitskiy From gerrit-no-reply at lists.osmocom.org Tue Apr 17 04:23:51 2018 From: gerrit-no-reply at lists.osmocom.org (Vadim Yanitskiy) Date: Tue, 17 Apr 2018 04:23:51 +0000 Subject: [PATCH] libosmocore[master]: gsm/gsm48.c: add call independent SS message names Message-ID: Review at https://gerrit.osmocom.org/7846 gsm/gsm48.c: add call independent SS message names Change-Id: I697639d8469e5dda617b27995c4a92e1f0c0bead --- M src/gsm/gsm48.c 1 file changed, 12 insertions(+), 0 deletions(-) git pull ssh://gerrit.osmocom.org:29418/libosmocore refs/changes/46/7846/1 diff --git a/src/gsm/gsm48.c b/src/gsm/gsm48.c index 0bce1ed..b4892de 100644 --- a/src/gsm/gsm48.c +++ b/src/gsm/gsm48.c @@ -41,6 +41,7 @@ #include #include #include +#include #include #include @@ -944,6 +945,14 @@ { 0, NULL } }; +/*! TS 04.80, section 3.4 Messages for supplementary services control */ +const struct value_string gsm48_nc_ss_msgtype_names[] = { + OSMO_VALUE_STRING(GSM0480_MTYPE_RELEASE_COMPLETE), + OSMO_VALUE_STRING(GSM0480_MTYPE_FACILITY), + OSMO_VALUE_STRING(GSM0480_MTYPE_REGISTER), + { 0, NULL } +}; + /*! Compose a string naming the message type for given protocol. * If the message type string is known, return the message type name, otherwise * return ":". @@ -966,6 +975,9 @@ case GSM48_PDISC_CC: msgt_names = gsm48_cc_msgtype_names; break; + case GSM48_PDISC_NC_SS: + msgt_names = gsm48_nc_ss_msgtype_names; + break; default: msgt_names = NULL; break; -- To view, visit https://gerrit.osmocom.org/7846 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I697639d8469e5dda617b27995c4a92e1f0c0bead Gerrit-PatchSet: 1 Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Owner: Vadim Yanitskiy From gerrit-no-reply at lists.osmocom.org Tue Apr 17 04:59:35 2018 From: gerrit-no-reply at lists.osmocom.org (Vadim Yanitskiy) Date: Tue, 17 Apr 2018 04:59:35 +0000 Subject: libosmocore[master]: gsm/gsm48.c: add call independent SS message names In-Reply-To: References: Message-ID: Patch Set 1: Please note that this change may break tests of some projects in the following way: 'NCSS:0x3b (0xb:0x3b)' - > 'GSM0480_MTYPE_REGISTER' -- To view, visit https://gerrit.osmocom.org/7846 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I697639d8469e5dda617b27995c4a92e1f0c0bead Gerrit-PatchSet: 1 Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Owner: Vadim Yanitskiy Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Vadim Yanitskiy Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Tue Apr 17 09:56:58 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Tue, 17 Apr 2018 09:56:58 +0000 Subject: [PATCH] libosmo-netif[master]: tests: use osmo_init_logging2 Message-ID: Review at https://gerrit.osmocom.org/7847 tests: use osmo_init_logging2 Change-Id: Icc84bbd53e1589e26e445e3460024e77162bd76f --- M tests/jibuf/jibuf_test.c M tests/osmux/osmux_test.c 2 files changed, 6 insertions(+), 2 deletions(-) git pull ssh://gerrit.osmocom.org:29418/libosmo-netif refs/changes/47/7847/1 diff --git a/tests/jibuf/jibuf_test.c b/tests/jibuf/jibuf_test.c index 8771eeb..6e8c805 100644 --- a/tests/jibuf/jibuf_test.c +++ b/tests/jibuf/jibuf_test.c @@ -735,7 +735,9 @@ exit(EXIT_FAILURE); } - osmo_init_logging(&jibuf_test_log_info); + void *tall_ctx = talloc_named_const(NULL, 1, "Root context"); + msgb_talloc_ctx_init(tall_ctx, 0); + osmo_init_logging2(tall_ctx, &jibuf_test_log_info); log_set_print_filename(osmo_stderr_target, 0); log_set_log_level(osmo_stderr_target, LOGL_DEBUG); log_set_category_filter(osmo_stderr_target, DLJIBUF, 1, LOGL_DEBUG); diff --git a/tests/osmux/osmux_test.c b/tests/osmux/osmux_test.c index 09b7a9a..01ce2d1 100644 --- a/tests/osmux/osmux_test.c +++ b/tests/osmux/osmux_test.c @@ -260,7 +260,9 @@ #endif /* This test doesn't use it, but osmux requires it internally. */ - osmo_init_logging(&osmux_test_log_info); + void *tall_ctx = talloc_named_const(NULL, 1, "Root context"); + msgb_talloc_ctx_init(tall_ctx, 0); + osmo_init_logging2(tall_ctx, &osmux_test_log_info); log_set_log_level(osmo_stderr_target, LOGL_DEBUG); osmux_xfrm_output_init(&h_output, 0x7000000); -- To view, visit https://gerrit.osmocom.org/7847 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Icc84bbd53e1589e26e445e3460024e77162bd76f Gerrit-PatchSet: 1 Gerrit-Project: libosmo-netif Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol From gerrit-no-reply at lists.osmocom.org Tue Apr 17 09:56:58 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Tue, 17 Apr 2018 09:56:58 +0000 Subject: [PATCH] libosmo-netif[master]: Build jibuf_tool based on libpcap availability Message-ID: Review at https://gerrit.osmocom.org/7848 Build jibuf_tool based on libpcap availability Change-Id: I27cdb1b5175a5b02638e6d743b686bdf4b1be144 --- M configure.ac M tests/Makefile.am 2 files changed, 13 insertions(+), 4 deletions(-) git pull ssh://gerrit.osmocom.org:29418/libosmo-netif refs/changes/48/7848/1 diff --git a/configure.ac b/configure.ac index f01dac9..8fb338a 100644 --- a/configure.ac +++ b/configure.ac @@ -100,6 +100,10 @@ AC_CHECK_HEADERS(dahdi/user.h,,AC_MSG_WARN(DAHDI input driver will not be built)) +found_pcap=yes +AC_CHECK_HEADERS(pcap.h,,found_pcap=no) +AM_CONDITIONAL(HAVE_PCAP, test "$found_pcap" = yes) + AC_ARG_ENABLE(doxygen, [AS_HELP_STRING( [--disable-doxygen], diff --git a/tests/Makefile.am b/tests/Makefile.am index dd0e2b2..a53fdb3 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -1,16 +1,20 @@ AM_CFLAGS = -Wall -I$(top_srcdir)/include $(LIBOSMOCORE_CFLAGS) -g AM_LDFLAGS = $(LIBOSMOCORE_LDFLAGS) -check_PROGRAMS = osmux/osmux_test jibuf/jibuf_test jibuf/jibuf_tool -check_HEADERS = \ - osmo-pcap-test/osmo_pcap.h \ - osmo-pcap-test/proto.h +check_PROGRAMS = osmux/osmux_test jibuf/jibuf_test +check_HEADERS = osmux_osmux_test_SOURCES = osmux/osmux_test.c osmux_osmux_test_LDADD = $(LIBOSMOCORE_LIBS) $(top_builddir)/src/libosmonetif.la jibuf_jibuf_test_SOURCES = jibuf/jibuf_test.c jibuf_jibuf_test_LDADD = $(LIBOSMOCORE_LIBS) $(top_builddir)/src/libosmonetif.la + +if HAVE_PCAP +check_PROGRAMS += jibuf/jibuf_tool +check_HEADERS += \ + osmo-pcap-test/osmo_pcap.h \ + osmo-pcap-test/proto.h jibuf_jibuf_tool_SOURCES = \ jibuf/jibuf_tool.c \ @@ -26,6 +30,7 @@ $(LIBOSMOCORE_LIBS) \ $(top_builddir)/src/libosmonetif.la \ -lpcap +endif # The `:;' works around a Bash 3.2 bug when the output is not writeable. $(srcdir)/package.m4: $(top_srcdir)/configure.ac -- To view, visit https://gerrit.osmocom.org/7848 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I27cdb1b5175a5b02638e6d743b686bdf4b1be144 Gerrit-PatchSet: 1 Gerrit-Project: libosmo-netif Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol From gerrit-no-reply at lists.osmocom.org Tue Apr 17 11:17:02 2018 From: gerrit-no-reply at lists.osmocom.org (dexter) Date: Tue, 17 Apr 2018 11:17:02 +0000 Subject: [PATCH] osmo-bsc[master]: gscon: fix assignment of signalling channels In-Reply-To: References: Message-ID: Hello Harald Welte, Jenkins Builder, I'd like you to reexamine a change. Please visit https://gerrit.osmocom.org/7838 to look at the new patch set (#2). gscon: fix assignment of signalling channels On the assignmen of signalling channels, the voice related fields do not play a role. However the function send_ass_compl() that generates the assignment complete message is very strict about the presence of those voice related parameters. - Add a parameter to function send_ass_compl() to generate the different types of assignment complete messages Change-Id: I316ebcb1f27b668e17fe48fff028e047aac47f76 Related: OS#2762 --- M src/libbsc/bsc_subscr_conn_fsm.c 1 file changed, 20 insertions(+), 11 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-bsc refs/changes/38/7838/2 diff --git a/src/libbsc/bsc_subscr_conn_fsm.c b/src/libbsc/bsc_subscr_conn_fsm.c index a63483e..b5e7e7d 100644 --- a/src/libbsc/bsc_subscr_conn_fsm.c +++ b/src/libbsc/bsc_subscr_conn_fsm.c @@ -226,29 +226,38 @@ } /* Generate and send assignment complete message */ -static void send_ass_compl(struct gsm_lchan *lchan, struct osmo_fsm_inst *fi) +static void send_ass_compl(struct gsm_lchan *lchan, struct osmo_fsm_inst *fi, bool voice) { struct msgb *resp; struct gsm0808_speech_codec sc; + struct gsm0808_speech_codec *sc_ptr = NULL; struct gsm_subscriber_connection *conn; - int perm_spch = bssap_speech_from_lchan(lchan); + struct sockaddr_storage *addr_local = NULL; + int perm_spch = 0; conn = lchan->conn; - - OSMO_ASSERT(lchan->abis_ip.ass_compl.valid); OSMO_ASSERT(conn); LOGPFSML(fi, LOGL_DEBUG, "Sending assignment complete message... (id=%i)\n", conn->sccp.conn_id); - /* Extrapolate speech codec from speech mode */ - gsm0808_speech_codec_from_chan_type(&sc, perm_spch); - /* FIXME: AMR codec configuration must be derived from lchan1! */ + /* Generate voice related fields */ + if (voice) { + OSMO_ASSERT(lchan->abis_ip.ass_compl.valid); + perm_spch = bssap_speech_from_lchan(lchan); + addr_local = &conn->user_plane.aoip_rtp_addr_local; + + /* Extrapolate speech codec from speech mode */ + gsm0808_speech_codec_from_chan_type(&sc, perm_spch); + sc_ptr = ≻ + + /* FIXME: AMR codec configuration must be derived from lchan1! */ + } /* Generate message */ resp = gsm0808_create_ass_compl(lchan->abis_ip.ass_compl.rr_cause, lchan_to_chosen_channel(lchan), lchan->encr.alg_id, perm_spch, - &conn->user_plane.aoip_rtp_addr_local, &sc, NULL); + addr_local, sc_ptr, NULL); if (!resp) { LOGPFSML(fi, LOGL_ERROR, "Failed to generate assignment completed message! (id=%i)\n", @@ -586,7 +595,7 @@ case GSM48_CMODE_SIGN: /* Confirm the successful assignment on BSSMAP and * change back into active state */ - send_ass_compl(lchan, fi); + send_ass_compl(lchan, fi, false); osmo_fsm_inst_state_chg(fi, ST_ACTIVE, 0, 0); break; default: @@ -689,7 +698,7 @@ sin->sin_port = osmo_ntohs(conn_peer->port); /* Send assignment complete message to the MSC */ - send_ass_compl(lchan, fi); + send_ass_compl(lchan, fi, true); osmo_fsm_inst_state_chg(fi, ST_ACTIVE, 0, 0); @@ -723,7 +732,7 @@ /* FIXME: Check if this requires special handling. For now I assume that the send_ass_compl() * can be used. But I am not sure. */ - send_ass_compl(lchan, fi); + send_ass_compl(lchan, fi, false); break; /* FIXME: Do we need to handle DTAP traffic in this state? Maybe yes? Needs to be checked. */ -- To view, visit https://gerrit.osmocom.org/7838 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newpatchset Gerrit-Change-Id: I316ebcb1f27b668e17fe48fff028e047aac47f76 Gerrit-PatchSet: 2 Gerrit-Project: osmo-bsc Gerrit-Branch: master Gerrit-Owner: dexter Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder From gerrit-no-reply at lists.osmocom.org Tue Apr 17 11:21:22 2018 From: gerrit-no-reply at lists.osmocom.org (dexter) Date: Tue, 17 Apr 2018 11:21:22 +0000 Subject: [ABANDON] osmo-bts[master]: WIP: l1_utils: increase size of octphy_cid_vals[] to 51 In-Reply-To: References: Message-ID: dexter has abandoned this change. Change subject: WIP: l1_utils: increase size of octphy_cid_vals[] to 51 ...................................................................... Abandoned -- To view, visit https://gerrit.osmocom.org/7701 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: abandon Gerrit-Change-Id: Ib3872cae36a76d93cb478a55e6fc3b03a9c6caaf Gerrit-PatchSet: 1 Gerrit-Project: osmo-bts Gerrit-Branch: master Gerrit-Owner: dexter Gerrit-Reviewer: Jenkins Builder From gerrit-no-reply at lists.osmocom.org Tue Apr 17 11:55:19 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Tue, 17 Apr 2018 11:55:19 +0000 Subject: [PATCH] libosmo-netif[master]: examples: use osmo_init_logging2 Message-ID: Review at https://gerrit.osmocom.org/7849 examples: use osmo_init_logging2 Change-Id: I7f1f4503f254931edeebfbadf3953efa7b20f85f --- M examples/channel/abis_ipa_stream_client.c M examples/channel/abis_ipa_stream_server.c M examples/ipa-stream-client.c M examples/ipa-stream-server.c M examples/lapd-over-datagram-network.c M examples/lapd-over-datagram-user.c M examples/osmux-test-input.c M examples/osmux-test-output.c M examples/rs232-read.c M examples/rs232-write.c M examples/rtp-udp-test-client.c M examples/rtp-udp-test-server.c M examples/stream-client.c M examples/stream-server.c M examples/udp-test.h M tests/jibuf/jibuf_tool.c 16 files changed, 33 insertions(+), 31 deletions(-) git pull ssh://gerrit.osmocom.org:29418/libosmo-netif refs/changes/49/7849/1 diff --git a/examples/channel/abis_ipa_stream_client.c b/examples/channel/abis_ipa_stream_client.c index 07ee481..8795cc6 100644 --- a/examples/channel/abis_ipa_stream_client.c +++ b/examples/channel/abis_ipa_stream_client.c @@ -50,8 +50,8 @@ struct osmo_ipa_unit *unit; tall_example = talloc_named_const(NULL, 1, "example"); - - osmo_init_logging(&example_log_info); + msgb_talloc_ctx_init(tall_example, 0); + osmo_init_logging2(tall_example, &example_log_info); log_set_log_level(osmo_stderr_target, LOGL_DEBUG); /* initialize channel infrastructure. */ diff --git a/examples/channel/abis_ipa_stream_server.c b/examples/channel/abis_ipa_stream_server.c index a1b2ffd..58a4e15 100644 --- a/examples/channel/abis_ipa_stream_server.c +++ b/examples/channel/abis_ipa_stream_server.c @@ -47,8 +47,8 @@ int main(void) { tall_example = talloc_named_const(NULL, 1, "example"); - - osmo_init_logging(&example_log_info); + msgb_talloc_ctx_init(tall_example, 0); + osmo_init_logging2(tall_example, &example_log_info); log_set_log_level(osmo_stderr_target, LOGL_DEBUG); /* initialize channel infrastructure. */ diff --git a/examples/ipa-stream-client.c b/examples/ipa-stream-client.c index 05ad4f5..2151090 100644 --- a/examples/ipa-stream-client.c +++ b/examples/ipa-stream-client.c @@ -160,8 +160,8 @@ num_msgs = atoi(argv[1]); tall_test = talloc_named_const(NULL, 1, "osmo_stream_client_test"); - - osmo_init_logging(&osmo_stream_client_test_log_info); + msgb_talloc_ctx_init(tall_test, 0); + osmo_init_logging2(tall_test, &osmo_stream_client_test_log_info); log_set_log_level(osmo_stderr_target, LOGL_NOTICE); /* diff --git a/examples/ipa-stream-server.c b/examples/ipa-stream-server.c index b475552..e774b31 100644 --- a/examples/ipa-stream-server.c +++ b/examples/ipa-stream-server.c @@ -101,8 +101,8 @@ int main(void) { tall_test = talloc_named_const(NULL, 1, "osmo_stream_srv_test"); - - osmo_init_logging(&osmo_stream_srv_test_log_info); + msgb_talloc_ctx_init(tall_test, 0); + osmo_init_logging2(tall_test, &osmo_stream_srv_test_log_info); log_set_log_level(osmo_stderr_target, LOGL_NOTICE); /* diff --git a/examples/lapd-over-datagram-network.c b/examples/lapd-over-datagram-network.c index 9b41808..58ba0ce 100644 --- a/examples/lapd-over-datagram-network.c +++ b/examples/lapd-over-datagram-network.c @@ -132,8 +132,8 @@ struct lapd_tei *teip; tall_test = talloc_named_const(NULL, 1, "lapd_test"); - - osmo_init_logging(&lapd_test_log_info); + msgb_talloc_ctx_init(tall_test, 0); + osmo_init_logging2(tall_test, &lapd_test_log_info); log_set_log_level(osmo_stderr_target, LOGL_NOTICE); /* diff --git a/examples/lapd-over-datagram-user.c b/examples/lapd-over-datagram-user.c index e2fcdfb..f11f49f 100644 --- a/examples/lapd-over-datagram-user.c +++ b/examples/lapd-over-datagram-user.c @@ -194,8 +194,8 @@ num_msgs = atoi(argv[1]); tall_test = talloc_named_const(NULL, 1, "lapd_test"); - - osmo_init_logging(&lapd_test_log_info); + msgb_talloc_ctx_init(tall_test, 0); + osmo_init_logging2(tall_test, &lapd_test_log_info); log_set_log_level(osmo_stderr_target, LOGL_NOTICE); /* * initialize LAPD stuff. diff --git a/examples/osmux-test-input.c b/examples/osmux-test-input.c index b4e5b24..57e199c 100644 --- a/examples/osmux-test-input.c +++ b/examples/osmux-test-input.c @@ -198,8 +198,8 @@ signal(SIGINT, sighandler); tall_test = talloc_named_const(NULL, 1, "osmux_test"); - - osmo_init_logging(&osmux_test_log_info); + msgb_talloc_ctx_init(tall_test, 0); + osmo_init_logging2(tall_test, &osmux_test_log_info); log_set_log_level(osmo_stderr_target, LOGL_DEBUG); /* diff --git a/examples/osmux-test-output.c b/examples/osmux-test-output.c index ff5f04c..9b7c113 100644 --- a/examples/osmux-test-output.c +++ b/examples/osmux-test-output.c @@ -138,8 +138,8 @@ signal(SIGINT, sighandler); tall_test = talloc_named_const(NULL, 1, "osmux_test"); - - osmo_init_logging(&osmux_test_log_info); + msgb_talloc_ctx_init(tall_test, 0); + osmo_init_logging2(tall_test, &osmux_test_log_info); log_set_log_level(osmo_stderr_target, LOGL_DEBUG); /* diff --git a/examples/rs232-read.c b/examples/rs232-read.c index 8aeb6f8..0003459 100644 --- a/examples/rs232-read.c +++ b/examples/rs232-read.c @@ -66,8 +66,8 @@ int main(void) { tall_test = talloc_named_const(NULL, 1, "osmo_rs232_test"); - - osmo_init_logging(&osmo_rs232_test_log_info); + msgb_talloc_ctx_init(tall_test, 0); + osmo_init_logging2(tall_test, &osmo_rs232_test_log_info); log_set_log_level(osmo_stderr_target, LOGL_NOTICE); r = osmo_rs232_create(tall_test); diff --git a/examples/rs232-write.c b/examples/rs232-write.c index d5aee68..dfe1bd5 100644 --- a/examples/rs232-write.c +++ b/examples/rs232-write.c @@ -350,8 +350,8 @@ int rc; tall_test = talloc_named_const(NULL, 1, "osmo_rs232_test"); - - osmo_init_logging(&osmo_rs232_test_log_info); + msgb_talloc_ctx_init(tall_test, 0); + osmo_init_logging2(tall_test, &osmo_rs232_test_log_info); log_set_log_level(osmo_stderr_target, LOGL_NOTICE); r = osmo_rs232_create(tall_test); diff --git a/examples/rtp-udp-test-client.c b/examples/rtp-udp-test-client.c index 78802b1..3f44838 100644 --- a/examples/rtp-udp-test-client.c +++ b/examples/rtp-udp-test-client.c @@ -87,8 +87,8 @@ signal(SIGINT, sighandler); tall_test = talloc_named_const(NULL, 1, "rtp_test"); - - osmo_init_logging(&rtp_test_log_info); + msgb_talloc_ctx_init(tall_test, 0); + osmo_init_logging2(tall_test, &rtp_test_log_info); log_set_log_level(osmo_stderr_target, LOGL_DEBUG); /* diff --git a/examples/rtp-udp-test-server.c b/examples/rtp-udp-test-server.c index 7d56d44..fb06376 100644 --- a/examples/rtp-udp-test-server.c +++ b/examples/rtp-udp-test-server.c @@ -101,8 +101,8 @@ signal(SIGINT, sighandler); tall_test = talloc_named_const(NULL, 1, "udp_rtp_test"); - - osmo_init_logging(&rtp_test_log_info); + msgb_talloc_ctx_init(tall_test, 0); + osmo_init_logging2(tall_test, &rtp_test_log_info); log_set_log_level(osmo_stderr_target, LOGL_DEBUG); /* diff --git a/examples/stream-client.c b/examples/stream-client.c index b0aea5e..92f6fd3 100644 --- a/examples/stream-client.c +++ b/examples/stream-client.c @@ -97,8 +97,8 @@ int rc; tall_test = talloc_named_const(NULL, 1, "osmo_stream_cli_test"); - - osmo_init_logging(&osmo_stream_cli_test_log_info); + msgb_talloc_ctx_init(tall_test, 0); + osmo_init_logging2(tall_test, &osmo_stream_cli_test_log_info); log_set_log_level(osmo_stderr_target, 1); /* diff --git a/examples/stream-server.c b/examples/stream-server.c index c1bfd66..0c5e351 100644 --- a/examples/stream-server.c +++ b/examples/stream-server.c @@ -122,8 +122,8 @@ struct osmo_fd *kbd_ofd; tall_test = talloc_named_const(NULL, 1, "osmo_stream_srv_test"); - - osmo_init_logging(&osmo_stream_srv_test_log_info); + msgb_talloc_ctx_init(tall_test, 0); + osmo_init_logging2(tall_test, &osmo_stream_srv_test_log_info); log_set_log_level(osmo_stderr_target, 1); /* diff --git a/examples/udp-test.h b/examples/udp-test.h index 14bbd91..ad91b19 100644 --- a/examples/udp-test.h +++ b/examples/udp-test.h @@ -81,8 +81,8 @@ signal(SIGINT, sighandler); tall_test = talloc_named_const(NULL, 1, "udp_test"); - - osmo_init_logging(&udp_test_log_info); + msgb_talloc_ctx_init(tall_test, 0); + osmo_init_logging2(tall_test, &udp_test_log_info); log_set_log_level(osmo_stderr_target, LOGL_NOTICE); conn = osmo_dgram_create(tall_test); diff --git a/tests/jibuf/jibuf_tool.c b/tests/jibuf/jibuf_tool.c index c8d8bda..8fa9f2e 100644 --- a/tests/jibuf/jibuf_tool.c +++ b/tests/jibuf/jibuf_tool.c @@ -607,7 +607,9 @@ if(parse_options(argc, argv) < 0) exit(EXIT_FAILURE); - osmo_init_logging(&jibuf_test_log_info); + void *tall_ctx = talloc_named_const(NULL, 1, "Root context"); + msgb_talloc_ctx_init(tall_ctx, 0); + osmo_init_logging2(tall_ctx, &jibuf_test_log_info); log_set_print_filename(osmo_stderr_target, 0); log_set_log_level(osmo_stderr_target, LOGL_DEBUG); -- To view, visit https://gerrit.osmocom.org/7849 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I7f1f4503f254931edeebfbadf3953efa7b20f85f Gerrit-PatchSet: 1 Gerrit-Project: libosmo-netif Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol From gerrit-no-reply at lists.osmocom.org Tue Apr 17 12:06:15 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Tue, 17 Apr 2018 12:06:15 +0000 Subject: libosmocore[master]: prevent integer underflow in ipa_ccm_make_id_resp_from_req() In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7840 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I4723361e1094b358310541a7dc4c5c921c778a15 Gerrit-PatchSet: 1 Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Owner: Harald Welte Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Tue Apr 17 12:06:23 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Tue, 17 Apr 2018 12:06:23 +0000 Subject: libosmo-netif[master]: tests: use osmo_init_logging2 In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7847 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Icc84bbd53e1589e26e445e3460024e77162bd76f Gerrit-PatchSet: 1 Gerrit-Project: libosmo-netif Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Tue Apr 17 12:06:43 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Tue, 17 Apr 2018 12:06:43 +0000 Subject: libosmo-netif[master]: Build jibuf_tool based on libpcap availability In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7848 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I27cdb1b5175a5b02638e6d743b686bdf4b1be144 Gerrit-PatchSet: 1 Gerrit-Project: libosmo-netif Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Tue Apr 17 12:06:45 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Tue, 17 Apr 2018 12:06:45 +0000 Subject: libosmo-netif[master]: examples: use osmo_init_logging2 In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7849 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I7f1f4503f254931edeebfbadf3953efa7b20f85f Gerrit-PatchSet: 1 Gerrit-Project: libosmo-netif Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Tue Apr 17 12:06:46 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Tue, 17 Apr 2018 12:06:46 +0000 Subject: [MERGED] libosmo-netif[master]: examples: use osmo_init_logging2 In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: examples: use osmo_init_logging2 ...................................................................... examples: use osmo_init_logging2 Change-Id: I7f1f4503f254931edeebfbadf3953efa7b20f85f --- M examples/channel/abis_ipa_stream_client.c M examples/channel/abis_ipa_stream_server.c M examples/ipa-stream-client.c M examples/ipa-stream-server.c M examples/lapd-over-datagram-network.c M examples/lapd-over-datagram-user.c M examples/osmux-test-input.c M examples/osmux-test-output.c M examples/rs232-read.c M examples/rs232-write.c M examples/rtp-udp-test-client.c M examples/rtp-udp-test-server.c M examples/stream-client.c M examples/stream-server.c M examples/udp-test.h M tests/jibuf/jibuf_tool.c 16 files changed, 33 insertions(+), 31 deletions(-) Approvals: Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/examples/channel/abis_ipa_stream_client.c b/examples/channel/abis_ipa_stream_client.c index 07ee481..8795cc6 100644 --- a/examples/channel/abis_ipa_stream_client.c +++ b/examples/channel/abis_ipa_stream_client.c @@ -50,8 +50,8 @@ struct osmo_ipa_unit *unit; tall_example = talloc_named_const(NULL, 1, "example"); - - osmo_init_logging(&example_log_info); + msgb_talloc_ctx_init(tall_example, 0); + osmo_init_logging2(tall_example, &example_log_info); log_set_log_level(osmo_stderr_target, LOGL_DEBUG); /* initialize channel infrastructure. */ diff --git a/examples/channel/abis_ipa_stream_server.c b/examples/channel/abis_ipa_stream_server.c index a1b2ffd..58a4e15 100644 --- a/examples/channel/abis_ipa_stream_server.c +++ b/examples/channel/abis_ipa_stream_server.c @@ -47,8 +47,8 @@ int main(void) { tall_example = talloc_named_const(NULL, 1, "example"); - - osmo_init_logging(&example_log_info); + msgb_talloc_ctx_init(tall_example, 0); + osmo_init_logging2(tall_example, &example_log_info); log_set_log_level(osmo_stderr_target, LOGL_DEBUG); /* initialize channel infrastructure. */ diff --git a/examples/ipa-stream-client.c b/examples/ipa-stream-client.c index 05ad4f5..2151090 100644 --- a/examples/ipa-stream-client.c +++ b/examples/ipa-stream-client.c @@ -160,8 +160,8 @@ num_msgs = atoi(argv[1]); tall_test = talloc_named_const(NULL, 1, "osmo_stream_client_test"); - - osmo_init_logging(&osmo_stream_client_test_log_info); + msgb_talloc_ctx_init(tall_test, 0); + osmo_init_logging2(tall_test, &osmo_stream_client_test_log_info); log_set_log_level(osmo_stderr_target, LOGL_NOTICE); /* diff --git a/examples/ipa-stream-server.c b/examples/ipa-stream-server.c index b475552..e774b31 100644 --- a/examples/ipa-stream-server.c +++ b/examples/ipa-stream-server.c @@ -101,8 +101,8 @@ int main(void) { tall_test = talloc_named_const(NULL, 1, "osmo_stream_srv_test"); - - osmo_init_logging(&osmo_stream_srv_test_log_info); + msgb_talloc_ctx_init(tall_test, 0); + osmo_init_logging2(tall_test, &osmo_stream_srv_test_log_info); log_set_log_level(osmo_stderr_target, LOGL_NOTICE); /* diff --git a/examples/lapd-over-datagram-network.c b/examples/lapd-over-datagram-network.c index 9b41808..58ba0ce 100644 --- a/examples/lapd-over-datagram-network.c +++ b/examples/lapd-over-datagram-network.c @@ -132,8 +132,8 @@ struct lapd_tei *teip; tall_test = talloc_named_const(NULL, 1, "lapd_test"); - - osmo_init_logging(&lapd_test_log_info); + msgb_talloc_ctx_init(tall_test, 0); + osmo_init_logging2(tall_test, &lapd_test_log_info); log_set_log_level(osmo_stderr_target, LOGL_NOTICE); /* diff --git a/examples/lapd-over-datagram-user.c b/examples/lapd-over-datagram-user.c index e2fcdfb..f11f49f 100644 --- a/examples/lapd-over-datagram-user.c +++ b/examples/lapd-over-datagram-user.c @@ -194,8 +194,8 @@ num_msgs = atoi(argv[1]); tall_test = talloc_named_const(NULL, 1, "lapd_test"); - - osmo_init_logging(&lapd_test_log_info); + msgb_talloc_ctx_init(tall_test, 0); + osmo_init_logging2(tall_test, &lapd_test_log_info); log_set_log_level(osmo_stderr_target, LOGL_NOTICE); /* * initialize LAPD stuff. diff --git a/examples/osmux-test-input.c b/examples/osmux-test-input.c index b4e5b24..57e199c 100644 --- a/examples/osmux-test-input.c +++ b/examples/osmux-test-input.c @@ -198,8 +198,8 @@ signal(SIGINT, sighandler); tall_test = talloc_named_const(NULL, 1, "osmux_test"); - - osmo_init_logging(&osmux_test_log_info); + msgb_talloc_ctx_init(tall_test, 0); + osmo_init_logging2(tall_test, &osmux_test_log_info); log_set_log_level(osmo_stderr_target, LOGL_DEBUG); /* diff --git a/examples/osmux-test-output.c b/examples/osmux-test-output.c index ff5f04c..9b7c113 100644 --- a/examples/osmux-test-output.c +++ b/examples/osmux-test-output.c @@ -138,8 +138,8 @@ signal(SIGINT, sighandler); tall_test = talloc_named_const(NULL, 1, "osmux_test"); - - osmo_init_logging(&osmux_test_log_info); + msgb_talloc_ctx_init(tall_test, 0); + osmo_init_logging2(tall_test, &osmux_test_log_info); log_set_log_level(osmo_stderr_target, LOGL_DEBUG); /* diff --git a/examples/rs232-read.c b/examples/rs232-read.c index 8aeb6f8..0003459 100644 --- a/examples/rs232-read.c +++ b/examples/rs232-read.c @@ -66,8 +66,8 @@ int main(void) { tall_test = talloc_named_const(NULL, 1, "osmo_rs232_test"); - - osmo_init_logging(&osmo_rs232_test_log_info); + msgb_talloc_ctx_init(tall_test, 0); + osmo_init_logging2(tall_test, &osmo_rs232_test_log_info); log_set_log_level(osmo_stderr_target, LOGL_NOTICE); r = osmo_rs232_create(tall_test); diff --git a/examples/rs232-write.c b/examples/rs232-write.c index d5aee68..dfe1bd5 100644 --- a/examples/rs232-write.c +++ b/examples/rs232-write.c @@ -350,8 +350,8 @@ int rc; tall_test = talloc_named_const(NULL, 1, "osmo_rs232_test"); - - osmo_init_logging(&osmo_rs232_test_log_info); + msgb_talloc_ctx_init(tall_test, 0); + osmo_init_logging2(tall_test, &osmo_rs232_test_log_info); log_set_log_level(osmo_stderr_target, LOGL_NOTICE); r = osmo_rs232_create(tall_test); diff --git a/examples/rtp-udp-test-client.c b/examples/rtp-udp-test-client.c index 78802b1..3f44838 100644 --- a/examples/rtp-udp-test-client.c +++ b/examples/rtp-udp-test-client.c @@ -87,8 +87,8 @@ signal(SIGINT, sighandler); tall_test = talloc_named_const(NULL, 1, "rtp_test"); - - osmo_init_logging(&rtp_test_log_info); + msgb_talloc_ctx_init(tall_test, 0); + osmo_init_logging2(tall_test, &rtp_test_log_info); log_set_log_level(osmo_stderr_target, LOGL_DEBUG); /* diff --git a/examples/rtp-udp-test-server.c b/examples/rtp-udp-test-server.c index 7d56d44..fb06376 100644 --- a/examples/rtp-udp-test-server.c +++ b/examples/rtp-udp-test-server.c @@ -101,8 +101,8 @@ signal(SIGINT, sighandler); tall_test = talloc_named_const(NULL, 1, "udp_rtp_test"); - - osmo_init_logging(&rtp_test_log_info); + msgb_talloc_ctx_init(tall_test, 0); + osmo_init_logging2(tall_test, &rtp_test_log_info); log_set_log_level(osmo_stderr_target, LOGL_DEBUG); /* diff --git a/examples/stream-client.c b/examples/stream-client.c index b0aea5e..92f6fd3 100644 --- a/examples/stream-client.c +++ b/examples/stream-client.c @@ -97,8 +97,8 @@ int rc; tall_test = talloc_named_const(NULL, 1, "osmo_stream_cli_test"); - - osmo_init_logging(&osmo_stream_cli_test_log_info); + msgb_talloc_ctx_init(tall_test, 0); + osmo_init_logging2(tall_test, &osmo_stream_cli_test_log_info); log_set_log_level(osmo_stderr_target, 1); /* diff --git a/examples/stream-server.c b/examples/stream-server.c index c1bfd66..0c5e351 100644 --- a/examples/stream-server.c +++ b/examples/stream-server.c @@ -122,8 +122,8 @@ struct osmo_fd *kbd_ofd; tall_test = talloc_named_const(NULL, 1, "osmo_stream_srv_test"); - - osmo_init_logging(&osmo_stream_srv_test_log_info); + msgb_talloc_ctx_init(tall_test, 0); + osmo_init_logging2(tall_test, &osmo_stream_srv_test_log_info); log_set_log_level(osmo_stderr_target, 1); /* diff --git a/examples/udp-test.h b/examples/udp-test.h index 14bbd91..ad91b19 100644 --- a/examples/udp-test.h +++ b/examples/udp-test.h @@ -81,8 +81,8 @@ signal(SIGINT, sighandler); tall_test = talloc_named_const(NULL, 1, "udp_test"); - - osmo_init_logging(&udp_test_log_info); + msgb_talloc_ctx_init(tall_test, 0); + osmo_init_logging2(tall_test, &udp_test_log_info); log_set_log_level(osmo_stderr_target, LOGL_NOTICE); conn = osmo_dgram_create(tall_test); diff --git a/tests/jibuf/jibuf_tool.c b/tests/jibuf/jibuf_tool.c index c8d8bda..8fa9f2e 100644 --- a/tests/jibuf/jibuf_tool.c +++ b/tests/jibuf/jibuf_tool.c @@ -607,7 +607,9 @@ if(parse_options(argc, argv) < 0) exit(EXIT_FAILURE); - osmo_init_logging(&jibuf_test_log_info); + void *tall_ctx = talloc_named_const(NULL, 1, "Root context"); + msgb_talloc_ctx_init(tall_ctx, 0); + osmo_init_logging2(tall_ctx, &jibuf_test_log_info); log_set_print_filename(osmo_stderr_target, 0); log_set_log_level(osmo_stderr_target, LOGL_DEBUG); -- To view, visit https://gerrit.osmocom.org/7849 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: I7f1f4503f254931edeebfbadf3953efa7b20f85f Gerrit-PatchSet: 1 Gerrit-Project: libosmo-netif Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder From gerrit-no-reply at lists.osmocom.org Tue Apr 17 12:06:46 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Tue, 17 Apr 2018 12:06:46 +0000 Subject: [MERGED] libosmo-netif[master]: Build jibuf_tool based on libpcap availability In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: Build jibuf_tool based on libpcap availability ...................................................................... Build jibuf_tool based on libpcap availability Change-Id: I27cdb1b5175a5b02638e6d743b686bdf4b1be144 --- M configure.ac M tests/Makefile.am 2 files changed, 13 insertions(+), 4 deletions(-) Approvals: Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/configure.ac b/configure.ac index f01dac9..8fb338a 100644 --- a/configure.ac +++ b/configure.ac @@ -100,6 +100,10 @@ AC_CHECK_HEADERS(dahdi/user.h,,AC_MSG_WARN(DAHDI input driver will not be built)) +found_pcap=yes +AC_CHECK_HEADERS(pcap.h,,found_pcap=no) +AM_CONDITIONAL(HAVE_PCAP, test "$found_pcap" = yes) + AC_ARG_ENABLE(doxygen, [AS_HELP_STRING( [--disable-doxygen], diff --git a/tests/Makefile.am b/tests/Makefile.am index dd0e2b2..a53fdb3 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -1,16 +1,20 @@ AM_CFLAGS = -Wall -I$(top_srcdir)/include $(LIBOSMOCORE_CFLAGS) -g AM_LDFLAGS = $(LIBOSMOCORE_LDFLAGS) -check_PROGRAMS = osmux/osmux_test jibuf/jibuf_test jibuf/jibuf_tool -check_HEADERS = \ - osmo-pcap-test/osmo_pcap.h \ - osmo-pcap-test/proto.h +check_PROGRAMS = osmux/osmux_test jibuf/jibuf_test +check_HEADERS = osmux_osmux_test_SOURCES = osmux/osmux_test.c osmux_osmux_test_LDADD = $(LIBOSMOCORE_LIBS) $(top_builddir)/src/libosmonetif.la jibuf_jibuf_test_SOURCES = jibuf/jibuf_test.c jibuf_jibuf_test_LDADD = $(LIBOSMOCORE_LIBS) $(top_builddir)/src/libosmonetif.la + +if HAVE_PCAP +check_PROGRAMS += jibuf/jibuf_tool +check_HEADERS += \ + osmo-pcap-test/osmo_pcap.h \ + osmo-pcap-test/proto.h jibuf_jibuf_tool_SOURCES = \ jibuf/jibuf_tool.c \ @@ -26,6 +30,7 @@ $(LIBOSMOCORE_LIBS) \ $(top_builddir)/src/libosmonetif.la \ -lpcap +endif # The `:;' works around a Bash 3.2 bug when the output is not writeable. $(srcdir)/package.m4: $(top_srcdir)/configure.ac -- To view, visit https://gerrit.osmocom.org/7848 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: I27cdb1b5175a5b02638e6d743b686bdf4b1be144 Gerrit-PatchSet: 1 Gerrit-Project: libosmo-netif Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder From gerrit-no-reply at lists.osmocom.org Tue Apr 17 12:06:47 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Tue, 17 Apr 2018 12:06:47 +0000 Subject: [MERGED] libosmo-netif[master]: tests: use osmo_init_logging2 In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: tests: use osmo_init_logging2 ...................................................................... tests: use osmo_init_logging2 Change-Id: Icc84bbd53e1589e26e445e3460024e77162bd76f --- M tests/jibuf/jibuf_test.c M tests/osmux/osmux_test.c 2 files changed, 6 insertions(+), 2 deletions(-) Approvals: Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/tests/jibuf/jibuf_test.c b/tests/jibuf/jibuf_test.c index 8771eeb..6e8c805 100644 --- a/tests/jibuf/jibuf_test.c +++ b/tests/jibuf/jibuf_test.c @@ -735,7 +735,9 @@ exit(EXIT_FAILURE); } - osmo_init_logging(&jibuf_test_log_info); + void *tall_ctx = talloc_named_const(NULL, 1, "Root context"); + msgb_talloc_ctx_init(tall_ctx, 0); + osmo_init_logging2(tall_ctx, &jibuf_test_log_info); log_set_print_filename(osmo_stderr_target, 0); log_set_log_level(osmo_stderr_target, LOGL_DEBUG); log_set_category_filter(osmo_stderr_target, DLJIBUF, 1, LOGL_DEBUG); diff --git a/tests/osmux/osmux_test.c b/tests/osmux/osmux_test.c index 09b7a9a..01ce2d1 100644 --- a/tests/osmux/osmux_test.c +++ b/tests/osmux/osmux_test.c @@ -260,7 +260,9 @@ #endif /* This test doesn't use it, but osmux requires it internally. */ - osmo_init_logging(&osmux_test_log_info); + void *tall_ctx = talloc_named_const(NULL, 1, "Root context"); + msgb_talloc_ctx_init(tall_ctx, 0); + osmo_init_logging2(tall_ctx, &osmux_test_log_info); log_set_log_level(osmo_stderr_target, LOGL_DEBUG); osmux_xfrm_output_init(&h_output, 0x7000000); -- To view, visit https://gerrit.osmocom.org/7847 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: Icc84bbd53e1589e26e445e3460024e77162bd76f Gerrit-PatchSet: 1 Gerrit-Project: libosmo-netif Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder From gerrit-no-reply at lists.osmocom.org Tue Apr 17 12:06:52 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Tue, 17 Apr 2018 12:06:52 +0000 Subject: [MERGED] libosmocore[master]: prevent integer underflow in ipa_ccm_make_id_resp_from_req() In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: prevent integer underflow in ipa_ccm_make_id_resp_from_req() ...................................................................... prevent integer underflow in ipa_ccm_make_id_resp_from_req() don't blindly trust the tag-length value in an IPA CCM ID GET message. This could result in a remotely-triggered integer underflow. Change-Id: I4723361e1094b358310541a7dc4c5c921c778a15 --- M src/gsm/ipa.c 1 file changed, 6 insertions(+), 1 deletion(-) Approvals: Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/src/gsm/ipa.c b/src/gsm/ipa.c index e03f615..0c7aaad 100644 --- a/src/gsm/ipa.c +++ b/src/gsm/ipa.c @@ -328,7 +328,12 @@ ies[num_ies++] = t_tag; cur += t_len; - len -= t_len; + /* prevent any unsigned integer underflow due to somebody sending us + * messages with wrong length values */ + if (len <= t_len) + len -= t_len; + else + len = 0; } return ipa_ccm_make_id_resp(dev, ies, num_ies); } -- To view, visit https://gerrit.osmocom.org/7840 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: I4723361e1094b358310541a7dc4c5c921c778a15 Gerrit-PatchSet: 2 Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Owner: Harald Welte Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder From gerrit-no-reply at lists.osmocom.org Tue Apr 17 12:07:28 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Tue, 17 Apr 2018 12:07:28 +0000 Subject: osmo-bsc[master]: gscon: fix assignment of signalling channels In-Reply-To: References: Message-ID: Patch Set 2: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7838 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I316ebcb1f27b668e17fe48fff028e047aac47f76 Gerrit-PatchSet: 2 Gerrit-Project: osmo-bsc Gerrit-Branch: master Gerrit-Owner: dexter Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Tue Apr 17 12:07:45 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Tue, 17 Apr 2018 12:07:45 +0000 Subject: libosmocore[master]: gsm/gsm48.c: add call independent SS message names In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7846 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I697639d8469e5dda617b27995c4a92e1f0c0bead Gerrit-PatchSet: 1 Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Owner: Vadim Yanitskiy Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Vadim Yanitskiy Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Tue Apr 17 12:09:46 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Tue, 17 Apr 2018 12:09:46 +0000 Subject: libosmocore[master]: protocol/gsm_04_08.h: drop incorrect GSM48_PDISC_USSD In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 yes, the original author (might have been me?) probably though of '11 decimal', which is non-call-related-SS, and hence includes (but isn't limited to) USSD. -- To view, visit https://gerrit.osmocom.org/7845 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Ic4eb8a6db4ff1dfd535bd0c84e7acf1908422f64 Gerrit-PatchSet: 1 Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Owner: Vadim Yanitskiy Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Tue Apr 17 12:09:48 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Tue, 17 Apr 2018 12:09:48 +0000 Subject: [MERGED] libosmocore[master]: protocol/gsm_04_08.h: drop incorrect GSM48_PDISC_USSD In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: protocol/gsm_04_08.h: drop incorrect GSM48_PDISC_USSD ...................................................................... protocol/gsm_04_08.h: drop incorrect GSM48_PDISC_USSD According to the GSM TS 04.07, section 11.2.3.1.1 "Protocol discriminator", bits 1 to 4 of the first octet of a standard L3 message contain the protocol discriminator IE. Meanwhile, the GSM48_PDISC_USSD represents value 0x11, i.e. 0b10001, that requires 5 bits, and moreover it is not documented anywhere. Let's drop it. Change-Id: Ic4eb8a6db4ff1dfd535bd0c84e7acf1908422f64 --- M include/osmocom/gsm/protocol/gsm_04_08.h M src/gsm/gsm48.c 2 files changed, 0 insertions(+), 2 deletions(-) Approvals: Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/include/osmocom/gsm/protocol/gsm_04_08.h b/include/osmocom/gsm/protocol/gsm_04_08.h index 6a5fb3b..68ba650 100644 --- a/include/osmocom/gsm/protocol/gsm_04_08.h +++ b/include/osmocom/gsm/protocol/gsm_04_08.h @@ -977,7 +977,6 @@ #define GSM48_PDISC_EXTEND 0x0e #define GSM48_PDISC_TEST 0x0f /* as per 11.10, 04.14 */ #define GSM48_PDISC_MASK 0x0f -#define GSM48_PDISC_USSD 0x11 extern const struct value_string gsm48_pdisc_names[]; static inline const char *gsm48_pdisc_name(uint8_t val) diff --git a/src/gsm/gsm48.c b/src/gsm/gsm48.c index 468b2a9..0bce1ed 100644 --- a/src/gsm/gsm48.c +++ b/src/gsm/gsm48.c @@ -775,7 +775,6 @@ { GSM48_PDISC_LOC, "LCS" }, { GSM48_PDISC_EXTEND, "EXTD" }, { GSM48_PDISC_MASK, "MASK" }, - { GSM48_PDISC_USSD, "USSD" }, { 0, NULL } }; -- To view, visit https://gerrit.osmocom.org/7845 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: Ic4eb8a6db4ff1dfd535bd0c84e7acf1908422f64 Gerrit-PatchSet: 2 Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Owner: Vadim Yanitskiy Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder From gerrit-no-reply at lists.osmocom.org Tue Apr 17 12:09:48 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Tue, 17 Apr 2018 12:09:48 +0000 Subject: [MERGED] libosmocore[master]: gsm/gsm48.c: add call independent SS message names In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: gsm/gsm48.c: add call independent SS message names ...................................................................... gsm/gsm48.c: add call independent SS message names Change-Id: I697639d8469e5dda617b27995c4a92e1f0c0bead --- M src/gsm/gsm48.c 1 file changed, 12 insertions(+), 0 deletions(-) Approvals: Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/src/gsm/gsm48.c b/src/gsm/gsm48.c index 0bce1ed..b4892de 100644 --- a/src/gsm/gsm48.c +++ b/src/gsm/gsm48.c @@ -41,6 +41,7 @@ #include #include #include +#include #include #include @@ -944,6 +945,14 @@ { 0, NULL } }; +/*! TS 04.80, section 3.4 Messages for supplementary services control */ +const struct value_string gsm48_nc_ss_msgtype_names[] = { + OSMO_VALUE_STRING(GSM0480_MTYPE_RELEASE_COMPLETE), + OSMO_VALUE_STRING(GSM0480_MTYPE_FACILITY), + OSMO_VALUE_STRING(GSM0480_MTYPE_REGISTER), + { 0, NULL } +}; + /*! Compose a string naming the message type for given protocol. * If the message type string is known, return the message type name, otherwise * return ":". @@ -966,6 +975,9 @@ case GSM48_PDISC_CC: msgt_names = gsm48_cc_msgtype_names; break; + case GSM48_PDISC_NC_SS: + msgt_names = gsm48_nc_ss_msgtype_names; + break; default: msgt_names = NULL; break; -- To view, visit https://gerrit.osmocom.org/7846 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: I697639d8469e5dda617b27995c4a92e1f0c0bead Gerrit-PatchSet: 2 Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Owner: Vadim Yanitskiy Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Vadim Yanitskiy From gerrit-no-reply at lists.osmocom.org Tue Apr 17 12:09:58 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Tue, 17 Apr 2018 12:09:58 +0000 Subject: libosmo-sccp[master]: ipa_asp_fsm: Prevent against integer underflow In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7841 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Idf9a5c0938e6ae6d47bf85ddfec3306fa3ddb3ce Gerrit-PatchSet: 1 Gerrit-Project: libosmo-sccp Gerrit-Branch: master Gerrit-Owner: Harald Welte Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Tue Apr 17 12:10:00 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Tue, 17 Apr 2018 12:10:00 +0000 Subject: [MERGED] libosmo-sccp[master]: ipa_asp_fsm: Prevent against integer underflow In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: ipa_asp_fsm: Prevent against integer underflow ...................................................................... ipa_asp_fsm: Prevent against integer underflow Ensure we don't pass a negative integer as "unsigned int len" to ipa_asp_fsm_wait_id_get(). This could result in a remotely-triggered integer underflow. Change-Id: Idf9a5c0938e6ae6d47bf85ddfec3306fa3ddb3ce --- M src/xua_asp_fsm.c 1 file changed, 5 insertions(+), 0 deletions(-) Approvals: Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/src/xua_asp_fsm.c b/src/xua_asp_fsm.c index e81f0af..93c76cb 100644 --- a/src/xua_asp_fsm.c +++ b/src/xua_asp_fsm.c @@ -881,6 +881,11 @@ data_len = msgb_l2len(msg_get)-1; LOGPFSM(fi, "Received IPA CCM IDENTITY REQUEST for IEs %s\n", osmo_hexdump(req_data, data_len)); + /* avoid possible unsigned integer underflow, as ipa_ccm_make_id_resp_from_req() + * expects an unsigned integer, and in case of a zero-length L2 message we might + * have data_len == -1 here */ + if (data_len < 0) + data_len = 0; /* Send ID_RESP to server */ msg_resp = ipa_ccm_make_id_resp_from_req(iafp->ipa_unit, req_data, data_len); if (!msg_resp) { -- To view, visit https://gerrit.osmocom.org/7841 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: Idf9a5c0938e6ae6d47bf85ddfec3306fa3ddb3ce Gerrit-PatchSet: 1 Gerrit-Project: libosmo-sccp Gerrit-Branch: master Gerrit-Owner: Harald Welte Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder From gerrit-no-reply at lists.osmocom.org Tue Apr 17 12:11:13 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Tue, 17 Apr 2018 12:11:13 +0000 Subject: libosmocore[master]: tlv: add TLV_GET() and TLV_GET_MINLEN() In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7842 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I445de17fc2daa3ab051f5708dd0cc185b23dc048 Gerrit-PatchSet: 1 Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Tue Apr 17 12:11:33 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Tue, 17 Apr 2018 12:11:33 +0000 Subject: libosmocore[master]: tlv: add TLV_GET() and TLV_GET_MINLEN() In-Reply-To: References: Message-ID: Patch Set 1: -Code-Review (1 comment) https://gerrit.osmocom.org/#/c/7842/1/include/osmocom/gsm/tlv.h File include/osmocom/gsm/tlv.h: Line 449: /* Usage: this should be doxygen.... -- To view, visit https://gerrit.osmocom.org/7842 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I445de17fc2daa3ab051f5708dd0cc185b23dc048 Gerrit-PatchSet: 1 Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-HasComments: Yes From gerrit-no-reply at lists.osmocom.org Tue Apr 17 12:12:42 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Tue, 17 Apr 2018 12:12:42 +0000 Subject: [MERGED] osmo-bsc[master]: gscon: fix assignment of signalling channels In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: gscon: fix assignment of signalling channels ...................................................................... gscon: fix assignment of signalling channels On the assignmen of signalling channels, the voice related fields do not play a role. However the function send_ass_compl() that generates the assignment complete message is very strict about the presence of those voice related parameters. - Add a parameter to function send_ass_compl() to generate the different types of assignment complete messages Change-Id: I316ebcb1f27b668e17fe48fff028e047aac47f76 Related: OS#2762 --- M src/libbsc/bsc_subscr_conn_fsm.c 1 file changed, 20 insertions(+), 11 deletions(-) Approvals: Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/src/libbsc/bsc_subscr_conn_fsm.c b/src/libbsc/bsc_subscr_conn_fsm.c index a63483e..b5e7e7d 100644 --- a/src/libbsc/bsc_subscr_conn_fsm.c +++ b/src/libbsc/bsc_subscr_conn_fsm.c @@ -226,29 +226,38 @@ } /* Generate and send assignment complete message */ -static void send_ass_compl(struct gsm_lchan *lchan, struct osmo_fsm_inst *fi) +static void send_ass_compl(struct gsm_lchan *lchan, struct osmo_fsm_inst *fi, bool voice) { struct msgb *resp; struct gsm0808_speech_codec sc; + struct gsm0808_speech_codec *sc_ptr = NULL; struct gsm_subscriber_connection *conn; - int perm_spch = bssap_speech_from_lchan(lchan); + struct sockaddr_storage *addr_local = NULL; + int perm_spch = 0; conn = lchan->conn; - - OSMO_ASSERT(lchan->abis_ip.ass_compl.valid); OSMO_ASSERT(conn); LOGPFSML(fi, LOGL_DEBUG, "Sending assignment complete message... (id=%i)\n", conn->sccp.conn_id); - /* Extrapolate speech codec from speech mode */ - gsm0808_speech_codec_from_chan_type(&sc, perm_spch); - /* FIXME: AMR codec configuration must be derived from lchan1! */ + /* Generate voice related fields */ + if (voice) { + OSMO_ASSERT(lchan->abis_ip.ass_compl.valid); + perm_spch = bssap_speech_from_lchan(lchan); + addr_local = &conn->user_plane.aoip_rtp_addr_local; + + /* Extrapolate speech codec from speech mode */ + gsm0808_speech_codec_from_chan_type(&sc, perm_spch); + sc_ptr = ≻ + + /* FIXME: AMR codec configuration must be derived from lchan1! */ + } /* Generate message */ resp = gsm0808_create_ass_compl(lchan->abis_ip.ass_compl.rr_cause, lchan_to_chosen_channel(lchan), lchan->encr.alg_id, perm_spch, - &conn->user_plane.aoip_rtp_addr_local, &sc, NULL); + addr_local, sc_ptr, NULL); if (!resp) { LOGPFSML(fi, LOGL_ERROR, "Failed to generate assignment completed message! (id=%i)\n", @@ -586,7 +595,7 @@ case GSM48_CMODE_SIGN: /* Confirm the successful assignment on BSSMAP and * change back into active state */ - send_ass_compl(lchan, fi); + send_ass_compl(lchan, fi, false); osmo_fsm_inst_state_chg(fi, ST_ACTIVE, 0, 0); break; default: @@ -689,7 +698,7 @@ sin->sin_port = osmo_ntohs(conn_peer->port); /* Send assignment complete message to the MSC */ - send_ass_compl(lchan, fi); + send_ass_compl(lchan, fi, true); osmo_fsm_inst_state_chg(fi, ST_ACTIVE, 0, 0); @@ -723,7 +732,7 @@ /* FIXME: Check if this requires special handling. For now I assume that the send_ass_compl() * can be used. But I am not sure. */ - send_ass_compl(lchan, fi); + send_ass_compl(lchan, fi, false); break; /* FIXME: Do we need to handle DTAP traffic in this state? Maybe yes? Needs to be checked. */ -- To view, visit https://gerrit.osmocom.org/7838 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: I316ebcb1f27b668e17fe48fff028e047aac47f76 Gerrit-PatchSet: 2 Gerrit-Project: osmo-bsc Gerrit-Branch: master Gerrit-Owner: dexter Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder From jenkins at lists.osmocom.org Tue Apr 17 12:16:34 2018 From: jenkins at lists.osmocom.org (jenkins at lists.osmocom.org) Date: Tue, 17 Apr 2018 12:16:34 +0000 (UTC) Subject: =?UTF-8?Q?Build_failed_in_Jenkins:_master-osmo-msc_=C2=BB_--disable-?= =?UTF-8?Q?iu,a2=3Ddefault,a3=3Ddefault,osmocom-master-debian9_#2873?= Message-ID: <2122476345.408.1523967394056.JavaMail.jenkins@jenkins.osmocom.org> See ------------------------------------------ [...truncated 773.73 KB...] -DRLL Dispatching 04.08 message NCSS:0x3b (0xb:0x3b) -DMM MSISDN:42342: rx msg NCSS:0x3b: received_cm_service_request changes to false +DRLL Dispatching 04.08 message GSM0480_MTYPE_REGISTER (0xb:0x3b) +DMM MSISDN:42342: rx msg GSM0480_MTYPE_REGISTER: received_cm_service_request changes to false DREF MSISDN:42342: MSC conn use - cm_service == 1 (0x2: dtap) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING DMM USSD: Own number requested DMM MSISDN:42342: MSISDN = 42342 DMSC msc_tx 43 bytes to MSISDN:42342 via RAN_GERAN_A -- DTAP --RAN_GERAN_A--> MS: NCSS:0x2a: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d +- DTAP --RAN_GERAN_A--> MS: GSM0480_MTYPE_RELEASE_COMPLETE: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d - DTAP matches expected message DREF MSISDN:42342: MSC conn use - dtap == 0 (0x0: ) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_UNUSED @@ -1296,17 +1296,17 @@ - a USSD request is serviced expecting USSD: Your extension is 42342 - MSC <--RAN_GERAN_A-- MS: NCSS:0x3b + MSC <--RAN_GERAN_A-- MS: GSM0480_MTYPE_REGISTER DREF MSISDN:42342: MSC conn use + dtap == 2 (0xa: dtap,cm_service) -DRLL Dispatching 04.08 message NCSS:0x3b (0xb:0x3b) -DMM MSISDN:42342: rx msg NCSS:0x3b: received_cm_service_request changes to false +DRLL Dispatching 04.08 message GSM0480_MTYPE_REGISTER (0xb:0x3b) +DMM MSISDN:42342: rx msg GSM0480_MTYPE_REGISTER: received_cm_service_request changes to false DREF MSISDN:42342: MSC conn use - cm_service == 1 (0x2: dtap) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING DMM USSD: Own number requested DMM MSISDN:42342: MSISDN = 42342 DMSC msc_tx 43 bytes to MSISDN:42342 via RAN_GERAN_A -- DTAP --RAN_GERAN_A--> MS: NCSS:0x2a: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d +- DTAP --RAN_GERAN_A--> MS: GSM0480_MTYPE_RELEASE_COMPLETE: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d - DTAP matches expected message DREF MSISDN:42342: MSC conn use - dtap == 0 (0x0: ) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_UNUSED @@ -1404,17 +1404,17 @@ - a USSD request is serviced expecting USSD: Your extension is 42342 - MSC <--RAN_GERAN_A-- MS: NCSS:0x3b + MSC <--RAN_GERAN_A-- MS: GSM0480_MTYPE_REGISTER DREF MSISDN:42342: MSC conn use + dtap == 2 (0xa: dtap,cm_service) -DRLL Dispatching 04.08 message NCSS:0x3b (0xb:0x3b) -DMM MSISDN:42342: rx msg NCSS:0x3b: received_cm_service_request changes to false +DRLL Dispatching 04.08 message GSM0480_MTYPE_REGISTER (0xb:0x3b) +DMM MSISDN:42342: rx msg GSM0480_MTYPE_REGISTER: received_cm_service_request changes to false DREF MSISDN:42342: MSC conn use - cm_service == 1 (0x2: dtap) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING DMM USSD: Own number requested DMM MSISDN:42342: MSISDN = 42342 DMSC msc_tx 43 bytes to MSISDN:42342 via RAN_GERAN_A -- DTAP --RAN_GERAN_A--> MS: NCSS:0x2a: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d +- DTAP --RAN_GERAN_A--> MS: GSM0480_MTYPE_RELEASE_COMPLETE: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d - DTAP matches expected message DREF MSISDN:42342: MSC conn use - dtap == 0 (0x0: ) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_UNUSED @@ -1754,17 +1754,17 @@ - a USSD request is serviced expecting USSD: Your extension is 42342 - MSC <--RAN_UTRAN_IU-- MS: NCSS:0x3b + MSC <--RAN_UTRAN_IU-- MS: GSM0480_MTYPE_REGISTER DREF MSISDN:42342: MSC conn use + dtap == 2 (0xa: dtap,cm_service) -DRLL Dispatching 04.08 message NCSS:0x3b (0xb:0x3b) -DMM MSISDN:42342: rx msg NCSS:0x3b: received_cm_service_request changes to false +DRLL Dispatching 04.08 message GSM0480_MTYPE_REGISTER (0xb:0x3b) +DMM MSISDN:42342: rx msg GSM0480_MTYPE_REGISTER: received_cm_service_request changes to false DREF MSISDN:42342: MSC conn use - cm_service == 1 (0x2: dtap) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING DMM USSD: Own number requested DMM MSISDN:42342: MSISDN = 42342 DMSC msc_tx 43 bytes to MSISDN:42342 via RAN_UTRAN_IU -- DTAP --RAN_UTRAN_IU--> MS: NCSS:0x2a: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d +- DTAP --RAN_UTRAN_IU--> MS: GSM0480_MTYPE_RELEASE_COMPLETE: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d - DTAP matches expected message DREF MSISDN:42342: MSC conn use - dtap == 0 (0x0: ) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_UNUSED @@ -1875,17 +1875,17 @@ - a USSD request is serviced expecting USSD: Your extension is 42342 - MSC <--RAN_UTRAN_IU-- MS: NCSS:0x3b + MSC <--RAN_UTRAN_IU-- MS: GSM0480_MTYPE_REGISTER DREF MSISDN:42342: MSC conn use + dtap == 2 (0xa: dtap,cm_service) -DRLL Dispatching 04.08 message NCSS:0x3b (0xb:0x3b) -DMM MSISDN:42342: rx msg NCSS:0x3b: received_cm_service_request changes to false +DRLL Dispatching 04.08 message GSM0480_MTYPE_REGISTER (0xb:0x3b) +DMM MSISDN:42342: rx msg GSM0480_MTYPE_REGISTER: received_cm_service_request changes to false DREF MSISDN:42342: MSC conn use - cm_service == 1 (0x2: dtap) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING DMM USSD: Own number requested DMM MSISDN:42342: MSISDN = 42342 DMSC msc_tx 43 bytes to MSISDN:42342 via RAN_UTRAN_IU -- DTAP --RAN_UTRAN_IU--> MS: NCSS:0x2a: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d +- DTAP --RAN_UTRAN_IU--> MS: GSM0480_MTYPE_RELEASE_COMPLETE: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d - DTAP matches expected message DREF MSISDN:42342: MSC conn use - dtap == 0 (0x0: ) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_UNUSED @@ -1996,17 +1996,17 @@ - a USSD request is serviced expecting USSD: Your extension is 42342 - MSC <--RAN_UTRAN_IU-- MS: NCSS:0x3b + MSC <--RAN_UTRAN_IU-- MS: GSM0480_MTYPE_REGISTER DREF MSISDN:42342: MSC conn use + dtap == 2 (0xa: dtap,cm_service) -DRLL Dispatching 04.08 message NCSS:0x3b (0xb:0x3b) -DMM MSISDN:42342: rx msg NCSS:0x3b: received_cm_service_request changes to false +DRLL Dispatching 04.08 message GSM0480_MTYPE_REGISTER (0xb:0x3b) +DMM MSISDN:42342: rx msg GSM0480_MTYPE_REGISTER: received_cm_service_request changes to false DREF MSISDN:42342: MSC conn use - cm_service == 1 (0x2: dtap) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING DMM USSD: Own number requested DMM MSISDN:42342: MSISDN = 42342 DMSC msc_tx 43 bytes to MSISDN:42342 via RAN_UTRAN_IU -- DTAP --RAN_UTRAN_IU--> MS: NCSS:0x2a: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d +- DTAP --RAN_UTRAN_IU--> MS: GSM0480_MTYPE_RELEASE_COMPLETE: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d - DTAP matches expected message DREF MSISDN:42342: MSC conn use - dtap == 0 (0x0: ) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_UNUSED @@ -2335,17 +2335,17 @@ - a USSD request is serviced expecting USSD: Your extension is 42342 - MSC <--RAN_GERAN_A-- MS: NCSS:0x3b + MSC <--RAN_GERAN_A-- MS: GSM0480_MTYPE_REGISTER DREF MSISDN:42342: MSC conn use + dtap == 2 (0xa: dtap,cm_service) -DRLL Dispatching 04.08 message NCSS:0x3b (0xb:0x3b) -DMM MSISDN:42342: rx msg NCSS:0x3b: received_cm_service_request changes to false +DRLL Dispatching 04.08 message GSM0480_MTYPE_REGISTER (0xb:0x3b) +DMM MSISDN:42342: rx msg GSM0480_MTYPE_REGISTER: received_cm_service_request changes to false DREF MSISDN:42342: MSC conn use - cm_service == 1 (0x2: dtap) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING DMM USSD: Own number requested DMM MSISDN:42342: MSISDN = 42342 DMSC msc_tx 43 bytes to MSISDN:42342 via RAN_GERAN_A -- DTAP --RAN_GERAN_A--> MS: NCSS:0x2a: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d +- DTAP --RAN_GERAN_A--> MS: GSM0480_MTYPE_RELEASE_COMPLETE: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d - DTAP matches expected message DREF MSISDN:42342: MSC conn use - dtap == 0 (0x0: ) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_UNUSED @@ -2699,17 +2699,17 @@ - a USSD request is serviced expecting USSD: Your extension is 42342 - MSC <--RAN_UTRAN_IU-- MS: NCSS:0x3b + MSC <--RAN_UTRAN_IU-- MS: GSM0480_MTYPE_REGISTER DREF MSISDN:42342: MSC conn use + dtap == 2 (0xa: dtap,cm_service) -DRLL Dispatching 04.08 message NCSS:0x3b (0xb:0x3b) -DMM MSISDN:42342: rx msg NCSS:0x3b: received_cm_service_request changes to false +DRLL Dispatching 04.08 message GSM0480_MTYPE_REGISTER (0xb:0x3b) +DMM MSISDN:42342: rx msg GSM0480_MTYPE_REGISTER: received_cm_service_request changes to false DREF MSISDN:42342: MSC conn use - cm_service == 1 (0x2: dtap) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING DMM USSD: Own number requested DMM MSISDN:42342: MSISDN = 42342 DMSC msc_tx 43 bytes to MSISDN:42342 via RAN_UTRAN_IU -- DTAP --RAN_UTRAN_IU--> MS: NCSS:0x2a: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d +- DTAP --RAN_UTRAN_IU--> MS: GSM0480_MTYPE_RELEASE_COMPLETE: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d - DTAP matches expected message DREF MSISDN:42342: MSC conn use - dtap == 0 (0x0: ) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_UNUSED 7. testsuite.at:47: 7. msc_vlr_test_authen_reuse (testsuite.at:47): FAILED (testsuite.at:51) ======================== ./tests/testsuite.dir/05/testsuite.log # -*- compilation -*- 5. testsuite.at:33: testing msc_vlr_test_gsm_ciph ... ./testsuite.at:37: $abs_top_builddir/tests/msc_vlr/msc_vlr_test_gsm_ciph --- experr 2018-04-17 12:16:33.195508864 +0000 +++ /build/tests/testsuite.dir/at-groups/5/stderr 2018-04-17 12:16:33.211508744 +0000 @@ -278,17 +278,17 @@ - a USSD request is serviced expecting USSD: Your extension is 46071 - MSC <--RAN_GERAN_A-- MS: NCSS:0x3b + MSC <--RAN_GERAN_A-- MS: GSM0480_MTYPE_REGISTER DREF MSISDN:46071: MSC conn use + dtap == 2 (0xa: dtap,cm_service) -DRLL Dispatching 04.08 message NCSS:0x3b (0xb:0x3b) -DMM MSISDN:46071: rx msg NCSS:0x3b: received_cm_service_request changes to false +DRLL Dispatching 04.08 message GSM0480_MTYPE_REGISTER (0xb:0x3b) +DMM MSISDN:46071: rx msg GSM0480_MTYPE_REGISTER: received_cm_service_request changes to false DREF MSISDN:46071: MSC conn use - cm_service == 1 (0x2: dtap) DMM Subscr_Conn(CM_SERVICE_REQ:901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING DMM Subscr_Conn(CM_SERVICE_REQ:901700000004620){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING DMM USSD: Own number requested DMM MSISDN:46071: MSISDN = 46071 DMSC msc_tx 43 bytes to MSISDN:46071 via RAN_GERAN_A -- DTAP --RAN_GERAN_A--> MS: NCSS:0x2a: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d27310cd06bbc51a0d +- DTAP --RAN_GERAN_A--> MS: GSM0480_MTYPE_RELEASE_COMPLETE: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d27310cd06bbc51a0d - DTAP matches expected message DREF MSISDN:46071: MSC conn use - dtap == 0 (0x0: ) DMM Subscr_Conn(CM_SERVICE_REQ:901700000004620){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_UNUSED @@ -834,17 +834,17 @@ - a USSD request is serviced expecting USSD: Your extension is 46071 - MSC <--RAN_GERAN_A-- MS: NCSS:0x3b + MSC <--RAN_GERAN_A-- MS: GSM0480_MTYPE_REGISTER DREF MSISDN:46071: MSC conn use + dtap == 2 (0xa: dtap,cm_service) -DRLL Dispatching 04.08 message NCSS:0x3b (0xb:0x3b) -DMM MSISDN:46071: rx msg NCSS:0x3b: received_cm_service_request changes to false +DRLL Dispatching 04.08 message GSM0480_MTYPE_REGISTER (0xb:0x3b) +DMM MSISDN:46071: rx msg GSM0480_MTYPE_REGISTER: received_cm_service_request changes to false DREF MSISDN:46071: MSC conn use - cm_service == 1 (0x2: dtap) DMM Subscr_Conn(CM_SERVICE_REQ:50462976){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING DMM Subscr_Conn(CM_SERVICE_REQ:50462976){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING DMM USSD: Own number requested DMM MSISDN:46071: MSISDN = 46071 DMSC msc_tx 43 bytes to MSISDN:46071 via RAN_GERAN_A -- DTAP --RAN_GERAN_A--> MS: NCSS:0x2a: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d27310cd06bbc51a0d +- DTAP --RAN_GERAN_A--> MS: GSM0480_MTYPE_RELEASE_COMPLETE: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d27310cd06bbc51a0d - DTAP matches expected message DREF MSISDN:46071: MSC conn use - dtap == 0 (0x0: ) DMM Subscr_Conn(CM_SERVICE_REQ:50462976){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_UNUSED @@ -2076,17 +2076,17 @@ - a USSD request is serviced expecting USSD: Your extension is 42342 - MSC <--RAN_GERAN_A-- MS: NCSS:0x3b + MSC <--RAN_GERAN_A-- MS: GSM0480_MTYPE_REGISTER DREF MSISDN:42342: MSC conn use + dtap == 2 (0xa: dtap,cm_service) -DRLL Dispatching 04.08 message NCSS:0x3b (0xb:0x3b) -DMM MSISDN:42342: rx msg NCSS:0x3b: received_cm_service_request changes to false +DRLL Dispatching 04.08 message GSM0480_MTYPE_REGISTER (0xb:0x3b) +DMM MSISDN:42342: rx msg GSM0480_MTYPE_REGISTER: received_cm_service_request changes to false DREF MSISDN:42342: MSC conn use - cm_service == 1 (0x2: dtap) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING DMM USSD: Own number requested DMM MSISDN:42342: MSISDN = 42342 DMSC msc_tx 43 bytes to MSISDN:42342 via RAN_GERAN_A -- DTAP --RAN_GERAN_A--> MS: NCSS:0x2a: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d +- DTAP --RAN_GERAN_A--> MS: GSM0480_MTYPE_RELEASE_COMPLETE: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d - DTAP matches expected message DREF MSISDN:42342: MSC conn use - dtap == 0 (0x0: ) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_UNUSED 5. testsuite.at:33: 5. msc_vlr_test_gsm_ciph (testsuite.at:33): FAILED (testsuite.at:37) Build step 'Execute shell' marked build as failure [WARNINGS]Skipping publisher since build result is FAILURE From jenkins at lists.osmocom.org Tue Apr 17 12:16:48 2018 From: jenkins at lists.osmocom.org (jenkins at lists.osmocom.org) Date: Tue, 17 Apr 2018 12:16:48 +0000 (UTC) Subject: =?UTF-8?Q?Build_failed_in_Jenkins:_master-osmo-msc_=C2=BB_--enable-?= =?UTF-8?Q?iu,a2=3Ddefault,a3=3Ddefault,osmocom-master-debian9_#2873?= Message-ID: <1334124941.409.1523967408164.JavaMail.jenkins@jenkins.osmocom.org> See ------------------------------------------ [...truncated 1.07 MB...] -DRLL Dispatching 04.08 message NCSS:0x3b (0xb:0x3b) -DMM MSISDN:42342: rx msg NCSS:0x3b: received_cm_service_request changes to false +DRLL Dispatching 04.08 message GSM0480_MTYPE_REGISTER (0xb:0x3b) +DMM MSISDN:42342: rx msg GSM0480_MTYPE_REGISTER: received_cm_service_request changes to false DREF MSISDN:42342: MSC conn use - cm_service == 1 (0x2: dtap) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING DMM USSD: Own number requested DMM MSISDN:42342: MSISDN = 42342 DMSC msc_tx 43 bytes to MSISDN:42342 via RAN_GERAN_A -- DTAP --RAN_GERAN_A--> MS: NCSS:0x2a: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d +- DTAP --RAN_GERAN_A--> MS: GSM0480_MTYPE_RELEASE_COMPLETE: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d - DTAP matches expected message DREF MSISDN:42342: MSC conn use - dtap == 0 (0x0: ) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_UNUSED @@ -1296,17 +1296,17 @@ - a USSD request is serviced expecting USSD: Your extension is 42342 - MSC <--RAN_GERAN_A-- MS: NCSS:0x3b + MSC <--RAN_GERAN_A-- MS: GSM0480_MTYPE_REGISTER DREF MSISDN:42342: MSC conn use + dtap == 2 (0xa: dtap,cm_service) -DRLL Dispatching 04.08 message NCSS:0x3b (0xb:0x3b) -DMM MSISDN:42342: rx msg NCSS:0x3b: received_cm_service_request changes to false +DRLL Dispatching 04.08 message GSM0480_MTYPE_REGISTER (0xb:0x3b) +DMM MSISDN:42342: rx msg GSM0480_MTYPE_REGISTER: received_cm_service_request changes to false DREF MSISDN:42342: MSC conn use - cm_service == 1 (0x2: dtap) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING DMM USSD: Own number requested DMM MSISDN:42342: MSISDN = 42342 DMSC msc_tx 43 bytes to MSISDN:42342 via RAN_GERAN_A -- DTAP --RAN_GERAN_A--> MS: NCSS:0x2a: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d +- DTAP --RAN_GERAN_A--> MS: GSM0480_MTYPE_RELEASE_COMPLETE: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d - DTAP matches expected message DREF MSISDN:42342: MSC conn use - dtap == 0 (0x0: ) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_UNUSED @@ -1404,17 +1404,17 @@ - a USSD request is serviced expecting USSD: Your extension is 42342 - MSC <--RAN_GERAN_A-- MS: NCSS:0x3b + MSC <--RAN_GERAN_A-- MS: GSM0480_MTYPE_REGISTER DREF MSISDN:42342: MSC conn use + dtap == 2 (0xa: dtap,cm_service) -DRLL Dispatching 04.08 message NCSS:0x3b (0xb:0x3b) -DMM MSISDN:42342: rx msg NCSS:0x3b: received_cm_service_request changes to false +DRLL Dispatching 04.08 message GSM0480_MTYPE_REGISTER (0xb:0x3b) +DMM MSISDN:42342: rx msg GSM0480_MTYPE_REGISTER: received_cm_service_request changes to false DREF MSISDN:42342: MSC conn use - cm_service == 1 (0x2: dtap) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING DMM USSD: Own number requested DMM MSISDN:42342: MSISDN = 42342 DMSC msc_tx 43 bytes to MSISDN:42342 via RAN_GERAN_A -- DTAP --RAN_GERAN_A--> MS: NCSS:0x2a: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d +- DTAP --RAN_GERAN_A--> MS: GSM0480_MTYPE_RELEASE_COMPLETE: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d - DTAP matches expected message DREF MSISDN:42342: MSC conn use - dtap == 0 (0x0: ) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_UNUSED @@ -1754,17 +1754,17 @@ - a USSD request is serviced expecting USSD: Your extension is 42342 - MSC <--RAN_UTRAN_IU-- MS: NCSS:0x3b + MSC <--RAN_UTRAN_IU-- MS: GSM0480_MTYPE_REGISTER DREF MSISDN:42342: MSC conn use + dtap == 2 (0xa: dtap,cm_service) -DRLL Dispatching 04.08 message NCSS:0x3b (0xb:0x3b) -DMM MSISDN:42342: rx msg NCSS:0x3b: received_cm_service_request changes to false +DRLL Dispatching 04.08 message GSM0480_MTYPE_REGISTER (0xb:0x3b) +DMM MSISDN:42342: rx msg GSM0480_MTYPE_REGISTER: received_cm_service_request changes to false DREF MSISDN:42342: MSC conn use - cm_service == 1 (0x2: dtap) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING DMM USSD: Own number requested DMM MSISDN:42342: MSISDN = 42342 DMSC msc_tx 43 bytes to MSISDN:42342 via RAN_UTRAN_IU -- DTAP --RAN_UTRAN_IU--> MS: NCSS:0x2a: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d +- DTAP --RAN_UTRAN_IU--> MS: GSM0480_MTYPE_RELEASE_COMPLETE: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d - DTAP matches expected message DREF MSISDN:42342: MSC conn use - dtap == 0 (0x0: ) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_UNUSED @@ -1875,17 +1875,17 @@ - a USSD request is serviced expecting USSD: Your extension is 42342 - MSC <--RAN_UTRAN_IU-- MS: NCSS:0x3b + MSC <--RAN_UTRAN_IU-- MS: GSM0480_MTYPE_REGISTER DREF MSISDN:42342: MSC conn use + dtap == 2 (0xa: dtap,cm_service) -DRLL Dispatching 04.08 message NCSS:0x3b (0xb:0x3b) -DMM MSISDN:42342: rx msg NCSS:0x3b: received_cm_service_request changes to false +DRLL Dispatching 04.08 message GSM0480_MTYPE_REGISTER (0xb:0x3b) +DMM MSISDN:42342: rx msg GSM0480_MTYPE_REGISTER: received_cm_service_request changes to false DREF MSISDN:42342: MSC conn use - cm_service == 1 (0x2: dtap) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING DMM USSD: Own number requested DMM MSISDN:42342: MSISDN = 42342 DMSC msc_tx 43 bytes to MSISDN:42342 via RAN_UTRAN_IU -- DTAP --RAN_UTRAN_IU--> MS: NCSS:0x2a: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d +- DTAP --RAN_UTRAN_IU--> MS: GSM0480_MTYPE_RELEASE_COMPLETE: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d - DTAP matches expected message DREF MSISDN:42342: MSC conn use - dtap == 0 (0x0: ) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_UNUSED @@ -1996,17 +1996,17 @@ - a USSD request is serviced expecting USSD: Your extension is 42342 - MSC <--RAN_UTRAN_IU-- MS: NCSS:0x3b + MSC <--RAN_UTRAN_IU-- MS: GSM0480_MTYPE_REGISTER DREF MSISDN:42342: MSC conn use + dtap == 2 (0xa: dtap,cm_service) -DRLL Dispatching 04.08 message NCSS:0x3b (0xb:0x3b) -DMM MSISDN:42342: rx msg NCSS:0x3b: received_cm_service_request changes to false +DRLL Dispatching 04.08 message GSM0480_MTYPE_REGISTER (0xb:0x3b) +DMM MSISDN:42342: rx msg GSM0480_MTYPE_REGISTER: received_cm_service_request changes to false DREF MSISDN:42342: MSC conn use - cm_service == 1 (0x2: dtap) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING DMM USSD: Own number requested DMM MSISDN:42342: MSISDN = 42342 DMSC msc_tx 43 bytes to MSISDN:42342 via RAN_UTRAN_IU -- DTAP --RAN_UTRAN_IU--> MS: NCSS:0x2a: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d +- DTAP --RAN_UTRAN_IU--> MS: GSM0480_MTYPE_RELEASE_COMPLETE: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d - DTAP matches expected message DREF MSISDN:42342: MSC conn use - dtap == 0 (0x0: ) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_UNUSED @@ -2335,17 +2335,17 @@ - a USSD request is serviced expecting USSD: Your extension is 42342 - MSC <--RAN_GERAN_A-- MS: NCSS:0x3b + MSC <--RAN_GERAN_A-- MS: GSM0480_MTYPE_REGISTER DREF MSISDN:42342: MSC conn use + dtap == 2 (0xa: dtap,cm_service) -DRLL Dispatching 04.08 message NCSS:0x3b (0xb:0x3b) -DMM MSISDN:42342: rx msg NCSS:0x3b: received_cm_service_request changes to false +DRLL Dispatching 04.08 message GSM0480_MTYPE_REGISTER (0xb:0x3b) +DMM MSISDN:42342: rx msg GSM0480_MTYPE_REGISTER: received_cm_service_request changes to false DREF MSISDN:42342: MSC conn use - cm_service == 1 (0x2: dtap) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING DMM USSD: Own number requested DMM MSISDN:42342: MSISDN = 42342 DMSC msc_tx 43 bytes to MSISDN:42342 via RAN_GERAN_A -- DTAP --RAN_GERAN_A--> MS: NCSS:0x2a: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d +- DTAP --RAN_GERAN_A--> MS: GSM0480_MTYPE_RELEASE_COMPLETE: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d - DTAP matches expected message DREF MSISDN:42342: MSC conn use - dtap == 0 (0x0: ) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_UNUSED @@ -2699,17 +2699,17 @@ - a USSD request is serviced expecting USSD: Your extension is 42342 - MSC <--RAN_UTRAN_IU-- MS: NCSS:0x3b + MSC <--RAN_UTRAN_IU-- MS: GSM0480_MTYPE_REGISTER DREF MSISDN:42342: MSC conn use + dtap == 2 (0xa: dtap,cm_service) -DRLL Dispatching 04.08 message NCSS:0x3b (0xb:0x3b) -DMM MSISDN:42342: rx msg NCSS:0x3b: received_cm_service_request changes to false +DRLL Dispatching 04.08 message GSM0480_MTYPE_REGISTER (0xb:0x3b) +DMM MSISDN:42342: rx msg GSM0480_MTYPE_REGISTER: received_cm_service_request changes to false DREF MSISDN:42342: MSC conn use - cm_service == 1 (0x2: dtap) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING DMM USSD: Own number requested DMM MSISDN:42342: MSISDN = 42342 DMSC msc_tx 43 bytes to MSISDN:42342 via RAN_UTRAN_IU -- DTAP --RAN_UTRAN_IU--> MS: NCSS:0x2a: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d +- DTAP --RAN_UTRAN_IU--> MS: GSM0480_MTYPE_RELEASE_COMPLETE: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d - DTAP matches expected message DREF MSISDN:42342: MSC conn use - dtap == 0 (0x0: ) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_UNUSED 7. testsuite.at:47: 7. msc_vlr_test_authen_reuse (testsuite.at:47): FAILED (testsuite.at:51) ======================== ./tests/testsuite.dir/05/testsuite.log # -*- compilation -*- 5. testsuite.at:33: testing msc_vlr_test_gsm_ciph ... ./testsuite.at:37: $abs_top_builddir/tests/msc_vlr/msc_vlr_test_gsm_ciph --- experr 2018-04-17 12:16:47.191403788 +0000 +++ /build/tests/testsuite.dir/at-groups/5/stderr 2018-04-17 12:16:47.211403638 +0000 @@ -278,17 +278,17 @@ - a USSD request is serviced expecting USSD: Your extension is 46071 - MSC <--RAN_GERAN_A-- MS: NCSS:0x3b + MSC <--RAN_GERAN_A-- MS: GSM0480_MTYPE_REGISTER DREF MSISDN:46071: MSC conn use + dtap == 2 (0xa: dtap,cm_service) -DRLL Dispatching 04.08 message NCSS:0x3b (0xb:0x3b) -DMM MSISDN:46071: rx msg NCSS:0x3b: received_cm_service_request changes to false +DRLL Dispatching 04.08 message GSM0480_MTYPE_REGISTER (0xb:0x3b) +DMM MSISDN:46071: rx msg GSM0480_MTYPE_REGISTER: received_cm_service_request changes to false DREF MSISDN:46071: MSC conn use - cm_service == 1 (0x2: dtap) DMM Subscr_Conn(CM_SERVICE_REQ:901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING DMM Subscr_Conn(CM_SERVICE_REQ:901700000004620){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING DMM USSD: Own number requested DMM MSISDN:46071: MSISDN = 46071 DMSC msc_tx 43 bytes to MSISDN:46071 via RAN_GERAN_A -- DTAP --RAN_GERAN_A--> MS: NCSS:0x2a: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d27310cd06bbc51a0d +- DTAP --RAN_GERAN_A--> MS: GSM0480_MTYPE_RELEASE_COMPLETE: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d27310cd06bbc51a0d - DTAP matches expected message DREF MSISDN:46071: MSC conn use - dtap == 0 (0x0: ) DMM Subscr_Conn(CM_SERVICE_REQ:901700000004620){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_UNUSED @@ -834,17 +834,17 @@ - a USSD request is serviced expecting USSD: Your extension is 46071 - MSC <--RAN_GERAN_A-- MS: NCSS:0x3b + MSC <--RAN_GERAN_A-- MS: GSM0480_MTYPE_REGISTER DREF MSISDN:46071: MSC conn use + dtap == 2 (0xa: dtap,cm_service) -DRLL Dispatching 04.08 message NCSS:0x3b (0xb:0x3b) -DMM MSISDN:46071: rx msg NCSS:0x3b: received_cm_service_request changes to false +DRLL Dispatching 04.08 message GSM0480_MTYPE_REGISTER (0xb:0x3b) +DMM MSISDN:46071: rx msg GSM0480_MTYPE_REGISTER: received_cm_service_request changes to false DREF MSISDN:46071: MSC conn use - cm_service == 1 (0x2: dtap) DMM Subscr_Conn(CM_SERVICE_REQ:50462976){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING DMM Subscr_Conn(CM_SERVICE_REQ:50462976){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING DMM USSD: Own number requested DMM MSISDN:46071: MSISDN = 46071 DMSC msc_tx 43 bytes to MSISDN:46071 via RAN_GERAN_A -- DTAP --RAN_GERAN_A--> MS: NCSS:0x2a: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d27310cd06bbc51a0d +- DTAP --RAN_GERAN_A--> MS: GSM0480_MTYPE_RELEASE_COMPLETE: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d27310cd06bbc51a0d - DTAP matches expected message DREF MSISDN:46071: MSC conn use - dtap == 0 (0x0: ) DMM Subscr_Conn(CM_SERVICE_REQ:50462976){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_UNUSED @@ -2076,17 +2076,17 @@ - a USSD request is serviced expecting USSD: Your extension is 42342 - MSC <--RAN_GERAN_A-- MS: NCSS:0x3b + MSC <--RAN_GERAN_A-- MS: GSM0480_MTYPE_REGISTER DREF MSISDN:42342: MSC conn use + dtap == 2 (0xa: dtap,cm_service) -DRLL Dispatching 04.08 message NCSS:0x3b (0xb:0x3b) -DMM MSISDN:42342: rx msg NCSS:0x3b: received_cm_service_request changes to false +DRLL Dispatching 04.08 message GSM0480_MTYPE_REGISTER (0xb:0x3b) +DMM MSISDN:42342: rx msg GSM0480_MTYPE_REGISTER: received_cm_service_request changes to false DREF MSISDN:42342: MSC conn use - cm_service == 1 (0x2: dtap) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING DMM USSD: Own number requested DMM MSISDN:42342: MSISDN = 42342 DMSC msc_tx 43 bytes to MSISDN:42342 via RAN_GERAN_A -- DTAP --RAN_GERAN_A--> MS: NCSS:0x2a: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d +- DTAP --RAN_GERAN_A--> MS: GSM0480_MTYPE_RELEASE_COMPLETE: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d - DTAP matches expected message DREF MSISDN:42342: MSC conn use - dtap == 0 (0x0: ) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_UNUSED 5. testsuite.at:33: 5. msc_vlr_test_gsm_ciph (testsuite.at:33): FAILED (testsuite.at:37) Build step 'Execute shell' marked build as failure [WARNINGS]Skipping publisher since build result is FAILURE From jenkins at lists.osmocom.org Tue Apr 17 12:20:09 2018 From: jenkins at lists.osmocom.org (jenkins at lists.osmocom.org) Date: Tue, 17 Apr 2018 12:20:09 +0000 (UTC) Subject: =?UTF-8?Q?Build_failed_in_Jenkins:_master-osmo-msc_=C2=BB_--disable-?= =?UTF-8?Q?iu,a2=3Ddefault,a3=3Ddefault,osmocom-master-debian9_#2874?= In-Reply-To: <2122476345.408.1523967394056.JavaMail.jenkins@jenkins.osmocom.org> References: <2122476345.408.1523967394056.JavaMail.jenkins@jenkins.osmocom.org> Message-ID: <1171573713.410.1523967609146.JavaMail.jenkins@jenkins.osmocom.org> See ------------------------------------------ [...truncated 801.73 KB...] -DRLL Dispatching 04.08 message NCSS:0x3b (0xb:0x3b) -DMM MSISDN:42342: rx msg NCSS:0x3b: received_cm_service_request changes to false +DRLL Dispatching 04.08 message GSM0480_MTYPE_REGISTER (0xb:0x3b) +DMM MSISDN:42342: rx msg GSM0480_MTYPE_REGISTER: received_cm_service_request changes to false DREF MSISDN:42342: MSC conn use - cm_service == 1 (0x2: dtap) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING DMM USSD: Own number requested DMM MSISDN:42342: MSISDN = 42342 DMSC msc_tx 43 bytes to MSISDN:42342 via RAN_GERAN_A -- DTAP --RAN_GERAN_A--> MS: NCSS:0x2a: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d +- DTAP --RAN_GERAN_A--> MS: GSM0480_MTYPE_RELEASE_COMPLETE: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d - DTAP matches expected message DREF MSISDN:42342: MSC conn use - dtap == 0 (0x0: ) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_UNUSED @@ -1296,17 +1296,17 @@ - a USSD request is serviced expecting USSD: Your extension is 42342 - MSC <--RAN_GERAN_A-- MS: NCSS:0x3b + MSC <--RAN_GERAN_A-- MS: GSM0480_MTYPE_REGISTER DREF MSISDN:42342: MSC conn use + dtap == 2 (0xa: dtap,cm_service) -DRLL Dispatching 04.08 message NCSS:0x3b (0xb:0x3b) -DMM MSISDN:42342: rx msg NCSS:0x3b: received_cm_service_request changes to false +DRLL Dispatching 04.08 message GSM0480_MTYPE_REGISTER (0xb:0x3b) +DMM MSISDN:42342: rx msg GSM0480_MTYPE_REGISTER: received_cm_service_request changes to false DREF MSISDN:42342: MSC conn use - cm_service == 1 (0x2: dtap) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING DMM USSD: Own number requested DMM MSISDN:42342: MSISDN = 42342 DMSC msc_tx 43 bytes to MSISDN:42342 via RAN_GERAN_A -- DTAP --RAN_GERAN_A--> MS: NCSS:0x2a: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d +- DTAP --RAN_GERAN_A--> MS: GSM0480_MTYPE_RELEASE_COMPLETE: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d - DTAP matches expected message DREF MSISDN:42342: MSC conn use - dtap == 0 (0x0: ) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_UNUSED @@ -1404,17 +1404,17 @@ - a USSD request is serviced expecting USSD: Your extension is 42342 - MSC <--RAN_GERAN_A-- MS: NCSS:0x3b + MSC <--RAN_GERAN_A-- MS: GSM0480_MTYPE_REGISTER DREF MSISDN:42342: MSC conn use + dtap == 2 (0xa: dtap,cm_service) -DRLL Dispatching 04.08 message NCSS:0x3b (0xb:0x3b) -DMM MSISDN:42342: rx msg NCSS:0x3b: received_cm_service_request changes to false +DRLL Dispatching 04.08 message GSM0480_MTYPE_REGISTER (0xb:0x3b) +DMM MSISDN:42342: rx msg GSM0480_MTYPE_REGISTER: received_cm_service_request changes to false DREF MSISDN:42342: MSC conn use - cm_service == 1 (0x2: dtap) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING DMM USSD: Own number requested DMM MSISDN:42342: MSISDN = 42342 DMSC msc_tx 43 bytes to MSISDN:42342 via RAN_GERAN_A -- DTAP --RAN_GERAN_A--> MS: NCSS:0x2a: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d +- DTAP --RAN_GERAN_A--> MS: GSM0480_MTYPE_RELEASE_COMPLETE: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d - DTAP matches expected message DREF MSISDN:42342: MSC conn use - dtap == 0 (0x0: ) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_UNUSED @@ -1754,17 +1754,17 @@ - a USSD request is serviced expecting USSD: Your extension is 42342 - MSC <--RAN_UTRAN_IU-- MS: NCSS:0x3b + MSC <--RAN_UTRAN_IU-- MS: GSM0480_MTYPE_REGISTER DREF MSISDN:42342: MSC conn use + dtap == 2 (0xa: dtap,cm_service) -DRLL Dispatching 04.08 message NCSS:0x3b (0xb:0x3b) -DMM MSISDN:42342: rx msg NCSS:0x3b: received_cm_service_request changes to false +DRLL Dispatching 04.08 message GSM0480_MTYPE_REGISTER (0xb:0x3b) +DMM MSISDN:42342: rx msg GSM0480_MTYPE_REGISTER: received_cm_service_request changes to false DREF MSISDN:42342: MSC conn use - cm_service == 1 (0x2: dtap) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING DMM USSD: Own number requested DMM MSISDN:42342: MSISDN = 42342 DMSC msc_tx 43 bytes to MSISDN:42342 via RAN_UTRAN_IU -- DTAP --RAN_UTRAN_IU--> MS: NCSS:0x2a: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d +- DTAP --RAN_UTRAN_IU--> MS: GSM0480_MTYPE_RELEASE_COMPLETE: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d - DTAP matches expected message DREF MSISDN:42342: MSC conn use - dtap == 0 (0x0: ) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_UNUSED @@ -1875,17 +1875,17 @@ - a USSD request is serviced expecting USSD: Your extension is 42342 - MSC <--RAN_UTRAN_IU-- MS: NCSS:0x3b + MSC <--RAN_UTRAN_IU-- MS: GSM0480_MTYPE_REGISTER DREF MSISDN:42342: MSC conn use + dtap == 2 (0xa: dtap,cm_service) -DRLL Dispatching 04.08 message NCSS:0x3b (0xb:0x3b) -DMM MSISDN:42342: rx msg NCSS:0x3b: received_cm_service_request changes to false +DRLL Dispatching 04.08 message GSM0480_MTYPE_REGISTER (0xb:0x3b) +DMM MSISDN:42342: rx msg GSM0480_MTYPE_REGISTER: received_cm_service_request changes to false DREF MSISDN:42342: MSC conn use - cm_service == 1 (0x2: dtap) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING DMM USSD: Own number requested DMM MSISDN:42342: MSISDN = 42342 DMSC msc_tx 43 bytes to MSISDN:42342 via RAN_UTRAN_IU -- DTAP --RAN_UTRAN_IU--> MS: NCSS:0x2a: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d +- DTAP --RAN_UTRAN_IU--> MS: GSM0480_MTYPE_RELEASE_COMPLETE: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d - DTAP matches expected message DREF MSISDN:42342: MSC conn use - dtap == 0 (0x0: ) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_UNUSED @@ -1996,17 +1996,17 @@ - a USSD request is serviced expecting USSD: Your extension is 42342 - MSC <--RAN_UTRAN_IU-- MS: NCSS:0x3b + MSC <--RAN_UTRAN_IU-- MS: GSM0480_MTYPE_REGISTER DREF MSISDN:42342: MSC conn use + dtap == 2 (0xa: dtap,cm_service) -DRLL Dispatching 04.08 message NCSS:0x3b (0xb:0x3b) -DMM MSISDN:42342: rx msg NCSS:0x3b: received_cm_service_request changes to false +DRLL Dispatching 04.08 message GSM0480_MTYPE_REGISTER (0xb:0x3b) +DMM MSISDN:42342: rx msg GSM0480_MTYPE_REGISTER: received_cm_service_request changes to false DREF MSISDN:42342: MSC conn use - cm_service == 1 (0x2: dtap) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING DMM USSD: Own number requested DMM MSISDN:42342: MSISDN = 42342 DMSC msc_tx 43 bytes to MSISDN:42342 via RAN_UTRAN_IU -- DTAP --RAN_UTRAN_IU--> MS: NCSS:0x2a: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d +- DTAP --RAN_UTRAN_IU--> MS: GSM0480_MTYPE_RELEASE_COMPLETE: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d - DTAP matches expected message DREF MSISDN:42342: MSC conn use - dtap == 0 (0x0: ) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_UNUSED @@ -2335,17 +2335,17 @@ - a USSD request is serviced expecting USSD: Your extension is 42342 - MSC <--RAN_GERAN_A-- MS: NCSS:0x3b + MSC <--RAN_GERAN_A-- MS: GSM0480_MTYPE_REGISTER DREF MSISDN:42342: MSC conn use + dtap == 2 (0xa: dtap,cm_service) -DRLL Dispatching 04.08 message NCSS:0x3b (0xb:0x3b) -DMM MSISDN:42342: rx msg NCSS:0x3b: received_cm_service_request changes to false +DRLL Dispatching 04.08 message GSM0480_MTYPE_REGISTER (0xb:0x3b) +DMM MSISDN:42342: rx msg GSM0480_MTYPE_REGISTER: received_cm_service_request changes to false DREF MSISDN:42342: MSC conn use - cm_service == 1 (0x2: dtap) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING DMM USSD: Own number requested DMM MSISDN:42342: MSISDN = 42342 DMSC msc_tx 43 bytes to MSISDN:42342 via RAN_GERAN_A -- DTAP --RAN_GERAN_A--> MS: NCSS:0x2a: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d +- DTAP --RAN_GERAN_A--> MS: GSM0480_MTYPE_RELEASE_COMPLETE: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d - DTAP matches expected message DREF MSISDN:42342: MSC conn use - dtap == 0 (0x0: ) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_UNUSED @@ -2699,17 +2699,17 @@ - a USSD request is serviced expecting USSD: Your extension is 42342 - MSC <--RAN_UTRAN_IU-- MS: NCSS:0x3b + MSC <--RAN_UTRAN_IU-- MS: GSM0480_MTYPE_REGISTER DREF MSISDN:42342: MSC conn use + dtap == 2 (0xa: dtap,cm_service) -DRLL Dispatching 04.08 message NCSS:0x3b (0xb:0x3b) -DMM MSISDN:42342: rx msg NCSS:0x3b: received_cm_service_request changes to false +DRLL Dispatching 04.08 message GSM0480_MTYPE_REGISTER (0xb:0x3b) +DMM MSISDN:42342: rx msg GSM0480_MTYPE_REGISTER: received_cm_service_request changes to false DREF MSISDN:42342: MSC conn use - cm_service == 1 (0x2: dtap) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING DMM USSD: Own number requested DMM MSISDN:42342: MSISDN = 42342 DMSC msc_tx 43 bytes to MSISDN:42342 via RAN_UTRAN_IU -- DTAP --RAN_UTRAN_IU--> MS: NCSS:0x2a: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d +- DTAP --RAN_UTRAN_IU--> MS: GSM0480_MTYPE_RELEASE_COMPLETE: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d - DTAP matches expected message DREF MSISDN:42342: MSC conn use - dtap == 0 (0x0: ) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_UNUSED 7. testsuite.at:47: 7. msc_vlr_test_authen_reuse (testsuite.at:47): FAILED (testsuite.at:51) ======================== ./tests/testsuite.dir/05/testsuite.log # -*- compilation -*- 5. testsuite.at:33: testing msc_vlr_test_gsm_ciph ... ./testsuite.at:37: $abs_top_builddir/tests/msc_vlr/msc_vlr_test_gsm_ciph --- experr 2018-04-17 12:20:08.173899603 +0000 +++ /build/tests/testsuite.dir/at-groups/5/stderr 2018-04-17 12:20:08.189899483 +0000 @@ -278,17 +278,17 @@ - a USSD request is serviced expecting USSD: Your extension is 46071 - MSC <--RAN_GERAN_A-- MS: NCSS:0x3b + MSC <--RAN_GERAN_A-- MS: GSM0480_MTYPE_REGISTER DREF MSISDN:46071: MSC conn use + dtap == 2 (0xa: dtap,cm_service) -DRLL Dispatching 04.08 message NCSS:0x3b (0xb:0x3b) -DMM MSISDN:46071: rx msg NCSS:0x3b: received_cm_service_request changes to false +DRLL Dispatching 04.08 message GSM0480_MTYPE_REGISTER (0xb:0x3b) +DMM MSISDN:46071: rx msg GSM0480_MTYPE_REGISTER: received_cm_service_request changes to false DREF MSISDN:46071: MSC conn use - cm_service == 1 (0x2: dtap) DMM Subscr_Conn(CM_SERVICE_REQ:901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING DMM Subscr_Conn(CM_SERVICE_REQ:901700000004620){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING DMM USSD: Own number requested DMM MSISDN:46071: MSISDN = 46071 DMSC msc_tx 43 bytes to MSISDN:46071 via RAN_GERAN_A -- DTAP --RAN_GERAN_A--> MS: NCSS:0x2a: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d27310cd06bbc51a0d +- DTAP --RAN_GERAN_A--> MS: GSM0480_MTYPE_RELEASE_COMPLETE: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d27310cd06bbc51a0d - DTAP matches expected message DREF MSISDN:46071: MSC conn use - dtap == 0 (0x0: ) DMM Subscr_Conn(CM_SERVICE_REQ:901700000004620){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_UNUSED @@ -834,17 +834,17 @@ - a USSD request is serviced expecting USSD: Your extension is 46071 - MSC <--RAN_GERAN_A-- MS: NCSS:0x3b + MSC <--RAN_GERAN_A-- MS: GSM0480_MTYPE_REGISTER DREF MSISDN:46071: MSC conn use + dtap == 2 (0xa: dtap,cm_service) -DRLL Dispatching 04.08 message NCSS:0x3b (0xb:0x3b) -DMM MSISDN:46071: rx msg NCSS:0x3b: received_cm_service_request changes to false +DRLL Dispatching 04.08 message GSM0480_MTYPE_REGISTER (0xb:0x3b) +DMM MSISDN:46071: rx msg GSM0480_MTYPE_REGISTER: received_cm_service_request changes to false DREF MSISDN:46071: MSC conn use - cm_service == 1 (0x2: dtap) DMM Subscr_Conn(CM_SERVICE_REQ:50462976){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING DMM Subscr_Conn(CM_SERVICE_REQ:50462976){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING DMM USSD: Own number requested DMM MSISDN:46071: MSISDN = 46071 DMSC msc_tx 43 bytes to MSISDN:46071 via RAN_GERAN_A -- DTAP --RAN_GERAN_A--> MS: NCSS:0x2a: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d27310cd06bbc51a0d +- DTAP --RAN_GERAN_A--> MS: GSM0480_MTYPE_RELEASE_COMPLETE: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d27310cd06bbc51a0d - DTAP matches expected message DREF MSISDN:46071: MSC conn use - dtap == 0 (0x0: ) DMM Subscr_Conn(CM_SERVICE_REQ:50462976){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_UNUSED @@ -2076,17 +2076,17 @@ - a USSD request is serviced expecting USSD: Your extension is 42342 - MSC <--RAN_GERAN_A-- MS: NCSS:0x3b + MSC <--RAN_GERAN_A-- MS: GSM0480_MTYPE_REGISTER DREF MSISDN:42342: MSC conn use + dtap == 2 (0xa: dtap,cm_service) -DRLL Dispatching 04.08 message NCSS:0x3b (0xb:0x3b) -DMM MSISDN:42342: rx msg NCSS:0x3b: received_cm_service_request changes to false +DRLL Dispatching 04.08 message GSM0480_MTYPE_REGISTER (0xb:0x3b) +DMM MSISDN:42342: rx msg GSM0480_MTYPE_REGISTER: received_cm_service_request changes to false DREF MSISDN:42342: MSC conn use - cm_service == 1 (0x2: dtap) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING DMM USSD: Own number requested DMM MSISDN:42342: MSISDN = 42342 DMSC msc_tx 43 bytes to MSISDN:42342 via RAN_GERAN_A -- DTAP --RAN_GERAN_A--> MS: NCSS:0x2a: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d +- DTAP --RAN_GERAN_A--> MS: GSM0480_MTYPE_RELEASE_COMPLETE: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d - DTAP matches expected message DREF MSISDN:42342: MSC conn use - dtap == 0 (0x0: ) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_UNUSED 5. testsuite.at:33: 5. msc_vlr_test_gsm_ciph (testsuite.at:33): FAILED (testsuite.at:37) Build step 'Execute shell' marked build as failure [WARNINGS]Skipping publisher since build result is FAILURE From jenkins at lists.osmocom.org Tue Apr 17 12:20:48 2018 From: jenkins at lists.osmocom.org (jenkins at lists.osmocom.org) Date: Tue, 17 Apr 2018 12:20:48 +0000 (UTC) Subject: =?UTF-8?Q?Build_failed_in_Jenkins:_master-osmo-msc_=C2=BB_--enable-?= =?UTF-8?Q?iu,a2=3Ddefault,a3=3Ddefault,osmocom-master-debian9_#2874?= In-Reply-To: <1334124941.409.1523967408164.JavaMail.jenkins@jenkins.osmocom.org> References: <1334124941.409.1523967408164.JavaMail.jenkins@jenkins.osmocom.org> Message-ID: <729958942.411.1523967648565.JavaMail.jenkins@jenkins.osmocom.org> See ------------------------------------------ [...truncated 1.16 MB...] -DRLL Dispatching 04.08 message NCSS:0x3b (0xb:0x3b) -DMM MSISDN:42342: rx msg NCSS:0x3b: received_cm_service_request changes to false +DRLL Dispatching 04.08 message GSM0480_MTYPE_REGISTER (0xb:0x3b) +DMM MSISDN:42342: rx msg GSM0480_MTYPE_REGISTER: received_cm_service_request changes to false DREF MSISDN:42342: MSC conn use - cm_service == 1 (0x2: dtap) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING DMM USSD: Own number requested DMM MSISDN:42342: MSISDN = 42342 DMSC msc_tx 43 bytes to MSISDN:42342 via RAN_GERAN_A -- DTAP --RAN_GERAN_A--> MS: NCSS:0x2a: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d +- DTAP --RAN_GERAN_A--> MS: GSM0480_MTYPE_RELEASE_COMPLETE: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d - DTAP matches expected message DREF MSISDN:42342: MSC conn use - dtap == 0 (0x0: ) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_UNUSED @@ -1296,17 +1296,17 @@ - a USSD request is serviced expecting USSD: Your extension is 42342 - MSC <--RAN_GERAN_A-- MS: NCSS:0x3b + MSC <--RAN_GERAN_A-- MS: GSM0480_MTYPE_REGISTER DREF MSISDN:42342: MSC conn use + dtap == 2 (0xa: dtap,cm_service) -DRLL Dispatching 04.08 message NCSS:0x3b (0xb:0x3b) -DMM MSISDN:42342: rx msg NCSS:0x3b: received_cm_service_request changes to false +DRLL Dispatching 04.08 message GSM0480_MTYPE_REGISTER (0xb:0x3b) +DMM MSISDN:42342: rx msg GSM0480_MTYPE_REGISTER: received_cm_service_request changes to false DREF MSISDN:42342: MSC conn use - cm_service == 1 (0x2: dtap) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING DMM USSD: Own number requested DMM MSISDN:42342: MSISDN = 42342 DMSC msc_tx 43 bytes to MSISDN:42342 via RAN_GERAN_A -- DTAP --RAN_GERAN_A--> MS: NCSS:0x2a: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d +- DTAP --RAN_GERAN_A--> MS: GSM0480_MTYPE_RELEASE_COMPLETE: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d - DTAP matches expected message DREF MSISDN:42342: MSC conn use - dtap == 0 (0x0: ) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_UNUSED @@ -1404,17 +1404,17 @@ - a USSD request is serviced expecting USSD: Your extension is 42342 - MSC <--RAN_GERAN_A-- MS: NCSS:0x3b + MSC <--RAN_GERAN_A-- MS: GSM0480_MTYPE_REGISTER DREF MSISDN:42342: MSC conn use + dtap == 2 (0xa: dtap,cm_service) -DRLL Dispatching 04.08 message NCSS:0x3b (0xb:0x3b) -DMM MSISDN:42342: rx msg NCSS:0x3b: received_cm_service_request changes to false +DRLL Dispatching 04.08 message GSM0480_MTYPE_REGISTER (0xb:0x3b) +DMM MSISDN:42342: rx msg GSM0480_MTYPE_REGISTER: received_cm_service_request changes to false DREF MSISDN:42342: MSC conn use - cm_service == 1 (0x2: dtap) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING DMM USSD: Own number requested DMM MSISDN:42342: MSISDN = 42342 DMSC msc_tx 43 bytes to MSISDN:42342 via RAN_GERAN_A -- DTAP --RAN_GERAN_A--> MS: NCSS:0x2a: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d +- DTAP --RAN_GERAN_A--> MS: GSM0480_MTYPE_RELEASE_COMPLETE: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d - DTAP matches expected message DREF MSISDN:42342: MSC conn use - dtap == 0 (0x0: ) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_UNUSED @@ -1754,17 +1754,17 @@ - a USSD request is serviced expecting USSD: Your extension is 42342 - MSC <--RAN_UTRAN_IU-- MS: NCSS:0x3b + MSC <--RAN_UTRAN_IU-- MS: GSM0480_MTYPE_REGISTER DREF MSISDN:42342: MSC conn use + dtap == 2 (0xa: dtap,cm_service) -DRLL Dispatching 04.08 message NCSS:0x3b (0xb:0x3b) -DMM MSISDN:42342: rx msg NCSS:0x3b: received_cm_service_request changes to false +DRLL Dispatching 04.08 message GSM0480_MTYPE_REGISTER (0xb:0x3b) +DMM MSISDN:42342: rx msg GSM0480_MTYPE_REGISTER: received_cm_service_request changes to false DREF MSISDN:42342: MSC conn use - cm_service == 1 (0x2: dtap) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING DMM USSD: Own number requested DMM MSISDN:42342: MSISDN = 42342 DMSC msc_tx 43 bytes to MSISDN:42342 via RAN_UTRAN_IU -- DTAP --RAN_UTRAN_IU--> MS: NCSS:0x2a: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d +- DTAP --RAN_UTRAN_IU--> MS: GSM0480_MTYPE_RELEASE_COMPLETE: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d - DTAP matches expected message DREF MSISDN:42342: MSC conn use - dtap == 0 (0x0: ) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_UNUSED @@ -1875,17 +1875,17 @@ - a USSD request is serviced expecting USSD: Your extension is 42342 - MSC <--RAN_UTRAN_IU-- MS: NCSS:0x3b + MSC <--RAN_UTRAN_IU-- MS: GSM0480_MTYPE_REGISTER DREF MSISDN:42342: MSC conn use + dtap == 2 (0xa: dtap,cm_service) -DRLL Dispatching 04.08 message NCSS:0x3b (0xb:0x3b) -DMM MSISDN:42342: rx msg NCSS:0x3b: received_cm_service_request changes to false +DRLL Dispatching 04.08 message GSM0480_MTYPE_REGISTER (0xb:0x3b) +DMM MSISDN:42342: rx msg GSM0480_MTYPE_REGISTER: received_cm_service_request changes to false DREF MSISDN:42342: MSC conn use - cm_service == 1 (0x2: dtap) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING DMM USSD: Own number requested DMM MSISDN:42342: MSISDN = 42342 DMSC msc_tx 43 bytes to MSISDN:42342 via RAN_UTRAN_IU -- DTAP --RAN_UTRAN_IU--> MS: NCSS:0x2a: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d +- DTAP --RAN_UTRAN_IU--> MS: GSM0480_MTYPE_RELEASE_COMPLETE: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d - DTAP matches expected message DREF MSISDN:42342: MSC conn use - dtap == 0 (0x0: ) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_UNUSED @@ -1996,17 +1996,17 @@ - a USSD request is serviced expecting USSD: Your extension is 42342 - MSC <--RAN_UTRAN_IU-- MS: NCSS:0x3b + MSC <--RAN_UTRAN_IU-- MS: GSM0480_MTYPE_REGISTER DREF MSISDN:42342: MSC conn use + dtap == 2 (0xa: dtap,cm_service) -DRLL Dispatching 04.08 message NCSS:0x3b (0xb:0x3b) -DMM MSISDN:42342: rx msg NCSS:0x3b: received_cm_service_request changes to false +DRLL Dispatching 04.08 message GSM0480_MTYPE_REGISTER (0xb:0x3b) +DMM MSISDN:42342: rx msg GSM0480_MTYPE_REGISTER: received_cm_service_request changes to false DREF MSISDN:42342: MSC conn use - cm_service == 1 (0x2: dtap) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING DMM USSD: Own number requested DMM MSISDN:42342: MSISDN = 42342 DMSC msc_tx 43 bytes to MSISDN:42342 via RAN_UTRAN_IU -- DTAP --RAN_UTRAN_IU--> MS: NCSS:0x2a: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d +- DTAP --RAN_UTRAN_IU--> MS: GSM0480_MTYPE_RELEASE_COMPLETE: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d - DTAP matches expected message DREF MSISDN:42342: MSC conn use - dtap == 0 (0x0: ) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_UNUSED @@ -2335,17 +2335,17 @@ - a USSD request is serviced expecting USSD: Your extension is 42342 - MSC <--RAN_GERAN_A-- MS: NCSS:0x3b + MSC <--RAN_GERAN_A-- MS: GSM0480_MTYPE_REGISTER DREF MSISDN:42342: MSC conn use + dtap == 2 (0xa: dtap,cm_service) -DRLL Dispatching 04.08 message NCSS:0x3b (0xb:0x3b) -DMM MSISDN:42342: rx msg NCSS:0x3b: received_cm_service_request changes to false +DRLL Dispatching 04.08 message GSM0480_MTYPE_REGISTER (0xb:0x3b) +DMM MSISDN:42342: rx msg GSM0480_MTYPE_REGISTER: received_cm_service_request changes to false DREF MSISDN:42342: MSC conn use - cm_service == 1 (0x2: dtap) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING DMM USSD: Own number requested DMM MSISDN:42342: MSISDN = 42342 DMSC msc_tx 43 bytes to MSISDN:42342 via RAN_GERAN_A -- DTAP --RAN_GERAN_A--> MS: NCSS:0x2a: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d +- DTAP --RAN_GERAN_A--> MS: GSM0480_MTYPE_RELEASE_COMPLETE: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d - DTAP matches expected message DREF MSISDN:42342: MSC conn use - dtap == 0 (0x0: ) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_UNUSED @@ -2699,17 +2699,17 @@ - a USSD request is serviced expecting USSD: Your extension is 42342 - MSC <--RAN_UTRAN_IU-- MS: NCSS:0x3b + MSC <--RAN_UTRAN_IU-- MS: GSM0480_MTYPE_REGISTER DREF MSISDN:42342: MSC conn use + dtap == 2 (0xa: dtap,cm_service) -DRLL Dispatching 04.08 message NCSS:0x3b (0xb:0x3b) -DMM MSISDN:42342: rx msg NCSS:0x3b: received_cm_service_request changes to false +DRLL Dispatching 04.08 message GSM0480_MTYPE_REGISTER (0xb:0x3b) +DMM MSISDN:42342: rx msg GSM0480_MTYPE_REGISTER: received_cm_service_request changes to false DREF MSISDN:42342: MSC conn use - cm_service == 1 (0x2: dtap) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING DMM USSD: Own number requested DMM MSISDN:42342: MSISDN = 42342 DMSC msc_tx 43 bytes to MSISDN:42342 via RAN_UTRAN_IU -- DTAP --RAN_UTRAN_IU--> MS: NCSS:0x2a: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d +- DTAP --RAN_UTRAN_IU--> MS: GSM0480_MTYPE_RELEASE_COMPLETE: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d - DTAP matches expected message DREF MSISDN:42342: MSC conn use - dtap == 0 (0x0: ) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_UNUSED 7. testsuite.at:47: 7. msc_vlr_test_authen_reuse (testsuite.at:47): FAILED (testsuite.at:51) ======================== ./tests/testsuite.dir/05/testsuite.log # -*- compilation -*- 5. testsuite.at:33: testing msc_vlr_test_gsm_ciph ... ./testsuite.at:37: $abs_top_builddir/tests/msc_vlr/msc_vlr_test_gsm_ciph --- experr 2018-04-17 12:20:47.549605787 +0000 +++ /build/tests/testsuite.dir/at-groups/5/stderr 2018-04-17 12:20:47.565605668 +0000 @@ -278,17 +278,17 @@ - a USSD request is serviced expecting USSD: Your extension is 46071 - MSC <--RAN_GERAN_A-- MS: NCSS:0x3b + MSC <--RAN_GERAN_A-- MS: GSM0480_MTYPE_REGISTER DREF MSISDN:46071: MSC conn use + dtap == 2 (0xa: dtap,cm_service) -DRLL Dispatching 04.08 message NCSS:0x3b (0xb:0x3b) -DMM MSISDN:46071: rx msg NCSS:0x3b: received_cm_service_request changes to false +DRLL Dispatching 04.08 message GSM0480_MTYPE_REGISTER (0xb:0x3b) +DMM MSISDN:46071: rx msg GSM0480_MTYPE_REGISTER: received_cm_service_request changes to false DREF MSISDN:46071: MSC conn use - cm_service == 1 (0x2: dtap) DMM Subscr_Conn(CM_SERVICE_REQ:901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING DMM Subscr_Conn(CM_SERVICE_REQ:901700000004620){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING DMM USSD: Own number requested DMM MSISDN:46071: MSISDN = 46071 DMSC msc_tx 43 bytes to MSISDN:46071 via RAN_GERAN_A -- DTAP --RAN_GERAN_A--> MS: NCSS:0x2a: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d27310cd06bbc51a0d +- DTAP --RAN_GERAN_A--> MS: GSM0480_MTYPE_RELEASE_COMPLETE: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d27310cd06bbc51a0d - DTAP matches expected message DREF MSISDN:46071: MSC conn use - dtap == 0 (0x0: ) DMM Subscr_Conn(CM_SERVICE_REQ:901700000004620){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_UNUSED @@ -834,17 +834,17 @@ - a USSD request is serviced expecting USSD: Your extension is 46071 - MSC <--RAN_GERAN_A-- MS: NCSS:0x3b + MSC <--RAN_GERAN_A-- MS: GSM0480_MTYPE_REGISTER DREF MSISDN:46071: MSC conn use + dtap == 2 (0xa: dtap,cm_service) -DRLL Dispatching 04.08 message NCSS:0x3b (0xb:0x3b) -DMM MSISDN:46071: rx msg NCSS:0x3b: received_cm_service_request changes to false +DRLL Dispatching 04.08 message GSM0480_MTYPE_REGISTER (0xb:0x3b) +DMM MSISDN:46071: rx msg GSM0480_MTYPE_REGISTER: received_cm_service_request changes to false DREF MSISDN:46071: MSC conn use - cm_service == 1 (0x2: dtap) DMM Subscr_Conn(CM_SERVICE_REQ:50462976){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING DMM Subscr_Conn(CM_SERVICE_REQ:50462976){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING DMM USSD: Own number requested DMM MSISDN:46071: MSISDN = 46071 DMSC msc_tx 43 bytes to MSISDN:46071 via RAN_GERAN_A -- DTAP --RAN_GERAN_A--> MS: NCSS:0x2a: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d27310cd06bbc51a0d +- DTAP --RAN_GERAN_A--> MS: GSM0480_MTYPE_RELEASE_COMPLETE: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d27310cd06bbc51a0d - DTAP matches expected message DREF MSISDN:46071: MSC conn use - dtap == 0 (0x0: ) DMM Subscr_Conn(CM_SERVICE_REQ:50462976){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_UNUSED @@ -2076,17 +2076,17 @@ - a USSD request is serviced expecting USSD: Your extension is 42342 - MSC <--RAN_GERAN_A-- MS: NCSS:0x3b + MSC <--RAN_GERAN_A-- MS: GSM0480_MTYPE_REGISTER DREF MSISDN:42342: MSC conn use + dtap == 2 (0xa: dtap,cm_service) -DRLL Dispatching 04.08 message NCSS:0x3b (0xb:0x3b) -DMM MSISDN:42342: rx msg NCSS:0x3b: received_cm_service_request changes to false +DRLL Dispatching 04.08 message GSM0480_MTYPE_REGISTER (0xb:0x3b) +DMM MSISDN:42342: rx msg GSM0480_MTYPE_REGISTER: received_cm_service_request changes to false DREF MSISDN:42342: MSC conn use - cm_service == 1 (0x2: dtap) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING DMM USSD: Own number requested DMM MSISDN:42342: MSISDN = 42342 DMSC msc_tx 43 bytes to MSISDN:42342 via RAN_GERAN_A -- DTAP --RAN_GERAN_A--> MS: NCSS:0x2a: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d +- DTAP --RAN_GERAN_A--> MS: GSM0480_MTYPE_RELEASE_COMPLETE: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d - DTAP matches expected message DREF MSISDN:42342: MSC conn use - dtap == 0 (0x0: ) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_UNUSED 5. testsuite.at:33: 5. msc_vlr_test_gsm_ciph (testsuite.at:33): FAILED (testsuite.at:37) Build step 'Execute shell' marked build as failure [WARNINGS]Skipping publisher since build result is FAILURE From gerrit-no-reply at lists.osmocom.org Tue Apr 17 12:23:00 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Tue, 17 Apr 2018 12:23:00 +0000 Subject: [PATCH] libosmo-sccp[master]: use osmo_init_logging2 Message-ID: Review at https://gerrit.osmocom.org/7850 use osmo_init_logging2 Change-Id: I0d45b9381125c496a691ac5da68190b7b3479fc3 --- M examples/m3ua_example.c M stp/stp_main.c M tests/ss7/ss7_test.c 3 files changed, 8 insertions(+), 6 deletions(-) git pull ssh://gerrit.osmocom.org:29418/libosmo-sccp refs/changes/50/7850/1 diff --git a/examples/m3ua_example.c b/examples/m3ua_example.c index b3a1505..a9f455c 100644 --- a/examples/m3ua_example.c +++ b/examples/m3ua_example.c @@ -66,8 +66,9 @@ { const int log_cats[] = { DLSS7, DLSUA, DLM3UA, DLSCCP, DLINP }; unsigned int i; - - osmo_init_logging(&log_info); + void *tall_ctx = talloc_named_const(NULL, 1, "example"); + msgb_talloc_ctx_init(tall_ctx, 0); + osmo_init_logging2(tall_ctx, &log_info); for (i = 0; i < ARRAY_SIZE(log_cats); i++) log_set_category_filter(osmo_stderr_target, log_cats[i], 1, LOGL_DEBUG); diff --git a/stp/stp_main.c b/stp/stp_main.c index 1e0c099..aa2304c 100644 --- a/stp/stp_main.c +++ b/stp/stp_main.c @@ -161,8 +161,8 @@ int rc; tall_stp_ctx = talloc_named_const(NULL, 1, "osmo-stp"); - - osmo_init_logging(&log_info); + msgb_talloc_ctx_init(tall_stp_ctx, 0); + osmo_init_logging2(tall_stp_ctx, &log_info); vty_init(&vty_info); handle_options(argc, argv); diff --git a/tests/ss7/ss7_test.c b/tests/ss7/ss7_test.c index 7c51767..0c0cf25 100644 --- a/tests/ss7/ss7_test.c +++ b/tests/ss7/ss7_test.c @@ -280,8 +280,9 @@ { const int log_cats[] = { DLSS7, DLSUA, DLM3UA, DLSCCP, DLINP }; unsigned int i; - - osmo_init_logging(&log_info); + void *tall_ctx = talloc_named_const(NULL, 1, "example"); + msgb_talloc_ctx_init(tall_ctx, 0); + osmo_init_logging2(tall_ctx, &log_info); log_set_print_filename(osmo_stderr_target, 0); -- To view, visit https://gerrit.osmocom.org/7850 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I0d45b9381125c496a691ac5da68190b7b3479fc3 Gerrit-PatchSet: 1 Gerrit-Project: libosmo-sccp Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol From jenkins at lists.osmocom.org Tue Apr 17 12:28:36 2018 From: jenkins at lists.osmocom.org (jenkins at lists.osmocom.org) Date: Tue, 17 Apr 2018 12:28:36 +0000 (UTC) Subject: =?UTF-8?Q?Build_failed_in_Jenkins:_master-osmo-msc_=C2=BB_--disable-?= =?UTF-8?Q?iu,a2=3Ddefault,a3=3Ddefault,osmocom-master-debian9_#2875?= In-Reply-To: <1171573713.410.1523967609146.JavaMail.jenkins@jenkins.osmocom.org> References: <1171573713.410.1523967609146.JavaMail.jenkins@jenkins.osmocom.org> Message-ID: <1833080369.412.1523968116299.JavaMail.jenkins@jenkins.osmocom.org> See ------------------------------------------ [...truncated 802.40 KB...] -DRLL Dispatching 04.08 message NCSS:0x3b (0xb:0x3b) -DMM MSISDN:42342: rx msg NCSS:0x3b: received_cm_service_request changes to false +DRLL Dispatching 04.08 message GSM0480_MTYPE_REGISTER (0xb:0x3b) +DMM MSISDN:42342: rx msg GSM0480_MTYPE_REGISTER: received_cm_service_request changes to false DREF MSISDN:42342: MSC conn use - cm_service == 1 (0x2: dtap) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING DMM USSD: Own number requested DMM MSISDN:42342: MSISDN = 42342 DMSC msc_tx 43 bytes to MSISDN:42342 via RAN_GERAN_A -- DTAP --RAN_GERAN_A--> MS: NCSS:0x2a: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d +- DTAP --RAN_GERAN_A--> MS: GSM0480_MTYPE_RELEASE_COMPLETE: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d - DTAP matches expected message DREF MSISDN:42342: MSC conn use - dtap == 0 (0x0: ) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_UNUSED @@ -1296,17 +1296,17 @@ - a USSD request is serviced expecting USSD: Your extension is 42342 - MSC <--RAN_GERAN_A-- MS: NCSS:0x3b + MSC <--RAN_GERAN_A-- MS: GSM0480_MTYPE_REGISTER DREF MSISDN:42342: MSC conn use + dtap == 2 (0xa: dtap,cm_service) -DRLL Dispatching 04.08 message NCSS:0x3b (0xb:0x3b) -DMM MSISDN:42342: rx msg NCSS:0x3b: received_cm_service_request changes to false +DRLL Dispatching 04.08 message GSM0480_MTYPE_REGISTER (0xb:0x3b) +DMM MSISDN:42342: rx msg GSM0480_MTYPE_REGISTER: received_cm_service_request changes to false DREF MSISDN:42342: MSC conn use - cm_service == 1 (0x2: dtap) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING DMM USSD: Own number requested DMM MSISDN:42342: MSISDN = 42342 DMSC msc_tx 43 bytes to MSISDN:42342 via RAN_GERAN_A -- DTAP --RAN_GERAN_A--> MS: NCSS:0x2a: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d +- DTAP --RAN_GERAN_A--> MS: GSM0480_MTYPE_RELEASE_COMPLETE: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d - DTAP matches expected message DREF MSISDN:42342: MSC conn use - dtap == 0 (0x0: ) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_UNUSED @@ -1404,17 +1404,17 @@ - a USSD request is serviced expecting USSD: Your extension is 42342 - MSC <--RAN_GERAN_A-- MS: NCSS:0x3b + MSC <--RAN_GERAN_A-- MS: GSM0480_MTYPE_REGISTER DREF MSISDN:42342: MSC conn use + dtap == 2 (0xa: dtap,cm_service) -DRLL Dispatching 04.08 message NCSS:0x3b (0xb:0x3b) -DMM MSISDN:42342: rx msg NCSS:0x3b: received_cm_service_request changes to false +DRLL Dispatching 04.08 message GSM0480_MTYPE_REGISTER (0xb:0x3b) +DMM MSISDN:42342: rx msg GSM0480_MTYPE_REGISTER: received_cm_service_request changes to false DREF MSISDN:42342: MSC conn use - cm_service == 1 (0x2: dtap) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING DMM USSD: Own number requested DMM MSISDN:42342: MSISDN = 42342 DMSC msc_tx 43 bytes to MSISDN:42342 via RAN_GERAN_A -- DTAP --RAN_GERAN_A--> MS: NCSS:0x2a: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d +- DTAP --RAN_GERAN_A--> MS: GSM0480_MTYPE_RELEASE_COMPLETE: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d - DTAP matches expected message DREF MSISDN:42342: MSC conn use - dtap == 0 (0x0: ) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_UNUSED @@ -1754,17 +1754,17 @@ - a USSD request is serviced expecting USSD: Your extension is 42342 - MSC <--RAN_UTRAN_IU-- MS: NCSS:0x3b + MSC <--RAN_UTRAN_IU-- MS: GSM0480_MTYPE_REGISTER DREF MSISDN:42342: MSC conn use + dtap == 2 (0xa: dtap,cm_service) -DRLL Dispatching 04.08 message NCSS:0x3b (0xb:0x3b) -DMM MSISDN:42342: rx msg NCSS:0x3b: received_cm_service_request changes to false +DRLL Dispatching 04.08 message GSM0480_MTYPE_REGISTER (0xb:0x3b) +DMM MSISDN:42342: rx msg GSM0480_MTYPE_REGISTER: received_cm_service_request changes to false DREF MSISDN:42342: MSC conn use - cm_service == 1 (0x2: dtap) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING DMM USSD: Own number requested DMM MSISDN:42342: MSISDN = 42342 DMSC msc_tx 43 bytes to MSISDN:42342 via RAN_UTRAN_IU -- DTAP --RAN_UTRAN_IU--> MS: NCSS:0x2a: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d +- DTAP --RAN_UTRAN_IU--> MS: GSM0480_MTYPE_RELEASE_COMPLETE: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d - DTAP matches expected message DREF MSISDN:42342: MSC conn use - dtap == 0 (0x0: ) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_UNUSED @@ -1875,17 +1875,17 @@ - a USSD request is serviced expecting USSD: Your extension is 42342 - MSC <--RAN_UTRAN_IU-- MS: NCSS:0x3b + MSC <--RAN_UTRAN_IU-- MS: GSM0480_MTYPE_REGISTER DREF MSISDN:42342: MSC conn use + dtap == 2 (0xa: dtap,cm_service) -DRLL Dispatching 04.08 message NCSS:0x3b (0xb:0x3b) -DMM MSISDN:42342: rx msg NCSS:0x3b: received_cm_service_request changes to false +DRLL Dispatching 04.08 message GSM0480_MTYPE_REGISTER (0xb:0x3b) +DMM MSISDN:42342: rx msg GSM0480_MTYPE_REGISTER: received_cm_service_request changes to false DREF MSISDN:42342: MSC conn use - cm_service == 1 (0x2: dtap) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING DMM USSD: Own number requested DMM MSISDN:42342: MSISDN = 42342 DMSC msc_tx 43 bytes to MSISDN:42342 via RAN_UTRAN_IU -- DTAP --RAN_UTRAN_IU--> MS: NCSS:0x2a: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d +- DTAP --RAN_UTRAN_IU--> MS: GSM0480_MTYPE_RELEASE_COMPLETE: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d - DTAP matches expected message DREF MSISDN:42342: MSC conn use - dtap == 0 (0x0: ) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_UNUSED @@ -1996,17 +1996,17 @@ - a USSD request is serviced expecting USSD: Your extension is 42342 - MSC <--RAN_UTRAN_IU-- MS: NCSS:0x3b + MSC <--RAN_UTRAN_IU-- MS: GSM0480_MTYPE_REGISTER DREF MSISDN:42342: MSC conn use + dtap == 2 (0xa: dtap,cm_service) -DRLL Dispatching 04.08 message NCSS:0x3b (0xb:0x3b) -DMM MSISDN:42342: rx msg NCSS:0x3b: received_cm_service_request changes to false +DRLL Dispatching 04.08 message GSM0480_MTYPE_REGISTER (0xb:0x3b) +DMM MSISDN:42342: rx msg GSM0480_MTYPE_REGISTER: received_cm_service_request changes to false DREF MSISDN:42342: MSC conn use - cm_service == 1 (0x2: dtap) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING DMM USSD: Own number requested DMM MSISDN:42342: MSISDN = 42342 DMSC msc_tx 43 bytes to MSISDN:42342 via RAN_UTRAN_IU -- DTAP --RAN_UTRAN_IU--> MS: NCSS:0x2a: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d +- DTAP --RAN_UTRAN_IU--> MS: GSM0480_MTYPE_RELEASE_COMPLETE: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d - DTAP matches expected message DREF MSISDN:42342: MSC conn use - dtap == 0 (0x0: ) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_UNUSED @@ -2335,17 +2335,17 @@ - a USSD request is serviced expecting USSD: Your extension is 42342 - MSC <--RAN_GERAN_A-- MS: NCSS:0x3b + MSC <--RAN_GERAN_A-- MS: GSM0480_MTYPE_REGISTER DREF MSISDN:42342: MSC conn use + dtap == 2 (0xa: dtap,cm_service) -DRLL Dispatching 04.08 message NCSS:0x3b (0xb:0x3b) -DMM MSISDN:42342: rx msg NCSS:0x3b: received_cm_service_request changes to false +DRLL Dispatching 04.08 message GSM0480_MTYPE_REGISTER (0xb:0x3b) +DMM MSISDN:42342: rx msg GSM0480_MTYPE_REGISTER: received_cm_service_request changes to false DREF MSISDN:42342: MSC conn use - cm_service == 1 (0x2: dtap) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING DMM USSD: Own number requested DMM MSISDN:42342: MSISDN = 42342 DMSC msc_tx 43 bytes to MSISDN:42342 via RAN_GERAN_A -- DTAP --RAN_GERAN_A--> MS: NCSS:0x2a: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d +- DTAP --RAN_GERAN_A--> MS: GSM0480_MTYPE_RELEASE_COMPLETE: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d - DTAP matches expected message DREF MSISDN:42342: MSC conn use - dtap == 0 (0x0: ) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_UNUSED @@ -2699,17 +2699,17 @@ - a USSD request is serviced expecting USSD: Your extension is 42342 - MSC <--RAN_UTRAN_IU-- MS: NCSS:0x3b + MSC <--RAN_UTRAN_IU-- MS: GSM0480_MTYPE_REGISTER DREF MSISDN:42342: MSC conn use + dtap == 2 (0xa: dtap,cm_service) -DRLL Dispatching 04.08 message NCSS:0x3b (0xb:0x3b) -DMM MSISDN:42342: rx msg NCSS:0x3b: received_cm_service_request changes to false +DRLL Dispatching 04.08 message GSM0480_MTYPE_REGISTER (0xb:0x3b) +DMM MSISDN:42342: rx msg GSM0480_MTYPE_REGISTER: received_cm_service_request changes to false DREF MSISDN:42342: MSC conn use - cm_service == 1 (0x2: dtap) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING DMM USSD: Own number requested DMM MSISDN:42342: MSISDN = 42342 DMSC msc_tx 43 bytes to MSISDN:42342 via RAN_UTRAN_IU -- DTAP --RAN_UTRAN_IU--> MS: NCSS:0x2a: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d +- DTAP --RAN_UTRAN_IU--> MS: GSM0480_MTYPE_RELEASE_COMPLETE: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d - DTAP matches expected message DREF MSISDN:42342: MSC conn use - dtap == 0 (0x0: ) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_UNUSED 7. testsuite.at:47: 7. msc_vlr_test_authen_reuse (testsuite.at:47): FAILED (testsuite.at:51) ======================== ./tests/testsuite.dir/05/testsuite.log # -*- compilation -*- 5. testsuite.at:33: testing msc_vlr_test_gsm_ciph ... ./testsuite.at:37: $abs_top_builddir/tests/msc_vlr/msc_vlr_test_gsm_ciph --- experr 2018-04-17 12:28:35.282136079 +0000 +++ /build/tests/testsuite.dir/at-groups/5/stderr 2018-04-17 12:28:35.298135962 +0000 @@ -278,17 +278,17 @@ - a USSD request is serviced expecting USSD: Your extension is 46071 - MSC <--RAN_GERAN_A-- MS: NCSS:0x3b + MSC <--RAN_GERAN_A-- MS: GSM0480_MTYPE_REGISTER DREF MSISDN:46071: MSC conn use + dtap == 2 (0xa: dtap,cm_service) -DRLL Dispatching 04.08 message NCSS:0x3b (0xb:0x3b) -DMM MSISDN:46071: rx msg NCSS:0x3b: received_cm_service_request changes to false +DRLL Dispatching 04.08 message GSM0480_MTYPE_REGISTER (0xb:0x3b) +DMM MSISDN:46071: rx msg GSM0480_MTYPE_REGISTER: received_cm_service_request changes to false DREF MSISDN:46071: MSC conn use - cm_service == 1 (0x2: dtap) DMM Subscr_Conn(CM_SERVICE_REQ:901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING DMM Subscr_Conn(CM_SERVICE_REQ:901700000004620){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING DMM USSD: Own number requested DMM MSISDN:46071: MSISDN = 46071 DMSC msc_tx 43 bytes to MSISDN:46071 via RAN_GERAN_A -- DTAP --RAN_GERAN_A--> MS: NCSS:0x2a: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d27310cd06bbc51a0d +- DTAP --RAN_GERAN_A--> MS: GSM0480_MTYPE_RELEASE_COMPLETE: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d27310cd06bbc51a0d - DTAP matches expected message DREF MSISDN:46071: MSC conn use - dtap == 0 (0x0: ) DMM Subscr_Conn(CM_SERVICE_REQ:901700000004620){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_UNUSED @@ -834,17 +834,17 @@ - a USSD request is serviced expecting USSD: Your extension is 46071 - MSC <--RAN_GERAN_A-- MS: NCSS:0x3b + MSC <--RAN_GERAN_A-- MS: GSM0480_MTYPE_REGISTER DREF MSISDN:46071: MSC conn use + dtap == 2 (0xa: dtap,cm_service) -DRLL Dispatching 04.08 message NCSS:0x3b (0xb:0x3b) -DMM MSISDN:46071: rx msg NCSS:0x3b: received_cm_service_request changes to false +DRLL Dispatching 04.08 message GSM0480_MTYPE_REGISTER (0xb:0x3b) +DMM MSISDN:46071: rx msg GSM0480_MTYPE_REGISTER: received_cm_service_request changes to false DREF MSISDN:46071: MSC conn use - cm_service == 1 (0x2: dtap) DMM Subscr_Conn(CM_SERVICE_REQ:50462976){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING DMM Subscr_Conn(CM_SERVICE_REQ:50462976){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING DMM USSD: Own number requested DMM MSISDN:46071: MSISDN = 46071 DMSC msc_tx 43 bytes to MSISDN:46071 via RAN_GERAN_A -- DTAP --RAN_GERAN_A--> MS: NCSS:0x2a: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d27310cd06bbc51a0d +- DTAP --RAN_GERAN_A--> MS: GSM0480_MTYPE_RELEASE_COMPLETE: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d27310cd06bbc51a0d - DTAP matches expected message DREF MSISDN:46071: MSC conn use - dtap == 0 (0x0: ) DMM Subscr_Conn(CM_SERVICE_REQ:50462976){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_UNUSED @@ -2076,17 +2076,17 @@ - a USSD request is serviced expecting USSD: Your extension is 42342 - MSC <--RAN_GERAN_A-- MS: NCSS:0x3b + MSC <--RAN_GERAN_A-- MS: GSM0480_MTYPE_REGISTER DREF MSISDN:42342: MSC conn use + dtap == 2 (0xa: dtap,cm_service) -DRLL Dispatching 04.08 message NCSS:0x3b (0xb:0x3b) -DMM MSISDN:42342: rx msg NCSS:0x3b: received_cm_service_request changes to false +DRLL Dispatching 04.08 message GSM0480_MTYPE_REGISTER (0xb:0x3b) +DMM MSISDN:42342: rx msg GSM0480_MTYPE_REGISTER: received_cm_service_request changes to false DREF MSISDN:42342: MSC conn use - cm_service == 1 (0x2: dtap) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING DMM USSD: Own number requested DMM MSISDN:42342: MSISDN = 42342 DMSC msc_tx 43 bytes to MSISDN:42342 via RAN_GERAN_A -- DTAP --RAN_GERAN_A--> MS: NCSS:0x2a: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d +- DTAP --RAN_GERAN_A--> MS: GSM0480_MTYPE_RELEASE_COMPLETE: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d - DTAP matches expected message DREF MSISDN:42342: MSC conn use - dtap == 0 (0x0: ) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_UNUSED 5. testsuite.at:33: 5. msc_vlr_test_gsm_ciph (testsuite.at:33): FAILED (testsuite.at:37) Build step 'Execute shell' marked build as failure [WARNINGS]Skipping publisher since build result is FAILURE From jenkins at lists.osmocom.org Tue Apr 17 12:29:11 2018 From: jenkins at lists.osmocom.org (jenkins at lists.osmocom.org) Date: Tue, 17 Apr 2018 12:29:11 +0000 (UTC) Subject: =?UTF-8?Q?Build_failed_in_Jenkins:_master-osmo-msc_=C2=BB_--enable-?= =?UTF-8?Q?iu,a2=3Ddefault,a3=3Ddefault,osmocom-master-debian9_#2875?= In-Reply-To: <729958942.411.1523967648565.JavaMail.jenkins@jenkins.osmocom.org> References: <729958942.411.1523967648565.JavaMail.jenkins@jenkins.osmocom.org> Message-ID: <387783903.413.1523968151432.JavaMail.jenkins@jenkins.osmocom.org> See ------------------------------------------ [...truncated 1.16 MB...] -DRLL Dispatching 04.08 message NCSS:0x3b (0xb:0x3b) -DMM MSISDN:42342: rx msg NCSS:0x3b: received_cm_service_request changes to false +DRLL Dispatching 04.08 message GSM0480_MTYPE_REGISTER (0xb:0x3b) +DMM MSISDN:42342: rx msg GSM0480_MTYPE_REGISTER: received_cm_service_request changes to false DREF MSISDN:42342: MSC conn use - cm_service == 1 (0x2: dtap) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING DMM USSD: Own number requested DMM MSISDN:42342: MSISDN = 42342 DMSC msc_tx 43 bytes to MSISDN:42342 via RAN_GERAN_A -- DTAP --RAN_GERAN_A--> MS: NCSS:0x2a: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d +- DTAP --RAN_GERAN_A--> MS: GSM0480_MTYPE_RELEASE_COMPLETE: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d - DTAP matches expected message DREF MSISDN:42342: MSC conn use - dtap == 0 (0x0: ) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_UNUSED @@ -1296,17 +1296,17 @@ - a USSD request is serviced expecting USSD: Your extension is 42342 - MSC <--RAN_GERAN_A-- MS: NCSS:0x3b + MSC <--RAN_GERAN_A-- MS: GSM0480_MTYPE_REGISTER DREF MSISDN:42342: MSC conn use + dtap == 2 (0xa: dtap,cm_service) -DRLL Dispatching 04.08 message NCSS:0x3b (0xb:0x3b) -DMM MSISDN:42342: rx msg NCSS:0x3b: received_cm_service_request changes to false +DRLL Dispatching 04.08 message GSM0480_MTYPE_REGISTER (0xb:0x3b) +DMM MSISDN:42342: rx msg GSM0480_MTYPE_REGISTER: received_cm_service_request changes to false DREF MSISDN:42342: MSC conn use - cm_service == 1 (0x2: dtap) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING DMM USSD: Own number requested DMM MSISDN:42342: MSISDN = 42342 DMSC msc_tx 43 bytes to MSISDN:42342 via RAN_GERAN_A -- DTAP --RAN_GERAN_A--> MS: NCSS:0x2a: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d +- DTAP --RAN_GERAN_A--> MS: GSM0480_MTYPE_RELEASE_COMPLETE: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d - DTAP matches expected message DREF MSISDN:42342: MSC conn use - dtap == 0 (0x0: ) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_UNUSED @@ -1404,17 +1404,17 @@ - a USSD request is serviced expecting USSD: Your extension is 42342 - MSC <--RAN_GERAN_A-- MS: NCSS:0x3b + MSC <--RAN_GERAN_A-- MS: GSM0480_MTYPE_REGISTER DREF MSISDN:42342: MSC conn use + dtap == 2 (0xa: dtap,cm_service) -DRLL Dispatching 04.08 message NCSS:0x3b (0xb:0x3b) -DMM MSISDN:42342: rx msg NCSS:0x3b: received_cm_service_request changes to false +DRLL Dispatching 04.08 message GSM0480_MTYPE_REGISTER (0xb:0x3b) +DMM MSISDN:42342: rx msg GSM0480_MTYPE_REGISTER: received_cm_service_request changes to false DREF MSISDN:42342: MSC conn use - cm_service == 1 (0x2: dtap) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING DMM USSD: Own number requested DMM MSISDN:42342: MSISDN = 42342 DMSC msc_tx 43 bytes to MSISDN:42342 via RAN_GERAN_A -- DTAP --RAN_GERAN_A--> MS: NCSS:0x2a: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d +- DTAP --RAN_GERAN_A--> MS: GSM0480_MTYPE_RELEASE_COMPLETE: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d - DTAP matches expected message DREF MSISDN:42342: MSC conn use - dtap == 0 (0x0: ) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_UNUSED @@ -1754,17 +1754,17 @@ - a USSD request is serviced expecting USSD: Your extension is 42342 - MSC <--RAN_UTRAN_IU-- MS: NCSS:0x3b + MSC <--RAN_UTRAN_IU-- MS: GSM0480_MTYPE_REGISTER DREF MSISDN:42342: MSC conn use + dtap == 2 (0xa: dtap,cm_service) -DRLL Dispatching 04.08 message NCSS:0x3b (0xb:0x3b) -DMM MSISDN:42342: rx msg NCSS:0x3b: received_cm_service_request changes to false +DRLL Dispatching 04.08 message GSM0480_MTYPE_REGISTER (0xb:0x3b) +DMM MSISDN:42342: rx msg GSM0480_MTYPE_REGISTER: received_cm_service_request changes to false DREF MSISDN:42342: MSC conn use - cm_service == 1 (0x2: dtap) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING DMM USSD: Own number requested DMM MSISDN:42342: MSISDN = 42342 DMSC msc_tx 43 bytes to MSISDN:42342 via RAN_UTRAN_IU -- DTAP --RAN_UTRAN_IU--> MS: NCSS:0x2a: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d +- DTAP --RAN_UTRAN_IU--> MS: GSM0480_MTYPE_RELEASE_COMPLETE: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d - DTAP matches expected message DREF MSISDN:42342: MSC conn use - dtap == 0 (0x0: ) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_UNUSED @@ -1875,17 +1875,17 @@ - a USSD request is serviced expecting USSD: Your extension is 42342 - MSC <--RAN_UTRAN_IU-- MS: NCSS:0x3b + MSC <--RAN_UTRAN_IU-- MS: GSM0480_MTYPE_REGISTER DREF MSISDN:42342: MSC conn use + dtap == 2 (0xa: dtap,cm_service) -DRLL Dispatching 04.08 message NCSS:0x3b (0xb:0x3b) -DMM MSISDN:42342: rx msg NCSS:0x3b: received_cm_service_request changes to false +DRLL Dispatching 04.08 message GSM0480_MTYPE_REGISTER (0xb:0x3b) +DMM MSISDN:42342: rx msg GSM0480_MTYPE_REGISTER: received_cm_service_request changes to false DREF MSISDN:42342: MSC conn use - cm_service == 1 (0x2: dtap) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING DMM USSD: Own number requested DMM MSISDN:42342: MSISDN = 42342 DMSC msc_tx 43 bytes to MSISDN:42342 via RAN_UTRAN_IU -- DTAP --RAN_UTRAN_IU--> MS: NCSS:0x2a: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d +- DTAP --RAN_UTRAN_IU--> MS: GSM0480_MTYPE_RELEASE_COMPLETE: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d - DTAP matches expected message DREF MSISDN:42342: MSC conn use - dtap == 0 (0x0: ) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_UNUSED @@ -1996,17 +1996,17 @@ - a USSD request is serviced expecting USSD: Your extension is 42342 - MSC <--RAN_UTRAN_IU-- MS: NCSS:0x3b + MSC <--RAN_UTRAN_IU-- MS: GSM0480_MTYPE_REGISTER DREF MSISDN:42342: MSC conn use + dtap == 2 (0xa: dtap,cm_service) -DRLL Dispatching 04.08 message NCSS:0x3b (0xb:0x3b) -DMM MSISDN:42342: rx msg NCSS:0x3b: received_cm_service_request changes to false +DRLL Dispatching 04.08 message GSM0480_MTYPE_REGISTER (0xb:0x3b) +DMM MSISDN:42342: rx msg GSM0480_MTYPE_REGISTER: received_cm_service_request changes to false DREF MSISDN:42342: MSC conn use - cm_service == 1 (0x2: dtap) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING DMM USSD: Own number requested DMM MSISDN:42342: MSISDN = 42342 DMSC msc_tx 43 bytes to MSISDN:42342 via RAN_UTRAN_IU -- DTAP --RAN_UTRAN_IU--> MS: NCSS:0x2a: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d +- DTAP --RAN_UTRAN_IU--> MS: GSM0480_MTYPE_RELEASE_COMPLETE: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d - DTAP matches expected message DREF MSISDN:42342: MSC conn use - dtap == 0 (0x0: ) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_UNUSED @@ -2335,17 +2335,17 @@ - a USSD request is serviced expecting USSD: Your extension is 42342 - MSC <--RAN_GERAN_A-- MS: NCSS:0x3b + MSC <--RAN_GERAN_A-- MS: GSM0480_MTYPE_REGISTER DREF MSISDN:42342: MSC conn use + dtap == 2 (0xa: dtap,cm_service) -DRLL Dispatching 04.08 message NCSS:0x3b (0xb:0x3b) -DMM MSISDN:42342: rx msg NCSS:0x3b: received_cm_service_request changes to false +DRLL Dispatching 04.08 message GSM0480_MTYPE_REGISTER (0xb:0x3b) +DMM MSISDN:42342: rx msg GSM0480_MTYPE_REGISTER: received_cm_service_request changes to false DREF MSISDN:42342: MSC conn use - cm_service == 1 (0x2: dtap) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING DMM USSD: Own number requested DMM MSISDN:42342: MSISDN = 42342 DMSC msc_tx 43 bytes to MSISDN:42342 via RAN_GERAN_A -- DTAP --RAN_GERAN_A--> MS: NCSS:0x2a: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d +- DTAP --RAN_GERAN_A--> MS: GSM0480_MTYPE_RELEASE_COMPLETE: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d - DTAP matches expected message DREF MSISDN:42342: MSC conn use - dtap == 0 (0x0: ) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_UNUSED @@ -2699,17 +2699,17 @@ - a USSD request is serviced expecting USSD: Your extension is 42342 - MSC <--RAN_UTRAN_IU-- MS: NCSS:0x3b + MSC <--RAN_UTRAN_IU-- MS: GSM0480_MTYPE_REGISTER DREF MSISDN:42342: MSC conn use + dtap == 2 (0xa: dtap,cm_service) -DRLL Dispatching 04.08 message NCSS:0x3b (0xb:0x3b) -DMM MSISDN:42342: rx msg NCSS:0x3b: received_cm_service_request changes to false +DRLL Dispatching 04.08 message GSM0480_MTYPE_REGISTER (0xb:0x3b) +DMM MSISDN:42342: rx msg GSM0480_MTYPE_REGISTER: received_cm_service_request changes to false DREF MSISDN:42342: MSC conn use - cm_service == 1 (0x2: dtap) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING DMM USSD: Own number requested DMM MSISDN:42342: MSISDN = 42342 DMSC msc_tx 43 bytes to MSISDN:42342 via RAN_UTRAN_IU -- DTAP --RAN_UTRAN_IU--> MS: NCSS:0x2a: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d +- DTAP --RAN_UTRAN_IU--> MS: GSM0480_MTYPE_RELEASE_COMPLETE: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d - DTAP matches expected message DREF MSISDN:42342: MSC conn use - dtap == 0 (0x0: ) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_UNUSED 7. testsuite.at:47: 7. msc_vlr_test_authen_reuse (testsuite.at:47): FAILED (testsuite.at:51) ======================== ./tests/testsuite.dir/05/testsuite.log # -*- compilation -*- 5. testsuite.at:33: testing msc_vlr_test_gsm_ciph ... ./testsuite.at:37: $abs_top_builddir/tests/msc_vlr/msc_vlr_test_gsm_ciph --- experr 2018-04-17 12:29:10.573878335 +0000 +++ /build/tests/testsuite.dir/at-groups/5/stderr 2018-04-17 12:29:10.593878189 +0000 @@ -278,17 +278,17 @@ - a USSD request is serviced expecting USSD: Your extension is 46071 - MSC <--RAN_GERAN_A-- MS: NCSS:0x3b + MSC <--RAN_GERAN_A-- MS: GSM0480_MTYPE_REGISTER DREF MSISDN:46071: MSC conn use + dtap == 2 (0xa: dtap,cm_service) -DRLL Dispatching 04.08 message NCSS:0x3b (0xb:0x3b) -DMM MSISDN:46071: rx msg NCSS:0x3b: received_cm_service_request changes to false +DRLL Dispatching 04.08 message GSM0480_MTYPE_REGISTER (0xb:0x3b) +DMM MSISDN:46071: rx msg GSM0480_MTYPE_REGISTER: received_cm_service_request changes to false DREF MSISDN:46071: MSC conn use - cm_service == 1 (0x2: dtap) DMM Subscr_Conn(CM_SERVICE_REQ:901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING DMM Subscr_Conn(CM_SERVICE_REQ:901700000004620){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING DMM USSD: Own number requested DMM MSISDN:46071: MSISDN = 46071 DMSC msc_tx 43 bytes to MSISDN:46071 via RAN_GERAN_A -- DTAP --RAN_GERAN_A--> MS: NCSS:0x2a: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d27310cd06bbc51a0d +- DTAP --RAN_GERAN_A--> MS: GSM0480_MTYPE_RELEASE_COMPLETE: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d27310cd06bbc51a0d - DTAP matches expected message DREF MSISDN:46071: MSC conn use - dtap == 0 (0x0: ) DMM Subscr_Conn(CM_SERVICE_REQ:901700000004620){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_UNUSED @@ -834,17 +834,17 @@ - a USSD request is serviced expecting USSD: Your extension is 46071 - MSC <--RAN_GERAN_A-- MS: NCSS:0x3b + MSC <--RAN_GERAN_A-- MS: GSM0480_MTYPE_REGISTER DREF MSISDN:46071: MSC conn use + dtap == 2 (0xa: dtap,cm_service) -DRLL Dispatching 04.08 message NCSS:0x3b (0xb:0x3b) -DMM MSISDN:46071: rx msg NCSS:0x3b: received_cm_service_request changes to false +DRLL Dispatching 04.08 message GSM0480_MTYPE_REGISTER (0xb:0x3b) +DMM MSISDN:46071: rx msg GSM0480_MTYPE_REGISTER: received_cm_service_request changes to false DREF MSISDN:46071: MSC conn use - cm_service == 1 (0x2: dtap) DMM Subscr_Conn(CM_SERVICE_REQ:50462976){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING DMM Subscr_Conn(CM_SERVICE_REQ:50462976){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING DMM USSD: Own number requested DMM MSISDN:46071: MSISDN = 46071 DMSC msc_tx 43 bytes to MSISDN:46071 via RAN_GERAN_A -- DTAP --RAN_GERAN_A--> MS: NCSS:0x2a: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d27310cd06bbc51a0d +- DTAP --RAN_GERAN_A--> MS: GSM0480_MTYPE_RELEASE_COMPLETE: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d27310cd06bbc51a0d - DTAP matches expected message DREF MSISDN:46071: MSC conn use - dtap == 0 (0x0: ) DMM Subscr_Conn(CM_SERVICE_REQ:50462976){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_UNUSED @@ -2076,17 +2076,17 @@ - a USSD request is serviced expecting USSD: Your extension is 42342 - MSC <--RAN_GERAN_A-- MS: NCSS:0x3b + MSC <--RAN_GERAN_A-- MS: GSM0480_MTYPE_REGISTER DREF MSISDN:42342: MSC conn use + dtap == 2 (0xa: dtap,cm_service) -DRLL Dispatching 04.08 message NCSS:0x3b (0xb:0x3b) -DMM MSISDN:42342: rx msg NCSS:0x3b: received_cm_service_request changes to false +DRLL Dispatching 04.08 message GSM0480_MTYPE_REGISTER (0xb:0x3b) +DMM MSISDN:42342: rx msg GSM0480_MTYPE_REGISTER: received_cm_service_request changes to false DREF MSISDN:42342: MSC conn use - cm_service == 1 (0x2: dtap) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING DMM USSD: Own number requested DMM MSISDN:42342: MSISDN = 42342 DMSC msc_tx 43 bytes to MSISDN:42342 via RAN_GERAN_A -- DTAP --RAN_GERAN_A--> MS: NCSS:0x2a: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d +- DTAP --RAN_GERAN_A--> MS: GSM0480_MTYPE_RELEASE_COMPLETE: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d - DTAP matches expected message DREF MSISDN:42342: MSC conn use - dtap == 0 (0x0: ) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_UNUSED 5. testsuite.at:33: 5. msc_vlr_test_gsm_ciph (testsuite.at:33): FAILED (testsuite.at:37) Build step 'Execute shell' marked build as failure [WARNINGS]Skipping publisher since build result is FAILURE From gerrit-no-reply at lists.osmocom.org Tue Apr 17 12:29:25 2018 From: gerrit-no-reply at lists.osmocom.org (Vadim Yanitskiy) Date: Tue, 17 Apr 2018 12:29:25 +0000 Subject: [PATCH] osmo-msc[master]: tests/msc_vlr: fix expected SS message names Message-ID: Review at https://gerrit.osmocom.org/7851 tests/msc_vlr: fix expected SS message names Since the I697639d8469e5dda617b27995c4a92e1f0c0bead, call independent SS messages are also supported by gsm48_pdisc_msgtype_name(). So, instead of 'NCSS:0x3b' it will return 'GSM0480_MTYPE_REGISTER'. Let's correct the expected message names. Change-Id: If9e854ee84882d104cf2ffaceb3862fda6862f19 --- M tests/msc_vlr/msc_vlr_test_authen_reuse.err M tests/msc_vlr/msc_vlr_test_gsm_authen.err M tests/msc_vlr/msc_vlr_test_gsm_ciph.err M tests/msc_vlr/msc_vlr_test_no_authen.err M tests/msc_vlr/msc_vlr_test_reject_concurrency.err M tests/msc_vlr/msc_vlr_test_umts_authen.err 6 files changed, 92 insertions(+), 92 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-msc refs/changes/51/7851/1 diff --git a/tests/msc_vlr/msc_vlr_test_authen_reuse.err b/tests/msc_vlr/msc_vlr_test_authen_reuse.err index 4b6ea47..f8ebf51 100644 --- a/tests/msc_vlr/msc_vlr_test_authen_reuse.err +++ b/tests/msc_vlr/msc_vlr_test_authen_reuse.err @@ -256,17 +256,17 @@ - a USSD request is serviced expecting USSD: Your extension is 42342 - MSC <--RAN_GERAN_A-- MS: NCSS:0x3b + MSC <--RAN_GERAN_A-- MS: GSM0480_MTYPE_REGISTER DREF MSISDN:42342: MSC conn use + dtap == 2 (0xa: dtap,cm_service) -DRLL Dispatching 04.08 message NCSS:0x3b (0xb:0x3b) -DMM MSISDN:42342: rx msg NCSS:0x3b: received_cm_service_request changes to false +DRLL Dispatching 04.08 message GSM0480_MTYPE_REGISTER (0xb:0x3b) +DMM MSISDN:42342: rx msg GSM0480_MTYPE_REGISTER: received_cm_service_request changes to false DREF MSISDN:42342: MSC conn use - cm_service == 1 (0x2: dtap) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING DMM USSD: Own number requested DMM MSISDN:42342: MSISDN = 42342 DMSC msc_tx 43 bytes to MSISDN:42342 via RAN_GERAN_A -- DTAP --RAN_GERAN_A--> MS: NCSS:0x2a: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d +- DTAP --RAN_GERAN_A--> MS: GSM0480_MTYPE_RELEASE_COMPLETE: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d - DTAP matches expected message DREF MSISDN:42342: MSC conn use - dtap == 0 (0x0: ) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_UNUSED @@ -378,17 +378,17 @@ - a USSD request is serviced expecting USSD: Your extension is 42342 - MSC <--RAN_GERAN_A-- MS: NCSS:0x3b + MSC <--RAN_GERAN_A-- MS: GSM0480_MTYPE_REGISTER DREF MSISDN:42342: MSC conn use + dtap == 2 (0xa: dtap,cm_service) -DRLL Dispatching 04.08 message NCSS:0x3b (0xb:0x3b) -DMM MSISDN:42342: rx msg NCSS:0x3b: received_cm_service_request changes to false +DRLL Dispatching 04.08 message GSM0480_MTYPE_REGISTER (0xb:0x3b) +DMM MSISDN:42342: rx msg GSM0480_MTYPE_REGISTER: received_cm_service_request changes to false DREF MSISDN:42342: MSC conn use - cm_service == 1 (0x2: dtap) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING DMM USSD: Own number requested DMM MSISDN:42342: MSISDN = 42342 DMSC msc_tx 43 bytes to MSISDN:42342 via RAN_GERAN_A -- DTAP --RAN_GERAN_A--> MS: NCSS:0x2a: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d +- DTAP --RAN_GERAN_A--> MS: GSM0480_MTYPE_RELEASE_COMPLETE: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d - DTAP matches expected message DREF MSISDN:42342: MSC conn use - dtap == 0 (0x0: ) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_UNUSED @@ -728,17 +728,17 @@ - a USSD request is serviced expecting USSD: Your extension is 42342 - MSC <--RAN_UTRAN_IU-- MS: NCSS:0x3b + MSC <--RAN_UTRAN_IU-- MS: GSM0480_MTYPE_REGISTER DREF MSISDN:42342: MSC conn use + dtap == 2 (0xa: dtap,cm_service) -DRLL Dispatching 04.08 message NCSS:0x3b (0xb:0x3b) -DMM MSISDN:42342: rx msg NCSS:0x3b: received_cm_service_request changes to false +DRLL Dispatching 04.08 message GSM0480_MTYPE_REGISTER (0xb:0x3b) +DMM MSISDN:42342: rx msg GSM0480_MTYPE_REGISTER: received_cm_service_request changes to false DREF MSISDN:42342: MSC conn use - cm_service == 1 (0x2: dtap) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING DMM USSD: Own number requested DMM MSISDN:42342: MSISDN = 42342 DMSC msc_tx 43 bytes to MSISDN:42342 via RAN_UTRAN_IU -- DTAP --RAN_UTRAN_IU--> MS: NCSS:0x2a: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d +- DTAP --RAN_UTRAN_IU--> MS: GSM0480_MTYPE_RELEASE_COMPLETE: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d - DTAP matches expected message DREF MSISDN:42342: MSC conn use - dtap == 0 (0x0: ) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_UNUSED @@ -863,17 +863,17 @@ - a USSD request is serviced expecting USSD: Your extension is 42342 - MSC <--RAN_UTRAN_IU-- MS: NCSS:0x3b + MSC <--RAN_UTRAN_IU-- MS: GSM0480_MTYPE_REGISTER DREF MSISDN:42342: MSC conn use + dtap == 2 (0xa: dtap,cm_service) -DRLL Dispatching 04.08 message NCSS:0x3b (0xb:0x3b) -DMM MSISDN:42342: rx msg NCSS:0x3b: received_cm_service_request changes to false +DRLL Dispatching 04.08 message GSM0480_MTYPE_REGISTER (0xb:0x3b) +DMM MSISDN:42342: rx msg GSM0480_MTYPE_REGISTER: received_cm_service_request changes to false DREF MSISDN:42342: MSC conn use - cm_service == 1 (0x2: dtap) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING DMM USSD: Own number requested DMM MSISDN:42342: MSISDN = 42342 DMSC msc_tx 43 bytes to MSISDN:42342 via RAN_UTRAN_IU -- DTAP --RAN_UTRAN_IU--> MS: NCSS:0x2a: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d +- DTAP --RAN_UTRAN_IU--> MS: GSM0480_MTYPE_RELEASE_COMPLETE: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d - DTAP matches expected message DREF MSISDN:42342: MSC conn use - dtap == 0 (0x0: ) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_UNUSED @@ -1188,17 +1188,17 @@ - a USSD request is serviced expecting USSD: Your extension is 42342 - MSC <--RAN_GERAN_A-- MS: NCSS:0x3b + MSC <--RAN_GERAN_A-- MS: GSM0480_MTYPE_REGISTER DREF MSISDN:42342: MSC conn use + dtap == 2 (0xa: dtap,cm_service) -DRLL Dispatching 04.08 message NCSS:0x3b (0xb:0x3b) -DMM MSISDN:42342: rx msg NCSS:0x3b: received_cm_service_request changes to false +DRLL Dispatching 04.08 message GSM0480_MTYPE_REGISTER (0xb:0x3b) +DMM MSISDN:42342: rx msg GSM0480_MTYPE_REGISTER: received_cm_service_request changes to false DREF MSISDN:42342: MSC conn use - cm_service == 1 (0x2: dtap) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING DMM USSD: Own number requested DMM MSISDN:42342: MSISDN = 42342 DMSC msc_tx 43 bytes to MSISDN:42342 via RAN_GERAN_A -- DTAP --RAN_GERAN_A--> MS: NCSS:0x2a: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d +- DTAP --RAN_GERAN_A--> MS: GSM0480_MTYPE_RELEASE_COMPLETE: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d - DTAP matches expected message DREF MSISDN:42342: MSC conn use - dtap == 0 (0x0: ) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_UNUSED @@ -1296,17 +1296,17 @@ - a USSD request is serviced expecting USSD: Your extension is 42342 - MSC <--RAN_GERAN_A-- MS: NCSS:0x3b + MSC <--RAN_GERAN_A-- MS: GSM0480_MTYPE_REGISTER DREF MSISDN:42342: MSC conn use + dtap == 2 (0xa: dtap,cm_service) -DRLL Dispatching 04.08 message NCSS:0x3b (0xb:0x3b) -DMM MSISDN:42342: rx msg NCSS:0x3b: received_cm_service_request changes to false +DRLL Dispatching 04.08 message GSM0480_MTYPE_REGISTER (0xb:0x3b) +DMM MSISDN:42342: rx msg GSM0480_MTYPE_REGISTER: received_cm_service_request changes to false DREF MSISDN:42342: MSC conn use - cm_service == 1 (0x2: dtap) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING DMM USSD: Own number requested DMM MSISDN:42342: MSISDN = 42342 DMSC msc_tx 43 bytes to MSISDN:42342 via RAN_GERAN_A -- DTAP --RAN_GERAN_A--> MS: NCSS:0x2a: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d +- DTAP --RAN_GERAN_A--> MS: GSM0480_MTYPE_RELEASE_COMPLETE: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d - DTAP matches expected message DREF MSISDN:42342: MSC conn use - dtap == 0 (0x0: ) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_UNUSED @@ -1404,17 +1404,17 @@ - a USSD request is serviced expecting USSD: Your extension is 42342 - MSC <--RAN_GERAN_A-- MS: NCSS:0x3b + MSC <--RAN_GERAN_A-- MS: GSM0480_MTYPE_REGISTER DREF MSISDN:42342: MSC conn use + dtap == 2 (0xa: dtap,cm_service) -DRLL Dispatching 04.08 message NCSS:0x3b (0xb:0x3b) -DMM MSISDN:42342: rx msg NCSS:0x3b: received_cm_service_request changes to false +DRLL Dispatching 04.08 message GSM0480_MTYPE_REGISTER (0xb:0x3b) +DMM MSISDN:42342: rx msg GSM0480_MTYPE_REGISTER: received_cm_service_request changes to false DREF MSISDN:42342: MSC conn use - cm_service == 1 (0x2: dtap) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING DMM USSD: Own number requested DMM MSISDN:42342: MSISDN = 42342 DMSC msc_tx 43 bytes to MSISDN:42342 via RAN_GERAN_A -- DTAP --RAN_GERAN_A--> MS: NCSS:0x2a: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d +- DTAP --RAN_GERAN_A--> MS: GSM0480_MTYPE_RELEASE_COMPLETE: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d - DTAP matches expected message DREF MSISDN:42342: MSC conn use - dtap == 0 (0x0: ) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_UNUSED @@ -1754,17 +1754,17 @@ - a USSD request is serviced expecting USSD: Your extension is 42342 - MSC <--RAN_UTRAN_IU-- MS: NCSS:0x3b + MSC <--RAN_UTRAN_IU-- MS: GSM0480_MTYPE_REGISTER DREF MSISDN:42342: MSC conn use + dtap == 2 (0xa: dtap,cm_service) -DRLL Dispatching 04.08 message NCSS:0x3b (0xb:0x3b) -DMM MSISDN:42342: rx msg NCSS:0x3b: received_cm_service_request changes to false +DRLL Dispatching 04.08 message GSM0480_MTYPE_REGISTER (0xb:0x3b) +DMM MSISDN:42342: rx msg GSM0480_MTYPE_REGISTER: received_cm_service_request changes to false DREF MSISDN:42342: MSC conn use - cm_service == 1 (0x2: dtap) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING DMM USSD: Own number requested DMM MSISDN:42342: MSISDN = 42342 DMSC msc_tx 43 bytes to MSISDN:42342 via RAN_UTRAN_IU -- DTAP --RAN_UTRAN_IU--> MS: NCSS:0x2a: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d +- DTAP --RAN_UTRAN_IU--> MS: GSM0480_MTYPE_RELEASE_COMPLETE: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d - DTAP matches expected message DREF MSISDN:42342: MSC conn use - dtap == 0 (0x0: ) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_UNUSED @@ -1875,17 +1875,17 @@ - a USSD request is serviced expecting USSD: Your extension is 42342 - MSC <--RAN_UTRAN_IU-- MS: NCSS:0x3b + MSC <--RAN_UTRAN_IU-- MS: GSM0480_MTYPE_REGISTER DREF MSISDN:42342: MSC conn use + dtap == 2 (0xa: dtap,cm_service) -DRLL Dispatching 04.08 message NCSS:0x3b (0xb:0x3b) -DMM MSISDN:42342: rx msg NCSS:0x3b: received_cm_service_request changes to false +DRLL Dispatching 04.08 message GSM0480_MTYPE_REGISTER (0xb:0x3b) +DMM MSISDN:42342: rx msg GSM0480_MTYPE_REGISTER: received_cm_service_request changes to false DREF MSISDN:42342: MSC conn use - cm_service == 1 (0x2: dtap) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING DMM USSD: Own number requested DMM MSISDN:42342: MSISDN = 42342 DMSC msc_tx 43 bytes to MSISDN:42342 via RAN_UTRAN_IU -- DTAP --RAN_UTRAN_IU--> MS: NCSS:0x2a: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d +- DTAP --RAN_UTRAN_IU--> MS: GSM0480_MTYPE_RELEASE_COMPLETE: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d - DTAP matches expected message DREF MSISDN:42342: MSC conn use - dtap == 0 (0x0: ) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_UNUSED @@ -1996,17 +1996,17 @@ - a USSD request is serviced expecting USSD: Your extension is 42342 - MSC <--RAN_UTRAN_IU-- MS: NCSS:0x3b + MSC <--RAN_UTRAN_IU-- MS: GSM0480_MTYPE_REGISTER DREF MSISDN:42342: MSC conn use + dtap == 2 (0xa: dtap,cm_service) -DRLL Dispatching 04.08 message NCSS:0x3b (0xb:0x3b) -DMM MSISDN:42342: rx msg NCSS:0x3b: received_cm_service_request changes to false +DRLL Dispatching 04.08 message GSM0480_MTYPE_REGISTER (0xb:0x3b) +DMM MSISDN:42342: rx msg GSM0480_MTYPE_REGISTER: received_cm_service_request changes to false DREF MSISDN:42342: MSC conn use - cm_service == 1 (0x2: dtap) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING DMM USSD: Own number requested DMM MSISDN:42342: MSISDN = 42342 DMSC msc_tx 43 bytes to MSISDN:42342 via RAN_UTRAN_IU -- DTAP --RAN_UTRAN_IU--> MS: NCSS:0x2a: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d +- DTAP --RAN_UTRAN_IU--> MS: GSM0480_MTYPE_RELEASE_COMPLETE: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d - DTAP matches expected message DREF MSISDN:42342: MSC conn use - dtap == 0 (0x0: ) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_UNUSED @@ -2335,17 +2335,17 @@ - a USSD request is serviced expecting USSD: Your extension is 42342 - MSC <--RAN_GERAN_A-- MS: NCSS:0x3b + MSC <--RAN_GERAN_A-- MS: GSM0480_MTYPE_REGISTER DREF MSISDN:42342: MSC conn use + dtap == 2 (0xa: dtap,cm_service) -DRLL Dispatching 04.08 message NCSS:0x3b (0xb:0x3b) -DMM MSISDN:42342: rx msg NCSS:0x3b: received_cm_service_request changes to false +DRLL Dispatching 04.08 message GSM0480_MTYPE_REGISTER (0xb:0x3b) +DMM MSISDN:42342: rx msg GSM0480_MTYPE_REGISTER: received_cm_service_request changes to false DREF MSISDN:42342: MSC conn use - cm_service == 1 (0x2: dtap) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING DMM USSD: Own number requested DMM MSISDN:42342: MSISDN = 42342 DMSC msc_tx 43 bytes to MSISDN:42342 via RAN_GERAN_A -- DTAP --RAN_GERAN_A--> MS: NCSS:0x2a: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d +- DTAP --RAN_GERAN_A--> MS: GSM0480_MTYPE_RELEASE_COMPLETE: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d - DTAP matches expected message DREF MSISDN:42342: MSC conn use - dtap == 0 (0x0: ) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_UNUSED @@ -2699,17 +2699,17 @@ - a USSD request is serviced expecting USSD: Your extension is 42342 - MSC <--RAN_UTRAN_IU-- MS: NCSS:0x3b + MSC <--RAN_UTRAN_IU-- MS: GSM0480_MTYPE_REGISTER DREF MSISDN:42342: MSC conn use + dtap == 2 (0xa: dtap,cm_service) -DRLL Dispatching 04.08 message NCSS:0x3b (0xb:0x3b) -DMM MSISDN:42342: rx msg NCSS:0x3b: received_cm_service_request changes to false +DRLL Dispatching 04.08 message GSM0480_MTYPE_REGISTER (0xb:0x3b) +DMM MSISDN:42342: rx msg GSM0480_MTYPE_REGISTER: received_cm_service_request changes to false DREF MSISDN:42342: MSC conn use - cm_service == 1 (0x2: dtap) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING DMM USSD: Own number requested DMM MSISDN:42342: MSISDN = 42342 DMSC msc_tx 43 bytes to MSISDN:42342 via RAN_UTRAN_IU -- DTAP --RAN_UTRAN_IU--> MS: NCSS:0x2a: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d +- DTAP --RAN_UTRAN_IU--> MS: GSM0480_MTYPE_RELEASE_COMPLETE: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d - DTAP matches expected message DREF MSISDN:42342: MSC conn use - dtap == 0 (0x0: ) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_UNUSED diff --git a/tests/msc_vlr/msc_vlr_test_gsm_authen.err b/tests/msc_vlr/msc_vlr_test_gsm_authen.err index 6671ade..646617a 100644 --- a/tests/msc_vlr/msc_vlr_test_gsm_authen.err +++ b/tests/msc_vlr/msc_vlr_test_gsm_authen.err @@ -249,17 +249,17 @@ - a USSD request is serviced expecting USSD: Your extension is 46071 - MSC <--RAN_GERAN_A-- MS: NCSS:0x3b + MSC <--RAN_GERAN_A-- MS: GSM0480_MTYPE_REGISTER DREF MSISDN:46071: MSC conn use + dtap == 2 (0xa: dtap,cm_service) -DRLL Dispatching 04.08 message NCSS:0x3b (0xb:0x3b) -DMM MSISDN:46071: rx msg NCSS:0x3b: received_cm_service_request changes to false +DRLL Dispatching 04.08 message GSM0480_MTYPE_REGISTER (0xb:0x3b) +DMM MSISDN:46071: rx msg GSM0480_MTYPE_REGISTER: received_cm_service_request changes to false DREF MSISDN:46071: MSC conn use - cm_service == 1 (0x2: dtap) DMM Subscr_Conn(CM_SERVICE_REQ:901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING DMM Subscr_Conn(CM_SERVICE_REQ:901700000004620){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING DMM USSD: Own number requested DMM MSISDN:46071: MSISDN = 46071 DMSC msc_tx 43 bytes to MSISDN:46071 via RAN_GERAN_A -- DTAP --RAN_GERAN_A--> MS: NCSS:0x2a: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d27310cd06bbc51a0d +- DTAP --RAN_GERAN_A--> MS: GSM0480_MTYPE_RELEASE_COMPLETE: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d27310cd06bbc51a0d - DTAP matches expected message DREF MSISDN:46071: MSC conn use - dtap == 0 (0x0: ) DMM Subscr_Conn(CM_SERVICE_REQ:901700000004620){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_UNUSED @@ -750,17 +750,17 @@ - a USSD request is serviced expecting USSD: Your extension is 46071 - MSC <--RAN_GERAN_A-- MS: NCSS:0x3b + MSC <--RAN_GERAN_A-- MS: GSM0480_MTYPE_REGISTER DREF MSISDN:46071: MSC conn use + dtap == 2 (0xa: dtap,cm_service) -DRLL Dispatching 04.08 message NCSS:0x3b (0xb:0x3b) -DMM MSISDN:46071: rx msg NCSS:0x3b: received_cm_service_request changes to false +DRLL Dispatching 04.08 message GSM0480_MTYPE_REGISTER (0xb:0x3b) +DMM MSISDN:46071: rx msg GSM0480_MTYPE_REGISTER: received_cm_service_request changes to false DREF MSISDN:46071: MSC conn use - cm_service == 1 (0x2: dtap) DMM Subscr_Conn(CM_SERVICE_REQ:50462976){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING DMM Subscr_Conn(CM_SERVICE_REQ:50462976){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING DMM USSD: Own number requested DMM MSISDN:46071: MSISDN = 46071 DMSC msc_tx 43 bytes to MSISDN:46071 via RAN_GERAN_A -- DTAP --RAN_GERAN_A--> MS: NCSS:0x2a: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d27310cd06bbc51a0d +- DTAP --RAN_GERAN_A--> MS: GSM0480_MTYPE_RELEASE_COMPLETE: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d27310cd06bbc51a0d - DTAP matches expected message DREF MSISDN:46071: MSC conn use - dtap == 0 (0x0: ) DMM Subscr_Conn(CM_SERVICE_REQ:50462976){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_UNUSED @@ -1875,17 +1875,17 @@ - a USSD request is serviced expecting USSD: Your extension is 42342 - MSC <--RAN_GERAN_A-- MS: NCSS:0x3b + MSC <--RAN_GERAN_A-- MS: GSM0480_MTYPE_REGISTER DREF MSISDN:42342: MSC conn use + dtap == 2 (0xa: dtap,cm_service) -DRLL Dispatching 04.08 message NCSS:0x3b (0xb:0x3b) -DMM MSISDN:42342: rx msg NCSS:0x3b: received_cm_service_request changes to false +DRLL Dispatching 04.08 message GSM0480_MTYPE_REGISTER (0xb:0x3b) +DMM MSISDN:42342: rx msg GSM0480_MTYPE_REGISTER: received_cm_service_request changes to false DREF MSISDN:42342: MSC conn use - cm_service == 1 (0x2: dtap) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING DMM USSD: Own number requested DMM MSISDN:42342: MSISDN = 42342 DMSC msc_tx 43 bytes to MSISDN:42342 via RAN_GERAN_A -- DTAP --RAN_GERAN_A--> MS: NCSS:0x2a: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d +- DTAP --RAN_GERAN_A--> MS: GSM0480_MTYPE_RELEASE_COMPLETE: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d - DTAP matches expected message DREF MSISDN:42342: MSC conn use - dtap == 0 (0x0: ) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_UNUSED diff --git a/tests/msc_vlr/msc_vlr_test_gsm_ciph.err b/tests/msc_vlr/msc_vlr_test_gsm_ciph.err index c05ea8d..0d5c819 100644 --- a/tests/msc_vlr/msc_vlr_test_gsm_ciph.err +++ b/tests/msc_vlr/msc_vlr_test_gsm_ciph.err @@ -278,17 +278,17 @@ - a USSD request is serviced expecting USSD: Your extension is 46071 - MSC <--RAN_GERAN_A-- MS: NCSS:0x3b + MSC <--RAN_GERAN_A-- MS: GSM0480_MTYPE_REGISTER DREF MSISDN:46071: MSC conn use + dtap == 2 (0xa: dtap,cm_service) -DRLL Dispatching 04.08 message NCSS:0x3b (0xb:0x3b) -DMM MSISDN:46071: rx msg NCSS:0x3b: received_cm_service_request changes to false +DRLL Dispatching 04.08 message GSM0480_MTYPE_REGISTER (0xb:0x3b) +DMM MSISDN:46071: rx msg GSM0480_MTYPE_REGISTER: received_cm_service_request changes to false DREF MSISDN:46071: MSC conn use - cm_service == 1 (0x2: dtap) DMM Subscr_Conn(CM_SERVICE_REQ:901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING DMM Subscr_Conn(CM_SERVICE_REQ:901700000004620){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING DMM USSD: Own number requested DMM MSISDN:46071: MSISDN = 46071 DMSC msc_tx 43 bytes to MSISDN:46071 via RAN_GERAN_A -- DTAP --RAN_GERAN_A--> MS: NCSS:0x2a: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d27310cd06bbc51a0d +- DTAP --RAN_GERAN_A--> MS: GSM0480_MTYPE_RELEASE_COMPLETE: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d27310cd06bbc51a0d - DTAP matches expected message DREF MSISDN:46071: MSC conn use - dtap == 0 (0x0: ) DMM Subscr_Conn(CM_SERVICE_REQ:901700000004620){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_UNUSED @@ -834,17 +834,17 @@ - a USSD request is serviced expecting USSD: Your extension is 46071 - MSC <--RAN_GERAN_A-- MS: NCSS:0x3b + MSC <--RAN_GERAN_A-- MS: GSM0480_MTYPE_REGISTER DREF MSISDN:46071: MSC conn use + dtap == 2 (0xa: dtap,cm_service) -DRLL Dispatching 04.08 message NCSS:0x3b (0xb:0x3b) -DMM MSISDN:46071: rx msg NCSS:0x3b: received_cm_service_request changes to false +DRLL Dispatching 04.08 message GSM0480_MTYPE_REGISTER (0xb:0x3b) +DMM MSISDN:46071: rx msg GSM0480_MTYPE_REGISTER: received_cm_service_request changes to false DREF MSISDN:46071: MSC conn use - cm_service == 1 (0x2: dtap) DMM Subscr_Conn(CM_SERVICE_REQ:50462976){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING DMM Subscr_Conn(CM_SERVICE_REQ:50462976){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING DMM USSD: Own number requested DMM MSISDN:46071: MSISDN = 46071 DMSC msc_tx 43 bytes to MSISDN:46071 via RAN_GERAN_A -- DTAP --RAN_GERAN_A--> MS: NCSS:0x2a: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d27310cd06bbc51a0d +- DTAP --RAN_GERAN_A--> MS: GSM0480_MTYPE_RELEASE_COMPLETE: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d27310cd06bbc51a0d - DTAP matches expected message DREF MSISDN:46071: MSC conn use - dtap == 0 (0x0: ) DMM Subscr_Conn(CM_SERVICE_REQ:50462976){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_UNUSED @@ -2076,17 +2076,17 @@ - a USSD request is serviced expecting USSD: Your extension is 42342 - MSC <--RAN_GERAN_A-- MS: NCSS:0x3b + MSC <--RAN_GERAN_A-- MS: GSM0480_MTYPE_REGISTER DREF MSISDN:42342: MSC conn use + dtap == 2 (0xa: dtap,cm_service) -DRLL Dispatching 04.08 message NCSS:0x3b (0xb:0x3b) -DMM MSISDN:42342: rx msg NCSS:0x3b: received_cm_service_request changes to false +DRLL Dispatching 04.08 message GSM0480_MTYPE_REGISTER (0xb:0x3b) +DMM MSISDN:42342: rx msg GSM0480_MTYPE_REGISTER: received_cm_service_request changes to false DREF MSISDN:42342: MSC conn use - cm_service == 1 (0x2: dtap) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING DMM USSD: Own number requested DMM MSISDN:42342: MSISDN = 42342 DMSC msc_tx 43 bytes to MSISDN:42342 via RAN_GERAN_A -- DTAP --RAN_GERAN_A--> MS: NCSS:0x2a: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d +- DTAP --RAN_GERAN_A--> MS: GSM0480_MTYPE_RELEASE_COMPLETE: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d - DTAP matches expected message DREF MSISDN:42342: MSC conn use - dtap == 0 (0x0: ) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_UNUSED diff --git a/tests/msc_vlr/msc_vlr_test_no_authen.err b/tests/msc_vlr/msc_vlr_test_no_authen.err index d75baba..2890e96 100644 --- a/tests/msc_vlr/msc_vlr_test_no_authen.err +++ b/tests/msc_vlr/msc_vlr_test_no_authen.err @@ -162,17 +162,17 @@ - a USSD request is serviced expecting USSD: Your extension is 46071 - MSC <--RAN_GERAN_A-- MS: NCSS:0x3b + MSC <--RAN_GERAN_A-- MS: GSM0480_MTYPE_REGISTER DREF MSISDN:46071: MSC conn use + dtap == 2 (0xa: dtap,cm_service) -DRLL Dispatching 04.08 message NCSS:0x3b (0xb:0x3b) -DMM MSISDN:46071: rx msg NCSS:0x3b: received_cm_service_request changes to false +DRLL Dispatching 04.08 message GSM0480_MTYPE_REGISTER (0xb:0x3b) +DMM MSISDN:46071: rx msg GSM0480_MTYPE_REGISTER: received_cm_service_request changes to false DREF MSISDN:46071: MSC conn use - cm_service == 1 (0x2: dtap) DMM Subscr_Conn(CM_SERVICE_REQ:901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING DMM Subscr_Conn(CM_SERVICE_REQ:901700000004620){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING DMM USSD: Own number requested DMM MSISDN:46071: MSISDN = 46071 DMSC msc_tx 43 bytes to MSISDN:46071 via RAN_GERAN_A -- DTAP --RAN_GERAN_A--> MS: NCSS:0x2a: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d27310cd06bbc51a0d +- DTAP --RAN_GERAN_A--> MS: GSM0480_MTYPE_RELEASE_COMPLETE: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d27310cd06bbc51a0d - DTAP matches expected message DREF MSISDN:46071: MSC conn use - dtap == 0 (0x0: ) DMM Subscr_Conn(CM_SERVICE_REQ:901700000004620){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_UNUSED @@ -538,17 +538,17 @@ - a USSD request is serviced expecting USSD: Your extension is 46071 - MSC <--RAN_GERAN_A-- MS: NCSS:0x3b + MSC <--RAN_GERAN_A-- MS: GSM0480_MTYPE_REGISTER DREF MSISDN:46071: MSC conn use + dtap == 2 (0xa: dtap,cm_service) -DRLL Dispatching 04.08 message NCSS:0x3b (0xb:0x3b) -DMM MSISDN:46071: rx msg NCSS:0x3b: received_cm_service_request changes to false +DRLL Dispatching 04.08 message GSM0480_MTYPE_REGISTER (0xb:0x3b) +DMM MSISDN:46071: rx msg GSM0480_MTYPE_REGISTER: received_cm_service_request changes to false DREF MSISDN:46071: MSC conn use - cm_service == 1 (0x2: dtap) DMM Subscr_Conn(CM_SERVICE_REQ:50462976){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING DMM Subscr_Conn(CM_SERVICE_REQ:50462976){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING DMM USSD: Own number requested DMM MSISDN:46071: MSISDN = 46071 DMSC msc_tx 43 bytes to MSISDN:46071 via RAN_GERAN_A -- DTAP --RAN_GERAN_A--> MS: NCSS:0x2a: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d27310cd06bbc51a0d +- DTAP --RAN_GERAN_A--> MS: GSM0480_MTYPE_RELEASE_COMPLETE: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d27310cd06bbc51a0d - DTAP matches expected message DREF MSISDN:46071: MSC conn use - dtap == 0 (0x0: ) DMM Subscr_Conn(CM_SERVICE_REQ:50462976){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_UNUSED diff --git a/tests/msc_vlr/msc_vlr_test_reject_concurrency.err b/tests/msc_vlr/msc_vlr_test_reject_concurrency.err index 9cbb58f..5d16776 100644 --- a/tests/msc_vlr/msc_vlr_test_reject_concurrency.err +++ b/tests/msc_vlr/msc_vlr_test_reject_concurrency.err @@ -1118,17 +1118,17 @@ - a USSD request is serviced expecting USSD: Your extension is 46071 - MSC <--RAN_GERAN_A-- MS: NCSS:0x3b + MSC <--RAN_GERAN_A-- MS: GSM0480_MTYPE_REGISTER DREF MSISDN:46071: MSC conn use + dtap == 2 (0xa: dtap,cm_service) -DRLL Dispatching 04.08 message NCSS:0x3b (0xb:0x3b) -DMM MSISDN:46071: rx msg NCSS:0x3b: received_cm_service_request changes to false +DRLL Dispatching 04.08 message GSM0480_MTYPE_REGISTER (0xb:0x3b) +DMM MSISDN:46071: rx msg GSM0480_MTYPE_REGISTER: received_cm_service_request changes to false DREF MSISDN:46071: MSC conn use - cm_service == 1 (0x2: dtap) DMM Subscr_Conn(CM_SERVICE_REQ:901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING DMM Subscr_Conn(CM_SERVICE_REQ:901700000004620){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING DMM USSD: Own number requested DMM MSISDN:46071: MSISDN = 46071 DMSC msc_tx 43 bytes to MSISDN:46071 via RAN_GERAN_A -- DTAP --RAN_GERAN_A--> MS: NCSS:0x2a: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d27310cd06bbc51a0d +- DTAP --RAN_GERAN_A--> MS: GSM0480_MTYPE_RELEASE_COMPLETE: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d27310cd06bbc51a0d - DTAP matches expected message DREF MSISDN:46071: MSC conn use - dtap == 0 (0x0: ) DMM Subscr_Conn(CM_SERVICE_REQ:901700000004620){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_UNUSED diff --git a/tests/msc_vlr/msc_vlr_test_umts_authen.err b/tests/msc_vlr/msc_vlr_test_umts_authen.err index 539e721..c7be31c 100644 --- a/tests/msc_vlr/msc_vlr_test_umts_authen.err +++ b/tests/msc_vlr/msc_vlr_test_umts_authen.err @@ -262,17 +262,17 @@ - a USSD request is serviced expecting USSD: Your extension is 42342 - MSC <--RAN_GERAN_A-- MS: NCSS:0x3b + MSC <--RAN_GERAN_A-- MS: GSM0480_MTYPE_REGISTER DREF MSISDN:42342: MSC conn use + dtap == 2 (0xa: dtap,cm_service) -DRLL Dispatching 04.08 message NCSS:0x3b (0xb:0x3b) -DMM MSISDN:42342: rx msg NCSS:0x3b: received_cm_service_request changes to false +DRLL Dispatching 04.08 message GSM0480_MTYPE_REGISTER (0xb:0x3b) +DMM MSISDN:42342: rx msg GSM0480_MTYPE_REGISTER: received_cm_service_request changes to false DREF MSISDN:42342: MSC conn use - cm_service == 1 (0x2: dtap) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING DMM USSD: Own number requested DMM MSISDN:42342: MSISDN = 42342 DMSC msc_tx 43 bytes to MSISDN:42342 via RAN_GERAN_A -- DTAP --RAN_GERAN_A--> MS: NCSS:0x2a: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d +- DTAP --RAN_GERAN_A--> MS: GSM0480_MTYPE_RELEASE_COMPLETE: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d - DTAP matches expected message DREF MSISDN:42342: MSC conn use - dtap == 0 (0x0: ) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_UNUSED @@ -766,17 +766,17 @@ - a USSD request is serviced expecting USSD: Your extension is 42342 - MSC <--RAN_UTRAN_IU-- MS: NCSS:0x3b + MSC <--RAN_UTRAN_IU-- MS: GSM0480_MTYPE_REGISTER DREF MSISDN:42342: MSC conn use + dtap == 2 (0xa: dtap,cm_service) -DRLL Dispatching 04.08 message NCSS:0x3b (0xb:0x3b) -DMM MSISDN:42342: rx msg NCSS:0x3b: received_cm_service_request changes to false +DRLL Dispatching 04.08 message GSM0480_MTYPE_REGISTER (0xb:0x3b) +DMM MSISDN:42342: rx msg GSM0480_MTYPE_REGISTER: received_cm_service_request changes to false DREF MSISDN:42342: MSC conn use - cm_service == 1 (0x2: dtap) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING DMM USSD: Own number requested DMM MSISDN:42342: MSISDN = 42342 DMSC msc_tx 43 bytes to MSISDN:42342 via RAN_UTRAN_IU -- DTAP --RAN_UTRAN_IU--> MS: NCSS:0x2a: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d +- DTAP --RAN_UTRAN_IU--> MS: GSM0480_MTYPE_RELEASE_COMPLETE: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d - DTAP matches expected message DREF MSISDN:42342: MSC conn use - dtap == 0 (0x0: ) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_UNUSED -- To view, visit https://gerrit.osmocom.org/7851 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: If9e854ee84882d104cf2ffaceb3862fda6862f19 Gerrit-PatchSet: 1 Gerrit-Project: osmo-msc Gerrit-Branch: master Gerrit-Owner: Vadim Yanitskiy From jenkins at lists.osmocom.org Tue Apr 17 12:31:33 2018 From: jenkins at lists.osmocom.org (jenkins at lists.osmocom.org) Date: Tue, 17 Apr 2018 12:31:33 +0000 (UTC) Subject: =?UTF-8?Q?Build_failed_in_Jenkins:_master-osmo-msc_=C2=BB_--disable-?= =?UTF-8?Q?iu,a2=3Ddefault,a3=3Ddefault,osmocom-master-debian9_#2876?= In-Reply-To: <1833080369.412.1523968116299.JavaMail.jenkins@jenkins.osmocom.org> References: <1833080369.412.1523968116299.JavaMail.jenkins@jenkins.osmocom.org> Message-ID: <2064939326.414.1523968293442.JavaMail.jenkins@jenkins.osmocom.org> See ------------------------------------------ [...truncated 775.04 KB...] +- DTAP --RAN_GERAN_A--> MS: GSM0480_MTYPE_RELEASE_COMPLETE: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d - DTAP matches expected message DREF MSISDN:42342: MSC conn use - dtap == 0 (0x0: ) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_UNUSED @@ -378,17 +378,17 @@ - a USSD request is serviced expecting USSD: Your extension is 42342 - MSC <--RAN_GERAN_A-- MS: NCSS:0x3b + MSC <--RAN_GERAN_A-- MS: GSM0480_MTYPE_REGISTER DREF MSISDN:42342: MSC conn use + dtap == 2 (0xa: dtap,cm_service) -DRLL Dispatching 04.08 message NCSS:0x3b (0xb:0x3b) -DMM MSISDN:42342: rx msg NCSS:0x3b: received_cm_service_request changes to false +DRLL Dispatching 04.08 message GSM0480_MTYPE_REGISTER (0xb:0x3b) +DMM MSISDN:42342: rx msg GSM0480_MTYPE_REGISTER: received_cm_service_request changes to false DREF MSISDN:42342: MSC conn use - cm_service == 1 (0x2: dtap) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING DMM USSD: Own number requested DMM MSISDN:42342: MSISDN = 42342 DMSC msc_tx 43 bytes to MSISDN:42342 via RAN_GERAN_A -- DTAP --RAN_GERAN_A--> MS: NCSS:0x2a: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d +- DTAP --RAN_GERAN_A--> MS: GSM0480_MTYPE_RELEASE_COMPLETE: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d - DTAP matches expected message DREF MSISDN:42342: MSC conn use - dtap == 0 (0x0: ) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_UNUSED @@ -728,17 +728,17 @@ - a USSD request is serviced expecting USSD: Your extension is 42342 - MSC <--RAN_UTRAN_IU-- MS: NCSS:0x3b + MSC <--RAN_UTRAN_IU-- MS: GSM0480_MTYPE_REGISTER DREF MSISDN:42342: MSC conn use + dtap == 2 (0xa: dtap,cm_service) -DRLL Dispatching 04.08 message NCSS:0x3b (0xb:0x3b) -DMM MSISDN:42342: rx msg NCSS:0x3b: received_cm_service_request changes to false +DRLL Dispatching 04.08 message GSM0480_MTYPE_REGISTER (0xb:0x3b) +DMM MSISDN:42342: rx msg GSM0480_MTYPE_REGISTER: received_cm_service_request changes to false DREF MSISDN:42342: MSC conn use - cm_service == 1 (0x2: dtap) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING DMM USSD: Own number requested DMM MSISDN:42342: MSISDN = 42342 DMSC msc_tx 43 bytes to MSISDN:42342 via RAN_UTRAN_IU -- DTAP --RAN_UTRAN_IU--> MS: NCSS:0x2a: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d +- DTAP --RAN_UTRAN_IU--> MS: GSM0480_MTYPE_RELEASE_COMPLETE: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d - DTAP matches expected message DREF MSISDN:42342: MSC conn use - dtap == 0 (0x0: ) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_UNUSED @@ -863,17 +863,17 @@ - a USSD request is serviced expecting USSD: Your extension is 42342 - MSC <--RAN_UTRAN_IU-- MS: NCSS:0x3b + MSC <--RAN_UTRAN_IU-- MS: GSM0480_MTYPE_REGISTER DREF MSISDN:42342: MSC conn use + dtap == 2 (0xa: dtap,cm_service) -DRLL Dispatching 04.08 message NCSS:0x3b (0xb:0x3b) -DMM MSISDN:42342: rx msg NCSS:0x3b: received_cm_service_request changes to false +DRLL Dispatching 04.08 message GSM0480_MTYPE_REGISTER (0xb:0x3b) +DMM MSISDN:42342: rx msg GSM0480_MTYPE_REGISTER: received_cm_service_request changes to false DREF MSISDN:42342: MSC conn use - cm_service == 1 (0x2: dtap) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING DMM USSD: Own number requested DMM MSISDN:42342: MSISDN = 42342 DMSC msc_tx 43 bytes to MSISDN:42342 via RAN_UTRAN_IU -- DTAP --RAN_UTRAN_IU--> MS: NCSS:0x2a: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d +- DTAP --RAN_UTRAN_IU--> MS: GSM0480_MTYPE_RELEASE_COMPLETE: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d - DTAP matches expected message DREF MSISDN:42342: MSC conn use - dtap == 0 (0x0: ) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_UNUSED @@ -1188,17 +1188,17 @@ - a USSD request is serviced expecting USSD: Your extension is 42342 - MSC <--RAN_GERAN_A-- MS: NCSS:0x3b + MSC <--RAN_GERAN_A-- MS: GSM0480_MTYPE_REGISTER DREF MSISDN:42342: MSC conn use + dtap == 2 (0xa: dtap,cm_service) -DRLL Dispatching 04.08 message NCSS:0x3b (0xb:0x3b) -DMM MSISDN:42342: rx msg NCSS:0x3b: received_cm_service_request changes to false +DRLL Dispatching 04.08 message GSM0480_MTYPE_REGISTER (0xb:0x3b) +DMM MSISDN:42342: rx msg GSM0480_MTYPE_REGISTER: received_cm_service_request changes to false DREF MSISDN:42342: MSC conn use - cm_service == 1 (0x2: dtap) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING DMM USSD: Own number requested DMM MSISDN:42342: MSISDN = 42342 DMSC msc_tx 43 bytes to MSISDN:42342 via RAN_GERAN_A -- DTAP --RAN_GERAN_A--> MS: NCSS:0x2a: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d +- DTAP --RAN_GERAN_A--> MS: GSM0480_MTYPE_RELEASE_COMPLETE: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d - DTAP matches expected message DREF MSISDN:42342: MSC conn use - dtap == 0 (0x0: ) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_UNUSED @@ -1296,17 +1296,17 @@ - a USSD request is serviced expecting USSD: Your extension is 42342 - MSC <--RAN_GERAN_A-- MS: NCSS:0x3b + MSC <--RAN_GERAN_A-- MS: GSM0480_MTYPE_REGISTER DREF MSISDN:42342: MSC conn use + dtap == 2 (0xa: dtap,cm_service) -DRLL Dispatching 04.08 message NCSS:0x3b (0xb:0x3b) -DMM MSISDN:42342: rx msg NCSS:0x3b: received_cm_service_request changes to false +DRLL Dispatching 04.08 message GSM0480_MTYPE_REGISTER (0xb:0x3b) +DMM MSISDN:42342: rx msg GSM0480_MTYPE_REGISTER: received_cm_service_request changes to false DREF MSISDN:42342: MSC conn use - cm_service == 1 (0x2: dtap) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING DMM USSD: Own number requested DMM MSISDN:42342: MSISDN = 42342 DMSC msc_tx 43 bytes to MSISDN:42342 via RAN_GERAN_A -- DTAP --RAN_GERAN_A--> MS: NCSS:0x2a: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d +- DTAP --RAN_GERAN_A--> MS: GSM0480_MTYPE_RELEASE_COMPLETE: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d - DTAP matches expected message DREF MSISDN:42342: MSC conn use - dtap == 0 (0x0: ) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_UNUSED @@ -1404,17 +1404,17 @@ - a USSD request is serviced expecting USSD: Your extension is 42342 - MSC <--RAN_GERAN_A-- MS: NCSS:0x3b + MSC <--RAN_GERAN_A-- MS: GSM0480_MTYPE_REGISTER DREF MSISDN:42342: MSC conn use + dtap == 2 (0xa: dtap,cm_service) -DRLL Dispatching 04.08 message NCSS:0x3b (0xb:0x3b) -DMM MSISDN:42342: rx msg NCSS:0x3b: received_cm_service_request changes to false +DRLL Dispatching 04.08 message GSM0480_MTYPE_REGISTER (0xb:0x3b) +DMM MSISDN:42342: rx msg GSM0480_MTYPE_REGISTER: received_cm_service_request changes to false DREF MSISDN:42342: MSC conn use - cm_service == 1 (0x2: dtap) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING DMM USSD: Own number requested DMM MSISDN:42342: MSISDN = 42342 DMSC msc_tx 43 bytes to MSISDN:42342 via RAN_GERAN_A -- DTAP --RAN_GERAN_A--> MS: NCSS:0x2a: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d +- DTAP --RAN_GERAN_A--> MS: GSM0480_MTYPE_RELEASE_COMPLETE: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d - DTAP matches expected message DREF MSISDN:42342: MSC conn use - dtap == 0 (0x0: ) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_UNUSED @@ -1754,17 +1754,17 @@ - a USSD request is serviced expecting USSD: Your extension is 42342 - MSC <--RAN_UTRAN_IU-- MS: NCSS:0x3b + MSC <--RAN_UTRAN_IU-- MS: GSM0480_MTYPE_REGISTER DREF MSISDN:42342: MSC conn use + dtap == 2 (0xa: dtap,cm_service) -DRLL Dispatching 04.08 message NCSS:0x3b (0xb:0x3b) -DMM MSISDN:42342: rx msg NCSS:0x3b: received_cm_service_request changes to false +DRLL Dispatching 04.08 message GSM0480_MTYPE_REGISTER (0xb:0x3b) +DMM MSISDN:42342: rx msg GSM0480_MTYPE_REGISTER: received_cm_service_request changes to false DREF MSISDN:42342: MSC conn use - cm_service == 1 (0x2: dtap) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING DMM USSD: Own number requested DMM MSISDN:42342: MSISDN = 42342 DMSC msc_tx 43 bytes to MSISDN:42342 via RAN_UTRAN_IU -- DTAP --RAN_UTRAN_IU--> MS: NCSS:0x2a: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d +- DTAP --RAN_UTRAN_IU--> MS: GSM0480_MTYPE_RELEASE_COMPLETE: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d - DTAP matches expected message DREF MSISDN:42342: MSC conn use - dtap == 0 (0x0: ) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_UNUSED @@ -1875,17 +1875,17 @@ - a USSD request is serviced expecting USSD: Your extension is 42342 - MSC <--RAN_UTRAN_IU-- MS: NCSS:0x3b + MSC <--RAN_UTRAN_IU-- MS: GSM0480_MTYPE_REGISTER DREF MSISDN:42342: MSC conn use + dtap == 2 (0xa: dtap,cm_service) -DRLL Dispatching 04.08 message NCSS:0x3b (0xb:0x3b) -DMM MSISDN:42342: rx msg NCSS:0x3b: received_cm_service_request changes to false +DRLL Dispatching 04.08 message GSM0480_MTYPE_REGISTER (0xb:0x3b) +DMM MSISDN:42342: rx msg GSM0480_MTYPE_REGISTER: received_cm_service_request changes to false DREF MSISDN:42342: MSC conn use - cm_service == 1 (0x2: dtap) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING DMM USSD: Own number requested DMM MSISDN:42342: MSISDN = 42342 DMSC msc_tx 43 bytes to MSISDN:42342 via RAN_UTRAN_IU -- DTAP --RAN_UTRAN_IU--> MS: NCSS:0x2a: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d +- DTAP --RAN_UTRAN_IU--> MS: GSM0480_MTYPE_RELEASE_COMPLETE: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d - DTAP matches expected message DREF MSISDN:42342: MSC conn use - dtap == 0 (0x0: ) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_UNUSED @@ -1996,17 +1996,17 @@ - a USSD request is serviced expecting USSD: Your extension is 42342 - MSC <--RAN_UTRAN_IU-- MS: NCSS:0x3b + MSC <--RAN_UTRAN_IU-- MS: GSM0480_MTYPE_REGISTER DREF MSISDN:42342: MSC conn use + dtap == 2 (0xa: dtap,cm_service) -DRLL Dispatching 04.08 message NCSS:0x3b (0xb:0x3b) -DMM MSISDN:42342: rx msg NCSS:0x3b: received_cm_service_request changes to false +DRLL Dispatching 04.08 message GSM0480_MTYPE_REGISTER (0xb:0x3b) +DMM MSISDN:42342: rx msg GSM0480_MTYPE_REGISTER: received_cm_service_request changes to false DREF MSISDN:42342: MSC conn use - cm_service == 1 (0x2: dtap) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING DMM USSD: Own number requested DMM MSISDN:42342: MSISDN = 42342 DMSC msc_tx 43 bytes to MSISDN:42342 via RAN_UTRAN_IU -- DTAP --RAN_UTRAN_IU--> MS: NCSS:0x2a: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d +- DTAP --RAN_UTRAN_IU--> MS: GSM0480_MTYPE_RELEASE_COMPLETE: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d - DTAP matches expected message DREF MSISDN:42342: MSC conn use - dtap == 0 (0x0: ) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_UNUSED @@ -2335,17 +2335,17 @@ - a USSD request is serviced expecting USSD: Your extension is 42342 - MSC <--RAN_GERAN_A-- MS: NCSS:0x3b + MSC <--RAN_GERAN_A-- MS: GSM0480_MTYPE_REGISTER DREF MSISDN:42342: MSC conn use + dtap == 2 (0xa: dtap,cm_service) -DRLL Dispatching 04.08 message NCSS:0x3b (0xb:0x3b) -DMM MSISDN:42342: rx msg NCSS:0x3b: received_cm_service_request changes to false +DRLL Dispatching 04.08 message GSM0480_MTYPE_REGISTER (0xb:0x3b) +DMM MSISDN:42342: rx msg GSM0480_MTYPE_REGISTER: received_cm_service_request changes to false DREF MSISDN:42342: MSC conn use - cm_service == 1 (0x2: dtap) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING DMM USSD: Own number requested DMM MSISDN:42342: MSISDN = 42342 DMSC msc_tx 43 bytes to MSISDN:42342 via RAN_GERAN_A -- DTAP --RAN_GERAN_A--> MS: NCSS:0x2a: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d +- DTAP --RAN_GERAN_A--> MS: GSM0480_MTYPE_RELEASE_COMPLETE: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d - DTAP matches expected message DREF MSISDN:42342: MSC conn use - dtap == 0 (0x0: ) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_UNUSED @@ -2699,17 +2699,17 @@ - a USSD request is serviced expecting USSD: Your extension is 42342 - MSC <--RAN_UTRAN_IU-- MS: NCSS:0x3b + MSC <--RAN_UTRAN_IU-- MS: GSM0480_MTYPE_REGISTER DREF MSISDN:42342: MSC conn use + dtap == 2 (0xa: dtap,cm_service) -DRLL Dispatching 04.08 message NCSS:0x3b (0xb:0x3b) -DMM MSISDN:42342: rx msg NCSS:0x3b: received_cm_service_request changes to false +DRLL Dispatching 04.08 message GSM0480_MTYPE_REGISTER (0xb:0x3b) +DMM MSISDN:42342: rx msg GSM0480_MTYPE_REGISTER: received_cm_service_request changes to false DREF MSISDN:42342: MSC conn use - cm_service == 1 (0x2: dtap) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING DMM USSD: Own number requested DMM MSISDN:42342: MSISDN = 42342 DMSC msc_tx 43 bytes to MSISDN:42342 via RAN_UTRAN_IU -- DTAP --RAN_UTRAN_IU--> MS: NCSS:0x2a: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d +- DTAP --RAN_UTRAN_IU--> MS: GSM0480_MTYPE_RELEASE_COMPLETE: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d - DTAP matches expected message DREF MSISDN:42342: MSC conn use - dtap == 0 (0x0: ) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_UNUSED 7. testsuite.at:47: 7. msc_vlr_test_authen_reuse (testsuite.at:47): FAILED (testsuite.at:51) Build step 'Execute shell' marked build as failure [WARNINGS]Skipping publisher since build result is FAILURE From gerrit-no-reply at lists.osmocom.org Tue Apr 17 12:31:50 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Tue, 17 Apr 2018 12:31:50 +0000 Subject: [PATCH] osmo-ggsn[master]: use osmo_init_logging2 Message-ID: Review at https://gerrit.osmocom.org/7852 use osmo_init_logging2 Change-Id: Ic38fff17cc985238b91999c8acdd92d22fd28c72 --- M ggsn/ggsn.c M sgsnemu/sgsnemu.c M tests/gtp/gtpie_test.c M tests/lib/in46a_test.c M tests/lib/ippool_test.c 5 files changed, 18 insertions(+), 5 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-ggsn refs/changes/52/7852/1 diff --git a/ggsn/ggsn.c b/ggsn/ggsn.c index df071d2..cb11c49 100644 --- a/ggsn/ggsn.c +++ b/ggsn/ggsn.c @@ -1073,7 +1073,7 @@ signal(SIGUSR2, &signal_handler); osmo_init_ignore_signals(); - osmo_init_logging(&log_info); + osmo_init_logging2(tall_ggsn_ctx, &log_info); osmo_stats_init(tall_ggsn_ctx); vty_init(&g_vty_info); diff --git a/sgsnemu/sgsnemu.c b/sgsnemu/sgsnemu.c index 804b542..99f56da 100644 --- a/sgsnemu/sgsnemu.c +++ b/sgsnemu/sgsnemu.c @@ -20,6 +20,7 @@ #endif #include +#include #include #include @@ -79,6 +80,7 @@ struct tun_t *tun = NULL; /* TUN instance */ int maxfd = 0; /* For select() */ int echoversion = 1; /* First try this version */ +void *tall_sgsnemu_ctx; /* root talloc ctx */ /* Struct with local versions of gengetopt options */ struct { @@ -1540,7 +1542,9 @@ signal(SIGHUP, signal_handler); signal(SIGINT, signal_handler); - osmo_init_logging(&log_info); + tall_sgsnemu_ctx = talloc_named_const(NULL, 0, "sgsnemu"); + msgb_talloc_ctx_init(tall_sgsnemu_ctx, 0); + osmo_init_logging2(tall_sgsnemu_ctx, &log_info); /* Process options given in configuration file and command line */ if (process_options(argc, argv)) diff --git a/tests/gtp/gtpie_test.c b/tests/gtp/gtpie_test.c index e3bc2e0..95dd900 100644 --- a/tests/gtp/gtpie_test.c +++ b/tests/gtp/gtpie_test.c @@ -7,6 +7,7 @@ #include #include #include +#include #include #include "../../lib/syserr.h" @@ -108,7 +109,9 @@ int main(int argc, char **argv) { - osmo_init_logging(&log_info); + void *tall_ctx = talloc_named_const(NULL, 1, "Root context"); + msgb_talloc_ctx_init(tall_ctx, 0); + osmo_init_logging2(tall_ctx, &log_info); log_set_use_color(osmo_stderr_target, 0); log_set_print_filename(osmo_stderr_target, 0); diff --git a/tests/lib/in46a_test.c b/tests/lib/in46a_test.c index b22da16..407ac5d 100644 --- a/tests/lib/in46a_test.c +++ b/tests/lib/in46a_test.c @@ -10,6 +10,7 @@ #include #include #include +#include #include #include "../../lib/in46_addr.h" @@ -426,7 +427,9 @@ int main(int argc, char **argv) { - osmo_init_logging(&log_info); + void *tall_ctx = talloc_named_const(NULL, 1, "Root context"); + msgb_talloc_ctx_init(tall_ctx, 0); + osmo_init_logging2(tall_ctx, &log_info); log_set_use_color(osmo_stderr_target, 0); log_set_print_filename(osmo_stderr_target, 0); diff --git a/tests/lib/ippool_test.c b/tests/lib/ippool_test.c index 8d3f46c..6155ab8 100644 --- a/tests/lib/ippool_test.c +++ b/tests/lib/ippool_test.c @@ -7,6 +7,7 @@ #include #include #include +#include #include "../../lib/in46_addr.h" #include "../../lib/ippool.h" @@ -126,7 +127,9 @@ int main(int argc, char **argv) { - osmo_init_logging(&log_info); + void *tall_ctx = talloc_named_const(NULL, 1, "Root context"); + msgb_talloc_ctx_init(tall_ctx, 0); + osmo_init_logging2(tall_ctx, &log_info); log_set_use_color(osmo_stderr_target, 0); log_set_print_filename(osmo_stderr_target, 0); -- To view, visit https://gerrit.osmocom.org/7852 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Ic38fff17cc985238b91999c8acdd92d22fd28c72 Gerrit-PatchSet: 1 Gerrit-Project: osmo-ggsn Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol From jenkins at lists.osmocom.org Tue Apr 17 12:32:50 2018 From: jenkins at lists.osmocom.org (jenkins at lists.osmocom.org) Date: Tue, 17 Apr 2018 12:32:50 +0000 (UTC) Subject: =?UTF-8?Q?Build_failed_in_Jenkins:_master-osmo-msc_=C2=BB_--enable-?= =?UTF-8?Q?iu,a2=3Ddefault,a3=3Ddefault,osmocom-master-debian9_#2876?= In-Reply-To: <387783903.413.1523968151432.JavaMail.jenkins@jenkins.osmocom.org> References: <387783903.413.1523968151432.JavaMail.jenkins@jenkins.osmocom.org> Message-ID: <1876208310.415.1523968371010.JavaMail.jenkins@jenkins.osmocom.org> See ------------------------------------------ [...truncated 1.16 MB...] -DRLL Dispatching 04.08 message NCSS:0x3b (0xb:0x3b) -DMM MSISDN:42342: rx msg NCSS:0x3b: received_cm_service_request changes to false +DRLL Dispatching 04.08 message GSM0480_MTYPE_REGISTER (0xb:0x3b) +DMM MSISDN:42342: rx msg GSM0480_MTYPE_REGISTER: received_cm_service_request changes to false DREF MSISDN:42342: MSC conn use - cm_service == 1 (0x2: dtap) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING DMM USSD: Own number requested DMM MSISDN:42342: MSISDN = 42342 DMSC msc_tx 43 bytes to MSISDN:42342 via RAN_GERAN_A -- DTAP --RAN_GERAN_A--> MS: NCSS:0x2a: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d +- DTAP --RAN_GERAN_A--> MS: GSM0480_MTYPE_RELEASE_COMPLETE: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d - DTAP matches expected message DREF MSISDN:42342: MSC conn use - dtap == 0 (0x0: ) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_UNUSED @@ -1296,17 +1296,17 @@ - a USSD request is serviced expecting USSD: Your extension is 42342 - MSC <--RAN_GERAN_A-- MS: NCSS:0x3b + MSC <--RAN_GERAN_A-- MS: GSM0480_MTYPE_REGISTER DREF MSISDN:42342: MSC conn use + dtap == 2 (0xa: dtap,cm_service) -DRLL Dispatching 04.08 message NCSS:0x3b (0xb:0x3b) -DMM MSISDN:42342: rx msg NCSS:0x3b: received_cm_service_request changes to false +DRLL Dispatching 04.08 message GSM0480_MTYPE_REGISTER (0xb:0x3b) +DMM MSISDN:42342: rx msg GSM0480_MTYPE_REGISTER: received_cm_service_request changes to false DREF MSISDN:42342: MSC conn use - cm_service == 1 (0x2: dtap) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING DMM USSD: Own number requested DMM MSISDN:42342: MSISDN = 42342 DMSC msc_tx 43 bytes to MSISDN:42342 via RAN_GERAN_A -- DTAP --RAN_GERAN_A--> MS: NCSS:0x2a: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d +- DTAP --RAN_GERAN_A--> MS: GSM0480_MTYPE_RELEASE_COMPLETE: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d - DTAP matches expected message DREF MSISDN:42342: MSC conn use - dtap == 0 (0x0: ) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_UNUSED @@ -1404,17 +1404,17 @@ - a USSD request is serviced expecting USSD: Your extension is 42342 - MSC <--RAN_GERAN_A-- MS: NCSS:0x3b + MSC <--RAN_GERAN_A-- MS: GSM0480_MTYPE_REGISTER DREF MSISDN:42342: MSC conn use + dtap == 2 (0xa: dtap,cm_service) -DRLL Dispatching 04.08 message NCSS:0x3b (0xb:0x3b) -DMM MSISDN:42342: rx msg NCSS:0x3b: received_cm_service_request changes to false +DRLL Dispatching 04.08 message GSM0480_MTYPE_REGISTER (0xb:0x3b) +DMM MSISDN:42342: rx msg GSM0480_MTYPE_REGISTER: received_cm_service_request changes to false DREF MSISDN:42342: MSC conn use - cm_service == 1 (0x2: dtap) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING DMM USSD: Own number requested DMM MSISDN:42342: MSISDN = 42342 DMSC msc_tx 43 bytes to MSISDN:42342 via RAN_GERAN_A -- DTAP --RAN_GERAN_A--> MS: NCSS:0x2a: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d +- DTAP --RAN_GERAN_A--> MS: GSM0480_MTYPE_RELEASE_COMPLETE: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d - DTAP matches expected message DREF MSISDN:42342: MSC conn use - dtap == 0 (0x0: ) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_UNUSED @@ -1754,17 +1754,17 @@ - a USSD request is serviced expecting USSD: Your extension is 42342 - MSC <--RAN_UTRAN_IU-- MS: NCSS:0x3b + MSC <--RAN_UTRAN_IU-- MS: GSM0480_MTYPE_REGISTER DREF MSISDN:42342: MSC conn use + dtap == 2 (0xa: dtap,cm_service) -DRLL Dispatching 04.08 message NCSS:0x3b (0xb:0x3b) -DMM MSISDN:42342: rx msg NCSS:0x3b: received_cm_service_request changes to false +DRLL Dispatching 04.08 message GSM0480_MTYPE_REGISTER (0xb:0x3b) +DMM MSISDN:42342: rx msg GSM0480_MTYPE_REGISTER: received_cm_service_request changes to false DREF MSISDN:42342: MSC conn use - cm_service == 1 (0x2: dtap) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING DMM USSD: Own number requested DMM MSISDN:42342: MSISDN = 42342 DMSC msc_tx 43 bytes to MSISDN:42342 via RAN_UTRAN_IU -- DTAP --RAN_UTRAN_IU--> MS: NCSS:0x2a: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d +- DTAP --RAN_UTRAN_IU--> MS: GSM0480_MTYPE_RELEASE_COMPLETE: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d - DTAP matches expected message DREF MSISDN:42342: MSC conn use - dtap == 0 (0x0: ) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_UNUSED @@ -1875,17 +1875,17 @@ - a USSD request is serviced expecting USSD: Your extension is 42342 - MSC <--RAN_UTRAN_IU-- MS: NCSS:0x3b + MSC <--RAN_UTRAN_IU-- MS: GSM0480_MTYPE_REGISTER DREF MSISDN:42342: MSC conn use + dtap == 2 (0xa: dtap,cm_service) -DRLL Dispatching 04.08 message NCSS:0x3b (0xb:0x3b) -DMM MSISDN:42342: rx msg NCSS:0x3b: received_cm_service_request changes to false +DRLL Dispatching 04.08 message GSM0480_MTYPE_REGISTER (0xb:0x3b) +DMM MSISDN:42342: rx msg GSM0480_MTYPE_REGISTER: received_cm_service_request changes to false DREF MSISDN:42342: MSC conn use - cm_service == 1 (0x2: dtap) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING DMM USSD: Own number requested DMM MSISDN:42342: MSISDN = 42342 DMSC msc_tx 43 bytes to MSISDN:42342 via RAN_UTRAN_IU -- DTAP --RAN_UTRAN_IU--> MS: NCSS:0x2a: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d +- DTAP --RAN_UTRAN_IU--> MS: GSM0480_MTYPE_RELEASE_COMPLETE: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d - DTAP matches expected message DREF MSISDN:42342: MSC conn use - dtap == 0 (0x0: ) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_UNUSED @@ -1996,17 +1996,17 @@ - a USSD request is serviced expecting USSD: Your extension is 42342 - MSC <--RAN_UTRAN_IU-- MS: NCSS:0x3b + MSC <--RAN_UTRAN_IU-- MS: GSM0480_MTYPE_REGISTER DREF MSISDN:42342: MSC conn use + dtap == 2 (0xa: dtap,cm_service) -DRLL Dispatching 04.08 message NCSS:0x3b (0xb:0x3b) -DMM MSISDN:42342: rx msg NCSS:0x3b: received_cm_service_request changes to false +DRLL Dispatching 04.08 message GSM0480_MTYPE_REGISTER (0xb:0x3b) +DMM MSISDN:42342: rx msg GSM0480_MTYPE_REGISTER: received_cm_service_request changes to false DREF MSISDN:42342: MSC conn use - cm_service == 1 (0x2: dtap) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING DMM USSD: Own number requested DMM MSISDN:42342: MSISDN = 42342 DMSC msc_tx 43 bytes to MSISDN:42342 via RAN_UTRAN_IU -- DTAP --RAN_UTRAN_IU--> MS: NCSS:0x2a: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d +- DTAP --RAN_UTRAN_IU--> MS: GSM0480_MTYPE_RELEASE_COMPLETE: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d - DTAP matches expected message DREF MSISDN:42342: MSC conn use - dtap == 0 (0x0: ) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_UNUSED @@ -2335,17 +2335,17 @@ - a USSD request is serviced expecting USSD: Your extension is 42342 - MSC <--RAN_GERAN_A-- MS: NCSS:0x3b + MSC <--RAN_GERAN_A-- MS: GSM0480_MTYPE_REGISTER DREF MSISDN:42342: MSC conn use + dtap == 2 (0xa: dtap,cm_service) -DRLL Dispatching 04.08 message NCSS:0x3b (0xb:0x3b) -DMM MSISDN:42342: rx msg NCSS:0x3b: received_cm_service_request changes to false +DRLL Dispatching 04.08 message GSM0480_MTYPE_REGISTER (0xb:0x3b) +DMM MSISDN:42342: rx msg GSM0480_MTYPE_REGISTER: received_cm_service_request changes to false DREF MSISDN:42342: MSC conn use - cm_service == 1 (0x2: dtap) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING DMM USSD: Own number requested DMM MSISDN:42342: MSISDN = 42342 DMSC msc_tx 43 bytes to MSISDN:42342 via RAN_GERAN_A -- DTAP --RAN_GERAN_A--> MS: NCSS:0x2a: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d +- DTAP --RAN_GERAN_A--> MS: GSM0480_MTYPE_RELEASE_COMPLETE: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d - DTAP matches expected message DREF MSISDN:42342: MSC conn use - dtap == 0 (0x0: ) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_UNUSED @@ -2699,17 +2699,17 @@ - a USSD request is serviced expecting USSD: Your extension is 42342 - MSC <--RAN_UTRAN_IU-- MS: NCSS:0x3b + MSC <--RAN_UTRAN_IU-- MS: GSM0480_MTYPE_REGISTER DREF MSISDN:42342: MSC conn use + dtap == 2 (0xa: dtap,cm_service) -DRLL Dispatching 04.08 message NCSS:0x3b (0xb:0x3b) -DMM MSISDN:42342: rx msg NCSS:0x3b: received_cm_service_request changes to false +DRLL Dispatching 04.08 message GSM0480_MTYPE_REGISTER (0xb:0x3b) +DMM MSISDN:42342: rx msg GSM0480_MTYPE_REGISTER: received_cm_service_request changes to false DREF MSISDN:42342: MSC conn use - cm_service == 1 (0x2: dtap) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING DMM USSD: Own number requested DMM MSISDN:42342: MSISDN = 42342 DMSC msc_tx 43 bytes to MSISDN:42342 via RAN_UTRAN_IU -- DTAP --RAN_UTRAN_IU--> MS: NCSS:0x2a: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d +- DTAP --RAN_UTRAN_IU--> MS: GSM0480_MTYPE_RELEASE_COMPLETE: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d - DTAP matches expected message DREF MSISDN:42342: MSC conn use - dtap == 0 (0x0: ) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_UNUSED 7. testsuite.at:47: 7. msc_vlr_test_authen_reuse (testsuite.at:47): FAILED (testsuite.at:51) ======================== ./tests/testsuite.dir/05/testsuite.log # -*- compilation -*- 5. testsuite.at:33: testing msc_vlr_test_gsm_ciph ... ./testsuite.at:37: $abs_top_builddir/tests/msc_vlr/msc_vlr_test_gsm_ciph --- experr 2018-04-17 12:32:50.128271901 +0000 +++ /build/tests/testsuite.dir/at-groups/5/stderr 2018-04-17 12:32:50.148271753 +0000 @@ -278,17 +278,17 @@ - a USSD request is serviced expecting USSD: Your extension is 46071 - MSC <--RAN_GERAN_A-- MS: NCSS:0x3b + MSC <--RAN_GERAN_A-- MS: GSM0480_MTYPE_REGISTER DREF MSISDN:46071: MSC conn use + dtap == 2 (0xa: dtap,cm_service) -DRLL Dispatching 04.08 message NCSS:0x3b (0xb:0x3b) -DMM MSISDN:46071: rx msg NCSS:0x3b: received_cm_service_request changes to false +DRLL Dispatching 04.08 message GSM0480_MTYPE_REGISTER (0xb:0x3b) +DMM MSISDN:46071: rx msg GSM0480_MTYPE_REGISTER: received_cm_service_request changes to false DREF MSISDN:46071: MSC conn use - cm_service == 1 (0x2: dtap) DMM Subscr_Conn(CM_SERVICE_REQ:901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING DMM Subscr_Conn(CM_SERVICE_REQ:901700000004620){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING DMM USSD: Own number requested DMM MSISDN:46071: MSISDN = 46071 DMSC msc_tx 43 bytes to MSISDN:46071 via RAN_GERAN_A -- DTAP --RAN_GERAN_A--> MS: NCSS:0x2a: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d27310cd06bbc51a0d +- DTAP --RAN_GERAN_A--> MS: GSM0480_MTYPE_RELEASE_COMPLETE: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d27310cd06bbc51a0d - DTAP matches expected message DREF MSISDN:46071: MSC conn use - dtap == 0 (0x0: ) DMM Subscr_Conn(CM_SERVICE_REQ:901700000004620){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_UNUSED @@ -834,17 +834,17 @@ - a USSD request is serviced expecting USSD: Your extension is 46071 - MSC <--RAN_GERAN_A-- MS: NCSS:0x3b + MSC <--RAN_GERAN_A-- MS: GSM0480_MTYPE_REGISTER DREF MSISDN:46071: MSC conn use + dtap == 2 (0xa: dtap,cm_service) -DRLL Dispatching 04.08 message NCSS:0x3b (0xb:0x3b) -DMM MSISDN:46071: rx msg NCSS:0x3b: received_cm_service_request changes to false +DRLL Dispatching 04.08 message GSM0480_MTYPE_REGISTER (0xb:0x3b) +DMM MSISDN:46071: rx msg GSM0480_MTYPE_REGISTER: received_cm_service_request changes to false DREF MSISDN:46071: MSC conn use - cm_service == 1 (0x2: dtap) DMM Subscr_Conn(CM_SERVICE_REQ:50462976){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING DMM Subscr_Conn(CM_SERVICE_REQ:50462976){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING DMM USSD: Own number requested DMM MSISDN:46071: MSISDN = 46071 DMSC msc_tx 43 bytes to MSISDN:46071 via RAN_GERAN_A -- DTAP --RAN_GERAN_A--> MS: NCSS:0x2a: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d27310cd06bbc51a0d +- DTAP --RAN_GERAN_A--> MS: GSM0480_MTYPE_RELEASE_COMPLETE: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d27310cd06bbc51a0d - DTAP matches expected message DREF MSISDN:46071: MSC conn use - dtap == 0 (0x0: ) DMM Subscr_Conn(CM_SERVICE_REQ:50462976){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_UNUSED @@ -2076,17 +2076,17 @@ - a USSD request is serviced expecting USSD: Your extension is 42342 - MSC <--RAN_GERAN_A-- MS: NCSS:0x3b + MSC <--RAN_GERAN_A-- MS: GSM0480_MTYPE_REGISTER DREF MSISDN:42342: MSC conn use + dtap == 2 (0xa: dtap,cm_service) -DRLL Dispatching 04.08 message NCSS:0x3b (0xb:0x3b) -DMM MSISDN:42342: rx msg NCSS:0x3b: received_cm_service_request changes to false +DRLL Dispatching 04.08 message GSM0480_MTYPE_REGISTER (0xb:0x3b) +DMM MSISDN:42342: rx msg GSM0480_MTYPE_REGISTER: received_cm_service_request changes to false DREF MSISDN:42342: MSC conn use - cm_service == 1 (0x2: dtap) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING DMM USSD: Own number requested DMM MSISDN:42342: MSISDN = 42342 DMSC msc_tx 43 bytes to MSISDN:42342 via RAN_GERAN_A -- DTAP --RAN_GERAN_A--> MS: NCSS:0x2a: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d +- DTAP --RAN_GERAN_A--> MS: GSM0480_MTYPE_RELEASE_COMPLETE: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d - DTAP matches expected message DREF MSISDN:42342: MSC conn use - dtap == 0 (0x0: ) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_UNUSED 5. testsuite.at:33: 5. msc_vlr_test_gsm_ciph (testsuite.at:33): FAILED (testsuite.at:37) Build step 'Execute shell' marked build as failure [WARNINGS]Skipping publisher since build result is FAILURE From jenkins at lists.osmocom.org Tue Apr 17 12:34:14 2018 From: jenkins at lists.osmocom.org (jenkins at lists.osmocom.org) Date: Tue, 17 Apr 2018 12:34:14 +0000 (UTC) Subject: =?UTF-8?Q?Build_failed_in_Jenkins:_master-osmo-msc_=C2=BB_--enable-?= =?UTF-8?Q?iu,a2=3Ddefault,a3=3Ddefault,osmocom-master-debian9_#2877?= In-Reply-To: <1876208310.415.1523968371010.JavaMail.jenkins@jenkins.osmocom.org> References: <1876208310.415.1523968371010.JavaMail.jenkins@jenkins.osmocom.org> Message-ID: <1488542470.416.1523968454834.JavaMail.jenkins@jenkins.osmocom.org> See ------------------------------------------ [...truncated 1.07 MB...] +- DTAP --RAN_GERAN_A--> MS: GSM0480_MTYPE_RELEASE_COMPLETE: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d - DTAP matches expected message DREF MSISDN:42342: MSC conn use - dtap == 0 (0x0: ) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_UNUSED @@ -378,17 +378,17 @@ - a USSD request is serviced expecting USSD: Your extension is 42342 - MSC <--RAN_GERAN_A-- MS: NCSS:0x3b + MSC <--RAN_GERAN_A-- MS: GSM0480_MTYPE_REGISTER DREF MSISDN:42342: MSC conn use + dtap == 2 (0xa: dtap,cm_service) -DRLL Dispatching 04.08 message NCSS:0x3b (0xb:0x3b) -DMM MSISDN:42342: rx msg NCSS:0x3b: received_cm_service_request changes to false +DRLL Dispatching 04.08 message GSM0480_MTYPE_REGISTER (0xb:0x3b) +DMM MSISDN:42342: rx msg GSM0480_MTYPE_REGISTER: received_cm_service_request changes to false DREF MSISDN:42342: MSC conn use - cm_service == 1 (0x2: dtap) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING DMM USSD: Own number requested DMM MSISDN:42342: MSISDN = 42342 DMSC msc_tx 43 bytes to MSISDN:42342 via RAN_GERAN_A -- DTAP --RAN_GERAN_A--> MS: NCSS:0x2a: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d +- DTAP --RAN_GERAN_A--> MS: GSM0480_MTYPE_RELEASE_COMPLETE: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d - DTAP matches expected message DREF MSISDN:42342: MSC conn use - dtap == 0 (0x0: ) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_UNUSED @@ -728,17 +728,17 @@ - a USSD request is serviced expecting USSD: Your extension is 42342 - MSC <--RAN_UTRAN_IU-- MS: NCSS:0x3b + MSC <--RAN_UTRAN_IU-- MS: GSM0480_MTYPE_REGISTER DREF MSISDN:42342: MSC conn use + dtap == 2 (0xa: dtap,cm_service) -DRLL Dispatching 04.08 message NCSS:0x3b (0xb:0x3b) -DMM MSISDN:42342: rx msg NCSS:0x3b: received_cm_service_request changes to false +DRLL Dispatching 04.08 message GSM0480_MTYPE_REGISTER (0xb:0x3b) +DMM MSISDN:42342: rx msg GSM0480_MTYPE_REGISTER: received_cm_service_request changes to false DREF MSISDN:42342: MSC conn use - cm_service == 1 (0x2: dtap) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING DMM USSD: Own number requested DMM MSISDN:42342: MSISDN = 42342 DMSC msc_tx 43 bytes to MSISDN:42342 via RAN_UTRAN_IU -- DTAP --RAN_UTRAN_IU--> MS: NCSS:0x2a: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d +- DTAP --RAN_UTRAN_IU--> MS: GSM0480_MTYPE_RELEASE_COMPLETE: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d - DTAP matches expected message DREF MSISDN:42342: MSC conn use - dtap == 0 (0x0: ) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_UNUSED @@ -863,17 +863,17 @@ - a USSD request is serviced expecting USSD: Your extension is 42342 - MSC <--RAN_UTRAN_IU-- MS: NCSS:0x3b + MSC <--RAN_UTRAN_IU-- MS: GSM0480_MTYPE_REGISTER DREF MSISDN:42342: MSC conn use + dtap == 2 (0xa: dtap,cm_service) -DRLL Dispatching 04.08 message NCSS:0x3b (0xb:0x3b) -DMM MSISDN:42342: rx msg NCSS:0x3b: received_cm_service_request changes to false +DRLL Dispatching 04.08 message GSM0480_MTYPE_REGISTER (0xb:0x3b) +DMM MSISDN:42342: rx msg GSM0480_MTYPE_REGISTER: received_cm_service_request changes to false DREF MSISDN:42342: MSC conn use - cm_service == 1 (0x2: dtap) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING DMM USSD: Own number requested DMM MSISDN:42342: MSISDN = 42342 DMSC msc_tx 43 bytes to MSISDN:42342 via RAN_UTRAN_IU -- DTAP --RAN_UTRAN_IU--> MS: NCSS:0x2a: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d +- DTAP --RAN_UTRAN_IU--> MS: GSM0480_MTYPE_RELEASE_COMPLETE: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d - DTAP matches expected message DREF MSISDN:42342: MSC conn use - dtap == 0 (0x0: ) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_UNUSED @@ -1188,17 +1188,17 @@ - a USSD request is serviced expecting USSD: Your extension is 42342 - MSC <--RAN_GERAN_A-- MS: NCSS:0x3b + MSC <--RAN_GERAN_A-- MS: GSM0480_MTYPE_REGISTER DREF MSISDN:42342: MSC conn use + dtap == 2 (0xa: dtap,cm_service) -DRLL Dispatching 04.08 message NCSS:0x3b (0xb:0x3b) -DMM MSISDN:42342: rx msg NCSS:0x3b: received_cm_service_request changes to false +DRLL Dispatching 04.08 message GSM0480_MTYPE_REGISTER (0xb:0x3b) +DMM MSISDN:42342: rx msg GSM0480_MTYPE_REGISTER: received_cm_service_request changes to false DREF MSISDN:42342: MSC conn use - cm_service == 1 (0x2: dtap) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING DMM USSD: Own number requested DMM MSISDN:42342: MSISDN = 42342 DMSC msc_tx 43 bytes to MSISDN:42342 via RAN_GERAN_A -- DTAP --RAN_GERAN_A--> MS: NCSS:0x2a: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d +- DTAP --RAN_GERAN_A--> MS: GSM0480_MTYPE_RELEASE_COMPLETE: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d - DTAP matches expected message DREF MSISDN:42342: MSC conn use - dtap == 0 (0x0: ) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_UNUSED @@ -1296,17 +1296,17 @@ - a USSD request is serviced expecting USSD: Your extension is 42342 - MSC <--RAN_GERAN_A-- MS: NCSS:0x3b + MSC <--RAN_GERAN_A-- MS: GSM0480_MTYPE_REGISTER DREF MSISDN:42342: MSC conn use + dtap == 2 (0xa: dtap,cm_service) -DRLL Dispatching 04.08 message NCSS:0x3b (0xb:0x3b) -DMM MSISDN:42342: rx msg NCSS:0x3b: received_cm_service_request changes to false +DRLL Dispatching 04.08 message GSM0480_MTYPE_REGISTER (0xb:0x3b) +DMM MSISDN:42342: rx msg GSM0480_MTYPE_REGISTER: received_cm_service_request changes to false DREF MSISDN:42342: MSC conn use - cm_service == 1 (0x2: dtap) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING DMM USSD: Own number requested DMM MSISDN:42342: MSISDN = 42342 DMSC msc_tx 43 bytes to MSISDN:42342 via RAN_GERAN_A -- DTAP --RAN_GERAN_A--> MS: NCSS:0x2a: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d +- DTAP --RAN_GERAN_A--> MS: GSM0480_MTYPE_RELEASE_COMPLETE: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d - DTAP matches expected message DREF MSISDN:42342: MSC conn use - dtap == 0 (0x0: ) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_UNUSED @@ -1404,17 +1404,17 @@ - a USSD request is serviced expecting USSD: Your extension is 42342 - MSC <--RAN_GERAN_A-- MS: NCSS:0x3b + MSC <--RAN_GERAN_A-- MS: GSM0480_MTYPE_REGISTER DREF MSISDN:42342: MSC conn use + dtap == 2 (0xa: dtap,cm_service) -DRLL Dispatching 04.08 message NCSS:0x3b (0xb:0x3b) -DMM MSISDN:42342: rx msg NCSS:0x3b: received_cm_service_request changes to false +DRLL Dispatching 04.08 message GSM0480_MTYPE_REGISTER (0xb:0x3b) +DMM MSISDN:42342: rx msg GSM0480_MTYPE_REGISTER: received_cm_service_request changes to false DREF MSISDN:42342: MSC conn use - cm_service == 1 (0x2: dtap) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING DMM USSD: Own number requested DMM MSISDN:42342: MSISDN = 42342 DMSC msc_tx 43 bytes to MSISDN:42342 via RAN_GERAN_A -- DTAP --RAN_GERAN_A--> MS: NCSS:0x2a: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d +- DTAP --RAN_GERAN_A--> MS: GSM0480_MTYPE_RELEASE_COMPLETE: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d - DTAP matches expected message DREF MSISDN:42342: MSC conn use - dtap == 0 (0x0: ) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_UNUSED @@ -1754,17 +1754,17 @@ - a USSD request is serviced expecting USSD: Your extension is 42342 - MSC <--RAN_UTRAN_IU-- MS: NCSS:0x3b + MSC <--RAN_UTRAN_IU-- MS: GSM0480_MTYPE_REGISTER DREF MSISDN:42342: MSC conn use + dtap == 2 (0xa: dtap,cm_service) -DRLL Dispatching 04.08 message NCSS:0x3b (0xb:0x3b) -DMM MSISDN:42342: rx msg NCSS:0x3b: received_cm_service_request changes to false +DRLL Dispatching 04.08 message GSM0480_MTYPE_REGISTER (0xb:0x3b) +DMM MSISDN:42342: rx msg GSM0480_MTYPE_REGISTER: received_cm_service_request changes to false DREF MSISDN:42342: MSC conn use - cm_service == 1 (0x2: dtap) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING DMM USSD: Own number requested DMM MSISDN:42342: MSISDN = 42342 DMSC msc_tx 43 bytes to MSISDN:42342 via RAN_UTRAN_IU -- DTAP --RAN_UTRAN_IU--> MS: NCSS:0x2a: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d +- DTAP --RAN_UTRAN_IU--> MS: GSM0480_MTYPE_RELEASE_COMPLETE: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d - DTAP matches expected message DREF MSISDN:42342: MSC conn use - dtap == 0 (0x0: ) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_UNUSED @@ -1875,17 +1875,17 @@ - a USSD request is serviced expecting USSD: Your extension is 42342 - MSC <--RAN_UTRAN_IU-- MS: NCSS:0x3b + MSC <--RAN_UTRAN_IU-- MS: GSM0480_MTYPE_REGISTER DREF MSISDN:42342: MSC conn use + dtap == 2 (0xa: dtap,cm_service) -DRLL Dispatching 04.08 message NCSS:0x3b (0xb:0x3b) -DMM MSISDN:42342: rx msg NCSS:0x3b: received_cm_service_request changes to false +DRLL Dispatching 04.08 message GSM0480_MTYPE_REGISTER (0xb:0x3b) +DMM MSISDN:42342: rx msg GSM0480_MTYPE_REGISTER: received_cm_service_request changes to false DREF MSISDN:42342: MSC conn use - cm_service == 1 (0x2: dtap) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING DMM USSD: Own number requested DMM MSISDN:42342: MSISDN = 42342 DMSC msc_tx 43 bytes to MSISDN:42342 via RAN_UTRAN_IU -- DTAP --RAN_UTRAN_IU--> MS: NCSS:0x2a: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d +- DTAP --RAN_UTRAN_IU--> MS: GSM0480_MTYPE_RELEASE_COMPLETE: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d - DTAP matches expected message DREF MSISDN:42342: MSC conn use - dtap == 0 (0x0: ) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_UNUSED @@ -1996,17 +1996,17 @@ - a USSD request is serviced expecting USSD: Your extension is 42342 - MSC <--RAN_UTRAN_IU-- MS: NCSS:0x3b + MSC <--RAN_UTRAN_IU-- MS: GSM0480_MTYPE_REGISTER DREF MSISDN:42342: MSC conn use + dtap == 2 (0xa: dtap,cm_service) -DRLL Dispatching 04.08 message NCSS:0x3b (0xb:0x3b) -DMM MSISDN:42342: rx msg NCSS:0x3b: received_cm_service_request changes to false +DRLL Dispatching 04.08 message GSM0480_MTYPE_REGISTER (0xb:0x3b) +DMM MSISDN:42342: rx msg GSM0480_MTYPE_REGISTER: received_cm_service_request changes to false DREF MSISDN:42342: MSC conn use - cm_service == 1 (0x2: dtap) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING DMM USSD: Own number requested DMM MSISDN:42342: MSISDN = 42342 DMSC msc_tx 43 bytes to MSISDN:42342 via RAN_UTRAN_IU -- DTAP --RAN_UTRAN_IU--> MS: NCSS:0x2a: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d +- DTAP --RAN_UTRAN_IU--> MS: GSM0480_MTYPE_RELEASE_COMPLETE: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d - DTAP matches expected message DREF MSISDN:42342: MSC conn use - dtap == 0 (0x0: ) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_UNUSED @@ -2335,17 +2335,17 @@ - a USSD request is serviced expecting USSD: Your extension is 42342 - MSC <--RAN_GERAN_A-- MS: NCSS:0x3b + MSC <--RAN_GERAN_A-- MS: GSM0480_MTYPE_REGISTER DREF MSISDN:42342: MSC conn use + dtap == 2 (0xa: dtap,cm_service) -DRLL Dispatching 04.08 message NCSS:0x3b (0xb:0x3b) -DMM MSISDN:42342: rx msg NCSS:0x3b: received_cm_service_request changes to false +DRLL Dispatching 04.08 message GSM0480_MTYPE_REGISTER (0xb:0x3b) +DMM MSISDN:42342: rx msg GSM0480_MTYPE_REGISTER: received_cm_service_request changes to false DREF MSISDN:42342: MSC conn use - cm_service == 1 (0x2: dtap) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING DMM USSD: Own number requested DMM MSISDN:42342: MSISDN = 42342 DMSC msc_tx 43 bytes to MSISDN:42342 via RAN_GERAN_A -- DTAP --RAN_GERAN_A--> MS: NCSS:0x2a: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d +- DTAP --RAN_GERAN_A--> MS: GSM0480_MTYPE_RELEASE_COMPLETE: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d - DTAP matches expected message DREF MSISDN:42342: MSC conn use - dtap == 0 (0x0: ) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_UNUSED @@ -2699,17 +2699,17 @@ - a USSD request is serviced expecting USSD: Your extension is 42342 - MSC <--RAN_UTRAN_IU-- MS: NCSS:0x3b + MSC <--RAN_UTRAN_IU-- MS: GSM0480_MTYPE_REGISTER DREF MSISDN:42342: MSC conn use + dtap == 2 (0xa: dtap,cm_service) -DRLL Dispatching 04.08 message NCSS:0x3b (0xb:0x3b) -DMM MSISDN:42342: rx msg NCSS:0x3b: received_cm_service_request changes to false +DRLL Dispatching 04.08 message GSM0480_MTYPE_REGISTER (0xb:0x3b) +DMM MSISDN:42342: rx msg GSM0480_MTYPE_REGISTER: received_cm_service_request changes to false DREF MSISDN:42342: MSC conn use - cm_service == 1 (0x2: dtap) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING DMM USSD: Own number requested DMM MSISDN:42342: MSISDN = 42342 DMSC msc_tx 43 bytes to MSISDN:42342 via RAN_UTRAN_IU -- DTAP --RAN_UTRAN_IU--> MS: NCSS:0x2a: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d +- DTAP --RAN_UTRAN_IU--> MS: GSM0480_MTYPE_RELEASE_COMPLETE: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d - DTAP matches expected message DREF MSISDN:42342: MSC conn use - dtap == 0 (0x0: ) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_UNUSED 7. testsuite.at:47: 7. msc_vlr_test_authen_reuse (testsuite.at:47): FAILED (testsuite.at:51) Build step 'Execute shell' marked build as failure [WARNINGS]Skipping publisher since build result is FAILURE From jenkins at lists.osmocom.org Tue Apr 17 12:34:49 2018 From: jenkins at lists.osmocom.org (jenkins at lists.osmocom.org) Date: Tue, 17 Apr 2018 12:34:49 +0000 (UTC) Subject: =?UTF-8?Q?Build_failed_in_Jenkins:_master-osmo-msc_=C2=BB_--disable-?= =?UTF-8?Q?iu,a2=3Ddefault,a3=3Ddefault,osmocom-master-debian9_#2877?= In-Reply-To: <2064939326.414.1523968293442.JavaMail.jenkins@jenkins.osmocom.org> References: <2064939326.414.1523968293442.JavaMail.jenkins@jenkins.osmocom.org> Message-ID: <895795041.417.1523968489564.JavaMail.jenkins@jenkins.osmocom.org> See ------------------------------------------ [...truncated 775.74 KB...] -DRLL Dispatching 04.08 message NCSS:0x3b (0xb:0x3b) -DMM MSISDN:42342: rx msg NCSS:0x3b: received_cm_service_request changes to false +DRLL Dispatching 04.08 message GSM0480_MTYPE_REGISTER (0xb:0x3b) +DMM MSISDN:42342: rx msg GSM0480_MTYPE_REGISTER: received_cm_service_request changes to false DREF MSISDN:42342: MSC conn use - cm_service == 1 (0x2: dtap) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING DMM USSD: Own number requested DMM MSISDN:42342: MSISDN = 42342 DMSC msc_tx 43 bytes to MSISDN:42342 via RAN_GERAN_A -- DTAP --RAN_GERAN_A--> MS: NCSS:0x2a: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d +- DTAP --RAN_GERAN_A--> MS: GSM0480_MTYPE_RELEASE_COMPLETE: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d - DTAP matches expected message DREF MSISDN:42342: MSC conn use - dtap == 0 (0x0: ) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_UNUSED @@ -766,17 +766,17 @@ - a USSD request is serviced expecting USSD: Your extension is 42342 - MSC <--RAN_UTRAN_IU-- MS: NCSS:0x3b + MSC <--RAN_UTRAN_IU-- MS: GSM0480_MTYPE_REGISTER DREF MSISDN:42342: MSC conn use + dtap == 2 (0xa: dtap,cm_service) -DRLL Dispatching 04.08 message NCSS:0x3b (0xb:0x3b) -DMM MSISDN:42342: rx msg NCSS:0x3b: received_cm_service_request changes to false +DRLL Dispatching 04.08 message GSM0480_MTYPE_REGISTER (0xb:0x3b) +DMM MSISDN:42342: rx msg GSM0480_MTYPE_REGISTER: received_cm_service_request changes to false DREF MSISDN:42342: MSC conn use - cm_service == 1 (0x2: dtap) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING DMM USSD: Own number requested DMM MSISDN:42342: MSISDN = 42342 DMSC msc_tx 43 bytes to MSISDN:42342 via RAN_UTRAN_IU -- DTAP --RAN_UTRAN_IU--> MS: NCSS:0x2a: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d +- DTAP --RAN_UTRAN_IU--> MS: GSM0480_MTYPE_RELEASE_COMPLETE: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d - DTAP matches expected message DREF MSISDN:42342: MSC conn use - dtap == 0 (0x0: ) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_UNUSED 6. testsuite.at:40: 6. msc_vlr_test_umts_authen (testsuite.at:40): FAILED (testsuite.at:44) ======================== ./tests/testsuite.dir/04/testsuite.log # -*- compilation -*- 4. testsuite.at:26: testing msc_vlr_test_gsm_authen ... ./testsuite.at:30: $abs_top_builddir/tests/msc_vlr/msc_vlr_test_gsm_authen --- experr 2018-04-17 12:34:47.658873002 +0000 +++ /build/tests/testsuite.dir/at-groups/4/stderr 2018-04-17 12:34:47.674872775 +0000 @@ -249,17 +249,17 @@ - a USSD request is serviced expecting USSD: Your extension is 46071 - MSC <--RAN_GERAN_A-- MS: NCSS:0x3b + MSC <--RAN_GERAN_A-- MS: GSM0480_MTYPE_REGISTER DREF MSISDN:46071: MSC conn use + dtap == 2 (0xa: dtap,cm_service) -DRLL Dispatching 04.08 message NCSS:0x3b (0xb:0x3b) -DMM MSISDN:46071: rx msg NCSS:0x3b: received_cm_service_request changes to false +DRLL Dispatching 04.08 message GSM0480_MTYPE_REGISTER (0xb:0x3b) +DMM MSISDN:46071: rx msg GSM0480_MTYPE_REGISTER: received_cm_service_request changes to false DREF MSISDN:46071: MSC conn use - cm_service == 1 (0x2: dtap) DMM Subscr_Conn(CM_SERVICE_REQ:901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING DMM Subscr_Conn(CM_SERVICE_REQ:901700000004620){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING DMM USSD: Own number requested DMM MSISDN:46071: MSISDN = 46071 DMSC msc_tx 43 bytes to MSISDN:46071 via RAN_GERAN_A -- DTAP --RAN_GERAN_A--> MS: NCSS:0x2a: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d27310cd06bbc51a0d +- DTAP --RAN_GERAN_A--> MS: GSM0480_MTYPE_RELEASE_COMPLETE: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d27310cd06bbc51a0d - DTAP matches expected message DREF MSISDN:46071: MSC conn use - dtap == 0 (0x0: ) DMM Subscr_Conn(CM_SERVICE_REQ:901700000004620){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_UNUSED @@ -750,17 +750,17 @@ - a USSD request is serviced expecting USSD: Your extension is 46071 - MSC <--RAN_GERAN_A-- MS: NCSS:0x3b + MSC <--RAN_GERAN_A-- MS: GSM0480_MTYPE_REGISTER DREF MSISDN:46071: MSC conn use + dtap == 2 (0xa: dtap,cm_service) -DRLL Dispatching 04.08 message NCSS:0x3b (0xb:0x3b) -DMM MSISDN:46071: rx msg NCSS:0x3b: received_cm_service_request changes to false +DRLL Dispatching 04.08 message GSM0480_MTYPE_REGISTER (0xb:0x3b) +DMM MSISDN:46071: rx msg GSM0480_MTYPE_REGISTER: received_cm_service_request changes to false DREF MSISDN:46071: MSC conn use - cm_service == 1 (0x2: dtap) DMM Subscr_Conn(CM_SERVICE_REQ:50462976){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING DMM Subscr_Conn(CM_SERVICE_REQ:50462976){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING DMM USSD: Own number requested DMM MSISDN:46071: MSISDN = 46071 DMSC msc_tx 43 bytes to MSISDN:46071 via RAN_GERAN_A -- DTAP --RAN_GERAN_A--> MS: NCSS:0x2a: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d27310cd06bbc51a0d +- DTAP --RAN_GERAN_A--> MS: GSM0480_MTYPE_RELEASE_COMPLETE: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d27310cd06bbc51a0d - DTAP matches expected message DREF MSISDN:46071: MSC conn use - dtap == 0 (0x0: ) DMM Subscr_Conn(CM_SERVICE_REQ:50462976){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_UNUSED @@ -1875,17 +1875,17 @@ - a USSD request is serviced expecting USSD: Your extension is 42342 - MSC <--RAN_GERAN_A-- MS: NCSS:0x3b + MSC <--RAN_GERAN_A-- MS: GSM0480_MTYPE_REGISTER DREF MSISDN:42342: MSC conn use + dtap == 2 (0xa: dtap,cm_service) -DRLL Dispatching 04.08 message NCSS:0x3b (0xb:0x3b) -DMM MSISDN:42342: rx msg NCSS:0x3b: received_cm_service_request changes to false +DRLL Dispatching 04.08 message GSM0480_MTYPE_REGISTER (0xb:0x3b) +DMM MSISDN:42342: rx msg GSM0480_MTYPE_REGISTER: received_cm_service_request changes to false DREF MSISDN:42342: MSC conn use - cm_service == 1 (0x2: dtap) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING DMM USSD: Own number requested DMM MSISDN:42342: MSISDN = 42342 DMSC msc_tx 43 bytes to MSISDN:42342 via RAN_GERAN_A -- DTAP --RAN_GERAN_A--> MS: NCSS:0x2a: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d +- DTAP --RAN_GERAN_A--> MS: GSM0480_MTYPE_RELEASE_COMPLETE: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d - DTAP matches expected message DREF MSISDN:42342: MSC conn use - dtap == 0 (0x0: ) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_UNUSED 4. testsuite.at:26: 4. msc_vlr_test_gsm_authen (testsuite.at:26): FAILED (testsuite.at:30) ======================== ./tests/testsuite.dir/05/testsuite.log # -*- compilation -*- 5. testsuite.at:33: testing msc_vlr_test_gsm_ciph ... ./testsuite.at:37: $abs_top_builddir/tests/msc_vlr/msc_vlr_test_gsm_ciph --- experr 2018-04-17 12:34:47.686872606 +0000 +++ /build/tests/testsuite.dir/at-groups/5/stderr 2018-04-17 12:34:47.706872322 +0000 @@ -278,17 +278,17 @@ - a USSD request is serviced expecting USSD: Your extension is 46071 - MSC <--RAN_GERAN_A-- MS: NCSS:0x3b + MSC <--RAN_GERAN_A-- MS: GSM0480_MTYPE_REGISTER DREF MSISDN:46071: MSC conn use + dtap == 2 (0xa: dtap,cm_service) -DRLL Dispatching 04.08 message NCSS:0x3b (0xb:0x3b) -DMM MSISDN:46071: rx msg NCSS:0x3b: received_cm_service_request changes to false +DRLL Dispatching 04.08 message GSM0480_MTYPE_REGISTER (0xb:0x3b) +DMM MSISDN:46071: rx msg GSM0480_MTYPE_REGISTER: received_cm_service_request changes to false DREF MSISDN:46071: MSC conn use - cm_service == 1 (0x2: dtap) DMM Subscr_Conn(CM_SERVICE_REQ:901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING DMM Subscr_Conn(CM_SERVICE_REQ:901700000004620){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING DMM USSD: Own number requested DMM MSISDN:46071: MSISDN = 46071 DMSC msc_tx 43 bytes to MSISDN:46071 via RAN_GERAN_A -- DTAP --RAN_GERAN_A--> MS: NCSS:0x2a: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d27310cd06bbc51a0d +- DTAP --RAN_GERAN_A--> MS: GSM0480_MTYPE_RELEASE_COMPLETE: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d27310cd06bbc51a0d - DTAP matches expected message DREF MSISDN:46071: MSC conn use - dtap == 0 (0x0: ) DMM Subscr_Conn(CM_SERVICE_REQ:901700000004620){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_UNUSED @@ -834,17 +834,17 @@ - a USSD request is serviced expecting USSD: Your extension is 46071 - MSC <--RAN_GERAN_A-- MS: NCSS:0x3b + MSC <--RAN_GERAN_A-- MS: GSM0480_MTYPE_REGISTER DREF MSISDN:46071: MSC conn use + dtap == 2 (0xa: dtap,cm_service) -DRLL Dispatching 04.08 message NCSS:0x3b (0xb:0x3b) -DMM MSISDN:46071: rx msg NCSS:0x3b: received_cm_service_request changes to false +DRLL Dispatching 04.08 message GSM0480_MTYPE_REGISTER (0xb:0x3b) +DMM MSISDN:46071: rx msg GSM0480_MTYPE_REGISTER: received_cm_service_request changes to false DREF MSISDN:46071: MSC conn use - cm_service == 1 (0x2: dtap) DMM Subscr_Conn(CM_SERVICE_REQ:50462976){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING DMM Subscr_Conn(CM_SERVICE_REQ:50462976){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING DMM USSD: Own number requested DMM MSISDN:46071: MSISDN = 46071 DMSC msc_tx 43 bytes to MSISDN:46071 via RAN_GERAN_A -- DTAP --RAN_GERAN_A--> MS: NCSS:0x2a: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d27310cd06bbc51a0d +- DTAP --RAN_GERAN_A--> MS: GSM0480_MTYPE_RELEASE_COMPLETE: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d27310cd06bbc51a0d - DTAP matches expected message DREF MSISDN:46071: MSC conn use - dtap == 0 (0x0: ) DMM Subscr_Conn(CM_SERVICE_REQ:50462976){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_UNUSED @@ -2076,17 +2076,17 @@ - a USSD request is serviced expecting USSD: Your extension is 42342 - MSC <--RAN_GERAN_A-- MS: NCSS:0x3b + MSC <--RAN_GERAN_A-- MS: GSM0480_MTYPE_REGISTER DREF MSISDN:42342: MSC conn use + dtap == 2 (0xa: dtap,cm_service) -DRLL Dispatching 04.08 message NCSS:0x3b (0xb:0x3b) -DMM MSISDN:42342: rx msg NCSS:0x3b: received_cm_service_request changes to false +DRLL Dispatching 04.08 message GSM0480_MTYPE_REGISTER (0xb:0x3b) +DMM MSISDN:42342: rx msg GSM0480_MTYPE_REGISTER: received_cm_service_request changes to false DREF MSISDN:42342: MSC conn use - cm_service == 1 (0x2: dtap) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING DMM USSD: Own number requested DMM MSISDN:42342: MSISDN = 42342 DMSC msc_tx 43 bytes to MSISDN:42342 via RAN_GERAN_A -- DTAP --RAN_GERAN_A--> MS: NCSS:0x2a: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d +- DTAP --RAN_GERAN_A--> MS: GSM0480_MTYPE_RELEASE_COMPLETE: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d - DTAP matches expected message DREF MSISDN:42342: MSC conn use - dtap == 0 (0x0: ) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_UNUSED 5. testsuite.at:33: 5. msc_vlr_test_gsm_ciph (testsuite.at:33): FAILED (testsuite.at:37) ======================== ./tests/testsuite.dir/03/testsuite.log # -*- compilation -*- 3. testsuite.at:19: testing msc_vlr_test_no_authen ... ./testsuite.at:23: $abs_top_builddir/tests/msc_vlr/msc_vlr_test_no_authen --- experr 2018-04-17 12:34:47.618873569 +0000 +++ /build/tests/testsuite.dir/at-groups/3/stderr 2018-04-17 12:34:47.634873342 +0000 @@ -162,17 +162,17 @@ - a USSD request is serviced expecting USSD: Your extension is 46071 - MSC <--RAN_GERAN_A-- MS: NCSS:0x3b + MSC <--RAN_GERAN_A-- MS: GSM0480_MTYPE_REGISTER DREF MSISDN:46071: MSC conn use + dtap == 2 (0xa: dtap,cm_service) -DRLL Dispatching 04.08 message NCSS:0x3b (0xb:0x3b) -DMM MSISDN:46071: rx msg NCSS:0x3b: received_cm_service_request changes to false +DRLL Dispatching 04.08 message GSM0480_MTYPE_REGISTER (0xb:0x3b) +DMM MSISDN:46071: rx msg GSM0480_MTYPE_REGISTER: received_cm_service_request changes to false DREF MSISDN:46071: MSC conn use - cm_service == 1 (0x2: dtap) DMM Subscr_Conn(CM_SERVICE_REQ:901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING DMM Subscr_Conn(CM_SERVICE_REQ:901700000004620){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING DMM USSD: Own number requested DMM MSISDN:46071: MSISDN = 46071 DMSC msc_tx 43 bytes to MSISDN:46071 via RAN_GERAN_A -- DTAP --RAN_GERAN_A--> MS: NCSS:0x2a: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d27310cd06bbc51a0d +- DTAP --RAN_GERAN_A--> MS: GSM0480_MTYPE_RELEASE_COMPLETE: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d27310cd06bbc51a0d - DTAP matches expected message DREF MSISDN:46071: MSC conn use - dtap == 0 (0x0: ) DMM Subscr_Conn(CM_SERVICE_REQ:901700000004620){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_UNUSED @@ -538,17 +538,17 @@ - a USSD request is serviced expecting USSD: Your extension is 46071 - MSC <--RAN_GERAN_A-- MS: NCSS:0x3b + MSC <--RAN_GERAN_A-- MS: GSM0480_MTYPE_REGISTER DREF MSISDN:46071: MSC conn use + dtap == 2 (0xa: dtap,cm_service) -DRLL Dispatching 04.08 message NCSS:0x3b (0xb:0x3b) -DMM MSISDN:46071: rx msg NCSS:0x3b: received_cm_service_request changes to false +DRLL Dispatching 04.08 message GSM0480_MTYPE_REGISTER (0xb:0x3b) +DMM MSISDN:46071: rx msg GSM0480_MTYPE_REGISTER: received_cm_service_request changes to false DREF MSISDN:46071: MSC conn use - cm_service == 1 (0x2: dtap) DMM Subscr_Conn(CM_SERVICE_REQ:50462976){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING DMM Subscr_Conn(CM_SERVICE_REQ:50462976){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING DMM USSD: Own number requested DMM MSISDN:46071: MSISDN = 46071 DMSC msc_tx 43 bytes to MSISDN:46071 via RAN_GERAN_A -- DTAP --RAN_GERAN_A--> MS: NCSS:0x2a: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d27310cd06bbc51a0d +- DTAP --RAN_GERAN_A--> MS: GSM0480_MTYPE_RELEASE_COMPLETE: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d27310cd06bbc51a0d - DTAP matches expected message DREF MSISDN:46071: MSC conn use - dtap == 0 (0x0: ) DMM Subscr_Conn(CM_SERVICE_REQ:50462976){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_UNUSED 3. testsuite.at:19: 3. msc_vlr_test_no_authen (testsuite.at:19): FAILED (testsuite.at:23) Build step 'Execute shell' marked build as failure [WARNINGS]Skipping publisher since build result is FAILURE From gerrit-no-reply at lists.osmocom.org Tue Apr 17 12:37:56 2018 From: gerrit-no-reply at lists.osmocom.org (Neels Hofmeyr) Date: Tue, 17 Apr 2018 12:37:56 +0000 Subject: osmo-msc[master]: tests/msc_vlr: fix expected SS message names In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7851 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: If9e854ee84882d104cf2ffaceb3862fda6862f19 Gerrit-PatchSet: 1 Gerrit-Project: osmo-msc Gerrit-Branch: master Gerrit-Owner: Vadim Yanitskiy Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Neels Hofmeyr Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Tue Apr 17 12:37:58 2018 From: gerrit-no-reply at lists.osmocom.org (Neels Hofmeyr) Date: Tue, 17 Apr 2018 12:37:58 +0000 Subject: [MERGED] osmo-msc[master]: tests/msc_vlr: fix expected SS message names In-Reply-To: References: Message-ID: Neels Hofmeyr has submitted this change and it was merged. Change subject: tests/msc_vlr: fix expected SS message names ...................................................................... tests/msc_vlr: fix expected SS message names Since the I697639d8469e5dda617b27995c4a92e1f0c0bead, call independent SS messages are also supported by gsm48_pdisc_msgtype_name(). So, instead of 'NCSS:0x3b' it will return 'GSM0480_MTYPE_REGISTER'. Let's correct the expected message names. Change-Id: If9e854ee84882d104cf2ffaceb3862fda6862f19 --- M tests/msc_vlr/msc_vlr_test_authen_reuse.err M tests/msc_vlr/msc_vlr_test_gsm_authen.err M tests/msc_vlr/msc_vlr_test_gsm_ciph.err M tests/msc_vlr/msc_vlr_test_no_authen.err M tests/msc_vlr/msc_vlr_test_reject_concurrency.err M tests/msc_vlr/msc_vlr_test_umts_authen.err 6 files changed, 92 insertions(+), 92 deletions(-) Approvals: Neels Hofmeyr: Looks good to me, approved Jenkins Builder: Verified diff --git a/tests/msc_vlr/msc_vlr_test_authen_reuse.err b/tests/msc_vlr/msc_vlr_test_authen_reuse.err index 4b6ea47..f8ebf51 100644 --- a/tests/msc_vlr/msc_vlr_test_authen_reuse.err +++ b/tests/msc_vlr/msc_vlr_test_authen_reuse.err @@ -256,17 +256,17 @@ - a USSD request is serviced expecting USSD: Your extension is 42342 - MSC <--RAN_GERAN_A-- MS: NCSS:0x3b + MSC <--RAN_GERAN_A-- MS: GSM0480_MTYPE_REGISTER DREF MSISDN:42342: MSC conn use + dtap == 2 (0xa: dtap,cm_service) -DRLL Dispatching 04.08 message NCSS:0x3b (0xb:0x3b) -DMM MSISDN:42342: rx msg NCSS:0x3b: received_cm_service_request changes to false +DRLL Dispatching 04.08 message GSM0480_MTYPE_REGISTER (0xb:0x3b) +DMM MSISDN:42342: rx msg GSM0480_MTYPE_REGISTER: received_cm_service_request changes to false DREF MSISDN:42342: MSC conn use - cm_service == 1 (0x2: dtap) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING DMM USSD: Own number requested DMM MSISDN:42342: MSISDN = 42342 DMSC msc_tx 43 bytes to MSISDN:42342 via RAN_GERAN_A -- DTAP --RAN_GERAN_A--> MS: NCSS:0x2a: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d +- DTAP --RAN_GERAN_A--> MS: GSM0480_MTYPE_RELEASE_COMPLETE: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d - DTAP matches expected message DREF MSISDN:42342: MSC conn use - dtap == 0 (0x0: ) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_UNUSED @@ -378,17 +378,17 @@ - a USSD request is serviced expecting USSD: Your extension is 42342 - MSC <--RAN_GERAN_A-- MS: NCSS:0x3b + MSC <--RAN_GERAN_A-- MS: GSM0480_MTYPE_REGISTER DREF MSISDN:42342: MSC conn use + dtap == 2 (0xa: dtap,cm_service) -DRLL Dispatching 04.08 message NCSS:0x3b (0xb:0x3b) -DMM MSISDN:42342: rx msg NCSS:0x3b: received_cm_service_request changes to false +DRLL Dispatching 04.08 message GSM0480_MTYPE_REGISTER (0xb:0x3b) +DMM MSISDN:42342: rx msg GSM0480_MTYPE_REGISTER: received_cm_service_request changes to false DREF MSISDN:42342: MSC conn use - cm_service == 1 (0x2: dtap) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING DMM USSD: Own number requested DMM MSISDN:42342: MSISDN = 42342 DMSC msc_tx 43 bytes to MSISDN:42342 via RAN_GERAN_A -- DTAP --RAN_GERAN_A--> MS: NCSS:0x2a: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d +- DTAP --RAN_GERAN_A--> MS: GSM0480_MTYPE_RELEASE_COMPLETE: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d - DTAP matches expected message DREF MSISDN:42342: MSC conn use - dtap == 0 (0x0: ) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_UNUSED @@ -728,17 +728,17 @@ - a USSD request is serviced expecting USSD: Your extension is 42342 - MSC <--RAN_UTRAN_IU-- MS: NCSS:0x3b + MSC <--RAN_UTRAN_IU-- MS: GSM0480_MTYPE_REGISTER DREF MSISDN:42342: MSC conn use + dtap == 2 (0xa: dtap,cm_service) -DRLL Dispatching 04.08 message NCSS:0x3b (0xb:0x3b) -DMM MSISDN:42342: rx msg NCSS:0x3b: received_cm_service_request changes to false +DRLL Dispatching 04.08 message GSM0480_MTYPE_REGISTER (0xb:0x3b) +DMM MSISDN:42342: rx msg GSM0480_MTYPE_REGISTER: received_cm_service_request changes to false DREF MSISDN:42342: MSC conn use - cm_service == 1 (0x2: dtap) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING DMM USSD: Own number requested DMM MSISDN:42342: MSISDN = 42342 DMSC msc_tx 43 bytes to MSISDN:42342 via RAN_UTRAN_IU -- DTAP --RAN_UTRAN_IU--> MS: NCSS:0x2a: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d +- DTAP --RAN_UTRAN_IU--> MS: GSM0480_MTYPE_RELEASE_COMPLETE: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d - DTAP matches expected message DREF MSISDN:42342: MSC conn use - dtap == 0 (0x0: ) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_UNUSED @@ -863,17 +863,17 @@ - a USSD request is serviced expecting USSD: Your extension is 42342 - MSC <--RAN_UTRAN_IU-- MS: NCSS:0x3b + MSC <--RAN_UTRAN_IU-- MS: GSM0480_MTYPE_REGISTER DREF MSISDN:42342: MSC conn use + dtap == 2 (0xa: dtap,cm_service) -DRLL Dispatching 04.08 message NCSS:0x3b (0xb:0x3b) -DMM MSISDN:42342: rx msg NCSS:0x3b: received_cm_service_request changes to false +DRLL Dispatching 04.08 message GSM0480_MTYPE_REGISTER (0xb:0x3b) +DMM MSISDN:42342: rx msg GSM0480_MTYPE_REGISTER: received_cm_service_request changes to false DREF MSISDN:42342: MSC conn use - cm_service == 1 (0x2: dtap) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING DMM USSD: Own number requested DMM MSISDN:42342: MSISDN = 42342 DMSC msc_tx 43 bytes to MSISDN:42342 via RAN_UTRAN_IU -- DTAP --RAN_UTRAN_IU--> MS: NCSS:0x2a: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d +- DTAP --RAN_UTRAN_IU--> MS: GSM0480_MTYPE_RELEASE_COMPLETE: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d - DTAP matches expected message DREF MSISDN:42342: MSC conn use - dtap == 0 (0x0: ) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_UNUSED @@ -1188,17 +1188,17 @@ - a USSD request is serviced expecting USSD: Your extension is 42342 - MSC <--RAN_GERAN_A-- MS: NCSS:0x3b + MSC <--RAN_GERAN_A-- MS: GSM0480_MTYPE_REGISTER DREF MSISDN:42342: MSC conn use + dtap == 2 (0xa: dtap,cm_service) -DRLL Dispatching 04.08 message NCSS:0x3b (0xb:0x3b) -DMM MSISDN:42342: rx msg NCSS:0x3b: received_cm_service_request changes to false +DRLL Dispatching 04.08 message GSM0480_MTYPE_REGISTER (0xb:0x3b) +DMM MSISDN:42342: rx msg GSM0480_MTYPE_REGISTER: received_cm_service_request changes to false DREF MSISDN:42342: MSC conn use - cm_service == 1 (0x2: dtap) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING DMM USSD: Own number requested DMM MSISDN:42342: MSISDN = 42342 DMSC msc_tx 43 bytes to MSISDN:42342 via RAN_GERAN_A -- DTAP --RAN_GERAN_A--> MS: NCSS:0x2a: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d +- DTAP --RAN_GERAN_A--> MS: GSM0480_MTYPE_RELEASE_COMPLETE: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d - DTAP matches expected message DREF MSISDN:42342: MSC conn use - dtap == 0 (0x0: ) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_UNUSED @@ -1296,17 +1296,17 @@ - a USSD request is serviced expecting USSD: Your extension is 42342 - MSC <--RAN_GERAN_A-- MS: NCSS:0x3b + MSC <--RAN_GERAN_A-- MS: GSM0480_MTYPE_REGISTER DREF MSISDN:42342: MSC conn use + dtap == 2 (0xa: dtap,cm_service) -DRLL Dispatching 04.08 message NCSS:0x3b (0xb:0x3b) -DMM MSISDN:42342: rx msg NCSS:0x3b: received_cm_service_request changes to false +DRLL Dispatching 04.08 message GSM0480_MTYPE_REGISTER (0xb:0x3b) +DMM MSISDN:42342: rx msg GSM0480_MTYPE_REGISTER: received_cm_service_request changes to false DREF MSISDN:42342: MSC conn use - cm_service == 1 (0x2: dtap) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING DMM USSD: Own number requested DMM MSISDN:42342: MSISDN = 42342 DMSC msc_tx 43 bytes to MSISDN:42342 via RAN_GERAN_A -- DTAP --RAN_GERAN_A--> MS: NCSS:0x2a: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d +- DTAP --RAN_GERAN_A--> MS: GSM0480_MTYPE_RELEASE_COMPLETE: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d - DTAP matches expected message DREF MSISDN:42342: MSC conn use - dtap == 0 (0x0: ) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_UNUSED @@ -1404,17 +1404,17 @@ - a USSD request is serviced expecting USSD: Your extension is 42342 - MSC <--RAN_GERAN_A-- MS: NCSS:0x3b + MSC <--RAN_GERAN_A-- MS: GSM0480_MTYPE_REGISTER DREF MSISDN:42342: MSC conn use + dtap == 2 (0xa: dtap,cm_service) -DRLL Dispatching 04.08 message NCSS:0x3b (0xb:0x3b) -DMM MSISDN:42342: rx msg NCSS:0x3b: received_cm_service_request changes to false +DRLL Dispatching 04.08 message GSM0480_MTYPE_REGISTER (0xb:0x3b) +DMM MSISDN:42342: rx msg GSM0480_MTYPE_REGISTER: received_cm_service_request changes to false DREF MSISDN:42342: MSC conn use - cm_service == 1 (0x2: dtap) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING DMM USSD: Own number requested DMM MSISDN:42342: MSISDN = 42342 DMSC msc_tx 43 bytes to MSISDN:42342 via RAN_GERAN_A -- DTAP --RAN_GERAN_A--> MS: NCSS:0x2a: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d +- DTAP --RAN_GERAN_A--> MS: GSM0480_MTYPE_RELEASE_COMPLETE: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d - DTAP matches expected message DREF MSISDN:42342: MSC conn use - dtap == 0 (0x0: ) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_UNUSED @@ -1754,17 +1754,17 @@ - a USSD request is serviced expecting USSD: Your extension is 42342 - MSC <--RAN_UTRAN_IU-- MS: NCSS:0x3b + MSC <--RAN_UTRAN_IU-- MS: GSM0480_MTYPE_REGISTER DREF MSISDN:42342: MSC conn use + dtap == 2 (0xa: dtap,cm_service) -DRLL Dispatching 04.08 message NCSS:0x3b (0xb:0x3b) -DMM MSISDN:42342: rx msg NCSS:0x3b: received_cm_service_request changes to false +DRLL Dispatching 04.08 message GSM0480_MTYPE_REGISTER (0xb:0x3b) +DMM MSISDN:42342: rx msg GSM0480_MTYPE_REGISTER: received_cm_service_request changes to false DREF MSISDN:42342: MSC conn use - cm_service == 1 (0x2: dtap) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING DMM USSD: Own number requested DMM MSISDN:42342: MSISDN = 42342 DMSC msc_tx 43 bytes to MSISDN:42342 via RAN_UTRAN_IU -- DTAP --RAN_UTRAN_IU--> MS: NCSS:0x2a: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d +- DTAP --RAN_UTRAN_IU--> MS: GSM0480_MTYPE_RELEASE_COMPLETE: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d - DTAP matches expected message DREF MSISDN:42342: MSC conn use - dtap == 0 (0x0: ) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_UNUSED @@ -1875,17 +1875,17 @@ - a USSD request is serviced expecting USSD: Your extension is 42342 - MSC <--RAN_UTRAN_IU-- MS: NCSS:0x3b + MSC <--RAN_UTRAN_IU-- MS: GSM0480_MTYPE_REGISTER DREF MSISDN:42342: MSC conn use + dtap == 2 (0xa: dtap,cm_service) -DRLL Dispatching 04.08 message NCSS:0x3b (0xb:0x3b) -DMM MSISDN:42342: rx msg NCSS:0x3b: received_cm_service_request changes to false +DRLL Dispatching 04.08 message GSM0480_MTYPE_REGISTER (0xb:0x3b) +DMM MSISDN:42342: rx msg GSM0480_MTYPE_REGISTER: received_cm_service_request changes to false DREF MSISDN:42342: MSC conn use - cm_service == 1 (0x2: dtap) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING DMM USSD: Own number requested DMM MSISDN:42342: MSISDN = 42342 DMSC msc_tx 43 bytes to MSISDN:42342 via RAN_UTRAN_IU -- DTAP --RAN_UTRAN_IU--> MS: NCSS:0x2a: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d +- DTAP --RAN_UTRAN_IU--> MS: GSM0480_MTYPE_RELEASE_COMPLETE: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d - DTAP matches expected message DREF MSISDN:42342: MSC conn use - dtap == 0 (0x0: ) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_UNUSED @@ -1996,17 +1996,17 @@ - a USSD request is serviced expecting USSD: Your extension is 42342 - MSC <--RAN_UTRAN_IU-- MS: NCSS:0x3b + MSC <--RAN_UTRAN_IU-- MS: GSM0480_MTYPE_REGISTER DREF MSISDN:42342: MSC conn use + dtap == 2 (0xa: dtap,cm_service) -DRLL Dispatching 04.08 message NCSS:0x3b (0xb:0x3b) -DMM MSISDN:42342: rx msg NCSS:0x3b: received_cm_service_request changes to false +DRLL Dispatching 04.08 message GSM0480_MTYPE_REGISTER (0xb:0x3b) +DMM MSISDN:42342: rx msg GSM0480_MTYPE_REGISTER: received_cm_service_request changes to false DREF MSISDN:42342: MSC conn use - cm_service == 1 (0x2: dtap) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING DMM USSD: Own number requested DMM MSISDN:42342: MSISDN = 42342 DMSC msc_tx 43 bytes to MSISDN:42342 via RAN_UTRAN_IU -- DTAP --RAN_UTRAN_IU--> MS: NCSS:0x2a: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d +- DTAP --RAN_UTRAN_IU--> MS: GSM0480_MTYPE_RELEASE_COMPLETE: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d - DTAP matches expected message DREF MSISDN:42342: MSC conn use - dtap == 0 (0x0: ) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_UNUSED @@ -2335,17 +2335,17 @@ - a USSD request is serviced expecting USSD: Your extension is 42342 - MSC <--RAN_GERAN_A-- MS: NCSS:0x3b + MSC <--RAN_GERAN_A-- MS: GSM0480_MTYPE_REGISTER DREF MSISDN:42342: MSC conn use + dtap == 2 (0xa: dtap,cm_service) -DRLL Dispatching 04.08 message NCSS:0x3b (0xb:0x3b) -DMM MSISDN:42342: rx msg NCSS:0x3b: received_cm_service_request changes to false +DRLL Dispatching 04.08 message GSM0480_MTYPE_REGISTER (0xb:0x3b) +DMM MSISDN:42342: rx msg GSM0480_MTYPE_REGISTER: received_cm_service_request changes to false DREF MSISDN:42342: MSC conn use - cm_service == 1 (0x2: dtap) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING DMM USSD: Own number requested DMM MSISDN:42342: MSISDN = 42342 DMSC msc_tx 43 bytes to MSISDN:42342 via RAN_GERAN_A -- DTAP --RAN_GERAN_A--> MS: NCSS:0x2a: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d +- DTAP --RAN_GERAN_A--> MS: GSM0480_MTYPE_RELEASE_COMPLETE: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d - DTAP matches expected message DREF MSISDN:42342: MSC conn use - dtap == 0 (0x0: ) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_UNUSED @@ -2699,17 +2699,17 @@ - a USSD request is serviced expecting USSD: Your extension is 42342 - MSC <--RAN_UTRAN_IU-- MS: NCSS:0x3b + MSC <--RAN_UTRAN_IU-- MS: GSM0480_MTYPE_REGISTER DREF MSISDN:42342: MSC conn use + dtap == 2 (0xa: dtap,cm_service) -DRLL Dispatching 04.08 message NCSS:0x3b (0xb:0x3b) -DMM MSISDN:42342: rx msg NCSS:0x3b: received_cm_service_request changes to false +DRLL Dispatching 04.08 message GSM0480_MTYPE_REGISTER (0xb:0x3b) +DMM MSISDN:42342: rx msg GSM0480_MTYPE_REGISTER: received_cm_service_request changes to false DREF MSISDN:42342: MSC conn use - cm_service == 1 (0x2: dtap) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING DMM USSD: Own number requested DMM MSISDN:42342: MSISDN = 42342 DMSC msc_tx 43 bytes to MSISDN:42342 via RAN_UTRAN_IU -- DTAP --RAN_UTRAN_IU--> MS: NCSS:0x2a: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d +- DTAP --RAN_UTRAN_IU--> MS: GSM0480_MTYPE_RELEASE_COMPLETE: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d - DTAP matches expected message DREF MSISDN:42342: MSC conn use - dtap == 0 (0x0: ) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_UNUSED diff --git a/tests/msc_vlr/msc_vlr_test_gsm_authen.err b/tests/msc_vlr/msc_vlr_test_gsm_authen.err index 6671ade..646617a 100644 --- a/tests/msc_vlr/msc_vlr_test_gsm_authen.err +++ b/tests/msc_vlr/msc_vlr_test_gsm_authen.err @@ -249,17 +249,17 @@ - a USSD request is serviced expecting USSD: Your extension is 46071 - MSC <--RAN_GERAN_A-- MS: NCSS:0x3b + MSC <--RAN_GERAN_A-- MS: GSM0480_MTYPE_REGISTER DREF MSISDN:46071: MSC conn use + dtap == 2 (0xa: dtap,cm_service) -DRLL Dispatching 04.08 message NCSS:0x3b (0xb:0x3b) -DMM MSISDN:46071: rx msg NCSS:0x3b: received_cm_service_request changes to false +DRLL Dispatching 04.08 message GSM0480_MTYPE_REGISTER (0xb:0x3b) +DMM MSISDN:46071: rx msg GSM0480_MTYPE_REGISTER: received_cm_service_request changes to false DREF MSISDN:46071: MSC conn use - cm_service == 1 (0x2: dtap) DMM Subscr_Conn(CM_SERVICE_REQ:901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING DMM Subscr_Conn(CM_SERVICE_REQ:901700000004620){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING DMM USSD: Own number requested DMM MSISDN:46071: MSISDN = 46071 DMSC msc_tx 43 bytes to MSISDN:46071 via RAN_GERAN_A -- DTAP --RAN_GERAN_A--> MS: NCSS:0x2a: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d27310cd06bbc51a0d +- DTAP --RAN_GERAN_A--> MS: GSM0480_MTYPE_RELEASE_COMPLETE: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d27310cd06bbc51a0d - DTAP matches expected message DREF MSISDN:46071: MSC conn use - dtap == 0 (0x0: ) DMM Subscr_Conn(CM_SERVICE_REQ:901700000004620){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_UNUSED @@ -750,17 +750,17 @@ - a USSD request is serviced expecting USSD: Your extension is 46071 - MSC <--RAN_GERAN_A-- MS: NCSS:0x3b + MSC <--RAN_GERAN_A-- MS: GSM0480_MTYPE_REGISTER DREF MSISDN:46071: MSC conn use + dtap == 2 (0xa: dtap,cm_service) -DRLL Dispatching 04.08 message NCSS:0x3b (0xb:0x3b) -DMM MSISDN:46071: rx msg NCSS:0x3b: received_cm_service_request changes to false +DRLL Dispatching 04.08 message GSM0480_MTYPE_REGISTER (0xb:0x3b) +DMM MSISDN:46071: rx msg GSM0480_MTYPE_REGISTER: received_cm_service_request changes to false DREF MSISDN:46071: MSC conn use - cm_service == 1 (0x2: dtap) DMM Subscr_Conn(CM_SERVICE_REQ:50462976){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING DMM Subscr_Conn(CM_SERVICE_REQ:50462976){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING DMM USSD: Own number requested DMM MSISDN:46071: MSISDN = 46071 DMSC msc_tx 43 bytes to MSISDN:46071 via RAN_GERAN_A -- DTAP --RAN_GERAN_A--> MS: NCSS:0x2a: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d27310cd06bbc51a0d +- DTAP --RAN_GERAN_A--> MS: GSM0480_MTYPE_RELEASE_COMPLETE: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d27310cd06bbc51a0d - DTAP matches expected message DREF MSISDN:46071: MSC conn use - dtap == 0 (0x0: ) DMM Subscr_Conn(CM_SERVICE_REQ:50462976){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_UNUSED @@ -1875,17 +1875,17 @@ - a USSD request is serviced expecting USSD: Your extension is 42342 - MSC <--RAN_GERAN_A-- MS: NCSS:0x3b + MSC <--RAN_GERAN_A-- MS: GSM0480_MTYPE_REGISTER DREF MSISDN:42342: MSC conn use + dtap == 2 (0xa: dtap,cm_service) -DRLL Dispatching 04.08 message NCSS:0x3b (0xb:0x3b) -DMM MSISDN:42342: rx msg NCSS:0x3b: received_cm_service_request changes to false +DRLL Dispatching 04.08 message GSM0480_MTYPE_REGISTER (0xb:0x3b) +DMM MSISDN:42342: rx msg GSM0480_MTYPE_REGISTER: received_cm_service_request changes to false DREF MSISDN:42342: MSC conn use - cm_service == 1 (0x2: dtap) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING DMM USSD: Own number requested DMM MSISDN:42342: MSISDN = 42342 DMSC msc_tx 43 bytes to MSISDN:42342 via RAN_GERAN_A -- DTAP --RAN_GERAN_A--> MS: NCSS:0x2a: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d +- DTAP --RAN_GERAN_A--> MS: GSM0480_MTYPE_RELEASE_COMPLETE: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d - DTAP matches expected message DREF MSISDN:42342: MSC conn use - dtap == 0 (0x0: ) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_UNUSED diff --git a/tests/msc_vlr/msc_vlr_test_gsm_ciph.err b/tests/msc_vlr/msc_vlr_test_gsm_ciph.err index c05ea8d..0d5c819 100644 --- a/tests/msc_vlr/msc_vlr_test_gsm_ciph.err +++ b/tests/msc_vlr/msc_vlr_test_gsm_ciph.err @@ -278,17 +278,17 @@ - a USSD request is serviced expecting USSD: Your extension is 46071 - MSC <--RAN_GERAN_A-- MS: NCSS:0x3b + MSC <--RAN_GERAN_A-- MS: GSM0480_MTYPE_REGISTER DREF MSISDN:46071: MSC conn use + dtap == 2 (0xa: dtap,cm_service) -DRLL Dispatching 04.08 message NCSS:0x3b (0xb:0x3b) -DMM MSISDN:46071: rx msg NCSS:0x3b: received_cm_service_request changes to false +DRLL Dispatching 04.08 message GSM0480_MTYPE_REGISTER (0xb:0x3b) +DMM MSISDN:46071: rx msg GSM0480_MTYPE_REGISTER: received_cm_service_request changes to false DREF MSISDN:46071: MSC conn use - cm_service == 1 (0x2: dtap) DMM Subscr_Conn(CM_SERVICE_REQ:901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING DMM Subscr_Conn(CM_SERVICE_REQ:901700000004620){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING DMM USSD: Own number requested DMM MSISDN:46071: MSISDN = 46071 DMSC msc_tx 43 bytes to MSISDN:46071 via RAN_GERAN_A -- DTAP --RAN_GERAN_A--> MS: NCSS:0x2a: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d27310cd06bbc51a0d +- DTAP --RAN_GERAN_A--> MS: GSM0480_MTYPE_RELEASE_COMPLETE: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d27310cd06bbc51a0d - DTAP matches expected message DREF MSISDN:46071: MSC conn use - dtap == 0 (0x0: ) DMM Subscr_Conn(CM_SERVICE_REQ:901700000004620){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_UNUSED @@ -834,17 +834,17 @@ - a USSD request is serviced expecting USSD: Your extension is 46071 - MSC <--RAN_GERAN_A-- MS: NCSS:0x3b + MSC <--RAN_GERAN_A-- MS: GSM0480_MTYPE_REGISTER DREF MSISDN:46071: MSC conn use + dtap == 2 (0xa: dtap,cm_service) -DRLL Dispatching 04.08 message NCSS:0x3b (0xb:0x3b) -DMM MSISDN:46071: rx msg NCSS:0x3b: received_cm_service_request changes to false +DRLL Dispatching 04.08 message GSM0480_MTYPE_REGISTER (0xb:0x3b) +DMM MSISDN:46071: rx msg GSM0480_MTYPE_REGISTER: received_cm_service_request changes to false DREF MSISDN:46071: MSC conn use - cm_service == 1 (0x2: dtap) DMM Subscr_Conn(CM_SERVICE_REQ:50462976){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING DMM Subscr_Conn(CM_SERVICE_REQ:50462976){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING DMM USSD: Own number requested DMM MSISDN:46071: MSISDN = 46071 DMSC msc_tx 43 bytes to MSISDN:46071 via RAN_GERAN_A -- DTAP --RAN_GERAN_A--> MS: NCSS:0x2a: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d27310cd06bbc51a0d +- DTAP --RAN_GERAN_A--> MS: GSM0480_MTYPE_RELEASE_COMPLETE: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d27310cd06bbc51a0d - DTAP matches expected message DREF MSISDN:46071: MSC conn use - dtap == 0 (0x0: ) DMM Subscr_Conn(CM_SERVICE_REQ:50462976){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_UNUSED @@ -2076,17 +2076,17 @@ - a USSD request is serviced expecting USSD: Your extension is 42342 - MSC <--RAN_GERAN_A-- MS: NCSS:0x3b + MSC <--RAN_GERAN_A-- MS: GSM0480_MTYPE_REGISTER DREF MSISDN:42342: MSC conn use + dtap == 2 (0xa: dtap,cm_service) -DRLL Dispatching 04.08 message NCSS:0x3b (0xb:0x3b) -DMM MSISDN:42342: rx msg NCSS:0x3b: received_cm_service_request changes to false +DRLL Dispatching 04.08 message GSM0480_MTYPE_REGISTER (0xb:0x3b) +DMM MSISDN:42342: rx msg GSM0480_MTYPE_REGISTER: received_cm_service_request changes to false DREF MSISDN:42342: MSC conn use - cm_service == 1 (0x2: dtap) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING DMM USSD: Own number requested DMM MSISDN:42342: MSISDN = 42342 DMSC msc_tx 43 bytes to MSISDN:42342 via RAN_GERAN_A -- DTAP --RAN_GERAN_A--> MS: NCSS:0x2a: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d +- DTAP --RAN_GERAN_A--> MS: GSM0480_MTYPE_RELEASE_COMPLETE: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d - DTAP matches expected message DREF MSISDN:42342: MSC conn use - dtap == 0 (0x0: ) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_UNUSED diff --git a/tests/msc_vlr/msc_vlr_test_no_authen.err b/tests/msc_vlr/msc_vlr_test_no_authen.err index d75baba..2890e96 100644 --- a/tests/msc_vlr/msc_vlr_test_no_authen.err +++ b/tests/msc_vlr/msc_vlr_test_no_authen.err @@ -162,17 +162,17 @@ - a USSD request is serviced expecting USSD: Your extension is 46071 - MSC <--RAN_GERAN_A-- MS: NCSS:0x3b + MSC <--RAN_GERAN_A-- MS: GSM0480_MTYPE_REGISTER DREF MSISDN:46071: MSC conn use + dtap == 2 (0xa: dtap,cm_service) -DRLL Dispatching 04.08 message NCSS:0x3b (0xb:0x3b) -DMM MSISDN:46071: rx msg NCSS:0x3b: received_cm_service_request changes to false +DRLL Dispatching 04.08 message GSM0480_MTYPE_REGISTER (0xb:0x3b) +DMM MSISDN:46071: rx msg GSM0480_MTYPE_REGISTER: received_cm_service_request changes to false DREF MSISDN:46071: MSC conn use - cm_service == 1 (0x2: dtap) DMM Subscr_Conn(CM_SERVICE_REQ:901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING DMM Subscr_Conn(CM_SERVICE_REQ:901700000004620){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING DMM USSD: Own number requested DMM MSISDN:46071: MSISDN = 46071 DMSC msc_tx 43 bytes to MSISDN:46071 via RAN_GERAN_A -- DTAP --RAN_GERAN_A--> MS: NCSS:0x2a: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d27310cd06bbc51a0d +- DTAP --RAN_GERAN_A--> MS: GSM0480_MTYPE_RELEASE_COMPLETE: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d27310cd06bbc51a0d - DTAP matches expected message DREF MSISDN:46071: MSC conn use - dtap == 0 (0x0: ) DMM Subscr_Conn(CM_SERVICE_REQ:901700000004620){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_UNUSED @@ -538,17 +538,17 @@ - a USSD request is serviced expecting USSD: Your extension is 46071 - MSC <--RAN_GERAN_A-- MS: NCSS:0x3b + MSC <--RAN_GERAN_A-- MS: GSM0480_MTYPE_REGISTER DREF MSISDN:46071: MSC conn use + dtap == 2 (0xa: dtap,cm_service) -DRLL Dispatching 04.08 message NCSS:0x3b (0xb:0x3b) -DMM MSISDN:46071: rx msg NCSS:0x3b: received_cm_service_request changes to false +DRLL Dispatching 04.08 message GSM0480_MTYPE_REGISTER (0xb:0x3b) +DMM MSISDN:46071: rx msg GSM0480_MTYPE_REGISTER: received_cm_service_request changes to false DREF MSISDN:46071: MSC conn use - cm_service == 1 (0x2: dtap) DMM Subscr_Conn(CM_SERVICE_REQ:50462976){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING DMM Subscr_Conn(CM_SERVICE_REQ:50462976){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING DMM USSD: Own number requested DMM MSISDN:46071: MSISDN = 46071 DMSC msc_tx 43 bytes to MSISDN:46071 via RAN_GERAN_A -- DTAP --RAN_GERAN_A--> MS: NCSS:0x2a: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d27310cd06bbc51a0d +- DTAP --RAN_GERAN_A--> MS: GSM0480_MTYPE_RELEASE_COMPLETE: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d27310cd06bbc51a0d - DTAP matches expected message DREF MSISDN:46071: MSC conn use - dtap == 0 (0x0: ) DMM Subscr_Conn(CM_SERVICE_REQ:50462976){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_UNUSED diff --git a/tests/msc_vlr/msc_vlr_test_reject_concurrency.err b/tests/msc_vlr/msc_vlr_test_reject_concurrency.err index 9cbb58f..5d16776 100644 --- a/tests/msc_vlr/msc_vlr_test_reject_concurrency.err +++ b/tests/msc_vlr/msc_vlr_test_reject_concurrency.err @@ -1118,17 +1118,17 @@ - a USSD request is serviced expecting USSD: Your extension is 46071 - MSC <--RAN_GERAN_A-- MS: NCSS:0x3b + MSC <--RAN_GERAN_A-- MS: GSM0480_MTYPE_REGISTER DREF MSISDN:46071: MSC conn use + dtap == 2 (0xa: dtap,cm_service) -DRLL Dispatching 04.08 message NCSS:0x3b (0xb:0x3b) -DMM MSISDN:46071: rx msg NCSS:0x3b: received_cm_service_request changes to false +DRLL Dispatching 04.08 message GSM0480_MTYPE_REGISTER (0xb:0x3b) +DMM MSISDN:46071: rx msg GSM0480_MTYPE_REGISTER: received_cm_service_request changes to false DREF MSISDN:46071: MSC conn use - cm_service == 1 (0x2: dtap) DMM Subscr_Conn(CM_SERVICE_REQ:901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING DMM Subscr_Conn(CM_SERVICE_REQ:901700000004620){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING DMM USSD: Own number requested DMM MSISDN:46071: MSISDN = 46071 DMSC msc_tx 43 bytes to MSISDN:46071 via RAN_GERAN_A -- DTAP --RAN_GERAN_A--> MS: NCSS:0x2a: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d27310cd06bbc51a0d +- DTAP --RAN_GERAN_A--> MS: GSM0480_MTYPE_RELEASE_COMPLETE: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d27310cd06bbc51a0d - DTAP matches expected message DREF MSISDN:46071: MSC conn use - dtap == 0 (0x0: ) DMM Subscr_Conn(CM_SERVICE_REQ:901700000004620){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_UNUSED diff --git a/tests/msc_vlr/msc_vlr_test_umts_authen.err b/tests/msc_vlr/msc_vlr_test_umts_authen.err index 539e721..c7be31c 100644 --- a/tests/msc_vlr/msc_vlr_test_umts_authen.err +++ b/tests/msc_vlr/msc_vlr_test_umts_authen.err @@ -262,17 +262,17 @@ - a USSD request is serviced expecting USSD: Your extension is 42342 - MSC <--RAN_GERAN_A-- MS: NCSS:0x3b + MSC <--RAN_GERAN_A-- MS: GSM0480_MTYPE_REGISTER DREF MSISDN:42342: MSC conn use + dtap == 2 (0xa: dtap,cm_service) -DRLL Dispatching 04.08 message NCSS:0x3b (0xb:0x3b) -DMM MSISDN:42342: rx msg NCSS:0x3b: received_cm_service_request changes to false +DRLL Dispatching 04.08 message GSM0480_MTYPE_REGISTER (0xb:0x3b) +DMM MSISDN:42342: rx msg GSM0480_MTYPE_REGISTER: received_cm_service_request changes to false DREF MSISDN:42342: MSC conn use - cm_service == 1 (0x2: dtap) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING DMM USSD: Own number requested DMM MSISDN:42342: MSISDN = 42342 DMSC msc_tx 43 bytes to MSISDN:42342 via RAN_GERAN_A -- DTAP --RAN_GERAN_A--> MS: NCSS:0x2a: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d +- DTAP --RAN_GERAN_A--> MS: GSM0480_MTYPE_RELEASE_COMPLETE: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d - DTAP matches expected message DREF MSISDN:42342: MSC conn use - dtap == 0 (0x0: ) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_UNUSED @@ -766,17 +766,17 @@ - a USSD request is serviced expecting USSD: Your extension is 42342 - MSC <--RAN_UTRAN_IU-- MS: NCSS:0x3b + MSC <--RAN_UTRAN_IU-- MS: GSM0480_MTYPE_REGISTER DREF MSISDN:42342: MSC conn use + dtap == 2 (0xa: dtap,cm_service) -DRLL Dispatching 04.08 message NCSS:0x3b (0xb:0x3b) -DMM MSISDN:42342: rx msg NCSS:0x3b: received_cm_service_request changes to false +DRLL Dispatching 04.08 message GSM0480_MTYPE_REGISTER (0xb:0x3b) +DMM MSISDN:42342: rx msg GSM0480_MTYPE_REGISTER: received_cm_service_request changes to false DREF MSISDN:42342: MSC conn use - cm_service == 1 (0x2: dtap) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING DMM USSD: Own number requested DMM MSISDN:42342: MSISDN = 42342 DMSC msc_tx 43 bytes to MSISDN:42342 via RAN_UTRAN_IU -- DTAP --RAN_UTRAN_IU--> MS: NCSS:0x2a: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d +- DTAP --RAN_UTRAN_IU--> MS: GSM0480_MTYPE_RELEASE_COMPLETE: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d - DTAP matches expected message DREF MSISDN:42342: MSC conn use - dtap == 0 (0x0: ) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_UNUSED -- To view, visit https://gerrit.osmocom.org/7851 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: If9e854ee84882d104cf2ffaceb3862fda6862f19 Gerrit-PatchSet: 1 Gerrit-Project: osmo-msc Gerrit-Branch: master Gerrit-Owner: Vadim Yanitskiy Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Neels Hofmeyr From jenkins at lists.osmocom.org Tue Apr 17 12:41:27 2018 From: jenkins at lists.osmocom.org (jenkins at lists.osmocom.org) Date: Tue, 17 Apr 2018 12:41:27 +0000 (UTC) Subject: =?UTF-8?Q?Build_failed_in_Jenkins:_master-osmo-pcu_=C2=BB_m?= =?UTF-8?Q?aster,osmocom-master-debian9,none,False_#391?= Message-ID: <1713914092.418.1523968887466.JavaMail.jenkins@jenkins.osmocom.org> See ------------------------------------------ [...truncated 112.19 KB...] checking dynamic linker characteristics... GNU/Linux ld.so checking how to hardcode library paths into programs... immediate checking whether stripping libraries is possible... yes checking if libtool supports shared libraries... yes checking whether to build shared libraries... yes checking whether to build static libraries... yes checking how to run the C++ preprocessor... g++ -E checking for ld used by g++... /usr/bin/ld -m elf_x86_64 checking if the linker (/usr/bin/ld -m elf_x86_64) is GNU ld... yes checking whether the g++ linker (/usr/bin/ld -m elf_x86_64) supports shared libraries... yes checking for g++ option to produce PIC... -fPIC -DPIC checking if g++ PIC flag -fPIC -DPIC works... yes checking if g++ static flag -static works... yes checking if g++ supports -c -o file.o... yes checking if g++ supports -c -o file.o... (cached) yes checking whether the g++ linker (/usr/bin/ld -m elf_x86_64) supports shared libraries... yes checking dynamic linker characteristics... (cached) GNU/Linux ld.so checking how to hardcode library paths into programs... immediate checking for pkg-config... /usr/bin/pkg-config checking for pkg-config... /usr/bin/pkg-config checking pkg-config is at least version 0.20... yes checking for ANSI C header files... (cached) yes checking for LIBOSMOCORE... yes checking for LIBOSMOVTY... yes checking for LIBOSMOGSM... yes checking for LIBOSMOGB... yes checking whether to enable direct DSP access for PDCH of sysmocom-bts... unset checking whether to enable direct PHY access for PDCH of NuRAN Wireless Litecell 1.5 BTS... no checking whether to enable VTY tests... no CFLAGS="-g -O2 -fsanitize=address -fsanitize=undefined" CPPFLAGS=" -fsanitize=address -fsanitize=undefined" checking that generated files are newer than configure... done configure: creating ./config.status config.status: creating osmo-pcu.pc config.status: creating include/Makefile config.status: creating src/Makefile config.status: creating examples/Makefile config.status: creating tests/Makefile config.status: creating Makefile config.status: executing tests/atconfig commands config.status: executing depfiles commands config.status: executing libtool commands make[1]: Entering directory ' Making all in include make[2]: Entering directory ' make[2]: Nothing to be done for 'all'. make[2]: Leaving directory ' Making all in src make[2]: Entering directory ' CXX gprs_debug.lo CXX csn1.lo CXX gsm_rlcmac.lo CXX gprs_bssgp_pcu.lo ../../../src/gprs_bssgp_pcu.cpp:975:2: warning: #warning "This causes ASAN to complain. It is not critical for normal operation but should be fixed nevertheless" [-Wcpp] #warning "This causes ASAN to complain. It is not critical for normal operation but should be fixed nevertheless" ^~~~~~~ CXX gprs_rlcmac.lo CXX gprs_rlcmac_sched.lo CXX gprs_rlcmac_meas.lo CXX gprs_rlcmac_ts_alloc.lo CXX gprs_ms.lo CXX gprs_ms_storage.lo CXX gsm_timer.lo CXX pcu_l1_if.lo CC pcu_vty.lo CXX pcu_vty_functions.lo CC mslot_class.lo CXX tbf.lo CXX tbf_ul.lo CXX tbf_dl.lo CXX bts.lo CXX pdch.lo CXX poll_controller.lo CXX encoding.lo CXX sba.lo CXX decoding.lo CXX llc.lo CXX rlc.lo CXX osmobts_sock.lo CC gprs_codel.lo CXX gprs_coding_scheme.lo CXX egprs_rlc_compression.lo CXXLD libgprs.la ar: `u' modifier ignored since `D' is the default (see `U') CXX pcu_main.o CXXLD osmo-pcu make[2]: Leaving directory ' Making all in examples make[2]: Entering directory ' make[2]: Nothing to be done for 'all'. make[2]: Leaving directory ' Making all in tests make[2]: Entering directory ' CXX pcu_emu.o CXX test_replay_gprs_attach.o CC openbsc_clone.o CXX test_pdp_activation.o CXXLD emu/pcu_emu make[2]: Leaving directory ' make[2]: Entering directory ' make[2]: Nothing to be done for 'all-am'. make[2]: Leaving directory ' make[1]: Leaving directory ' make[1]: Entering directory ' Making dvi in include make[2]: Entering directory ' make[2]: Nothing to be done for 'dvi'. make[2]: Leaving directory ' Making dvi in src make[2]: Entering directory ' make[2]: Nothing to be done for 'dvi'. make[2]: Leaving directory ' Making dvi in examples make[2]: Entering directory ' make[2]: Nothing to be done for 'dvi'. make[2]: Leaving directory ' Making dvi in tests make[2]: Entering directory ' make[2]: Nothing to be done for 'dvi'. make[2]: Leaving directory ' make[2]: Entering directory ' make[2]: Nothing to be done for 'dvi-am'. make[2]: Leaving directory ' make[1]: Leaving directory ' make[1]: Entering directory ' Making check in include make[2]: Entering directory ' make[2]: Nothing to be done for 'check'. make[2]: Leaving directory ' Making check in src make[2]: Entering directory ' make[2]: Nothing to be done for 'check'. make[2]: Leaving directory ' Making check in examples make[2]: Entering directory ' make[2]: Nothing to be done for 'check'. make[2]: Leaving directory ' Making check in tests make[2]: Entering directory ' make rlcmac/RLCMACTest alloc/AllocTest alloc/MslotTest tbf/TbfTest types/TypesTest ms/MsTest llist/LListTest llc/LlcTest codel/codel_test edge/EdgeTest bitcomp/BitcompTest fn/FnTest make[3]: Entering directory ' CXX RLCMACTest.o CXXLD rlcmac/RLCMACTest CXX AllocTest.o CXXLD alloc/AllocTest CXX MslotTest.o CXXLD alloc/MslotTest CXX TbfTest.o CXXLD tbf/TbfTest CXX TypesTest.o CXXLD types/TypesTest CXX MsTest.o CXXLD ms/MsTest CXX LListTest.o CXXLD llist/LListTest CXX LlcTest.o CXXLD llc/LlcTest CC codel_test.o CCLD codel/codel_test CXX EdgeTest.o CXXLD edge/EdgeTest CXX BitcompTest.o CXX egprs_rlc_compression.o CXXLD bitcomp/BitcompTest CXX FnTest.o CXXLD fn/FnTest make[3]: Leaving directory ' make check-local make[3]: Entering directory ' /bin/bash '../../../tests/testsuite' ## ----------------------------------- ## ## osmo-pcu 0.4.0.114-33c5 test suite. ## ## ----------------------------------- ## Regression tests 1: rlcmac ok 2: multi_slot ok 3: ts_alloc ok 4: tbf FAILED (testsuite.at:29) 5: bitcomp ok 6: edge ok 7: types ok 8: ms ok 9: llc ok 10: llist ok 11: codel ok 12: fn ok ## ------------- ## ## Test results. ## ## ------------- ## ERROR: All 12 tests were run, 1 failed unexpectedly. ## -------------------------- ## ## testsuite.log was created. ## ## -------------------------- ## Please send `tests/testsuite.log' and all information you think might help: To: Subject: [osmo-pcu 0.4.0.114-33c5] testsuite: 4 failed You may investigate any problem if you feel able to do so, in which case the test suite provides a good starting point. Its output may be found below `tests/testsuite.dir'. Makefile:1261: recipe for target 'check-local' failed make[3]: *** [check-local] Error 1 make[3]: Leaving directory ' Makefile:1095: recipe for target 'check-am' failed make[2]: *** [check-am] Error 2 make[2]: Leaving directory ' Makefile:461: recipe for target 'check-recursive' failed make[1]: *** [check-recursive] Error 1 make[1]: Leaving directory ' Makefile:666: recipe for target 'distcheck' failed make: *** [distcheck] Error 1 + cat-testlogs.sh ======================== ./osmo-pcu-0.4.0.114-33c5/_build/sub/tests/testsuite.dir/04/testsuite.log # -*- compilation -*- 4. testsuite.at:25: testing tbf ... ../../../tests/testsuite.at:29: $OSMO_QEMU $abs_top_builddir/tests/tbf/TbfTest --- experr 2018-04-17 12:41:25.951859885 +0000 +++ 2018-04-17 12:41:26.011859857 +0000 @@ -4515,6 +4515,7 @@ TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) downlink (V(A)==0 .. V(S)==10) TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) Sending new block at BSN 10, CS=MCS-5 TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) Complete DL frame, len=512 +../../../src/gprs_rlcmac_meas.cpp:178:40: runtime error: left shift of negative value -999532 TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) Empty chunk, added LLC dummy command of size 46, drained_since=0 TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) Complete DL frame, len=46 TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) data block (BSN 10, MCS-5): 10 5d 01 01 01 01 01 01 01 01 43 c0 01 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b @@ -4526,6 +4527,7 @@ TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) msg block (BSN 10, MCS-5): 07 80 02 08 44 57 40 40 40 40 40 40 40 c0 10 70 c0 ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca 0a TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) downlink acknowledge TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) Final ACK received. +../../../src/gprs_rlcmac_meas.cpp:134:42: runtime error: left shift of negative value -999464 TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) changes state from FLOW to WAIT RELEASE TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT RELEASE EGPRS) starting timer T3193 [release (DL-TBF)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT RELEASE EGPRS) changes DL ASS state from GPRS_RLCMAC_DL_ASS_WAIT_ACK to GPRS_RLCMAC_DL_ASS_NONE 4. testsuite.at:25: 4. tbf (testsuite.at:25): FAILED (testsuite.at:29) Build step 'Execute shell' marked build as failure [WARNINGS]Skipping publisher since build result is FAILURE From gerrit-no-reply at lists.osmocom.org Tue Apr 17 12:41:58 2018 From: gerrit-no-reply at lists.osmocom.org (Neels Hofmeyr) Date: Tue, 17 Apr 2018 12:41:58 +0000 Subject: osmo-bts[master]: Include missing headers for osmo_init_logging2 In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7826 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I753ed49cdcbd1301ba7ea38dcea9113d99fecb06 Gerrit-PatchSet: 1 Gerrit-Project: osmo-bts Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Neels Hofmeyr Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Tue Apr 17 12:43:58 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Tue, 17 Apr 2018 12:43:58 +0000 Subject: [PATCH] libosmo-abis[master]: use osmo_init_logging2 Message-ID: Review at https://gerrit.osmocom.org/7853 use osmo_init_logging2 Change-Id: Iab9d111aba8f9b423e6a541e928f68b38d561067 --- M tests/e1inp_ipa_bsc_test.c M tests/e1inp_ipa_bts_test.c M tests/ipa_proxy_test.c M tests/ipa_recv/ipa_recv_test.c 4 files changed, 9 insertions(+), 7 deletions(-) git pull ssh://gerrit.osmocom.org:29418/libosmo-abis refs/changes/53/7853/1 diff --git a/tests/e1inp_ipa_bsc_test.c b/tests/e1inp_ipa_bsc_test.c index b2fb11c..9064d0a 100644 --- a/tests/e1inp_ipa_bsc_test.c +++ b/tests/e1inp_ipa_bsc_test.c @@ -213,8 +213,8 @@ { tall_test = talloc_named_const(NULL, 1, "e1inp_test"); libosmo_abis_init(tall_test); - - osmo_init_logging(&bsc_test_log_info); + msgb_talloc_ctx_init(tall_test, 0); + osmo_init_logging2(tall_test, &bsc_test_log_info); struct e1inp_line_ops ops = { .cfg = { diff --git a/tests/e1inp_ipa_bts_test.c b/tests/e1inp_ipa_bts_test.c index 28e07ab..48a5c59 100644 --- a/tests/e1inp_ipa_bts_test.c +++ b/tests/e1inp_ipa_bts_test.c @@ -265,8 +265,8 @@ tall_test = talloc_named_const(NULL, 1, "e1inp_test"); libosmo_abis_init(tall_test); - - osmo_init_logging(&bts_test_log_info); + msgb_talloc_ctx_init(tall_test, 0); + osmo_init_logging2(tall_test, &bts_test_log_info); struct e1inp_line_ops ops = { .cfg = { diff --git a/tests/ipa_proxy_test.c b/tests/ipa_proxy_test.c index 8f4533c..da99f01 100644 --- a/tests/ipa_proxy_test.c +++ b/tests/ipa_proxy_test.c @@ -39,8 +39,8 @@ { tall_test = talloc_named_const(NULL, 1, "ipa proxy test"); libosmo_abis_init(tall_test); - - osmo_init_logging(&ipa_proxy_test_log_info); + msgb_talloc_ctx_init(tall_test, 0); + osmo_init_logging2(tall_test, &ipa_proxy_test_log_info); vty_init(&vty_info); ipa_proxy_vty_init(); diff --git a/tests/ipa_recv/ipa_recv_test.c b/tests/ipa_recv/ipa_recv_test.c index 33cdcea..07a7ad7 100644 --- a/tests/ipa_recv/ipa_recv_test.c +++ b/tests/ipa_recv/ipa_recv_test.c @@ -234,7 +234,9 @@ int main(int argc, char **argv) { - osmo_init_logging(&info); + void *tall_ctx = talloc_named_const(NULL, 1, "Root context"); + msgb_talloc_ctx_init(tall_ctx, 0); + osmo_init_logging2(tall_ctx, &info); log_set_all_filter(osmo_stderr_target, 1); log_set_log_level(osmo_stderr_target, LOGL_INFO); -- To view, visit https://gerrit.osmocom.org/7853 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Iab9d111aba8f9b423e6a541e928f68b38d561067 Gerrit-PatchSet: 1 Gerrit-Project: libosmo-abis Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol From jenkins at lists.osmocom.org Tue Apr 17 12:44:11 2018 From: jenkins at lists.osmocom.org (jenkins at lists.osmocom.org) Date: Tue, 17 Apr 2018 12:44:11 +0000 (UTC) Subject: =?UTF-8?Q?Build_failed_in_Jenkins:_master-osmo-msc_=C2=BB_--disable-?= =?UTF-8?Q?iu,a2=3Ddefault,a3=3Ddefault,osmocom-master-debian9_#2878?= In-Reply-To: <895795041.417.1523968489564.JavaMail.jenkins@jenkins.osmocom.org> References: <895795041.417.1523968489564.JavaMail.jenkins@jenkins.osmocom.org> Message-ID: <445175408.419.1523969051314.JavaMail.jenkins@jenkins.osmocom.org> See ------------------------------------------ [...truncated 804.04 KB...] -DRLL Dispatching 04.08 message NCSS:0x3b (0xb:0x3b) -DMM MSISDN:42342: rx msg NCSS:0x3b: received_cm_service_request changes to false +DRLL Dispatching 04.08 message GSM0480_MTYPE_REGISTER (0xb:0x3b) +DMM MSISDN:42342: rx msg GSM0480_MTYPE_REGISTER: received_cm_service_request changes to false DREF MSISDN:42342: MSC conn use - cm_service == 1 (0x2: dtap) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING DMM USSD: Own number requested DMM MSISDN:42342: MSISDN = 42342 DMSC msc_tx 43 bytes to MSISDN:42342 via RAN_GERAN_A -- DTAP --RAN_GERAN_A--> MS: NCSS:0x2a: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d +- DTAP --RAN_GERAN_A--> MS: GSM0480_MTYPE_RELEASE_COMPLETE: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d - DTAP matches expected message DREF MSISDN:42342: MSC conn use - dtap == 0 (0x0: ) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_UNUSED @@ -766,17 +766,17 @@ - a USSD request is serviced expecting USSD: Your extension is 42342 - MSC <--RAN_UTRAN_IU-- MS: NCSS:0x3b + MSC <--RAN_UTRAN_IU-- MS: GSM0480_MTYPE_REGISTER DREF MSISDN:42342: MSC conn use + dtap == 2 (0xa: dtap,cm_service) -DRLL Dispatching 04.08 message NCSS:0x3b (0xb:0x3b) -DMM MSISDN:42342: rx msg NCSS:0x3b: received_cm_service_request changes to false +DRLL Dispatching 04.08 message GSM0480_MTYPE_REGISTER (0xb:0x3b) +DMM MSISDN:42342: rx msg GSM0480_MTYPE_REGISTER: received_cm_service_request changes to false DREF MSISDN:42342: MSC conn use - cm_service == 1 (0x2: dtap) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING DMM USSD: Own number requested DMM MSISDN:42342: MSISDN = 42342 DMSC msc_tx 43 bytes to MSISDN:42342 via RAN_UTRAN_IU -- DTAP --RAN_UTRAN_IU--> MS: NCSS:0x2a: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d +- DTAP --RAN_UTRAN_IU--> MS: GSM0480_MTYPE_RELEASE_COMPLETE: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d - DTAP matches expected message DREF MSISDN:42342: MSC conn use - dtap == 0 (0x0: ) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_UNUSED 6. testsuite.at:40: 6. msc_vlr_test_umts_authen (testsuite.at:40): FAILED (testsuite.at:44) ======================== ./tests/testsuite.dir/04/testsuite.log # -*- compilation -*- 4. testsuite.at:26: testing msc_vlr_test_gsm_authen ... ./testsuite.at:30: $abs_top_builddir/tests/msc_vlr/msc_vlr_test_gsm_authen --- experr 2018-04-17 12:44:09.386963353 +0000 +++ /build/tests/testsuite.dir/at-groups/4/stderr 2018-04-17 12:44:09.402963127 +0000 @@ -249,17 +249,17 @@ - a USSD request is serviced expecting USSD: Your extension is 46071 - MSC <--RAN_GERAN_A-- MS: NCSS:0x3b + MSC <--RAN_GERAN_A-- MS: GSM0480_MTYPE_REGISTER DREF MSISDN:46071: MSC conn use + dtap == 2 (0xa: dtap,cm_service) -DRLL Dispatching 04.08 message NCSS:0x3b (0xb:0x3b) -DMM MSISDN:46071: rx msg NCSS:0x3b: received_cm_service_request changes to false +DRLL Dispatching 04.08 message GSM0480_MTYPE_REGISTER (0xb:0x3b) +DMM MSISDN:46071: rx msg GSM0480_MTYPE_REGISTER: received_cm_service_request changes to false DREF MSISDN:46071: MSC conn use - cm_service == 1 (0x2: dtap) DMM Subscr_Conn(CM_SERVICE_REQ:901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING DMM Subscr_Conn(CM_SERVICE_REQ:901700000004620){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING DMM USSD: Own number requested DMM MSISDN:46071: MSISDN = 46071 DMSC msc_tx 43 bytes to MSISDN:46071 via RAN_GERAN_A -- DTAP --RAN_GERAN_A--> MS: NCSS:0x2a: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d27310cd06bbc51a0d +- DTAP --RAN_GERAN_A--> MS: GSM0480_MTYPE_RELEASE_COMPLETE: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d27310cd06bbc51a0d - DTAP matches expected message DREF MSISDN:46071: MSC conn use - dtap == 0 (0x0: ) DMM Subscr_Conn(CM_SERVICE_REQ:901700000004620){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_UNUSED @@ -750,17 +750,17 @@ - a USSD request is serviced expecting USSD: Your extension is 46071 - MSC <--RAN_GERAN_A-- MS: NCSS:0x3b + MSC <--RAN_GERAN_A-- MS: GSM0480_MTYPE_REGISTER DREF MSISDN:46071: MSC conn use + dtap == 2 (0xa: dtap,cm_service) -DRLL Dispatching 04.08 message NCSS:0x3b (0xb:0x3b) -DMM MSISDN:46071: rx msg NCSS:0x3b: received_cm_service_request changes to false +DRLL Dispatching 04.08 message GSM0480_MTYPE_REGISTER (0xb:0x3b) +DMM MSISDN:46071: rx msg GSM0480_MTYPE_REGISTER: received_cm_service_request changes to false DREF MSISDN:46071: MSC conn use - cm_service == 1 (0x2: dtap) DMM Subscr_Conn(CM_SERVICE_REQ:50462976){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING DMM Subscr_Conn(CM_SERVICE_REQ:50462976){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING DMM USSD: Own number requested DMM MSISDN:46071: MSISDN = 46071 DMSC msc_tx 43 bytes to MSISDN:46071 via RAN_GERAN_A -- DTAP --RAN_GERAN_A--> MS: NCSS:0x2a: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d27310cd06bbc51a0d +- DTAP --RAN_GERAN_A--> MS: GSM0480_MTYPE_RELEASE_COMPLETE: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d27310cd06bbc51a0d - DTAP matches expected message DREF MSISDN:46071: MSC conn use - dtap == 0 (0x0: ) DMM Subscr_Conn(CM_SERVICE_REQ:50462976){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_UNUSED @@ -1875,17 +1875,17 @@ - a USSD request is serviced expecting USSD: Your extension is 42342 - MSC <--RAN_GERAN_A-- MS: NCSS:0x3b + MSC <--RAN_GERAN_A-- MS: GSM0480_MTYPE_REGISTER DREF MSISDN:42342: MSC conn use + dtap == 2 (0xa: dtap,cm_service) -DRLL Dispatching 04.08 message NCSS:0x3b (0xb:0x3b) -DMM MSISDN:42342: rx msg NCSS:0x3b: received_cm_service_request changes to false +DRLL Dispatching 04.08 message GSM0480_MTYPE_REGISTER (0xb:0x3b) +DMM MSISDN:42342: rx msg GSM0480_MTYPE_REGISTER: received_cm_service_request changes to false DREF MSISDN:42342: MSC conn use - cm_service == 1 (0x2: dtap) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING DMM USSD: Own number requested DMM MSISDN:42342: MSISDN = 42342 DMSC msc_tx 43 bytes to MSISDN:42342 via RAN_GERAN_A -- DTAP --RAN_GERAN_A--> MS: NCSS:0x2a: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d +- DTAP --RAN_GERAN_A--> MS: GSM0480_MTYPE_RELEASE_COMPLETE: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d - DTAP matches expected message DREF MSISDN:42342: MSC conn use - dtap == 0 (0x0: ) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_UNUSED 4. testsuite.at:26: 4. msc_vlr_test_gsm_authen (testsuite.at:26): FAILED (testsuite.at:30) ======================== ./tests/testsuite.dir/05/testsuite.log # -*- compilation -*- 5. testsuite.at:33: testing msc_vlr_test_gsm_ciph ... ./testsuite.at:37: $abs_top_builddir/tests/msc_vlr/msc_vlr_test_gsm_ciph --- experr 2018-04-17 12:44:09.410963014 +0000 +++ /build/tests/testsuite.dir/at-groups/5/stderr 2018-04-17 12:44:09.430962733 +0000 @@ -278,17 +278,17 @@ - a USSD request is serviced expecting USSD: Your extension is 46071 - MSC <--RAN_GERAN_A-- MS: NCSS:0x3b + MSC <--RAN_GERAN_A-- MS: GSM0480_MTYPE_REGISTER DREF MSISDN:46071: MSC conn use + dtap == 2 (0xa: dtap,cm_service) -DRLL Dispatching 04.08 message NCSS:0x3b (0xb:0x3b) -DMM MSISDN:46071: rx msg NCSS:0x3b: received_cm_service_request changes to false +DRLL Dispatching 04.08 message GSM0480_MTYPE_REGISTER (0xb:0x3b) +DMM MSISDN:46071: rx msg GSM0480_MTYPE_REGISTER: received_cm_service_request changes to false DREF MSISDN:46071: MSC conn use - cm_service == 1 (0x2: dtap) DMM Subscr_Conn(CM_SERVICE_REQ:901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING DMM Subscr_Conn(CM_SERVICE_REQ:901700000004620){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING DMM USSD: Own number requested DMM MSISDN:46071: MSISDN = 46071 DMSC msc_tx 43 bytes to MSISDN:46071 via RAN_GERAN_A -- DTAP --RAN_GERAN_A--> MS: NCSS:0x2a: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d27310cd06bbc51a0d +- DTAP --RAN_GERAN_A--> MS: GSM0480_MTYPE_RELEASE_COMPLETE: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d27310cd06bbc51a0d - DTAP matches expected message DREF MSISDN:46071: MSC conn use - dtap == 0 (0x0: ) DMM Subscr_Conn(CM_SERVICE_REQ:901700000004620){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_UNUSED @@ -834,17 +834,17 @@ - a USSD request is serviced expecting USSD: Your extension is 46071 - MSC <--RAN_GERAN_A-- MS: NCSS:0x3b + MSC <--RAN_GERAN_A-- MS: GSM0480_MTYPE_REGISTER DREF MSISDN:46071: MSC conn use + dtap == 2 (0xa: dtap,cm_service) -DRLL Dispatching 04.08 message NCSS:0x3b (0xb:0x3b) -DMM MSISDN:46071: rx msg NCSS:0x3b: received_cm_service_request changes to false +DRLL Dispatching 04.08 message GSM0480_MTYPE_REGISTER (0xb:0x3b) +DMM MSISDN:46071: rx msg GSM0480_MTYPE_REGISTER: received_cm_service_request changes to false DREF MSISDN:46071: MSC conn use - cm_service == 1 (0x2: dtap) DMM Subscr_Conn(CM_SERVICE_REQ:50462976){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING DMM Subscr_Conn(CM_SERVICE_REQ:50462976){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING DMM USSD: Own number requested DMM MSISDN:46071: MSISDN = 46071 DMSC msc_tx 43 bytes to MSISDN:46071 via RAN_GERAN_A -- DTAP --RAN_GERAN_A--> MS: NCSS:0x2a: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d27310cd06bbc51a0d +- DTAP --RAN_GERAN_A--> MS: GSM0480_MTYPE_RELEASE_COMPLETE: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d27310cd06bbc51a0d - DTAP matches expected message DREF MSISDN:46071: MSC conn use - dtap == 0 (0x0: ) DMM Subscr_Conn(CM_SERVICE_REQ:50462976){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_UNUSED @@ -2076,17 +2076,17 @@ - a USSD request is serviced expecting USSD: Your extension is 42342 - MSC <--RAN_GERAN_A-- MS: NCSS:0x3b + MSC <--RAN_GERAN_A-- MS: GSM0480_MTYPE_REGISTER DREF MSISDN:42342: MSC conn use + dtap == 2 (0xa: dtap,cm_service) -DRLL Dispatching 04.08 message NCSS:0x3b (0xb:0x3b) -DMM MSISDN:42342: rx msg NCSS:0x3b: received_cm_service_request changes to false +DRLL Dispatching 04.08 message GSM0480_MTYPE_REGISTER (0xb:0x3b) +DMM MSISDN:42342: rx msg GSM0480_MTYPE_REGISTER: received_cm_service_request changes to false DREF MSISDN:42342: MSC conn use - cm_service == 1 (0x2: dtap) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING DMM USSD: Own number requested DMM MSISDN:42342: MSISDN = 42342 DMSC msc_tx 43 bytes to MSISDN:42342 via RAN_GERAN_A -- DTAP --RAN_GERAN_A--> MS: NCSS:0x2a: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d +- DTAP --RAN_GERAN_A--> MS: GSM0480_MTYPE_RELEASE_COMPLETE: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d - DTAP matches expected message DREF MSISDN:42342: MSC conn use - dtap == 0 (0x0: ) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_UNUSED 5. testsuite.at:33: 5. msc_vlr_test_gsm_ciph (testsuite.at:33): FAILED (testsuite.at:37) ======================== ./tests/testsuite.dir/03/testsuite.log # -*- compilation -*- 3. testsuite.at:19: testing msc_vlr_test_no_authen ... ./testsuite.at:23: $abs_top_builddir/tests/msc_vlr/msc_vlr_test_no_authen --- experr 2018-04-17 12:44:09.358963746 +0000 +++ /build/tests/testsuite.dir/at-groups/3/stderr 2018-04-17 12:44:09.374963521 +0000 @@ -162,17 +162,17 @@ - a USSD request is serviced expecting USSD: Your extension is 46071 - MSC <--RAN_GERAN_A-- MS: NCSS:0x3b + MSC <--RAN_GERAN_A-- MS: GSM0480_MTYPE_REGISTER DREF MSISDN:46071: MSC conn use + dtap == 2 (0xa: dtap,cm_service) -DRLL Dispatching 04.08 message NCSS:0x3b (0xb:0x3b) -DMM MSISDN:46071: rx msg NCSS:0x3b: received_cm_service_request changes to false +DRLL Dispatching 04.08 message GSM0480_MTYPE_REGISTER (0xb:0x3b) +DMM MSISDN:46071: rx msg GSM0480_MTYPE_REGISTER: received_cm_service_request changes to false DREF MSISDN:46071: MSC conn use - cm_service == 1 (0x2: dtap) DMM Subscr_Conn(CM_SERVICE_REQ:901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING DMM Subscr_Conn(CM_SERVICE_REQ:901700000004620){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING DMM USSD: Own number requested DMM MSISDN:46071: MSISDN = 46071 DMSC msc_tx 43 bytes to MSISDN:46071 via RAN_GERAN_A -- DTAP --RAN_GERAN_A--> MS: NCSS:0x2a: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d27310cd06bbc51a0d +- DTAP --RAN_GERAN_A--> MS: GSM0480_MTYPE_RELEASE_COMPLETE: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d27310cd06bbc51a0d - DTAP matches expected message DREF MSISDN:46071: MSC conn use - dtap == 0 (0x0: ) DMM Subscr_Conn(CM_SERVICE_REQ:901700000004620){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_UNUSED @@ -538,17 +538,17 @@ - a USSD request is serviced expecting USSD: Your extension is 46071 - MSC <--RAN_GERAN_A-- MS: NCSS:0x3b + MSC <--RAN_GERAN_A-- MS: GSM0480_MTYPE_REGISTER DREF MSISDN:46071: MSC conn use + dtap == 2 (0xa: dtap,cm_service) -DRLL Dispatching 04.08 message NCSS:0x3b (0xb:0x3b) -DMM MSISDN:46071: rx msg NCSS:0x3b: received_cm_service_request changes to false +DRLL Dispatching 04.08 message GSM0480_MTYPE_REGISTER (0xb:0x3b) +DMM MSISDN:46071: rx msg GSM0480_MTYPE_REGISTER: received_cm_service_request changes to false DREF MSISDN:46071: MSC conn use - cm_service == 1 (0x2: dtap) DMM Subscr_Conn(CM_SERVICE_REQ:50462976){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING DMM Subscr_Conn(CM_SERVICE_REQ:50462976){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING DMM USSD: Own number requested DMM MSISDN:46071: MSISDN = 46071 DMSC msc_tx 43 bytes to MSISDN:46071 via RAN_GERAN_A -- DTAP --RAN_GERAN_A--> MS: NCSS:0x2a: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d27310cd06bbc51a0d +- DTAP --RAN_GERAN_A--> MS: GSM0480_MTYPE_RELEASE_COMPLETE: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d27310cd06bbc51a0d - DTAP matches expected message DREF MSISDN:46071: MSC conn use - dtap == 0 (0x0: ) DMM Subscr_Conn(CM_SERVICE_REQ:50462976){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_UNUSED 3. testsuite.at:19: 3. msc_vlr_test_no_authen (testsuite.at:19): FAILED (testsuite.at:23) Build step 'Execute shell' marked build as failure [WARNINGS]Skipping publisher since build result is FAILURE From jenkins at lists.osmocom.org Tue Apr 17 12:44:47 2018 From: jenkins at lists.osmocom.org (jenkins at lists.osmocom.org) Date: Tue, 17 Apr 2018 12:44:47 +0000 (UTC) Subject: =?UTF-8?Q?Build_failed_in_Jenkins:_master-osmo-msc_=C2=BB_--enable-?= =?UTF-8?Q?iu,a2=3Ddefault,a3=3Ddefault,osmocom-master-debian9_#2878?= In-Reply-To: <1488542470.416.1523968454834.JavaMail.jenkins@jenkins.osmocom.org> References: <1488542470.416.1523968454834.JavaMail.jenkins@jenkins.osmocom.org> Message-ID: <1491538666.420.1523969087475.JavaMail.jenkins@jenkins.osmocom.org> See ------------------------------------------ [...truncated 1.16 MB...] -DRLL Dispatching 04.08 message NCSS:0x3b (0xb:0x3b) -DMM MSISDN:42342: rx msg NCSS:0x3b: received_cm_service_request changes to false +DRLL Dispatching 04.08 message GSM0480_MTYPE_REGISTER (0xb:0x3b) +DMM MSISDN:42342: rx msg GSM0480_MTYPE_REGISTER: received_cm_service_request changes to false DREF MSISDN:42342: MSC conn use - cm_service == 1 (0x2: dtap) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING DMM USSD: Own number requested DMM MSISDN:42342: MSISDN = 42342 DMSC msc_tx 43 bytes to MSISDN:42342 via RAN_GERAN_A -- DTAP --RAN_GERAN_A--> MS: NCSS:0x2a: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d +- DTAP --RAN_GERAN_A--> MS: GSM0480_MTYPE_RELEASE_COMPLETE: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d - DTAP matches expected message DREF MSISDN:42342: MSC conn use - dtap == 0 (0x0: ) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_UNUSED @@ -1296,17 +1296,17 @@ - a USSD request is serviced expecting USSD: Your extension is 42342 - MSC <--RAN_GERAN_A-- MS: NCSS:0x3b + MSC <--RAN_GERAN_A-- MS: GSM0480_MTYPE_REGISTER DREF MSISDN:42342: MSC conn use + dtap == 2 (0xa: dtap,cm_service) -DRLL Dispatching 04.08 message NCSS:0x3b (0xb:0x3b) -DMM MSISDN:42342: rx msg NCSS:0x3b: received_cm_service_request changes to false +DRLL Dispatching 04.08 message GSM0480_MTYPE_REGISTER (0xb:0x3b) +DMM MSISDN:42342: rx msg GSM0480_MTYPE_REGISTER: received_cm_service_request changes to false DREF MSISDN:42342: MSC conn use - cm_service == 1 (0x2: dtap) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING DMM USSD: Own number requested DMM MSISDN:42342: MSISDN = 42342 DMSC msc_tx 43 bytes to MSISDN:42342 via RAN_GERAN_A -- DTAP --RAN_GERAN_A--> MS: NCSS:0x2a: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d +- DTAP --RAN_GERAN_A--> MS: GSM0480_MTYPE_RELEASE_COMPLETE: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d - DTAP matches expected message DREF MSISDN:42342: MSC conn use - dtap == 0 (0x0: ) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_UNUSED @@ -1404,17 +1404,17 @@ - a USSD request is serviced expecting USSD: Your extension is 42342 - MSC <--RAN_GERAN_A-- MS: NCSS:0x3b + MSC <--RAN_GERAN_A-- MS: GSM0480_MTYPE_REGISTER DREF MSISDN:42342: MSC conn use + dtap == 2 (0xa: dtap,cm_service) -DRLL Dispatching 04.08 message NCSS:0x3b (0xb:0x3b) -DMM MSISDN:42342: rx msg NCSS:0x3b: received_cm_service_request changes to false +DRLL Dispatching 04.08 message GSM0480_MTYPE_REGISTER (0xb:0x3b) +DMM MSISDN:42342: rx msg GSM0480_MTYPE_REGISTER: received_cm_service_request changes to false DREF MSISDN:42342: MSC conn use - cm_service == 1 (0x2: dtap) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING DMM USSD: Own number requested DMM MSISDN:42342: MSISDN = 42342 DMSC msc_tx 43 bytes to MSISDN:42342 via RAN_GERAN_A -- DTAP --RAN_GERAN_A--> MS: NCSS:0x2a: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d +- DTAP --RAN_GERAN_A--> MS: GSM0480_MTYPE_RELEASE_COMPLETE: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d - DTAP matches expected message DREF MSISDN:42342: MSC conn use - dtap == 0 (0x0: ) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_UNUSED @@ -1754,17 +1754,17 @@ - a USSD request is serviced expecting USSD: Your extension is 42342 - MSC <--RAN_UTRAN_IU-- MS: NCSS:0x3b + MSC <--RAN_UTRAN_IU-- MS: GSM0480_MTYPE_REGISTER DREF MSISDN:42342: MSC conn use + dtap == 2 (0xa: dtap,cm_service) -DRLL Dispatching 04.08 message NCSS:0x3b (0xb:0x3b) -DMM MSISDN:42342: rx msg NCSS:0x3b: received_cm_service_request changes to false +DRLL Dispatching 04.08 message GSM0480_MTYPE_REGISTER (0xb:0x3b) +DMM MSISDN:42342: rx msg GSM0480_MTYPE_REGISTER: received_cm_service_request changes to false DREF MSISDN:42342: MSC conn use - cm_service == 1 (0x2: dtap) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING DMM USSD: Own number requested DMM MSISDN:42342: MSISDN = 42342 DMSC msc_tx 43 bytes to MSISDN:42342 via RAN_UTRAN_IU -- DTAP --RAN_UTRAN_IU--> MS: NCSS:0x2a: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d +- DTAP --RAN_UTRAN_IU--> MS: GSM0480_MTYPE_RELEASE_COMPLETE: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d - DTAP matches expected message DREF MSISDN:42342: MSC conn use - dtap == 0 (0x0: ) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_UNUSED @@ -1875,17 +1875,17 @@ - a USSD request is serviced expecting USSD: Your extension is 42342 - MSC <--RAN_UTRAN_IU-- MS: NCSS:0x3b + MSC <--RAN_UTRAN_IU-- MS: GSM0480_MTYPE_REGISTER DREF MSISDN:42342: MSC conn use + dtap == 2 (0xa: dtap,cm_service) -DRLL Dispatching 04.08 message NCSS:0x3b (0xb:0x3b) -DMM MSISDN:42342: rx msg NCSS:0x3b: received_cm_service_request changes to false +DRLL Dispatching 04.08 message GSM0480_MTYPE_REGISTER (0xb:0x3b) +DMM MSISDN:42342: rx msg GSM0480_MTYPE_REGISTER: received_cm_service_request changes to false DREF MSISDN:42342: MSC conn use - cm_service == 1 (0x2: dtap) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING DMM USSD: Own number requested DMM MSISDN:42342: MSISDN = 42342 DMSC msc_tx 43 bytes to MSISDN:42342 via RAN_UTRAN_IU -- DTAP --RAN_UTRAN_IU--> MS: NCSS:0x2a: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d +- DTAP --RAN_UTRAN_IU--> MS: GSM0480_MTYPE_RELEASE_COMPLETE: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d - DTAP matches expected message DREF MSISDN:42342: MSC conn use - dtap == 0 (0x0: ) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_UNUSED @@ -1996,17 +1996,17 @@ - a USSD request is serviced expecting USSD: Your extension is 42342 - MSC <--RAN_UTRAN_IU-- MS: NCSS:0x3b + MSC <--RAN_UTRAN_IU-- MS: GSM0480_MTYPE_REGISTER DREF MSISDN:42342: MSC conn use + dtap == 2 (0xa: dtap,cm_service) -DRLL Dispatching 04.08 message NCSS:0x3b (0xb:0x3b) -DMM MSISDN:42342: rx msg NCSS:0x3b: received_cm_service_request changes to false +DRLL Dispatching 04.08 message GSM0480_MTYPE_REGISTER (0xb:0x3b) +DMM MSISDN:42342: rx msg GSM0480_MTYPE_REGISTER: received_cm_service_request changes to false DREF MSISDN:42342: MSC conn use - cm_service == 1 (0x2: dtap) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING DMM USSD: Own number requested DMM MSISDN:42342: MSISDN = 42342 DMSC msc_tx 43 bytes to MSISDN:42342 via RAN_UTRAN_IU -- DTAP --RAN_UTRAN_IU--> MS: NCSS:0x2a: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d +- DTAP --RAN_UTRAN_IU--> MS: GSM0480_MTYPE_RELEASE_COMPLETE: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d - DTAP matches expected message DREF MSISDN:42342: MSC conn use - dtap == 0 (0x0: ) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_UNUSED @@ -2335,17 +2335,17 @@ - a USSD request is serviced expecting USSD: Your extension is 42342 - MSC <--RAN_GERAN_A-- MS: NCSS:0x3b + MSC <--RAN_GERAN_A-- MS: GSM0480_MTYPE_REGISTER DREF MSISDN:42342: MSC conn use + dtap == 2 (0xa: dtap,cm_service) -DRLL Dispatching 04.08 message NCSS:0x3b (0xb:0x3b) -DMM MSISDN:42342: rx msg NCSS:0x3b: received_cm_service_request changes to false +DRLL Dispatching 04.08 message GSM0480_MTYPE_REGISTER (0xb:0x3b) +DMM MSISDN:42342: rx msg GSM0480_MTYPE_REGISTER: received_cm_service_request changes to false DREF MSISDN:42342: MSC conn use - cm_service == 1 (0x2: dtap) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING DMM USSD: Own number requested DMM MSISDN:42342: MSISDN = 42342 DMSC msc_tx 43 bytes to MSISDN:42342 via RAN_GERAN_A -- DTAP --RAN_GERAN_A--> MS: NCSS:0x2a: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d +- DTAP --RAN_GERAN_A--> MS: GSM0480_MTYPE_RELEASE_COMPLETE: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d - DTAP matches expected message DREF MSISDN:42342: MSC conn use - dtap == 0 (0x0: ) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_UNUSED @@ -2699,17 +2699,17 @@ - a USSD request is serviced expecting USSD: Your extension is 42342 - MSC <--RAN_UTRAN_IU-- MS: NCSS:0x3b + MSC <--RAN_UTRAN_IU-- MS: GSM0480_MTYPE_REGISTER DREF MSISDN:42342: MSC conn use + dtap == 2 (0xa: dtap,cm_service) -DRLL Dispatching 04.08 message NCSS:0x3b (0xb:0x3b) -DMM MSISDN:42342: rx msg NCSS:0x3b: received_cm_service_request changes to false +DRLL Dispatching 04.08 message GSM0480_MTYPE_REGISTER (0xb:0x3b) +DMM MSISDN:42342: rx msg GSM0480_MTYPE_REGISTER: received_cm_service_request changes to false DREF MSISDN:42342: MSC conn use - cm_service == 1 (0x2: dtap) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING DMM USSD: Own number requested DMM MSISDN:42342: MSISDN = 42342 DMSC msc_tx 43 bytes to MSISDN:42342 via RAN_UTRAN_IU -- DTAP --RAN_UTRAN_IU--> MS: NCSS:0x2a: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d +- DTAP --RAN_UTRAN_IU--> MS: GSM0480_MTYPE_RELEASE_COMPLETE: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d - DTAP matches expected message DREF MSISDN:42342: MSC conn use - dtap == 0 (0x0: ) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_UNUSED 7. testsuite.at:47: 7. msc_vlr_test_authen_reuse (testsuite.at:47): FAILED (testsuite.at:51) ======================== ./tests/testsuite.dir/05/testsuite.log # -*- compilation -*- 5. testsuite.at:33: testing msc_vlr_test_gsm_ciph ... ./testsuite.at:37: $abs_top_builddir/tests/msc_vlr/msc_vlr_test_gsm_ciph --- experr 2018-04-17 12:44:46.523009948 +0000 +++ /build/tests/testsuite.dir/at-groups/5/stderr 2018-04-17 12:44:46.543009800 +0000 @@ -278,17 +278,17 @@ - a USSD request is serviced expecting USSD: Your extension is 46071 - MSC <--RAN_GERAN_A-- MS: NCSS:0x3b + MSC <--RAN_GERAN_A-- MS: GSM0480_MTYPE_REGISTER DREF MSISDN:46071: MSC conn use + dtap == 2 (0xa: dtap,cm_service) -DRLL Dispatching 04.08 message NCSS:0x3b (0xb:0x3b) -DMM MSISDN:46071: rx msg NCSS:0x3b: received_cm_service_request changes to false +DRLL Dispatching 04.08 message GSM0480_MTYPE_REGISTER (0xb:0x3b) +DMM MSISDN:46071: rx msg GSM0480_MTYPE_REGISTER: received_cm_service_request changes to false DREF MSISDN:46071: MSC conn use - cm_service == 1 (0x2: dtap) DMM Subscr_Conn(CM_SERVICE_REQ:901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING DMM Subscr_Conn(CM_SERVICE_REQ:901700000004620){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING DMM USSD: Own number requested DMM MSISDN:46071: MSISDN = 46071 DMSC msc_tx 43 bytes to MSISDN:46071 via RAN_GERAN_A -- DTAP --RAN_GERAN_A--> MS: NCSS:0x2a: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d27310cd06bbc51a0d +- DTAP --RAN_GERAN_A--> MS: GSM0480_MTYPE_RELEASE_COMPLETE: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d27310cd06bbc51a0d - DTAP matches expected message DREF MSISDN:46071: MSC conn use - dtap == 0 (0x0: ) DMM Subscr_Conn(CM_SERVICE_REQ:901700000004620){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_UNUSED @@ -834,17 +834,17 @@ - a USSD request is serviced expecting USSD: Your extension is 46071 - MSC <--RAN_GERAN_A-- MS: NCSS:0x3b + MSC <--RAN_GERAN_A-- MS: GSM0480_MTYPE_REGISTER DREF MSISDN:46071: MSC conn use + dtap == 2 (0xa: dtap,cm_service) -DRLL Dispatching 04.08 message NCSS:0x3b (0xb:0x3b) -DMM MSISDN:46071: rx msg NCSS:0x3b: received_cm_service_request changes to false +DRLL Dispatching 04.08 message GSM0480_MTYPE_REGISTER (0xb:0x3b) +DMM MSISDN:46071: rx msg GSM0480_MTYPE_REGISTER: received_cm_service_request changes to false DREF MSISDN:46071: MSC conn use - cm_service == 1 (0x2: dtap) DMM Subscr_Conn(CM_SERVICE_REQ:50462976){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING DMM Subscr_Conn(CM_SERVICE_REQ:50462976){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING DMM USSD: Own number requested DMM MSISDN:46071: MSISDN = 46071 DMSC msc_tx 43 bytes to MSISDN:46071 via RAN_GERAN_A -- DTAP --RAN_GERAN_A--> MS: NCSS:0x2a: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d27310cd06bbc51a0d +- DTAP --RAN_GERAN_A--> MS: GSM0480_MTYPE_RELEASE_COMPLETE: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d27310cd06bbc51a0d - DTAP matches expected message DREF MSISDN:46071: MSC conn use - dtap == 0 (0x0: ) DMM Subscr_Conn(CM_SERVICE_REQ:50462976){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_UNUSED @@ -2076,17 +2076,17 @@ - a USSD request is serviced expecting USSD: Your extension is 42342 - MSC <--RAN_GERAN_A-- MS: NCSS:0x3b + MSC <--RAN_GERAN_A-- MS: GSM0480_MTYPE_REGISTER DREF MSISDN:42342: MSC conn use + dtap == 2 (0xa: dtap,cm_service) -DRLL Dispatching 04.08 message NCSS:0x3b (0xb:0x3b) -DMM MSISDN:42342: rx msg NCSS:0x3b: received_cm_service_request changes to false +DRLL Dispatching 04.08 message GSM0480_MTYPE_REGISTER (0xb:0x3b) +DMM MSISDN:42342: rx msg GSM0480_MTYPE_REGISTER: received_cm_service_request changes to false DREF MSISDN:42342: MSC conn use - cm_service == 1 (0x2: dtap) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING DMM USSD: Own number requested DMM MSISDN:42342: MSISDN = 42342 DMSC msc_tx 43 bytes to MSISDN:42342 via RAN_GERAN_A -- DTAP --RAN_GERAN_A--> MS: NCSS:0x2a: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d +- DTAP --RAN_GERAN_A--> MS: GSM0480_MTYPE_RELEASE_COMPLETE: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d - DTAP matches expected message DREF MSISDN:42342: MSC conn use - dtap == 0 (0x0: ) DMM Subscr_Conn(CM_SERVICE_REQ:901700000010650){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_UNUSED 5. testsuite.at:33: 5. msc_vlr_test_gsm_ciph (testsuite.at:33): FAILED (testsuite.at:37) Build step 'Execute shell' marked build as failure [WARNINGS]Skipping publisher since build result is FAILURE From jenkins at lists.osmocom.org Tue Apr 17 12:46:45 2018 From: jenkins at lists.osmocom.org (jenkins at lists.osmocom.org) Date: Tue, 17 Apr 2018 12:46:45 +0000 (UTC) Subject: =?UTF-8?Q?Build_failed_in_Jenkins:_master-osmo-iuh_=C2=BB_a1=3Ddefau?= =?UTF-8?Q?lt,a2=3Ddefault,a3=3Ddefault,osmocom-master-debian9_#952?= Message-ID: <1103919136.421.1523969205275.JavaMail.jenkins@jenkins.osmocom.org> See ------------------------------------------ [...truncated 132.00 KB...] CC conv.lo CC backtrace.lo CC application.lo CC rbtree.lo CC strrb.lo CC loggingrb.lo CC crc8gen.lo CC crc16gen.lo CC crc32gen.lo CC crc64gen.lo CC macaddr.lo CC stat_item.lo CC stats.lo CC prim.lo CC conv_acc.lo CC conv_acc_generic.lo CC sercomm.lo CC stats_statsd.lo CC prbs.lo CC conv_acc_sse.lo CC conv_acc_sse_avx.lo CC plugin.lo CC msgfile.lo CC serial.lo CCLD libosmocore.la make[4]: Entering directory ' make[4]: Nothing to be done for 'install-data-am'. /bin/mkdir -p ' /bin/bash ../libtool --mode=install /usr/bin/install -c libosmocore.la ' libtool: install: /usr/bin/install -c .libs/libosmocore.so.9.0.0 libtool: install: (cd && { ln -s -f libosmocore.so.9.0.0 libosmocore.so.9 || { rm -f libosmocore.so.9 && ln -s libosmocore.so.9.0.0 libosmocore.so.9; }; }) libtool: install: (cd && { ln -s -f libosmocore.so.9.0.0 libosmocore.so || { rm -f libosmocore.so && ln -s libosmocore.so.9.0.0 libosmocore.so; }; }) libtool: install: /usr/bin/install -c .libs/libosmocore.lai libtool: finish: PATH="/usr/local/bin:/usr/bin:/bin:/usr/games:/home/osmocom-build/bin:/sbin" ldconfig -n ---------------------------------------------------------------------- Libraries have been installed in: If you ever happen to want to link against installed libraries in a given directory, LIBDIR, you must either use libtool, and specify the full pathname of the library, or use the '-LLIBDIR' flag during linking and do at least one of the following: - add LIBDIR to the 'LD_LIBRARY_PATH' environment variable during execution - add LIBDIR to the 'LD_RUN_PATH' environment variable during linking - use the '-Wl,-rpath -Wl,LIBDIR' linker flag - have your system administrator add LIBDIR to '/etc/ld.so.conf' See any operating system documentation about shared libraries for more information, such as the ld(1) and ld.so(8) manual pages. ---------------------------------------------------------------------- make[4]: Leaving directory ' make[3]: Leaving directory ' make[2]: Leaving directory ' Making install in src/vty make[2]: Entering directory ' CC command.lo CC vty.lo CC buffer.lo CC vector.lo CC utils.lo CC stats_vty.lo CC logging_vty.lo CC telnet_interface.lo CC fsm_vty.lo CC talloc_ctx_vty.lo CCLD libosmovty.la make[3]: Entering directory ' make[3]: Nothing to be done for 'install-data-am'. /bin/mkdir -p ' /bin/bash ../../libtool --mode=install /usr/bin/install -c libosmovty.la ' libtool: warning: relinking 'libosmovty.la' libtool: install: (cd /bin/bash " --silent --tag CC --mode=relink gcc -Wall -g -O2 -DBUILDING_LIBOSMOCORE -Wall -version-info 4:0:0 -no-undefined -o libosmovty.la -rpath buffer.lo command.lo vty.lo vector.lo utils.lo telnet_interface.lo logging_vty.lo stats_vty.lo fsm_vty.lo talloc_ctx_vty.lo ../../src/libosmocore.la -ltalloc ) libtool: install: /usr/bin/install -c .libs/libosmovty.so.4.0.0T libtool: install: (cd && { ln -s -f libosmovty.so.4.0.0 libosmovty.so.4 || { rm -f libosmovty.so.4 && ln -s libosmovty.so.4.0.0 libosmovty.so.4; }; }) libtool: install: (cd && { ln -s -f libosmovty.so.4.0.0 libosmovty.so || { rm -f libosmovty.so && ln -s libosmovty.so.4.0.0 libosmovty.so; }; }) libtool: install: /usr/bin/install -c .libs/libosmovty.lai libtool: finish: PATH="/usr/local/bin:/usr/bin:/bin:/usr/games:/home/osmocom-build/bin:/sbin" ldconfig -n ---------------------------------------------------------------------- Libraries have been installed in: If you ever happen to want to link against installed libraries in a given directory, LIBDIR, you must either use libtool, and specify the full pathname of the library, or use the '-LLIBDIR' flag during linking and do at least one of the following: - add LIBDIR to the 'LD_LIBRARY_PATH' environment variable during execution - add LIBDIR to the 'LD_RUN_PATH' environment variable during linking - use the '-Wl,-rpath -Wl,LIBDIR' linker flag - have your system administrator add LIBDIR to '/etc/ld.so.conf' See any operating system documentation about shared libraries for more information, such as the ld(1) and ld.so(8) manual pages. ---------------------------------------------------------------------- make[3]: Leaving directory ' make[2]: Leaving directory ' Making install in src/codec make[2]: Entering directory ' CC gsm610.lo CC gsm620.lo CC gsm660.lo CC gsm690.lo CC ecu_fr.lo CCLD libosmocodec.la make[3]: Entering directory ' make[3]: Nothing to be done for 'install-data-am'. /bin/mkdir -p ' /bin/bash ../../libtool --mode=install /usr/bin/install -c libosmocodec.la ' libtool: warning: relinking 'libosmocodec.la' libtool: install: (cd /bin/bash " --silent --tag CC --mode=relink gcc -Wall -g -O2 -DBUILDING_LIBOSMOCORE -Wall -version-info 0:0:0 -no-undefined -o libosmocodec.la -rpath gsm610.lo gsm620.lo gsm660.lo gsm690.lo ecu_fr.lo ../../src/libosmocore.la ) libtool: install: /usr/bin/install -c .libs/libosmocodec.so.0.0.0T libtool: install: (cd && { ln -s -f libosmocodec.so.0.0.0 libosmocodec.so.0 || { rm -f libosmocodec.so.0 && ln -s libosmocodec.so.0.0.0 libosmocodec.so.0; }; }) libtool: install: (cd && { ln -s -f libosmocodec.so.0.0.0 libosmocodec.so || { rm -f libosmocodec.so && ln -s libosmocodec.so.0.0.0 libosmocodec.so; }; }) libtool: install: /usr/bin/install -c .libs/libosmocodec.lai libtool: finish: PATH="/usr/local/bin:/usr/bin:/bin:/usr/games:/home/osmocom-build/bin:/sbin" ldconfig -n ---------------------------------------------------------------------- Libraries have been installed in: If you ever happen to want to link against installed libraries in a given directory, LIBDIR, you must either use libtool, and specify the full pathname of the library, or use the '-LLIBDIR' flag during linking and do at least one of the following: - add LIBDIR to the 'LD_LIBRARY_PATH' environment variable during execution - add LIBDIR to the 'LD_RUN_PATH' environment variable during linking - use the '-Wl,-rpath -Wl,LIBDIR' linker flag - have your system administrator add LIBDIR to '/etc/ld.so.conf' See any operating system documentation about shared libraries for more information, such as the ld(1) and ld.so(8) manual pages. ---------------------------------------------------------------------- make[3]: Leaving directory ' make[2]: Leaving directory ' Making install in src/gsm make[2]: Entering directory ' GEN gsm0503_conv.c Generating convolutional codes... Generate 'xcch' definition Generate 'rach' definition Generate 'rach_ext' definition Generate 'sch' definition Generate 'cs2' definition Generate 'cs3' definition Generate 'cs2_np' definition Generate 'cs3_np' definition Generate 'tch_afs_12_2' definition Generate 'tch_afs_10_2' definition Generate 'tch_afs_7_95' definition Generate 'tch_afs_7_4' definition Generate 'tch_afs_6_7' definition Generate 'tch_afs_5_9' definition Generate 'tch_afs_5_15' definition Generate 'tch_afs_4_75' definition Generate 'tch_fr' definition Generate 'tch_hr' definition Generate 'tch_ahs_7_95' definition Generate 'tch_ahs_7_4' definition Generate 'tch_ahs_6_7' definition Generate 'tch_ahs_5_9' definition Generate 'tch_ahs_5_15' definition Generate 'tch_ahs_4_75' definition Generate 'mcs1_dl_hdr' definition Generate 'mcs1_ul_hdr' definition Generate 'mcs1' definition Generate 'mcs2' definition Generate 'mcs3' definition Generate 'mcs4' definition Generate 'mcs5_dl_hdr' definition Generate 'mcs5_ul_hdr' definition Generate 'mcs5' definition Generate 'mcs6' definition Generate 'mcs7_dl_hdr' definition Generate 'mcs7_ul_hdr' definition Generate 'mcs7' definition Generate 'mcs8' definition Generate 'mcs9' definition Generation complete. make install-am make[3]: Entering directory ' CC rxlev_stat.lo CC comp128.lo CC tlv_parser.lo CC a5.lo CC comp128v23.lo CC gsm_utils.lo CC rsl.lo CC gsm48.lo gsm_utils.c:112:9: note: #pragma message: including GnuTLS for getrandom fallback. #pragma message ("including GnuTLS for getrandom fallback.") ^~~~~~~ gsm_utils.c: In function ?osmo_get_rand_id?: gsm_utils.c:429:9: note: #pragma message: Using direct syscall access for getrandom(): consider upgrading to glibc >= 2.25 #pragma message ("Using direct syscall access for getrandom(): consider upgrading to glibc >= 2.25") ^~~~~~~ gsm_utils.c:437:9: note: #pragma message: Secure random failed: using GnuTLS fallback. #pragma message ("Secure random failed: using GnuTLS fallback.") ^~~~~~~ CC gsm48_ie.lo CC gsm0808.lo CC sysinfo.lo CC gprs_cipher_core.lo CC gprs_rlc.lo CC gsm0480.lo CC abis_nm.lo CC gsm0502.lo CC gsm0411_utils.lo CC gsm0411_smc.lo CC gsm0411_smr.lo CC gsm0414.lo CC lapd_core.lo CC lapdm.lo CC gsm_04_08_gprs.lo CC kasumi.lo CC auth_core.lo CC auth_comp128v1.lo CC auth_comp128v23.lo CC auth_milenage.lo CC gea.lo CC milenage/aes-internal.lo CC milenage/aes-internal-enc.lo CC milenage/milenage.lo CC gan.lo CC ipa.lo CC gsm0341.lo CC apn.lo CC gsup.lo CC gprs_gea.lo CC gsm0503_conv.lo CC oap.lo /bin/bash: line 2: 7104 Segmentation fault /bin/bash ../../libtool --silent --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I../.. -I../../include -I../../include -I/usr/include/p11-kit-1 -DBUILDING_LIBOSMOCORE -Wall -Wall -g -O2 -DBUILDING_LIBOSMOCORE -Wall -MT gsm0503_conv.lo -MD -MP -MF $depbase.Tpo -c -o gsm0503_conv.lo gsm0503_conv.c Makefile:578: recipe for target 'gsm0503_conv.lo' failed make[3]: *** [gsm0503_conv.lo] Error 139 make[3]: *** Waiting for unfinished jobs.... make[3]: Leaving directory ' Makefile:683: recipe for target 'install' failed make[2]: *** [install] Error 2 make[2]: Leaving directory ' Makefile:600: recipe for target 'install-recursive' failed make[1]: *** [install-recursive] Error 1 make[1]: Leaving directory ' Makefile:899: recipe for target 'install' failed make: *** [install] Error 2 Build step 'Execute shell' marked build as failure [WARNINGS]Skipping publisher since build result is FAILURE From jenkins at lists.osmocom.org Tue Apr 17 12:48:38 2018 From: jenkins at lists.osmocom.org (jenkins at lists.osmocom.org) Date: Tue, 17 Apr 2018 12:48:38 +0000 (UTC) Subject: =?UTF-8?Q?Jenkins_build_is_back_to_normal_:_master-osmo-msc_=C2=BB_--dis?= =?UTF-8?Q?able-iu,a2=3Ddefault,a3=3Ddefault,osmocom-master-debian9_#2879?= In-Reply-To: <445175408.419.1523969051314.JavaMail.jenkins@jenkins.osmocom.org> References: <445175408.419.1523969051314.JavaMail.jenkins@jenkins.osmocom.org> Message-ID: <1488027018.422.1523969318742.JavaMail.jenkins@jenkins.osmocom.org> See From jenkins at lists.osmocom.org Tue Apr 17 12:49:47 2018 From: jenkins at lists.osmocom.org (jenkins at lists.osmocom.org) Date: Tue, 17 Apr 2018 12:49:47 +0000 (UTC) Subject: =?UTF-8?Q?Jenkins_build_is_back_to_normal_:_master-osmo-msc_=C2=BB_--ena?= =?UTF-8?Q?ble-iu,a2=3Ddefault,a3=3Ddefault,osmocom-master-debian9_#2879?= In-Reply-To: <1491538666.420.1523969087475.JavaMail.jenkins@jenkins.osmocom.org> References: <1491538666.420.1523969087475.JavaMail.jenkins@jenkins.osmocom.org> Message-ID: <812954482.423.1523969387305.JavaMail.jenkins@jenkins.osmocom.org> See From jenkins at lists.osmocom.org Tue Apr 17 12:57:11 2018 From: jenkins at lists.osmocom.org (jenkins at lists.osmocom.org) Date: Tue, 17 Apr 2018 12:57:11 +0000 (UTC) Subject: =?UTF-8?Q?Jenkins_build_is_back_to_normal_:_master-osmo-pc?= =?UTF-8?Q?u_=C2=BB_master,osmocom-master-debian9,none,False_#392?= In-Reply-To: <1713914092.418.1523968887466.JavaMail.jenkins@jenkins.osmocom.org> References: <1713914092.418.1523968887466.JavaMail.jenkins@jenkins.osmocom.org> Message-ID: <39807372.425.1523969831319.JavaMail.jenkins@jenkins.osmocom.org> See From gerrit-no-reply at lists.osmocom.org Tue Apr 17 13:07:12 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Tue, 17 Apr 2018 13:07:12 +0000 Subject: [PATCH] osmo-hlr[master]: use osmo_init_logging2 Message-ID: Review at https://gerrit.osmocom.org/7854 use osmo_init_logging2 Change-Id: If4449cce1af46be22cc370abd3a6da8e22a31fa5 --- M src/db_test.c M src/hlr.c M src/hlr_db_tool.c M tests/auc/auc_test.c M tests/auc/gen_ts_55_205_test_sets/main_template.c M tests/db/db_test.c 6 files changed, 11 insertions(+), 6 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-hlr refs/changes/54/7854/1 diff --git a/src/db_test.c b/src/db_test.c index 7891c90..0d10797 100644 --- a/src/db_test.c +++ b/src/db_test.c @@ -49,7 +49,7 @@ g_hlr = talloc_zero(NULL, struct hlr); - rc = osmo_init_logging(&hlr_log_info); + rc = osmo_init_logging2(g_hlr, &hlr_log_info); if (rc < 0) { fprintf(stderr, "Error initializing logging\n"); exit(1); diff --git a/src/hlr.c b/src/hlr.c index 4fbc268..3845993 100644 --- a/src/hlr.c +++ b/src/hlr.c @@ -475,7 +475,7 @@ g_hlr = talloc_zero(hlr_ctx, struct hlr); - rc = osmo_init_logging(&hlr_log_info); + rc = osmo_init_logging2(hlr_ctx, &hlr_log_info); if (rc < 0) { fprintf(stderr, "Error initializing logging\n"); exit(1); diff --git a/src/hlr_db_tool.c b/src/hlr_db_tool.c index 318308c..e83b098 100644 --- a/src/hlr_db_tool.c +++ b/src/hlr_db_tool.c @@ -386,7 +386,7 @@ OSMO_ASSERT(g_hlr_db_tool_ctx); talloc_set_name_const(g_hlr_db_tool_ctx, "OsmoHLR-db-tool"); - rc = osmo_init_logging(&hlr_log_info); + rc = osmo_init_logging2(g_hlr_db_tool_ctx, &hlr_log_info); if (rc < 0) { fprintf(stderr, "Error initializing logging\n"); exit(EXIT_FAILURE); diff --git a/tests/auc/auc_test.c b/tests/auc/auc_test.c index e9c114c..e23cc02 100644 --- a/tests/auc/auc_test.c +++ b/tests/auc/auc_test.c @@ -610,7 +610,9 @@ handle_options(argc, argv); - osmo_init_logging(&hlr_log_info); + void *tall_ctx = talloc_named_const(NULL, 1, "auc_test"); + + osmo_init_logging2(tall_ctx, &hlr_log_info); log_set_print_filename(osmo_stderr_target, cmdline_opts.verbose); log_set_print_timestamp(osmo_stderr_target, 0); log_set_use_color(osmo_stderr_target, 0); diff --git a/tests/auc/gen_ts_55_205_test_sets/main_template.c b/tests/auc/gen_ts_55_205_test_sets/main_template.c index 37f47c3..a78bddb 100644 --- a/tests/auc/gen_ts_55_205_test_sets/main_template.c +++ b/tests/auc/gen_ts_55_205_test_sets/main_template.c @@ -29,6 +29,7 @@ #include #include #include +#include #include @@ -102,7 +103,9 @@ int main() { printf("3GPP TS 55.205 Test Sets\n"); - osmo_init_logging(&hlr_log_info); + void *tall_ctx = talloc_named_const(NULL, 1, "test"); + msgb_talloc_ctx_init(tall_ctx, 0); + osmo_init_logging2(tall_ctx, &hlr_log_info); log_set_print_filename(osmo_stderr_target, 0); log_set_print_timestamp(osmo_stderr_target, 0); log_set_use_color(osmo_stderr_target, 0); diff --git a/tests/db/db_test.c b/tests/db/db_test.c index 6bf7a86..058588b 100644 --- a/tests/db/db_test.c +++ b/tests/db/db_test.c @@ -839,7 +839,7 @@ handle_options(argc, argv); - osmo_init_logging(&hlr_log_info); + osmo_init_logging2(ctx, &hlr_log_info); log_set_print_filename(osmo_stderr_target, cmdline_opts.verbose); log_set_print_timestamp(osmo_stderr_target, 0); log_set_use_color(osmo_stderr_target, 0); -- To view, visit https://gerrit.osmocom.org/7854 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: If4449cce1af46be22cc370abd3a6da8e22a31fa5 Gerrit-PatchSet: 1 Gerrit-Project: osmo-hlr Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol From gerrit-no-reply at lists.osmocom.org Tue Apr 17 13:10:35 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Tue, 17 Apr 2018 13:10:35 +0000 Subject: [PATCH] osmo-hlr[master]: Remove unused src/db_test.c Message-ID: Review at https://gerrit.osmocom.org/7855 Remove unused src/db_test.c There's a larger test suite in use in tests/db/db_test.c Change-Id: Ifa409df9b4bb94bd4e8f15568486066393009494 --- M src/Makefile.am D src/db_test.c 2 files changed, 0 insertions(+), 91 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-hlr refs/changes/55/7855/1 diff --git a/src/Makefile.am b/src/Makefile.am index 9fbb062..60fc479 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -38,10 +38,6 @@ osmo-hlr-db-tool \ $(NULL) -noinst_PROGRAMS = \ - db_test \ - $(NULL) - osmo_hlr_SOURCES = \ auc.c \ ctrl.c \ diff --git a/src/db_test.c b/src/db_test.c deleted file mode 100644 index 0d10797..0000000 --- a/src/db_test.c +++ /dev/null @@ -1,87 +0,0 @@ -#include - -#include -#include - -#include "db.h" -#include "hlr.h" -#include "rand.h" -#include "logging.h" - -static struct hlr *g_hlr; - -static int test(const char *imsi, struct db_context *dbc) -{ - struct osmo_auth_vector vec[3]; - int rc, i; - - /* initialize all vectors with a known token pattern */ - memset(vec, 0x55, sizeof(vec)); - for (i = 0; i < ARRAY_SIZE(vec); i++) - vec[i].res_len = 0; - - rc = db_get_auc(dbc, imsi, 0, vec, ARRAY_SIZE(vec), NULL, NULL); - if (rc <= 0) { - LOGP(DMAIN, LOGL_ERROR, "Cannot obtain auth tuples for '%s'\n", imsi); - return rc; - } - LOGP(DMAIN, LOGL_INFO, "Obtained %u tuples for subscriber IMSI %s\n", - rc, imsi); - - for (i = 0; i < rc; i++) { - struct osmo_auth_vector *v = vec + i; - LOGP(DMAIN, LOGL_DEBUG, "Tuple %u, auth_types=0x%x\n", i, v->auth_types); - LOGP(DMAIN, LOGL_DEBUG, "RAND=%s\n", osmo_hexdump_nospc(v->rand, sizeof(v->rand))); - LOGP(DMAIN, LOGL_DEBUG, "AUTN=%s\n", osmo_hexdump_nospc(v->autn, sizeof(v->autn))); - LOGP(DMAIN, LOGL_DEBUG, "CK=%s\n", osmo_hexdump_nospc(v->ck, sizeof(v->ck))); - LOGP(DMAIN, LOGL_DEBUG, "IK=%s\n", osmo_hexdump_nospc(v->ik, sizeof(v->ik))); - LOGP(DMAIN, LOGL_DEBUG, "RES=%s\n", osmo_hexdump_nospc(v->res, v->res_len)); - LOGP(DMAIN, LOGL_DEBUG, "Kc=%s\n", osmo_hexdump_nospc(v->kc, sizeof(v->kc))); - LOGP(DMAIN, LOGL_DEBUG, "SRES=%s\n", osmo_hexdump_nospc(v->sres, sizeof(v->sres))); - } - - return rc; -} - -int main(int argc, char **argv) -{ - int rc; - - g_hlr = talloc_zero(NULL, struct hlr); - - rc = osmo_init_logging2(g_hlr, &hlr_log_info); - if (rc < 0) { - fprintf(stderr, "Error initializing logging\n"); - exit(1); - } - LOGP(DMAIN, LOGL_NOTICE, "hlr starting\n"); - - rc = rand_init(); - if (rc < 0) { - LOGP(DMAIN, LOGL_ERROR, "Error initializing random source\n"); - exit(1); - } - - g_hlr->dbc = db_open(NULL, "hlr.db", true); - if (!g_hlr->dbc) { - LOGP(DMAIN, LOGL_ERROR, "Error opening database\n"); - exit(1); - } - - /* non-existing subscriber */ - rc = test("901990123456789", g_hlr->dbc); - /* 2G only AUC data (COMP128v1 / MILENAGE) */ - rc = test("901990000000001", g_hlr->dbc); - /* 2G + 3G AUC data (COMP128v1 / MILENAGE) */ - rc = test("901990000000002", g_hlr->dbc); - /* 3G AUC data (MILENAGE) */ - rc = test("901990000000003", g_hlr->dbc); - - LOGP(DMAIN, LOGL_NOTICE, "Exiting\n"); - - db_close(g_hlr->dbc); - - log_fini(); - - exit(0); -} -- To view, visit https://gerrit.osmocom.org/7855 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Ifa409df9b4bb94bd4e8f15568486066393009494 Gerrit-PatchSet: 1 Gerrit-Project: osmo-hlr Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol From gerrit-no-reply at lists.osmocom.org Tue Apr 17 13:18:55 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Tue, 17 Apr 2018 13:18:55 +0000 Subject: [PATCH] osmo-bsc[master]: use osmo_init_logging2 Message-ID: Review at https://gerrit.osmocom.org/7856 use osmo_init_logging2 Change-Id: Ifbbfede185aec6573fe7d8bcb49dc5be9f7e7d0b --- M tests/bsc-nat-trie/bsc_nat_trie_test.c M tests/bsc-nat/bsc_nat_test.c M tests/bssap/bssap_test.c 3 files changed, 8 insertions(+), 5 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-bsc refs/changes/56/7856/1 diff --git a/tests/bsc-nat-trie/bsc_nat_trie_test.c b/tests/bsc-nat-trie/bsc_nat_trie_test.c index 1c48564..32323d9 100644 --- a/tests/bsc-nat-trie/bsc_nat_trie_test.c +++ b/tests/bsc-nat-trie/bsc_nat_trie_test.c @@ -39,8 +39,8 @@ int main(int argc, char **argv) { struct nat_rewrite *trie; - - osmo_init_logging(&log_info); + void *tall_ctx = talloc_named_const(NULL, 1, "bsc_nat_trie_test"); + osmo_init_logging2(tall_ctx, &log_info); printf("Testing the trie\n"); diff --git a/tests/bsc-nat/bsc_nat_test.c b/tests/bsc-nat/bsc_nat_test.c index bb287ec..7aa39ec 100644 --- a/tests/bsc-nat/bsc_nat_test.c +++ b/tests/bsc-nat/bsc_nat_test.c @@ -1559,9 +1559,10 @@ int main(int argc, char **argv) { - msgb_talloc_ctx_init(NULL, 0); + void *tall_ctx = talloc_named_const(NULL, 1, "bsc_nat_test"); + msgb_talloc_ctx_init(tall_ctx, 0); sccp_set_log_area(DLSCCP); - osmo_init_logging(&log_info); + osmo_init_logging2(tall_ctx, &log_info); test_filter(); test_contrack(); diff --git a/tests/bssap/bssap_test.c b/tests/bssap/bssap_test.c index 00d925d..00bc64c 100644 --- a/tests/bssap/bssap_test.c +++ b/tests/bssap/bssap_test.c @@ -140,7 +140,9 @@ int main(int argc, char **argv) { - osmo_init_logging(&log_info); + void *tall_ctx = talloc_named_const(NULL, 1, "bssap_test"); + msgb_talloc_ctx_init(tall_ctx, 0); + osmo_init_logging2(tall_ctx, &log_info); log_set_use_color(osmo_stderr_target, 0); log_set_print_timestamp(osmo_stderr_target, 0); log_set_print_filename(osmo_stderr_target, 0); -- To view, visit https://gerrit.osmocom.org/7856 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Ifbbfede185aec6573fe7d8bcb49dc5be9f7e7d0b Gerrit-PatchSet: 1 Gerrit-Project: osmo-bsc Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol From gerrit-no-reply at lists.osmocom.org Tue Apr 17 13:25:16 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Tue, 17 Apr 2018 13:25:16 +0000 Subject: libosmocore[master]: NS: use monotonic clock In-Reply-To: References: Message-ID: Patch Set 5: Code-Review-1 (1 comment) https://gerrit.osmocom.org/#/c/5104/5/src/gb/gprs_ns.c File src/gb/gprs_ns.c: Line 615: if (clock_gettime(CLOCK_MONOTONIC, &nsvc->t_start) != 0) { We have osmo_clock_gettime now, so in any case we should be using that one instead. -- To view, visit https://gerrit.osmocom.org/5104 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Ib6949601a80747f0de1a05e0790a1bace209efbf Gerrit-PatchSet: 5 Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Owner: Max Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Max Gerrit-Reviewer: Pau Espin Pedrol Gerrit-HasComments: Yes From gerrit-no-reply at lists.osmocom.org Tue Apr 17 13:29:24 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Tue, 17 Apr 2018 13:29:24 +0000 Subject: [PATCH] osmo-bts[master]: common/sysinfo.c: Fix no return on on-void function Message-ID: Review at https://gerrit.osmocom.org/7857 common/sysinfo.c: Fix no return on on-void function src/common/sysinfo.c:147:1: warning: control reaches end of non-void function [-Wreturn-type] } The compiler warning is actually a false positive since we call OSMO_ABORT on that path, but let's add a return anyway so the compiler doesn't throw a warning. Change-Id: I9b4e06927489a8bc20ce173279a01415a8c4295a --- M src/common/sysinfo.c 1 file changed, 1 insertion(+), 0 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-bts refs/changes/57/7857/1 diff --git a/src/common/sysinfo.c b/src/common/sysinfo.c index f5f9c7e..5c66e08 100644 --- a/src/common/sysinfo.c +++ b/src/common/sysinfo.c @@ -144,6 +144,7 @@ /* this should never bve reached. We must transmit a BCCH * message on the normal BCCH in all cases. */ OSMO_ASSERT(0); + return 0; } uint8_t num_agch(struct gsm_bts_trx *trx, const char * arg) -- To view, visit https://gerrit.osmocom.org/7857 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I9b4e06927489a8bc20ce173279a01415a8c4295a Gerrit-PatchSet: 1 Gerrit-Project: osmo-bts Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol From gerrit-no-reply at lists.osmocom.org Tue Apr 17 13:41:21 2018 From: gerrit-no-reply at lists.osmocom.org (dexter) Date: Tue, 17 Apr 2018 13:41:21 +0000 Subject: [PATCH] osmo-mgw[master]: stats: use libosmocore rate counter for in/out_stream.err_ts... In-Reply-To: References: Message-ID: Hello Harald Welte, Jenkins Builder, I'd like you to reexamine a change. Please visit https://gerrit.osmocom.org/7555 to look at the new patch set (#3). stats: use libosmocore rate counter for in/out_stream.err_ts_counter The two counters: in_stream.err_ts_counter and out_stream.err_ts_counter are still handcoded. To make them better accessible they should be replaced with libosmocore rate counters. - replace state.in_stream.err_ts_counter with libosmocore rate counter - replace state.out_stream.err_ts_counter with libosmocore rate counter Change-Id: I67aa7a8602f60366ef3ba2c5b1319b1b85719f64 Related: OS#2517 --- M include/osmocom/mgcp/mgcp_internal.h M src/libosmo-mgcp/mgcp_conn.c M src/libosmo-mgcp/mgcp_network.c M src/libosmo-mgcp/mgcp_stat.c M src/libosmo-mgcp/mgcp_vty.c M tests/mgcp/mgcp_test.c 6 files changed, 63 insertions(+), 15 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-mgw refs/changes/55/7555/3 diff --git a/include/osmocom/mgcp/mgcp_internal.h b/include/osmocom/mgcp/mgcp_internal.h index 0da2c56..ff02768 100644 --- a/include/osmocom/mgcp/mgcp_internal.h +++ b/include/osmocom/mgcp/mgcp_internal.h @@ -28,6 +28,7 @@ #include #include #include +#include #define CI_UNUSED 0 @@ -45,7 +46,7 @@ uint32_t ssrc; uint16_t last_seq; uint32_t last_timestamp; - uint32_t err_ts_counter; + struct rate_ctr *err_ts_ctr; int32_t last_tsdelta; uint32_t last_arrival_time; }; @@ -202,6 +203,8 @@ uint32_t octets; } stats; } osmux; + + struct rate_ctr_group *rate_ctr_group; }; /*! Connection type, specifies which member of the union "u" in mgcp_conn diff --git a/src/libosmo-mgcp/mgcp_conn.c b/src/libosmo-mgcp/mgcp_conn.c index 998dbc5..8f5c499 100644 --- a/src/libosmo-mgcp/mgcp_conn.c +++ b/src/libosmo-mgcp/mgcp_conn.c @@ -26,7 +26,27 @@ #include #include #include +#include #include + +const static struct rate_ctr_desc rate_ctr_desc[] = { + { + .name = "in_stream_err_ts_ctr", + .description = "inbound rtp-stream timestamp errors", + },{ + .name = "outstream_err_ts_ctr", + .description = "outbound rtp stream timestamp errors", + } +}; + +const static struct rate_ctr_group_desc rate_ctr_group_desc = { + .group_name_prefix = "conn_rtp", + .group_description = "rtp connection statistics", + .class_id = 1, + .num_ctr = 2, + .ctr_desc = rate_ctr_desc +}; + /* Allocate a new connection identifier. According to RFC3435, they must * be unique only within the scope of the endpoint. (Caller must provide @@ -87,6 +107,10 @@ static void mgcp_rtp_conn_init(struct mgcp_conn_rtp *conn_rtp, struct mgcp_conn *conn) { struct mgcp_rtp_end *end = &conn_rtp->end; + /* FIXME: Each new rate counter group requires an unique index. At the + * moment we generate this index using this counter, but perhaps there + * is a more concious way to assign the indexes. */ + static unsigned int rate_ctr_index = 0; conn_rtp->type = MGCP_RTP_DEFAULT; conn_rtp->osmux.allocated_cid = -1; @@ -108,6 +132,15 @@ mgcp_rtp_codec_init(&end->codec); mgcp_rtp_codec_init(&end->alt_codec); + + conn_rtp->rate_ctr_group = + rate_ctr_group_alloc(conn, &rate_ctr_group_desc, + rate_ctr_index); + conn_rtp->state.in_stream.err_ts_ctr = + &conn_rtp->rate_ctr_group->ctr[0]; + conn_rtp->state.out_stream.err_ts_ctr = + &conn_rtp->rate_ctr_group->ctr[1]; + rate_ctr_index++; } /* Cleanup rtp connection struct */ @@ -116,6 +149,7 @@ osmux_disable_conn(conn_rtp); osmux_release_cid(conn_rtp); mgcp_free_rtp_port(&conn_rtp->end); + rate_ctr_group_free(conn_rtp->rate_ctr_group); } /*! allocate a new connection list entry. diff --git a/src/libosmo-mgcp/mgcp_network.c b/src/libosmo-mgcp/mgcp_network.c index 6923b97..c56e433 100644 --- a/src/libosmo-mgcp/mgcp_network.c +++ b/src/libosmo-mgcp/mgcp_network.c @@ -222,7 +222,7 @@ if (seq == sstate->last_seq) { if (timestamp != sstate->last_timestamp) { - sstate->err_ts_counter += 1; + rate_ctr_inc(sstate->err_ts_ctr); LOGP(DRTP, LOGL_ERROR, "The %s timestamp delta is != 0 but the sequence " "number %d is the same, " @@ -272,7 +272,7 @@ ts_alignment_error(sstate, state->packet_duration, timestamp); if (timestamp_error) { - sstate->err_ts_counter += 1; + rate_ctr_inc(sstate->err_ts_ctr); LOGP(DRTP, LOGL_NOTICE, "The %s timestamp has an alignment error of %d " "on 0x%x SSRC: %u " @@ -505,13 +505,16 @@ mgcp_rtp_annex_count(endp, state, seq, transit, ssrc); if (!state->initialized) { + /* FIXME: Move this initialization to mgcp.conn.c */ state->initialized = 1; state->in_stream.last_seq = seq - 1; state->in_stream.ssrc = state->patch.orig_ssrc = ssrc; state->in_stream.last_tsdelta = 0; state->packet_duration = mgcp_rtp_packet_duration(endp, rtp_end); - state->out_stream = state->in_stream; + state->out_stream.last_seq = seq - 1; + state->out_stream.ssrc = state->patch.orig_ssrc = ssrc; + state->out_stream.last_tsdelta = 0; state->out_stream.last_timestamp = timestamp; state->out_stream.ssrc = ssrc - 1; /* force output SSRC change */ LOGP(DRTP, LOGL_INFO, diff --git a/src/libosmo-mgcp/mgcp_stat.c b/src/libosmo-mgcp/mgcp_stat.c index 581130c..cc723bb 100644 --- a/src/libosmo-mgcp/mgcp_stat.c +++ b/src/libosmo-mgcp/mgcp_stat.c @@ -87,9 +87,9 @@ if (conn->conn->endp->cfg->osmux != OSMUX_USAGE_OFF) { /* Error Counter */ nchars = snprintf(str, str_len, - "\r\nX-Osmo-CP: EC TI=%u, TO=%u", - conn->state.in_stream.err_ts_counter, - conn->state.out_stream.err_ts_counter); + "\r\nX-Osmo-CP: EC TI=%lu, TO=%lu", + conn->state.in_stream.err_ts_ctr->current, + conn->state.out_stream.err_ts_ctr->current); if (nchars < 0 || nchars >= str_len) goto truncate; diff --git a/src/libosmo-mgcp/mgcp_vty.c b/src/libosmo-mgcp/mgcp_vty.c index 14ecd17..392a176 100644 --- a/src/libosmo-mgcp/mgcp_vty.c +++ b/src/libosmo-mgcp/mgcp_vty.c @@ -160,15 +160,16 @@ struct mgcp_rtp_codec *codec = &end->codec; vty_out(vty, - " Timestamp Errs: %d->%d%s" + " Timestamp Errs: %lu->%lu%s" " Dropped Packets: %d%s" " Payload Type: %d Rate: %u Channels: %d %s" " Frame Duration: %u Frame Denominator: %u%s" " FPP: %d Packet Duration: %u%s" " FMTP-Extra: %s Audio-Name: %s Sub-Type: %s%s" " Output-Enabled: %d Force-PTIME: %d%s", - state->in_stream.err_ts_counter, - state->out_stream.err_ts_counter, VTY_NEWLINE, + state->in_stream.err_ts_ctr->current, + state->out_stream.err_ts_ctr->current, + VTY_NEWLINE, end->stats.dropped_packets, VTY_NEWLINE, codec->payload_type, codec->rate, codec->channels, VTY_NEWLINE, codec->frame_duration_num, codec->frame_duration_den, diff --git a/tests/mgcp/mgcp_test.c b/tests/mgcp/mgcp_test.c index f6c421a..0af3799 100644 --- a/tests/mgcp/mgcp_test.c +++ b/tests/mgcp/mgcp_test.c @@ -1133,6 +1133,8 @@ int last_out_ts_err_cnt = 0; struct mgcp_conn_rtp *conn = NULL; struct mgcp_conn *_conn = NULL; + struct rate_ctr test_ctr_in; + struct rate_ctr test_ctr_out; printf("Testing packet error detection%s%s.\n", patch_ssrc ? ", patch SSRC" : "", @@ -1141,6 +1143,11 @@ memset(&trunk, 0, sizeof(trunk)); memset(&endp, 0, sizeof(endp)); memset(&state, 0, sizeof(state)); + + test_ctr_in.current = 0; + test_ctr_out.current = 0; + state.in_stream.err_ts_ctr = &test_ctr_in; + state.out_stream.err_ts_ctr = &test_ctr_out; endp.type = &ep_typeset.rtp; @@ -1186,18 +1193,18 @@ state.in_stream.last_tsdelta, state.in_stream.last_seq); printf("Out TS change: %d, dTS: %d, Seq change: %d, " - "TS Err change: in %+d, out %+d\n", + "TS Err change: in +%lu, out +%lu\n", state.out_stream.last_timestamp - last_timestamp, state.out_stream.last_tsdelta, state.out_stream.last_seq - last_seqno, - state.in_stream.err_ts_counter - last_in_ts_err_cnt, - state.out_stream.err_ts_counter - last_out_ts_err_cnt); + state.in_stream.err_ts_ctr->current - last_in_ts_err_cnt, + state.out_stream.err_ts_ctr->current - last_out_ts_err_cnt); printf("Stats: Jitter = %u, Transit = %d\n", calc_jitter(&state), state.stats.transit); - last_in_ts_err_cnt = state.in_stream.err_ts_counter; - last_out_ts_err_cnt = state.out_stream.err_ts_counter; + last_in_ts_err_cnt = state.in_stream.err_ts_ctr->current; + last_out_ts_err_cnt = state.out_stream.err_ts_ctr->current; last_timestamp = state.out_stream.last_timestamp; last_seqno = state.out_stream.last_seq; } -- To view, visit https://gerrit.osmocom.org/7555 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newpatchset Gerrit-Change-Id: I67aa7a8602f60366ef3ba2c5b1319b1b85719f64 Gerrit-PatchSet: 3 Gerrit-Project: osmo-mgw Gerrit-Branch: master Gerrit-Owner: dexter Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Stefan Sperling Gerrit-Reviewer: neels From gerrit-no-reply at lists.osmocom.org Tue Apr 17 14:11:59 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Tue, 17 Apr 2018 14:11:59 +0000 Subject: [PATCH] osmo-msc[master]: smpp_smsc_conf: Fix heap-use-after-free Message-ID: Review at https://gerrit.osmocom.org/7858 smpp_smsc_conf: Fix heap-use-after-free Fixes following error catched by enabling address sanitizer: ==20792==ERROR: AddressSanitizer: heap-use-after-free on address 0x60b000122610 at pc 0x7f9c9c3fe063 bp 0x7ffd2e68f600 sp 0x7ffd2e68edb0 READ of size 11 at 0x60b000122610 thread T0 #0 0x7f9c9c3fe062 (/usr/lib/x86_64-linux-gnu/libasan.so.3+0x3c062) #1 0x7f9c9beb8ee4 in talloc_strdup (/usr/lib/x86_64-linux-gnu/libtalloc.so.2+0x6ee4) #2 0x56096a7cf75b in smpp_smsc_conf src/libmsc/smpp_smsc.c:983 #3 0x56096a7cf9df in smpp_smsc_start src/libmsc/smpp_smsc.c:1015 #4 0x56096a7d4935 in smpp_openbsc_start src/libmsc/smpp_openbsc.c:785 #5 0x56096a755ad0 in main src/osmo-msc/msc_main.c:598 #6 0x7f9c9927b2e0 in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x202e0) #7 0x56096a756979 in _start (/home/jenkins/workspace/osmo-gsm-tester_run-prod/trial-805/inst/osmo-msc/bin/osmo-msc+0xf0979) Related: OS#3181 Change-Id: Iaf0d251c8d2912266a087ada4d20905146e08592 --- M src/libmsc/smpp_smsc.c 1 file changed, 6 insertions(+), 1 deletion(-) git pull ssh://gerrit.osmocom.org:29418/osmo-msc refs/changes/58/7858/1 diff --git a/src/libmsc/smpp_smsc.c b/src/libmsc/smpp_smsc.c index 7bbb0a4..ea5303c 100644 --- a/src/libmsc/smpp_smsc.c +++ b/src/libmsc/smpp_smsc.c @@ -977,6 +977,12 @@ /*! \brief Set the SMPP address and port without binding. */ int smpp_smsc_conf(struct smsc *smsc, const char *bind_addr, uint16_t port) { + smsc->listen_port = port; + + /* Avoid use-after-free if bind_addr == smsc->bind_addr */ + if (smsc->bind_addr == bind_addr) + return 0; + talloc_free((void*)smsc->bind_addr); smsc->bind_addr = NULL; if (bind_addr) { @@ -984,7 +990,6 @@ if (!smsc->bind_addr) return -ENOMEM; } - smsc->listen_port = port; return 0; } -- To view, visit https://gerrit.osmocom.org/7858 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Iaf0d251c8d2912266a087ada4d20905146e08592 Gerrit-PatchSet: 1 Gerrit-Project: osmo-msc Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol From gerrit-no-reply at lists.osmocom.org Tue Apr 17 14:17:58 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Tue, 17 Apr 2018 14:17:58 +0000 Subject: [PATCH] openbsc[master]: smpp_smsc_conf: Fix heap-use-after-free Message-ID: Review at https://gerrit.osmocom.org/7859 smpp_smsc_conf: Fix heap-use-after-free Backport from osmo-msc Change-Id Iaf0d251c8d2912266a087ada4d20905146e08592. Fixes following error catched by enabling address sanitizer: ==20792==ERROR: AddressSanitizer: heap-use-after-free on address 0x60b000122610 at pc 0x7f9c9c3fe063 bp 0x7ffd2e68f600 sp 0x7ffd2e68edb0 READ of size 11 at 0x60b000122610 thread T0 #0 0x7f9c9c3fe062 (/usr/lib/x86_64-linux-gnu/libasan.so.3+0x3c062) #1 0x7f9c9beb8ee4 in talloc_strdup (/usr/lib/x86_64-linux-gnu/libtalloc.so.2+0x6ee4) #2 0x56096a7cf75b in smpp_smsc_conf src/libmsc/smpp_smsc.c:983 #3 0x56096a7cf9df in smpp_smsc_start src/libmsc/smpp_smsc.c:1015 #4 0x56096a7d4935 in smpp_openbsc_start src/libmsc/smpp_openbsc.c:785 #5 0x56096a755ad0 in main src/osmo-msc/msc_main.c:598 #6 0x7f9c9927b2e0 in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x202e0) #7 0x56096a756979 in _start (/home/jenkins/workspace/osmo-gsm-tester_run-prod/trial-805/inst/osmo-msc/bin/osmo-msc+0xf0979) Related: OS#3181 Change-Id: Ifce107dc5f0971d7580b7adc09f05e334792bace --- M openbsc/src/libmsc/smpp_smsc.c 1 file changed, 7 insertions(+), 2 deletions(-) git pull ssh://gerrit.osmocom.org:29418/openbsc refs/changes/59/7859/1 diff --git a/openbsc/src/libmsc/smpp_smsc.c b/openbsc/src/libmsc/smpp_smsc.c index 83c29f6..e4acd3a 100644 --- a/openbsc/src/libmsc/smpp_smsc.c +++ b/openbsc/src/libmsc/smpp_smsc.c @@ -972,14 +972,19 @@ /*! \brief Set the SMPP address and port without binding. */ int smpp_smsc_conf(struct smsc *smsc, const char *bind_addr, uint16_t port) { + smsc->listen_port = port; + + /* Avoid use-after-free if bind_addr == smsc->bind_addr */ + if (smsc->bind_addr == bind_addr) + return 0; + talloc_free((void*)smsc->bind_addr); smsc->bind_addr = NULL; if (bind_addr) { - smsc->bind_addr = talloc_strdup(smsc, bind_addr); + smsc->bind_addr = bind_addr ? talloc_strdup(smsc, bind_addr) : NULL; if (!smsc->bind_addr) return -ENOMEM; } - smsc->listen_port = port; return 0; } -- To view, visit https://gerrit.osmocom.org/7859 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Ifce107dc5f0971d7580b7adc09f05e334792bace Gerrit-PatchSet: 1 Gerrit-Project: openbsc Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol From gerrit-no-reply at lists.osmocom.org Tue Apr 17 14:37:41 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Tue, 17 Apr 2018 14:37:41 +0000 Subject: osmo-msc[master]: smpp_smsc_conf: Fix heap-use-after-free In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7858 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Iaf0d251c8d2912266a087ada4d20905146e08592 Gerrit-PatchSet: 1 Gerrit-Project: osmo-msc Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Tue Apr 17 14:37:42 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Tue, 17 Apr 2018 14:37:42 +0000 Subject: [MERGED] osmo-msc[master]: smpp_smsc_conf: Fix heap-use-after-free In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: smpp_smsc_conf: Fix heap-use-after-free ...................................................................... smpp_smsc_conf: Fix heap-use-after-free Fixes following error catched by enabling address sanitizer: ==20792==ERROR: AddressSanitizer: heap-use-after-free on address 0x60b000122610 at pc 0x7f9c9c3fe063 bp 0x7ffd2e68f600 sp 0x7ffd2e68edb0 READ of size 11 at 0x60b000122610 thread T0 #0 0x7f9c9c3fe062 (/usr/lib/x86_64-linux-gnu/libasan.so.3+0x3c062) #1 0x7f9c9beb8ee4 in talloc_strdup (/usr/lib/x86_64-linux-gnu/libtalloc.so.2+0x6ee4) #2 0x56096a7cf75b in smpp_smsc_conf src/libmsc/smpp_smsc.c:983 #3 0x56096a7cf9df in smpp_smsc_start src/libmsc/smpp_smsc.c:1015 #4 0x56096a7d4935 in smpp_openbsc_start src/libmsc/smpp_openbsc.c:785 #5 0x56096a755ad0 in main src/osmo-msc/msc_main.c:598 #6 0x7f9c9927b2e0 in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x202e0) #7 0x56096a756979 in _start (/home/jenkins/workspace/osmo-gsm-tester_run-prod/trial-805/inst/osmo-msc/bin/osmo-msc+0xf0979) Related: OS#3181 Change-Id: Iaf0d251c8d2912266a087ada4d20905146e08592 --- M src/libmsc/smpp_smsc.c 1 file changed, 6 insertions(+), 1 deletion(-) Approvals: Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/src/libmsc/smpp_smsc.c b/src/libmsc/smpp_smsc.c index 7bbb0a4..ea5303c 100644 --- a/src/libmsc/smpp_smsc.c +++ b/src/libmsc/smpp_smsc.c @@ -977,6 +977,12 @@ /*! \brief Set the SMPP address and port without binding. */ int smpp_smsc_conf(struct smsc *smsc, const char *bind_addr, uint16_t port) { + smsc->listen_port = port; + + /* Avoid use-after-free if bind_addr == smsc->bind_addr */ + if (smsc->bind_addr == bind_addr) + return 0; + talloc_free((void*)smsc->bind_addr); smsc->bind_addr = NULL; if (bind_addr) { @@ -984,7 +990,6 @@ if (!smsc->bind_addr) return -ENOMEM; } - smsc->listen_port = port; return 0; } -- To view, visit https://gerrit.osmocom.org/7858 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: Iaf0d251c8d2912266a087ada4d20905146e08592 Gerrit-PatchSet: 1 Gerrit-Project: osmo-msc Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder From gerrit-no-reply at lists.osmocom.org Tue Apr 17 14:37:46 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Tue, 17 Apr 2018 14:37:46 +0000 Subject: openbsc[master]: smpp_smsc_conf: Fix heap-use-after-free In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7859 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Ifce107dc5f0971d7580b7adc09f05e334792bace Gerrit-PatchSet: 1 Gerrit-Project: openbsc Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Tue Apr 17 14:37:47 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Tue, 17 Apr 2018 14:37:47 +0000 Subject: [MERGED] openbsc[master]: smpp_smsc_conf: Fix heap-use-after-free In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: smpp_smsc_conf: Fix heap-use-after-free ...................................................................... smpp_smsc_conf: Fix heap-use-after-free Backport from osmo-msc Change-Id Iaf0d251c8d2912266a087ada4d20905146e08592. Fixes following error catched by enabling address sanitizer: ==20792==ERROR: AddressSanitizer: heap-use-after-free on address 0x60b000122610 at pc 0x7f9c9c3fe063 bp 0x7ffd2e68f600 sp 0x7ffd2e68edb0 READ of size 11 at 0x60b000122610 thread T0 #0 0x7f9c9c3fe062 (/usr/lib/x86_64-linux-gnu/libasan.so.3+0x3c062) #1 0x7f9c9beb8ee4 in talloc_strdup (/usr/lib/x86_64-linux-gnu/libtalloc.so.2+0x6ee4) #2 0x56096a7cf75b in smpp_smsc_conf src/libmsc/smpp_smsc.c:983 #3 0x56096a7cf9df in smpp_smsc_start src/libmsc/smpp_smsc.c:1015 #4 0x56096a7d4935 in smpp_openbsc_start src/libmsc/smpp_openbsc.c:785 #5 0x56096a755ad0 in main src/osmo-msc/msc_main.c:598 #6 0x7f9c9927b2e0 in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x202e0) #7 0x56096a756979 in _start (/home/jenkins/workspace/osmo-gsm-tester_run-prod/trial-805/inst/osmo-msc/bin/osmo-msc+0xf0979) Related: OS#3181 Change-Id: Ifce107dc5f0971d7580b7adc09f05e334792bace --- M openbsc/src/libmsc/smpp_smsc.c 1 file changed, 7 insertions(+), 2 deletions(-) Approvals: Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/openbsc/src/libmsc/smpp_smsc.c b/openbsc/src/libmsc/smpp_smsc.c index 83c29f6..e4acd3a 100644 --- a/openbsc/src/libmsc/smpp_smsc.c +++ b/openbsc/src/libmsc/smpp_smsc.c @@ -972,14 +972,19 @@ /*! \brief Set the SMPP address and port without binding. */ int smpp_smsc_conf(struct smsc *smsc, const char *bind_addr, uint16_t port) { + smsc->listen_port = port; + + /* Avoid use-after-free if bind_addr == smsc->bind_addr */ + if (smsc->bind_addr == bind_addr) + return 0; + talloc_free((void*)smsc->bind_addr); smsc->bind_addr = NULL; if (bind_addr) { - smsc->bind_addr = talloc_strdup(smsc, bind_addr); + smsc->bind_addr = bind_addr ? talloc_strdup(smsc, bind_addr) : NULL; if (!smsc->bind_addr) return -ENOMEM; } - smsc->listen_port = port; return 0; } -- To view, visit https://gerrit.osmocom.org/7859 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: Ifce107dc5f0971d7580b7adc09f05e334792bace Gerrit-PatchSet: 1 Gerrit-Project: openbsc Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder From gerrit-no-reply at lists.osmocom.org Tue Apr 17 14:39:13 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Tue, 17 Apr 2018 14:39:13 +0000 Subject: osmo-mgw[master]: stats: use libosmocore rate counter for in/out_stream.err_ts... In-Reply-To: References: Message-ID: Patch Set 3: (1 comment) https://gerrit.osmocom.org/#/c/7555/3/src/libosmo-mgcp/mgcp_conn.c File src/libosmo-mgcp/mgcp_conn.c: Line 37: .name = "outstream_err_ts_ctr", in_stream with underscore, but outstream without? Let's try to make this consistent. -- To view, visit https://gerrit.osmocom.org/7555 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I67aa7a8602f60366ef3ba2c5b1319b1b85719f64 Gerrit-PatchSet: 3 Gerrit-Project: osmo-mgw Gerrit-Branch: master Gerrit-Owner: dexter Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Stefan Sperling Gerrit-Reviewer: neels Gerrit-HasComments: Yes From gerrit-no-reply at lists.osmocom.org Tue Apr 17 14:39:32 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Tue, 17 Apr 2018 14:39:32 +0000 Subject: libosmo-sccp[master]: use osmo_init_logging2 In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7850 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I0d45b9381125c496a691ac5da68190b7b3479fc3 Gerrit-PatchSet: 1 Gerrit-Project: libosmo-sccp Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Tue Apr 17 14:39:34 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Tue, 17 Apr 2018 14:39:34 +0000 Subject: [MERGED] libosmo-sccp[master]: use osmo_init_logging2 In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: use osmo_init_logging2 ...................................................................... use osmo_init_logging2 Change-Id: I0d45b9381125c496a691ac5da68190b7b3479fc3 --- M examples/m3ua_example.c M stp/stp_main.c M tests/ss7/ss7_test.c 3 files changed, 8 insertions(+), 6 deletions(-) Approvals: Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/examples/m3ua_example.c b/examples/m3ua_example.c index b3a1505..a9f455c 100644 --- a/examples/m3ua_example.c +++ b/examples/m3ua_example.c @@ -66,8 +66,9 @@ { const int log_cats[] = { DLSS7, DLSUA, DLM3UA, DLSCCP, DLINP }; unsigned int i; - - osmo_init_logging(&log_info); + void *tall_ctx = talloc_named_const(NULL, 1, "example"); + msgb_talloc_ctx_init(tall_ctx, 0); + osmo_init_logging2(tall_ctx, &log_info); for (i = 0; i < ARRAY_SIZE(log_cats); i++) log_set_category_filter(osmo_stderr_target, log_cats[i], 1, LOGL_DEBUG); diff --git a/stp/stp_main.c b/stp/stp_main.c index 1e0c099..aa2304c 100644 --- a/stp/stp_main.c +++ b/stp/stp_main.c @@ -161,8 +161,8 @@ int rc; tall_stp_ctx = talloc_named_const(NULL, 1, "osmo-stp"); - - osmo_init_logging(&log_info); + msgb_talloc_ctx_init(tall_stp_ctx, 0); + osmo_init_logging2(tall_stp_ctx, &log_info); vty_init(&vty_info); handle_options(argc, argv); diff --git a/tests/ss7/ss7_test.c b/tests/ss7/ss7_test.c index 7c51767..0c0cf25 100644 --- a/tests/ss7/ss7_test.c +++ b/tests/ss7/ss7_test.c @@ -280,8 +280,9 @@ { const int log_cats[] = { DLSS7, DLSUA, DLM3UA, DLSCCP, DLINP }; unsigned int i; - - osmo_init_logging(&log_info); + void *tall_ctx = talloc_named_const(NULL, 1, "example"); + msgb_talloc_ctx_init(tall_ctx, 0); + osmo_init_logging2(tall_ctx, &log_info); log_set_print_filename(osmo_stderr_target, 0); -- To view, visit https://gerrit.osmocom.org/7850 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: I0d45b9381125c496a691ac5da68190b7b3479fc3 Gerrit-PatchSet: 1 Gerrit-Project: libosmo-sccp Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder From gerrit-no-reply at lists.osmocom.org Tue Apr 17 14:39:39 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Tue, 17 Apr 2018 14:39:39 +0000 Subject: libosmo-abis[master]: use osmo_init_logging2 In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7853 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Iab9d111aba8f9b423e6a541e928f68b38d561067 Gerrit-PatchSet: 1 Gerrit-Project: libosmo-abis Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Tue Apr 17 14:39:40 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Tue, 17 Apr 2018 14:39:40 +0000 Subject: [MERGED] libosmo-abis[master]: use osmo_init_logging2 In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: use osmo_init_logging2 ...................................................................... use osmo_init_logging2 Change-Id: Iab9d111aba8f9b423e6a541e928f68b38d561067 --- M tests/e1inp_ipa_bsc_test.c M tests/e1inp_ipa_bts_test.c M tests/ipa_proxy_test.c M tests/ipa_recv/ipa_recv_test.c 4 files changed, 9 insertions(+), 7 deletions(-) Approvals: Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/tests/e1inp_ipa_bsc_test.c b/tests/e1inp_ipa_bsc_test.c index b2fb11c..9064d0a 100644 --- a/tests/e1inp_ipa_bsc_test.c +++ b/tests/e1inp_ipa_bsc_test.c @@ -213,8 +213,8 @@ { tall_test = talloc_named_const(NULL, 1, "e1inp_test"); libosmo_abis_init(tall_test); - - osmo_init_logging(&bsc_test_log_info); + msgb_talloc_ctx_init(tall_test, 0); + osmo_init_logging2(tall_test, &bsc_test_log_info); struct e1inp_line_ops ops = { .cfg = { diff --git a/tests/e1inp_ipa_bts_test.c b/tests/e1inp_ipa_bts_test.c index 28e07ab..48a5c59 100644 --- a/tests/e1inp_ipa_bts_test.c +++ b/tests/e1inp_ipa_bts_test.c @@ -265,8 +265,8 @@ tall_test = talloc_named_const(NULL, 1, "e1inp_test"); libosmo_abis_init(tall_test); - - osmo_init_logging(&bts_test_log_info); + msgb_talloc_ctx_init(tall_test, 0); + osmo_init_logging2(tall_test, &bts_test_log_info); struct e1inp_line_ops ops = { .cfg = { diff --git a/tests/ipa_proxy_test.c b/tests/ipa_proxy_test.c index 8f4533c..da99f01 100644 --- a/tests/ipa_proxy_test.c +++ b/tests/ipa_proxy_test.c @@ -39,8 +39,8 @@ { tall_test = talloc_named_const(NULL, 1, "ipa proxy test"); libosmo_abis_init(tall_test); - - osmo_init_logging(&ipa_proxy_test_log_info); + msgb_talloc_ctx_init(tall_test, 0); + osmo_init_logging2(tall_test, &ipa_proxy_test_log_info); vty_init(&vty_info); ipa_proxy_vty_init(); diff --git a/tests/ipa_recv/ipa_recv_test.c b/tests/ipa_recv/ipa_recv_test.c index 33cdcea..07a7ad7 100644 --- a/tests/ipa_recv/ipa_recv_test.c +++ b/tests/ipa_recv/ipa_recv_test.c @@ -234,7 +234,9 @@ int main(int argc, char **argv) { - osmo_init_logging(&info); + void *tall_ctx = talloc_named_const(NULL, 1, "Root context"); + msgb_talloc_ctx_init(tall_ctx, 0); + osmo_init_logging2(tall_ctx, &info); log_set_all_filter(osmo_stderr_target, 1); log_set_log_level(osmo_stderr_target, LOGL_INFO); -- To view, visit https://gerrit.osmocom.org/7853 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: Iab9d111aba8f9b423e6a541e928f68b38d561067 Gerrit-PatchSet: 1 Gerrit-Project: libosmo-abis Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder From gerrit-no-reply at lists.osmocom.org Tue Apr 17 14:39:43 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Tue, 17 Apr 2018 14:39:43 +0000 Subject: osmo-bsc[master]: use osmo_init_logging2 In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7856 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Ifbbfede185aec6573fe7d8bcb49dc5be9f7e7d0b Gerrit-PatchSet: 1 Gerrit-Project: osmo-bsc Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Tue Apr 17 14:39:45 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Tue, 17 Apr 2018 14:39:45 +0000 Subject: [MERGED] osmo-bsc[master]: use osmo_init_logging2 In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: use osmo_init_logging2 ...................................................................... use osmo_init_logging2 Change-Id: Ifbbfede185aec6573fe7d8bcb49dc5be9f7e7d0b --- M tests/bsc-nat-trie/bsc_nat_trie_test.c M tests/bsc-nat/bsc_nat_test.c M tests/bssap/bssap_test.c 3 files changed, 8 insertions(+), 5 deletions(-) Approvals: Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/tests/bsc-nat-trie/bsc_nat_trie_test.c b/tests/bsc-nat-trie/bsc_nat_trie_test.c index 1c48564..32323d9 100644 --- a/tests/bsc-nat-trie/bsc_nat_trie_test.c +++ b/tests/bsc-nat-trie/bsc_nat_trie_test.c @@ -39,8 +39,8 @@ int main(int argc, char **argv) { struct nat_rewrite *trie; - - osmo_init_logging(&log_info); + void *tall_ctx = talloc_named_const(NULL, 1, "bsc_nat_trie_test"); + osmo_init_logging2(tall_ctx, &log_info); printf("Testing the trie\n"); diff --git a/tests/bsc-nat/bsc_nat_test.c b/tests/bsc-nat/bsc_nat_test.c index bb287ec..7aa39ec 100644 --- a/tests/bsc-nat/bsc_nat_test.c +++ b/tests/bsc-nat/bsc_nat_test.c @@ -1559,9 +1559,10 @@ int main(int argc, char **argv) { - msgb_talloc_ctx_init(NULL, 0); + void *tall_ctx = talloc_named_const(NULL, 1, "bsc_nat_test"); + msgb_talloc_ctx_init(tall_ctx, 0); sccp_set_log_area(DLSCCP); - osmo_init_logging(&log_info); + osmo_init_logging2(tall_ctx, &log_info); test_filter(); test_contrack(); diff --git a/tests/bssap/bssap_test.c b/tests/bssap/bssap_test.c index 00d925d..00bc64c 100644 --- a/tests/bssap/bssap_test.c +++ b/tests/bssap/bssap_test.c @@ -140,7 +140,9 @@ int main(int argc, char **argv) { - osmo_init_logging(&log_info); + void *tall_ctx = talloc_named_const(NULL, 1, "bssap_test"); + msgb_talloc_ctx_init(tall_ctx, 0); + osmo_init_logging2(tall_ctx, &log_info); log_set_use_color(osmo_stderr_target, 0); log_set_print_timestamp(osmo_stderr_target, 0); log_set_print_filename(osmo_stderr_target, 0); -- To view, visit https://gerrit.osmocom.org/7856 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: Ifbbfede185aec6573fe7d8bcb49dc5be9f7e7d0b Gerrit-PatchSet: 1 Gerrit-Project: osmo-bsc Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder From gerrit-no-reply at lists.osmocom.org Tue Apr 17 14:40:04 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Tue, 17 Apr 2018 14:40:04 +0000 Subject: osmo-hlr[master]: use osmo_init_logging2 In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7854 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: If4449cce1af46be22cc370abd3a6da8e22a31fa5 Gerrit-PatchSet: 1 Gerrit-Project: osmo-hlr Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Tue Apr 17 14:40:21 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Tue, 17 Apr 2018 14:40:21 +0000 Subject: osmo-hlr[master]: Remove unused src/db_test.c In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7855 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Ifa409df9b4bb94bd4e8f15568486066393009494 Gerrit-PatchSet: 1 Gerrit-Project: osmo-hlr Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Tue Apr 17 14:40:22 2018 From: gerrit-no-reply at lists.osmocom.org (dexter) Date: Tue, 17 Apr 2018 14:40:22 +0000 Subject: [PATCH] osmo-bts[master]: osmo-bts-trx: perform error concealment for FR frames In-Reply-To: References: Message-ID: Hello Vadim Yanitskiy, Neels Hofmeyr, Jenkins Builder, I'd like you to reexamine a change. Please visit https://gerrit.osmocom.org/5214 to look at the new patch set (#13). osmo-bts-trx: perform error concealment for FR frames When a bad voice frame is received, it is replaced by a silence frame. This may cause unpleasant audio effects. This change implements a functionality to craft a replacement frame from the last known good frame using ECU implementation from libosmocodec. At the moment, only FR is supported. Depends: libosmocore I06a21f60db01bfe1c2b838f93866fad1d53fdcd1 Change-Id: Iae9e69a9578ae305bca42f834694af96a29084e6 --- M include/osmo-bts/gsm_data_shared.h M src/osmo-bts-trx/scheduler_trx.c 2 files changed, 22 insertions(+), 2 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-bts refs/changes/14/5214/13 diff --git a/include/osmo-bts/gsm_data_shared.h b/include/osmo-bts/gsm_data_shared.h index c6557ee..37d30ab 100644 --- a/include/osmo-bts/gsm_data_shared.h +++ b/include/osmo-bts/gsm_data_shared.h @@ -5,6 +5,7 @@ #include #include +#include #include #include #include @@ -316,6 +317,11 @@ } ms_power_ctrl; struct msgb *pending_rel_ind_msg; + + /* ECU (Error Concealment Unit) state */ + union { + struct osmo_ecu_fr_state fr; + } ecu_state; }; extern const struct value_string lchan_ciph_state_names[]; diff --git a/src/osmo-bts-trx/scheduler_trx.c b/src/osmo-bts-trx/scheduler_trx.c index d96eea0..4a31df2 100644 --- a/src/osmo-bts-trx/scheduler_trx.c +++ b/src/osmo-bts-trx/scheduler_trx.c @@ -31,6 +31,7 @@ #include #include #include +#include #include #include #include @@ -964,6 +965,7 @@ uint8_t tch_data[128]; /* just to be safe */ int rc, amr = 0; int n_errors, n_bits_total; + bool bfi_flag = false; struct gsm_lchan *lchan = get_lchan_by_chan_nr(l1t->trx, trx_chan_desc[chan].chan_nr | tn); @@ -1054,11 +1056,13 @@ if (rc < 0) { LOGL1S(DL1P, LOGL_NOTICE, l1t, tn, chan, fn, "Received bad data (%u/%u)\n", fn % l1ts->mf_period, l1ts->mf_period); + bfi_flag = true; goto bfi; } if (rc < 4) { LOGL1S(DL1P, LOGL_NOTICE, l1t, tn, chan, fn, "Received bad data (%u/%u) " "with invalid codec mode %d\n", fn % l1ts->mf_period, l1ts->mf_period, rc); + bfi_flag = true; goto bfi; } @@ -1075,8 +1079,14 @@ case GSM48_CMODE_SPEECH_V1: /* FR */ if (lchan->tch.dtx.ul_sid) return 0; /* DTXu: pause in progress */ - memset(tch_data, 0, GSM_FR_BYTES); - tch_data[0] = 0xd0; + + /* Perform error concealment if possible */ + rc = osmo_ecu_fr_conceal(&lchan->ecu_state.fr, tch_data); + if (rc) { + memset(tch_data, 0, GSM_FR_BYTES); + tch_data[0] = 0xd0; + } + rc = GSM_FR_BYTES; break; case GSM48_CMODE_SPEECH_EFR: /* EFR */ @@ -1104,6 +1114,10 @@ if (rsl_cmode != RSL_CMOD_SPD_SPEECH) return 0; + /* Reset ECU with a good frame */ + if (!bfi_flag && tch_mode == GSM48_CMODE_SPEECH_V1) + osmo_ecu_fr_reset(&lchan->ecu_state.fr, tch_data); + /* TCH or BFI */ return _sched_compose_tch_ind(l1t, tn, (fn + GSM_HYPERFRAME - 7) % GSM_HYPERFRAME, chan, tch_data, rc); -- To view, visit https://gerrit.osmocom.org/5214 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newpatchset Gerrit-Change-Id: Iae9e69a9578ae305bca42f834694af96a29084e6 Gerrit-PatchSet: 13 Gerrit-Project: osmo-bts Gerrit-Branch: master Gerrit-Owner: dexter Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Neels Hofmeyr Gerrit-Reviewer: Vadim Yanitskiy Gerrit-Reviewer: dexter From gerrit-no-reply at lists.osmocom.org Tue Apr 17 14:40:23 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Tue, 17 Apr 2018 14:40:23 +0000 Subject: [MERGED] osmo-hlr[master]: Remove unused src/db_test.c In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: Remove unused src/db_test.c ...................................................................... Remove unused src/db_test.c There's a larger test suite in use in tests/db/db_test.c Change-Id: Ifa409df9b4bb94bd4e8f15568486066393009494 --- M src/Makefile.am D src/db_test.c 2 files changed, 0 insertions(+), 91 deletions(-) Approvals: Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/src/Makefile.am b/src/Makefile.am index 9fbb062..60fc479 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -38,10 +38,6 @@ osmo-hlr-db-tool \ $(NULL) -noinst_PROGRAMS = \ - db_test \ - $(NULL) - osmo_hlr_SOURCES = \ auc.c \ ctrl.c \ diff --git a/src/db_test.c b/src/db_test.c deleted file mode 100644 index 0d10797..0000000 --- a/src/db_test.c +++ /dev/null @@ -1,87 +0,0 @@ -#include - -#include -#include - -#include "db.h" -#include "hlr.h" -#include "rand.h" -#include "logging.h" - -static struct hlr *g_hlr; - -static int test(const char *imsi, struct db_context *dbc) -{ - struct osmo_auth_vector vec[3]; - int rc, i; - - /* initialize all vectors with a known token pattern */ - memset(vec, 0x55, sizeof(vec)); - for (i = 0; i < ARRAY_SIZE(vec); i++) - vec[i].res_len = 0; - - rc = db_get_auc(dbc, imsi, 0, vec, ARRAY_SIZE(vec), NULL, NULL); - if (rc <= 0) { - LOGP(DMAIN, LOGL_ERROR, "Cannot obtain auth tuples for '%s'\n", imsi); - return rc; - } - LOGP(DMAIN, LOGL_INFO, "Obtained %u tuples for subscriber IMSI %s\n", - rc, imsi); - - for (i = 0; i < rc; i++) { - struct osmo_auth_vector *v = vec + i; - LOGP(DMAIN, LOGL_DEBUG, "Tuple %u, auth_types=0x%x\n", i, v->auth_types); - LOGP(DMAIN, LOGL_DEBUG, "RAND=%s\n", osmo_hexdump_nospc(v->rand, sizeof(v->rand))); - LOGP(DMAIN, LOGL_DEBUG, "AUTN=%s\n", osmo_hexdump_nospc(v->autn, sizeof(v->autn))); - LOGP(DMAIN, LOGL_DEBUG, "CK=%s\n", osmo_hexdump_nospc(v->ck, sizeof(v->ck))); - LOGP(DMAIN, LOGL_DEBUG, "IK=%s\n", osmo_hexdump_nospc(v->ik, sizeof(v->ik))); - LOGP(DMAIN, LOGL_DEBUG, "RES=%s\n", osmo_hexdump_nospc(v->res, v->res_len)); - LOGP(DMAIN, LOGL_DEBUG, "Kc=%s\n", osmo_hexdump_nospc(v->kc, sizeof(v->kc))); - LOGP(DMAIN, LOGL_DEBUG, "SRES=%s\n", osmo_hexdump_nospc(v->sres, sizeof(v->sres))); - } - - return rc; -} - -int main(int argc, char **argv) -{ - int rc; - - g_hlr = talloc_zero(NULL, struct hlr); - - rc = osmo_init_logging2(g_hlr, &hlr_log_info); - if (rc < 0) { - fprintf(stderr, "Error initializing logging\n"); - exit(1); - } - LOGP(DMAIN, LOGL_NOTICE, "hlr starting\n"); - - rc = rand_init(); - if (rc < 0) { - LOGP(DMAIN, LOGL_ERROR, "Error initializing random source\n"); - exit(1); - } - - g_hlr->dbc = db_open(NULL, "hlr.db", true); - if (!g_hlr->dbc) { - LOGP(DMAIN, LOGL_ERROR, "Error opening database\n"); - exit(1); - } - - /* non-existing subscriber */ - rc = test("901990123456789", g_hlr->dbc); - /* 2G only AUC data (COMP128v1 / MILENAGE) */ - rc = test("901990000000001", g_hlr->dbc); - /* 2G + 3G AUC data (COMP128v1 / MILENAGE) */ - rc = test("901990000000002", g_hlr->dbc); - /* 3G AUC data (MILENAGE) */ - rc = test("901990000000003", g_hlr->dbc); - - LOGP(DMAIN, LOGL_NOTICE, "Exiting\n"); - - db_close(g_hlr->dbc); - - log_fini(); - - exit(0); -} -- To view, visit https://gerrit.osmocom.org/7855 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: Ifa409df9b4bb94bd4e8f15568486066393009494 Gerrit-PatchSet: 1 Gerrit-Project: osmo-hlr Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder From gerrit-no-reply at lists.osmocom.org Tue Apr 17 14:40:23 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Tue, 17 Apr 2018 14:40:23 +0000 Subject: [MERGED] osmo-hlr[master]: use osmo_init_logging2 In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: use osmo_init_logging2 ...................................................................... use osmo_init_logging2 Change-Id: If4449cce1af46be22cc370abd3a6da8e22a31fa5 --- M src/db_test.c M src/hlr.c M src/hlr_db_tool.c M tests/auc/auc_test.c M tests/auc/gen_ts_55_205_test_sets/main_template.c M tests/db/db_test.c 6 files changed, 11 insertions(+), 6 deletions(-) Approvals: Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/src/db_test.c b/src/db_test.c index 7891c90..0d10797 100644 --- a/src/db_test.c +++ b/src/db_test.c @@ -49,7 +49,7 @@ g_hlr = talloc_zero(NULL, struct hlr); - rc = osmo_init_logging(&hlr_log_info); + rc = osmo_init_logging2(g_hlr, &hlr_log_info); if (rc < 0) { fprintf(stderr, "Error initializing logging\n"); exit(1); diff --git a/src/hlr.c b/src/hlr.c index 4fbc268..3845993 100644 --- a/src/hlr.c +++ b/src/hlr.c @@ -475,7 +475,7 @@ g_hlr = talloc_zero(hlr_ctx, struct hlr); - rc = osmo_init_logging(&hlr_log_info); + rc = osmo_init_logging2(hlr_ctx, &hlr_log_info); if (rc < 0) { fprintf(stderr, "Error initializing logging\n"); exit(1); diff --git a/src/hlr_db_tool.c b/src/hlr_db_tool.c index 318308c..e83b098 100644 --- a/src/hlr_db_tool.c +++ b/src/hlr_db_tool.c @@ -386,7 +386,7 @@ OSMO_ASSERT(g_hlr_db_tool_ctx); talloc_set_name_const(g_hlr_db_tool_ctx, "OsmoHLR-db-tool"); - rc = osmo_init_logging(&hlr_log_info); + rc = osmo_init_logging2(g_hlr_db_tool_ctx, &hlr_log_info); if (rc < 0) { fprintf(stderr, "Error initializing logging\n"); exit(EXIT_FAILURE); diff --git a/tests/auc/auc_test.c b/tests/auc/auc_test.c index e9c114c..e23cc02 100644 --- a/tests/auc/auc_test.c +++ b/tests/auc/auc_test.c @@ -610,7 +610,9 @@ handle_options(argc, argv); - osmo_init_logging(&hlr_log_info); + void *tall_ctx = talloc_named_const(NULL, 1, "auc_test"); + + osmo_init_logging2(tall_ctx, &hlr_log_info); log_set_print_filename(osmo_stderr_target, cmdline_opts.verbose); log_set_print_timestamp(osmo_stderr_target, 0); log_set_use_color(osmo_stderr_target, 0); diff --git a/tests/auc/gen_ts_55_205_test_sets/main_template.c b/tests/auc/gen_ts_55_205_test_sets/main_template.c index 37f47c3..a78bddb 100644 --- a/tests/auc/gen_ts_55_205_test_sets/main_template.c +++ b/tests/auc/gen_ts_55_205_test_sets/main_template.c @@ -29,6 +29,7 @@ #include #include #include +#include #include @@ -102,7 +103,9 @@ int main() { printf("3GPP TS 55.205 Test Sets\n"); - osmo_init_logging(&hlr_log_info); + void *tall_ctx = talloc_named_const(NULL, 1, "test"); + msgb_talloc_ctx_init(tall_ctx, 0); + osmo_init_logging2(tall_ctx, &hlr_log_info); log_set_print_filename(osmo_stderr_target, 0); log_set_print_timestamp(osmo_stderr_target, 0); log_set_use_color(osmo_stderr_target, 0); diff --git a/tests/db/db_test.c b/tests/db/db_test.c index 6bf7a86..058588b 100644 --- a/tests/db/db_test.c +++ b/tests/db/db_test.c @@ -839,7 +839,7 @@ handle_options(argc, argv); - osmo_init_logging(&hlr_log_info); + osmo_init_logging2(ctx, &hlr_log_info); log_set_print_filename(osmo_stderr_target, cmdline_opts.verbose); log_set_print_timestamp(osmo_stderr_target, 0); log_set_use_color(osmo_stderr_target, 0); -- To view, visit https://gerrit.osmocom.org/7854 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: If4449cce1af46be22cc370abd3a6da8e22a31fa5 Gerrit-PatchSet: 1 Gerrit-Project: osmo-hlr Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder From gerrit-no-reply at lists.osmocom.org Tue Apr 17 14:44:29 2018 From: gerrit-no-reply at lists.osmocom.org (dexter) Date: Tue, 17 Apr 2018 14:44:29 +0000 Subject: [PATCH] osmo-mgw[master]: stats: use libosmocore rate counter for in/out_stream.err_ts... In-Reply-To: References: Message-ID: Hello Harald Welte, Jenkins Builder, I'd like you to reexamine a change. Please visit https://gerrit.osmocom.org/7555 to look at the new patch set (#4). stats: use libosmocore rate counter for in/out_stream.err_ts_counter The two counters: in_stream.err_ts_counter and out_stream.err_ts_counter are still handcoded. To make them better accessible they should be replaced with libosmocore rate counters. - replace state.in_stream.err_ts_counter with libosmocore rate counter - replace state.out_stream.err_ts_counter with libosmocore rate counter Change-Id: I67aa7a8602f60366ef3ba2c5b1319b1b85719f64 Related: OS#2517 --- M include/osmocom/mgcp/mgcp_internal.h M src/libosmo-mgcp/mgcp_conn.c M src/libosmo-mgcp/mgcp_network.c M src/libosmo-mgcp/mgcp_stat.c M src/libosmo-mgcp/mgcp_vty.c M tests/mgcp/mgcp_test.c 6 files changed, 63 insertions(+), 15 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-mgw refs/changes/55/7555/4 diff --git a/include/osmocom/mgcp/mgcp_internal.h b/include/osmocom/mgcp/mgcp_internal.h index 0da2c56..ff02768 100644 --- a/include/osmocom/mgcp/mgcp_internal.h +++ b/include/osmocom/mgcp/mgcp_internal.h @@ -28,6 +28,7 @@ #include #include #include +#include #define CI_UNUSED 0 @@ -45,7 +46,7 @@ uint32_t ssrc; uint16_t last_seq; uint32_t last_timestamp; - uint32_t err_ts_counter; + struct rate_ctr *err_ts_ctr; int32_t last_tsdelta; uint32_t last_arrival_time; }; @@ -202,6 +203,8 @@ uint32_t octets; } stats; } osmux; + + struct rate_ctr_group *rate_ctr_group; }; /*! Connection type, specifies which member of the union "u" in mgcp_conn diff --git a/src/libosmo-mgcp/mgcp_conn.c b/src/libosmo-mgcp/mgcp_conn.c index 998dbc5..0055049 100644 --- a/src/libosmo-mgcp/mgcp_conn.c +++ b/src/libosmo-mgcp/mgcp_conn.c @@ -26,7 +26,27 @@ #include #include #include +#include #include + +const static struct rate_ctr_desc rate_ctr_desc[] = { + { + .name = "in_stream_err_ts_ctr", + .description = "inbound rtp-stream timestamp errors", + },{ + .name = "out_stream_err_ts_ctr", + .description = "outbound rtp-stream timestamp errors", + } +}; + +const static struct rate_ctr_group_desc rate_ctr_group_desc = { + .group_name_prefix = "conn_rtp", + .group_description = "rtp connection statistics", + .class_id = 1, + .num_ctr = 2, + .ctr_desc = rate_ctr_desc +}; + /* Allocate a new connection identifier. According to RFC3435, they must * be unique only within the scope of the endpoint. (Caller must provide @@ -87,6 +107,10 @@ static void mgcp_rtp_conn_init(struct mgcp_conn_rtp *conn_rtp, struct mgcp_conn *conn) { struct mgcp_rtp_end *end = &conn_rtp->end; + /* FIXME: Each new rate counter group requires an unique index. At the + * moment we generate this index using this counter, but perhaps there + * is a more concious way to assign the indexes. */ + static unsigned int rate_ctr_index = 0; conn_rtp->type = MGCP_RTP_DEFAULT; conn_rtp->osmux.allocated_cid = -1; @@ -108,6 +132,15 @@ mgcp_rtp_codec_init(&end->codec); mgcp_rtp_codec_init(&end->alt_codec); + + conn_rtp->rate_ctr_group = + rate_ctr_group_alloc(conn, &rate_ctr_group_desc, + rate_ctr_index); + conn_rtp->state.in_stream.err_ts_ctr = + &conn_rtp->rate_ctr_group->ctr[0]; + conn_rtp->state.out_stream.err_ts_ctr = + &conn_rtp->rate_ctr_group->ctr[1]; + rate_ctr_index++; } /* Cleanup rtp connection struct */ @@ -116,6 +149,7 @@ osmux_disable_conn(conn_rtp); osmux_release_cid(conn_rtp); mgcp_free_rtp_port(&conn_rtp->end); + rate_ctr_group_free(conn_rtp->rate_ctr_group); } /*! allocate a new connection list entry. diff --git a/src/libosmo-mgcp/mgcp_network.c b/src/libosmo-mgcp/mgcp_network.c index 6923b97..c56e433 100644 --- a/src/libosmo-mgcp/mgcp_network.c +++ b/src/libosmo-mgcp/mgcp_network.c @@ -222,7 +222,7 @@ if (seq == sstate->last_seq) { if (timestamp != sstate->last_timestamp) { - sstate->err_ts_counter += 1; + rate_ctr_inc(sstate->err_ts_ctr); LOGP(DRTP, LOGL_ERROR, "The %s timestamp delta is != 0 but the sequence " "number %d is the same, " @@ -272,7 +272,7 @@ ts_alignment_error(sstate, state->packet_duration, timestamp); if (timestamp_error) { - sstate->err_ts_counter += 1; + rate_ctr_inc(sstate->err_ts_ctr); LOGP(DRTP, LOGL_NOTICE, "The %s timestamp has an alignment error of %d " "on 0x%x SSRC: %u " @@ -505,13 +505,16 @@ mgcp_rtp_annex_count(endp, state, seq, transit, ssrc); if (!state->initialized) { + /* FIXME: Move this initialization to mgcp.conn.c */ state->initialized = 1; state->in_stream.last_seq = seq - 1; state->in_stream.ssrc = state->patch.orig_ssrc = ssrc; state->in_stream.last_tsdelta = 0; state->packet_duration = mgcp_rtp_packet_duration(endp, rtp_end); - state->out_stream = state->in_stream; + state->out_stream.last_seq = seq - 1; + state->out_stream.ssrc = state->patch.orig_ssrc = ssrc; + state->out_stream.last_tsdelta = 0; state->out_stream.last_timestamp = timestamp; state->out_stream.ssrc = ssrc - 1; /* force output SSRC change */ LOGP(DRTP, LOGL_INFO, diff --git a/src/libosmo-mgcp/mgcp_stat.c b/src/libosmo-mgcp/mgcp_stat.c index 581130c..cc723bb 100644 --- a/src/libosmo-mgcp/mgcp_stat.c +++ b/src/libosmo-mgcp/mgcp_stat.c @@ -87,9 +87,9 @@ if (conn->conn->endp->cfg->osmux != OSMUX_USAGE_OFF) { /* Error Counter */ nchars = snprintf(str, str_len, - "\r\nX-Osmo-CP: EC TI=%u, TO=%u", - conn->state.in_stream.err_ts_counter, - conn->state.out_stream.err_ts_counter); + "\r\nX-Osmo-CP: EC TI=%lu, TO=%lu", + conn->state.in_stream.err_ts_ctr->current, + conn->state.out_stream.err_ts_ctr->current); if (nchars < 0 || nchars >= str_len) goto truncate; diff --git a/src/libosmo-mgcp/mgcp_vty.c b/src/libosmo-mgcp/mgcp_vty.c index 14ecd17..392a176 100644 --- a/src/libosmo-mgcp/mgcp_vty.c +++ b/src/libosmo-mgcp/mgcp_vty.c @@ -160,15 +160,16 @@ struct mgcp_rtp_codec *codec = &end->codec; vty_out(vty, - " Timestamp Errs: %d->%d%s" + " Timestamp Errs: %lu->%lu%s" " Dropped Packets: %d%s" " Payload Type: %d Rate: %u Channels: %d %s" " Frame Duration: %u Frame Denominator: %u%s" " FPP: %d Packet Duration: %u%s" " FMTP-Extra: %s Audio-Name: %s Sub-Type: %s%s" " Output-Enabled: %d Force-PTIME: %d%s", - state->in_stream.err_ts_counter, - state->out_stream.err_ts_counter, VTY_NEWLINE, + state->in_stream.err_ts_ctr->current, + state->out_stream.err_ts_ctr->current, + VTY_NEWLINE, end->stats.dropped_packets, VTY_NEWLINE, codec->payload_type, codec->rate, codec->channels, VTY_NEWLINE, codec->frame_duration_num, codec->frame_duration_den, diff --git a/tests/mgcp/mgcp_test.c b/tests/mgcp/mgcp_test.c index f6c421a..0af3799 100644 --- a/tests/mgcp/mgcp_test.c +++ b/tests/mgcp/mgcp_test.c @@ -1133,6 +1133,8 @@ int last_out_ts_err_cnt = 0; struct mgcp_conn_rtp *conn = NULL; struct mgcp_conn *_conn = NULL; + struct rate_ctr test_ctr_in; + struct rate_ctr test_ctr_out; printf("Testing packet error detection%s%s.\n", patch_ssrc ? ", patch SSRC" : "", @@ -1141,6 +1143,11 @@ memset(&trunk, 0, sizeof(trunk)); memset(&endp, 0, sizeof(endp)); memset(&state, 0, sizeof(state)); + + test_ctr_in.current = 0; + test_ctr_out.current = 0; + state.in_stream.err_ts_ctr = &test_ctr_in; + state.out_stream.err_ts_ctr = &test_ctr_out; endp.type = &ep_typeset.rtp; @@ -1186,18 +1193,18 @@ state.in_stream.last_tsdelta, state.in_stream.last_seq); printf("Out TS change: %d, dTS: %d, Seq change: %d, " - "TS Err change: in %+d, out %+d\n", + "TS Err change: in +%lu, out +%lu\n", state.out_stream.last_timestamp - last_timestamp, state.out_stream.last_tsdelta, state.out_stream.last_seq - last_seqno, - state.in_stream.err_ts_counter - last_in_ts_err_cnt, - state.out_stream.err_ts_counter - last_out_ts_err_cnt); + state.in_stream.err_ts_ctr->current - last_in_ts_err_cnt, + state.out_stream.err_ts_ctr->current - last_out_ts_err_cnt); printf("Stats: Jitter = %u, Transit = %d\n", calc_jitter(&state), state.stats.transit); - last_in_ts_err_cnt = state.in_stream.err_ts_counter; - last_out_ts_err_cnt = state.out_stream.err_ts_counter; + last_in_ts_err_cnt = state.in_stream.err_ts_ctr->current; + last_out_ts_err_cnt = state.out_stream.err_ts_ctr->current; last_timestamp = state.out_stream.last_timestamp; last_seqno = state.out_stream.last_seq; } -- To view, visit https://gerrit.osmocom.org/7555 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newpatchset Gerrit-Change-Id: I67aa7a8602f60366ef3ba2c5b1319b1b85719f64 Gerrit-PatchSet: 4 Gerrit-Project: osmo-mgw Gerrit-Branch: master Gerrit-Owner: dexter Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Stefan Sperling Gerrit-Reviewer: neels From jenkins at lists.osmocom.org Tue Apr 17 14:47:44 2018 From: jenkins at lists.osmocom.org (jenkins at lists.osmocom.org) Date: Tue, 17 Apr 2018 14:47:44 +0000 (UTC) Subject: =?UTF-8?Q?Build_failed_in_Jenkins:_master-osmo-bts_=C2=BB_lc15, origin/?= =?UTF-8?Q?nrw/litecell15-next,default,osmocom-master-debian9_#521?= Message-ID: <1771428611.429.1523976464388.JavaMail.jenkins@jenkins.osmocom.org> See ------------------------------------------ [...truncated 112.28 KB...] + grep -c remotes/origin/master$ + [ x1 != x0 ] + branch=origin/master + test -d libosmo-abis + cd libosmo-abis + git fetch --tags origin >From git://git.osmocom.org/libosmo-abis 43b5b69..c04d8d2 master -> origin/master + git fetch origin + deps= osmo-clean-workspace.sh + chmod -R +w . + git checkout -f HEAD + git clean -dxf + [ -d ] + [ -d layer1-headers ] + git checkout -f origin/master Previous HEAD position was 43b5b69... configure.ac: Fix condition check for RTP_SIGNAL_PTR_CAST define HEAD is now at c04d8d2... use osmo_init_logging2 + git rev-parse HEAD c04d8d2274a2d081000b57be307a5ad88e937bdd + cd libosmo-abis + mkdir -p + autoreconf --install --force libtoolize: putting auxiliary files in AC_CONFIG_AUX_DIR, '.'. libtoolize: copying file './ltmain.sh' libtoolize: putting macros in AC_CONFIG_MACRO_DIRS, 'm4'. libtoolize: copying file 'm4/libtool.m4' libtoolize: copying file 'm4/ltoptions.m4' libtoolize: copying file 'm4/ltsugar.m4' libtoolize: copying file 'm4/ltversion.m4' libtoolize: copying file 'm4/lt~obsolete.m4' configure.ac:20: installing './compile' configure.ac:22: installing './config.guess' configure.ac:22: installing './config.sub' configure.ac:8: installing './install-sh' configure.ac:8: installing './missing' src/Makefile.am: installing './depcomp' + ./configure --prefix= checking for a BSD-compatible install... /usr/bin/install -c checking whether build environment is sane... yes checking for a thread-safe mkdir -p... /bin/mkdir -p checking for gawk... gawk checking whether make sets $(MAKE)... yes checking whether make supports nested variables... yes checking whether make supports nested variables... (cached) yes checking whether make sets $(MAKE)... (cached) yes checking for gcc... gcc checking whether the C compiler works... yes checking for C compiler default output file name... a.out checking for suffix of executables... checking whether we are cross compiling... no checking for suffix of object files... o checking whether we are using the GNU C compiler... yes checking whether gcc accepts -g... yes checking for gcc option to accept ISO C89... none needed checking whether gcc understands -c and -o together... yes checking for style of include used by make... GNU checking dependency style of gcc... gcc3 checking build system type... x86_64-pc-linux-gnu checking host system type... x86_64-pc-linux-gnu checking how to print strings... printf checking for a sed that does not truncate output... /bin/sed checking for grep that handles long lines and -e... /bin/grep checking for egrep... /bin/grep -E checking for fgrep... /bin/grep -F checking for ld used by gcc... /usr/bin/ld checking if the linker (/usr/bin/ld) is GNU ld... yes checking for BSD- or MS-compatible name lister (nm)... /usr/bin/nm -B checking the name lister (/usr/bin/nm -B) interface... BSD nm checking whether ln -s works... yes checking the maximum length of command line arguments... 1572864 checking how to convert x86_64-pc-linux-gnu file names to x86_64-pc-linux-gnu format... func_convert_file_noop checking how to convert x86_64-pc-linux-gnu file names to toolchain format... func_convert_file_noop checking for /usr/bin/ld option to reload object files... -r checking for objdump... objdump checking how to recognize dependent libraries... pass_all checking for dlltool... no checking how to associate runtime and link libraries... printf %s\n checking for ar... ar checking for archiver @FILE support... @ checking for strip... strip checking for ranlib... ranlib checking command to parse /usr/bin/nm -B output from gcc object... ok checking for sysroot... no checking for a working dd... /bin/dd checking how to truncate binary pipes... /bin/dd bs=4096 count=1 checking for mt... mt checking if mt is a manifest tool... no checking how to run the C preprocessor... gcc -E checking for ANSI C header files... yes checking for sys/types.h... yes checking for sys/stat.h... yes checking for stdlib.h... yes checking for string.h... yes checking for memory.h... yes checking for strings.h... yes checking for inttypes.h... yes checking for stdint.h... yes checking for unistd.h... yes checking for dlfcn.h... yes checking for objdir... .libs checking if gcc supports -fno-rtti -fno-exceptions... no checking for gcc option to produce PIC... -fPIC -DPIC checking if gcc PIC flag -fPIC -DPIC works... yes checking if gcc static flag -static works... yes checking if gcc supports -c -o file.o... yes checking if gcc supports -c -o file.o... (cached) yes checking whether the gcc linker (/usr/bin/ld -m elf_x86_64) supports shared libraries... yes checking whether -lc should be explicitly linked in... no checking dynamic linker characteristics... GNU/Linux ld.so checking how to hardcode library paths into programs... immediate checking whether stripping libraries is possible... yes checking if libtool supports shared libraries... yes checking whether to build shared libraries... yes checking whether to build static libraries... yes checking for pkg-config... /usr/bin/pkg-config checking for pkg-config... /usr/bin/pkg-config checking pkg-config is at least version 0.20... yes checking if gcc supports -fvisibility=hidden... yes checking for LIBOSMOCORE... yes checking for LIBOSMOVTY... yes checking for LIBOSMOGSM... yes checking for ORTP... yes checking dahdi/user.h usability... no checking dahdi/user.h presence... no checking for dahdi/user.h... no configure: WARNING: DAHDI input driver will not be built CFLAGS="-g -O2 -Wall" CPPFLAGS=" -Wall" checking that generated files are newer than configure... done configure: creating ./config.status config.status: creating libosmoabis.pc config.status: creating libosmotrau.pc config.status: creating include/Makefile config.status: creating src/Makefile config.status: creating tests/Makefile config.status: creating Makefile config.status: creating config.h config.status: executing tests/atconfig commands config.status: executing depfiles commands config.status: executing libtool commands + make -j 8 install echo 0.3.2.106-c04d > .version-t && mv .version-t .version make install-recursive make[1]: Entering directory ' Making install in include make[2]: Entering directory ' make[3]: Entering directory ' make[3]: Nothing to be done for 'install-exec-am'. /bin/mkdir -p ' /bin/mkdir -p ' /usr/bin/install -c -m 644 osmocom/abis/ipa.h osmocom/abis/trau_frame.h osmocom/abis/ipa_proxy.h osmocom/abis/ipaccess.h osmocom/abis/abis.h osmocom/abis/subchan_demux.h osmocom/abis/e1_input.h osmocom/abis/lapd.h osmocom/abis/lapd_pcap.h osmocom/abis/unixsocket_proto.h ' /bin/mkdir -p ' /usr/bin/install -c -m 644 osmocom/trau/osmo_ortp.h ' make[3]: Leaving directory ' make[2]: Leaving directory ' Making install in src make[2]: Entering directory ' CC e1_input.lo CC init.lo CC e1_input_vty.lo CC trau_frame.lo CC subchan_demux.lo CC ipa_proxy.lo CC input/dahdi.lo CC input/ipa.lo CC input/ipaccess.lo CC input/lapd.lo CC input/lapd_pcap.lo CC input/misdn.lo CC input/rs232.lo CC input/unixsocket.lo CC trau/libosmotrau_la-osmo_ortp.lo trau/osmo_ortp.c:205:9: note: #pragma message: Using internal ortp API: rtp_session_rtcp_rec #pragma message ("Using internal ortp API: rtp_session_rtcp_rec") ^~~~~~~ CCLD libosmoabis.la CCLD libosmotrau.la ar: `u' modifier ignored since `D' is the default (see `U') ar: `u' modifier ignored since `D' is the default (see `U') make[3]: Entering directory ' make[3]: Nothing to be done for 'install-data-am'. /bin/mkdir -p ' /bin/bash ../libtool --mode=install /usr/bin/install -c libosmoabis.la libosmotrau.la ' libtool: install: /usr/bin/install -c .libs/libosmoabis.so.6.0.0 libtool: install: (cd && { ln -s -f libosmoabis.so.6.0.0 libosmoabis.so.6 || { rm -f libosmoabis.so.6 && ln -s libosmoabis.so.6.0.0 libosmoabis.so.6; }; }) libtool: install: (cd && { ln -s -f libosmoabis.so.6.0.0 libosmoabis.so || { rm -f libosmoabis.so && ln -s libosmoabis.so.6.0.0 libosmoabis.so; }; }) libtool: install: /usr/bin/install -c .libs/libosmoabis.lai libtool: install: /usr/bin/install -c .libs/libosmotrau.so.2.0.0 libtool: install: (cd && { ln -s -f libosmotrau.so.2.0.0 libosmotrau.so.2 || { rm -f libosmotrau.so.2 && ln -s libosmotrau.so.2.0.0 libosmotrau.so.2; }; }) libtool: install: (cd && { ln -s -f libosmotrau.so.2.0.0 libosmotrau.so || { rm -f libosmotrau.so && ln -s libosmotrau.so.2.0.0 libosmotrau.so; }; }) libtool: install: /usr/bin/install -c .libs/libosmotrau.lai libtool: install: /usr/bin/install -c .libs/libosmoabis.a libtool: install: chmod 644 libtool: install: ranlib libtool: install: /usr/bin/install -c .libs/libosmotrau.a libtool: install: chmod 644 libtool: install: ranlib libtool: finish: PATH="/usr/local/bin:/usr/bin:/bin:/usr/games:/home/osmocom-build/bin:/sbin" ldconfig -n ---------------------------------------------------------------------- Libraries have been installed in: If you ever happen to want to link against installed libraries in a given directory, LIBDIR, you must either use libtool, and specify the full pathname of the library, or use the '-LLIBDIR' flag during linking and do at least one of the following: - add LIBDIR to the 'LD_LIBRARY_PATH' environment variable during execution - add LIBDIR to the 'LD_RUN_PATH' environment variable during linking - use the '-Wl,-rpath -Wl,LIBDIR' linker flag - have your system administrator add LIBDIR to '/etc/ld.so.conf' See any operating system documentation about shared libraries for more information, such as the ld(1) and ld.so(8) manual pages. ---------------------------------------------------------------------- make[3]: Leaving directory ' make[2]: Leaving directory ' Making install in tests make[2]: Entering directory ' make[3]: Entering directory ' make[3]: Nothing to be done for 'install-exec-am'. make[3]: Nothing to be done for 'install-data-am'. make[3]: Leaving directory ' make[2]: Leaving directory ' make[2]: Entering directory ' make[3]: Entering directory ' make[3]: Nothing to be done for 'install-exec-am'. /bin/mkdir -p ' /usr/bin/install -c -m 644 libosmoabis.pc libosmotrau.pc ' make[3]: Leaving directory ' make[2]: Leaving directory ' make[1]: Leaving directory ' + STOW_DIR= stow --restow libosmo-abis + cd + osmo-layer1-headers.sh lc15 origin/nrw/litecell15-next + uri=https://gitlab.com/nrw_litecell15/litecell15-fw + version=origin/nrw/litecell15 + [ -n origin/nrw/litecell15-next ] + [ origin/nrw/litecell15-next != master ] + version=origin/nrw/litecell15-next + test -d layer1-headers + cd layer1-headers + git fetch origin + git checkout -f origin/nrw/litecell15-next error: pathspec 'origin/nrw/litecell15-next' did not match any file(s) known to git. Build step 'Execute shell' marked build as failure [WARNINGS]Skipping publisher since build result is FAILURE From jenkins at lists.osmocom.org Tue Apr 17 14:49:30 2018 From: jenkins at lists.osmocom.org (jenkins at lists.osmocom.org) Date: Tue, 17 Apr 2018 14:49:30 +0000 (UTC) Subject: =?UTF-8?Q?Jenkins_build_is_back_to_normal_:_master-osmo-iuh_=C2=BB_a1=3Dd?= =?UTF-8?Q?efault,a2=3Ddefault,a3=3Ddefault,osmocom-master-debian9_#953?= In-Reply-To: <1103919136.421.1523969205275.JavaMail.jenkins@jenkins.osmocom.org> References: <1103919136.421.1523969205275.JavaMail.jenkins@jenkins.osmocom.org> Message-ID: <149358654.430.1523976570524.JavaMail.jenkins@jenkins.osmocom.org> See From gerrit-no-reply at lists.osmocom.org Tue Apr 17 15:09:58 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Tue, 17 Apr 2018 15:09:58 +0000 Subject: [PATCH] osmo-ttcn3-hacks[master]: BSSAP_Adapter: Introduce transport over IPA/SCCPlite Message-ID: Review at https://gerrit.osmocom.org/7860 BSSAP_Adapter: Introduce transport over IPA/SCCPlite In addition to the existing 3GPP AoIP stacking, allow BSSAP to run on top of a SCCPlite stacking. Implement both the server and the client role for IPA. Change-Id: Ie844c4de62e0ef5d5c4c366185968211a7f6d676 --- M bsc/BSC_Tests.ttcn M bsc/regen_makefile.sh M library/BSSAP_Adapter.ttcn 3 files changed, 44 insertions(+), 9 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-ttcn3-hacks refs/changes/60/7860/1 diff --git a/bsc/BSC_Tests.ttcn b/bsc/BSC_Tests.ttcn index 8380175..0299026 100644 --- a/bsc/BSC_Tests.ttcn +++ b/bsc/BSC_Tests.ttcn @@ -100,6 +100,7 @@ charstring mp_test_ip := "127.0.0.1"; BSSAP_Configuration mp_bssap_cfg := { + transport := BSSAP_TRANSPORT_AoIP, sccp_service_type := "mtp3_itu", sctp_addr := { 23905, "127.0.0.1", 2905, "127.0.0.1" }, own_pc := 185, diff --git a/bsc/regen_makefile.sh b/bsc/regen_makefile.sh index 1e52252..08629d2 100755 --- a/bsc/regen_makefile.sh +++ b/bsc/regen_makefile.sh @@ -4,6 +4,6 @@ FILES="*.ttcn *.ttcnpp IPA_CodecPort_CtrlFunctDef.cc IPL4asp_PT.cc IPL4asp_discovery.cc TCCConversion.cc TCCInterface.cc SCTPasp_PT.cc RTP_EncDec.cc SDP_EncDec.cc RTP_CodecPort_CtrlFunctDef.cc MGCP_CodecPort_CtrlFunctDef.cc IuUP_EncDec.cc Native_FunctionDefs.cc TELNETasp_PT.cc *.c" -export CPPFLAGS_TTCN3="-DIPA_EMULATION_RSL -DIPA_EMULATION_MGCP -DUSE_MTP3_DISTRIBUTOR" +export CPPFLAGS_TTCN3="-DIPA_EMULATION_RSL -DIPA_EMULATION_MGCP -DIPA_EMULATION_SCCP -DUSE_MTP3_DISTRIBUTOR" ../regen-makefile.sh $MAIN $FILES diff --git a/library/BSSAP_Adapter.ttcn b/library/BSSAP_Adapter.ttcn index 6c4f30e..1a9fdb4 100644 --- a/library/BSSAP_Adapter.ttcn +++ b/library/BSSAP_Adapter.ttcn @@ -13,6 +13,8 @@ import from MTP3asp_Types all; import from MTP3asp_PortType all; +import from IPA_Emulation all; + import from SCCP_Types all; import from SCCPasp_Types all; import from SCCP_Emulation all; @@ -26,7 +28,8 @@ type record BSSAP_Adapter { /* component references */ - M3UA_CT vc_M3UA, + M3UA_CT vc_M3UA, /* only in 3GPP AoIP */ + IPA_Emulation_CT vc_IPA, /* only in SCCPliste */ SCCP_CT vc_SCCP, MSC_SCCP_MTP3_parameters sccp_pars, @@ -37,7 +40,14 @@ BSSMAP_Emulation_CT vc_BSSMAP } +type enumerated BSSAP_Transport { + BSSAP_TRANSPORT_AoIP, /* 3GPP AoIP: SCCP over M3UA over SCTP */ + BSSAP_TRANSPORT_SCCPlite_SERVER, /* SCCPlite: SCCP over IPA over TCP */ + BSSAP_TRANSPORT_SCCPlite_CLIENT /* SCCPlite: SCCP over IPA over TCP */ +}; + type record BSSAP_Configuration { + BSSAP_Transport transport, charstring sccp_service_type, SCTP_Association_Address sctp_addr, integer own_pc, @@ -87,18 +97,42 @@ ops.sccp_addr_peer := ba.sccp_addr_peer; /* create components */ - ba.vc_M3UA := M3UA_CT.create(id & "-M3UA"); ba.vc_SCCP := SCCP_CT.create(id & "-SCCP"); if (isvalue(ops)) { ba.vc_BSSMAP := BSSMAP_Emulation_CT.create(id & "-BSSMAP"); } + select (cfg.transport) { + case (BSSAP_TRANSPORT_AoIP) { + ba.vc_M3UA := M3UA_CT.create(id & "-M3UA"); + map(ba.vc_M3UA:SCTP_PORT, system:sctp); + /* connect MTP3 service provider (M3UA) to lower side of SCCP */ + connect(ba.vc_M3UA:MTP3_SP_PORT, ba.vc_SCCP:MTP3_SCCP_PORT); + ba.vc_M3UA.start(f_M3UA_Emulation(cfg.sctp_addr, cfg.rctx)); + } + case (BSSAP_TRANSPORT_SCCPlite_SERVER) { + ba.vc_IPA := IPA_Emulation_CT.create(id & "-IPA"); + map(ba.vc_IPA:IPA_PORT, system:IPA_CODEC_PT); + /* connect MTP3 service provider (IPA) to lower side of SCCP */ + connect(ba.vc_IPA:MTP3_SP_PORT, ba.vc_SCCP:MTP3_SCCP_PORT); + ba.vc_IPA.start(IPA_Emulation.main_server(cfg.sctp_addr.local_ip_addr, + cfg.sctp_addr.local_sctp_port)); + } + case (BSSAP_TRANSPORT_SCCPlite_CLIENT) { + ba.vc_IPA := IPA_Emulation_CT.create(id & "-IPA"); + map(ba.vc_IPA:IPA_PORT, system:IPA_CODEC_PT); + /* connect MTP3 service provider (IPA) to lower side of SCCP */ + connect(ba.vc_IPA:MTP3_SP_PORT, ba.vc_SCCP:MTP3_SCCP_PORT); + ba.vc_IPA.start(IPA_Emulation.main_client(cfg.sctp_addr.remote_ip_addr, + cfg.sctp_addr.remote_sctp_port, + cfg.sctp_addr.local_ip_addr, + cfg.sctp_addr.local_sctp_port)); + } + case else { + setverdict(fail, "Unsuppored BSSAP_Transport"); + self.stop; + } + } - map(ba.vc_M3UA:SCTP_PORT, system:sctp); - - /* connect MTP3 service provider (M3UA) to lower side of SCCP */ - connect(ba.vc_M3UA:MTP3_SP_PORT, ba.vc_SCCP:MTP3_SCCP_PORT); - - ba.vc_M3UA.start(f_M3UA_Emulation(cfg.sctp_addr, cfg.rctx)); ba.vc_SCCP.start(SCCPStart(ba.sccp_pars)); if (isvalue(ops)) { -- To view, visit https://gerrit.osmocom.org/7860 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Ie844c4de62e0ef5d5c4c366185968211a7f6d676 Gerrit-PatchSet: 1 Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Owner: Harald Welte From gerrit-no-reply at lists.osmocom.org Tue Apr 17 15:09:59 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Tue, 17 Apr 2018 15:09:59 +0000 Subject: [PATCH] osmo-ttcn3-hacks[master]: IPA: Fix wrong CCM ID_ACK logic; disable CCM on CTRL interface Message-ID: Review at https://gerrit.osmocom.org/7861 IPA: Fix wrong CCM ID_ACK logic; disable CCM on CTRL interface Our TTCN3 implementation of the IPA multiplex with CCM handshaking has been based on some wrong assumptions about the protocol logic. To make the code stricter, we * send an ID_ACK immediately after connecting TCP in a client * separate client and server CCM responder logic * always respond with ID_ACK to ID_RESP (we accept any identity) Also, as the Osmocom CTRL interface uses an IPA multiplex but no CCM, we introduce a boolean variable (and function argument) to clearly enable/disable CCM support in a given IPA_Emulation component. The CTRL_Adapter has been modified to use this flag to disable CCM. This also removes the need of cherry-picking "HACK: Work around IPA CCM bug in OsmoBSC" Change-Id: I304535d28a165f76a0a140dc0a15dd81a9db28c8 from the laforge/bsc-workaround branch. Change-Id: I6d9eaf0d69457caacc03b9049a8bc57976480617 --- M library/IPA_Emulation.ttcnpp M library/Osmocom_CTRL_Adapter.ttcn 2 files changed, 53 insertions(+), 12 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-ttcn3-hacks refs/changes/61/7861/1 diff --git a/library/IPA_Emulation.ttcnpp b/library/IPA_Emulation.ttcnpp index c3cfe8d..be64dd1 100644 --- a/library/IPA_Emulation.ttcnpp +++ b/library/IPA_Emulation.ttcnpp @@ -164,6 +164,7 @@ var boolean g_is_bsc_mgw; var IpaMode g_mode; + var boolean g_ccm_enabled; var IPA_CCM_Parameters g_ccm_pars := c_IPA_default_ccm_pars; } @@ -331,19 +332,39 @@ } /* receive IPA CCM message */ -private function f_ccm_rx(PDU_IPA_CCM ccm) runs on IPA_Emulation_CT { +private function f_ccm_rx_client(PDU_IPA_CCM ccm) runs on IPA_Emulation_CT { select (ccm.msg_type) { case (IPAC_MSGT_PING) { f_ccm_tx(valueof(ts_IPA_PONG)); } case (IPAC_MSGT_ID_ACK) { - f_ccm_tx(valueof(ts_IPA_ACK)); + f_send_IPA_EVT(t_ASP_IPA_EVT_UD(ASP_IPA_EVENT_ID_ACK)); } case (IPAC_MSGT_ID_GET) { f_ccm_tx(f_ccm_make_id_resp(ccm)); } + case else { + log("Unknown/unsupported IPA CCM message type", ccm); + } + } +} + +private function f_ccm_rx_server(PDU_IPA_CCM ccm) runs on IPA_Emulation_CT { + select (ccm.msg_type) { + case (IPAC_MSGT_PING) { + f_ccm_tx(valueof(ts_IPA_PONG)); + } + case (IPAC_MSGT_ID_ACK) { + /* the IPA server should at some point receive an ID_ACK from the client, + * in case of RSL/OML from nanoBTS, this is actually the first message after + * the TCP connection is established. Other implementations may differ. + * We currently ignore it completely - but actually we should make sure that + * one ID_ACK is received by the server at some point */ + } case (IPAC_MSGT_ID_RESP) { log("IPA ID RESP: ", ccm.u.resp); + /* acknowledge any identity that the client may have sent */ + f_ccm_tx(valueof(ts_IPA_ACK)); } case else { log("Unknown/unsupported IPA CCM message type", ccm); @@ -377,16 +398,24 @@ /* main function to use for a client-side IPA implementation */ function main_client(charstring remote_host, IPL4asp_Types.PortNumber remote_port, charstring local_host, IPL4asp_Types.PortNumber local_port, - IPA_CCM_Parameters ccm_pars := c_IPA_default_ccm_pars) runs on IPA_Emulation_CT { + IPA_CCM_Parameters ccm_pars := c_IPA_default_ccm_pars, + boolean ccm_enabled := true) runs on IPA_Emulation_CT { g_mode := IPA_MODE_CLIENT; + g_ccm_enabled := ccm_enabled; f_connect(remote_host, remote_port, local_host, local_port, ccm_pars); + if (g_ccm_enabled) { + /* we're a client: Send ID_ACK immediately after connect */ + f_ccm_tx(valueof(ts_IPA_ACK)); + } f_send_IPA_EVT(t_ASP_IPA_EVT_UD(ASP_IPA_EVENT_UP)); ScanEvents(); } /* main function to use for a server-side IPA implementation */ -function main_server(charstring local_host, IPL4asp_Types.PortNumber local_port) runs on IPA_Emulation_CT { +function main_server(charstring local_host, IPL4asp_Types.PortNumber local_port, + boolean ccm_enabled := true) runs on IPA_Emulation_CT { g_mode := IPA_MODE_SERVER; + g_ccm_enabled := ccm_enabled; f_bind(local_host, local_port); ScanEvents(); } @@ -454,13 +483,24 @@ while (true) { alt { /* Received IPA -> up into SCCP stack */ - [] IPA_PORT.receive(IPA_RecvFrom: ?) -> value ipa_rx { - select (ipa_rx.streamId) { - case (IPAC_PROTO_CCM) { - var PDU_IPA_CCM ccm := dec_PDU_IPA_CCM(ipa_rx.msg); - log("CCM Rx:", ccm); - f_ccm_rx(ccm); + [g_ccm_enabled] IPA_PORT.receive(IPA_RecvFrom:{?,IPAC_PROTO_CCM,omit,?}) -> value ipa_rx { + var PDU_IPA_CCM ccm := dec_PDU_IPA_CCM(ipa_rx.msg); + log("CCM Rx:", ccm); + select (g_mode) { + case (IPA_MODE_CLIENT) { + f_ccm_rx_client(ccm); + } + case (IPA_MODE_SERVER) { + f_ccm_rx_server(ccm); + } + case else { + setverdict(fail, "Unknown mode"); + self.stop; + } } + } + [] IPA_PORT.receive(IPA_RecvFrom:?) -> value ipa_rx { + select (ipa_rx.streamId) { #ifdef IPA_EMULATION_SCCP case (IPAC_PROTO_SCCP) { var ASP_MTP3_TRANSFERind mtp; @@ -513,7 +553,7 @@ log("IPA: Connected"); g_ipa_conn_id := asp_evt.connOpened.connId; f_send_IPA_EVT(t_ASP_IPA_EVT_UD(ASP_IPA_EVENT_UP)); - if (g_mode == IPA_MODE_SERVER) { + if (g_mode == IPA_MODE_SERVER and g_ccm_enabled) { f_ccm_tx(valueof(ts_IPA_ID_GET)); } } diff --git a/library/Osmocom_CTRL_Adapter.ttcn b/library/Osmocom_CTRL_Adapter.ttcn index 9baa6a2..22195c8 100644 --- a/library/Osmocom_CTRL_Adapter.ttcn +++ b/library/Osmocom_CTRL_Adapter.ttcn @@ -29,7 +29,8 @@ map(vc_CTRL_IPA:IPA_PORT, system:IPA_CODEC_PT); connect(vc_CTRL_IPA:IPA_CTRL_PORT, self:IPA_CTRL); - vc_CTRL_IPA.start(IPA_Emulation.main_client(bsc_host, bsc_port, "", -1)); + vc_CTRL_IPA.start(IPA_Emulation.main_client(bsc_host, bsc_port, "", -1, + c_IPA_default_ccm_pars, false)); /* wait for IPA CTRL link to connect and send UP */ T.start; -- To view, visit https://gerrit.osmocom.org/7861 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I6d9eaf0d69457caacc03b9049a8bc57976480617 Gerrit-PatchSet: 1 Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Owner: Harald Welte From gerrit-no-reply at lists.osmocom.org Tue Apr 17 15:13:20 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Tue, 17 Apr 2018 15:13:20 +0000 Subject: [PATCH] osmo-ci[master]: jobs: bts&pcu: lc15: fetch branch litecell15 instead of lite... Message-ID: Review at https://gerrit.osmocom.org/7862 jobs: bts&pcu: lc15: fetch branch litecell15 instead of litecell15-next Branch nrw/litecell15-next doesn't exist anymore in the remote of that repository (https://gitlab.com/nrw_litecell15/litecell15-fw). Change-Id: I162e81573d7aafc0b2e2e1d2ab90cacc7cbb90d7 --- M jobs/gerrit-verifications.yml M jobs/master-builds.yml 2 files changed, 8 insertions(+), 8 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-ci refs/changes/62/7862/1 diff --git a/jobs/gerrit-verifications.yml b/jobs/gerrit-verifications.yml index 7613802..89b98ed 100644 --- a/jobs/gerrit-verifications.yml +++ b/jobs/gerrit-verifications.yml @@ -87,7 +87,7 @@ - osmo-bts: a1_name: FIRMWARE_VERSION - a1: !!python/tuple [master, femtobts_v2.7, superfemto_v2.4, superfemto_v3.0.1pre, superfemto_v3.1, superfemto_v5.1, v2017.01, origin/nrw/litecell15-next] + a1: !!python/tuple [master, femtobts_v2.7, superfemto_v2.4, superfemto_v3.0.1pre, superfemto_v3.1, superfemto_v5.1, v2017.01, origin/nrw/litecell15] a2_name: BTS_MODEL a2: !!python/tuple [sysmo, oct, trx, oct+trx, lc15] combination_filter: > @@ -98,7 +98,7 @@ (FIRMWARE_VERSION == "superfemto_v3.1" && BTS_MODEL == "sysmo") || (FIRMWARE_VERSION == "superfemto_v5.1" && BTS_MODEL == "sysmo") || (FIRMWARE_VERSION == "v2017.01" && BTS_MODEL == "lc15") || - (FIRMWARE_VERSION == "origin/nrw/litecell15-next" && BTS_MODEL == "lc15") + (FIRMWARE_VERSION == "origin/nrw/litecell15" && BTS_MODEL == "lc15") cmd: './contrib/jenkins_bts_model.sh "$BTS_MODEL"' - osmo-ggsn: @@ -143,7 +143,7 @@ - osmo-pcu: a1_name: FIRMWARE_VERSION - a1: !!python/tuple [master, v2017.01, origin/nrw/litecell15-next] + a1: !!python/tuple [master, v2017.01, origin/nrw/litecell15] a2_name: with_vty a2: !!python/tuple [True, False] a3_name: with_dsp @@ -153,7 +153,7 @@ (with_vty == "True" && with_dsp == "sysmo" && FIRMWARE_VERSION=="master") || (with_vty == "True" && with_dsp == "lc15" && FIRMWARE_VERSION=="master") || (with_vty == "True" && with_dsp == "lc15" && FIRMWARE_VERSION=="v2017.01") || - (with_vty == "True" && with_dsp == "lc15" && FIRMWARE_VERSION=="origin/nrw/litecell15-next") || + (with_vty == "True" && with_dsp == "lc15" && FIRMWARE_VERSION=="origin/nrw/litecell15") || (with_vty == "False" && with_dsp == "none" && FIRMWARE_VERSION=="master") - osmo-python-tests: diff --git a/jobs/master-builds.yml b/jobs/master-builds.yml index dff78fa..3fd5814 100644 --- a/jobs/master-builds.yml +++ b/jobs/master-builds.yml @@ -183,7 +183,7 @@ - osmo-bts: a1_name: FIRMWARE_VERSION - a1: !!python/tuple [master, femtobts_v2.7, superfemto_v2.4, superfemto_v3.0.1pre, superfemto_v3.1, superfemto_v5.1, v2017.01, origin/nrw/litecell15-next] + a1: !!python/tuple [master, femtobts_v2.7, superfemto_v2.4, superfemto_v3.0.1pre, superfemto_v3.1, superfemto_v5.1, v2017.01, origin/nrw/litecell15] a2_name: BTS_MODEL a2: !!python/tuple [sysmo, oct, trx, oct+trx, lc15] combination_filter: > @@ -194,7 +194,7 @@ (FIRMWARE_VERSION == "superfemto_v3.1" && BTS_MODEL == "sysmo") || (FIRMWARE_VERSION == "superfemto_v5.1" && BTS_MODEL == "sysmo") || (FIRMWARE_VERSION == "v2017.01" && BTS_MODEL == "lc15") || - (FIRMWARE_VERSION == "origin/nrw/litecell15-next" && BTS_MODEL == "lc15") + (FIRMWARE_VERSION == "origin/nrw/litecell15" && BTS_MODEL == "lc15") cmd: './contrib/jenkins_bts_model.sh "$BTS_MODEL"' - osmo-ggsn: @@ -276,7 +276,7 @@ - '*/master' - '*/jerlbeck/master' a1_name: FIRMWARE_VERSION - a1: !!python/tuple [master, v2017.01, origin/nrw/litecell15-next] + a1: !!python/tuple [master, v2017.01, origin/nrw/litecell15] a2_name: with_vty a2: !!python/tuple [True, False] a3_name: with_dsp @@ -286,7 +286,7 @@ (with_vty == "True" && with_dsp == "sysmo" && FIRMWARE_VERSION=="master") || (with_vty == "True" && with_dsp == "lc15" && FIRMWARE_VERSION=="master") || (with_vty == "True" && with_dsp == "lc15" && FIRMWARE_VERSION=="v2017.01") || - (with_vty == "True" && with_dsp == "lc15" && FIRMWARE_VERSION=="origin/nrw/litecell15-next") || + (with_vty == "True" && with_dsp == "lc15" && FIRMWARE_VERSION=="origin/nrw/litecell15") || (with_vty == "False" && with_dsp == "none" && FIRMWARE_VERSION=="master") - osmo-sgsn: -- To view, visit https://gerrit.osmocom.org/7862 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I162e81573d7aafc0b2e2e1d2ab90cacc7cbb90d7 Gerrit-PatchSet: 1 Gerrit-Project: osmo-ci Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol From gerrit-no-reply at lists.osmocom.org Tue Apr 17 15:45:12 2018 From: gerrit-no-reply at lists.osmocom.org (Vadim Yanitskiy) Date: Tue, 17 Apr 2018 15:45:12 +0000 Subject: osmo-bts[master]: osmo-bts-trx: perform error concealment for FR frames In-Reply-To: References: Message-ID: Patch Set 13: Code-Review+1 -- To view, visit https://gerrit.osmocom.org/5214 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Iae9e69a9578ae305bca42f834694af96a29084e6 Gerrit-PatchSet: 13 Gerrit-Project: osmo-bts Gerrit-Branch: master Gerrit-Owner: dexter Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Neels Hofmeyr Gerrit-Reviewer: Vadim Yanitskiy Gerrit-Reviewer: dexter Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Tue Apr 17 15:48:48 2018 From: gerrit-no-reply at lists.osmocom.org (Neels Hofmeyr) Date: Tue, 17 Apr 2018 15:48:48 +0000 Subject: osmo-ci[master]: jobs: bts&pcu: lc15: fetch branch litecell15 instead of lite... In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 Verified+1 haven't verified actually, but it can't make the lc15 tests any worse. -- To view, visit https://gerrit.osmocom.org/7862 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I162e81573d7aafc0b2e2e1d2ab90cacc7cbb90d7 Gerrit-PatchSet: 1 Gerrit-Project: osmo-ci Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Neels Hofmeyr Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Tue Apr 17 15:48:50 2018 From: gerrit-no-reply at lists.osmocom.org (Neels Hofmeyr) Date: Tue, 17 Apr 2018 15:48:50 +0000 Subject: [MERGED] osmo-ci[master]: jobs: bts&pcu: lc15: fetch branch litecell15 instead of lite... In-Reply-To: References: Message-ID: Neels Hofmeyr has submitted this change and it was merged. Change subject: jobs: bts&pcu: lc15: fetch branch litecell15 instead of litecell15-next ...................................................................... jobs: bts&pcu: lc15: fetch branch litecell15 instead of litecell15-next Branch nrw/litecell15-next doesn't exist anymore in the remote of that repository (https://gitlab.com/nrw_litecell15/litecell15-fw). Change-Id: I162e81573d7aafc0b2e2e1d2ab90cacc7cbb90d7 --- M jobs/gerrit-verifications.yml M jobs/master-builds.yml 2 files changed, 8 insertions(+), 8 deletions(-) Approvals: Neels Hofmeyr: Looks good to me, approved; Verified diff --git a/jobs/gerrit-verifications.yml b/jobs/gerrit-verifications.yml index 7613802..89b98ed 100644 --- a/jobs/gerrit-verifications.yml +++ b/jobs/gerrit-verifications.yml @@ -87,7 +87,7 @@ - osmo-bts: a1_name: FIRMWARE_VERSION - a1: !!python/tuple [master, femtobts_v2.7, superfemto_v2.4, superfemto_v3.0.1pre, superfemto_v3.1, superfemto_v5.1, v2017.01, origin/nrw/litecell15-next] + a1: !!python/tuple [master, femtobts_v2.7, superfemto_v2.4, superfemto_v3.0.1pre, superfemto_v3.1, superfemto_v5.1, v2017.01, origin/nrw/litecell15] a2_name: BTS_MODEL a2: !!python/tuple [sysmo, oct, trx, oct+trx, lc15] combination_filter: > @@ -98,7 +98,7 @@ (FIRMWARE_VERSION == "superfemto_v3.1" && BTS_MODEL == "sysmo") || (FIRMWARE_VERSION == "superfemto_v5.1" && BTS_MODEL == "sysmo") || (FIRMWARE_VERSION == "v2017.01" && BTS_MODEL == "lc15") || - (FIRMWARE_VERSION == "origin/nrw/litecell15-next" && BTS_MODEL == "lc15") + (FIRMWARE_VERSION == "origin/nrw/litecell15" && BTS_MODEL == "lc15") cmd: './contrib/jenkins_bts_model.sh "$BTS_MODEL"' - osmo-ggsn: @@ -143,7 +143,7 @@ - osmo-pcu: a1_name: FIRMWARE_VERSION - a1: !!python/tuple [master, v2017.01, origin/nrw/litecell15-next] + a1: !!python/tuple [master, v2017.01, origin/nrw/litecell15] a2_name: with_vty a2: !!python/tuple [True, False] a3_name: with_dsp @@ -153,7 +153,7 @@ (with_vty == "True" && with_dsp == "sysmo" && FIRMWARE_VERSION=="master") || (with_vty == "True" && with_dsp == "lc15" && FIRMWARE_VERSION=="master") || (with_vty == "True" && with_dsp == "lc15" && FIRMWARE_VERSION=="v2017.01") || - (with_vty == "True" && with_dsp == "lc15" && FIRMWARE_VERSION=="origin/nrw/litecell15-next") || + (with_vty == "True" && with_dsp == "lc15" && FIRMWARE_VERSION=="origin/nrw/litecell15") || (with_vty == "False" && with_dsp == "none" && FIRMWARE_VERSION=="master") - osmo-python-tests: diff --git a/jobs/master-builds.yml b/jobs/master-builds.yml index dff78fa..3fd5814 100644 --- a/jobs/master-builds.yml +++ b/jobs/master-builds.yml @@ -183,7 +183,7 @@ - osmo-bts: a1_name: FIRMWARE_VERSION - a1: !!python/tuple [master, femtobts_v2.7, superfemto_v2.4, superfemto_v3.0.1pre, superfemto_v3.1, superfemto_v5.1, v2017.01, origin/nrw/litecell15-next] + a1: !!python/tuple [master, femtobts_v2.7, superfemto_v2.4, superfemto_v3.0.1pre, superfemto_v3.1, superfemto_v5.1, v2017.01, origin/nrw/litecell15] a2_name: BTS_MODEL a2: !!python/tuple [sysmo, oct, trx, oct+trx, lc15] combination_filter: > @@ -194,7 +194,7 @@ (FIRMWARE_VERSION == "superfemto_v3.1" && BTS_MODEL == "sysmo") || (FIRMWARE_VERSION == "superfemto_v5.1" && BTS_MODEL == "sysmo") || (FIRMWARE_VERSION == "v2017.01" && BTS_MODEL == "lc15") || - (FIRMWARE_VERSION == "origin/nrw/litecell15-next" && BTS_MODEL == "lc15") + (FIRMWARE_VERSION == "origin/nrw/litecell15" && BTS_MODEL == "lc15") cmd: './contrib/jenkins_bts_model.sh "$BTS_MODEL"' - osmo-ggsn: @@ -276,7 +276,7 @@ - '*/master' - '*/jerlbeck/master' a1_name: FIRMWARE_VERSION - a1: !!python/tuple [master, v2017.01, origin/nrw/litecell15-next] + a1: !!python/tuple [master, v2017.01, origin/nrw/litecell15] a2_name: with_vty a2: !!python/tuple [True, False] a3_name: with_dsp @@ -286,7 +286,7 @@ (with_vty == "True" && with_dsp == "sysmo" && FIRMWARE_VERSION=="master") || (with_vty == "True" && with_dsp == "lc15" && FIRMWARE_VERSION=="master") || (with_vty == "True" && with_dsp == "lc15" && FIRMWARE_VERSION=="v2017.01") || - (with_vty == "True" && with_dsp == "lc15" && FIRMWARE_VERSION=="origin/nrw/litecell15-next") || + (with_vty == "True" && with_dsp == "lc15" && FIRMWARE_VERSION=="origin/nrw/litecell15") || (with_vty == "False" && with_dsp == "none" && FIRMWARE_VERSION=="master") - osmo-sgsn: -- To view, visit https://gerrit.osmocom.org/7862 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: I162e81573d7aafc0b2e2e1d2ab90cacc7cbb90d7 Gerrit-PatchSet: 1 Gerrit-Project: osmo-ci Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Neels Hofmeyr From gerrit-no-reply at lists.osmocom.org Tue Apr 17 16:01:54 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Tue, 17 Apr 2018 16:01:54 +0000 Subject: [PATCH] libosmocore[master]: osmo_get_macaddr: Fix buffer read out of bounds Message-ID: Review at https://gerrit.osmocom.org/7863 osmo_get_macaddr: Fix buffer read out of bounds Catched by address sanitizer in osmo-bts-trx during osmo-gsm-tester test run. ==25503==ERROR: AddressSanitizer: global-buffer-overflow on address 0x55b4e8468780 at pc 0x7fd824f543ba bp 0x7fffc21009f0 sp 0x7fffc21009e8 READ of size 16 at 0x55b4e8468780 thread T0 #0 0x7fd824f543b9 in osmo_get_macaddr libosmocore/src/macaddr.c:132 #1 0x55b4e842df33 in abis_open osmo-bts/src/common/abis.c:256 #2 0x55b4e84286c9 in bts_main osmo-bts/src/common/main.c:342 #3 0x7fd8235ab2e0 in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x202e0) #4 0x55b4e838e759 in _start (/home/jenkins/workspace/osmo-gsm-tester_run-prod/trial-807/inst/osmo-bts/bin/osmo-bts-trx+0xfc759) Change-Id: I3727ef339279c8eeb85908735467bfd0e02ca259 --- M src/macaddr.c 1 file changed, 7 insertions(+), 2 deletions(-) git pull ssh://gerrit.osmocom.org:29418/libosmocore refs/changes/63/7863/1 diff --git a/src/macaddr.c b/src/macaddr.c index afa7c93..a5b906e 100644 --- a/src/macaddr.c +++ b/src/macaddr.c @@ -113,6 +113,7 @@ #include #include #include +#include /*! Obtain the MAC address of a given network device * \param[out] mac_out pointer to caller-allocated buffer of 6 bytes @@ -121,15 +122,19 @@ */ int osmo_get_macaddr(uint8_t *mac_out, const char *dev_name) { - int fd, rc; + int fd, rc, dev_len; struct ifreq ifr; + + dev_len = strlen(dev_name); + if (dev_len > IFNAMSIZ) + return -EINVAL; fd = socket(PF_INET, SOCK_DGRAM, IPPROTO_IP); if (fd < 0) return fd; memset(&ifr, 0, sizeof(ifr)); - memcpy(&ifr.ifr_name, dev_name, sizeof(ifr.ifr_name)); + memcpy(&ifr.ifr_name, dev_name, dev_len); rc = ioctl(fd, SIOCGIFHWADDR, &ifr); close(fd); -- To view, visit https://gerrit.osmocom.org/7863 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I3727ef339279c8eeb85908735467bfd0e02ca259 Gerrit-PatchSet: 1 Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol From gerrit-no-reply at lists.osmocom.org Tue Apr 17 16:06:02 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Tue, 17 Apr 2018 16:06:02 +0000 Subject: osmo-ci[master]: jobs: bts&pcu: lc15: fetch branch litecell15 instead of lite... In-Reply-To: References: Message-ID: Patch Set 1: I did verify it, jenkins jobs are already updated with this change. -- To view, visit https://gerrit.osmocom.org/7862 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I162e81573d7aafc0b2e2e1d2ab90cacc7cbb90d7 Gerrit-PatchSet: 1 Gerrit-Project: osmo-ci Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Neels Hofmeyr Gerrit-Reviewer: Pau Espin Pedrol Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Tue Apr 17 16:08:00 2018 From: gerrit-no-reply at lists.osmocom.org (Neels Hofmeyr) Date: Tue, 17 Apr 2018 16:08:00 +0000 Subject: libosmocore[master]: osmo_get_macaddr: Fix buffer read out of bounds In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 (1 comment) https://gerrit.osmocom.org/#/c/7863/1/src/macaddr.c File src/macaddr.c: Line 137: memcpy(&ifr.ifr_name, dev_name, dev_len); osmo_strlcpy() with sizeof() would ensure nul termination in all cases? but then again you return -EINVAL if it doesn't fit, which is probably a good thing. -- To view, visit https://gerrit.osmocom.org/7863 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I3727ef339279c8eeb85908735467bfd0e02ca259 Gerrit-PatchSet: 1 Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Neels Hofmeyr Gerrit-HasComments: Yes From gerrit-no-reply at lists.osmocom.org Tue Apr 17 16:11:06 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Tue, 17 Apr 2018 16:11:06 +0000 Subject: libosmocore[master]: osmo_get_macaddr: Fix buffer read out of bounds In-Reply-To: References: Message-ID: Patch Set 1: (1 comment) https://gerrit.osmocom.org/#/c/7863/1/src/macaddr.c File src/macaddr.c: Line 137: memcpy(&ifr.ifr_name, dev_name, dev_len); > osmo_strlcpy() with sizeof() would ensure nul termination in all cases? but As far as I know, ifr.ifr_name is not a string, ie. it's a non-null terminated array of chars. -- To view, visit https://gerrit.osmocom.org/7863 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I3727ef339279c8eeb85908735467bfd0e02ca259 Gerrit-PatchSet: 1 Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Neels Hofmeyr Gerrit-Reviewer: Pau Espin Pedrol Gerrit-HasComments: Yes From gerrit-no-reply at lists.osmocom.org Tue Apr 17 16:15:21 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Tue, 17 Apr 2018 16:15:21 +0000 Subject: libosmocore[master]: osmo_get_macaddr: Fix buffer read out of bounds In-Reply-To: References: Message-ID: Patch Set 1: (1 comment) https://gerrit.osmocom.org/#/c/7863/1/src/macaddr.c File src/macaddr.c: Line 137: memcpy(&ifr.ifr_name, dev_name, dev_len); > As far as I know, ifr.ifr_name is not a string, ie. it's a non-null termina Hm I'm actually wrong, let me check better. -- To view, visit https://gerrit.osmocom.org/7863 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I3727ef339279c8eeb85908735467bfd0e02ca259 Gerrit-PatchSet: 1 Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Neels Hofmeyr Gerrit-Reviewer: Pau Espin Pedrol Gerrit-HasComments: Yes From gerrit-no-reply at lists.osmocom.org Tue Apr 17 16:20:06 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Tue, 17 Apr 2018 16:20:06 +0000 Subject: [PATCH] libosmocore[master]: osmo_get_macaddr: Fix buffer read out of bounds In-Reply-To: References: Message-ID: Hello Neels Hofmeyr, Jenkins Builder, I'd like you to reexamine a change. Please visit https://gerrit.osmocom.org/7863 to look at the new patch set (#2). osmo_get_macaddr: Fix buffer read out of bounds Catched by address sanitizer in osmo-bts-trx during osmo-gsm-tester test run. ==25503==ERROR: AddressSanitizer: global-buffer-overflow on address 0x55b4e8468780 at pc 0x7fd824f543ba bp 0x7fffc21009f0 sp 0x7fffc21009e8 READ of size 16 at 0x55b4e8468780 thread T0 #0 0x7fd824f543b9 in osmo_get_macaddr libosmocore/src/macaddr.c:132 #1 0x55b4e842df33 in abis_open osmo-bts/src/common/abis.c:256 #2 0x55b4e84286c9 in bts_main osmo-bts/src/common/main.c:342 #3 0x7fd8235ab2e0 in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x202e0) #4 0x55b4e838e759 in _start (/home/jenkins/workspace/osmo-gsm-tester_run-prod/trial-807/inst/osmo-bts/bin/osmo-bts-trx+0xfc759) Change-Id: I3727ef339279c8eeb85908735467bfd0e02ca259 --- M src/macaddr.c 1 file changed, 7 insertions(+), 2 deletions(-) git pull ssh://gerrit.osmocom.org:29418/libosmocore refs/changes/63/7863/2 diff --git a/src/macaddr.c b/src/macaddr.c index afa7c93..de9d07a 100644 --- a/src/macaddr.c +++ b/src/macaddr.c @@ -113,6 +113,7 @@ #include #include #include +#include /*! Obtain the MAC address of a given network device * \param[out] mac_out pointer to caller-allocated buffer of 6 bytes @@ -121,15 +122,19 @@ */ int osmo_get_macaddr(uint8_t *mac_out, const char *dev_name) { - int fd, rc; + int fd, rc, dev_len; struct ifreq ifr; + + dev_len = strlen(dev_name); + if (dev_len >= sizeof(ifr.ifr_name)) + return -EINVAL; fd = socket(PF_INET, SOCK_DGRAM, IPPROTO_IP); if (fd < 0) return fd; memset(&ifr, 0, sizeof(ifr)); - memcpy(&ifr.ifr_name, dev_name, sizeof(ifr.ifr_name)); + memcpy(&ifr.ifr_name, dev_name, dev_len + 1); rc = ioctl(fd, SIOCGIFHWADDR, &ifr); close(fd); -- To view, visit https://gerrit.osmocom.org/7863 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newpatchset Gerrit-Change-Id: I3727ef339279c8eeb85908735467bfd0e02ca259 Gerrit-PatchSet: 2 Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Neels Hofmeyr Gerrit-Reviewer: Pau Espin Pedrol From gerrit-no-reply at lists.osmocom.org Tue Apr 17 18:36:59 2018 From: gerrit-no-reply at lists.osmocom.org (Neels Hofmeyr) Date: Tue, 17 Apr 2018 18:36:59 +0000 Subject: libosmocore[master]: osmo_get_macaddr: Fix buffer read out of bounds In-Reply-To: References: Message-ID: Patch Set 2: Code-Review+2 (1 comment) https://gerrit.osmocom.org/#/c/7863/2/src/macaddr.c File src/macaddr.c: Line 137: memcpy(&ifr.ifr_name, dev_name, dev_len + 1); hah :) didn't even see that one. osmo_strlcpy() FTW, but ok. -- To view, visit https://gerrit.osmocom.org/7863 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I3727ef339279c8eeb85908735467bfd0e02ca259 Gerrit-PatchSet: 2 Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Neels Hofmeyr Gerrit-Reviewer: Pau Espin Pedrol Gerrit-HasComments: Yes From gerrit-no-reply at lists.osmocom.org Tue Apr 17 19:36:38 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Tue, 17 Apr 2018 19:36:38 +0000 Subject: osmo-bts[master]: osmo-bts-trx: perform error concealment for FR frames In-Reply-To: References: Message-ID: Patch Set 13: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/5214 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Iae9e69a9578ae305bca42f834694af96a29084e6 Gerrit-PatchSet: 13 Gerrit-Project: osmo-bts Gerrit-Branch: master Gerrit-Owner: dexter Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Neels Hofmeyr Gerrit-Reviewer: Vadim Yanitskiy Gerrit-Reviewer: dexter Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Tue Apr 17 19:36:41 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Tue, 17 Apr 2018 19:36:41 +0000 Subject: [MERGED] osmo-bts[master]: osmo-bts-trx: perform error concealment for FR frames In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: osmo-bts-trx: perform error concealment for FR frames ...................................................................... osmo-bts-trx: perform error concealment for FR frames When a bad voice frame is received, it is replaced by a silence frame. This may cause unpleasant audio effects. This change implements a functionality to craft a replacement frame from the last known good frame using ECU implementation from libosmocodec. At the moment, only FR is supported. Depends: libosmocore I06a21f60db01bfe1c2b838f93866fad1d53fdcd1 Change-Id: Iae9e69a9578ae305bca42f834694af96a29084e6 --- M include/osmo-bts/gsm_data_shared.h M src/osmo-bts-trx/scheduler_trx.c 2 files changed, 22 insertions(+), 2 deletions(-) Approvals: Vadim Yanitskiy: Looks good to me, but someone else must approve Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/include/osmo-bts/gsm_data_shared.h b/include/osmo-bts/gsm_data_shared.h index c6557ee..37d30ab 100644 --- a/include/osmo-bts/gsm_data_shared.h +++ b/include/osmo-bts/gsm_data_shared.h @@ -5,6 +5,7 @@ #include #include +#include #include #include #include @@ -316,6 +317,11 @@ } ms_power_ctrl; struct msgb *pending_rel_ind_msg; + + /* ECU (Error Concealment Unit) state */ + union { + struct osmo_ecu_fr_state fr; + } ecu_state; }; extern const struct value_string lchan_ciph_state_names[]; diff --git a/src/osmo-bts-trx/scheduler_trx.c b/src/osmo-bts-trx/scheduler_trx.c index d96eea0..4a31df2 100644 --- a/src/osmo-bts-trx/scheduler_trx.c +++ b/src/osmo-bts-trx/scheduler_trx.c @@ -31,6 +31,7 @@ #include #include #include +#include #include #include #include @@ -964,6 +965,7 @@ uint8_t tch_data[128]; /* just to be safe */ int rc, amr = 0; int n_errors, n_bits_total; + bool bfi_flag = false; struct gsm_lchan *lchan = get_lchan_by_chan_nr(l1t->trx, trx_chan_desc[chan].chan_nr | tn); @@ -1054,11 +1056,13 @@ if (rc < 0) { LOGL1S(DL1P, LOGL_NOTICE, l1t, tn, chan, fn, "Received bad data (%u/%u)\n", fn % l1ts->mf_period, l1ts->mf_period); + bfi_flag = true; goto bfi; } if (rc < 4) { LOGL1S(DL1P, LOGL_NOTICE, l1t, tn, chan, fn, "Received bad data (%u/%u) " "with invalid codec mode %d\n", fn % l1ts->mf_period, l1ts->mf_period, rc); + bfi_flag = true; goto bfi; } @@ -1075,8 +1079,14 @@ case GSM48_CMODE_SPEECH_V1: /* FR */ if (lchan->tch.dtx.ul_sid) return 0; /* DTXu: pause in progress */ - memset(tch_data, 0, GSM_FR_BYTES); - tch_data[0] = 0xd0; + + /* Perform error concealment if possible */ + rc = osmo_ecu_fr_conceal(&lchan->ecu_state.fr, tch_data); + if (rc) { + memset(tch_data, 0, GSM_FR_BYTES); + tch_data[0] = 0xd0; + } + rc = GSM_FR_BYTES; break; case GSM48_CMODE_SPEECH_EFR: /* EFR */ @@ -1104,6 +1114,10 @@ if (rsl_cmode != RSL_CMOD_SPD_SPEECH) return 0; + /* Reset ECU with a good frame */ + if (!bfi_flag && tch_mode == GSM48_CMODE_SPEECH_V1) + osmo_ecu_fr_reset(&lchan->ecu_state.fr, tch_data); + /* TCH or BFI */ return _sched_compose_tch_ind(l1t, tn, (fn + GSM_HYPERFRAME - 7) % GSM_HYPERFRAME, chan, tch_data, rc); -- To view, visit https://gerrit.osmocom.org/5214 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: Iae9e69a9578ae305bca42f834694af96a29084e6 Gerrit-PatchSet: 13 Gerrit-Project: osmo-bts Gerrit-Branch: master Gerrit-Owner: dexter Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Neels Hofmeyr Gerrit-Reviewer: Vadim Yanitskiy Gerrit-Reviewer: dexter From gerrit-no-reply at lists.osmocom.org Tue Apr 17 19:36:51 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Tue, 17 Apr 2018 19:36:51 +0000 Subject: [MERGED] osmo-bts[master]: Include missing headers for osmo_init_logging2 In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: Include missing headers for osmo_init_logging2 ...................................................................... Include missing headers for osmo_init_logging2 Fixes implicit declaration warning messages at compile time. Change-Id: I753ed49cdcbd1301ba7ea38dcea9113d99fecb06 --- M src/osmo-bts-omldummy/main.c M tests/agch/agch_test.c M tests/cipher/cipher_test.c M tests/paging/paging_test.c 4 files changed, 4 insertions(+), 0 deletions(-) Approvals: Neels Hofmeyr: Looks good to me, approved Jenkins Builder: Verified diff --git a/src/osmo-bts-omldummy/main.c b/src/osmo-bts-omldummy/main.c index ef94553..3f1d58c 100644 --- a/src/osmo-bts-omldummy/main.c +++ b/src/osmo-bts-omldummy/main.c @@ -1,5 +1,6 @@ #include +#include #include #include #include diff --git a/tests/agch/agch_test.c b/tests/agch/agch_test.c index ab59ebf..e6c56d9 100644 --- a/tests/agch/agch_test.c +++ b/tests/agch/agch_test.c @@ -20,6 +20,7 @@ * */ #include +#include #include #include diff --git a/tests/cipher/cipher_test.c b/tests/cipher/cipher_test.c index a7343c0..9d78a88 100644 --- a/tests/cipher/cipher_test.c +++ b/tests/cipher/cipher_test.c @@ -23,6 +23,7 @@ #include #include +#include #include #include diff --git a/tests/paging/paging_test.c b/tests/paging/paging_test.c index bf28661..0accd0f 100644 --- a/tests/paging/paging_test.c +++ b/tests/paging/paging_test.c @@ -19,6 +19,7 @@ * */ #include +#include #include #include -- To view, visit https://gerrit.osmocom.org/7826 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: I753ed49cdcbd1301ba7ea38dcea9113d99fecb06 Gerrit-PatchSet: 2 Gerrit-Project: osmo-bts Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Neels Hofmeyr From gerrit-no-reply at lists.osmocom.org Tue Apr 17 19:36:59 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Tue, 17 Apr 2018 19:36:59 +0000 Subject: osmo-bts[master]: common/sysinfo.c: Fix no return on on-void function In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7857 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I9b4e06927489a8bc20ce173279a01415a8c4295a Gerrit-PatchSet: 1 Gerrit-Project: osmo-bts Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Tue Apr 17 19:40:47 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Tue, 17 Apr 2018 19:40:47 +0000 Subject: [PATCH] osmo-ttcn3-hacks[master]: BSSAP_Adapter: Introduce transport over IPA/SCCPlite In-Reply-To: References: Message-ID: Hello Jenkins Builder, I'd like you to reexamine a change. Please visit https://gerrit.osmocom.org/7860 to look at the new patch set (#2). BSSAP_Adapter: Introduce transport over IPA/SCCPlite In addition to the existing 3GPP AoIP stacking, allow BSSAP to run on top of a SCCPlite stacking. Implement both the server and the client role for IPA. Change-Id: Ie844c4de62e0ef5d5c4c366185968211a7f6d676 --- M bsc/BSC_Tests.ttcn M bsc/regen_makefile.sh M library/BSSAP_Adapter.ttcn M msc/regen_makefile.sh 4 files changed, 45 insertions(+), 10 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-ttcn3-hacks refs/changes/60/7860/2 diff --git a/bsc/BSC_Tests.ttcn b/bsc/BSC_Tests.ttcn index 8380175..0299026 100644 --- a/bsc/BSC_Tests.ttcn +++ b/bsc/BSC_Tests.ttcn @@ -100,6 +100,7 @@ charstring mp_test_ip := "127.0.0.1"; BSSAP_Configuration mp_bssap_cfg := { + transport := BSSAP_TRANSPORT_AoIP, sccp_service_type := "mtp3_itu", sctp_addr := { 23905, "127.0.0.1", 2905, "127.0.0.1" }, own_pc := 185, diff --git a/bsc/regen_makefile.sh b/bsc/regen_makefile.sh index 1e52252..08629d2 100755 --- a/bsc/regen_makefile.sh +++ b/bsc/regen_makefile.sh @@ -4,6 +4,6 @@ FILES="*.ttcn *.ttcnpp IPA_CodecPort_CtrlFunctDef.cc IPL4asp_PT.cc IPL4asp_discovery.cc TCCConversion.cc TCCInterface.cc SCTPasp_PT.cc RTP_EncDec.cc SDP_EncDec.cc RTP_CodecPort_CtrlFunctDef.cc MGCP_CodecPort_CtrlFunctDef.cc IuUP_EncDec.cc Native_FunctionDefs.cc TELNETasp_PT.cc *.c" -export CPPFLAGS_TTCN3="-DIPA_EMULATION_RSL -DIPA_EMULATION_MGCP -DUSE_MTP3_DISTRIBUTOR" +export CPPFLAGS_TTCN3="-DIPA_EMULATION_RSL -DIPA_EMULATION_MGCP -DIPA_EMULATION_SCCP -DUSE_MTP3_DISTRIBUTOR" ../regen-makefile.sh $MAIN $FILES diff --git a/library/BSSAP_Adapter.ttcn b/library/BSSAP_Adapter.ttcn index 6c4f30e..1a9fdb4 100644 --- a/library/BSSAP_Adapter.ttcn +++ b/library/BSSAP_Adapter.ttcn @@ -13,6 +13,8 @@ import from MTP3asp_Types all; import from MTP3asp_PortType all; +import from IPA_Emulation all; + import from SCCP_Types all; import from SCCPasp_Types all; import from SCCP_Emulation all; @@ -26,7 +28,8 @@ type record BSSAP_Adapter { /* component references */ - M3UA_CT vc_M3UA, + M3UA_CT vc_M3UA, /* only in 3GPP AoIP */ + IPA_Emulation_CT vc_IPA, /* only in SCCPliste */ SCCP_CT vc_SCCP, MSC_SCCP_MTP3_parameters sccp_pars, @@ -37,7 +40,14 @@ BSSMAP_Emulation_CT vc_BSSMAP } +type enumerated BSSAP_Transport { + BSSAP_TRANSPORT_AoIP, /* 3GPP AoIP: SCCP over M3UA over SCTP */ + BSSAP_TRANSPORT_SCCPlite_SERVER, /* SCCPlite: SCCP over IPA over TCP */ + BSSAP_TRANSPORT_SCCPlite_CLIENT /* SCCPlite: SCCP over IPA over TCP */ +}; + type record BSSAP_Configuration { + BSSAP_Transport transport, charstring sccp_service_type, SCTP_Association_Address sctp_addr, integer own_pc, @@ -87,18 +97,42 @@ ops.sccp_addr_peer := ba.sccp_addr_peer; /* create components */ - ba.vc_M3UA := M3UA_CT.create(id & "-M3UA"); ba.vc_SCCP := SCCP_CT.create(id & "-SCCP"); if (isvalue(ops)) { ba.vc_BSSMAP := BSSMAP_Emulation_CT.create(id & "-BSSMAP"); } + select (cfg.transport) { + case (BSSAP_TRANSPORT_AoIP) { + ba.vc_M3UA := M3UA_CT.create(id & "-M3UA"); + map(ba.vc_M3UA:SCTP_PORT, system:sctp); + /* connect MTP3 service provider (M3UA) to lower side of SCCP */ + connect(ba.vc_M3UA:MTP3_SP_PORT, ba.vc_SCCP:MTP3_SCCP_PORT); + ba.vc_M3UA.start(f_M3UA_Emulation(cfg.sctp_addr, cfg.rctx)); + } + case (BSSAP_TRANSPORT_SCCPlite_SERVER) { + ba.vc_IPA := IPA_Emulation_CT.create(id & "-IPA"); + map(ba.vc_IPA:IPA_PORT, system:IPA_CODEC_PT); + /* connect MTP3 service provider (IPA) to lower side of SCCP */ + connect(ba.vc_IPA:MTP3_SP_PORT, ba.vc_SCCP:MTP3_SCCP_PORT); + ba.vc_IPA.start(IPA_Emulation.main_server(cfg.sctp_addr.local_ip_addr, + cfg.sctp_addr.local_sctp_port)); + } + case (BSSAP_TRANSPORT_SCCPlite_CLIENT) { + ba.vc_IPA := IPA_Emulation_CT.create(id & "-IPA"); + map(ba.vc_IPA:IPA_PORT, system:IPA_CODEC_PT); + /* connect MTP3 service provider (IPA) to lower side of SCCP */ + connect(ba.vc_IPA:MTP3_SP_PORT, ba.vc_SCCP:MTP3_SCCP_PORT); + ba.vc_IPA.start(IPA_Emulation.main_client(cfg.sctp_addr.remote_ip_addr, + cfg.sctp_addr.remote_sctp_port, + cfg.sctp_addr.local_ip_addr, + cfg.sctp_addr.local_sctp_port)); + } + case else { + setverdict(fail, "Unsuppored BSSAP_Transport"); + self.stop; + } + } - map(ba.vc_M3UA:SCTP_PORT, system:sctp); - - /* connect MTP3 service provider (M3UA) to lower side of SCCP */ - connect(ba.vc_M3UA:MTP3_SP_PORT, ba.vc_SCCP:MTP3_SCCP_PORT); - - ba.vc_M3UA.start(f_M3UA_Emulation(cfg.sctp_addr, cfg.rctx)); ba.vc_SCCP.start(SCCPStart(ba.sccp_pars)); if (isvalue(ops)) { diff --git a/msc/regen_makefile.sh b/msc/regen_makefile.sh index de8f7ab..fc4a29d 100755 --- a/msc/regen_makefile.sh +++ b/msc/regen_makefile.sh @@ -2,6 +2,6 @@ FILES="*.ttcn *.ttcnpp SCCP_EncDec.cc SCTPasp_PT.cc TCCConversion.cc TCCInterface.cc UD_PT.cc MNCC_EncDec.cc IPL4asp_PT.cc IPL4asp_discovery.cc SDP_EncDec.cc RTP_EncDec.cc IPA_CodecPort_CtrlFunctDef.cc RTP_CodecPort_CtrlFunctDef.cc MGCP_CodecPort_CtrlFunctDef.cc TELNETasp_PT.cc Native_FunctionDefs.cc SMPP_EncDec.cc SMPP_CodecPort_CtrlFunctDef.cc *.c" -export CPPFLAGS_TTCN3="-DIPA_EMULATION_MGCP -DIPA_EMULATION_GSUP -DUSE_MTP3_DISTRIBUTOR" +export CPPFLAGS_TTCN3="-DIPA_EMULATION_MGCP -DIPA_EMULATION_GSUP -DIPA_EMULATION_SCCP -DUSE_MTP3_DISTRIBUTOR" ../regen-makefile.sh MSC_Tests.ttcn $FILES -- To view, visit https://gerrit.osmocom.org/7860 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newpatchset Gerrit-Change-Id: Ie844c4de62e0ef5d5c4c366185968211a7f6d676 Gerrit-PatchSet: 2 Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Owner: Harald Welte Gerrit-Reviewer: Jenkins Builder From gerrit-no-reply at lists.osmocom.org Tue Apr 17 19:41:15 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Tue, 17 Apr 2018 19:41:15 +0000 Subject: osmo-ggsn[master]: use osmo_init_logging2 In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7852 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Ic38fff17cc985238b91999c8acdd92d22fd28c72 Gerrit-PatchSet: 1 Gerrit-Project: osmo-ggsn Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Tue Apr 17 19:41:18 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Tue, 17 Apr 2018 19:41:18 +0000 Subject: [MERGED] osmo-ggsn[master]: use osmo_init_logging2 In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: use osmo_init_logging2 ...................................................................... use osmo_init_logging2 Change-Id: Ic38fff17cc985238b91999c8acdd92d22fd28c72 --- M ggsn/ggsn.c M sgsnemu/sgsnemu.c M tests/gtp/gtpie_test.c M tests/lib/in46a_test.c M tests/lib/ippool_test.c 5 files changed, 18 insertions(+), 5 deletions(-) Approvals: Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/ggsn/ggsn.c b/ggsn/ggsn.c index df071d2..cb11c49 100644 --- a/ggsn/ggsn.c +++ b/ggsn/ggsn.c @@ -1073,7 +1073,7 @@ signal(SIGUSR2, &signal_handler); osmo_init_ignore_signals(); - osmo_init_logging(&log_info); + osmo_init_logging2(tall_ggsn_ctx, &log_info); osmo_stats_init(tall_ggsn_ctx); vty_init(&g_vty_info); diff --git a/sgsnemu/sgsnemu.c b/sgsnemu/sgsnemu.c index 804b542..99f56da 100644 --- a/sgsnemu/sgsnemu.c +++ b/sgsnemu/sgsnemu.c @@ -20,6 +20,7 @@ #endif #include +#include #include #include @@ -79,6 +80,7 @@ struct tun_t *tun = NULL; /* TUN instance */ int maxfd = 0; /* For select() */ int echoversion = 1; /* First try this version */ +void *tall_sgsnemu_ctx; /* root talloc ctx */ /* Struct with local versions of gengetopt options */ struct { @@ -1540,7 +1542,9 @@ signal(SIGHUP, signal_handler); signal(SIGINT, signal_handler); - osmo_init_logging(&log_info); + tall_sgsnemu_ctx = talloc_named_const(NULL, 0, "sgsnemu"); + msgb_talloc_ctx_init(tall_sgsnemu_ctx, 0); + osmo_init_logging2(tall_sgsnemu_ctx, &log_info); /* Process options given in configuration file and command line */ if (process_options(argc, argv)) diff --git a/tests/gtp/gtpie_test.c b/tests/gtp/gtpie_test.c index e3bc2e0..95dd900 100644 --- a/tests/gtp/gtpie_test.c +++ b/tests/gtp/gtpie_test.c @@ -7,6 +7,7 @@ #include #include #include +#include #include #include "../../lib/syserr.h" @@ -108,7 +109,9 @@ int main(int argc, char **argv) { - osmo_init_logging(&log_info); + void *tall_ctx = talloc_named_const(NULL, 1, "Root context"); + msgb_talloc_ctx_init(tall_ctx, 0); + osmo_init_logging2(tall_ctx, &log_info); log_set_use_color(osmo_stderr_target, 0); log_set_print_filename(osmo_stderr_target, 0); diff --git a/tests/lib/in46a_test.c b/tests/lib/in46a_test.c index b22da16..407ac5d 100644 --- a/tests/lib/in46a_test.c +++ b/tests/lib/in46a_test.c @@ -10,6 +10,7 @@ #include #include #include +#include #include #include "../../lib/in46_addr.h" @@ -426,7 +427,9 @@ int main(int argc, char **argv) { - osmo_init_logging(&log_info); + void *tall_ctx = talloc_named_const(NULL, 1, "Root context"); + msgb_talloc_ctx_init(tall_ctx, 0); + osmo_init_logging2(tall_ctx, &log_info); log_set_use_color(osmo_stderr_target, 0); log_set_print_filename(osmo_stderr_target, 0); diff --git a/tests/lib/ippool_test.c b/tests/lib/ippool_test.c index 8d3f46c..6155ab8 100644 --- a/tests/lib/ippool_test.c +++ b/tests/lib/ippool_test.c @@ -7,6 +7,7 @@ #include #include #include +#include #include "../../lib/in46_addr.h" #include "../../lib/ippool.h" @@ -126,7 +127,9 @@ int main(int argc, char **argv) { - osmo_init_logging(&log_info); + void *tall_ctx = talloc_named_const(NULL, 1, "Root context"); + msgb_talloc_ctx_init(tall_ctx, 0); + osmo_init_logging2(tall_ctx, &log_info); log_set_use_color(osmo_stderr_target, 0); log_set_print_filename(osmo_stderr_target, 0); -- To view, visit https://gerrit.osmocom.org/7852 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: Ic38fff17cc985238b91999c8acdd92d22fd28c72 Gerrit-PatchSet: 1 Gerrit-Project: osmo-ggsn Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder From gerrit-no-reply at lists.osmocom.org Tue Apr 17 19:45:43 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Tue, 17 Apr 2018 19:45:43 +0000 Subject: osmo-ttcn3-hacks[master]: BSSAP_Adapter: Introduce transport over IPA/SCCPlite In-Reply-To: References: Message-ID: Patch Set 2: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7860 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Ie844c4de62e0ef5d5c4c366185968211a7f6d676 Gerrit-PatchSet: 2 Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Owner: Harald Welte Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Tue Apr 17 19:45:44 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Tue, 17 Apr 2018 19:45:44 +0000 Subject: osmo-ttcn3-hacks[master]: IPA: Fix wrong CCM ID_ACK logic; disable CCM on CTRL interface In-Reply-To: References: Message-ID: Patch Set 2: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7861 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I6d9eaf0d69457caacc03b9049a8bc57976480617 Gerrit-PatchSet: 2 Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Owner: Harald Welte Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Tue Apr 17 19:49:34 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Tue, 17 Apr 2018 19:49:34 +0000 Subject: [PATCH] osmo-ttcn3-hacks[master]: BSSAP_Adapter: Introduce transport over IPA/SCCPlite In-Reply-To: References: Message-ID: Hello Jenkins Builder, I'd like you to reexamine a change. Please visit https://gerrit.osmocom.org/7860 to look at the new patch set (#3). BSSAP_Adapter: Introduce transport over IPA/SCCPlite In addition to the existing 3GPP AoIP stacking, allow BSSAP to run on top of a SCCPlite stacking. Implement both the server and the client role for IPA. Related: OS#2544 Change-Id: Ie844c4de62e0ef5d5c4c366185968211a7f6d676 --- M bsc/BSC_Tests.ttcn M bsc/regen_makefile.sh M library/BSSAP_Adapter.ttcn M msc/regen_makefile.sh 4 files changed, 45 insertions(+), 10 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-ttcn3-hacks refs/changes/60/7860/3 diff --git a/bsc/BSC_Tests.ttcn b/bsc/BSC_Tests.ttcn index 8380175..0299026 100644 --- a/bsc/BSC_Tests.ttcn +++ b/bsc/BSC_Tests.ttcn @@ -100,6 +100,7 @@ charstring mp_test_ip := "127.0.0.1"; BSSAP_Configuration mp_bssap_cfg := { + transport := BSSAP_TRANSPORT_AoIP, sccp_service_type := "mtp3_itu", sctp_addr := { 23905, "127.0.0.1", 2905, "127.0.0.1" }, own_pc := 185, diff --git a/bsc/regen_makefile.sh b/bsc/regen_makefile.sh index 1e52252..08629d2 100755 --- a/bsc/regen_makefile.sh +++ b/bsc/regen_makefile.sh @@ -4,6 +4,6 @@ FILES="*.ttcn *.ttcnpp IPA_CodecPort_CtrlFunctDef.cc IPL4asp_PT.cc IPL4asp_discovery.cc TCCConversion.cc TCCInterface.cc SCTPasp_PT.cc RTP_EncDec.cc SDP_EncDec.cc RTP_CodecPort_CtrlFunctDef.cc MGCP_CodecPort_CtrlFunctDef.cc IuUP_EncDec.cc Native_FunctionDefs.cc TELNETasp_PT.cc *.c" -export CPPFLAGS_TTCN3="-DIPA_EMULATION_RSL -DIPA_EMULATION_MGCP -DUSE_MTP3_DISTRIBUTOR" +export CPPFLAGS_TTCN3="-DIPA_EMULATION_RSL -DIPA_EMULATION_MGCP -DIPA_EMULATION_SCCP -DUSE_MTP3_DISTRIBUTOR" ../regen-makefile.sh $MAIN $FILES diff --git a/library/BSSAP_Adapter.ttcn b/library/BSSAP_Adapter.ttcn index 6c4f30e..1a9fdb4 100644 --- a/library/BSSAP_Adapter.ttcn +++ b/library/BSSAP_Adapter.ttcn @@ -13,6 +13,8 @@ import from MTP3asp_Types all; import from MTP3asp_PortType all; +import from IPA_Emulation all; + import from SCCP_Types all; import from SCCPasp_Types all; import from SCCP_Emulation all; @@ -26,7 +28,8 @@ type record BSSAP_Adapter { /* component references */ - M3UA_CT vc_M3UA, + M3UA_CT vc_M3UA, /* only in 3GPP AoIP */ + IPA_Emulation_CT vc_IPA, /* only in SCCPliste */ SCCP_CT vc_SCCP, MSC_SCCP_MTP3_parameters sccp_pars, @@ -37,7 +40,14 @@ BSSMAP_Emulation_CT vc_BSSMAP } +type enumerated BSSAP_Transport { + BSSAP_TRANSPORT_AoIP, /* 3GPP AoIP: SCCP over M3UA over SCTP */ + BSSAP_TRANSPORT_SCCPlite_SERVER, /* SCCPlite: SCCP over IPA over TCP */ + BSSAP_TRANSPORT_SCCPlite_CLIENT /* SCCPlite: SCCP over IPA over TCP */ +}; + type record BSSAP_Configuration { + BSSAP_Transport transport, charstring sccp_service_type, SCTP_Association_Address sctp_addr, integer own_pc, @@ -87,18 +97,42 @@ ops.sccp_addr_peer := ba.sccp_addr_peer; /* create components */ - ba.vc_M3UA := M3UA_CT.create(id & "-M3UA"); ba.vc_SCCP := SCCP_CT.create(id & "-SCCP"); if (isvalue(ops)) { ba.vc_BSSMAP := BSSMAP_Emulation_CT.create(id & "-BSSMAP"); } + select (cfg.transport) { + case (BSSAP_TRANSPORT_AoIP) { + ba.vc_M3UA := M3UA_CT.create(id & "-M3UA"); + map(ba.vc_M3UA:SCTP_PORT, system:sctp); + /* connect MTP3 service provider (M3UA) to lower side of SCCP */ + connect(ba.vc_M3UA:MTP3_SP_PORT, ba.vc_SCCP:MTP3_SCCP_PORT); + ba.vc_M3UA.start(f_M3UA_Emulation(cfg.sctp_addr, cfg.rctx)); + } + case (BSSAP_TRANSPORT_SCCPlite_SERVER) { + ba.vc_IPA := IPA_Emulation_CT.create(id & "-IPA"); + map(ba.vc_IPA:IPA_PORT, system:IPA_CODEC_PT); + /* connect MTP3 service provider (IPA) to lower side of SCCP */ + connect(ba.vc_IPA:MTP3_SP_PORT, ba.vc_SCCP:MTP3_SCCP_PORT); + ba.vc_IPA.start(IPA_Emulation.main_server(cfg.sctp_addr.local_ip_addr, + cfg.sctp_addr.local_sctp_port)); + } + case (BSSAP_TRANSPORT_SCCPlite_CLIENT) { + ba.vc_IPA := IPA_Emulation_CT.create(id & "-IPA"); + map(ba.vc_IPA:IPA_PORT, system:IPA_CODEC_PT); + /* connect MTP3 service provider (IPA) to lower side of SCCP */ + connect(ba.vc_IPA:MTP3_SP_PORT, ba.vc_SCCP:MTP3_SCCP_PORT); + ba.vc_IPA.start(IPA_Emulation.main_client(cfg.sctp_addr.remote_ip_addr, + cfg.sctp_addr.remote_sctp_port, + cfg.sctp_addr.local_ip_addr, + cfg.sctp_addr.local_sctp_port)); + } + case else { + setverdict(fail, "Unsuppored BSSAP_Transport"); + self.stop; + } + } - map(ba.vc_M3UA:SCTP_PORT, system:sctp); - - /* connect MTP3 service provider (M3UA) to lower side of SCCP */ - connect(ba.vc_M3UA:MTP3_SP_PORT, ba.vc_SCCP:MTP3_SCCP_PORT); - - ba.vc_M3UA.start(f_M3UA_Emulation(cfg.sctp_addr, cfg.rctx)); ba.vc_SCCP.start(SCCPStart(ba.sccp_pars)); if (isvalue(ops)) { diff --git a/msc/regen_makefile.sh b/msc/regen_makefile.sh index de8f7ab..fc4a29d 100755 --- a/msc/regen_makefile.sh +++ b/msc/regen_makefile.sh @@ -2,6 +2,6 @@ FILES="*.ttcn *.ttcnpp SCCP_EncDec.cc SCTPasp_PT.cc TCCConversion.cc TCCInterface.cc UD_PT.cc MNCC_EncDec.cc IPL4asp_PT.cc IPL4asp_discovery.cc SDP_EncDec.cc RTP_EncDec.cc IPA_CodecPort_CtrlFunctDef.cc RTP_CodecPort_CtrlFunctDef.cc MGCP_CodecPort_CtrlFunctDef.cc TELNETasp_PT.cc Native_FunctionDefs.cc SMPP_EncDec.cc SMPP_CodecPort_CtrlFunctDef.cc *.c" -export CPPFLAGS_TTCN3="-DIPA_EMULATION_MGCP -DIPA_EMULATION_GSUP -DUSE_MTP3_DISTRIBUTOR" +export CPPFLAGS_TTCN3="-DIPA_EMULATION_MGCP -DIPA_EMULATION_GSUP -DIPA_EMULATION_SCCP -DUSE_MTP3_DISTRIBUTOR" ../regen-makefile.sh MSC_Tests.ttcn $FILES -- To view, visit https://gerrit.osmocom.org/7860 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newpatchset Gerrit-Change-Id: Ie844c4de62e0ef5d5c4c366185968211a7f6d676 Gerrit-PatchSet: 3 Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Owner: Harald Welte Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder From gerrit-no-reply at lists.osmocom.org Tue Apr 17 19:52:10 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Tue, 17 Apr 2018 19:52:10 +0000 Subject: osmo-ttcn3-hacks[master]: BSSAP_Adapter: Introduce transport over IPA/SCCPlite In-Reply-To: References: Message-ID: Patch Set 3: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7860 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Ie844c4de62e0ef5d5c4c366185968211a7f6d676 Gerrit-PatchSet: 3 Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Owner: Harald Welte Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Tue Apr 17 19:52:20 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Tue, 17 Apr 2018 19:52:20 +0000 Subject: [MERGED] osmo-ttcn3-hacks[master]: BSSAP_Adapter: Introduce transport over IPA/SCCPlite In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: BSSAP_Adapter: Introduce transport over IPA/SCCPlite ...................................................................... BSSAP_Adapter: Introduce transport over IPA/SCCPlite In addition to the existing 3GPP AoIP stacking, allow BSSAP to run on top of a SCCPlite stacking. Implement both the server and the client role for IPA. Related: OS#2544 Change-Id: Ie844c4de62e0ef5d5c4c366185968211a7f6d676 --- M bsc/BSC_Tests.ttcn M bsc/regen_makefile.sh M library/BSSAP_Adapter.ttcn M msc/regen_makefile.sh 4 files changed, 45 insertions(+), 10 deletions(-) Approvals: Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/bsc/BSC_Tests.ttcn b/bsc/BSC_Tests.ttcn index 8380175..0299026 100644 --- a/bsc/BSC_Tests.ttcn +++ b/bsc/BSC_Tests.ttcn @@ -100,6 +100,7 @@ charstring mp_test_ip := "127.0.0.1"; BSSAP_Configuration mp_bssap_cfg := { + transport := BSSAP_TRANSPORT_AoIP, sccp_service_type := "mtp3_itu", sctp_addr := { 23905, "127.0.0.1", 2905, "127.0.0.1" }, own_pc := 185, diff --git a/bsc/regen_makefile.sh b/bsc/regen_makefile.sh index 1e52252..08629d2 100755 --- a/bsc/regen_makefile.sh +++ b/bsc/regen_makefile.sh @@ -4,6 +4,6 @@ FILES="*.ttcn *.ttcnpp IPA_CodecPort_CtrlFunctDef.cc IPL4asp_PT.cc IPL4asp_discovery.cc TCCConversion.cc TCCInterface.cc SCTPasp_PT.cc RTP_EncDec.cc SDP_EncDec.cc RTP_CodecPort_CtrlFunctDef.cc MGCP_CodecPort_CtrlFunctDef.cc IuUP_EncDec.cc Native_FunctionDefs.cc TELNETasp_PT.cc *.c" -export CPPFLAGS_TTCN3="-DIPA_EMULATION_RSL -DIPA_EMULATION_MGCP -DUSE_MTP3_DISTRIBUTOR" +export CPPFLAGS_TTCN3="-DIPA_EMULATION_RSL -DIPA_EMULATION_MGCP -DIPA_EMULATION_SCCP -DUSE_MTP3_DISTRIBUTOR" ../regen-makefile.sh $MAIN $FILES diff --git a/library/BSSAP_Adapter.ttcn b/library/BSSAP_Adapter.ttcn index 6c4f30e..1a9fdb4 100644 --- a/library/BSSAP_Adapter.ttcn +++ b/library/BSSAP_Adapter.ttcn @@ -13,6 +13,8 @@ import from MTP3asp_Types all; import from MTP3asp_PortType all; +import from IPA_Emulation all; + import from SCCP_Types all; import from SCCPasp_Types all; import from SCCP_Emulation all; @@ -26,7 +28,8 @@ type record BSSAP_Adapter { /* component references */ - M3UA_CT vc_M3UA, + M3UA_CT vc_M3UA, /* only in 3GPP AoIP */ + IPA_Emulation_CT vc_IPA, /* only in SCCPliste */ SCCP_CT vc_SCCP, MSC_SCCP_MTP3_parameters sccp_pars, @@ -37,7 +40,14 @@ BSSMAP_Emulation_CT vc_BSSMAP } +type enumerated BSSAP_Transport { + BSSAP_TRANSPORT_AoIP, /* 3GPP AoIP: SCCP over M3UA over SCTP */ + BSSAP_TRANSPORT_SCCPlite_SERVER, /* SCCPlite: SCCP over IPA over TCP */ + BSSAP_TRANSPORT_SCCPlite_CLIENT /* SCCPlite: SCCP over IPA over TCP */ +}; + type record BSSAP_Configuration { + BSSAP_Transport transport, charstring sccp_service_type, SCTP_Association_Address sctp_addr, integer own_pc, @@ -87,18 +97,42 @@ ops.sccp_addr_peer := ba.sccp_addr_peer; /* create components */ - ba.vc_M3UA := M3UA_CT.create(id & "-M3UA"); ba.vc_SCCP := SCCP_CT.create(id & "-SCCP"); if (isvalue(ops)) { ba.vc_BSSMAP := BSSMAP_Emulation_CT.create(id & "-BSSMAP"); } + select (cfg.transport) { + case (BSSAP_TRANSPORT_AoIP) { + ba.vc_M3UA := M3UA_CT.create(id & "-M3UA"); + map(ba.vc_M3UA:SCTP_PORT, system:sctp); + /* connect MTP3 service provider (M3UA) to lower side of SCCP */ + connect(ba.vc_M3UA:MTP3_SP_PORT, ba.vc_SCCP:MTP3_SCCP_PORT); + ba.vc_M3UA.start(f_M3UA_Emulation(cfg.sctp_addr, cfg.rctx)); + } + case (BSSAP_TRANSPORT_SCCPlite_SERVER) { + ba.vc_IPA := IPA_Emulation_CT.create(id & "-IPA"); + map(ba.vc_IPA:IPA_PORT, system:IPA_CODEC_PT); + /* connect MTP3 service provider (IPA) to lower side of SCCP */ + connect(ba.vc_IPA:MTP3_SP_PORT, ba.vc_SCCP:MTP3_SCCP_PORT); + ba.vc_IPA.start(IPA_Emulation.main_server(cfg.sctp_addr.local_ip_addr, + cfg.sctp_addr.local_sctp_port)); + } + case (BSSAP_TRANSPORT_SCCPlite_CLIENT) { + ba.vc_IPA := IPA_Emulation_CT.create(id & "-IPA"); + map(ba.vc_IPA:IPA_PORT, system:IPA_CODEC_PT); + /* connect MTP3 service provider (IPA) to lower side of SCCP */ + connect(ba.vc_IPA:MTP3_SP_PORT, ba.vc_SCCP:MTP3_SCCP_PORT); + ba.vc_IPA.start(IPA_Emulation.main_client(cfg.sctp_addr.remote_ip_addr, + cfg.sctp_addr.remote_sctp_port, + cfg.sctp_addr.local_ip_addr, + cfg.sctp_addr.local_sctp_port)); + } + case else { + setverdict(fail, "Unsuppored BSSAP_Transport"); + self.stop; + } + } - map(ba.vc_M3UA:SCTP_PORT, system:sctp); - - /* connect MTP3 service provider (M3UA) to lower side of SCCP */ - connect(ba.vc_M3UA:MTP3_SP_PORT, ba.vc_SCCP:MTP3_SCCP_PORT); - - ba.vc_M3UA.start(f_M3UA_Emulation(cfg.sctp_addr, cfg.rctx)); ba.vc_SCCP.start(SCCPStart(ba.sccp_pars)); if (isvalue(ops)) { diff --git a/msc/regen_makefile.sh b/msc/regen_makefile.sh index de8f7ab..fc4a29d 100755 --- a/msc/regen_makefile.sh +++ b/msc/regen_makefile.sh @@ -2,6 +2,6 @@ FILES="*.ttcn *.ttcnpp SCCP_EncDec.cc SCTPasp_PT.cc TCCConversion.cc TCCInterface.cc UD_PT.cc MNCC_EncDec.cc IPL4asp_PT.cc IPL4asp_discovery.cc SDP_EncDec.cc RTP_EncDec.cc IPA_CodecPort_CtrlFunctDef.cc RTP_CodecPort_CtrlFunctDef.cc MGCP_CodecPort_CtrlFunctDef.cc TELNETasp_PT.cc Native_FunctionDefs.cc SMPP_EncDec.cc SMPP_CodecPort_CtrlFunctDef.cc *.c" -export CPPFLAGS_TTCN3="-DIPA_EMULATION_MGCP -DIPA_EMULATION_GSUP -DUSE_MTP3_DISTRIBUTOR" +export CPPFLAGS_TTCN3="-DIPA_EMULATION_MGCP -DIPA_EMULATION_GSUP -DIPA_EMULATION_SCCP -DUSE_MTP3_DISTRIBUTOR" ../regen-makefile.sh MSC_Tests.ttcn $FILES -- To view, visit https://gerrit.osmocom.org/7860 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: Ie844c4de62e0ef5d5c4c366185968211a7f6d676 Gerrit-PatchSet: 3 Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Owner: Harald Welte Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder From gerrit-no-reply at lists.osmocom.org Tue Apr 17 19:52:32 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Tue, 17 Apr 2018 19:52:32 +0000 Subject: [MERGED] osmo-ttcn3-hacks[master]: IPA: Fix wrong CCM ID_ACK logic; disable CCM on CTRL interface In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: IPA: Fix wrong CCM ID_ACK logic; disable CCM on CTRL interface ...................................................................... IPA: Fix wrong CCM ID_ACK logic; disable CCM on CTRL interface Our TTCN3 implementation of the IPA multiplex with CCM handshaking has been based on some wrong assumptions about the protocol logic. To make the code stricter, we * send an ID_ACK immediately after connecting TCP in a client * separate client and server CCM responder logic * always respond with ID_ACK to ID_RESP (we accept any identity) Also, as the Osmocom CTRL interface uses an IPA multiplex but no CCM, we introduce a boolean variable (and function argument) to clearly enable/disable CCM support in a given IPA_Emulation component. The CTRL_Adapter has been modified to use this flag to disable CCM. This also removes the need of cherry-picking "HACK: Work around IPA CCM bug in OsmoBSC" Change-Id: I304535d28a165f76a0a140dc0a15dd81a9db28c8 from the laforge/bsc-workaround branch. Change-Id: I6d9eaf0d69457caacc03b9049a8bc57976480617 --- M library/IPA_Emulation.ttcnpp M library/Osmocom_CTRL_Adapter.ttcn 2 files changed, 53 insertions(+), 12 deletions(-) Approvals: Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/library/IPA_Emulation.ttcnpp b/library/IPA_Emulation.ttcnpp index c3cfe8d..be64dd1 100644 --- a/library/IPA_Emulation.ttcnpp +++ b/library/IPA_Emulation.ttcnpp @@ -164,6 +164,7 @@ var boolean g_is_bsc_mgw; var IpaMode g_mode; + var boolean g_ccm_enabled; var IPA_CCM_Parameters g_ccm_pars := c_IPA_default_ccm_pars; } @@ -331,19 +332,39 @@ } /* receive IPA CCM message */ -private function f_ccm_rx(PDU_IPA_CCM ccm) runs on IPA_Emulation_CT { +private function f_ccm_rx_client(PDU_IPA_CCM ccm) runs on IPA_Emulation_CT { select (ccm.msg_type) { case (IPAC_MSGT_PING) { f_ccm_tx(valueof(ts_IPA_PONG)); } case (IPAC_MSGT_ID_ACK) { - f_ccm_tx(valueof(ts_IPA_ACK)); + f_send_IPA_EVT(t_ASP_IPA_EVT_UD(ASP_IPA_EVENT_ID_ACK)); } case (IPAC_MSGT_ID_GET) { f_ccm_tx(f_ccm_make_id_resp(ccm)); } + case else { + log("Unknown/unsupported IPA CCM message type", ccm); + } + } +} + +private function f_ccm_rx_server(PDU_IPA_CCM ccm) runs on IPA_Emulation_CT { + select (ccm.msg_type) { + case (IPAC_MSGT_PING) { + f_ccm_tx(valueof(ts_IPA_PONG)); + } + case (IPAC_MSGT_ID_ACK) { + /* the IPA server should at some point receive an ID_ACK from the client, + * in case of RSL/OML from nanoBTS, this is actually the first message after + * the TCP connection is established. Other implementations may differ. + * We currently ignore it completely - but actually we should make sure that + * one ID_ACK is received by the server at some point */ + } case (IPAC_MSGT_ID_RESP) { log("IPA ID RESP: ", ccm.u.resp); + /* acknowledge any identity that the client may have sent */ + f_ccm_tx(valueof(ts_IPA_ACK)); } case else { log("Unknown/unsupported IPA CCM message type", ccm); @@ -377,16 +398,24 @@ /* main function to use for a client-side IPA implementation */ function main_client(charstring remote_host, IPL4asp_Types.PortNumber remote_port, charstring local_host, IPL4asp_Types.PortNumber local_port, - IPA_CCM_Parameters ccm_pars := c_IPA_default_ccm_pars) runs on IPA_Emulation_CT { + IPA_CCM_Parameters ccm_pars := c_IPA_default_ccm_pars, + boolean ccm_enabled := true) runs on IPA_Emulation_CT { g_mode := IPA_MODE_CLIENT; + g_ccm_enabled := ccm_enabled; f_connect(remote_host, remote_port, local_host, local_port, ccm_pars); + if (g_ccm_enabled) { + /* we're a client: Send ID_ACK immediately after connect */ + f_ccm_tx(valueof(ts_IPA_ACK)); + } f_send_IPA_EVT(t_ASP_IPA_EVT_UD(ASP_IPA_EVENT_UP)); ScanEvents(); } /* main function to use for a server-side IPA implementation */ -function main_server(charstring local_host, IPL4asp_Types.PortNumber local_port) runs on IPA_Emulation_CT { +function main_server(charstring local_host, IPL4asp_Types.PortNumber local_port, + boolean ccm_enabled := true) runs on IPA_Emulation_CT { g_mode := IPA_MODE_SERVER; + g_ccm_enabled := ccm_enabled; f_bind(local_host, local_port); ScanEvents(); } @@ -454,13 +483,24 @@ while (true) { alt { /* Received IPA -> up into SCCP stack */ - [] IPA_PORT.receive(IPA_RecvFrom: ?) -> value ipa_rx { - select (ipa_rx.streamId) { - case (IPAC_PROTO_CCM) { - var PDU_IPA_CCM ccm := dec_PDU_IPA_CCM(ipa_rx.msg); - log("CCM Rx:", ccm); - f_ccm_rx(ccm); + [g_ccm_enabled] IPA_PORT.receive(IPA_RecvFrom:{?,IPAC_PROTO_CCM,omit,?}) -> value ipa_rx { + var PDU_IPA_CCM ccm := dec_PDU_IPA_CCM(ipa_rx.msg); + log("CCM Rx:", ccm); + select (g_mode) { + case (IPA_MODE_CLIENT) { + f_ccm_rx_client(ccm); + } + case (IPA_MODE_SERVER) { + f_ccm_rx_server(ccm); + } + case else { + setverdict(fail, "Unknown mode"); + self.stop; + } } + } + [] IPA_PORT.receive(IPA_RecvFrom:?) -> value ipa_rx { + select (ipa_rx.streamId) { #ifdef IPA_EMULATION_SCCP case (IPAC_PROTO_SCCP) { var ASP_MTP3_TRANSFERind mtp; @@ -513,7 +553,7 @@ log("IPA: Connected"); g_ipa_conn_id := asp_evt.connOpened.connId; f_send_IPA_EVT(t_ASP_IPA_EVT_UD(ASP_IPA_EVENT_UP)); - if (g_mode == IPA_MODE_SERVER) { + if (g_mode == IPA_MODE_SERVER and g_ccm_enabled) { f_ccm_tx(valueof(ts_IPA_ID_GET)); } } diff --git a/library/Osmocom_CTRL_Adapter.ttcn b/library/Osmocom_CTRL_Adapter.ttcn index 9baa6a2..22195c8 100644 --- a/library/Osmocom_CTRL_Adapter.ttcn +++ b/library/Osmocom_CTRL_Adapter.ttcn @@ -29,7 +29,8 @@ map(vc_CTRL_IPA:IPA_PORT, system:IPA_CODEC_PT); connect(vc_CTRL_IPA:IPA_CTRL_PORT, self:IPA_CTRL); - vc_CTRL_IPA.start(IPA_Emulation.main_client(bsc_host, bsc_port, "", -1)); + vc_CTRL_IPA.start(IPA_Emulation.main_client(bsc_host, bsc_port, "", -1, + c_IPA_default_ccm_pars, false)); /* wait for IPA CTRL link to connect and send UP */ T.start; -- To view, visit https://gerrit.osmocom.org/7861 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: I6d9eaf0d69457caacc03b9049a8bc57976480617 Gerrit-PatchSet: 3 Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Owner: Harald Welte Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder From gerrit-no-reply at lists.osmocom.org Tue Apr 17 19:56:57 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Tue, 17 Apr 2018 19:56:57 +0000 Subject: [MERGED] osmo-bts[master]: common/sysinfo.c: Fix no return on on-void function In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: common/sysinfo.c: Fix no return on on-void function ...................................................................... common/sysinfo.c: Fix no return on on-void function src/common/sysinfo.c:147:1: warning: control reaches end of non-void function [-Wreturn-type] } The compiler warning is actually a false positive since we call OSMO_ABORT on that path, but let's add a return anyway so the compiler doesn't throw a warning. Change-Id: I9b4e06927489a8bc20ce173279a01415a8c4295a --- M src/common/sysinfo.c 1 file changed, 1 insertion(+), 0 deletions(-) Approvals: Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/src/common/sysinfo.c b/src/common/sysinfo.c index f5f9c7e..5c66e08 100644 --- a/src/common/sysinfo.c +++ b/src/common/sysinfo.c @@ -144,6 +144,7 @@ /* this should never bve reached. We must transmit a BCCH * message on the normal BCCH in all cases. */ OSMO_ASSERT(0); + return 0; } uint8_t num_agch(struct gsm_bts_trx *trx, const char * arg) -- To view, visit https://gerrit.osmocom.org/7857 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: I9b4e06927489a8bc20ce173279a01415a8c4295a Gerrit-PatchSet: 2 Gerrit-Project: osmo-bts Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder From gerrit-no-reply at lists.osmocom.org Tue Apr 17 19:59:06 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Tue, 17 Apr 2018 19:59:06 +0000 Subject: [PATCH] docker-playground[master]: ttcn3-*-test: Remove cherry-pick of CCM related HACK Message-ID: Review at https://gerrit.osmocom.org/7864 ttcn3-*-test: Remove cherry-pick of CCM related HACK This is no longer needed as the fix for https://osmocom.org/issues/2718 has been merged to master of osmo-ttcn3-hacks Change-Id: Ia0c1c134405fdbce1c65059d705827f1a643e774 Related: OS#2718 --- M ttcn3-bsc-test/Dockerfile M ttcn3-bts-test/Dockerfile M ttcn3-hlr-test/Dockerfile M ttcn3-msc-test/Dockerfile M ttcn3-sgsn-test/Dockerfile M ttcn3-sip-test/Dockerfile 6 files changed, 0 insertions(+), 6 deletions(-) git pull ssh://gerrit.osmocom.org:29418/docker-playground refs/changes/64/7864/1 diff --git a/ttcn3-bsc-test/Dockerfile b/ttcn3-bsc-test/Dockerfile index 0a4b4e6..4f0c606 100644 --- a/ttcn3-bsc-test/Dockerfile +++ b/ttcn3-bsc-test/Dockerfile @@ -16,7 +16,6 @@ RUN cd osmo-ttcn3-hacks && \ git fetch && \ git checkout -f -B $OSMO_TTCN3_BRANCH origin/$OSMO_TTCN3_BRANCH && \ - git cherry-pick 5ce5241d6d460e9b36a908ac7072d8ea68df08db && \ make bsc VOLUME /data diff --git a/ttcn3-bts-test/Dockerfile b/ttcn3-bts-test/Dockerfile index 0c82ff1..43ed4f0 100644 --- a/ttcn3-bts-test/Dockerfile +++ b/ttcn3-bts-test/Dockerfile @@ -17,7 +17,6 @@ git fetch && \ git checkout -f -B $OSMO_TTCN3_BRANCH origin/$OSMO_TTCN3_BRANCH && \ make deps-update bts - #git cherry-pick 5ce5241d6d460e9b36a908ac7072d8ea68df08db && \ VOLUME /data diff --git a/ttcn3-hlr-test/Dockerfile b/ttcn3-hlr-test/Dockerfile index a6ffb05..8a920a6 100644 --- a/ttcn3-hlr-test/Dockerfile +++ b/ttcn3-hlr-test/Dockerfile @@ -17,7 +17,6 @@ git fetch && \ git checkout -f -B $OSMO_TTCN3_BRANCH origin/$OSMO_TTCN3_BRANCH && \ make deps-update hlr - #git cherry-pick 5ce5241d6d460e9b36a908ac7072d8ea68df08db && \ VOLUME /data diff --git a/ttcn3-msc-test/Dockerfile b/ttcn3-msc-test/Dockerfile index e2a4310..315638f 100644 --- a/ttcn3-msc-test/Dockerfile +++ b/ttcn3-msc-test/Dockerfile @@ -16,7 +16,6 @@ RUN cd osmo-ttcn3-hacks && \ git fetch && \ git checkout -f -B $OSMO_TTCN3_BRANCH origin/$OSMO_TTCN3_BRANCH && \ - git cherry-pick 5ce5241d6d460e9b36a908ac7072d8ea68df08db && \ make msc VOLUME /data diff --git a/ttcn3-sgsn-test/Dockerfile b/ttcn3-sgsn-test/Dockerfile index 23117c4..dfca1c4 100644 --- a/ttcn3-sgsn-test/Dockerfile +++ b/ttcn3-sgsn-test/Dockerfile @@ -16,7 +16,6 @@ RUN cd osmo-ttcn3-hacks && \ git fetch && \ git checkout -f -B $OSMO_TTCN3_BRANCH origin/$OSMO_TTCN3_BRANCH && \ - git cherry-pick 5ce5241d6d460e9b36a908ac7072d8ea68df08db && \ make sgsn VOLUME /data diff --git a/ttcn3-sip-test/Dockerfile b/ttcn3-sip-test/Dockerfile index b03d494..d443d29 100644 --- a/ttcn3-sip-test/Dockerfile +++ b/ttcn3-sip-test/Dockerfile @@ -16,7 +16,6 @@ RUN cd osmo-ttcn3-hacks && \ git fetch && \ git checkout -f -B $OSMO_TTCN3_BRANCH origin/$OSMO_TTCN3_BRANCH && \ - git cherry-pick 5ce5241d6d460e9b36a908ac7072d8ea68df08db && \ make sip VOLUME /data -- To view, visit https://gerrit.osmocom.org/7864 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Ia0c1c134405fdbce1c65059d705827f1a643e774 Gerrit-PatchSet: 1 Gerrit-Project: docker-playground Gerrit-Branch: master Gerrit-Owner: Harald Welte From gerrit-no-reply at lists.osmocom.org Tue Apr 17 20:01:33 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Tue, 17 Apr 2018 20:01:33 +0000 Subject: docker-playground[master]: ttcn3-*-test: Remove cherry-pick of CCM related HACK In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7864 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Ia0c1c134405fdbce1c65059d705827f1a643e774 Gerrit-PatchSet: 1 Gerrit-Project: docker-playground Gerrit-Branch: master Gerrit-Owner: Harald Welte Gerrit-Reviewer: Harald Welte Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Tue Apr 17 20:09:18 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Tue, 17 Apr 2018 20:09:18 +0000 Subject: docker-playground[master]: ttcn3-*-test: Remove cherry-pick of CCM related HACK In-Reply-To: References: Message-ID: Patch Set 1: Verified+1 -- To view, visit https://gerrit.osmocom.org/7864 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Ia0c1c134405fdbce1c65059d705827f1a643e774 Gerrit-PatchSet: 1 Gerrit-Project: docker-playground Gerrit-Branch: master Gerrit-Owner: Harald Welte Gerrit-Reviewer: Harald Welte Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Tue Apr 17 20:09:21 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Tue, 17 Apr 2018 20:09:21 +0000 Subject: [MERGED] docker-playground[master]: ttcn3-*-test: Remove cherry-pick of CCM related HACK In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: ttcn3-*-test: Remove cherry-pick of CCM related HACK ...................................................................... ttcn3-*-test: Remove cherry-pick of CCM related HACK This is no longer needed as the fix for https://osmocom.org/issues/2718 has been merged to master of osmo-ttcn3-hacks Change-Id: Ia0c1c134405fdbce1c65059d705827f1a643e774 Related: OS#2718 --- M ttcn3-bsc-test/Dockerfile M ttcn3-bts-test/Dockerfile M ttcn3-hlr-test/Dockerfile M ttcn3-msc-test/Dockerfile M ttcn3-sgsn-test/Dockerfile M ttcn3-sip-test/Dockerfile 6 files changed, 0 insertions(+), 6 deletions(-) Approvals: Harald Welte: Looks good to me, approved; Verified diff --git a/ttcn3-bsc-test/Dockerfile b/ttcn3-bsc-test/Dockerfile index 0a4b4e6..4f0c606 100644 --- a/ttcn3-bsc-test/Dockerfile +++ b/ttcn3-bsc-test/Dockerfile @@ -16,7 +16,6 @@ RUN cd osmo-ttcn3-hacks && \ git fetch && \ git checkout -f -B $OSMO_TTCN3_BRANCH origin/$OSMO_TTCN3_BRANCH && \ - git cherry-pick 5ce5241d6d460e9b36a908ac7072d8ea68df08db && \ make bsc VOLUME /data diff --git a/ttcn3-bts-test/Dockerfile b/ttcn3-bts-test/Dockerfile index 0c82ff1..43ed4f0 100644 --- a/ttcn3-bts-test/Dockerfile +++ b/ttcn3-bts-test/Dockerfile @@ -17,7 +17,6 @@ git fetch && \ git checkout -f -B $OSMO_TTCN3_BRANCH origin/$OSMO_TTCN3_BRANCH && \ make deps-update bts - #git cherry-pick 5ce5241d6d460e9b36a908ac7072d8ea68df08db && \ VOLUME /data diff --git a/ttcn3-hlr-test/Dockerfile b/ttcn3-hlr-test/Dockerfile index a6ffb05..8a920a6 100644 --- a/ttcn3-hlr-test/Dockerfile +++ b/ttcn3-hlr-test/Dockerfile @@ -17,7 +17,6 @@ git fetch && \ git checkout -f -B $OSMO_TTCN3_BRANCH origin/$OSMO_TTCN3_BRANCH && \ make deps-update hlr - #git cherry-pick 5ce5241d6d460e9b36a908ac7072d8ea68df08db && \ VOLUME /data diff --git a/ttcn3-msc-test/Dockerfile b/ttcn3-msc-test/Dockerfile index e2a4310..315638f 100644 --- a/ttcn3-msc-test/Dockerfile +++ b/ttcn3-msc-test/Dockerfile @@ -16,7 +16,6 @@ RUN cd osmo-ttcn3-hacks && \ git fetch && \ git checkout -f -B $OSMO_TTCN3_BRANCH origin/$OSMO_TTCN3_BRANCH && \ - git cherry-pick 5ce5241d6d460e9b36a908ac7072d8ea68df08db && \ make msc VOLUME /data diff --git a/ttcn3-sgsn-test/Dockerfile b/ttcn3-sgsn-test/Dockerfile index 23117c4..dfca1c4 100644 --- a/ttcn3-sgsn-test/Dockerfile +++ b/ttcn3-sgsn-test/Dockerfile @@ -16,7 +16,6 @@ RUN cd osmo-ttcn3-hacks && \ git fetch && \ git checkout -f -B $OSMO_TTCN3_BRANCH origin/$OSMO_TTCN3_BRANCH && \ - git cherry-pick 5ce5241d6d460e9b36a908ac7072d8ea68df08db && \ make sgsn VOLUME /data diff --git a/ttcn3-sip-test/Dockerfile b/ttcn3-sip-test/Dockerfile index b03d494..d443d29 100644 --- a/ttcn3-sip-test/Dockerfile +++ b/ttcn3-sip-test/Dockerfile @@ -16,7 +16,6 @@ RUN cd osmo-ttcn3-hacks && \ git fetch && \ git checkout -f -B $OSMO_TTCN3_BRANCH origin/$OSMO_TTCN3_BRANCH && \ - git cherry-pick 5ce5241d6d460e9b36a908ac7072d8ea68df08db && \ make sip VOLUME /data -- To view, visit https://gerrit.osmocom.org/7864 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: Ia0c1c134405fdbce1c65059d705827f1a643e774 Gerrit-PatchSet: 1 Gerrit-Project: docker-playground Gerrit-Branch: master Gerrit-Owner: Harald Welte Gerrit-Reviewer: Harald Welte From gerrit-no-reply at lists.osmocom.org Tue Apr 17 21:34:17 2018 From: gerrit-no-reply at lists.osmocom.org (Neels Hofmeyr) Date: Tue, 17 Apr 2018 21:34:17 +0000 Subject: osmo-hlr[master]: rewrite subscriber_update_notify() without calls into luop In-Reply-To: References: Message-ID: Patch Set 2: Thinking back about this, I told you two things that might have been a bit confusing. One suggested solution is to use the "SGSN" string to determine whether the conn is PS. If we do that, it should be evaluated as soon as the conn gets established, i.e. in osmo_gsup_server_accept_cb(). The other suggested solution is to use the cn_domain indicator we receive as an IE during a lu_op. In this solution, we don't parse the "SGSN" string at all, but record the PS-ness when we receive the first LU, assuming that each GSUP client is always either PS or CS. For this solution, lu_op.c is indeed the right place, but then we don't parse the string but use the cn_domain received in the GSUP message. Extending on the second solution: we may want to allow a GSUP client to handle both PS and CS, so we could record PS-ness and CS-ness independently, so that a client can be both CS and PS at the same time. This is so far unused, but thinking of GSUP proxying or stuff like that which we might want to do at some point is worth considering. The implication so far is that a client that has never sent a PS lu_op simply doesn't get notified of APN changes, AFAICT. Seems sane enough. -- To view, visit https://gerrit.osmocom.org/7743 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I06c43ece2b48dc63d599000eb6d6d51e08963067 Gerrit-PatchSet: 2 Gerrit-Project: osmo-hlr Gerrit-Branch: master Gerrit-Owner: Stefan Sperling Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Neels Hofmeyr Gerrit-Reviewer: Stefan Sperling Gerrit-Reviewer: neels Gerrit-HasComments: No From jenkins at lists.osmocom.org Tue Apr 17 23:18:12 2018 From: jenkins at lists.osmocom.org (jenkins at lists.osmocom.org) Date: Tue, 17 Apr 2018 23:18:12 +0000 (UTC) Subject: =?UTF-8?Q?Build_failed_in_Jenkins:_master-osmo-bts_=C2=BB_sysmo,s?= =?UTF-8?Q?uperfemto=5Fv3.1,default,osmocom-master-debian9_#525?= Message-ID: <1312199188.436.1524007092293.JavaMail.jenkins@jenkins.osmocom.org> See ------------------------------------------ [...truncated 31.58 KB...] checking how to convert x86_64-pc-linux-gnu file names to toolchain format... func_convert_file_noop checking for /usr/bin/ld option to reload object files... -r checking for objdump... objdump checking how to recognize dependent libraries... pass_all checking for dlltool... no checking how to associate runtime and link libraries... printf %s\n checking for ar... ar checking for archiver @FILE support... @ checking for strip... strip checking for ranlib... ranlib checking command to parse /usr/bin/nm -B output from gcc object... ok checking for sysroot... no checking for a working dd... /bin/dd checking how to truncate binary pipes... /bin/dd bs=4096 count=1 checking for mt... mt checking if mt is a manifest tool... no checking how to run the C preprocessor... gcc -E checking for ANSI C header files... yes checking for sys/types.h... yes checking for sys/stat.h... yes checking for stdlib.h... yes checking for string.h... yes checking for memory.h... yes checking for strings.h... yes checking for inttypes.h... yes checking for stdint.h... yes checking for unistd.h... yes checking for dlfcn.h... yes checking for objdir... .libs checking if gcc supports -fno-rtti -fno-exceptions... no checking for gcc option to produce PIC... -fPIC -DPIC checking if gcc PIC flag -fPIC -DPIC works... yes checking if gcc static flag -static works... yes checking if gcc supports -c -o file.o... yes checking if gcc supports -c -o file.o... (cached) yes checking whether the gcc linker (/usr/bin/ld -m elf_x86_64) supports shared libraries... yes checking whether -lc should be explicitly linked in... no checking dynamic linker characteristics... GNU/Linux ld.so checking how to hardcode library paths into programs... immediate checking whether stripping libraries is possible... yes checking if libtool supports shared libraries... yes checking whether to build shared libraries... yes checking whether to build static libraries... no checking for pkg-config... /usr/bin/pkg-config checking for pkg-config... /usr/bin/pkg-config checking pkg-config is at least version 0.20... yes checking for ANSI C header files... (cached) yes checking execinfo.h usability... yes checking execinfo.h presence... yes checking for execinfo.h... yes checking sys/select.h usability... yes checking sys/select.h presence... yes checking for sys/select.h... yes checking sys/socket.h usability... yes checking sys/socket.h presence... yes checking for sys/socket.h... yes checking syslog.h usability... yes checking syslog.h presence... yes checking for syslog.h... yes checking ctype.h usability... yes checking ctype.h presence... yes checking for ctype.h... yes checking netinet/tcp.h usability... yes checking netinet/tcp.h presence... yes checking for netinet/tcp.h... yes checking for size_t... yes checking for working alloca.h... yes checking for alloca... yes checking for library containing dlopen... -ldl checking for backtrace in -lexecinfo... no checking for doxygen... /usr/bin/doxygen checking whether SYS_getrandom is declared... yes checking if gcc supports -fvisibility=hidden... yes checking whether struct tm has tm_gmtoff member... yes checking for TALLOC... yes checking for PCSC... yes checking for LIBGNUTLS... yes checking whether C compiler accepts -mavx2... yes checking whether C compiler accepts -mssse3... yes checking whether C compiler accepts -msse4.1... yes checking whether gcc has __builtin_cpu_supports built-in... yes CFLAGS="-g -O2 -DBUILDING_LIBOSMOCORE -Wall" CPPFLAGS=" -DBUILDING_LIBOSMOCORE -Wall" checking that generated files are newer than configure... done configure: creating ./config.status config.status: creating libosmocore.pc config.status: creating libosmocodec.pc config.status: creating libosmocoding.pc config.status: creating libosmovty.pc config.status: creating libosmogsm.pc config.status: creating libosmogb.pc config.status: creating libosmoctrl.pc config.status: creating libosmosim.pc config.status: creating include/Makefile config.status: creating src/Makefile config.status: creating src/vty/Makefile config.status: creating src/codec/Makefile config.status: creating src/coding/Makefile config.status: creating src/sim/Makefile config.status: creating src/gsm/Makefile config.status: creating src/gb/Makefile config.status: creating src/ctrl/Makefile config.status: creating src/pseudotalloc/Makefile config.status: creating tests/Makefile config.status: creating tests/atlocal config.status: creating utils/Makefile config.status: creating Doxyfile.core config.status: creating Doxyfile.gsm config.status: creating Doxyfile.vty config.status: creating Doxyfile.codec config.status: creating Doxyfile.coding config.status: creating Doxyfile.gb config.status: creating Makefile config.status: creating config.h config.status: executing tests/atconfig commands config.status: executing depfiles commands config.status: executing libtool commands + make -j 8 install echo 0.10.2.270-8d41 > .version-t && mv .version-t .version make install-recursive make[1]: Entering directory ' Making install in include make[2]: Entering directory ' GEN osmocom/gsm/gsm0503.h Generating header file... Generate 'xcch' declaration Generate 'rach' declaration Generate 'rach_ext' declaration Generate 'sch' declaration Generate 'cs2' declaration Generate 'cs3' declaration Generate 'cs2_np' declaration Generate 'cs3_np' declaration Generate 'tch_afs_12_2' declaration Generate 'tch_afs_10_2' declaration Generate 'tch_afs_7_95' declaration Generate 'tch_afs_7_4' declaration Generate 'tch_afs_6_7' declaration Generate 'tch_afs_5_9' declaration Generate 'tch_afs_5_15' declaration Generate 'tch_afs_4_75' declaration Generate 'tch_fr' declaration Generate 'tch_hr' declaration Generate 'tch_ahs_7_95' declaration Generate 'tch_ahs_7_4' declaration Generate 'tch_ahs_6_7' declaration Generate 'tch_ahs_5_9' declaration Generate 'tch_ahs_5_15' declaration Generate 'tch_ahs_4_75' declaration Generate 'mcs1_dl_hdr' declaration Generate 'mcs1_ul_hdr' declaration Generate 'mcs1' declaration Generate 'mcs2' declaration Generate 'mcs3' declaration Generate 'mcs4' declaration Generate 'mcs5_dl_hdr' declaration Generate 'mcs5_ul_hdr' declaration Generate 'mcs5' declaration Generate 'mcs6' declaration Generate 'mcs7_dl_hdr' declaration Generate 'mcs7_ul_hdr' declaration Generate 'mcs7' declaration Generate 'mcs8' declaration Generate 'mcs9' declaration Generation complete. make install-am make[3]: Entering directory ' GEN osmocom/core/bit16gen.h GEN osmocom/core/bit32gen.h GEN osmocom/core/bit64gen.h GEN osmocom/core/crc64gen.h GEN osmocom/core/crc16gen.h GEN osmocom/core/crc32gen.h GEN osmocom/core/crc8gen.h GEN osmocom/core/bit32gen.h GEN osmocom/core/bit16gen.h GEN osmocom/core/crc64gen.h GEN osmocom/core/crc8gen.h GEN osmocom/core/bit64gen.h GEN osmocom/core/crc32gen.h GEN osmocom/core/crc16gen.h make[4]: Entering directory ' make[4]: Nothing to be done for 'install-exec-am'. /bin/mkdir -p ' /bin/mkdir -p ' /usr/bin/install -c -m 644 osmocom/core/application.h osmocom/core/backtrace.h osmocom/core/bit16gen.h osmocom/core/bit32gen.h osmocom/core/bit64gen.h osmocom/core/bits.h osmocom/core/bitvec.h osmocom/core/bitcomp.h osmocom/core/byteswap.h osmocom/core/conv.h osmocom/core/counter.h osmocom/core/crc16.h osmocom/core/crc16gen.h osmocom/core/crc32gen.h osmocom/core/crc64gen.h osmocom/core/crc8gen.h osmocom/core/crcgen.h osmocom/core/endian.h osmocom/core/defs.h osmocom/core/fsm.h osmocom/core/gsmtap.h osmocom/core/gsmtap_util.h osmocom/core/linuxlist.h osmocom/core/linuxrbtree.h osmocom/core/logging.h osmocom/core/loggingrb.h osmocom/core/stats.h osmocom/core/macaddr.h osmocom/core/msgb.h osmocom/core/panic.h osmocom/core/prbs.h osmocom/core/prim.h osmocom/core/process.h osmocom/core/rate_ctr.h osmocom/core/stat_item.h osmocom/core/select.h osmocom/core/sercomm.h osmocom/core/signal.h osmocom/core/socket.h osmocom/core/statistics.h ' /bin/mkdir -p ' /usr/bin/install -c -m 644 osmocom/coding/gsm0503_tables.h osmocom/coding/gsm0503_parity.h osmocom/coding/gsm0503_mapping.h osmocom/coding/gsm0503_interleaving.h osmocom/coding/gsm0503_coding.h ' /bin/mkdir -p ' /usr/bin/install -c -m 644 osmocom/core/strrb.h osmocom/core/talloc.h osmocom/core/timer.h osmocom/core/timer_compat.h osmocom/core/utils.h osmocom/core/write_queue.h osmocom/core/plugin.h osmocom/core/msgfile.h osmocom/core/serial.h ' /bin/mkdir -p ' /usr/bin/install -c -m 644 osmocom/vty/buffer.h osmocom/vty/command.h osmocom/vty/logging.h osmocom/vty/stats.h osmocom/vty/misc.h osmocom/vty/telnet_interface.h osmocom/vty/vector.h osmocom/vty/vty.h osmocom/vty/ports.h ' /bin/mkdir -p ' /usr/bin/install -c -m 644 osmocom/gsm/protocol/gsm_03_40.h osmocom/gsm/protocol/gsm_03_41.h osmocom/gsm/protocol/gsm_04_08.h osmocom/gsm/protocol/gsm_04_08_gprs.h osmocom/gsm/protocol/gsm_04_11.h osmocom/gsm/protocol/gsm_04_12.h osmocom/gsm/protocol/gsm_04_14.h osmocom/gsm/protocol/gsm_04_80.h osmocom/gsm/protocol/gsm_08_08.h osmocom/gsm/protocol/gsm_08_58.h osmocom/gsm/protocol/gsm_09_02.h osmocom/gsm/protocol/gsm_12_21.h osmocom/gsm/protocol/gsm_23_003.h osmocom/gsm/protocol/gsm_44_318.h osmocom/gsm/protocol/ipaccess.h osmocom/gsm/protocol/smpp34_osmocom.h ' /bin/mkdir -p ' /usr/bin/install -c -m 644 osmocom/sim/class_tables.h osmocom/sim/sim.h ' /bin/mkdir -p ' /usr/bin/install -c -m 644 osmocom/gprs/gprs_bssgp.h osmocom/gprs/gprs_bssgp_bss.h osmocom/gprs/gprs_msgb.h osmocom/gprs/gprs_ns.h osmocom/gprs/gprs_ns_frgre.h osmocom/gprs/gprs_rlc.h ' /bin/mkdir -p ' /usr/bin/install -c -m 644 osmocom/crypt/auth.h osmocom/crypt/gprs_cipher.h ' /bin/mkdir -p ' /usr/bin/install -c -m 644 osmocom/gsm/a5.h osmocom/gsm/abis_nm.h osmocom/gsm/apn.h osmocom/gsm/bts_features.h osmocom/gsm/comp128.h osmocom/gsm/comp128v23.h osmocom/gsm/bitvec_gsm.h osmocom/gsm/gan.h osmocom/gsm/gsm0341.h osmocom/gsm/gsm0411_smc.h osmocom/gsm/gsm0411_smr.h osmocom/gsm/gsm0411_utils.h osmocom/gsm/gsm0480.h osmocom/gsm/gsm0502.h osmocom/gsm/gsm0503.h osmocom/gsm/gsm0808.h osmocom/gsm/gsm0808_utils.h osmocom/gsm/gsm23003.h osmocom/gsm/gsm48.h osmocom/gsm/gsm48_ie.h osmocom/gsm/gsm_utils.h osmocom/gsm/gsup.h osmocom/gsm/ipa.h osmocom/gsm/lapd_core.h osmocom/gsm/lapdm.h osmocom/gsm/meas_rep.h osmocom/gsm/mncc.h osmocom/gsm/prim.h osmocom/gsm/l1sap.h osmocom/gsm/oap.h osmocom/gsm/rsl.h osmocom/gsm/rxlev_stat.h osmocom/gsm/sysinfo.h osmocom/gsm/tlv.h ' /bin/mkdir -p ' /usr/bin/install -c -m 644 osmocom/ctrl/control_cmd.h osmocom/ctrl/control_if.h osmocom/ctrl/ports.h osmocom/ctrl/control_vty.h ' /bin/mkdir -p ' /usr/bin/install -c -m 644 osmocom/gprs/protocol/gsm_04_60.h osmocom/gprs/protocol/gsm_08_16.h osmocom/gprs/protocol/gsm_08_18.h ' /bin/mkdir -p ' /usr/bin/install -c -m 644 osmocom/codec/ecu.h osmocom/codec/codec.h osmocom/codec/gsm610_bits.h ' make[4]: Leaving directory ' make[3]: Leaving directory ' make[2]: Leaving directory ' Making install in src make[2]: Entering directory ' GEN crc8gen.c GEN crc64gen.c GEN crc32gen.c GEN crc16gen.c make install-am make[3]: Entering directory ' CC timer.lo CC timer_clockgettime.lo CC select.lo CC signal.lo CC timer_gettimeofday.lo CC msgb.lo CC bitvec.lo CC bits.lo CC bitcomp.lo CC counter.lo CC fsm.lo CC write_queue.lo CC utils.lo CC socket.lo CC logging.lo /bin/bash: line 2: 15829 Illegal instruction /bin/bash ../libtool --silent --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I.. -I../include -I../include -DBUILDING_LIBOSMOCORE -Wall -Wall -g -O2 -DBUILDING_LIBOSMOCORE -Wall -MT counter.lo -MD -MP -MF $depbase.Tpo -c -o counter.lo counter.c Makefile:545: recipe for target 'counter.lo' failed make[3]: *** [counter.lo] Error 132 make[3]: *** Waiting for unfinished jobs.... make[3]: Leaving directory ' Makefile:649: recipe for target 'install' failed make[2]: *** [install] Error 2 make[2]: Leaving directory ' Makefile:600: recipe for target 'install-recursive' failed make[1]: *** [install-recursive] Error 1 make[1]: Leaving directory ' Makefile:899: recipe for target 'install' failed make: *** [install] Error 2 Build step 'Execute shell' marked build as failure [WARNINGS]Skipping publisher since build result is FAILURE From jenkins at lists.osmocom.org Wed Apr 18 00:04:21 2018 From: jenkins at lists.osmocom.org (jenkins at lists.osmocom.org) Date: Wed, 18 Apr 2018 00:04:21 +0000 (UTC) Subject: =?UTF-8?Q?Jenkins_build_is_back_to_normal_:_master-osmo-bts_=C2=BB_sy?= =?UTF-8?Q?smo,superfemto=5Fv3.1,default,osmocom-master-debian9_#526?= In-Reply-To: <1312199188.436.1524007092293.JavaMail.jenkins@jenkins.osmocom.org> References: <1312199188.436.1524007092293.JavaMail.jenkins@jenkins.osmocom.org> Message-ID: <717217014.437.1524009861851.JavaMail.jenkins@jenkins.osmocom.org> See From gerrit-no-reply at lists.osmocom.org Wed Apr 18 00:37:00 2018 From: gerrit-no-reply at lists.osmocom.org (Neels Hofmeyr) Date: Wed, 18 Apr 2018 00:37:00 +0000 Subject: [PATCH] libosmocore[master]: tlv: add TLV_GET() and TLV_GET_MINLEN() In-Reply-To: References: Message-ID: Hello Jenkins Builder, I'd like you to reexamine a change. Please visit https://gerrit.osmocom.org/7842 to look at the new patch set (#2). tlv: add TLV_GET() and TLV_GET_MINLEN() Rationale: so far we use code like if (TLVP_PRESENT(&tp, VERY_LONG_ENUM_VALUE_NAME_THAT_NEVER_ENDS)) { val = TLVP_VAL(&tp, VERY_LONG_ENUM_VALUE_NAME_THAT_NEVER_ENDS); len = TLVP_LEN(&tp, VERY_L0NG_ENUM_VALUE_NAME_TH4T_NEVER_EMDS); } This is a) very long and b) prone to picking the wrong name one of the three times, which would use the wrong length or val without necessarily being noticed. A safer and shorter, more readable pattern is: struct tlv_p_entry *e = TVLP_GET(&tp, VERY_LONG_ENUM_VALUE_NAME_THAT_NEVER_ENDS); if (!e) return -ENOENT; hexdump(e->val, e->len); Change-Id: I445de17fc2daa3ab051f5708dd0cc185b23dc048 --- M include/osmocom/gsm/tlv.h 1 file changed, 21 insertions(+), 0 deletions(-) git pull ssh://gerrit.osmocom.org:29418/libosmocore refs/changes/42/7842/2 diff --git a/include/osmocom/gsm/tlv.h b/include/osmocom/gsm/tlv.h index 996f6aa..b08ea9c 100644 --- a/include/osmocom/gsm/tlv.h +++ b/include/osmocom/gsm/tlv.h @@ -446,6 +446,27 @@ #define TLVP_PRES_LEN(tp, tag, min_len) \ (TLVP_PRESENT(tp, tag) && TLVP_LEN(tp, tag) >= min_len) +/*! Return pointer to a TLV element if it is present. + * Usage: + * struct tlv_p_entry *e = TVLP_GET(&tp, TAG); + * if (!e) + * return -ENOENT; + * hexdump(e->val, e->len); + * \param[in] _tp pointer to \ref tlv_parsed. + * \param[in] tag IE tag to return. + * \returns struct tlv_p_entry pointer, or NULL if not present. + */ +#define TLVP_GET(_tp, tag) (TLVP_PRESENT(_tp, tag)? &_tp->lv[tag] : NULL) + +/*! Like TLVP_GET(), but enforcing a minimum val length. + * \param[in] _tp pointer to \ref tlv_parsed. + * \param[in] tag IE tag to return. + * \param[in] min_len Minimum value length in bytes. + * \returns struct tlv_p_entry pointer, or NULL if not present or too short. + */ +#define TLVP_GET_MINLEN(_tp, tag, min_len) \ + (TLVP_PRES_LEN(_tp, tag, min_len)? &_tp->lv[tag] : NULL) + /*! Align given TLV element with 16 bit value to an even address * \param[in] tp pointer to \ref tlv_parsed * \param[in] pos element to return -- To view, visit https://gerrit.osmocom.org/7842 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newpatchset Gerrit-Change-Id: I445de17fc2daa3ab051f5708dd0cc185b23dc048 Gerrit-PatchSet: 2 Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder From gerrit-no-reply at lists.osmocom.org Wed Apr 18 00:37:00 2018 From: gerrit-no-reply at lists.osmocom.org (Neels Hofmeyr) Date: Wed, 18 Apr 2018 00:37:00 +0000 Subject: [PATCH] libosmocore[master]: add gsm0808_cell_{id, id_list}_name() and friends In-Reply-To: References: Message-ID: Hello Jenkins Builder, I'd like you to reexamine a change. Please visit https://gerrit.osmocom.org/7843 to look at the new patch set (#2). add gsm0808_cell_{id,id_list}_name() and friends Provide comprehensive API to obtain string representations of Cell Identifiers and -Lists. Change gsm0808_test.c to use the new functions (which simplifies the output a bit), so that we don't duplicate printing code in gsm0808_test.c, and so that the not-so-trivial printing code is also tested. In gsm0808_test, also test gsm0808_cell_id_list_name_buf()'s return value and truncation behavior. The rationale for gsm0808_cell_id_list_name(), i.e. printing an entire list of cell identifiers, is that even though the maximum is 127 elements, a list of more than a few elements is hardly ever expected in practice (even more than one element isn't actually expected: either "entire BSS" or a single LAC). It is thus useful to log the entire list when it shows up in Paging and Handover. Change-Id: I9b2106805422f96c5cc96ebb9178451355582df3 --- M include/osmocom/gsm/gsm0808_utils.h M include/osmocom/gsm/protocol/gsm_08_08.h M src/gsm/gsm0808_utils.c M src/gsm/libosmogsm.map M tests/gsm0808/gsm0808_test.c M tests/gsm0808/gsm0808_test.ok 6 files changed, 216 insertions(+), 98 deletions(-) git pull ssh://gerrit.osmocom.org:29418/libosmocore refs/changes/43/7843/2 diff --git a/include/osmocom/gsm/gsm0808_utils.h b/include/osmocom/gsm/gsm0808_utils.h index 8e71b43..8cdb74b 100644 --- a/include/osmocom/gsm/gsm0808_utils.h +++ b/include/osmocom/gsm/gsm0808_utils.h @@ -55,6 +55,17 @@ unsigned int id_list_len; }; +extern const struct value_string gsm0808_cell_id_discr_names[]; +static inline const char *gsm0808_cell_id_discr_name(enum CELL_IDENT id_discr) +{ return get_value_string(gsm0808_cell_id_discr_names, id_discr); } + +const char *gsm0808_cell_id_name(const struct gsm0808_cell_id *cid); +const char *gsm0808_cell_id_name2(const struct gsm0808_cell_id *cid); +const char *gsm0808_cell_id_list_name(const struct gsm0808_cell_id_list2 *cil); +int gsm0808_cell_id_list_name_buf(char *buf, size_t buflen, const struct gsm0808_cell_id_list2 *cil); +int gsm0808_cell_id_u_name(char *buf, size_t buflen, + enum CELL_IDENT id_discr, const union gsm0808_cell_id_u *u); + uint8_t gsm0808_enc_aoip_trasp_addr(struct msgb *msg, const struct sockaddr_storage *ss); int gsm0808_dec_aoip_trasp_addr(struct sockaddr_storage *ss, diff --git a/include/osmocom/gsm/protocol/gsm_08_08.h b/include/osmocom/gsm/protocol/gsm_08_08.h index 4539b96..5d2864f 100644 --- a/include/osmocom/gsm/protocol/gsm_08_08.h +++ b/include/osmocom/gsm/protocol/gsm_08_08.h @@ -10,7 +10,8 @@ /* * this is from GSM 03.03 CGI but is copied in GSM 08.08 - * in ? 3.2.2.27 for Cell Identifier List + * in ? 3.2.2.27 for Cell Identifier List. + * See gsm0808_cell_id_discr_name() for a human readable representation. */ enum CELL_IDENT { CELL_IDENT_WHOLE_GLOBAL = 0, diff --git a/src/gsm/gsm0808_utils.c b/src/gsm/gsm0808_utils.c index 73d9362..8ef8e24 100644 --- a/src/gsm/gsm0808_utils.c +++ b/src/gsm/gsm0808_utils.c @@ -1130,4 +1130,147 @@ return 0; } +/*! Print a human readable name of the cell identifier to the char buffer. + * This is useful both for struct gsm0808_cell_id and struct gsm0808_cell_id_list2. + * See also gsm0808_cell_id_name() and gsm0808_cell_id_list_name(). + * \param[out] buf Destination buffer to write string representation to. + * \param[in] buflen Amount of memory available in \a buf. + * \param[in] id_discr Cell Identifier type. + * \param[in] u Cell Identifer value. + * \returns Like snprintf(): the amount of characters (excluding terminating nul) written, + * or that would have been written if the buffer were large enough. + */ +int gsm0808_cell_id_u_name(char *buf, size_t buflen, + enum CELL_IDENT id_discr, const union gsm0808_cell_id_u *u) +{ + switch (id_discr) { + case CELL_IDENT_LAC: + return snprintf(buf, buflen, "%u", u->lac); + case CELL_IDENT_CI: + return snprintf(buf, buflen, "%u", u->ci); + case CELL_IDENT_LAC_AND_CI: + return snprintf(buf, buflen, "%u-%u", u->lac_and_ci.lac, u->lac_and_ci.ci); + case CELL_IDENT_LAI_AND_LAC: + return snprintf(buf, buflen, "%s", osmo_lai_name(&u->lai_and_lac)); + case CELL_IDENT_WHOLE_GLOBAL: + return snprintf(buf, buflen, "%s", osmo_cgi_name(&u->global)); + default: + /* For CELL_IDENT_BSS and CELL_IDENT_NO_CELL, just print the discriminator. + * Same for kinds we have no string representation of yet. */ + return snprintf(buf, buflen, "%s", gsm0808_cell_id_discr_name(id_discr)); + } +} + +/*! value_string[] for enum CELL_IDENT. */ +const struct value_string gsm0808_cell_id_discr_names[] = { + { CELL_IDENT_WHOLE_GLOBAL, "CGI" }, + { CELL_IDENT_LAC_AND_CI, "LAC-CI" }, + { CELL_IDENT_CI, "CI" }, + { CELL_IDENT_NO_CELL, "NO-CELL" }, + { CELL_IDENT_LAI_AND_LAC, "LAI" }, + { CELL_IDENT_LAC, "LAC" }, + { CELL_IDENT_BSS, "BSS" }, + { CELL_IDENT_UTRAN_PLMN_LAC_RNC, "UTRAN-PLMN-LAC-RNC" }, + { CELL_IDENT_UTRAN_RNC, "UTRAN-RNC" }, + { CELL_IDENT_UTRAN_LAC_RNC, "UTRAN-LAC-RNC" }, + { 0, NULL } +}; + +#define APPEND_THING(func, args...) do { \ + int remain = buflen - (pos - buf); \ + int l = func(pos, remain, ##args); \ + if (l < 0 || l > remain) \ + pos = buf + buflen; \ + else \ + pos += l; \ + if (l > 0) \ + total_len += l; \ + } while(0) +#define APPEND_STR(fmt, args...) APPEND_THING(snprintf, fmt, ##args) +#define APPEND_CELL_ID_U(DISCR, U) APPEND_THING(gsm0808_cell_id_u_name, DISCR, U) + +static const char *gsm0808_cell_id_name_buf(const struct gsm0808_cell_id *cid, + char *buf, size_t buflen) +{ + char *pos = buf; + int total_len = 0; + APPEND_STR("%s:", gsm0808_cell_id_discr_name(cid->id_discr)); + APPEND_CELL_ID_U(cid->id_discr, &cid->id); + return buf; +} + +/*! Return a human readable representation of a Cell Identifier, like "LAC:123" + * or "CGI:001-01-42-23". + * \param[in] cid Cell Identifer. + * \returns String in a static buffer. + */ +const char *gsm0808_cell_id_name(const struct gsm0808_cell_id *cid) +{ + static char buf[64]; + return gsm0808_cell_id_name_buf(cid, buf, sizeof(buf)); +} + +/*! Like gsm0808_cell_id_name() but uses a different static buffer. + * \param[in] cid Cell Identifer. + * \returns String in a static buffer. + */ +const char *gsm0808_cell_id_name2(const struct gsm0808_cell_id *cid) +{ + static char buf[64]; + return gsm0808_cell_id_name_buf(cid, buf, sizeof(buf)); +} + +/*! Return a human readable representation of the Cell Identifier List, like + * "LAC[2]:{123, 456}". + * The return value semantics are like snprintf() and thus allow ensuring a complete + * untruncated string by determining the required string length from the return value. + * If buflen > 0, always nul-terminate the string in buf, also when it is truncated. + * If buflen == 0, do not modify buf, just return the would-be length. + * \param[out] buf Destination buffer to write string representation to. + * \param[in] buflen Amount of memory available in \a buf. + * \param[in] cil Cell Identifer List. + * \returns Like snprintf(): the amount of characters (excluding terminating nul) written, + * or that would have been written if the buffer were large enough. + */ +int gsm0808_cell_id_list_name_buf(char *buf, size_t buflen, const struct gsm0808_cell_id_list2 *cil) +{ + char *pos = buf; + int total_len = 0; + int i; + + APPEND_STR("%s[%u]", gsm0808_cell_id_discr_name(cil->id_discr), cil->id_list_len); + + switch (cil->id_discr) { + case CELL_IDENT_BSS: + case CELL_IDENT_NO_CELL: + return total_len; + default: + break; + } + + APPEND_STR(":{"); + + for (i = 0; i < cil->id_list_len; i++) { + if (i) + APPEND_STR(", "); + APPEND_CELL_ID_U(cil->id_discr, &cil->id_list[i]); + } + + APPEND_STR("}"); + return total_len; +} + +/*! Return a human-readable representation of \a cil in a static buffer. + * If the list is too long, the output may be truncated. + * See also gsm0808_cell_id_list_name_buf(). */ +const char *gsm0808_cell_id_list_name(const struct gsm0808_cell_id_list2 *cil) +{ + static char buf[1024]; + gsm0808_cell_id_list_name_buf(buf, sizeof(buf), cil); + return buf; +} + +#undef APPEND_STR +#undef APPEND_CELL_ID_U + /*! @} */ diff --git a/src/gsm/libosmogsm.map b/src/gsm/libosmogsm.map index 388fcc0..f04fd58 100644 --- a/src/gsm/libosmogsm.map +++ b/src/gsm/libosmogsm.map @@ -179,6 +179,12 @@ gsm0808_cell_id_list_add; gsm0808_enc_cell_id; gsm0808_dec_cell_id; +gsm0808_cell_id_name; +gsm0808_cell_id_name2; +gsm0808_cell_id_list_name; +gsm0808_cell_id_list_name_buf; +gsm0808_cell_id_discr_names; +gsm0808_cell_id_u_name; gsm0808_chan_type_to_speech_codec; gsm0808_speech_codec_from_chan_type; gsm0808_speech_codec_type_names; diff --git a/tests/gsm0808/gsm0808_test.c b/tests/gsm0808/gsm0808_test.c index 49673fe..78238ff 100644 --- a/tests/gsm0808/gsm0808_test.c +++ b/tests/gsm0808/gsm0808_test.c @@ -1073,36 +1073,12 @@ static void print_cil(const struct gsm0808_cell_id_list2 *cil) { - unsigned int i; - if (!cil) { - printf(" cell_id_list == NULL\n"); - return; - } - switch (cil->id_discr) { - case CELL_IDENT_WHOLE_GLOBAL: - printf(" cell_id_list cgi[%u] = {\n", cil->id_list_len); - for (i = 0; i < cil->id_list_len; i++) - printf(" %2d: %s\n", i, osmo_cgi_name(&cil->id_list[i].global)); - printf(" }\n"); - break; - case CELL_IDENT_LAC: - printf(" cell_id_list lac[%u] = {\n", cil->id_list_len); - for (i = 0; i < cil->id_list_len; i++) - printf(" %2d: %u\n", i, cil->id_list[i].lac); - printf(" }\n"); - break; - case CELL_IDENT_BSS: - printf(" cell_id_list bss[%u]\n", cil->id_list_len); - break; - case CELL_IDENT_NO_CELL: - printf(" cell_id_list no_cell[%u]\n", cil->id_list_len); - break; - default: - printf(" Unimplemented id_disc\n"); - } + printf(" cell_id_list == %s\n", gsm0808_cell_id_list_name(cil)); } void test_cell_id_list_add() { + size_t zu; + const struct gsm0808_cell_id_list2 cgi1 = { .id_discr = CELL_IDENT_WHOLE_GLOBAL, .id_list_len = 1, @@ -1220,7 +1196,7 @@ #define ADD_QUIET(other_cil, expect_rc) do { \ int rc = gsm0808_cell_id_list_add(&cil, &other_cil); \ - printf("\ngsm0808_cell_id_list_add(&cil, &" #other_cil ") --> rc = %d\n", rc); \ + printf("gsm0808_cell_id_list_add(&cil, &" #other_cil ") --> rc = %d\n", rc); \ OSMO_ASSERT(rc == expect_rc); \ } while(0) @@ -1233,13 +1209,13 @@ ADD(cil, 0); ADD(cgi1, -EINVAL); - printf("\ncan't add to BSS list\n"); + printf("* can't add to BSS list\n"); cil.id_list_len = 0; cil.id_discr = CELL_IDENT_BSS; print_cil(&cil); ADD(lac1, -EINVAL); - printf("\nother types (including NO_CELL) take on new type iff empty\n"); + printf("* other types (including NO_CELL) take on new type iff empty\n"); cil.id_list_len = 0; cil.id_discr = CELL_IDENT_NO_CELL; print_cil(&cil); @@ -1248,15 +1224,34 @@ ADD(cgi2, 2); ADD(cgi2, 0); + printf("* test gsm0808_cell_id_list_name_buf()'s return val\n"); + zu = strlen(gsm0808_cell_id_list_name(&cil)); + printf(" strlen(gsm0808_cell_id_list_name(cil)) == %zu\n", zu); + zu ++; + while (1) { + char buf[128] = "?"; + int rc; + OSMO_ASSERT(zu < sizeof(buf)); + buf[zu] = '#'; + rc = gsm0808_cell_id_list_name_buf(buf, zu, &cil); + printf(" gsm0808_cell_id_list_name_buf(buf, %zu, cil)) == %d \"%s\"\n", + zu, rc, buf); + OSMO_ASSERT(buf[zu] == '#'); + if (!zu) + break; + zu /= 2; + } + + printf("* list-full behavior\n"); cil.id_list_len = GSM0808_CELL_ID_LIST2_MAXLEN - 1; - printf("\ncil.id_list_len = %u", cil.id_list_len); + printf("cil.id_list_len = %u\n", cil.id_list_len); ADD_QUIET(cgi2a, 1); printf("cil.id_list_len = %u\n", cil.id_list_len); cil.id_list_len = GSM0808_CELL_ID_LIST2_MAXLEN - 1; - printf("\ncil.id_list_len = %u", cil.id_list_len); + printf("cil.id_list_len = %u\n", cil.id_list_len); ADD_QUIET(cgi3, -ENOSPC); - printf("cil.id_list_len = %u", cil.id_list_len); + printf("cil.id_list_len = %u\n", cil.id_list_len); ADD_QUIET(cgi2a, -ENOSPC); printf("cil.id_list_len = %u\n", cil.id_list_len); diff --git a/tests/gsm0808/gsm0808_test.ok b/tests/gsm0808/gsm0808_test.ok index 34d7ebf..6cd7982 100644 --- a/tests/gsm0808/gsm0808_test.ok +++ b/tests/gsm0808/gsm0808_test.ok @@ -21,84 +21,46 @@ Testing prepend DTAP test_gsm0808_enc_dec_cell_id_list_lac: encoded: 1a 07 05 01 24 ab cd 56 78 (rc = 9) ------- test_cell_id_list_add - cell_id_list cgi[0] = { - } - + cell_id_list == CGI[0]:{} gsm0808_cell_id_list_add(&cil, &lac1) --> rc = 1 - cell_id_list lac[1] = { - 0: 123 - } - + cell_id_list == LAC[1]:{123} gsm0808_cell_id_list_add(&cil, &lac1) --> rc = 0 - cell_id_list lac[1] = { - 0: 123 - } - + cell_id_list == LAC[1]:{123} gsm0808_cell_id_list_add(&cil, &lac2) --> rc = 2 - cell_id_list lac[3] = { - 0: 123 - 1: 456 - 2: 789 - } - + cell_id_list == LAC[3]:{123, 456, 789} gsm0808_cell_id_list_add(&cil, &lac2) --> rc = 0 - cell_id_list lac[3] = { - 0: 123 - 1: 456 - 2: 789 - } - + cell_id_list == LAC[3]:{123, 456, 789} gsm0808_cell_id_list_add(&cil, &cil) --> rc = 0 - cell_id_list lac[3] = { - 0: 123 - 1: 456 - 2: 789 - } - + cell_id_list == LAC[3]:{123, 456, 789} gsm0808_cell_id_list_add(&cil, &cgi1) --> rc = -22 - cell_id_list lac[3] = { - 0: 123 - 1: 456 - 2: 789 - } - -can't add to BSS list - cell_id_list bss[0] - + cell_id_list == LAC[3]:{123, 456, 789} +* can't add to BSS list + cell_id_list == BSS[0] gsm0808_cell_id_list_add(&cil, &lac1) --> rc = -22 - cell_id_list bss[0] - -other types (including NO_CELL) take on new type iff empty - cell_id_list no_cell[0] - + cell_id_list == BSS[0] +* other types (including NO_CELL) take on new type iff empty + cell_id_list == NO-CELL[0] gsm0808_cell_id_list_add(&cil, &cgi1) --> rc = 1 - cell_id_list cgi[1] = { - 0: 001-02-3-4 - } - + cell_id_list == CGI[1]:{001-02-3-4} gsm0808_cell_id_list_add(&cil, &cgi1) --> rc = 0 - cell_id_list cgi[1] = { - 0: 001-02-3-4 - } - + cell_id_list == CGI[1]:{001-02-3-4} gsm0808_cell_id_list_add(&cil, &cgi2) --> rc = 2 - cell_id_list cgi[3] = { - 0: 001-02-3-4 - 1: 001-002-3-4 - 2: 005-006-7-8 - } - + cell_id_list == CGI[3]:{001-02-3-4, 001-002-3-4, 005-006-7-8} gsm0808_cell_id_list_add(&cil, &cgi2) --> rc = 0 - cell_id_list cgi[3] = { - 0: 001-02-3-4 - 1: 001-002-3-4 - 2: 005-006-7-8 - } - + cell_id_list == CGI[3]:{001-02-3-4, 001-002-3-4, 005-006-7-8} +* test gsm0808_cell_id_list_name_buf()'s return val + strlen(gsm0808_cell_id_list_name(cil)) == 45 + gsm0808_cell_id_list_name_buf(buf, 46, cil)) == 45 "CGI[3]:{001-02-3-4, 001-002-3-4, 005-006-7-8}" + gsm0808_cell_id_list_name_buf(buf, 23, cil)) == 45 "CGI[3]:{001-02-3-4, 00" + gsm0808_cell_id_list_name_buf(buf, 11, cil)) == 45 "CGI[3]:{00" + gsm0808_cell_id_list_name_buf(buf, 5, cil)) == 45 "CGI[" + gsm0808_cell_id_list_name_buf(buf, 2, cil)) == 45 "C" + gsm0808_cell_id_list_name_buf(buf, 1, cil)) == 45 "" + gsm0808_cell_id_list_name_buf(buf, 0, cil)) == 45 "#" +* list-full behavior cil.id_list_len = 126 gsm0808_cell_id_list_add(&cil, &cgi2a) --> rc = 1 cil.id_list_len = 127 - cil.id_list_len = 126 gsm0808_cell_id_list_add(&cil, &cgi3) --> rc = -28 cil.id_list_len = 127 -- To view, visit https://gerrit.osmocom.org/7843 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newpatchset Gerrit-Change-Id: I9b2106805422f96c5cc96ebb9178451355582df3 Gerrit-PatchSet: 2 Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr Gerrit-Reviewer: Jenkins Builder From gerrit-no-reply at lists.osmocom.org Wed Apr 18 00:38:44 2018 From: gerrit-no-reply at lists.osmocom.org (Neels Hofmeyr) Date: Wed, 18 Apr 2018 00:38:44 +0000 Subject: [PATCH] libosmocore[master]: tlv: add TLV_GET() and TLV_GET_MINLEN() In-Reply-To: References: Message-ID: Hello Jenkins Builder, I'd like you to reexamine a change. Please visit https://gerrit.osmocom.org/7842 to look at the new patch set (#3). tlv: add TLV_GET() and TLV_GET_MINLEN() Rationale: so far we use code like if (TLVP_PRESENT(&tp, VERY_LONG_ENUM_VALUE_NAME_THAT_NEVER_ENDS)) { val = TLVP_VAL(&tp, VERY_LONG_ENUM_VALUE_NAME_THAT_NEVER_ENDS); len = TLVP_LEN(&tp, VERY_L0NG_ENUM_VALUE_NAME_TH4T_NEVER_EMDS); } This is a) very long and b) prone to picking the wrong name one of the three times, which would use the wrong length or val without necessarily being noticed. A safer and shorter, more readable pattern is: struct tlv_p_entry *e = TVLP_GET(&tp, VERY_LONG_ENUM_VALUE_NAME_THAT_NEVER_ENDS); if (!e) return -ENOENT; hexdump(e->val, e->len); Change-Id: I445de17fc2daa3ab051f5708dd0cc185b23dc048 --- M include/osmocom/gsm/tlv.h 1 file changed, 21 insertions(+), 0 deletions(-) git pull ssh://gerrit.osmocom.org:29418/libosmocore refs/changes/42/7842/3 diff --git a/include/osmocom/gsm/tlv.h b/include/osmocom/gsm/tlv.h index 996f6aa..a130dc8 100644 --- a/include/osmocom/gsm/tlv.h +++ b/include/osmocom/gsm/tlv.h @@ -446,6 +446,27 @@ #define TLVP_PRES_LEN(tp, tag, min_len) \ (TLVP_PRESENT(tp, tag) && TLVP_LEN(tp, tag) >= min_len) +/*! Return pointer to a TLV element if it is present. + * Usage: + * struct tlv_p_entry *e = TVLP_GET(&tp, TAG); + * if (!e) + * return -ENOENT; + * hexdump(e->val, e->len); + * \param[in] _tp pointer to \ref tlv_parsed. + * \param[in] tag IE tag to return. + * \returns struct tlv_p_entry pointer, or NULL if not present. + */ +#define TLVP_GET(_tp, tag) (TLVP_PRESENT(_tp, tag)? &(_tp)->lv[tag] : NULL) + +/*! Like TLVP_GET(), but enforcing a minimum val length. + * \param[in] _tp pointer to \ref tlv_parsed. + * \param[in] tag IE tag to return. + * \param[in] min_len Minimum value length in bytes. + * \returns struct tlv_p_entry pointer, or NULL if not present or too short. + */ +#define TLVP_GET_MINLEN(_tp, tag, min_len) \ + (TLVP_PRES_LEN(_tp, tag, min_len)? &(_tp)->lv[tag] : NULL) + /*! Align given TLV element with 16 bit value to an even address * \param[in] tp pointer to \ref tlv_parsed * \param[in] pos element to return -- To view, visit https://gerrit.osmocom.org/7842 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newpatchset Gerrit-Change-Id: I445de17fc2daa3ab051f5708dd0cc185b23dc048 Gerrit-PatchSet: 3 Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder From jenkins at lists.osmocom.org Wed Apr 18 00:51:30 2018 From: jenkins at lists.osmocom.org (jenkins at lists.osmocom.org) Date: Wed, 18 Apr 2018 00:51:30 +0000 (UTC) Subject: =?UTF-8?Q?Build_failed_in_Jenkins:_master-osmo-sgsn_=C2=BB_--enable-?= =?UTF-8?Q?iu,a2=3Ddefault,a3=3Ddefault,osmocom-master-debian9_#2418?= Message-ID: <190654168.439.1524012690838.JavaMail.jenkins@jenkins.osmocom.org> See ------------------------------------------ [...truncated 779.64 KB...] Didn't find any information element for message: UeRadioCapabilityMatchRequestIEs sed -i 's,^#include "ranap_ies_defs.h",#include ,' ranap_encoder.c ranap_decoder.c sed -i 's,^#include "ranap_common.h",#include ,' ranap_encoder.c ranap_decoder.c ranap_ies_defs.h mv ranap_ies_defs.h ../include/osmocom/ranap/ touch ../src/gen_ranap.stamp make install-recursive make[3]: Entering directory '/build/deps/osmo-iuh/src' Making install in hnbap make[4]: Entering directory '/build/deps/osmo-iuh/src/hnbap' CC Presence.o CC Criticality.o CC PrivateIE-ID.o CC ProcedureCode.o CC ProtocolIE-ID.o CC IE-Extensions.o CC TriggeringMessage.o CC Access-stratum-release-indicator.o CC AccessResult.o CC AltitudeAndDirection.o CC BackoffTimer.o CC BindingID.o CC Cause.o CC CauseRadioNetwork.o CC CauseTransport.o CC CauseProtocol.o CC CauseMisc.o CC CellIdentity.o CC CELL-FACHMobilitySupport.o CC Context-ID.o CC CriticalityDiagnostics.o CC CriticalityDiagnostics-IE-List.o CC CSG-ID.o CC CSG-Capability.o In file included from /build/deps/install/stow/libasn1c/include/asn1c/asn_SEQUENCE_OF.h:8:0, from ../../include/osmocom/hnbap/CriticalityDiagnostics-IE-List.h:15, from ../../include/osmocom/hnbap/CriticalityDiagnostics.h:52, from CriticalityDiagnostics.c:8: ../../include/osmocom/hnbap/CriticalityDiagnostics-IE-List.h:35:10: warning: 'struct Member' declared inside parameter list struct IE_Extensions *iE_Extensions /* OPTIONAL */; ^ /build/deps/install/stow/libasn1c/include/asn1c/asn_SET_OF.h:17:16: note: in definition of macro 'A_SET_OF' void (*free)(type *); \ ^ ../../include/osmocom/hnbap/CriticalityDiagnostics-IE-List.h:31:2: note: in expansion of macro 'A_SEQUENCE_OF' A_SEQUENCE_OF(struct Member { ^ ../../include/osmocom/hnbap/CriticalityDiagnostics-IE-List.h:35:10: warning: its scope is only this definition or declaration, which is probably not what you want struct IE_Extensions *iE_Extensions /* OPTIONAL */; ^ /build/deps/install/stow/libasn1c/include/asn1c/asn_SET_OF.h:17:16: note: in definition of macro 'A_SET_OF' void (*free)(type *); \ ^ ../../include/osmocom/hnbap/CriticalityDiagnostics-IE-List.h:31:2: note: in expansion of macro 'A_SEQUENCE_OF' A_SEQUENCE_OF(struct Member { ^ CC CSGMembershipStatus.o In file included from /build/deps/install/stow/libasn1c/include/asn1c/asn_SEQUENCE_OF.h:8:0, from ../../include/osmocom/hnbap/CriticalityDiagnostics-IE-List.h:15, from CriticalityDiagnostics-IE-List.c:8: ../../include/osmocom/hnbap/CriticalityDiagnostics-IE-List.h:35:10: warning: 'struct Member' declared inside parameter list struct IE_Extensions *iE_Extensions /* OPTIONAL */; ^ /build/deps/install/stow/libasn1c/include/asn1c/asn_SET_OF.h:17:16: note: in definition of macro 'A_SET_OF' void (*free)(type *); \ ^ ../../include/osmocom/hnbap/CriticalityDiagnostics-IE-List.h:31:2: note: in expansion of macro 'A_SEQUENCE_OF' A_SEQUENCE_OF(struct Member { ^ ../../include/osmocom/hnbap/CriticalityDiagnostics-IE-List.h:35:10: warning: its scope is only this definition or declaration, which is probably not what you want struct IE_Extensions *iE_Extensions /* OPTIONAL */; ^ /build/deps/install/stow/libasn1c/include/asn1c/asn_SET_OF.h:17:16: note: in definition of macro 'A_SET_OF' void (*free)(type *); \ ^ ../../include/osmocom/hnbap/CriticalityDiagnostics-IE-List.h:31:2: note: in expansion of macro 'A_SEQUENCE_OF' A_SEQUENCE_OF(struct Member { ^ CC CGI.o CC CI.o CC CN-DomainIndicator.o CC ESN.o CC GeographicalLocation.o CC GeographicalCoordinates.o CC GTP-TEI.o CC HNBCapacity.o CC HNB-Cell-Access-Mode.o CC HNB-Cell-Identifier.o CC HNB-GWResponse.o CC HNB-RNL-Identity.o CC HNBConfigInfo.o CC ConfigurationInformation.o CC HNBConfigurationInformationProvided.o CC HNB-Location-Information.o CC HNBConfigurationInformationMissing.o CC HNB-Identity.o CC HNB-Identity-Info.o CC IMEI.o CC IMSI.o CC IMSIDS41.o CC IMSIESN.o CC IP-Address.o CC Ipv4Address.o CC Ipv6Address.o CC Iurh-Signalling-TNL-AddressList.o CC LAC.o CC LAI.o CC MacroCoverageInformation.o CC MacroCellID.o CC MuxPortNumber.o CC NeighbourCellIdentityList.o CC NeighbourIdentity.o CC NeighbourInfoList.o CC AdditionalNeighbourInfoList.o CC NeighbourInfoRequestItem.o CC NeighbourInfoRequestList.o CC PLMNidentity.o CC PSC.o CC PTMSI.o CC PTMSIRAI.o CC RAB-ID.o CC RABList.o CC RABListItem.o CC RAC.o CC RAI.o CC Registration-Cause.o CC RNC-ID.o CC SAC.o CC S-RNTIPrefix.o CC TMSILAI.o CC TMSIDS41.o CC TransportInfo.o CC TransportLayerAddress.o CC Tunnel-Information.o CC TypeOfError.o CC UDP-Port-Number.o CC UE-Capabilities.o CC UTRANCellID.o CC UE-Identity.o CC Update-cause.o CC URAIdentityList.o CC URAIdentity.o CC U-RNTI.o CC UnknownU-RNTIIndication.o CC HNBAP-PDU.o CC InitiatingMessage.o CC SuccessfulOutcome.o CC UnsuccessfulOutcome.o CC HNBRegisterRequest.o CC HNBRegisterAccept.o CC HNBRegisterReject.o CC UERegisterRequest.o CC UERegisterAccept.o CC UERegisterReject.o CC UEDe-Register.o CC HNBDe-Register.o CC CSGMembershipUpdate.o CC ErrorIndication.o CC TNLUpdateRequest.o CC TNLUpdateResponse.o CC TNLUpdateFailure.o CC HNBConfigTransferRequest.o CC HNBConfigTransferResponse.o CC RelocationComplete.o CC U-RNTIQueryRequest.o CC U-RNTIQueryResponse.o CC PrivateMessage.o CC IE.o AR libosmo-asn1-hnbap.a make[5]: Entering directory '/build/deps/osmo-iuh/src/hnbap' make[5]: Nothing to be done for 'install-exec-am'. make[5]: Nothing to be done for 'install-data-am'. make[5]: Leaving directory '/build/deps/osmo-iuh/src/hnbap' make[4]: Leaving directory '/build/deps/osmo-iuh/src/hnbap' Making install in rua make[4]: Entering directory '/build/deps/osmo-iuh/src/rua' CC RUA_Criticality.o CC RUA_Presence.o CC RUA_ProcedureCode.o CC RUA_TriggeringMessage.o CC RUA_ProtocolIE-ID.o CC RUA_PrivateIE-ID.o CC RUA_CN-DomainIndicator.o CC RUA_IE-Extensions.o CC RUA_CSGMembershipStatus.o CC RUA_Establishment-Cause.o CC RUA_IntraDomainNasNodeSelector.o CC RUA_Context-ID.o CC RUA_Gsm-map-IDNNS.o CC RUA_Ansi-41-IDNNS.o CC RUA_RANAP-Message.o CC RUA_RoutingParameter.o CC RUA_Cause.o CC RUA_CauseRadioNetwork.o CC RUA_CauseTransport.o CC RUA_CauseProtocol.o CC RUA_CauseMisc.o CC RUA_CriticalityDiagnostics.o CC RUA_CriticalityDiagnostics-IE-List.o RUA_CriticalityDiagnostics-IE-List.c:1:0: internal compiler error: Segmentation fault /* ^ CC RUA_TypeOfError.o Please submit a full bug report, with preprocessed source if appropriate. See for instructions. CC RUA_RUA-PDU.o In file included from /build/deps/install/stow/libasn1c/include/asn1c/asn_SEQUENCE_OF.h:8:0, from ../../include/osmocom/rua/RUA_CriticalityDiagnostics-IE-List.h:14, from ../../include/osmocom/rua/RUA_CriticalityDiagnostics.h:17, from RUA_CriticalityDiagnostics.c:7: ../../include/osmocom/rua/RUA_CriticalityDiagnostics-IE-List.h:28:23: warning: 'struct Member' declared inside parameter list A_SEQUENCE_OF(struct Member { ^ /build/deps/install/stow/libasn1c/include/asn1c/asn_SET_OF.h:17:16: note: in definition of macro 'A_SET_OF' void (*free)(type *); \ ^ ../../include/osmocom/rua/RUA_CriticalityDiagnostics-IE-List.h:28:2: note: in expansion of macro 'A_SEQUENCE_OF' A_SEQUENCE_OF(struct Member { ^ ../../include/osmocom/rua/RUA_CriticalityDiagnostics-IE-List.h:28:23: warning: its scope is only this definition or declaration, which is probably not what you want A_SEQUENCE_OF(struct Member { ^ /build/deps/install/stow/libasn1c/include/asn1c/asn_SET_OF.h:17:16: note: in definition of macro 'A_SET_OF' void (*free)(type *); \ ^ ../../include/osmocom/rua/RUA_CriticalityDiagnostics-IE-List.h:28:2: note: in expansion of macro 'A_SEQUENCE_OF' A_SEQUENCE_OF(struct Member { ^ CC RUA_InitiatingMessage.o CC RUA_SuccessfulOutcome.o CC RUA_UnsuccessfulOutcome.o The bug is not reproducible, so it is likely a hardware or OS problem. Makefile:487: recipe for target 'RUA_CriticalityDiagnostics-IE-List.o' failed make[4]: *** [RUA_CriticalityDiagnostics-IE-List.o] Error 1 make[4]: *** Waiting for unfinished jobs.... make[4]: Leaving directory '/build/deps/osmo-iuh/src/rua' Makefile:630: recipe for target 'install-recursive' failed make[3]: *** [install-recursive] Error 1 make[3]: Leaving directory '/build/deps/osmo-iuh/src' make[2]: *** [install] Error 2 Makefile:789: recipe for target 'install' failed make[2]: Leaving directory '/build/deps/osmo-iuh/src' make[1]: *** [install-recursive] Error 1 Makefile:442: recipe for target 'install-recursive' failed make[1]: Leaving directory '/build/deps/osmo-iuh' Makefile:741: recipe for target 'install' failed make: *** [install] Error 2 Build step 'Execute shell' marked build as failure [WARNINGS]Skipping publisher since build result is FAILURE From jenkins at lists.osmocom.org Wed Apr 18 00:55:10 2018 From: jenkins at lists.osmocom.org (jenkins at lists.osmocom.org) Date: Wed, 18 Apr 2018 00:55:10 +0000 (UTC) Subject: =?UTF-8?Q?Jenkins_build_is_back_to_normal_:_master-osmo-sgsn_=C2=BB_--en?= =?UTF-8?Q?able-iu,a2=3Ddefault,a3=3Ddefault,osmocom-master-debian9_#2419?= In-Reply-To: <190654168.439.1524012690838.JavaMail.jenkins@jenkins.osmocom.org> References: <190654168.439.1524012690838.JavaMail.jenkins@jenkins.osmocom.org> Message-ID: <276877190.440.1524012910622.JavaMail.jenkins@jenkins.osmocom.org> See From gerrit-no-reply at lists.osmocom.org Wed Apr 18 07:13:18 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Wed, 18 Apr 2018 07:13:18 +0000 Subject: osmo-hlr[master]: rewrite subscriber_update_notify() without calls into luop In-Reply-To: References: Message-ID: Patch Set 2: I didn't remember that we had the cn domain indicator as a GSUP IE. I only knew it as an IE on the Iu-side. This is different from MAP. In MAP. UpdateLocation + UpdateGprsLocation are two different distinct operations, so there's no need for that. I agree that in presence of a GSUP CN_DOMAIN IE, we don't need to do ugly things like parsing the string of the IPA CCM UNIT_ID. We don't need to worry about doing CS + PS LU at the same time, as this is not present in MAP either and we should stay rather simple to have a simple translation. So OSMO_GSUP_CN_DOMAIN_PS gets translated to UpdateGprsLocation and OSMO_GSUP_CN_DOMAIN_CS gets translated to UpdateLocation, and that's it. -- To view, visit https://gerrit.osmocom.org/7743 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I06c43ece2b48dc63d599000eb6d6d51e08963067 Gerrit-PatchSet: 2 Gerrit-Project: osmo-hlr Gerrit-Branch: master Gerrit-Owner: Stefan Sperling Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Neels Hofmeyr Gerrit-Reviewer: Stefan Sperling Gerrit-Reviewer: neels Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Wed Apr 18 07:14:06 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Wed, 18 Apr 2018 07:14:06 +0000 Subject: libosmocore[master]: tlv: add TLV_GET() and TLV_GET_MINLEN() In-Reply-To: References: Message-ID: Patch Set 3: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7842 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I445de17fc2daa3ab051f5708dd0cc185b23dc048 Gerrit-PatchSet: 3 Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Wed Apr 18 07:14:10 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Wed, 18 Apr 2018 07:14:10 +0000 Subject: libosmocore[master]: add gsm0808_cell_{id, id_list}_name() and friends In-Reply-To: References: Message-ID: Patch Set 3: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7843 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I9b2106805422f96c5cc96ebb9178451355582df3 Gerrit-PatchSet: 3 Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Wed Apr 18 07:14:16 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Wed, 18 Apr 2018 07:14:16 +0000 Subject: [MERGED] libosmocore[master]: add gsm0808_cell_{id, id_list}_name() and friends In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: add gsm0808_cell_{id,id_list}_name() and friends ...................................................................... add gsm0808_cell_{id,id_list}_name() and friends Provide comprehensive API to obtain string representations of Cell Identifiers and -Lists. Change gsm0808_test.c to use the new functions (which simplifies the output a bit), so that we don't duplicate printing code in gsm0808_test.c, and so that the not-so-trivial printing code is also tested. In gsm0808_test, also test gsm0808_cell_id_list_name_buf()'s return value and truncation behavior. The rationale for gsm0808_cell_id_list_name(), i.e. printing an entire list of cell identifiers, is that even though the maximum is 127 elements, a list of more than a few elements is hardly ever expected in practice (even more than one element isn't actually expected: either "entire BSS" or a single LAC). It is thus useful to log the entire list when it shows up in Paging and Handover. Change-Id: I9b2106805422f96c5cc96ebb9178451355582df3 --- M include/osmocom/gsm/gsm0808_utils.h M include/osmocom/gsm/protocol/gsm_08_08.h M src/gsm/gsm0808_utils.c M src/gsm/libosmogsm.map M tests/gsm0808/gsm0808_test.c M tests/gsm0808/gsm0808_test.ok 6 files changed, 216 insertions(+), 98 deletions(-) Approvals: Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/include/osmocom/gsm/gsm0808_utils.h b/include/osmocom/gsm/gsm0808_utils.h index 8e71b43..8cdb74b 100644 --- a/include/osmocom/gsm/gsm0808_utils.h +++ b/include/osmocom/gsm/gsm0808_utils.h @@ -55,6 +55,17 @@ unsigned int id_list_len; }; +extern const struct value_string gsm0808_cell_id_discr_names[]; +static inline const char *gsm0808_cell_id_discr_name(enum CELL_IDENT id_discr) +{ return get_value_string(gsm0808_cell_id_discr_names, id_discr); } + +const char *gsm0808_cell_id_name(const struct gsm0808_cell_id *cid); +const char *gsm0808_cell_id_name2(const struct gsm0808_cell_id *cid); +const char *gsm0808_cell_id_list_name(const struct gsm0808_cell_id_list2 *cil); +int gsm0808_cell_id_list_name_buf(char *buf, size_t buflen, const struct gsm0808_cell_id_list2 *cil); +int gsm0808_cell_id_u_name(char *buf, size_t buflen, + enum CELL_IDENT id_discr, const union gsm0808_cell_id_u *u); + uint8_t gsm0808_enc_aoip_trasp_addr(struct msgb *msg, const struct sockaddr_storage *ss); int gsm0808_dec_aoip_trasp_addr(struct sockaddr_storage *ss, diff --git a/include/osmocom/gsm/protocol/gsm_08_08.h b/include/osmocom/gsm/protocol/gsm_08_08.h index 4539b96..5d2864f 100644 --- a/include/osmocom/gsm/protocol/gsm_08_08.h +++ b/include/osmocom/gsm/protocol/gsm_08_08.h @@ -10,7 +10,8 @@ /* * this is from GSM 03.03 CGI but is copied in GSM 08.08 - * in ? 3.2.2.27 for Cell Identifier List + * in ? 3.2.2.27 for Cell Identifier List. + * See gsm0808_cell_id_discr_name() for a human readable representation. */ enum CELL_IDENT { CELL_IDENT_WHOLE_GLOBAL = 0, diff --git a/src/gsm/gsm0808_utils.c b/src/gsm/gsm0808_utils.c index 73d9362..8ef8e24 100644 --- a/src/gsm/gsm0808_utils.c +++ b/src/gsm/gsm0808_utils.c @@ -1130,4 +1130,147 @@ return 0; } +/*! Print a human readable name of the cell identifier to the char buffer. + * This is useful both for struct gsm0808_cell_id and struct gsm0808_cell_id_list2. + * See also gsm0808_cell_id_name() and gsm0808_cell_id_list_name(). + * \param[out] buf Destination buffer to write string representation to. + * \param[in] buflen Amount of memory available in \a buf. + * \param[in] id_discr Cell Identifier type. + * \param[in] u Cell Identifer value. + * \returns Like snprintf(): the amount of characters (excluding terminating nul) written, + * or that would have been written if the buffer were large enough. + */ +int gsm0808_cell_id_u_name(char *buf, size_t buflen, + enum CELL_IDENT id_discr, const union gsm0808_cell_id_u *u) +{ + switch (id_discr) { + case CELL_IDENT_LAC: + return snprintf(buf, buflen, "%u", u->lac); + case CELL_IDENT_CI: + return snprintf(buf, buflen, "%u", u->ci); + case CELL_IDENT_LAC_AND_CI: + return snprintf(buf, buflen, "%u-%u", u->lac_and_ci.lac, u->lac_and_ci.ci); + case CELL_IDENT_LAI_AND_LAC: + return snprintf(buf, buflen, "%s", osmo_lai_name(&u->lai_and_lac)); + case CELL_IDENT_WHOLE_GLOBAL: + return snprintf(buf, buflen, "%s", osmo_cgi_name(&u->global)); + default: + /* For CELL_IDENT_BSS and CELL_IDENT_NO_CELL, just print the discriminator. + * Same for kinds we have no string representation of yet. */ + return snprintf(buf, buflen, "%s", gsm0808_cell_id_discr_name(id_discr)); + } +} + +/*! value_string[] for enum CELL_IDENT. */ +const struct value_string gsm0808_cell_id_discr_names[] = { + { CELL_IDENT_WHOLE_GLOBAL, "CGI" }, + { CELL_IDENT_LAC_AND_CI, "LAC-CI" }, + { CELL_IDENT_CI, "CI" }, + { CELL_IDENT_NO_CELL, "NO-CELL" }, + { CELL_IDENT_LAI_AND_LAC, "LAI" }, + { CELL_IDENT_LAC, "LAC" }, + { CELL_IDENT_BSS, "BSS" }, + { CELL_IDENT_UTRAN_PLMN_LAC_RNC, "UTRAN-PLMN-LAC-RNC" }, + { CELL_IDENT_UTRAN_RNC, "UTRAN-RNC" }, + { CELL_IDENT_UTRAN_LAC_RNC, "UTRAN-LAC-RNC" }, + { 0, NULL } +}; + +#define APPEND_THING(func, args...) do { \ + int remain = buflen - (pos - buf); \ + int l = func(pos, remain, ##args); \ + if (l < 0 || l > remain) \ + pos = buf + buflen; \ + else \ + pos += l; \ + if (l > 0) \ + total_len += l; \ + } while(0) +#define APPEND_STR(fmt, args...) APPEND_THING(snprintf, fmt, ##args) +#define APPEND_CELL_ID_U(DISCR, U) APPEND_THING(gsm0808_cell_id_u_name, DISCR, U) + +static const char *gsm0808_cell_id_name_buf(const struct gsm0808_cell_id *cid, + char *buf, size_t buflen) +{ + char *pos = buf; + int total_len = 0; + APPEND_STR("%s:", gsm0808_cell_id_discr_name(cid->id_discr)); + APPEND_CELL_ID_U(cid->id_discr, &cid->id); + return buf; +} + +/*! Return a human readable representation of a Cell Identifier, like "LAC:123" + * or "CGI:001-01-42-23". + * \param[in] cid Cell Identifer. + * \returns String in a static buffer. + */ +const char *gsm0808_cell_id_name(const struct gsm0808_cell_id *cid) +{ + static char buf[64]; + return gsm0808_cell_id_name_buf(cid, buf, sizeof(buf)); +} + +/*! Like gsm0808_cell_id_name() but uses a different static buffer. + * \param[in] cid Cell Identifer. + * \returns String in a static buffer. + */ +const char *gsm0808_cell_id_name2(const struct gsm0808_cell_id *cid) +{ + static char buf[64]; + return gsm0808_cell_id_name_buf(cid, buf, sizeof(buf)); +} + +/*! Return a human readable representation of the Cell Identifier List, like + * "LAC[2]:{123, 456}". + * The return value semantics are like snprintf() and thus allow ensuring a complete + * untruncated string by determining the required string length from the return value. + * If buflen > 0, always nul-terminate the string in buf, also when it is truncated. + * If buflen == 0, do not modify buf, just return the would-be length. + * \param[out] buf Destination buffer to write string representation to. + * \param[in] buflen Amount of memory available in \a buf. + * \param[in] cil Cell Identifer List. + * \returns Like snprintf(): the amount of characters (excluding terminating nul) written, + * or that would have been written if the buffer were large enough. + */ +int gsm0808_cell_id_list_name_buf(char *buf, size_t buflen, const struct gsm0808_cell_id_list2 *cil) +{ + char *pos = buf; + int total_len = 0; + int i; + + APPEND_STR("%s[%u]", gsm0808_cell_id_discr_name(cil->id_discr), cil->id_list_len); + + switch (cil->id_discr) { + case CELL_IDENT_BSS: + case CELL_IDENT_NO_CELL: + return total_len; + default: + break; + } + + APPEND_STR(":{"); + + for (i = 0; i < cil->id_list_len; i++) { + if (i) + APPEND_STR(", "); + APPEND_CELL_ID_U(cil->id_discr, &cil->id_list[i]); + } + + APPEND_STR("}"); + return total_len; +} + +/*! Return a human-readable representation of \a cil in a static buffer. + * If the list is too long, the output may be truncated. + * See also gsm0808_cell_id_list_name_buf(). */ +const char *gsm0808_cell_id_list_name(const struct gsm0808_cell_id_list2 *cil) +{ + static char buf[1024]; + gsm0808_cell_id_list_name_buf(buf, sizeof(buf), cil); + return buf; +} + +#undef APPEND_STR +#undef APPEND_CELL_ID_U + /*! @} */ diff --git a/src/gsm/libosmogsm.map b/src/gsm/libosmogsm.map index 388fcc0..f04fd58 100644 --- a/src/gsm/libosmogsm.map +++ b/src/gsm/libosmogsm.map @@ -179,6 +179,12 @@ gsm0808_cell_id_list_add; gsm0808_enc_cell_id; gsm0808_dec_cell_id; +gsm0808_cell_id_name; +gsm0808_cell_id_name2; +gsm0808_cell_id_list_name; +gsm0808_cell_id_list_name_buf; +gsm0808_cell_id_discr_names; +gsm0808_cell_id_u_name; gsm0808_chan_type_to_speech_codec; gsm0808_speech_codec_from_chan_type; gsm0808_speech_codec_type_names; diff --git a/tests/gsm0808/gsm0808_test.c b/tests/gsm0808/gsm0808_test.c index 49673fe..78238ff 100644 --- a/tests/gsm0808/gsm0808_test.c +++ b/tests/gsm0808/gsm0808_test.c @@ -1073,36 +1073,12 @@ static void print_cil(const struct gsm0808_cell_id_list2 *cil) { - unsigned int i; - if (!cil) { - printf(" cell_id_list == NULL\n"); - return; - } - switch (cil->id_discr) { - case CELL_IDENT_WHOLE_GLOBAL: - printf(" cell_id_list cgi[%u] = {\n", cil->id_list_len); - for (i = 0; i < cil->id_list_len; i++) - printf(" %2d: %s\n", i, osmo_cgi_name(&cil->id_list[i].global)); - printf(" }\n"); - break; - case CELL_IDENT_LAC: - printf(" cell_id_list lac[%u] = {\n", cil->id_list_len); - for (i = 0; i < cil->id_list_len; i++) - printf(" %2d: %u\n", i, cil->id_list[i].lac); - printf(" }\n"); - break; - case CELL_IDENT_BSS: - printf(" cell_id_list bss[%u]\n", cil->id_list_len); - break; - case CELL_IDENT_NO_CELL: - printf(" cell_id_list no_cell[%u]\n", cil->id_list_len); - break; - default: - printf(" Unimplemented id_disc\n"); - } + printf(" cell_id_list == %s\n", gsm0808_cell_id_list_name(cil)); } void test_cell_id_list_add() { + size_t zu; + const struct gsm0808_cell_id_list2 cgi1 = { .id_discr = CELL_IDENT_WHOLE_GLOBAL, .id_list_len = 1, @@ -1220,7 +1196,7 @@ #define ADD_QUIET(other_cil, expect_rc) do { \ int rc = gsm0808_cell_id_list_add(&cil, &other_cil); \ - printf("\ngsm0808_cell_id_list_add(&cil, &" #other_cil ") --> rc = %d\n", rc); \ + printf("gsm0808_cell_id_list_add(&cil, &" #other_cil ") --> rc = %d\n", rc); \ OSMO_ASSERT(rc == expect_rc); \ } while(0) @@ -1233,13 +1209,13 @@ ADD(cil, 0); ADD(cgi1, -EINVAL); - printf("\ncan't add to BSS list\n"); + printf("* can't add to BSS list\n"); cil.id_list_len = 0; cil.id_discr = CELL_IDENT_BSS; print_cil(&cil); ADD(lac1, -EINVAL); - printf("\nother types (including NO_CELL) take on new type iff empty\n"); + printf("* other types (including NO_CELL) take on new type iff empty\n"); cil.id_list_len = 0; cil.id_discr = CELL_IDENT_NO_CELL; print_cil(&cil); @@ -1248,15 +1224,34 @@ ADD(cgi2, 2); ADD(cgi2, 0); + printf("* test gsm0808_cell_id_list_name_buf()'s return val\n"); + zu = strlen(gsm0808_cell_id_list_name(&cil)); + printf(" strlen(gsm0808_cell_id_list_name(cil)) == %zu\n", zu); + zu ++; + while (1) { + char buf[128] = "?"; + int rc; + OSMO_ASSERT(zu < sizeof(buf)); + buf[zu] = '#'; + rc = gsm0808_cell_id_list_name_buf(buf, zu, &cil); + printf(" gsm0808_cell_id_list_name_buf(buf, %zu, cil)) == %d \"%s\"\n", + zu, rc, buf); + OSMO_ASSERT(buf[zu] == '#'); + if (!zu) + break; + zu /= 2; + } + + printf("* list-full behavior\n"); cil.id_list_len = GSM0808_CELL_ID_LIST2_MAXLEN - 1; - printf("\ncil.id_list_len = %u", cil.id_list_len); + printf("cil.id_list_len = %u\n", cil.id_list_len); ADD_QUIET(cgi2a, 1); printf("cil.id_list_len = %u\n", cil.id_list_len); cil.id_list_len = GSM0808_CELL_ID_LIST2_MAXLEN - 1; - printf("\ncil.id_list_len = %u", cil.id_list_len); + printf("cil.id_list_len = %u\n", cil.id_list_len); ADD_QUIET(cgi3, -ENOSPC); - printf("cil.id_list_len = %u", cil.id_list_len); + printf("cil.id_list_len = %u\n", cil.id_list_len); ADD_QUIET(cgi2a, -ENOSPC); printf("cil.id_list_len = %u\n", cil.id_list_len); diff --git a/tests/gsm0808/gsm0808_test.ok b/tests/gsm0808/gsm0808_test.ok index 34d7ebf..6cd7982 100644 --- a/tests/gsm0808/gsm0808_test.ok +++ b/tests/gsm0808/gsm0808_test.ok @@ -21,84 +21,46 @@ Testing prepend DTAP test_gsm0808_enc_dec_cell_id_list_lac: encoded: 1a 07 05 01 24 ab cd 56 78 (rc = 9) ------- test_cell_id_list_add - cell_id_list cgi[0] = { - } - + cell_id_list == CGI[0]:{} gsm0808_cell_id_list_add(&cil, &lac1) --> rc = 1 - cell_id_list lac[1] = { - 0: 123 - } - + cell_id_list == LAC[1]:{123} gsm0808_cell_id_list_add(&cil, &lac1) --> rc = 0 - cell_id_list lac[1] = { - 0: 123 - } - + cell_id_list == LAC[1]:{123} gsm0808_cell_id_list_add(&cil, &lac2) --> rc = 2 - cell_id_list lac[3] = { - 0: 123 - 1: 456 - 2: 789 - } - + cell_id_list == LAC[3]:{123, 456, 789} gsm0808_cell_id_list_add(&cil, &lac2) --> rc = 0 - cell_id_list lac[3] = { - 0: 123 - 1: 456 - 2: 789 - } - + cell_id_list == LAC[3]:{123, 456, 789} gsm0808_cell_id_list_add(&cil, &cil) --> rc = 0 - cell_id_list lac[3] = { - 0: 123 - 1: 456 - 2: 789 - } - + cell_id_list == LAC[3]:{123, 456, 789} gsm0808_cell_id_list_add(&cil, &cgi1) --> rc = -22 - cell_id_list lac[3] = { - 0: 123 - 1: 456 - 2: 789 - } - -can't add to BSS list - cell_id_list bss[0] - + cell_id_list == LAC[3]:{123, 456, 789} +* can't add to BSS list + cell_id_list == BSS[0] gsm0808_cell_id_list_add(&cil, &lac1) --> rc = -22 - cell_id_list bss[0] - -other types (including NO_CELL) take on new type iff empty - cell_id_list no_cell[0] - + cell_id_list == BSS[0] +* other types (including NO_CELL) take on new type iff empty + cell_id_list == NO-CELL[0] gsm0808_cell_id_list_add(&cil, &cgi1) --> rc = 1 - cell_id_list cgi[1] = { - 0: 001-02-3-4 - } - + cell_id_list == CGI[1]:{001-02-3-4} gsm0808_cell_id_list_add(&cil, &cgi1) --> rc = 0 - cell_id_list cgi[1] = { - 0: 001-02-3-4 - } - + cell_id_list == CGI[1]:{001-02-3-4} gsm0808_cell_id_list_add(&cil, &cgi2) --> rc = 2 - cell_id_list cgi[3] = { - 0: 001-02-3-4 - 1: 001-002-3-4 - 2: 005-006-7-8 - } - + cell_id_list == CGI[3]:{001-02-3-4, 001-002-3-4, 005-006-7-8} gsm0808_cell_id_list_add(&cil, &cgi2) --> rc = 0 - cell_id_list cgi[3] = { - 0: 001-02-3-4 - 1: 001-002-3-4 - 2: 005-006-7-8 - } - + cell_id_list == CGI[3]:{001-02-3-4, 001-002-3-4, 005-006-7-8} +* test gsm0808_cell_id_list_name_buf()'s return val + strlen(gsm0808_cell_id_list_name(cil)) == 45 + gsm0808_cell_id_list_name_buf(buf, 46, cil)) == 45 "CGI[3]:{001-02-3-4, 001-002-3-4, 005-006-7-8}" + gsm0808_cell_id_list_name_buf(buf, 23, cil)) == 45 "CGI[3]:{001-02-3-4, 00" + gsm0808_cell_id_list_name_buf(buf, 11, cil)) == 45 "CGI[3]:{00" + gsm0808_cell_id_list_name_buf(buf, 5, cil)) == 45 "CGI[" + gsm0808_cell_id_list_name_buf(buf, 2, cil)) == 45 "C" + gsm0808_cell_id_list_name_buf(buf, 1, cil)) == 45 "" + gsm0808_cell_id_list_name_buf(buf, 0, cil)) == 45 "#" +* list-full behavior cil.id_list_len = 126 gsm0808_cell_id_list_add(&cil, &cgi2a) --> rc = 1 cil.id_list_len = 127 - cil.id_list_len = 126 gsm0808_cell_id_list_add(&cil, &cgi3) --> rc = -28 cil.id_list_len = 127 -- To view, visit https://gerrit.osmocom.org/7843 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: I9b2106805422f96c5cc96ebb9178451355582df3 Gerrit-PatchSet: 3 Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder From gerrit-no-reply at lists.osmocom.org Wed Apr 18 07:14:16 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Wed, 18 Apr 2018 07:14:16 +0000 Subject: [MERGED] libosmocore[master]: tlv: add TLV_GET() and TLV_GET_MINLEN() In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: tlv: add TLV_GET() and TLV_GET_MINLEN() ...................................................................... tlv: add TLV_GET() and TLV_GET_MINLEN() Rationale: so far we use code like if (TLVP_PRESENT(&tp, VERY_LONG_ENUM_VALUE_NAME_THAT_NEVER_ENDS)) { val = TLVP_VAL(&tp, VERY_LONG_ENUM_VALUE_NAME_THAT_NEVER_ENDS); len = TLVP_LEN(&tp, VERY_L0NG_ENUM_VALUE_NAME_TH4T_NEVER_EMDS); } This is a) very long and b) prone to picking the wrong name one of the three times, which would use the wrong length or val without necessarily being noticed. A safer and shorter, more readable pattern is: struct tlv_p_entry *e = TVLP_GET(&tp, VERY_LONG_ENUM_VALUE_NAME_THAT_NEVER_ENDS); if (!e) return -ENOENT; hexdump(e->val, e->len); Change-Id: I445de17fc2daa3ab051f5708dd0cc185b23dc048 --- M include/osmocom/gsm/tlv.h 1 file changed, 21 insertions(+), 0 deletions(-) Approvals: Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/include/osmocom/gsm/tlv.h b/include/osmocom/gsm/tlv.h index 996f6aa..a130dc8 100644 --- a/include/osmocom/gsm/tlv.h +++ b/include/osmocom/gsm/tlv.h @@ -446,6 +446,27 @@ #define TLVP_PRES_LEN(tp, tag, min_len) \ (TLVP_PRESENT(tp, tag) && TLVP_LEN(tp, tag) >= min_len) +/*! Return pointer to a TLV element if it is present. + * Usage: + * struct tlv_p_entry *e = TVLP_GET(&tp, TAG); + * if (!e) + * return -ENOENT; + * hexdump(e->val, e->len); + * \param[in] _tp pointer to \ref tlv_parsed. + * \param[in] tag IE tag to return. + * \returns struct tlv_p_entry pointer, or NULL if not present. + */ +#define TLVP_GET(_tp, tag) (TLVP_PRESENT(_tp, tag)? &(_tp)->lv[tag] : NULL) + +/*! Like TLVP_GET(), but enforcing a minimum val length. + * \param[in] _tp pointer to \ref tlv_parsed. + * \param[in] tag IE tag to return. + * \param[in] min_len Minimum value length in bytes. + * \returns struct tlv_p_entry pointer, or NULL if not present or too short. + */ +#define TLVP_GET_MINLEN(_tp, tag, min_len) \ + (TLVP_PRES_LEN(_tp, tag, min_len)? &(_tp)->lv[tag] : NULL) + /*! Align given TLV element with 16 bit value to an even address * \param[in] tp pointer to \ref tlv_parsed * \param[in] pos element to return -- To view, visit https://gerrit.osmocom.org/7842 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: I445de17fc2daa3ab051f5708dd0cc185b23dc048 Gerrit-PatchSet: 3 Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder From gerrit-no-reply at lists.osmocom.org Wed Apr 18 07:15:31 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Wed, 18 Apr 2018 07:15:31 +0000 Subject: osmo-mgw[master]: stats: use libosmocore rate counter for in/out_stream.err_ts... In-Reply-To: References: Message-ID: Patch Set 4: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7555 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I67aa7a8602f60366ef3ba2c5b1319b1b85719f64 Gerrit-PatchSet: 4 Gerrit-Project: osmo-mgw Gerrit-Branch: master Gerrit-Owner: dexter Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Stefan Sperling Gerrit-Reviewer: neels Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Wed Apr 18 07:15:35 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Wed, 18 Apr 2018 07:15:35 +0000 Subject: [MERGED] osmo-mgw[master]: stats: use libosmocore rate counter for in/out_stream.err_ts... In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: stats: use libosmocore rate counter for in/out_stream.err_ts_counter ...................................................................... stats: use libosmocore rate counter for in/out_stream.err_ts_counter The two counters: in_stream.err_ts_counter and out_stream.err_ts_counter are still handcoded. To make them better accessible they should be replaced with libosmocore rate counters. - replace state.in_stream.err_ts_counter with libosmocore rate counter - replace state.out_stream.err_ts_counter with libosmocore rate counter Change-Id: I67aa7a8602f60366ef3ba2c5b1319b1b85719f64 Related: OS#2517 --- M include/osmocom/mgcp/mgcp_internal.h M src/libosmo-mgcp/mgcp_conn.c M src/libosmo-mgcp/mgcp_network.c M src/libosmo-mgcp/mgcp_stat.c M src/libosmo-mgcp/mgcp_vty.c M tests/mgcp/mgcp_test.c 6 files changed, 63 insertions(+), 15 deletions(-) Approvals: Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/include/osmocom/mgcp/mgcp_internal.h b/include/osmocom/mgcp/mgcp_internal.h index 0da2c56..ff02768 100644 --- a/include/osmocom/mgcp/mgcp_internal.h +++ b/include/osmocom/mgcp/mgcp_internal.h @@ -28,6 +28,7 @@ #include #include #include +#include #define CI_UNUSED 0 @@ -45,7 +46,7 @@ uint32_t ssrc; uint16_t last_seq; uint32_t last_timestamp; - uint32_t err_ts_counter; + struct rate_ctr *err_ts_ctr; int32_t last_tsdelta; uint32_t last_arrival_time; }; @@ -202,6 +203,8 @@ uint32_t octets; } stats; } osmux; + + struct rate_ctr_group *rate_ctr_group; }; /*! Connection type, specifies which member of the union "u" in mgcp_conn diff --git a/src/libosmo-mgcp/mgcp_conn.c b/src/libosmo-mgcp/mgcp_conn.c index 998dbc5..0055049 100644 --- a/src/libosmo-mgcp/mgcp_conn.c +++ b/src/libosmo-mgcp/mgcp_conn.c @@ -26,7 +26,27 @@ #include #include #include +#include #include + +const static struct rate_ctr_desc rate_ctr_desc[] = { + { + .name = "in_stream_err_ts_ctr", + .description = "inbound rtp-stream timestamp errors", + },{ + .name = "out_stream_err_ts_ctr", + .description = "outbound rtp-stream timestamp errors", + } +}; + +const static struct rate_ctr_group_desc rate_ctr_group_desc = { + .group_name_prefix = "conn_rtp", + .group_description = "rtp connection statistics", + .class_id = 1, + .num_ctr = 2, + .ctr_desc = rate_ctr_desc +}; + /* Allocate a new connection identifier. According to RFC3435, they must * be unique only within the scope of the endpoint. (Caller must provide @@ -87,6 +107,10 @@ static void mgcp_rtp_conn_init(struct mgcp_conn_rtp *conn_rtp, struct mgcp_conn *conn) { struct mgcp_rtp_end *end = &conn_rtp->end; + /* FIXME: Each new rate counter group requires an unique index. At the + * moment we generate this index using this counter, but perhaps there + * is a more concious way to assign the indexes. */ + static unsigned int rate_ctr_index = 0; conn_rtp->type = MGCP_RTP_DEFAULT; conn_rtp->osmux.allocated_cid = -1; @@ -108,6 +132,15 @@ mgcp_rtp_codec_init(&end->codec); mgcp_rtp_codec_init(&end->alt_codec); + + conn_rtp->rate_ctr_group = + rate_ctr_group_alloc(conn, &rate_ctr_group_desc, + rate_ctr_index); + conn_rtp->state.in_stream.err_ts_ctr = + &conn_rtp->rate_ctr_group->ctr[0]; + conn_rtp->state.out_stream.err_ts_ctr = + &conn_rtp->rate_ctr_group->ctr[1]; + rate_ctr_index++; } /* Cleanup rtp connection struct */ @@ -116,6 +149,7 @@ osmux_disable_conn(conn_rtp); osmux_release_cid(conn_rtp); mgcp_free_rtp_port(&conn_rtp->end); + rate_ctr_group_free(conn_rtp->rate_ctr_group); } /*! allocate a new connection list entry. diff --git a/src/libosmo-mgcp/mgcp_network.c b/src/libosmo-mgcp/mgcp_network.c index 6923b97..c56e433 100644 --- a/src/libosmo-mgcp/mgcp_network.c +++ b/src/libosmo-mgcp/mgcp_network.c @@ -222,7 +222,7 @@ if (seq == sstate->last_seq) { if (timestamp != sstate->last_timestamp) { - sstate->err_ts_counter += 1; + rate_ctr_inc(sstate->err_ts_ctr); LOGP(DRTP, LOGL_ERROR, "The %s timestamp delta is != 0 but the sequence " "number %d is the same, " @@ -272,7 +272,7 @@ ts_alignment_error(sstate, state->packet_duration, timestamp); if (timestamp_error) { - sstate->err_ts_counter += 1; + rate_ctr_inc(sstate->err_ts_ctr); LOGP(DRTP, LOGL_NOTICE, "The %s timestamp has an alignment error of %d " "on 0x%x SSRC: %u " @@ -505,13 +505,16 @@ mgcp_rtp_annex_count(endp, state, seq, transit, ssrc); if (!state->initialized) { + /* FIXME: Move this initialization to mgcp.conn.c */ state->initialized = 1; state->in_stream.last_seq = seq - 1; state->in_stream.ssrc = state->patch.orig_ssrc = ssrc; state->in_stream.last_tsdelta = 0; state->packet_duration = mgcp_rtp_packet_duration(endp, rtp_end); - state->out_stream = state->in_stream; + state->out_stream.last_seq = seq - 1; + state->out_stream.ssrc = state->patch.orig_ssrc = ssrc; + state->out_stream.last_tsdelta = 0; state->out_stream.last_timestamp = timestamp; state->out_stream.ssrc = ssrc - 1; /* force output SSRC change */ LOGP(DRTP, LOGL_INFO, diff --git a/src/libosmo-mgcp/mgcp_stat.c b/src/libosmo-mgcp/mgcp_stat.c index 581130c..cc723bb 100644 --- a/src/libosmo-mgcp/mgcp_stat.c +++ b/src/libosmo-mgcp/mgcp_stat.c @@ -87,9 +87,9 @@ if (conn->conn->endp->cfg->osmux != OSMUX_USAGE_OFF) { /* Error Counter */ nchars = snprintf(str, str_len, - "\r\nX-Osmo-CP: EC TI=%u, TO=%u", - conn->state.in_stream.err_ts_counter, - conn->state.out_stream.err_ts_counter); + "\r\nX-Osmo-CP: EC TI=%lu, TO=%lu", + conn->state.in_stream.err_ts_ctr->current, + conn->state.out_stream.err_ts_ctr->current); if (nchars < 0 || nchars >= str_len) goto truncate; diff --git a/src/libosmo-mgcp/mgcp_vty.c b/src/libosmo-mgcp/mgcp_vty.c index 14ecd17..392a176 100644 --- a/src/libosmo-mgcp/mgcp_vty.c +++ b/src/libosmo-mgcp/mgcp_vty.c @@ -160,15 +160,16 @@ struct mgcp_rtp_codec *codec = &end->codec; vty_out(vty, - " Timestamp Errs: %d->%d%s" + " Timestamp Errs: %lu->%lu%s" " Dropped Packets: %d%s" " Payload Type: %d Rate: %u Channels: %d %s" " Frame Duration: %u Frame Denominator: %u%s" " FPP: %d Packet Duration: %u%s" " FMTP-Extra: %s Audio-Name: %s Sub-Type: %s%s" " Output-Enabled: %d Force-PTIME: %d%s", - state->in_stream.err_ts_counter, - state->out_stream.err_ts_counter, VTY_NEWLINE, + state->in_stream.err_ts_ctr->current, + state->out_stream.err_ts_ctr->current, + VTY_NEWLINE, end->stats.dropped_packets, VTY_NEWLINE, codec->payload_type, codec->rate, codec->channels, VTY_NEWLINE, codec->frame_duration_num, codec->frame_duration_den, diff --git a/tests/mgcp/mgcp_test.c b/tests/mgcp/mgcp_test.c index f6c421a..0af3799 100644 --- a/tests/mgcp/mgcp_test.c +++ b/tests/mgcp/mgcp_test.c @@ -1133,6 +1133,8 @@ int last_out_ts_err_cnt = 0; struct mgcp_conn_rtp *conn = NULL; struct mgcp_conn *_conn = NULL; + struct rate_ctr test_ctr_in; + struct rate_ctr test_ctr_out; printf("Testing packet error detection%s%s.\n", patch_ssrc ? ", patch SSRC" : "", @@ -1141,6 +1143,11 @@ memset(&trunk, 0, sizeof(trunk)); memset(&endp, 0, sizeof(endp)); memset(&state, 0, sizeof(state)); + + test_ctr_in.current = 0; + test_ctr_out.current = 0; + state.in_stream.err_ts_ctr = &test_ctr_in; + state.out_stream.err_ts_ctr = &test_ctr_out; endp.type = &ep_typeset.rtp; @@ -1186,18 +1193,18 @@ state.in_stream.last_tsdelta, state.in_stream.last_seq); printf("Out TS change: %d, dTS: %d, Seq change: %d, " - "TS Err change: in %+d, out %+d\n", + "TS Err change: in +%lu, out +%lu\n", state.out_stream.last_timestamp - last_timestamp, state.out_stream.last_tsdelta, state.out_stream.last_seq - last_seqno, - state.in_stream.err_ts_counter - last_in_ts_err_cnt, - state.out_stream.err_ts_counter - last_out_ts_err_cnt); + state.in_stream.err_ts_ctr->current - last_in_ts_err_cnt, + state.out_stream.err_ts_ctr->current - last_out_ts_err_cnt); printf("Stats: Jitter = %u, Transit = %d\n", calc_jitter(&state), state.stats.transit); - last_in_ts_err_cnt = state.in_stream.err_ts_counter; - last_out_ts_err_cnt = state.out_stream.err_ts_counter; + last_in_ts_err_cnt = state.in_stream.err_ts_ctr->current; + last_out_ts_err_cnt = state.out_stream.err_ts_ctr->current; last_timestamp = state.out_stream.last_timestamp; last_seqno = state.out_stream.last_seq; } -- To view, visit https://gerrit.osmocom.org/7555 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: I67aa7a8602f60366ef3ba2c5b1319b1b85719f64 Gerrit-PatchSet: 4 Gerrit-Project: osmo-mgw Gerrit-Branch: master Gerrit-Owner: dexter Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Stefan Sperling Gerrit-Reviewer: neels From gerrit-no-reply at lists.osmocom.org Wed Apr 18 08:02:26 2018 From: gerrit-no-reply at lists.osmocom.org (dexter) Date: Wed, 18 Apr 2018 08:02:26 +0000 Subject: osmo-ttcn3-hacks[master]: BSC_Tests: handle mode modify also for signalling In-Reply-To: References: Message-ID: Patch Set 1: > why would we want a MODE MODIFY handling in a pure signaling > assignment? What kind of modification is performed there? The > channel is in SIGNALING mode from the point of immediate assignment > onwards, and it still is in SIGNALING mode at the time we receive > an assignment command (sign). So in this situation the expectation > is that there's no modification (that would be signalling->speech) > and no assignment (as that would change to a different channel). > So all in all, there should just be BSSAP ASS CMD and BSSAP ASS > CMPL with nothing happening at all on the RSL side. Please correct > me if you think differenly I see, that means that this patch is completely wrong. What you say sounds logical to me. I think I have to find out why osmo-bsc decides wrongly here at next. -- To view, visit https://gerrit.osmocom.org/7837 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Ie0e5f15c1a13b773a7693918942e7ff92dfb99d6 Gerrit-PatchSet: 1 Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Owner: dexter Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: dexter Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Wed Apr 18 08:02:50 2018 From: gerrit-no-reply at lists.osmocom.org (dexter) Date: Wed, 18 Apr 2018 08:02:50 +0000 Subject: [ABANDON] osmo-ttcn3-hacks[master]: BSC_Tests: handle mode modify also for signalling In-Reply-To: References: Message-ID: dexter has abandoned this change. Change subject: BSC_Tests: handle mode modify also for signalling ...................................................................... Abandoned -- To view, visit https://gerrit.osmocom.org/7837 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: abandon Gerrit-Change-Id: Ie0e5f15c1a13b773a7693918942e7ff92dfb99d6 Gerrit-PatchSet: 1 Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Owner: dexter Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: dexter From gerrit-no-reply at lists.osmocom.org Wed Apr 18 08:57:57 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Wed, 18 Apr 2018 08:57:57 +0000 Subject: [MERGED] libosmocore[master]: osmo_get_macaddr: Fix buffer read out of bounds In-Reply-To: References: Message-ID: Pau Espin Pedrol has submitted this change and it was merged. Change subject: osmo_get_macaddr: Fix buffer read out of bounds ...................................................................... osmo_get_macaddr: Fix buffer read out of bounds Catched by address sanitizer in osmo-bts-trx during osmo-gsm-tester test run. ==25503==ERROR: AddressSanitizer: global-buffer-overflow on address 0x55b4e8468780 at pc 0x7fd824f543ba bp 0x7fffc21009f0 sp 0x7fffc21009e8 READ of size 16 at 0x55b4e8468780 thread T0 #0 0x7fd824f543b9 in osmo_get_macaddr libosmocore/src/macaddr.c:132 #1 0x55b4e842df33 in abis_open osmo-bts/src/common/abis.c:256 #2 0x55b4e84286c9 in bts_main osmo-bts/src/common/main.c:342 #3 0x7fd8235ab2e0 in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x202e0) #4 0x55b4e838e759 in _start (/home/jenkins/workspace/osmo-gsm-tester_run-prod/trial-807/inst/osmo-bts/bin/osmo-bts-trx+0xfc759) Change-Id: I3727ef339279c8eeb85908735467bfd0e02ca259 --- M src/macaddr.c 1 file changed, 7 insertions(+), 2 deletions(-) Approvals: Neels Hofmeyr: Looks good to me, approved Jenkins Builder: Verified diff --git a/src/macaddr.c b/src/macaddr.c index afa7c93..de9d07a 100644 --- a/src/macaddr.c +++ b/src/macaddr.c @@ -113,6 +113,7 @@ #include #include #include +#include /*! Obtain the MAC address of a given network device * \param[out] mac_out pointer to caller-allocated buffer of 6 bytes @@ -121,15 +122,19 @@ */ int osmo_get_macaddr(uint8_t *mac_out, const char *dev_name) { - int fd, rc; + int fd, rc, dev_len; struct ifreq ifr; + + dev_len = strlen(dev_name); + if (dev_len >= sizeof(ifr.ifr_name)) + return -EINVAL; fd = socket(PF_INET, SOCK_DGRAM, IPPROTO_IP); if (fd < 0) return fd; memset(&ifr, 0, sizeof(ifr)); - memcpy(&ifr.ifr_name, dev_name, sizeof(ifr.ifr_name)); + memcpy(&ifr.ifr_name, dev_name, dev_len + 1); rc = ioctl(fd, SIOCGIFHWADDR, &ifr); close(fd); -- To view, visit https://gerrit.osmocom.org/7863 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: I3727ef339279c8eeb85908735467bfd0e02ca259 Gerrit-PatchSet: 3 Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Neels Hofmeyr Gerrit-Reviewer: Pau Espin Pedrol From gerrit-no-reply at lists.osmocom.org Wed Apr 18 13:42:15 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Wed, 18 Apr 2018 13:42:15 +0000 Subject: [PATCH] docker-playground[master]: bsc + msc: Add missing BSSAP_Configuration.transport field Message-ID: Review at https://gerrit.osmocom.org/7865 bsc + msc: Add missing BSSAP_Configuration.transport field After merging Change-Id: Ie844c4de62e0ef5d5c4c366185968211a7f6d676 in osmo-ttcn3-hacks, the module parameters for BSSAP configuration require one extra argument. Change-Id: I2a0011bc6f7bdf013005d1ea36da591673344eed Related: OS#2544 --- M ttcn3-bsc-test/BSC_Tests.cfg M ttcn3-msc-test/MSC_Tests.cfg 2 files changed, 3 insertions(+), 0 deletions(-) git pull ssh://gerrit.osmocom.org:29418/docker-playground refs/changes/65/7865/1 diff --git a/ttcn3-bsc-test/BSC_Tests.cfg b/ttcn3-bsc-test/BSC_Tests.cfg index 29cca8c..5f29a27 100644 --- a/ttcn3-bsc-test/BSC_Tests.cfg +++ b/ttcn3-bsc-test/BSC_Tests.cfg @@ -12,6 +12,7 @@ BSC_Tests.mp_bsc_ip := "172.18.2.20"; BSC_Tests.mp_test_ip := "172.18.2.203"; BSC_Tests.mp_bssap_cfg := { + transport := BSSAP_TRANSPORT_AoIP, sccp_service_type := "mtp3_itu", sctp_addr := { 23905, "172.18.2.203", 2905, "172.18.2.200" }, own_pc := 185, diff --git a/ttcn3-msc-test/MSC_Tests.cfg b/ttcn3-msc-test/MSC_Tests.cfg index 72fc1c6..2ce2b8c 100644 --- a/ttcn3-msc-test/MSC_Tests.cfg +++ b/ttcn3-msc-test/MSC_Tests.cfg @@ -11,6 +11,7 @@ # connection to STP MSC_Tests.mp_bssap_cfg := { { + transport := BSSAP_TRANSPORT_AoIP, sccp_service_type := "mtp3_itu", sctp_addr := { 23906, "172.18.1.103", 2905, "172.18.1.200" }, own_pc := 193, /* 0.24.1 */ @@ -21,6 +22,7 @@ rctx := 0 }, { + transport := BSSAP_TRANSPORT_AoIP, sccp_service_type := "mtp3_itu", sctp_addr := { 23907, "172.18.1.103", 2905, "172.18.1.200" }, own_pc := 194, /* 0.24.2 */ -- To view, visit https://gerrit.osmocom.org/7865 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I2a0011bc6f7bdf013005d1ea36da591673344eed Gerrit-PatchSet: 1 Gerrit-Project: docker-playground Gerrit-Branch: master Gerrit-Owner: Harald Welte From gerrit-no-reply at lists.osmocom.org Wed Apr 18 15:27:41 2018 From: gerrit-no-reply at lists.osmocom.org (Neels Hofmeyr) Date: Wed, 18 Apr 2018 15:27:41 +0000 Subject: osmo-bsc[master]: gscon: remove dead code In-Reply-To: References: Message-ID: Patch Set 2: Code-Review+1 just wondering whether these were stubs for a future development, like the inter-bsc ho states. What's RR Mode Modify for?? -- To view, visit https://gerrit.osmocom.org/7839 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Iacaae2ee50ca1956066b7dce4517bbc9c2b0897e Gerrit-PatchSet: 2 Gerrit-Project: osmo-bsc Gerrit-Branch: master Gerrit-Owner: dexter Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Neels Hofmeyr Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Wed Apr 18 15:38:28 2018 From: gerrit-no-reply at lists.osmocom.org (Neels Hofmeyr) Date: Wed, 18 Apr 2018 15:38:28 +0000 Subject: [PATCH] docker-playground[master]: jenkins.sh: drop obsolete VOL_SUITE_DIR Message-ID: Review at https://gerrit.osmocom.org/7866 jenkins.sh: drop obsolete VOL_SUITE_DIR Subdirs' jenkins.sh scripts create their own subdirs without exception. Change-Id: Iaf428cde0f4d3efbdb31d7af434aa82425c1bc5f --- M jenkins-common.sh 1 file changed, 0 insertions(+), 2 deletions(-) git pull ssh://gerrit.osmocom.org:29418/docker-playground refs/changes/66/7866/1 diff --git a/jenkins-common.sh b/jenkins-common.sh index 4acc6af..bef68f6 100644 --- a/jenkins-common.sh +++ b/jenkins-common.sh @@ -34,8 +34,6 @@ NET_NAME=$SUITE_NAME VOL_BASE_DIR=`mktemp -d` -VOL_SUITE_DIR=$VOL_BASE_DIR/$SUITE_NAME -mkdir $VOL_SUITE_DIR rm -rf $WORKSPACE/logs || /bin/true mkdir -p $WORKSPACE/logs -- To view, visit https://gerrit.osmocom.org/7866 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Iaf428cde0f4d3efbdb31d7af434aa82425c1bc5f Gerrit-PatchSet: 1 Gerrit-Project: docker-playground Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr From gerrit-no-reply at lists.osmocom.org Wed Apr 18 15:38:28 2018 From: gerrit-no-reply at lists.osmocom.org (Neels Hofmeyr) Date: Wed, 18 Apr 2018 15:38:28 +0000 Subject: [PATCH] docker-playground[master]: jenkins.sh: have one common function to collect logs Message-ID: Review at https://gerrit.osmocom.org/7867 jenkins.sh: have one common function to collect logs To remove code dup and prepare a change to where logs are written, add collect_logs() to jenkins_common.sh and call that from each jenkins.sh after the tests are done. The 'rm -rf' is already done before a test starts. No need to do that again after each test. Change-Id: I5d8472ec36b07c828685b1bd7718e31392d168a3 --- M jenkins-common.sh M m3ua-test/jenkins.sh M sua-test/jenkins.sh M ttcn3-bsc-test/jenkins.sh M ttcn3-bts-test/jenkins.sh M ttcn3-ggsn-test/jenkins.sh M ttcn3-hlr-test/jenkins.sh M ttcn3-mgw-test/jenkins.sh M ttcn3-msc-test/jenkins.sh M ttcn3-nitb-sysinfo/jenkins.sh M ttcn3-sgsn-test/jenkins.sh M ttcn3-sip-test/jenkins.sh 12 files changed, 15 insertions(+), 52 deletions(-) git pull ssh://gerrit.osmocom.org:29418/docker-playground refs/changes/67/7867/1 diff --git a/jenkins-common.sh b/jenkins-common.sh index bef68f6..281807a 100644 --- a/jenkins-common.sh +++ b/jenkins-common.sh @@ -10,7 +10,10 @@ docker network remove $NET_NAME } - +collect_logs() { + cp -a "$VOL_BASE_DIR"/* "$WORKSPACE"/logs/ + cat "$WORKSPACE"/logs/*/junit-*.log || true +} set -x diff --git a/m3ua-test/jenkins.sh b/m3ua-test/jenkins.sh index 5880aed..61f7c05 100755 --- a/m3ua-test/jenkins.sh +++ b/m3ua-test/jenkins.sh @@ -28,6 +28,4 @@ docker container stop -t 1 ${BUILD_TAG}-stp network_remove - -cp -a $VOL_BASE_DIR/* $WORKSPACE/logs/ -cat $WORKSPACE/logs/m3ua-tester/junit-*.log || true +collect_logs diff --git a/sua-test/jenkins.sh b/sua-test/jenkins.sh index 5ac0106..7c1939e 100755 --- a/sua-test/jenkins.sh +++ b/sua-test/jenkins.sh @@ -10,9 +10,6 @@ network_create 172.18.6.0/24 -rm -rf $WORKSPACE/logs || /bin/true -mkdir -p $WORKSPACE/logs - # start container with STP in background docker run --rm \ --sysctl net.ipv6.conf.all.disable_ipv6=0 \ @@ -31,6 +28,4 @@ docker container stop -t 1 ${BUILD_TAG}-stp network_remove - -cp -a $VOL_BASE_DIR/* $WORKSPACE/logs/ -cat $WORKSPACE/logs/sua-tester/junit-*.log || true +collect_logs diff --git a/ttcn3-bsc-test/jenkins.sh b/ttcn3-bsc-test/jenkins.sh index 160d5a6..7536396 100755 --- a/ttcn3-bsc-test/jenkins.sh +++ b/ttcn3-bsc-test/jenkins.sh @@ -51,8 +51,4 @@ docker container kill ${BUILD_TAG}-stp network_remove - -rm -rf $WORKSPACE/logs -mkdir -p $WORKSPACE/logs -cp -a $VOL_BASE_DIR/* $WORKSPACE/logs/ -cat $WORKSPACE/logs/bsc-tester/junit-*.log || true +collect_logs diff --git a/ttcn3-bts-test/jenkins.sh b/ttcn3-bts-test/jenkins.sh index 00bcde4..e8c77f3 100755 --- a/ttcn3-bts-test/jenkins.sh +++ b/ttcn3-bts-test/jenkins.sh @@ -66,9 +66,5 @@ docker container kill ${BUILD_TAG}-bsc network_remove - -rm -rf $WORKSPACE/logs -mkdir -p $WORKSPACE/logs rm -rf $VOL_BASE_DIR/unix -cp -a $VOL_BASE_DIR/* $WORKSPACE/logs/ -cat $WORKSPACE/logs/bts-tester/junit-*.log || true +collect_logs diff --git a/ttcn3-ggsn-test/jenkins.sh b/ttcn3-ggsn-test/jenkins.sh index 56f76ec..487da31 100755 --- a/ttcn3-ggsn-test/jenkins.sh +++ b/ttcn3-ggsn-test/jenkins.sh @@ -34,8 +34,4 @@ docker container stop ${BUILD_TAG}-ggsn network_remove - -rm -rf $WORKSPACE/logs -mkdir -p $WORKSPACE/logs -cp -a $VOL_BASE_DIR/* $WORKSPACE/logs/ -cat $WORKSPACE/logs/ggsn-tester/junit-*.log || true +collect_logs diff --git a/ttcn3-hlr-test/jenkins.sh b/ttcn3-hlr-test/jenkins.sh index 7cd74ae..5d208df 100755 --- a/ttcn3-hlr-test/jenkins.sh +++ b/ttcn3-hlr-test/jenkins.sh @@ -30,8 +30,4 @@ docker container kill ${BUILD_TAG}-hlr network_remove - -rm -rf $WORKSPACE/logs -mkdir -p $WORKSPACE/logs -cp -a $VOL_BASE_DIR/* $WORKSPACE/logs/ -cat $WORKSPACE/logs/hlr-tester/junit-*.log || true +collect_logs diff --git a/ttcn3-mgw-test/jenkins.sh b/ttcn3-mgw-test/jenkins.sh index 755ce9b..7933e1c 100755 --- a/ttcn3-mgw-test/jenkins.sh +++ b/ttcn3-mgw-test/jenkins.sh @@ -30,8 +30,4 @@ docker container stop ${BUILD_TAG}-mgw network_remove - -rm -rf $WORKSPACE/logs -mkdir -p $WORKSPACE/logs -cp -a $VOL_BASE_DIR/* $WORKSPACE/logs/ -cat $WORKSPACE/logs/mgw-tester/junit-*.log || true +collect_logs diff --git a/ttcn3-msc-test/jenkins.sh b/ttcn3-msc-test/jenkins.sh index 635b656..560eea7 100755 --- a/ttcn3-msc-test/jenkins.sh +++ b/ttcn3-msc-test/jenkins.sh @@ -47,9 +47,5 @@ docker container kill ${BUILD_TAG}-stp network_remove - -rm -rf $WORKSPACE/logs -mkdir -p $WORKSPACE/logs rm -rf $VOL_BASE_DIR/unix -cp -a $VOL_BASE_DIR/* $WORKSPACE/logs/ -cat $WORKSPACE/logs/msc-tester/junit-*.log || true +collect_logs diff --git a/ttcn3-nitb-sysinfo/jenkins.sh b/ttcn3-nitb-sysinfo/jenkins.sh index fa61401..ac00642 100755 --- a/ttcn3-nitb-sysinfo/jenkins.sh +++ b/ttcn3-nitb-sysinfo/jenkins.sh @@ -43,11 +43,10 @@ -v bts-vol:/bts \ --name ${BUILD_TAG}-sysinfo-helper -d \ busybox /bin/sh -c 'sleep 1000 & wait' -rm -rf $WORKSPACE/logs -mkdir -p $WORKSPACE/logs docker cp ${BUILD_TAG}-sysinfo-helper:/ttcn3-nitb-sysinfo $WORKSPACE/logs docker cp ${BUILD_TAG}-sysinfo-helper:/nitb $WORKSPACE/logs docker cp ${BUILD_TAG}-sysinfo-helper:/bts $WORKSPACE/logs docker container stop -t 0 ${BUILD_TAG}-sysinfo-helper network_remove +collect_logs diff --git a/ttcn3-sgsn-test/jenkins.sh b/ttcn3-sgsn-test/jenkins.sh index 8f8a37b..f1481b1 100755 --- a/ttcn3-sgsn-test/jenkins.sh +++ b/ttcn3-sgsn-test/jenkins.sh @@ -32,8 +32,4 @@ docker container kill ${BUILD_TAG}-sgsn network_remove - -rm -rf $WORKSPACE/logs -mkdir -p $WORKSPACE/logs -cp -a $VOL_BASE_DIR/* $WORKSPACE/logs/ -cat $WORKSPACE/logs/sgsn-tester/junit-*.log || true +collect_logs diff --git a/ttcn3-sip-test/jenkins.sh b/ttcn3-sip-test/jenkins.sh index 63e6c8a..37a8e95 100755 --- a/ttcn3-sip-test/jenkins.sh +++ b/ttcn3-sip-test/jenkins.sh @@ -36,9 +36,5 @@ docker container kill ${BUILD_TAG}-sip-connector network_remove - -rm -rf $WORKSPACE/logs -mkdir -p $WORKSPACE/logs rm -rf $VOL_BASE_DIR/unix -cp -a $VOL_BASE_DIR/* $WORKSPACE/logs/ -cat $WORKSPACE/logs/sip-tester/junit-*.log || true +collect_logs -- To view, visit https://gerrit.osmocom.org/7867 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I5d8472ec36b07c828685b1bd7718e31392d168a3 Gerrit-PatchSet: 1 Gerrit-Project: docker-playground Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr From gerrit-no-reply at lists.osmocom.org Wed Apr 18 15:38:29 2018 From: gerrit-no-reply at lists.osmocom.org (Neels Hofmeyr) Date: Wed, 18 Apr 2018 15:38:29 +0000 Subject: [PATCH] docker-playground[master]: jenkins.sh: stay in the jenkins workspace, not in /tmp Message-ID: Review at https://gerrit.osmocom.org/7868 jenkins.sh: stay in the jenkins workspace, not in /tmp On jenkins, place all logs and manage docker volumes in the workspace instead of a /tmp/* dir. Use $WORKSPACE/logs as docker volume base to begin with, thus there needs to be no copy from /tmp to $WORKSPACE/logs. On non-jenkins runs, place all in a /tmp/* dir still, but also skip copying of the logs: just have a /tmp/logs symlink to the last tmpdir. Change-Id: I8cf6014725ae8ba602be5f3ec31dfb8e49ff993e --- M jenkins-common.sh M sua-test/jenkins.sh M ttcn3-nitb-sysinfo/jenkins.sh 3 files changed, 16 insertions(+), 13 deletions(-) git pull ssh://gerrit.osmocom.org:29418/docker-playground refs/changes/68/7868/1 diff --git a/jenkins-common.sh b/jenkins-common.sh index 281807a..515479f 100644 --- a/jenkins-common.sh +++ b/jenkins-common.sh @@ -11,8 +11,7 @@ } collect_logs() { - cp -a "$VOL_BASE_DIR"/* "$WORKSPACE"/logs/ - cat "$WORKSPACE"/logs/*/junit-*.log || true + cat "$VOL_BASE_DIR"/*/junit-*.log || true } set -x @@ -22,9 +21,18 @@ REPO_USER=$USER fi -# non-jenkins execution: put logs in /tmp if [ "x$WORKSPACE" = "x" ]; then - WORKSPACE=/tmp + # non-jenkins execution: put logs in /tmp + VOL_BASE_DIR="$(mktemp -d)" + + # point /tmp/logs to the last ttcn3 run + rm /tmp/logs || true + ln -s "$VOL_BASE_DIR" /tmp/logs || true +else + # jenkins execution: put logs in workspace + VOL_BASE_DIR="$WORKSPACE/logs" + rm -rf "$VOL_BASE_DIR" + mkdir -p "$VOL_BASE_DIR" fi # non-jenkins execution: put logs in /tmp @@ -35,8 +43,3 @@ SUITE_NAME=`basename $PWD` NET_NAME=$SUITE_NAME - -VOL_BASE_DIR=`mktemp -d` - -rm -rf $WORKSPACE/logs || /bin/true -mkdir -p $WORKSPACE/logs diff --git a/sua-test/jenkins.sh b/sua-test/jenkins.sh index 7c1939e..0f87b4e 100755 --- a/sua-test/jenkins.sh +++ b/sua-test/jenkins.sh @@ -23,7 +23,7 @@ --network $NET_NAME --ip 172.18.6.3 \ -v $VOL_BASE_DIR/sua-tester:/data \ --name ${BUILD_TAG}-sua-test \ - $REPO_USER/sua-test > $WORKSPACE/logs/junit-xml-sua.log + $REPO_USER/sua-test > $VOL_BASE_DIR/junit-xml-sua.log docker container stop -t 1 ${BUILD_TAG}-stp diff --git a/ttcn3-nitb-sysinfo/jenkins.sh b/ttcn3-nitb-sysinfo/jenkins.sh index ac00642..530b4ee 100755 --- a/ttcn3-nitb-sysinfo/jenkins.sh +++ b/ttcn3-nitb-sysinfo/jenkins.sh @@ -43,9 +43,9 @@ -v bts-vol:/bts \ --name ${BUILD_TAG}-sysinfo-helper -d \ busybox /bin/sh -c 'sleep 1000 & wait' -docker cp ${BUILD_TAG}-sysinfo-helper:/ttcn3-nitb-sysinfo $WORKSPACE/logs -docker cp ${BUILD_TAG}-sysinfo-helper:/nitb $WORKSPACE/logs -docker cp ${BUILD_TAG}-sysinfo-helper:/bts $WORKSPACE/logs +docker cp ${BUILD_TAG}-sysinfo-helper:/ttcn3-nitb-sysinfo $VOL_BASE_DIR +docker cp ${BUILD_TAG}-sysinfo-helper:/nitb $VOL_BASE_DIR +docker cp ${BUILD_TAG}-sysinfo-helper:/bts $VOL_BASE_DIR docker container stop -t 0 ${BUILD_TAG}-sysinfo-helper network_remove -- To view, visit https://gerrit.osmocom.org/7868 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I8cf6014725ae8ba602be5f3ec31dfb8e49ff993e Gerrit-PatchSet: 1 Gerrit-Project: docker-playground Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr From gerrit-no-reply at lists.osmocom.org Wed Apr 18 15:40:33 2018 From: gerrit-no-reply at lists.osmocom.org (Neels Hofmeyr) Date: Wed, 18 Apr 2018 15:40:33 +0000 Subject: docker-playground[master]: jenkins-common: move workspace to /tmp/jenkins when build ou... In-Reply-To: References: Message-ID: Patch Set 1: I have a patch modifying the same place, which I forgot to submit. It keeps stuff in /tmp for manual invocation, but places the temporary files in the workspace for jenkins runs ... submitted them now: https://gerrit.osmocom.org/7866 https://gerrit.osmocom.org/7867 https://gerrit.osmocom.org/7868 I believe this patch is orthogonal, it simply adds a subdir in /tmp. I'd actually use '/tmp/docker-playground/' instead of /tmp/jenkins, once jenkins jobs build in the actual workspace instead of /tmp anyway. -- To view, visit https://gerrit.osmocom.org/7721 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I8a139ef2d23dd8115191e51e86ef0346cb97e4cf Gerrit-PatchSet: 1 Gerrit-Project: docker-playground Gerrit-Branch: master Gerrit-Owner: lynxis lazus Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Neels Hofmeyr Gerrit-Reviewer: Pau Espin Pedrol Gerrit-Reviewer: dexter Gerrit-Reviewer: neels Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Wed Apr 18 15:58:21 2018 From: gerrit-no-reply at lists.osmocom.org (Neels Hofmeyr) Date: Wed, 18 Apr 2018 15:58:21 +0000 Subject: libosmocore[master]: GSUP: implement simple session management support In-Reply-To: References: Message-ID: Patch Set 1: Code-Review-1 (5 comments) could you explain/formalize the flow of messages around session management; something like: GSUP client requests a session ID with message X, server returns an unused one with msg Y, server remembers active IDs until client sends or client disconnects... It should go in osmo-gsm-manuals/common/chapters/gsup.adoc in a patch next to this one, so that we can approve the design as a whole. https://gerrit.osmocom.org/#/c/7700/1/include/osmocom/gsm/gsup.h File include/osmocom/gsm/gsup.h: Line 88: * SESSION_ID is used to distinguish between concurrent rather place individual doxygen comments at each enum val, with /*! ... */ before, or with /*< ... */ after the item. Then again, reading the comment, an ID is always used to distinguish between concurrent foos and is unique. Line 92: * see the 'osmo_gsup_session_state' enum for details. I'd reduce this to /*< see also enum osmo_gsup_session_state */ Line 160: /* Undefined session state */ doxygen https://gerrit.osmocom.org/#/c/7700/1/src/gsm/gsup.c File src/gsm/gsup.c: Line 585: msgb_tlv_put(msg, OSMO_GSUP_SESSION_STATE_IE, sizeof(u8), &u8); sizeof(u8)? :) ... interesting, also found above. It's 1 of course, but ok, leave it in then. https://gerrit.osmocom.org/#/c/7700/1/tests/gsup/gsup_test.c File tests/gsup/gsup_test.c: Line 186: }; OSMO_GSUP_MSGT_SESSION_ID_ERROR ? -- To view, visit https://gerrit.osmocom.org/7700 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I1cee271fed0284a134ffed103c0d4bebbcfde2a8 Gerrit-PatchSet: 1 Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Owner: Vadim Yanitskiy Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Neels Hofmeyr Gerrit-HasComments: Yes From gerrit-no-reply at lists.osmocom.org Wed Apr 18 16:10:46 2018 From: gerrit-no-reply at lists.osmocom.org (Neels Hofmeyr) Date: Wed, 18 Apr 2018 16:10:46 +0000 Subject: libosmocore[master]: GSUP: add USSD messages support according to 3GPP TS 09.02 In-Reply-To: References: Message-ID: Patch Set 4: (7 comments) some suggestions... https://gerrit.osmocom.org/#/c/7600/4/include/osmocom/gsm/gsup.h File include/osmocom/gsm/gsup.h: Line 97: /** try to clarify which elements the doxygen comments refer to. Note that in the doxygen rendered API docs, only OSMO_GSUP_SS_INFO_IE will receive the comment you write here. Not sure who ever reads those instead of the code, but while we maintain doxygen API docs we might as well do it properly. Also, we use /*! syntax. Line 151: /** doxygen again.. Line 246: uint32_t invoke_id; duplicate of the GSUP session id? Line 252: const uint8_t *ussd_string; I don't suppose there is a maximum length of the string? if there were, we could use a uint8_t array and save the dynamic allocation. Is it called "string" in the specs? if not, I'd prefer to not confuse the meaning with char*, i.e. rather use "data" than "string" Line 254: const uint8_t *ss_ap; need a len for this? who owns the pointer target? what data is in here? https://gerrit.osmocom.org/#/c/7600/4/src/gsm/gsup.c File src/gsm/gsup.c: Line 462: rc = decode_ss_info(value, value_len, &gsup_msg->ss_info); are the SS info IEs packed inside a TLV? Wouldn't it be simpler to just have one flat layer of IEs? Line 571: sizeof(uint8_t), ss_info->ss_ap); either sizeof(ss_info->ss_ap) or just use 1. sizeof(uint8_t) is nonsense. -- To view, visit https://gerrit.osmocom.org/7600 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Ie17a78043a35fffbdd59e80fd2b2da39cce5e532 Gerrit-PatchSet: 4 Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Owner: Vadim Yanitskiy Gerrit-Reviewer: Alexander Chemeris Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Neels Hofmeyr Gerrit-Reviewer: Vadim Yanitskiy Gerrit-HasComments: Yes From gerrit-no-reply at lists.osmocom.org Wed Apr 18 17:26:07 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Wed, 18 Apr 2018 17:26:07 +0000 Subject: [PATCH] libosmo-netif[master]: osmux: Add new API osmux_xfrm_output_sched to fix rtp genera... Message-ID: Review at https://gerrit.osmocom.org/7869 osmux: Add new API osmux_xfrm_output_sched to fix rtp generation issues With old implementation, in conditions with jitter we could end up scheduling RTP generated packets from two consecutive osmux frames in an interleaved way (from seq field point of view). This new implementation should make it easier for any RTP reader/playback to have better results in those conditions. Old APIs osmux_xfm_output and osmux_tx_sched are marked as deprecated in favour of the new one, which has a better control of generated RTP packets. However, they are still usable despite the implementation changes done to support the new API. Related: OS#3180 Change-Id: I4e05ff141eb4041128ae77812bbcfe84ed4c02de --- M include/osmocom/netif/osmux.h M src/osmux.c 2 files changed, 95 insertions(+), 3 deletions(-) git pull ssh://gerrit.osmocom.org:29418/libosmo-netif refs/changes/69/7869/1 diff --git a/include/osmocom/netif/osmux.h b/include/osmocom/netif/osmux.h index 5283059..9333f40 100644 --- a/include/osmocom/netif/osmux.h +++ b/include/osmocom/netif/osmux.h @@ -2,6 +2,7 @@ #define _OSMUX_H_ #include +#include /*! \addtogroup osmux * @{ @@ -79,6 +80,10 @@ uint16_t rtp_seq; uint32_t rtp_timestamp; uint32_t rtp_ssrc; + struct osmo_timer_list timer; + struct llist_head list; + void (*tx_cb)(struct msgb *msg, void *data); /* Used defined rtp tx callback */ + void *data; /* User defined opaque data structure */ }; static inline uint8_t *osmux_get_payload(struct osmux_hdr *osmuxh) @@ -101,10 +106,12 @@ void osmux_xfrm_input_deliver(struct osmux_in_handle *h); void osmux_xfrm_output_init(struct osmux_out_handle *h, uint32_t rtp_ssrc); -int osmux_xfrm_output(struct osmux_hdr *osmuxh, struct osmux_out_handle *h, struct llist_head *list); +void osmux_xfrm_output_set_tx_cb(struct osmux_out_handle *h, void (*tx_cb)(struct msgb *msg, void *data), void *data); +int osmux_xfrm_output(struct osmux_hdr *osmuxh, struct osmux_out_handle *h, struct llist_head *list) OSMO_DEPRECATED("Use osmux_xfrm_output_sched() instead"); +int osmux_xfrm_output_sched(struct osmux_out_handle *h, struct osmux_hdr *osmuxh); struct osmux_hdr *osmux_xfrm_output_pull(struct msgb *msg); -void osmux_tx_sched(struct llist_head *list, void (*tx_cb)(struct msgb *msg, void *data), void *data); +void osmux_tx_sched(struct llist_head *list, void (*tx_cb)(struct msgb *msg, void *data), void *data) OSMO_DEPRECATED("Use osmux_xfrm_output_set_tx_cb() instead"); /*! @} */ diff --git a/src/osmux.c b/src/osmux.c index 03db469..5432292 100644 --- a/src/osmux.c +++ b/src/osmux.c @@ -16,6 +16,7 @@ #include #include +#include #include #include #include @@ -127,9 +128,11 @@ osmux_rebuild_rtp(struct osmux_out_handle *h, struct osmux_hdr *osmuxh, void *payload, int payload_len, bool first_pkt) { - struct msgb *out_msg; + struct msgb *prev_msg, *out_msg; + struct timespec *prev_ts, *out_ts; struct rtp_hdr *rtph; struct amr_hdr *amrh; + struct timespec delta = { .tv_sec = 0, .tv_nsec = DELTA_RTP_MSG*1000 }; out_msg = msgb_alloc(sizeof(struct rtp_hdr) + sizeof(struct amr_hdr) + @@ -170,6 +173,15 @@ h->rtp_seq++; h->rtp_timestamp += DELTA_RTP_TIMESTAMP; + out_ts = ((struct timespec *)&((out_msg)->cb[0])); + if (first_pkt || llist_empty(&h->list)) { + osmo_clock_gettime(CLOCK_MONOTONIC, out_ts); + } else { + prev_msg = llist_last_entry(&h->list, struct msgb, list); + prev_ts = ((struct timespec *)&((prev_msg)->cb[0])); + timespecadd(prev_ts, &delta, out_ts); + } + return out_msg; } @@ -206,6 +218,69 @@ #endif llist_add_tail(&msg->list, list); } + return i; +} + +static void osmux_xfrm_output_trigger(void *data) +{ + struct osmux_out_handle *h = data; + struct timespec delay_ts, now; + struct msgb *msg, *next; + + llist_for_each_entry_safe(msg, next, &h->list, list) { + osmo_clock_gettime(CLOCK_MONOTONIC, &now); + struct timespec *msg_ts = ((struct timespec *)&((msg)->cb[0])); + if (timespeccmp(msg_ts, &now, >)) { + timespecsub(msg_ts, &now, &delay_ts); + osmo_timer_schedule(&h->timer, + delay_ts.tv_sec, delay_ts.tv_nsec / 1000); + return; + } + + /* Transmit the rtp packet */ + llist_del(&msg->list); + if (h->tx_cb) + h->tx_cb(msg, h->data); + } +} + +int osmux_xfrm_output_sched(struct osmux_out_handle *h, struct osmux_hdr *osmuxh) +{ + struct timespec now, *msg_ts; + struct msgb *msg; + int i; + bool was_empty = llist_empty(&h->list); + + if (!was_empty) { + /* If we received new data it means we are behind schedule and + * we should flush all previous quickly */ + osmo_clock_gettime(CLOCK_MONOTONIC, &now); + llist_for_each_entry(msg, &h->list, list) { + msg_ts = ((struct timespec *)&((msg)->cb[0])); + *msg_ts = now; + } + osmo_timer_schedule(&h->timer, 0, 0); + } + + for (i=0; ictr+1; i++) { + struct rtp_hdr *rtph; + + msg = osmux_rebuild_rtp(h, osmuxh, + osmux_get_payload(osmuxh) + + i * osmo_amr_bytes(osmuxh->amr_ft), + osmo_amr_bytes(osmuxh->amr_ft), !i); + if (msg == NULL) + continue; + + rtph = osmo_rtp_get_hdr(msg); + if (rtph == NULL) + continue; + + llist_add_tail(&msg->list, &h->list); + } + /* In case list is still empty after parsing messages, no need to rearm */ + if(was_empty && !llist_empty(&h->list)) + osmux_xfrm_output_trigger(h); return i; } @@ -746,6 +821,14 @@ LOGP(DLMUX, LOGL_DEBUG, "initialized osmux input converter\n"); } +void osmux_xfrm_output_set_tx_cb(struct osmux_out_handle *h, + void (*tx_cb)(struct msgb *msg, void *data), + void *data) +{ + h->tx_cb = tx_cb; + h->data = data; +} + int osmux_xfrm_input_open_circuit(struct osmux_in_handle *h, int ccid, int dummy) { @@ -862,6 +945,8 @@ h->rtp_seq = (uint16_t)random(); h->rtp_timestamp = (uint32_t)random(); h->rtp_ssrc = rtp_ssrc; + INIT_LLIST_HEAD(&h->list); + osmo_timer_setup(&h->timer, osmux_xfrm_output_trigger, h); } #define SNPRINTF_BUFFER_SIZE(ret, remain, offset) \ -- To view, visit https://gerrit.osmocom.org/7869 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I4e05ff141eb4041128ae77812bbcfe84ed4c02de Gerrit-PatchSet: 1 Gerrit-Project: libosmo-netif Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol From gerrit-no-reply at lists.osmocom.org Wed Apr 18 17:26:07 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Wed, 18 Apr 2018 17:26:07 +0000 Subject: [PATCH] libosmo-netif[master]: tests: Add osmux2 testsuite Message-ID: Review at https://gerrit.osmocom.org/7870 tests: Add osmux2 testsuite This test is aimed at testing several specific scenarios related to how osmux manages in/out of osmux/rtp packets over time. Change-Id: I3bf59276424ea87c4e66a6ff46de1e3e9a06a904 --- M tests/Makefile.am A tests/osmux/osmux_test2.c A tests/osmux/osmux_test2.ok M tests/testsuite.at 4 files changed, 432 insertions(+), 1 deletion(-) git pull ssh://gerrit.osmocom.org:29418/libosmo-netif refs/changes/70/7870/1 diff --git a/tests/Makefile.am b/tests/Makefile.am index a53fdb3..3849395 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -1,12 +1,15 @@ AM_CFLAGS = -Wall -I$(top_srcdir)/include $(LIBOSMOCORE_CFLAGS) -g AM_LDFLAGS = $(LIBOSMOCORE_LDFLAGS) -check_PROGRAMS = osmux/osmux_test jibuf/jibuf_test +check_PROGRAMS = osmux/osmux_test osmux/osmux_test2 jibuf/jibuf_test check_HEADERS = osmux_osmux_test_SOURCES = osmux/osmux_test.c osmux_osmux_test_LDADD = $(LIBOSMOCORE_LIBS) $(top_builddir)/src/libosmonetif.la +osmux_osmux_test2_SOURCES = osmux/osmux_test2.c +osmux_osmux_test2_LDADD = $(LIBOSMOCORE_LIBS) $(top_builddir)/src/libosmonetif.la + jibuf_jibuf_test_SOURCES = jibuf/jibuf_test.c jibuf_jibuf_test_LDADD = $(LIBOSMOCORE_LIBS) $(top_builddir)/src/libosmonetif.la diff --git a/tests/osmux/osmux_test2.c b/tests/osmux/osmux_test2.c new file mode 100644 index 0000000..213af5f --- /dev/null +++ b/tests/osmux/osmux_test2.c @@ -0,0 +1,333 @@ +/* (C) 2017 by sysmocom - s.f.m.c. GmbH + * + * Author: Pau Espin Pedrol + * + * SPDX-License-Identifier: GPL-2.0+ + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include + +static uint8_t osmux_next_seq; + +#define TIME_RTP_PKT_MS 20 +#define BATCH_FACTOR 6 +/* ----------------------------- */ + +/* Logging related stuff */ +#define INT2IDX(x) (-1*(x)-1) +struct log_info_cat jibuf_test_cat[] = { + [INT2IDX(DLMUX)] = { + .name = "DLMUX", + .description = "Osmocom Osmux", + .enabled = 1, .loglevel = LOGL_DEBUG, + }, +}; +const struct log_info log_info = { + .filter_fn = NULL, + .cat = jibuf_test_cat, + .num_cat = ARRAY_SIZE(jibuf_test_cat), +}; +/* ----------------------------- */ + +static void osmux_init(uint8_t seq) +{ + osmux_next_seq = seq; +} + +static struct msgb *osmux_new(uint8_t cid, uint8_t seq, uint8_t batch_factor) +{ + struct msgb *msg; + struct osmux_hdr *osmuxh; + + msg = msgb_alloc(1500, "test"); + if (!msg) + exit(EXIT_FAILURE); + msgb_put(msg, sizeof(struct osmux_hdr)); + + osmuxh = (struct osmux_hdr *)msg->data; + osmuxh->amr_q = 0; + osmuxh->amr_f = 0; + osmuxh->rtp_m = 0; + osmuxh->ctr = batch_factor - 1; + osmuxh->ft = 1; + osmuxh->seq = osmux_next_seq; + osmuxh->circuit_id = cid; + osmuxh->amr_ft = AMR_FT_2; /* 5.90 */ + osmuxh->amr_cmr = 0; + msgb_put(msg, osmo_amr_bytes(osmuxh->amr_ft)*batch_factor); + return msg; +} + +static struct msgb *osmux_next(void) +{ + osmux_next_seq++; + return osmux_new(0, osmux_next_seq, BATCH_FACTOR); +} + +static void sigalarm_handler(int foo) +{ + printf("FAIL: test did not run successfully\n"); + exit(EXIT_FAILURE); +} + + +static void clock_debug(char* str) +{ + struct timespec ts; + struct timeval tv; + osmo_clock_gettime(CLOCK_MONOTONIC, &ts); + osmo_gettimeofday(&tv, NULL); + printf("sys={%lu.%06lu}, mono={%lu.%06lu}: %s\n", + tv.tv_sec, tv.tv_usec, ts.tv_sec, ts.tv_nsec/1000, str); +} + +static void clock_override_enable(bool enable) +{ + osmo_gettimeofday_override = enable; + osmo_clock_override_enable(CLOCK_MONOTONIC, enable); +} + +static void clock_override_set(long sec, long usec) +{ + struct timespec *mono; + osmo_gettimeofday_override_time.tv_sec = sec; + osmo_gettimeofday_override_time.tv_usec = usec; + mono = osmo_clock_override_gettimespec(CLOCK_MONOTONIC); + mono->tv_sec = sec; + mono->tv_nsec = usec*1000; + + clock_debug("clock_override_set"); +} + +static void clock_override_add_debug(long sec, long usec, bool dbg) +{ + osmo_gettimeofday_override_add(sec, usec); + osmo_clock_override_add(CLOCK_MONOTONIC, sec, usec*1000); + if (dbg) + clock_debug("clock_override_add"); +} +#define clock_override_add(sec, usec) clock_override_add_debug(sec, usec, true) + +static void tx_cb(struct msgb *msg, void *data) +{ + struct osmux_out_handle *h_output = (struct osmux_out_handle *) data; + struct rtp_hdr *rtph; + char buf[250]; + rtph = osmo_rtp_get_hdr(msg); + snprintf(buf, sizeof(buf), "dequeue: seq=%"PRIu16" ts=%"PRIu32"%s enqueued=%u", + ntohs(rtph->sequence), ntohl(rtph->timestamp), rtph->marker ? " M" : "", + llist_count(&h_output->list)); + clock_debug(buf); + msgb_free(msg); +} + +#define PULL_NEXT(h_output) { \ + struct msgb *_msg; \ + struct osmux_hdr *_osmuxh; \ + int _rc; \ + _msg = osmux_next(); \ + _osmuxh = osmux_xfrm_output_pull(_msg); \ + OSMO_ASSERT(_osmuxh); \ + _rc = osmux_xfrm_output_sched((h_output), _osmuxh); \ + OSMO_ASSERT(_rc == _osmuxh->ctr+1); \ + } + +static void test_output_consecutive(void) +{ + struct osmux_out_handle h_output; + + printf("===test_output_consecutive===\n"); + + clock_override_enable(true); + clock_override_set(0, 0); + osmux_init(32); + osmux_xfrm_output_init(&h_output, 0x7000000); + h_output.rtp_seq = (uint16_t)50; + h_output.rtp_timestamp = (uint32_t)500; + osmux_xfrm_output_set_tx_cb(&h_output, tx_cb, &h_output); + + /* First osmux frame at t=0 */ + PULL_NEXT(&h_output); + clock_debug("first dequed before first select"); + osmo_select_main(0); + + clock_override_add(0, TIME_RTP_PKT_MS*1000); + clock_debug("second select, second dequed"); + osmo_select_main(0); + + clock_override_add(0, TIME_RTP_PKT_MS*1000); + clock_debug("third select, third dequed"); + osmo_select_main(0); + + clock_override_add(0, TIME_RTP_PKT_MS*1000); + clock_debug("fourth select, fourth dequed"); + osmo_select_main(0); + + clock_override_add(0, TIME_RTP_PKT_MS*1000); + clock_debug("fifth select, fifth dequed"); + osmo_select_main(0); + + clock_override_add(0, TIME_RTP_PKT_MS*1000); + clock_debug("sixth select, sixth dequed"); + osmo_select_main(0); + OSMO_ASSERT(llist_empty(&h_output.list)); + + /* Second osmux frame at t=80 */ + clock_debug("send second osmux frame"); + PULL_NEXT(&h_output); + clock_debug("first dequed before first select"); + osmo_select_main(0); + + clock_override_add(0, TIME_RTP_PKT_MS*1000); + clock_debug("second select, second dequed"); + osmo_select_main(0); + + clock_override_add(0, 4*TIME_RTP_PKT_MS*1000); + clock_debug("third select, four packet should be dequeued"); + osmo_select_main(0); + OSMO_ASSERT(llist_empty(&h_output.list)); +} + +static void test_output_interleaved(void) +{ + struct osmux_out_handle h_output; + + printf("===test_output_interleaved===\n"); + + clock_override_enable(true); + clock_override_set(0, 0); + osmux_init(32); + osmux_xfrm_output_init(&h_output, 0x7000000); + h_output.rtp_seq = (uint16_t)50; + h_output.rtp_timestamp = (uint32_t)500; + osmux_xfrm_output_set_tx_cb(&h_output, tx_cb, &h_output); + + /* First osmux frame at t=0, but it actually arrives late due to jitter, + so 2nd frame is going to arrive before the 1st one is completelly + scheduled */ + PULL_NEXT(&h_output); + + clock_override_add(0, 2*TIME_RTP_PKT_MS*1000); + clock_debug("select, 3 dequed, 3 still queued"); + osmo_select_main(0); + + /* Second osmux frame at t=0 */ + clock_debug("next frame arrives, 3 pending rtp packets are dequeued and first of new osmux frame too"); + PULL_NEXT(&h_output); + osmo_select_main(0); + OSMO_ASSERT(llist_count(&h_output.list) == 5); + + clock_override_add(0, 5*TIME_RTP_PKT_MS*1000); + clock_debug("calling select, then all should be out"); + osmo_select_main(0); + OSMO_ASSERT(llist_empty(&h_output.list)); +} + +static void test_output_2together(void) +{ + struct osmux_out_handle h_output; + + printf("===test_output_2together===\n"); + + clock_override_enable(true); + clock_override_set(0, 0); + osmux_init(32); + osmux_xfrm_output_init(&h_output, 0x7000000); + h_output.rtp_seq = (uint16_t)50; + h_output.rtp_timestamp = (uint32_t)500; + osmux_xfrm_output_set_tx_cb(&h_output, tx_cb, &h_output); + + /* First osmux frame at t=0, but it actually arrives late due to jitter, + so we receive both at the same time. */ + PULL_NEXT(&h_output); + clock_debug("calling select in between 2 osmux recv"); + osmo_select_main(0); + PULL_NEXT(&h_output); + + clock_debug("calling select after receiving 2nd osmux. Dequeue 1st osmux frame and 1st rtp from 2nd osmux frame."); + osmo_select_main(0); + OSMO_ASSERT(llist_count(&h_output.list) == 5); + + clock_override_add(0, 5*TIME_RTP_PKT_MS*1000); + clock_debug("select, all 5 remaining should be out"); + osmo_select_main(0); +} + +/* FIXME: this test shows generated rtp stream doesn't have osmux lost frames into account! */ +static void test_output_frame_lost(void) +{ + struct osmux_out_handle h_output; + + printf("===test_output_frame_lost===\n"); + + clock_override_enable(true); + clock_override_set(0, 0); + osmux_init(32); + osmux_xfrm_output_init(&h_output, 0x7000000); + h_output.rtp_seq = (uint16_t)50; + h_output.rtp_timestamp = (uint32_t)500; + osmux_xfrm_output_set_tx_cb(&h_output, tx_cb, &h_output); + + clock_debug("first osmux frame"); + PULL_NEXT(&h_output); + clock_override_add(0, 5*TIME_RTP_PKT_MS*1000); + osmo_select_main(0); + + clock_debug("one osmux frame is now lost (seq++)"); + osmux_next(); + clock_override_add(0, 6*TIME_RTP_PKT_MS*1000); + + clock_debug("3rd osmux frame arrives"); + PULL_NEXT(&h_output); + clock_override_add(0, 5*TIME_RTP_PKT_MS*1000); + osmo_select_main(0); +} + +int main(int argc, char **argv) +{ + + if (signal(SIGALRM, sigalarm_handler) == SIG_ERR) { + perror("signal"); + exit(EXIT_FAILURE); + } + + void *tall_ctx = talloc_named_const(NULL, 1, "Root context"); + msgb_talloc_ctx_init(tall_ctx, 0); + osmo_init_logging2(tall_ctx, &log_info); + log_set_print_filename(osmo_stderr_target, 0); + log_set_log_level(osmo_stderr_target, LOGL_DEBUG); + log_set_category_filter(osmo_stderr_target, DLMUX, 1, LOGL_DEBUG); + + alarm(10); + + test_output_consecutive(); + test_output_interleaved(); + test_output_2together(); + test_output_frame_lost(); + + fprintf(stdout, "OK: Test passed\n"); + return EXIT_SUCCESS; +} diff --git a/tests/osmux/osmux_test2.ok b/tests/osmux/osmux_test2.ok new file mode 100644 index 0000000..018ecaf --- /dev/null +++ b/tests/osmux/osmux_test2.ok @@ -0,0 +1,89 @@ +===test_output_consecutive=== +sys={0.000000}, mono={0.000000}: clock_override_set +sys={0.000000}, mono={0.000000}: dequeue: seq=50 ts=500 enqueued=5 +sys={0.000000}, mono={0.000000}: first dequed before first select +sys={0.020000}, mono={0.020000}: clock_override_add +sys={0.020000}, mono={0.020000}: second select, second dequed +sys={0.020000}, mono={0.020000}: dequeue: seq=51 ts=660 enqueued=4 +sys={0.040000}, mono={0.040000}: clock_override_add +sys={0.040000}, mono={0.040000}: third select, third dequed +sys={0.040000}, mono={0.040000}: dequeue: seq=52 ts=820 enqueued=3 +sys={0.060000}, mono={0.060000}: clock_override_add +sys={0.060000}, mono={0.060000}: fourth select, fourth dequed +sys={0.060000}, mono={0.060000}: dequeue: seq=53 ts=980 enqueued=2 +sys={0.080000}, mono={0.080000}: clock_override_add +sys={0.080000}, mono={0.080000}: fifth select, fifth dequed +sys={0.080000}, mono={0.080000}: dequeue: seq=54 ts=1140 enqueued=1 +sys={0.100000}, mono={0.100000}: clock_override_add +sys={0.100000}, mono={0.100000}: sixth select, sixth dequed +sys={0.100000}, mono={0.100000}: dequeue: seq=55 ts=1300 enqueued=0 +sys={0.100000}, mono={0.100000}: send second osmux frame +sys={0.100000}, mono={0.100000}: dequeue: seq=56 ts=1460 enqueued=5 +sys={0.100000}, mono={0.100000}: first dequed before first select +sys={0.120000}, mono={0.120000}: clock_override_add +sys={0.120000}, mono={0.120000}: second select, second dequed +sys={0.120000}, mono={0.120000}: dequeue: seq=57 ts=1620 enqueued=4 +sys={0.200000}, mono={0.200000}: clock_override_add +sys={0.200000}, mono={0.200000}: third select, four packet should be dequeued +sys={0.200000}, mono={0.200000}: dequeue: seq=58 ts=1780 enqueued=3 +sys={0.200000}, mono={0.200000}: dequeue: seq=59 ts=1940 enqueued=2 +sys={0.200000}, mono={0.200000}: dequeue: seq=60 ts=2100 enqueued=1 +sys={0.200000}, mono={0.200000}: dequeue: seq=61 ts=2260 enqueued=0 +===test_output_interleaved=== +sys={0.000000}, mono={0.000000}: clock_override_set +sys={0.000000}, mono={0.000000}: dequeue: seq=50 ts=500 enqueued=5 +sys={0.040000}, mono={0.040000}: clock_override_add +sys={0.040000}, mono={0.040000}: select, 3 dequed, 3 still queued +sys={0.040000}, mono={0.040000}: dequeue: seq=51 ts=660 enqueued=4 +sys={0.040000}, mono={0.040000}: dequeue: seq=52 ts=820 enqueued=3 +sys={0.040000}, mono={0.040000}: next frame arrives, 3 pending rtp packets are dequeued and first of new osmux frame too +sys={0.040000}, mono={0.040000}: dequeue: seq=53 ts=980 enqueued=8 +sys={0.040000}, mono={0.040000}: dequeue: seq=54 ts=1140 enqueued=7 +sys={0.040000}, mono={0.040000}: dequeue: seq=55 ts=1300 enqueued=6 +sys={0.040000}, mono={0.040000}: dequeue: seq=56 ts=1460 enqueued=5 +sys={0.140000}, mono={0.140000}: clock_override_add +sys={0.140000}, mono={0.140000}: calling select, then all should be out +sys={0.140000}, mono={0.140000}: dequeue: seq=57 ts=1620 enqueued=4 +sys={0.140000}, mono={0.140000}: dequeue: seq=58 ts=1780 enqueued=3 +sys={0.140000}, mono={0.140000}: dequeue: seq=59 ts=1940 enqueued=2 +sys={0.140000}, mono={0.140000}: dequeue: seq=60 ts=2100 enqueued=1 +sys={0.140000}, mono={0.140000}: dequeue: seq=61 ts=2260 enqueued=0 +===test_output_2together=== +sys={0.000000}, mono={0.000000}: clock_override_set +sys={0.000000}, mono={0.000000}: dequeue: seq=50 ts=500 enqueued=5 +sys={0.000000}, mono={0.000000}: calling select in between 2 osmux recv +sys={0.000000}, mono={0.000000}: calling select after receiving 2nd osmux. Dequeue 1st osmux frame and 1st rtp from 2nd osmux frame. +sys={0.000000}, mono={0.000000}: dequeue: seq=51 ts=660 enqueued=10 +sys={0.000000}, mono={0.000000}: dequeue: seq=52 ts=820 enqueued=9 +sys={0.000000}, mono={0.000000}: dequeue: seq=53 ts=980 enqueued=8 +sys={0.000000}, mono={0.000000}: dequeue: seq=54 ts=1140 enqueued=7 +sys={0.000000}, mono={0.000000}: dequeue: seq=55 ts=1300 enqueued=6 +sys={0.000000}, mono={0.000000}: dequeue: seq=56 ts=1460 enqueued=5 +sys={0.100000}, mono={0.100000}: clock_override_add +sys={0.100000}, mono={0.100000}: select, all 5 remaining should be out +sys={0.100000}, mono={0.100000}: dequeue: seq=57 ts=1620 enqueued=4 +sys={0.100000}, mono={0.100000}: dequeue: seq=58 ts=1780 enqueued=3 +sys={0.100000}, mono={0.100000}: dequeue: seq=59 ts=1940 enqueued=2 +sys={0.100000}, mono={0.100000}: dequeue: seq=60 ts=2100 enqueued=1 +sys={0.100000}, mono={0.100000}: dequeue: seq=61 ts=2260 enqueued=0 +===test_output_frame_lost=== +sys={0.000000}, mono={0.000000}: clock_override_set +sys={0.000000}, mono={0.000000}: first osmux frame +sys={0.000000}, mono={0.000000}: dequeue: seq=50 ts=500 enqueued=5 +sys={0.100000}, mono={0.100000}: clock_override_add +sys={0.100000}, mono={0.100000}: dequeue: seq=51 ts=660 enqueued=4 +sys={0.100000}, mono={0.100000}: dequeue: seq=52 ts=820 enqueued=3 +sys={0.100000}, mono={0.100000}: dequeue: seq=53 ts=980 enqueued=2 +sys={0.100000}, mono={0.100000}: dequeue: seq=54 ts=1140 enqueued=1 +sys={0.100000}, mono={0.100000}: dequeue: seq=55 ts=1300 enqueued=0 +sys={0.100000}, mono={0.100000}: one osmux frame is now lost (seq++) +sys={0.220000}, mono={0.220000}: clock_override_add +sys={0.220000}, mono={0.220000}: 3rd osmux frame arrives +sys={0.220000}, mono={0.220000}: dequeue: seq=56 ts=1460 enqueued=5 +sys={0.320000}, mono={0.320000}: clock_override_add +sys={0.320000}, mono={0.320000}: dequeue: seq=57 ts=1620 enqueued=4 +sys={0.320000}, mono={0.320000}: dequeue: seq=58 ts=1780 enqueued=3 +sys={0.320000}, mono={0.320000}: dequeue: seq=59 ts=1940 enqueued=2 +sys={0.320000}, mono={0.320000}: dequeue: seq=60 ts=2100 enqueued=1 +sys={0.320000}, mono={0.320000}: dequeue: seq=61 ts=2260 enqueued=0 +OK: Test passed diff --git a/tests/testsuite.at b/tests/testsuite.at index 81d40ba..67b91c6 100644 --- a/tests/testsuite.at +++ b/tests/testsuite.at @@ -7,6 +7,12 @@ AT_CHECK([$abs_top_builddir/tests/osmux/osmux_test], [0], [expout], [ignore]) AT_CLEANUP +AT_SETUP([osmux_test2]) +AT_KEYWORDS([osmux_test2]) +cat $abs_srcdir/osmux/osmux_test2.ok > expout +AT_CHECK([$abs_top_builddir/tests/osmux/osmux_test2], [0], [expout], [ignore]) +AT_CLEANUP + AT_SETUP([jibuf_test]) AT_KEYWORDS([jibuf_test]) cat $abs_srcdir/jibuf/jibuf_test.ok > expout -- To view, visit https://gerrit.osmocom.org/7870 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I3bf59276424ea87c4e66a6ff46de1e3e9a06a904 Gerrit-PatchSet: 1 Gerrit-Project: libosmo-netif Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol From gerrit-no-reply at lists.osmocom.org Wed Apr 18 17:26:07 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Wed, 18 Apr 2018 17:26:07 +0000 Subject: [PATCH] libosmo-netif[master]: osmux: Set Marker bit on osmux frame loss detected Message-ID: Review at https://gerrit.osmocom.org/7871 osmux: Set Marker bit on osmux frame loss detected Until this patch, we didn't notify in any way to the RTP reader when an Osmux frame was lost. Instead, we updated the seq×tamp as if there was no lost, and as a result the RTP reader would only see a steady increase of delay every time an osmux frame was lost. As the batch_factor for the lost packet is unknown, we cannot assume any number of amr payloads lost, and thus we cannot simply increment seq and timestamp for a specific amount. Instead, the only viable solution seems to set the M marker bit in the first rtp packet generated after a non-consecutive osmux frame is received. The implementation may act differently with the first generated RTP packet based on the first osmux seq number used for the stream. In case 0 it's used as first osmux seq number, M will be set depending on request from original RTP packet having the M bit set. If it's not 0, the first RTP packer will unconditionally have the M bit. That's not an issue because it's anyway expect for receiver to sync on the first packet. Related: OS#3185 Change-Id: I2efed6d726a1b8e77e686c7a5fe1940d3f4901a7 --- M include/osmocom/netif/osmux.h M src/osmux.c M tests/osmux/osmux_test.c M tests/osmux/osmux_test2.ok 4 files changed, 33 insertions(+), 11 deletions(-) git pull ssh://gerrit.osmocom.org:29418/libosmo-netif refs/changes/71/7871/1 diff --git a/include/osmocom/netif/osmux.h b/include/osmocom/netif/osmux.h index 9333f40..bccd3a7 100644 --- a/include/osmocom/netif/osmux.h +++ b/include/osmocom/netif/osmux.h @@ -80,6 +80,7 @@ uint16_t rtp_seq; uint32_t rtp_timestamp; uint32_t rtp_ssrc; + uint8_t osmux_seq_ack; /* Latest received seq num */ struct osmo_timer_list timer; struct llist_head list; void (*tx_cb)(struct msgb *msg, void *data); /* Used defined rtp tx callback */ diff --git a/src/osmux.c b/src/osmux.c index 5432292..e82b8ce 100644 --- a/src/osmux.c +++ b/src/osmux.c @@ -151,8 +151,14 @@ rtph->timestamp = htonl(h->rtp_timestamp); rtph->sequence = htons(h->rtp_seq); rtph->ssrc = htonl(h->rtp_ssrc); - /* rtp packet with the marker bit is always warranted to be the first one */ - rtph->marker = first_pkt && osmuxh->rtp_m; + /* rtp packet with the marker bit is always guaranteed to be the first + * one. We want to notify with marker in 2 scenarios: + * 1- Sender told us through osmux frame rtp_m. + * 2- Sntermediate osmux frame lost (seq gap), otherwise rtp receiver only sees + * steady increase of delay + */ + rtph->marker = first_pkt && + (osmuxh->rtp_m || (osmuxh->seq != h->osmux_seq_ack + 1)); msgb_put(out_msg, sizeof(struct rtp_hdr)); @@ -218,6 +224,10 @@ #endif llist_add_tail(&msg->list, list); } + + /* Update last seen seq number: */ + h->osmux_seq_ack = osmuxh->seq; + return i; } @@ -278,6 +288,10 @@ llist_add_tail(&msg->list, &h->list); } + + /* Update last seen seq number: */ + h->osmux_seq_ack = osmuxh->seq; + /* In case list is still empty after parsing messages, no need to rearm */ if(was_empty && !llist_empty(&h->list)) osmux_xfrm_output_trigger(h); diff --git a/tests/osmux/osmux_test.c b/tests/osmux/osmux_test.c index 01ce2d1..631ade8 100644 --- a/tests/osmux/osmux_test.c +++ b/tests/osmux/osmux_test.c @@ -152,7 +152,8 @@ memcpy(msg->data, rtp_pkt, sizeof(rtp_pkt)); cpy_rtph = (struct rtp_hdr *) msgb_put(msg, sizeof(rtp_pkt)); - if ((i+j) % 7 == 0) { + /* first condition guarantees that 1st packet per stream contains M bit set. */ + if (i == 0 || (i+j) % 7 == 0) { cpy_rtph->marker = 1; mark_pkts++; } @@ -175,7 +176,7 @@ } if (mark_pkts) { - fprintf(stdout, "RTP M bit (marker) mismatch! %d\n", mark_pkts); + fprintf(stdout, "osmux_test_marker: RTP M bit (marker) mismatch! %d\n", mark_pkts); exit(EXIT_FAILURE); } } @@ -183,6 +184,7 @@ static void osmux_test_loop(int ccid) { struct rtp_hdr *rtph = (struct rtp_hdr *)rtp_pkt; + struct rtp_hdr *cpy_rtph; struct msgb *msg; int i, j, k = 0; char buf[1024]; @@ -194,11 +196,16 @@ exit(EXIT_FAILURE); memcpy(msg->data, rtp_pkt, sizeof(rtp_pkt)); - msgb_put(msg, sizeof(rtp_pkt)); + cpy_rtph = (struct rtp_hdr *) msgb_put(msg, sizeof(rtp_pkt)); seq = ntohs(rtph->sequence); seq++; rtph->sequence = htons(seq); + if (i < 3) { + /* Mark 1 rtp packet of each stream */ + cpy_rtph->marker = 1; + mark_pkts++; + } osmo_rtp_snprintf(buf, sizeof(buf), msg); fprintf(stderr, "adding to ccid=%u %s\n", (i % 2) + ccid, buf); @@ -239,7 +246,7 @@ } if (mark_pkts) { - fprintf(stdout, "RTP M bit (marker) mismatch! %d\n", mark_pkts); + fprintf(stdout, "osmux_test_loop: RTP M bit (marker) mismatch! %d\n", mark_pkts); exit(EXIT_FAILURE); } } diff --git a/tests/osmux/osmux_test2.ok b/tests/osmux/osmux_test2.ok index 018ecaf..f578741 100644 --- a/tests/osmux/osmux_test2.ok +++ b/tests/osmux/osmux_test2.ok @@ -1,6 +1,6 @@ ===test_output_consecutive=== sys={0.000000}, mono={0.000000}: clock_override_set -sys={0.000000}, mono={0.000000}: dequeue: seq=50 ts=500 enqueued=5 +sys={0.000000}, mono={0.000000}: dequeue: seq=50 ts=500 M enqueued=5 sys={0.000000}, mono={0.000000}: first dequed before first select sys={0.020000}, mono={0.020000}: clock_override_add sys={0.020000}, mono={0.020000}: second select, second dequed @@ -31,7 +31,7 @@ sys={0.200000}, mono={0.200000}: dequeue: seq=61 ts=2260 enqueued=0 ===test_output_interleaved=== sys={0.000000}, mono={0.000000}: clock_override_set -sys={0.000000}, mono={0.000000}: dequeue: seq=50 ts=500 enqueued=5 +sys={0.000000}, mono={0.000000}: dequeue: seq=50 ts=500 M enqueued=5 sys={0.040000}, mono={0.040000}: clock_override_add sys={0.040000}, mono={0.040000}: select, 3 dequed, 3 still queued sys={0.040000}, mono={0.040000}: dequeue: seq=51 ts=660 enqueued=4 @@ -50,7 +50,7 @@ sys={0.140000}, mono={0.140000}: dequeue: seq=61 ts=2260 enqueued=0 ===test_output_2together=== sys={0.000000}, mono={0.000000}: clock_override_set -sys={0.000000}, mono={0.000000}: dequeue: seq=50 ts=500 enqueued=5 +sys={0.000000}, mono={0.000000}: dequeue: seq=50 ts=500 M enqueued=5 sys={0.000000}, mono={0.000000}: calling select in between 2 osmux recv sys={0.000000}, mono={0.000000}: calling select after receiving 2nd osmux. Dequeue 1st osmux frame and 1st rtp from 2nd osmux frame. sys={0.000000}, mono={0.000000}: dequeue: seq=51 ts=660 enqueued=10 @@ -69,7 +69,7 @@ ===test_output_frame_lost=== sys={0.000000}, mono={0.000000}: clock_override_set sys={0.000000}, mono={0.000000}: first osmux frame -sys={0.000000}, mono={0.000000}: dequeue: seq=50 ts=500 enqueued=5 +sys={0.000000}, mono={0.000000}: dequeue: seq=50 ts=500 M enqueued=5 sys={0.100000}, mono={0.100000}: clock_override_add sys={0.100000}, mono={0.100000}: dequeue: seq=51 ts=660 enqueued=4 sys={0.100000}, mono={0.100000}: dequeue: seq=52 ts=820 enqueued=3 @@ -79,7 +79,7 @@ sys={0.100000}, mono={0.100000}: one osmux frame is now lost (seq++) sys={0.220000}, mono={0.220000}: clock_override_add sys={0.220000}, mono={0.220000}: 3rd osmux frame arrives -sys={0.220000}, mono={0.220000}: dequeue: seq=56 ts=1460 enqueued=5 +sys={0.220000}, mono={0.220000}: dequeue: seq=56 ts=1460 M enqueued=5 sys={0.320000}, mono={0.320000}: clock_override_add sys={0.320000}, mono={0.320000}: dequeue: seq=57 ts=1620 enqueued=4 sys={0.320000}, mono={0.320000}: dequeue: seq=58 ts=1780 enqueued=3 -- To view, visit https://gerrit.osmocom.org/7871 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I2efed6d726a1b8e77e686c7a5fe1940d3f4901a7 Gerrit-PatchSet: 1 Gerrit-Project: libosmo-netif Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol From gerrit-no-reply at lists.osmocom.org Wed Apr 18 17:35:31 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Wed, 18 Apr 2018 17:35:31 +0000 Subject: [PATCH] libosmo-netif[master]: tests: Add osmux2 testsuite In-Reply-To: References: Message-ID: Hello Jenkins Builder, I'd like you to reexamine a change. Please visit https://gerrit.osmocom.org/7870 to look at the new patch set (#2). tests: Add osmux2 testsuite This test is aimed at testing several specific scenarios related to how osmux manages in/out of osmux/rtp packets over time. Change-Id: I3bf59276424ea87c4e66a6ff46de1e3e9a06a904 --- M tests/Makefile.am A tests/osmux/osmux_test2.c A tests/osmux/osmux_test2.ok M tests/testsuite.at 4 files changed, 433 insertions(+), 1 deletion(-) git pull ssh://gerrit.osmocom.org:29418/libosmo-netif refs/changes/70/7870/2 diff --git a/tests/Makefile.am b/tests/Makefile.am index a53fdb3..7c06b13 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -1,11 +1,14 @@ AM_CFLAGS = -Wall -I$(top_srcdir)/include $(LIBOSMOCORE_CFLAGS) -g AM_LDFLAGS = $(LIBOSMOCORE_LDFLAGS) -check_PROGRAMS = osmux/osmux_test jibuf/jibuf_test +check_PROGRAMS = osmux/osmux_test osmux/osmux_test2 jibuf/jibuf_test check_HEADERS = osmux_osmux_test_SOURCES = osmux/osmux_test.c osmux_osmux_test_LDADD = $(LIBOSMOCORE_LIBS) $(top_builddir)/src/libosmonetif.la + +osmux_osmux_test2_SOURCES = osmux/osmux_test2.c +osmux_osmux_test2_LDADD = $(LIBOSMOCORE_LIBS) $(top_builddir)/src/libosmonetif.la jibuf_jibuf_test_SOURCES = jibuf/jibuf_test.c jibuf_jibuf_test_LDADD = $(LIBOSMOCORE_LIBS) $(top_builddir)/src/libosmonetif.la @@ -52,6 +55,7 @@ EXTRA_DIST = testsuite.at $(srcdir)/package.m4 $(TESTSUITE) \ osmux/osmux_test.ok \ + osmux/osmux_test2.ok \ jibuf/jibuf_test.ok DISTCLEANFILES = atconfig diff --git a/tests/osmux/osmux_test2.c b/tests/osmux/osmux_test2.c new file mode 100644 index 0000000..213af5f --- /dev/null +++ b/tests/osmux/osmux_test2.c @@ -0,0 +1,333 @@ +/* (C) 2017 by sysmocom - s.f.m.c. GmbH + * + * Author: Pau Espin Pedrol + * + * SPDX-License-Identifier: GPL-2.0+ + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include + +static uint8_t osmux_next_seq; + +#define TIME_RTP_PKT_MS 20 +#define BATCH_FACTOR 6 +/* ----------------------------- */ + +/* Logging related stuff */ +#define INT2IDX(x) (-1*(x)-1) +struct log_info_cat jibuf_test_cat[] = { + [INT2IDX(DLMUX)] = { + .name = "DLMUX", + .description = "Osmocom Osmux", + .enabled = 1, .loglevel = LOGL_DEBUG, + }, +}; +const struct log_info log_info = { + .filter_fn = NULL, + .cat = jibuf_test_cat, + .num_cat = ARRAY_SIZE(jibuf_test_cat), +}; +/* ----------------------------- */ + +static void osmux_init(uint8_t seq) +{ + osmux_next_seq = seq; +} + +static struct msgb *osmux_new(uint8_t cid, uint8_t seq, uint8_t batch_factor) +{ + struct msgb *msg; + struct osmux_hdr *osmuxh; + + msg = msgb_alloc(1500, "test"); + if (!msg) + exit(EXIT_FAILURE); + msgb_put(msg, sizeof(struct osmux_hdr)); + + osmuxh = (struct osmux_hdr *)msg->data; + osmuxh->amr_q = 0; + osmuxh->amr_f = 0; + osmuxh->rtp_m = 0; + osmuxh->ctr = batch_factor - 1; + osmuxh->ft = 1; + osmuxh->seq = osmux_next_seq; + osmuxh->circuit_id = cid; + osmuxh->amr_ft = AMR_FT_2; /* 5.90 */ + osmuxh->amr_cmr = 0; + msgb_put(msg, osmo_amr_bytes(osmuxh->amr_ft)*batch_factor); + return msg; +} + +static struct msgb *osmux_next(void) +{ + osmux_next_seq++; + return osmux_new(0, osmux_next_seq, BATCH_FACTOR); +} + +static void sigalarm_handler(int foo) +{ + printf("FAIL: test did not run successfully\n"); + exit(EXIT_FAILURE); +} + + +static void clock_debug(char* str) +{ + struct timespec ts; + struct timeval tv; + osmo_clock_gettime(CLOCK_MONOTONIC, &ts); + osmo_gettimeofday(&tv, NULL); + printf("sys={%lu.%06lu}, mono={%lu.%06lu}: %s\n", + tv.tv_sec, tv.tv_usec, ts.tv_sec, ts.tv_nsec/1000, str); +} + +static void clock_override_enable(bool enable) +{ + osmo_gettimeofday_override = enable; + osmo_clock_override_enable(CLOCK_MONOTONIC, enable); +} + +static void clock_override_set(long sec, long usec) +{ + struct timespec *mono; + osmo_gettimeofday_override_time.tv_sec = sec; + osmo_gettimeofday_override_time.tv_usec = usec; + mono = osmo_clock_override_gettimespec(CLOCK_MONOTONIC); + mono->tv_sec = sec; + mono->tv_nsec = usec*1000; + + clock_debug("clock_override_set"); +} + +static void clock_override_add_debug(long sec, long usec, bool dbg) +{ + osmo_gettimeofday_override_add(sec, usec); + osmo_clock_override_add(CLOCK_MONOTONIC, sec, usec*1000); + if (dbg) + clock_debug("clock_override_add"); +} +#define clock_override_add(sec, usec) clock_override_add_debug(sec, usec, true) + +static void tx_cb(struct msgb *msg, void *data) +{ + struct osmux_out_handle *h_output = (struct osmux_out_handle *) data; + struct rtp_hdr *rtph; + char buf[250]; + rtph = osmo_rtp_get_hdr(msg); + snprintf(buf, sizeof(buf), "dequeue: seq=%"PRIu16" ts=%"PRIu32"%s enqueued=%u", + ntohs(rtph->sequence), ntohl(rtph->timestamp), rtph->marker ? " M" : "", + llist_count(&h_output->list)); + clock_debug(buf); + msgb_free(msg); +} + +#define PULL_NEXT(h_output) { \ + struct msgb *_msg; \ + struct osmux_hdr *_osmuxh; \ + int _rc; \ + _msg = osmux_next(); \ + _osmuxh = osmux_xfrm_output_pull(_msg); \ + OSMO_ASSERT(_osmuxh); \ + _rc = osmux_xfrm_output_sched((h_output), _osmuxh); \ + OSMO_ASSERT(_rc == _osmuxh->ctr+1); \ + } + +static void test_output_consecutive(void) +{ + struct osmux_out_handle h_output; + + printf("===test_output_consecutive===\n"); + + clock_override_enable(true); + clock_override_set(0, 0); + osmux_init(32); + osmux_xfrm_output_init(&h_output, 0x7000000); + h_output.rtp_seq = (uint16_t)50; + h_output.rtp_timestamp = (uint32_t)500; + osmux_xfrm_output_set_tx_cb(&h_output, tx_cb, &h_output); + + /* First osmux frame at t=0 */ + PULL_NEXT(&h_output); + clock_debug("first dequed before first select"); + osmo_select_main(0); + + clock_override_add(0, TIME_RTP_PKT_MS*1000); + clock_debug("second select, second dequed"); + osmo_select_main(0); + + clock_override_add(0, TIME_RTP_PKT_MS*1000); + clock_debug("third select, third dequed"); + osmo_select_main(0); + + clock_override_add(0, TIME_RTP_PKT_MS*1000); + clock_debug("fourth select, fourth dequed"); + osmo_select_main(0); + + clock_override_add(0, TIME_RTP_PKT_MS*1000); + clock_debug("fifth select, fifth dequed"); + osmo_select_main(0); + + clock_override_add(0, TIME_RTP_PKT_MS*1000); + clock_debug("sixth select, sixth dequed"); + osmo_select_main(0); + OSMO_ASSERT(llist_empty(&h_output.list)); + + /* Second osmux frame at t=80 */ + clock_debug("send second osmux frame"); + PULL_NEXT(&h_output); + clock_debug("first dequed before first select"); + osmo_select_main(0); + + clock_override_add(0, TIME_RTP_PKT_MS*1000); + clock_debug("second select, second dequed"); + osmo_select_main(0); + + clock_override_add(0, 4*TIME_RTP_PKT_MS*1000); + clock_debug("third select, four packet should be dequeued"); + osmo_select_main(0); + OSMO_ASSERT(llist_empty(&h_output.list)); +} + +static void test_output_interleaved(void) +{ + struct osmux_out_handle h_output; + + printf("===test_output_interleaved===\n"); + + clock_override_enable(true); + clock_override_set(0, 0); + osmux_init(32); + osmux_xfrm_output_init(&h_output, 0x7000000); + h_output.rtp_seq = (uint16_t)50; + h_output.rtp_timestamp = (uint32_t)500; + osmux_xfrm_output_set_tx_cb(&h_output, tx_cb, &h_output); + + /* First osmux frame at t=0, but it actually arrives late due to jitter, + so 2nd frame is going to arrive before the 1st one is completelly + scheduled */ + PULL_NEXT(&h_output); + + clock_override_add(0, 2*TIME_RTP_PKT_MS*1000); + clock_debug("select, 3 dequed, 3 still queued"); + osmo_select_main(0); + + /* Second osmux frame at t=0 */ + clock_debug("next frame arrives, 3 pending rtp packets are dequeued and first of new osmux frame too"); + PULL_NEXT(&h_output); + osmo_select_main(0); + OSMO_ASSERT(llist_count(&h_output.list) == 5); + + clock_override_add(0, 5*TIME_RTP_PKT_MS*1000); + clock_debug("calling select, then all should be out"); + osmo_select_main(0); + OSMO_ASSERT(llist_empty(&h_output.list)); +} + +static void test_output_2together(void) +{ + struct osmux_out_handle h_output; + + printf("===test_output_2together===\n"); + + clock_override_enable(true); + clock_override_set(0, 0); + osmux_init(32); + osmux_xfrm_output_init(&h_output, 0x7000000); + h_output.rtp_seq = (uint16_t)50; + h_output.rtp_timestamp = (uint32_t)500; + osmux_xfrm_output_set_tx_cb(&h_output, tx_cb, &h_output); + + /* First osmux frame at t=0, but it actually arrives late due to jitter, + so we receive both at the same time. */ + PULL_NEXT(&h_output); + clock_debug("calling select in between 2 osmux recv"); + osmo_select_main(0); + PULL_NEXT(&h_output); + + clock_debug("calling select after receiving 2nd osmux. Dequeue 1st osmux frame and 1st rtp from 2nd osmux frame."); + osmo_select_main(0); + OSMO_ASSERT(llist_count(&h_output.list) == 5); + + clock_override_add(0, 5*TIME_RTP_PKT_MS*1000); + clock_debug("select, all 5 remaining should be out"); + osmo_select_main(0); +} + +/* FIXME: this test shows generated rtp stream doesn't have osmux lost frames into account! */ +static void test_output_frame_lost(void) +{ + struct osmux_out_handle h_output; + + printf("===test_output_frame_lost===\n"); + + clock_override_enable(true); + clock_override_set(0, 0); + osmux_init(32); + osmux_xfrm_output_init(&h_output, 0x7000000); + h_output.rtp_seq = (uint16_t)50; + h_output.rtp_timestamp = (uint32_t)500; + osmux_xfrm_output_set_tx_cb(&h_output, tx_cb, &h_output); + + clock_debug("first osmux frame"); + PULL_NEXT(&h_output); + clock_override_add(0, 5*TIME_RTP_PKT_MS*1000); + osmo_select_main(0); + + clock_debug("one osmux frame is now lost (seq++)"); + osmux_next(); + clock_override_add(0, 6*TIME_RTP_PKT_MS*1000); + + clock_debug("3rd osmux frame arrives"); + PULL_NEXT(&h_output); + clock_override_add(0, 5*TIME_RTP_PKT_MS*1000); + osmo_select_main(0); +} + +int main(int argc, char **argv) +{ + + if (signal(SIGALRM, sigalarm_handler) == SIG_ERR) { + perror("signal"); + exit(EXIT_FAILURE); + } + + void *tall_ctx = talloc_named_const(NULL, 1, "Root context"); + msgb_talloc_ctx_init(tall_ctx, 0); + osmo_init_logging2(tall_ctx, &log_info); + log_set_print_filename(osmo_stderr_target, 0); + log_set_log_level(osmo_stderr_target, LOGL_DEBUG); + log_set_category_filter(osmo_stderr_target, DLMUX, 1, LOGL_DEBUG); + + alarm(10); + + test_output_consecutive(); + test_output_interleaved(); + test_output_2together(); + test_output_frame_lost(); + + fprintf(stdout, "OK: Test passed\n"); + return EXIT_SUCCESS; +} diff --git a/tests/osmux/osmux_test2.ok b/tests/osmux/osmux_test2.ok new file mode 100644 index 0000000..018ecaf --- /dev/null +++ b/tests/osmux/osmux_test2.ok @@ -0,0 +1,89 @@ +===test_output_consecutive=== +sys={0.000000}, mono={0.000000}: clock_override_set +sys={0.000000}, mono={0.000000}: dequeue: seq=50 ts=500 enqueued=5 +sys={0.000000}, mono={0.000000}: first dequed before first select +sys={0.020000}, mono={0.020000}: clock_override_add +sys={0.020000}, mono={0.020000}: second select, second dequed +sys={0.020000}, mono={0.020000}: dequeue: seq=51 ts=660 enqueued=4 +sys={0.040000}, mono={0.040000}: clock_override_add +sys={0.040000}, mono={0.040000}: third select, third dequed +sys={0.040000}, mono={0.040000}: dequeue: seq=52 ts=820 enqueued=3 +sys={0.060000}, mono={0.060000}: clock_override_add +sys={0.060000}, mono={0.060000}: fourth select, fourth dequed +sys={0.060000}, mono={0.060000}: dequeue: seq=53 ts=980 enqueued=2 +sys={0.080000}, mono={0.080000}: clock_override_add +sys={0.080000}, mono={0.080000}: fifth select, fifth dequed +sys={0.080000}, mono={0.080000}: dequeue: seq=54 ts=1140 enqueued=1 +sys={0.100000}, mono={0.100000}: clock_override_add +sys={0.100000}, mono={0.100000}: sixth select, sixth dequed +sys={0.100000}, mono={0.100000}: dequeue: seq=55 ts=1300 enqueued=0 +sys={0.100000}, mono={0.100000}: send second osmux frame +sys={0.100000}, mono={0.100000}: dequeue: seq=56 ts=1460 enqueued=5 +sys={0.100000}, mono={0.100000}: first dequed before first select +sys={0.120000}, mono={0.120000}: clock_override_add +sys={0.120000}, mono={0.120000}: second select, second dequed +sys={0.120000}, mono={0.120000}: dequeue: seq=57 ts=1620 enqueued=4 +sys={0.200000}, mono={0.200000}: clock_override_add +sys={0.200000}, mono={0.200000}: third select, four packet should be dequeued +sys={0.200000}, mono={0.200000}: dequeue: seq=58 ts=1780 enqueued=3 +sys={0.200000}, mono={0.200000}: dequeue: seq=59 ts=1940 enqueued=2 +sys={0.200000}, mono={0.200000}: dequeue: seq=60 ts=2100 enqueued=1 +sys={0.200000}, mono={0.200000}: dequeue: seq=61 ts=2260 enqueued=0 +===test_output_interleaved=== +sys={0.000000}, mono={0.000000}: clock_override_set +sys={0.000000}, mono={0.000000}: dequeue: seq=50 ts=500 enqueued=5 +sys={0.040000}, mono={0.040000}: clock_override_add +sys={0.040000}, mono={0.040000}: select, 3 dequed, 3 still queued +sys={0.040000}, mono={0.040000}: dequeue: seq=51 ts=660 enqueued=4 +sys={0.040000}, mono={0.040000}: dequeue: seq=52 ts=820 enqueued=3 +sys={0.040000}, mono={0.040000}: next frame arrives, 3 pending rtp packets are dequeued and first of new osmux frame too +sys={0.040000}, mono={0.040000}: dequeue: seq=53 ts=980 enqueued=8 +sys={0.040000}, mono={0.040000}: dequeue: seq=54 ts=1140 enqueued=7 +sys={0.040000}, mono={0.040000}: dequeue: seq=55 ts=1300 enqueued=6 +sys={0.040000}, mono={0.040000}: dequeue: seq=56 ts=1460 enqueued=5 +sys={0.140000}, mono={0.140000}: clock_override_add +sys={0.140000}, mono={0.140000}: calling select, then all should be out +sys={0.140000}, mono={0.140000}: dequeue: seq=57 ts=1620 enqueued=4 +sys={0.140000}, mono={0.140000}: dequeue: seq=58 ts=1780 enqueued=3 +sys={0.140000}, mono={0.140000}: dequeue: seq=59 ts=1940 enqueued=2 +sys={0.140000}, mono={0.140000}: dequeue: seq=60 ts=2100 enqueued=1 +sys={0.140000}, mono={0.140000}: dequeue: seq=61 ts=2260 enqueued=0 +===test_output_2together=== +sys={0.000000}, mono={0.000000}: clock_override_set +sys={0.000000}, mono={0.000000}: dequeue: seq=50 ts=500 enqueued=5 +sys={0.000000}, mono={0.000000}: calling select in between 2 osmux recv +sys={0.000000}, mono={0.000000}: calling select after receiving 2nd osmux. Dequeue 1st osmux frame and 1st rtp from 2nd osmux frame. +sys={0.000000}, mono={0.000000}: dequeue: seq=51 ts=660 enqueued=10 +sys={0.000000}, mono={0.000000}: dequeue: seq=52 ts=820 enqueued=9 +sys={0.000000}, mono={0.000000}: dequeue: seq=53 ts=980 enqueued=8 +sys={0.000000}, mono={0.000000}: dequeue: seq=54 ts=1140 enqueued=7 +sys={0.000000}, mono={0.000000}: dequeue: seq=55 ts=1300 enqueued=6 +sys={0.000000}, mono={0.000000}: dequeue: seq=56 ts=1460 enqueued=5 +sys={0.100000}, mono={0.100000}: clock_override_add +sys={0.100000}, mono={0.100000}: select, all 5 remaining should be out +sys={0.100000}, mono={0.100000}: dequeue: seq=57 ts=1620 enqueued=4 +sys={0.100000}, mono={0.100000}: dequeue: seq=58 ts=1780 enqueued=3 +sys={0.100000}, mono={0.100000}: dequeue: seq=59 ts=1940 enqueued=2 +sys={0.100000}, mono={0.100000}: dequeue: seq=60 ts=2100 enqueued=1 +sys={0.100000}, mono={0.100000}: dequeue: seq=61 ts=2260 enqueued=0 +===test_output_frame_lost=== +sys={0.000000}, mono={0.000000}: clock_override_set +sys={0.000000}, mono={0.000000}: first osmux frame +sys={0.000000}, mono={0.000000}: dequeue: seq=50 ts=500 enqueued=5 +sys={0.100000}, mono={0.100000}: clock_override_add +sys={0.100000}, mono={0.100000}: dequeue: seq=51 ts=660 enqueued=4 +sys={0.100000}, mono={0.100000}: dequeue: seq=52 ts=820 enqueued=3 +sys={0.100000}, mono={0.100000}: dequeue: seq=53 ts=980 enqueued=2 +sys={0.100000}, mono={0.100000}: dequeue: seq=54 ts=1140 enqueued=1 +sys={0.100000}, mono={0.100000}: dequeue: seq=55 ts=1300 enqueued=0 +sys={0.100000}, mono={0.100000}: one osmux frame is now lost (seq++) +sys={0.220000}, mono={0.220000}: clock_override_add +sys={0.220000}, mono={0.220000}: 3rd osmux frame arrives +sys={0.220000}, mono={0.220000}: dequeue: seq=56 ts=1460 enqueued=5 +sys={0.320000}, mono={0.320000}: clock_override_add +sys={0.320000}, mono={0.320000}: dequeue: seq=57 ts=1620 enqueued=4 +sys={0.320000}, mono={0.320000}: dequeue: seq=58 ts=1780 enqueued=3 +sys={0.320000}, mono={0.320000}: dequeue: seq=59 ts=1940 enqueued=2 +sys={0.320000}, mono={0.320000}: dequeue: seq=60 ts=2100 enqueued=1 +sys={0.320000}, mono={0.320000}: dequeue: seq=61 ts=2260 enqueued=0 +OK: Test passed diff --git a/tests/testsuite.at b/tests/testsuite.at index 81d40ba..67b91c6 100644 --- a/tests/testsuite.at +++ b/tests/testsuite.at @@ -7,6 +7,12 @@ AT_CHECK([$abs_top_builddir/tests/osmux/osmux_test], [0], [expout], [ignore]) AT_CLEANUP +AT_SETUP([osmux_test2]) +AT_KEYWORDS([osmux_test2]) +cat $abs_srcdir/osmux/osmux_test2.ok > expout +AT_CHECK([$abs_top_builddir/tests/osmux/osmux_test2], [0], [expout], [ignore]) +AT_CLEANUP + AT_SETUP([jibuf_test]) AT_KEYWORDS([jibuf_test]) cat $abs_srcdir/jibuf/jibuf_test.ok > expout -- To view, visit https://gerrit.osmocom.org/7870 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newpatchset Gerrit-Change-Id: I3bf59276424ea87c4e66a6ff46de1e3e9a06a904 Gerrit-PatchSet: 2 Gerrit-Project: libosmo-netif Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Jenkins Builder From gerrit-no-reply at lists.osmocom.org Wed Apr 18 17:59:05 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Wed, 18 Apr 2018 17:59:05 +0000 Subject: [PATCH] libosmocore[master]: osmo_sockaddr_is_local: Fix memleak Message-ID: Review at https://gerrit.osmocom.org/7872 osmo_sockaddr_is_local: Fix memleak Catched by AddressSanitizer in osmo-bts-trx while running tests in osmo-gsm-tester: ==31738==ERROR: LeakSanitizer: detected memory leaks Direct leak of 5744 byte(s) in 1 object(s) allocated from: #0 0x7ff7ec789ed0 in calloc (/usr/lib/x86_64-linux-gnu/libasan.so.3+0xc1ed0) #1 0x7ff7e952697c (/lib/x86_64-linux-gnu/libc.so.6+0x10297c) #2 0x7ff7e95274df in getifaddrs (/lib/x86_64-linux-gnu/libc.so.6+0x1034df) #3 0x7ff7eadcdc8f in osmo_sockaddr_is_local libosmocore/src/socket.c:537 Change-Id: I778d3c1f162abce0595e62670c29c5134bccd28d --- M src/socket.c 1 file changed, 4 insertions(+), 1 deletion(-) git pull ssh://gerrit.osmocom.org:29418/libosmocore refs/changes/72/7872/1 diff --git a/src/socket.c b/src/socket.c index d96f664..cd73f17 100644 --- a/src/socket.c +++ b/src/socket.c @@ -543,10 +543,13 @@ for (ifa = ifaddr; ifa != NULL; ifa = ifa->ifa_next) { if (!ifa->ifa_addr) continue; - if (sockaddr_equal(ifa->ifa_addr, addr, addrlen)) + if (sockaddr_equal(ifa->ifa_addr, addr, addrlen)) { + freeifaddrs(ifaddr); return 1; + } } + freeifaddrs(ifaddr); return 0; } -- To view, visit https://gerrit.osmocom.org/7872 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I778d3c1f162abce0595e62670c29c5134bccd28d Gerrit-PatchSet: 1 Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol From admin at opensuse.org Wed Apr 18 19:58:22 2018 From: admin at opensuse.org (OBS Notification) Date: Wed, 18 Apr 2018 19:58:22 +0000 Subject: Build failure of network:osmocom:nightly/osmo-mgw in xUbuntu_16.04/i586 In-Reply-To: References: Message-ID: <5ad7a36bb882b_658a10d068c148785@build.opensuse.org> Visit https://build.opensuse.org/package/live_build_log/network:osmocom:nightly/osmo-mgw/xUbuntu_16.04/i586 Package network:osmocom:nightly/osmo-mgw failed to build in xUbuntu_16.04/i586 Check out the package for editing: osc checkout network:osmocom:nightly osmo-mgw Last lines of build log: [ 123s] | #define HAVE_SYS_TYPES_H 1 [ 123s] | #define HAVE_SYS_STAT_H 1 [ 123s] | #define HAVE_STDLIB_H 1 [ 123s] | #define HAVE_STRING_H 1 [ 123s] | #define HAVE_MEMORY_H 1 [ 123s] | #define HAVE_STRINGS_H 1 [ 123s] | #define HAVE_INTTYPES_H 1 [ 123s] | #define HAVE_STDINT_H 1 [ 123s] | #define HAVE_UNISTD_H 1 [ 123s] | #define HAVE_DLFCN_H 1 [ 123s] | #define LT_OBJDIR ".libs/" [ 123s] | [ 123s] | configure: exit 0 [ 123s] [ 123s] debian/rules:30: recipe for target 'override_dh_auto_test' failed [ 123s] make[1]: *** [override_dh_auto_test] Error 1 [ 123s] make[1]: Leaving directory '/usr/src/packages/BUILD' [ 123s] debian/rules:17: recipe for target 'build' failed [ 123s] make: *** [build] Error 2 [ 123s] dpkg-buildpackage: error: debian/rules build gave error exit status 2 [ 123s] [ 123s] cloud115 failed "build osmo-mgw_1.2.0.20180418.dsc" at Wed Apr 18 19:58:01 UTC 2018. [ 123s] [ 123s] ### VM INTERACTION START ### [ 125s] [ 109.753418] reboot: Power down [ 126s] ### VM INTERACTION END ### [ 126s] [ 126s] cloud115 failed "build osmo-mgw_1.2.0.20180418.dsc" at Wed Apr 18 19:58:06 UTC 2018. [ 126s] -- Configure notifications at https://build.opensuse.org/user/notifications openSUSE Build Service (https://build.opensuse.org/) From admin at opensuse.org Wed Apr 18 19:59:30 2018 From: admin at opensuse.org (OBS Notification) Date: Wed, 18 Apr 2018 19:59:30 +0000 Subject: Build failure of network:osmocom:nightly/osmo-mgw in Debian_9.0/i586 In-Reply-To: References: Message-ID: <5ad7a3a76070f_658a10d068c14888e@build.opensuse.org> Visit https://build.opensuse.org/package/live_build_log/network:osmocom:nightly/osmo-mgw/Debian_9.0/i586 Package network:osmocom:nightly/osmo-mgw failed to build in Debian_9.0/i586 Check out the package for editing: osc checkout network:osmocom:nightly osmo-mgw Last lines of build log: [ 90s] | #define HAVE_SYS_TYPES_H 1 [ 90s] | #define HAVE_SYS_STAT_H 1 [ 90s] | #define HAVE_STDLIB_H 1 [ 90s] | #define HAVE_STRING_H 1 [ 90s] | #define HAVE_MEMORY_H 1 [ 90s] | #define HAVE_STRINGS_H 1 [ 90s] | #define HAVE_INTTYPES_H 1 [ 90s] | #define HAVE_STDINT_H 1 [ 90s] | #define HAVE_UNISTD_H 1 [ 90s] | #define HAVE_DLFCN_H 1 [ 90s] | #define LT_OBJDIR ".libs/" [ 90s] | [ 90s] | configure: exit 0 [ 90s] [ 90s] debian/rules:30: recipe for target 'override_dh_auto_test' failed [ 90s] make[1]: *** [override_dh_auto_test] Error 1 [ 90s] make[1]: Leaving directory '/usr/src/packages/BUILD' [ 90s] debian/rules:17: recipe for target 'build' failed [ 90s] make: *** [build] Error 2 [ 90s] dpkg-buildpackage: error: debian/rules build gave error exit status 2 [ 90s] [ 90s] lamb16 failed "build osmo-mgw_1.2.0.20180418.dsc" at Wed Apr 18 19:59:20 UTC 2018. [ 90s] [ 90s] ### VM INTERACTION START ### [ 92s] [ 84.027828] reboot: Power down [ 92s] ### VM INTERACTION END ### [ 92s] [ 92s] lamb16 failed "build osmo-mgw_1.2.0.20180418.dsc" at Wed Apr 18 19:59:23 UTC 2018. [ 92s] -- Configure notifications at https://build.opensuse.org/user/notifications openSUSE Build Service (https://build.opensuse.org/) From admin at opensuse.org Wed Apr 18 20:00:04 2018 From: admin at opensuse.org (OBS Notification) Date: Wed, 18 Apr 2018 20:00:04 +0000 Subject: Build failure of network:osmocom:nightly/osmo-mgw in xUbuntu_17.04/i586 In-Reply-To: References: Message-ID: <5ad7a3e1ea57f_658a10d068c1489ab@build.opensuse.org> Visit https://build.opensuse.org/package/live_build_log/network:osmocom:nightly/osmo-mgw/xUbuntu_17.04/i586 Package network:osmocom:nightly/osmo-mgw failed to build in xUbuntu_17.04/i586 Check out the package for editing: osc checkout network:osmocom:nightly osmo-mgw Last lines of build log: [ 127s] Stats: Jitter = 24, Transit = -32888 [ 127s] In TS: 36728, dTS: 160, Seq: 24 [ 127s] Out TS change: 160, dTS: 160, Seq change: 1, TS Err change: in +0, out +0 [ 127s] 4. testsuite.at:24: 4. mgcp (testsuite.at:24): FAILED (testsuite.at:27) [ 127s] debian/rules:30: recipe for targe[ 110.948178] serial8250: too much work for irq4 [ 127s] [ 111.070521] serial8250: too much work for irq4 [ 127s] t 'override_dh_a[ 111.180188] serial8250: too much work for irq4 [ 127s] [ 111.300140] serial8250: too much work for irq4 [ 127s] uto_test' failed[ 111.420141] serial8250: too much work for irq4 [ 127s] [ 111.536130] serial8250: too much work for irq4 [ 127s] [ 127s] make[1]: *** [[ 111.648139] serial8250: too much work for irq4 [ 127s] [ 111.768201] serial8250: too much work for irq4 [ 127s] override_dh_auto[ 111.888175] serial8250: too much work for irq4 [ 127s] [ 112.004167] serial8250: too much work for irq4 [ 127s] _test] Error 1 [ 127s] make[1]: Leaving directory '/usr/src/packages/BUILD' [ 127s] debian/rules:17: recipe for target 'build' failed [ 127s] make: *** [build] Error 2 [ 127s] dpkg-buildpackage: error: debian/rules build gave error exit status 2 [ 127s] [ 127s] cloud126 failed "build osmo-mgw_1.2.0.20180418.dsc" at Wed Apr 18 19:59:53 UTC 2018. [ 127s] [ 127s] ### VM INTERACTION START ### [ 130s] [ 114.710389] reboot: Power down [ 131s] ### VM INTERACTION END ### [ 131s] [ 131s] cloud126 failed "build osmo-mgw_1.2.0.20180418.dsc" at Wed Apr 18 19:59:57 UTC 2018. [ 131s] -- Configure notifications at https://build.opensuse.org/user/notifications openSUSE Build Service (https://build.opensuse.org/) From admin at opensuse.org Wed Apr 18 20:02:39 2018 From: admin at opensuse.org (OBS Notification) Date: Wed, 18 Apr 2018 20:02:39 +0000 Subject: Build failure of network:osmocom:nightly/osmo-mgw in xUbuntu_16.10/i586 In-Reply-To: References: Message-ID: <5ad7a4757c671_658a10d068c1493b3@build.opensuse.org> Visit https://build.opensuse.org/package/live_build_log/network:osmocom:nightly/osmo-mgw/xUbuntu_16.10/i586 Package network:osmocom:nightly/osmo-mgw failed to build in xUbuntu_16.10/i586 Check out the package for editing: osc checkout network:osmocom:nightly osmo-mgw Last lines of build log: [ 119s] | #define HAVE_SYS_TYPES_H 1 [ 119s] | #define HAVE_SYS_STAT_H 1 [ 119s] | #define HAVE_STDLIB_H 1 [ 119s] | #define HAVE_STRING_H 1 [ 119s] | #define HAVE_MEMORY_H 1 [ 119s] | #define HAVE_STRINGS_H 1 [ 119s] | #define HAVE_INTTYPES_H 1 [ 119s] | #define HAVE_STDINT_H 1 [ 119s] | #define HAVE_UNISTD_H 1 [ 119s] | #define HAVE_DLFCN_H 1 [ 119s] | #define LT_OBJDIR ".libs/" [ 119s] | [ 119s] | configure: exit 0 [ 119s] [ 119s] debian/rules:30: recipe for target 'override_dh_auto_test' failed [ 119s] make[1]: *** [override_dh_auto_test] Error 1 [ 119s] make[1]: Leaving directory '/usr/src/packages/BUILD' [ 119s] debian/rules:17: recipe for target 'build' failed [ 119s] make: *** [build] Error 2 [ 119s] dpkg-buildpackage: error: debian/rules build gave error exit status 2 [ 119s] [ 119s] build33 failed "build osmo-mgw_1.2.0.20180418.dsc" at Wed Apr 18 20:02:25 UTC 2018. [ 119s] [ 119s] ### VM INTERACTION START ### [ 122s] [ 110.991345] reboot: Power down [ 123s] ### VM INTERACTION END ### [ 123s] [ 123s] build33 failed "build osmo-mgw_1.2.0.20180418.dsc" at Wed Apr 18 20:02:29 UTC 2018. [ 123s] -- Configure notifications at https://build.opensuse.org/user/notifications openSUSE Build Service (https://build.opensuse.org/) From admin at opensuse.org Wed Apr 18 20:04:22 2018 From: admin at opensuse.org (OBS Notification) Date: Wed, 18 Apr 2018 20:04:22 +0000 Subject: Build failure of network:osmocom:nightly/osmo-mgw in Debian_8.0/i586 In-Reply-To: References: Message-ID: <5ad7a4d56a279_658a10d068c150825@build.opensuse.org> Visit https://build.opensuse.org/package/live_build_log/network:osmocom:nightly/osmo-mgw/Debian_8.0/i586 Package network:osmocom:nightly/osmo-mgw failed to build in Debian_8.0/i586 Check out the package for editing: osc checkout network:osmocom:nightly osmo-mgw Last lines of build log: [ 86s] | #define HAVE_SYS_STAT_H 1 [ 86s] | #define HAVE_STDLIB_H 1 [ 86s] | #define HAVE_STRING_H 1 [ 86s] | #define HAVE_MEMORY_H 1 [ 86s] | #define HAVE_STRINGS_H 1 [ 86s] | #define HAVE_INTTYPES_H 1 [ 86s] | #define HAVE_STDINT_H 1 [ 86s] | #define HAVE_UNISTD_H 1 [ 86s] | #define HAVE_DLFCN_H 1 [ 86s] | #define LT_OBJDIR ".libs/" [ 86s] | [ 86s] | configure: exit 0 [ 86s] [ 86s] debian/rules:30: recipe for target 'override_dh_auto_test' failed [ 86s] make[1]: *** [override_dh_auto_test] Error 1 [ 86s] make[1]: Leaving directory '/usr/src/packages/BUILD' [ 86s] debian/rules:17: recipe for target 'build' failed [ 86s] make: *** [build] Error 2 [ 86s] dpkg-buildpackage: error: debian/rules build gave error exit status 2 [ 86s] [ 86s] lamb54 failed "build osmo-mgw_1.2.0.20180418.dsc" at Wed Apr 18 20:04:04 UTC 2018. [ 86s] [ 86s] ### VM INTERACTION START ### [ 87s] Powering off. [ 87s] [ 80.360516] reboot: Power down [ 87s] ### VM INTERACTION END ### [ 87s] [ 87s] lamb54 failed "build osmo-mgw_1.2.0.20180418.dsc" at Wed Apr 18 20:04:06 UTC 2018. [ 87s] -- Configure notifications at https://build.opensuse.org/user/notifications openSUSE Build Service (https://build.opensuse.org/) From admin at opensuse.org Wed Apr 18 20:44:56 2018 From: admin at opensuse.org (OBS Notification) Date: Wed, 18 Apr 2018 20:44:56 +0000 Subject: Build failure of network:osmocom:nightly/osmo-mgw in Debian_9.0/armv7l In-Reply-To: References: Message-ID: <5ad7ae521cafc_658a10d068c15678c@build.opensuse.org> Visit https://build.opensuse.org/package/live_build_log/network:osmocom:nightly/osmo-mgw/Debian_9.0/armv7l Package network:osmocom:nightly/osmo-mgw failed to build in Debian_9.0/armv7l Check out the package for editing: osc checkout network:osmocom:nightly osmo-mgw Last lines of build log: [ 206s] | #define HAVE_SYS_STAT_H 1 [ 206s] | #define HAVE_STDLIB_H 1 [ 206s] | #define HAVE_STRING_H 1 [ 206s] | #define HAVE_MEMORY_H 1 [ 206s] | #define HAVE_STRINGS_H 1 [ 206s] | #define HAVE_INTTYPES_H 1 [ 206s] | #define HAVE_STDINT_H 1 [ 206s] | #define HAVE_UNISTD_H 1 [ 206s] | #define HAVE_DLFCN_H 1 [ 206s] | #define LT_OBJDIR ".libs/" [ 206s] | [ 206s] | configure: exit 0 [ 206s] [ 206s] debian/rules:30: recipe for target 'override_dh_auto_test' failed [ 206s] make[1]: *** [override_dh_auto_test] Error 1 [ 206s] make[1]: Leaving directory '/usr/src/packages/BUILD' [ 206s] debian/rules:17: recipe for target 'build' failed [ 206s] make: *** [build] Error 2 [ 206s] dpkg-buildpackage: error: debian/rules build gave error exit status 2 [ 206s] [ 206s] armbuild02 failed "build osmo-mgw_1.2.0.20180418.dsc" at Wed Apr 18 20:44:43 UTC 2018. [ 206s] [ 206s] ### VM INTERACTION START ### [ 209s] [ 163.020620] SysRq : Power Off [ 209s] [ 163.042493] reboot: Power down [ 209s] ### VM INTERACTION END ### [ 209s] [ 209s] armbuild02 failed "build osmo-mgw_1.2.0.20180418.dsc" at Wed Apr 18 20:44:46 UTC 2018. [ 209s] -- Configure notifications at https://build.opensuse.org/user/notifications openSUSE Build Service (https://build.opensuse.org/) From gerrit-no-reply at lists.osmocom.org Wed Apr 18 21:23:46 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Wed, 18 Apr 2018 21:23:46 +0000 Subject: [PATCH] osmo-ttcn3-hacks[master]: RSL: Introduce template (value) annotations Message-ID: Review at https://gerrit.osmocom.org/7873 RSL: Introduce template (value) annotations Change-Id: I18828ccbc7d28dd190e745f020c724acdb0cdc8b --- M library/RSL_Types.ttcn 1 file changed, 189 insertions(+), 109 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-ttcn3-hacks refs/changes/73/7873/1 diff --git a/library/RSL_Types.ttcn b/library/RSL_Types.ttcn index 104a1a8..246ea3f 100644 --- a/library/RSL_Types.ttcn +++ b/library/RSL_Types.ttcn @@ -32,10 +32,15 @@ boolean transparent } with { variant "FIELDORDER(msb)" }; - template RSL_MessageDiscriminator ts_RSL_MsgDisc(RSL_MessageGroup mg, boolean t := true) := { + template (value) RSL_MessageDiscriminator ts_RSL_MsgDisc(RSL_MessageGroup mg, boolean t := true) := { msg_group := mg, transparent := t } + template RSL_MessageDiscriminator tr_RSL_MsgDisc(template RSL_MessageGroup mg, boolean t := true) := { + msg_group := mg, + transparent := t + } + /* Section 9.2 */ type enumerated RSL_MessageType { @@ -235,7 +240,7 @@ octetstring payload } with { variant (len) "LENGTHTO(payload)" } - template RSL_LV ts_RSL_LV(template octetstring pl) := { + template (value) RSL_LV ts_RSL_LV(template (value) octetstring pl) := { len := 0, payload := pl } @@ -250,7 +255,7 @@ octetstring payload } with { variant (len) "LENGTHTO(payload)" } - template RSL_L16V ts_RSL_L16V(template octetstring pl) := { + template (value) RSL_L16V ts_RSL_L16V(template (value) octetstring pl) := { len := 0, payload := pl } @@ -320,7 +325,7 @@ RSL_SpeechAlgo coding_alg_rate } with { variant (len) "LENGTHTO(reserved,dtx_d,dtx_u,spd_ind,ch_rate_type,coding_alg_rate)" } - template RSL_IE_ChannelMode ts_RSL_ChanMode_SIGN := { + template (value) RSL_IE_ChannelMode ts_RSL_ChanMode_SIGN := { len := 0, /* overwritten */ reserved := '000000'B, dtx_d := false, @@ -330,7 +335,7 @@ coding_alg_rate := RSL_CMOD_NO_RESOURCE } - template RSL_IE_ChannelMode ts_RSL_ChanMode(RSL_ChanRateType t, RSL_SpeechAlgo alg) := { + template (value) RSL_IE_ChannelMode ts_RSL_ChanMode(RSL_ChanRateType t, RSL_SpeechAlgo alg) := { len := 0, /* overwritten */ reserved := '000000'B, dtx_d := false, @@ -370,6 +375,13 @@ alg_id := alg, key := key } + template (value) RSL_IE_EncryptionInfo ts_RSL_IE_EncrInfo(OCT1 alg, octetstring key) := { + len := 0, /* overwritten */ + alg_id := alg, + key := key + } + + /* 9.3.8 */ type record RSL_IE_FrameNumber { @@ -402,7 +414,7 @@ uint16_t access_count } with { variant (len) "LENGTHTO(slot_count,busy_count,access_count)" } - template RSL_IE_RachLoad ts_RSL_IE_RachLoad(uint16_t slot, uint16_t busy, uint16_t acc) := { + template (value) RSL_IE_RachLoad ts_RSL_IE_RachLoad(uint16_t slot, uint16_t busy, uint16_t acc) := { len := 0, /* overwritten */ slot_count := slot, busy_count := busy, @@ -439,7 +451,7 @@ } } - template RSL_IE_RequestRef ts_RSL_IE_ReqRef(OCT1 ra, GsmFrameNumber frame_nr) := { + template (value) RSL_IE_RequestRef ts_RSL_IE_ReqRef(OCT1 ra, GsmFrameNumber frame_nr) := { ra := ra, frame_nr := ts_RSL_IE_FrameNumber(frame_nr) } @@ -518,7 +530,7 @@ octetstring cause_ext optional } with { variant (len) "LENGTHTO(e,cause,cause_ext)" } - template RSL_IE_Cause ts_RSL_IE_Cause(RSL_Cause cause) := { + template (value) RSL_IE_Cause ts_RSL_IE_Cause(RSL_Cause cause) := { len := 0, /* overwritten */ e := 0, cause := cause, @@ -711,7 +723,7 @@ /* For some reason the TTCN-3 RAW codec cannot automatically figure out the IEI * that it needs to set for a given union-choice (body). So we have to explicitly * specify the IEI by the caller :( */ - template RSL_IE t_RSL_IE(RSL_IE_Type iei, template RSL_IE_Body body) := { + template (value) RSL_IE t_RSL_IE(RSL_IE_Type iei, template (value) RSL_IE_Body body) := { iei := iei, body := body } @@ -742,9 +754,9 @@ ies := * } - template RSL_Message ts_RSL_MsgDiscType(template RSL_MessageDiscriminator m_disc, - template RSL_MessageType msg_type, - template RSL_IE_List ies := omit) := { + template (value) RSL_Message ts_RSL_MsgDiscType(template (value) RSL_MessageDiscriminator m_disc, + template (value) RSL_MessageType msg_type, + template (omit) RSL_IE_List ies := omit) := { msg_disc := m_disc, msg_type := msg_type, ies := ies @@ -784,7 +796,9 @@ /* 8.3.1 BSC -> BTS */ - template RSL_Message ts_RSL_DATA_REQ(RslChannelNr chan_nr, RslLinkId link_id, octetstring l3_info) := { + template (value) RSL_Message ts_RSL_DATA_REQ(template (value) RslChannelNr chan_nr, + template (value) RslLinkId link_id, + octetstring l3_info) := { msg_disc := ts_RSL_MsgDisc(RSL_MDISC_RLL, true), msg_type := RSL_MT_DATA_REQ, ies :={ @@ -797,7 +811,7 @@ template RSL_Message tr_RSL_DATA_REQ(template RslChannelNr chan_nr :=?, template RslLinkId link_id := ?, template octetstring l3_info := ?) := { - msg_disc := ts_RSL_MsgDisc(RSL_MDISC_RLL, true), + msg_disc := tr_RSL_MsgDisc(RSL_MDISC_RLL, true), msg_type := RSL_MT_DATA_REQ, ies :={ tr_RSL_IE(RSL_IE_Body:{chan_nr := chan_nr}), @@ -808,7 +822,9 @@ /* 8.3.2 BTS -> BSC */ - template RSL_Message ts_RSL_DATA_IND(RslChannelNr chan_nr, RslLinkId link_id, octetstring l3_info) := { + template (value) RSL_Message ts_RSL_DATA_IND(template (value) RslChannelNr chan_nr, + template (value) RslLinkId link_id, + octetstring l3_info) := { msg_disc := ts_RSL_MsgDisc(RSL_MDISC_RLL, true), msg_type := RSL_MT_DATA_IND, ies :={ @@ -819,7 +835,7 @@ } template RSL_Message tr_RSL_DATA_IND(template RslChannelNr chan_nr, template RslLinkId link_id, template octetstring l3_info := ?) := { - msg_disc := ts_RSL_MsgDisc(RSL_MDISC_RLL, true), + msg_disc := tr_RSL_MsgDisc(RSL_MDISC_RLL, true), msg_type := RSL_MT_DATA_IND, ies :={ tr_RSL_IE(RSL_IE_Body:{chan_nr := chan_nr}), @@ -829,7 +845,8 @@ } /* 8.3.3 BTS -> BSC */ - template RSL_Message ts_RSL_ERROR_IND(RslChannelNr chan_nr, RslLinkId link_id, RSL_Cause cause) := { + template (value) RSL_Message ts_RSL_ERROR_IND(template (value) RslChannelNr chan_nr, + template (value) RslLinkId link_id, RSL_Cause cause) := { msg_disc := ts_RSL_MsgDisc(RSL_MDISC_RLL, false), msg_type := RSL_MT_ERROR_IND, ies :={ @@ -840,7 +857,7 @@ } template RSL_Message tr_RSL_ERROR_IND(template RslChannelNr chan_nr, template RslLinkId link_id, template RSL_Cause cause := ?) := { - msg_disc := ts_RSL_MsgDisc(RSL_MDISC_RLL, false), + msg_disc := tr_RSL_MsgDisc(RSL_MDISC_RLL, false), msg_type := RSL_MT_ERROR_IND, ies :={ tr_RSL_IE(RSL_IE_Body:{chan_nr := chan_nr}), @@ -849,8 +866,48 @@ } } + /* 8.3.4 BTS <- BSC */ + template (value) RSL_Message ts_RSL_EST_REQ(template (value) RslChannelNr chan_nr, + template (value) RslLinkId link_id) := { + msg_disc := ts_RSL_MsgDisc(RSL_MDISC_RLL, false), + msg_type := RSL_MT_EST_REQ, + ies := { + t_RSL_IE(RSL_IE_CHAN_NR, RSL_IE_Body:{chan_nr := chan_nr}), + t_RSL_IE(RSL_IE_LINK_IDENT, RSL_IE_Body:{link_id := link_id}) + } + } + template RSL_Message tr_RSL_EST_REQ(template RslChannelNr chan_nr, template RslLinkId link_id) := { + msg_disc := tr_RSL_MsgDisc(RSL_MDISC_RLL, false), + msg_type := RSL_MT_EST_REQ, + ies := { + tr_RSL_IE(RSL_IE_Body:{chan_nr := chan_nr}), + tr_RSL_IE(RSL_IE_Body:{link_id := link_id}) + } + } + + /* 8.3.5 BTS -> BSC */ + template (value) RSL_Message ts_RSL_EST_CONF(template (value) RslChannelNr chan_nr, + template (value) RslLinkId link_id) := { + msg_disc := ts_RSL_MsgDisc(RSL_MDISC_RLL, false), + msg_type := RSL_MT_EST_CONF, + ies := { + t_RSL_IE(RSL_IE_CHAN_NR, RSL_IE_Body:{chan_nr := chan_nr}), + t_RSL_IE(RSL_IE_LINK_IDENT, RSL_IE_Body:{link_id := link_id}) + } + } + template RSL_Message tr_RSL_EST_CONF(template RslChannelNr chan_nr, template RslLinkId link_id) := { + msg_disc := tr_RSL_MsgDisc(RSL_MDISC_RLL, false), + msg_type := RSL_MT_EST_CONF, + ies := { + tr_RSL_IE(RSL_IE_Body:{chan_nr := chan_nr}), + tr_RSL_IE(RSL_IE_Body:{link_id := link_id}) + } + } + /* 8.3.6 BTS -> BSC */ - template RSL_Message ts_RSL_EST_IND(RslChannelNr chan_nr, RslLinkId link_id, octetstring l3_info) := { + template (value) RSL_Message ts_RSL_EST_IND(template (value) RslChannelNr chan_nr, + template (value) RslLinkId link_id, + octetstring l3_info) := { msg_disc := ts_RSL_MsgDisc(RSL_MDISC_RLL, false), msg_type := RSL_MT_EST_IND, ies := { @@ -861,7 +918,7 @@ } template RSL_Message tr_RSL_EST_IND(template RslChannelNr chan_nr, template RslLinkId link_id, template octetstring l3_info := ?) := { - msg_disc := ts_RSL_MsgDisc(RSL_MDISC_RLL, false), + msg_disc := tr_RSL_MsgDisc(RSL_MDISC_RLL, false), msg_type := RSL_MT_EST_IND, ies := { tr_RSL_IE(RSL_IE_Body:{chan_nr := chan_nr}), @@ -871,7 +928,8 @@ } /* 8.3.7 BSC -> BTS */ - template RSL_Message ts_RSL_REL_REQ(RslChannelNr chan_nr, RslLinkId link_id) := { + template (value) RSL_Message ts_RSL_REL_REQ(template (value) RslChannelNr chan_nr, + template (value) RslLinkId link_id) := { msg_disc := ts_RSL_MsgDisc(RSL_MDISC_RLL, false), msg_type := RSL_MT_REL_REQ, ies :={ @@ -881,7 +939,7 @@ } template RSL_Message tr_RSL_REL_REQ(template RslChannelNr chan_nr, template RslLinkId link_id) := { - msg_disc := ts_RSL_MsgDisc(RSL_MDISC_RLL, false), + msg_disc := tr_RSL_MsgDisc(RSL_MDISC_RLL, false), msg_type := RSL_MT_REL_REQ, ies :={ tr_RSL_IE(RSL_IE_Body:{chan_nr := chan_nr}), @@ -891,7 +949,8 @@ } /* 8.3.8 BTS -> BSC */ - template RSL_Message ts_RSL_REL_CONF(RslChannelNr chan_nr, RslLinkId link_id) := { + template (value) RSL_Message ts_RSL_REL_CONF(template (value) RslChannelNr chan_nr, + template (value) RslLinkId link_id) := { msg_disc := ts_RSL_MsgDisc(RSL_MDISC_RLL, false), msg_type := RSL_MT_REL_CONF, ies :={ @@ -900,7 +959,7 @@ } } template RSL_Message tr_RSL_REL_CONF(template RslChannelNr chan_nr, template RslLinkId link_id) := { - msg_disc := ts_RSL_MsgDisc(RSL_MDISC_RLL, false), + msg_disc := tr_RSL_MsgDisc(RSL_MDISC_RLL, false), msg_type := RSL_MT_REL_CONF, ies :={ tr_RSL_IE(RSL_IE_Body:{chan_nr := chan_nr}), @@ -909,7 +968,8 @@ } /* 8.3.9 BTS -> BSC */ - template RSL_Message ts_RSL_REL_IND(RslChannelNr chan_nr, RslLinkId link_id) := { + template (value) RSL_Message ts_RSL_REL_IND(template (value) RslChannelNr chan_nr, + template (value) RslLinkId link_id) := { msg_disc := ts_RSL_MsgDisc(RSL_MDISC_RLL, false), msg_type := RSL_MT_REL_IND, ies :={ @@ -918,7 +978,7 @@ } } template RSL_Message tr_RSL_REL_IND(template RslChannelNr chan_nr, template RslLinkId link_id) := { - msg_disc := ts_RSL_MsgDisc(RSL_MDISC_RLL, false), + msg_disc := tr_RSL_MsgDisc(RSL_MDISC_RLL, false), msg_type := RSL_MT_REL_IND, ies :={ tr_RSL_IE(RSL_IE_Body:{chan_nr := chan_nr}), @@ -927,13 +987,17 @@ } /* 8.3.10 BSC -> BTS */ - template RSL_Message ts_RSL_UNITDATA_REQ(RslChannelNr chan_nr, RslLinkId link_id, octetstring l3_info) + template (value) RSL_Message ts_RSL_UNITDATA_REQ(template (value) RslChannelNr chan_nr, + template (value) RslLinkId link_id, + octetstring l3_info) modifies ts_RSL_DATA_REQ := { msg_type := RSL_MT_UNIT_DATA_REQ } /* 8.3.11 BTS -> BSC */ - template RSL_Message ts_RSL_UNITDATA_IND(RslChannelNr chan_nr, RslLinkId link_id, octetstring l3_info) + template (value) RSL_Message ts_RSL_UNITDATA_IND(template (value) RslChannelNr chan_nr, + template (value) RslLinkId link_id, + octetstring l3_info) modifies ts_RSL_DATA_IND := { msg_type := RSL_MT_UNIT_DATA_IND } @@ -942,7 +1006,8 @@ /* DEDICATED CANNEL MANAGEMENT MESSAGES */ /* 8.4.1 BSC -> BTS */ - template RSL_Message ts_RSL_CHAN_ACT(RslChannelNr chan_nr, RSL_IE_ChannelMode mode) := { + template (value) RSL_Message ts_RSL_CHAN_ACT(template (value) RslChannelNr chan_nr, + template (value) RSL_IE_ChannelMode mode) := { msg_disc := ts_RSL_MsgDisc(RSL_MDISC_DCHAN, false), msg_type := RSL_MT_CHAN_ACTIV, ies :={ @@ -954,7 +1019,7 @@ } template RSL_Message tr_RSL_CHAN_ACT(template RslChannelNr chan_nr, template RSL_IE_ChannelMode mode) := { - msg_disc := ts_RSL_MsgDisc(RSL_MDISC_DCHAN, false), + msg_disc := tr_RSL_MsgDisc(RSL_MDISC_DCHAN, false), msg_type := RSL_MT_CHAN_ACTIV, ies :={ tr_RSL_IE(RSL_IE_Body:{chan_nr := chan_nr}), @@ -966,7 +1031,7 @@ } template RSL_Message tr_RSL_CHAN_ACT_PDCH(template RslChannelNr chan_nr, template RSL_IE_ChannelMode mode) := { - msg_disc := ts_RSL_MsgDisc(RSL_MDISC_DCHAN, false), + msg_disc := tr_RSL_MsgDisc(RSL_MDISC_DCHAN, false), msg_type := RSL_MT_CHAN_ACTIV, ies :={ tr_RSL_IE(RSL_IE_Body:{chan_nr := chan_nr}), @@ -978,7 +1043,8 @@ /* 8.4.2 BTS -> BSC */ - template RSL_Message ts_RSL_CHAN_ACT_ACK(RslChannelNr chan_nr, GsmFrameNumber fn) := { + template (value) RSL_Message ts_RSL_CHAN_ACT_ACK(template (value) RslChannelNr chan_nr, + GsmFrameNumber fn) := { msg_disc := ts_RSL_MsgDisc(RSL_MDISC_DCHAN, false), msg_type := RSL_MT_CHAN_ACTIV_ACK, ies :={ @@ -987,7 +1053,7 @@ } } template RSL_Message tr_RSL_CHAN_ACT_ACK(template RslChannelNr chan_nr) := { - msg_disc := ts_RSL_MsgDisc(RSL_MDISC_DCHAN, false), + msg_disc := tr_RSL_MsgDisc(RSL_MDISC_DCHAN, false), msg_type := RSL_MT_CHAN_ACTIV_ACK, ies := { tr_RSL_IE(RSL_IE_Body:{chan_nr := chan_nr}), @@ -996,7 +1062,8 @@ } /* 8.4.3 BTS -> BSC */ - template RSL_Message ts_RSL_CHAN_ACT_NACK(RslChannelNr chan_nr, RSL_Cause cause) := { + template (value) RSL_Message ts_RSL_CHAN_ACT_NACK(template (value) RslChannelNr chan_nr, + RSL_Cause cause) := { msg_disc := ts_RSL_MsgDisc(RSL_MDISC_DCHAN, false), msg_type := RSL_MT_CHAN_ACTIV_NACK, ies :={ @@ -1006,7 +1073,7 @@ } template RSL_Message tr_RSL_CHAN_ACT_NACK(template RslChannelNr chan_nr, template RSL_Cause cause := ?) := { - msg_disc := ts_RSL_MsgDisc(RSL_MDISC_DCHAN, false), + msg_disc := tr_RSL_MsgDisc(RSL_MDISC_DCHAN, false), msg_type := RSL_MT_CHAN_ACTIV_NACK, ies := { tr_RSL_IE(RSL_IE_Body:{chan_nr := chan_nr}), @@ -1015,7 +1082,7 @@ } /* 8.4.4 BTS -> BSC */ - template RSL_Message ts_RSL_CONN_FAIL_IND(RslChannelNr chan_nr, RSL_Cause cause) := { + template (value) RSL_Message ts_RSL_CONN_FAIL_IND(RslChannelNr chan_nr, RSL_Cause cause) := { msg_disc := ts_RSL_MsgDisc(RSL_MDISC_DCHAN, false), msg_type := RSL_MT_CONN_FAIL, ies :={ @@ -1041,7 +1108,7 @@ tr_RSL_IE(RSL_IE_Body:{chan_nr := chan_nr}) } } - template RSL_Message ts_RSL_DEACT_SACCH(RslChannelNr chan_nr) := { + template (value) RSL_Message ts_RSL_DEACT_SACCH(template (value) RslChannelNr chan_nr) := { msg_disc := ts_RSL_MsgDisc(RSL_MDISC_DCHAN, false), msg_type := RSL_MT_DEACTIVATE_SACCH, ies := { @@ -1056,7 +1123,7 @@ template OCT1 alg := ?, template octetstring key := ?, template octetstring l3_info := ?) := { - msg_disc := ts_RSL_MsgDisc(RSL_MDISC_DCHAN, false), + msg_disc := tr_RSL_MsgDisc(RSL_MDISC_DCHAN, false), msg_type := RSL_MT_ENCR_CMD, ies := { tr_RSL_IE(RSL_IE_Body:{chan_nr := chan_nr}), @@ -1065,16 +1132,17 @@ tr_RSL_IE(RSL_IE_Body:{l3_info := tr_RSL_L16V(l3_info)}) } } - template RSL_Message ts_RSL_ENCR_CMD(RslChannelNr chan_nr, RslLinkId link_id, - OCT1 alg, octetstring key, - octetstring l3_info) := { + template (value) RSL_Message ts_RSL_ENCR_CMD(template (value) RslChannelNr chan_nr, + template (value) RslLinkId link_id, + OCT1 alg, octetstring key, + octetstring l3_info) := { msg_disc := ts_RSL_MsgDisc(RSL_MDISC_DCHAN, false), msg_type := RSL_MT_ENCR_CMD, ies := { t_RSL_IE(RSL_IE_CHAN_NR, RSL_IE_Body:{chan_nr := chan_nr}), - t_RSL_IE(RSL_IE_ENCR_INFO, RSL_IE_Body:{encr_info := tr_RSL_IE_EncrInfo(alg, key)}), + t_RSL_IE(RSL_IE_ENCR_INFO, RSL_IE_Body:{encr_info := ts_RSL_IE_EncrInfo(alg, key)}), t_RSL_IE(RSL_IE_LINK_IDENT, RSL_IE_Body:{link_id := link_id}), - t_RSL_IE(RSL_IE_L3_INFO, RSL_IE_Body:{l3_info := tr_RSL_L16V(l3_info)}) + t_RSL_IE(RSL_IE_L3_INFO, RSL_IE_Body:{l3_info := ts_RSL_L16V(l3_info)}) } } @@ -1082,7 +1150,7 @@ template uint8_t meas_res_nr := ?, template RSL_IE_UplinkMeas ul_meas := ?, template RSL_IE_BS_Power bs_power := ?) := { - msg_disc := ts_RSL_MsgDisc(RSL_MDISC_DCHAN, false), + msg_disc := tr_RSL_MsgDisc(RSL_MDISC_DCHAN, false), msg_type := RSL_MT_MEAS_RES, ies := { tr_RSL_IE(RSL_IE_Body:{chan_nr := chan_nr}), @@ -1101,7 +1169,7 @@ template RSL_IE_L1Info l1_info := ?, template octetstring l3_info := ?, template uint8_t ms_to := ?) := { - msg_disc := ts_RSL_MsgDisc(RSL_MDISC_DCHAN, false), + msg_disc := tr_RSL_MsgDisc(RSL_MDISC_DCHAN, false), msg_type := RSL_MT_MEAS_RES, ies := { tr_RSL_IE(RSL_IE_Body:{chan_nr := chan_nr}), @@ -1116,7 +1184,7 @@ /* 8.4.10 BTS -> BSC */ - template RSL_Message ts_RSL_MODE_MODIFY_ACK(RslChannelNr chan_nr) := { + template (value) RSL_Message ts_RSL_MODE_MODIFY_ACK(template (value) RslChannelNr chan_nr) := { msg_disc := ts_RSL_MsgDisc(RSL_MDISC_DCHAN, false), msg_type := RSL_MT_MODE_MODIFY_ACK, ies := { @@ -1124,7 +1192,7 @@ } } template RSL_Message tr_RSL_MODE_MODIFY_ACK(template RslChannelNr chan_nr) := { - msg_disc := ts_RSL_MsgDisc(RSL_MDISC_DCHAN, false), + msg_disc := tr_RSL_MsgDisc(RSL_MDISC_DCHAN, false), msg_type := RSL_MT_MODE_MODIFY_ACK, ies := { tr_RSL_IE(RSL_IE_Body:{chan_nr := chan_nr}) @@ -1132,7 +1200,8 @@ } /* 8.4.11 BTS -> BSC */ - template RSL_Message ts_RSL_MODE_MODIFY_NACK(RslChannelNr chan_nr, RSL_Cause cause) := { + template (value) RSL_Message ts_RSL_MODE_MODIFY_NACK(template (value) RslChannelNr chan_nr, + RSL_Cause cause) := { msg_disc := ts_RSL_MsgDisc(RSL_MDISC_DCHAN, false), msg_type := RSL_MT_MODE_MODIFY_NACK, ies := { @@ -1142,7 +1211,7 @@ } template RSL_Message tr_RSL_MODE_MODIFY_NACK(template RslChannelNr chan_nr, template RSL_Cause cause) := { - msg_disc := ts_RSL_MsgDisc(RSL_MDISC_DCHAN, false), + msg_disc := tr_RSL_MsgDisc(RSL_MDISC_DCHAN, false), msg_type := RSL_MT_MODE_MODIFY_NACK, ies := { tr_RSL_IE(RSL_IE_Body:{chan_nr := chan_nr}), @@ -1153,13 +1222,13 @@ /* 8.4.14: BTS <- BSC */ template RSL_Message tr_RSL_RF_CHAN_REL(template RslChannelNr chan_nr) := { - msg_disc := ts_RSL_MsgDisc(RSL_MDISC_DCHAN, false), + msg_disc := tr_RSL_MsgDisc(RSL_MDISC_DCHAN, false), msg_type := RSL_MT_RF_CHAN_REL, ies := { tr_RSL_IE(RSL_IE_Body:{chan_nr := chan_nr}) } } - template RSL_Message ts_RSL_RF_CHAN_REL(RslChannelNr chan_nr) := { + template (value) RSL_Message ts_RSL_RF_CHAN_REL(template (value) RslChannelNr chan_nr) := { msg_disc := ts_RSL_MsgDisc(RSL_MDISC_DCHAN, false), msg_type := RSL_MT_RF_CHAN_REL, ies := { @@ -1168,22 +1237,23 @@ } /* 8.4.19 BTS -> BSC */ - template RSL_Message ts_RSL_RF_CHAN_REL_ACK(RslChannelNr chan_nr) := + template (value) RSL_Message ts_RSL_RF_CHAN_REL_ACK(template (value) RslChannelNr chan_nr) := ts_RSL_MsgDiscType(ts_RSL_MsgDisc(RSL_MDISC_DCHAN, false), RSL_MT_RF_CHAN_REL_ACK, { t_RSL_IE(RSL_IE_CHAN_NR, RSL_IE_Body:{chan_nr := chan_nr}) }); template RSL_Message tr_RSL_RF_CHAN_REL_ACK(template RslChannelNr chan_nr) := { - msg_disc := ts_RSL_MsgDisc(RSL_MDISC_DCHAN, false), + msg_disc := tr_RSL_MsgDisc(RSL_MDISC_DCHAN, false), msg_type := RSL_MT_RF_CHAN_REL_ACK, ies := { - t_RSL_IE(RSL_IE_CHAN_NR, RSL_IE_Body:{chan_nr := chan_nr}) + tr_RSL_IE(RSL_IE_Body:{chan_nr := chan_nr}) } } /* 8.6.20 BTS <- BSC */ - template RSL_Message ts_RSL_SACCH_INF_MOD(RslChannelNr chan_nr, RSL_IE_SysinfoType si_type, - octetstring l3_info) := { + template (value) RSL_Message ts_RSL_SACCH_INF_MOD(template (value) RslChannelNr chan_nr, + RSL_IE_SysinfoType si_type, + octetstring l3_info) := { msg_disc := ts_RSL_MsgDisc(RSL_MDISC_DCHAN, false), msg_type := RSL_MT_SACCH_INFO_MODIFY, ies := { @@ -1197,29 +1267,31 @@ /* COMMON CHANNEL MANAGEMENT MESSAGES */ /* 8.5.1 BTS <- BSC */ - template RSL_Message ts_RSL_BCCH_INFO(RSL_IE_SysinfoType si_type, octetstring full_bcch_info) := { + template (value) RSL_Message ts_RSL_BCCH_INFO(RSL_IE_SysinfoType si_type, + octetstring full_bcch_info) := { msg_disc := ts_RSL_MsgDisc(RSL_MDISC_CCHAN, false), msg_type := RSL_MT_BCCH_INFO, ies := { - t_RSL_IE(RSL_IE_CHAN_NR, RSL_IE_Body:{chan_nr := t_RslChanNr_BCCH(0)}), + t_RSL_IE(RSL_IE_CHAN_NR, RSL_IE_Body:{chan_nr := ts_RslChanNr_BCCH(0)}), t_RSL_IE(RSL_IE_SYSINFO_TYPE, RSL_IE_Body:{sysinfo_type := si_type}), t_RSL_IE(RSL_IE_FULL_BCCH_INFO, RSL_IE_Body:{other := ts_RSL_LV(full_bcch_info)}) } } /* 8.5.2 BTS -> BSC */ - template RSL_Message ts_RSL_RACH_LOAD_IND(uint16_t slot_ct, uint16_t busy_ct, uint16_t acc_ct) := { + template (value) RSL_Message ts_RSL_RACH_LOAD_IND(uint16_t slot_ct, uint16_t busy_ct, + uint16_t acc_ct) := { msg_disc := ts_RSL_MsgDisc(RSL_MDISC_CCHAN, false), msg_type := RSL_MT_CCCH_LOAD_IND, ies := { - t_RSL_IE(RSL_IE_CHAN_NR, RSL_IE_Body:{chan_nr := t_RslChanNr_RACH(0)}), + t_RSL_IE(RSL_IE_CHAN_NR, RSL_IE_Body:{chan_nr := ts_RslChanNr_RACH(0)}), t_RSL_IE(RSL_IE_RACH_LOAD, RSL_IE_Body:{rach_load := ts_RSL_IE_RachLoad(slot_ct, busy_ct, acc_ct)}) } } template RSL_Message tr_RSL_RACH_LOAD_IND(template uint16_t slot_ct := ?, template uint16_t busy_ct := ?, template uint16_t acc_ct) := { - msg_disc := ts_RSL_MsgDisc(RSL_MDISC_CCHAN, false), + msg_disc := tr_RSL_MsgDisc(RSL_MDISC_CCHAN, false), msg_type := RSL_MT_CCCH_LOAD_IND, ies := { tr_RSL_IE(RSL_IE_Body:{chan_nr := t_RslChanNr_RACH(0)}), @@ -1227,16 +1299,16 @@ } } - template RSL_Message ts_RSL_PAGING_LOAD_IND(uint16_t buffer_space) := { + template (value) RSL_Message ts_RSL_PAGING_LOAD_IND(uint16_t buffer_space) := { msg_disc := ts_RSL_MsgDisc(RSL_MDISC_CCHAN, false), msg_type := RSL_MT_CCCH_LOAD_IND, ies := { - t_RSL_IE(RSL_IE_CHAN_NR, RSL_IE_Body:{chan_nr := t_RslChanNr_PCH_AGCH(0)}), + t_RSL_IE(RSL_IE_CHAN_NR, RSL_IE_Body:{chan_nr := ts_RslChanNr_PCH_AGCH(0)}), t_RSL_IE(RSL_IE_PAGING_LOAD, RSL_IE_Body:{paging_load := buffer_space}) } } template RSL_Message tr_RSL_PAGING_LOAD_IND(template uint16_t buffer_space := ?) := { - msg_disc := ts_RSL_MsgDisc(RSL_MDISC_CCHAN, false), + msg_disc := tr_RSL_MsgDisc(RSL_MDISC_CCHAN, false), msg_type := RSL_MT_CCCH_LOAD_IND, ies := { tr_RSL_IE(RSL_IE_Body:{chan_nr := t_RslChanNr_PCH_AGCH(0)}), @@ -1246,18 +1318,18 @@ /* 8.5.3 BTS -> BSC */ - template RSL_Message ts_RSL_CHAN_RQD(OCT1 ra, GsmFrameNumber fn, uint8_t acc_del := 0) := { + template (value) RSL_Message ts_RSL_CHAN_RQD(OCT1 ra, GsmFrameNumber fn, uint8_t acc_del := 0) := { msg_disc := ts_RSL_MsgDisc(RSL_MDISC_CCHAN, false), msg_type := RSL_MT_CHAN_RQD, ies := { - t_RSL_IE(RSL_IE_CHAN_NR, RSL_IE_Body:{chan_nr := t_RslChanNr_RACH(0)}), + t_RSL_IE(RSL_IE_CHAN_NR, RSL_IE_Body:{chan_nr := ts_RslChanNr_RACH(0)}), t_RSL_IE(RSL_IE_REQ_REFERENCE, RSL_IE_Body:{req_ref := ts_RSL_IE_ReqRef(ra, fn)}), t_RSL_IE(RSL_IE_ACCESS_DELAY, RSL_IE_Body:{access_delay := acc_del}) } } template RSL_Message tr_RSL_CHAN_RQD(template OCT1 ra, template GsmFrameNumber fn := ?, template uint8_t acc_del := ?) := { - msg_disc := ts_RSL_MsgDisc(RSL_MDISC_CCHAN, false), + msg_disc := tr_RSL_MsgDisc(RSL_MDISC_CCHAN, false), msg_type := RSL_MT_CHAN_RQD, ies := { tr_RSL_IE(RSL_IE_Body:{chan_nr := t_RslChanNr_RACH(0)}), @@ -1267,7 +1339,8 @@ } /* 8.5.4 BTS -> BSC */ - template RSL_Message ts_DELETE_IND(RslChannelNr chan_nr, octetstring imm_ass) := { + template (value) RSL_Message ts_DELETE_IND(template (value) RslChannelNr chan_nr, + octetstring imm_ass) := { msg_disc := ts_RSL_MsgDisc(RSL_MDISC_CCHAN, false), msg_type := RSL_MT_DELETE_IND, ies := { @@ -1278,7 +1351,7 @@ /* 8.5.5 BSC -> BTS */ template RSL_Message tr_RSL_PAGING_CMD(template octetstring identity, template uint3_t tn := ?) := { - msg_disc := ts_RSL_MsgDisc(RSL_MDISC_CCHAN, false), + msg_disc := tr_RSL_MsgDisc(RSL_MDISC_CCHAN, false), msg_type := RSL_MT_PAGING_CMD, ies := { tr_RSL_IE(RSL_IE_Body:{chan_nr := t_RslChanNr_PCH_AGCH(tn)}), @@ -1287,11 +1360,11 @@ * /* opt: channel needed, eMLPP prio */ } } - template RSL_Message ts_RSL_PAGING_CMD(octetstring identity, uint8_t pg, uint3_t tn := 0) := { + template (value) RSL_Message ts_RSL_PAGING_CMD(octetstring identity, uint8_t pg, uint3_t tn := 0) := { msg_disc := ts_RSL_MsgDisc(RSL_MDISC_CCHAN, false), msg_type := RSL_MT_PAGING_CMD, ies := { - t_RSL_IE(RSL_IE_CHAN_NR, RSL_IE_Body:{chan_nr := t_RslChanNr_PCH_AGCH(tn)}), + t_RSL_IE(RSL_IE_CHAN_NR, RSL_IE_Body:{chan_nr := ts_RslChanNr_PCH_AGCH(tn)}), t_RSL_IE(RSL_IE_PAGING_GROUP, RSL_IE_Body:{paging_group := pg}), t_RSL_IE(RSL_IE_MS_IDENTITY, RSL_IE_Body:{ms_identity := ts_RSL_LV(identity)}) } @@ -1299,30 +1372,30 @@ /* 8.5.6 BSC -> BTS */ template RSL_Message tr_RSL_IMM_ASSIGN(template uint3_t tn := ?) := { - msg_disc := ts_RSL_MsgDisc(RSL_MDISC_CCHAN, false), + msg_disc := tr_RSL_MsgDisc(RSL_MDISC_CCHAN, false), msg_type := RSL_MT_IMMEDIATE_ASSIGN_CMD, ies := { tr_RSL_IE(RSL_IE_Body:{chan_nr := t_RslChanNr_PCH_AGCH(tn)}), tr_RSL_IE(RSL_IE_Body:{full_imm_ass_info := ?}) } } - template RSL_Message ts_RSL_IMM_ASSIGN(octetstring f_ass_inf, uint3_t tn := 0) := { + template (value) RSL_Message ts_RSL_IMM_ASSIGN(octetstring f_ass_inf, uint3_t tn := 0) := { msg_disc := ts_RSL_MsgDisc(RSL_MDISC_CCHAN, false), msg_type := RSL_MT_IMMEDIATE_ASSIGN_CMD, ies := { - t_RSL_IE(RSL_IE_CHAN_NR, RSL_IE_Body:{chan_nr := t_RslChanNr_PCH_AGCH(tn)}), + t_RSL_IE(RSL_IE_CHAN_NR, RSL_IE_Body:{chan_nr := ts_RslChanNr_PCH_AGCH(tn)}), t_RSL_IE(RSL_IE_FULL_IMM_ASS_INFO, RSL_IE_Body:{full_imm_ass_info := ts_RSL_LV(f_ass_inf)}) } } template RSL_Message tr_RSL_RF_RES_IND := { - msg_disc := ts_RSL_MsgDisc(RSL_MDISC_TRX_MGMT, false), + msg_disc := tr_RSL_MsgDisc(RSL_MDISC_TRX_MGMT, false), msg_type := RSL_MT_RF_RES_IND, ies := * } /* 8.6.2 BTS <- BSC */ - template RSL_Message ts_RSL_SACCH_FILL(RSL_IE_SysinfoType si_type, octetstring l3_info) := { + template (value) RSL_Message ts_RSL_SACCH_FILL(RSL_IE_SysinfoType si_type, octetstring l3_info) := { msg_disc := ts_RSL_MsgDisc(RSL_MDISC_TRX_MGMT, false), msg_type := RSL_MT_SACCH_FILL, ies := { @@ -1332,7 +1405,7 @@ } /* 8.6.4 BTS -> BSC */ - template RSL_Message ts_RSL_ERROR_REPORT(RSL_Cause cause) := { + template (value) RSL_Message ts_RSL_ERROR_REPORT(RSL_Cause cause) := { msg_disc := ts_RSL_MsgDisc(RSL_MDISC_TRX_MGMT, false), msg_type := RSL_MT_ERROR_REPORT, ies := { @@ -1340,7 +1413,7 @@ } } template RSL_Message tr_RSL_ERROR_REPORT(template RSL_Cause cause := ?) := { - msg_disc := ts_RSL_MsgDisc(RSL_MDISC_TRX_MGMT, false), + msg_disc := tr_RSL_MsgDisc(RSL_MDISC_TRX_MGMT, false), msg_type := RSL_MT_ERROR_REPORT, ies := { tr_RSL_IE(RSL_IE_Body:{cause := tr_RSL_IE_Cause(cause)}), @@ -1353,14 +1426,14 @@ /* Abis/IP specific messages */ template RSL_Message tr_RSL_IPA_CRCX(template RslChannelNr chan_nr) := { - msg_disc := ts_RSL_MsgDisc(RSL_MDISC_IPACCESS, false), + msg_disc := tr_RSL_MsgDisc(RSL_MDISC_IPACCESS, false), msg_type := RSL_MT_IPAC_CRCX, ies := { tr_RSL_IE(RSL_IE_Body:{chan_nr := chan_nr}), * } } - template RSL_Message ts_RSL_IPA_CRCX(RslChannelNr chan_nr) := { + template (value) RSL_Message ts_RSL_IPA_CRCX(template (value) RslChannelNr chan_nr) := { msg_disc := ts_RSL_MsgDisc(RSL_MDISC_IPACCESS, false), msg_type := RSL_MT_IPAC_CRCX, ies := { @@ -1369,9 +1442,9 @@ } - template RSL_Message ts_RSL_IPA_CRCX_ACK(RslChannelNr chan_nr, - uint16_t ipa_conn_id, uint32_t local_ip, - uint16_t local_port, uint7_t rtp_pt2) := { + template (value) RSL_Message ts_RSL_IPA_CRCX_ACK(template (value) RslChannelNr chan_nr, + uint16_t ipa_conn_id, uint32_t local_ip, + uint16_t local_port, uint7_t rtp_pt2) := { msg_disc := ts_RSL_MsgDisc(RSL_MDISC_IPACCESS, false), msg_type := RSL_MT_IPAC_CRCX_ACK, ies := { @@ -1386,7 +1459,7 @@ template uint16_t ipa_conn_id, template uint32_t local_ip, template uint16_t local_port) := { - msg_disc := ts_RSL_MsgDisc(RSL_MDISC_IPACCESS, false), + msg_disc := tr_RSL_MsgDisc(RSL_MDISC_IPACCESS, false), msg_type := RSL_MT_IPAC_CRCX_ACK, ies := { tr_RSL_IE(RSL_IE_Body:{chan_nr := chan_nr}), @@ -1397,7 +1470,8 @@ } } - template RSL_Message ts_RSL_IPA_CRCX_NACK(RslChannelNr chan_nr, RSL_Cause cause) := { + template (value) RSL_Message ts_RSL_IPA_CRCX_NACK(template (value) RslChannelNr chan_nr, + RSL_Cause cause) := { msg_disc := ts_RSL_MsgDisc(RSL_MDISC_IPACCESS, false), msg_type := RSL_MT_IPAC_CRCX_NACK, ies := { @@ -1407,7 +1481,7 @@ } template RSL_Message tr_RSL_IPA_CRCX_NACK(template RslChannelNr chan_nr, template RSL_Cause cause := ?) := { - msg_disc := ts_RSL_MsgDisc(RSL_MDISC_IPACCESS, false), + msg_disc := tr_RSL_MsgDisc(RSL_MDISC_IPACCESS, false), msg_type := RSL_MT_IPAC_CRCX_NACK, ies := { tr_RSL_IE(RSL_IE_Body:{chan_nr := chan_nr}), @@ -1415,10 +1489,10 @@ } } - template RSL_Message ts_RSL_IPA_MDCX(RslChannelNr chan_nr, - uint16_t ipa_conn_id, - uint32_t remote_ip, uint16_t remote_port, - uint7_t rtp_pt2) := { + template (value) RSL_Message ts_RSL_IPA_MDCX(template (value) RslChannelNr chan_nr, + uint16_t ipa_conn_id, + uint32_t remote_ip, uint16_t remote_port, + uint7_t rtp_pt2) := { msg_disc := ts_RSL_MsgDisc(RSL_MDISC_IPACCESS, false), msg_type := RSL_MT_IPAC_MDCX, ies := { @@ -1432,7 +1506,7 @@ } template RSL_Message tr_RSL_IPA_MDCX(template RslChannelNr chan_nr, template uint16_t ipa_conn_id) := { - msg_disc := ts_RSL_MsgDisc(RSL_MDISC_IPACCESS, false), + msg_disc := tr_RSL_MsgDisc(RSL_MDISC_IPACCESS, false), msg_type := RSL_MT_IPAC_MDCX, ies := { tr_RSL_IE(RSL_IE_Body:{chan_nr := chan_nr}), @@ -1441,9 +1515,10 @@ } } - template RSL_Message ts_RSL_IPA_MDCX_ACK(RslChannelNr chan_nr, template uint16_t ipa_conn_id, - uint32_t local_ip, uint16_t local_port, - uint7_t rtp_pt2) := { + template (value) RSL_Message ts_RSL_IPA_MDCX_ACK(template (value) RslChannelNr chan_nr, + uint16_t ipa_conn_id, + uint32_t local_ip, uint16_t local_port, + uint7_t rtp_pt2) := { msg_disc := ts_RSL_MsgDisc(RSL_MDISC_IPACCESS, false), msg_type := RSL_MT_IPAC_MDCX_ACK, ies := { @@ -1461,7 +1536,7 @@ template uint32_t local_ip, template uint16_t local_port, template uint7_t rtp_pt2) := { - msg_disc := ts_RSL_MsgDisc(RSL_MDISC_IPACCESS, false), + msg_disc := tr_RSL_MsgDisc(RSL_MDISC_IPACCESS, false), msg_type := RSL_MT_IPAC_MDCX_ACK, ies := { tr_RSL_IE(RSL_IE_Body:{chan_nr := chan_nr}), @@ -1474,8 +1549,9 @@ } } - template RSL_Message ts_RSL_IPA_MDCX_NACK(RslChannelNr chan_nr, RSL_Cause cause, - template uint16_t ipa_conn_id) := { + template (value) RSL_Message ts_RSL_IPA_MDCX_NACK(template (value) RslChannelNr chan_nr, + RSL_Cause cause, + template (value) uint16_t ipa_conn_id) := { msg_disc := ts_RSL_MsgDisc(RSL_MDISC_IPACCESS, false), msg_type := RSL_MT_IPAC_MDCX_NACK, ies := { @@ -1488,7 +1564,7 @@ template RSL_Message tr_RSL_IPA_MDCX_NACK(template RslChannelNr chan_nr, template RSL_Cause cause, template uint16_t ipa_conn_id) := { - msg_disc := ts_RSL_MsgDisc(RSL_MDISC_IPACCESS, false), + msg_disc := tr_RSL_MsgDisc(RSL_MDISC_IPACCESS, false), msg_type := RSL_MT_IPAC_MDCX_NACK, ies := { tr_RSL_IE(RSL_IE_Body:{chan_nr := chan_nr}), @@ -1499,8 +1575,10 @@ } - template RSL_Message ts_RSL_IPA_DLCX_IND(RslChannelNr chan_nr, uint16_t ipa_conn_id, - RSL_IE_IPA_ConnectionStats stats, RSL_Cause cause) := { + template (value) RSL_Message ts_RSL_IPA_DLCX_IND(template (value) RslChannelNr chan_nr, + uint16_t ipa_conn_id, + template (value) RSL_IE_IPA_ConnectionStats stats, + RSL_Cause cause) := { msg_disc := ts_RSL_MsgDisc(RSL_MDISC_IPACCESS, false), msg_type := RSL_MT_IPAC_DLCX_IND, ies := { @@ -1511,7 +1589,8 @@ } } - template RSL_Message ts_RSL_IPA_DLCX(RslChannelNr chan_nr, uint16_t ipa_conn_id) := { + template (value) RSL_Message ts_RSL_IPA_DLCX(template (value) RslChannelNr chan_nr, + uint16_t ipa_conn_id) := { msg_disc := ts_RSL_MsgDisc(RSL_MDISC_IPACCESS, false), msg_type := RSL_MT_IPAC_DLCX, ies := { @@ -1521,7 +1600,7 @@ } template RSL_Message tr_RSL_IPA_DLCX(template RslChannelNr chan_nr, template uint16_t ipa_conn_id := omit) := { - msg_disc := ts_RSL_MsgDisc(RSL_MDISC_IPACCESS, false), + msg_disc := tr_RSL_MsgDisc(RSL_MDISC_IPACCESS, false), msg_type := RSL_MT_IPAC_DLCX, ies := { tr_RSL_IE(RSL_IE_Body:{chan_nr := chan_nr}), @@ -1530,8 +1609,9 @@ } } - template RSL_Message ts_RSL_IPA_DLCX_ACK(RslChannelNr chan_nr, template uint16_t ipa_conn_id, - template RSL_IE_IPA_ConnectionStats stats) := { + template (value) RSL_Message ts_RSL_IPA_DLCX_ACK(template (value) RslChannelNr chan_nr, + uint16_t ipa_conn_id, + RSL_IE_IPA_ConnectionStats stats) := { msg_disc := ts_RSL_MsgDisc(RSL_MDISC_IPACCESS, false), msg_type := RSL_MT_IPAC_DLCX_ACK, ies := { @@ -1543,7 +1623,7 @@ template RSL_Message tr_RSL_IPA_DLCX_ACK(template RslChannelNr chan_nr, template uint16_t ipa_conn_id, template RSL_IE_IPA_ConnectionStats stats) := { - msg_disc := ts_RSL_MsgDisc(RSL_MDISC_IPACCESS, false), + msg_disc := tr_RSL_MsgDisc(RSL_MDISC_IPACCESS, false), msg_type := RSL_MT_IPAC_DLCX_ACK, ies := { tr_RSL_IE(RSL_IE_Body:{chan_nr := chan_nr}), @@ -1554,8 +1634,8 @@ - template RSL_Message ts_RSL_IPA_DLCX_NACK(RslChannelNr chan_nr, RSL_Cause cause, - template uint16_t ipa_conn_id) := { + template (value) RSL_Message ts_RSL_IPA_DLCX_NACK(template (value) RslChannelNr chan_nr, + RSL_Cause cause, uint16_t ipa_conn_id) := { msg_disc := ts_RSL_MsgDisc(RSL_MDISC_IPACCESS, false), msg_type := RSL_MT_IPAC_DLCX_NACK, ies := { @@ -1567,7 +1647,7 @@ } template RSL_Message tr_RSL_IPA_DLCX_NACK(template RslChannelNr chan_nr, template RSL_Cause cause) := { - msg_disc := ts_RSL_MsgDisc(RSL_MDISC_IPACCESS, false), + msg_disc := tr_RSL_MsgDisc(RSL_MDISC_IPACCESS, false), msg_type := RSL_MT_IPAC_DLCX_NACK, ies := { tr_RSL_IE(RSL_IE_Body:{chan_nr := chan_nr}), @@ -1578,7 +1658,7 @@ } - template RSL_Message ts_RSL_IPA_PDCH_ACT(RslChannelNr chan_nr) := { + template (value) RSL_Message ts_RSL_IPA_PDCH_ACT(RslChannelNr chan_nr) := { msg_disc := ts_RSL_MsgDisc(RSL_MDISC_DCHAN, false), msg_type := RSL_MT_IPAC_PDCH_ACT, ies := { -- To view, visit https://gerrit.osmocom.org/7873 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I18828ccbc7d28dd190e745f020c724acdb0cdc8b Gerrit-PatchSet: 1 Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Owner: Harald Welte From jenkins at lists.osmocom.org Wed Apr 18 21:46:09 2018 From: jenkins at lists.osmocom.org (jenkins at lists.osmocom.org) Date: Wed, 18 Apr 2018 21:46:09 +0000 (UTC) Subject: =?UTF-8?Q?Build_failed_in_Jenkins:_master-rtl-sdr_=C2=BB_a1=3Ddefau?= =?UTF-8?Q?lt,a2=3Ddefault,a3=3Ddefault,osmocom-master-debian9_#1?= Message-ID: <578304237.457.1524087969828.JavaMail.jenkins@jenkins.osmocom.org> See ------------------------------------------ Started by upstream project "master-rtl-sdr" build number 1 originally caused by: Started by an SCM change Building remotely on host2-deb9build-ansible (ttcn3 osmo-gsm-tester-build osmocom-gerrit-debian9 osmocom-master-debian9) in workspace Cloning the remote Git repository Cloning repository git://git.osmocom.org/rtl-sdr > git init # timeout=10 Fetching upstream changes from git://git.osmocom.org/rtl-sdr > git --version # timeout=10 > git fetch --tags --progress git://git.osmocom.org/rtl-sdr +refs/heads/*:refs/remotes/origin/* > git config remote.origin.url git://git.osmocom.org/rtl-sdr # timeout=10 > git config --add remote.origin.fetch +refs/heads/*:refs/remotes/origin/* # timeout=10 > git config remote.origin.url git://git.osmocom.org/rtl-sdr # timeout=10 Fetching upstream changes from git://git.osmocom.org/rtl-sdr > git fetch --tags --progress git://git.osmocom.org/rtl-sdr +refs/heads/*:refs/remotes/origin/* Checking out Revision 4520f001d85f01d051eaa42af7b18b6ef0837e14 (refs/remotes/origin/master) > git config core.sparsecheckout # timeout=10 > git checkout -f 4520f001d85f01d051eaa42af7b18b6ef0837e14 Commit message: "lib: fix FC0012 reset GPIO" First time build. Skipping changelog. [osmocom-master-debian9] $ /bin/sh -xe /tmp/jenkins2781811661945893339.sh + ./contrib/jenkins.sh /tmp/jenkins2781811661945893339.sh: 2: /tmp/jenkins2781811661945893339.sh: ./contrib/jenkins.sh: not found Build step 'Execute shell' marked build as failure [WARNINGS]Skipping publisher since build result is FAILURE From jenkins at lists.osmocom.org Wed Apr 18 22:29:07 2018 From: jenkins at lists.osmocom.org (jenkins at lists.osmocom.org) Date: Wed, 18 Apr 2018 22:29:07 +0000 (UTC) Subject: =?UTF-8?Q?Build_failed_in_Jenkins:_master-rtl-sdr_=C2=BB_a1=3Ddefau?= =?UTF-8?Q?lt,a2=3Ddefault,a3=3Ddefault,osmocom-master-debian9_#2?= In-Reply-To: <578304237.457.1524087969828.JavaMail.jenkins@jenkins.osmocom.org> References: <578304237.457.1524087969828.JavaMail.jenkins@jenkins.osmocom.org> Message-ID: <932014329.458.1524090547819.JavaMail.jenkins@jenkins.osmocom.org> See Changes: [laforge] cosmetic: Fix "implicit fall-through" gcc 7.3.0 warnings [laforge] fix "-Wshift-negative-value" compiler warning on ggc-7.3.0 [laforge] configure.ac: Add --enable-sanitize and --enable-werror [laforge] add contrib/jenkins.sh for build testing [laforge] Makefile.am: Fix "permission denied" during "make distcheck" ------------------------------------------ [...truncated 91.95 KB...] make[2]: Entering directory ' make[2]: Nothing to be done for 'dvi'. make[2]: Leaving directory ' Making dvi in src make[2]: Entering directory ' make[2]: Nothing to be done for 'dvi'. make[2]: Leaving directory ' make[2]: Entering directory ' make[2]: Nothing to be done for 'dvi-am'. make[2]: Leaving directory ' make[1]: Leaving directory ' make[1]: Entering directory ' make check-recursive make[2]: Entering directory ' Making check in include make[3]: Entering directory ' make[3]: Nothing to be done for 'check'. make[3]: Leaving directory ' Making check in src make[3]: Entering directory ' make[3]: Nothing to be done for 'check'. make[3]: Leaving directory ' make[3]: Entering directory ' make[3]: Leaving directory ' make[2]: Leaving directory ' make[1]: Leaving directory ' make[1]: Entering directory ' make install-recursive make[2]: Entering directory ' Making install in include make[3]: Entering directory ' make[4]: Entering directory ' make[4]: Nothing to be done for 'install-exec-am'. /bin/mkdir -p ' /usr/bin/install -c -m 644 ../../../include/rtl-sdr.h ../../../include/rtl-sdr_export.h ' make[4]: Leaving directory ' make[3]: Leaving directory ' Making install in src make[3]: Entering directory ' make[4]: Entering directory ' /bin/mkdir -p ' /bin/bash ../libtool --mode=install /usr/bin/install -c librtlsdr.la ' libtool: install: /usr/bin/install -c .libs/librtlsdr.so.0.0.5 libtool: install: (cd && { ln -s -f librtlsdr.so.0.0.5 librtlsdr.so.0 || { rm -f librtlsdr.so.0 && ln -s librtlsdr.so.0.0.5 librtlsdr.so.0; }; }) libtool: install: (cd && { ln -s -f librtlsdr.so.0.0.5 librtlsdr.so || { rm -f librtlsdr.so && ln -s librtlsdr.so.0.0.5 librtlsdr.so; }; }) libtool: install: /usr/bin/install -c .libs/librtlsdr.lai libtool: install: /usr/bin/install -c .libs/librtlsdr.a libtool: install: chmod 644 libtool: install: ranlib libtool: finish: PATH="/usr/local/bin:/usr/bin:/bin:/usr/games:/home/osmocom-build/bin:/sbin" ldconfig -n ---------------------------------------------------------------------- Libraries have been installed in: If you ever happen to want to link against installed libraries in a given directory, LIBDIR, you must either use libtool, and specify the full pathname of the library, or use the '-LLIBDIR' flag during linking and do at least one of the following: - add LIBDIR to the 'LD_LIBRARY_PATH' environment variable during execution - add LIBDIR to the 'LD_RUN_PATH' environment variable during linking - use the '-Wl,-rpath -Wl,LIBDIR' linker flag - have your system administrator add LIBDIR to '/etc/ld.so.conf' See any operating system documentation about shared libraries for more information, such as the ld(1) and ld.so(8) manual pages. ---------------------------------------------------------------------- /bin/mkdir -p ' /bin/bash ../libtool --mode=install /usr/bin/install -c rtl_sdr rtl_tcp rtl_test rtl_fm rtl_eeprom rtl_adsb rtl_power ' libtool: install: /usr/bin/install -c .libs/rtl_sdr libtool: install: /usr/bin/install -c .libs/rtl_tcp libtool: install: /usr/bin/install -c .libs/rtl_test libtool: install: /usr/bin/install -c .libs/rtl_fm libtool: install: /usr/bin/install -c .libs/rtl_eeprom libtool: install: /usr/bin/install -c .libs/rtl_adsb libtool: install: /usr/bin/install -c .libs/rtl_power make[4]: Nothing to be done for 'install-data-am'. make[4]: Leaving directory ' make[3]: Leaving directory ' make[3]: Entering directory ' make[4]: Entering directory ' make[4]: Nothing to be done for 'install-exec-am'. /bin/mkdir -p ' /usr/bin/install -c -m 644 ./doc/html.tar ' /bin/mkdir -p ' /usr/bin/install -c -m 644 librtlsdr.pc ' make install-data-hook make[5]: Entering directory ' cd && tar xf html.tar --strip-components 1 && rm -f html.tar make[5]: Leaving directory ' make[4]: Leaving directory ' make[3]: Leaving directory ' make[2]: Leaving directory ' make[1]: Leaving directory ' make[1]: Entering directory ' Making installcheck in include make[2]: Entering directory ' make[2]: Nothing to be done for 'installcheck'. make[2]: Leaving directory ' Making installcheck in src make[2]: Entering directory ' make[2]: Nothing to be done for 'installcheck'. make[2]: Leaving directory ' make[2]: Entering directory ' make[2]: Nothing to be done for 'installcheck-am'. make[2]: Leaving directory ' make[1]: Leaving directory ' make[1]: Entering directory ' Making uninstall in include make[2]: Entering directory ' ( cd ' && rm -f rtl-sdr.h rtl-sdr_export.h ) make[2]: Leaving directory ' Making uninstall in src make[2]: Entering directory ' ( cd ' && rm -f rtl_sdr rtl_tcp rtl_test rtl_fm rtl_eeprom rtl_adsb rtl_power ) /bin/bash ../libtool --mode=uninstall rm -f ' libtool: uninstall: rm -f make[2]: Leaving directory ' make[2]: Entering directory ' ( cd ' && rm -f html.tar ) ( cd ' && rm -f librtlsdr.pc ) make uninstall-hook make[3]: Entering directory ' cd && rm -rf make[3]: Leaving directory ' make[2]: Leaving directory ' make[1]: Leaving directory ' make[1]: Entering directory ' make[1]: Leaving directory ' make[1]: Entering directory ' make install-recursive make[2]: Entering directory ' Making install in include make[3]: Entering directory ' make[4]: Entering directory ' make[4]: Nothing to be done for 'install-exec-am'. /bin/mkdir -p '/tmp/am-dc-9823/ /usr/bin/install -c -m 644 ../../../include/rtl-sdr.h ../../../include/rtl-sdr_export.h '/tmp/am-dc-9823/ make[4]: Leaving directory ' make[3]: Leaving directory ' Making install in src make[3]: Entering directory ' make[4]: Entering directory ' /bin/mkdir -p '/tmp/am-dc-9823/ /bin/bash ../libtool --mode=install /usr/bin/install -c librtlsdr.la '/tmp/am-dc-9823/ libtool: install: /usr/bin/install -c .libs/librtlsdr.so.0.0.5 /tmp/am-dc-9823/ libtool: install: (cd /tmp/am-dc-9823/ && { ln -s -f librtlsdr.so.0.0.5 librtlsdr.so.0 || { rm -f librtlsdr.so.0 && ln -s librtlsdr.so.0.0.5 librtlsdr.so.0; }; }) libtool: install: (cd /tmp/am-dc-9823/ && { ln -s -f librtlsdr.so.0.0.5 librtlsdr.so || { rm -f librtlsdr.so && ln -s librtlsdr.so.0.0.5 librtlsdr.so; }; }) libtool: install: /usr/bin/install -c .libs/librtlsdr.lai /tmp/am-dc-9823/ libtool: install: /usr/bin/install -c .libs/librtlsdr.a /tmp/am-dc-9823/ libtool: install: chmod 644 /tmp/am-dc-9823/ libtool: install: ranlib /tmp/am-dc-9823/ libtool: warning: remember to run 'libtool --finish /bin/mkdir -p '/tmp/am-dc-9823/ /bin/bash ../libtool --mode=install /usr/bin/install -c rtl_sdr rtl_tcp rtl_test rtl_fm rtl_eeprom rtl_adsb rtl_power '/tmp/am-dc-9823/ libtool: warning: 'librtlsdr.la' has not been installed in ' libtool: install: /usr/bin/install -c .libs/rtl_sdr /tmp/am-dc-9823/ libtool: warning: 'librtlsdr.la' has not been installed in ' libtool: install: /usr/bin/install -c .libs/rtl_tcp /tmp/am-dc-9823/ libtool: warning: 'librtlsdr.la' has not been installed in ' libtool: install: /usr/bin/install -c .libs/rtl_test /tmp/am-dc-9823/ libtool: warning: 'librtlsdr.la' has not been installed in ' libtool: install: /usr/bin/install -c .libs/rtl_fm /tmp/am-dc-9823/ libtool: warning: 'librtlsdr.la' has not been installed in ' libtool: install: /usr/bin/install -c .libs/rtl_eeprom /tmp/am-dc-9823/ libtool: warning: 'librtlsdr.la' has not been installed in ' libtool: install: /usr/bin/install -c .libs/rtl_adsb /tmp/am-dc-9823/ libtool: warning: 'librtlsdr.la' has not been installed in ' libtool: install: /usr/bin/install -c .libs/rtl_power /tmp/am-dc-9823/ make[4]: Nothing to be done for 'install-data-am'. make[4]: Leaving directory ' make[3]: Leaving directory ' make[3]: Entering directory ' make[4]: Entering directory ' make[4]: Nothing to be done for 'install-exec-am'. /bin/mkdir -p '/tmp/am-dc-9823/ /usr/bin/install -c -m 644 ./doc/html.tar '/tmp/am-dc-9823/ /bin/mkdir -p '/tmp/am-dc-9823/ /usr/bin/install -c -m 644 librtlsdr.pc '/tmp/am-dc-9823/ make install-data-hook make[5]: Entering directory ' cd /tmp/am-dc-9823/ && tar xf html.tar --strip-components 1 && rm -f html.tar make[5]: Leaving directory ' make[4]: Leaving directory ' make[3]: Leaving directory ' make[2]: Leaving directory ' make[1]: Leaving directory ' make[1]: Entering directory ' Making uninstall in include make[2]: Entering directory ' ( cd '/tmp/am-dc-9823/ && rm -f rtl-sdr.h rtl-sdr_export.h ) make[2]: Leaving directory ' Making uninstall in src make[2]: Entering directory ' ( cd '/tmp/am-dc-9823/ && rm -f rtl_sdr rtl_tcp rtl_test rtl_fm rtl_eeprom rtl_adsb rtl_power ) /bin/bash ../libtool --mode=uninstall rm -f '/tmp/am-dc-9823/ libtool: uninstall: rm -f /tmp/am-dc-9823/ /tmp/am-dc-9823/ /tmp/am-dc-9823/ /tmp/am-dc-9823/ /tmp/am-dc-9823/ make[2]: Leaving directory ' make[2]: Entering directory ' ( cd '/tmp/am-dc-9823/ && rm -f html.tar ) ( cd '/tmp/am-dc-9823/ && rm -f librtlsdr.pc ) make uninstall-hook make[3]: Entering directory ' cd /tmp/am-dc-9823/ && rm -rf make[3]: Leaving directory ' make[2]: Leaving directory ' make[1]: Leaving directory ' make[1]: Entering directory ' ERROR: files left after uninstall: (check DESTDIR support) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Makefile:757: recipe for target 'distuninstallcheck' failed make[1]: *** [distuninstallcheck] Error 1 make[1]: Leaving directory ' Makefile:701: recipe for target 'distcheck' failed make: *** [distcheck] Error 1 + cat-testlogs.sh Build step 'Execute shell' marked build as failure [WARNINGS]Skipping publisher since build result is FAILURE From gerrit-no-reply at lists.osmocom.org Wed Apr 18 22:30:10 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Wed, 18 Apr 2018 22:30:10 +0000 Subject: [PATCH] osmo-ci[master]: master-builds: Add rtl-sdr Message-ID: Review at https://gerrit.osmocom.org/7874 master-builds: Add rtl-sdr As rtl-sdr is gaining a ./contrib/jenkins.sh script, we can now also use it just like our other projects, with a template-generated "master-rtl-sdr" jenkins job, which can replace the old manually-created "rtl-sdr" jenkins job. Change-Id: Ia59f12f31d332bda09242fff1d3e215e8cadc915 --- M jobs/master-builds.yml 1 file changed, 1 insertion(+), 0 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-ci refs/changes/74/7874/1 diff --git a/jobs/master-builds.yml b/jobs/master-builds.yml index 3fd5814..d2cd6fa 100644 --- a/jobs/master-builds.yml +++ b/jobs/master-builds.yml @@ -317,6 +317,7 @@ concurrent: true - osmocom-bb + - rtl-sdr jobs: - 'master-{repos}' -- To view, visit https://gerrit.osmocom.org/7874 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Ia59f12f31d332bda09242fff1d3e215e8cadc915 Gerrit-PatchSet: 1 Gerrit-Project: osmo-ci Gerrit-Branch: master Gerrit-Owner: Harald Welte From gerrit-no-reply at lists.osmocom.org Wed Apr 18 22:30:46 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Wed, 18 Apr 2018 22:30:46 +0000 Subject: osmo-ci[master]: master-builds: Add rtl-sdr In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 Verified+1 -- To view, visit https://gerrit.osmocom.org/7874 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Ia59f12f31d332bda09242fff1d3e215e8cadc915 Gerrit-PatchSet: 1 Gerrit-Project: osmo-ci Gerrit-Branch: master Gerrit-Owner: Harald Welte Gerrit-Reviewer: Harald Welte Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Wed Apr 18 22:30:49 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Wed, 18 Apr 2018 22:30:49 +0000 Subject: [MERGED] osmo-ci[master]: master-builds: Add rtl-sdr In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: master-builds: Add rtl-sdr ...................................................................... master-builds: Add rtl-sdr As rtl-sdr is gaining a ./contrib/jenkins.sh script, we can now also use it just like our other projects, with a template-generated "master-rtl-sdr" jenkins job, which can replace the old manually-created "rtl-sdr" jenkins job. Change-Id: Ia59f12f31d332bda09242fff1d3e215e8cadc915 --- M jobs/master-builds.yml 1 file changed, 1 insertion(+), 0 deletions(-) Approvals: Harald Welte: Looks good to me, approved; Verified diff --git a/jobs/master-builds.yml b/jobs/master-builds.yml index 3fd5814..d2cd6fa 100644 --- a/jobs/master-builds.yml +++ b/jobs/master-builds.yml @@ -317,6 +317,7 @@ concurrent: true - osmocom-bb + - rtl-sdr jobs: - 'master-{repos}' -- To view, visit https://gerrit.osmocom.org/7874 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: Ia59f12f31d332bda09242fff1d3e215e8cadc915 Gerrit-PatchSet: 1 Gerrit-Project: osmo-ci Gerrit-Branch: master Gerrit-Owner: Harald Welte Gerrit-Reviewer: Harald Welte From gerrit-no-reply at lists.osmocom.org Wed Apr 18 22:31:00 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Wed, 18 Apr 2018 22:31:00 +0000 Subject: osmo-ttcn3-hacks[master]: RSL: Introduce template (value) annotations In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7873 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I18828ccbc7d28dd190e745f020c724acdb0cdc8b Gerrit-PatchSet: 1 Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Owner: Harald Welte Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Wed Apr 18 22:31:01 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Wed, 18 Apr 2018 22:31:01 +0000 Subject: [MERGED] osmo-ttcn3-hacks[master]: RSL: Introduce template (value) annotations In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: RSL: Introduce template (value) annotations ...................................................................... RSL: Introduce template (value) annotations Change-Id: I18828ccbc7d28dd190e745f020c724acdb0cdc8b --- M library/RSL_Types.ttcn 1 file changed, 189 insertions(+), 109 deletions(-) Approvals: Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/library/RSL_Types.ttcn b/library/RSL_Types.ttcn index 104a1a8..246ea3f 100644 --- a/library/RSL_Types.ttcn +++ b/library/RSL_Types.ttcn @@ -32,10 +32,15 @@ boolean transparent } with { variant "FIELDORDER(msb)" }; - template RSL_MessageDiscriminator ts_RSL_MsgDisc(RSL_MessageGroup mg, boolean t := true) := { + template (value) RSL_MessageDiscriminator ts_RSL_MsgDisc(RSL_MessageGroup mg, boolean t := true) := { msg_group := mg, transparent := t } + template RSL_MessageDiscriminator tr_RSL_MsgDisc(template RSL_MessageGroup mg, boolean t := true) := { + msg_group := mg, + transparent := t + } + /* Section 9.2 */ type enumerated RSL_MessageType { @@ -235,7 +240,7 @@ octetstring payload } with { variant (len) "LENGTHTO(payload)" } - template RSL_LV ts_RSL_LV(template octetstring pl) := { + template (value) RSL_LV ts_RSL_LV(template (value) octetstring pl) := { len := 0, payload := pl } @@ -250,7 +255,7 @@ octetstring payload } with { variant (len) "LENGTHTO(payload)" } - template RSL_L16V ts_RSL_L16V(template octetstring pl) := { + template (value) RSL_L16V ts_RSL_L16V(template (value) octetstring pl) := { len := 0, payload := pl } @@ -320,7 +325,7 @@ RSL_SpeechAlgo coding_alg_rate } with { variant (len) "LENGTHTO(reserved,dtx_d,dtx_u,spd_ind,ch_rate_type,coding_alg_rate)" } - template RSL_IE_ChannelMode ts_RSL_ChanMode_SIGN := { + template (value) RSL_IE_ChannelMode ts_RSL_ChanMode_SIGN := { len := 0, /* overwritten */ reserved := '000000'B, dtx_d := false, @@ -330,7 +335,7 @@ coding_alg_rate := RSL_CMOD_NO_RESOURCE } - template RSL_IE_ChannelMode ts_RSL_ChanMode(RSL_ChanRateType t, RSL_SpeechAlgo alg) := { + template (value) RSL_IE_ChannelMode ts_RSL_ChanMode(RSL_ChanRateType t, RSL_SpeechAlgo alg) := { len := 0, /* overwritten */ reserved := '000000'B, dtx_d := false, @@ -370,6 +375,13 @@ alg_id := alg, key := key } + template (value) RSL_IE_EncryptionInfo ts_RSL_IE_EncrInfo(OCT1 alg, octetstring key) := { + len := 0, /* overwritten */ + alg_id := alg, + key := key + } + + /* 9.3.8 */ type record RSL_IE_FrameNumber { @@ -402,7 +414,7 @@ uint16_t access_count } with { variant (len) "LENGTHTO(slot_count,busy_count,access_count)" } - template RSL_IE_RachLoad ts_RSL_IE_RachLoad(uint16_t slot, uint16_t busy, uint16_t acc) := { + template (value) RSL_IE_RachLoad ts_RSL_IE_RachLoad(uint16_t slot, uint16_t busy, uint16_t acc) := { len := 0, /* overwritten */ slot_count := slot, busy_count := busy, @@ -439,7 +451,7 @@ } } - template RSL_IE_RequestRef ts_RSL_IE_ReqRef(OCT1 ra, GsmFrameNumber frame_nr) := { + template (value) RSL_IE_RequestRef ts_RSL_IE_ReqRef(OCT1 ra, GsmFrameNumber frame_nr) := { ra := ra, frame_nr := ts_RSL_IE_FrameNumber(frame_nr) } @@ -518,7 +530,7 @@ octetstring cause_ext optional } with { variant (len) "LENGTHTO(e,cause,cause_ext)" } - template RSL_IE_Cause ts_RSL_IE_Cause(RSL_Cause cause) := { + template (value) RSL_IE_Cause ts_RSL_IE_Cause(RSL_Cause cause) := { len := 0, /* overwritten */ e := 0, cause := cause, @@ -711,7 +723,7 @@ /* For some reason the TTCN-3 RAW codec cannot automatically figure out the IEI * that it needs to set for a given union-choice (body). So we have to explicitly * specify the IEI by the caller :( */ - template RSL_IE t_RSL_IE(RSL_IE_Type iei, template RSL_IE_Body body) := { + template (value) RSL_IE t_RSL_IE(RSL_IE_Type iei, template (value) RSL_IE_Body body) := { iei := iei, body := body } @@ -742,9 +754,9 @@ ies := * } - template RSL_Message ts_RSL_MsgDiscType(template RSL_MessageDiscriminator m_disc, - template RSL_MessageType msg_type, - template RSL_IE_List ies := omit) := { + template (value) RSL_Message ts_RSL_MsgDiscType(template (value) RSL_MessageDiscriminator m_disc, + template (value) RSL_MessageType msg_type, + template (omit) RSL_IE_List ies := omit) := { msg_disc := m_disc, msg_type := msg_type, ies := ies @@ -784,7 +796,9 @@ /* 8.3.1 BSC -> BTS */ - template RSL_Message ts_RSL_DATA_REQ(RslChannelNr chan_nr, RslLinkId link_id, octetstring l3_info) := { + template (value) RSL_Message ts_RSL_DATA_REQ(template (value) RslChannelNr chan_nr, + template (value) RslLinkId link_id, + octetstring l3_info) := { msg_disc := ts_RSL_MsgDisc(RSL_MDISC_RLL, true), msg_type := RSL_MT_DATA_REQ, ies :={ @@ -797,7 +811,7 @@ template RSL_Message tr_RSL_DATA_REQ(template RslChannelNr chan_nr :=?, template RslLinkId link_id := ?, template octetstring l3_info := ?) := { - msg_disc := ts_RSL_MsgDisc(RSL_MDISC_RLL, true), + msg_disc := tr_RSL_MsgDisc(RSL_MDISC_RLL, true), msg_type := RSL_MT_DATA_REQ, ies :={ tr_RSL_IE(RSL_IE_Body:{chan_nr := chan_nr}), @@ -808,7 +822,9 @@ /* 8.3.2 BTS -> BSC */ - template RSL_Message ts_RSL_DATA_IND(RslChannelNr chan_nr, RslLinkId link_id, octetstring l3_info) := { + template (value) RSL_Message ts_RSL_DATA_IND(template (value) RslChannelNr chan_nr, + template (value) RslLinkId link_id, + octetstring l3_info) := { msg_disc := ts_RSL_MsgDisc(RSL_MDISC_RLL, true), msg_type := RSL_MT_DATA_IND, ies :={ @@ -819,7 +835,7 @@ } template RSL_Message tr_RSL_DATA_IND(template RslChannelNr chan_nr, template RslLinkId link_id, template octetstring l3_info := ?) := { - msg_disc := ts_RSL_MsgDisc(RSL_MDISC_RLL, true), + msg_disc := tr_RSL_MsgDisc(RSL_MDISC_RLL, true), msg_type := RSL_MT_DATA_IND, ies :={ tr_RSL_IE(RSL_IE_Body:{chan_nr := chan_nr}), @@ -829,7 +845,8 @@ } /* 8.3.3 BTS -> BSC */ - template RSL_Message ts_RSL_ERROR_IND(RslChannelNr chan_nr, RslLinkId link_id, RSL_Cause cause) := { + template (value) RSL_Message ts_RSL_ERROR_IND(template (value) RslChannelNr chan_nr, + template (value) RslLinkId link_id, RSL_Cause cause) := { msg_disc := ts_RSL_MsgDisc(RSL_MDISC_RLL, false), msg_type := RSL_MT_ERROR_IND, ies :={ @@ -840,7 +857,7 @@ } template RSL_Message tr_RSL_ERROR_IND(template RslChannelNr chan_nr, template RslLinkId link_id, template RSL_Cause cause := ?) := { - msg_disc := ts_RSL_MsgDisc(RSL_MDISC_RLL, false), + msg_disc := tr_RSL_MsgDisc(RSL_MDISC_RLL, false), msg_type := RSL_MT_ERROR_IND, ies :={ tr_RSL_IE(RSL_IE_Body:{chan_nr := chan_nr}), @@ -849,8 +866,48 @@ } } + /* 8.3.4 BTS <- BSC */ + template (value) RSL_Message ts_RSL_EST_REQ(template (value) RslChannelNr chan_nr, + template (value) RslLinkId link_id) := { + msg_disc := ts_RSL_MsgDisc(RSL_MDISC_RLL, false), + msg_type := RSL_MT_EST_REQ, + ies := { + t_RSL_IE(RSL_IE_CHAN_NR, RSL_IE_Body:{chan_nr := chan_nr}), + t_RSL_IE(RSL_IE_LINK_IDENT, RSL_IE_Body:{link_id := link_id}) + } + } + template RSL_Message tr_RSL_EST_REQ(template RslChannelNr chan_nr, template RslLinkId link_id) := { + msg_disc := tr_RSL_MsgDisc(RSL_MDISC_RLL, false), + msg_type := RSL_MT_EST_REQ, + ies := { + tr_RSL_IE(RSL_IE_Body:{chan_nr := chan_nr}), + tr_RSL_IE(RSL_IE_Body:{link_id := link_id}) + } + } + + /* 8.3.5 BTS -> BSC */ + template (value) RSL_Message ts_RSL_EST_CONF(template (value) RslChannelNr chan_nr, + template (value) RslLinkId link_id) := { + msg_disc := ts_RSL_MsgDisc(RSL_MDISC_RLL, false), + msg_type := RSL_MT_EST_CONF, + ies := { + t_RSL_IE(RSL_IE_CHAN_NR, RSL_IE_Body:{chan_nr := chan_nr}), + t_RSL_IE(RSL_IE_LINK_IDENT, RSL_IE_Body:{link_id := link_id}) + } + } + template RSL_Message tr_RSL_EST_CONF(template RslChannelNr chan_nr, template RslLinkId link_id) := { + msg_disc := tr_RSL_MsgDisc(RSL_MDISC_RLL, false), + msg_type := RSL_MT_EST_CONF, + ies := { + tr_RSL_IE(RSL_IE_Body:{chan_nr := chan_nr}), + tr_RSL_IE(RSL_IE_Body:{link_id := link_id}) + } + } + /* 8.3.6 BTS -> BSC */ - template RSL_Message ts_RSL_EST_IND(RslChannelNr chan_nr, RslLinkId link_id, octetstring l3_info) := { + template (value) RSL_Message ts_RSL_EST_IND(template (value) RslChannelNr chan_nr, + template (value) RslLinkId link_id, + octetstring l3_info) := { msg_disc := ts_RSL_MsgDisc(RSL_MDISC_RLL, false), msg_type := RSL_MT_EST_IND, ies := { @@ -861,7 +918,7 @@ } template RSL_Message tr_RSL_EST_IND(template RslChannelNr chan_nr, template RslLinkId link_id, template octetstring l3_info := ?) := { - msg_disc := ts_RSL_MsgDisc(RSL_MDISC_RLL, false), + msg_disc := tr_RSL_MsgDisc(RSL_MDISC_RLL, false), msg_type := RSL_MT_EST_IND, ies := { tr_RSL_IE(RSL_IE_Body:{chan_nr := chan_nr}), @@ -871,7 +928,8 @@ } /* 8.3.7 BSC -> BTS */ - template RSL_Message ts_RSL_REL_REQ(RslChannelNr chan_nr, RslLinkId link_id) := { + template (value) RSL_Message ts_RSL_REL_REQ(template (value) RslChannelNr chan_nr, + template (value) RslLinkId link_id) := { msg_disc := ts_RSL_MsgDisc(RSL_MDISC_RLL, false), msg_type := RSL_MT_REL_REQ, ies :={ @@ -881,7 +939,7 @@ } template RSL_Message tr_RSL_REL_REQ(template RslChannelNr chan_nr, template RslLinkId link_id) := { - msg_disc := ts_RSL_MsgDisc(RSL_MDISC_RLL, false), + msg_disc := tr_RSL_MsgDisc(RSL_MDISC_RLL, false), msg_type := RSL_MT_REL_REQ, ies :={ tr_RSL_IE(RSL_IE_Body:{chan_nr := chan_nr}), @@ -891,7 +949,8 @@ } /* 8.3.8 BTS -> BSC */ - template RSL_Message ts_RSL_REL_CONF(RslChannelNr chan_nr, RslLinkId link_id) := { + template (value) RSL_Message ts_RSL_REL_CONF(template (value) RslChannelNr chan_nr, + template (value) RslLinkId link_id) := { msg_disc := ts_RSL_MsgDisc(RSL_MDISC_RLL, false), msg_type := RSL_MT_REL_CONF, ies :={ @@ -900,7 +959,7 @@ } } template RSL_Message tr_RSL_REL_CONF(template RslChannelNr chan_nr, template RslLinkId link_id) := { - msg_disc := ts_RSL_MsgDisc(RSL_MDISC_RLL, false), + msg_disc := tr_RSL_MsgDisc(RSL_MDISC_RLL, false), msg_type := RSL_MT_REL_CONF, ies :={ tr_RSL_IE(RSL_IE_Body:{chan_nr := chan_nr}), @@ -909,7 +968,8 @@ } /* 8.3.9 BTS -> BSC */ - template RSL_Message ts_RSL_REL_IND(RslChannelNr chan_nr, RslLinkId link_id) := { + template (value) RSL_Message ts_RSL_REL_IND(template (value) RslChannelNr chan_nr, + template (value) RslLinkId link_id) := { msg_disc := ts_RSL_MsgDisc(RSL_MDISC_RLL, false), msg_type := RSL_MT_REL_IND, ies :={ @@ -918,7 +978,7 @@ } } template RSL_Message tr_RSL_REL_IND(template RslChannelNr chan_nr, template RslLinkId link_id) := { - msg_disc := ts_RSL_MsgDisc(RSL_MDISC_RLL, false), + msg_disc := tr_RSL_MsgDisc(RSL_MDISC_RLL, false), msg_type := RSL_MT_REL_IND, ies :={ tr_RSL_IE(RSL_IE_Body:{chan_nr := chan_nr}), @@ -927,13 +987,17 @@ } /* 8.3.10 BSC -> BTS */ - template RSL_Message ts_RSL_UNITDATA_REQ(RslChannelNr chan_nr, RslLinkId link_id, octetstring l3_info) + template (value) RSL_Message ts_RSL_UNITDATA_REQ(template (value) RslChannelNr chan_nr, + template (value) RslLinkId link_id, + octetstring l3_info) modifies ts_RSL_DATA_REQ := { msg_type := RSL_MT_UNIT_DATA_REQ } /* 8.3.11 BTS -> BSC */ - template RSL_Message ts_RSL_UNITDATA_IND(RslChannelNr chan_nr, RslLinkId link_id, octetstring l3_info) + template (value) RSL_Message ts_RSL_UNITDATA_IND(template (value) RslChannelNr chan_nr, + template (value) RslLinkId link_id, + octetstring l3_info) modifies ts_RSL_DATA_IND := { msg_type := RSL_MT_UNIT_DATA_IND } @@ -942,7 +1006,8 @@ /* DEDICATED CANNEL MANAGEMENT MESSAGES */ /* 8.4.1 BSC -> BTS */ - template RSL_Message ts_RSL_CHAN_ACT(RslChannelNr chan_nr, RSL_IE_ChannelMode mode) := { + template (value) RSL_Message ts_RSL_CHAN_ACT(template (value) RslChannelNr chan_nr, + template (value) RSL_IE_ChannelMode mode) := { msg_disc := ts_RSL_MsgDisc(RSL_MDISC_DCHAN, false), msg_type := RSL_MT_CHAN_ACTIV, ies :={ @@ -954,7 +1019,7 @@ } template RSL_Message tr_RSL_CHAN_ACT(template RslChannelNr chan_nr, template RSL_IE_ChannelMode mode) := { - msg_disc := ts_RSL_MsgDisc(RSL_MDISC_DCHAN, false), + msg_disc := tr_RSL_MsgDisc(RSL_MDISC_DCHAN, false), msg_type := RSL_MT_CHAN_ACTIV, ies :={ tr_RSL_IE(RSL_IE_Body:{chan_nr := chan_nr}), @@ -966,7 +1031,7 @@ } template RSL_Message tr_RSL_CHAN_ACT_PDCH(template RslChannelNr chan_nr, template RSL_IE_ChannelMode mode) := { - msg_disc := ts_RSL_MsgDisc(RSL_MDISC_DCHAN, false), + msg_disc := tr_RSL_MsgDisc(RSL_MDISC_DCHAN, false), msg_type := RSL_MT_CHAN_ACTIV, ies :={ tr_RSL_IE(RSL_IE_Body:{chan_nr := chan_nr}), @@ -978,7 +1043,8 @@ /* 8.4.2 BTS -> BSC */ - template RSL_Message ts_RSL_CHAN_ACT_ACK(RslChannelNr chan_nr, GsmFrameNumber fn) := { + template (value) RSL_Message ts_RSL_CHAN_ACT_ACK(template (value) RslChannelNr chan_nr, + GsmFrameNumber fn) := { msg_disc := ts_RSL_MsgDisc(RSL_MDISC_DCHAN, false), msg_type := RSL_MT_CHAN_ACTIV_ACK, ies :={ @@ -987,7 +1053,7 @@ } } template RSL_Message tr_RSL_CHAN_ACT_ACK(template RslChannelNr chan_nr) := { - msg_disc := ts_RSL_MsgDisc(RSL_MDISC_DCHAN, false), + msg_disc := tr_RSL_MsgDisc(RSL_MDISC_DCHAN, false), msg_type := RSL_MT_CHAN_ACTIV_ACK, ies := { tr_RSL_IE(RSL_IE_Body:{chan_nr := chan_nr}), @@ -996,7 +1062,8 @@ } /* 8.4.3 BTS -> BSC */ - template RSL_Message ts_RSL_CHAN_ACT_NACK(RslChannelNr chan_nr, RSL_Cause cause) := { + template (value) RSL_Message ts_RSL_CHAN_ACT_NACK(template (value) RslChannelNr chan_nr, + RSL_Cause cause) := { msg_disc := ts_RSL_MsgDisc(RSL_MDISC_DCHAN, false), msg_type := RSL_MT_CHAN_ACTIV_NACK, ies :={ @@ -1006,7 +1073,7 @@ } template RSL_Message tr_RSL_CHAN_ACT_NACK(template RslChannelNr chan_nr, template RSL_Cause cause := ?) := { - msg_disc := ts_RSL_MsgDisc(RSL_MDISC_DCHAN, false), + msg_disc := tr_RSL_MsgDisc(RSL_MDISC_DCHAN, false), msg_type := RSL_MT_CHAN_ACTIV_NACK, ies := { tr_RSL_IE(RSL_IE_Body:{chan_nr := chan_nr}), @@ -1015,7 +1082,7 @@ } /* 8.4.4 BTS -> BSC */ - template RSL_Message ts_RSL_CONN_FAIL_IND(RslChannelNr chan_nr, RSL_Cause cause) := { + template (value) RSL_Message ts_RSL_CONN_FAIL_IND(RslChannelNr chan_nr, RSL_Cause cause) := { msg_disc := ts_RSL_MsgDisc(RSL_MDISC_DCHAN, false), msg_type := RSL_MT_CONN_FAIL, ies :={ @@ -1041,7 +1108,7 @@ tr_RSL_IE(RSL_IE_Body:{chan_nr := chan_nr}) } } - template RSL_Message ts_RSL_DEACT_SACCH(RslChannelNr chan_nr) := { + template (value) RSL_Message ts_RSL_DEACT_SACCH(template (value) RslChannelNr chan_nr) := { msg_disc := ts_RSL_MsgDisc(RSL_MDISC_DCHAN, false), msg_type := RSL_MT_DEACTIVATE_SACCH, ies := { @@ -1056,7 +1123,7 @@ template OCT1 alg := ?, template octetstring key := ?, template octetstring l3_info := ?) := { - msg_disc := ts_RSL_MsgDisc(RSL_MDISC_DCHAN, false), + msg_disc := tr_RSL_MsgDisc(RSL_MDISC_DCHAN, false), msg_type := RSL_MT_ENCR_CMD, ies := { tr_RSL_IE(RSL_IE_Body:{chan_nr := chan_nr}), @@ -1065,16 +1132,17 @@ tr_RSL_IE(RSL_IE_Body:{l3_info := tr_RSL_L16V(l3_info)}) } } - template RSL_Message ts_RSL_ENCR_CMD(RslChannelNr chan_nr, RslLinkId link_id, - OCT1 alg, octetstring key, - octetstring l3_info) := { + template (value) RSL_Message ts_RSL_ENCR_CMD(template (value) RslChannelNr chan_nr, + template (value) RslLinkId link_id, + OCT1 alg, octetstring key, + octetstring l3_info) := { msg_disc := ts_RSL_MsgDisc(RSL_MDISC_DCHAN, false), msg_type := RSL_MT_ENCR_CMD, ies := { t_RSL_IE(RSL_IE_CHAN_NR, RSL_IE_Body:{chan_nr := chan_nr}), - t_RSL_IE(RSL_IE_ENCR_INFO, RSL_IE_Body:{encr_info := tr_RSL_IE_EncrInfo(alg, key)}), + t_RSL_IE(RSL_IE_ENCR_INFO, RSL_IE_Body:{encr_info := ts_RSL_IE_EncrInfo(alg, key)}), t_RSL_IE(RSL_IE_LINK_IDENT, RSL_IE_Body:{link_id := link_id}), - t_RSL_IE(RSL_IE_L3_INFO, RSL_IE_Body:{l3_info := tr_RSL_L16V(l3_info)}) + t_RSL_IE(RSL_IE_L3_INFO, RSL_IE_Body:{l3_info := ts_RSL_L16V(l3_info)}) } } @@ -1082,7 +1150,7 @@ template uint8_t meas_res_nr := ?, template RSL_IE_UplinkMeas ul_meas := ?, template RSL_IE_BS_Power bs_power := ?) := { - msg_disc := ts_RSL_MsgDisc(RSL_MDISC_DCHAN, false), + msg_disc := tr_RSL_MsgDisc(RSL_MDISC_DCHAN, false), msg_type := RSL_MT_MEAS_RES, ies := { tr_RSL_IE(RSL_IE_Body:{chan_nr := chan_nr}), @@ -1101,7 +1169,7 @@ template RSL_IE_L1Info l1_info := ?, template octetstring l3_info := ?, template uint8_t ms_to := ?) := { - msg_disc := ts_RSL_MsgDisc(RSL_MDISC_DCHAN, false), + msg_disc := tr_RSL_MsgDisc(RSL_MDISC_DCHAN, false), msg_type := RSL_MT_MEAS_RES, ies := { tr_RSL_IE(RSL_IE_Body:{chan_nr := chan_nr}), @@ -1116,7 +1184,7 @@ /* 8.4.10 BTS -> BSC */ - template RSL_Message ts_RSL_MODE_MODIFY_ACK(RslChannelNr chan_nr) := { + template (value) RSL_Message ts_RSL_MODE_MODIFY_ACK(template (value) RslChannelNr chan_nr) := { msg_disc := ts_RSL_MsgDisc(RSL_MDISC_DCHAN, false), msg_type := RSL_MT_MODE_MODIFY_ACK, ies := { @@ -1124,7 +1192,7 @@ } } template RSL_Message tr_RSL_MODE_MODIFY_ACK(template RslChannelNr chan_nr) := { - msg_disc := ts_RSL_MsgDisc(RSL_MDISC_DCHAN, false), + msg_disc := tr_RSL_MsgDisc(RSL_MDISC_DCHAN, false), msg_type := RSL_MT_MODE_MODIFY_ACK, ies := { tr_RSL_IE(RSL_IE_Body:{chan_nr := chan_nr}) @@ -1132,7 +1200,8 @@ } /* 8.4.11 BTS -> BSC */ - template RSL_Message ts_RSL_MODE_MODIFY_NACK(RslChannelNr chan_nr, RSL_Cause cause) := { + template (value) RSL_Message ts_RSL_MODE_MODIFY_NACK(template (value) RslChannelNr chan_nr, + RSL_Cause cause) := { msg_disc := ts_RSL_MsgDisc(RSL_MDISC_DCHAN, false), msg_type := RSL_MT_MODE_MODIFY_NACK, ies := { @@ -1142,7 +1211,7 @@ } template RSL_Message tr_RSL_MODE_MODIFY_NACK(template RslChannelNr chan_nr, template RSL_Cause cause) := { - msg_disc := ts_RSL_MsgDisc(RSL_MDISC_DCHAN, false), + msg_disc := tr_RSL_MsgDisc(RSL_MDISC_DCHAN, false), msg_type := RSL_MT_MODE_MODIFY_NACK, ies := { tr_RSL_IE(RSL_IE_Body:{chan_nr := chan_nr}), @@ -1153,13 +1222,13 @@ /* 8.4.14: BTS <- BSC */ template RSL_Message tr_RSL_RF_CHAN_REL(template RslChannelNr chan_nr) := { - msg_disc := ts_RSL_MsgDisc(RSL_MDISC_DCHAN, false), + msg_disc := tr_RSL_MsgDisc(RSL_MDISC_DCHAN, false), msg_type := RSL_MT_RF_CHAN_REL, ies := { tr_RSL_IE(RSL_IE_Body:{chan_nr := chan_nr}) } } - template RSL_Message ts_RSL_RF_CHAN_REL(RslChannelNr chan_nr) := { + template (value) RSL_Message ts_RSL_RF_CHAN_REL(template (value) RslChannelNr chan_nr) := { msg_disc := ts_RSL_MsgDisc(RSL_MDISC_DCHAN, false), msg_type := RSL_MT_RF_CHAN_REL, ies := { @@ -1168,22 +1237,23 @@ } /* 8.4.19 BTS -> BSC */ - template RSL_Message ts_RSL_RF_CHAN_REL_ACK(RslChannelNr chan_nr) := + template (value) RSL_Message ts_RSL_RF_CHAN_REL_ACK(template (value) RslChannelNr chan_nr) := ts_RSL_MsgDiscType(ts_RSL_MsgDisc(RSL_MDISC_DCHAN, false), RSL_MT_RF_CHAN_REL_ACK, { t_RSL_IE(RSL_IE_CHAN_NR, RSL_IE_Body:{chan_nr := chan_nr}) }); template RSL_Message tr_RSL_RF_CHAN_REL_ACK(template RslChannelNr chan_nr) := { - msg_disc := ts_RSL_MsgDisc(RSL_MDISC_DCHAN, false), + msg_disc := tr_RSL_MsgDisc(RSL_MDISC_DCHAN, false), msg_type := RSL_MT_RF_CHAN_REL_ACK, ies := { - t_RSL_IE(RSL_IE_CHAN_NR, RSL_IE_Body:{chan_nr := chan_nr}) + tr_RSL_IE(RSL_IE_Body:{chan_nr := chan_nr}) } } /* 8.6.20 BTS <- BSC */ - template RSL_Message ts_RSL_SACCH_INF_MOD(RslChannelNr chan_nr, RSL_IE_SysinfoType si_type, - octetstring l3_info) := { + template (value) RSL_Message ts_RSL_SACCH_INF_MOD(template (value) RslChannelNr chan_nr, + RSL_IE_SysinfoType si_type, + octetstring l3_info) := { msg_disc := ts_RSL_MsgDisc(RSL_MDISC_DCHAN, false), msg_type := RSL_MT_SACCH_INFO_MODIFY, ies := { @@ -1197,29 +1267,31 @@ /* COMMON CHANNEL MANAGEMENT MESSAGES */ /* 8.5.1 BTS <- BSC */ - template RSL_Message ts_RSL_BCCH_INFO(RSL_IE_SysinfoType si_type, octetstring full_bcch_info) := { + template (value) RSL_Message ts_RSL_BCCH_INFO(RSL_IE_SysinfoType si_type, + octetstring full_bcch_info) := { msg_disc := ts_RSL_MsgDisc(RSL_MDISC_CCHAN, false), msg_type := RSL_MT_BCCH_INFO, ies := { - t_RSL_IE(RSL_IE_CHAN_NR, RSL_IE_Body:{chan_nr := t_RslChanNr_BCCH(0)}), + t_RSL_IE(RSL_IE_CHAN_NR, RSL_IE_Body:{chan_nr := ts_RslChanNr_BCCH(0)}), t_RSL_IE(RSL_IE_SYSINFO_TYPE, RSL_IE_Body:{sysinfo_type := si_type}), t_RSL_IE(RSL_IE_FULL_BCCH_INFO, RSL_IE_Body:{other := ts_RSL_LV(full_bcch_info)}) } } /* 8.5.2 BTS -> BSC */ - template RSL_Message ts_RSL_RACH_LOAD_IND(uint16_t slot_ct, uint16_t busy_ct, uint16_t acc_ct) := { + template (value) RSL_Message ts_RSL_RACH_LOAD_IND(uint16_t slot_ct, uint16_t busy_ct, + uint16_t acc_ct) := { msg_disc := ts_RSL_MsgDisc(RSL_MDISC_CCHAN, false), msg_type := RSL_MT_CCCH_LOAD_IND, ies := { - t_RSL_IE(RSL_IE_CHAN_NR, RSL_IE_Body:{chan_nr := t_RslChanNr_RACH(0)}), + t_RSL_IE(RSL_IE_CHAN_NR, RSL_IE_Body:{chan_nr := ts_RslChanNr_RACH(0)}), t_RSL_IE(RSL_IE_RACH_LOAD, RSL_IE_Body:{rach_load := ts_RSL_IE_RachLoad(slot_ct, busy_ct, acc_ct)}) } } template RSL_Message tr_RSL_RACH_LOAD_IND(template uint16_t slot_ct := ?, template uint16_t busy_ct := ?, template uint16_t acc_ct) := { - msg_disc := ts_RSL_MsgDisc(RSL_MDISC_CCHAN, false), + msg_disc := tr_RSL_MsgDisc(RSL_MDISC_CCHAN, false), msg_type := RSL_MT_CCCH_LOAD_IND, ies := { tr_RSL_IE(RSL_IE_Body:{chan_nr := t_RslChanNr_RACH(0)}), @@ -1227,16 +1299,16 @@ } } - template RSL_Message ts_RSL_PAGING_LOAD_IND(uint16_t buffer_space) := { + template (value) RSL_Message ts_RSL_PAGING_LOAD_IND(uint16_t buffer_space) := { msg_disc := ts_RSL_MsgDisc(RSL_MDISC_CCHAN, false), msg_type := RSL_MT_CCCH_LOAD_IND, ies := { - t_RSL_IE(RSL_IE_CHAN_NR, RSL_IE_Body:{chan_nr := t_RslChanNr_PCH_AGCH(0)}), + t_RSL_IE(RSL_IE_CHAN_NR, RSL_IE_Body:{chan_nr := ts_RslChanNr_PCH_AGCH(0)}), t_RSL_IE(RSL_IE_PAGING_LOAD, RSL_IE_Body:{paging_load := buffer_space}) } } template RSL_Message tr_RSL_PAGING_LOAD_IND(template uint16_t buffer_space := ?) := { - msg_disc := ts_RSL_MsgDisc(RSL_MDISC_CCHAN, false), + msg_disc := tr_RSL_MsgDisc(RSL_MDISC_CCHAN, false), msg_type := RSL_MT_CCCH_LOAD_IND, ies := { tr_RSL_IE(RSL_IE_Body:{chan_nr := t_RslChanNr_PCH_AGCH(0)}), @@ -1246,18 +1318,18 @@ /* 8.5.3 BTS -> BSC */ - template RSL_Message ts_RSL_CHAN_RQD(OCT1 ra, GsmFrameNumber fn, uint8_t acc_del := 0) := { + template (value) RSL_Message ts_RSL_CHAN_RQD(OCT1 ra, GsmFrameNumber fn, uint8_t acc_del := 0) := { msg_disc := ts_RSL_MsgDisc(RSL_MDISC_CCHAN, false), msg_type := RSL_MT_CHAN_RQD, ies := { - t_RSL_IE(RSL_IE_CHAN_NR, RSL_IE_Body:{chan_nr := t_RslChanNr_RACH(0)}), + t_RSL_IE(RSL_IE_CHAN_NR, RSL_IE_Body:{chan_nr := ts_RslChanNr_RACH(0)}), t_RSL_IE(RSL_IE_REQ_REFERENCE, RSL_IE_Body:{req_ref := ts_RSL_IE_ReqRef(ra, fn)}), t_RSL_IE(RSL_IE_ACCESS_DELAY, RSL_IE_Body:{access_delay := acc_del}) } } template RSL_Message tr_RSL_CHAN_RQD(template OCT1 ra, template GsmFrameNumber fn := ?, template uint8_t acc_del := ?) := { - msg_disc := ts_RSL_MsgDisc(RSL_MDISC_CCHAN, false), + msg_disc := tr_RSL_MsgDisc(RSL_MDISC_CCHAN, false), msg_type := RSL_MT_CHAN_RQD, ies := { tr_RSL_IE(RSL_IE_Body:{chan_nr := t_RslChanNr_RACH(0)}), @@ -1267,7 +1339,8 @@ } /* 8.5.4 BTS -> BSC */ - template RSL_Message ts_DELETE_IND(RslChannelNr chan_nr, octetstring imm_ass) := { + template (value) RSL_Message ts_DELETE_IND(template (value) RslChannelNr chan_nr, + octetstring imm_ass) := { msg_disc := ts_RSL_MsgDisc(RSL_MDISC_CCHAN, false), msg_type := RSL_MT_DELETE_IND, ies := { @@ -1278,7 +1351,7 @@ /* 8.5.5 BSC -> BTS */ template RSL_Message tr_RSL_PAGING_CMD(template octetstring identity, template uint3_t tn := ?) := { - msg_disc := ts_RSL_MsgDisc(RSL_MDISC_CCHAN, false), + msg_disc := tr_RSL_MsgDisc(RSL_MDISC_CCHAN, false), msg_type := RSL_MT_PAGING_CMD, ies := { tr_RSL_IE(RSL_IE_Body:{chan_nr := t_RslChanNr_PCH_AGCH(tn)}), @@ -1287,11 +1360,11 @@ * /* opt: channel needed, eMLPP prio */ } } - template RSL_Message ts_RSL_PAGING_CMD(octetstring identity, uint8_t pg, uint3_t tn := 0) := { + template (value) RSL_Message ts_RSL_PAGING_CMD(octetstring identity, uint8_t pg, uint3_t tn := 0) := { msg_disc := ts_RSL_MsgDisc(RSL_MDISC_CCHAN, false), msg_type := RSL_MT_PAGING_CMD, ies := { - t_RSL_IE(RSL_IE_CHAN_NR, RSL_IE_Body:{chan_nr := t_RslChanNr_PCH_AGCH(tn)}), + t_RSL_IE(RSL_IE_CHAN_NR, RSL_IE_Body:{chan_nr := ts_RslChanNr_PCH_AGCH(tn)}), t_RSL_IE(RSL_IE_PAGING_GROUP, RSL_IE_Body:{paging_group := pg}), t_RSL_IE(RSL_IE_MS_IDENTITY, RSL_IE_Body:{ms_identity := ts_RSL_LV(identity)}) } @@ -1299,30 +1372,30 @@ /* 8.5.6 BSC -> BTS */ template RSL_Message tr_RSL_IMM_ASSIGN(template uint3_t tn := ?) := { - msg_disc := ts_RSL_MsgDisc(RSL_MDISC_CCHAN, false), + msg_disc := tr_RSL_MsgDisc(RSL_MDISC_CCHAN, false), msg_type := RSL_MT_IMMEDIATE_ASSIGN_CMD, ies := { tr_RSL_IE(RSL_IE_Body:{chan_nr := t_RslChanNr_PCH_AGCH(tn)}), tr_RSL_IE(RSL_IE_Body:{full_imm_ass_info := ?}) } } - template RSL_Message ts_RSL_IMM_ASSIGN(octetstring f_ass_inf, uint3_t tn := 0) := { + template (value) RSL_Message ts_RSL_IMM_ASSIGN(octetstring f_ass_inf, uint3_t tn := 0) := { msg_disc := ts_RSL_MsgDisc(RSL_MDISC_CCHAN, false), msg_type := RSL_MT_IMMEDIATE_ASSIGN_CMD, ies := { - t_RSL_IE(RSL_IE_CHAN_NR, RSL_IE_Body:{chan_nr := t_RslChanNr_PCH_AGCH(tn)}), + t_RSL_IE(RSL_IE_CHAN_NR, RSL_IE_Body:{chan_nr := ts_RslChanNr_PCH_AGCH(tn)}), t_RSL_IE(RSL_IE_FULL_IMM_ASS_INFO, RSL_IE_Body:{full_imm_ass_info := ts_RSL_LV(f_ass_inf)}) } } template RSL_Message tr_RSL_RF_RES_IND := { - msg_disc := ts_RSL_MsgDisc(RSL_MDISC_TRX_MGMT, false), + msg_disc := tr_RSL_MsgDisc(RSL_MDISC_TRX_MGMT, false), msg_type := RSL_MT_RF_RES_IND, ies := * } /* 8.6.2 BTS <- BSC */ - template RSL_Message ts_RSL_SACCH_FILL(RSL_IE_SysinfoType si_type, octetstring l3_info) := { + template (value) RSL_Message ts_RSL_SACCH_FILL(RSL_IE_SysinfoType si_type, octetstring l3_info) := { msg_disc := ts_RSL_MsgDisc(RSL_MDISC_TRX_MGMT, false), msg_type := RSL_MT_SACCH_FILL, ies := { @@ -1332,7 +1405,7 @@ } /* 8.6.4 BTS -> BSC */ - template RSL_Message ts_RSL_ERROR_REPORT(RSL_Cause cause) := { + template (value) RSL_Message ts_RSL_ERROR_REPORT(RSL_Cause cause) := { msg_disc := ts_RSL_MsgDisc(RSL_MDISC_TRX_MGMT, false), msg_type := RSL_MT_ERROR_REPORT, ies := { @@ -1340,7 +1413,7 @@ } } template RSL_Message tr_RSL_ERROR_REPORT(template RSL_Cause cause := ?) := { - msg_disc := ts_RSL_MsgDisc(RSL_MDISC_TRX_MGMT, false), + msg_disc := tr_RSL_MsgDisc(RSL_MDISC_TRX_MGMT, false), msg_type := RSL_MT_ERROR_REPORT, ies := { tr_RSL_IE(RSL_IE_Body:{cause := tr_RSL_IE_Cause(cause)}), @@ -1353,14 +1426,14 @@ /* Abis/IP specific messages */ template RSL_Message tr_RSL_IPA_CRCX(template RslChannelNr chan_nr) := { - msg_disc := ts_RSL_MsgDisc(RSL_MDISC_IPACCESS, false), + msg_disc := tr_RSL_MsgDisc(RSL_MDISC_IPACCESS, false), msg_type := RSL_MT_IPAC_CRCX, ies := { tr_RSL_IE(RSL_IE_Body:{chan_nr := chan_nr}), * } } - template RSL_Message ts_RSL_IPA_CRCX(RslChannelNr chan_nr) := { + template (value) RSL_Message ts_RSL_IPA_CRCX(template (value) RslChannelNr chan_nr) := { msg_disc := ts_RSL_MsgDisc(RSL_MDISC_IPACCESS, false), msg_type := RSL_MT_IPAC_CRCX, ies := { @@ -1369,9 +1442,9 @@ } - template RSL_Message ts_RSL_IPA_CRCX_ACK(RslChannelNr chan_nr, - uint16_t ipa_conn_id, uint32_t local_ip, - uint16_t local_port, uint7_t rtp_pt2) := { + template (value) RSL_Message ts_RSL_IPA_CRCX_ACK(template (value) RslChannelNr chan_nr, + uint16_t ipa_conn_id, uint32_t local_ip, + uint16_t local_port, uint7_t rtp_pt2) := { msg_disc := ts_RSL_MsgDisc(RSL_MDISC_IPACCESS, false), msg_type := RSL_MT_IPAC_CRCX_ACK, ies := { @@ -1386,7 +1459,7 @@ template uint16_t ipa_conn_id, template uint32_t local_ip, template uint16_t local_port) := { - msg_disc := ts_RSL_MsgDisc(RSL_MDISC_IPACCESS, false), + msg_disc := tr_RSL_MsgDisc(RSL_MDISC_IPACCESS, false), msg_type := RSL_MT_IPAC_CRCX_ACK, ies := { tr_RSL_IE(RSL_IE_Body:{chan_nr := chan_nr}), @@ -1397,7 +1470,8 @@ } } - template RSL_Message ts_RSL_IPA_CRCX_NACK(RslChannelNr chan_nr, RSL_Cause cause) := { + template (value) RSL_Message ts_RSL_IPA_CRCX_NACK(template (value) RslChannelNr chan_nr, + RSL_Cause cause) := { msg_disc := ts_RSL_MsgDisc(RSL_MDISC_IPACCESS, false), msg_type := RSL_MT_IPAC_CRCX_NACK, ies := { @@ -1407,7 +1481,7 @@ } template RSL_Message tr_RSL_IPA_CRCX_NACK(template RslChannelNr chan_nr, template RSL_Cause cause := ?) := { - msg_disc := ts_RSL_MsgDisc(RSL_MDISC_IPACCESS, false), + msg_disc := tr_RSL_MsgDisc(RSL_MDISC_IPACCESS, false), msg_type := RSL_MT_IPAC_CRCX_NACK, ies := { tr_RSL_IE(RSL_IE_Body:{chan_nr := chan_nr}), @@ -1415,10 +1489,10 @@ } } - template RSL_Message ts_RSL_IPA_MDCX(RslChannelNr chan_nr, - uint16_t ipa_conn_id, - uint32_t remote_ip, uint16_t remote_port, - uint7_t rtp_pt2) := { + template (value) RSL_Message ts_RSL_IPA_MDCX(template (value) RslChannelNr chan_nr, + uint16_t ipa_conn_id, + uint32_t remote_ip, uint16_t remote_port, + uint7_t rtp_pt2) := { msg_disc := ts_RSL_MsgDisc(RSL_MDISC_IPACCESS, false), msg_type := RSL_MT_IPAC_MDCX, ies := { @@ -1432,7 +1506,7 @@ } template RSL_Message tr_RSL_IPA_MDCX(template RslChannelNr chan_nr, template uint16_t ipa_conn_id) := { - msg_disc := ts_RSL_MsgDisc(RSL_MDISC_IPACCESS, false), + msg_disc := tr_RSL_MsgDisc(RSL_MDISC_IPACCESS, false), msg_type := RSL_MT_IPAC_MDCX, ies := { tr_RSL_IE(RSL_IE_Body:{chan_nr := chan_nr}), @@ -1441,9 +1515,10 @@ } } - template RSL_Message ts_RSL_IPA_MDCX_ACK(RslChannelNr chan_nr, template uint16_t ipa_conn_id, - uint32_t local_ip, uint16_t local_port, - uint7_t rtp_pt2) := { + template (value) RSL_Message ts_RSL_IPA_MDCX_ACK(template (value) RslChannelNr chan_nr, + uint16_t ipa_conn_id, + uint32_t local_ip, uint16_t local_port, + uint7_t rtp_pt2) := { msg_disc := ts_RSL_MsgDisc(RSL_MDISC_IPACCESS, false), msg_type := RSL_MT_IPAC_MDCX_ACK, ies := { @@ -1461,7 +1536,7 @@ template uint32_t local_ip, template uint16_t local_port, template uint7_t rtp_pt2) := { - msg_disc := ts_RSL_MsgDisc(RSL_MDISC_IPACCESS, false), + msg_disc := tr_RSL_MsgDisc(RSL_MDISC_IPACCESS, false), msg_type := RSL_MT_IPAC_MDCX_ACK, ies := { tr_RSL_IE(RSL_IE_Body:{chan_nr := chan_nr}), @@ -1474,8 +1549,9 @@ } } - template RSL_Message ts_RSL_IPA_MDCX_NACK(RslChannelNr chan_nr, RSL_Cause cause, - template uint16_t ipa_conn_id) := { + template (value) RSL_Message ts_RSL_IPA_MDCX_NACK(template (value) RslChannelNr chan_nr, + RSL_Cause cause, + template (value) uint16_t ipa_conn_id) := { msg_disc := ts_RSL_MsgDisc(RSL_MDISC_IPACCESS, false), msg_type := RSL_MT_IPAC_MDCX_NACK, ies := { @@ -1488,7 +1564,7 @@ template RSL_Message tr_RSL_IPA_MDCX_NACK(template RslChannelNr chan_nr, template RSL_Cause cause, template uint16_t ipa_conn_id) := { - msg_disc := ts_RSL_MsgDisc(RSL_MDISC_IPACCESS, false), + msg_disc := tr_RSL_MsgDisc(RSL_MDISC_IPACCESS, false), msg_type := RSL_MT_IPAC_MDCX_NACK, ies := { tr_RSL_IE(RSL_IE_Body:{chan_nr := chan_nr}), @@ -1499,8 +1575,10 @@ } - template RSL_Message ts_RSL_IPA_DLCX_IND(RslChannelNr chan_nr, uint16_t ipa_conn_id, - RSL_IE_IPA_ConnectionStats stats, RSL_Cause cause) := { + template (value) RSL_Message ts_RSL_IPA_DLCX_IND(template (value) RslChannelNr chan_nr, + uint16_t ipa_conn_id, + template (value) RSL_IE_IPA_ConnectionStats stats, + RSL_Cause cause) := { msg_disc := ts_RSL_MsgDisc(RSL_MDISC_IPACCESS, false), msg_type := RSL_MT_IPAC_DLCX_IND, ies := { @@ -1511,7 +1589,8 @@ } } - template RSL_Message ts_RSL_IPA_DLCX(RslChannelNr chan_nr, uint16_t ipa_conn_id) := { + template (value) RSL_Message ts_RSL_IPA_DLCX(template (value) RslChannelNr chan_nr, + uint16_t ipa_conn_id) := { msg_disc := ts_RSL_MsgDisc(RSL_MDISC_IPACCESS, false), msg_type := RSL_MT_IPAC_DLCX, ies := { @@ -1521,7 +1600,7 @@ } template RSL_Message tr_RSL_IPA_DLCX(template RslChannelNr chan_nr, template uint16_t ipa_conn_id := omit) := { - msg_disc := ts_RSL_MsgDisc(RSL_MDISC_IPACCESS, false), + msg_disc := tr_RSL_MsgDisc(RSL_MDISC_IPACCESS, false), msg_type := RSL_MT_IPAC_DLCX, ies := { tr_RSL_IE(RSL_IE_Body:{chan_nr := chan_nr}), @@ -1530,8 +1609,9 @@ } } - template RSL_Message ts_RSL_IPA_DLCX_ACK(RslChannelNr chan_nr, template uint16_t ipa_conn_id, - template RSL_IE_IPA_ConnectionStats stats) := { + template (value) RSL_Message ts_RSL_IPA_DLCX_ACK(template (value) RslChannelNr chan_nr, + uint16_t ipa_conn_id, + RSL_IE_IPA_ConnectionStats stats) := { msg_disc := ts_RSL_MsgDisc(RSL_MDISC_IPACCESS, false), msg_type := RSL_MT_IPAC_DLCX_ACK, ies := { @@ -1543,7 +1623,7 @@ template RSL_Message tr_RSL_IPA_DLCX_ACK(template RslChannelNr chan_nr, template uint16_t ipa_conn_id, template RSL_IE_IPA_ConnectionStats stats) := { - msg_disc := ts_RSL_MsgDisc(RSL_MDISC_IPACCESS, false), + msg_disc := tr_RSL_MsgDisc(RSL_MDISC_IPACCESS, false), msg_type := RSL_MT_IPAC_DLCX_ACK, ies := { tr_RSL_IE(RSL_IE_Body:{chan_nr := chan_nr}), @@ -1554,8 +1634,8 @@ - template RSL_Message ts_RSL_IPA_DLCX_NACK(RslChannelNr chan_nr, RSL_Cause cause, - template uint16_t ipa_conn_id) := { + template (value) RSL_Message ts_RSL_IPA_DLCX_NACK(template (value) RslChannelNr chan_nr, + RSL_Cause cause, uint16_t ipa_conn_id) := { msg_disc := ts_RSL_MsgDisc(RSL_MDISC_IPACCESS, false), msg_type := RSL_MT_IPAC_DLCX_NACK, ies := { @@ -1567,7 +1647,7 @@ } template RSL_Message tr_RSL_IPA_DLCX_NACK(template RslChannelNr chan_nr, template RSL_Cause cause) := { - msg_disc := ts_RSL_MsgDisc(RSL_MDISC_IPACCESS, false), + msg_disc := tr_RSL_MsgDisc(RSL_MDISC_IPACCESS, false), msg_type := RSL_MT_IPAC_DLCX_NACK, ies := { tr_RSL_IE(RSL_IE_Body:{chan_nr := chan_nr}), @@ -1578,7 +1658,7 @@ } - template RSL_Message ts_RSL_IPA_PDCH_ACT(RslChannelNr chan_nr) := { + template (value) RSL_Message ts_RSL_IPA_PDCH_ACT(RslChannelNr chan_nr) := { msg_disc := ts_RSL_MsgDisc(RSL_MDISC_DCHAN, false), msg_type := RSL_MT_IPAC_PDCH_ACT, ies := { -- To view, visit https://gerrit.osmocom.org/7873 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: I18828ccbc7d28dd190e745f020c724acdb0cdc8b Gerrit-PatchSet: 1 Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Owner: Harald Welte Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder From gerrit-no-reply at lists.osmocom.org Wed Apr 18 22:31:02 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Wed, 18 Apr 2018 22:31:02 +0000 Subject: [MERGED] osmo-ttcn3-hacks[master]: LAPDm: Re-structure: Merge Frame type A+B which are really t... In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: LAPDm: Re-structure: Merge Frame type A+B which are really the same ...................................................................... LAPDm: Re-structure: Merge Frame type A+B which are really the same A is B with zero-length payload. No need to separate them. Change-Id: I7b3079899f42a61d67be03e3a17346af80d7b3be --- M bts/BTS_Tests.ttcn M lapdm/L1CTL_Test.ttcn M library/LAPDm_RAW_PT.ttcn M library/LAPDm_Types.ttcn 4 files changed, 65 insertions(+), 71 deletions(-) Approvals: Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/bts/BTS_Tests.ttcn b/bts/BTS_Tests.ttcn index 6cb20c3..f820cf4 100644 --- a/bts/BTS_Tests.ttcn +++ b/bts/BTS_Tests.ttcn @@ -1068,9 +1068,9 @@ ea := true } -template LapdmFrameB ts_LAPDm_B(LapdmSapi sapi, boolean c_r, boolean p, octetstring pl) := { +template LapdmFrameAB ts_LAPDm_AB(LapdmSapi sapi, boolean c_r, boolean p, octetstring pl) := { addr := ts_LapdmAddr(sapi, c_r), - ctrl := t_LapdmCtrlUI(p), + ctrl := ts_LapdmCtrlUI(p), len := 0, /* overwritten */ m := false, el := 1, @@ -1083,9 +1083,9 @@ [] L1CTL.receive(tr_L1CTL_DATA_IND(g_chan_nr, tr_RslLinkID_SACCH(?))) -> value l1_dl { log("SACCH received: ", l1_dl.payload.data_ind.payload); var GsmRrL3Message meas_rep := valueof(ts_MEAS_REP(true, 23, 23, 0, 0, omit)); - var LapdmFrameB lb := valueof(ts_LAPDm_B(0, false, false, enc_GsmRrL3Message(meas_rep))); + var LapdmFrameAB lb := valueof(ts_LAPDm_AB(0, false, false, enc_GsmRrL3Message(meas_rep))); log("LAPDm: ", lb); - var octetstring pl := '0000'O & enc_LapdmFrameB(lb); + var octetstring pl := '0000'O & enc_LapdmFrameAB(lb); L1CTL.send(ts_L1CTL_DATA_REQ(g_chan_nr, ts_RslLinkID_SACCH(0), pl)); repeat; } diff --git a/lapdm/L1CTL_Test.ttcn b/lapdm/L1CTL_Test.ttcn index 98dc43b..97704ac 100644 --- a/lapdm/L1CTL_Test.ttcn +++ b/lapdm/L1CTL_Test.ttcn @@ -45,9 +45,9 @@ } /* template for a valid SABM frame */ template LapdmFrame LAPDm_B_SABM(template GsmSapi sapi, octetstring payload) := { - b := { + ab := { addr := tr_LapdmAddr(sapi, false), - ctrl := t_LapdmCtrlSABM(true), + ctrl := tr_LapdmCtrlSABM(true), len := lengthof(payload), m := false, el := 1, @@ -57,9 +57,9 @@ /* template for a valid UA frame */ template LapdmFrame tr_LAPDm_B_UA(template GsmSapi sapi, template octetstring payload) := { - b := { + ab := { addr := tr_LapdmAddr(sapi, false), - ctrl := t_LapdmCtrlUA(true), + ctrl := tr_LapdmCtrlUA(true), len := ?, m := false, el := 1, @@ -69,9 +69,9 @@ /* template for a valid UA frame */ template LapdmFrame LAPDm_B_UA(template GsmSapi sapi, octetstring payload) := { - b := { + ab := { addr := tr_LapdmAddr(sapi, false), - ctrl := t_LapdmCtrlUA(true), + ctrl := tr_LapdmCtrlUA(true), len := lengthof(payload), m := false, el := 1, @@ -81,9 +81,9 @@ /* template for a valid UI frame */ template LapdmFrame LAPDm_B_UI(template GsmSapi sapi, octetstring payload) := { - b := { + ab := { addr := tr_LapdmAddr(sapi, true), - ctrl := t_LapdmCtrlUI(false), + ctrl := tr_LapdmCtrlUI(false), len := lengthof(payload), m := false, el := 1, @@ -92,7 +92,7 @@ } template LapdmFrame t_nopayload(template GsmSapi sapi) := { - b := { + ab := { addr := tr_LapdmAddr(sapi, true), ctrl := ?, len := 0, @@ -103,14 +103,14 @@ } template LapdmFrame LAPDm_B_DISC(template GsmSapi sapi) modifies t_nopayload := { - b := { - ctrl := t_LapdmCtrlDISC(true) + ab := { + ctrl := tr_LapdmCtrlDISC(true) } } template LapdmFrame LAPDm_B_RR(template GsmSapi sapi, template uint3_t nr) modifies t_nopayload := { - b := { - ctrl := t_LapdmCtrlRR(nr, false) + ab := { + ctrl := tr_LapdmCtrlRR(nr, false) } } @@ -232,12 +232,12 @@ log("DEC UI CU: ", dec_LapdmCtrlU('03'O)); log("DEC UI CT: ", dec_LapdmCtrl('03'O)); - log("DEC UA: ", dec_LapdmFrameB('017301'O)); - log("DEC UI: ", dec_LapdmFrameA('030301'O)); - log("DEC I: ", dec_LapdmFrameA('030001'O)); - log("DEC S: ", dec_LapdmFrameA('030101'O)); - log("DEC: ", dec_LapdmFrameB('030301'O)); - log("DEC: ", dec_LapdmFrameB('0303012B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B'O)); + log("DEC UA: ", dec_LapdmFrameAB('017301'O)); + log("DEC UI: ", dec_LapdmFrameAB('030301'O)); + log("DEC I: ", dec_LapdmFrameAB('030001'O)); + log("DEC S: ", dec_LapdmFrameAB('030101'O)); + log("DEC: ", dec_LapdmFrameAB('030301'O)); + log("DEC: ", dec_LapdmFrameAB('0303012B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B'O)); } control { diff --git a/library/LAPDm_RAW_PT.ttcn b/library/LAPDm_RAW_PT.ttcn index d6d3be4..bdfc50b 100644 --- a/library/LAPDm_RAW_PT.ttcn +++ b/library/LAPDm_RAW_PT.ttcn @@ -433,7 +433,7 @@ lpd.sacch := false; } lpd.sapi := dl.dl_info.link_id.sapi; - lpd.lapdm.b := dec_LapdmFrameB(dl.payload.data_ind.payload); + lpd.lapdm.ab := dec_LapdmFrameAB(dl.payload.data_ind.payload); LAPDM_SP.send(lpd); } diff --git a/library/LAPDm_Types.ttcn b/library/LAPDm_Types.ttcn index 98f6956..91f55fa 100644 --- a/library/LAPDm_Types.ttcn +++ b/library/LAPDm_Types.ttcn @@ -1,5 +1,5 @@ /* LAPDm definitiona according to 3GPP TS 44.006 */ -/* (C) 2017 bh Harald Welte */ +/* (C) 2017-2018 bh Harald Welte */ module LAPDm_Types { import from General_Types all; @@ -9,18 +9,6 @@ type BIT2 LapdmSBits; type BIT3 LapdmUBits; type BIT2 LapdmU2Bits; - - type record LapdmLengthIndicator { - uint6_t len, - boolean m, - uint1_t el - } with { variant "FIELDORDER(msb)" }; - - template LapdmLengthIndicator t_LapdmLengthIndicator(template uint6_t len, boolean m := false) := { - len := len, - m := m, - el := 1 - }; /* TS 44.006 Figure 4 */ type record LapdmAddressField { @@ -32,6 +20,14 @@ } with { variant "FIELDORDER(msb)" }; template LapdmAddressField tr_LapdmAddr(template LapdmSapi sapi, template boolean c_r) := { + spare := '0'B, + lpd := 0, + sapi := sapi, + c_r := c_r, + ea := true + }; + + template (value) LapdmAddressField ts_LapdmAddr(LapdmSapi sapi, boolean c_r) := { spare := '0'B, lpd := 0, sapi := sapi, @@ -74,50 +70,64 @@ /* TS 44.006 Table 4 */ - template LapdmCtrl t_LapdmCtrlS := { + template LapdmCtrl tr_LapdmCtrlS := { s := { spare := '01'B, s := ?, p_f := ?, n_r := ? } }; - template LapdmCtrl t_LapdmCtrlU := { + template LapdmCtrl tr_LapdmCtrlU := { u := { spare := '11'B, u2 := ?, p_f := ?, u := ? } }; /* TS 44.006 Table 4 */ - template LapdmCtrl t_LapdmCtrlI(template uint3_t nr, template uint3_t ns, template boolean p) := { + template LapdmCtrl tr_LapdmCtrlI(template uint3_t nr, template uint3_t ns, template boolean p) := { i := { spare := '0'B, n_s := ns, p := p, n_r := nr } }; - template LapdmCtrl t_LapdmCtrlRR(template uint3_t nr, template boolean pf) modifies t_LapdmCtrlS := { + template LapdmCtrl tr_LapdmCtrlRR(template uint3_t nr, template boolean pf) modifies tr_LapdmCtrlS := { s := { s:= '00'B, p_f := pf, n_r := nr } }; - template LapdmCtrl t_LapdmCtrlRNR(template uint3_t nr, template boolean pf) modifies t_LapdmCtrlS := { + template LapdmCtrl tr_LapdmCtrlRNR(template uint3_t nr, template boolean pf) modifies tr_LapdmCtrlS := { s := { s:= '01'B, p_f := pf, n_r := nr } }; - template LapdmCtrl t_LapdmCtrlREJ(template uint3_t nr, template boolean pf) modifies t_LapdmCtrlS := { + template LapdmCtrl tr_LapdmCtrlREJ(template uint3_t nr, template boolean pf) modifies tr_LapdmCtrlS := { s := { s:= '10'B, p_f := pf, n_r := nr } }; - template LapdmCtrl t_LapdmCtrlSABM(template boolean p) modifies t_LapdmCtrlU := { + template LapdmCtrl tr_LapdmCtrlSABM(template boolean p) modifies tr_LapdmCtrlU := { u := { u2 := '11'B, p_f := p, u := '001'B } }; + template (value) LapdmCtrl ts_LapdmCtrlSABM(boolean p) := { + u := { spare := '11'B, u2 := '11'B, p_f := p, u := '001'B } + }; - template LapdmCtrl t_LapdmCtrlDM(template boolean f) modifies t_LapdmCtrlU := { + template LapdmCtrl tr_LapdmCtrlDM(template boolean f) modifies tr_LapdmCtrlU := { u := { u2 := '11'B, p_f := f, u := '000'B } }; - template LapdmCtrl t_LapdmCtrlUI(template boolean p) modifies t_LapdmCtrlU := { + template LapdmCtrl tr_LapdmCtrlUI(template boolean p) modifies tr_LapdmCtrlU := { u := { u2 := '00'B, p_f := p, u := '000'B } }; + template (value) LapdmCtrl ts_LapdmCtrlUI(boolean p) := { + u := { spare := '11'B, u2 := '00'B, p_f := p, u := '000'B } + }; - template LapdmCtrl t_LapdmCtrlDISC(template boolean p) modifies t_LapdmCtrlU := { + template LapdmCtrl tr_LapdmCtrlDISC(template boolean p) modifies tr_LapdmCtrlU := { u := { u2 := '00'B, p_f := p, u := '010'B } }; + template LapdmCtrl ts_LapdmCtrlDISC(boolean p) := { + u := { spare := '11'B, u2 := '00'B, p_f := p, u := '010'B } + }; - template LapdmCtrl t_LapdmCtrlUA(template boolean f) modifies t_LapdmCtrlU := { + template LapdmCtrl tr_LapdmCtrlUA(template boolean f) modifies tr_LapdmCtrlU := { u := { u2 := '00'B, p_f := f, u := '011'B } }; + template (value) LapdmCtrl ts_LapdmCtrlUA(boolean f) := { + u := { spare := '11'B, u2 := '00'B, p_f := f, u := '011'B } + }; + + external function dec_LapdmAddressField(in octetstring stream) return LapdmAddressField with { extension "prototype(convert) decode(RAW)" }; @@ -128,21 +138,6 @@ external function dec_LapdmCtrlU(in octetstring stream) return LapdmCtrlU with { extension "prototype(convert) decode(RAW)" }; - external function dec_LapdmLengthIndicator(in octetstring stream) return LapdmLengthIndicator - with { extension "prototype(convert) decode(RAW)" }; - - /* Format A is used on DCCHs for frames where there is no information field */ - type record LapdmFrameA { - LapdmAddressField addr, - LapdmCtrl ctrl, - LapdmLengthIndicator len - } with { variant "" }; - - external function enc_LapdmFrameA(in LapdmFrameA si) return octetstring - with { extension "prototype(convert) encode(RAW)" }; - external function dec_LapdmFrameA(in octetstring stream) return LapdmFrameA - with { extension "prototype(convert) decode(RAW)" }; - /* Formats B, Bter and B4 are used on DCCHs for frames containing an information field: /* - format Bter is used on request of higher layers if and only if short L2 header type 1 is * supported and a UI command is to be transmitted on SAPI 0 */ @@ -151,19 +146,19 @@ /* Format Bbis is used only on BCCH, PCH, NCH, and AGCH. /* Format B */ - type record LapdmFrameB { + type record LapdmFrameAB { LapdmAddressField addr, LapdmCtrl ctrl, - uint6_t len, + uint6_t len, boolean m, - uint1_t el (1), - octetstring payload + uint1_t el, + octetstring payload /* zero-length in Frame A */ } with { variant (len) "LENGTHTO(payload)" variant "FIELDORDER(msb)" }; - external function enc_LapdmFrameB(in LapdmFrameB si) return octetstring + external function enc_LapdmFrameAB(in LapdmFrameAB si) return octetstring with { extension "prototype(convert) encode(RAW)" }; - external function dec_LapdmFrameB(in octetstring stream) return LapdmFrameB + external function dec_LapdmFrameAB(in octetstring stream) return LapdmFrameAB with { extension "prototype(convert) decode(RAW)" }; /* Format B4 */ @@ -188,8 +183,7 @@ with { extension "prototype(convert) decode(RAW)" }; type union LapdmFrame { - LapdmFrameA a, - LapdmFrameB b, + LapdmFrameAB ab, LapdmFrameBbis bbis, LapdmFrameB4 b4 } with { variant "" }; -- To view, visit https://gerrit.osmocom.org/7254 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: I7b3079899f42a61d67be03e3a17346af80d7b3be Gerrit-PatchSet: 5 Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Owner: Harald Welte Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder From gerrit-no-reply at lists.osmocom.org Wed Apr 18 22:31:20 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Wed, 18 Apr 2018 22:31:20 +0000 Subject: libosmocore[master]: osmo_sockaddr_is_local: Fix memleak In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7872 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I778d3c1f162abce0595e62670c29c5134bccd28d Gerrit-PatchSet: 1 Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Wed Apr 18 22:31:29 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Wed, 18 Apr 2018 22:31:29 +0000 Subject: [MERGED] libosmocore[master]: osmo_sockaddr_is_local: Fix memleak In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: osmo_sockaddr_is_local: Fix memleak ...................................................................... osmo_sockaddr_is_local: Fix memleak Catched by AddressSanitizer in osmo-bts-trx while running tests in osmo-gsm-tester: ==31738==ERROR: LeakSanitizer: detected memory leaks Direct leak of 5744 byte(s) in 1 object(s) allocated from: #0 0x7ff7ec789ed0 in calloc (/usr/lib/x86_64-linux-gnu/libasan.so.3+0xc1ed0) #1 0x7ff7e952697c (/lib/x86_64-linux-gnu/libc.so.6+0x10297c) #2 0x7ff7e95274df in getifaddrs (/lib/x86_64-linux-gnu/libc.so.6+0x1034df) #3 0x7ff7eadcdc8f in osmo_sockaddr_is_local libosmocore/src/socket.c:537 Change-Id: I778d3c1f162abce0595e62670c29c5134bccd28d --- M src/socket.c 1 file changed, 4 insertions(+), 1 deletion(-) Approvals: Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/src/socket.c b/src/socket.c index d96f664..cd73f17 100644 --- a/src/socket.c +++ b/src/socket.c @@ -543,10 +543,13 @@ for (ifa = ifaddr; ifa != NULL; ifa = ifa->ifa_next) { if (!ifa->ifa_addr) continue; - if (sockaddr_equal(ifa->ifa_addr, addr, addrlen)) + if (sockaddr_equal(ifa->ifa_addr, addr, addrlen)) { + freeifaddrs(ifaddr); return 1; + } } + freeifaddrs(ifaddr); return 0; } -- To view, visit https://gerrit.osmocom.org/7872 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: I778d3c1f162abce0595e62670c29c5134bccd28d Gerrit-PatchSet: 1 Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder From jenkins at lists.osmocom.org Wed Apr 18 22:42:26 2018 From: jenkins at lists.osmocom.org (jenkins at lists.osmocom.org) Date: Wed, 18 Apr 2018 22:42:26 +0000 (UTC) Subject: =?UTF-8?Q?Build_failed_in_Jenkins:_master-rtl-sdr_=C2=BB_a1=3Ddefau?= =?UTF-8?Q?lt,a2=3Ddefault,a3=3Ddefault,osmocom-master-debian9_#3?= In-Reply-To: <932014329.458.1524090547819.JavaMail.jenkins@jenkins.osmocom.org> References: <932014329.458.1524090547819.JavaMail.jenkins@jenkins.osmocom.org> Message-ID: <1994252977.459.1524091346947.JavaMail.jenkins@jenkins.osmocom.org> See ------------------------------------------ [...truncated 93.24 KB...] make[2]: Entering directory ' make[2]: Nothing to be done for 'dvi'. make[2]: Leaving directory ' Making dvi in src make[2]: Entering directory ' make[2]: Nothing to be done for 'dvi'. make[2]: Leaving directory ' make[2]: Entering directory ' make[2]: Nothing to be done for 'dvi-am'. make[2]: Leaving directory ' make[1]: Leaving directory ' make[1]: Entering directory ' make check-recursive make[2]: Entering directory ' Making check in include make[3]: Entering directory ' make[3]: Nothing to be done for 'check'. make[3]: Leaving directory ' Making check in src make[3]: Entering directory ' make[3]: Nothing to be done for 'check'. make[3]: Leaving directory ' make[3]: Entering directory ' make[3]: Leaving directory ' make[2]: Leaving directory ' make[1]: Leaving directory ' make[1]: Entering directory ' make install-recursive make[2]: Entering directory ' Making install in include make[3]: Entering directory ' make[4]: Entering directory ' make[4]: Nothing to be done for 'install-exec-am'. /bin/mkdir -p ' /usr/bin/install -c -m 644 ../../../include/rtl-sdr.h ../../../include/rtl-sdr_export.h ' make[4]: Leaving directory ' make[3]: Leaving directory ' Making install in src make[3]: Entering directory ' make[4]: Entering directory ' /bin/mkdir -p ' /bin/bash ../libtool --mode=install /usr/bin/install -c librtlsdr.la ' libtool: install: /usr/bin/install -c .libs/librtlsdr.so.0.0.5 libtool: install: (cd && { ln -s -f librtlsdr.so.0.0.5 librtlsdr.so.0 || { rm -f librtlsdr.so.0 && ln -s librtlsdr.so.0.0.5 librtlsdr.so.0; }; }) libtool: install: (cd && { ln -s -f librtlsdr.so.0.0.5 librtlsdr.so || { rm -f librtlsdr.so && ln -s librtlsdr.so.0.0.5 librtlsdr.so; }; }) libtool: install: /usr/bin/install -c .libs/librtlsdr.lai libtool: install: /usr/bin/install -c .libs/librtlsdr.a libtool: install: chmod 644 libtool: install: ranlib libtool: finish: PATH="/usr/local/bin:/usr/bin:/bin:/usr/games:/home/osmocom-build/bin:/sbin" ldconfig -n ---------------------------------------------------------------------- Libraries have been installed in: If you ever happen to want to link against installed libraries in a given directory, LIBDIR, you must either use libtool, and specify the full pathname of the library, or use the '-LLIBDIR' flag during linking and do at least one of the following: - add LIBDIR to the 'LD_LIBRARY_PATH' environment variable during execution - add LIBDIR to the 'LD_RUN_PATH' environment variable during linking - use the '-Wl,-rpath -Wl,LIBDIR' linker flag - have your system administrator add LIBDIR to '/etc/ld.so.conf' See any operating system documentation about shared libraries for more information, such as the ld(1) and ld.so(8) manual pages. ---------------------------------------------------------------------- /bin/mkdir -p ' /bin/bash ../libtool --mode=install /usr/bin/install -c rtl_sdr rtl_tcp rtl_test rtl_fm rtl_eeprom rtl_adsb rtl_power ' libtool: install: /usr/bin/install -c .libs/rtl_sdr libtool: install: /usr/bin/install -c .libs/rtl_tcp libtool: install: /usr/bin/install -c .libs/rtl_test libtool: install: /usr/bin/install -c .libs/rtl_fm libtool: install: /usr/bin/install -c .libs/rtl_eeprom libtool: install: /usr/bin/install -c .libs/rtl_adsb libtool: install: /usr/bin/install -c .libs/rtl_power make[4]: Nothing to be done for 'install-data-am'. make[4]: Leaving directory ' make[3]: Leaving directory ' make[3]: Entering directory ' make[4]: Entering directory ' make[4]: Nothing to be done for 'install-exec-am'. /bin/mkdir -p ' /usr/bin/install -c -m 644 ./doc/html.tar ' /bin/mkdir -p ' /usr/bin/install -c -m 644 librtlsdr.pc ' make install-data-hook make[5]: Entering directory ' cd && tar xf html.tar --strip-components 1 && rm -f html.tar make[5]: Leaving directory ' make[4]: Leaving directory ' make[3]: Leaving directory ' make[2]: Leaving directory ' make[1]: Leaving directory ' make[1]: Entering directory ' Making installcheck in include make[2]: Entering directory ' make[2]: Nothing to be done for 'installcheck'. make[2]: Leaving directory ' Making installcheck in src make[2]: Entering directory ' make[2]: Nothing to be done for 'installcheck'. make[2]: Leaving directory ' make[2]: Entering directory ' make[2]: Nothing to be done for 'installcheck-am'. make[2]: Leaving directory ' make[1]: Leaving directory ' make[1]: Entering directory ' Making uninstall in include make[2]: Entering directory ' ( cd ' && rm -f rtl-sdr.h rtl-sdr_export.h ) make[2]: Leaving directory ' Making uninstall in src make[2]: Entering directory ' ( cd ' && rm -f rtl_sdr rtl_tcp rtl_test rtl_fm rtl_eeprom rtl_adsb rtl_power ) /bin/bash ../libtool --mode=uninstall rm -f ' libtool: uninstall: rm -f make[2]: Leaving directory ' make[2]: Entering directory ' ( cd ' && rm -f html.tar ) ( cd ' && rm -f librtlsdr.pc ) make uninstall-hook make[3]: Entering directory ' cd && rm -rf make[3]: Leaving directory ' make[2]: Leaving directory ' make[1]: Leaving directory ' make[1]: Entering directory ' make[1]: Leaving directory ' make[1]: Entering directory ' make install-recursive make[2]: Entering directory ' Making install in include make[3]: Entering directory ' make[4]: Entering directory ' make[4]: Nothing to be done for 'install-exec-am'. /bin/mkdir -p '/tmp/am-dc-27781/ /usr/bin/install -c -m 644 ../../../include/rtl-sdr.h ../../../include/rtl-sdr_export.h '/tmp/am-dc-27781/ make[4]: Leaving directory ' make[3]: Leaving directory ' Making install in src make[3]: Entering directory ' make[4]: Entering directory ' /bin/mkdir -p '/tmp/am-dc-27781/ /bin/bash ../libtool --mode=install /usr/bin/install -c librtlsdr.la '/tmp/am-dc-27781/ libtool: install: /usr/bin/install -c .libs/librtlsdr.so.0.0.5 /tmp/am-dc-27781/ libtool: install: (cd /tmp/am-dc-27781/ && { ln -s -f librtlsdr.so.0.0.5 librtlsdr.so.0 || { rm -f librtlsdr.so.0 && ln -s librtlsdr.so.0.0.5 librtlsdr.so.0; }; }) libtool: install: (cd /tmp/am-dc-27781/ && { ln -s -f librtlsdr.so.0.0.5 librtlsdr.so || { rm -f librtlsdr.so && ln -s librtlsdr.so.0.0.5 librtlsdr.so; }; }) libtool: install: /usr/bin/install -c .libs/librtlsdr.lai /tmp/am-dc-27781/ libtool: install: /usr/bin/install -c .libs/librtlsdr.a /tmp/am-dc-27781/ libtool: install: chmod 644 /tmp/am-dc-27781/ libtool: install: ranlib /tmp/am-dc-27781/ libtool: warning: remember to run 'libtool --finish /bin/mkdir -p '/tmp/am-dc-27781/ /bin/bash ../libtool --mode=install /usr/bin/install -c rtl_sdr rtl_tcp rtl_test rtl_fm rtl_eeprom rtl_adsb rtl_power '/tmp/am-dc-27781/ libtool: warning: 'librtlsdr.la' has not been installed in ' libtool: install: /usr/bin/install -c .libs/rtl_sdr /tmp/am-dc-27781/ libtool: warning: 'librtlsdr.la' has not been installed in ' libtool: install: /usr/bin/install -c .libs/rtl_tcp /tmp/am-dc-27781/ libtool: warning: 'librtlsdr.la' has not been installed in ' libtool: install: /usr/bin/install -c .libs/rtl_test /tmp/am-dc-27781/ libtool: warning: 'librtlsdr.la' has not been installed in ' libtool: install: /usr/bin/install -c .libs/rtl_fm /tmp/am-dc-27781/ libtool: warning: 'librtlsdr.la' has not been installed in ' libtool: install: /usr/bin/install -c .libs/rtl_eeprom /tmp/am-dc-27781/ libtool: warning: 'librtlsdr.la' has not been installed in ' libtool: install: /usr/bin/install -c .libs/rtl_adsb /tmp/am-dc-27781/ libtool: warning: 'librtlsdr.la' has not been installed in ' libtool: install: /usr/bin/install -c .libs/rtl_power /tmp/am-dc-27781/ make[4]: Nothing to be done for 'install-data-am'. make[4]: Leaving directory ' make[3]: Leaving directory ' make[3]: Entering directory ' make[4]: Entering directory ' make[4]: Nothing to be done for 'install-exec-am'. /bin/mkdir -p '/tmp/am-dc-27781/ /usr/bin/install -c -m 644 ./doc/html.tar '/tmp/am-dc-27781/ /bin/mkdir -p '/tmp/am-dc-27781/ /usr/bin/install -c -m 644 librtlsdr.pc '/tmp/am-dc-27781/ make install-data-hook make[5]: Entering directory ' cd /tmp/am-dc-27781/ && tar xf html.tar --strip-components 1 && rm -f html.tar make[5]: Leaving directory ' make[4]: Leaving directory ' make[3]: Leaving directory ' make[2]: Leaving directory ' make[1]: Leaving directory ' make[1]: Entering directory ' Making uninstall in include make[2]: Entering directory ' ( cd '/tmp/am-dc-27781/ && rm -f rtl-sdr.h rtl-sdr_export.h ) make[2]: Leaving directory ' Making uninstall in src make[2]: Entering directory ' ( cd '/tmp/am-dc-27781/ && rm -f rtl_sdr rtl_tcp rtl_test rtl_fm rtl_eeprom rtl_adsb rtl_power ) /bin/bash ../libtool --mode=uninstall rm -f '/tmp/am-dc-27781/ libtool: uninstall: rm -f /tmp/am-dc-27781/ /tmp/am-dc-27781/ /tmp/am-dc-27781/ /tmp/am-dc-27781/ /tmp/am-dc-27781/ make[2]: Leaving directory ' make[2]: Entering directory ' ( cd '/tmp/am-dc-27781/ && rm -f html.tar ) ( cd '/tmp/am-dc-27781/ && rm -f librtlsdr.pc ) make uninstall-hook make[3]: Entering directory ' cd /tmp/am-dc-27781/ && rm -rf make[3]: Leaving directory ' make[2]: Leaving directory ' make[1]: Leaving directory ' make[1]: Entering directory ' ERROR: files left after uninstall: (check DESTDIR support) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Makefile:757: recipe for target 'distuninstallcheck' failed make[1]: *** [distuninstallcheck] Error 1 make[1]: Leaving directory ' Makefile:701: recipe for target 'distcheck' failed make: *** [distcheck] Error 1 + cat-testlogs.sh Build step 'Execute shell' marked build as failure [WARNINGS]Skipping publisher since build result is FAILURE From gerrit-no-reply at lists.osmocom.org Thu Apr 19 09:33:07 2018 From: gerrit-no-reply at lists.osmocom.org (Stefan Sperling) Date: Thu, 19 Apr 2018 09:33:07 +0000 Subject: [PATCH] osmo-hlr[master]: rewrite subscriber_update_notify() without calls into luop In-Reply-To: References: Message-ID: Hello Neels Hofmeyr, Jenkins Builder, I'd like you to reexamine a change. Please visit https://gerrit.osmocom.org/7743 to look at the new patch set (#3). rewrite subscriber_update_notify() without calls into luop This function relied on implementation details of the luop code. Port what is necessary for an independent Insert Subscriber Data Tx operation from the luop code into this function. A next possible step would be to try to merge both of these into a common implementation, but that is left for future work. The TTCN3 test TC_vty_msisdn_isd is still passing (it currently triggers the "circuit switched domain" case because it does not advertise itself as an SGSN in the IPA unit name). Change-Id: I06c43ece2b48dc63d599000eb6d6d51e08963067 Related: OS#2785 --- M src/gsup_server.h M src/hlr.c 2 files changed, 73 insertions(+), 8 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-hlr refs/changes/43/7743/3 diff --git a/src/gsup_server.h b/src/gsup_server.h index 74062d4..f9a5869 100644 --- a/src/gsup_server.h +++ b/src/gsup_server.h @@ -4,6 +4,7 @@ #include #include #include +#include struct osmo_gsup_conn; @@ -33,6 +34,10 @@ struct tlv_parsed ccm; unsigned int auc_3g_ind; /*!< IND index used for UMTS AKA SQN */ + + /* Set when Location Update is received: */ + bool supports_cs; /* client supports OSMO_GSUP_CN_DOMAIN_CS */ + bool supports_ps; /* client supports OSMO_GSUP_CN_DOMAIN_PS */ }; diff --git a/src/hlr.c b/src/hlr.c index 3845993..d068e15 100644 --- a/src/hlr.c +++ b/src/hlr.c @@ -62,19 +62,75 @@ return; llist_for_each_entry(co, &g_hlr->gs->clients, list) { - struct lu_operation *luop = lu_op_alloc_conn(co); - if (!luop) { + struct osmo_gsup_message gsup = { + .message_type = OSMO_GSUP_MSGT_INSERT_DATA_REQUEST + }; + uint8_t *peer; + int peer_len; + uint8_t msisdn_enc[43]; /* TODO use constant; TS 24.008 10.5.4.7 */ + uint8_t apn[APN_MAXLEN]; + int len; + struct msgb *msg_out; + + peer_len = osmo_gsup_conn_ccm_get(co, &peer, IPAC_IDTAG_SERNR); + if (peer_len < 0) { LOGP(DMAIN, LOGL_ERROR, - "IMSI='%s': Cannot notify GSUP client, cannot allocate lu_operation," + "IMSI='%s': Cannot notify GSUP client, cannot get peer name " " for %s:%u\n", subscr->imsi, co && co->conn && co->conn->server? co->conn->server->addr : "unset", co && co->conn && co->conn->server? co->conn->server->port : 0); continue; } - luop->subscr = *subscr; - luop->state = LU_S_LU_RECEIVED; /* Pretend we received a location update. */ - lu_op_tx_insert_subscr_data(luop); - lu_op_free(luop); + + osmo_strlcpy(gsup.imsi, subscr->imsi, GSM23003_IMSI_MAX_DIGITS + 1); + + len = gsm48_encode_bcd_number(msisdn_enc, sizeof(msisdn_enc), 0, subscr->msisdn); + if (len < 1) { + LOGP(DMAIN, LOGL_ERROR, "%s: Error: cannot encode MSISDN '%s'\n", + subscr->imsi, subscr->msisdn); + continue; + } + gsup.msisdn_enc = msisdn_enc; + gsup.msisdn_enc_len = len; + + if (co->supports_ps) { + gsup.cn_domain = OSMO_GSUP_CN_DOMAIN_PS; + + /* FIXME: PDP infos - use more fine-grained access control + gsup.cn_domain = OSMO_GSUP_CN_DOMAIN_CS; + instead of wildcard APN */ + len = osmo_apn_from_str(apn, sizeof(apn), "*"); + if (len > 0) { + gsup.pdp_infos[0].apn_enc = apn; + gsup.pdp_infos[0].apn_enc_len = len; + gsup.pdp_infos[0].have_info = 1; + gsup.num_pdp_infos = 1; + /* FIXME: use real value: */ + gsup.pdp_infos[0].context_id = 1; + } + } else + gsup.cn_domain = OSMO_GSUP_CN_DOMAIN_CS; + + /* Send ISD to MSC/SGSN */ + msg_out = msgb_alloc_headroom(1024+16, 16, "GSUP ISD UPDATE"); + if (msg_out == NULL) { + LOGP(DMAIN, LOGL_ERROR, + "IMSI='%s': Cannot notify GSUP client; could not allocate msg buffer " + " for %s:%u\n", subscr->imsi, + co && co->conn && co->conn->server? co->conn->server->addr : "unset", + co && co->conn && co->conn->server? co->conn->server->port : 0); + continue; + } + + osmo_gsup_encode(msg_out, &gsup); + if (osmo_gsup_addr_send(g_hlr->gs, peer, peer_len, msg_out) < 0) { + LOGP(DMAIN, LOGL_ERROR, + "IMSI='%s': Cannot notify GSUP client; send operation failed " + " for %s:%u\n", subscr->imsi, + co && co->conn && co->conn->server? co->conn->server->addr : "unset", + co && co->conn && co->conn->server? co->conn->server->port : 0); + continue; + } } } @@ -202,8 +258,12 @@ lu_op_statechg(luop, LU_S_LU_RECEIVED); - if (gsup->cn_domain == OSMO_GSUP_CN_DOMAIN_PS) + if (gsup->cn_domain == OSMO_GSUP_CN_DOMAIN_CS) + conn->supports_cs = true; + if (gsup->cn_domain == OSMO_GSUP_CN_DOMAIN_PS) { + conn->supports_ps = true; luop->is_ps = true; + } llist_add(&luop->list, &g_lu_ops); /* Roughly follwing "Process Update_Location_HLR" of TS 09.02 */ -- To view, visit https://gerrit.osmocom.org/7743 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newpatchset Gerrit-Change-Id: I06c43ece2b48dc63d599000eb6d6d51e08963067 Gerrit-PatchSet: 3 Gerrit-Project: osmo-hlr Gerrit-Branch: master Gerrit-Owner: Stefan Sperling Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Neels Hofmeyr Gerrit-Reviewer: Stefan Sperling Gerrit-Reviewer: neels From gerrit-no-reply at lists.osmocom.org Thu Apr 19 09:33:30 2018 From: gerrit-no-reply at lists.osmocom.org (Stefan Sperling) Date: Thu, 19 Apr 2018 09:33:30 +0000 Subject: osmo-hlr[master]: rewrite subscriber_update_notify() without calls into luop In-Reply-To: References: Message-ID: Patch Set 3: Patch set 3 should address the above concerns. -- To view, visit https://gerrit.osmocom.org/7743 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I06c43ece2b48dc63d599000eb6d6d51e08963067 Gerrit-PatchSet: 3 Gerrit-Project: osmo-hlr Gerrit-Branch: master Gerrit-Owner: Stefan Sperling Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Neels Hofmeyr Gerrit-Reviewer: Stefan Sperling Gerrit-Reviewer: neels Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Thu Apr 19 09:36:00 2018 From: gerrit-no-reply at lists.osmocom.org (Stefan Sperling) Date: Thu, 19 Apr 2018 09:36:00 +0000 Subject: osmo-hlr[master]: rewrite subscriber_update_notify() without calls into luop In-Reply-To: References: Message-ID: Patch Set 3: > Patch set 3 should address the above concerns. Hmm, I still have some questions: Support only one CN_DOMAIN, yes or no? Both of you still seem to disagree about this. Is it OK to assume circuit-switched in the total absence of a CN domain IE? -- To view, visit https://gerrit.osmocom.org/7743 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I06c43ece2b48dc63d599000eb6d6d51e08963067 Gerrit-PatchSet: 3 Gerrit-Project: osmo-hlr Gerrit-Branch: master Gerrit-Owner: Stefan Sperling Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Neels Hofmeyr Gerrit-Reviewer: Stefan Sperling Gerrit-Reviewer: neels Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Thu Apr 19 10:11:09 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Thu, 19 Apr 2018 10:11:09 +0000 Subject: [PATCH] osmo-gsm-tester[master]: build-osmo-trx: Disable asan in osmo-trx builds Message-ID: Review at https://gerrit.osmocom.org/7875 build-osmo-trx: Disable asan in osmo-trx builds Change-Id: Ic4ebbc3f66fd9de2343d486ed20a0f08fc11e326 --- M contrib/jenkins-build-osmo-trx.sh 1 file changed, 3 insertions(+), 2 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-gsm-tester refs/changes/75/7875/1 diff --git a/contrib/jenkins-build-osmo-trx.sh b/contrib/jenkins-build-osmo-trx.sh index 480c787..0113568 100755 --- a/contrib/jenkins-build-osmo-trx.sh +++ b/contrib/jenkins-build-osmo-trx.sh @@ -4,7 +4,8 @@ name="osmo-trx" . "$(dirname "$0")/jenkins-build-common.sh" -build_repo libosmocore --enable-sanitize --disable-doxygen -build_repo osmo-trx --enable-sanitize --without-sse +# AddressSanitizer is not enabled on purpose since overhead affects the clocking. +build_repo libosmocore --disable-doxygen +build_repo osmo-trx --without-sse create_bin_tgz osmo-trx -- To view, visit https://gerrit.osmocom.org/7875 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Ic4ebbc3f66fd9de2343d486ed20a0f08fc11e326 Gerrit-PatchSet: 1 Gerrit-Project: osmo-gsm-tester Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol From gerrit-no-reply at lists.osmocom.org Thu Apr 19 10:30:06 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Thu, 19 Apr 2018 10:30:06 +0000 Subject: [PATCH] libosmo-netif[master]: osmux: Move examples and tests to use new output APIs Message-ID: Review at https://gerrit.osmocom.org/7876 osmux: Move examples and tests to use new output APIs Change-Id: Ie69c427308eb7d81aedab7fbb71f1bdaf43f0275 --- M examples/osmux-test-output.c M tests/jibuf/jibuf_tool.c M tests/osmux/osmux_test.c 3 files changed, 9 insertions(+), 17 deletions(-) git pull ssh://gerrit.osmocom.org:29418/libosmo-netif refs/changes/76/7876/1 diff --git a/examples/osmux-test-output.c b/examples/osmux-test-output.c index 9b7c113..22e60af 100644 --- a/examples/osmux-test-output.c +++ b/examples/osmux-test-output.c @@ -88,7 +88,6 @@ { struct msgb *msg; struct osmux_hdr *osmuxh; - struct llist_head list; LOGP(DOSMUX_TEST, LOGL_DEBUG, "received message from datagram\n"); @@ -107,10 +106,8 @@ LOGP(DOSMUX_TEST, LOGL_DEBUG, "received OSMUX message (len=%d) %s\n", msg->len, buf); - while((osmuxh = osmux_xfrm_output_pull(msg)) != NULL) { - osmux_xfrm_output(osmuxh, &h_output, &list); - osmux_tx_sched(&list, tx_cb, NULL); - } + while((osmuxh = osmux_xfrm_output_pull(msg)) != NULL) + osmux_xfrm_output_sched(&h_output, osmuxh); return 0; } @@ -158,7 +155,7 @@ * initialize OSMUX handlers. */ osmux_xfrm_output_init(&h_output, random()); - + osmux_xfrm_output_set_tx_cb(&h_output, tx_cb, NULL); /* * initialize datagram server. */ diff --git a/tests/jibuf/jibuf_tool.c b/tests/jibuf/jibuf_tool.c index 8fa9f2e..c60bb69 100644 --- a/tests/jibuf/jibuf_tool.c +++ b/tests/jibuf/jibuf_tool.c @@ -114,7 +114,6 @@ static struct osmo_pcap osmo_pcap; static bool pcap_finished; static struct osmux_out_handle pcap_osmux_h; -static struct llist_head osmux_list; /* ----------------------------- */ static void sigalarm_handler(int foo) @@ -438,10 +437,8 @@ struct osmux_hdr *osmuxh; /* This code below belongs to the osmux receiver */ - while((osmuxh = osmux_xfrm_output_pull(msg)) != NULL) { - osmux_xfrm_output(osmuxh, &pcap_osmux_h, &osmux_list); - osmux_tx_sched(&osmux_list, glue_cb, NULL); - } + while((osmuxh = osmux_xfrm_output_pull(msg)) != NULL) + osmux_xfrm_output_sched(&pcap_osmux_h, osmuxh); msgb_free(msg); return 0; } @@ -520,8 +517,8 @@ osmo_pcap.timer.cb = pcap_pkt_timer_cb; if(opt_osmux) { - INIT_LLIST_HEAD(&osmux_list); osmux_xfrm_output_init(&pcap_osmux_h, 0); + osmux_xfrm_output_set_tx_cb(&pcap_osmux_h, glue_cb, NULL); } jb = osmo_jibuf_alloc(NULL); diff --git a/tests/osmux/osmux_test.c b/tests/osmux/osmux_test.c index 631ade8..704ccbc 100644 --- a/tests/osmux/osmux_test.c +++ b/tests/osmux/osmux_test.c @@ -103,7 +103,6 @@ static void osmux_deliver(struct msgb *batch_msg, void *data) { struct osmux_hdr *osmuxh; - LLIST_HEAD(list); char buf[2048]; osmux_snprintf(buf, sizeof(buf), batch_msg); @@ -112,10 +111,8 @@ /* For each OSMUX message, extract the RTP messages and put them * in a list. Then, reconstruct transmission timing. */ - while((osmuxh = osmux_xfrm_output_pull(batch_msg)) != NULL) { - osmux_xfrm_output(osmuxh, &h_output, &list); - osmux_tx_sched(&list, tx_cb, NULL); - } + while((osmuxh = osmux_xfrm_output_pull(batch_msg)) != NULL) + osmux_xfrm_output_sched(&h_output, osmuxh); msgb_free(batch_msg); } @@ -273,6 +270,7 @@ log_set_log_level(osmo_stderr_target, LOGL_DEBUG); osmux_xfrm_output_init(&h_output, 0x7000000); + osmux_xfrm_output_set_tx_cb(&h_output, tx_cb, NULL); /* If the test takes longer than 10 seconds, abort it */ alarm(10); -- To view, visit https://gerrit.osmocom.org/7876 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Ie69c427308eb7d81aedab7fbb71f1bdaf43f0275 Gerrit-PatchSet: 1 Gerrit-Project: libosmo-netif Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol From gerrit-no-reply at lists.osmocom.org Thu Apr 19 11:34:28 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Thu, 19 Apr 2018 11:34:28 +0000 Subject: osmo-gsm-tester[master]: build-osmo-trx: Disable asan in osmo-trx builds In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7875 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Ic4ebbc3f66fd9de2343d486ed20a0f08fc11e326 Gerrit-PatchSet: 1 Gerrit-Project: osmo-gsm-tester Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Pau Espin Pedrol Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Thu Apr 19 11:34:33 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Thu, 19 Apr 2018 11:34:33 +0000 Subject: [MERGED] osmo-gsm-tester[master]: build-osmo-trx: Disable asan in osmo-trx builds In-Reply-To: References: Message-ID: Pau Espin Pedrol has submitted this change and it was merged. Change subject: build-osmo-trx: Disable asan in osmo-trx builds ...................................................................... build-osmo-trx: Disable asan in osmo-trx builds Change-Id: Ic4ebbc3f66fd9de2343d486ed20a0f08fc11e326 --- M contrib/jenkins-build-osmo-trx.sh 1 file changed, 3 insertions(+), 2 deletions(-) Approvals: Pau Espin Pedrol: Looks good to me, approved Jenkins Builder: Verified diff --git a/contrib/jenkins-build-osmo-trx.sh b/contrib/jenkins-build-osmo-trx.sh index 480c787..0113568 100755 --- a/contrib/jenkins-build-osmo-trx.sh +++ b/contrib/jenkins-build-osmo-trx.sh @@ -4,7 +4,8 @@ name="osmo-trx" . "$(dirname "$0")/jenkins-build-common.sh" -build_repo libosmocore --enable-sanitize --disable-doxygen -build_repo osmo-trx --enable-sanitize --without-sse +# AddressSanitizer is not enabled on purpose since overhead affects the clocking. +build_repo libosmocore --disable-doxygen +build_repo osmo-trx --without-sse create_bin_tgz osmo-trx -- To view, visit https://gerrit.osmocom.org/7875 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: Ic4ebbc3f66fd9de2343d486ed20a0f08fc11e326 Gerrit-PatchSet: 1 Gerrit-Project: osmo-gsm-tester Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Pau Espin Pedrol From gerrit-no-reply at lists.osmocom.org Thu Apr 19 12:27:52 2018 From: gerrit-no-reply at lists.osmocom.org (Stefan Sperling) Date: Thu, 19 Apr 2018 12:27:52 +0000 Subject: [PATCH] osmo-bsc[master]: extend documentation of paging_flush_bts() Message-ID: Review at https://gerrit.osmocom.org/7877 extend documentation of paging_flush_bts() Document the semantics of a NULL msc argument. Change-Id: Ib3f6fd4e4e6108f03d688eba2416c0714393e6e9 Related: OS#2901 --- M src/libbsc/paging.c 1 file changed, 1 insertion(+), 1 deletion(-) git pull ssh://gerrit.osmocom.org:29418/osmo-bsc refs/changes/77/7877/1 diff --git a/src/libbsc/paging.c b/src/libbsc/paging.c index 910a9b6..bf309bb 100644 --- a/src/libbsc/paging.c +++ b/src/libbsc/paging.c @@ -442,7 +442,7 @@ return NULL; } -/*! Flush all paging requests at a given BTS for a given MSC*/ +/*! Flush all paging requests at a given BTS for a given MSC (or NULL if all MSC should be flushed). */ void paging_flush_bts(struct gsm_bts *bts, struct bsc_msc_data *msc) { struct gsm_paging_request *req, *req2; -- To view, visit https://gerrit.osmocom.org/7877 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Ib3f6fd4e4e6108f03d688eba2416c0714393e6e9 Gerrit-PatchSet: 1 Gerrit-Project: osmo-bsc Gerrit-Branch: master Gerrit-Owner: Stefan Sperling From gerrit-no-reply at lists.osmocom.org Thu Apr 19 12:31:39 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Thu, 19 Apr 2018 12:31:39 +0000 Subject: [PATCH] osmo-bsc[master]: chan_alloc.c: Fix log var formatting issues Message-ID: Review at https://gerrit.osmocom.org/7878 chan_alloc.c: Fix log var formatting issues Change-Id: I7a5e5d26f250f954853c12cfd4de08fed68c178e --- M src/libbsc/chan_alloc.c 1 file changed, 2 insertions(+), 2 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-bsc refs/changes/78/7878/1 diff --git a/src/libbsc/chan_alloc.c b/src/libbsc/chan_alloc.c index a08fdee..e72ab3c 100644 --- a/src/libbsc/chan_alloc.c +++ b/src/libbsc/chan_alloc.c @@ -632,7 +632,7 @@ /* Check for invalid samples (shouldn't happen). */ if (total == 0 || used > total) { - LOGP(DRLL, LOGL_NOTICE, "(bts=%d) bogus channel load sample (used=%lu / total=%u)\n", + LOGP(DRLL, LOGL_NOTICE, "(bts=%d) bogus channel load sample (used=%"PRIu64" / total=%"PRIu32")\n", bts->nr, used, total); bts->T3122 = 0; /* disable override of network-wide default value */ bts->chan_load_samples_idx = 0; /* invalidate other samples collected so far */ @@ -675,7 +675,7 @@ else if (wait_ind > max_wait_ind) wait_ind = max_wait_ind; - LOGP(DRLL, LOGL_DEBUG, "(bts=%d) T3122 wait indicator set to %lu seconds\n", bts->nr, wait_ind); + LOGP(DRLL, LOGL_DEBUG, "(bts=%d) T3122 wait indicator set to %"PRIu64" seconds\n", bts->nr, wait_ind); bts->T3122 = (uint8_t)wait_ind; osmo_stat_item_set(bts->bts_statg->items[BTS_STAT_T3122], wait_ind); } -- To view, visit https://gerrit.osmocom.org/7878 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I7a5e5d26f250f954853c12cfd4de08fed68c178e Gerrit-PatchSet: 1 Gerrit-Project: osmo-bsc Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol From gerrit-no-reply at lists.osmocom.org Thu Apr 19 12:32:57 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Thu, 19 Apr 2018 12:32:57 +0000 Subject: [PATCH] openbsc[master]: chan_alloc.c: Fix log var formatting issues Message-ID: Review at https://gerrit.osmocom.org/7879 chan_alloc.c: Fix log var formatting issues Backport from osmo-bsc.git Change-Id I7a5e5d26f250f954853c12cfd4de08fed68c178e. Change-Id: Id2ed51eed42e9fd9c91d257c245f7bce8d568f3a --- M openbsc/src/libbsc/chan_alloc.c 1 file changed, 2 insertions(+), 2 deletions(-) git pull ssh://gerrit.osmocom.org:29418/openbsc refs/changes/79/7879/1 diff --git a/openbsc/src/libbsc/chan_alloc.c b/openbsc/src/libbsc/chan_alloc.c index c4bc949..52a8259 100644 --- a/openbsc/src/libbsc/chan_alloc.c +++ b/openbsc/src/libbsc/chan_alloc.c @@ -579,7 +579,7 @@ /* Check for invalid samples (shouldn't happen). */ if (total == 0 || used > total) { - LOGP(DRLL, LOGL_NOTICE, "(bts=%d) bogus channel load sample (used=%lu / total=%u)\n", + LOGP(DRLL, LOGL_NOTICE, "(bts=%d) bogus channel load sample (used=%"PRIu64" / total=%"PRIu32")\n", bts->nr, used, total); bts->T3122 = 0; /* disable override of network-wide default value */ bts->chan_load_samples_idx = 0; /* invalidate other samples collected so far */ @@ -622,7 +622,7 @@ else if (wait_ind > max_wait_ind) wait_ind = max_wait_ind; - LOGP(DRLL, LOGL_DEBUG, "(bts=%d) T3122 wait indicator set to %lu seconds\n", bts->nr, wait_ind); + LOGP(DRLL, LOGL_DEBUG, "(bts=%d) T3122 wait indicator set to %"PRIu64" seconds\n", bts->nr, wait_ind); bts->T3122 = (uint8_t)wait_ind; osmo_stat_item_set(bts->bts_statg->items[BTS_STAT_T3122], wait_ind); } -- To view, visit https://gerrit.osmocom.org/7879 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Id2ed51eed42e9fd9c91d257c245f7bce8d568f3a Gerrit-PatchSet: 1 Gerrit-Project: openbsc Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol From gerrit-no-reply at lists.osmocom.org Thu Apr 19 12:34:28 2018 From: gerrit-no-reply at lists.osmocom.org (Stefan Sperling) Date: Thu, 19 Apr 2018 12:34:28 +0000 Subject: [PATCH] osmo-bsc[master]: flush paging when RSL link is dropped Message-ID: Review at https://gerrit.osmocom.org/7880 flush paging when RSL link is dropped Flush the paging queue if the link to TRX 0 is dropped from a BTS. This should prevent stale paging requests sent to the BTS when it disconnects or reconnects, as seen in the TTCN3 BSC_Tests test suite. Also, add entries to the log when RSL or OML links are dropped so that related error messages in the log can be interpreted in context. Change-Id: If4401c1139cd01faf5ff374301a9a701898c3777 Related: OS#2901 --- M src/libbsc/bts_ipaccess_nanobts.c 1 file changed, 6 insertions(+), 0 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-bsc refs/changes/80/7880/1 diff --git a/src/libbsc/bts_ipaccess_nanobts.c b/src/libbsc/bts_ipaccess_nanobts.c index 4f1ac4b..d94a878 100644 --- a/src/libbsc/bts_ipaccess_nanobts.c +++ b/src/libbsc/bts_ipaccess_nanobts.c @@ -41,6 +41,7 @@ #include #include #include +#include extern struct gsm_network *bsc_gsmnet; @@ -357,8 +358,12 @@ if (!trx->rsl_link) return; + LOGP(DLINP, LOGL_NOTICE, "(bts=%d,trx=%d) Dropping RSL link.\n", trx->bts->nr, trx->nr); e1inp_sign_link_destroy(trx->rsl_link); trx->rsl_link = NULL; + + if (trx->bts->c0 == trx) + paging_flush_bts(trx->bts, NULL); } void ipaccess_drop_oml(struct gsm_bts *bts) @@ -369,6 +374,7 @@ if (!bts->oml_link) return; + LOGP(DLINP, LOGL_NOTICE, "(bts=%d) Dropping OML link.\n", bts->nr); e1inp_sign_link_destroy(bts->oml_link); bts->oml_link = NULL; bts->uptime = 0; -- To view, visit https://gerrit.osmocom.org/7880 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: If4401c1139cd01faf5ff374301a9a701898c3777 Gerrit-PatchSet: 1 Gerrit-Project: osmo-bsc Gerrit-Branch: master Gerrit-Owner: Stefan Sperling From gerrit-no-reply at lists.osmocom.org Thu Apr 19 12:37:43 2018 From: gerrit-no-reply at lists.osmocom.org (dexter) Date: Thu, 19 Apr 2018 12:37:43 +0000 Subject: osmo-bsc[master]: flush paging when RSL link is dropped In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+1 > Build Started https://jenkins.osmocom.org/jenkins/job/gerrit-osmo-bsc/925/ -- To view, visit https://gerrit.osmocom.org/7880 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: If4401c1139cd01faf5ff374301a9a701898c3777 Gerrit-PatchSet: 1 Gerrit-Project: osmo-bsc Gerrit-Branch: master Gerrit-Owner: Stefan Sperling Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: dexter Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Thu Apr 19 12:38:21 2018 From: gerrit-no-reply at lists.osmocom.org (Neels Hofmeyr) Date: Thu, 19 Apr 2018 12:38:21 +0000 Subject: osmo-hlr[master]: rewrite subscriber_update_notify() without calls into luop In-Reply-To: References: Message-ID: Patch Set 3: Code-Review+1 (4 comments) >From laforge's comments, it would suffice to just store a cn_domain per peer. But we would need a check to ensure that we don't overwrite a cn_domain of the peer back and forth. I think these separate flags are an easier way of handling it (by just allowing it). What do you think, laforge? If a peer exists and is neither indicated as is_cs nor is_ps, then by definition this peer has never done a lu_op and it could be skipped entirely, right? I don't have a very strong opinion on any of this, except the code dup -- in this instance there could be a trivial function containing the identical parts to silence my bickering? And that line marked "?" :) https://gerrit.osmocom.org/#/c/7743/3//COMMIT_MSG Commit Message: Line 14: into a common implementation, but that is left for future work. If you're intending to let it stay like this, I would actually still oppose. If this is just an intermediate step that you will follow up on soon, then I'm fine with it. This paragraph reads like we'll have the code dup for ever -- let's avoid broken windows. https://gerrit.osmocom.org/#/c/7743/3/src/hlr.c File src/hlr.c: Line 64: llist_for_each_entry(co, &g_hlr->gs->clients, list) { cosmetic wise, I'd prefer a separate function that is called from the loop for each peer, separating the action of sending from the decision of who should get it; thinking ahead: changing the code to notify only those peers that a subscriber was last seen at would then not need an edit of that function. Line 100: gsup.cn_domain = OSMO_GSUP_CN_DOMAIN_CS; ? Line 112: gsup.cn_domain = OSMO_GSUP_CN_DOMAIN_CS; I think I'd if (!co->supports_ps && !co->supports_cs) continue; above -- To view, visit https://gerrit.osmocom.org/7743 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I06c43ece2b48dc63d599000eb6d6d51e08963067 Gerrit-PatchSet: 3 Gerrit-Project: osmo-hlr Gerrit-Branch: master Gerrit-Owner: Stefan Sperling Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Neels Hofmeyr Gerrit-Reviewer: Stefan Sperling Gerrit-Reviewer: neels Gerrit-HasComments: Yes From gerrit-no-reply at lists.osmocom.org Thu Apr 19 12:44:45 2018 From: gerrit-no-reply at lists.osmocom.org (Stefan Sperling) Date: Thu, 19 Apr 2018 12:44:45 +0000 Subject: [PATCH] osmo-bsc[master]: properly skip paging is OML link is down Message-ID: Review at https://gerrit.osmocom.org/7881 properly skip paging is OML link is down If the OML link is found down while a paging request is issued, no paging message is sent. However, we were still counting such pagings as an actual attempt, and counted them towards the number of available slots on the paging request queue. Move the OML link check to the caller of page_ms() where the accounting steps can be properly skipped as they should be. Change-Id: I5b6db681da7d45c49e1f2f99d7789c8a29372ef3 Related: OS#2901 --- M src/libbsc/paging.c 1 file changed, 4 insertions(+), 4 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-bsc refs/changes/81/7881/1 diff --git a/src/libbsc/paging.c b/src/libbsc/paging.c index 910a9b6..24be692 100644 --- a/src/libbsc/paging.c +++ b/src/libbsc/paging.c @@ -80,10 +80,6 @@ unsigned int page_group; struct gsm_bts *bts = request->bts; - /* the bts is down.. we will just wait for the paging to expire */ - if (!bts->oml_link) - return; - log_set_context(LOG_CTX_BSC_SUBSCR, request->bsub); LOGP(DPAG, LOGL_INFO, "(bts=%d) Going to send paging commands: imsi: %s tmsi: " @@ -214,6 +210,10 @@ goto skip_paging; } + /* Skip paging if the bts is down. */ + if (!request->bts->oml_link) + goto skip_paging; + /* handle the paging request now */ page_ms(request); paging_bts->available_slots--; -- To view, visit https://gerrit.osmocom.org/7881 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I5b6db681da7d45c49e1f2f99d7789c8a29372ef3 Gerrit-PatchSet: 1 Gerrit-Project: osmo-bsc Gerrit-Branch: master Gerrit-Owner: Stefan Sperling From gerrit-no-reply at lists.osmocom.org Thu Apr 19 13:09:09 2018 From: gerrit-no-reply at lists.osmocom.org (Stefan Sperling) Date: Thu, 19 Apr 2018 13:09:09 +0000 Subject: osmo-bsc[master]: chan_alloc.c: Fix log var formatting issues In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+1 -- To view, visit https://gerrit.osmocom.org/7878 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I7a5e5d26f250f954853c12cfd4de08fed68c178e Gerrit-PatchSet: 1 Gerrit-Project: osmo-bsc Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Stefan Sperling Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Thu Apr 19 13:09:41 2018 From: gerrit-no-reply at lists.osmocom.org (Stefan Sperling) Date: Thu, 19 Apr 2018 13:09:41 +0000 Subject: openbsc[master]: chan_alloc.c: Fix log var formatting issues In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+1 -- To view, visit https://gerrit.osmocom.org/7879 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Id2ed51eed42e9fd9c91d257c245f7bce8d568f3a Gerrit-PatchSet: 1 Gerrit-Project: openbsc Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Stefan Sperling Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Thu Apr 19 13:14:04 2018 From: gerrit-no-reply at lists.osmocom.org (Stefan Sperling) Date: Thu, 19 Apr 2018 13:14:04 +0000 Subject: [PATCH] osmo-hlr[master]: rewrite subscriber_update_notify() without calls into luop In-Reply-To: References: Message-ID: Hello Neels Hofmeyr, Jenkins Builder, I'd like you to reexamine a change. Please visit https://gerrit.osmocom.org/7743 to look at the new patch set (#4). rewrite subscriber_update_notify() without calls into luop This function relied on implementation details of the luop code. Port what is necessary for an independent Insert Subscriber Data Tx operation from the luop code into this function. A next possible step would be to try to merge both of these into a common implementation. This will be addressed in a follow-up change as soon as this change is merged. The TTCN3 test TC_vty_msisdn_isd is still passing (it currently triggers the "circuit switched domain" case because it does not advertise itself as an SGSN in the IPA unit name). Change-Id: I06c43ece2b48dc63d599000eb6d6d51e08963067 Related: OS#2785 --- M src/gsup_server.h M src/hlr.c 2 files changed, 73 insertions(+), 8 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-hlr refs/changes/43/7743/4 diff --git a/src/gsup_server.h b/src/gsup_server.h index 74062d4..f9a5869 100644 --- a/src/gsup_server.h +++ b/src/gsup_server.h @@ -4,6 +4,7 @@ #include #include #include +#include struct osmo_gsup_conn; @@ -33,6 +34,10 @@ struct tlv_parsed ccm; unsigned int auc_3g_ind; /*!< IND index used for UMTS AKA SQN */ + + /* Set when Location Update is received: */ + bool supports_cs; /* client supports OSMO_GSUP_CN_DOMAIN_CS */ + bool supports_ps; /* client supports OSMO_GSUP_CN_DOMAIN_PS */ }; diff --git a/src/hlr.c b/src/hlr.c index 3845993..d068e15 100644 --- a/src/hlr.c +++ b/src/hlr.c @@ -62,19 +62,75 @@ return; llist_for_each_entry(co, &g_hlr->gs->clients, list) { - struct lu_operation *luop = lu_op_alloc_conn(co); - if (!luop) { + struct osmo_gsup_message gsup = { + .message_type = OSMO_GSUP_MSGT_INSERT_DATA_REQUEST + }; + uint8_t *peer; + int peer_len; + uint8_t msisdn_enc[43]; /* TODO use constant; TS 24.008 10.5.4.7 */ + uint8_t apn[APN_MAXLEN]; + int len; + struct msgb *msg_out; + + peer_len = osmo_gsup_conn_ccm_get(co, &peer, IPAC_IDTAG_SERNR); + if (peer_len < 0) { LOGP(DMAIN, LOGL_ERROR, - "IMSI='%s': Cannot notify GSUP client, cannot allocate lu_operation," + "IMSI='%s': Cannot notify GSUP client, cannot get peer name " " for %s:%u\n", subscr->imsi, co && co->conn && co->conn->server? co->conn->server->addr : "unset", co && co->conn && co->conn->server? co->conn->server->port : 0); continue; } - luop->subscr = *subscr; - luop->state = LU_S_LU_RECEIVED; /* Pretend we received a location update. */ - lu_op_tx_insert_subscr_data(luop); - lu_op_free(luop); + + osmo_strlcpy(gsup.imsi, subscr->imsi, GSM23003_IMSI_MAX_DIGITS + 1); + + len = gsm48_encode_bcd_number(msisdn_enc, sizeof(msisdn_enc), 0, subscr->msisdn); + if (len < 1) { + LOGP(DMAIN, LOGL_ERROR, "%s: Error: cannot encode MSISDN '%s'\n", + subscr->imsi, subscr->msisdn); + continue; + } + gsup.msisdn_enc = msisdn_enc; + gsup.msisdn_enc_len = len; + + if (co->supports_ps) { + gsup.cn_domain = OSMO_GSUP_CN_DOMAIN_PS; + + /* FIXME: PDP infos - use more fine-grained access control + gsup.cn_domain = OSMO_GSUP_CN_DOMAIN_CS; + instead of wildcard APN */ + len = osmo_apn_from_str(apn, sizeof(apn), "*"); + if (len > 0) { + gsup.pdp_infos[0].apn_enc = apn; + gsup.pdp_infos[0].apn_enc_len = len; + gsup.pdp_infos[0].have_info = 1; + gsup.num_pdp_infos = 1; + /* FIXME: use real value: */ + gsup.pdp_infos[0].context_id = 1; + } + } else + gsup.cn_domain = OSMO_GSUP_CN_DOMAIN_CS; + + /* Send ISD to MSC/SGSN */ + msg_out = msgb_alloc_headroom(1024+16, 16, "GSUP ISD UPDATE"); + if (msg_out == NULL) { + LOGP(DMAIN, LOGL_ERROR, + "IMSI='%s': Cannot notify GSUP client; could not allocate msg buffer " + " for %s:%u\n", subscr->imsi, + co && co->conn && co->conn->server? co->conn->server->addr : "unset", + co && co->conn && co->conn->server? co->conn->server->port : 0); + continue; + } + + osmo_gsup_encode(msg_out, &gsup); + if (osmo_gsup_addr_send(g_hlr->gs, peer, peer_len, msg_out) < 0) { + LOGP(DMAIN, LOGL_ERROR, + "IMSI='%s': Cannot notify GSUP client; send operation failed " + " for %s:%u\n", subscr->imsi, + co && co->conn && co->conn->server? co->conn->server->addr : "unset", + co && co->conn && co->conn->server? co->conn->server->port : 0); + continue; + } } } @@ -202,8 +258,12 @@ lu_op_statechg(luop, LU_S_LU_RECEIVED); - if (gsup->cn_domain == OSMO_GSUP_CN_DOMAIN_PS) + if (gsup->cn_domain == OSMO_GSUP_CN_DOMAIN_CS) + conn->supports_cs = true; + if (gsup->cn_domain == OSMO_GSUP_CN_DOMAIN_PS) { + conn->supports_ps = true; luop->is_ps = true; + } llist_add(&luop->list, &g_lu_ops); /* Roughly follwing "Process Update_Location_HLR" of TS 09.02 */ -- To view, visit https://gerrit.osmocom.org/7743 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newpatchset Gerrit-Change-Id: I06c43ece2b48dc63d599000eb6d6d51e08963067 Gerrit-PatchSet: 4 Gerrit-Project: osmo-hlr Gerrit-Branch: master Gerrit-Owner: Stefan Sperling Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Neels Hofmeyr Gerrit-Reviewer: Stefan Sperling Gerrit-Reviewer: neels From gerrit-no-reply at lists.osmocom.org Thu Apr 19 13:18:31 2018 From: gerrit-no-reply at lists.osmocom.org (Stefan Sperling) Date: Thu, 19 Apr 2018 13:18:31 +0000 Subject: [PATCH] osmo-hlr[master]: rewrite subscriber_update_notify() without calls into luop In-Reply-To: References: Message-ID: Hello Neels Hofmeyr, Jenkins Builder, I'd like you to reexamine a change. Please visit https://gerrit.osmocom.org/7743 to look at the new patch set (#5). rewrite subscriber_update_notify() without calls into luop This function relied on implementation details of the luop code. Port what is necessary for an independent Insert Subscriber Data Tx operation from the luop code into this function. A next possible step would be to try to merge both of these into a common implementation. This will be addressed in a follow-up change as soon as this change is merged. The TTCN3 test TC_vty_msisdn_isd is still passing (it currently triggers the "circuit switched domain" case because it does not advertise itself as an SGSN in the IPA unit name). Change-Id: I06c43ece2b48dc63d599000eb6d6d51e08963067 Related: OS#2785 --- M src/gsup_server.h M src/hlr.c 2 files changed, 72 insertions(+), 8 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-hlr refs/changes/43/7743/5 diff --git a/src/gsup_server.h b/src/gsup_server.h index 74062d4..f9a5869 100644 --- a/src/gsup_server.h +++ b/src/gsup_server.h @@ -4,6 +4,7 @@ #include #include #include +#include struct osmo_gsup_conn; @@ -33,6 +34,10 @@ struct tlv_parsed ccm; unsigned int auc_3g_ind; /*!< IND index used for UMTS AKA SQN */ + + /* Set when Location Update is received: */ + bool supports_cs; /* client supports OSMO_GSUP_CN_DOMAIN_CS */ + bool supports_ps; /* client supports OSMO_GSUP_CN_DOMAIN_PS */ }; diff --git a/src/hlr.c b/src/hlr.c index 3845993..8f6f227 100644 --- a/src/hlr.c +++ b/src/hlr.c @@ -62,19 +62,74 @@ return; llist_for_each_entry(co, &g_hlr->gs->clients, list) { - struct lu_operation *luop = lu_op_alloc_conn(co); - if (!luop) { + struct osmo_gsup_message gsup = { + .message_type = OSMO_GSUP_MSGT_INSERT_DATA_REQUEST + }; + uint8_t *peer; + int peer_len; + uint8_t msisdn_enc[43]; /* TODO use constant; TS 24.008 10.5.4.7 */ + uint8_t apn[APN_MAXLEN]; + int len; + struct msgb *msg_out; + + peer_len = osmo_gsup_conn_ccm_get(co, &peer, IPAC_IDTAG_SERNR); + if (peer_len < 0) { LOGP(DMAIN, LOGL_ERROR, - "IMSI='%s': Cannot notify GSUP client, cannot allocate lu_operation," + "IMSI='%s': Cannot notify GSUP client, cannot get peer name " " for %s:%u\n", subscr->imsi, co && co->conn && co->conn->server? co->conn->server->addr : "unset", co && co->conn && co->conn->server? co->conn->server->port : 0); continue; } - luop->subscr = *subscr; - luop->state = LU_S_LU_RECEIVED; /* Pretend we received a location update. */ - lu_op_tx_insert_subscr_data(luop); - lu_op_free(luop); + + osmo_strlcpy(gsup.imsi, subscr->imsi, GSM23003_IMSI_MAX_DIGITS + 1); + + len = gsm48_encode_bcd_number(msisdn_enc, sizeof(msisdn_enc), 0, subscr->msisdn); + if (len < 1) { + LOGP(DMAIN, LOGL_ERROR, "%s: Error: cannot encode MSISDN '%s'\n", + subscr->imsi, subscr->msisdn); + continue; + } + gsup.msisdn_enc = msisdn_enc; + gsup.msisdn_enc_len = len; + + if (co->supports_ps) { + gsup.cn_domain = OSMO_GSUP_CN_DOMAIN_PS; + + /* FIXME: PDP infos - use more fine-grained access control + instead of wildcard APN */ + len = osmo_apn_from_str(apn, sizeof(apn), "*"); + if (len > 0) { + gsup.pdp_infos[0].apn_enc = apn; + gsup.pdp_infos[0].apn_enc_len = len; + gsup.pdp_infos[0].have_info = 1; + gsup.num_pdp_infos = 1; + /* FIXME: use real value: */ + gsup.pdp_infos[0].context_id = 1; + } + } else + gsup.cn_domain = OSMO_GSUP_CN_DOMAIN_CS; + + /* Send ISD to MSC/SGSN */ + msg_out = msgb_alloc_headroom(1024+16, 16, "GSUP ISD UPDATE"); + if (msg_out == NULL) { + LOGP(DMAIN, LOGL_ERROR, + "IMSI='%s': Cannot notify GSUP client; could not allocate msg buffer " + " for %s:%u\n", subscr->imsi, + co && co->conn && co->conn->server? co->conn->server->addr : "unset", + co && co->conn && co->conn->server? co->conn->server->port : 0); + continue; + } + + osmo_gsup_encode(msg_out, &gsup); + if (osmo_gsup_addr_send(g_hlr->gs, peer, peer_len, msg_out) < 0) { + LOGP(DMAIN, LOGL_ERROR, + "IMSI='%s': Cannot notify GSUP client; send operation failed " + " for %s:%u\n", subscr->imsi, + co && co->conn && co->conn->server? co->conn->server->addr : "unset", + co && co->conn && co->conn->server? co->conn->server->port : 0); + continue; + } } } @@ -202,8 +257,12 @@ lu_op_statechg(luop, LU_S_LU_RECEIVED); - if (gsup->cn_domain == OSMO_GSUP_CN_DOMAIN_PS) + if (gsup->cn_domain == OSMO_GSUP_CN_DOMAIN_CS) + conn->supports_cs = true; + if (gsup->cn_domain == OSMO_GSUP_CN_DOMAIN_PS) { + conn->supports_ps = true; luop->is_ps = true; + } llist_add(&luop->list, &g_lu_ops); /* Roughly follwing "Process Update_Location_HLR" of TS 09.02 */ -- To view, visit https://gerrit.osmocom.org/7743 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newpatchset Gerrit-Change-Id: I06c43ece2b48dc63d599000eb6d6d51e08963067 Gerrit-PatchSet: 5 Gerrit-Project: osmo-hlr Gerrit-Branch: master Gerrit-Owner: Stefan Sperling Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Neels Hofmeyr Gerrit-Reviewer: Stefan Sperling Gerrit-Reviewer: neels From gerrit-no-reply at lists.osmocom.org Thu Apr 19 13:19:52 2018 From: gerrit-no-reply at lists.osmocom.org (Stefan Sperling) Date: Thu, 19 Apr 2018 13:19:52 +0000 Subject: osmo-hlr[master]: rewrite subscriber_update_notify() without calls into luop In-Reply-To: References: Message-ID: Patch Set 3: (3 comments) https://gerrit.osmocom.org/#/c/7743/3//COMMIT_MSG Commit Message: Line 14: into a common implementation, but that is left for future work. > If you're intending to let it stay like this, I would actually still oppose Log message has been updated to clearly explain what's intended. https://gerrit.osmocom.org/#/c/7743/3/src/hlr.c File src/hlr.c: Line 64: llist_for_each_entry(co, &g_hlr->gs->clients, list) { > cosmetic wise, I'd prefer a separate function that is called from the loop I'll look at that in a follow-up change. Line 100: gsup.cn_domain = OSMO_GSUP_CN_DOMAIN_CS; > ? Ooops, fixed. -- To view, visit https://gerrit.osmocom.org/7743 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I06c43ece2b48dc63d599000eb6d6d51e08963067 Gerrit-PatchSet: 3 Gerrit-Project: osmo-hlr Gerrit-Branch: master Gerrit-Owner: Stefan Sperling Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Neels Hofmeyr Gerrit-Reviewer: Stefan Sperling Gerrit-Reviewer: neels Gerrit-HasComments: Yes From gerrit-no-reply at lists.osmocom.org Thu Apr 19 13:23:28 2018 From: gerrit-no-reply at lists.osmocom.org (Stefan Sperling) Date: Thu, 19 Apr 2018 13:23:28 +0000 Subject: [PATCH] osmo-bts[master]: LC15: Fix missing fill frame and GSM 05.08 mandatory frame In-Reply-To: References: Message-ID: Hello Vadim Yanitskiy, Jenkins Builder, I'd like you to reexamine a change. Please visit https://gerrit.osmocom.org/5753 to look at the new patch set (#8). LC15: Fix missing fill frame and GSM 05.08 mandatory frame It was discovered that the LC15 BTS does not send L2 fill frame in case there is nothing to transmit. This leads to bad RXQUAL reported by MS during signaling in TCH channel. BTS needs to send L2 fill frame in case there is nothing to transmit as indicated in GSM TS 05.08, section 8.3. Related: OS#1950 Change-Id: I40e9bf9438c0b400e4d29eb39ffae37207e34db6 --- M src/common/msg_utils.c M src/osmo-bts-litecell15/l1_if.c 2 files changed, 126 insertions(+), 15 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-bts refs/changes/53/5753/8 diff --git a/src/common/msg_utils.c b/src/common/msg_utils.c index f936c98..fdd403d 100644 --- a/src/common/msg_utils.c +++ b/src/common/msg_utils.c @@ -379,15 +379,18 @@ static const uint8_t f[] = { 52, 53, 54, 55, 56, 57, 58, 59 }, h0[] = { 0, 2, 4, 6, 52, 54, 56, 58 }, h1[] = { 14, 16, 18, 20, 66, 68, 70, 72 }; - if (lchan->tch_mode == GSM48_CMODE_SPEECH_V1) { + + switch (lchan->tch_mode) { + case GSM48_CMODE_SPEECH_V1: + case GSM48_CMODE_SPEECH_AMR: if (lchan->type == GSM_LCHAN_TCH_F) return fn_chk(f, fn, ARRAY_SIZE(f)); - else - return fn_chk(lchan->nr ? h1 : h0, fn, - lchan->nr ? ARRAY_SIZE(h1) : - ARRAY_SIZE(h0)); + + return fn_chk(lchan->nr ? h1 : h0, fn, + lchan->nr ? ARRAY_SIZE(h1) : ARRAY_SIZE(h0)); + default: + return false; } - return false; } /*! \brief Check if DTX DL AMR is enabled for a given lchan (it have proper type, @@ -465,16 +468,70 @@ */ uint8_t repeat_last_sid(struct gsm_lchan *lchan, uint8_t *dst, uint32_t fn) { - /* FIXME: add EFR support */ - if (lchan->tch_mode == GSM48_CMODE_SPEECH_EFR) + uint8_t payload_len; + + static const uint8_t amr_sid_first_zero[] = { + 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00 + }; + + switch (lchan->tch_mode) { + case GSM48_CMODE_SPEECH_EFR: + /* FIXME: add EFR support */ return 0; - if (lchan->tch_mode != GSM48_CMODE_SPEECH_AMR) { - if (dtx_sched_optional(lchan, fn)) - return 0; - } else + case GSM48_CMODE_SPEECH_AMR: if (dtx_amr_sid_optional(lchan, fn)) return 0; + + if (lchan->rsl_cmode != RSL_CMOD_SPD_SPEECH) + break; + + if (lchan->tch.dtx.len) + break; + + /* Send zero SID FIRST frame */ + payload_len = sizeof(amr_sid_first_zero); + memcpy(dst, amr_sid_first_zero, payload_len); + + LOGP(DL1C, LOGL_DEBUG, "%s %s %s: Sending zero speech frame " + "for tch_mode=%s\n", gsm_fn_as_gsmtime_str(fn), + gsm_ts_name(lchan->ts), get_value_string(gsm_chan_t_names, lchan->type), + get_value_string(gsm48_chan_mode_names, lchan->tch_mode)); + + return payload_len + 1; + + default: + if (dtx_sched_optional(lchan, fn)) + return 0; + + if (!lchan->ts->trx->bts->dtxd) + break; + + /* Determine the payload length */ + switch (lchan->type) { + case GSM_LCHAN_TCH_F: + payload_len = GSM_FR_BYTES; + break; + case GSM_LCHAN_TCH_H: + payload_len = GSM_HR_BYTES; + break; + default: + return 0; + } + + /** + * Need to send zeroed TCH frame on mandatory fn, + * defined in GSM TS 05.08, section 8.3 + */ + memset(dst, 0x00, payload_len); + + LOGP(DL1C, LOGL_DEBUG, "%s %s %s: Sending zero speech frame " + "for tch_mode=%s\n", gsm_fn_as_gsmtime_str(fn), + gsm_ts_name(lchan->ts), get_value_string(gsm_chan_t_names, lchan->type), + get_value_string(gsm48_chan_mode_names, lchan->tch_mode)); + + return payload_len + 1; + } if (lchan->tch.dtx.len) { if (dtx_dl_amr_enabled(lchan)) { @@ -502,6 +559,12 @@ } memcpy(dst, lchan->tch.dtx.cache, lchan->tch.dtx.len); lchan->tch.dtx.fn = fn; + + LOGP(DL1C, LOGL_DEBUG, "%s %s %s: Sending SID buffer " + "for tch_mode=%s\n", gsm_fn_as_gsmtime_str(fn), + gsm_ts_name(lchan->ts), get_value_string(gsm_chan_t_names, lchan->type), + get_value_string(gsm48_chan_mode_names, lchan->tch_mode)); + return lchan->tch.dtx.len + 1; } diff --git a/src/osmo-bts-litecell15/l1_if.c b/src/osmo-bts-litecell15/l1_if.c index 9e122cd..cb6cf7e 100644 --- a/src/osmo-bts-litecell15/l1_if.c +++ b/src/osmo-bts-litecell15/l1_if.c @@ -331,6 +331,44 @@ return empty_req; } +/* fill frame PH-DATA.req from l1sap primitive */ +static GsmL1_PhDataReq_t * +fill_req_from_l1sap(GsmL1_Prim_t *l1p, struct lc15l1_hdl *fl1, + uint8_t tn, uint32_t fn, uint8_t sapi, uint8_t sub_ch, uint8_t block_nr) +{ + GsmL1_PhDataReq_t *data_req = &l1p->u.phDataReq; + GsmL1_MsgUnitParam_t *msu_param; + uint8_t *l1_payload; + + msu_param = &data_req->msgUnitParam; + l1_payload = &msu_param->u8Buffer[0]; + l1p->id = GsmL1_PrimId_PhDataReq; + + memset(l1_payload, 0x2b, GSM_MACBLOCK_LEN); + + /* address field */ + l1_payload[0] = 0x03; + /* control field */ + l1_payload[1] = 0x03; + /* length field */ + l1_payload[2] = 0x01; + + /* copy fields from PH-RTS.ind */ + data_req->hLayer1 = (HANDLE)fl1->hLayer1; + data_req->u8Tn = tn; + data_req->u32Fn = fn; + data_req->sapi = sapi; + data_req->subCh = sub_ch; + data_req->u8BlockNbr = block_nr; + data_req->msgUnitParam.u8Size = GSM_MACBLOCK_LEN; + + LOGP(DL1C, LOGL_DEBUG, "%s tn=%u: Sending fill frame on in none DTX mode " + "SAPI=%d, SubCh=%d, BlockNr=%d\n", gsm_fn_as_gsmtime_str(fn), + tn, sapi, sub_ch, block_nr); + + return data_req; +} + static int ph_data_req(struct gsm_bts_trx *trx, struct msgb *msg, struct osmo_phsap_prim *l1sap, bool use_cache) { @@ -460,10 +498,20 @@ osmo_hexdump(l1p->u.phDataReq.msgUnitParam.u8Buffer, l1p->u.phDataReq.msgUnitParam.u8Size)); } else { - /* empty frame */ - GsmL1_Prim_t *l1p = msgb_l1prim(l1msg); - empty_req_from_l1sap(l1p, fl1, u8Tn, u32Fn, sapi, subCh, u8BlockNbr); + GsmL1_Prim_t *l1p = msgb_l1prim(l1msg); + if (lchan->rsl_cmode == RSL_CMOD_SPD_SIGN) { + /* fill frame */ + fill_req_from_l1sap(l1p, fl1, u8Tn, u32Fn, sapi, subCh, u8BlockNbr); + } else { + if (lchan->ts->trx->bts->dtxd) { + /* empty frame */ + empty_req_from_l1sap(l1p, fl1, u8Tn, u32Fn, sapi, subCh, u8BlockNbr); + } else { + /* fill frame */ + fill_req_from_l1sap(l1p, fl1, u8Tn, u32Fn, sapi, subCh, u8BlockNbr); + } + } } /* send message to DSP's queue */ -- To view, visit https://gerrit.osmocom.org/5753 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newpatchset Gerrit-Change-Id: I40e9bf9438c0b400e4d29eb39ffae37207e34db6 Gerrit-PatchSet: 8 Gerrit-Project: osmo-bts Gerrit-Branch: master Gerrit-Owner: Minh-Quang Nguyen Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Max Gerrit-Reviewer: Minh-Quang Nguyen Gerrit-Reviewer: Pau Espin Pedrol Gerrit-Reviewer: Stefan Sperling Gerrit-Reviewer: Vadim Yanitskiy From gerrit-no-reply at lists.osmocom.org Thu Apr 19 13:47:33 2018 From: gerrit-no-reply at lists.osmocom.org (Stefan Sperling) Date: Thu, 19 Apr 2018 13:47:33 +0000 Subject: [PATCH] osmo-bts[master]: respond with NACK for non-hopping BTS with multiple ARFCN Message-ID: Review at https://gerrit.osmocom.org/7882 respond with NACK for non-hopping BTS with multiple ARFCN In addition to logging an error, send a NACK if the BSC attempts to set more than one ARFCN in Radio Carrier Attributes for a BTS which does not support frequency hopping. Change-Id: Ia72e23a3f08f825cf9cf0d9a55302d13cfed51d6 Related: OS#2295 --- M src/common/oml.c 1 file changed, 1 insertion(+), 2 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-bts refs/changes/82/7882/1 diff --git a/src/common/oml.c b/src/common/oml.c index 088b3a0..5c9885e 100644 --- a/src/common/oml.c +++ b/src/common/oml.c @@ -807,8 +807,7 @@ if (length != 2) { LOGP(DOML, LOGL_ERROR, "Expecting only one ARFCN, " "because hopping not supported\n"); - /* FIXME: send NACK */ - return -ENOTSUP; + return oml_fom_ack_nack(msg, NM_NACK_MSGINCONSIST_PHYSCFG); } memcpy(&_value, value, 2); arfcn = ntohs(_value); -- To view, visit https://gerrit.osmocom.org/7882 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Ia72e23a3f08f825cf9cf0d9a55302d13cfed51d6 Gerrit-PatchSet: 1 Gerrit-Project: osmo-bts Gerrit-Branch: master Gerrit-Owner: Stefan Sperling From gerrit-no-reply at lists.osmocom.org Thu Apr 19 14:17:14 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Thu, 19 Apr 2018 14:17:14 +0000 Subject: [PATCH] libosmocore[master]: RSL/LAPDm: Not all RLL message are "transparent" Message-ID: Review at https://gerrit.osmocom.org/7883 RSL/LAPDm: Not all RLL message are "transparent" 3GPP TS 48.058 has a very clear definition of which messages are "transparent" and hence have the T-bit == 1. This is *not* just all RLL messages, but basically only RLL_DATA.{ind,req} and RLL_UNITDATA.{ind,req}. All other messages are non-transparent. Change-Id: I9f83654af189d818563d799bf623325b7fee8e70 Closes: OS#3188 --- M src/gsm/lapdm.c M tests/lapd/lapd_test.c 2 files changed, 21 insertions(+), 4 deletions(-) git pull ssh://gerrit.osmocom.org:29418/libosmocore refs/changes/83/7883/1 diff --git a/src/gsm/lapdm.c b/src/gsm/lapdm.c index 80c0d17..6a16012 100644 --- a/src/gsm/lapdm.c +++ b/src/gsm/lapdm.c @@ -349,12 +349,29 @@ return le->l1_prim_cb(&pp.oph, le->l1_ctx); } +/* Is a given msg_type "transparent" as per TS 48.058 Section 8.1 */ +static int rsl_is_transparent(uint8_t msg_type) +{ + switch (msg_type) { + case RSL_MT_DATA_IND: + case RSL_MT_UNIT_DATA_IND: + return 1; + case RSL_MT_DATA_REQ: + case RSL_MT_UNIT_DATA_REQ: + return 1; + default: + return 0; + } +} + /* Create RSLms various RSLms messages */ static int send_rslms_rll_l3(uint8_t msg_type, struct lapdm_msg_ctx *mctx, struct msgb *msg) { + int transparent = rsl_is_transparent(msg_type); + /* Add the RSL + RLL header */ - rsl_rll_push_l3(msg, msg_type, mctx->chan_nr, mctx->link_id, 1); + rsl_rll_push_l3(msg, msg_type, mctx->chan_nr, mctx->link_id, transparent); /* send off the RSLms message to L3 */ return rslms_sendmsg(msg, mctx->dl->entity); @@ -385,8 +402,9 @@ static int send_rll_simple(uint8_t msg_type, struct lapdm_msg_ctx *mctx) { struct msgb *msg; + int transparent = rsl_is_transparent(msg_type); - msg = rsl_rll_simple(msg_type, mctx->chan_nr, mctx->link_id, 1); + msg = rsl_rll_simple(msg_type, mctx->chan_nr, mctx->link_id, transparent); /* send off the RSLms message to L3 */ return rslms_sendmsg(msg, mctx->dl->entity); @@ -397,7 +415,7 @@ struct msgb *msg; LOGP(DLLAPD, LOGL_NOTICE, "sending MDL-ERROR-IND %d\n", cause); - msg = rsl_rll_simple(RSL_MT_ERROR_IND, mctx->chan_nr, mctx->link_id, 1); + msg = rsl_rll_simple(RSL_MT_ERROR_IND, mctx->chan_nr, mctx->link_id, 0); msgb_tlv_put(msg, RSL_IE_RLM_CAUSE, 1, &cause); return rslms_sendmsg(msg, mctx->dl->entity); } diff --git a/tests/lapd/lapd_test.c b/tests/lapd/lapd_test.c index 3f15afe..8a4e931 100644 --- a/tests/lapd/lapd_test.c +++ b/tests/lapd/lapd_test.c @@ -356,7 +356,6 @@ /* verify the header */ memset(&hdr, 0, sizeof(hdr)); rsl_init_rll_hdr(&hdr, RSL_MT_EST_CONF); - hdr.c.msg_discr |= ABIS_RSL_MDISC_TRANSP; OSMO_ASSERT(memcmp(msg->data, &hdr, sizeof(hdr)) == 0); } else if (state->ms_read == 1) { printf("MS: Verifying incoming MM message: %d\n", msgb_l3len(msg)); -- To view, visit https://gerrit.osmocom.org/7883 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I9f83654af189d818563d799bf623325b7fee8e70 Gerrit-PatchSet: 1 Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Owner: Harald Welte From gerrit-no-reply at lists.osmocom.org Thu Apr 19 15:00:52 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Thu, 19 Apr 2018 15:00:52 +0000 Subject: [PATCH] libosmo-netif[master]: osmux: Move examples and tests to use new output APIs In-Reply-To: References: Message-ID: Hello Jenkins Builder, I'd like you to reexamine a change. Please visit https://gerrit.osmocom.org/7876 to look at the new patch set (#2). osmux: Move examples and tests to use new output APIs Change-Id: Ie69c427308eb7d81aedab7fbb71f1bdaf43f0275 --- M examples/osmux-test-output.c M tests/jibuf/jibuf_tool.c M tests/osmo-pcap-test/osmux_test.c M tests/osmux/osmux_test.c 4 files changed, 12 insertions(+), 23 deletions(-) git pull ssh://gerrit.osmocom.org:29418/libosmo-netif refs/changes/76/7876/2 diff --git a/examples/osmux-test-output.c b/examples/osmux-test-output.c index 9b7c113..22e60af 100644 --- a/examples/osmux-test-output.c +++ b/examples/osmux-test-output.c @@ -88,7 +88,6 @@ { struct msgb *msg; struct osmux_hdr *osmuxh; - struct llist_head list; LOGP(DOSMUX_TEST, LOGL_DEBUG, "received message from datagram\n"); @@ -107,10 +106,8 @@ LOGP(DOSMUX_TEST, LOGL_DEBUG, "received OSMUX message (len=%d) %s\n", msg->len, buf); - while((osmuxh = osmux_xfrm_output_pull(msg)) != NULL) { - osmux_xfrm_output(osmuxh, &h_output, &list); - osmux_tx_sched(&list, tx_cb, NULL); - } + while((osmuxh = osmux_xfrm_output_pull(msg)) != NULL) + osmux_xfrm_output_sched(&h_output, osmuxh); return 0; } @@ -158,7 +155,7 @@ * initialize OSMUX handlers. */ osmux_xfrm_output_init(&h_output, random()); - + osmux_xfrm_output_set_tx_cb(&h_output, tx_cb, NULL); /* * initialize datagram server. */ diff --git a/tests/jibuf/jibuf_tool.c b/tests/jibuf/jibuf_tool.c index 8fa9f2e..c60bb69 100644 --- a/tests/jibuf/jibuf_tool.c +++ b/tests/jibuf/jibuf_tool.c @@ -114,7 +114,6 @@ static struct osmo_pcap osmo_pcap; static bool pcap_finished; static struct osmux_out_handle pcap_osmux_h; -static struct llist_head osmux_list; /* ----------------------------- */ static void sigalarm_handler(int foo) @@ -438,10 +437,8 @@ struct osmux_hdr *osmuxh; /* This code below belongs to the osmux receiver */ - while((osmuxh = osmux_xfrm_output_pull(msg)) != NULL) { - osmux_xfrm_output(osmuxh, &pcap_osmux_h, &osmux_list); - osmux_tx_sched(&osmux_list, glue_cb, NULL); - } + while((osmuxh = osmux_xfrm_output_pull(msg)) != NULL) + osmux_xfrm_output_sched(&pcap_osmux_h, osmuxh); msgb_free(msg); return 0; } @@ -520,8 +517,8 @@ osmo_pcap.timer.cb = pcap_pkt_timer_cb; if(opt_osmux) { - INIT_LLIST_HEAD(&osmux_list); osmux_xfrm_output_init(&pcap_osmux_h, 0); + osmux_xfrm_output_set_tx_cb(&pcap_osmux_h, glue_cb, NULL); } jb = osmo_jibuf_alloc(NULL); diff --git a/tests/osmo-pcap-test/osmux_test.c b/tests/osmo-pcap-test/osmux_test.c index 463b212..7ec78a0 100644 --- a/tests/osmo-pcap-test/osmux_test.c +++ b/tests/osmo-pcap-test/osmux_test.c @@ -52,16 +52,12 @@ static void deliver(struct msgb *batch_msg) { struct osmux_hdr *osmuxh; - struct llist_head list; printf("sending batch (len=%d) [emulated]\n", batch_msg->len); /* This code below belongs to the osmux receiver */ - while((osmuxh = osmux_xfrm_output_pull(batch_msg)) != NULL) { - - osmux_xfrm_output(osmuxh, &h_output, &list); - osmux_tx_sched(&list, tx_cb, NULL); - } + while((osmuxh = osmux_xfrm_output_pull(batch_msg)) != NULL) + osmux_xfrm_output_sched(&h_output, osmuxh); msgb_free(batch_msg); } @@ -194,6 +190,7 @@ osmux_xfrm_input_init(&h_input); osmux_xfrm_output_init(&h_output); + osmux_xfrm_output_set_tx_cb(&h_output, tx_cb, NULL); /* first run */ osmo_pcap_pkt_timer_cb(NULL); diff --git a/tests/osmux/osmux_test.c b/tests/osmux/osmux_test.c index 631ade8..704ccbc 100644 --- a/tests/osmux/osmux_test.c +++ b/tests/osmux/osmux_test.c @@ -103,7 +103,6 @@ static void osmux_deliver(struct msgb *batch_msg, void *data) { struct osmux_hdr *osmuxh; - LLIST_HEAD(list); char buf[2048]; osmux_snprintf(buf, sizeof(buf), batch_msg); @@ -112,10 +111,8 @@ /* For each OSMUX message, extract the RTP messages and put them * in a list. Then, reconstruct transmission timing. */ - while((osmuxh = osmux_xfrm_output_pull(batch_msg)) != NULL) { - osmux_xfrm_output(osmuxh, &h_output, &list); - osmux_tx_sched(&list, tx_cb, NULL); - } + while((osmuxh = osmux_xfrm_output_pull(batch_msg)) != NULL) + osmux_xfrm_output_sched(&h_output, osmuxh); msgb_free(batch_msg); } @@ -273,6 +270,7 @@ log_set_log_level(osmo_stderr_target, LOGL_DEBUG); osmux_xfrm_output_init(&h_output, 0x7000000); + osmux_xfrm_output_set_tx_cb(&h_output, tx_cb, NULL); /* If the test takes longer than 10 seconds, abort it */ alarm(10); -- To view, visit https://gerrit.osmocom.org/7876 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newpatchset Gerrit-Change-Id: Ie69c427308eb7d81aedab7fbb71f1bdaf43f0275 Gerrit-PatchSet: 2 Gerrit-Project: libosmo-netif Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Jenkins Builder From gerrit-no-reply at lists.osmocom.org Thu Apr 19 15:09:25 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Thu, 19 Apr 2018 15:09:25 +0000 Subject: libosmocore[master]: RSL/LAPDm: Not all RLL message are "transparent" In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7883 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I9f83654af189d818563d799bf623325b7fee8e70 Gerrit-PatchSet: 1 Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Owner: Harald Welte Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Thu Apr 19 15:09:33 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Thu, 19 Apr 2018 15:09:33 +0000 Subject: [MERGED] libosmocore[master]: RSL/LAPDm: Not all RLL message are "transparent" In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: RSL/LAPDm: Not all RLL message are "transparent" ...................................................................... RSL/LAPDm: Not all RLL message are "transparent" 3GPP TS 48.058 has a very clear definition of which messages are "transparent" and hence have the T-bit == 1. This is *not* just all RLL messages, but basically only RLL_DATA.{ind,req} and RLL_UNITDATA.{ind,req}. All other messages are non-transparent. Change-Id: I9f83654af189d818563d799bf623325b7fee8e70 Closes: OS#3188 --- M src/gsm/lapdm.c M tests/lapd/lapd_test.c 2 files changed, 21 insertions(+), 4 deletions(-) Approvals: Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/src/gsm/lapdm.c b/src/gsm/lapdm.c index 80c0d17..6a16012 100644 --- a/src/gsm/lapdm.c +++ b/src/gsm/lapdm.c @@ -349,12 +349,29 @@ return le->l1_prim_cb(&pp.oph, le->l1_ctx); } +/* Is a given msg_type "transparent" as per TS 48.058 Section 8.1 */ +static int rsl_is_transparent(uint8_t msg_type) +{ + switch (msg_type) { + case RSL_MT_DATA_IND: + case RSL_MT_UNIT_DATA_IND: + return 1; + case RSL_MT_DATA_REQ: + case RSL_MT_UNIT_DATA_REQ: + return 1; + default: + return 0; + } +} + /* Create RSLms various RSLms messages */ static int send_rslms_rll_l3(uint8_t msg_type, struct lapdm_msg_ctx *mctx, struct msgb *msg) { + int transparent = rsl_is_transparent(msg_type); + /* Add the RSL + RLL header */ - rsl_rll_push_l3(msg, msg_type, mctx->chan_nr, mctx->link_id, 1); + rsl_rll_push_l3(msg, msg_type, mctx->chan_nr, mctx->link_id, transparent); /* send off the RSLms message to L3 */ return rslms_sendmsg(msg, mctx->dl->entity); @@ -385,8 +402,9 @@ static int send_rll_simple(uint8_t msg_type, struct lapdm_msg_ctx *mctx) { struct msgb *msg; + int transparent = rsl_is_transparent(msg_type); - msg = rsl_rll_simple(msg_type, mctx->chan_nr, mctx->link_id, 1); + msg = rsl_rll_simple(msg_type, mctx->chan_nr, mctx->link_id, transparent); /* send off the RSLms message to L3 */ return rslms_sendmsg(msg, mctx->dl->entity); @@ -397,7 +415,7 @@ struct msgb *msg; LOGP(DLLAPD, LOGL_NOTICE, "sending MDL-ERROR-IND %d\n", cause); - msg = rsl_rll_simple(RSL_MT_ERROR_IND, mctx->chan_nr, mctx->link_id, 1); + msg = rsl_rll_simple(RSL_MT_ERROR_IND, mctx->chan_nr, mctx->link_id, 0); msgb_tlv_put(msg, RSL_IE_RLM_CAUSE, 1, &cause); return rslms_sendmsg(msg, mctx->dl->entity); } diff --git a/tests/lapd/lapd_test.c b/tests/lapd/lapd_test.c index 3f15afe..8a4e931 100644 --- a/tests/lapd/lapd_test.c +++ b/tests/lapd/lapd_test.c @@ -356,7 +356,6 @@ /* verify the header */ memset(&hdr, 0, sizeof(hdr)); rsl_init_rll_hdr(&hdr, RSL_MT_EST_CONF); - hdr.c.msg_discr |= ABIS_RSL_MDISC_TRANSP; OSMO_ASSERT(memcmp(msg->data, &hdr, sizeof(hdr)) == 0); } else if (state->ms_read == 1) { printf("MS: Verifying incoming MM message: %d\n", msgb_l3len(msg)); -- To view, visit https://gerrit.osmocom.org/7883 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: I9f83654af189d818563d799bf623325b7fee8e70 Gerrit-PatchSet: 2 Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Owner: Harald Welte Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder From jenkins at lists.osmocom.org Thu Apr 19 15:10:05 2018 From: jenkins at lists.osmocom.org (jenkins at lists.osmocom.org) Date: Thu, 19 Apr 2018 15:10:05 +0000 (UTC) Subject: =?UTF-8?Q?Build_failed_in_Jenkins:_master-asn1c_=C2=BB_a1=3Ddefaul?= =?UTF-8?Q?t,a2=3Ddefault,a3=3Ddefault,osmocom-master-debian9_#97?= Message-ID: <1761891882.2.1524150605394.JavaMail.jenkins@jenkins.osmocom.org> See ------------------------------------------ [...truncated 3.66 KB...] + ./configure checking build system type... x86_64-unknown-linux-gnu checking host system type... x86_64-unknown-linux-gnu checking target system type... x86_64-unknown-linux-gnu checking for a BSD-compatible install... /usr/bin/install -c checking whether build environment is sane... yes checking for gawk... gawk checking whether make sets $(MAKE)... yes checking whether to enable maintainer-specific portions of Makefiles... no checking for style of include used by make... GNU checking for gcc... gcc checking for C compiler default output file name... a.out checking whether the C compiler works... yes checking whether we are cross compiling... no checking for suffix of executables... checking for suffix of object files... o checking whether we are using the GNU C compiler... yes checking whether gcc accepts -g... yes checking for gcc option to accept ISO C89... none needed checking dependency style of gcc... gcc3 checking for a sed that does not truncate output... /bin/sed checking for grep that handles long lines and -e... /bin/grep checking for egrep... /bin/grep -E checking for ld used by gcc... /usr/bin/ld checking if the linker (/usr/bin/ld) is GNU ld... yes checking for /usr/bin/ld option to reload object files... -r checking for BSD-compatible nm... /usr/bin/nm -B checking whether ln -s works... yes checking how to recognise dependent libraries... pass_all checking how to run the C preprocessor... gcc -E checking for ANSI C header files... yes checking for sys/types.h... yes checking for sys/stat.h... yes checking for stdlib.h... yes checking for string.h... yes checking for memory.h... yes checking for strings.h... yes checking for inttypes.h... yes checking for stdint.h... yes checking for unistd.h... yes checking dlfcn.h usability... yes checking dlfcn.h presence... yes checking for dlfcn.h... yes checking for g++... g++ checking whether we are using the GNU C++ compiler... yes checking whether g++ accepts -g... yes checking dependency style of g++... gcc3 checking how to run the C++ preprocessor... g++ -E checking for g77... no checking for f77... no checking for xlf... no checking for frt... no checking for pgf77... no checking for cf77... no checking for fort77... no checking for fl32... no checking for af77... no checking for f90... no checking for xlf90... no checking for pgf90... no checking for pghpf... no checking for epcf90... no checking for gfortran... no checking for g95... no checking for f95... no checking for fort... no checking for xlf95... no checking for ifort... no checking for ifc... no checking for efc... no checking for pgf95... no checking for lf95... no checking for ftn... no checking whether we are using the GNU Fortran 77 compiler... no checking whether accepts -g... no checking the maximum length of command line arguments... 32768 checking command to parse /usr/bin/nm -B output from gcc object... ok checking for objdir... .libs checking for ar... ar checking for ranlib... ranlib checking for strip... strip checking if gcc supports -fno-rtti -fno-exceptions... no checking for gcc option to produce PIC... -fPIC checking if gcc PIC flag -fPIC works... yes checking if gcc static flag -static works... yes checking if gcc supports -c -o file.o... yes checking whether the gcc linker (/usr/bin/ld -m elf_x86_64) supports shared libraries... yes checking whether -lc should be explicitly linked in... no checking dynamic linker characteristics... GNU/Linux ld.so checking how to hardcode library paths into programs... immediate checking whether stripping libraries is possible... yes checking if libtool supports shared libraries... yes checking whether to build shared libraries... yes checking whether to build static libraries... yes configure: creating libtool appending configuration tag "CXX" to libtool checking for ld used by g++... /usr/bin/ld -m elf_x86_64 checking if the linker (/usr/bin/ld -m elf_x86_64) is GNU ld... yes checking whether the g++ linker (/usr/bin/ld -m elf_x86_64) supports shared libraries... yes checking for g++ option to produce PIC... -fPIC checking if g++ PIC flag -fPIC works... yes checking if g++ static flag -static works... yes checking if g++ supports -c -o file.o... yes checking whether the g++ linker (/usr/bin/ld -m elf_x86_64) supports shared libraries... yes checking dynamic linker characteristics... GNU/Linux ld.so checking how to hardcode library paths into programs... immediate appending configuration tag "F77" to libtool checking for autoconf... /usr/bin/autoconf checking for autoheader... /usr/bin/autoheader checking for gcc... (cached) gcc checking whether we are using the GNU C compiler... (cached) yes checking whether gcc accepts -g... (cached) yes checking for gcc option to accept ISO C89... (cached) none needed checking dependency style of gcc... (cached) gcc3 checking how to run the C preprocessor... gcc -E checking for a BSD-compatible install... /usr/bin/install -c checking whether ln -s works... yes checking whether make sets $(MAKE)... (cached) yes checking for bison... bison -y checking for flex... flex checking for yywrap in -lfl... yes checking lex output file root... lex.yy checking whether yytext is a pointer... yes checking for ar... /usr/bin/ar checking for ANSI C header files... (cached) yes checking sys/param.h usability... yes checking sys/param.h presence... yes checking for sys/param.h... yes checking whether byte ordering is bigendian... no checking for off_t... yes checking for size_t... yes checking whether struct tm is in sys/time.h or time.h... time.h checking for intmax_t... yes checking for library containing getopt... none required checking for strtoimax... yes checking for strtoll... yes checking for mergesort... no checking for mkstemps... yes configure: creating ./config.status config.status: creating skeletons/standard-modules/Makefile config.status: creating skeletons/tests/Makefile config.status: creating libasn1compiler/Makefile config.status: creating libasn1parser/Makefile config.status: creating libasn1print/Makefile config.status: creating asn1c/webcgi/Makefile config.status: creating asn1c/tests/Makefile config.status: creating libasn1fix/Makefile config.status: creating skeletons/Makefile config.status: creating examples/Makefile config.status: creating tests/Makefile config.status: creating asn1c/Makefile config.status: creating doc/Makefile config.status: creating asn1c.spec config.status: creating Makefile config.status: creating config.h config.status: executing depfiles commands + make -j 4 make all-recursive make[1]: Entering directory ' Making all in libasn1parser make[2]: Entering directory ' if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1parser.lo -MD -MP -MF ".deps/asn1parser.Tpo" -c -o asn1parser.lo asn1parser.c; \ then mv -f ".deps/asn1parser.Tpo" ".deps/asn1parser.Plo"; else rm -f ".deps/asn1parser.Tpo"; exit 1; fi bison -y -p asn1p_ -d asn1p_y.y if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_l.lo -MD -MP -MF ".deps/asn1p_l.Tpo" -c -o asn1p_l.lo asn1p_l.c; \ then mv -f ".deps/asn1p_l.Tpo" ".deps/asn1p_l.Plo"; else rm -f ".deps/asn1p_l.Tpo"; exit 1; fi if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_module.lo -MD -MP -MF ".deps/asn1p_module.Tpo" -c -o asn1p_module.lo asn1p_module.c; \ then mv -f ".deps/asn1p_module.Tpo" ".deps/asn1p_module.Plo"; else rm -f ".deps/asn1p_module.Tpo"; exit 1; fi asn1p_y.y: warning: 2 shift/reduce conflicts [-Wconflicts-sr] mkdir .libs gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_module.lo -MD -MP -MF .deps/asn1p_module.Tpo -c asn1p_module.c -fPIC -DPIC -o .libs/asn1p_module.o gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1parser.lo -MD -MP -MF .deps/asn1parser.Tpo -c asn1parser.c -fPIC -DPIC -o .libs/asn1parser.o gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_l.lo -MD -MP -MF .deps/asn1p_l.Tpo -c asn1p_l.c -fPIC -DPIC -o .libs/asn1p_l.o gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_module.lo -MD -MP -MF .deps/asn1p_module.Tpo -c asn1p_module.c -o asn1p_module.o >/dev/null 2>&1 asn1p_l.c:3521:12: warning: 'input' defined but not used [-Wunused-function] static int input() ^~~~~ gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1parser.lo -MD -MP -MF .deps/asn1parser.Tpo -c asn1parser.c -o asn1parser.o >/dev/null 2>&1 if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_oid.lo -MD -MP -MF ".deps/asn1p_oid.Tpo" -c -o asn1p_oid.lo asn1p_oid.c; \ then mv -f ".deps/asn1p_oid.Tpo" ".deps/asn1p_oid.Plo"; else rm -f ".deps/asn1p_oid.Tpo"; exit 1; fi if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_value.lo -MD -MP -MF ".deps/asn1p_value.Tpo" -c -o asn1p_value.lo asn1p_value.c; \ then mv -f ".deps/asn1p_value.Tpo" ".deps/asn1p_value.Plo"; else rm -f ".deps/asn1p_value.Tpo"; exit 1; fi gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_oid.lo -MD -MP -MF .deps/asn1p_oid.Tpo -c asn1p_oid.c -fPIC -DPIC -o .libs/asn1p_oid.o if test -f y.tab.h; then \ to=`echo "asn1p_y_H" | sed \ -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/' \ -e 's/[^ABCDEFGHIJKLMNOPQRSTUVWXYZ]/_/g'`; \ sed -e "/^#/!b" -e "s/Y_TAB_H/$to/g" -e "s|y\.tab\.h|asn1p_y.h|" \ y.tab.h >asn1p_y.ht; \ rm -f y.tab.h; \ if cmp -s asn1p_y.ht asn1p_y.h; then \ rm -f asn1p_y.ht ;\ else \ mv asn1p_y.ht asn1p_y.h; \ fi; \ fi if test -f y.output; then \ mv y.output asn1p_y.output; \ fi sed '/^#/ s|y\.tab\.c|asn1p_y.c|' y.tab.c >asn1p_y.ct && mv asn1p_y.ct asn1p_y.c rm -f y.tab.c if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_expr.lo -MD -MP -MF ".deps/asn1p_expr.Tpo" -c -o asn1p_expr.lo asn1p_expr.c; \ then mv -f ".deps/asn1p_expr.Tpo" ".deps/asn1p_expr.Plo"; else rm -f ".deps/asn1p_expr.Tpo"; exit 1; fi gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_value.lo -MD -MP -MF .deps/asn1p_value.Tpo -c asn1p_value.c -fPIC -DPIC -o .libs/asn1p_value.o gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_oid.lo -MD -MP -MF .deps/asn1p_oid.Tpo -c asn1p_oid.c -o asn1p_oid.o >/dev/null 2>&1 gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_expr.lo -MD -MP -MF .deps/asn1p_expr.Tpo -c asn1p_expr.c -fPIC -DPIC -o .libs/asn1p_expr.o if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_xports.lo -MD -MP -MF ".deps/asn1p_xports.Tpo" -c -o asn1p_xports.lo asn1p_xports.c; \ then mv -f ".deps/asn1p_xports.Tpo" ".deps/asn1p_xports.Plo"; else rm -f ".deps/asn1p_xports.Tpo"; exit 1; fi gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_value.lo -MD -MP -MF .deps/asn1p_value.Tpo -c asn1p_value.c -o asn1p_value.o >/dev/null 2>&1 gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_l.lo -MD -MP -MF .deps/asn1p_l.Tpo -c asn1p_l.c -o asn1p_l.o >/dev/null 2>&1 gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_expr.lo -MD -MP -MF .deps/asn1p_expr.Tpo -c asn1p_expr.c -o asn1p_expr.o >/dev/null 2>&1 gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_xports.lo -MD -MP -MF .deps/asn1p_xports.Tpo -c asn1p_xports.c -fPIC -DPIC -o .libs/asn1p_xports.o if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_constr.lo -MD -MP -MF ".deps/asn1p_constr.Tpo" -c -o asn1p_constr.lo asn1p_constr.c; \ then mv -f ".deps/asn1p_constr.Tpo" ".deps/asn1p_constr.Plo"; else rm -f ".deps/asn1p_constr.Tpo"; exit 1; fi gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_xports.lo -MD -MP -MF .deps/asn1p_xports.Tpo -c asn1p_xports.c -o asn1p_xports.o >/dev/null 2>&1 if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_param.lo -MD -MP -MF ".deps/asn1p_param.Tpo" -c -o asn1p_param.lo asn1p_param.c; \ then mv -f ".deps/asn1p_param.Tpo" ".deps/asn1p_param.Plo"; else rm -f ".deps/asn1p_param.Tpo"; exit 1; fi gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_constr.lo -MD -MP -MF .deps/asn1p_constr.Tpo -c asn1p_constr.c -fPIC -DPIC -o .libs/asn1p_constr.o if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_class.lo -MD -MP -MF ".deps/asn1p_class.Tpo" -c -o asn1p_class.lo asn1p_class.c; \ then mv -f ".deps/asn1p_class.Tpo" ".deps/asn1p_class.Plo"; else rm -f ".deps/asn1p_class.Tpo"; exit 1; fi gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_param.lo -MD -MP -MF .deps/asn1p_param.Tpo -c asn1p_param.c -fPIC -DPIC -o .libs/asn1p_param.o gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_class.lo -MD -MP -MF .deps/asn1p_class.Tpo -c asn1p_class.c -fPIC -DPIC -o .libs/asn1p_class.o gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_constr.lo -MD -MP -MF .deps/asn1p_constr.Tpo -c asn1p_constr.c -o asn1p_constr.o >/dev/null 2>&1 gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_param.lo -MD -MP -MF .deps/asn1p_param.Tpo -c asn1p_param.c -o asn1p_param.o >/dev/null 2>&1 if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_ref.lo -MD -MP -MF ".deps/asn1p_ref.Tpo" -c -o asn1p_ref.lo asn1p_ref.c; \ then mv -f ".deps/asn1p_ref.Tpo" ".deps/asn1p_ref.Plo"; else rm -f ".deps/asn1p_ref.Tpo"; exit 1; fi gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_class.lo -MD -MP -MF .deps/asn1p_class.Tpo -c asn1p_class.c -o asn1p_class.o >/dev/null 2>&1 if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_y.lo -MD -MP -MF ".deps/asn1p_y.Tpo" -c -o asn1p_y.lo asn1p_y.c; \ then mv -f ".deps/asn1p_y.Tpo" ".deps/asn1p_y.Plo"; else rm -f ".deps/asn1p_y.Tpo"; exit 1; fi gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_ref.lo -MD -MP -MF .deps/asn1p_ref.Tpo -c asn1p_ref.c -fPIC -DPIC -o .libs/asn1p_ref.o gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_y.lo -MD -MP -MF .deps/asn1p_y.Tpo -c asn1p_y.c -fPIC -DPIC -o .libs/asn1p_y.o gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_ref.lo -MD -MP -MF .deps/asn1p_ref.Tpo -c asn1p_ref.c -o asn1p_ref.o >/dev/null 2>&1 asn1p_y.y: In function 'asn1p_parse': asn1p_y.y:357:13: error: 'param' undeclared (first use in this function) *(void **)param = $1; ^~~~~ asn1p_y.y:357:13: note: each undeclared identifier is reported only once for each function it appears in Makefile:299: recipe for target 'asn1p_y.lo' failed make[2]: *** [asn1p_y.lo] Error 1 make[2]: *** Waiting for unfinished jobs.... make[2]: Leaving directory ' Makefile:302: recipe for target 'all-recursive' failed make[1]: *** [all-recursive] Error 1 make[1]: Leaving directory ' Makefile:212: recipe for target 'all' failed make: *** [all] Error 2 Build step 'Execute shell' marked build as failure [WARNINGS] Skipping publisher since build result is FAILURE From gerrit-no-reply at lists.osmocom.org Thu Apr 19 15:10:20 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Thu, 19 Apr 2018 15:10:20 +0000 Subject: openbsc[master]: chan_alloc.c: Fix log var formatting issues In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7879 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Id2ed51eed42e9fd9c91d257c245f7bce8d568f3a Gerrit-PatchSet: 1 Gerrit-Project: openbsc Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Stefan Sperling Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Thu Apr 19 15:10:23 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Thu, 19 Apr 2018 15:10:23 +0000 Subject: [MERGED] openbsc[master]: chan_alloc.c: Fix log var formatting issues In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: chan_alloc.c: Fix log var formatting issues ...................................................................... chan_alloc.c: Fix log var formatting issues Backport from osmo-bsc.git Change-Id I7a5e5d26f250f954853c12cfd4de08fed68c178e. Change-Id: Id2ed51eed42e9fd9c91d257c245f7bce8d568f3a --- M openbsc/src/libbsc/chan_alloc.c 1 file changed, 2 insertions(+), 2 deletions(-) Approvals: Stefan Sperling: Looks good to me, but someone else must approve Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/openbsc/src/libbsc/chan_alloc.c b/openbsc/src/libbsc/chan_alloc.c index c4bc949..52a8259 100644 --- a/openbsc/src/libbsc/chan_alloc.c +++ b/openbsc/src/libbsc/chan_alloc.c @@ -579,7 +579,7 @@ /* Check for invalid samples (shouldn't happen). */ if (total == 0 || used > total) { - LOGP(DRLL, LOGL_NOTICE, "(bts=%d) bogus channel load sample (used=%lu / total=%u)\n", + LOGP(DRLL, LOGL_NOTICE, "(bts=%d) bogus channel load sample (used=%"PRIu64" / total=%"PRIu32")\n", bts->nr, used, total); bts->T3122 = 0; /* disable override of network-wide default value */ bts->chan_load_samples_idx = 0; /* invalidate other samples collected so far */ @@ -622,7 +622,7 @@ else if (wait_ind > max_wait_ind) wait_ind = max_wait_ind; - LOGP(DRLL, LOGL_DEBUG, "(bts=%d) T3122 wait indicator set to %lu seconds\n", bts->nr, wait_ind); + LOGP(DRLL, LOGL_DEBUG, "(bts=%d) T3122 wait indicator set to %"PRIu64" seconds\n", bts->nr, wait_ind); bts->T3122 = (uint8_t)wait_ind; osmo_stat_item_set(bts->bts_statg->items[BTS_STAT_T3122], wait_ind); } -- To view, visit https://gerrit.osmocom.org/7879 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: Id2ed51eed42e9fd9c91d257c245f7bce8d568f3a Gerrit-PatchSet: 1 Gerrit-Project: openbsc Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Stefan Sperling From gerrit-no-reply at lists.osmocom.org Thu Apr 19 15:10:44 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Thu, 19 Apr 2018 15:10:44 +0000 Subject: osmo-bsc[master]: chan_alloc.c: Fix log var formatting issues In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7878 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I7a5e5d26f250f954853c12cfd4de08fed68c178e Gerrit-PatchSet: 1 Gerrit-Project: osmo-bsc Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Stefan Sperling Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Thu Apr 19 15:10:51 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Thu, 19 Apr 2018 15:10:51 +0000 Subject: [MERGED] osmo-bsc[master]: chan_alloc.c: Fix log var formatting issues In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: chan_alloc.c: Fix log var formatting issues ...................................................................... chan_alloc.c: Fix log var formatting issues Change-Id: I7a5e5d26f250f954853c12cfd4de08fed68c178e --- M src/libbsc/chan_alloc.c 1 file changed, 2 insertions(+), 2 deletions(-) Approvals: Stefan Sperling: Looks good to me, but someone else must approve Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/src/libbsc/chan_alloc.c b/src/libbsc/chan_alloc.c index a08fdee..e72ab3c 100644 --- a/src/libbsc/chan_alloc.c +++ b/src/libbsc/chan_alloc.c @@ -632,7 +632,7 @@ /* Check for invalid samples (shouldn't happen). */ if (total == 0 || used > total) { - LOGP(DRLL, LOGL_NOTICE, "(bts=%d) bogus channel load sample (used=%lu / total=%u)\n", + LOGP(DRLL, LOGL_NOTICE, "(bts=%d) bogus channel load sample (used=%"PRIu64" / total=%"PRIu32")\n", bts->nr, used, total); bts->T3122 = 0; /* disable override of network-wide default value */ bts->chan_load_samples_idx = 0; /* invalidate other samples collected so far */ @@ -675,7 +675,7 @@ else if (wait_ind > max_wait_ind) wait_ind = max_wait_ind; - LOGP(DRLL, LOGL_DEBUG, "(bts=%d) T3122 wait indicator set to %lu seconds\n", bts->nr, wait_ind); + LOGP(DRLL, LOGL_DEBUG, "(bts=%d) T3122 wait indicator set to %"PRIu64" seconds\n", bts->nr, wait_ind); bts->T3122 = (uint8_t)wait_ind; osmo_stat_item_set(bts->bts_statg->items[BTS_STAT_T3122], wait_ind); } -- To view, visit https://gerrit.osmocom.org/7878 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: I7a5e5d26f250f954853c12cfd4de08fed68c178e Gerrit-PatchSet: 1 Gerrit-Project: osmo-bsc Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Stefan Sperling From gerrit-no-reply at lists.osmocom.org Thu Apr 19 15:31:49 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Thu, 19 Apr 2018 15:31:49 +0000 Subject: libosmo-netif[master]: osmux: Add new API osmux_xfrm_output_sched to fix rtp genera... In-Reply-To: References: Message-ID: Patch Set 1: Code-Review-1 Don't merge yet, I'm adding a new API to flush queued rtp packets + adding doxygen doc for new APIs. -- To view, visit https://gerrit.osmocom.org/7869 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I4e05ff141eb4041128ae77812bbcfe84ed4c02de Gerrit-PatchSet: 1 Gerrit-Project: libosmo-netif Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Pau Espin Pedrol Gerrit-HasComments: No From jenkins at lists.osmocom.org Thu Apr 19 15:33:58 2018 From: jenkins at lists.osmocom.org (jenkins at lists.osmocom.org) Date: Thu, 19 Apr 2018 15:33:58 +0000 (UTC) Subject: =?UTF-8?Q?Build_failed_in_Jenkins:_master-osmo-msc_=C2=BB_--enable-?= =?UTF-8?Q?iu,a2=3Ddefault,a3=3Ddefault,osmocom-master-debian9_#2931?= Message-ID: <379404240.3.1524152038274.JavaMail.jenkins@jenkins.osmocom.org> See ------------------------------------------ [...truncated 894.18 KB...] from RANAP_IRATmeasurementParameters.c:7: ../../include/osmocom/ranap/RANAP_EUTRANFrequencies.h:27:23: warning: 'struct MemberJ' declared inside parameter list A_SEQUENCE_OF(struct MemberJ { ^ /build/deps/install/stow/libasn1c/include/asn1c/asn_SET_OF.h:17:16: note: in definition of macro 'A_SET_OF' void (*free)(type *); \ ^ ../../include/osmocom/ranap/RANAP_EUTRANFrequencies.h:27:2: note: in expansion of macro 'A_SEQUENCE_OF' A_SEQUENCE_OF(struct MemberJ { ^ ../../include/osmocom/ranap/RANAP_EUTRANFrequencies.h:27:23: warning: its scope is only this definition or declaration, which is probably not what you want A_SEQUENCE_OF(struct MemberJ { ^ /build/deps/install/stow/libasn1c/include/asn1c/asn_SET_OF.h:17:16: note: in definition of macro 'A_SET_OF' void (*free)(type *); \ ^ ../../include/osmocom/ranap/RANAP_EUTRANFrequencies.h:27:2: note: in expansion of macro 'A_SEQUENCE_OF' A_SEQUENCE_OF(struct MemberJ { ^ In file included from /build/deps/install/stow/libasn1c/include/asn1c/asn_SEQUENCE_OF.h:8:0, from ../../include/osmocom/ranap/RANAP_EUTRANFrequencies.h:14, from ../../include/osmocom/ranap/RANAP_IRATmeasurementParameters.h:15, from ../../include/osmocom/ranap/RANAP_IRAT-Measurement-Configuration.h:15, from RANAP_IRAT-Measurement-Configuration.c:7: ../../include/osmocom/ranap/RANAP_EUTRANFrequencies.h:27:23: warning: 'struct MemberJ' declared inside parameter list A_SEQUENCE_OF(struct MemberJ { ^ /build/deps/install/stow/libasn1c/include/asn1c/asn_SET_OF.h:17:16: note: in definition of macro 'A_SET_OF' void (*free)(type *); \ ^ ../../include/osmocom/ranap/RANAP_EUTRANFrequencies.h:27:2: note: in expansion of macro 'A_SEQUENCE_OF' A_SEQUENCE_OF(struct MemberJ { ^ ../../include/osmocom/ranap/RANAP_EUTRANFrequencies.h:27:23: warning: its scope is only this definition or declaration, which is probably not what you want A_SEQUENCE_OF(struct MemberJ { ^ /build/deps/install/stow/libasn1c/include/asn1c/asn_SET_OF.h:17:16: note: in definition of macro 'A_SET_OF' void (*free)(type *); \ ^ ../../include/osmocom/ranap/RANAP_EUTRANFrequencies.h:27:2: note: in expansion of macro 'A_SEQUENCE_OF' A_SEQUENCE_OF(struct MemberJ { ^ CC RANAP_SubscriberProfileIDforRFP.lo In file included from /build/deps/install/stow/libasn1c/include/asn1c/asn_SEQUENCE_OF.h:8:0, from ../../include/osmocom/ranap/RANAP_EUTRANFrequencies.h:14, from RANAP_EUTRANFrequencies.c:7: ../../include/osmocom/ranap/RANAP_EUTRANFrequencies.h:27:23: warning: 'struct MemberJ' declared inside parameter list A_SEQUENCE_OF(struct MemberJ { ^ /build/deps/install/stow/libasn1c/include/asn1c/asn_SET_OF.h:17:16: note: in definition of macro 'A_SET_OF' void (*free)(type *); \ ^ ../../include/osmocom/ranap/RANAP_EUTRANFrequencies.h:27:2: note: in expansion of macro 'A_SEQUENCE_OF' A_SEQUENCE_OF(struct MemberJ { ^ ../../include/osmocom/ranap/RANAP_EUTRANFrequencies.h:27:23: warning: its scope is only this definition or declaration, which is probably not what you want A_SEQUENCE_OF(struct MemberJ { ^ /build/deps/install/stow/libasn1c/include/asn1c/asn_SET_OF.h:17:16: note: in definition of macro 'A_SET_OF' void (*free)(type *); \ ^ ../../include/osmocom/ranap/RANAP_EUTRANFrequencies.h:27:2: note: in expansion of macro 'A_SEQUENCE_OF' A_SEQUENCE_OF(struct MemberJ { ^ CC RANAP_SourceStatisticsDescriptor.lo CC RANAP_SupportedRAB-ParameterBitrateList.lo CC RANAP_SupportedBitrate.lo CC RANAP_SourceUTRANCellID.lo CC RANAP_SRB-ID.lo CC RANAP_SRB-TrCH-Mapping.lo CC RANAP_SRB-TrCH-MappingItem.lo CC RANAP_SRVCC-HO-Indication.lo CC RANAP_SRVCC-Information.lo CC RANAP_SRVCC-Operation-Possible.lo CC RANAP_SubflowSDU-Size.lo CC RANAP_TAC.lo CC RANAP_TAI.lo CC RANAP_Target-ToSource-TransparentContainer.lo CC RANAP_TargeteNodeB-ToSourceeNodeB-TransparentContainer.lo CC RANAP_TargetBSS-ToSourceBSS-TransparentContainer.lo CC RANAP_TargetCellId.lo CC RANAP_TargetID.lo CC RANAP_TargetENB-ID.lo CC RANAP_TargetRNC-ID.lo CC RANAP_TargetRNC-ToSourceRNC-TransparentContainer.lo CC RANAP_TBCD-STRING.lo CC RANAP_TemporaryUE-ID.lo CC RANAP_Time-UE-StayedInCell.lo CC RANAP_Time-UE-StayedInCell-EnhancedGranularity.lo CC RANAP_TimeToMBMSDataTransfer.lo CC RANAP_TimingDifferenceULDL.lo CC RANAP_TMGI.lo CC RANAP_TMSI.lo CC RANAP_TraceDepth.lo CC RANAP_TraceInformation.lo CC RANAP_TracePropagationParameters.lo CC RANAP_TraceRecordingSessionInformation.lo CC RANAP_TraceRecordingSessionReference.lo CC RANAP_TraceReference.lo CC RANAP_TraceType.lo CC RANAP_TrafficClass.lo CC RANAP_TrafficHandlingPriority.lo CC RANAP_TransferDelay.lo CC RANAP_UnsuccessfullyTransmittedDataVolume.lo CC RANAP_TransportLayerAddress.lo CC RANAP_TrCH-ID.lo CC RANAP_TrCH-ID-List.lo CC RANAP_TriggerID.lo CC RANAP_TunnelInformation.lo CC RANAP_TypeOfError.lo CC RANAP_UE-AggregateMaximumBitRate.lo CC RANAP_UE-AggregateMaximumBitRateDownlink.lo CC RANAP_UE-AggregateMaximumBitRateUplink.lo CC RANAP_UE-History-Information.lo CC RANAP_UE-ID.lo CC RANAP_UESBI-Iu.lo CC RANAP_UESBI-IuA.lo CC RANAP_UESBI-IuB.lo CC RANAP_UL-GTP-PDU-SequenceNumber.lo CC RANAP_UL-N-PDU-SequenceNumber.lo CC RANAP_UPInformation.lo CC RANAP_UPInitialisationFrame.lo CC RANAP_UP-ModeVersions.lo CC RANAP_USCH-ID.lo CC RANAP_UserPlaneMode.lo CC RANAP_UTRAN-CellID.lo CC RANAP_VelocityEstimate.lo CC RANAP_HorizontalVelocity.lo CC RANAP_HorizontalWithVerticalVelocity.lo CC RANAP_HorizontalVelocityWithUncertainty.lo CC RANAP_HorizontalWithVerticalVelocityAndUncertainty.lo CC RANAP_HorizontalSpeedAndBearing.lo CC RANAP_VerticalVelocity.lo CC RANAP_VerticalSpeedDirection.lo CC RANAP_VerticalAccuracyCode.lo CC RANAP_VoiceSupportMatchIndicator.lo CC RANAP_RANAP-PDU.lo CC RANAP_InitiatingMessage.lo CC RANAP_SuccessfulOutcome.lo CC RANAP_UnsuccessfulOutcome.lo CC RANAP_Outcome.lo CC RANAP_Iu-ReleaseCommand.lo CC RANAP_Iu-ReleaseComplete.lo CC RANAP_RelocationRequired.lo CC RANAP_RelocationCommand.lo CC RANAP_RelocationPreparationFailure.lo CC RANAP_RelocationRequest.lo CC RANAP_RelocationRequestAcknowledge.lo CC RANAP_RelocationFailure.lo CC RANAP_RelocationCancel.lo CC RANAP_RelocationCancelAcknowledge.lo CC RANAP_SRNS-ContextRequest.lo CC RANAP_RAB-DataForwardingList-SRNS-CtxReq.lo CC RANAP_DataVolumeReportRequest.lo CC RANAP_SRNS-ContextResponse.lo CC RANAP_SecurityModeCommand.lo CC RANAP_SecurityModeComplete.lo CC RANAP_SecurityModeReject.lo CC RANAP_DataVolumeReport.lo CC RANAP_Reset.lo CC RANAP_ResetAcknowledge.lo CC RANAP_RAB-ReleaseRequest.lo CC RANAP_RedirectionIndication.lo CC RANAP_RAB-ReleaseList.lo CC RANAP_Iu-ReleaseRequest.lo CC RANAP_RelocationDetect.lo CC RANAP_RelocationComplete.lo CC RANAP_Paging.lo CC RANAP_CommonID.lo CC RANAP_CN-InvokeTrace.lo CC RANAP_CN-DeactivateTrace.lo CC RANAP_LocationReportingControl.lo CC RANAP_LocationReport.lo CC RANAP_InitialUE-Message.lo CC RANAP_DirectTransfer.lo CC RANAP_Overload.lo CC RANAP_ErrorIndication.lo CC RANAP_SRNS-DataForwardCommand.lo CC RANAP_ForwardSRNS-Context.lo CC RANAP_RAB-AssignmentRequest.lo CC RANAP_RAB-SetupOrModifyList.lo CC RANAP_RAB-AssignmentResponse.lo CC RANAP_PrivateMessage.lo CC RANAP_ResetResource.lo CC RANAP_ResetResourceAcknowledge.lo CC RANAP_RANAP-RelocationInformation.lo CC RANAP_RAB-ModifyRequest.lo CC RANAP_LocationRelatedDataRequest.lo CC RANAP_LocationRelatedDataResponse.lo CC RANAP_LocationRelatedDataFailure.lo CC RANAP_InformationTransferIndication.lo CC RANAP_InformationTransferConfirmation.lo CC RANAP_InformationTransferFailure.lo CC RANAP_UESpecificInformationIndication.lo CC RANAP_DirectInformationTransfer.lo CC RANAP_UplinkInformationExchangeRequest.lo CC RANAP_UplinkInformationExchangeResponse.lo CC RANAP_UplinkInformationExchangeFailure.lo CC RANAP_MBMSSessionStart.lo CC RANAP_MBMSSessionStartResponse.lo CC RANAP_MBMSSessionStartFailure.lo CC RANAP_MBMSSessionUpdate.lo CC RANAP_MBMSSessionUpdateResponse.lo CC RANAP_MBMSSessionUpdateFailure.lo CC RANAP_MBMSSessionStop.lo CC RANAP_MBMSSessionStopResponse.lo CC RANAP_MBMSUELinkingRequest.lo CC RANAP_MBMSUELinkingResponse.lo CC RANAP_MBMSRegistrationRequest.lo CC RANAP_MBMSRegistrationResponse.lo CC RANAP_MBMSRegistrationFailure.lo CC RANAP_MBMSCNDe-RegistrationRequest.lo CC RANAP_MBMSCNDe-RegistrationResponse.lo CC RANAP_MBMSRABEstablishmentIndication.lo CC RANAP_MBMSRABReleaseRequest.lo CC RANAP_MBMSRABRelease.lo CC RANAP_MBMSRABReleaseFailure.lo CC RANAP_EnhancedRelocationCompleteRequest.lo CC RANAP_EnhancedRelocationCompleteResponse.lo CC RANAP_EnhancedRelocationCompleteFailure.lo CC RANAP_EnhancedRelocationCompleteConfirm.lo CC RANAP_RANAP-EnhancedRelocationInformationRequest.lo CC RANAP_RANAP-EnhancedRelocationInformationResponse.lo CC RANAP_SRVCC-CSKeysRequest.lo CC RANAP_SRVCC-CSKeysResponse.lo CC RANAP_UeRadioCapabilityMatchRequest.lo CC RANAP_UeRadioCapabilityMatchResponse.lo CC RANAP_ProtocolExtensionContainer.lo gcc: internal compiler error: Segmentation fault (program as) Please submit a full bug report, with preprocessed source if appropriate. See for instructions. make[4]: *** [RANAP_EnhancedRelocationCompleteConfirm.lo] Error 1 make[4]: *** Waiting for unfinished jobs.... Makefile:2494: recipe for target 'RANAP_EnhancedRelocationCompleteConfirm.lo' failed make[4]: Leaving directory '/build/deps/osmo-iuh/src/ranap' Makefile:630: recipe for target 'install-recursive' failed make[3]: Leaving directory '/build/deps/osmo-iuh/src' make[3]: *** [install-recursive] Error 1 make[2]: *** [install] Error 2 Makefile:789: recipe for target 'install' failed make[2]: Leaving directory '/build/deps/osmo-iuh/src' Makefile:442: recipe for target 'install-recursive' failed make[1]: Leaving directory '/build/deps/osmo-iuh' make[1]: *** [install-recursive] Error 1 Makefile:741: recipe for target 'install' failed make: *** [install] Error 2 Build step 'Execute shell' marked build as failure [WARNINGS]Skipping publisher since build result is FAILURE From gerrit-no-reply at lists.osmocom.org Thu Apr 19 15:44:18 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Thu, 19 Apr 2018 15:44:18 +0000 Subject: osmo-bts[master]: respond with NACK for non-hopping BTS with multiple ARFCN In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7882 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Ia72e23a3f08f825cf9cf0d9a55302d13cfed51d6 Gerrit-PatchSet: 1 Gerrit-Project: osmo-bts Gerrit-Branch: master Gerrit-Owner: Stefan Sperling Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Thu Apr 19 15:44:25 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Thu, 19 Apr 2018 15:44:25 +0000 Subject: [MERGED] osmo-bts[master]: respond with NACK for non-hopping BTS with multiple ARFCN In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: respond with NACK for non-hopping BTS with multiple ARFCN ...................................................................... respond with NACK for non-hopping BTS with multiple ARFCN In addition to logging an error, send a NACK if the BSC attempts to set more than one ARFCN in Radio Carrier Attributes for a BTS which does not support frequency hopping. Change-Id: Ia72e23a3f08f825cf9cf0d9a55302d13cfed51d6 Related: OS#2295 --- M src/common/oml.c 1 file changed, 1 insertion(+), 2 deletions(-) Approvals: Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/src/common/oml.c b/src/common/oml.c index 088b3a0..5c9885e 100644 --- a/src/common/oml.c +++ b/src/common/oml.c @@ -807,8 +807,7 @@ if (length != 2) { LOGP(DOML, LOGL_ERROR, "Expecting only one ARFCN, " "because hopping not supported\n"); - /* FIXME: send NACK */ - return -ENOTSUP; + return oml_fom_ack_nack(msg, NM_NACK_MSGINCONSIST_PHYSCFG); } memcpy(&_value, value, 2); arfcn = ntohs(_value); -- To view, visit https://gerrit.osmocom.org/7882 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: Ia72e23a3f08f825cf9cf0d9a55302d13cfed51d6 Gerrit-PatchSet: 1 Gerrit-Project: osmo-bts Gerrit-Branch: master Gerrit-Owner: Stefan Sperling Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder From gerrit-no-reply at lists.osmocom.org Thu Apr 19 15:49:42 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Thu, 19 Apr 2018 15:49:42 +0000 Subject: osmo-bsc[master]: properly skip paging is OML link is down In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7881 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I5b6db681da7d45c49e1f2f99d7789c8a29372ef3 Gerrit-PatchSet: 1 Gerrit-Project: osmo-bsc Gerrit-Branch: master Gerrit-Owner: Stefan Sperling Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Thu Apr 19 15:49:51 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Thu, 19 Apr 2018 15:49:51 +0000 Subject: [MERGED] osmo-bsc[master]: properly skip paging is OML link is down In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: properly skip paging is OML link is down ...................................................................... properly skip paging is OML link is down If the OML link is found down while a paging request is issued, no paging message is sent. However, we were still counting such pagings as an actual attempt, and counted them towards the number of available slots on the paging request queue. Move the OML link check to the caller of page_ms() where the accounting steps can be properly skipped as they should be. Change-Id: I5b6db681da7d45c49e1f2f99d7789c8a29372ef3 Related: OS#2901 --- M src/libbsc/paging.c 1 file changed, 4 insertions(+), 4 deletions(-) Approvals: Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/src/libbsc/paging.c b/src/libbsc/paging.c index 910a9b6..24be692 100644 --- a/src/libbsc/paging.c +++ b/src/libbsc/paging.c @@ -80,10 +80,6 @@ unsigned int page_group; struct gsm_bts *bts = request->bts; - /* the bts is down.. we will just wait for the paging to expire */ - if (!bts->oml_link) - return; - log_set_context(LOG_CTX_BSC_SUBSCR, request->bsub); LOGP(DPAG, LOGL_INFO, "(bts=%d) Going to send paging commands: imsi: %s tmsi: " @@ -214,6 +210,10 @@ goto skip_paging; } + /* Skip paging if the bts is down. */ + if (!request->bts->oml_link) + goto skip_paging; + /* handle the paging request now */ page_ms(request); paging_bts->available_slots--; -- To view, visit https://gerrit.osmocom.org/7881 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: I5b6db681da7d45c49e1f2f99d7789c8a29372ef3 Gerrit-PatchSet: 2 Gerrit-Project: osmo-bsc Gerrit-Branch: master Gerrit-Owner: Stefan Sperling Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder From gerrit-no-reply at lists.osmocom.org Thu Apr 19 15:55:02 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Thu, 19 Apr 2018 15:55:02 +0000 Subject: docker-playground[master]: jenkins.sh: drop obsolete VOL_SUITE_DIR In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7866 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Iaf428cde0f4d3efbdb31d7af434aa82425c1bc5f Gerrit-PatchSet: 1 Gerrit-Project: docker-playground Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr Gerrit-Reviewer: Harald Welte Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Thu Apr 19 15:55:31 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Thu, 19 Apr 2018 15:55:31 +0000 Subject: docker-playground[master]: jenkins.sh: have one common function to collect logs In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7867 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I5d8472ec36b07c828685b1bd7718e31392d168a3 Gerrit-PatchSet: 1 Gerrit-Project: docker-playground Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr Gerrit-Reviewer: Harald Welte Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Thu Apr 19 15:56:09 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Thu, 19 Apr 2018 15:56:09 +0000 Subject: docker-playground[master]: jenkins.sh: stay in the jenkins workspace, not in /tmp In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+1 -- To view, visit https://gerrit.osmocom.org/7868 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I8cf6014725ae8ba602be5f3ec31dfb8e49ff993e Gerrit-PatchSet: 1 Gerrit-Project: docker-playground Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr Gerrit-Reviewer: Harald Welte Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Thu Apr 19 16:15:15 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Thu, 19 Apr 2018 16:15:15 +0000 Subject: [PATCH] libosmo-netif[master]: osmux: Move examples and tests to use new output APIs In-Reply-To: References: Message-ID: Hello Jenkins Builder, I'd like you to reexamine a change. Please visit https://gerrit.osmocom.org/7876 to look at the new patch set (#3). osmux: Move examples and tests to use new output APIs Change-Id: Ie69c427308eb7d81aedab7fbb71f1bdaf43f0275 --- M examples/osmux-test-output.c M tests/jibuf/jibuf_tool.c M tests/osmo-pcap-test/osmux_test.c M tests/osmux/osmux_test.c 4 files changed, 17 insertions(+), 24 deletions(-) git pull ssh://gerrit.osmocom.org:29418/libosmo-netif refs/changes/76/7876/3 diff --git a/examples/osmux-test-output.c b/examples/osmux-test-output.c index 9b7c113..0ab03a7 100644 --- a/examples/osmux-test-output.c +++ b/examples/osmux-test-output.c @@ -88,7 +88,6 @@ { struct msgb *msg; struct osmux_hdr *osmuxh; - struct llist_head list; LOGP(DOSMUX_TEST, LOGL_DEBUG, "received message from datagram\n"); @@ -107,10 +106,8 @@ LOGP(DOSMUX_TEST, LOGL_DEBUG, "received OSMUX message (len=%d) %s\n", msg->len, buf); - while((osmuxh = osmux_xfrm_output_pull(msg)) != NULL) { - osmux_xfrm_output(osmuxh, &h_output, &list); - osmux_tx_sched(&list, tx_cb, NULL); - } + while((osmuxh = osmux_xfrm_output_pull(msg)) != NULL) + osmux_xfrm_output_sched(&h_output, osmuxh); return 0; } @@ -120,6 +117,7 @@ LOGP(DOSMUX_TEST, LOGL_NOTICE, "closing OSMUX.\n"); osmo_dgram_close(conn); osmo_dgram_destroy(conn); + osmux_xfrm_output_flush(&h_output); osmo_rtp_handle_free(rtp); amr_close(); exit(EXIT_SUCCESS); @@ -158,7 +156,7 @@ * initialize OSMUX handlers. */ osmux_xfrm_output_init(&h_output, random()); - + osmux_xfrm_output_set_tx_cb(&h_output, tx_cb, NULL); /* * initialize datagram server. */ diff --git a/tests/jibuf/jibuf_tool.c b/tests/jibuf/jibuf_tool.c index 8fa9f2e..bd444a7 100644 --- a/tests/jibuf/jibuf_tool.c +++ b/tests/jibuf/jibuf_tool.c @@ -114,7 +114,6 @@ static struct osmo_pcap osmo_pcap; static bool pcap_finished; static struct osmux_out_handle pcap_osmux_h; -static struct llist_head osmux_list; /* ----------------------------- */ static void sigalarm_handler(int foo) @@ -438,10 +437,8 @@ struct osmux_hdr *osmuxh; /* This code below belongs to the osmux receiver */ - while((osmuxh = osmux_xfrm_output_pull(msg)) != NULL) { - osmux_xfrm_output(osmuxh, &pcap_osmux_h, &osmux_list); - osmux_tx_sched(&osmux_list, glue_cb, NULL); - } + while((osmuxh = osmux_xfrm_output_pull(msg)) != NULL) + osmux_xfrm_output_sched(&pcap_osmux_h, osmuxh); msgb_free(msg); return 0; } @@ -520,8 +517,8 @@ osmo_pcap.timer.cb = pcap_pkt_timer_cb; if(opt_osmux) { - INIT_LLIST_HEAD(&osmux_list); osmux_xfrm_output_init(&pcap_osmux_h, 0); + osmux_xfrm_output_set_tx_cb(&pcap_osmux_h, glue_cb, NULL); } jb = osmo_jibuf_alloc(NULL); @@ -533,8 +530,11 @@ /* first run */ pcap_pkt_timer_cb(NULL); - while(!pcap_finished || !osmo_jibuf_empty(jb)) + while(!pcap_finished || !osmo_jibuf_empty(jb)) { + if (pcap_finished && opt_osmux) /* Flushing once should be enough */ + osmux_xfrm_output_flush(&pcap_osmux_h); osmo_select_main(0); + } osmo_jibuf_delete(jb); diff --git a/tests/osmo-pcap-test/osmux_test.c b/tests/osmo-pcap-test/osmux_test.c index 463b212..7ec78a0 100644 --- a/tests/osmo-pcap-test/osmux_test.c +++ b/tests/osmo-pcap-test/osmux_test.c @@ -52,16 +52,12 @@ static void deliver(struct msgb *batch_msg) { struct osmux_hdr *osmuxh; - struct llist_head list; printf("sending batch (len=%d) [emulated]\n", batch_msg->len); /* This code below belongs to the osmux receiver */ - while((osmuxh = osmux_xfrm_output_pull(batch_msg)) != NULL) { - - osmux_xfrm_output(osmuxh, &h_output, &list); - osmux_tx_sched(&list, tx_cb, NULL); - } + while((osmuxh = osmux_xfrm_output_pull(batch_msg)) != NULL) + osmux_xfrm_output_sched(&h_output, osmuxh); msgb_free(batch_msg); } @@ -194,6 +190,7 @@ osmux_xfrm_input_init(&h_input); osmux_xfrm_output_init(&h_output); + osmux_xfrm_output_set_tx_cb(&h_output, tx_cb, NULL); /* first run */ osmo_pcap_pkt_timer_cb(NULL); diff --git a/tests/osmux/osmux_test.c b/tests/osmux/osmux_test.c index 631ade8..704ccbc 100644 --- a/tests/osmux/osmux_test.c +++ b/tests/osmux/osmux_test.c @@ -103,7 +103,6 @@ static void osmux_deliver(struct msgb *batch_msg, void *data) { struct osmux_hdr *osmuxh; - LLIST_HEAD(list); char buf[2048]; osmux_snprintf(buf, sizeof(buf), batch_msg); @@ -112,10 +111,8 @@ /* For each OSMUX message, extract the RTP messages and put them * in a list. Then, reconstruct transmission timing. */ - while((osmuxh = osmux_xfrm_output_pull(batch_msg)) != NULL) { - osmux_xfrm_output(osmuxh, &h_output, &list); - osmux_tx_sched(&list, tx_cb, NULL); - } + while((osmuxh = osmux_xfrm_output_pull(batch_msg)) != NULL) + osmux_xfrm_output_sched(&h_output, osmuxh); msgb_free(batch_msg); } @@ -273,6 +270,7 @@ log_set_log_level(osmo_stderr_target, LOGL_DEBUG); osmux_xfrm_output_init(&h_output, 0x7000000); + osmux_xfrm_output_set_tx_cb(&h_output, tx_cb, NULL); /* If the test takes longer than 10 seconds, abort it */ alarm(10); -- To view, visit https://gerrit.osmocom.org/7876 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newpatchset Gerrit-Change-Id: Ie69c427308eb7d81aedab7fbb71f1bdaf43f0275 Gerrit-PatchSet: 3 Gerrit-Project: libosmo-netif Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Jenkins Builder From gerrit-no-reply at lists.osmocom.org Thu Apr 19 16:15:15 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Thu, 19 Apr 2018 16:15:15 +0000 Subject: [PATCH] libosmo-netif[master]: osmux: Add new API osmux_xfrm_output_sched to fix rtp genera... In-Reply-To: References: Message-ID: Hello Jenkins Builder, I'd like you to reexamine a change. Please visit https://gerrit.osmocom.org/7869 to look at the new patch set (#2). osmux: Add new API osmux_xfrm_output_sched to fix rtp generation issues With old implementation, in conditions with jitter we could end up scheduling RTP generated packets from two consecutive osmux frames in an interleaved way (from seq field point of view). This new implementation should make it easier for any RTP reader/playback to have better results in those conditions. Old APIs osmux_xfm_output and osmux_tx_sched are marked as deprecated in favour of the new one, which has a better control of generated RTP packets. However, they are still usable despite the implementation changes done to support the new API. Related: OS#3180 Change-Id: I4e05ff141eb4041128ae77812bbcfe84ed4c02de --- M include/osmocom/netif/osmux.h M src/osmux.c 2 files changed, 137 insertions(+), 3 deletions(-) git pull ssh://gerrit.osmocom.org:29418/libosmo-netif refs/changes/69/7869/2 diff --git a/include/osmocom/netif/osmux.h b/include/osmocom/netif/osmux.h index 5283059..e8e2c67 100644 --- a/include/osmocom/netif/osmux.h +++ b/include/osmocom/netif/osmux.h @@ -2,6 +2,7 @@ #define _OSMUX_H_ #include +#include /*! \addtogroup osmux * @{ @@ -79,6 +80,10 @@ uint16_t rtp_seq; uint32_t rtp_timestamp; uint32_t rtp_ssrc; + struct osmo_timer_list timer; + struct llist_head list; + void (*tx_cb)(struct msgb *msg, void *data); /* Used defined rtp tx callback */ + void *data; /* User defined opaque data structure */ }; static inline uint8_t *osmux_get_payload(struct osmux_hdr *osmuxh) @@ -101,10 +106,13 @@ void osmux_xfrm_input_deliver(struct osmux_in_handle *h); void osmux_xfrm_output_init(struct osmux_out_handle *h, uint32_t rtp_ssrc); -int osmux_xfrm_output(struct osmux_hdr *osmuxh, struct osmux_out_handle *h, struct llist_head *list); +void osmux_xfrm_output_set_tx_cb(struct osmux_out_handle *h, void (*tx_cb)(struct msgb *msg, void *data), void *data); +int osmux_xfrm_output(struct osmux_hdr *osmuxh, struct osmux_out_handle *h, struct llist_head *list) OSMO_DEPRECATED("Use osmux_xfrm_output_sched() instead"); +int osmux_xfrm_output_sched(struct osmux_out_handle *h, struct osmux_hdr *osmuxh); +void osmux_xfrm_output_flush(struct osmux_out_handle *h); struct osmux_hdr *osmux_xfrm_output_pull(struct msgb *msg); -void osmux_tx_sched(struct llist_head *list, void (*tx_cb)(struct msgb *msg, void *data), void *data); +void osmux_tx_sched(struct llist_head *list, void (*tx_cb)(struct msgb *msg, void *data), void *data) OSMO_DEPRECATED("Use osmux_xfrm_output_set_tx_cb() instead"); /*! @} */ diff --git a/src/osmux.c b/src/osmux.c index 03db469..30297f8 100644 --- a/src/osmux.c +++ b/src/osmux.c @@ -16,6 +16,7 @@ #include #include +#include #include #include #include @@ -127,9 +128,11 @@ osmux_rebuild_rtp(struct osmux_out_handle *h, struct osmux_hdr *osmuxh, void *payload, int payload_len, bool first_pkt) { - struct msgb *out_msg; + struct msgb *prev_msg, *out_msg; + struct timespec *prev_ts, *out_ts; struct rtp_hdr *rtph; struct amr_hdr *amrh; + struct timespec delta = { .tv_sec = 0, .tv_nsec = DELTA_RTP_MSG*1000 }; out_msg = msgb_alloc(sizeof(struct rtp_hdr) + sizeof(struct amr_hdr) + @@ -170,6 +173,15 @@ h->rtp_seq++; h->rtp_timestamp += DELTA_RTP_TIMESTAMP; + out_ts = ((struct timespec *)&((out_msg)->cb[0])); + if (first_pkt || llist_empty(&h->list)) { + osmo_clock_gettime(CLOCK_MONOTONIC, out_ts); + } else { + prev_msg = llist_last_entry(&h->list, struct msgb, list); + prev_ts = ((struct timespec *)&((prev_msg)->cb[0])); + timespecadd(prev_ts, &delta, out_ts); + } + return out_msg; } @@ -207,6 +219,102 @@ llist_add_tail(&msg->list, list); } return i; +} + +static void osmux_xfrm_output_trigger(void *data) +{ + struct osmux_out_handle *h = data; + struct timespec delay_ts, now; + struct msgb *msg, *next; + + llist_for_each_entry_safe(msg, next, &h->list, list) { + osmo_clock_gettime(CLOCK_MONOTONIC, &now); + struct timespec *msg_ts = ((struct timespec *)&((msg)->cb[0])); + if (timespeccmp(msg_ts, &now, >)) { + timespecsub(msg_ts, &now, &delay_ts); + osmo_timer_schedule(&h->timer, + delay_ts.tv_sec, delay_ts.tv_nsec / 1000); + return; + } + + /* Transmit the rtp packet */ + llist_del(&msg->list); + if (h->tx_cb) + h->tx_cb(msg, h->data); + } +} + +/*! \brief Generate RTP packets from osmux frame AMR payload set and schedule + * them for transmission at appropiate time. + * \param[in] h the osmux out handle handling a specific CID + * \param[in] osmuxh Buffer pointing to osmux frame header structure and AMR payload + * \return Number of generated RTP packets + * + * The osmux frame passed to this function must be of the type OSMUX_FT_VOICE_AMR. + * The generated RTP packets are kept into h's internal list and sent to the + * callback configured through osmux_xfrm_output_set_tx_cb when are ready to be + * transmitted according to schedule. + */ +int osmux_xfrm_output_sched(struct osmux_out_handle *h, struct osmux_hdr *osmuxh) +{ + struct timespec now, *msg_ts; + struct msgb *msg; + int i; + bool was_empty = llist_empty(&h->list); + + if (!was_empty) { + /* If we received new data it means we are behind schedule and + * we should flush all previous quickly */ + osmo_clock_gettime(CLOCK_MONOTONIC, &now); + llist_for_each_entry(msg, &h->list, list) { + msg_ts = ((struct timespec *)&((msg)->cb[0])); + *msg_ts = now; + } + osmo_timer_schedule(&h->timer, 0, 0); + } + + for (i=0; ictr+1; i++) { + struct rtp_hdr *rtph; + + msg = osmux_rebuild_rtp(h, osmuxh, + osmux_get_payload(osmuxh) + + i * osmo_amr_bytes(osmuxh->amr_ft), + osmo_amr_bytes(osmuxh->amr_ft), !i); + if (msg == NULL) + continue; + + rtph = osmo_rtp_get_hdr(msg); + if (rtph == NULL) + continue; + + llist_add_tail(&msg->list, &h->list); + } + /* In case list is still empty after parsing messages, no need to rearm */ + if(was_empty && !llist_empty(&h->list)) + osmux_xfrm_output_trigger(h); + return i; +} + +/*! \brief Flush all scheduled RTP packets still pending to be transmitted + * \param[in] h the osmux out handle to flush + * + * This function will immediately call the transmit callback for all queued RTP + * packets, making sure the list ends up empty. It will also stop all internal + * timers to make sure the osmux_out_handle can be dropped or re-used by calling + * osmux_xfrm_output on it. + */ +void osmux_xfrm_output_flush(struct osmux_out_handle *h) +{ + struct msgb *msg, *next; + + if (osmo_timer_pending(&h->timer)) + osmo_timer_del(&h->timer); + + llist_for_each_entry_safe(msg, next, &h->list, list) { + llist_del(&msg->list); + if (h->tx_cb) + h->tx_cb(msg, h->data); + } } struct osmux_batch { @@ -746,6 +854,22 @@ LOGP(DLMUX, LOGL_DEBUG, "initialized osmux input converter\n"); } +/*! \brief Set transmission callback to call when a generated RTP packet is to be transmitted + * \param[in] h the osmux out handle handling a specific CID + * \param[in] osmuxh Buffer pointing to osmux frame header structure and AMR payload + * \return Number of generated RTP packets + * + * This Function sets the callback called by the interal timer set by + * osmux_xfrm_out_sched function. + */ +void osmux_xfrm_output_set_tx_cb(struct osmux_out_handle *h, + void (*tx_cb)(struct msgb *msg, void *data), + void *data) +{ + h->tx_cb = tx_cb; + h->data = data; +} + int osmux_xfrm_input_open_circuit(struct osmux_in_handle *h, int ccid, int dummy) { @@ -862,6 +986,8 @@ h->rtp_seq = (uint16_t)random(); h->rtp_timestamp = (uint32_t)random(); h->rtp_ssrc = rtp_ssrc; + INIT_LLIST_HEAD(&h->list); + osmo_timer_setup(&h->timer, osmux_xfrm_output_trigger, h); } #define SNPRINTF_BUFFER_SIZE(ret, remain, offset) \ -- To view, visit https://gerrit.osmocom.org/7869 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newpatchset Gerrit-Change-Id: I4e05ff141eb4041128ae77812bbcfe84ed4c02de Gerrit-PatchSet: 2 Gerrit-Project: libosmo-netif Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Pablo Neira Ayuso Gerrit-Reviewer: Pau Espin Pedrol From gerrit-no-reply at lists.osmocom.org Thu Apr 19 16:15:15 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Thu, 19 Apr 2018 16:15:15 +0000 Subject: [PATCH] libosmo-netif[master]: tests: Add osmux2 testsuite In-Reply-To: References: Message-ID: Hello Jenkins Builder, I'd like you to reexamine a change. Please visit https://gerrit.osmocom.org/7870 to look at the new patch set (#3). tests: Add osmux2 testsuite This test is aimed at testing several specific scenarios related to how osmux manages in/out of osmux/rtp packets over time. Change-Id: I3bf59276424ea87c4e66a6ff46de1e3e9a06a904 --- M tests/Makefile.am A tests/osmux/osmux_test2.c A tests/osmux/osmux_test2.ok M tests/testsuite.at 4 files changed, 497 insertions(+), 1 deletion(-) git pull ssh://gerrit.osmocom.org:29418/libosmo-netif refs/changes/70/7870/3 diff --git a/tests/Makefile.am b/tests/Makefile.am index a53fdb3..7c06b13 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -1,11 +1,14 @@ AM_CFLAGS = -Wall -I$(top_srcdir)/include $(LIBOSMOCORE_CFLAGS) -g AM_LDFLAGS = $(LIBOSMOCORE_LDFLAGS) -check_PROGRAMS = osmux/osmux_test jibuf/jibuf_test +check_PROGRAMS = osmux/osmux_test osmux/osmux_test2 jibuf/jibuf_test check_HEADERS = osmux_osmux_test_SOURCES = osmux/osmux_test.c osmux_osmux_test_LDADD = $(LIBOSMOCORE_LIBS) $(top_builddir)/src/libosmonetif.la + +osmux_osmux_test2_SOURCES = osmux/osmux_test2.c +osmux_osmux_test2_LDADD = $(LIBOSMOCORE_LIBS) $(top_builddir)/src/libosmonetif.la jibuf_jibuf_test_SOURCES = jibuf/jibuf_test.c jibuf_jibuf_test_LDADD = $(LIBOSMOCORE_LIBS) $(top_builddir)/src/libosmonetif.la @@ -52,6 +55,7 @@ EXTRA_DIST = testsuite.at $(srcdir)/package.m4 $(TESTSUITE) \ osmux/osmux_test.ok \ + osmux/osmux_test2.ok \ jibuf/jibuf_test.ok DISTCLEANFILES = atconfig diff --git a/tests/osmux/osmux_test2.c b/tests/osmux/osmux_test2.c new file mode 100644 index 0000000..ecd9296 --- /dev/null +++ b/tests/osmux/osmux_test2.c @@ -0,0 +1,378 @@ +/* (C) 2017 by sysmocom - s.f.m.c. GmbH + * + * Author: Pau Espin Pedrol + * + * SPDX-License-Identifier: GPL-2.0+ + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include + +static uint8_t osmux_next_seq; + +#define TIME_RTP_PKT_MS 20 +#define BATCH_FACTOR 6 +/* ----------------------------- */ + +/* Logging related stuff */ +#define INT2IDX(x) (-1*(x)-1) +struct log_info_cat jibuf_test_cat[] = { + [INT2IDX(DLMUX)] = { + .name = "DLMUX", + .description = "Osmocom Osmux", + .enabled = 1, .loglevel = LOGL_DEBUG, + }, +}; +const struct log_info log_info = { + .filter_fn = NULL, + .cat = jibuf_test_cat, + .num_cat = ARRAY_SIZE(jibuf_test_cat), +}; +/* ----------------------------- */ + +static void osmux_init(uint8_t seq) +{ + osmux_next_seq = seq; +} + +static struct msgb *osmux_new(uint8_t cid, uint8_t seq, uint8_t batch_factor) +{ + struct msgb *msg; + struct osmux_hdr *osmuxh; + + msg = msgb_alloc(1500, "test"); + if (!msg) + exit(EXIT_FAILURE); + msgb_put(msg, sizeof(struct osmux_hdr)); + + osmuxh = (struct osmux_hdr *)msg->data; + osmuxh->amr_q = 0; + osmuxh->amr_f = 0; + osmuxh->rtp_m = 0; + osmuxh->ctr = batch_factor - 1; + osmuxh->ft = 1; + osmuxh->seq = osmux_next_seq; + osmuxh->circuit_id = cid; + osmuxh->amr_ft = AMR_FT_2; /* 5.90 */ + osmuxh->amr_cmr = 0; + msgb_put(msg, osmo_amr_bytes(osmuxh->amr_ft)*batch_factor); + return msg; +} + +static struct msgb *osmux_next(void) +{ + osmux_next_seq++; + return osmux_new(0, osmux_next_seq, BATCH_FACTOR); +} + +static void sigalarm_handler(int foo) +{ + printf("FAIL: test did not run successfully\n"); + exit(EXIT_FAILURE); +} + + +static void clock_debug(char* str) +{ + struct timespec ts; + struct timeval tv; + osmo_clock_gettime(CLOCK_MONOTONIC, &ts); + osmo_gettimeofday(&tv, NULL); + printf("sys={%lu.%06lu}, mono={%lu.%06lu}: %s\n", + tv.tv_sec, tv.tv_usec, ts.tv_sec, ts.tv_nsec/1000, str); +} + +static void clock_override_enable(bool enable) +{ + osmo_gettimeofday_override = enable; + osmo_clock_override_enable(CLOCK_MONOTONIC, enable); +} + +static void clock_override_set(long sec, long usec) +{ + struct timespec *mono; + osmo_gettimeofday_override_time.tv_sec = sec; + osmo_gettimeofday_override_time.tv_usec = usec; + mono = osmo_clock_override_gettimespec(CLOCK_MONOTONIC); + mono->tv_sec = sec; + mono->tv_nsec = usec*1000; + + clock_debug("clock_override_set"); +} + +static void clock_override_add_debug(long sec, long usec, bool dbg) +{ + osmo_gettimeofday_override_add(sec, usec); + osmo_clock_override_add(CLOCK_MONOTONIC, sec, usec*1000); + if (dbg) + clock_debug("clock_override_add"); +} +#define clock_override_add(sec, usec) clock_override_add_debug(sec, usec, true) + +static void tx_cb(struct msgb *msg, void *data) +{ + struct osmux_out_handle *h_output = (struct osmux_out_handle *) data; + struct rtp_hdr *rtph; + char buf[250]; + rtph = osmo_rtp_get_hdr(msg); + snprintf(buf, sizeof(buf), "dequeue: seq=%"PRIu16" ts=%"PRIu32"%s enqueued=%u", + ntohs(rtph->sequence), ntohl(rtph->timestamp), rtph->marker ? " M" : "", + llist_count(&h_output->list)); + clock_debug(buf); + msgb_free(msg); +} + +#define PULL_NEXT(h_output) { \ + struct msgb *_msg; \ + struct osmux_hdr *_osmuxh; \ + int _rc; \ + _msg = osmux_next(); \ + _osmuxh = osmux_xfrm_output_pull(_msg); \ + OSMO_ASSERT(_osmuxh); \ + _rc = osmux_xfrm_output_sched((h_output), _osmuxh); \ + OSMO_ASSERT(_rc == _osmuxh->ctr+1); \ + } + +static void test_output_consecutive(void) +{ + struct osmux_out_handle h_output; + + printf("===test_output_consecutive===\n"); + + clock_override_enable(true); + clock_override_set(0, 0); + osmux_init(32); + osmux_xfrm_output_init(&h_output, 0x7000000); + h_output.rtp_seq = (uint16_t)50; + h_output.rtp_timestamp = (uint32_t)500; + osmux_xfrm_output_set_tx_cb(&h_output, tx_cb, &h_output); + + /* First osmux frame at t=0 */ + PULL_NEXT(&h_output); + clock_debug("first dequed before first select"); + osmo_select_main(0); + + clock_override_add(0, TIME_RTP_PKT_MS*1000); + clock_debug("second select, second dequed"); + osmo_select_main(0); + + clock_override_add(0, TIME_RTP_PKT_MS*1000); + clock_debug("third select, third dequed"); + osmo_select_main(0); + + clock_override_add(0, TIME_RTP_PKT_MS*1000); + clock_debug("fourth select, fourth dequed"); + osmo_select_main(0); + + clock_override_add(0, TIME_RTP_PKT_MS*1000); + clock_debug("fifth select, fifth dequed"); + osmo_select_main(0); + + clock_override_add(0, TIME_RTP_PKT_MS*1000); + clock_debug("sixth select, sixth dequed"); + osmo_select_main(0); + OSMO_ASSERT(llist_empty(&h_output.list)); + + /* Second osmux frame at t=80 */ + clock_debug("send second osmux frame"); + PULL_NEXT(&h_output); + clock_debug("first dequed before first select"); + osmo_select_main(0); + + clock_override_add(0, TIME_RTP_PKT_MS*1000); + clock_debug("second select, second dequed"); + osmo_select_main(0); + + clock_override_add(0, 4*TIME_RTP_PKT_MS*1000); + clock_debug("third select, four packet should be dequeued"); + osmo_select_main(0); + OSMO_ASSERT(llist_empty(&h_output.list)); + OSMO_ASSERT(!osmo_timer_pending(&h_output.timer)); + + clock_debug("calling flush on empty list, should do nothing"); + osmux_xfrm_output_flush(&h_output); + OSMO_ASSERT(llist_empty(&h_output.list)); + OSMO_ASSERT(!osmo_timer_pending(&h_output.timer)); +} + +static void test_output_interleaved(void) +{ + struct osmux_out_handle h_output; + + printf("===test_output_interleaved===\n"); + + clock_override_enable(true); + clock_override_set(0, 0); + osmux_init(32); + osmux_xfrm_output_init(&h_output, 0x7000000); + h_output.rtp_seq = (uint16_t)50; + h_output.rtp_timestamp = (uint32_t)500; + osmux_xfrm_output_set_tx_cb(&h_output, tx_cb, &h_output); + + /* First osmux frame at t=0, but it actually arrives late due to jitter, + so 2nd frame is going to arrive before the 1st one is completelly + scheduled */ + PULL_NEXT(&h_output); + + clock_override_add(0, 2*TIME_RTP_PKT_MS*1000); + clock_debug("select, 3 dequed, 3 still queued"); + osmo_select_main(0); + + /* Second osmux frame at t=0 */ + clock_debug("next frame arrives, 3 pending rtp packets are dequeued and first of new osmux frame too"); + PULL_NEXT(&h_output); + osmo_select_main(0); + OSMO_ASSERT(llist_count(&h_output.list) == 5); + + clock_override_add(0, 5*TIME_RTP_PKT_MS*1000); + clock_debug("calling select, then all should be out"); + osmo_select_main(0); + + OSMO_ASSERT(llist_empty(&h_output.list)); + OSMO_ASSERT(!osmo_timer_pending(&h_output.timer)); +} + +static void test_output_2together(void) +{ + struct osmux_out_handle h_output; + + printf("===test_output_2together===\n"); + + clock_override_enable(true); + clock_override_set(0, 0); + osmux_init(32); + osmux_xfrm_output_init(&h_output, 0x7000000); + h_output.rtp_seq = (uint16_t)50; + h_output.rtp_timestamp = (uint32_t)500; + osmux_xfrm_output_set_tx_cb(&h_output, tx_cb, &h_output); + + /* First osmux frame at t=0, but it actually arrives late due to jitter, + so we receive both at the same time. */ + PULL_NEXT(&h_output); + clock_debug("calling select in between 2 osmux recv"); + osmo_select_main(0); + PULL_NEXT(&h_output); + + clock_debug("calling select after receiving 2nd osmux. Dequeue 1st osmux frame and 1st rtp from 2nd osmux frame."); + osmo_select_main(0); + OSMO_ASSERT(llist_count(&h_output.list) == 5); + + clock_override_add(0, 5*TIME_RTP_PKT_MS*1000); + clock_debug("select, all 5 remaining should be out"); + osmo_select_main(0); + + OSMO_ASSERT(llist_empty(&h_output.list)); + OSMO_ASSERT(!osmo_timer_pending(&h_output.timer)); +} + +/* FIXME: this test shows generated rtp stream doesn't have osmux lost frames into account! */ +static void test_output_frame_lost(void) +{ + struct osmux_out_handle h_output; + + printf("===test_output_frame_lost===\n"); + + clock_override_enable(true); + clock_override_set(0, 0); + osmux_init(32); + osmux_xfrm_output_init(&h_output, 0x7000000); + h_output.rtp_seq = (uint16_t)50; + h_output.rtp_timestamp = (uint32_t)500; + osmux_xfrm_output_set_tx_cb(&h_output, tx_cb, &h_output); + + clock_debug("first osmux frame"); + PULL_NEXT(&h_output); + clock_override_add(0, 5*TIME_RTP_PKT_MS*1000); + osmo_select_main(0); + + clock_debug("one osmux frame is now lost (seq++)"); + osmux_next(); + clock_override_add(0, 6*TIME_RTP_PKT_MS*1000); + + clock_debug("3rd osmux frame arrives"); + PULL_NEXT(&h_output); + clock_override_add(0, 5*TIME_RTP_PKT_MS*1000); + osmo_select_main(0); + + OSMO_ASSERT(llist_empty(&h_output.list)); + OSMO_ASSERT(!osmo_timer_pending(&h_output.timer)); +} + +static void test_output_flush(void) +{ + struct osmux_out_handle h_output; + + printf("===test_output_flush===\n"); + + clock_override_enable(true); + clock_override_set(0, 0); + osmux_init(32); + osmux_xfrm_output_init(&h_output, 0x7000000); + h_output.rtp_seq = (uint16_t)50; + h_output.rtp_timestamp = (uint32_t)500; + osmux_xfrm_output_set_tx_cb(&h_output, tx_cb, &h_output); + + clock_debug("first osmux frame"); + PULL_NEXT(&h_output); + clock_override_add(0, 2*TIME_RTP_PKT_MS*1000); + osmo_select_main(0); + + clock_debug("2nd osmux frame arrives"); + PULL_NEXT(&h_output); + + clock_debug("flushing, all packet should be transmitted immediately"); + OSMO_ASSERT(llist_count(&h_output.list) == 9); + OSMO_ASSERT(osmo_timer_pending(&h_output.timer)); + osmux_xfrm_output_flush(&h_output); + OSMO_ASSERT(llist_empty(&h_output.list)); + OSMO_ASSERT(!osmo_timer_pending(&h_output.timer)); +} + +int main(int argc, char **argv) +{ + + if (signal(SIGALRM, sigalarm_handler) == SIG_ERR) { + perror("signal"); + exit(EXIT_FAILURE); + } + + void *tall_ctx = talloc_named_const(NULL, 1, "Root context"); + msgb_talloc_ctx_init(tall_ctx, 0); + osmo_init_logging2(tall_ctx, &log_info); + log_set_print_filename(osmo_stderr_target, 0); + log_set_log_level(osmo_stderr_target, LOGL_DEBUG); + log_set_category_filter(osmo_stderr_target, DLMUX, 1, LOGL_DEBUG); + + alarm(10); + + test_output_consecutive(); + test_output_interleaved(); + test_output_2together(); + test_output_frame_lost(); + test_output_flush(); + + fprintf(stdout, "OK: Test passed\n"); + return EXIT_SUCCESS; +} diff --git a/tests/osmux/osmux_test2.ok b/tests/osmux/osmux_test2.ok new file mode 100644 index 0000000..1e6f95a --- /dev/null +++ b/tests/osmux/osmux_test2.ok @@ -0,0 +1,108 @@ +===test_output_consecutive=== +sys={0.000000}, mono={0.000000}: clock_override_set +sys={0.000000}, mono={0.000000}: dequeue: seq=50 ts=500 enqueued=5 +sys={0.000000}, mono={0.000000}: first dequed before first select +sys={0.020000}, mono={0.020000}: clock_override_add +sys={0.020000}, mono={0.020000}: second select, second dequed +sys={0.020000}, mono={0.020000}: dequeue: seq=51 ts=660 enqueued=4 +sys={0.040000}, mono={0.040000}: clock_override_add +sys={0.040000}, mono={0.040000}: third select, third dequed +sys={0.040000}, mono={0.040000}: dequeue: seq=52 ts=820 enqueued=3 +sys={0.060000}, mono={0.060000}: clock_override_add +sys={0.060000}, mono={0.060000}: fourth select, fourth dequed +sys={0.060000}, mono={0.060000}: dequeue: seq=53 ts=980 enqueued=2 +sys={0.080000}, mono={0.080000}: clock_override_add +sys={0.080000}, mono={0.080000}: fifth select, fifth dequed +sys={0.080000}, mono={0.080000}: dequeue: seq=54 ts=1140 enqueued=1 +sys={0.100000}, mono={0.100000}: clock_override_add +sys={0.100000}, mono={0.100000}: sixth select, sixth dequed +sys={0.100000}, mono={0.100000}: dequeue: seq=55 ts=1300 enqueued=0 +sys={0.100000}, mono={0.100000}: send second osmux frame +sys={0.100000}, mono={0.100000}: dequeue: seq=56 ts=1460 enqueued=5 +sys={0.100000}, mono={0.100000}: first dequed before first select +sys={0.120000}, mono={0.120000}: clock_override_add +sys={0.120000}, mono={0.120000}: second select, second dequed +sys={0.120000}, mono={0.120000}: dequeue: seq=57 ts=1620 enqueued=4 +sys={0.200000}, mono={0.200000}: clock_override_add +sys={0.200000}, mono={0.200000}: third select, four packet should be dequeued +sys={0.200000}, mono={0.200000}: dequeue: seq=58 ts=1780 enqueued=3 +sys={0.200000}, mono={0.200000}: dequeue: seq=59 ts=1940 enqueued=2 +sys={0.200000}, mono={0.200000}: dequeue: seq=60 ts=2100 enqueued=1 +sys={0.200000}, mono={0.200000}: dequeue: seq=61 ts=2260 enqueued=0 +sys={0.200000}, mono={0.200000}: calling flush on empty list, should do nothing +===test_output_interleaved=== +sys={0.000000}, mono={0.000000}: clock_override_set +sys={0.000000}, mono={0.000000}: dequeue: seq=50 ts=500 enqueued=5 +sys={0.040000}, mono={0.040000}: clock_override_add +sys={0.040000}, mono={0.040000}: select, 3 dequed, 3 still queued +sys={0.040000}, mono={0.040000}: dequeue: seq=51 ts=660 enqueued=4 +sys={0.040000}, mono={0.040000}: dequeue: seq=52 ts=820 enqueued=3 +sys={0.040000}, mono={0.040000}: next frame arrives, 3 pending rtp packets are dequeued and first of new osmux frame too +sys={0.040000}, mono={0.040000}: dequeue: seq=53 ts=980 enqueued=8 +sys={0.040000}, mono={0.040000}: dequeue: seq=54 ts=1140 enqueued=7 +sys={0.040000}, mono={0.040000}: dequeue: seq=55 ts=1300 enqueued=6 +sys={0.040000}, mono={0.040000}: dequeue: seq=56 ts=1460 enqueued=5 +sys={0.140000}, mono={0.140000}: clock_override_add +sys={0.140000}, mono={0.140000}: calling select, then all should be out +sys={0.140000}, mono={0.140000}: dequeue: seq=57 ts=1620 enqueued=4 +sys={0.140000}, mono={0.140000}: dequeue: seq=58 ts=1780 enqueued=3 +sys={0.140000}, mono={0.140000}: dequeue: seq=59 ts=1940 enqueued=2 +sys={0.140000}, mono={0.140000}: dequeue: seq=60 ts=2100 enqueued=1 +sys={0.140000}, mono={0.140000}: dequeue: seq=61 ts=2260 enqueued=0 +===test_output_2together=== +sys={0.000000}, mono={0.000000}: clock_override_set +sys={0.000000}, mono={0.000000}: dequeue: seq=50 ts=500 enqueued=5 +sys={0.000000}, mono={0.000000}: calling select in between 2 osmux recv +sys={0.000000}, mono={0.000000}: calling select after receiving 2nd osmux. Dequeue 1st osmux frame and 1st rtp from 2nd osmux frame. +sys={0.000000}, mono={0.000000}: dequeue: seq=51 ts=660 enqueued=10 +sys={0.000000}, mono={0.000000}: dequeue: seq=52 ts=820 enqueued=9 +sys={0.000000}, mono={0.000000}: dequeue: seq=53 ts=980 enqueued=8 +sys={0.000000}, mono={0.000000}: dequeue: seq=54 ts=1140 enqueued=7 +sys={0.000000}, mono={0.000000}: dequeue: seq=55 ts=1300 enqueued=6 +sys={0.000000}, mono={0.000000}: dequeue: seq=56 ts=1460 enqueued=5 +sys={0.100000}, mono={0.100000}: clock_override_add +sys={0.100000}, mono={0.100000}: select, all 5 remaining should be out +sys={0.100000}, mono={0.100000}: dequeue: seq=57 ts=1620 enqueued=4 +sys={0.100000}, mono={0.100000}: dequeue: seq=58 ts=1780 enqueued=3 +sys={0.100000}, mono={0.100000}: dequeue: seq=59 ts=1940 enqueued=2 +sys={0.100000}, mono={0.100000}: dequeue: seq=60 ts=2100 enqueued=1 +sys={0.100000}, mono={0.100000}: dequeue: seq=61 ts=2260 enqueued=0 +===test_output_frame_lost=== +sys={0.000000}, mono={0.000000}: clock_override_set +sys={0.000000}, mono={0.000000}: first osmux frame +sys={0.000000}, mono={0.000000}: dequeue: seq=50 ts=500 enqueued=5 +sys={0.100000}, mono={0.100000}: clock_override_add +sys={0.100000}, mono={0.100000}: dequeue: seq=51 ts=660 enqueued=4 +sys={0.100000}, mono={0.100000}: dequeue: seq=52 ts=820 enqueued=3 +sys={0.100000}, mono={0.100000}: dequeue: seq=53 ts=980 enqueued=2 +sys={0.100000}, mono={0.100000}: dequeue: seq=54 ts=1140 enqueued=1 +sys={0.100000}, mono={0.100000}: dequeue: seq=55 ts=1300 enqueued=0 +sys={0.100000}, mono={0.100000}: one osmux frame is now lost (seq++) +sys={0.220000}, mono={0.220000}: clock_override_add +sys={0.220000}, mono={0.220000}: 3rd osmux frame arrives +sys={0.220000}, mono={0.220000}: dequeue: seq=56 ts=1460 enqueued=5 +sys={0.320000}, mono={0.320000}: clock_override_add +sys={0.320000}, mono={0.320000}: dequeue: seq=57 ts=1620 enqueued=4 +sys={0.320000}, mono={0.320000}: dequeue: seq=58 ts=1780 enqueued=3 +sys={0.320000}, mono={0.320000}: dequeue: seq=59 ts=1940 enqueued=2 +sys={0.320000}, mono={0.320000}: dequeue: seq=60 ts=2100 enqueued=1 +sys={0.320000}, mono={0.320000}: dequeue: seq=61 ts=2260 enqueued=0 +===test_output_flush=== +sys={0.000000}, mono={0.000000}: clock_override_set +sys={0.000000}, mono={0.000000}: first osmux frame +sys={0.000000}, mono={0.000000}: dequeue: seq=50 ts=500 enqueued=5 +sys={0.040000}, mono={0.040000}: clock_override_add +sys={0.040000}, mono={0.040000}: dequeue: seq=51 ts=660 enqueued=4 +sys={0.040000}, mono={0.040000}: dequeue: seq=52 ts=820 enqueued=3 +sys={0.040000}, mono={0.040000}: 2nd osmux frame arrives +sys={0.040000}, mono={0.040000}: flushing, all packet should be transmitted immediately +sys={0.040000}, mono={0.040000}: dequeue: seq=53 ts=980 enqueued=8 +sys={0.040000}, mono={0.040000}: dequeue: seq=54 ts=1140 enqueued=7 +sys={0.040000}, mono={0.040000}: dequeue: seq=55 ts=1300 enqueued=6 +sys={0.040000}, mono={0.040000}: dequeue: seq=56 ts=1460 enqueued=5 +sys={0.040000}, mono={0.040000}: dequeue: seq=57 ts=1620 enqueued=4 +sys={0.040000}, mono={0.040000}: dequeue: seq=58 ts=1780 enqueued=3 +sys={0.040000}, mono={0.040000}: dequeue: seq=59 ts=1940 enqueued=2 +sys={0.040000}, mono={0.040000}: dequeue: seq=60 ts=2100 enqueued=1 +sys={0.040000}, mono={0.040000}: dequeue: seq=61 ts=2260 enqueued=0 +OK: Test passed diff --git a/tests/testsuite.at b/tests/testsuite.at index 81d40ba..67b91c6 100644 --- a/tests/testsuite.at +++ b/tests/testsuite.at @@ -7,6 +7,12 @@ AT_CHECK([$abs_top_builddir/tests/osmux/osmux_test], [0], [expout], [ignore]) AT_CLEANUP +AT_SETUP([osmux_test2]) +AT_KEYWORDS([osmux_test2]) +cat $abs_srcdir/osmux/osmux_test2.ok > expout +AT_CHECK([$abs_top_builddir/tests/osmux/osmux_test2], [0], [expout], [ignore]) +AT_CLEANUP + AT_SETUP([jibuf_test]) AT_KEYWORDS([jibuf_test]) cat $abs_srcdir/jibuf/jibuf_test.ok > expout -- To view, visit https://gerrit.osmocom.org/7870 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newpatchset Gerrit-Change-Id: I3bf59276424ea87c4e66a6ff46de1e3e9a06a904 Gerrit-PatchSet: 3 Gerrit-Project: libosmo-netif Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Pablo Neira Ayuso From gerrit-no-reply at lists.osmocom.org Thu Apr 19 16:15:15 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Thu, 19 Apr 2018 16:15:15 +0000 Subject: [PATCH] libosmo-netif[master]: osmux: Set Marker bit on osmux frame loss detected In-Reply-To: References: Message-ID: Hello Jenkins Builder, I'd like you to reexamine a change. Please visit https://gerrit.osmocom.org/7871 to look at the new patch set (#3). osmux: Set Marker bit on osmux frame loss detected Until this patch, we didn't notify in any way to the RTP reader when an Osmux frame was lost. Instead, we updated the seq×tamp as if there was no lost, and as a result the RTP reader would only see a steady increase of delay every time an osmux frame was lost. As the batch_factor for the lost packet is unknown, we cannot assume any number of amr payloads lost, and thus we cannot simply increment seq and timestamp for a specific amount. Instead, the only viable solution seems to set the M marker bit in the first rtp packet generated after a non-consecutive osmux frame is received. The implementation may act differently with the first generated RTP packet based on the first osmux seq number used for the stream. In case 0 it's used as first osmux seq number, M will be set depending on request from original RTP packet having the M bit set. If it's not 0, the first RTP packer will unconditionally have the M bit. That's not an issue because it's anyway expect for receiver to sync on the first packet. Related: OS#3185 Change-Id: I2efed6d726a1b8e77e686c7a5fe1940d3f4901a7 --- M include/osmocom/netif/osmux.h M src/osmux.c M tests/osmux/osmux_test.c M tests/osmux/osmux_test2.ok 4 files changed, 34 insertions(+), 12 deletions(-) git pull ssh://gerrit.osmocom.org:29418/libosmo-netif refs/changes/71/7871/3 diff --git a/include/osmocom/netif/osmux.h b/include/osmocom/netif/osmux.h index e8e2c67..dfed66a 100644 --- a/include/osmocom/netif/osmux.h +++ b/include/osmocom/netif/osmux.h @@ -80,6 +80,7 @@ uint16_t rtp_seq; uint32_t rtp_timestamp; uint32_t rtp_ssrc; + uint8_t osmux_seq_ack; /* Latest received seq num */ struct osmo_timer_list timer; struct llist_head list; void (*tx_cb)(struct msgb *msg, void *data); /* Used defined rtp tx callback */ diff --git a/src/osmux.c b/src/osmux.c index 30297f8..f480073 100644 --- a/src/osmux.c +++ b/src/osmux.c @@ -151,8 +151,14 @@ rtph->timestamp = htonl(h->rtp_timestamp); rtph->sequence = htons(h->rtp_seq); rtph->ssrc = htonl(h->rtp_ssrc); - /* rtp packet with the marker bit is always warranted to be the first one */ - rtph->marker = first_pkt && osmuxh->rtp_m; + /* rtp packet with the marker bit is always guaranteed to be the first + * one. We want to notify with marker in 2 scenarios: + * 1- Sender told us through osmux frame rtp_m. + * 2- Sntermediate osmux frame lost (seq gap), otherwise rtp receiver only sees + * steady increase of delay + */ + rtph->marker = first_pkt && + (osmuxh->rtp_m || (osmuxh->seq != h->osmux_seq_ack + 1)); msgb_put(out_msg, sizeof(struct rtp_hdr)); @@ -218,6 +224,10 @@ #endif llist_add_tail(&msg->list, list); } + + /* Update last seen seq number: */ + h->osmux_seq_ack = osmuxh->seq; + return i; } @@ -289,6 +299,10 @@ llist_add_tail(&msg->list, &h->list); } + + /* Update last seen seq number: */ + h->osmux_seq_ack = osmuxh->seq; + /* In case list is still empty after parsing messages, no need to rearm */ if(was_empty && !llist_empty(&h->list)) osmux_xfrm_output_trigger(h); diff --git a/tests/osmux/osmux_test.c b/tests/osmux/osmux_test.c index 01ce2d1..631ade8 100644 --- a/tests/osmux/osmux_test.c +++ b/tests/osmux/osmux_test.c @@ -152,7 +152,8 @@ memcpy(msg->data, rtp_pkt, sizeof(rtp_pkt)); cpy_rtph = (struct rtp_hdr *) msgb_put(msg, sizeof(rtp_pkt)); - if ((i+j) % 7 == 0) { + /* first condition guarantees that 1st packet per stream contains M bit set. */ + if (i == 0 || (i+j) % 7 == 0) { cpy_rtph->marker = 1; mark_pkts++; } @@ -175,7 +176,7 @@ } if (mark_pkts) { - fprintf(stdout, "RTP M bit (marker) mismatch! %d\n", mark_pkts); + fprintf(stdout, "osmux_test_marker: RTP M bit (marker) mismatch! %d\n", mark_pkts); exit(EXIT_FAILURE); } } @@ -183,6 +184,7 @@ static void osmux_test_loop(int ccid) { struct rtp_hdr *rtph = (struct rtp_hdr *)rtp_pkt; + struct rtp_hdr *cpy_rtph; struct msgb *msg; int i, j, k = 0; char buf[1024]; @@ -194,11 +196,16 @@ exit(EXIT_FAILURE); memcpy(msg->data, rtp_pkt, sizeof(rtp_pkt)); - msgb_put(msg, sizeof(rtp_pkt)); + cpy_rtph = (struct rtp_hdr *) msgb_put(msg, sizeof(rtp_pkt)); seq = ntohs(rtph->sequence); seq++; rtph->sequence = htons(seq); + if (i < 3) { + /* Mark 1 rtp packet of each stream */ + cpy_rtph->marker = 1; + mark_pkts++; + } osmo_rtp_snprintf(buf, sizeof(buf), msg); fprintf(stderr, "adding to ccid=%u %s\n", (i % 2) + ccid, buf); @@ -239,7 +246,7 @@ } if (mark_pkts) { - fprintf(stdout, "RTP M bit (marker) mismatch! %d\n", mark_pkts); + fprintf(stdout, "osmux_test_loop: RTP M bit (marker) mismatch! %d\n", mark_pkts); exit(EXIT_FAILURE); } } diff --git a/tests/osmux/osmux_test2.ok b/tests/osmux/osmux_test2.ok index 1e6f95a..53ab67d 100644 --- a/tests/osmux/osmux_test2.ok +++ b/tests/osmux/osmux_test2.ok @@ -1,6 +1,6 @@ ===test_output_consecutive=== sys={0.000000}, mono={0.000000}: clock_override_set -sys={0.000000}, mono={0.000000}: dequeue: seq=50 ts=500 enqueued=5 +sys={0.000000}, mono={0.000000}: dequeue: seq=50 ts=500 M enqueued=5 sys={0.000000}, mono={0.000000}: first dequed before first select sys={0.020000}, mono={0.020000}: clock_override_add sys={0.020000}, mono={0.020000}: second select, second dequed @@ -32,7 +32,7 @@ sys={0.200000}, mono={0.200000}: calling flush on empty list, should do nothing ===test_output_interleaved=== sys={0.000000}, mono={0.000000}: clock_override_set -sys={0.000000}, mono={0.000000}: dequeue: seq=50 ts=500 enqueued=5 +sys={0.000000}, mono={0.000000}: dequeue: seq=50 ts=500 M enqueued=5 sys={0.040000}, mono={0.040000}: clock_override_add sys={0.040000}, mono={0.040000}: select, 3 dequed, 3 still queued sys={0.040000}, mono={0.040000}: dequeue: seq=51 ts=660 enqueued=4 @@ -51,7 +51,7 @@ sys={0.140000}, mono={0.140000}: dequeue: seq=61 ts=2260 enqueued=0 ===test_output_2together=== sys={0.000000}, mono={0.000000}: clock_override_set -sys={0.000000}, mono={0.000000}: dequeue: seq=50 ts=500 enqueued=5 +sys={0.000000}, mono={0.000000}: dequeue: seq=50 ts=500 M enqueued=5 sys={0.000000}, mono={0.000000}: calling select in between 2 osmux recv sys={0.000000}, mono={0.000000}: calling select after receiving 2nd osmux. Dequeue 1st osmux frame and 1st rtp from 2nd osmux frame. sys={0.000000}, mono={0.000000}: dequeue: seq=51 ts=660 enqueued=10 @@ -70,7 +70,7 @@ ===test_output_frame_lost=== sys={0.000000}, mono={0.000000}: clock_override_set sys={0.000000}, mono={0.000000}: first osmux frame -sys={0.000000}, mono={0.000000}: dequeue: seq=50 ts=500 enqueued=5 +sys={0.000000}, mono={0.000000}: dequeue: seq=50 ts=500 M enqueued=5 sys={0.100000}, mono={0.100000}: clock_override_add sys={0.100000}, mono={0.100000}: dequeue: seq=51 ts=660 enqueued=4 sys={0.100000}, mono={0.100000}: dequeue: seq=52 ts=820 enqueued=3 @@ -80,7 +80,7 @@ sys={0.100000}, mono={0.100000}: one osmux frame is now lost (seq++) sys={0.220000}, mono={0.220000}: clock_override_add sys={0.220000}, mono={0.220000}: 3rd osmux frame arrives -sys={0.220000}, mono={0.220000}: dequeue: seq=56 ts=1460 enqueued=5 +sys={0.220000}, mono={0.220000}: dequeue: seq=56 ts=1460 M enqueued=5 sys={0.320000}, mono={0.320000}: clock_override_add sys={0.320000}, mono={0.320000}: dequeue: seq=57 ts=1620 enqueued=4 sys={0.320000}, mono={0.320000}: dequeue: seq=58 ts=1780 enqueued=3 @@ -90,7 +90,7 @@ ===test_output_flush=== sys={0.000000}, mono={0.000000}: clock_override_set sys={0.000000}, mono={0.000000}: first osmux frame -sys={0.000000}, mono={0.000000}: dequeue: seq=50 ts=500 enqueued=5 +sys={0.000000}, mono={0.000000}: dequeue: seq=50 ts=500 M enqueued=5 sys={0.040000}, mono={0.040000}: clock_override_add sys={0.040000}, mono={0.040000}: dequeue: seq=51 ts=660 enqueued=4 sys={0.040000}, mono={0.040000}: dequeue: seq=52 ts=820 enqueued=3 -- To view, visit https://gerrit.osmocom.org/7871 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newpatchset Gerrit-Change-Id: I2efed6d726a1b8e77e686c7a5fe1940d3f4901a7 Gerrit-PatchSet: 3 Gerrit-Project: libosmo-netif Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Jenkins Builder From jenkins at lists.osmocom.org Thu Apr 19 16:15:40 2018 From: jenkins at lists.osmocom.org (jenkins at lists.osmocom.org) Date: Thu, 19 Apr 2018 16:15:40 +0000 (UTC) Subject: =?UTF-8?Q?Jenkins_build_is_back_to_normal_:_master-osmo-msc_=C2=BB_--ena?= =?UTF-8?Q?ble-iu,a2=3Ddefault,a3=3Ddefault,osmocom-master-debian9_#2932?= In-Reply-To: <379404240.3.1524152038274.JavaMail.jenkins@jenkins.osmocom.org> References: <379404240.3.1524152038274.JavaMail.jenkins@jenkins.osmocom.org> Message-ID: <2123597372.5.1524154540688.JavaMail.jenkins@jenkins.osmocom.org> See From gerrit-no-reply at lists.osmocom.org Thu Apr 19 16:23:49 2018 From: gerrit-no-reply at lists.osmocom.org (Stefan Sperling) Date: Thu, 19 Apr 2018 16:23:49 +0000 Subject: [PATCH] osmo-bts[master]: return NACK codes instead of errno values from oml_tx_attr_r... Message-ID: Review at https://gerrit.osmocom.org/7884 return NACK codes instead of errno values from oml_tx_attr_resp() The caller translates errno values back into NACK codes anyway, so lets's return NACK codes directly. Change-Id: I2b1f79e66c778139d64101c89dd6377921807e2d Related: OS#2295 --- M src/common/oml.c 1 file changed, 8 insertions(+), 14 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-bts refs/changes/84/7884/1 diff --git a/src/common/oml.c b/src/common/oml.c index 5c9885e..cb735b4 100644 --- a/src/common/oml.c +++ b/src/common/oml.c @@ -211,7 +211,7 @@ struct msgb *attr_buf = oml_msgb_alloc(); if (!attr_buf) - return -ENOMEM; + return -NM_NACK_CANT_PERFORM; for (i = 0; i < attr_len; i++) { bool processed = false; @@ -244,7 +244,7 @@ struct msgb *attr_buf = oml_msgb_alloc(); if (!attr_buf) - return -ENOMEM; + return -NM_NACK_CANT_PERFORM; for (i = 0; i < attr_len; i++) { switch (attr[i]) { @@ -277,7 +277,7 @@ get_value_string(abis_nm_obj_class_names, foh->obj_class)); if (!nmsg) - return -ENOMEM; + return -NM_NACK_CANT_PERFORM; switch (foh->obj_class) { case NM_OC_BTS: @@ -289,7 +289,7 @@ default: LOGP(DOML, LOGL_ERROR, "Unsupported MO class %s in Get Attribute Response\n", get_value_string(abis_nm_obj_class_names, foh->obj_class)); - len = -EINVAL; + len = -NM_NACK_RES_NOTIMPL; } if (len < 0) { @@ -301,7 +301,8 @@ /* ?9.4.64 Get Attribute Response Info */ msgb_tl16v_put(nmsg, NM_ATT_GET_ARI, len, resp); - return oml_mo_send_msg(&bts->mo, nmsg, NM_MT_GET_ATTR_RESP); + len = oml_mo_send_msg(&bts->mo, nmsg, NM_MT_GET_ATTR_RESP); + return (len < 0) ? -NM_NACK_CANT_PERFORM : len; } /* 8.8.1 sending State Changed Event Report */ @@ -552,15 +553,8 @@ rc = oml_tx_attr_resp(bts, foh, TLVP_VAL(&tp, NM_ATT_LIST_REQ_ATTR), TLVP_LEN(&tp, NM_ATT_LIST_REQ_ATTR)); if (rc < 0) { - LOGP(DOML, LOGL_ERROR, "Failed to respond to O&M Get Attributes message: %s\n", strerror(-rc)); - switch (-rc) { - case ENOMEM: - return oml_fom_ack_nack(msg, NM_NACK_CANT_PERFORM); - case ENOTSUP: - return oml_fom_ack_nack(msg, NM_NACK_OBJCLASS_NOTSUPP); - default: - return oml_fom_ack_nack(msg, NM_NACK_RES_NOTIMPL); - } + LOGP(DOML, LOGL_ERROR, "responding to O&M Get Attributes message with NACK 0%x\n", -rc); + return oml_fom_ack_nack(msg, -rc); } return 0; -- To view, visit https://gerrit.osmocom.org/7884 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I2b1f79e66c778139d64101c89dd6377921807e2d Gerrit-PatchSet: 1 Gerrit-Project: osmo-bts Gerrit-Branch: master Gerrit-Owner: Stefan Sperling From gerrit-no-reply at lists.osmocom.org Thu Apr 19 16:25:21 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Thu, 19 Apr 2018 16:25:21 +0000 Subject: [PATCH] libosmo-netif[master]: osmux: Add new API osmux_xfrm_output_sched to fix rtp genera... In-Reply-To: References: Message-ID: Hello Jenkins Builder, I'd like you to reexamine a change. Please visit https://gerrit.osmocom.org/7869 to look at the new patch set (#3). osmux: Add new API osmux_xfrm_output_sched to fix rtp generation issues With old implementation, in conditions with jitter we could end up scheduling RTP generated packets from two consecutive osmux frames in an interleaved way (from seq field point of view). This new implementation should make it easier for any RTP reader/playback to have better results in those conditions. Old APIs osmux_xfm_output and osmux_tx_sched are marked as deprecated in favour of the new one, which has a better control of generated RTP packets. However, they are still usable despite the implementation changes done to support the new API. Related: OS#3180 Change-Id: I4e05ff141eb4041128ae77812bbcfe84ed4c02de --- M include/osmocom/netif/osmux.h M src/osmux.c 2 files changed, 141 insertions(+), 3 deletions(-) git pull ssh://gerrit.osmocom.org:29418/libosmo-netif refs/changes/69/7869/3 diff --git a/include/osmocom/netif/osmux.h b/include/osmocom/netif/osmux.h index 5283059..e8e2c67 100644 --- a/include/osmocom/netif/osmux.h +++ b/include/osmocom/netif/osmux.h @@ -2,6 +2,7 @@ #define _OSMUX_H_ #include +#include /*! \addtogroup osmux * @{ @@ -79,6 +80,10 @@ uint16_t rtp_seq; uint32_t rtp_timestamp; uint32_t rtp_ssrc; + struct osmo_timer_list timer; + struct llist_head list; + void (*tx_cb)(struct msgb *msg, void *data); /* Used defined rtp tx callback */ + void *data; /* User defined opaque data structure */ }; static inline uint8_t *osmux_get_payload(struct osmux_hdr *osmuxh) @@ -101,10 +106,13 @@ void osmux_xfrm_input_deliver(struct osmux_in_handle *h); void osmux_xfrm_output_init(struct osmux_out_handle *h, uint32_t rtp_ssrc); -int osmux_xfrm_output(struct osmux_hdr *osmuxh, struct osmux_out_handle *h, struct llist_head *list); +void osmux_xfrm_output_set_tx_cb(struct osmux_out_handle *h, void (*tx_cb)(struct msgb *msg, void *data), void *data); +int osmux_xfrm_output(struct osmux_hdr *osmuxh, struct osmux_out_handle *h, struct llist_head *list) OSMO_DEPRECATED("Use osmux_xfrm_output_sched() instead"); +int osmux_xfrm_output_sched(struct osmux_out_handle *h, struct osmux_hdr *osmuxh); +void osmux_xfrm_output_flush(struct osmux_out_handle *h); struct osmux_hdr *osmux_xfrm_output_pull(struct msgb *msg); -void osmux_tx_sched(struct llist_head *list, void (*tx_cb)(struct msgb *msg, void *data), void *data); +void osmux_tx_sched(struct llist_head *list, void (*tx_cb)(struct msgb *msg, void *data), void *data) OSMO_DEPRECATED("Use osmux_xfrm_output_set_tx_cb() instead"); /*! @} */ diff --git a/src/osmux.c b/src/osmux.c index 03db469..a7339c6 100644 --- a/src/osmux.c +++ b/src/osmux.c @@ -16,6 +16,7 @@ #include #include +#include #include #include #include @@ -127,9 +128,11 @@ osmux_rebuild_rtp(struct osmux_out_handle *h, struct osmux_hdr *osmuxh, void *payload, int payload_len, bool first_pkt) { - struct msgb *out_msg; + struct msgb *prev_msg, *out_msg; + struct timespec *prev_ts, *out_ts; struct rtp_hdr *rtph; struct amr_hdr *amrh; + struct timespec delta = { .tv_sec = 0, .tv_nsec = DELTA_RTP_MSG*1000 }; out_msg = msgb_alloc(sizeof(struct rtp_hdr) + sizeof(struct amr_hdr) + @@ -170,6 +173,15 @@ h->rtp_seq++; h->rtp_timestamp += DELTA_RTP_TIMESTAMP; + out_ts = ((struct timespec *)&((out_msg)->cb[0])); + if (first_pkt || llist_empty(&h->list)) { + osmo_clock_gettime(CLOCK_MONOTONIC, out_ts); + } else { + prev_msg = llist_last_entry(&h->list, struct msgb, list); + prev_ts = ((struct timespec *)&((prev_msg)->cb[0])); + timespecadd(prev_ts, &delta, out_ts); + } + return out_msg; } @@ -207,6 +219,106 @@ llist_add_tail(&msg->list, list); } return i; +} + +static void osmux_xfrm_output_trigger(void *data) +{ + struct osmux_out_handle *h = data; + struct timespec delay_ts, now; + struct msgb *msg, *next; + + llist_for_each_entry_safe(msg, next, &h->list, list) { + osmo_clock_gettime(CLOCK_MONOTONIC, &now); + struct timespec *msg_ts = ((struct timespec *)&((msg)->cb[0])); + if (timespeccmp(msg_ts, &now, >)) { + timespecsub(msg_ts, &now, &delay_ts); + osmo_timer_schedule(&h->timer, + delay_ts.tv_sec, delay_ts.tv_nsec / 1000); + return; + } + + /* Transmit the rtp packet */ + llist_del(&msg->list); + if (h->tx_cb) + h->tx_cb(msg, h->data); + else + msgb_free(msg); + } +} + +/*! \brief Generate RTP packets from osmux frame AMR payload set and schedule + * them for transmission at appropiate time. + * \param[in] h the osmux out handle handling a specific CID + * \param[in] osmuxh Buffer pointing to osmux frame header structure and AMR payload + * \return Number of generated RTP packets + * + * The osmux frame passed to this function must be of the type OSMUX_FT_VOICE_AMR. + * The generated RTP packets are kept into h's internal list and sent to the + * callback configured through osmux_xfrm_output_set_tx_cb when are ready to be + * transmitted according to schedule. + */ +int osmux_xfrm_output_sched(struct osmux_out_handle *h, struct osmux_hdr *osmuxh) +{ + struct timespec now, *msg_ts; + struct msgb *msg; + int i; + bool was_empty = llist_empty(&h->list); + + if (!was_empty) { + /* If we received new data it means we are behind schedule and + * we should flush all previous quickly */ + osmo_clock_gettime(CLOCK_MONOTONIC, &now); + llist_for_each_entry(msg, &h->list, list) { + msg_ts = ((struct timespec *)&((msg)->cb[0])); + *msg_ts = now; + } + osmo_timer_schedule(&h->timer, 0, 0); + } + + for (i=0; ictr+1; i++) { + struct rtp_hdr *rtph; + + msg = osmux_rebuild_rtp(h, osmuxh, + osmux_get_payload(osmuxh) + + i * osmo_amr_bytes(osmuxh->amr_ft), + osmo_amr_bytes(osmuxh->amr_ft), !i); + if (msg == NULL) + continue; + + rtph = osmo_rtp_get_hdr(msg); + if (rtph == NULL) + continue; + + llist_add_tail(&msg->list, &h->list); + } + /* In case list is still empty after parsing messages, no need to rearm */ + if(was_empty && !llist_empty(&h->list)) + osmux_xfrm_output_trigger(h); + return i; +} + +/*! \brief Flush all scheduled RTP packets still pending to be transmitted + * \param[in] h the osmux out handle to flush + * + * This function will immediately call the transmit callback for all queued RTP + * packets, making sure the list ends up empty. It will also stop all internal + * timers to make sure the osmux_out_handle can be dropped or re-used by calling + * osmux_xfrm_output on it. + */ +void osmux_xfrm_output_flush(struct osmux_out_handle *h) +{ + struct msgb *msg, *next; + + if (osmo_timer_pending(&h->timer)) + osmo_timer_del(&h->timer); + + llist_for_each_entry_safe(msg, next, &h->list, list) { + llist_del(&msg->list); + if (h->tx_cb) + h->tx_cb(msg, h->data); + else + msgb_free(msg); + } } struct osmux_batch { @@ -746,6 +858,22 @@ LOGP(DLMUX, LOGL_DEBUG, "initialized osmux input converter\n"); } +/*! \brief Set transmission callback to call when a generated RTP packet is to be transmitted + * \param[in] h the osmux out handle handling a specific CID + * \param[in] osmuxh Buffer pointing to osmux frame header structure and AMR payload + * \return Number of generated RTP packets + * + * This Function sets the callback called by the interal timer set by + * osmux_xfrm_out_sched function. + */ +void osmux_xfrm_output_set_tx_cb(struct osmux_out_handle *h, + void (*tx_cb)(struct msgb *msg, void *data), + void *data) +{ + h->tx_cb = tx_cb; + h->data = data; +} + int osmux_xfrm_input_open_circuit(struct osmux_in_handle *h, int ccid, int dummy) { @@ -862,6 +990,8 @@ h->rtp_seq = (uint16_t)random(); h->rtp_timestamp = (uint32_t)random(); h->rtp_ssrc = rtp_ssrc; + INIT_LLIST_HEAD(&h->list); + osmo_timer_setup(&h->timer, osmux_xfrm_output_trigger, h); } #define SNPRINTF_BUFFER_SIZE(ret, remain, offset) \ -- To view, visit https://gerrit.osmocom.org/7869 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newpatchset Gerrit-Change-Id: I4e05ff141eb4041128ae77812bbcfe84ed4c02de Gerrit-PatchSet: 3 Gerrit-Project: libosmo-netif Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Pablo Neira Ayuso Gerrit-Reviewer: Pau Espin Pedrol From gerrit-no-reply at lists.osmocom.org Thu Apr 19 16:45:16 2018 From: gerrit-no-reply at lists.osmocom.org (Stefan Sperling) Date: Thu, 19 Apr 2018 16:45:16 +0000 Subject: [PATCH] osmo-bts[master]: cosmetic: fix typos in src/common/oml.c Message-ID: Review at https://gerrit.osmocom.org/7885 cosmetic: fix typos in src/common/oml.c Change-Id: I6789421497182e957341b01a37a2d9b8d367adf9 Related: OS#2295 --- M src/common/oml.c 1 file changed, 4 insertions(+), 4 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-bts refs/changes/85/7885/1 diff --git a/src/common/oml.c b/src/common/oml.c index 5c9885e..0958220 100644 --- a/src/common/oml.c +++ b/src/common/oml.c @@ -21,7 +21,7 @@ */ /* - * Operation and Maintainance Messages + * Operation and Maintenance Messages */ #include "btsconfig.h" @@ -464,8 +464,8 @@ return oml_mo_send_msg(mo, nmsg, NM_MT_SW_ACTIVATED_REP); } -/* the below defaults correpsond to the libocmocore default of 1s for - * DCCH and 2s for ACCH. The BSC should overried this via OML anyway. */ +/* The defaults below correspond to the libosmocore default of 1s for + * DCCH and 2s for ACCH. The BSC should override this via OML anyway. */ const unsigned int oml_default_t200_ms[7] = { [T200_SDCCH] = 1000, [T200_FACCH_F] = 1000, @@ -652,7 +652,7 @@ case 0x02: /* Based on RXLEV/RXQUAL measurements */ default: LOGP(DOML, LOGL_NOTICE, "Given Conn. Failure Criterion " - "not supported. Please use critetion 0x01 with " + "not supported. Please use criterion 0x01 with " "RADIO_LINK_TIMEOUT value of 4..64\n"); return oml_fom_ack_nack(msg, NM_NACK_PARAM_RANGE); } -- To view, visit https://gerrit.osmocom.org/7885 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I6789421497182e957341b01a37a2d9b8d367adf9 Gerrit-PatchSet: 1 Gerrit-Project: osmo-bts Gerrit-Branch: master Gerrit-Owner: Stefan Sperling From gerrit-no-reply at lists.osmocom.org Thu Apr 19 16:49:49 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Thu, 19 Apr 2018 16:49:49 +0000 Subject: [PATCH] openbsc[master]: mgcp: switch to new osmux output APIs Message-ID: Review at https://gerrit.osmocom.org/7886 mgcp: switch to new osmux output APIs Older ones are being deprecated as they may generate interleaved packets. Depends on libosmo-netif.git Change-Id I4e05ff141eb4041128ae77812bbcfe84ed4c02de. Change-Id: I189564fc63139c15314db8975afd423c7153ea32 --- M openbsc/src/libmgcp/mgcp_osmux.c 1 file changed, 11 insertions(+), 6 deletions(-) git pull ssh://gerrit.osmocom.org:29418/openbsc refs/changes/86/7886/1 diff --git a/openbsc/src/libmgcp/mgcp_osmux.c b/openbsc/src/libmgcp/mgcp_osmux.c index c52984b..69124d2 100644 --- a/openbsc/src/libmgcp/mgcp_osmux.c +++ b/openbsc/src/libmgcp/mgcp_osmux.c @@ -267,7 +267,6 @@ { struct msgb *msg; struct osmux_hdr *osmuxh; - struct llist_head list; struct sockaddr_in addr; struct mgcp_config *cfg = ofd->data; uint32_t rem; @@ -297,8 +296,7 @@ endp->osmux.stats.chunks++; rem = msg->len; - osmux_xfrm_output(osmuxh, &endp->osmux.out, &list); - osmux_tx_sched(&list, scheduled_tx_bts_cb, endp); + osmux_xfrm_output_sched(&endp->osmux.out, osmuxh); } out: msgb_free(msg); @@ -359,7 +357,6 @@ { struct msgb *msg; struct osmux_hdr *osmuxh; - struct llist_head list; struct sockaddr_in addr; struct mgcp_config *cfg = ofd->data; uint32_t rem; @@ -389,8 +386,7 @@ endp->osmux.stats.chunks++; rem = msg->len; - osmux_xfrm_output(osmuxh, &endp->osmux.out, &list); - osmux_tx_sched(&list, scheduled_tx_net_cb, endp); + osmux_xfrm_output_sched(&endp->osmux.out, osmuxh); } out: msgb_free(msg); @@ -470,9 +466,13 @@ switch (endp->cfg->role) { case MGCP_BSC_NAT: endp->type = MGCP_OSMUX_BSC_NAT; + osmux_xfrm_output_set_tx_cb(&endp->osmux.out, + scheduled_tx_net_cb, endp); break; case MGCP_BSC: endp->type = MGCP_OSMUX_BSC; + osmux_xfrm_output_set_tx_cb(&endp->osmux.out, + scheduled_tx_bts_cb, endp); break; } endp->osmux.state = OSMUX_STATE_ENABLED; @@ -484,6 +484,11 @@ { LOGP(DMGCP, LOGL_INFO, "Releasing endpoint %u using Osmux CID %u\n", ENDPOINT_NUMBER(endp), endp->osmux.cid); + + /* We are closing, we don't need pending RTP packets to be transmitted */ + osmux_xfrm_output_set_tx_cb(&endp->osmux.out, NULL, NULL); + osmux_xfrm_output_flush(&endp->osmux.out); + osmux_xfrm_input_close_circuit(endp->osmux.in, endp->osmux.cid); endp->osmux.state = OSMUX_STATE_DISABLED; endp->osmux.cid = -1; -- To view, visit https://gerrit.osmocom.org/7886 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I189564fc63139c15314db8975afd423c7153ea32 Gerrit-PatchSet: 1 Gerrit-Project: openbsc Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol From gerrit-no-reply at lists.osmocom.org Thu Apr 19 16:50:25 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Thu, 19 Apr 2018 16:50:25 +0000 Subject: openbsc[master]: mgcp: switch to new osmux output APIs In-Reply-To: References: Message-ID: Patch Set 1: TODO: port to osmo-mgw.git once it has been reviewed + tested. Don't merge until then. -- To view, visit https://gerrit.osmocom.org/7886 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I189564fc63139c15314db8975afd423c7153ea32 Gerrit-PatchSet: 1 Gerrit-Project: openbsc Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Pau Espin Pedrol Gerrit-HasComments: No From jenkins at lists.osmocom.org Thu Apr 19 22:41:20 2018 From: jenkins at lists.osmocom.org (jenkins at lists.osmocom.org) Date: Thu, 19 Apr 2018 22:41:20 +0000 (UTC) Subject: =?UTF-8?Q?Build_failed_in_Jenkins:_master-rtl-sdr_=C2=BB_a1=3Ddefau?= =?UTF-8?Q?lt,a2=3Ddefault,a3=3Ddefault,osmocom-master-debian9_#4?= In-Reply-To: <1994252977.459.1524091346947.JavaMail.jenkins@jenkins.osmocom.org> References: <1994252977.459.1524091346947.JavaMail.jenkins@jenkins.osmocom.org> Message-ID: <1164605784.9.1524177680199.JavaMail.jenkins@jenkins.osmocom.org> See ------------------------------------------ [...truncated 93.24 KB...] make[2]: Entering directory ' make[2]: Nothing to be done for 'dvi'. make[2]: Leaving directory ' Making dvi in src make[2]: Entering directory ' make[2]: Nothing to be done for 'dvi'. make[2]: Leaving directory ' make[2]: Entering directory ' make[2]: Nothing to be done for 'dvi-am'. make[2]: Leaving directory ' make[1]: Leaving directory ' make[1]: Entering directory ' make check-recursive make[2]: Entering directory ' Making check in include make[3]: Entering directory ' make[3]: Nothing to be done for 'check'. make[3]: Leaving directory ' Making check in src make[3]: Entering directory ' make[3]: Nothing to be done for 'check'. make[3]: Leaving directory ' make[3]: Entering directory ' make[3]: Leaving directory ' make[2]: Leaving directory ' make[1]: Leaving directory ' make[1]: Entering directory ' make install-recursive make[2]: Entering directory ' Making install in include make[3]: Entering directory ' make[4]: Entering directory ' make[4]: Nothing to be done for 'install-exec-am'. /bin/mkdir -p ' /usr/bin/install -c -m 644 ../../../include/rtl-sdr.h ../../../include/rtl-sdr_export.h ' make[4]: Leaving directory ' make[3]: Leaving directory ' Making install in src make[3]: Entering directory ' make[4]: Entering directory ' /bin/mkdir -p ' /bin/bash ../libtool --mode=install /usr/bin/install -c librtlsdr.la ' libtool: install: /usr/bin/install -c .libs/librtlsdr.so.0.0.5 libtool: install: (cd && { ln -s -f librtlsdr.so.0.0.5 librtlsdr.so.0 || { rm -f librtlsdr.so.0 && ln -s librtlsdr.so.0.0.5 librtlsdr.so.0; }; }) libtool: install: (cd && { ln -s -f librtlsdr.so.0.0.5 librtlsdr.so || { rm -f librtlsdr.so && ln -s librtlsdr.so.0.0.5 librtlsdr.so; }; }) libtool: install: /usr/bin/install -c .libs/librtlsdr.lai libtool: install: /usr/bin/install -c .libs/librtlsdr.a libtool: install: chmod 644 libtool: install: ranlib libtool: finish: PATH="/usr/local/bin:/usr/bin:/bin:/usr/games:/home/osmocom-build/bin:/sbin" ldconfig -n ---------------------------------------------------------------------- Libraries have been installed in: If you ever happen to want to link against installed libraries in a given directory, LIBDIR, you must either use libtool, and specify the full pathname of the library, or use the '-LLIBDIR' flag during linking and do at least one of the following: - add LIBDIR to the 'LD_LIBRARY_PATH' environment variable during execution - add LIBDIR to the 'LD_RUN_PATH' environment variable during linking - use the '-Wl,-rpath -Wl,LIBDIR' linker flag - have your system administrator add LIBDIR to '/etc/ld.so.conf' See any operating system documentation about shared libraries for more information, such as the ld(1) and ld.so(8) manual pages. ---------------------------------------------------------------------- /bin/mkdir -p ' /bin/bash ../libtool --mode=install /usr/bin/install -c rtl_sdr rtl_tcp rtl_test rtl_fm rtl_eeprom rtl_adsb rtl_power ' libtool: install: /usr/bin/install -c .libs/rtl_sdr libtool: install: /usr/bin/install -c .libs/rtl_tcp libtool: install: /usr/bin/install -c .libs/rtl_test libtool: install: /usr/bin/install -c .libs/rtl_fm libtool: install: /usr/bin/install -c .libs/rtl_eeprom libtool: install: /usr/bin/install -c .libs/rtl_adsb libtool: install: /usr/bin/install -c .libs/rtl_power make[4]: Nothing to be done for 'install-data-am'. make[4]: Leaving directory ' make[3]: Leaving directory ' make[3]: Entering directory ' make[4]: Entering directory ' make[4]: Nothing to be done for 'install-exec-am'. /bin/mkdir -p ' /usr/bin/install -c -m 644 ./doc/html.tar ' /bin/mkdir -p ' /usr/bin/install -c -m 644 librtlsdr.pc ' make install-data-hook make[5]: Entering directory ' cd && tar xf html.tar --strip-components 1 && rm -f html.tar make[5]: Leaving directory ' make[4]: Leaving directory ' make[3]: Leaving directory ' make[2]: Leaving directory ' make[1]: Leaving directory ' make[1]: Entering directory ' Making installcheck in include make[2]: Entering directory ' make[2]: Nothing to be done for 'installcheck'. make[2]: Leaving directory ' Making installcheck in src make[2]: Entering directory ' make[2]: Nothing to be done for 'installcheck'. make[2]: Leaving directory ' make[2]: Entering directory ' make[2]: Nothing to be done for 'installcheck-am'. make[2]: Leaving directory ' make[1]: Leaving directory ' make[1]: Entering directory ' Making uninstall in include make[2]: Entering directory ' ( cd ' && rm -f rtl-sdr.h rtl-sdr_export.h ) make[2]: Leaving directory ' Making uninstall in src make[2]: Entering directory ' ( cd ' && rm -f rtl_sdr rtl_tcp rtl_test rtl_fm rtl_eeprom rtl_adsb rtl_power ) /bin/bash ../libtool --mode=uninstall rm -f ' libtool: uninstall: rm -f make[2]: Leaving directory ' make[2]: Entering directory ' ( cd ' && rm -f html.tar ) ( cd ' && rm -f librtlsdr.pc ) make uninstall-hook make[3]: Entering directory ' cd && rm -rf make[3]: Leaving directory ' make[2]: Leaving directory ' make[1]: Leaving directory ' make[1]: Entering directory ' make[1]: Leaving directory ' make[1]: Entering directory ' make install-recursive make[2]: Entering directory ' Making install in include make[3]: Entering directory ' make[4]: Entering directory ' make[4]: Nothing to be done for 'install-exec-am'. /bin/mkdir -p '/tmp/am-dc-3141/ /usr/bin/install -c -m 644 ../../../include/rtl-sdr.h ../../../include/rtl-sdr_export.h '/tmp/am-dc-3141/ make[4]: Leaving directory ' make[3]: Leaving directory ' Making install in src make[3]: Entering directory ' make[4]: Entering directory ' /bin/mkdir -p '/tmp/am-dc-3141/ /bin/bash ../libtool --mode=install /usr/bin/install -c librtlsdr.la '/tmp/am-dc-3141/ libtool: install: /usr/bin/install -c .libs/librtlsdr.so.0.0.5 /tmp/am-dc-3141/ libtool: install: (cd /tmp/am-dc-3141/ && { ln -s -f librtlsdr.so.0.0.5 librtlsdr.so.0 || { rm -f librtlsdr.so.0 && ln -s librtlsdr.so.0.0.5 librtlsdr.so.0; }; }) libtool: install: (cd /tmp/am-dc-3141/ && { ln -s -f librtlsdr.so.0.0.5 librtlsdr.so || { rm -f librtlsdr.so && ln -s librtlsdr.so.0.0.5 librtlsdr.so; }; }) libtool: install: /usr/bin/install -c .libs/librtlsdr.lai /tmp/am-dc-3141/ libtool: install: /usr/bin/install -c .libs/librtlsdr.a /tmp/am-dc-3141/ libtool: install: chmod 644 /tmp/am-dc-3141/ libtool: install: ranlib /tmp/am-dc-3141/ libtool: warning: remember to run 'libtool --finish /bin/mkdir -p '/tmp/am-dc-3141/ /bin/bash ../libtool --mode=install /usr/bin/install -c rtl_sdr rtl_tcp rtl_test rtl_fm rtl_eeprom rtl_adsb rtl_power '/tmp/am-dc-3141/ libtool: warning: 'librtlsdr.la' has not been installed in ' libtool: install: /usr/bin/install -c .libs/rtl_sdr /tmp/am-dc-3141/ libtool: warning: 'librtlsdr.la' has not been installed in ' libtool: install: /usr/bin/install -c .libs/rtl_tcp /tmp/am-dc-3141/ libtool: warning: 'librtlsdr.la' has not been installed in ' libtool: install: /usr/bin/install -c .libs/rtl_test /tmp/am-dc-3141/ libtool: warning: 'librtlsdr.la' has not been installed in ' libtool: install: /usr/bin/install -c .libs/rtl_fm /tmp/am-dc-3141/ libtool: warning: 'librtlsdr.la' has not been installed in ' libtool: install: /usr/bin/install -c .libs/rtl_eeprom /tmp/am-dc-3141/ libtool: warning: 'librtlsdr.la' has not been installed in ' libtool: install: /usr/bin/install -c .libs/rtl_adsb /tmp/am-dc-3141/ libtool: warning: 'librtlsdr.la' has not been installed in ' libtool: install: /usr/bin/install -c .libs/rtl_power /tmp/am-dc-3141/ make[4]: Nothing to be done for 'install-data-am'. make[4]: Leaving directory ' make[3]: Leaving directory ' make[3]: Entering directory ' make[4]: Entering directory ' make[4]: Nothing to be done for 'install-exec-am'. /bin/mkdir -p '/tmp/am-dc-3141/ /usr/bin/install -c -m 644 ./doc/html.tar '/tmp/am-dc-3141/ /bin/mkdir -p '/tmp/am-dc-3141/ /usr/bin/install -c -m 644 librtlsdr.pc '/tmp/am-dc-3141/ make install-data-hook make[5]: Entering directory ' cd /tmp/am-dc-3141/ && tar xf html.tar --strip-components 1 && rm -f html.tar make[5]: Leaving directory ' make[4]: Leaving directory ' make[3]: Leaving directory ' make[2]: Leaving directory ' make[1]: Leaving directory ' make[1]: Entering directory ' Making uninstall in include make[2]: Entering directory ' ( cd '/tmp/am-dc-3141/ && rm -f rtl-sdr.h rtl-sdr_export.h ) make[2]: Leaving directory ' Making uninstall in src make[2]: Entering directory ' ( cd '/tmp/am-dc-3141/ && rm -f rtl_sdr rtl_tcp rtl_test rtl_fm rtl_eeprom rtl_adsb rtl_power ) /bin/bash ../libtool --mode=uninstall rm -f '/tmp/am-dc-3141/ libtool: uninstall: rm -f /tmp/am-dc-3141/ /tmp/am-dc-3141/ /tmp/am-dc-3141/ /tmp/am-dc-3141/ /tmp/am-dc-3141/ make[2]: Leaving directory ' make[2]: Entering directory ' ( cd '/tmp/am-dc-3141/ && rm -f html.tar ) ( cd '/tmp/am-dc-3141/ && rm -f librtlsdr.pc ) make uninstall-hook make[3]: Entering directory ' cd /tmp/am-dc-3141/ && rm -rf make[3]: Leaving directory ' make[2]: Leaving directory ' make[1]: Leaving directory ' make[1]: Entering directory ' ERROR: files left after uninstall: (check DESTDIR support) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Makefile:757: recipe for target 'distuninstallcheck' failed make[1]: *** [distuninstallcheck] Error 1 make[1]: Leaving directory ' Makefile:701: recipe for target 'distcheck' failed make: *** [distcheck] Error 1 + cat-testlogs.sh Build step 'Execute shell' marked build as failure [WARNINGS]Skipping publisher since build result is FAILURE From gerrit-no-reply at lists.osmocom.org Fri Apr 20 10:33:11 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Fri, 20 Apr 2018 10:33:11 +0000 Subject: [PATCH] osmo-bsc[master]: abis_rsl.c: abis_rsl_rx_cchan: Print msg type name for unimp... Message-ID: Review at https://gerrit.osmocom.org/7887 abis_rsl.c: abis_rsl_rx_cchan: Print msg type name for unimplemented messages received Change-Id: I2e2e40bcb9365420f7e79d8d954505b0d2376bed --- M src/libbsc/abis_rsl.c 1 file changed, 2 insertions(+), 1 deletion(-) git pull ssh://gerrit.osmocom.org:29418/osmo-bsc refs/changes/87/7887/1 diff --git a/src/libbsc/abis_rsl.c b/src/libbsc/abis_rsl.c index 2017d2c..9081bf1 100644 --- a/src/libbsc/abis_rsl.c +++ b/src/libbsc/abis_rsl.c @@ -2072,7 +2072,8 @@ case RSL_MT_CBCH_LOAD_IND: /* current load on the CBCH */ LOGP(DRSL, LOGL_NOTICE, "Unimplemented Abis RSL TRX message " - "type 0x%02x\n", rslh->c.msg_type); + "type %s (0x%02x)\n", + rsl_msg_name(rslh->c.msg_type), rslh->c.msg_type); break; case 0x10: /* Ericsson specific: Immediate Assign Sent */ /* FIXME: Replace the messy message parsing below -- To view, visit https://gerrit.osmocom.org/7887 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I2e2e40bcb9365420f7e79d8d954505b0d2376bed Gerrit-PatchSet: 1 Gerrit-Project: osmo-bsc Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol From gerrit-no-reply at lists.osmocom.org Fri Apr 20 10:34:10 2018 From: gerrit-no-reply at lists.osmocom.org (Neels Hofmeyr) Date: Fri, 20 Apr 2018 10:34:10 +0000 Subject: [PATCH] libosmocore[master]: gsm0808_test: fix more missing inits (address sanitizer issues) Message-ID: Review at https://gerrit.osmocom.org/7888 gsm0808_test: fix more missing inits (address sanitizer issues) In recent Iaa20c59f624fbdc69a018cabd0f7e9c5a1389519 I fixed one missing init issue and didn't notice the N other similar ones right next to it. Also fix the remaining missing inits. Fixes: ../../../../src/libosmocore/src/gsm/gsm0808_utils.c:187:8: runtime error: load of value 13, which is not a valid value for type '_Bool' ../../../../src/libosmocore/src/gsm/gsm0808_utils.c:191:8: runtime error: load of value 119, which is not a valid value for type '_Bool' Related: OS#3148 Change-Id: Ie8a1a9b3132024135ca70390eae4d21c907b2edc --- M tests/gsm0808/gsm0808_test.c 1 file changed, 52 insertions(+), 59 deletions(-) git pull ssh://gerrit.osmocom.org:29418/libosmocore refs/changes/88/7888/1 diff --git a/tests/gsm0808/gsm0808_test.c b/tests/gsm0808/gsm0808_test.c index 78238ff..e111fe6 100644 --- a/tests/gsm0808/gsm0808_test.c +++ b/tests/gsm0808/gsm0808_test.c @@ -569,16 +569,15 @@ static void test_gsm0808_enc_dec_speech_codec() { - struct gsm0808_speech_codec enc_sc; - struct gsm0808_speech_codec dec_sc; + struct gsm0808_speech_codec enc_sc = { + .pi = true, + .tf = true, + .type = GSM0808_SCT_FR2, + }; + struct gsm0808_speech_codec dec_sc = {}; struct msgb *msg; uint8_t rc_enc; int rc_dec; - - memset(&enc_sc, 0, sizeof(enc_sc)); - enc_sc.fi = true; - enc_sc.pt = true; - enc_sc.type = GSM0808_SCT_FR2; msg = msgb_alloc(1024, "output buffer"); rc_enc = gsm0808_enc_speech_codec(msg, &enc_sc); @@ -620,16 +619,16 @@ static void test_gsm0808_enc_dec_speech_codec_ext_with_cfg() { - struct gsm0808_speech_codec enc_sc; - struct gsm0808_speech_codec dec_sc; + struct gsm0808_speech_codec enc_sc = { + .pi = true, + .tf = true, + .type = GSM0808_SCT_CSD, + .cfg = 0xc0, + }; + struct gsm0808_speech_codec dec_sc = {}; struct msgb *msg; uint8_t rc_enc; int rc_dec; - - enc_sc.pi = true; - enc_sc.tf = true; - enc_sc.type = GSM0808_SCT_CSD; - enc_sc.cfg = 0xc0; msg = msgb_alloc(1024, "output buffer"); rc_enc = gsm0808_enc_speech_codec(msg, &enc_sc); @@ -645,29 +644,34 @@ static void test_gsm0808_enc_dec_speech_codec_list() { - struct gsm0808_speech_codec_list enc_scl; - struct gsm0808_speech_codec_list dec_scl; + struct gsm0808_speech_codec_list enc_scl = { + .codec = { + { + .pi = true, + .tf = true, + .type = GSM0808_SCT_FR3, + .cfg = 0xcdef, + }, + + { + .fi = true, + .pt = true, + .type = GSM0808_SCT_FR2, + }, + + { + .fi = true, + .tf = true, + .type = GSM0808_SCT_CSD, + .cfg = 0xc0, + }, + }, + .len = 3, + }; + struct gsm0808_speech_codec_list dec_scl = {}; struct msgb *msg; uint8_t rc_enc; int rc_dec; - - memset(&enc_scl, 0, sizeof(enc_scl)); - - enc_scl.codec[0].pi = true; - enc_scl.codec[0].tf = true; - enc_scl.codec[0].type = GSM0808_SCT_FR3; - enc_scl.codec[0].cfg = 0xcdef; - - enc_scl.codec[1].fi = true; - enc_scl.codec[1].pt = true; - enc_scl.codec[1].type = GSM0808_SCT_FR2; - - enc_scl.codec[2].fi = true; - enc_scl.codec[2].tf = true; - enc_scl.codec[2].type = GSM0808_SCT_CSD; - enc_scl.codec[2].cfg = 0xc0; - - enc_scl.len = 3; msg = msgb_alloc(1024, "output buffer"); rc_enc = gsm0808_enc_speech_codec_list(msg, &enc_scl); @@ -683,21 +687,19 @@ static void test_gsm0808_enc_dec_channel_type() { - struct gsm0808_channel_type enc_ct; - struct gsm0808_channel_type dec_ct; + struct gsm0808_channel_type enc_ct = { + .ch_indctr = GSM0808_CHAN_SPEECH, + .ch_rate_type = GSM0808_SPEECH_HALF_PREF, + .perm_spch = { GSM0808_PERM_FR3, GSM0808_PERM_HR3 }, + .perm_spch_len = 2, + }; + struct gsm0808_channel_type dec_ct = {}; struct msgb *msg; uint8_t ct_enc_expected[] = { GSM0808_IE_CHANNEL_TYPE, 0x04, 0x01, 0x0b, 0xa1, 0x25 }; uint8_t rc_enc; int rc_dec; - - memset(&enc_ct, 0, sizeof(enc_ct)); - enc_ct.ch_indctr = GSM0808_CHAN_SPEECH; - enc_ct.ch_rate_type = GSM0808_SPEECH_HALF_PREF; - enc_ct.perm_spch[0] = GSM0808_PERM_FR3; - enc_ct.perm_spch[1] = GSM0808_PERM_HR3; - enc_ct.perm_spch_len = 2; msg = msgb_alloc(1024, "output buffer"); rc_enc = gsm0808_enc_channel_type(msg, &enc_ct); @@ -713,8 +715,13 @@ static void test_gsm0808_enc_dec_encrypt_info() { - struct gsm0808_encrypt_info enc_ei; - struct gsm0808_encrypt_info dec_ei; + struct gsm0808_encrypt_info enc_ei = { + .perm_algo = { GSM0808_ALG_ID_A5_0, GSM0808_ALG_ID_A5_1 }, + .perm_algo_len = 2, + .key = { 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff, 0x23, 0x42, }, + .key_len = 8, + }; + struct gsm0808_encrypt_info dec_ei = {}; struct msgb *msg; uint8_t ei_enc_expected[] = { GSM0808_IE_ENCRYPTION_INFORMATION, 0x09, 0x03, 0xaa, 0xbb, @@ -722,20 +729,6 @@ }; uint8_t rc_enc; int rc_dec; - - memset(&enc_ei, 0, sizeof(enc_ei)); - enc_ei.perm_algo[0] = GSM0808_ALG_ID_A5_0; - enc_ei.perm_algo[1] = GSM0808_ALG_ID_A5_1; - enc_ei.perm_algo_len = 2; - enc_ei.key[0] = 0xaa; - enc_ei.key[1] = 0xbb; - enc_ei.key[2] = 0xcc; - enc_ei.key[3] = 0xdd; - enc_ei.key[4] = 0xee; - enc_ei.key[5] = 0xff; - enc_ei.key[6] = 0x23; - enc_ei.key[7] = 0x42; - enc_ei.key_len = 8; msg = msgb_alloc(1024, "output buffer"); rc_enc = gsm0808_enc_encrypt_info(msg, &enc_ei); -- To view, visit https://gerrit.osmocom.org/7888 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Ie8a1a9b3132024135ca70390eae4d21c907b2edc Gerrit-PatchSet: 1 Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr From gerrit-no-reply at lists.osmocom.org Fri Apr 20 10:34:10 2018 From: gerrit-no-reply at lists.osmocom.org (Neels Hofmeyr) Date: Fri, 20 Apr 2018 10:34:10 +0000 Subject: [PATCH] libosmocore[master]: gsm0808_test: silence deprecation: use gsm0808_create_layer3... Message-ID: Review at https://gerrit.osmocom.org/7889 gsm0808_test: silence deprecation: use gsm0808_create_layer3_2() Change-Id: Ia0afecafa8862ffbe2af3c86e5552673f0935eb0 --- M tests/gsm0808/gsm0808_test.c 1 file changed, 11 insertions(+), 1 deletion(-) git pull ssh://gerrit.osmocom.org:29418/libosmocore refs/changes/89/7889/1 diff --git a/tests/gsm0808/gsm0808_test.c b/tests/gsm0808/gsm0808_test.c index e111fe6..ae138be 100644 --- a/tests/gsm0808/gsm0808_test.c +++ b/tests/gsm0808/gsm0808_test.c @@ -71,13 +71,23 @@ 0x00, 0x0e, 0x57, 0x05, 0x08, 0x00, 0x77, 0x62, 0x83, 0x33, 0x66, 0x44, 0x88, 0x17, 0x01, 0x23 }; struct msgb *msg, *in_msg; + struct osmo_cell_global_id cgi = { + .lai = { + .plmn = { + .mcc = 0x2244, + .mnc = 0x1122, + }, + .lac = 0x3366, + }, + .cell_identity = 0x4488, + }; printf("Testing creating Layer3\n"); in_msg = msgb_alloc_headroom(512, 128, "foo"); in_msg->l3h = in_msg->data; msgb_v_put(in_msg, 0x23); - msg = gsm0808_create_layer3(in_msg, 0x1122, 0x2244, 0x3366, 0x4488); + msg = gsm0808_create_layer3_2(in_msg, &cgi, NULL); VERIFY(msg, res, ARRAY_SIZE(res)); msgb_free(msg); msgb_free(in_msg); -- To view, visit https://gerrit.osmocom.org/7889 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Ia0afecafa8862ffbe2af3c86e5552673f0935eb0 Gerrit-PatchSet: 1 Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr From jenkins at lists.osmocom.org Fri Apr 20 15:14:01 2018 From: jenkins at lists.osmocom.org (jenkins at lists.osmocom.org) Date: Fri, 20 Apr 2018 15:14:01 +0000 (UTC) Subject: =?UTF-8?Q?Jenkins_build_is_back_to_normal_:_master-asn1c_=C2=BB_a1=3Dde?= =?UTF-8?Q?fault,a2=3Ddefault,a3=3Ddefault,osmocom-master-debian9_#98?= In-Reply-To: <1761891882.2.1524150605394.JavaMail.jenkins@jenkins.osmocom.org> References: <1761891882.2.1524150605394.JavaMail.jenkins@jenkins.osmocom.org> Message-ID: <1772571429.19.1524237241032.JavaMail.jenkins@jenkins.osmocom.org> See From jenkins at lists.osmocom.org Fri Apr 20 22:41:20 2018 From: jenkins at lists.osmocom.org (jenkins at lists.osmocom.org) Date: Fri, 20 Apr 2018 22:41:20 +0000 (UTC) Subject: =?UTF-8?Q?Build_failed_in_Jenkins:_master-rtl-sdr_=C2=BB_a1=3Ddefau?= =?UTF-8?Q?lt,a2=3Ddefault,a3=3Ddefault,osmocom-master-debian9_#5?= In-Reply-To: <1164605784.9.1524177680199.JavaMail.jenkins@jenkins.osmocom.org> References: <1164605784.9.1524177680199.JavaMail.jenkins@jenkins.osmocom.org> Message-ID: <577069085.22.1524264080249.JavaMail.jenkins@jenkins.osmocom.org> See ------------------------------------------ [...truncated 93.24 KB...] make[2]: Entering directory ' make[2]: Nothing to be done for 'dvi'. make[2]: Leaving directory ' Making dvi in src make[2]: Entering directory ' make[2]: Nothing to be done for 'dvi'. make[2]: Leaving directory ' make[2]: Entering directory ' make[2]: Nothing to be done for 'dvi-am'. make[2]: Leaving directory ' make[1]: Leaving directory ' make[1]: Entering directory ' make check-recursive make[2]: Entering directory ' Making check in include make[3]: Entering directory ' make[3]: Nothing to be done for 'check'. make[3]: Leaving directory ' Making check in src make[3]: Entering directory ' make[3]: Nothing to be done for 'check'. make[3]: Leaving directory ' make[3]: Entering directory ' make[3]: Leaving directory ' make[2]: Leaving directory ' make[1]: Leaving directory ' make[1]: Entering directory ' make install-recursive make[2]: Entering directory ' Making install in include make[3]: Entering directory ' make[4]: Entering directory ' make[4]: Nothing to be done for 'install-exec-am'. /bin/mkdir -p ' /usr/bin/install -c -m 644 ../../../include/rtl-sdr.h ../../../include/rtl-sdr_export.h ' make[4]: Leaving directory ' make[3]: Leaving directory ' Making install in src make[3]: Entering directory ' make[4]: Entering directory ' /bin/mkdir -p ' /bin/bash ../libtool --mode=install /usr/bin/install -c librtlsdr.la ' libtool: install: /usr/bin/install -c .libs/librtlsdr.so.0.0.5 libtool: install: (cd && { ln -s -f librtlsdr.so.0.0.5 librtlsdr.so.0 || { rm -f librtlsdr.so.0 && ln -s librtlsdr.so.0.0.5 librtlsdr.so.0; }; }) libtool: install: (cd && { ln -s -f librtlsdr.so.0.0.5 librtlsdr.so || { rm -f librtlsdr.so && ln -s librtlsdr.so.0.0.5 librtlsdr.so; }; }) libtool: install: /usr/bin/install -c .libs/librtlsdr.lai libtool: install: /usr/bin/install -c .libs/librtlsdr.a libtool: install: chmod 644 libtool: install: ranlib libtool: finish: PATH="/usr/local/bin:/usr/bin:/bin:/usr/games:/home/osmocom-build/bin:/sbin" ldconfig -n ---------------------------------------------------------------------- Libraries have been installed in: If you ever happen to want to link against installed libraries in a given directory, LIBDIR, you must either use libtool, and specify the full pathname of the library, or use the '-LLIBDIR' flag during linking and do at least one of the following: - add LIBDIR to the 'LD_LIBRARY_PATH' environment variable during execution - add LIBDIR to the 'LD_RUN_PATH' environment variable during linking - use the '-Wl,-rpath -Wl,LIBDIR' linker flag - have your system administrator add LIBDIR to '/etc/ld.so.conf' See any operating system documentation about shared libraries for more information, such as the ld(1) and ld.so(8) manual pages. ---------------------------------------------------------------------- /bin/mkdir -p ' /bin/bash ../libtool --mode=install /usr/bin/install -c rtl_sdr rtl_tcp rtl_test rtl_fm rtl_eeprom rtl_adsb rtl_power ' libtool: install: /usr/bin/install -c .libs/rtl_sdr libtool: install: /usr/bin/install -c .libs/rtl_tcp libtool: install: /usr/bin/install -c .libs/rtl_test libtool: install: /usr/bin/install -c .libs/rtl_fm libtool: install: /usr/bin/install -c .libs/rtl_eeprom libtool: install: /usr/bin/install -c .libs/rtl_adsb libtool: install: /usr/bin/install -c .libs/rtl_power make[4]: Nothing to be done for 'install-data-am'. make[4]: Leaving directory ' make[3]: Leaving directory ' make[3]: Entering directory ' make[4]: Entering directory ' make[4]: Nothing to be done for 'install-exec-am'. /bin/mkdir -p ' /usr/bin/install -c -m 644 ./doc/html.tar ' /bin/mkdir -p ' /usr/bin/install -c -m 644 librtlsdr.pc ' make install-data-hook make[5]: Entering directory ' cd && tar xf html.tar --strip-components 1 && rm -f html.tar make[5]: Leaving directory ' make[4]: Leaving directory ' make[3]: Leaving directory ' make[2]: Leaving directory ' make[1]: Leaving directory ' make[1]: Entering directory ' Making installcheck in include make[2]: Entering directory ' make[2]: Nothing to be done for 'installcheck'. make[2]: Leaving directory ' Making installcheck in src make[2]: Entering directory ' make[2]: Nothing to be done for 'installcheck'. make[2]: Leaving directory ' make[2]: Entering directory ' make[2]: Nothing to be done for 'installcheck-am'. make[2]: Leaving directory ' make[1]: Leaving directory ' make[1]: Entering directory ' Making uninstall in include make[2]: Entering directory ' ( cd ' && rm -f rtl-sdr.h rtl-sdr_export.h ) make[2]: Leaving directory ' Making uninstall in src make[2]: Entering directory ' ( cd ' && rm -f rtl_sdr rtl_tcp rtl_test rtl_fm rtl_eeprom rtl_adsb rtl_power ) /bin/bash ../libtool --mode=uninstall rm -f ' libtool: uninstall: rm -f make[2]: Leaving directory ' make[2]: Entering directory ' ( cd ' && rm -f html.tar ) ( cd ' && rm -f librtlsdr.pc ) make uninstall-hook make[3]: Entering directory ' cd && rm -rf make[3]: Leaving directory ' make[2]: Leaving directory ' make[1]: Leaving directory ' make[1]: Entering directory ' make[1]: Leaving directory ' make[1]: Entering directory ' make install-recursive make[2]: Entering directory ' Making install in include make[3]: Entering directory ' make[4]: Entering directory ' make[4]: Nothing to be done for 'install-exec-am'. /bin/mkdir -p '/tmp/am-dc-13930/ /usr/bin/install -c -m 644 ../../../include/rtl-sdr.h ../../../include/rtl-sdr_export.h '/tmp/am-dc-13930/ make[4]: Leaving directory ' make[3]: Leaving directory ' Making install in src make[3]: Entering directory ' make[4]: Entering directory ' /bin/mkdir -p '/tmp/am-dc-13930/ /bin/bash ../libtool --mode=install /usr/bin/install -c librtlsdr.la '/tmp/am-dc-13930/ libtool: install: /usr/bin/install -c .libs/librtlsdr.so.0.0.5 /tmp/am-dc-13930/ libtool: install: (cd /tmp/am-dc-13930/ && { ln -s -f librtlsdr.so.0.0.5 librtlsdr.so.0 || { rm -f librtlsdr.so.0 && ln -s librtlsdr.so.0.0.5 librtlsdr.so.0; }; }) libtool: install: (cd /tmp/am-dc-13930/ && { ln -s -f librtlsdr.so.0.0.5 librtlsdr.so || { rm -f librtlsdr.so && ln -s librtlsdr.so.0.0.5 librtlsdr.so; }; }) libtool: install: /usr/bin/install -c .libs/librtlsdr.lai /tmp/am-dc-13930/ libtool: install: /usr/bin/install -c .libs/librtlsdr.a /tmp/am-dc-13930/ libtool: install: chmod 644 /tmp/am-dc-13930/ libtool: install: ranlib /tmp/am-dc-13930/ libtool: warning: remember to run 'libtool --finish /bin/mkdir -p '/tmp/am-dc-13930/ /bin/bash ../libtool --mode=install /usr/bin/install -c rtl_sdr rtl_tcp rtl_test rtl_fm rtl_eeprom rtl_adsb rtl_power '/tmp/am-dc-13930/ libtool: warning: 'librtlsdr.la' has not been installed in ' libtool: install: /usr/bin/install -c .libs/rtl_sdr /tmp/am-dc-13930/ libtool: warning: 'librtlsdr.la' has not been installed in ' libtool: install: /usr/bin/install -c .libs/rtl_tcp /tmp/am-dc-13930/ libtool: warning: 'librtlsdr.la' has not been installed in ' libtool: install: /usr/bin/install -c .libs/rtl_test /tmp/am-dc-13930/ libtool: warning: 'librtlsdr.la' has not been installed in ' libtool: install: /usr/bin/install -c .libs/rtl_fm /tmp/am-dc-13930/ libtool: warning: 'librtlsdr.la' has not been installed in ' libtool: install: /usr/bin/install -c .libs/rtl_eeprom /tmp/am-dc-13930/ libtool: warning: 'librtlsdr.la' has not been installed in ' libtool: install: /usr/bin/install -c .libs/rtl_adsb /tmp/am-dc-13930/ libtool: warning: 'librtlsdr.la' has not been installed in ' libtool: install: /usr/bin/install -c .libs/rtl_power /tmp/am-dc-13930/ make[4]: Nothing to be done for 'install-data-am'. make[4]: Leaving directory ' make[3]: Leaving directory ' make[3]: Entering directory ' make[4]: Entering directory ' make[4]: Nothing to be done for 'install-exec-am'. /bin/mkdir -p '/tmp/am-dc-13930/ /usr/bin/install -c -m 644 ./doc/html.tar '/tmp/am-dc-13930/ /bin/mkdir -p '/tmp/am-dc-13930/ /usr/bin/install -c -m 644 librtlsdr.pc '/tmp/am-dc-13930/ make install-data-hook make[5]: Entering directory ' cd /tmp/am-dc-13930/ && tar xf html.tar --strip-components 1 && rm -f html.tar make[5]: Leaving directory ' make[4]: Leaving directory ' make[3]: Leaving directory ' make[2]: Leaving directory ' make[1]: Leaving directory ' make[1]: Entering directory ' Making uninstall in include make[2]: Entering directory ' ( cd '/tmp/am-dc-13930/ && rm -f rtl-sdr.h rtl-sdr_export.h ) make[2]: Leaving directory ' Making uninstall in src make[2]: Entering directory ' ( cd '/tmp/am-dc-13930/ && rm -f rtl_sdr rtl_tcp rtl_test rtl_fm rtl_eeprom rtl_adsb rtl_power ) /bin/bash ../libtool --mode=uninstall rm -f '/tmp/am-dc-13930/ libtool: uninstall: rm -f /tmp/am-dc-13930/ /tmp/am-dc-13930/ /tmp/am-dc-13930/ /tmp/am-dc-13930/ /tmp/am-dc-13930/ make[2]: Leaving directory ' make[2]: Entering directory ' ( cd '/tmp/am-dc-13930/ && rm -f html.tar ) ( cd '/tmp/am-dc-13930/ && rm -f librtlsdr.pc ) make uninstall-hook make[3]: Entering directory ' cd /tmp/am-dc-13930/ && rm -rf make[3]: Leaving directory ' make[2]: Leaving directory ' make[1]: Leaving directory ' make[1]: Entering directory ' ERROR: files left after uninstall: (check DESTDIR support) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Makefile:757: recipe for target 'distuninstallcheck' failed make[1]: *** [distuninstallcheck] Error 1 make[1]: Leaving directory ' Makefile:701: recipe for target 'distcheck' failed make: *** [distcheck] Error 1 + cat-testlogs.sh Build step 'Execute shell' marked build as failure [WARNINGS]Skipping publisher since build result is FAILURE From jenkins at lists.osmocom.org Sat Apr 21 15:10:06 2018 From: jenkins at lists.osmocom.org (jenkins at lists.osmocom.org) Date: Sat, 21 Apr 2018 15:10:06 +0000 (UTC) Subject: =?UTF-8?Q?Build_failed_in_Jenkins:_master-asn1c_=C2=BB_a1=3Ddefaul?= =?UTF-8?Q?t,a2=3Ddefault,a3=3Ddefault,osmocom-master-debian9_#99?= Message-ID: <1912248546.36.1524323406588.JavaMail.jenkins@jenkins.osmocom.org> See ------------------------------------------ [...truncated 2.15 KB...] checking build system type... x86_64-unknown-linux-gnu checking host system type... x86_64-unknown-linux-gnu checking target system type... x86_64-unknown-linux-gnu checking for a BSD-compatible install... /usr/bin/install -c checking whether build environment is sane... yes checking for gawk... gawk checking whether make sets $(MAKE)... yes checking whether to enable maintainer-specific portions of Makefiles... no checking for style of include used by make... GNU checking for gcc... gcc checking for C compiler default output file name... a.out checking whether the C compiler works... yes checking whether we are cross compiling... no checking for suffix of executables... checking for suffix of object files... o checking whether we are using the GNU C compiler... yes checking whether gcc accepts -g... yes checking for gcc option to accept ISO C89... none needed checking dependency style of gcc... gcc3 checking for a sed that does not truncate output... /bin/sed checking for grep that handles long lines and -e... /bin/grep checking for egrep... /bin/grep -E checking for ld used by gcc... /usr/bin/ld checking if the linker (/usr/bin/ld) is GNU ld... yes checking for /usr/bin/ld option to reload object files... -r checking for BSD-compatible nm... /usr/bin/nm -B checking whether ln -s works... yes checking how to recognise dependent libraries... pass_all checking how to run the C preprocessor... gcc -E checking for ANSI C header files... yes checking for sys/types.h... yes checking for sys/stat.h... yes checking for stdlib.h... yes checking for string.h... yes checking for memory.h... yes checking for strings.h... yes checking for inttypes.h... yes checking for stdint.h... yes checking for unistd.h... yes checking dlfcn.h usability... yes checking dlfcn.h presence... yes checking for dlfcn.h... yes checking for g++... g++ checking whether we are using the GNU C++ compiler... yes checking whether g++ accepts -g... yes checking dependency style of g++... gcc3 checking how to run the C++ preprocessor... g++ -E checking for g77... no checking for f77... no checking for xlf... no checking for frt... no checking for pgf77... no checking for cf77... no checking for fort77... no checking for fl32... no checking for af77... no checking for f90... no checking for xlf90... no checking for pgf90... no checking for pghpf... no checking for epcf90... no checking for gfortran... no checking for g95... no checking for f95... no checking for fort... no checking for xlf95... no checking for ifort... no checking for ifc... no checking for efc... no checking for pgf95... no checking for lf95... no checking for ftn... no checking whether we are using the GNU Fortran 77 compiler... no checking whether accepts -g... no checking the maximum length of command line arguments... 32768 checking command to parse /usr/bin/nm -B output from gcc object... ok checking for objdir... .libs checking for ar... ar checking for ranlib... ranlib checking for strip... strip checking if gcc supports -fno-rtti -fno-exceptions... no checking for gcc option to produce PIC... -fPIC checking if gcc PIC flag -fPIC works... yes checking if gcc static flag -static works... yes checking if gcc supports -c -o file.o... yes checking whether the gcc linker (/usr/bin/ld -m elf_x86_64) supports shared libraries... yes checking whether -lc should be explicitly linked in... no checking dynamic linker characteristics... GNU/Linux ld.so checking how to hardcode library paths into programs... immediate checking whether stripping libraries is possible... yes checking if libtool supports shared libraries... yes checking whether to build shared libraries... yes checking whether to build static libraries... yes configure: creating libtool appending configuration tag "CXX" to libtool checking for ld used by g++... /usr/bin/ld -m elf_x86_64 checking if the linker (/usr/bin/ld -m elf_x86_64) is GNU ld... yes checking whether the g++ linker (/usr/bin/ld -m elf_x86_64) supports shared libraries... yes checking for g++ option to produce PIC... -fPIC checking if g++ PIC flag -fPIC works... yes checking if g++ static flag -static works... yes checking if g++ supports -c -o file.o... yes checking whether the g++ linker (/usr/bin/ld -m elf_x86_64) supports shared libraries... yes checking dynamic linker characteristics... GNU/Linux ld.so checking how to hardcode library paths into programs... immediate appending configuration tag "F77" to libtool checking for autoconf... /usr/bin/autoconf checking for autoheader... /usr/bin/autoheader checking for gcc... (cached) gcc checking whether we are using the GNU C compiler... (cached) yes checking whether gcc accepts -g... (cached) yes checking for gcc option to accept ISO C89... (cached) none needed checking dependency style of gcc... (cached) gcc3 checking how to run the C preprocessor... gcc -E checking for a BSD-compatible install... /usr/bin/install -c checking whether ln -s works... yes checking whether make sets $(MAKE)... (cached) yes checking for bison... bison -y checking for flex... flex checking for yywrap in -lfl... yes checking lex output file root... lex.yy checking whether yytext is a pointer... yes checking for ar... /usr/bin/ar checking for ANSI C header files... (cached) yes checking sys/param.h usability... yes checking sys/param.h presence... yes checking for sys/param.h... yes checking whether byte ordering is bigendian... no checking for off_t... yes checking for size_t... yes checking whether struct tm is in sys/time.h or time.h... time.h checking for intmax_t... yes checking for library containing getopt... none required checking for strtoimax... yes checking for strtoll... yes checking for mergesort... no checking for mkstemps... yes configure: creating ./config.status config.status: creating skeletons/standard-modules/Makefile config.status: creating skeletons/tests/Makefile config.status: creating libasn1compiler/Makefile config.status: creating libasn1parser/Makefile config.status: creating libasn1print/Makefile config.status: creating asn1c/webcgi/Makefile config.status: creating asn1c/tests/Makefile config.status: creating libasn1fix/Makefile config.status: creating skeletons/Makefile config.status: creating examples/Makefile config.status: creating tests/Makefile config.status: creating asn1c/Makefile config.status: creating doc/Makefile config.status: creating asn1c.spec config.status: creating Makefile config.status: creating config.h config.status: executing depfiles commands + make -j 8 make all-recursive make[1]: Entering directory ' Making all in libasn1parser make[2]: Entering directory ' if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1parser.lo -MD -MP -MF ".deps/asn1parser.Tpo" -c -o asn1parser.lo asn1parser.c; \ then mv -f ".deps/asn1parser.Tpo" ".deps/asn1parser.Plo"; else rm -f ".deps/asn1parser.Tpo"; exit 1; fi bison -y -p asn1p_ -d asn1p_y.y if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_l.lo -MD -MP -MF ".deps/asn1p_l.Tpo" -c -o asn1p_l.lo asn1p_l.c; \ then mv -f ".deps/asn1p_l.Tpo" ".deps/asn1p_l.Plo"; else rm -f ".deps/asn1p_l.Tpo"; exit 1; fi if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_module.lo -MD -MP -MF ".deps/asn1p_module.Tpo" -c -o asn1p_module.lo asn1p_module.c; \ then mv -f ".deps/asn1p_module.Tpo" ".deps/asn1p_module.Plo"; else rm -f ".deps/asn1p_module.Tpo"; exit 1; fi if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_oid.lo -MD -MP -MF ".deps/asn1p_oid.Tpo" -c -o asn1p_oid.lo asn1p_oid.c; \ then mv -f ".deps/asn1p_oid.Tpo" ".deps/asn1p_oid.Plo"; else rm -f ".deps/asn1p_oid.Tpo"; exit 1; fi if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_value.lo -MD -MP -MF ".deps/asn1p_value.Tpo" -c -o asn1p_value.lo asn1p_value.c; \ then mv -f ".deps/asn1p_value.Tpo" ".deps/asn1p_value.Plo"; else rm -f ".deps/asn1p_value.Tpo"; exit 1; fi if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_expr.lo -MD -MP -MF ".deps/asn1p_expr.Tpo" -c -o asn1p_expr.lo asn1p_expr.c; \ then mv -f ".deps/asn1p_expr.Tpo" ".deps/asn1p_expr.Plo"; else rm -f ".deps/asn1p_expr.Tpo"; exit 1; fi if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_xports.lo -MD -MP -MF ".deps/asn1p_xports.Tpo" -c -o asn1p_xports.lo asn1p_xports.c; \ then mv -f ".deps/asn1p_xports.Tpo" ".deps/asn1p_xports.Plo"; else rm -f ".deps/asn1p_xports.Tpo"; exit 1; fi asn1p_y.y: warning: 2 shift/reduce conflicts [-Wconflicts-sr] mkdir .libs mkdir .libs mkdir: cannot create directory '.libs': File exists gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_module.lo -MD -MP -MF .deps/asn1p_module.Tpo -c asn1p_module.c -fPIC -DPIC -o .libs/asn1p_module.o gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_l.lo -MD -MP -MF .deps/asn1p_l.Tpo -c asn1p_l.c -fPIC -DPIC -o .libs/asn1p_l.o gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_xports.lo -MD -MP -MF .deps/asn1p_xports.Tpo -c asn1p_xports.c -fPIC -DPIC -o .libs/asn1p_xports.o gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_value.lo -MD -MP -MF .deps/asn1p_value.Tpo -c asn1p_value.c -fPIC -DPIC -o .libs/asn1p_value.o gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_expr.lo -MD -MP -MF .deps/asn1p_expr.Tpo -c asn1p_expr.c -fPIC -DPIC -o .libs/asn1p_expr.o gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1parser.lo -MD -MP -MF .deps/asn1parser.Tpo -c asn1parser.c -fPIC -DPIC -o .libs/asn1parser.o gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_oid.lo -MD -MP -MF .deps/asn1p_oid.Tpo -c asn1p_oid.c -fPIC -DPIC -o .libs/asn1p_oid.o gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_xports.lo -MD -MP -MF .deps/asn1p_xports.Tpo -c asn1p_xports.c -o asn1p_xports.o >/dev/null 2>&1 asn1p_l.c:3521:12: warning: 'input' defined but not used [-Wunused-function] static int input() ^~~~~ gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_module.lo -MD -MP -MF .deps/asn1p_module.Tpo -c asn1p_module.c -o asn1p_module.o >/dev/null 2>&1 gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_oid.lo -MD -MP -MF .deps/asn1p_oid.Tpo -c asn1p_oid.c -o asn1p_oid.o >/dev/null 2>&1 gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1parser.lo -MD -MP -MF .deps/asn1parser.Tpo -c asn1parser.c -o asn1parser.o >/dev/null 2>&1 if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_constr.lo -MD -MP -MF ".deps/asn1p_constr.Tpo" -c -o asn1p_constr.lo asn1p_constr.c; \ then mv -f ".deps/asn1p_constr.Tpo" ".deps/asn1p_constr.Plo"; else rm -f ".deps/asn1p_constr.Tpo"; exit 1; fi gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_value.lo -MD -MP -MF .deps/asn1p_value.Tpo -c asn1p_value.c -o asn1p_value.o >/dev/null 2>&1 if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_param.lo -MD -MP -MF ".deps/asn1p_param.Tpo" -c -o asn1p_param.lo asn1p_param.c; \ then mv -f ".deps/asn1p_param.Tpo" ".deps/asn1p_param.Plo"; else rm -f ".deps/asn1p_param.Tpo"; exit 1; fi gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_expr.lo -MD -MP -MF .deps/asn1p_expr.Tpo -c asn1p_expr.c -o asn1p_expr.o >/dev/null 2>&1 if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_class.lo -MD -MP -MF ".deps/asn1p_class.Tpo" -c -o asn1p_class.lo asn1p_class.c; \ then mv -f ".deps/asn1p_class.Tpo" ".deps/asn1p_class.Plo"; else rm -f ".deps/asn1p_class.Tpo"; exit 1; fi if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_ref.lo -MD -MP -MF ".deps/asn1p_ref.Tpo" -c -o asn1p_ref.lo asn1p_ref.c; \ then mv -f ".deps/asn1p_ref.Tpo" ".deps/asn1p_ref.Plo"; else rm -f ".deps/asn1p_ref.Tpo"; exit 1; fi gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_constr.lo -MD -MP -MF .deps/asn1p_constr.Tpo -c asn1p_constr.c -fPIC -DPIC -o .libs/asn1p_constr.o gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_param.lo -MD -MP -MF .deps/asn1p_param.Tpo -c asn1p_param.c -fPIC -DPIC -o .libs/asn1p_param.o gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_class.lo -MD -MP -MF .deps/asn1p_class.Tpo -c asn1p_class.c -fPIC -DPIC -o .libs/asn1p_class.o if test -f y.tab.h; then \ to=`echo "asn1p_y_H" | sed \ -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/' \ -e 's/[^ABCDEFGHIJKLMNOPQRSTUVWXYZ]/_/g'`; \ sed -e "/^#/!b" -e "s/Y_TAB_H/$to/g" -e "s|y\.tab\.h|asn1p_y.h|" \ y.tab.h >asn1p_y.ht; \ rm -f y.tab.h; \ if cmp -s asn1p_y.ht asn1p_y.h; then \ rm -f asn1p_y.ht ;\ else \ mv asn1p_y.ht asn1p_y.h; \ fi; \ fi gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_ref.lo -MD -MP -MF .deps/asn1p_ref.Tpo -c asn1p_ref.c -fPIC -DPIC -o .libs/asn1p_ref.o if test -f y.output; then \ mv y.output asn1p_y.output; \ fi sed '/^#/ s|y\.tab\.c|asn1p_y.c|' y.tab.c >asn1p_y.ct && mv asn1p_y.ct asn1p_y.c rm -f y.tab.c if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_y.lo -MD -MP -MF ".deps/asn1p_y.Tpo" -c -o asn1p_y.lo asn1p_y.c; \ then mv -f ".deps/asn1p_y.Tpo" ".deps/asn1p_y.Plo"; else rm -f ".deps/asn1p_y.Tpo"; exit 1; fi gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_constr.lo -MD -MP -MF .deps/asn1p_constr.Tpo -c asn1p_constr.c -o asn1p_constr.o >/dev/null 2>&1 gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_param.lo -MD -MP -MF .deps/asn1p_param.Tpo -c asn1p_param.c -o asn1p_param.o >/dev/null 2>&1 gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_ref.lo -MD -MP -MF .deps/asn1p_ref.Tpo -c asn1p_ref.c -o asn1p_ref.o >/dev/null 2>&1 gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_class.lo -MD -MP -MF .deps/asn1p_class.Tpo -c asn1p_class.c -o asn1p_class.o >/dev/null 2>&1 gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_y.lo -MD -MP -MF .deps/asn1p_y.Tpo -c asn1p_y.c -fPIC -DPIC -o .libs/asn1p_y.o gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_l.lo -MD -MP -MF .deps/asn1p_l.Tpo -c asn1p_l.c -o asn1p_l.o >/dev/null 2>&1 asn1p_y.y: In function 'asn1p_parse': asn1p_y.y:357:13: error: 'param' undeclared (first use in this function) *(void **)param = $1; ^~~~~ asn1p_y.y:357:13: note: each undeclared identifier is reported only once for each function it appears in Makefile:299: recipe for target 'asn1p_y.lo' failed make[2]: *** [asn1p_y.lo] Error 1 make[2]: *** Waiting for unfinished jobs.... make[2]: Leaving directory ' Makefile:302: recipe for target 'all-recursive' failed make[1]: *** [all-recursive] Error 1 make[1]: Leaving directory ' Makefile:212: recipe for target 'all' failed make: *** [all] Error 2 Build step 'Execute shell' marked build as failure [WARNINGS] Skipping publisher since build result is FAILURE From gerrit-no-reply at lists.osmocom.org Sat Apr 21 16:42:55 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Sat, 21 Apr 2018 16:42:55 +0000 Subject: [PATCH] osmo-trx[master]: doc: examples: Add umtrx sample config Message-ID: Review at https://gerrit.osmocom.org/7890 doc: examples: Add umtrx sample config Change-Id: Id38de0bbbe75e5e6bbb0de2eecb7d1984786d528 --- A doc/examples/osmo-trx-umtrx.cfg 1 file changed, 22 insertions(+), 0 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-trx refs/changes/90/7890/1 diff --git a/doc/examples/osmo-trx-umtrx.cfg b/doc/examples/osmo-trx-umtrx.cfg new file mode 100644 index 0000000..b7a73b0 --- /dev/null +++ b/doc/examples/osmo-trx-umtrx.cfg @@ -0,0 +1,22 @@ +log stderr + logging filter all 1 + logging color 1 + logging print category 1 + logging timestamp 1 + logging level all info +! +line vty + no login +! +trx + bind-ip 127.0.0.1 + remote-ip 127.0.0.1 + base-port 5700 + dev-args addr=192.168.10.2,pa=NONE,pa_power_max_dbm=23,fifo_ctrl_window=0,status_port=12345 + egprs disable + tx-sps 4 + rx-sps 4 + rssi-offset 38 + rt-prio 18 + chan 0 + chan 1 -- To view, visit https://gerrit.osmocom.org/7890 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Id38de0bbbe75e5e6bbb0de2eecb7d1984786d528 Gerrit-PatchSet: 1 Gerrit-Project: osmo-trx Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol From gerrit-no-reply at lists.osmocom.org Sat Apr 21 18:26:25 2018 From: gerrit-no-reply at lists.osmocom.org (lynxis lazus) Date: Sat, 21 Apr 2018 18:26:25 +0000 Subject: [PATCH] osmo-mgw[master]: Revert "stats: use libosmocore rate counter for in/out_strea... Message-ID: Review at https://gerrit.osmocom.org/7891 Revert "stats: use libosmocore rate counter for in/out_stream.err_ts_counter" This reverts commit 7181cc1f026a0b63a061296aba4e10a9cadaf2c8. The tests are broken on i686, arm (non 64bit systems). Change-Id: I15f3c78f8410d709733ed5692ba94ba17559d7e1 --- M include/osmocom/mgcp/mgcp_internal.h M src/libosmo-mgcp/mgcp_conn.c M src/libosmo-mgcp/mgcp_network.c M src/libosmo-mgcp/mgcp_stat.c M src/libosmo-mgcp/mgcp_vty.c M tests/mgcp/mgcp_test.c 6 files changed, 15 insertions(+), 63 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-mgw refs/changes/91/7891/1 diff --git a/include/osmocom/mgcp/mgcp_internal.h b/include/osmocom/mgcp/mgcp_internal.h index ff02768..0da2c56 100644 --- a/include/osmocom/mgcp/mgcp_internal.h +++ b/include/osmocom/mgcp/mgcp_internal.h @@ -28,7 +28,6 @@ #include #include #include -#include #define CI_UNUSED 0 @@ -46,7 +45,7 @@ uint32_t ssrc; uint16_t last_seq; uint32_t last_timestamp; - struct rate_ctr *err_ts_ctr; + uint32_t err_ts_counter; int32_t last_tsdelta; uint32_t last_arrival_time; }; @@ -203,8 +202,6 @@ uint32_t octets; } stats; } osmux; - - struct rate_ctr_group *rate_ctr_group; }; /*! Connection type, specifies which member of the union "u" in mgcp_conn diff --git a/src/libosmo-mgcp/mgcp_conn.c b/src/libosmo-mgcp/mgcp_conn.c index 0055049..998dbc5 100644 --- a/src/libosmo-mgcp/mgcp_conn.c +++ b/src/libosmo-mgcp/mgcp_conn.c @@ -26,27 +26,7 @@ #include #include #include -#include #include - -const static struct rate_ctr_desc rate_ctr_desc[] = { - { - .name = "in_stream_err_ts_ctr", - .description = "inbound rtp-stream timestamp errors", - },{ - .name = "out_stream_err_ts_ctr", - .description = "outbound rtp-stream timestamp errors", - } -}; - -const static struct rate_ctr_group_desc rate_ctr_group_desc = { - .group_name_prefix = "conn_rtp", - .group_description = "rtp connection statistics", - .class_id = 1, - .num_ctr = 2, - .ctr_desc = rate_ctr_desc -}; - /* Allocate a new connection identifier. According to RFC3435, they must * be unique only within the scope of the endpoint. (Caller must provide @@ -107,10 +87,6 @@ static void mgcp_rtp_conn_init(struct mgcp_conn_rtp *conn_rtp, struct mgcp_conn *conn) { struct mgcp_rtp_end *end = &conn_rtp->end; - /* FIXME: Each new rate counter group requires an unique index. At the - * moment we generate this index using this counter, but perhaps there - * is a more concious way to assign the indexes. */ - static unsigned int rate_ctr_index = 0; conn_rtp->type = MGCP_RTP_DEFAULT; conn_rtp->osmux.allocated_cid = -1; @@ -132,15 +108,6 @@ mgcp_rtp_codec_init(&end->codec); mgcp_rtp_codec_init(&end->alt_codec); - - conn_rtp->rate_ctr_group = - rate_ctr_group_alloc(conn, &rate_ctr_group_desc, - rate_ctr_index); - conn_rtp->state.in_stream.err_ts_ctr = - &conn_rtp->rate_ctr_group->ctr[0]; - conn_rtp->state.out_stream.err_ts_ctr = - &conn_rtp->rate_ctr_group->ctr[1]; - rate_ctr_index++; } /* Cleanup rtp connection struct */ @@ -149,7 +116,6 @@ osmux_disable_conn(conn_rtp); osmux_release_cid(conn_rtp); mgcp_free_rtp_port(&conn_rtp->end); - rate_ctr_group_free(conn_rtp->rate_ctr_group); } /*! allocate a new connection list entry. diff --git a/src/libosmo-mgcp/mgcp_network.c b/src/libosmo-mgcp/mgcp_network.c index c56e433..6923b97 100644 --- a/src/libosmo-mgcp/mgcp_network.c +++ b/src/libosmo-mgcp/mgcp_network.c @@ -222,7 +222,7 @@ if (seq == sstate->last_seq) { if (timestamp != sstate->last_timestamp) { - rate_ctr_inc(sstate->err_ts_ctr); + sstate->err_ts_counter += 1; LOGP(DRTP, LOGL_ERROR, "The %s timestamp delta is != 0 but the sequence " "number %d is the same, " @@ -272,7 +272,7 @@ ts_alignment_error(sstate, state->packet_duration, timestamp); if (timestamp_error) { - rate_ctr_inc(sstate->err_ts_ctr); + sstate->err_ts_counter += 1; LOGP(DRTP, LOGL_NOTICE, "The %s timestamp has an alignment error of %d " "on 0x%x SSRC: %u " @@ -505,16 +505,13 @@ mgcp_rtp_annex_count(endp, state, seq, transit, ssrc); if (!state->initialized) { - /* FIXME: Move this initialization to mgcp.conn.c */ state->initialized = 1; state->in_stream.last_seq = seq - 1; state->in_stream.ssrc = state->patch.orig_ssrc = ssrc; state->in_stream.last_tsdelta = 0; state->packet_duration = mgcp_rtp_packet_duration(endp, rtp_end); - state->out_stream.last_seq = seq - 1; - state->out_stream.ssrc = state->patch.orig_ssrc = ssrc; - state->out_stream.last_tsdelta = 0; + state->out_stream = state->in_stream; state->out_stream.last_timestamp = timestamp; state->out_stream.ssrc = ssrc - 1; /* force output SSRC change */ LOGP(DRTP, LOGL_INFO, diff --git a/src/libosmo-mgcp/mgcp_stat.c b/src/libosmo-mgcp/mgcp_stat.c index cc723bb..581130c 100644 --- a/src/libosmo-mgcp/mgcp_stat.c +++ b/src/libosmo-mgcp/mgcp_stat.c @@ -87,9 +87,9 @@ if (conn->conn->endp->cfg->osmux != OSMUX_USAGE_OFF) { /* Error Counter */ nchars = snprintf(str, str_len, - "\r\nX-Osmo-CP: EC TI=%lu, TO=%lu", - conn->state.in_stream.err_ts_ctr->current, - conn->state.out_stream.err_ts_ctr->current); + "\r\nX-Osmo-CP: EC TI=%u, TO=%u", + conn->state.in_stream.err_ts_counter, + conn->state.out_stream.err_ts_counter); if (nchars < 0 || nchars >= str_len) goto truncate; diff --git a/src/libosmo-mgcp/mgcp_vty.c b/src/libosmo-mgcp/mgcp_vty.c index 392a176..14ecd17 100644 --- a/src/libosmo-mgcp/mgcp_vty.c +++ b/src/libosmo-mgcp/mgcp_vty.c @@ -160,16 +160,15 @@ struct mgcp_rtp_codec *codec = &end->codec; vty_out(vty, - " Timestamp Errs: %lu->%lu%s" + " Timestamp Errs: %d->%d%s" " Dropped Packets: %d%s" " Payload Type: %d Rate: %u Channels: %d %s" " Frame Duration: %u Frame Denominator: %u%s" " FPP: %d Packet Duration: %u%s" " FMTP-Extra: %s Audio-Name: %s Sub-Type: %s%s" " Output-Enabled: %d Force-PTIME: %d%s", - state->in_stream.err_ts_ctr->current, - state->out_stream.err_ts_ctr->current, - VTY_NEWLINE, + state->in_stream.err_ts_counter, + state->out_stream.err_ts_counter, VTY_NEWLINE, end->stats.dropped_packets, VTY_NEWLINE, codec->payload_type, codec->rate, codec->channels, VTY_NEWLINE, codec->frame_duration_num, codec->frame_duration_den, diff --git a/tests/mgcp/mgcp_test.c b/tests/mgcp/mgcp_test.c index 0af3799..f6c421a 100644 --- a/tests/mgcp/mgcp_test.c +++ b/tests/mgcp/mgcp_test.c @@ -1133,8 +1133,6 @@ int last_out_ts_err_cnt = 0; struct mgcp_conn_rtp *conn = NULL; struct mgcp_conn *_conn = NULL; - struct rate_ctr test_ctr_in; - struct rate_ctr test_ctr_out; printf("Testing packet error detection%s%s.\n", patch_ssrc ? ", patch SSRC" : "", @@ -1143,11 +1141,6 @@ memset(&trunk, 0, sizeof(trunk)); memset(&endp, 0, sizeof(endp)); memset(&state, 0, sizeof(state)); - - test_ctr_in.current = 0; - test_ctr_out.current = 0; - state.in_stream.err_ts_ctr = &test_ctr_in; - state.out_stream.err_ts_ctr = &test_ctr_out; endp.type = &ep_typeset.rtp; @@ -1193,18 +1186,18 @@ state.in_stream.last_tsdelta, state.in_stream.last_seq); printf("Out TS change: %d, dTS: %d, Seq change: %d, " - "TS Err change: in +%lu, out +%lu\n", + "TS Err change: in %+d, out %+d\n", state.out_stream.last_timestamp - last_timestamp, state.out_stream.last_tsdelta, state.out_stream.last_seq - last_seqno, - state.in_stream.err_ts_ctr->current - last_in_ts_err_cnt, - state.out_stream.err_ts_ctr->current - last_out_ts_err_cnt); + state.in_stream.err_ts_counter - last_in_ts_err_cnt, + state.out_stream.err_ts_counter - last_out_ts_err_cnt); printf("Stats: Jitter = %u, Transit = %d\n", calc_jitter(&state), state.stats.transit); - last_in_ts_err_cnt = state.in_stream.err_ts_ctr->current; - last_out_ts_err_cnt = state.out_stream.err_ts_ctr->current; + last_in_ts_err_cnt = state.in_stream.err_ts_counter; + last_out_ts_err_cnt = state.out_stream.err_ts_counter; last_timestamp = state.out_stream.last_timestamp; last_seqno = state.out_stream.last_seq; } -- To view, visit https://gerrit.osmocom.org/7891 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I15f3c78f8410d709733ed5692ba94ba17559d7e1 Gerrit-PatchSet: 1 Gerrit-Project: osmo-mgw Gerrit-Branch: master Gerrit-Owner: lynxis lazus From gerrit-no-reply at lists.osmocom.org Sat Apr 21 18:27:23 2018 From: gerrit-no-reply at lists.osmocom.org (lynxis lazus) Date: Sat, 21 Apr 2018 18:27:23 +0000 Subject: osmo-mgw[master]: Revert "stats: use libosmocore rate counter for in/out_strea... In-Reply-To: References: Message-ID: Patch Set 1: OBS is failing -- To view, visit https://gerrit.osmocom.org/7891 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I15f3c78f8410d709733ed5692ba94ba17559d7e1 Gerrit-PatchSet: 1 Gerrit-Project: osmo-mgw Gerrit-Branch: master Gerrit-Owner: lynxis lazus Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: dexter Gerrit-Reviewer: lynxis lazus Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Sat Apr 21 18:27:26 2018 From: gerrit-no-reply at lists.osmocom.org (lynxis lazus) Date: Sat, 21 Apr 2018 18:27:26 +0000 Subject: osmo-mgw[master]: Revert "stats: use libosmocore rate counter for in/out_strea... In-Reply-To: References: Message-ID: Patch Set 1: https://build.opensuse.org/package/live_build_log/network:osmocom:nightly/osmo-mgw/xUbuntu_17.04/i586 -- To view, visit https://gerrit.osmocom.org/7891 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I15f3c78f8410d709733ed5692ba94ba17559d7e1 Gerrit-PatchSet: 1 Gerrit-Project: osmo-mgw Gerrit-Branch: master Gerrit-Owner: lynxis lazus Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: dexter Gerrit-Reviewer: lynxis lazus Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Sat Apr 21 19:20:02 2018 From: gerrit-no-reply at lists.osmocom.org (lynxis lazus) Date: Sat, 21 Apr 2018 19:20:02 +0000 Subject: [PATCH] osmo-bsc[master]: abis-rsl: Send imm.ass messages via PCH In-Reply-To: References: Message-ID: Hello Jenkins Builder, I'd like you to reexamine a change. Please visit https://gerrit.osmocom.org/6203 to look at the new patch set (#2). abis-rsl: Send imm.ass messages via PCH It is possible to send immidiate assign messages through the paging channel. This commit adds the required functionality to the pcu socket interface and to the abis_rsl api Change-Id: I0a899d9c866ed09dc301694dbbcad304b1ed49e5 --- M include/osmocom/bsc/abis_rsl.h M include/osmocom/bsc/pcuif_proto.h M src/libbsc/abis_rsl.c M src/libbsc/pcu_sock.c 4 files changed, 55 insertions(+), 17 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-bsc refs/changes/03/6203/2 diff --git a/include/osmocom/bsc/abis_rsl.h b/include/osmocom/bsc/abis_rsl.h index b30702f..705b692 100644 --- a/include/osmocom/bsc/abis_rsl.h +++ b/include/osmocom/bsc/abis_rsl.h @@ -61,6 +61,8 @@ /* Ericcson vendor specific RSL extensions */ int rsl_ericsson_imm_assign_cmd(struct gsm_bts *bts, uint32_t tlli, uint8_t len, uint8_t *val); +int rsl_ericsson_imm_assign_cmd_via_pch(struct gsm_bts *bts, uint32_t tlli, + uint8_t len, uint8_t *val, uint8_t pag_grp); /* Siemens vendor-specific RSL extensions */ int rsl_siemens_mrpci(struct gsm_lchan *lchan, struct rsl_mrpci *mrpci); diff --git a/include/osmocom/bsc/pcuif_proto.h b/include/osmocom/bsc/pcuif_proto.h index b9f61b6..8f4a3f9 100644 --- a/include/osmocom/bsc/pcuif_proto.h +++ b/include/osmocom/bsc/pcuif_proto.h @@ -3,7 +3,7 @@ #include -#define PCU_IF_VERSION 0x09 +#define PCU_IF_VERSION 0x10 #define TXT_MAX_LEN 128 /* msg_type */ @@ -27,7 +27,7 @@ #define PCU_IF_SAPI_PDTCH 0x05 /* packet data/control/ccch block */ #define PCU_IF_SAPI_PRACH 0x06 /* packet random access channel */ #define PCU_IF_SAPI_PTCCH 0x07 /* packet TA control channel */ -#define PCU_IF_SAPI_AGCH_DT 0x08 /* assignment on AGCH but with additional TLLI */ +#define PCU_IF_SAPI_AGCH_DT 0x08 /* assignment on PCH or AGCH but with additional TLLI */ /* flags */ #define PCU_IF_FLAG_ACTIVE (1 << 0)/* BTS is active */ @@ -75,6 +75,7 @@ struct gsm_pcu_if_data_cnf_dt { uint8_t sapi; uint32_t tlli; + uint8_t imsi[3]; uint32_t fn; uint16_t arfcn; uint8_t trx_nr; diff --git a/src/libbsc/abis_rsl.c b/src/libbsc/abis_rsl.c index 2017d2c..656fc84 100644 --- a/src/libbsc/abis_rsl.c +++ b/src/libbsc/abis_rsl.c @@ -1096,6 +1096,15 @@ return abis_rsl_sendmsg(msg); } +/* Append mobile idenitiy (tlli) to message buffer */ +static void rsl_ericsson_put_mi(struct msgb *msg, uint32_t tlli) +{ + /* ericsson can handle a reference at the end of the message which is used in + * the confirm message. The confirm message is only sent if the trailer is present */ + msgb_put_u8(msg, RSL_IE_ERIC_MOBILE_ID); + msgb_put_u32(msg, tlli); +} + /* Chapter 8.5.6 */ int rsl_ericsson_imm_assign_cmd(struct gsm_bts *bts, uint32_t tlli, uint8_t len, uint8_t *val) { @@ -1103,10 +1112,24 @@ if (!msg) return 1; - /* ericsson can handle a reference at the end of the message which is used in - * the confirm message. The confirm message is only sent if the trailer is present */ - msgb_put_u8(msg, RSL_IE_ERIC_MOBILE_ID); - msgb_put_u32(msg, tlli); + /* Append ericsson propritary mobile identity field */ + rsl_ericsson_put_mi(msg, tlli); + + return abis_rsl_sendmsg(msg); +} + +/* Chapter 8.5.6 (Ericcson vendor specific RSL extension) */ +int rsl_ericsson_imm_assign_cmd_via_pch(struct gsm_bts *bts, uint32_t tlli, + uint8_t len, uint8_t *val, uint8_t pag_grp) +{ + struct msgb *msg = rsl_imm_assign_cmd_common(bts, len, val); + + /* Append ericsson propritary paging group field */ + msgb_put_u8(msg, RSL_IE_ERIC_PAGING_GROUP); + msgb_put_u8(msg, pag_grp); + + /* Append ericsson propritary mobile identity field */ + rsl_ericsson_put_mi(msg, tlli); return abis_rsl_sendmsg(msg); } diff --git a/src/libbsc/pcu_sock.c b/src/libbsc/pcu_sock.c index 64422c7..2c477e1 100644 --- a/src/libbsc/pcu_sock.c +++ b/src/libbsc/pcu_sock.c @@ -326,9 +326,9 @@ mi_len = p1->data[0]; mi = p1->data+1; LOGP(DPCU, LOGL_ERROR, "PCU Sends paging " - "request type %02x (chan_needed=%02x, mi_len=%u, mi=%s)\n", + "request type %02x (chan_needed=0x%02x, mi_len=%u, mi=%s, paging_group=0x%02x)\n", p1->msg_type, chan_needed, mi_len, - osmo_hexdump_nospc(mi,mi_len)); + osmo_hexdump_nospc(mi,mi_len), paging_group); /* NOTE: We will have to add 2 to mi_len and subtract 2 from * the mi pointer because rsl_paging_cmd() will perform the * reverse operations. This is because rsl_paging_cmd() is @@ -390,6 +390,7 @@ msg->l3h = msgb_put(msg, data_req->len); memcpy(msg->l3h, data_req->data, data_req->len); + LOGP(DPCU, LOGL_DEBUG, "PCU Sends immediate assignment via AGCH\n"); if (rsl_imm_assign_cmd(bts, msg->len, msg->data)) { msgb_free(msg); rc = -EIO; @@ -405,18 +406,29 @@ } memcpy(&tlli, data_req->data, 4); - msg = msgb_alloc(data_req->len - 4, "pcu_agch"); + /* the first three bytes are the last three digits of + * the IMSI, which we need to compute the paging group */ + imsi_digit_buf[0] = data_req->data[4]; + imsi_digit_buf[1] = data_req->data[5]; + imsi_digit_buf[2] = data_req->data[6]; + imsi_digit_buf[3] = '\0'; + pag_grp = gsm0502_calc_paging_group(&bts->si_common.chan_desc, + str_to_imsi(imsi_digit_buf)); + + msg = msgb_alloc(data_req->len - 7, "pcu_pch"); if (!msg) { rc = -ENOMEM; break; } - msg->l3h = msgb_put(msg, data_req->len - 4); - memcpy(msg->l3h, data_req->data + 4, data_req->len - 4); + msg->l3h = msgb_put(msg, data_req->len - 7); + memcpy(msg->l3h, data_req->data + 7, data_req->len - 7); - if (bts->type == GSM_BTS_TYPE_RBS2000) - rc = rsl_ericsson_imm_assign_cmd(bts, tlli, msg->len, msg->data); - else - rc = rsl_imm_assign_cmd(bts, msg->len, msg->data); + LOGP(DPCU, LOGL_DEBUG, "PCU Sends immediate assignment via PCH (tlli=0x%08x, pag_grp=0x%02x)\n", + tlli, pag_grp); + if (bts->type == GSM_BTS_TYPE_RBS2000) { + rc = rsl_ericsson_imm_assign_via_pch_cmd(bts, msg->len, msg->data, tlli, pag_grp); + } else + LOGP(DPCU, LOGL_ERROR, "This BTS does not support immediate via PCH, dropping message!\n"); if (rc) { msgb_free(msg); @@ -424,8 +436,8 @@ } break; default: - LOGP(DPCU, LOGL_ERROR, "Received PCU data request with " - "unsupported sapi %d\n", data_req->sapi); + LOGP(DPCU, LOGL_ERROR, "Received PCU data request for " + "unsupported channel (sapi=%d)\n", data_req->sapi); rc = -EINVAL; } -- To view, visit https://gerrit.osmocom.org/6203 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newpatchset Gerrit-Change-Id: I0a899d9c866ed09dc301694dbbcad304b1ed49e5 Gerrit-PatchSet: 2 Gerrit-Project: osmo-bsc Gerrit-Branch: master Gerrit-Owner: lynxis lazus Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: dexter Gerrit-Reviewer: lynxis lazus From gerrit-no-reply at lists.osmocom.org Sat Apr 21 19:59:15 2018 From: gerrit-no-reply at lists.osmocom.org (lynxis lazus) Date: Sat, 21 Apr 2018 19:59:15 +0000 Subject: [PATCH] libosmocore[master]: gsm_08_58.h: introduce RSL_IE_ERIC_PAGING_GROUP Message-ID: Review at https://gerrit.osmocom.org/7892 gsm_08_58.h: introduce RSL_IE_ERIC_PAGING_GROUP Ericsson supports a RSL command to page and immediate assign as single command. For paging a MS the BTS must know the paging group. Change-Id: I9194500e307ad69f8da07510bc965a7a5cd82a2a --- M include/osmocom/gsm/protocol/gsm_08_58.h 1 file changed, 1 insertion(+), 0 deletions(-) git pull ssh://gerrit.osmocom.org:29418/libosmocore refs/changes/92/7892/1 diff --git a/include/osmocom/gsm/protocol/gsm_08_58.h b/include/osmocom/gsm/protocol/gsm_08_58.h index f0094a3..97f8062 100644 --- a/include/osmocom/gsm/protocol/gsm_08_58.h +++ b/include/osmocom/gsm/protocol/gsm_08_58.h @@ -299,6 +299,7 @@ /* Ericsson specific IEs, clash with above partially, so they're not * part of the enum */ +#define RSL_IE_ERIC_PAGING_GROUP 0x0e #define RSL_IE_ERIC_INST_NR 0x48 #define RSL_IE_ERIC_PGSL_TIMERS 0x49 #define RSL_IE_ERIC_REPEAT_DL_FACCH 0x4a -- To view, visit https://gerrit.osmocom.org/7892 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I9194500e307ad69f8da07510bc965a7a5cd82a2a Gerrit-PatchSet: 1 Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Owner: lynxis lazus From gerrit-no-reply at lists.osmocom.org Sat Apr 21 20:03:32 2018 From: gerrit-no-reply at lists.osmocom.org (lynxis lazus) Date: Sat, 21 Apr 2018 20:03:32 +0000 Subject: osmo-bsc[master]: abis-rsl: Send imm.ass messages via PCH In-Reply-To: References: Message-ID: Patch Set 2: i've just copied. this is of course not ready for submit. I would split off the abis-rsl message from the pcu socket modifications -- To view, visit https://gerrit.osmocom.org/6203 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I0a899d9c866ed09dc301694dbbcad304b1ed49e5 Gerrit-PatchSet: 2 Gerrit-Project: osmo-bsc Gerrit-Branch: master Gerrit-Owner: lynxis lazus Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: dexter Gerrit-Reviewer: lynxis lazus Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Sat Apr 21 20:49:40 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Sat, 21 Apr 2018 20:49:40 +0000 Subject: [PATCH] libosmocore[master]: gsm_08_58.h: Add Ericsson vendor-specific RSL message types Message-ID: Review at https://gerrit.osmocom.org/7893 gsm_08_58.h: Add Ericsson vendor-specific RSL message types We are alredy doing the same way for ip.access and siemens ones, and this way we avoid using the hardcoded value in osmo-bsc. Change-Id: I7cb65f3ff1cfdbe4eee97b7545bcd13a38c72e25 --- M include/osmocom/gsm/protocol/gsm_08_58.h 1 file changed, 5 insertions(+), 0 deletions(-) git pull ssh://gerrit.osmocom.org:29418/libosmocore refs/changes/93/7893/1 diff --git a/include/osmocom/gsm/protocol/gsm_08_58.h b/include/osmocom/gsm/protocol/gsm_08_58.h index f0094a3..5e97b0d 100644 --- a/include/osmocom/gsm/protocol/gsm_08_58.h +++ b/include/osmocom/gsm/protocol/gsm_08_58.h @@ -204,6 +204,11 @@ RSL_MT_SIEMENS_MODIF_COND_IND = 0x50, }; +/*! Ericsson vendor-specific RSL message types */ +enum abis_rsl_msgtype_ericsson { + RSL_MT_ERICSSON_IMM_ASS_SENT = 0x10, +}; + /*! RSL Information Element Identifiers (Chapter 9.3) */ enum abis_rsl_ie { RSL_IE_CHAN_NR = 0x01, -- To view, visit https://gerrit.osmocom.org/7893 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I7cb65f3ff1cfdbe4eee97b7545bcd13a38c72e25 Gerrit-PatchSet: 1 Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol From gerrit-no-reply at lists.osmocom.org Sat Apr 21 20:50:19 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Sat, 21 Apr 2018 20:50:19 +0000 Subject: [PATCH] osmo-bsc[master]: abis_rsl.c: Clean ericsson specific imm assign code Message-ID: Review at https://gerrit.osmocom.org/7894 abis_rsl.c: Clean ericsson specific imm assign code Move to its own function, store pointer to proper header format and use the already defined IE define from libosmocore instead of using hardcoded values. Depends on: Change-Id I7cb65f3ff1cfdbe4eee97b7545bcd13a38c72e25 Change-Id: I845fd3f0c6ff31f268f68a31e1d55981f7ec6129 --- M src/libbsc/abis_rsl.c 1 file changed, 25 insertions(+), 14 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-bsc refs/changes/94/7894/1 diff --git a/src/libbsc/abis_rsl.c b/src/libbsc/abis_rsl.c index 9081bf1..230016c 100644 --- a/src/libbsc/abis_rsl.c +++ b/src/libbsc/abis_rsl.c @@ -2048,12 +2048,34 @@ return 0; } +/* Ericsson specific: Immediate Assign Sent */ +static int rsl_rx_ericsson_imm_assign_sent(struct msgb *msg) +{ + struct e1inp_sign_link *sign_link = msg->dst; + struct abis_rsl_dchan_hdr *dh = msgb_l2(msg); + uint32_t tlli; + + LOGP(DRSL, LOGL_INFO, "IMM.ass sent\n"); + msgb_pull(msg, sizeof(*dh)); + + /* FIXME: Move to TLV once we support defining TV types with V having len != 1 byte */ + if(msg->len < 5) + LOGP(DRSL, LOGL_ERROR, "short IMM.ass sent message!\n"); + else if(msg->data[0] != RSL_IE_ERIC_MOBILE_ID) + LOGP(DRSL, LOGL_ERROR, "unsupported IMM.ass message format! (please fix)\n"); + else { + msgb_pull(msg, 1); /* drop previous data to use msg_pull_u32 */ + tlli = msgb_pull_u32(msg); + pcu_tx_imm_ass_sent(sign_link->trx->bts, tlli); + } + return 0; +} + static int abis_rsl_rx_cchan(struct msgb *msg) { struct e1inp_sign_link *sign_link = msg->dst; struct abis_rsl_dchan_hdr *rslh = msgb_l2(msg); int rc = 0; - uint32_t tlli; msg->lchan = lchan_lookup(sign_link->trx, rslh->chan_nr, "Abis RSL rx CCHAN: "); @@ -2075,19 +2097,8 @@ "type %s (0x%02x)\n", rsl_msg_name(rslh->c.msg_type), rslh->c.msg_type); break; - case 0x10: /* Ericsson specific: Immediate Assign Sent */ - /* FIXME: Replace the messy message parsing below - * with proper TV parser */ - LOGP(DRSL, LOGL_INFO, "IMM.ass sent\n"); - if(msg->len < 9) - LOGP(DRSL, LOGL_ERROR, "short IMM.ass sent message!\n"); - else if(msg->data[4] != 0xf1) - LOGP(DRSL, LOGL_ERROR, "unsupported IMM.ass message format! (please fix)\n"); - else { - msgb_pull(msg, 5); /* drop previous data to use msg_pull_u32 */ - tlli = msgb_pull_u32(msg); - pcu_tx_imm_ass_sent(sign_link->trx->bts, tlli); - } + case RSL_MT_ERICSSON_IMM_ASS_SENT: + rc = rsl_rx_ericsson_imm_assign_sent(msg); break; default: LOGP(DRSL, LOGL_NOTICE, "Unknown Abis RSL TRX message type " -- To view, visit https://gerrit.osmocom.org/7894 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I845fd3f0c6ff31f268f68a31e1d55981f7ec6129 Gerrit-PatchSet: 1 Gerrit-Project: osmo-bsc Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol From gerrit-no-reply at lists.osmocom.org Sat Apr 21 21:27:28 2018 From: gerrit-no-reply at lists.osmocom.org (Alexander Chemeris) Date: Sat, 21 Apr 2018 21:27:28 +0000 Subject: osmo-trx[master]: doc: examples: Add umtrx sample config In-Reply-To: References: Message-ID: Patch Set 1: (1 comment) https://gerrit.osmocom.org/#/c/7890/1/doc/examples/osmo-trx-umtrx.cfg File doc/examples/osmo-trx-umtrx.cfg: Line 22: chan 1 Am I correct that this enables dual-channel mode same as the old "-c 2" command line option? -- To view, visit https://gerrit.osmocom.org/7890 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Id38de0bbbe75e5e6bbb0de2eecb7d1984786d528 Gerrit-PatchSet: 1 Gerrit-Project: osmo-trx Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Alexander Chemeris Gerrit-Reviewer: Jenkins Builder Gerrit-HasComments: Yes From gerrit-no-reply at lists.osmocom.org Sat Apr 21 22:16:58 2018 From: gerrit-no-reply at lists.osmocom.org (lynxis lazus) Date: Sat, 21 Apr 2018 22:16:58 +0000 Subject: libosmocore[master]: gsm_08_58.h: Add Ericsson vendor-specific RSL message types In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+1 -- To view, visit https://gerrit.osmocom.org/7893 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I7cb65f3ff1cfdbe4eee97b7545bcd13a38c72e25 Gerrit-PatchSet: 1 Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: lynxis lazus Gerrit-HasComments: No From jenkins at lists.osmocom.org Sat Apr 21 22:41:20 2018 From: jenkins at lists.osmocom.org (jenkins at lists.osmocom.org) Date: Sat, 21 Apr 2018 22:41:20 +0000 (UTC) Subject: =?UTF-8?Q?Build_failed_in_Jenkins:_master-rtl-sdr_=C2=BB_a1=3Ddefau?= =?UTF-8?Q?lt,a2=3Ddefault,a3=3Ddefault,osmocom-master-debian9_#6?= In-Reply-To: <577069085.22.1524264080249.JavaMail.jenkins@jenkins.osmocom.org> References: <577069085.22.1524264080249.JavaMail.jenkins@jenkins.osmocom.org> Message-ID: <853560149.3.1524350480224.JavaMail.jenkins@jenkins.osmocom.org> See ------------------------------------------ [...truncated 93.24 KB...] make[2]: Entering directory ' make[2]: Nothing to be done for 'dvi'. make[2]: Leaving directory ' Making dvi in src make[2]: Entering directory ' make[2]: Nothing to be done for 'dvi'. make[2]: Leaving directory ' make[2]: Entering directory ' make[2]: Nothing to be done for 'dvi-am'. make[2]: Leaving directory ' make[1]: Leaving directory ' make[1]: Entering directory ' make check-recursive make[2]: Entering directory ' Making check in include make[3]: Entering directory ' make[3]: Nothing to be done for 'check'. make[3]: Leaving directory ' Making check in src make[3]: Entering directory ' make[3]: Nothing to be done for 'check'. make[3]: Leaving directory ' make[3]: Entering directory ' make[3]: Leaving directory ' make[2]: Leaving directory ' make[1]: Leaving directory ' make[1]: Entering directory ' make install-recursive make[2]: Entering directory ' Making install in include make[3]: Entering directory ' make[4]: Entering directory ' make[4]: Nothing to be done for 'install-exec-am'. /bin/mkdir -p ' /usr/bin/install -c -m 644 ../../../include/rtl-sdr.h ../../../include/rtl-sdr_export.h ' make[4]: Leaving directory ' make[3]: Leaving directory ' Making install in src make[3]: Entering directory ' make[4]: Entering directory ' /bin/mkdir -p ' /bin/bash ../libtool --mode=install /usr/bin/install -c librtlsdr.la ' libtool: install: /usr/bin/install -c .libs/librtlsdr.so.0.0.5 libtool: install: (cd && { ln -s -f librtlsdr.so.0.0.5 librtlsdr.so.0 || { rm -f librtlsdr.so.0 && ln -s librtlsdr.so.0.0.5 librtlsdr.so.0; }; }) libtool: install: (cd && { ln -s -f librtlsdr.so.0.0.5 librtlsdr.so || { rm -f librtlsdr.so && ln -s librtlsdr.so.0.0.5 librtlsdr.so; }; }) libtool: install: /usr/bin/install -c .libs/librtlsdr.lai libtool: install: /usr/bin/install -c .libs/librtlsdr.a libtool: install: chmod 644 libtool: install: ranlib libtool: finish: PATH="/usr/local/bin:/usr/bin:/bin:/usr/games:/home/osmocom-build/bin:/sbin" ldconfig -n ---------------------------------------------------------------------- Libraries have been installed in: If you ever happen to want to link against installed libraries in a given directory, LIBDIR, you must either use libtool, and specify the full pathname of the library, or use the '-LLIBDIR' flag during linking and do at least one of the following: - add LIBDIR to the 'LD_LIBRARY_PATH' environment variable during execution - add LIBDIR to the 'LD_RUN_PATH' environment variable during linking - use the '-Wl,-rpath -Wl,LIBDIR' linker flag - have your system administrator add LIBDIR to '/etc/ld.so.conf' See any operating system documentation about shared libraries for more information, such as the ld(1) and ld.so(8) manual pages. ---------------------------------------------------------------------- /bin/mkdir -p ' /bin/bash ../libtool --mode=install /usr/bin/install -c rtl_sdr rtl_tcp rtl_test rtl_fm rtl_eeprom rtl_adsb rtl_power ' libtool: install: /usr/bin/install -c .libs/rtl_sdr libtool: install: /usr/bin/install -c .libs/rtl_tcp libtool: install: /usr/bin/install -c .libs/rtl_test libtool: install: /usr/bin/install -c .libs/rtl_fm libtool: install: /usr/bin/install -c .libs/rtl_eeprom libtool: install: /usr/bin/install -c .libs/rtl_adsb libtool: install: /usr/bin/install -c .libs/rtl_power make[4]: Nothing to be done for 'install-data-am'. make[4]: Leaving directory ' make[3]: Leaving directory ' make[3]: Entering directory ' make[4]: Entering directory ' make[4]: Nothing to be done for 'install-exec-am'. /bin/mkdir -p ' /usr/bin/install -c -m 644 ./doc/html.tar ' /bin/mkdir -p ' /usr/bin/install -c -m 644 librtlsdr.pc ' make install-data-hook make[5]: Entering directory ' cd && tar xf html.tar --strip-components 1 && rm -f html.tar make[5]: Leaving directory ' make[4]: Leaving directory ' make[3]: Leaving directory ' make[2]: Leaving directory ' make[1]: Leaving directory ' make[1]: Entering directory ' Making installcheck in include make[2]: Entering directory ' make[2]: Nothing to be done for 'installcheck'. make[2]: Leaving directory ' Making installcheck in src make[2]: Entering directory ' make[2]: Nothing to be done for 'installcheck'. make[2]: Leaving directory ' make[2]: Entering directory ' make[2]: Nothing to be done for 'installcheck-am'. make[2]: Leaving directory ' make[1]: Leaving directory ' make[1]: Entering directory ' Making uninstall in include make[2]: Entering directory ' ( cd ' && rm -f rtl-sdr.h rtl-sdr_export.h ) make[2]: Leaving directory ' Making uninstall in src make[2]: Entering directory ' ( cd ' && rm -f rtl_sdr rtl_tcp rtl_test rtl_fm rtl_eeprom rtl_adsb rtl_power ) /bin/bash ../libtool --mode=uninstall rm -f ' libtool: uninstall: rm -f make[2]: Leaving directory ' make[2]: Entering directory ' ( cd ' && rm -f html.tar ) ( cd ' && rm -f librtlsdr.pc ) make uninstall-hook make[3]: Entering directory ' cd && rm -rf make[3]: Leaving directory ' make[2]: Leaving directory ' make[1]: Leaving directory ' make[1]: Entering directory ' make[1]: Leaving directory ' make[1]: Entering directory ' make install-recursive make[2]: Entering directory ' Making install in include make[3]: Entering directory ' make[4]: Entering directory ' make[4]: Nothing to be done for 'install-exec-am'. /bin/mkdir -p '/tmp/am-dc-11611/ /usr/bin/install -c -m 644 ../../../include/rtl-sdr.h ../../../include/rtl-sdr_export.h '/tmp/am-dc-11611/ make[4]: Leaving directory ' make[3]: Leaving directory ' Making install in src make[3]: Entering directory ' make[4]: Entering directory ' /bin/mkdir -p '/tmp/am-dc-11611/ /bin/bash ../libtool --mode=install /usr/bin/install -c librtlsdr.la '/tmp/am-dc-11611/ libtool: install: /usr/bin/install -c .libs/librtlsdr.so.0.0.5 /tmp/am-dc-11611/ libtool: install: (cd /tmp/am-dc-11611/ && { ln -s -f librtlsdr.so.0.0.5 librtlsdr.so.0 || { rm -f librtlsdr.so.0 && ln -s librtlsdr.so.0.0.5 librtlsdr.so.0; }; }) libtool: install: (cd /tmp/am-dc-11611/ && { ln -s -f librtlsdr.so.0.0.5 librtlsdr.so || { rm -f librtlsdr.so && ln -s librtlsdr.so.0.0.5 librtlsdr.so; }; }) libtool: install: /usr/bin/install -c .libs/librtlsdr.lai /tmp/am-dc-11611/ libtool: install: /usr/bin/install -c .libs/librtlsdr.a /tmp/am-dc-11611/ libtool: install: chmod 644 /tmp/am-dc-11611/ libtool: install: ranlib /tmp/am-dc-11611/ libtool: warning: remember to run 'libtool --finish /bin/mkdir -p '/tmp/am-dc-11611/ /bin/bash ../libtool --mode=install /usr/bin/install -c rtl_sdr rtl_tcp rtl_test rtl_fm rtl_eeprom rtl_adsb rtl_power '/tmp/am-dc-11611/ libtool: warning: 'librtlsdr.la' has not been installed in ' libtool: install: /usr/bin/install -c .libs/rtl_sdr /tmp/am-dc-11611/ libtool: warning: 'librtlsdr.la' has not been installed in ' libtool: install: /usr/bin/install -c .libs/rtl_tcp /tmp/am-dc-11611/ libtool: warning: 'librtlsdr.la' has not been installed in ' libtool: install: /usr/bin/install -c .libs/rtl_test /tmp/am-dc-11611/ libtool: warning: 'librtlsdr.la' has not been installed in ' libtool: install: /usr/bin/install -c .libs/rtl_fm /tmp/am-dc-11611/ libtool: warning: 'librtlsdr.la' has not been installed in ' libtool: install: /usr/bin/install -c .libs/rtl_eeprom /tmp/am-dc-11611/ libtool: warning: 'librtlsdr.la' has not been installed in ' libtool: install: /usr/bin/install -c .libs/rtl_adsb /tmp/am-dc-11611/ libtool: warning: 'librtlsdr.la' has not been installed in ' libtool: install: /usr/bin/install -c .libs/rtl_power /tmp/am-dc-11611/ make[4]: Nothing to be done for 'install-data-am'. make[4]: Leaving directory ' make[3]: Leaving directory ' make[3]: Entering directory ' make[4]: Entering directory ' make[4]: Nothing to be done for 'install-exec-am'. /bin/mkdir -p '/tmp/am-dc-11611/ /usr/bin/install -c -m 644 ./doc/html.tar '/tmp/am-dc-11611/ /bin/mkdir -p '/tmp/am-dc-11611/ /usr/bin/install -c -m 644 librtlsdr.pc '/tmp/am-dc-11611/ make install-data-hook make[5]: Entering directory ' cd /tmp/am-dc-11611/ && tar xf html.tar --strip-components 1 && rm -f html.tar make[5]: Leaving directory ' make[4]: Leaving directory ' make[3]: Leaving directory ' make[2]: Leaving directory ' make[1]: Leaving directory ' make[1]: Entering directory ' Making uninstall in include make[2]: Entering directory ' ( cd '/tmp/am-dc-11611/ && rm -f rtl-sdr.h rtl-sdr_export.h ) make[2]: Leaving directory ' Making uninstall in src make[2]: Entering directory ' ( cd '/tmp/am-dc-11611/ && rm -f rtl_sdr rtl_tcp rtl_test rtl_fm rtl_eeprom rtl_adsb rtl_power ) /bin/bash ../libtool --mode=uninstall rm -f '/tmp/am-dc-11611/ libtool: uninstall: rm -f /tmp/am-dc-11611/ /tmp/am-dc-11611/ /tmp/am-dc-11611/ /tmp/am-dc-11611/ /tmp/am-dc-11611/ make[2]: Leaving directory ' make[2]: Entering directory ' ( cd '/tmp/am-dc-11611/ && rm -f html.tar ) ( cd '/tmp/am-dc-11611/ && rm -f librtlsdr.pc ) make uninstall-hook make[3]: Entering directory ' cd /tmp/am-dc-11611/ && rm -rf make[3]: Leaving directory ' make[2]: Leaving directory ' make[1]: Leaving directory ' make[1]: Entering directory ' ERROR: files left after uninstall: (check DESTDIR support) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Makefile:757: recipe for target 'distuninstallcheck' failed make[1]: *** [distuninstallcheck] Error 1 make[1]: Leaving directory ' Makefile:701: recipe for target 'distcheck' failed make: *** [distcheck] Error 1 + cat-testlogs.sh Build step 'Execute shell' marked build as failure [WARNINGS]Skipping publisher since build result is FAILURE From gerrit-no-reply at lists.osmocom.org Sun Apr 22 08:48:17 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Sun, 22 Apr 2018 08:48:17 +0000 Subject: osmo-trx[master]: doc: examples: Add umtrx sample config In-Reply-To: References: Message-ID: Patch Set 1: (1 comment) https://gerrit.osmocom.org/#/c/7890/1/doc/examples/osmo-trx-umtrx.cfg File doc/examples/osmo-trx-umtrx.cfg: Line 22: chan 1 > Am I correct that this enables dual-channel mode same as the old "-c 2" com Yes, you can then set per-channel specific attributes by adding lines under each channel, such as RX/TX path to be used. -- To view, visit https://gerrit.osmocom.org/7890 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Id38de0bbbe75e5e6bbb0de2eecb7d1984786d528 Gerrit-PatchSet: 1 Gerrit-Project: osmo-trx Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Alexander Chemeris Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Pau Espin Pedrol Gerrit-Reviewer: ttsou Gerrit-HasComments: Yes From gerrit-no-reply at lists.osmocom.org Sun Apr 22 11:11:31 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Sun, 22 Apr 2018 11:11:31 +0000 Subject: [PATCH] osmo-gsm-tester[master]: modem: Catch exception: call removed while waiting to become... Message-ID: Review at https://gerrit.osmocom.org/7895 modem: Catch exception: call removed while waiting to become active This can happen while in a test we use: wait(ms_mo.call_is_active, mo_cid) And then answer fails for whatever reason, after a timeout ofono will remove the call object: /sierra_2: DBG: 'org.ofono.VoiceCallManager'.CallRemoved() -> /sierra_2/voicecall01 As a result, during next call o call_is_active() will try to get the call object, but it doesn't exist anymore and an exception will be created in method call_state during call to systembus_get(). Change-Id: I02b7e76425754372756493761819f18f1e3106c1 --- M src/osmo_gsm_tester/modem.py 1 file changed, 8 insertions(+), 3 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-gsm-tester refs/changes/95/7895/1 diff --git a/src/osmo_gsm_tester/modem.py b/src/osmo_gsm_tester/modem.py index 2f742ea..65c66e7 100644 --- a/src/osmo_gsm_tester/modem.py +++ b/src/osmo_gsm_tester/modem.py @@ -708,9 +708,14 @@ return self.call_state(call_id) == 'active' def call_state(self, call_id): - call_dbus_obj = systembus_get(call_id) - props = call_dbus_obj.GetProperties() - state = props.get('State') + try: + call_dbus_obj = systembus_get(call_id) + props = call_dbus_obj.GetProperties() + state = props.get('State') + except Exception e: + self.log('asking call state for non existent call') + log.log_exn() + state = 'disconnected' self.dbg('call state: %s' % state) return state -- To view, visit https://gerrit.osmocom.org/7895 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I02b7e76425754372756493761819f18f1e3106c1 Gerrit-PatchSet: 1 Gerrit-Project: osmo-gsm-tester Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol From gerrit-no-reply at lists.osmocom.org Sun Apr 22 12:35:46 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Sun, 22 Apr 2018 12:35:46 +0000 Subject: [PATCH] osmo-gsm-tester[master]: modem: Catch exception: call removed while waiting to become... In-Reply-To: References: Message-ID: Hello Jenkins Builder, I'd like you to reexamine a change. Please visit https://gerrit.osmocom.org/7895 to look at the new patch set (#2). modem: Catch exception: call removed while waiting to become active This can happen while in a test we use: wait(ms_mo.call_is_active, mo_cid) And then answer fails for whatever reason, after a timeout ofono will remove the call object: /sierra_2: DBG: 'org.ofono.VoiceCallManager'.CallRemoved() -> /sierra_2/voicecall01 As a result, during next call o call_is_active() will try to get the call object, but it doesn't exist anymore and an exception will be created in method call_state during call to systembus_get(). Change-Id: I02b7e76425754372756493761819f18f1e3106c1 --- M src/osmo_gsm_tester/modem.py 1 file changed, 8 insertions(+), 3 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-gsm-tester refs/changes/95/7895/2 diff --git a/src/osmo_gsm_tester/modem.py b/src/osmo_gsm_tester/modem.py index 2f742ea..59fcc76 100644 --- a/src/osmo_gsm_tester/modem.py +++ b/src/osmo_gsm_tester/modem.py @@ -708,9 +708,14 @@ return self.call_state(call_id) == 'active' def call_state(self, call_id): - call_dbus_obj = systembus_get(call_id) - props = call_dbus_obj.GetProperties() - state = props.get('State') + try: + call_dbus_obj = systembus_get(call_id) + props = call_dbus_obj.GetProperties() + state = props.get('State') + except Exception as e: + self.log('asking call state for non existent call') + log.log_exn() + state = 'disconnected' self.dbg('call state: %s' % state) return state -- To view, visit https://gerrit.osmocom.org/7895 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newpatchset Gerrit-Change-Id: I02b7e76425754372756493761819f18f1e3106c1 Gerrit-PatchSet: 2 Gerrit-Project: osmo-gsm-tester Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Jenkins Builder From jenkins at lists.osmocom.org Sun Apr 22 15:10:06 2018 From: jenkins at lists.osmocom.org (jenkins at lists.osmocom.org) Date: Sun, 22 Apr 2018 15:10:06 +0000 (UTC) Subject: =?UTF-8?Q?Build_failed_in_Jenkins:_master-asn1c_=C2=BB_a1=3Ddefault?= =?UTF-8?Q?,a2=3Ddefault,a3=3Ddefault,osmocom-master-debian9_#100?= In-Reply-To: <1912248546.36.1524323406588.JavaMail.jenkins@jenkins.osmocom.org> References: <1912248546.36.1524323406588.JavaMail.jenkins@jenkins.osmocom.org> Message-ID: <988977696.1.1524409806796.JavaMail.jenkins@jenkins.osmocom.org> See ------------------------------------------ [...truncated 3.74 KB...] checking build system type... x86_64-unknown-linux-gnu checking host system type... x86_64-unknown-linux-gnu checking target system type... x86_64-unknown-linux-gnu checking for a BSD-compatible install... /usr/bin/install -c checking whether build environment is sane... yes checking for gawk... gawk checking whether make sets $(MAKE)... yes checking whether to enable maintainer-specific portions of Makefiles... no checking for style of include used by make... GNU checking for gcc... gcc checking for C compiler default output file name... a.out checking whether the C compiler works... yes checking whether we are cross compiling... no checking for suffix of executables... checking for suffix of object files... o checking whether we are using the GNU C compiler... yes checking whether gcc accepts -g... yes checking for gcc option to accept ISO C89... none needed checking dependency style of gcc... gcc3 checking for a sed that does not truncate output... /bin/sed checking for grep that handles long lines and -e... /bin/grep checking for egrep... /bin/grep -E checking for ld used by gcc... /usr/bin/ld checking if the linker (/usr/bin/ld) is GNU ld... yes checking for /usr/bin/ld option to reload object files... -r checking for BSD-compatible nm... /usr/bin/nm -B checking whether ln -s works... yes checking how to recognise dependent libraries... pass_all checking how to run the C preprocessor... gcc -E checking for ANSI C header files... yes checking for sys/types.h... yes checking for sys/stat.h... yes checking for stdlib.h... yes checking for string.h... yes checking for memory.h... yes checking for strings.h... yes checking for inttypes.h... yes checking for stdint.h... yes checking for unistd.h... yes checking dlfcn.h usability... yes checking dlfcn.h presence... yes checking for dlfcn.h... yes checking for g++... g++ checking whether we are using the GNU C++ compiler... yes checking whether g++ accepts -g... yes checking dependency style of g++... gcc3 checking how to run the C++ preprocessor... g++ -E checking for g77... no checking for f77... no checking for xlf... no checking for frt... no checking for pgf77... no checking for cf77... no checking for fort77... no checking for fl32... no checking for af77... no checking for f90... no checking for xlf90... no checking for pgf90... no checking for pghpf... no checking for epcf90... no checking for gfortran... no checking for g95... no checking for f95... no checking for fort... no checking for xlf95... no checking for ifort... no checking for ifc... no checking for efc... no checking for pgf95... no checking for lf95... no checking for ftn... no checking whether we are using the GNU Fortran 77 compiler... no checking whether accepts -g... no checking the maximum length of command line arguments... 32768 checking command to parse /usr/bin/nm -B output from gcc object... ok checking for objdir... .libs checking for ar... ar checking for ranlib... ranlib checking for strip... strip checking if gcc supports -fno-rtti -fno-exceptions... no checking for gcc option to produce PIC... -fPIC checking if gcc PIC flag -fPIC works... yes checking if gcc static flag -static works... yes checking if gcc supports -c -o file.o... yes checking whether the gcc linker (/usr/bin/ld -m elf_x86_64) supports shared libraries... yes checking whether -lc should be explicitly linked in... no checking dynamic linker characteristics... GNU/Linux ld.so checking how to hardcode library paths into programs... immediate checking whether stripping libraries is possible... yes checking if libtool supports shared libraries... yes checking whether to build shared libraries... yes checking whether to build static libraries... yes configure: creating libtool appending configuration tag "CXX" to libtool checking for ld used by g++... /usr/bin/ld -m elf_x86_64 checking if the linker (/usr/bin/ld -m elf_x86_64) is GNU ld... yes checking whether the g++ linker (/usr/bin/ld -m elf_x86_64) supports shared libraries... yes checking for g++ option to produce PIC... -fPIC checking if g++ PIC flag -fPIC works... yes checking if g++ static flag -static works... yes checking if g++ supports -c -o file.o... yes checking whether the g++ linker (/usr/bin/ld -m elf_x86_64) supports shared libraries... yes checking dynamic linker characteristics... GNU/Linux ld.so checking how to hardcode library paths into programs... immediate appending configuration tag "F77" to libtool checking for autoconf... /usr/bin/autoconf checking for autoheader... /usr/bin/autoheader checking for gcc... (cached) gcc checking whether we are using the GNU C compiler... (cached) yes checking whether gcc accepts -g... (cached) yes checking for gcc option to accept ISO C89... (cached) none needed checking dependency style of gcc... (cached) gcc3 checking how to run the C preprocessor... gcc -E checking for a BSD-compatible install... /usr/bin/install -c checking whether ln -s works... yes checking whether make sets $(MAKE)... (cached) yes checking for bison... bison -y checking for flex... flex checking for yywrap in -lfl... yes checking lex output file root... lex.yy checking whether yytext is a pointer... yes checking for ar... /usr/bin/ar checking for ANSI C header files... (cached) yes checking sys/param.h usability... yes checking sys/param.h presence... yes checking for sys/param.h... yes checking whether byte ordering is bigendian... no checking for off_t... yes checking for size_t... yes checking whether struct tm is in sys/time.h or time.h... time.h checking for intmax_t... yes checking for library containing getopt... none required checking for strtoimax... yes checking for strtoll... yes checking for mergesort... no checking for mkstemps... yes configure: creating ./config.status config.status: creating skeletons/standard-modules/Makefile config.status: creating skeletons/tests/Makefile config.status: creating libasn1compiler/Makefile config.status: creating libasn1parser/Makefile config.status: creating libasn1print/Makefile config.status: creating asn1c/webcgi/Makefile config.status: creating asn1c/tests/Makefile config.status: creating libasn1fix/Makefile config.status: creating skeletons/Makefile config.status: creating examples/Makefile config.status: creating tests/Makefile config.status: creating asn1c/Makefile config.status: creating doc/Makefile config.status: creating asn1c.spec config.status: creating Makefile config.status: creating config.h config.status: executing depfiles commands + make -j 8 make all-recursive make[1]: Entering directory ' Making all in libasn1parser make[2]: Entering directory ' if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1parser.lo -MD -MP -MF ".deps/asn1parser.Tpo" -c -o asn1parser.lo asn1parser.c; \ then mv -f ".deps/asn1parser.Tpo" ".deps/asn1parser.Plo"; else rm -f ".deps/asn1parser.Tpo"; exit 1; fi bison -y -p asn1p_ -d asn1p_y.y if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_l.lo -MD -MP -MF ".deps/asn1p_l.Tpo" -c -o asn1p_l.lo asn1p_l.c; \ then mv -f ".deps/asn1p_l.Tpo" ".deps/asn1p_l.Plo"; else rm -f ".deps/asn1p_l.Tpo"; exit 1; fi if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_module.lo -MD -MP -MF ".deps/asn1p_module.Tpo" -c -o asn1p_module.lo asn1p_module.c; \ then mv -f ".deps/asn1p_module.Tpo" ".deps/asn1p_module.Plo"; else rm -f ".deps/asn1p_module.Tpo"; exit 1; fi if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_oid.lo -MD -MP -MF ".deps/asn1p_oid.Tpo" -c -o asn1p_oid.lo asn1p_oid.c; \ then mv -f ".deps/asn1p_oid.Tpo" ".deps/asn1p_oid.Plo"; else rm -f ".deps/asn1p_oid.Tpo"; exit 1; fi if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_value.lo -MD -MP -MF ".deps/asn1p_value.Tpo" -c -o asn1p_value.lo asn1p_value.c; \ then mv -f ".deps/asn1p_value.Tpo" ".deps/asn1p_value.Plo"; else rm -f ".deps/asn1p_value.Tpo"; exit 1; fi if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_expr.lo -MD -MP -MF ".deps/asn1p_expr.Tpo" -c -o asn1p_expr.lo asn1p_expr.c; \ then mv -f ".deps/asn1p_expr.Tpo" ".deps/asn1p_expr.Plo"; else rm -f ".deps/asn1p_expr.Tpo"; exit 1; fi if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_xports.lo -MD -MP -MF ".deps/asn1p_xports.Tpo" -c -o asn1p_xports.lo asn1p_xports.c; \ then mv -f ".deps/asn1p_xports.Tpo" ".deps/asn1p_xports.Plo"; else rm -f ".deps/asn1p_xports.Tpo"; exit 1; fi asn1p_y.y: warning: 2 shift/reduce conflicts [-Wconflicts-sr] mkdir .libs mkdir .libs mkdir: cannot create directory '.libs': File exists gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_xports.lo -MD -MP -MF .deps/asn1p_xports.Tpo -c asn1p_xports.c -fPIC -DPIC -o .libs/asn1p_xports.o gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_value.lo -MD -MP -MF .deps/asn1p_value.Tpo -c asn1p_value.c -fPIC -DPIC -o .libs/asn1p_value.o gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1parser.lo -MD -MP -MF .deps/asn1parser.Tpo -c asn1parser.c -fPIC -DPIC -o .libs/asn1parser.o gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_oid.lo -MD -MP -MF .deps/asn1p_oid.Tpo -c asn1p_oid.c -fPIC -DPIC -o .libs/asn1p_oid.o gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_l.lo -MD -MP -MF .deps/asn1p_l.Tpo -c asn1p_l.c -fPIC -DPIC -o .libs/asn1p_l.o gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_module.lo -MD -MP -MF .deps/asn1p_module.Tpo -c asn1p_module.c -fPIC -DPIC -o .libs/asn1p_module.o gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_expr.lo -MD -MP -MF .deps/asn1p_expr.Tpo -c asn1p_expr.c -fPIC -DPIC -o .libs/asn1p_expr.o gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_xports.lo -MD -MP -MF .deps/asn1p_xports.Tpo -c asn1p_xports.c -o asn1p_xports.o >/dev/null 2>&1 gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_module.lo -MD -MP -MF .deps/asn1p_module.Tpo -c asn1p_module.c -o asn1p_module.o >/dev/null 2>&1 asn1p_l.c:3521:12: warning: 'input' defined but not used [-Wunused-function] static int input() ^~~~~ gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1parser.lo -MD -MP -MF .deps/asn1parser.Tpo -c asn1parser.c -o asn1parser.o >/dev/null 2>&1 gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_oid.lo -MD -MP -MF .deps/asn1p_oid.Tpo -c asn1p_oid.c -o asn1p_oid.o >/dev/null 2>&1 gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_value.lo -MD -MP -MF .deps/asn1p_value.Tpo -c asn1p_value.c -o asn1p_value.o >/dev/null 2>&1 if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_constr.lo -MD -MP -MF ".deps/asn1p_constr.Tpo" -c -o asn1p_constr.lo asn1p_constr.c; \ then mv -f ".deps/asn1p_constr.Tpo" ".deps/asn1p_constr.Plo"; else rm -f ".deps/asn1p_constr.Tpo"; exit 1; fi if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_param.lo -MD -MP -MF ".deps/asn1p_param.Tpo" -c -o asn1p_param.lo asn1p_param.c; \ then mv -f ".deps/asn1p_param.Tpo" ".deps/asn1p_param.Plo"; else rm -f ".deps/asn1p_param.Tpo"; exit 1; fi gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_expr.lo -MD -MP -MF .deps/asn1p_expr.Tpo -c asn1p_expr.c -o asn1p_expr.o >/dev/null 2>&1 if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_class.lo -MD -MP -MF ".deps/asn1p_class.Tpo" -c -o asn1p_class.lo asn1p_class.c; \ then mv -f ".deps/asn1p_class.Tpo" ".deps/asn1p_class.Plo"; else rm -f ".deps/asn1p_class.Tpo"; exit 1; fi if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_ref.lo -MD -MP -MF ".deps/asn1p_ref.Tpo" -c -o asn1p_ref.lo asn1p_ref.c; \ then mv -f ".deps/asn1p_ref.Tpo" ".deps/asn1p_ref.Plo"; else rm -f ".deps/asn1p_ref.Tpo"; exit 1; fi gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_constr.lo -MD -MP -MF .deps/asn1p_constr.Tpo -c asn1p_constr.c -fPIC -DPIC -o .libs/asn1p_constr.o gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_param.lo -MD -MP -MF .deps/asn1p_param.Tpo -c asn1p_param.c -fPIC -DPIC -o .libs/asn1p_param.o gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_ref.lo -MD -MP -MF .deps/asn1p_ref.Tpo -c asn1p_ref.c -fPIC -DPIC -o .libs/asn1p_ref.o gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_class.lo -MD -MP -MF .deps/asn1p_class.Tpo -c asn1p_class.c -fPIC -DPIC -o .libs/asn1p_class.o if test -f y.tab.h; then \ to=`echo "asn1p_y_H" | sed \ -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/' \ -e 's/[^ABCDEFGHIJKLMNOPQRSTUVWXYZ]/_/g'`; \ sed -e "/^#/!b" -e "s/Y_TAB_H/$to/g" -e "s|y\.tab\.h|asn1p_y.h|" \ y.tab.h >asn1p_y.ht; \ rm -f y.tab.h; \ if cmp -s asn1p_y.ht asn1p_y.h; then \ rm -f asn1p_y.ht ;\ else \ mv asn1p_y.ht asn1p_y.h; \ fi; \ fi if test -f y.output; then \ mv y.output asn1p_y.output; \ fi sed '/^#/ s|y\.tab\.c|asn1p_y.c|' y.tab.c >asn1p_y.ct && mv asn1p_y.ct asn1p_y.c gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_param.lo -MD -MP -MF .deps/asn1p_param.Tpo -c asn1p_param.c -o asn1p_param.o >/dev/null 2>&1 rm -f y.tab.c if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_y.lo -MD -MP -MF ".deps/asn1p_y.Tpo" -c -o asn1p_y.lo asn1p_y.c; \ then mv -f ".deps/asn1p_y.Tpo" ".deps/asn1p_y.Plo"; else rm -f ".deps/asn1p_y.Tpo"; exit 1; fi gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_constr.lo -MD -MP -MF .deps/asn1p_constr.Tpo -c asn1p_constr.c -o asn1p_constr.o >/dev/null 2>&1 gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_ref.lo -MD -MP -MF .deps/asn1p_ref.Tpo -c asn1p_ref.c -o asn1p_ref.o >/dev/null 2>&1 gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_class.lo -MD -MP -MF .deps/asn1p_class.Tpo -c asn1p_class.c -o asn1p_class.o >/dev/null 2>&1 gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_y.lo -MD -MP -MF .deps/asn1p_y.Tpo -c asn1p_y.c -fPIC -DPIC -o .libs/asn1p_y.o gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_l.lo -MD -MP -MF .deps/asn1p_l.Tpo -c asn1p_l.c -o asn1p_l.o >/dev/null 2>&1 asn1p_y.y: In function 'asn1p_parse': asn1p_y.y:357:13: error: 'param' undeclared (first use in this function) *(void **)param = $1; ^~~~~ asn1p_y.y:357:13: note: each undeclared identifier is reported only once for each function it appears in Makefile:299: recipe for target 'asn1p_y.lo' failed make[2]: *** [asn1p_y.lo] Error 1 make[2]: *** Waiting for unfinished jobs.... make[2]: Leaving directory ' Makefile:302: recipe for target 'all-recursive' failed make[1]: *** [all-recursive] Error 1 make[1]: Leaving directory ' Makefile:212: recipe for target 'all' failed make: *** [all] Error 2 Build step 'Execute shell' marked build as failure [WARNINGS] Skipping publisher since build result is FAILURE From gerrit-no-reply at lists.osmocom.org Sun Apr 22 16:17:48 2018 From: gerrit-no-reply at lists.osmocom.org (Alexander Chemeris) Date: Sun, 22 Apr 2018 16:17:48 +0000 Subject: osmo-trx[master]: doc: examples: Add umtrx sample config In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+1 Looks good to me. -- To view, visit https://gerrit.osmocom.org/7890 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Id38de0bbbe75e5e6bbb0de2eecb7d1984786d528 Gerrit-PatchSet: 1 Gerrit-Project: osmo-trx Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Alexander Chemeris Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Pau Espin Pedrol Gerrit-Reviewer: ttsou Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Sun Apr 22 16:38:02 2018 From: gerrit-no-reply at lists.osmocom.org (Vadim Yanitskiy) Date: Sun, 22 Apr 2018 16:38:02 +0000 Subject: osmo-trx[master]: doc: examples: Add umtrx sample config In-Reply-To: References: Message-ID: Patch Set 1: (1 comment) https://gerrit.osmocom.org/#/c/7890/1/doc/examples/osmo-trx-umtrx.cfg File doc/examples/osmo-trx-umtrx.cfg: Line 22: chan 1 > Yes, you can then set per-channel specific attributes by adding lines under Well, this way let's have the following: chan 0 tx-path TX1 rx-path RX1 chan 1 tx-path TX2 rx-path RX2 -- To view, visit https://gerrit.osmocom.org/7890 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Id38de0bbbe75e5e6bbb0de2eecb7d1984786d528 Gerrit-PatchSet: 1 Gerrit-Project: osmo-trx Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Alexander Chemeris Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Pau Espin Pedrol Gerrit-Reviewer: Vadim Yanitskiy Gerrit-Reviewer: ttsou Gerrit-HasComments: Yes From gerrit-no-reply at lists.osmocom.org Sun Apr 22 17:54:29 2018 From: gerrit-no-reply at lists.osmocom.org (Alexander Chemeris) Date: Sun, 22 Apr 2018 17:54:29 +0000 Subject: osmo-trx[master]: doc: examples: Add umtrx sample config In-Reply-To: References: Message-ID: Patch Set 1: (1 comment) https://gerrit.osmocom.org/#/c/7890/1/doc/examples/osmo-trx-umtrx.cfg File doc/examples/osmo-trx-umtrx.cfg: Line 22: chan 1 > Well, this way let's have the following: If this enforces an "antenna" (in UHD terms) then you should not do that because (1) it's not correct and (2) antennas are selected correctly by default. -- To view, visit https://gerrit.osmocom.org/7890 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Id38de0bbbe75e5e6bbb0de2eecb7d1984786d528 Gerrit-PatchSet: 1 Gerrit-Project: osmo-trx Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Alexander Chemeris Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Pau Espin Pedrol Gerrit-Reviewer: Vadim Yanitskiy Gerrit-Reviewer: ttsou Gerrit-HasComments: Yes From jenkins at lists.osmocom.org Sun Apr 22 22:41:20 2018 From: jenkins at lists.osmocom.org (jenkins at lists.osmocom.org) Date: Sun, 22 Apr 2018 22:41:20 +0000 (UTC) Subject: =?UTF-8?Q?Build_failed_in_Jenkins:_master-rtl-sdr_=C2=BB_a1=3Ddefau?= =?UTF-8?Q?lt,a2=3Ddefault,a3=3Ddefault,osmocom-master-debian9_#7?= In-Reply-To: <853560149.3.1524350480224.JavaMail.jenkins@jenkins.osmocom.org> References: <853560149.3.1524350480224.JavaMail.jenkins@jenkins.osmocom.org> Message-ID: <116221666.10.1524436880538.JavaMail.jenkins@jenkins.osmocom.org> See ------------------------------------------ [...truncated 93.24 KB...] make[2]: Entering directory ' make[2]: Nothing to be done for 'dvi'. make[2]: Leaving directory ' Making dvi in src make[2]: Entering directory ' make[2]: Nothing to be done for 'dvi'. make[2]: Leaving directory ' make[2]: Entering directory ' make[2]: Nothing to be done for 'dvi-am'. make[2]: Leaving directory ' make[1]: Leaving directory ' make[1]: Entering directory ' make check-recursive make[2]: Entering directory ' Making check in include make[3]: Entering directory ' make[3]: Nothing to be done for 'check'. make[3]: Leaving directory ' Making check in src make[3]: Entering directory ' make[3]: Nothing to be done for 'check'. make[3]: Leaving directory ' make[3]: Entering directory ' make[3]: Leaving directory ' make[2]: Leaving directory ' make[1]: Leaving directory ' make[1]: Entering directory ' make install-recursive make[2]: Entering directory ' Making install in include make[3]: Entering directory ' make[4]: Entering directory ' make[4]: Nothing to be done for 'install-exec-am'. /bin/mkdir -p ' /usr/bin/install -c -m 644 ../../../include/rtl-sdr.h ../../../include/rtl-sdr_export.h ' make[4]: Leaving directory ' make[3]: Leaving directory ' Making install in src make[3]: Entering directory ' make[4]: Entering directory ' /bin/mkdir -p ' /bin/bash ../libtool --mode=install /usr/bin/install -c librtlsdr.la ' libtool: install: /usr/bin/install -c .libs/librtlsdr.so.0.0.5 libtool: install: (cd && { ln -s -f librtlsdr.so.0.0.5 librtlsdr.so.0 || { rm -f librtlsdr.so.0 && ln -s librtlsdr.so.0.0.5 librtlsdr.so.0; }; }) libtool: install: (cd && { ln -s -f librtlsdr.so.0.0.5 librtlsdr.so || { rm -f librtlsdr.so && ln -s librtlsdr.so.0.0.5 librtlsdr.so; }; }) libtool: install: /usr/bin/install -c .libs/librtlsdr.lai libtool: install: /usr/bin/install -c .libs/librtlsdr.a libtool: install: chmod 644 libtool: install: ranlib libtool: finish: PATH="/usr/local/bin:/usr/bin:/bin:/usr/games:/home/osmocom-build/bin:/sbin" ldconfig -n ---------------------------------------------------------------------- Libraries have been installed in: If you ever happen to want to link against installed libraries in a given directory, LIBDIR, you must either use libtool, and specify the full pathname of the library, or use the '-LLIBDIR' flag during linking and do at least one of the following: - add LIBDIR to the 'LD_LIBRARY_PATH' environment variable during execution - add LIBDIR to the 'LD_RUN_PATH' environment variable during linking - use the '-Wl,-rpath -Wl,LIBDIR' linker flag - have your system administrator add LIBDIR to '/etc/ld.so.conf' See any operating system documentation about shared libraries for more information, such as the ld(1) and ld.so(8) manual pages. ---------------------------------------------------------------------- /bin/mkdir -p ' /bin/bash ../libtool --mode=install /usr/bin/install -c rtl_sdr rtl_tcp rtl_test rtl_fm rtl_eeprom rtl_adsb rtl_power ' libtool: install: /usr/bin/install -c .libs/rtl_sdr libtool: install: /usr/bin/install -c .libs/rtl_tcp libtool: install: /usr/bin/install -c .libs/rtl_test libtool: install: /usr/bin/install -c .libs/rtl_fm libtool: install: /usr/bin/install -c .libs/rtl_eeprom libtool: install: /usr/bin/install -c .libs/rtl_adsb libtool: install: /usr/bin/install -c .libs/rtl_power make[4]: Nothing to be done for 'install-data-am'. make[4]: Leaving directory ' make[3]: Leaving directory ' make[3]: Entering directory ' make[4]: Entering directory ' make[4]: Nothing to be done for 'install-exec-am'. /bin/mkdir -p ' /usr/bin/install -c -m 644 ./doc/html.tar ' /bin/mkdir -p ' /usr/bin/install -c -m 644 librtlsdr.pc ' make install-data-hook make[5]: Entering directory ' cd && tar xf html.tar --strip-components 1 && rm -f html.tar make[5]: Leaving directory ' make[4]: Leaving directory ' make[3]: Leaving directory ' make[2]: Leaving directory ' make[1]: Leaving directory ' make[1]: Entering directory ' Making installcheck in include make[2]: Entering directory ' make[2]: Nothing to be done for 'installcheck'. make[2]: Leaving directory ' Making installcheck in src make[2]: Entering directory ' make[2]: Nothing to be done for 'installcheck'. make[2]: Leaving directory ' make[2]: Entering directory ' make[2]: Nothing to be done for 'installcheck-am'. make[2]: Leaving directory ' make[1]: Leaving directory ' make[1]: Entering directory ' Making uninstall in include make[2]: Entering directory ' ( cd ' && rm -f rtl-sdr.h rtl-sdr_export.h ) make[2]: Leaving directory ' Making uninstall in src make[2]: Entering directory ' ( cd ' && rm -f rtl_sdr rtl_tcp rtl_test rtl_fm rtl_eeprom rtl_adsb rtl_power ) /bin/bash ../libtool --mode=uninstall rm -f ' libtool: uninstall: rm -f make[2]: Leaving directory ' make[2]: Entering directory ' ( cd ' && rm -f html.tar ) ( cd ' && rm -f librtlsdr.pc ) make uninstall-hook make[3]: Entering directory ' cd && rm -rf make[3]: Leaving directory ' make[2]: Leaving directory ' make[1]: Leaving directory ' make[1]: Entering directory ' make[1]: Leaving directory ' make[1]: Entering directory ' make install-recursive make[2]: Entering directory ' Making install in include make[3]: Entering directory ' make[4]: Entering directory ' make[4]: Nothing to be done for 'install-exec-am'. /bin/mkdir -p '/tmp/am-dc-5588/ /usr/bin/install -c -m 644 ../../../include/rtl-sdr.h ../../../include/rtl-sdr_export.h '/tmp/am-dc-5588/ make[4]: Leaving directory ' make[3]: Leaving directory ' Making install in src make[3]: Entering directory ' make[4]: Entering directory ' /bin/mkdir -p '/tmp/am-dc-5588/ /bin/bash ../libtool --mode=install /usr/bin/install -c librtlsdr.la '/tmp/am-dc-5588/ libtool: install: /usr/bin/install -c .libs/librtlsdr.so.0.0.5 /tmp/am-dc-5588/ libtool: install: (cd /tmp/am-dc-5588/ && { ln -s -f librtlsdr.so.0.0.5 librtlsdr.so.0 || { rm -f librtlsdr.so.0 && ln -s librtlsdr.so.0.0.5 librtlsdr.so.0; }; }) libtool: install: (cd /tmp/am-dc-5588/ && { ln -s -f librtlsdr.so.0.0.5 librtlsdr.so || { rm -f librtlsdr.so && ln -s librtlsdr.so.0.0.5 librtlsdr.so; }; }) libtool: install: /usr/bin/install -c .libs/librtlsdr.lai /tmp/am-dc-5588/ libtool: install: /usr/bin/install -c .libs/librtlsdr.a /tmp/am-dc-5588/ libtool: install: chmod 644 /tmp/am-dc-5588/ libtool: install: ranlib /tmp/am-dc-5588/ libtool: warning: remember to run 'libtool --finish /bin/mkdir -p '/tmp/am-dc-5588/ /bin/bash ../libtool --mode=install /usr/bin/install -c rtl_sdr rtl_tcp rtl_test rtl_fm rtl_eeprom rtl_adsb rtl_power '/tmp/am-dc-5588/ libtool: warning: 'librtlsdr.la' has not been installed in ' libtool: install: /usr/bin/install -c .libs/rtl_sdr /tmp/am-dc-5588/ libtool: warning: 'librtlsdr.la' has not been installed in ' libtool: install: /usr/bin/install -c .libs/rtl_tcp /tmp/am-dc-5588/ libtool: warning: 'librtlsdr.la' has not been installed in ' libtool: install: /usr/bin/install -c .libs/rtl_test /tmp/am-dc-5588/ libtool: warning: 'librtlsdr.la' has not been installed in ' libtool: install: /usr/bin/install -c .libs/rtl_fm /tmp/am-dc-5588/ libtool: warning: 'librtlsdr.la' has not been installed in ' libtool: install: /usr/bin/install -c .libs/rtl_eeprom /tmp/am-dc-5588/ libtool: warning: 'librtlsdr.la' has not been installed in ' libtool: install: /usr/bin/install -c .libs/rtl_adsb /tmp/am-dc-5588/ libtool: warning: 'librtlsdr.la' has not been installed in ' libtool: install: /usr/bin/install -c .libs/rtl_power /tmp/am-dc-5588/ make[4]: Nothing to be done for 'install-data-am'. make[4]: Leaving directory ' make[3]: Leaving directory ' make[3]: Entering directory ' make[4]: Entering directory ' make[4]: Nothing to be done for 'install-exec-am'. /bin/mkdir -p '/tmp/am-dc-5588/ /usr/bin/install -c -m 644 ./doc/html.tar '/tmp/am-dc-5588/ /bin/mkdir -p '/tmp/am-dc-5588/ /usr/bin/install -c -m 644 librtlsdr.pc '/tmp/am-dc-5588/ make install-data-hook make[5]: Entering directory ' cd /tmp/am-dc-5588/ && tar xf html.tar --strip-components 1 && rm -f html.tar make[5]: Leaving directory ' make[4]: Leaving directory ' make[3]: Leaving directory ' make[2]: Leaving directory ' make[1]: Leaving directory ' make[1]: Entering directory ' Making uninstall in include make[2]: Entering directory ' ( cd '/tmp/am-dc-5588/ && rm -f rtl-sdr.h rtl-sdr_export.h ) make[2]: Leaving directory ' Making uninstall in src make[2]: Entering directory ' ( cd '/tmp/am-dc-5588/ && rm -f rtl_sdr rtl_tcp rtl_test rtl_fm rtl_eeprom rtl_adsb rtl_power ) /bin/bash ../libtool --mode=uninstall rm -f '/tmp/am-dc-5588/ libtool: uninstall: rm -f /tmp/am-dc-5588/ /tmp/am-dc-5588/ /tmp/am-dc-5588/ /tmp/am-dc-5588/ /tmp/am-dc-5588/ make[2]: Leaving directory ' make[2]: Entering directory ' ( cd '/tmp/am-dc-5588/ && rm -f html.tar ) ( cd '/tmp/am-dc-5588/ && rm -f librtlsdr.pc ) make uninstall-hook make[3]: Entering directory ' cd /tmp/am-dc-5588/ && rm -rf make[3]: Leaving directory ' make[2]: Leaving directory ' make[1]: Leaving directory ' make[1]: Entering directory ' ERROR: files left after uninstall: (check DESTDIR support) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Makefile:757: recipe for target 'distuninstallcheck' failed make[1]: *** [distuninstallcheck] Error 1 make[1]: Leaving directory ' Makefile:701: recipe for target 'distcheck' failed make: *** [distcheck] Error 1 + cat-testlogs.sh Build step 'Execute shell' marked build as failure [WARNINGS]Skipping publisher since build result is FAILURE From jenkins at lists.osmocom.org Mon Apr 23 08:29:08 2018 From: jenkins at lists.osmocom.org (jenkins at lists.osmocom.org) Date: Mon, 23 Apr 2018 08:29:08 +0000 (UTC) Subject: =?UTF-8?Q?Build_failed_in_Jenkins:_master-osmo-gsm-manuals_=C2=BB_a1=3D?= =?UTF-8?Q?default,a2=3Ddefault,a3=3Ddefault,linux=5Famd64=5Fdebian8_#120?= Message-ID: <1092800157.29.1524472148158.JavaMail.jenkins@jenkins.osmocom.org> See ------------------------------------------ Started by upstream project "master-osmo-gsm-manuals" build number 120 originally caused by: Started by user lynxis Building remotely on host2-deb8build-ansible (linux_amd64_debian8) in workspace [ssh-agent] Looking for ssh-agent implementation... [ssh-agent] Exec ssh-agent (binary ssh-agent on a remote machine) $ ssh-agent SSH_AUTH_SOCK=/tmp/ssh-rp9M0zx7lhtd/agent.22774 SSH_AGENT_PID=22776 [ssh-agent] Started. $ ssh-add Identity added: (rsa w/o comment) [ssh-agent] Using credentials api Cloning the remote Git repository Cloning repository git://git.osmocom.org/osmo-gsm-manuals > git init # timeout=10 Fetching upstream changes from git://git.osmocom.org/osmo-gsm-manuals > git --version # timeout=10 > git fetch --tags --progress git://git.osmocom.org/osmo-gsm-manuals +refs/heads/*:refs/remotes/origin/* > git config remote.origin.url git://git.osmocom.org/osmo-gsm-manuals # timeout=10 > git config --add remote.origin.fetch +refs/heads/*:refs/remotes/origin/* # timeout=10 > git config remote.origin.url git://git.osmocom.org/osmo-gsm-manuals # timeout=10 Fetching upstream changes from git://git.osmocom.org/osmo-gsm-manuals > git fetch --tags --progress git://git.osmocom.org/osmo-gsm-manuals +refs/heads/*:refs/remotes/origin/* Checking out Revision 25df46dda0abe1b85ce27352831528defdfd9210 (refs/remotes/origin/master) > git config core.sparsecheckout # timeout=10 > git checkout -f 25df46dda0abe1b85ce27352831528defdfd9210 Commit message: "jenkins.sh: add hostkey for osmocom.org:48" First time build. Skipping changelog. [linux_amd64_debian8] $ /bin/sh -xe /tmp/jenkins7263292011170643964.sh + ./contrib/jenkins.sh --publish + publish=--publish + base= + deps= + export deps + osmo-clean-workspace.sh + chmod -R +w . + git checkout -f HEAD + git clean -dxf + [ -d ] + [ -d layer1-headers ] + mkdir + cd + osmo-deps.sh libosmocore + project=libosmocore + branch=master + git branch -a + grep -c remotes/origin/master$ + [ x1 != x0 ] + branch=origin/master + test -d libosmocore + git clone git://git.osmocom.org/libosmocore libosmocore Cloning into 'libosmocore'... + cd libosmocore + git fetch --tags origin + git fetch origin + deps= osmo-clean-workspace.sh + chmod -R +w . + git checkout -f HEAD Your branch is up-to-date with 'origin/master'. + git clean -dxf + [ -d ] + [ -d layer1-headers ] + git checkout -f origin/master Note: checking out 'origin/master'. You are in 'detached HEAD' state. You can look around, make experimental changes and commit them, and you can discard any commits you make in this state without impacting any branches by performing another checkout. If you want to create a new branch to retain commits you create, you may do so (now or later) by using -b with the checkout command again. Example: git checkout -b new_branch_name HEAD is now at 542301b... RSL/LAPDm: Not all RLL message are "transparent" + git rev-parse HEAD 542301b0673f77c774c310ec7e2d568a7d515e25 + cd + make -j 4 LIBOSMO_DIR= Binary 'dot' not found in path, please install graphviz. Makefile:84: recipe for target 'check-deps' failed make: *** [check-deps] Error 1 Build step 'Execute shell' marked build as failure $ ssh-agent -k unset SSH_AUTH_SOCK; unset SSH_AGENT_PID; echo Agent pid 22776 killed; [ssh-agent] Stopped. [WARNINGS] Skipping publisher since build result is FAILURE From gerrit-no-reply at lists.osmocom.org Mon Apr 23 08:37:25 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Mon, 23 Apr 2018 08:37:25 +0000 Subject: osmo-gsm-tester[master]: modem: Catch exception: call removed while waiting to become... In-Reply-To: References: Message-ID: Patch Set 2: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7895 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I02b7e76425754372756493761819f18f1e3106c1 Gerrit-PatchSet: 2 Gerrit-Project: osmo-gsm-tester Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Mon Apr 23 08:37:35 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Mon, 23 Apr 2018 08:37:35 +0000 Subject: osmo-trx[master]: doc: examples: Add umtrx sample config In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+1 -- To view, visit https://gerrit.osmocom.org/7890 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Id38de0bbbe75e5e6bbb0de2eecb7d1984786d528 Gerrit-PatchSet: 1 Gerrit-Project: osmo-trx Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Alexander Chemeris Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Pau Espin Pedrol Gerrit-Reviewer: Vadim Yanitskiy Gerrit-Reviewer: ttsou Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Mon Apr 23 08:37:50 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Mon, 23 Apr 2018 08:37:50 +0000 Subject: libosmocore[master]: gsm_08_58.h: Add Ericsson vendor-specific RSL message types In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7893 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I7cb65f3ff1cfdbe4eee97b7545bcd13a38c72e25 Gerrit-PatchSet: 1 Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: lynxis lazus Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Mon Apr 23 08:37:53 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Mon, 23 Apr 2018 08:37:53 +0000 Subject: [MERGED] libosmocore[master]: gsm_08_58.h: Add Ericsson vendor-specific RSL message types In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: gsm_08_58.h: Add Ericsson vendor-specific RSL message types ...................................................................... gsm_08_58.h: Add Ericsson vendor-specific RSL message types We are alredy doing the same way for ip.access and siemens ones, and this way we avoid using the hardcoded value in osmo-bsc. Change-Id: I7cb65f3ff1cfdbe4eee97b7545bcd13a38c72e25 --- M include/osmocom/gsm/protocol/gsm_08_58.h 1 file changed, 5 insertions(+), 0 deletions(-) Approvals: lynxis lazus: Looks good to me, but someone else must approve Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/include/osmocom/gsm/protocol/gsm_08_58.h b/include/osmocom/gsm/protocol/gsm_08_58.h index f0094a3..5e97b0d 100644 --- a/include/osmocom/gsm/protocol/gsm_08_58.h +++ b/include/osmocom/gsm/protocol/gsm_08_58.h @@ -204,6 +204,11 @@ RSL_MT_SIEMENS_MODIF_COND_IND = 0x50, }; +/*! Ericsson vendor-specific RSL message types */ +enum abis_rsl_msgtype_ericsson { + RSL_MT_ERICSSON_IMM_ASS_SENT = 0x10, +}; + /*! RSL Information Element Identifiers (Chapter 9.3) */ enum abis_rsl_ie { RSL_IE_CHAN_NR = 0x01, -- To view, visit https://gerrit.osmocom.org/7893 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: I7cb65f3ff1cfdbe4eee97b7545bcd13a38c72e25 Gerrit-PatchSet: 1 Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: lynxis lazus From gerrit-no-reply at lists.osmocom.org Mon Apr 23 08:38:32 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Mon, 23 Apr 2018 08:38:32 +0000 Subject: libosmocore[master]: gsm_08_58.h: introduce RSL_IE_ERIC_PAGING_GROUP In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7892 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I9194500e307ad69f8da07510bc965a7a5cd82a2a Gerrit-PatchSet: 1 Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Owner: lynxis lazus Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Mon Apr 23 08:38:35 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Mon, 23 Apr 2018 08:38:35 +0000 Subject: [MERGED] libosmocore[master]: gsm_08_58.h: introduce RSL_IE_ERIC_PAGING_GROUP In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: gsm_08_58.h: introduce RSL_IE_ERIC_PAGING_GROUP ...................................................................... gsm_08_58.h: introduce RSL_IE_ERIC_PAGING_GROUP Ericsson supports a RSL command to page and immediate assign as single command. For paging a MS the BTS must know the paging group. Change-Id: I9194500e307ad69f8da07510bc965a7a5cd82a2a --- M include/osmocom/gsm/protocol/gsm_08_58.h 1 file changed, 1 insertion(+), 0 deletions(-) Approvals: Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/include/osmocom/gsm/protocol/gsm_08_58.h b/include/osmocom/gsm/protocol/gsm_08_58.h index 5e97b0d..e5ff464 100644 --- a/include/osmocom/gsm/protocol/gsm_08_58.h +++ b/include/osmocom/gsm/protocol/gsm_08_58.h @@ -304,6 +304,7 @@ /* Ericsson specific IEs, clash with above partially, so they're not * part of the enum */ +#define RSL_IE_ERIC_PAGING_GROUP 0x0e #define RSL_IE_ERIC_INST_NR 0x48 #define RSL_IE_ERIC_PGSL_TIMERS 0x49 #define RSL_IE_ERIC_REPEAT_DL_FACCH 0x4a -- To view, visit https://gerrit.osmocom.org/7892 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: I9194500e307ad69f8da07510bc965a7a5cd82a2a Gerrit-PatchSet: 2 Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Owner: lynxis lazus Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder From gerrit-no-reply at lists.osmocom.org Mon Apr 23 08:39:08 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Mon, 23 Apr 2018 08:39:08 +0000 Subject: osmo-mgw[master]: Revert "stats: use libosmocore rate counter for in/out_strea... In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7891 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I15f3c78f8410d709733ed5692ba94ba17559d7e1 Gerrit-PatchSet: 1 Gerrit-Project: osmo-mgw Gerrit-Branch: master Gerrit-Owner: lynxis lazus Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: dexter Gerrit-Reviewer: lynxis lazus Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Mon Apr 23 08:39:09 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Mon, 23 Apr 2018 08:39:09 +0000 Subject: [MERGED] osmo-mgw[master]: Revert "stats: use libosmocore rate counter for in/out_strea... In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: Revert "stats: use libosmocore rate counter for in/out_stream.err_ts_counter" ...................................................................... Revert "stats: use libosmocore rate counter for in/out_stream.err_ts_counter" This reverts commit 7181cc1f026a0b63a061296aba4e10a9cadaf2c8. The tests are broken on i686, arm (non 64bit systems). Change-Id: I15f3c78f8410d709733ed5692ba94ba17559d7e1 --- M include/osmocom/mgcp/mgcp_internal.h M src/libosmo-mgcp/mgcp_conn.c M src/libosmo-mgcp/mgcp_network.c M src/libosmo-mgcp/mgcp_stat.c M src/libosmo-mgcp/mgcp_vty.c M tests/mgcp/mgcp_test.c 6 files changed, 15 insertions(+), 63 deletions(-) Approvals: Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/include/osmocom/mgcp/mgcp_internal.h b/include/osmocom/mgcp/mgcp_internal.h index ff02768..0da2c56 100644 --- a/include/osmocom/mgcp/mgcp_internal.h +++ b/include/osmocom/mgcp/mgcp_internal.h @@ -28,7 +28,6 @@ #include #include #include -#include #define CI_UNUSED 0 @@ -46,7 +45,7 @@ uint32_t ssrc; uint16_t last_seq; uint32_t last_timestamp; - struct rate_ctr *err_ts_ctr; + uint32_t err_ts_counter; int32_t last_tsdelta; uint32_t last_arrival_time; }; @@ -203,8 +202,6 @@ uint32_t octets; } stats; } osmux; - - struct rate_ctr_group *rate_ctr_group; }; /*! Connection type, specifies which member of the union "u" in mgcp_conn diff --git a/src/libosmo-mgcp/mgcp_conn.c b/src/libosmo-mgcp/mgcp_conn.c index 0055049..998dbc5 100644 --- a/src/libosmo-mgcp/mgcp_conn.c +++ b/src/libosmo-mgcp/mgcp_conn.c @@ -26,27 +26,7 @@ #include #include #include -#include #include - -const static struct rate_ctr_desc rate_ctr_desc[] = { - { - .name = "in_stream_err_ts_ctr", - .description = "inbound rtp-stream timestamp errors", - },{ - .name = "out_stream_err_ts_ctr", - .description = "outbound rtp-stream timestamp errors", - } -}; - -const static struct rate_ctr_group_desc rate_ctr_group_desc = { - .group_name_prefix = "conn_rtp", - .group_description = "rtp connection statistics", - .class_id = 1, - .num_ctr = 2, - .ctr_desc = rate_ctr_desc -}; - /* Allocate a new connection identifier. According to RFC3435, they must * be unique only within the scope of the endpoint. (Caller must provide @@ -107,10 +87,6 @@ static void mgcp_rtp_conn_init(struct mgcp_conn_rtp *conn_rtp, struct mgcp_conn *conn) { struct mgcp_rtp_end *end = &conn_rtp->end; - /* FIXME: Each new rate counter group requires an unique index. At the - * moment we generate this index using this counter, but perhaps there - * is a more concious way to assign the indexes. */ - static unsigned int rate_ctr_index = 0; conn_rtp->type = MGCP_RTP_DEFAULT; conn_rtp->osmux.allocated_cid = -1; @@ -132,15 +108,6 @@ mgcp_rtp_codec_init(&end->codec); mgcp_rtp_codec_init(&end->alt_codec); - - conn_rtp->rate_ctr_group = - rate_ctr_group_alloc(conn, &rate_ctr_group_desc, - rate_ctr_index); - conn_rtp->state.in_stream.err_ts_ctr = - &conn_rtp->rate_ctr_group->ctr[0]; - conn_rtp->state.out_stream.err_ts_ctr = - &conn_rtp->rate_ctr_group->ctr[1]; - rate_ctr_index++; } /* Cleanup rtp connection struct */ @@ -149,7 +116,6 @@ osmux_disable_conn(conn_rtp); osmux_release_cid(conn_rtp); mgcp_free_rtp_port(&conn_rtp->end); - rate_ctr_group_free(conn_rtp->rate_ctr_group); } /*! allocate a new connection list entry. diff --git a/src/libosmo-mgcp/mgcp_network.c b/src/libosmo-mgcp/mgcp_network.c index c56e433..6923b97 100644 --- a/src/libosmo-mgcp/mgcp_network.c +++ b/src/libosmo-mgcp/mgcp_network.c @@ -222,7 +222,7 @@ if (seq == sstate->last_seq) { if (timestamp != sstate->last_timestamp) { - rate_ctr_inc(sstate->err_ts_ctr); + sstate->err_ts_counter += 1; LOGP(DRTP, LOGL_ERROR, "The %s timestamp delta is != 0 but the sequence " "number %d is the same, " @@ -272,7 +272,7 @@ ts_alignment_error(sstate, state->packet_duration, timestamp); if (timestamp_error) { - rate_ctr_inc(sstate->err_ts_ctr); + sstate->err_ts_counter += 1; LOGP(DRTP, LOGL_NOTICE, "The %s timestamp has an alignment error of %d " "on 0x%x SSRC: %u " @@ -505,16 +505,13 @@ mgcp_rtp_annex_count(endp, state, seq, transit, ssrc); if (!state->initialized) { - /* FIXME: Move this initialization to mgcp.conn.c */ state->initialized = 1; state->in_stream.last_seq = seq - 1; state->in_stream.ssrc = state->patch.orig_ssrc = ssrc; state->in_stream.last_tsdelta = 0; state->packet_duration = mgcp_rtp_packet_duration(endp, rtp_end); - state->out_stream.last_seq = seq - 1; - state->out_stream.ssrc = state->patch.orig_ssrc = ssrc; - state->out_stream.last_tsdelta = 0; + state->out_stream = state->in_stream; state->out_stream.last_timestamp = timestamp; state->out_stream.ssrc = ssrc - 1; /* force output SSRC change */ LOGP(DRTP, LOGL_INFO, diff --git a/src/libosmo-mgcp/mgcp_stat.c b/src/libosmo-mgcp/mgcp_stat.c index cc723bb..581130c 100644 --- a/src/libosmo-mgcp/mgcp_stat.c +++ b/src/libosmo-mgcp/mgcp_stat.c @@ -87,9 +87,9 @@ if (conn->conn->endp->cfg->osmux != OSMUX_USAGE_OFF) { /* Error Counter */ nchars = snprintf(str, str_len, - "\r\nX-Osmo-CP: EC TI=%lu, TO=%lu", - conn->state.in_stream.err_ts_ctr->current, - conn->state.out_stream.err_ts_ctr->current); + "\r\nX-Osmo-CP: EC TI=%u, TO=%u", + conn->state.in_stream.err_ts_counter, + conn->state.out_stream.err_ts_counter); if (nchars < 0 || nchars >= str_len) goto truncate; diff --git a/src/libosmo-mgcp/mgcp_vty.c b/src/libosmo-mgcp/mgcp_vty.c index 392a176..14ecd17 100644 --- a/src/libosmo-mgcp/mgcp_vty.c +++ b/src/libosmo-mgcp/mgcp_vty.c @@ -160,16 +160,15 @@ struct mgcp_rtp_codec *codec = &end->codec; vty_out(vty, - " Timestamp Errs: %lu->%lu%s" + " Timestamp Errs: %d->%d%s" " Dropped Packets: %d%s" " Payload Type: %d Rate: %u Channels: %d %s" " Frame Duration: %u Frame Denominator: %u%s" " FPP: %d Packet Duration: %u%s" " FMTP-Extra: %s Audio-Name: %s Sub-Type: %s%s" " Output-Enabled: %d Force-PTIME: %d%s", - state->in_stream.err_ts_ctr->current, - state->out_stream.err_ts_ctr->current, - VTY_NEWLINE, + state->in_stream.err_ts_counter, + state->out_stream.err_ts_counter, VTY_NEWLINE, end->stats.dropped_packets, VTY_NEWLINE, codec->payload_type, codec->rate, codec->channels, VTY_NEWLINE, codec->frame_duration_num, codec->frame_duration_den, diff --git a/tests/mgcp/mgcp_test.c b/tests/mgcp/mgcp_test.c index 0af3799..f6c421a 100644 --- a/tests/mgcp/mgcp_test.c +++ b/tests/mgcp/mgcp_test.c @@ -1133,8 +1133,6 @@ int last_out_ts_err_cnt = 0; struct mgcp_conn_rtp *conn = NULL; struct mgcp_conn *_conn = NULL; - struct rate_ctr test_ctr_in; - struct rate_ctr test_ctr_out; printf("Testing packet error detection%s%s.\n", patch_ssrc ? ", patch SSRC" : "", @@ -1143,11 +1141,6 @@ memset(&trunk, 0, sizeof(trunk)); memset(&endp, 0, sizeof(endp)); memset(&state, 0, sizeof(state)); - - test_ctr_in.current = 0; - test_ctr_out.current = 0; - state.in_stream.err_ts_ctr = &test_ctr_in; - state.out_stream.err_ts_ctr = &test_ctr_out; endp.type = &ep_typeset.rtp; @@ -1193,18 +1186,18 @@ state.in_stream.last_tsdelta, state.in_stream.last_seq); printf("Out TS change: %d, dTS: %d, Seq change: %d, " - "TS Err change: in +%lu, out +%lu\n", + "TS Err change: in %+d, out %+d\n", state.out_stream.last_timestamp - last_timestamp, state.out_stream.last_tsdelta, state.out_stream.last_seq - last_seqno, - state.in_stream.err_ts_ctr->current - last_in_ts_err_cnt, - state.out_stream.err_ts_ctr->current - last_out_ts_err_cnt); + state.in_stream.err_ts_counter - last_in_ts_err_cnt, + state.out_stream.err_ts_counter - last_out_ts_err_cnt); printf("Stats: Jitter = %u, Transit = %d\n", calc_jitter(&state), state.stats.transit); - last_in_ts_err_cnt = state.in_stream.err_ts_ctr->current; - last_out_ts_err_cnt = state.out_stream.err_ts_ctr->current; + last_in_ts_err_cnt = state.in_stream.err_ts_counter; + last_out_ts_err_cnt = state.out_stream.err_ts_counter; last_timestamp = state.out_stream.last_timestamp; last_seqno = state.out_stream.last_seq; } -- To view, visit https://gerrit.osmocom.org/7891 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: I15f3c78f8410d709733ed5692ba94ba17559d7e1 Gerrit-PatchSet: 1 Gerrit-Project: osmo-mgw Gerrit-Branch: master Gerrit-Owner: lynxis lazus Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: dexter Gerrit-Reviewer: lynxis lazus From gerrit-no-reply at lists.osmocom.org Mon Apr 23 08:40:24 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Mon, 23 Apr 2018 08:40:24 +0000 Subject: osmo-bsc[master]: abis_rsl.c: abis_rsl_rx_cchan: Print msg type name for unimp... In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+1 (1 comment) https://gerrit.osmocom.org/#/c/7887/1/src/libbsc/abis_rsl.c File src/libbsc/abis_rsl.c: Line 2076: rsl_msg_name(rslh->c.msg_type), rslh->c.msg_type); I would simply go for the string-name only, as it will be rendered as "unknown 0x%x" anyway for unknown mesage types. -- To view, visit https://gerrit.osmocom.org/7887 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I2e2e40bcb9365420f7e79d8d954505b0d2376bed Gerrit-PatchSet: 1 Gerrit-Project: osmo-bsc Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-HasComments: Yes From gerrit-no-reply at lists.osmocom.org Mon Apr 23 08:40:53 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Mon, 23 Apr 2018 08:40:53 +0000 Subject: libosmocore[master]: gsm0808_test: fix more missing inits (address sanitizer issues) In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7888 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Ie8a1a9b3132024135ca70390eae4d21c907b2edc Gerrit-PatchSet: 1 Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Mon Apr 23 08:40:55 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Mon, 23 Apr 2018 08:40:55 +0000 Subject: [MERGED] libosmocore[master]: gsm0808_test: fix more missing inits (address sanitizer issues) In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: gsm0808_test: fix more missing inits (address sanitizer issues) ...................................................................... gsm0808_test: fix more missing inits (address sanitizer issues) In recent Iaa20c59f624fbdc69a018cabd0f7e9c5a1389519 I fixed one missing init issue and didn't notice the N other similar ones right next to it. Also fix the remaining missing inits. Fixes: ../../../../src/libosmocore/src/gsm/gsm0808_utils.c:187:8: runtime error: load of value 13, which is not a valid value for type '_Bool' ../../../../src/libosmocore/src/gsm/gsm0808_utils.c:191:8: runtime error: load of value 119, which is not a valid value for type '_Bool' Related: OS#3148 Change-Id: Ie8a1a9b3132024135ca70390eae4d21c907b2edc --- M tests/gsm0808/gsm0808_test.c 1 file changed, 52 insertions(+), 59 deletions(-) Approvals: Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/tests/gsm0808/gsm0808_test.c b/tests/gsm0808/gsm0808_test.c index 78238ff..e111fe6 100644 --- a/tests/gsm0808/gsm0808_test.c +++ b/tests/gsm0808/gsm0808_test.c @@ -569,16 +569,15 @@ static void test_gsm0808_enc_dec_speech_codec() { - struct gsm0808_speech_codec enc_sc; - struct gsm0808_speech_codec dec_sc; + struct gsm0808_speech_codec enc_sc = { + .pi = true, + .tf = true, + .type = GSM0808_SCT_FR2, + }; + struct gsm0808_speech_codec dec_sc = {}; struct msgb *msg; uint8_t rc_enc; int rc_dec; - - memset(&enc_sc, 0, sizeof(enc_sc)); - enc_sc.fi = true; - enc_sc.pt = true; - enc_sc.type = GSM0808_SCT_FR2; msg = msgb_alloc(1024, "output buffer"); rc_enc = gsm0808_enc_speech_codec(msg, &enc_sc); @@ -620,16 +619,16 @@ static void test_gsm0808_enc_dec_speech_codec_ext_with_cfg() { - struct gsm0808_speech_codec enc_sc; - struct gsm0808_speech_codec dec_sc; + struct gsm0808_speech_codec enc_sc = { + .pi = true, + .tf = true, + .type = GSM0808_SCT_CSD, + .cfg = 0xc0, + }; + struct gsm0808_speech_codec dec_sc = {}; struct msgb *msg; uint8_t rc_enc; int rc_dec; - - enc_sc.pi = true; - enc_sc.tf = true; - enc_sc.type = GSM0808_SCT_CSD; - enc_sc.cfg = 0xc0; msg = msgb_alloc(1024, "output buffer"); rc_enc = gsm0808_enc_speech_codec(msg, &enc_sc); @@ -645,29 +644,34 @@ static void test_gsm0808_enc_dec_speech_codec_list() { - struct gsm0808_speech_codec_list enc_scl; - struct gsm0808_speech_codec_list dec_scl; + struct gsm0808_speech_codec_list enc_scl = { + .codec = { + { + .pi = true, + .tf = true, + .type = GSM0808_SCT_FR3, + .cfg = 0xcdef, + }, + + { + .fi = true, + .pt = true, + .type = GSM0808_SCT_FR2, + }, + + { + .fi = true, + .tf = true, + .type = GSM0808_SCT_CSD, + .cfg = 0xc0, + }, + }, + .len = 3, + }; + struct gsm0808_speech_codec_list dec_scl = {}; struct msgb *msg; uint8_t rc_enc; int rc_dec; - - memset(&enc_scl, 0, sizeof(enc_scl)); - - enc_scl.codec[0].pi = true; - enc_scl.codec[0].tf = true; - enc_scl.codec[0].type = GSM0808_SCT_FR3; - enc_scl.codec[0].cfg = 0xcdef; - - enc_scl.codec[1].fi = true; - enc_scl.codec[1].pt = true; - enc_scl.codec[1].type = GSM0808_SCT_FR2; - - enc_scl.codec[2].fi = true; - enc_scl.codec[2].tf = true; - enc_scl.codec[2].type = GSM0808_SCT_CSD; - enc_scl.codec[2].cfg = 0xc0; - - enc_scl.len = 3; msg = msgb_alloc(1024, "output buffer"); rc_enc = gsm0808_enc_speech_codec_list(msg, &enc_scl); @@ -683,21 +687,19 @@ static void test_gsm0808_enc_dec_channel_type() { - struct gsm0808_channel_type enc_ct; - struct gsm0808_channel_type dec_ct; + struct gsm0808_channel_type enc_ct = { + .ch_indctr = GSM0808_CHAN_SPEECH, + .ch_rate_type = GSM0808_SPEECH_HALF_PREF, + .perm_spch = { GSM0808_PERM_FR3, GSM0808_PERM_HR3 }, + .perm_spch_len = 2, + }; + struct gsm0808_channel_type dec_ct = {}; struct msgb *msg; uint8_t ct_enc_expected[] = { GSM0808_IE_CHANNEL_TYPE, 0x04, 0x01, 0x0b, 0xa1, 0x25 }; uint8_t rc_enc; int rc_dec; - - memset(&enc_ct, 0, sizeof(enc_ct)); - enc_ct.ch_indctr = GSM0808_CHAN_SPEECH; - enc_ct.ch_rate_type = GSM0808_SPEECH_HALF_PREF; - enc_ct.perm_spch[0] = GSM0808_PERM_FR3; - enc_ct.perm_spch[1] = GSM0808_PERM_HR3; - enc_ct.perm_spch_len = 2; msg = msgb_alloc(1024, "output buffer"); rc_enc = gsm0808_enc_channel_type(msg, &enc_ct); @@ -713,8 +715,13 @@ static void test_gsm0808_enc_dec_encrypt_info() { - struct gsm0808_encrypt_info enc_ei; - struct gsm0808_encrypt_info dec_ei; + struct gsm0808_encrypt_info enc_ei = { + .perm_algo = { GSM0808_ALG_ID_A5_0, GSM0808_ALG_ID_A5_1 }, + .perm_algo_len = 2, + .key = { 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff, 0x23, 0x42, }, + .key_len = 8, + }; + struct gsm0808_encrypt_info dec_ei = {}; struct msgb *msg; uint8_t ei_enc_expected[] = { GSM0808_IE_ENCRYPTION_INFORMATION, 0x09, 0x03, 0xaa, 0xbb, @@ -722,20 +729,6 @@ }; uint8_t rc_enc; int rc_dec; - - memset(&enc_ei, 0, sizeof(enc_ei)); - enc_ei.perm_algo[0] = GSM0808_ALG_ID_A5_0; - enc_ei.perm_algo[1] = GSM0808_ALG_ID_A5_1; - enc_ei.perm_algo_len = 2; - enc_ei.key[0] = 0xaa; - enc_ei.key[1] = 0xbb; - enc_ei.key[2] = 0xcc; - enc_ei.key[3] = 0xdd; - enc_ei.key[4] = 0xee; - enc_ei.key[5] = 0xff; - enc_ei.key[6] = 0x23; - enc_ei.key[7] = 0x42; - enc_ei.key_len = 8; msg = msgb_alloc(1024, "output buffer"); rc_enc = gsm0808_enc_encrypt_info(msg, &enc_ei); -- To view, visit https://gerrit.osmocom.org/7888 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: Ie8a1a9b3132024135ca70390eae4d21c907b2edc Gerrit-PatchSet: 2 Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder From gerrit-no-reply at lists.osmocom.org Mon Apr 23 08:41:06 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Mon, 23 Apr 2018 08:41:06 +0000 Subject: libosmocore[master]: gsm0808_test: silence deprecation: use gsm0808_create_layer3... In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7889 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Ia0afecafa8862ffbe2af3c86e5552673f0935eb0 Gerrit-PatchSet: 1 Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Mon Apr 23 08:42:49 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Mon, 23 Apr 2018 08:42:49 +0000 Subject: osmo-bts[master]: cosmetic: fix typos in src/common/oml.c In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7885 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I6789421497182e957341b01a37a2d9b8d367adf9 Gerrit-PatchSet: 1 Gerrit-Project: osmo-bts Gerrit-Branch: master Gerrit-Owner: Stefan Sperling Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Mon Apr 23 08:43:03 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Mon, 23 Apr 2018 08:43:03 +0000 Subject: [MERGED] osmo-bts[master]: cosmetic: fix typos in src/common/oml.c In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: cosmetic: fix typos in src/common/oml.c ...................................................................... cosmetic: fix typos in src/common/oml.c Change-Id: I6789421497182e957341b01a37a2d9b8d367adf9 Related: OS#2295 --- M src/common/oml.c 1 file changed, 4 insertions(+), 4 deletions(-) Approvals: Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/src/common/oml.c b/src/common/oml.c index 5c9885e..0958220 100644 --- a/src/common/oml.c +++ b/src/common/oml.c @@ -21,7 +21,7 @@ */ /* - * Operation and Maintainance Messages + * Operation and Maintenance Messages */ #include "btsconfig.h" @@ -464,8 +464,8 @@ return oml_mo_send_msg(mo, nmsg, NM_MT_SW_ACTIVATED_REP); } -/* the below defaults correpsond to the libocmocore default of 1s for - * DCCH and 2s for ACCH. The BSC should overried this via OML anyway. */ +/* The defaults below correspond to the libosmocore default of 1s for + * DCCH and 2s for ACCH. The BSC should override this via OML anyway. */ const unsigned int oml_default_t200_ms[7] = { [T200_SDCCH] = 1000, [T200_FACCH_F] = 1000, @@ -652,7 +652,7 @@ case 0x02: /* Based on RXLEV/RXQUAL measurements */ default: LOGP(DOML, LOGL_NOTICE, "Given Conn. Failure Criterion " - "not supported. Please use critetion 0x01 with " + "not supported. Please use criterion 0x01 with " "RADIO_LINK_TIMEOUT value of 4..64\n"); return oml_fom_ack_nack(msg, NM_NACK_PARAM_RANGE); } -- To view, visit https://gerrit.osmocom.org/7885 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: I6789421497182e957341b01a37a2d9b8d367adf9 Gerrit-PatchSet: 1 Gerrit-Project: osmo-bts Gerrit-Branch: master Gerrit-Owner: Stefan Sperling Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder From gerrit-no-reply at lists.osmocom.org Mon Apr 23 08:57:56 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Mon, 23 Apr 2018 08:57:56 +0000 Subject: libosmo-netif[master]: osmux: Add new API osmux_xfrm_output_sched to fix rtp genera... In-Reply-To: References: Message-ID: Patch Set 3: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7869 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I4e05ff141eb4041128ae77812bbcfe84ed4c02de Gerrit-PatchSet: 3 Gerrit-Project: libosmo-netif Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Pablo Neira Ayuso Gerrit-Reviewer: Pau Espin Pedrol Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Mon Apr 23 08:58:23 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Mon, 23 Apr 2018 08:58:23 +0000 Subject: libosmo-netif[master]: tests: Add osmux2 testsuite In-Reply-To: References: Message-ID: Patch Set 4: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7870 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I3bf59276424ea87c4e66a6ff46de1e3e9a06a904 Gerrit-PatchSet: 4 Gerrit-Project: libosmo-netif Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Pablo Neira Ayuso Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Mon Apr 23 08:58:48 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Mon, 23 Apr 2018 08:58:48 +0000 Subject: libosmo-netif[master]: osmux: Set Marker bit on osmux frame loss detected In-Reply-To: References: Message-ID: Patch Set 4: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7871 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I2efed6d726a1b8e77e686c7a5fe1940d3f4901a7 Gerrit-PatchSet: 4 Gerrit-Project: libosmo-netif Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Pablo Neira Ayuso Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Mon Apr 23 08:58:54 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Mon, 23 Apr 2018 08:58:54 +0000 Subject: libosmo-netif[master]: osmux: Move examples and tests to use new output APIs In-Reply-To: References: Message-ID: Patch Set 4: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7876 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Ie69c427308eb7d81aedab7fbb71f1bdaf43f0275 Gerrit-PatchSet: 4 Gerrit-Project: libosmo-netif Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Pablo Neira Ayuso Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Mon Apr 23 08:59:23 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Mon, 23 Apr 2018 08:59:23 +0000 Subject: osmo-bts[master]: return NACK codes instead of errno values from oml_tx_attr_r... In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7884 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I2b1f79e66c778139d64101c89dd6377921807e2d Gerrit-PatchSet: 1 Gerrit-Project: osmo-bts Gerrit-Branch: master Gerrit-Owner: Stefan Sperling Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Mon Apr 23 08:59:43 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Mon, 23 Apr 2018 08:59:43 +0000 Subject: [MERGED] osmo-bts[master]: return NACK codes instead of errno values from oml_tx_attr_r... In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: return NACK codes instead of errno values from oml_tx_attr_resp() ...................................................................... return NACK codes instead of errno values from oml_tx_attr_resp() The caller translates errno values back into NACK codes anyway, so lets's return NACK codes directly. Change-Id: I2b1f79e66c778139d64101c89dd6377921807e2d Related: OS#2295 --- M src/common/oml.c 1 file changed, 8 insertions(+), 14 deletions(-) Approvals: Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/src/common/oml.c b/src/common/oml.c index 0958220..a1e7fda 100644 --- a/src/common/oml.c +++ b/src/common/oml.c @@ -211,7 +211,7 @@ struct msgb *attr_buf = oml_msgb_alloc(); if (!attr_buf) - return -ENOMEM; + return -NM_NACK_CANT_PERFORM; for (i = 0; i < attr_len; i++) { bool processed = false; @@ -244,7 +244,7 @@ struct msgb *attr_buf = oml_msgb_alloc(); if (!attr_buf) - return -ENOMEM; + return -NM_NACK_CANT_PERFORM; for (i = 0; i < attr_len; i++) { switch (attr[i]) { @@ -277,7 +277,7 @@ get_value_string(abis_nm_obj_class_names, foh->obj_class)); if (!nmsg) - return -ENOMEM; + return -NM_NACK_CANT_PERFORM; switch (foh->obj_class) { case NM_OC_BTS: @@ -289,7 +289,7 @@ default: LOGP(DOML, LOGL_ERROR, "Unsupported MO class %s in Get Attribute Response\n", get_value_string(abis_nm_obj_class_names, foh->obj_class)); - len = -EINVAL; + len = -NM_NACK_RES_NOTIMPL; } if (len < 0) { @@ -301,7 +301,8 @@ /* ?9.4.64 Get Attribute Response Info */ msgb_tl16v_put(nmsg, NM_ATT_GET_ARI, len, resp); - return oml_mo_send_msg(&bts->mo, nmsg, NM_MT_GET_ATTR_RESP); + len = oml_mo_send_msg(&bts->mo, nmsg, NM_MT_GET_ATTR_RESP); + return (len < 0) ? -NM_NACK_CANT_PERFORM : len; } /* 8.8.1 sending State Changed Event Report */ @@ -552,15 +553,8 @@ rc = oml_tx_attr_resp(bts, foh, TLVP_VAL(&tp, NM_ATT_LIST_REQ_ATTR), TLVP_LEN(&tp, NM_ATT_LIST_REQ_ATTR)); if (rc < 0) { - LOGP(DOML, LOGL_ERROR, "Failed to respond to O&M Get Attributes message: %s\n", strerror(-rc)); - switch (-rc) { - case ENOMEM: - return oml_fom_ack_nack(msg, NM_NACK_CANT_PERFORM); - case ENOTSUP: - return oml_fom_ack_nack(msg, NM_NACK_OBJCLASS_NOTSUPP); - default: - return oml_fom_ack_nack(msg, NM_NACK_RES_NOTIMPL); - } + LOGP(DOML, LOGL_ERROR, "responding to O&M Get Attributes message with NACK 0%x\n", -rc); + return oml_fom_ack_nack(msg, -rc); } return 0; -- To view, visit https://gerrit.osmocom.org/7884 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: I2b1f79e66c778139d64101c89dd6377921807e2d Gerrit-PatchSet: 2 Gerrit-Project: osmo-bts Gerrit-Branch: master Gerrit-Owner: Stefan Sperling Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder From gerrit-no-reply at lists.osmocom.org Mon Apr 23 09:44:15 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Mon, 23 Apr 2018 09:44:15 +0000 Subject: osmo-gsm-tester[master]: modem: Catch exception: call removed while waiting to become... In-Reply-To: References: Message-ID: Patch Set 2: Verified+1 -- To view, visit https://gerrit.osmocom.org/7895 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I02b7e76425754372756493761819f18f1e3106c1 Gerrit-PatchSet: 2 Gerrit-Project: osmo-gsm-tester Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Pau Espin Pedrol Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Mon Apr 23 09:45:18 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Mon, 23 Apr 2018 09:45:18 +0000 Subject: [MERGED] osmo-gsm-tester[master]: modem: Catch exception: call removed while waiting to become... In-Reply-To: References: Message-ID: Pau Espin Pedrol has submitted this change and it was merged. Change subject: modem: Catch exception: call removed while waiting to become active ...................................................................... modem: Catch exception: call removed while waiting to become active This can happen while in a test we use: wait(ms_mo.call_is_active, mo_cid) And then answer fails for whatever reason, after a timeout ofono will remove the call object: /sierra_2: DBG: 'org.ofono.VoiceCallManager'.CallRemoved() -> /sierra_2/voicecall01 As a result, during next call o call_is_active() will try to get the call object, but it doesn't exist anymore and an exception will be created in method call_state during call to systembus_get(). Change-Id: I02b7e76425754372756493761819f18f1e3106c1 --- M src/osmo_gsm_tester/modem.py 1 file changed, 8 insertions(+), 3 deletions(-) Approvals: Pau Espin Pedrol: Verified Harald Welte: Looks good to me, approved diff --git a/src/osmo_gsm_tester/modem.py b/src/osmo_gsm_tester/modem.py index 2f742ea..59fcc76 100644 --- a/src/osmo_gsm_tester/modem.py +++ b/src/osmo_gsm_tester/modem.py @@ -708,9 +708,14 @@ return self.call_state(call_id) == 'active' def call_state(self, call_id): - call_dbus_obj = systembus_get(call_id) - props = call_dbus_obj.GetProperties() - state = props.get('State') + try: + call_dbus_obj = systembus_get(call_id) + props = call_dbus_obj.GetProperties() + state = props.get('State') + except Exception as e: + self.log('asking call state for non existent call') + log.log_exn() + state = 'disconnected' self.dbg('call state: %s' % state) return state -- To view, visit https://gerrit.osmocom.org/7895 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: I02b7e76425754372756493761819f18f1e3106c1 Gerrit-PatchSet: 2 Gerrit-Project: osmo-gsm-tester Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Pau Espin Pedrol From gerrit-no-reply at lists.osmocom.org Mon Apr 23 09:50:16 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Mon, 23 Apr 2018 09:50:16 +0000 Subject: [MERGED] libosmo-netif[master]: osmux: Set Marker bit on osmux frame loss detected In-Reply-To: References: Message-ID: Pau Espin Pedrol has submitted this change and it was merged. Change subject: osmux: Set Marker bit on osmux frame loss detected ...................................................................... osmux: Set Marker bit on osmux frame loss detected Until this patch, we didn't notify in any way to the RTP reader when an Osmux frame was lost. Instead, we updated the seq×tamp as if there was no lost, and as a result the RTP reader would only see a steady increase of delay every time an osmux frame was lost. As the batch_factor for the lost packet is unknown, we cannot assume any number of amr payloads lost, and thus we cannot simply increment seq and timestamp for a specific amount. Instead, the only viable solution seems to set the M marker bit in the first rtp packet generated after a non-consecutive osmux frame is received. The implementation may act differently with the first generated RTP packet based on the first osmux seq number used for the stream. In case 0 it's used as first osmux seq number, M will be set depending on request from original RTP packet having the M bit set. If it's not 0, the first RTP packer will unconditionally have the M bit. That's not an issue because it's anyway expect for receiver to sync on the first packet. Related: OS#3185 Change-Id: I2efed6d726a1b8e77e686c7a5fe1940d3f4901a7 --- M include/osmocom/netif/osmux.h M src/osmux.c M tests/osmux/osmux_test.c M tests/osmux/osmux_test2.ok 4 files changed, 34 insertions(+), 12 deletions(-) Approvals: Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/include/osmocom/netif/osmux.h b/include/osmocom/netif/osmux.h index e8e2c67..dfed66a 100644 --- a/include/osmocom/netif/osmux.h +++ b/include/osmocom/netif/osmux.h @@ -80,6 +80,7 @@ uint16_t rtp_seq; uint32_t rtp_timestamp; uint32_t rtp_ssrc; + uint8_t osmux_seq_ack; /* Latest received seq num */ struct osmo_timer_list timer; struct llist_head list; void (*tx_cb)(struct msgb *msg, void *data); /* Used defined rtp tx callback */ diff --git a/src/osmux.c b/src/osmux.c index a7339c6..872588d 100644 --- a/src/osmux.c +++ b/src/osmux.c @@ -151,8 +151,14 @@ rtph->timestamp = htonl(h->rtp_timestamp); rtph->sequence = htons(h->rtp_seq); rtph->ssrc = htonl(h->rtp_ssrc); - /* rtp packet with the marker bit is always warranted to be the first one */ - rtph->marker = first_pkt && osmuxh->rtp_m; + /* rtp packet with the marker bit is always guaranteed to be the first + * one. We want to notify with marker in 2 scenarios: + * 1- Sender told us through osmux frame rtp_m. + * 2- Sntermediate osmux frame lost (seq gap), otherwise rtp receiver only sees + * steady increase of delay + */ + rtph->marker = first_pkt && + (osmuxh->rtp_m || (osmuxh->seq != h->osmux_seq_ack + 1)); msgb_put(out_msg, sizeof(struct rtp_hdr)); @@ -218,6 +224,10 @@ #endif llist_add_tail(&msg->list, list); } + + /* Update last seen seq number: */ + h->osmux_seq_ack = osmuxh->seq; + return i; } @@ -291,6 +301,10 @@ llist_add_tail(&msg->list, &h->list); } + + /* Update last seen seq number: */ + h->osmux_seq_ack = osmuxh->seq; + /* In case list is still empty after parsing messages, no need to rearm */ if(was_empty && !llist_empty(&h->list)) osmux_xfrm_output_trigger(h); diff --git a/tests/osmux/osmux_test.c b/tests/osmux/osmux_test.c index 01ce2d1..631ade8 100644 --- a/tests/osmux/osmux_test.c +++ b/tests/osmux/osmux_test.c @@ -152,7 +152,8 @@ memcpy(msg->data, rtp_pkt, sizeof(rtp_pkt)); cpy_rtph = (struct rtp_hdr *) msgb_put(msg, sizeof(rtp_pkt)); - if ((i+j) % 7 == 0) { + /* first condition guarantees that 1st packet per stream contains M bit set. */ + if (i == 0 || (i+j) % 7 == 0) { cpy_rtph->marker = 1; mark_pkts++; } @@ -175,7 +176,7 @@ } if (mark_pkts) { - fprintf(stdout, "RTP M bit (marker) mismatch! %d\n", mark_pkts); + fprintf(stdout, "osmux_test_marker: RTP M bit (marker) mismatch! %d\n", mark_pkts); exit(EXIT_FAILURE); } } @@ -183,6 +184,7 @@ static void osmux_test_loop(int ccid) { struct rtp_hdr *rtph = (struct rtp_hdr *)rtp_pkt; + struct rtp_hdr *cpy_rtph; struct msgb *msg; int i, j, k = 0; char buf[1024]; @@ -194,11 +196,16 @@ exit(EXIT_FAILURE); memcpy(msg->data, rtp_pkt, sizeof(rtp_pkt)); - msgb_put(msg, sizeof(rtp_pkt)); + cpy_rtph = (struct rtp_hdr *) msgb_put(msg, sizeof(rtp_pkt)); seq = ntohs(rtph->sequence); seq++; rtph->sequence = htons(seq); + if (i < 3) { + /* Mark 1 rtp packet of each stream */ + cpy_rtph->marker = 1; + mark_pkts++; + } osmo_rtp_snprintf(buf, sizeof(buf), msg); fprintf(stderr, "adding to ccid=%u %s\n", (i % 2) + ccid, buf); @@ -239,7 +246,7 @@ } if (mark_pkts) { - fprintf(stdout, "RTP M bit (marker) mismatch! %d\n", mark_pkts); + fprintf(stdout, "osmux_test_loop: RTP M bit (marker) mismatch! %d\n", mark_pkts); exit(EXIT_FAILURE); } } diff --git a/tests/osmux/osmux_test2.ok b/tests/osmux/osmux_test2.ok index 1e6f95a..53ab67d 100644 --- a/tests/osmux/osmux_test2.ok +++ b/tests/osmux/osmux_test2.ok @@ -1,6 +1,6 @@ ===test_output_consecutive=== sys={0.000000}, mono={0.000000}: clock_override_set -sys={0.000000}, mono={0.000000}: dequeue: seq=50 ts=500 enqueued=5 +sys={0.000000}, mono={0.000000}: dequeue: seq=50 ts=500 M enqueued=5 sys={0.000000}, mono={0.000000}: first dequed before first select sys={0.020000}, mono={0.020000}: clock_override_add sys={0.020000}, mono={0.020000}: second select, second dequed @@ -32,7 +32,7 @@ sys={0.200000}, mono={0.200000}: calling flush on empty list, should do nothing ===test_output_interleaved=== sys={0.000000}, mono={0.000000}: clock_override_set -sys={0.000000}, mono={0.000000}: dequeue: seq=50 ts=500 enqueued=5 +sys={0.000000}, mono={0.000000}: dequeue: seq=50 ts=500 M enqueued=5 sys={0.040000}, mono={0.040000}: clock_override_add sys={0.040000}, mono={0.040000}: select, 3 dequed, 3 still queued sys={0.040000}, mono={0.040000}: dequeue: seq=51 ts=660 enqueued=4 @@ -51,7 +51,7 @@ sys={0.140000}, mono={0.140000}: dequeue: seq=61 ts=2260 enqueued=0 ===test_output_2together=== sys={0.000000}, mono={0.000000}: clock_override_set -sys={0.000000}, mono={0.000000}: dequeue: seq=50 ts=500 enqueued=5 +sys={0.000000}, mono={0.000000}: dequeue: seq=50 ts=500 M enqueued=5 sys={0.000000}, mono={0.000000}: calling select in between 2 osmux recv sys={0.000000}, mono={0.000000}: calling select after receiving 2nd osmux. Dequeue 1st osmux frame and 1st rtp from 2nd osmux frame. sys={0.000000}, mono={0.000000}: dequeue: seq=51 ts=660 enqueued=10 @@ -70,7 +70,7 @@ ===test_output_frame_lost=== sys={0.000000}, mono={0.000000}: clock_override_set sys={0.000000}, mono={0.000000}: first osmux frame -sys={0.000000}, mono={0.000000}: dequeue: seq=50 ts=500 enqueued=5 +sys={0.000000}, mono={0.000000}: dequeue: seq=50 ts=500 M enqueued=5 sys={0.100000}, mono={0.100000}: clock_override_add sys={0.100000}, mono={0.100000}: dequeue: seq=51 ts=660 enqueued=4 sys={0.100000}, mono={0.100000}: dequeue: seq=52 ts=820 enqueued=3 @@ -80,7 +80,7 @@ sys={0.100000}, mono={0.100000}: one osmux frame is now lost (seq++) sys={0.220000}, mono={0.220000}: clock_override_add sys={0.220000}, mono={0.220000}: 3rd osmux frame arrives -sys={0.220000}, mono={0.220000}: dequeue: seq=56 ts=1460 enqueued=5 +sys={0.220000}, mono={0.220000}: dequeue: seq=56 ts=1460 M enqueued=5 sys={0.320000}, mono={0.320000}: clock_override_add sys={0.320000}, mono={0.320000}: dequeue: seq=57 ts=1620 enqueued=4 sys={0.320000}, mono={0.320000}: dequeue: seq=58 ts=1780 enqueued=3 @@ -90,7 +90,7 @@ ===test_output_flush=== sys={0.000000}, mono={0.000000}: clock_override_set sys={0.000000}, mono={0.000000}: first osmux frame -sys={0.000000}, mono={0.000000}: dequeue: seq=50 ts=500 enqueued=5 +sys={0.000000}, mono={0.000000}: dequeue: seq=50 ts=500 M enqueued=5 sys={0.040000}, mono={0.040000}: clock_override_add sys={0.040000}, mono={0.040000}: dequeue: seq=51 ts=660 enqueued=4 sys={0.040000}, mono={0.040000}: dequeue: seq=52 ts=820 enqueued=3 -- To view, visit https://gerrit.osmocom.org/7871 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: I2efed6d726a1b8e77e686c7a5fe1940d3f4901a7 Gerrit-PatchSet: 4 Gerrit-Project: libosmo-netif Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Pablo Neira Ayuso Gerrit-Reviewer: Pau Espin Pedrol From gerrit-no-reply at lists.osmocom.org Mon Apr 23 09:50:14 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Mon, 23 Apr 2018 09:50:14 +0000 Subject: [MERGED] libosmo-netif[master]: osmux: Move examples and tests to use new output APIs In-Reply-To: References: Message-ID: Pau Espin Pedrol has submitted this change and it was merged. Change subject: osmux: Move examples and tests to use new output APIs ...................................................................... osmux: Move examples and tests to use new output APIs Change-Id: Ie69c427308eb7d81aedab7fbb71f1bdaf43f0275 --- M examples/osmux-test-output.c M tests/jibuf/jibuf_tool.c M tests/osmo-pcap-test/osmux_test.c M tests/osmux/osmux_test.c 4 files changed, 17 insertions(+), 24 deletions(-) Approvals: Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/examples/osmux-test-output.c b/examples/osmux-test-output.c index 9b7c113..0ab03a7 100644 --- a/examples/osmux-test-output.c +++ b/examples/osmux-test-output.c @@ -88,7 +88,6 @@ { struct msgb *msg; struct osmux_hdr *osmuxh; - struct llist_head list; LOGP(DOSMUX_TEST, LOGL_DEBUG, "received message from datagram\n"); @@ -107,10 +106,8 @@ LOGP(DOSMUX_TEST, LOGL_DEBUG, "received OSMUX message (len=%d) %s\n", msg->len, buf); - while((osmuxh = osmux_xfrm_output_pull(msg)) != NULL) { - osmux_xfrm_output(osmuxh, &h_output, &list); - osmux_tx_sched(&list, tx_cb, NULL); - } + while((osmuxh = osmux_xfrm_output_pull(msg)) != NULL) + osmux_xfrm_output_sched(&h_output, osmuxh); return 0; } @@ -120,6 +117,7 @@ LOGP(DOSMUX_TEST, LOGL_NOTICE, "closing OSMUX.\n"); osmo_dgram_close(conn); osmo_dgram_destroy(conn); + osmux_xfrm_output_flush(&h_output); osmo_rtp_handle_free(rtp); amr_close(); exit(EXIT_SUCCESS); @@ -158,7 +156,7 @@ * initialize OSMUX handlers. */ osmux_xfrm_output_init(&h_output, random()); - + osmux_xfrm_output_set_tx_cb(&h_output, tx_cb, NULL); /* * initialize datagram server. */ diff --git a/tests/jibuf/jibuf_tool.c b/tests/jibuf/jibuf_tool.c index 8fa9f2e..bd444a7 100644 --- a/tests/jibuf/jibuf_tool.c +++ b/tests/jibuf/jibuf_tool.c @@ -114,7 +114,6 @@ static struct osmo_pcap osmo_pcap; static bool pcap_finished; static struct osmux_out_handle pcap_osmux_h; -static struct llist_head osmux_list; /* ----------------------------- */ static void sigalarm_handler(int foo) @@ -438,10 +437,8 @@ struct osmux_hdr *osmuxh; /* This code below belongs to the osmux receiver */ - while((osmuxh = osmux_xfrm_output_pull(msg)) != NULL) { - osmux_xfrm_output(osmuxh, &pcap_osmux_h, &osmux_list); - osmux_tx_sched(&osmux_list, glue_cb, NULL); - } + while((osmuxh = osmux_xfrm_output_pull(msg)) != NULL) + osmux_xfrm_output_sched(&pcap_osmux_h, osmuxh); msgb_free(msg); return 0; } @@ -520,8 +517,8 @@ osmo_pcap.timer.cb = pcap_pkt_timer_cb; if(opt_osmux) { - INIT_LLIST_HEAD(&osmux_list); osmux_xfrm_output_init(&pcap_osmux_h, 0); + osmux_xfrm_output_set_tx_cb(&pcap_osmux_h, glue_cb, NULL); } jb = osmo_jibuf_alloc(NULL); @@ -533,8 +530,11 @@ /* first run */ pcap_pkt_timer_cb(NULL); - while(!pcap_finished || !osmo_jibuf_empty(jb)) + while(!pcap_finished || !osmo_jibuf_empty(jb)) { + if (pcap_finished && opt_osmux) /* Flushing once should be enough */ + osmux_xfrm_output_flush(&pcap_osmux_h); osmo_select_main(0); + } osmo_jibuf_delete(jb); diff --git a/tests/osmo-pcap-test/osmux_test.c b/tests/osmo-pcap-test/osmux_test.c index 463b212..7ec78a0 100644 --- a/tests/osmo-pcap-test/osmux_test.c +++ b/tests/osmo-pcap-test/osmux_test.c @@ -52,16 +52,12 @@ static void deliver(struct msgb *batch_msg) { struct osmux_hdr *osmuxh; - struct llist_head list; printf("sending batch (len=%d) [emulated]\n", batch_msg->len); /* This code below belongs to the osmux receiver */ - while((osmuxh = osmux_xfrm_output_pull(batch_msg)) != NULL) { - - osmux_xfrm_output(osmuxh, &h_output, &list); - osmux_tx_sched(&list, tx_cb, NULL); - } + while((osmuxh = osmux_xfrm_output_pull(batch_msg)) != NULL) + osmux_xfrm_output_sched(&h_output, osmuxh); msgb_free(batch_msg); } @@ -194,6 +190,7 @@ osmux_xfrm_input_init(&h_input); osmux_xfrm_output_init(&h_output); + osmux_xfrm_output_set_tx_cb(&h_output, tx_cb, NULL); /* first run */ osmo_pcap_pkt_timer_cb(NULL); diff --git a/tests/osmux/osmux_test.c b/tests/osmux/osmux_test.c index 631ade8..704ccbc 100644 --- a/tests/osmux/osmux_test.c +++ b/tests/osmux/osmux_test.c @@ -103,7 +103,6 @@ static void osmux_deliver(struct msgb *batch_msg, void *data) { struct osmux_hdr *osmuxh; - LLIST_HEAD(list); char buf[2048]; osmux_snprintf(buf, sizeof(buf), batch_msg); @@ -112,10 +111,8 @@ /* For each OSMUX message, extract the RTP messages and put them * in a list. Then, reconstruct transmission timing. */ - while((osmuxh = osmux_xfrm_output_pull(batch_msg)) != NULL) { - osmux_xfrm_output(osmuxh, &h_output, &list); - osmux_tx_sched(&list, tx_cb, NULL); - } + while((osmuxh = osmux_xfrm_output_pull(batch_msg)) != NULL) + osmux_xfrm_output_sched(&h_output, osmuxh); msgb_free(batch_msg); } @@ -273,6 +270,7 @@ log_set_log_level(osmo_stderr_target, LOGL_DEBUG); osmux_xfrm_output_init(&h_output, 0x7000000); + osmux_xfrm_output_set_tx_cb(&h_output, tx_cb, NULL); /* If the test takes longer than 10 seconds, abort it */ alarm(10); -- To view, visit https://gerrit.osmocom.org/7876 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: Ie69c427308eb7d81aedab7fbb71f1bdaf43f0275 Gerrit-PatchSet: 4 Gerrit-Project: libosmo-netif Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Pablo Neira Ayuso Gerrit-Reviewer: Pau Espin Pedrol From gerrit-no-reply at lists.osmocom.org Mon Apr 23 09:50:18 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Mon, 23 Apr 2018 09:50:18 +0000 Subject: [MERGED] libosmo-netif[master]: tests: Add osmux2 testsuite In-Reply-To: References: Message-ID: Pau Espin Pedrol has submitted this change and it was merged. Change subject: tests: Add osmux2 testsuite ...................................................................... tests: Add osmux2 testsuite This test is aimed at testing several specific scenarios related to how osmux manages in/out of osmux/rtp packets over time. Change-Id: I3bf59276424ea87c4e66a6ff46de1e3e9a06a904 --- M tests/Makefile.am A tests/osmux/osmux_test2.c A tests/osmux/osmux_test2.ok M tests/testsuite.at 4 files changed, 497 insertions(+), 1 deletion(-) Approvals: Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/tests/Makefile.am b/tests/Makefile.am index a53fdb3..7c06b13 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -1,11 +1,14 @@ AM_CFLAGS = -Wall -I$(top_srcdir)/include $(LIBOSMOCORE_CFLAGS) -g AM_LDFLAGS = $(LIBOSMOCORE_LDFLAGS) -check_PROGRAMS = osmux/osmux_test jibuf/jibuf_test +check_PROGRAMS = osmux/osmux_test osmux/osmux_test2 jibuf/jibuf_test check_HEADERS = osmux_osmux_test_SOURCES = osmux/osmux_test.c osmux_osmux_test_LDADD = $(LIBOSMOCORE_LIBS) $(top_builddir)/src/libosmonetif.la + +osmux_osmux_test2_SOURCES = osmux/osmux_test2.c +osmux_osmux_test2_LDADD = $(LIBOSMOCORE_LIBS) $(top_builddir)/src/libosmonetif.la jibuf_jibuf_test_SOURCES = jibuf/jibuf_test.c jibuf_jibuf_test_LDADD = $(LIBOSMOCORE_LIBS) $(top_builddir)/src/libosmonetif.la @@ -52,6 +55,7 @@ EXTRA_DIST = testsuite.at $(srcdir)/package.m4 $(TESTSUITE) \ osmux/osmux_test.ok \ + osmux/osmux_test2.ok \ jibuf/jibuf_test.ok DISTCLEANFILES = atconfig diff --git a/tests/osmux/osmux_test2.c b/tests/osmux/osmux_test2.c new file mode 100644 index 0000000..ecd9296 --- /dev/null +++ b/tests/osmux/osmux_test2.c @@ -0,0 +1,378 @@ +/* (C) 2017 by sysmocom - s.f.m.c. GmbH + * + * Author: Pau Espin Pedrol + * + * SPDX-License-Identifier: GPL-2.0+ + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include + +static uint8_t osmux_next_seq; + +#define TIME_RTP_PKT_MS 20 +#define BATCH_FACTOR 6 +/* ----------------------------- */ + +/* Logging related stuff */ +#define INT2IDX(x) (-1*(x)-1) +struct log_info_cat jibuf_test_cat[] = { + [INT2IDX(DLMUX)] = { + .name = "DLMUX", + .description = "Osmocom Osmux", + .enabled = 1, .loglevel = LOGL_DEBUG, + }, +}; +const struct log_info log_info = { + .filter_fn = NULL, + .cat = jibuf_test_cat, + .num_cat = ARRAY_SIZE(jibuf_test_cat), +}; +/* ----------------------------- */ + +static void osmux_init(uint8_t seq) +{ + osmux_next_seq = seq; +} + +static struct msgb *osmux_new(uint8_t cid, uint8_t seq, uint8_t batch_factor) +{ + struct msgb *msg; + struct osmux_hdr *osmuxh; + + msg = msgb_alloc(1500, "test"); + if (!msg) + exit(EXIT_FAILURE); + msgb_put(msg, sizeof(struct osmux_hdr)); + + osmuxh = (struct osmux_hdr *)msg->data; + osmuxh->amr_q = 0; + osmuxh->amr_f = 0; + osmuxh->rtp_m = 0; + osmuxh->ctr = batch_factor - 1; + osmuxh->ft = 1; + osmuxh->seq = osmux_next_seq; + osmuxh->circuit_id = cid; + osmuxh->amr_ft = AMR_FT_2; /* 5.90 */ + osmuxh->amr_cmr = 0; + msgb_put(msg, osmo_amr_bytes(osmuxh->amr_ft)*batch_factor); + return msg; +} + +static struct msgb *osmux_next(void) +{ + osmux_next_seq++; + return osmux_new(0, osmux_next_seq, BATCH_FACTOR); +} + +static void sigalarm_handler(int foo) +{ + printf("FAIL: test did not run successfully\n"); + exit(EXIT_FAILURE); +} + + +static void clock_debug(char* str) +{ + struct timespec ts; + struct timeval tv; + osmo_clock_gettime(CLOCK_MONOTONIC, &ts); + osmo_gettimeofday(&tv, NULL); + printf("sys={%lu.%06lu}, mono={%lu.%06lu}: %s\n", + tv.tv_sec, tv.tv_usec, ts.tv_sec, ts.tv_nsec/1000, str); +} + +static void clock_override_enable(bool enable) +{ + osmo_gettimeofday_override = enable; + osmo_clock_override_enable(CLOCK_MONOTONIC, enable); +} + +static void clock_override_set(long sec, long usec) +{ + struct timespec *mono; + osmo_gettimeofday_override_time.tv_sec = sec; + osmo_gettimeofday_override_time.tv_usec = usec; + mono = osmo_clock_override_gettimespec(CLOCK_MONOTONIC); + mono->tv_sec = sec; + mono->tv_nsec = usec*1000; + + clock_debug("clock_override_set"); +} + +static void clock_override_add_debug(long sec, long usec, bool dbg) +{ + osmo_gettimeofday_override_add(sec, usec); + osmo_clock_override_add(CLOCK_MONOTONIC, sec, usec*1000); + if (dbg) + clock_debug("clock_override_add"); +} +#define clock_override_add(sec, usec) clock_override_add_debug(sec, usec, true) + +static void tx_cb(struct msgb *msg, void *data) +{ + struct osmux_out_handle *h_output = (struct osmux_out_handle *) data; + struct rtp_hdr *rtph; + char buf[250]; + rtph = osmo_rtp_get_hdr(msg); + snprintf(buf, sizeof(buf), "dequeue: seq=%"PRIu16" ts=%"PRIu32"%s enqueued=%u", + ntohs(rtph->sequence), ntohl(rtph->timestamp), rtph->marker ? " M" : "", + llist_count(&h_output->list)); + clock_debug(buf); + msgb_free(msg); +} + +#define PULL_NEXT(h_output) { \ + struct msgb *_msg; \ + struct osmux_hdr *_osmuxh; \ + int _rc; \ + _msg = osmux_next(); \ + _osmuxh = osmux_xfrm_output_pull(_msg); \ + OSMO_ASSERT(_osmuxh); \ + _rc = osmux_xfrm_output_sched((h_output), _osmuxh); \ + OSMO_ASSERT(_rc == _osmuxh->ctr+1); \ + } + +static void test_output_consecutive(void) +{ + struct osmux_out_handle h_output; + + printf("===test_output_consecutive===\n"); + + clock_override_enable(true); + clock_override_set(0, 0); + osmux_init(32); + osmux_xfrm_output_init(&h_output, 0x7000000); + h_output.rtp_seq = (uint16_t)50; + h_output.rtp_timestamp = (uint32_t)500; + osmux_xfrm_output_set_tx_cb(&h_output, tx_cb, &h_output); + + /* First osmux frame at t=0 */ + PULL_NEXT(&h_output); + clock_debug("first dequed before first select"); + osmo_select_main(0); + + clock_override_add(0, TIME_RTP_PKT_MS*1000); + clock_debug("second select, second dequed"); + osmo_select_main(0); + + clock_override_add(0, TIME_RTP_PKT_MS*1000); + clock_debug("third select, third dequed"); + osmo_select_main(0); + + clock_override_add(0, TIME_RTP_PKT_MS*1000); + clock_debug("fourth select, fourth dequed"); + osmo_select_main(0); + + clock_override_add(0, TIME_RTP_PKT_MS*1000); + clock_debug("fifth select, fifth dequed"); + osmo_select_main(0); + + clock_override_add(0, TIME_RTP_PKT_MS*1000); + clock_debug("sixth select, sixth dequed"); + osmo_select_main(0); + OSMO_ASSERT(llist_empty(&h_output.list)); + + /* Second osmux frame at t=80 */ + clock_debug("send second osmux frame"); + PULL_NEXT(&h_output); + clock_debug("first dequed before first select"); + osmo_select_main(0); + + clock_override_add(0, TIME_RTP_PKT_MS*1000); + clock_debug("second select, second dequed"); + osmo_select_main(0); + + clock_override_add(0, 4*TIME_RTP_PKT_MS*1000); + clock_debug("third select, four packet should be dequeued"); + osmo_select_main(0); + OSMO_ASSERT(llist_empty(&h_output.list)); + OSMO_ASSERT(!osmo_timer_pending(&h_output.timer)); + + clock_debug("calling flush on empty list, should do nothing"); + osmux_xfrm_output_flush(&h_output); + OSMO_ASSERT(llist_empty(&h_output.list)); + OSMO_ASSERT(!osmo_timer_pending(&h_output.timer)); +} + +static void test_output_interleaved(void) +{ + struct osmux_out_handle h_output; + + printf("===test_output_interleaved===\n"); + + clock_override_enable(true); + clock_override_set(0, 0); + osmux_init(32); + osmux_xfrm_output_init(&h_output, 0x7000000); + h_output.rtp_seq = (uint16_t)50; + h_output.rtp_timestamp = (uint32_t)500; + osmux_xfrm_output_set_tx_cb(&h_output, tx_cb, &h_output); + + /* First osmux frame at t=0, but it actually arrives late due to jitter, + so 2nd frame is going to arrive before the 1st one is completelly + scheduled */ + PULL_NEXT(&h_output); + + clock_override_add(0, 2*TIME_RTP_PKT_MS*1000); + clock_debug("select, 3 dequed, 3 still queued"); + osmo_select_main(0); + + /* Second osmux frame at t=0 */ + clock_debug("next frame arrives, 3 pending rtp packets are dequeued and first of new osmux frame too"); + PULL_NEXT(&h_output); + osmo_select_main(0); + OSMO_ASSERT(llist_count(&h_output.list) == 5); + + clock_override_add(0, 5*TIME_RTP_PKT_MS*1000); + clock_debug("calling select, then all should be out"); + osmo_select_main(0); + + OSMO_ASSERT(llist_empty(&h_output.list)); + OSMO_ASSERT(!osmo_timer_pending(&h_output.timer)); +} + +static void test_output_2together(void) +{ + struct osmux_out_handle h_output; + + printf("===test_output_2together===\n"); + + clock_override_enable(true); + clock_override_set(0, 0); + osmux_init(32); + osmux_xfrm_output_init(&h_output, 0x7000000); + h_output.rtp_seq = (uint16_t)50; + h_output.rtp_timestamp = (uint32_t)500; + osmux_xfrm_output_set_tx_cb(&h_output, tx_cb, &h_output); + + /* First osmux frame at t=0, but it actually arrives late due to jitter, + so we receive both at the same time. */ + PULL_NEXT(&h_output); + clock_debug("calling select in between 2 osmux recv"); + osmo_select_main(0); + PULL_NEXT(&h_output); + + clock_debug("calling select after receiving 2nd osmux. Dequeue 1st osmux frame and 1st rtp from 2nd osmux frame."); + osmo_select_main(0); + OSMO_ASSERT(llist_count(&h_output.list) == 5); + + clock_override_add(0, 5*TIME_RTP_PKT_MS*1000); + clock_debug("select, all 5 remaining should be out"); + osmo_select_main(0); + + OSMO_ASSERT(llist_empty(&h_output.list)); + OSMO_ASSERT(!osmo_timer_pending(&h_output.timer)); +} + +/* FIXME: this test shows generated rtp stream doesn't have osmux lost frames into account! */ +static void test_output_frame_lost(void) +{ + struct osmux_out_handle h_output; + + printf("===test_output_frame_lost===\n"); + + clock_override_enable(true); + clock_override_set(0, 0); + osmux_init(32); + osmux_xfrm_output_init(&h_output, 0x7000000); + h_output.rtp_seq = (uint16_t)50; + h_output.rtp_timestamp = (uint32_t)500; + osmux_xfrm_output_set_tx_cb(&h_output, tx_cb, &h_output); + + clock_debug("first osmux frame"); + PULL_NEXT(&h_output); + clock_override_add(0, 5*TIME_RTP_PKT_MS*1000); + osmo_select_main(0); + + clock_debug("one osmux frame is now lost (seq++)"); + osmux_next(); + clock_override_add(0, 6*TIME_RTP_PKT_MS*1000); + + clock_debug("3rd osmux frame arrives"); + PULL_NEXT(&h_output); + clock_override_add(0, 5*TIME_RTP_PKT_MS*1000); + osmo_select_main(0); + + OSMO_ASSERT(llist_empty(&h_output.list)); + OSMO_ASSERT(!osmo_timer_pending(&h_output.timer)); +} + +static void test_output_flush(void) +{ + struct osmux_out_handle h_output; + + printf("===test_output_flush===\n"); + + clock_override_enable(true); + clock_override_set(0, 0); + osmux_init(32); + osmux_xfrm_output_init(&h_output, 0x7000000); + h_output.rtp_seq = (uint16_t)50; + h_output.rtp_timestamp = (uint32_t)500; + osmux_xfrm_output_set_tx_cb(&h_output, tx_cb, &h_output); + + clock_debug("first osmux frame"); + PULL_NEXT(&h_output); + clock_override_add(0, 2*TIME_RTP_PKT_MS*1000); + osmo_select_main(0); + + clock_debug("2nd osmux frame arrives"); + PULL_NEXT(&h_output); + + clock_debug("flushing, all packet should be transmitted immediately"); + OSMO_ASSERT(llist_count(&h_output.list) == 9); + OSMO_ASSERT(osmo_timer_pending(&h_output.timer)); + osmux_xfrm_output_flush(&h_output); + OSMO_ASSERT(llist_empty(&h_output.list)); + OSMO_ASSERT(!osmo_timer_pending(&h_output.timer)); +} + +int main(int argc, char **argv) +{ + + if (signal(SIGALRM, sigalarm_handler) == SIG_ERR) { + perror("signal"); + exit(EXIT_FAILURE); + } + + void *tall_ctx = talloc_named_const(NULL, 1, "Root context"); + msgb_talloc_ctx_init(tall_ctx, 0); + osmo_init_logging2(tall_ctx, &log_info); + log_set_print_filename(osmo_stderr_target, 0); + log_set_log_level(osmo_stderr_target, LOGL_DEBUG); + log_set_category_filter(osmo_stderr_target, DLMUX, 1, LOGL_DEBUG); + + alarm(10); + + test_output_consecutive(); + test_output_interleaved(); + test_output_2together(); + test_output_frame_lost(); + test_output_flush(); + + fprintf(stdout, "OK: Test passed\n"); + return EXIT_SUCCESS; +} diff --git a/tests/osmux/osmux_test2.ok b/tests/osmux/osmux_test2.ok new file mode 100644 index 0000000..1e6f95a --- /dev/null +++ b/tests/osmux/osmux_test2.ok @@ -0,0 +1,108 @@ +===test_output_consecutive=== +sys={0.000000}, mono={0.000000}: clock_override_set +sys={0.000000}, mono={0.000000}: dequeue: seq=50 ts=500 enqueued=5 +sys={0.000000}, mono={0.000000}: first dequed before first select +sys={0.020000}, mono={0.020000}: clock_override_add +sys={0.020000}, mono={0.020000}: second select, second dequed +sys={0.020000}, mono={0.020000}: dequeue: seq=51 ts=660 enqueued=4 +sys={0.040000}, mono={0.040000}: clock_override_add +sys={0.040000}, mono={0.040000}: third select, third dequed +sys={0.040000}, mono={0.040000}: dequeue: seq=52 ts=820 enqueued=3 +sys={0.060000}, mono={0.060000}: clock_override_add +sys={0.060000}, mono={0.060000}: fourth select, fourth dequed +sys={0.060000}, mono={0.060000}: dequeue: seq=53 ts=980 enqueued=2 +sys={0.080000}, mono={0.080000}: clock_override_add +sys={0.080000}, mono={0.080000}: fifth select, fifth dequed +sys={0.080000}, mono={0.080000}: dequeue: seq=54 ts=1140 enqueued=1 +sys={0.100000}, mono={0.100000}: clock_override_add +sys={0.100000}, mono={0.100000}: sixth select, sixth dequed +sys={0.100000}, mono={0.100000}: dequeue: seq=55 ts=1300 enqueued=0 +sys={0.100000}, mono={0.100000}: send second osmux frame +sys={0.100000}, mono={0.100000}: dequeue: seq=56 ts=1460 enqueued=5 +sys={0.100000}, mono={0.100000}: first dequed before first select +sys={0.120000}, mono={0.120000}: clock_override_add +sys={0.120000}, mono={0.120000}: second select, second dequed +sys={0.120000}, mono={0.120000}: dequeue: seq=57 ts=1620 enqueued=4 +sys={0.200000}, mono={0.200000}: clock_override_add +sys={0.200000}, mono={0.200000}: third select, four packet should be dequeued +sys={0.200000}, mono={0.200000}: dequeue: seq=58 ts=1780 enqueued=3 +sys={0.200000}, mono={0.200000}: dequeue: seq=59 ts=1940 enqueued=2 +sys={0.200000}, mono={0.200000}: dequeue: seq=60 ts=2100 enqueued=1 +sys={0.200000}, mono={0.200000}: dequeue: seq=61 ts=2260 enqueued=0 +sys={0.200000}, mono={0.200000}: calling flush on empty list, should do nothing +===test_output_interleaved=== +sys={0.000000}, mono={0.000000}: clock_override_set +sys={0.000000}, mono={0.000000}: dequeue: seq=50 ts=500 enqueued=5 +sys={0.040000}, mono={0.040000}: clock_override_add +sys={0.040000}, mono={0.040000}: select, 3 dequed, 3 still queued +sys={0.040000}, mono={0.040000}: dequeue: seq=51 ts=660 enqueued=4 +sys={0.040000}, mono={0.040000}: dequeue: seq=52 ts=820 enqueued=3 +sys={0.040000}, mono={0.040000}: next frame arrives, 3 pending rtp packets are dequeued and first of new osmux frame too +sys={0.040000}, mono={0.040000}: dequeue: seq=53 ts=980 enqueued=8 +sys={0.040000}, mono={0.040000}: dequeue: seq=54 ts=1140 enqueued=7 +sys={0.040000}, mono={0.040000}: dequeue: seq=55 ts=1300 enqueued=6 +sys={0.040000}, mono={0.040000}: dequeue: seq=56 ts=1460 enqueued=5 +sys={0.140000}, mono={0.140000}: clock_override_add +sys={0.140000}, mono={0.140000}: calling select, then all should be out +sys={0.140000}, mono={0.140000}: dequeue: seq=57 ts=1620 enqueued=4 +sys={0.140000}, mono={0.140000}: dequeue: seq=58 ts=1780 enqueued=3 +sys={0.140000}, mono={0.140000}: dequeue: seq=59 ts=1940 enqueued=2 +sys={0.140000}, mono={0.140000}: dequeue: seq=60 ts=2100 enqueued=1 +sys={0.140000}, mono={0.140000}: dequeue: seq=61 ts=2260 enqueued=0 +===test_output_2together=== +sys={0.000000}, mono={0.000000}: clock_override_set +sys={0.000000}, mono={0.000000}: dequeue: seq=50 ts=500 enqueued=5 +sys={0.000000}, mono={0.000000}: calling select in between 2 osmux recv +sys={0.000000}, mono={0.000000}: calling select after receiving 2nd osmux. Dequeue 1st osmux frame and 1st rtp from 2nd osmux frame. +sys={0.000000}, mono={0.000000}: dequeue: seq=51 ts=660 enqueued=10 +sys={0.000000}, mono={0.000000}: dequeue: seq=52 ts=820 enqueued=9 +sys={0.000000}, mono={0.000000}: dequeue: seq=53 ts=980 enqueued=8 +sys={0.000000}, mono={0.000000}: dequeue: seq=54 ts=1140 enqueued=7 +sys={0.000000}, mono={0.000000}: dequeue: seq=55 ts=1300 enqueued=6 +sys={0.000000}, mono={0.000000}: dequeue: seq=56 ts=1460 enqueued=5 +sys={0.100000}, mono={0.100000}: clock_override_add +sys={0.100000}, mono={0.100000}: select, all 5 remaining should be out +sys={0.100000}, mono={0.100000}: dequeue: seq=57 ts=1620 enqueued=4 +sys={0.100000}, mono={0.100000}: dequeue: seq=58 ts=1780 enqueued=3 +sys={0.100000}, mono={0.100000}: dequeue: seq=59 ts=1940 enqueued=2 +sys={0.100000}, mono={0.100000}: dequeue: seq=60 ts=2100 enqueued=1 +sys={0.100000}, mono={0.100000}: dequeue: seq=61 ts=2260 enqueued=0 +===test_output_frame_lost=== +sys={0.000000}, mono={0.000000}: clock_override_set +sys={0.000000}, mono={0.000000}: first osmux frame +sys={0.000000}, mono={0.000000}: dequeue: seq=50 ts=500 enqueued=5 +sys={0.100000}, mono={0.100000}: clock_override_add +sys={0.100000}, mono={0.100000}: dequeue: seq=51 ts=660 enqueued=4 +sys={0.100000}, mono={0.100000}: dequeue: seq=52 ts=820 enqueued=3 +sys={0.100000}, mono={0.100000}: dequeue: seq=53 ts=980 enqueued=2 +sys={0.100000}, mono={0.100000}: dequeue: seq=54 ts=1140 enqueued=1 +sys={0.100000}, mono={0.100000}: dequeue: seq=55 ts=1300 enqueued=0 +sys={0.100000}, mono={0.100000}: one osmux frame is now lost (seq++) +sys={0.220000}, mono={0.220000}: clock_override_add +sys={0.220000}, mono={0.220000}: 3rd osmux frame arrives +sys={0.220000}, mono={0.220000}: dequeue: seq=56 ts=1460 enqueued=5 +sys={0.320000}, mono={0.320000}: clock_override_add +sys={0.320000}, mono={0.320000}: dequeue: seq=57 ts=1620 enqueued=4 +sys={0.320000}, mono={0.320000}: dequeue: seq=58 ts=1780 enqueued=3 +sys={0.320000}, mono={0.320000}: dequeue: seq=59 ts=1940 enqueued=2 +sys={0.320000}, mono={0.320000}: dequeue: seq=60 ts=2100 enqueued=1 +sys={0.320000}, mono={0.320000}: dequeue: seq=61 ts=2260 enqueued=0 +===test_output_flush=== +sys={0.000000}, mono={0.000000}: clock_override_set +sys={0.000000}, mono={0.000000}: first osmux frame +sys={0.000000}, mono={0.000000}: dequeue: seq=50 ts=500 enqueued=5 +sys={0.040000}, mono={0.040000}: clock_override_add +sys={0.040000}, mono={0.040000}: dequeue: seq=51 ts=660 enqueued=4 +sys={0.040000}, mono={0.040000}: dequeue: seq=52 ts=820 enqueued=3 +sys={0.040000}, mono={0.040000}: 2nd osmux frame arrives +sys={0.040000}, mono={0.040000}: flushing, all packet should be transmitted immediately +sys={0.040000}, mono={0.040000}: dequeue: seq=53 ts=980 enqueued=8 +sys={0.040000}, mono={0.040000}: dequeue: seq=54 ts=1140 enqueued=7 +sys={0.040000}, mono={0.040000}: dequeue: seq=55 ts=1300 enqueued=6 +sys={0.040000}, mono={0.040000}: dequeue: seq=56 ts=1460 enqueued=5 +sys={0.040000}, mono={0.040000}: dequeue: seq=57 ts=1620 enqueued=4 +sys={0.040000}, mono={0.040000}: dequeue: seq=58 ts=1780 enqueued=3 +sys={0.040000}, mono={0.040000}: dequeue: seq=59 ts=1940 enqueued=2 +sys={0.040000}, mono={0.040000}: dequeue: seq=60 ts=2100 enqueued=1 +sys={0.040000}, mono={0.040000}: dequeue: seq=61 ts=2260 enqueued=0 +OK: Test passed diff --git a/tests/testsuite.at b/tests/testsuite.at index 81d40ba..67b91c6 100644 --- a/tests/testsuite.at +++ b/tests/testsuite.at @@ -7,6 +7,12 @@ AT_CHECK([$abs_top_builddir/tests/osmux/osmux_test], [0], [expout], [ignore]) AT_CLEANUP +AT_SETUP([osmux_test2]) +AT_KEYWORDS([osmux_test2]) +cat $abs_srcdir/osmux/osmux_test2.ok > expout +AT_CHECK([$abs_top_builddir/tests/osmux/osmux_test2], [0], [expout], [ignore]) +AT_CLEANUP + AT_SETUP([jibuf_test]) AT_KEYWORDS([jibuf_test]) cat $abs_srcdir/jibuf/jibuf_test.ok > expout -- To view, visit https://gerrit.osmocom.org/7870 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: I3bf59276424ea87c4e66a6ff46de1e3e9a06a904 Gerrit-PatchSet: 4 Gerrit-Project: libosmo-netif Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Pablo Neira Ayuso Gerrit-Reviewer: Pau Espin Pedrol From gerrit-no-reply at lists.osmocom.org Mon Apr 23 09:50:18 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Mon, 23 Apr 2018 09:50:18 +0000 Subject: [MERGED] libosmo-netif[master]: osmux: Add new API osmux_xfrm_output_sched to fix rtp genera... In-Reply-To: References: Message-ID: Pau Espin Pedrol has submitted this change and it was merged. Change subject: osmux: Add new API osmux_xfrm_output_sched to fix rtp generation issues ...................................................................... osmux: Add new API osmux_xfrm_output_sched to fix rtp generation issues With old implementation, in conditions with jitter we could end up scheduling RTP generated packets from two consecutive osmux frames in an interleaved way (from seq field point of view). This new implementation should make it easier for any RTP reader/playback to have better results in those conditions. Old APIs osmux_xfm_output and osmux_tx_sched are marked as deprecated in favour of the new one, which has a better control of generated RTP packets. However, they are still usable despite the implementation changes done to support the new API. Related: OS#3180 Change-Id: I4e05ff141eb4041128ae77812bbcfe84ed4c02de --- M include/osmocom/netif/osmux.h M src/osmux.c 2 files changed, 141 insertions(+), 3 deletions(-) Approvals: Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/include/osmocom/netif/osmux.h b/include/osmocom/netif/osmux.h index 5283059..e8e2c67 100644 --- a/include/osmocom/netif/osmux.h +++ b/include/osmocom/netif/osmux.h @@ -2,6 +2,7 @@ #define _OSMUX_H_ #include +#include /*! \addtogroup osmux * @{ @@ -79,6 +80,10 @@ uint16_t rtp_seq; uint32_t rtp_timestamp; uint32_t rtp_ssrc; + struct osmo_timer_list timer; + struct llist_head list; + void (*tx_cb)(struct msgb *msg, void *data); /* Used defined rtp tx callback */ + void *data; /* User defined opaque data structure */ }; static inline uint8_t *osmux_get_payload(struct osmux_hdr *osmuxh) @@ -101,10 +106,13 @@ void osmux_xfrm_input_deliver(struct osmux_in_handle *h); void osmux_xfrm_output_init(struct osmux_out_handle *h, uint32_t rtp_ssrc); -int osmux_xfrm_output(struct osmux_hdr *osmuxh, struct osmux_out_handle *h, struct llist_head *list); +void osmux_xfrm_output_set_tx_cb(struct osmux_out_handle *h, void (*tx_cb)(struct msgb *msg, void *data), void *data); +int osmux_xfrm_output(struct osmux_hdr *osmuxh, struct osmux_out_handle *h, struct llist_head *list) OSMO_DEPRECATED("Use osmux_xfrm_output_sched() instead"); +int osmux_xfrm_output_sched(struct osmux_out_handle *h, struct osmux_hdr *osmuxh); +void osmux_xfrm_output_flush(struct osmux_out_handle *h); struct osmux_hdr *osmux_xfrm_output_pull(struct msgb *msg); -void osmux_tx_sched(struct llist_head *list, void (*tx_cb)(struct msgb *msg, void *data), void *data); +void osmux_tx_sched(struct llist_head *list, void (*tx_cb)(struct msgb *msg, void *data), void *data) OSMO_DEPRECATED("Use osmux_xfrm_output_set_tx_cb() instead"); /*! @} */ diff --git a/src/osmux.c b/src/osmux.c index 03db469..a7339c6 100644 --- a/src/osmux.c +++ b/src/osmux.c @@ -16,6 +16,7 @@ #include #include +#include #include #include #include @@ -127,9 +128,11 @@ osmux_rebuild_rtp(struct osmux_out_handle *h, struct osmux_hdr *osmuxh, void *payload, int payload_len, bool first_pkt) { - struct msgb *out_msg; + struct msgb *prev_msg, *out_msg; + struct timespec *prev_ts, *out_ts; struct rtp_hdr *rtph; struct amr_hdr *amrh; + struct timespec delta = { .tv_sec = 0, .tv_nsec = DELTA_RTP_MSG*1000 }; out_msg = msgb_alloc(sizeof(struct rtp_hdr) + sizeof(struct amr_hdr) + @@ -170,6 +173,15 @@ h->rtp_seq++; h->rtp_timestamp += DELTA_RTP_TIMESTAMP; + out_ts = ((struct timespec *)&((out_msg)->cb[0])); + if (first_pkt || llist_empty(&h->list)) { + osmo_clock_gettime(CLOCK_MONOTONIC, out_ts); + } else { + prev_msg = llist_last_entry(&h->list, struct msgb, list); + prev_ts = ((struct timespec *)&((prev_msg)->cb[0])); + timespecadd(prev_ts, &delta, out_ts); + } + return out_msg; } @@ -207,6 +219,106 @@ llist_add_tail(&msg->list, list); } return i; +} + +static void osmux_xfrm_output_trigger(void *data) +{ + struct osmux_out_handle *h = data; + struct timespec delay_ts, now; + struct msgb *msg, *next; + + llist_for_each_entry_safe(msg, next, &h->list, list) { + osmo_clock_gettime(CLOCK_MONOTONIC, &now); + struct timespec *msg_ts = ((struct timespec *)&((msg)->cb[0])); + if (timespeccmp(msg_ts, &now, >)) { + timespecsub(msg_ts, &now, &delay_ts); + osmo_timer_schedule(&h->timer, + delay_ts.tv_sec, delay_ts.tv_nsec / 1000); + return; + } + + /* Transmit the rtp packet */ + llist_del(&msg->list); + if (h->tx_cb) + h->tx_cb(msg, h->data); + else + msgb_free(msg); + } +} + +/*! \brief Generate RTP packets from osmux frame AMR payload set and schedule + * them for transmission at appropiate time. + * \param[in] h the osmux out handle handling a specific CID + * \param[in] osmuxh Buffer pointing to osmux frame header structure and AMR payload + * \return Number of generated RTP packets + * + * The osmux frame passed to this function must be of the type OSMUX_FT_VOICE_AMR. + * The generated RTP packets are kept into h's internal list and sent to the + * callback configured through osmux_xfrm_output_set_tx_cb when are ready to be + * transmitted according to schedule. + */ +int osmux_xfrm_output_sched(struct osmux_out_handle *h, struct osmux_hdr *osmuxh) +{ + struct timespec now, *msg_ts; + struct msgb *msg; + int i; + bool was_empty = llist_empty(&h->list); + + if (!was_empty) { + /* If we received new data it means we are behind schedule and + * we should flush all previous quickly */ + osmo_clock_gettime(CLOCK_MONOTONIC, &now); + llist_for_each_entry(msg, &h->list, list) { + msg_ts = ((struct timespec *)&((msg)->cb[0])); + *msg_ts = now; + } + osmo_timer_schedule(&h->timer, 0, 0); + } + + for (i=0; ictr+1; i++) { + struct rtp_hdr *rtph; + + msg = osmux_rebuild_rtp(h, osmuxh, + osmux_get_payload(osmuxh) + + i * osmo_amr_bytes(osmuxh->amr_ft), + osmo_amr_bytes(osmuxh->amr_ft), !i); + if (msg == NULL) + continue; + + rtph = osmo_rtp_get_hdr(msg); + if (rtph == NULL) + continue; + + llist_add_tail(&msg->list, &h->list); + } + /* In case list is still empty after parsing messages, no need to rearm */ + if(was_empty && !llist_empty(&h->list)) + osmux_xfrm_output_trigger(h); + return i; +} + +/*! \brief Flush all scheduled RTP packets still pending to be transmitted + * \param[in] h the osmux out handle to flush + * + * This function will immediately call the transmit callback for all queued RTP + * packets, making sure the list ends up empty. It will also stop all internal + * timers to make sure the osmux_out_handle can be dropped or re-used by calling + * osmux_xfrm_output on it. + */ +void osmux_xfrm_output_flush(struct osmux_out_handle *h) +{ + struct msgb *msg, *next; + + if (osmo_timer_pending(&h->timer)) + osmo_timer_del(&h->timer); + + llist_for_each_entry_safe(msg, next, &h->list, list) { + llist_del(&msg->list); + if (h->tx_cb) + h->tx_cb(msg, h->data); + else + msgb_free(msg); + } } struct osmux_batch { @@ -746,6 +858,22 @@ LOGP(DLMUX, LOGL_DEBUG, "initialized osmux input converter\n"); } +/*! \brief Set transmission callback to call when a generated RTP packet is to be transmitted + * \param[in] h the osmux out handle handling a specific CID + * \param[in] osmuxh Buffer pointing to osmux frame header structure and AMR payload + * \return Number of generated RTP packets + * + * This Function sets the callback called by the interal timer set by + * osmux_xfrm_out_sched function. + */ +void osmux_xfrm_output_set_tx_cb(struct osmux_out_handle *h, + void (*tx_cb)(struct msgb *msg, void *data), + void *data) +{ + h->tx_cb = tx_cb; + h->data = data; +} + int osmux_xfrm_input_open_circuit(struct osmux_in_handle *h, int ccid, int dummy) { @@ -862,6 +990,8 @@ h->rtp_seq = (uint16_t)random(); h->rtp_timestamp = (uint32_t)random(); h->rtp_ssrc = rtp_ssrc; + INIT_LLIST_HEAD(&h->list); + osmo_timer_setup(&h->timer, osmux_xfrm_output_trigger, h); } #define SNPRINTF_BUFFER_SIZE(ret, remain, offset) \ -- To view, visit https://gerrit.osmocom.org/7869 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: I4e05ff141eb4041128ae77812bbcfe84ed4c02de Gerrit-PatchSet: 3 Gerrit-Project: libosmo-netif Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Pablo Neira Ayuso Gerrit-Reviewer: Pau Espin Pedrol From gerrit-no-reply at lists.osmocom.org Mon Apr 23 09:59:37 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Mon, 23 Apr 2018 09:59:37 +0000 Subject: [PATCH] osmo-bsc[master]: abis_rsl.c: abis_rsl_rx_cchan: Print msg type name for unimp... In-Reply-To: References: Message-ID: Hello Harald Welte, Jenkins Builder, I'd like you to reexamine a change. Please visit https://gerrit.osmocom.org/7887 to look at the new patch set (#2). abis_rsl.c: abis_rsl_rx_cchan: Print msg type name for unimplemented messages received Change-Id: I2e2e40bcb9365420f7e79d8d954505b0d2376bed --- M src/libbsc/abis_rsl.c 1 file changed, 1 insertion(+), 1 deletion(-) git pull ssh://gerrit.osmocom.org:29418/osmo-bsc refs/changes/87/7887/2 diff --git a/src/libbsc/abis_rsl.c b/src/libbsc/abis_rsl.c index 2017d2c..9c30c0f 100644 --- a/src/libbsc/abis_rsl.c +++ b/src/libbsc/abis_rsl.c @@ -2072,7 +2072,7 @@ case RSL_MT_CBCH_LOAD_IND: /* current load on the CBCH */ LOGP(DRSL, LOGL_NOTICE, "Unimplemented Abis RSL TRX message " - "type 0x%02x\n", rslh->c.msg_type); + "type %s\n", rsl_msg_name(rslh->c.msg_type)); break; case 0x10: /* Ericsson specific: Immediate Assign Sent */ /* FIXME: Replace the messy message parsing below -- To view, visit https://gerrit.osmocom.org/7887 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newpatchset Gerrit-Change-Id: I2e2e40bcb9365420f7e79d8d954505b0d2376bed Gerrit-PatchSet: 2 Gerrit-Project: osmo-bsc Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder From jenkins at lists.osmocom.org Mon Apr 23 14:25:00 2018 From: jenkins at lists.osmocom.org (jenkins at lists.osmocom.org) Date: Mon, 23 Apr 2018 14:25:00 +0000 (UTC) Subject: =?UTF-8?Q?Build_failed_in_Jenkins:_master-osmo-gsm-manuals_=C2=BB_a1=3D?= =?UTF-8?Q?default,a2=3Ddefault,a3=3Ddefault,linux=5Famd64=5Fdebian8_#121?= In-Reply-To: <1092800157.29.1524472148158.JavaMail.jenkins@jenkins.osmocom.org> References: <1092800157.29.1524472148158.JavaMail.jenkins@jenkins.osmocom.org> Message-ID: <2030448517.32.1524493500916.JavaMail.jenkins@jenkins.osmocom.org> See ------------------------------------------ Started by upstream project "master-osmo-gsm-manuals" build number 121 originally caused by: Started by timer Building remotely on host2-deb8build-ansible (linux_amd64_debian8) in workspace [ssh-agent] Looking for ssh-agent implementation... [ssh-agent] Exec ssh-agent (binary ssh-agent on a remote machine) $ ssh-agent SSH_AUTH_SOCK=/tmp/ssh-NWthJCGmz3o5/agent.23499 SSH_AGENT_PID=23501 [ssh-agent] Started. $ ssh-add Identity added: (rsa w/o comment) [ssh-agent] Using credentials api > git rev-parse --is-inside-work-tree # timeout=10 Fetching changes from the remote Git repository > git config remote.origin.url git://git.osmocom.org/osmo-gsm-manuals # timeout=10 Fetching upstream changes from git://git.osmocom.org/osmo-gsm-manuals > git --version # timeout=10 > git fetch --tags --progress git://git.osmocom.org/osmo-gsm-manuals +refs/heads/*:refs/remotes/origin/* Checking out Revision 25df46dda0abe1b85ce27352831528defdfd9210 (refs/remotes/origin/master) > git config core.sparsecheckout # timeout=10 > git checkout -f 25df46dda0abe1b85ce27352831528defdfd9210 Commit message: "jenkins.sh: add hostkey for osmocom.org:48" > git rev-list --no-walk 25df46dda0abe1b85ce27352831528defdfd9210 # timeout=10 [linux_amd64_debian8] $ /bin/sh -xe /tmp/jenkins6238269073804702194.sh + ./contrib/jenkins.sh --publish + publish=--publish + base= + deps= + export deps + osmo-clean-workspace.sh + chmod -R +w . + git checkout -f HEAD + git clean -dxf Skipping repository deps/libosmocore + [ -d ] + git_clean + repos= + [ ! -d ] + [ ! -d ] + git -C checkout -f HEAD + git -C clean -dxf + [ -d layer1-headers ] + mkdir mkdir: cannot create directory ?: File exists + true + cd + osmo-deps.sh libosmocore + project=libosmocore + branch=master + git branch -a + grep -c remotes/origin/master$ + [ x1 != x0 ] + branch=origin/master + test -d libosmocore + cd libosmocore + git fetch --tags origin >From git://git.osmocom.org/libosmocore 542301b..9a4286b master -> origin/master + git fetch origin + deps= osmo-clean-workspace.sh + chmod -R +w . + git checkout -f HEAD + git clean -dxf + [ -d ] + [ -d layer1-headers ] + git checkout -f origin/master Previous HEAD position was 542301b... RSL/LAPDm: Not all RLL message are "transparent" HEAD is now at 9a4286b... gsm0808_test: fix more missing inits (address sanitizer issues) + git rev-parse HEAD 9a4286b7098ee54669cc30e05efc0310786c6723 + cd + make -j 4 LIBOSMO_DIR= Binary 'dot' not found in path, please install graphviz. Makefile:84: recipe for target 'check-deps' failed make: *** [check-deps] Error 1 Build step 'Execute shell' marked build as failure $ ssh-agent -k unset SSH_AUTH_SOCK; unset SSH_AGENT_PID; echo Agent pid 23501 killed; [ssh-agent] Stopped. [WARNINGS] Skipping publisher since build result is FAILURE From gerrit-no-reply at lists.osmocom.org Mon Apr 23 14:56:22 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Mon, 23 Apr 2018 14:56:22 +0000 Subject: [PATCH] osmo-bts[master]: gsm_data_shared.h: Remove unused enum gsm_paging_event Message-ID: Review at https://gerrit.osmocom.org/7896 gsm_data_shared.h: Remove unused enum gsm_paging_event Change-Id: I37c026f0e4d5ed6cbedaa237b259742f44c238b9 --- M include/osmo-bts/gsm_data_shared.h 1 file changed, 0 insertions(+), 7 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-bts refs/changes/96/7896/1 diff --git a/include/osmo-bts/gsm_data_shared.h b/include/osmo-bts/gsm_data_shared.h index 37d30ab..812d086 100644 --- a/include/osmo-bts/gsm_data_shared.h +++ b/include/osmo-bts/gsm_data_shared.h @@ -64,13 +64,6 @@ GSM_HOOK_RR_SECURITY, }; -enum gsm_paging_event { - GSM_PAGING_SUCCEEDED, - GSM_PAGING_EXPIRED, - GSM_PAGING_OOM, - GSM_PAGING_BUSY, -}; - enum bts_gprs_mode { BTS_GPRS_NONE = 0, BTS_GPRS_GPRS = 1, -- To view, visit https://gerrit.osmocom.org/7896 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I37c026f0e4d5ed6cbedaa237b259742f44c238b9 Gerrit-PatchSet: 1 Gerrit-Project: osmo-bts Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol From gerrit-no-reply at lists.osmocom.org Mon Apr 23 14:57:15 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Mon, 23 Apr 2018 14:57:15 +0000 Subject: [PATCH] osmo-bsc[master]: gsm_data_shared.h: Remove unused enum gsm_paging_event Message-ID: Review at https://gerrit.osmocom.org/7897 gsm_data_shared.h: Remove unused enum gsm_paging_event Change-Id: I13f30177a4840d68e3d374861fb9c76e9842be2e --- M include/osmocom/bsc/gsm_data.h 1 file changed, 0 insertions(+), 7 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-bsc refs/changes/97/7897/1 diff --git a/include/osmocom/bsc/gsm_data.h b/include/osmocom/bsc/gsm_data.h index 8caedff..f113904 100644 --- a/include/osmocom/bsc/gsm_data.h +++ b/include/osmocom/bsc/gsm_data.h @@ -235,13 +235,6 @@ GSM_HOOK_RR_SECURITY, }; -enum gsm_paging_event { - GSM_PAGING_SUCCEEDED, - GSM_PAGING_EXPIRED, - GSM_PAGING_OOM, - GSM_PAGING_BUSY, -}; - enum bts_gprs_mode { BTS_GPRS_NONE = 0, BTS_GPRS_GPRS = 1, -- To view, visit https://gerrit.osmocom.org/7897 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I13f30177a4840d68e3d374861fb9c76e9842be2e Gerrit-PatchSet: 1 Gerrit-Project: osmo-bsc Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol From jenkins at lists.osmocom.org Mon Apr 23 15:10:06 2018 From: jenkins at lists.osmocom.org (jenkins at lists.osmocom.org) Date: Mon, 23 Apr 2018 15:10:06 +0000 (UTC) Subject: =?UTF-8?Q?Build_failed_in_Jenkins:_master-asn1c_=C2=BB_a1=3Ddefault?= =?UTF-8?Q?,a2=3Ddefault,a3=3Ddefault,osmocom-master-debian9_#101?= In-Reply-To: <988977696.1.1524409806796.JavaMail.jenkins@jenkins.osmocom.org> References: <988977696.1.1524409806796.JavaMail.jenkins@jenkins.osmocom.org> Message-ID: <1073965318.34.1524496206729.JavaMail.jenkins@jenkins.osmocom.org> See ------------------------------------------ [...truncated 3.67 KB...] + ./configure checking build system type... x86_64-unknown-linux-gnu checking host system type... x86_64-unknown-linux-gnu checking target system type... x86_64-unknown-linux-gnu checking for a BSD-compatible install... /usr/bin/install -c checking whether build environment is sane... yes checking for gawk... gawk checking whether make sets $(MAKE)... yes checking whether to enable maintainer-specific portions of Makefiles... no checking for style of include used by make... GNU checking for gcc... gcc checking for C compiler default output file name... a.out checking whether the C compiler works... yes checking whether we are cross compiling... no checking for suffix of executables... checking for suffix of object files... o checking whether we are using the GNU C compiler... yes checking whether gcc accepts -g... yes checking for gcc option to accept ISO C89... none needed checking dependency style of gcc... gcc3 checking for a sed that does not truncate output... /bin/sed checking for grep that handles long lines and -e... /bin/grep checking for egrep... /bin/grep -E checking for ld used by gcc... /usr/bin/ld checking if the linker (/usr/bin/ld) is GNU ld... yes checking for /usr/bin/ld option to reload object files... -r checking for BSD-compatible nm... /usr/bin/nm -B checking whether ln -s works... yes checking how to recognise dependent libraries... pass_all checking how to run the C preprocessor... gcc -E checking for ANSI C header files... yes checking for sys/types.h... yes checking for sys/stat.h... yes checking for stdlib.h... yes checking for string.h... yes checking for memory.h... yes checking for strings.h... yes checking for inttypes.h... yes checking for stdint.h... yes checking for unistd.h... yes checking dlfcn.h usability... yes checking dlfcn.h presence... yes checking for dlfcn.h... yes checking for g++... g++ checking whether we are using the GNU C++ compiler... yes checking whether g++ accepts -g... yes checking dependency style of g++... gcc3 checking how to run the C++ preprocessor... g++ -E checking for g77... no checking for f77... no checking for xlf... no checking for frt... no checking for pgf77... no checking for cf77... no checking for fort77... no checking for fl32... no checking for af77... no checking for f90... no checking for xlf90... no checking for pgf90... no checking for pghpf... no checking for epcf90... no checking for gfortran... no checking for g95... no checking for f95... no checking for fort... no checking for xlf95... no checking for ifort... no checking for ifc... no checking for efc... no checking for pgf95... no checking for lf95... no checking for ftn... no checking whether we are using the GNU Fortran 77 compiler... no checking whether accepts -g... no checking the maximum length of command line arguments... 32768 checking command to parse /usr/bin/nm -B output from gcc object... ok checking for objdir... .libs checking for ar... ar checking for ranlib... ranlib checking for strip... strip checking if gcc supports -fno-rtti -fno-exceptions... no checking for gcc option to produce PIC... -fPIC checking if gcc PIC flag -fPIC works... yes checking if gcc static flag -static works... yes checking if gcc supports -c -o file.o... yes checking whether the gcc linker (/usr/bin/ld -m elf_x86_64) supports shared libraries... yes checking whether -lc should be explicitly linked in... no checking dynamic linker characteristics... GNU/Linux ld.so checking how to hardcode library paths into programs... immediate checking whether stripping libraries is possible... yes checking if libtool supports shared libraries... yes checking whether to build shared libraries... yes checking whether to build static libraries... yes configure: creating libtool appending configuration tag "CXX" to libtool checking for ld used by g++... /usr/bin/ld -m elf_x86_64 checking if the linker (/usr/bin/ld -m elf_x86_64) is GNU ld... yes checking whether the g++ linker (/usr/bin/ld -m elf_x86_64) supports shared libraries... yes checking for g++ option to produce PIC... -fPIC checking if g++ PIC flag -fPIC works... yes checking if g++ static flag -static works... yes checking if g++ supports -c -o file.o... yes checking whether the g++ linker (/usr/bin/ld -m elf_x86_64) supports shared libraries... yes checking dynamic linker characteristics... GNU/Linux ld.so checking how to hardcode library paths into programs... immediate appending configuration tag "F77" to libtool checking for autoconf... /usr/bin/autoconf checking for autoheader... /usr/bin/autoheader checking for gcc... (cached) gcc checking whether we are using the GNU C compiler... (cached) yes checking whether gcc accepts -g... (cached) yes checking for gcc option to accept ISO C89... (cached) none needed checking dependency style of gcc... (cached) gcc3 checking how to run the C preprocessor... gcc -E checking for a BSD-compatible install... /usr/bin/install -c checking whether ln -s works... yes checking whether make sets $(MAKE)... (cached) yes checking for bison... bison -y checking for flex... flex checking for yywrap in -lfl... yes checking lex output file root... lex.yy checking whether yytext is a pointer... yes checking for ar... /usr/bin/ar checking for ANSI C header files... (cached) yes checking sys/param.h usability... yes checking sys/param.h presence... yes checking for sys/param.h... yes checking whether byte ordering is bigendian... no checking for off_t... yes checking for size_t... yes checking whether struct tm is in sys/time.h or time.h... time.h checking for intmax_t... yes checking for library containing getopt... none required checking for strtoimax... yes checking for strtoll... yes checking for mergesort... no checking for mkstemps... yes configure: creating ./config.status config.status: creating skeletons/standard-modules/Makefile config.status: creating skeletons/tests/Makefile config.status: creating libasn1compiler/Makefile config.status: creating libasn1parser/Makefile config.status: creating libasn1print/Makefile config.status: creating asn1c/webcgi/Makefile config.status: creating asn1c/tests/Makefile config.status: creating libasn1fix/Makefile config.status: creating skeletons/Makefile config.status: creating examples/Makefile config.status: creating tests/Makefile config.status: creating asn1c/Makefile config.status: creating doc/Makefile config.status: creating asn1c.spec config.status: creating Makefile config.status: creating config.h config.status: executing depfiles commands + make -j 8 make all-recursive make[1]: Entering directory ' Making all in libasn1parser make[2]: Entering directory ' if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1parser.lo -MD -MP -MF ".deps/asn1parser.Tpo" -c -o asn1parser.lo asn1parser.c; \ then mv -f ".deps/asn1parser.Tpo" ".deps/asn1parser.Plo"; else rm -f ".deps/asn1parser.Tpo"; exit 1; fi bison -y -p asn1p_ -d asn1p_y.y if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_l.lo -MD -MP -MF ".deps/asn1p_l.Tpo" -c -o asn1p_l.lo asn1p_l.c; \ then mv -f ".deps/asn1p_l.Tpo" ".deps/asn1p_l.Plo"; else rm -f ".deps/asn1p_l.Tpo"; exit 1; fi if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_module.lo -MD -MP -MF ".deps/asn1p_module.Tpo" -c -o asn1p_module.lo asn1p_module.c; \ then mv -f ".deps/asn1p_module.Tpo" ".deps/asn1p_module.Plo"; else rm -f ".deps/asn1p_module.Tpo"; exit 1; fi if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_oid.lo -MD -MP -MF ".deps/asn1p_oid.Tpo" -c -o asn1p_oid.lo asn1p_oid.c; \ then mv -f ".deps/asn1p_oid.Tpo" ".deps/asn1p_oid.Plo"; else rm -f ".deps/asn1p_oid.Tpo"; exit 1; fi if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_value.lo -MD -MP -MF ".deps/asn1p_value.Tpo" -c -o asn1p_value.lo asn1p_value.c; \ then mv -f ".deps/asn1p_value.Tpo" ".deps/asn1p_value.Plo"; else rm -f ".deps/asn1p_value.Tpo"; exit 1; fi if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_expr.lo -MD -MP -MF ".deps/asn1p_expr.Tpo" -c -o asn1p_expr.lo asn1p_expr.c; \ then mv -f ".deps/asn1p_expr.Tpo" ".deps/asn1p_expr.Plo"; else rm -f ".deps/asn1p_expr.Tpo"; exit 1; fi if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_xports.lo -MD -MP -MF ".deps/asn1p_xports.Tpo" -c -o asn1p_xports.lo asn1p_xports.c; \ then mv -f ".deps/asn1p_xports.Tpo" ".deps/asn1p_xports.Plo"; else rm -f ".deps/asn1p_xports.Tpo"; exit 1; fi asn1p_y.y: warning: 2 shift/reduce conflicts [-Wconflicts-sr] mkdir .libs gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_l.lo -MD -MP -MF .deps/asn1p_l.Tpo -c asn1p_l.c -fPIC -DPIC -o .libs/asn1p_l.o gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_oid.lo -MD -MP -MF .deps/asn1p_oid.Tpo -c asn1p_oid.c -fPIC -DPIC -o .libs/asn1p_oid.o gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_value.lo -MD -MP -MF .deps/asn1p_value.Tpo -c asn1p_value.c -fPIC -DPIC -o .libs/asn1p_value.o gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_module.lo -MD -MP -MF .deps/asn1p_module.Tpo -c asn1p_module.c -fPIC -DPIC -o .libs/asn1p_module.o gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_expr.lo -MD -MP -MF .deps/asn1p_expr.Tpo -c asn1p_expr.c -fPIC -DPIC -o .libs/asn1p_expr.o gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1parser.lo -MD -MP -MF .deps/asn1parser.Tpo -c asn1parser.c -fPIC -DPIC -o .libs/asn1parser.o gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_xports.lo -MD -MP -MF .deps/asn1p_xports.Tpo -c asn1p_xports.c -fPIC -DPIC -o .libs/asn1p_xports.o asn1p_l.c:3521:12: warning: 'input' defined but not used [-Wunused-function] static int input() ^~~~~ gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_module.lo -MD -MP -MF .deps/asn1p_module.Tpo -c asn1p_module.c -o asn1p_module.o >/dev/null 2>&1 gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_xports.lo -MD -MP -MF .deps/asn1p_xports.Tpo -c asn1p_xports.c -o asn1p_xports.o >/dev/null 2>&1 gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_oid.lo -MD -MP -MF .deps/asn1p_oid.Tpo -c asn1p_oid.c -o asn1p_oid.o >/dev/null 2>&1 gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1parser.lo -MD -MP -MF .deps/asn1parser.Tpo -c asn1parser.c -o asn1parser.o >/dev/null 2>&1 gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_value.lo -MD -MP -MF .deps/asn1p_value.Tpo -c asn1p_value.c -o asn1p_value.o >/dev/null 2>&1 gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_expr.lo -MD -MP -MF .deps/asn1p_expr.Tpo -c asn1p_expr.c -o asn1p_expr.o >/dev/null 2>&1 if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_constr.lo -MD -MP -MF ".deps/asn1p_constr.Tpo" -c -o asn1p_constr.lo asn1p_constr.c; \ then mv -f ".deps/asn1p_constr.Tpo" ".deps/asn1p_constr.Plo"; else rm -f ".deps/asn1p_constr.Tpo"; exit 1; fi if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_param.lo -MD -MP -MF ".deps/asn1p_param.Tpo" -c -o asn1p_param.lo asn1p_param.c; \ then mv -f ".deps/asn1p_param.Tpo" ".deps/asn1p_param.Plo"; else rm -f ".deps/asn1p_param.Tpo"; exit 1; fi if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_class.lo -MD -MP -MF ".deps/asn1p_class.Tpo" -c -o asn1p_class.lo asn1p_class.c; \ then mv -f ".deps/asn1p_class.Tpo" ".deps/asn1p_class.Plo"; else rm -f ".deps/asn1p_class.Tpo"; exit 1; fi if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_ref.lo -MD -MP -MF ".deps/asn1p_ref.Tpo" -c -o asn1p_ref.lo asn1p_ref.c; \ then mv -f ".deps/asn1p_ref.Tpo" ".deps/asn1p_ref.Plo"; else rm -f ".deps/asn1p_ref.Tpo"; exit 1; fi gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_constr.lo -MD -MP -MF .deps/asn1p_constr.Tpo -c asn1p_constr.c -fPIC -DPIC -o .libs/asn1p_constr.o gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_param.lo -MD -MP -MF .deps/asn1p_param.Tpo -c asn1p_param.c -fPIC -DPIC -o .libs/asn1p_param.o gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_class.lo -MD -MP -MF .deps/asn1p_class.Tpo -c asn1p_class.c -fPIC -DPIC -o .libs/asn1p_class.o gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_ref.lo -MD -MP -MF .deps/asn1p_ref.Tpo -c asn1p_ref.c -fPIC -DPIC -o .libs/asn1p_ref.o if test -f y.tab.h; then \ to=`echo "asn1p_y_H" | sed \ -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/' \ -e 's/[^ABCDEFGHIJKLMNOPQRSTUVWXYZ]/_/g'`; \ sed -e "/^#/!b" -e "s/Y_TAB_H/$to/g" -e "s|y\.tab\.h|asn1p_y.h|" \ y.tab.h >asn1p_y.ht; \ rm -f y.tab.h; \ if cmp -s asn1p_y.ht asn1p_y.h; then \ rm -f asn1p_y.ht ;\ else \ mv asn1p_y.ht asn1p_y.h; \ fi; \ fi gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_param.lo -MD -MP -MF .deps/asn1p_param.Tpo -c asn1p_param.c -o asn1p_param.o >/dev/null 2>&1 if test -f y.output; then \ mv y.output asn1p_y.output; \ fi sed '/^#/ s|y\.tab\.c|asn1p_y.c|' y.tab.c >asn1p_y.ct && mv asn1p_y.ct asn1p_y.c gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_constr.lo -MD -MP -MF .deps/asn1p_constr.Tpo -c asn1p_constr.c -o asn1p_constr.o >/dev/null 2>&1 rm -f y.tab.c if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_y.lo -MD -MP -MF ".deps/asn1p_y.Tpo" -c -o asn1p_y.lo asn1p_y.c; \ then mv -f ".deps/asn1p_y.Tpo" ".deps/asn1p_y.Plo"; else rm -f ".deps/asn1p_y.Tpo"; exit 1; fi gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_class.lo -MD -MP -MF .deps/asn1p_class.Tpo -c asn1p_class.c -o asn1p_class.o >/dev/null 2>&1 gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_ref.lo -MD -MP -MF .deps/asn1p_ref.Tpo -c asn1p_ref.c -o asn1p_ref.o >/dev/null 2>&1 gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_y.lo -MD -MP -MF .deps/asn1p_y.Tpo -c asn1p_y.c -fPIC -DPIC -o .libs/asn1p_y.o gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_l.lo -MD -MP -MF .deps/asn1p_l.Tpo -c asn1p_l.c -o asn1p_l.o >/dev/null 2>&1 asn1p_y.y: In function 'asn1p_parse': asn1p_y.y:357:13: error: 'param' undeclared (first use in this function) *(void **)param = $1; ^~~~~ asn1p_y.y:357:13: note: each undeclared identifier is reported only once for each function it appears in Makefile:299: recipe for target 'asn1p_y.lo' failed make[2]: *** [asn1p_y.lo] Error 1 make[2]: *** Waiting for unfinished jobs.... make[2]: Leaving directory ' Makefile:302: recipe for target 'all-recursive' failed make[1]: *** [all-recursive] Error 1 make[1]: Leaving directory ' Makefile:212: recipe for target 'all' failed make: *** [all] Error 2 Build step 'Execute shell' marked build as failure [WARNINGS] Skipping publisher since build result is FAILURE From gerrit-no-reply at lists.osmocom.org Mon Apr 23 19:07:15 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Mon, 23 Apr 2018 19:07:15 +0000 Subject: osmo-bsc[master]: gsm_data_shared.h: Remove unused enum gsm_paging_event In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7897 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I13f30177a4840d68e3d374861fb9c76e9842be2e Gerrit-PatchSet: 1 Gerrit-Project: osmo-bsc Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: neels Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Mon Apr 23 19:07:30 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Mon, 23 Apr 2018 19:07:30 +0000 Subject: osmo-bsc[master]: abis_rsl.c: abis_rsl_rx_cchan: Print msg type name for unimp... In-Reply-To: References: Message-ID: Patch Set 2: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7887 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I2e2e40bcb9365420f7e79d8d954505b0d2376bed Gerrit-PatchSet: 2 Gerrit-Project: osmo-bsc Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Mon Apr 23 19:08:03 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Mon, 23 Apr 2018 19:08:03 +0000 Subject: osmo-bsc[master]: abis_rsl.c: Clean ericsson specific imm assign code In-Reply-To: References: Message-ID: Patch Set 2: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7894 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I845fd3f0c6ff31f268f68a31e1d55981f7ec6129 Gerrit-PatchSet: 2 Gerrit-Project: osmo-bsc Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: lynxis lazus Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Mon Apr 23 19:08:09 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Mon, 23 Apr 2018 19:08:09 +0000 Subject: [MERGED] osmo-bsc[master]: abis_rsl.c: Clean ericsson specific imm assign code In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: abis_rsl.c: Clean ericsson specific imm assign code ...................................................................... abis_rsl.c: Clean ericsson specific imm assign code Move to its own function, store pointer to proper header format and use the already defined IE define from libosmocore instead of using hardcoded values. Depends on: Change-Id I7cb65f3ff1cfdbe4eee97b7545bcd13a38c72e25 Change-Id: I845fd3f0c6ff31f268f68a31e1d55981f7ec6129 --- M src/libbsc/abis_rsl.c 1 file changed, 25 insertions(+), 14 deletions(-) Approvals: Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/src/libbsc/abis_rsl.c b/src/libbsc/abis_rsl.c index 9c30c0f..10bef6e 100644 --- a/src/libbsc/abis_rsl.c +++ b/src/libbsc/abis_rsl.c @@ -2048,12 +2048,34 @@ return 0; } +/* Ericsson specific: Immediate Assign Sent */ +static int rsl_rx_ericsson_imm_assign_sent(struct msgb *msg) +{ + struct e1inp_sign_link *sign_link = msg->dst; + struct abis_rsl_dchan_hdr *dh = msgb_l2(msg); + uint32_t tlli; + + LOGP(DRSL, LOGL_INFO, "IMM.ass sent\n"); + msgb_pull(msg, sizeof(*dh)); + + /* FIXME: Move to TLV once we support defining TV types with V having len != 1 byte */ + if(msg->len < 5) + LOGP(DRSL, LOGL_ERROR, "short IMM.ass sent message!\n"); + else if(msg->data[0] != RSL_IE_ERIC_MOBILE_ID) + LOGP(DRSL, LOGL_ERROR, "unsupported IMM.ass message format! (please fix)\n"); + else { + msgb_pull(msg, 1); /* drop previous data to use msg_pull_u32 */ + tlli = msgb_pull_u32(msg); + pcu_tx_imm_ass_sent(sign_link->trx->bts, tlli); + } + return 0; +} + static int abis_rsl_rx_cchan(struct msgb *msg) { struct e1inp_sign_link *sign_link = msg->dst; struct abis_rsl_dchan_hdr *rslh = msgb_l2(msg); int rc = 0; - uint32_t tlli; msg->lchan = lchan_lookup(sign_link->trx, rslh->chan_nr, "Abis RSL rx CCHAN: "); @@ -2074,19 +2096,8 @@ LOGP(DRSL, LOGL_NOTICE, "Unimplemented Abis RSL TRX message " "type %s\n", rsl_msg_name(rslh->c.msg_type)); break; - case 0x10: /* Ericsson specific: Immediate Assign Sent */ - /* FIXME: Replace the messy message parsing below - * with proper TV parser */ - LOGP(DRSL, LOGL_INFO, "IMM.ass sent\n"); - if(msg->len < 9) - LOGP(DRSL, LOGL_ERROR, "short IMM.ass sent message!\n"); - else if(msg->data[4] != 0xf1) - LOGP(DRSL, LOGL_ERROR, "unsupported IMM.ass message format! (please fix)\n"); - else { - msgb_pull(msg, 5); /* drop previous data to use msg_pull_u32 */ - tlli = msgb_pull_u32(msg); - pcu_tx_imm_ass_sent(sign_link->trx->bts, tlli); - } + case RSL_MT_ERICSSON_IMM_ASS_SENT: + rc = rsl_rx_ericsson_imm_assign_sent(msg); break; default: LOGP(DRSL, LOGL_NOTICE, "Unknown Abis RSL TRX message type " -- To view, visit https://gerrit.osmocom.org/7894 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: I845fd3f0c6ff31f268f68a31e1d55981f7ec6129 Gerrit-PatchSet: 2 Gerrit-Project: osmo-bsc Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: lynxis lazus From gerrit-no-reply at lists.osmocom.org Mon Apr 23 19:08:09 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Mon, 23 Apr 2018 19:08:09 +0000 Subject: [MERGED] osmo-bsc[master]: abis_rsl.c: abis_rsl_rx_cchan: Print msg type name for unimp... In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: abis_rsl.c: abis_rsl_rx_cchan: Print msg type name for unimplemented messages received ...................................................................... abis_rsl.c: abis_rsl_rx_cchan: Print msg type name for unimplemented messages received Change-Id: I2e2e40bcb9365420f7e79d8d954505b0d2376bed --- M src/libbsc/abis_rsl.c 1 file changed, 1 insertion(+), 1 deletion(-) Approvals: Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/src/libbsc/abis_rsl.c b/src/libbsc/abis_rsl.c index 2017d2c..9c30c0f 100644 --- a/src/libbsc/abis_rsl.c +++ b/src/libbsc/abis_rsl.c @@ -2072,7 +2072,7 @@ case RSL_MT_CBCH_LOAD_IND: /* current load on the CBCH */ LOGP(DRSL, LOGL_NOTICE, "Unimplemented Abis RSL TRX message " - "type 0x%02x\n", rslh->c.msg_type); + "type %s\n", rsl_msg_name(rslh->c.msg_type)); break; case 0x10: /* Ericsson specific: Immediate Assign Sent */ /* FIXME: Replace the messy message parsing below -- To view, visit https://gerrit.osmocom.org/7887 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: I2e2e40bcb9365420f7e79d8d954505b0d2376bed Gerrit-PatchSet: 2 Gerrit-Project: osmo-bsc Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder From gerrit-no-reply at lists.osmocom.org Mon Apr 23 19:08:10 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Mon, 23 Apr 2018 19:08:10 +0000 Subject: [MERGED] osmo-bsc[master]: gsm_data_shared.h: Remove unused enum gsm_paging_event In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: gsm_data_shared.h: Remove unused enum gsm_paging_event ...................................................................... gsm_data_shared.h: Remove unused enum gsm_paging_event Change-Id: I13f30177a4840d68e3d374861fb9c76e9842be2e --- M include/osmocom/bsc/gsm_data.h 1 file changed, 0 insertions(+), 7 deletions(-) Approvals: Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/include/osmocom/bsc/gsm_data.h b/include/osmocom/bsc/gsm_data.h index 8caedff..f113904 100644 --- a/include/osmocom/bsc/gsm_data.h +++ b/include/osmocom/bsc/gsm_data.h @@ -235,13 +235,6 @@ GSM_HOOK_RR_SECURITY, }; -enum gsm_paging_event { - GSM_PAGING_SUCCEEDED, - GSM_PAGING_EXPIRED, - GSM_PAGING_OOM, - GSM_PAGING_BUSY, -}; - enum bts_gprs_mode { BTS_GPRS_NONE = 0, BTS_GPRS_GPRS = 1, -- To view, visit https://gerrit.osmocom.org/7897 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: I13f30177a4840d68e3d374861fb9c76e9842be2e Gerrit-PatchSet: 1 Gerrit-Project: osmo-bsc Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: neels From gerrit-no-reply at lists.osmocom.org Mon Apr 23 19:08:17 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Mon, 23 Apr 2018 19:08:17 +0000 Subject: osmo-bts[master]: gsm_data_shared.h: Remove unused enum gsm_paging_event In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7896 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I37c026f0e4d5ed6cbedaa237b259742f44c238b9 Gerrit-PatchSet: 1 Gerrit-Project: osmo-bts Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: neels Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Mon Apr 23 19:08:19 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Mon, 23 Apr 2018 19:08:19 +0000 Subject: [MERGED] osmo-bts[master]: gsm_data_shared.h: Remove unused enum gsm_paging_event In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: gsm_data_shared.h: Remove unused enum gsm_paging_event ...................................................................... gsm_data_shared.h: Remove unused enum gsm_paging_event Change-Id: I37c026f0e4d5ed6cbedaa237b259742f44c238b9 --- M include/osmo-bts/gsm_data_shared.h 1 file changed, 0 insertions(+), 7 deletions(-) Approvals: Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/include/osmo-bts/gsm_data_shared.h b/include/osmo-bts/gsm_data_shared.h index 37d30ab..812d086 100644 --- a/include/osmo-bts/gsm_data_shared.h +++ b/include/osmo-bts/gsm_data_shared.h @@ -64,13 +64,6 @@ GSM_HOOK_RR_SECURITY, }; -enum gsm_paging_event { - GSM_PAGING_SUCCEEDED, - GSM_PAGING_EXPIRED, - GSM_PAGING_OOM, - GSM_PAGING_BUSY, -}; - enum bts_gprs_mode { BTS_GPRS_NONE = 0, BTS_GPRS_GPRS = 1, -- To view, visit https://gerrit.osmocom.org/7896 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: I37c026f0e4d5ed6cbedaa237b259742f44c238b9 Gerrit-PatchSet: 1 Gerrit-Project: osmo-bts Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: neels From gerrit-no-reply at lists.osmocom.org Mon Apr 23 20:12:19 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Mon, 23 Apr 2018 20:12:19 +0000 Subject: docker-playground[master]: bsc + msc: Add missing BSSAP_Configuration.transport field In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 Verified+1 -- To view, visit https://gerrit.osmocom.org/7865 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I2a0011bc6f7bdf013005d1ea36da591673344eed Gerrit-PatchSet: 1 Gerrit-Project: docker-playground Gerrit-Branch: master Gerrit-Owner: Harald Welte Gerrit-Reviewer: Harald Welte Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Mon Apr 23 20:12:21 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Mon, 23 Apr 2018 20:12:21 +0000 Subject: [MERGED] docker-playground[master]: bsc + msc: Add missing BSSAP_Configuration.transport field In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: bsc + msc: Add missing BSSAP_Configuration.transport field ...................................................................... bsc + msc: Add missing BSSAP_Configuration.transport field After merging Change-Id: Ie844c4de62e0ef5d5c4c366185968211a7f6d676 in osmo-ttcn3-hacks, the module parameters for BSSAP configuration require one extra argument. Change-Id: I2a0011bc6f7bdf013005d1ea36da591673344eed Related: OS#2544 --- M ttcn3-bsc-test/BSC_Tests.cfg M ttcn3-msc-test/MSC_Tests.cfg 2 files changed, 3 insertions(+), 0 deletions(-) Approvals: Harald Welte: Looks good to me, approved; Verified diff --git a/ttcn3-bsc-test/BSC_Tests.cfg b/ttcn3-bsc-test/BSC_Tests.cfg index 29cca8c..5f29a27 100644 --- a/ttcn3-bsc-test/BSC_Tests.cfg +++ b/ttcn3-bsc-test/BSC_Tests.cfg @@ -12,6 +12,7 @@ BSC_Tests.mp_bsc_ip := "172.18.2.20"; BSC_Tests.mp_test_ip := "172.18.2.203"; BSC_Tests.mp_bssap_cfg := { + transport := BSSAP_TRANSPORT_AoIP, sccp_service_type := "mtp3_itu", sctp_addr := { 23905, "172.18.2.203", 2905, "172.18.2.200" }, own_pc := 185, diff --git a/ttcn3-msc-test/MSC_Tests.cfg b/ttcn3-msc-test/MSC_Tests.cfg index 72fc1c6..2ce2b8c 100644 --- a/ttcn3-msc-test/MSC_Tests.cfg +++ b/ttcn3-msc-test/MSC_Tests.cfg @@ -11,6 +11,7 @@ # connection to STP MSC_Tests.mp_bssap_cfg := { { + transport := BSSAP_TRANSPORT_AoIP, sccp_service_type := "mtp3_itu", sctp_addr := { 23906, "172.18.1.103", 2905, "172.18.1.200" }, own_pc := 193, /* 0.24.1 */ @@ -21,6 +22,7 @@ rctx := 0 }, { + transport := BSSAP_TRANSPORT_AoIP, sccp_service_type := "mtp3_itu", sctp_addr := { 23907, "172.18.1.103", 2905, "172.18.1.200" }, own_pc := 194, /* 0.24.2 */ -- To view, visit https://gerrit.osmocom.org/7865 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: I2a0011bc6f7bdf013005d1ea36da591673344eed Gerrit-PatchSet: 1 Gerrit-Project: docker-playground Gerrit-Branch: master Gerrit-Owner: Harald Welte Gerrit-Reviewer: Harald Welte From gerrit-no-reply at lists.osmocom.org Mon Apr 23 20:14:13 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Mon, 23 Apr 2018 20:14:13 +0000 Subject: [ABANDON] osmo-msc[master]: gsm_04_08: Ensure we close the SCCP connection on errors In-Reply-To: References: Message-ID: Harald Welte has abandoned this change. Change subject: gsm_04_08: Ensure we close the SCCP connection on errors ...................................................................... Abandoned subscr conn fsm deprecates this -- To view, visit https://gerrit.osmocom.org/7376 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: abandon Gerrit-Change-Id: I6b295cea301427de7a2cd1769a3604c545ca7d68 Gerrit-PatchSet: 1 Gerrit-Project: osmo-msc Gerrit-Branch: master Gerrit-Owner: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Neels Hofmeyr From gerrit-no-reply at lists.osmocom.org Mon Apr 23 20:14:33 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Mon, 23 Apr 2018 20:14:33 +0000 Subject: [MERGED] libosmocore[master]: gsm0808_test: silence deprecation: use gsm0808_create_layer3... In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: gsm0808_test: silence deprecation: use gsm0808_create_layer3_2() ...................................................................... gsm0808_test: silence deprecation: use gsm0808_create_layer3_2() Change-Id: Ia0afecafa8862ffbe2af3c86e5552673f0935eb0 --- M tests/gsm0808/gsm0808_test.c 1 file changed, 11 insertions(+), 1 deletion(-) Approvals: Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/tests/gsm0808/gsm0808_test.c b/tests/gsm0808/gsm0808_test.c index e111fe6..ae138be 100644 --- a/tests/gsm0808/gsm0808_test.c +++ b/tests/gsm0808/gsm0808_test.c @@ -71,13 +71,23 @@ 0x00, 0x0e, 0x57, 0x05, 0x08, 0x00, 0x77, 0x62, 0x83, 0x33, 0x66, 0x44, 0x88, 0x17, 0x01, 0x23 }; struct msgb *msg, *in_msg; + struct osmo_cell_global_id cgi = { + .lai = { + .plmn = { + .mcc = 0x2244, + .mnc = 0x1122, + }, + .lac = 0x3366, + }, + .cell_identity = 0x4488, + }; printf("Testing creating Layer3\n"); in_msg = msgb_alloc_headroom(512, 128, "foo"); in_msg->l3h = in_msg->data; msgb_v_put(in_msg, 0x23); - msg = gsm0808_create_layer3(in_msg, 0x1122, 0x2244, 0x3366, 0x4488); + msg = gsm0808_create_layer3_2(in_msg, &cgi, NULL); VERIFY(msg, res, ARRAY_SIZE(res)); msgb_free(msg); msgb_free(in_msg); -- To view, visit https://gerrit.osmocom.org/7889 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: Ia0afecafa8862ffbe2af3c86e5552673f0935eb0 Gerrit-PatchSet: 2 Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder From jenkins at lists.osmocom.org Mon Apr 23 22:41:20 2018 From: jenkins at lists.osmocom.org (jenkins at lists.osmocom.org) Date: Mon, 23 Apr 2018 22:41:20 +0000 (UTC) Subject: =?UTF-8?Q?Build_failed_in_Jenkins:_master-rtl-sdr_=C2=BB_a1=3Ddefau?= =?UTF-8?Q?lt,a2=3Ddefault,a3=3Ddefault,osmocom-master-debian9_#8?= In-Reply-To: <116221666.10.1524436880538.JavaMail.jenkins@jenkins.osmocom.org> References: <116221666.10.1524436880538.JavaMail.jenkins@jenkins.osmocom.org> Message-ID: <1469684596.39.1524523280473.JavaMail.jenkins@jenkins.osmocom.org> See ------------------------------------------ [...truncated 93.29 KB...] make[2]: Entering directory ' make[2]: Nothing to be done for 'dvi'. make[2]: Leaving directory ' Making dvi in src make[2]: Entering directory ' make[2]: Nothing to be done for 'dvi'. make[2]: Leaving directory ' make[2]: Entering directory ' make[2]: Nothing to be done for 'dvi-am'. make[2]: Leaving directory ' make[1]: Leaving directory ' make[1]: Entering directory ' make check-recursive make[2]: Entering directory ' Making check in include make[3]: Entering directory ' make[3]: Nothing to be done for 'check'. make[3]: Leaving directory ' Making check in src make[3]: Entering directory ' make[3]: Nothing to be done for 'check'. make[3]: Leaving directory ' make[3]: Entering directory ' make[3]: Leaving directory ' make[2]: Leaving directory ' make[1]: Leaving directory ' make[1]: Entering directory ' make install-recursive make[2]: Entering directory ' Making install in include make[3]: Entering directory ' make[4]: Entering directory ' make[4]: Nothing to be done for 'install-exec-am'. /bin/mkdir -p ' /usr/bin/install -c -m 644 ../../../include/rtl-sdr.h ../../../include/rtl-sdr_export.h ' make[4]: Leaving directory ' make[3]: Leaving directory ' Making install in src make[3]: Entering directory ' make[4]: Entering directory ' /bin/mkdir -p ' /bin/bash ../libtool --mode=install /usr/bin/install -c librtlsdr.la ' libtool: install: /usr/bin/install -c .libs/librtlsdr.so.0.0.5 libtool: install: (cd && { ln -s -f librtlsdr.so.0.0.5 librtlsdr.so.0 || { rm -f librtlsdr.so.0 && ln -s librtlsdr.so.0.0.5 librtlsdr.so.0; }; }) libtool: install: (cd && { ln -s -f librtlsdr.so.0.0.5 librtlsdr.so || { rm -f librtlsdr.so && ln -s librtlsdr.so.0.0.5 librtlsdr.so; }; }) libtool: install: /usr/bin/install -c .libs/librtlsdr.lai libtool: install: /usr/bin/install -c .libs/librtlsdr.a libtool: install: chmod 644 libtool: install: ranlib libtool: finish: PATH="/usr/local/bin:/usr/bin:/bin:/usr/games:/home/osmocom-build/bin:/sbin" ldconfig -n ---------------------------------------------------------------------- Libraries have been installed in: If you ever happen to want to link against installed libraries in a given directory, LIBDIR, you must either use libtool, and specify the full pathname of the library, or use the '-LLIBDIR' flag during linking and do at least one of the following: - add LIBDIR to the 'LD_LIBRARY_PATH' environment variable during execution - add LIBDIR to the 'LD_RUN_PATH' environment variable during linking - use the '-Wl,-rpath -Wl,LIBDIR' linker flag - have your system administrator add LIBDIR to '/etc/ld.so.conf' See any operating system documentation about shared libraries for more information, such as the ld(1) and ld.so(8) manual pages. ---------------------------------------------------------------------- /bin/mkdir -p ' /bin/bash ../libtool --mode=install /usr/bin/install -c rtl_sdr rtl_tcp rtl_test rtl_fm rtl_eeprom rtl_adsb rtl_power ' libtool: install: /usr/bin/install -c .libs/rtl_sdr libtool: install: /usr/bin/install -c .libs/rtl_tcp libtool: install: /usr/bin/install -c .libs/rtl_test libtool: install: /usr/bin/install -c .libs/rtl_fm libtool: install: /usr/bin/install -c .libs/rtl_eeprom libtool: install: /usr/bin/install -c .libs/rtl_adsb libtool: install: /usr/bin/install -c .libs/rtl_power make[4]: Nothing to be done for 'install-data-am'. make[4]: Leaving directory ' make[3]: Leaving directory ' make[3]: Entering directory ' make[4]: Entering directory ' make[4]: Nothing to be done for 'install-exec-am'. /bin/mkdir -p ' /usr/bin/install -c -m 644 ./doc/html.tar ' /bin/mkdir -p ' /usr/bin/install -c -m 644 librtlsdr.pc ' make install-data-hook make[5]: Entering directory ' cd && tar xf html.tar --strip-components 1 && rm -f html.tar make[5]: Leaving directory ' make[4]: Leaving directory ' make[3]: Leaving directory ' make[2]: Leaving directory ' make[1]: Leaving directory ' make[1]: Entering directory ' Making installcheck in include make[2]: Entering directory ' make[2]: Nothing to be done for 'installcheck'. make[2]: Leaving directory ' Making installcheck in src make[2]: Entering directory ' make[2]: Nothing to be done for 'installcheck'. make[2]: Leaving directory ' make[2]: Entering directory ' make[2]: Nothing to be done for 'installcheck-am'. make[2]: Leaving directory ' make[1]: Leaving directory ' make[1]: Entering directory ' Making uninstall in include make[2]: Entering directory ' ( cd ' && rm -f rtl-sdr.h rtl-sdr_export.h ) make[2]: Leaving directory ' Making uninstall in src make[2]: Entering directory ' ( cd ' && rm -f rtl_sdr rtl_tcp rtl_test rtl_fm rtl_eeprom rtl_adsb rtl_power ) /bin/bash ../libtool --mode=uninstall rm -f ' libtool: uninstall: rm -f make[2]: Leaving directory ' make[2]: Entering directory ' ( cd ' && rm -f html.tar ) ( cd ' && rm -f librtlsdr.pc ) make uninstall-hook make[3]: Entering directory ' cd && rm -rf make[3]: Leaving directory ' make[2]: Leaving directory ' make[1]: Leaving directory ' make[1]: Entering directory ' make[1]: Leaving directory ' make[1]: Entering directory ' make install-recursive make[2]: Entering directory ' Making install in include make[3]: Entering directory ' make[4]: Entering directory ' make[4]: Nothing to be done for 'install-exec-am'. /bin/mkdir -p '/tmp/am-dc-1075/ /usr/bin/install -c -m 644 ../../../include/rtl-sdr.h ../../../include/rtl-sdr_export.h '/tmp/am-dc-1075/ make[4]: Leaving directory ' make[3]: Leaving directory ' Making install in src make[3]: Entering directory ' make[4]: Entering directory ' /bin/mkdir -p '/tmp/am-dc-1075/ /bin/bash ../libtool --mode=install /usr/bin/install -c librtlsdr.la '/tmp/am-dc-1075/ libtool: install: /usr/bin/install -c .libs/librtlsdr.so.0.0.5 /tmp/am-dc-1075/ libtool: install: (cd /tmp/am-dc-1075/ && { ln -s -f librtlsdr.so.0.0.5 librtlsdr.so.0 || { rm -f librtlsdr.so.0 && ln -s librtlsdr.so.0.0.5 librtlsdr.so.0; }; }) libtool: install: (cd /tmp/am-dc-1075/ && { ln -s -f librtlsdr.so.0.0.5 librtlsdr.so || { rm -f librtlsdr.so && ln -s librtlsdr.so.0.0.5 librtlsdr.so; }; }) libtool: install: /usr/bin/install -c .libs/librtlsdr.lai /tmp/am-dc-1075/ libtool: install: /usr/bin/install -c .libs/librtlsdr.a /tmp/am-dc-1075/ libtool: install: chmod 644 /tmp/am-dc-1075/ libtool: install: ranlib /tmp/am-dc-1075/ libtool: warning: remember to run 'libtool --finish /bin/mkdir -p '/tmp/am-dc-1075/ /bin/bash ../libtool --mode=install /usr/bin/install -c rtl_sdr rtl_tcp rtl_test rtl_fm rtl_eeprom rtl_adsb rtl_power '/tmp/am-dc-1075/ libtool: warning: 'librtlsdr.la' has not been installed in ' libtool: install: /usr/bin/install -c .libs/rtl_sdr /tmp/am-dc-1075/ libtool: warning: 'librtlsdr.la' has not been installed in ' libtool: install: /usr/bin/install -c .libs/rtl_tcp /tmp/am-dc-1075/ libtool: warning: 'librtlsdr.la' has not been installed in ' libtool: install: /usr/bin/install -c .libs/rtl_test /tmp/am-dc-1075/ libtool: warning: 'librtlsdr.la' has not been installed in ' libtool: install: /usr/bin/install -c .libs/rtl_fm /tmp/am-dc-1075/ libtool: warning: 'librtlsdr.la' has not been installed in ' libtool: install: /usr/bin/install -c .libs/rtl_eeprom /tmp/am-dc-1075/ libtool: warning: 'librtlsdr.la' has not been installed in ' libtool: install: /usr/bin/install -c .libs/rtl_adsb /tmp/am-dc-1075/ libtool: warning: 'librtlsdr.la' has not been installed in ' libtool: install: /usr/bin/install -c .libs/rtl_power /tmp/am-dc-1075/ make[4]: Nothing to be done for 'install-data-am'. make[4]: Leaving directory ' make[3]: Leaving directory ' make[3]: Entering directory ' make[4]: Entering directory ' make[4]: Nothing to be done for 'install-exec-am'. /bin/mkdir -p '/tmp/am-dc-1075/ /usr/bin/install -c -m 644 ./doc/html.tar '/tmp/am-dc-1075/ /bin/mkdir -p '/tmp/am-dc-1075/ /usr/bin/install -c -m 644 librtlsdr.pc '/tmp/am-dc-1075/ make install-data-hook make[5]: Entering directory ' cd /tmp/am-dc-1075/ && tar xf html.tar --strip-components 1 && rm -f html.tar make[5]: Leaving directory ' make[4]: Leaving directory ' make[3]: Leaving directory ' make[2]: Leaving directory ' make[1]: Leaving directory ' make[1]: Entering directory ' Making uninstall in include make[2]: Entering directory ' ( cd '/tmp/am-dc-1075/ && rm -f rtl-sdr.h rtl-sdr_export.h ) make[2]: Leaving directory ' Making uninstall in src make[2]: Entering directory ' ( cd '/tmp/am-dc-1075/ && rm -f rtl_sdr rtl_tcp rtl_test rtl_fm rtl_eeprom rtl_adsb rtl_power ) /bin/bash ../libtool --mode=uninstall rm -f '/tmp/am-dc-1075/ libtool: uninstall: rm -f /tmp/am-dc-1075/ /tmp/am-dc-1075/ /tmp/am-dc-1075/ /tmp/am-dc-1075/ /tmp/am-dc-1075/ make[2]: Leaving directory ' make[2]: Entering directory ' ( cd '/tmp/am-dc-1075/ && rm -f html.tar ) ( cd '/tmp/am-dc-1075/ && rm -f librtlsdr.pc ) make uninstall-hook make[3]: Entering directory ' cd /tmp/am-dc-1075/ && rm -rf make[3]: Leaving directory ' make[2]: Leaving directory ' make[1]: Leaving directory ' make[1]: Entering directory ' ERROR: files left after uninstall: (check DESTDIR support) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Makefile:757: recipe for target 'distuninstallcheck' failed make[1]: *** [distuninstallcheck] Error 1 make[1]: Leaving directory ' Makefile:701: recipe for target 'distcheck' failed make: *** [distcheck] Error 1 + cat-testlogs.sh Build step 'Execute shell' marked build as failure [WARNINGS]Skipping publisher since build result is FAILURE From jenkins at lists.osmocom.org Tue Apr 24 00:14:19 2018 From: jenkins at lists.osmocom.org (jenkins at lists.osmocom.org) Date: Tue, 24 Apr 2018 00:14:19 +0000 (UTC) Subject: =?UTF-8?Q?Build_failed_in_Jenkins:_master-osmo-pcu_=C2=BB_m?= =?UTF-8?Q?aster,osmocom-master-debian9,none,False_#412?= Message-ID: <648506715.40.1524528859500.JavaMail.jenkins@jenkins.osmocom.org> See ------------------------------------------ [...truncated 116.72 KB...] make[2]: Nothing to be done for 'all'. make[2]: Leaving directory ' Making all in tests make[2]: Entering directory ' CXX pcu_emu.o CXX test_replay_gprs_attach.o CC openbsc_clone.o CXX test_pdp_activation.o CXXLD emu/pcu_emu make[2]: Leaving directory ' make[2]: Entering directory ' make[2]: Nothing to be done for 'all-am'. make[2]: Leaving directory ' make[1]: Leaving directory ' make[1]: Entering directory ' Making dvi in include make[2]: Entering directory ' make[2]: Nothing to be done for 'dvi'. make[2]: Leaving directory ' Making dvi in src make[2]: Entering directory ' make[2]: Nothing to be done for 'dvi'. make[2]: Leaving directory ' Making dvi in examples make[2]: Entering directory ' make[2]: Nothing to be done for 'dvi'. make[2]: Leaving directory ' Making dvi in tests make[2]: Entering directory ' make[2]: Nothing to be done for 'dvi'. make[2]: Leaving directory ' make[2]: Entering directory ' make[2]: Nothing to be done for 'dvi-am'. make[2]: Leaving directory ' make[1]: Leaving directory ' make[1]: Entering directory ' Making check in include make[2]: Entering directory ' make[2]: Nothing to be done for 'check'. make[2]: Leaving directory ' Making check in src make[2]: Entering directory ' make[2]: Nothing to be done for 'check'. make[2]: Leaving directory ' Making check in examples make[2]: Entering directory ' make[2]: Nothing to be done for 'check'. make[2]: Leaving directory ' Making check in tests make[2]: Entering directory ' make rlcmac/RLCMACTest alloc/AllocTest alloc/MslotTest tbf/TbfTest types/TypesTest ms/MsTest llist/LListTest llc/LlcTest codel/codel_test edge/EdgeTest bitcomp/BitcompTest fn/FnTest make[3]: Entering directory ' CXX RLCMACTest.o CXXLD rlcmac/RLCMACTest CXX AllocTest.o CXXLD alloc/AllocTest CXX MslotTest.o CXXLD alloc/MslotTest CXX TbfTest.o CXXLD tbf/TbfTest CXX TypesTest.o CXXLD types/TypesTest CXX MsTest.o CXXLD ms/MsTest CXX LListTest.o CXXLD llist/LListTest CXX LlcTest.o CXXLD llc/LlcTest CC codel_test.o CCLD codel/codel_test CXX EdgeTest.o CXXLD edge/EdgeTest CXX BitcompTest.o CXX egprs_rlc_compression.o CXXLD bitcomp/BitcompTest CXX FnTest.o CXXLD fn/FnTest make[3]: Leaving directory ' make check-local make[3]: Entering directory ' /bin/bash '../../../tests/testsuite' ## ----------------------------------- ## ## osmo-pcu 0.4.0.114-33c5 test suite. ## ## ----------------------------------- ## Regression tests 1: rlcmac ok 2: multi_slot ok 3: ts_alloc ok 4: tbf ok 5: bitcomp ok 6: edge ok 7: types ok 8: ms ok 9: llc ok 10: llist ok 11: codel ok 12: fn ok ## ------------- ## ## Test results. ## ## ------------- ## All 12 tests were successful. make python-tests make[4]: Entering directory ' Not running python-based tests (determined at configure-time) make[4]: Leaving directory ' make[3]: Leaving directory ' make[2]: Leaving directory ' make[2]: Entering directory ' make[2]: Nothing to be done for 'check-am'. make[2]: Leaving directory ' make[1]: Leaving directory ' make[1]: Entering directory ' Making install in include make[2]: Entering directory ' make[3]: Entering directory ' make[3]: Nothing to be done for 'install-exec-am'. /bin/mkdir -p ' /bin/mkdir -p ' /usr/bin/install -c -m 644 ../../../include/osmocom/pcu/pcuif_proto.h ' make[3]: Leaving directory ' make[2]: Leaving directory ' Making install in src make[2]: Entering directory ' make[3]: Entering directory ' /bin/mkdir -p ' /bin/bash ../libtool --mode=install /usr/bin/install -c osmo-pcu ' libtool: install: /usr/bin/install -c osmo-pcu make[3]: Leaving directory ' make[2]: Leaving directory ' Making install in examples make[2]: Entering directory ' make[3]: Entering directory ' make[3]: Nothing to be done for 'install-exec-am'. /bin/mkdir -p ' /usr/bin/install -c -m 644 ../../../examples/osmo-pcu.cfg ' make[3]: Leaving directory ' make[2]: Leaving directory ' Making install in tests make[2]: Entering directory ' make[3]: Entering directory ' make[3]: Nothing to be done for 'install-exec-am'. make[3]: Nothing to be done for 'install-data-am'. make[3]: Leaving directory ' make[2]: Leaving directory ' make[2]: Entering directory ' make[3]: Entering directory ' make[3]: Nothing to be done for 'install-exec-am'. /bin/mkdir -p ' /usr/bin/install -c -m 644 osmo-pcu.pc ' make[3]: Leaving directory ' make[2]: Leaving directory ' make[1]: Leaving directory ' make[1]: Entering directory ' Making installcheck in include make[2]: Entering directory ' make[2]: Nothing to be done for 'installcheck'. make[2]: Leaving directory ' Making installcheck in src make[2]: Entering directory ' make[2]: Nothing to be done for 'installcheck'. make[2]: Leaving directory ' Making installcheck in examples make[2]: Entering directory ' make[2]: Nothing to be done for 'installcheck'. make[2]: Leaving directory ' Making installcheck in tests make[2]: Entering directory ' /bin/bash '../../../tests/testsuite' AUTOTEST_PATH=' \ ## ----------------------------------- ## ## osmo-pcu 0.4.0.114-33c5 test suite. ## ## ----------------------------------- ## Regression tests 1: rlcmac ok 2: multi_slot ok 3: ts_alloc ok 4: tbf FAILED (testsuite.at:29) 5: bitcomp ok 6: edge ok 7: types ok 8: ms ok 9: llc ok 10: llist ok 11: codel ok 12: fn ok ## ------------- ## ## Test results. ## ## ------------- ## ERROR: All 12 tests were run, 1 failed unexpectedly. ## -------------------------- ## ## testsuite.log was created. ## ## -------------------------- ## Please send `tests/testsuite.log' and all information you think might help: To: Subject: [osmo-pcu 0.4.0.114-33c5] testsuite: 4 failed You may investigate any problem if you feel able to do so, in which case the test suite provides a good starting point. Its output may be found below `tests/testsuite.dir'. Makefile:1265: recipe for target 'installcheck-local' failed make[2]: *** [installcheck-local] Error 1 make[2]: Leaving directory ' Makefile:461: recipe for target 'installcheck-recursive' failed make[1]: *** [installcheck-recursive] Error 1 make[1]: Leaving directory ' Makefile:666: recipe for target 'distcheck' failed make: *** [distcheck] Error 1 + cat-testlogs.sh ======================== ./osmo-pcu-0.4.0.114-33c5/_build/sub/tests/testsuite.dir/04/testsuite.log # -*- compilation -*- 4. testsuite.at:25: testing tbf ... ../../../tests/testsuite.at:29: $OSMO_QEMU $abs_top_builddir/tests/tbf/TbfTest --- experr 2018-04-24 00:14:17.961945022 +0000 +++ 2018-04-24 00:14:18.017944606 +0000 @@ -3689,6 +3689,7 @@ TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) downlink (V(A)==0 .. V(S)==24) TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) Sending new block at BSN 24, CS=MCS-1 TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) Complete DL frame, len=512 +../../../src/gprs_rlcmac_meas.cpp:178:40: runtime error: left shift of negative value -998964 TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) Empty chunk, added LLC dummy command of size 14, drained_since=0 TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) Complete DL frame, len=14 TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) data block (BSN 24, MCS-1): 0c 1d 01 01 01 01 01 01 43 c0 01 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b @@ -3700,6 +3701,7 @@ TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) msg block (BSN 24, MCS-1): 07 00 06 16 18 3a 02 02 02 02 02 02 86 80 03 56 56 56 56 56 56 56 56 56 56 56 00 TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) downlink acknowledge TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) Final ACK received. +../../../src/gprs_rlcmac_meas.cpp:134:42: runtime error: left shift of negative value -998893 TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) changes state from FLOW to WAIT RELEASE TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT RELEASE EGPRS) starting timer T3193 [release (DL-TBF)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT RELEASE EGPRS) changes DL ASS state from GPRS_RLCMAC_DL_ASS_WAIT_ACK to GPRS_RLCMAC_DL_ASS_NONE 4. testsuite.at:25: 4. tbf (testsuite.at:25): FAILED (testsuite.at:29) Build step 'Execute shell' marked build as failure [WARNINGS] Skipping publisher since build result is FAILURE From jenkins at lists.osmocom.org Tue Apr 24 07:36:02 2018 From: jenkins at lists.osmocom.org (jenkins at lists.osmocom.org) Date: Tue, 24 Apr 2018 07:36:02 +0000 (UTC) Subject: =?UTF-8?Q?Jenkins_build_is_back_to_normal_:_master-osmo-pc?= =?UTF-8?Q?u_=C2=BB_master,osmocom-master-debian9,none,False_#413?= In-Reply-To: <648506715.40.1524528859500.JavaMail.jenkins@jenkins.osmocom.org> References: <648506715.40.1524528859500.JavaMail.jenkins@jenkins.osmocom.org> Message-ID: <1553130544.52.1524555362657.JavaMail.jenkins@jenkins.osmocom.org> See From jenkins at lists.osmocom.org Tue Apr 24 09:21:06 2018 From: jenkins at lists.osmocom.org (jenkins at lists.osmocom.org) Date: Tue, 24 Apr 2018 09:21:06 +0000 (UTC) Subject: =?UTF-8?Q?Jenkins_build_is_back_to_normal_:_master-osmo-gsm-manuals_?= =?UTF-8?Q?=C2=BB_a1=3Ddefault,a2=3Ddefault,a3=3Dde?= =?UTF-8?Q?fault,linux=5Famd64=5Fdebian8_#122?= In-Reply-To: <2030448517.32.1524493500916.JavaMail.jenkins@jenkins.osmocom.org> References: <2030448517.32.1524493500916.JavaMail.jenkins@jenkins.osmocom.org> Message-ID: <1240856160.53.1524561666792.JavaMail.jenkins@jenkins.osmocom.org> See From gerrit-no-reply at lists.osmocom.org Tue Apr 24 09:24:00 2018 From: gerrit-no-reply at lists.osmocom.org (lynxis lazus) Date: Tue, 24 Apr 2018 09:24:00 +0000 Subject: osmo-ci[master]: jobs: update-osmo*: remove non-existent node build2-deb8build In-Reply-To: References: Message-ID: Patch Set 3: Verified+1 -- To view, visit https://gerrit.osmocom.org/7718 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Id9f25d8a5f6d0521e2b70884f46de5dee14d8092 Gerrit-PatchSet: 3 Gerrit-Project: osmo-ci Gerrit-Branch: master Gerrit-Owner: lynxis lazus Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: lynxis lazus Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Tue Apr 24 09:24:40 2018 From: gerrit-no-reply at lists.osmocom.org (lynxis lazus) Date: Tue, 24 Apr 2018 09:24:40 +0000 Subject: [MERGED] osmo-ci[master]: jobs: update-osmo*: remove non-existent node build2-deb8build In-Reply-To: References: Message-ID: lynxis lazus has submitted this change and it was merged. Change subject: jobs: update-osmo*: remove non-existent node build2-deb8build ...................................................................... jobs: update-osmo*: remove non-existent node build2-deb8build The jobs will stall when trying to handle a non-existent node Change-Id: Id9f25d8a5f6d0521e2b70884f46de5dee14d8092 --- M jobs/update-osmo-ci-on-slaves.yml M jobs/update-osmo-python-on-slaves.yml 2 files changed, 0 insertions(+), 2 deletions(-) Approvals: lynxis lazus: Verified Harald Welte: Looks good to me, approved diff --git a/jobs/update-osmo-ci-on-slaves.yml b/jobs/update-osmo-ci-on-slaves.yml index 9601b1c..98f5c40 100644 --- a/jobs/update-osmo-ci-on-slaves.yml +++ b/jobs/update-osmo-ci-on-slaves.yml @@ -8,7 +8,6 @@ values: - OsmocomBuild1 - build1-debian9-lxc - - build2-deb8build - admin2-deb8build - admin2-deb9build - host2-deb8build-ansible diff --git a/jobs/update-osmo-python-on-slaves.yml b/jobs/update-osmo-python-on-slaves.yml index 322ed57..7a74393 100644 --- a/jobs/update-osmo-python-on-slaves.yml +++ b/jobs/update-osmo-python-on-slaves.yml @@ -8,7 +8,6 @@ values: - OsmocomBuild1 - build1-debian9-lxc - - build2-deb8build - admin2-deb8build - admin2-deb9build - host2-deb8build-ansible -- To view, visit https://gerrit.osmocom.org/7718 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: Id9f25d8a5f6d0521e2b70884f46de5dee14d8092 Gerrit-PatchSet: 3 Gerrit-Project: osmo-ci Gerrit-Branch: master Gerrit-Owner: lynxis lazus Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: lynxis lazus From gerrit-no-reply at lists.osmocom.org Tue Apr 24 09:29:05 2018 From: gerrit-no-reply at lists.osmocom.org (lynxis lazus) Date: Tue, 24 Apr 2018 09:29:05 +0000 Subject: [PATCH] osmo-ci[master]: osmocom-jenkins-slave: install graphiz Message-ID: Review at https://gerrit.osmocom.org/7899 osmocom-jenkins-slave: install graphiz Change-Id: Iad1f10d057475ca15bc3104b5c97fa57e29db15e --- M ansible/roles/osmocom-jenkins-slave/tasks/main.yml 1 file changed, 1 insertion(+), 0 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-ci refs/changes/99/7899/1 diff --git a/ansible/roles/osmocom-jenkins-slave/tasks/main.yml b/ansible/roles/osmocom-jenkins-slave/tasks/main.yml index b57c81a..347221f 100644 --- a/ansible/roles/osmocom-jenkins-slave/tasks/main.yml +++ b/ansible/roles/osmocom-jenkins-slave/tasks/main.yml @@ -29,6 +29,7 @@ - gcc-arm-none-eabi - git - git-buildpackage + - graphviz - libtool - libboost-all-dev - make -- To view, visit https://gerrit.osmocom.org/7899 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Iad1f10d057475ca15bc3104b5c97fa57e29db15e Gerrit-PatchSet: 1 Gerrit-Project: osmo-ci Gerrit-Branch: master Gerrit-Owner: lynxis lazus From gerrit-no-reply at lists.osmocom.org Tue Apr 24 09:29:03 2018 From: gerrit-no-reply at lists.osmocom.org (lynxis lazus) Date: Tue, 24 Apr 2018 09:29:03 +0000 Subject: [PATCH] osmo-ci[master]: jobs: update-osmo-* remove old build nodes Message-ID: Review at https://gerrit.osmocom.org/7898 jobs: update-osmo-* remove old build nodes Change-Id: Ia7f98e55895b150da473a38a3e68b188acd0e76a --- M jobs/update-osmo-ci-on-slaves.yml M jobs/update-osmo-python-on-slaves.yml 2 files changed, 0 insertions(+), 4 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-ci refs/changes/98/7898/1 diff --git a/jobs/update-osmo-ci-on-slaves.yml b/jobs/update-osmo-ci-on-slaves.yml index 98f5c40..d1bc893 100644 --- a/jobs/update-osmo-ci-on-slaves.yml +++ b/jobs/update-osmo-ci-on-slaves.yml @@ -6,8 +6,6 @@ type: slave name: label values: - - OsmocomBuild1 - - build1-debian9-lxc - admin2-deb8build - admin2-deb9build - host2-deb8build-ansible diff --git a/jobs/update-osmo-python-on-slaves.yml b/jobs/update-osmo-python-on-slaves.yml index 7a74393..4727c6b 100644 --- a/jobs/update-osmo-python-on-slaves.yml +++ b/jobs/update-osmo-python-on-slaves.yml @@ -6,8 +6,6 @@ type: slave name: label values: - - OsmocomBuild1 - - build1-debian9-lxc - admin2-deb8build - admin2-deb9build - host2-deb8build-ansible -- To view, visit https://gerrit.osmocom.org/7898 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Ia7f98e55895b150da473a38a3e68b188acd0e76a Gerrit-PatchSet: 1 Gerrit-Project: osmo-ci Gerrit-Branch: master Gerrit-Owner: lynxis lazus From gerrit-no-reply at lists.osmocom.org Tue Apr 24 09:29:19 2018 From: gerrit-no-reply at lists.osmocom.org (lynxis lazus) Date: Tue, 24 Apr 2018 09:29:19 +0000 Subject: docker-playground[master]: jenkins-common: move workspace to /tmp/jenkins when build ou... In-Reply-To: References: Message-ID: Patch Set 1: i'm fine with your patches neels. -- To view, visit https://gerrit.osmocom.org/7721 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I8a139ef2d23dd8115191e51e86ef0346cb97e4cf Gerrit-PatchSet: 1 Gerrit-Project: docker-playground Gerrit-Branch: master Gerrit-Owner: lynxis lazus Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Neels Hofmeyr Gerrit-Reviewer: Pau Espin Pedrol Gerrit-Reviewer: dexter Gerrit-Reviewer: lynxis lazus Gerrit-Reviewer: neels Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Tue Apr 24 09:29:33 2018 From: gerrit-no-reply at lists.osmocom.org (lynxis lazus) Date: Tue, 24 Apr 2018 09:29:33 +0000 Subject: [ABANDON] docker-playground[master]: jenkins-common: move workspace to /tmp/jenkins when build ou... In-Reply-To: References: Message-ID: lynxis lazus has abandoned this change. Change subject: jenkins-common: move workspace to /tmp/jenkins when build outside jenkins ...................................................................... Abandoned in favor of neels's patches https://gerrit.osmocom.org/7866 https://gerrit.osmocom.org/7867 https://gerrit.osmocom.org/7868 -- To view, visit https://gerrit.osmocom.org/7721 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: abandon Gerrit-Change-Id: I8a139ef2d23dd8115191e51e86ef0346cb97e4cf Gerrit-PatchSet: 1 Gerrit-Project: docker-playground Gerrit-Branch: master Gerrit-Owner: lynxis lazus Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Neels Hofmeyr Gerrit-Reviewer: Pau Espin Pedrol Gerrit-Reviewer: dexter Gerrit-Reviewer: lynxis lazus Gerrit-Reviewer: neels From gerrit-no-reply at lists.osmocom.org Tue Apr 24 09:49:29 2018 From: gerrit-no-reply at lists.osmocom.org (lynxis lazus) Date: Tue, 24 Apr 2018 09:49:29 +0000 Subject: [PATCH] osmo-bsc[master]: abis-rsl: Send imm.ass messages via PCH In-Reply-To: References: Message-ID: Hello Jenkins Builder, I'd like you to reexamine a change. Please visit https://gerrit.osmocom.org/6203 to look at the new patch set (#3). abis-rsl: Send imm.ass messages via PCH It is possible to send immidiate assign messages through the paging channel. This commit adds the required functionality to the pcu socket interface and to the abis_rsl api Change-Id: I0a899d9c866ed09dc301694dbbcad304b1ed49e5 --- M include/osmocom/bsc/abis_rsl.h M include/osmocom/bsc/pcuif_proto.h M src/libbsc/abis_rsl.c M src/libbsc/pcu_sock.c 4 files changed, 53 insertions(+), 19 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-bsc refs/changes/03/6203/3 diff --git a/include/osmocom/bsc/abis_rsl.h b/include/osmocom/bsc/abis_rsl.h index b30702f..ae80879 100644 --- a/include/osmocom/bsc/abis_rsl.h +++ b/include/osmocom/bsc/abis_rsl.h @@ -60,7 +60,11 @@ int rsl_relase_request(struct gsm_lchan *lchan, uint8_t link_id); /* Ericcson vendor specific RSL extensions */ -int rsl_ericsson_imm_assign_cmd(struct gsm_bts *bts, uint32_t tlli, uint8_t len, uint8_t *val); +int rsl_ericsson_imm_assign_cmd(struct gsm_bts *bts, uint8_t len, uint8_t *val, + uint32_t tlli); +int rsl_ericsson_imm_assign_via_pch_cmd(struct gsm_bts *bts, uint8_t len, + uint8_t *val, uint32_t tlli, + uint8_t pag_grp); /* Siemens vendor-specific RSL extensions */ int rsl_siemens_mrpci(struct gsm_lchan *lchan, struct rsl_mrpci *mrpci); diff --git a/include/osmocom/bsc/pcuif_proto.h b/include/osmocom/bsc/pcuif_proto.h index b9f61b6..081a95a 100644 --- a/include/osmocom/bsc/pcuif_proto.h +++ b/include/osmocom/bsc/pcuif_proto.h @@ -27,7 +27,7 @@ #define PCU_IF_SAPI_PDTCH 0x05 /* packet data/control/ccch block */ #define PCU_IF_SAPI_PRACH 0x06 /* packet random access channel */ #define PCU_IF_SAPI_PTCCH 0x07 /* packet TA control channel */ -#define PCU_IF_SAPI_AGCH_DT 0x08 /* assignment on AGCH but with additional TLLI */ +#define PCU_IF_SAPI_AGCH_DT 0x08 /* assignment on PCH or AGCH but with additional TLLI */ /* flags */ #define PCU_IF_FLAG_ACTIVE (1 << 0)/* BTS is active */ @@ -75,6 +75,7 @@ struct gsm_pcu_if_data_cnf_dt { uint8_t sapi; uint32_t tlli; + uint8_t imsi[3]; uint32_t fn; uint16_t arfcn; uint8_t trx_nr; diff --git a/src/libbsc/abis_rsl.c b/src/libbsc/abis_rsl.c index 10bef6e..9de91b9 100644 --- a/src/libbsc/abis_rsl.c +++ b/src/libbsc/abis_rsl.c @@ -1096,17 +1096,42 @@ return abis_rsl_sendmsg(msg); } -/* Chapter 8.5.6 */ -int rsl_ericsson_imm_assign_cmd(struct gsm_bts *bts, uint32_t tlli, uint8_t len, uint8_t *val) +/* Append mobile idenitiy (tlli) to message buffer */ +static void rsl_ericsson_put_mi(struct msgb *msg, uint32_t tlli) +{ + /* NOTE: ericsson can handle a reference at the end of the message which is used in + * the confirm message. The confirm message is only sent if the trailer is present */ + msgb_put_u8(msg, RSL_IE_ERIC_MOBILE_ID); + msgb_put_u32(msg, tlli); +} + +/* Chapter 8.5.6 (Ericcson vendor specific RSL extension) */ +int rsl_ericsson_imm_assign_cmd(struct gsm_bts *bts, uint8_t len, uint8_t *val, + uint32_t tlli) { struct msgb *msg = rsl_imm_assign_cmd_common(bts, len, val); if (!msg) return 1; - /* ericsson can handle a reference at the end of the message which is used in - * the confirm message. The confirm message is only sent if the trailer is present */ - msgb_put_u8(msg, RSL_IE_ERIC_MOBILE_ID); - msgb_put_u32(msg, tlli); + /* Append ericsson propritary mobile identity field */ + rsl_ericsson_put_mi(msg, tlli); + + return abis_rsl_sendmsg(msg); +} + +/* Chapter 8.5.6 (Ericcson vendor specific RSL extension) */ +int rsl_ericsson_imm_assign_via_pch_cmd(struct gsm_bts *bts, uint8_t len, + uint8_t *val, uint32_t tlli, + uint8_t pag_grp) +{ + struct msgb *msg = rsl_imm_assign_cmd_common(bts, len, val); + + /* Append ericsson propritary paging group field */ + msgb_put_u8(msg, 0x0e); + msgb_put_u8(msg, pag_grp); + + /* Append ericsson propritary mobile identity field */ + rsl_ericsson_put_mi(msg, tlli); return abis_rsl_sendmsg(msg); } diff --git a/src/libbsc/pcu_sock.c b/src/libbsc/pcu_sock.c index f5a82cc..637ba6a 100644 --- a/src/libbsc/pcu_sock.c +++ b/src/libbsc/pcu_sock.c @@ -326,9 +326,9 @@ mi_len = p1->data[0]; mi = p1->data+1; LOGP(DPCU, LOGL_ERROR, "PCU Sends paging " - "request type %02x (chan_needed=%02x, mi_len=%u, mi=%s)\n", + "request type %02x (chan_needed=0x%02x, mi_len=%u, mi=%s, paging_group=0x%02x)\n", p1->msg_type, chan_needed, mi_len, - osmo_hexdump_nospc(mi,mi_len)); + osmo_hexdump_nospc(mi,mi_len), paging_group); /* NOTE: We will have to add 2 to mi_len and subtract 2 from * the mi pointer because rsl_paging_cmd() will perform the * reverse operations. This is because rsl_paging_cmd() is @@ -401,6 +401,7 @@ msg->l3h = msgb_put(msg, data_req->len); memcpy(msg->l3h, data_req->data, data_req->len); + LOGP(DPCU, LOGL_DEBUG, "PCU Sends immediate assignment via AGCH\n"); if (rsl_imm_assign_cmd(bts, msg->len, msg->data)) { msgb_free(msg); rc = -EIO; @@ -415,19 +416,22 @@ break; } memcpy(&tlli, data_req->data, 4); + pag_grp = extract_paging_group(bts,data_req->data+4); - msg = msgb_alloc(data_req->len - 4, "pcu_agch"); + msg = msgb_alloc(data_req->len - 7, "pcu_pch"); if (!msg) { rc = -ENOMEM; break; } - msg->l3h = msgb_put(msg, data_req->len - 4); - memcpy(msg->l3h, data_req->data + 4, data_req->len - 4); + msg->l3h = msgb_put(msg, data_req->len - 7); + memcpy(msg->l3h, data_req->data + 7, data_req->len - 7); - if (bts->type == GSM_BTS_TYPE_RBS2000) - rc = rsl_ericsson_imm_assign_cmd(bts, tlli, msg->len, msg->data); - else - rc = rsl_imm_assign_cmd(bts, msg->len, msg->data); + LOGP(DPCU, LOGL_DEBUG, "PCU Sends immediate assignment via PCH (tlli=0x%08x, pag_grp=0x%02x)\n", + tlli, pag_grp); + if (bts->type == GSM_BTS_TYPE_RBS2000) { + rc = rsl_ericsson_imm_assign_via_pch_cmd(bts, msg->len, msg->data, tlli, pag_grp); + } else + LOGP(DPCU, LOGL_ERROR, "This BTS does not support immediate via PCH, dropping message!\n"); if (rc) { msgb_free(msg); @@ -435,8 +439,8 @@ } break; default: - LOGP(DPCU, LOGL_ERROR, "Received PCU data request with " - "unsupported sapi %d\n", data_req->sapi); + LOGP(DPCU, LOGL_ERROR, "Received PCU data request for " + "unsupported channel (sapi=%d)\n", data_req->sapi); rc = -EINVAL; } -- To view, visit https://gerrit.osmocom.org/6203 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newpatchset Gerrit-Change-Id: I0a899d9c866ed09dc301694dbbcad304b1ed49e5 Gerrit-PatchSet: 3 Gerrit-Project: osmo-bsc Gerrit-Branch: master Gerrit-Owner: lynxis lazus Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: dexter Gerrit-Reviewer: lynxis lazus From gerrit-no-reply at lists.osmocom.org Tue Apr 24 09:49:29 2018 From: gerrit-no-reply at lists.osmocom.org (lynxis lazus) Date: Tue, 24 Apr 2018 09:49:29 +0000 Subject: [PATCH] osmo-bsc[master]: pcu_sock: reorganize calculation of paging group In-Reply-To: References: Message-ID: Hello Harald Welte, Jenkins Builder, I'd like you to reexamine a change. Please visit https://gerrit.osmocom.org/6204 to look at the new patch set (#2). pcu_sock: reorganize calculation of paging group pcu_sock.c:pcu_rx_data_req() needs to calculate the paging group at two positions, this commit adds a functions for that to avoid code duplication Change-Id: Iee8926d5bc017d912912916e4898e968bf4dd29b --- M src/libbsc/pcu_sock.c 1 file changed, 21 insertions(+), 10 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-bsc refs/changes/04/6204/2 diff --git a/src/libbsc/pcu_sock.c b/src/libbsc/pcu_sock.c index 64422c7..f5a82cc 100644 --- a/src/libbsc/pcu_sock.c +++ b/src/libbsc/pcu_sock.c @@ -354,11 +354,30 @@ return rc; } +/* Helper function for pcu_rx_data_req() to extract paging group info */ +static uint8_t extract_paging_group(struct gsm_bts *bts, uint8_t *data) +{ + char imsi_digit_buf[4]; + uint8_t pag_grp; + + /* the first three bytes are the last three digits of + * the IMSI, which we need to compute the paging group */ + imsi_digit_buf[0] = data[0]; + imsi_digit_buf[1] = data[1]; + imsi_digit_buf[2] = data[2]; + imsi_digit_buf[3] = '\0'; + + pag_grp = gsm0502_calc_paging_group(&bts->si_common.chan_desc, + str_to_imsi(imsi_digit_buf)); + + return pag_grp; +} + + static int pcu_rx_data_req(struct gsm_bts *bts, uint8_t msg_type, struct gsm_pcu_if_data *data_req) { struct msgb *msg; - char imsi_digit_buf[4]; uint32_t tlli = -1; uint8_t pag_grp; int rc = 0; @@ -370,15 +389,7 @@ switch (data_req->sapi) { case PCU_IF_SAPI_PCH: - /* the first three bytes are the last three digits of - * the IMSI, which we need to compute the paging group */ - imsi_digit_buf[0] = data_req->data[0]; - imsi_digit_buf[1] = data_req->data[1]; - imsi_digit_buf[2] = data_req->data[2]; - imsi_digit_buf[3] = '\0'; - LOGP(DPCU, LOGL_DEBUG, "SAPI PCH imsi %s\n", imsi_digit_buf); - pag_grp = gsm0502_calc_paging_group(&bts->si_common.chan_desc, - str_to_imsi(imsi_digit_buf)); + pag_grp = extract_paging_group(bts,data_req->data); pcu_rx_rr_paging(bts, pag_grp, data_req->data+3); break; case PCU_IF_SAPI_AGCH: -- To view, visit https://gerrit.osmocom.org/6204 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newpatchset Gerrit-Change-Id: Iee8926d5bc017d912912916e4898e968bf4dd29b Gerrit-PatchSet: 2 Gerrit-Project: osmo-bsc Gerrit-Branch: master Gerrit-Owner: lynxis lazus Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: dexter Gerrit-Reviewer: lynxis lazus From gerrit-no-reply at lists.osmocom.org Tue Apr 24 12:04:32 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Tue, 24 Apr 2018 12:04:32 +0000 Subject: [PATCH] osmo-msc[master]: Remove unused GSM_PAGING_OOM Message-ID: Review at https://gerrit.osmocom.org/7900 Remove unused GSM_PAGING_OOM Change-Id: Ie5883953f48d11ec498f47c30ab4201bb956368c --- M include/osmocom/msc/gsm_data_shared.h M src/libmsc/gsm_04_11.c M src/libmsc/silent_call.c M src/libmsc/sms_queue.c 4 files changed, 0 insertions(+), 5 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-msc refs/changes/00/7900/1 diff --git a/include/osmocom/msc/gsm_data_shared.h b/include/osmocom/msc/gsm_data_shared.h index 32c336b..f71e92b 100644 --- a/include/osmocom/msc/gsm_data_shared.h +++ b/include/osmocom/msc/gsm_data_shared.h @@ -36,7 +36,6 @@ enum gsm_paging_event { GSM_PAGING_SUCCEEDED, GSM_PAGING_EXPIRED, - GSM_PAGING_OOM, GSM_PAGING_BUSY, }; diff --git a/src/libmsc/gsm_04_11.c b/src/libmsc/gsm_04_11.c index 077c8d8..8d9169b 100644 --- a/src/libmsc/gsm_04_11.c +++ b/src/libmsc/gsm_04_11.c @@ -1099,7 +1099,6 @@ gsm411_send_sms(conn, sms); break; case GSM_PAGING_EXPIRED: - case GSM_PAGING_OOM: case GSM_PAGING_BUSY: send_signal(S_SMS_UNKNOWN_ERROR, NULL, sms, event); sms_free(sms); diff --git a/src/libmsc/silent_call.c b/src/libmsc/silent_call.c index 1ea2305..9888894 100644 --- a/src/libmsc/silent_call.c +++ b/src/libmsc/silent_call.c @@ -63,7 +63,6 @@ break; case GSM_PAGING_EXPIRED: case GSM_PAGING_BUSY: - case GSM_PAGING_OOM: DEBUGP(DLSMS, "expired\n"); osmo_signal_dispatch(SS_SCALL, S_SCALL_EXPIRED, &sigdata); break; diff --git a/src/libmsc/sms_queue.c b/src/libmsc/sms_queue.c index ed11123..252e529 100644 --- a/src/libmsc/sms_queue.c +++ b/src/libmsc/sms_queue.c @@ -511,8 +511,6 @@ case GSM_PAGING_EXPIRED: sms_pending_failed(pending, 1); break; - - case GSM_PAGING_OOM: case GSM_PAGING_BUSY: network->sms_queue->pending -= 1; sms_pending_free(pending); -- To view, visit https://gerrit.osmocom.org/7900 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Ie5883953f48d11ec498f47c30ab4201bb956368c Gerrit-PatchSet: 1 Gerrit-Project: osmo-msc Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol From gerrit-no-reply at lists.osmocom.org Tue Apr 24 12:04:32 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Tue, 24 Apr 2018 12:04:32 +0000 Subject: [PATCH] osmo-msc[master]: setup_trig_pag_evt: Remove uneeded default case in switch st... Message-ID: Review at https://gerrit.osmocom.org/7901 setup_trig_pag_evt: Remove uneeded default case in switch statement Take the chance to pass a var of type enum instead, so the compiler warns us if a new enum value is added. For instance, if we remove GSM_PAGING_EXPIRED from the switch statement: src/libmsc/gsm_04_08.c:1463:2: warning: enumeration value ?GSM_PAGING_EXPIRED? not handled in switch [-Wswitch] switch (paging_event) { ^~~~~~ Change-Id: I65d871704b9636c594dc982200fbe7f7ce6784f5 --- M src/libmsc/gsm_04_08.c 1 file changed, 2 insertions(+), 4 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-msc refs/changes/01/7901/1 diff --git a/src/libmsc/gsm_04_08.c b/src/libmsc/gsm_04_08.c index 2b8e4c1..ea5a81a 100644 --- a/src/libmsc/gsm_04_08.c +++ b/src/libmsc/gsm_04_08.c @@ -1456,10 +1456,11 @@ { struct gsm_subscriber_connection *conn = _conn; struct gsm_trans *transt = _transt; + enum gsm_paging_event paging_event = event; OSMO_ASSERT(!transt->conn); - switch (event) { + switch (paging_event) { case GSM_PAGING_SUCCEEDED: DEBUGP(DCC, "Paging subscr %s succeeded!\n", vlr_subscr_msisdn_or_name(transt->vsub)); @@ -1481,9 +1482,6 @@ transt->callref = 0; transt->paging_request = NULL; trans_free(transt); - break; - default: - LOGP(DCC, LOGL_ERROR, "Unknown paging event %d\n", event); break; } -- To view, visit https://gerrit.osmocom.org/7901 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I65d871704b9636c594dc982200fbe7f7ce6784f5 Gerrit-PatchSet: 1 Gerrit-Project: osmo-msc Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol From gerrit-no-reply at lists.osmocom.org Tue Apr 24 12:04:33 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Tue, 24 Apr 2018 12:04:33 +0000 Subject: [PATCH] osmo-msc[master]: setup_trig_pag_evt: Fix heap-use-after-free Message-ID: Review at https://gerrit.osmocom.org/7903 setup_trig_pag_evt: Fix heap-use-after-free Catched by osmo-gsm-tester running test voice:octphy. Fixes following AddressSanitizer report: ==18864==ERROR: AddressSanitizer: heap-use-after-free on address 0x61a000016f18 at pc 0x55f1b29eee5c bp 0x7ffdaa2ac000 sp 0x7ffdaa2abff8 WRITE of size 8 at 0x61a000016f18 thread T0 #0 0x55f1b29eee5b in setup_trig_pag_evt osmo-msc/src/libmsc/gsm_04_08.c:1490 #1 0x55f1b2a086c1 in subscr_paging_dispatch osmo-msc/src/libmsc/gsm_subscriber.c:101 #2 0x7fb88e07c1c9 in osmo_timers_update libosmocore/src/timer.c:257 #3 0x7fb88e07f1b1 in osmo_select_main libosmocore/src/select.c:253 #4 0x55f1b29b600b in main osmo-msc/msc_main.c:694 #5 0x7fb88bebe2e0 in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x202e0) #6 0x55f1b29b69f9 in _start (osmo-msc/bin/osmo-msc+0xf09f9) Related: OS#3198 Change-Id: Ie7fdca4d48e247c77a53e81aec2b6bacd8fef678 --- M src/libmsc/gsm_04_08.c 1 file changed, 1 insertion(+), 1 deletion(-) git pull ssh://gerrit.osmocom.org:29418/osmo-msc refs/changes/03/7903/1 diff --git a/src/libmsc/gsm_04_08.c b/src/libmsc/gsm_04_08.c index 27aff55..5c45316 100644 --- a/src/libmsc/gsm_04_08.c +++ b/src/libmsc/gsm_04_08.c @@ -1467,6 +1467,7 @@ OSMO_ASSERT(conn); /* Assign conn */ transt->conn = msc_subscr_conn_get(conn, MSC_CONN_USE_TRANS_CC); + transt->paging_request = NULL; /* send SETUP request to called party */ gsm48_cc_tx_setup(transt, &transt->cc.msg); break; @@ -1486,7 +1487,6 @@ break; } - transt->paging_request = NULL; return 0; } -- To view, visit https://gerrit.osmocom.org/7903 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Ie7fdca4d48e247c77a53e81aec2b6bacd8fef678 Gerrit-PatchSet: 1 Gerrit-Project: osmo-msc Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol From gerrit-no-reply at lists.osmocom.org Tue Apr 24 12:04:33 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Tue, 24 Apr 2018 12:04:33 +0000 Subject: [PATCH] osmo-msc[master]: setup_trig_pag_evt: Always log correct paging failure case Message-ID: Review at https://gerrit.osmocom.org/7902 setup_trig_pag_evt: Always log correct paging failure case Change-Id: I5c7a49b42b6ced1a5e0afb3485eaf94ef55bbf23 --- M src/libmsc/gsm_04_08.c 1 file changed, 3 insertions(+), 2 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-msc refs/changes/02/7902/1 diff --git a/src/libmsc/gsm_04_08.c b/src/libmsc/gsm_04_08.c index ea5a81a..27aff55 100644 --- a/src/libmsc/gsm_04_08.c +++ b/src/libmsc/gsm_04_08.c @@ -1472,8 +1472,9 @@ break; case GSM_PAGING_EXPIRED: case GSM_PAGING_BUSY: - DEBUGP(DCC, "Paging subscr %s expired!\n", - vlr_subscr_msisdn_or_name(transt->vsub)); + DEBUGP(DCC, "Paging subscr %s %s!\n", + vlr_subscr_msisdn_or_name(transt->vsub), + paging_event == GSM_PAGING_EXPIRED ? "expired" : "busy"); /* Temporarily out of order */ mncc_release_ind(transt->net, transt, transt->callref, -- To view, visit https://gerrit.osmocom.org/7902 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I5c7a49b42b6ced1a5e0afb3485eaf94ef55bbf23 Gerrit-PatchSet: 1 Gerrit-Project: osmo-msc Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol From gerrit-no-reply at lists.osmocom.org Tue Apr 24 12:06:23 2018 From: gerrit-no-reply at lists.osmocom.org (lynxis lazus) Date: Tue, 24 Apr 2018 12:06:23 +0000 Subject: [PATCH] libosmocore[master]: gsm_utils: call gnutls_global_init() as constructor Message-ID: Review at https://gerrit.osmocom.org/7904 gsm_utils: call gnutls_global_init() as constructor gnutls_global_init must be called at least once for gnutls < 3.3.0. It doesn't hurt calling it twice, except a reference counter is increased. gnutls >= 3.3.0 will call it automatic. Fixes: OS#2986 Change-Id: I241b6ae5aa8df13dd78f04658cf0953e9561c9e2 --- M src/gsm/gsm_utils.c 1 file changed, 12 insertions(+), 0 deletions(-) git pull ssh://gerrit.osmocom.org:29418/libosmocore refs/changes/04/7904/1 diff --git a/src/gsm/gsm_utils.c b/src/gsm/gsm_utils.c index 5d8c834..ac2ca24 100644 --- a/src/gsm/gsm_utils.c +++ b/src/gsm/gsm_utils.c @@ -112,8 +112,20 @@ #pragma message ("including GnuTLS for getrandom fallback.") #include #include + +/* gnutls < 3.3.0 requires global init. + * gnutls >= 3.3.0 does it automatic. + * It doesn't hurt calling it twice, + * as long it's not done at the same time (threads). + */ +__attribute__((constructor)) +static void on_dso_load_gnutls(void) +{ + gnutls_global_init(); +} #endif + /* ETSI GSM 03.38 6.2.1 and 6.2.1.1 default alphabet * Greek symbols at hex positions 0x10 and 0x12-0x1a * left out as they can't be handled with a char and -- To view, visit https://gerrit.osmocom.org/7904 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I241b6ae5aa8df13dd78f04658cf0953e9561c9e2 Gerrit-PatchSet: 1 Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Owner: lynxis lazus From gerrit-no-reply at lists.osmocom.org Tue Apr 24 12:11:52 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Tue, 24 Apr 2018 12:11:52 +0000 Subject: libosmocore[master]: gsm_utils: call gnutls_global_init() as constructor In-Reply-To: References: Message-ID: Patch Set 1: Code-Review-1 (1 comment) Did you find any way to check at runtime for gnutls version? like some gnutls API providing you with that info. That way we can conditionally call it. Otherwise, it's fine after you fix the whitespace issue. https://gerrit.osmocom.org/#/c/7904/1/src/gsm/gsm_utils.c File src/gsm/gsm_utils.c: Line 128: Extra whitespace, remove it please. -- To view, visit https://gerrit.osmocom.org/7904 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I241b6ae5aa8df13dd78f04658cf0953e9561c9e2 Gerrit-PatchSet: 1 Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Owner: lynxis lazus Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Pau Espin Pedrol Gerrit-HasComments: Yes From gerrit-no-reply at lists.osmocom.org Tue Apr 24 12:40:28 2018 From: gerrit-no-reply at lists.osmocom.org (lynxis lazus) Date: Tue, 24 Apr 2018 12:40:28 +0000 Subject: [PATCH] libosmocore[master]: gsm_utils: call gnutls_global_init() as constructor In-Reply-To: References: Message-ID: Hello Pau Espin Pedrol, Jenkins Builder, I'd like you to reexamine a change. Please visit https://gerrit.osmocom.org/7904 to look at the new patch set (#2). gsm_utils: call gnutls_global_init() as constructor gnutls_global_init must be called at least once for gnutls < 3.3.0. It doesn't hurt calling it twice, except a reference counter is increased. gnutls >= 3.3.0 will call it automatic. Fixes: OS#2986 Change-Id: I241b6ae5aa8df13dd78f04658cf0953e9561c9e2 --- M src/gsm/gsm_utils.c 1 file changed, 11 insertions(+), 0 deletions(-) git pull ssh://gerrit.osmocom.org:29418/libosmocore refs/changes/04/7904/2 diff --git a/src/gsm/gsm_utils.c b/src/gsm/gsm_utils.c index 5d8c834..773d67a 100644 --- a/src/gsm/gsm_utils.c +++ b/src/gsm/gsm_utils.c @@ -112,6 +112,17 @@ #pragma message ("including GnuTLS for getrandom fallback.") #include #include + +/* gnutls < 3.3.0 requires global init. + * gnutls >= 3.3.0 does it automatic. + * It doesn't hurt calling it twice, + * as long it's not done at the same time (threads). + */ +__attribute__((constructor)) +static void on_dso_load_gnutls(void) +{ + gnutls_global_init(); +} #endif /* ETSI GSM 03.38 6.2.1 and 6.2.1.1 default alphabet -- To view, visit https://gerrit.osmocom.org/7904 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newpatchset Gerrit-Change-Id: I241b6ae5aa8df13dd78f04658cf0953e9561c9e2 Gerrit-PatchSet: 2 Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Owner: lynxis lazus Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Pau Espin Pedrol From gerrit-no-reply at lists.osmocom.org Tue Apr 24 12:41:04 2018 From: gerrit-no-reply at lists.osmocom.org (lynxis lazus) Date: Tue, 24 Apr 2018 12:41:04 +0000 Subject: osmo-ci[master]: jobs: update-osmo-* remove old build nodes In-Reply-To: References: Message-ID: Patch Set 1: Verified+1 -- To view, visit https://gerrit.osmocom.org/7898 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Ia7f98e55895b150da473a38a3e68b188acd0e76a Gerrit-PatchSet: 1 Gerrit-Project: osmo-ci Gerrit-Branch: master Gerrit-Owner: lynxis lazus Gerrit-Reviewer: lynxis lazus Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Tue Apr 24 12:58:04 2018 From: gerrit-no-reply at lists.osmocom.org (lynxis lazus) Date: Tue, 24 Apr 2018 12:58:04 +0000 Subject: osmo-bsc[master]: abis-rsl: Send imm.ass messages via PCH In-Reply-To: References: Message-ID: Patch Set 3: Code-Review-1 (1 comment) @dexter should we review this together before ask somebody else? https://gerrit.osmocom.org/#/c/6203/3/src/libbsc/abis_rsl.c File src/libbsc/abis_rsl.c: PS3, Line 1130: msg, 0x0e use a define from libosmocore -- To view, visit https://gerrit.osmocom.org/6203 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I0a899d9c866ed09dc301694dbbcad304b1ed49e5 Gerrit-PatchSet: 3 Gerrit-Project: osmo-bsc Gerrit-Branch: master Gerrit-Owner: lynxis lazus Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: dexter Gerrit-Reviewer: lynxis lazus Gerrit-HasComments: Yes From gerrit-no-reply at lists.osmocom.org Tue Apr 24 12:58:19 2018 From: gerrit-no-reply at lists.osmocom.org (lynxis lazus) Date: Tue, 24 Apr 2018 12:58:19 +0000 Subject: osmo-bsc[master]: pcu_sock: reorganize calculation of paging group In-Reply-To: References: Message-ID: Patch Set 2: after refactoring out, we can merge this already... -- To view, visit https://gerrit.osmocom.org/6204 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Iee8926d5bc017d912912916e4898e968bf4dd29b Gerrit-PatchSet: 2 Gerrit-Project: osmo-bsc Gerrit-Branch: master Gerrit-Owner: lynxis lazus Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: dexter Gerrit-Reviewer: lynxis lazus Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Tue Apr 24 13:38:19 2018 From: gerrit-no-reply at lists.osmocom.org (Holger Freyther) Date: Tue, 24 Apr 2018 13:38:19 +0000 Subject: [PATCH] docker-playground[master]: Add Dockerfile for gerrit and monkey patch Message-ID: Review at https://gerrit.osmocom.org/7905 Add Dockerfile for gerrit and monkey patch The openid support doesn't allow to add custom providers but we like the convenience of a single click. Take the official docker image and patch the HTML template. It seems to have changed little over the time, and it might continue like that... I have filed https://bugs.chromium.org/p/gerrit/issues/detail?id=8828 so that we can drop this hack in the future... Change-Id: I713948fbb93355c2e33e3b92969e2389cb88c938 --- A gerrit/Dockerfile A gerrit/add_osmocom.diff 2 files changed, 29 insertions(+), 0 deletions(-) git pull ssh://gerrit.osmocom.org:29418/docker-playground refs/changes/05/7905/1 diff --git a/gerrit/Dockerfile b/gerrit/Dockerfile new file mode 100644 index 0000000..e67c760 --- /dev/null +++ b/gerrit/Dockerfile @@ -0,0 +1,18 @@ +FROM gerritcodereview/gerrit + +USER root +RUN yum -y install zip unzip patch + +RUN \ + unzip /var/gerrit/bin/gerrit.war WEB-INF/lib/gerrit-openid-libopenid.jar && \ + unzip WEB-INF/lib/gerrit-openid-libopenid.jar com/google/gerrit/httpd/auth/openid/LoginForm.html + +COPY add_osmocom.diff /tmp +RUN patch -p0 < /tmp/add_osmocom.diff + +RUN \ + zip -u WEB-INF/lib/gerrit-openid-libopenid.jar com/google/gerrit/httpd/auth/openid/LoginForm.html && \ + zip -u /var/gerrit/bin/gerrit.war WEB-INF/lib/gerrit-openid-libopenid.jar + +USER gerrit + diff --git a/gerrit/add_osmocom.diff b/gerrit/add_osmocom.diff new file mode 100644 index 0000000..f078a96 --- /dev/null +++ b/gerrit/add_osmocom.diff @@ -0,0 +1,11 @@ +--- com/google/gerrit/httpd/auth/openid/LoginForm.html.orig 2018-04-24 21:07:24.000000000 +0800 ++++ com/google/gerrit/httpd/auth/openid/LoginForm.html 2018-04-24 21:08:26.000000000 +0800 +@@ -70,6 +70,8 @@ +
+
+ ++ ++ +
+ + Sign in with a Launchpad ID -- To view, visit https://gerrit.osmocom.org/7905 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I713948fbb93355c2e33e3b92969e2389cb88c938 Gerrit-PatchSet: 1 Gerrit-Project: docker-playground Gerrit-Branch: master Gerrit-Owner: Holger Freyther From gerrit-no-reply at lists.osmocom.org Tue Apr 24 13:39:42 2018 From: gerrit-no-reply at lists.osmocom.org (Holger Freyther) Date: Tue, 24 Apr 2018 13:39:42 +0000 Subject: docker-playground[master]: Add Dockerfile for gerrit and monkey patch In-Reply-To: References: Message-ID: Patch Set 1: A bit gross.. but it looked like the path of least resistance.. Maybe upstream will fix it in a way we can more nicely configure it. -- To view, visit https://gerrit.osmocom.org/7905 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I713948fbb93355c2e33e3b92969e2389cb88c938 Gerrit-PatchSet: 1 Gerrit-Project: docker-playground Gerrit-Branch: master Gerrit-Owner: Holger Freyther Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Holger Freyther Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Tue Apr 24 13:41:06 2018 From: gerrit-no-reply at lists.osmocom.org (Neels Hofmeyr) Date: Tue, 24 Apr 2018 13:41:06 +0000 Subject: docker-playground[master]: Add Dockerfile for gerrit and monkey patch In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7905 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I713948fbb93355c2e33e3b92969e2389cb88c938 Gerrit-PatchSet: 1 Gerrit-Project: docker-playground Gerrit-Branch: master Gerrit-Owner: Holger Freyther Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Holger Freyther Gerrit-Reviewer: Neels Hofmeyr Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Tue Apr 24 13:42:48 2018 From: gerrit-no-reply at lists.osmocom.org (Neels Hofmeyr) Date: Tue, 24 Apr 2018 13:42:48 +0000 Subject: osmo-ci[master]: osmocom-jenkins-slave: install graphiz In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 Verified+1 (haven't really verified, but +V-ing for triviality) -- To view, visit https://gerrit.osmocom.org/7899 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Iad1f10d057475ca15bc3104b5c97fa57e29db15e Gerrit-PatchSet: 1 Gerrit-Project: osmo-ci Gerrit-Branch: master Gerrit-Owner: lynxis lazus Gerrit-Reviewer: Neels Hofmeyr Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Tue Apr 24 13:43:05 2018 From: gerrit-no-reply at lists.osmocom.org (Holger Freyther) Date: Tue, 24 Apr 2018 13:43:05 +0000 Subject: docker-playground[master]: Add Dockerfile for gerrit and monkey patch In-Reply-To: References: Message-ID: Patch Set 1: (1 comment) https://gerrit.osmocom.org/#/c/7905/1/gerrit/Dockerfile File gerrit/Dockerfile: Line 15: zip -u /var/gerrit/bin/gerrit.war WEB-INF/lib/gerrit-openid-libopenid.jar Maybe I should clean-up the gerrit-openid-libopenid.jar, the patch and the com/ directory? -- To view, visit https://gerrit.osmocom.org/7905 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I713948fbb93355c2e33e3b92969e2389cb88c938 Gerrit-PatchSet: 1 Gerrit-Project: docker-playground Gerrit-Branch: master Gerrit-Owner: Holger Freyther Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Holger Freyther Gerrit-Reviewer: Neels Hofmeyr Gerrit-HasComments: Yes From gerrit-no-reply at lists.osmocom.org Tue Apr 24 13:43:05 2018 From: gerrit-no-reply at lists.osmocom.org (Neels Hofmeyr) Date: Tue, 24 Apr 2018 13:43:05 +0000 Subject: osmo-ci[master]: jobs: update-osmo-* remove old build nodes In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7898 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Ia7f98e55895b150da473a38a3e68b188acd0e76a Gerrit-PatchSet: 1 Gerrit-Project: osmo-ci Gerrit-Branch: master Gerrit-Owner: lynxis lazus Gerrit-Reviewer: Neels Hofmeyr Gerrit-Reviewer: lynxis lazus Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Tue Apr 24 13:43:18 2018 From: gerrit-no-reply at lists.osmocom.org (Neels Hofmeyr) Date: Tue, 24 Apr 2018 13:43:18 +0000 Subject: [MERGED] osmo-ci[master]: jobs: update-osmo-* remove old build nodes In-Reply-To: References: Message-ID: Neels Hofmeyr has submitted this change and it was merged. Change subject: jobs: update-osmo-* remove old build nodes ...................................................................... jobs: update-osmo-* remove old build nodes Change-Id: Ia7f98e55895b150da473a38a3e68b188acd0e76a --- M jobs/update-osmo-ci-on-slaves.yml M jobs/update-osmo-python-on-slaves.yml 2 files changed, 0 insertions(+), 4 deletions(-) Approvals: lynxis lazus: Verified Neels Hofmeyr: Looks good to me, approved diff --git a/jobs/update-osmo-ci-on-slaves.yml b/jobs/update-osmo-ci-on-slaves.yml index 98f5c40..d1bc893 100644 --- a/jobs/update-osmo-ci-on-slaves.yml +++ b/jobs/update-osmo-ci-on-slaves.yml @@ -6,8 +6,6 @@ type: slave name: label values: - - OsmocomBuild1 - - build1-debian9-lxc - admin2-deb8build - admin2-deb9build - host2-deb8build-ansible diff --git a/jobs/update-osmo-python-on-slaves.yml b/jobs/update-osmo-python-on-slaves.yml index 7a74393..4727c6b 100644 --- a/jobs/update-osmo-python-on-slaves.yml +++ b/jobs/update-osmo-python-on-slaves.yml @@ -6,8 +6,6 @@ type: slave name: label values: - - OsmocomBuild1 - - build1-debian9-lxc - admin2-deb8build - admin2-deb9build - host2-deb8build-ansible -- To view, visit https://gerrit.osmocom.org/7898 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: Ia7f98e55895b150da473a38a3e68b188acd0e76a Gerrit-PatchSet: 1 Gerrit-Project: osmo-ci Gerrit-Branch: master Gerrit-Owner: lynxis lazus Gerrit-Reviewer: Neels Hofmeyr Gerrit-Reviewer: lynxis lazus From gerrit-no-reply at lists.osmocom.org Tue Apr 24 13:43:18 2018 From: gerrit-no-reply at lists.osmocom.org (Neels Hofmeyr) Date: Tue, 24 Apr 2018 13:43:18 +0000 Subject: [MERGED] osmo-ci[master]: osmocom-jenkins-slave: install graphiz In-Reply-To: References: Message-ID: Neels Hofmeyr has submitted this change and it was merged. Change subject: osmocom-jenkins-slave: install graphiz ...................................................................... osmocom-jenkins-slave: install graphiz Change-Id: Iad1f10d057475ca15bc3104b5c97fa57e29db15e --- M ansible/roles/osmocom-jenkins-slave/tasks/main.yml 1 file changed, 1 insertion(+), 0 deletions(-) Approvals: Neels Hofmeyr: Looks good to me, approved; Verified diff --git a/ansible/roles/osmocom-jenkins-slave/tasks/main.yml b/ansible/roles/osmocom-jenkins-slave/tasks/main.yml index b57c81a..347221f 100644 --- a/ansible/roles/osmocom-jenkins-slave/tasks/main.yml +++ b/ansible/roles/osmocom-jenkins-slave/tasks/main.yml @@ -29,6 +29,7 @@ - gcc-arm-none-eabi - git - git-buildpackage + - graphviz - libtool - libboost-all-dev - make -- To view, visit https://gerrit.osmocom.org/7899 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: Iad1f10d057475ca15bc3104b5c97fa57e29db15e Gerrit-PatchSet: 1 Gerrit-Project: osmo-ci Gerrit-Branch: master Gerrit-Owner: lynxis lazus Gerrit-Reviewer: Neels Hofmeyr From gerrit-no-reply at lists.osmocom.org Tue Apr 24 13:45:50 2018 From: gerrit-no-reply at lists.osmocom.org (Neels Hofmeyr) Date: Tue, 24 Apr 2018 13:45:50 +0000 Subject: docker-playground[master]: jenkins.sh: drop obsolete VOL_SUITE_DIR In-Reply-To: References: Message-ID: Patch Set 1: Verified+1 -- To view, visit https://gerrit.osmocom.org/7866 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Iaf428cde0f4d3efbdb31d7af434aa82425c1bc5f Gerrit-PatchSet: 1 Gerrit-Project: docker-playground Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Neels Hofmeyr Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Tue Apr 24 13:45:53 2018 From: gerrit-no-reply at lists.osmocom.org (Neels Hofmeyr) Date: Tue, 24 Apr 2018 13:45:53 +0000 Subject: docker-playground[master]: jenkins.sh: have one common function to collect logs In-Reply-To: References: Message-ID: Patch Set 1: Verified+1 -- To view, visit https://gerrit.osmocom.org/7867 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I5d8472ec36b07c828685b1bd7718e31392d168a3 Gerrit-PatchSet: 1 Gerrit-Project: docker-playground Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Neels Hofmeyr Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Tue Apr 24 13:46:06 2018 From: gerrit-no-reply at lists.osmocom.org (Neels Hofmeyr) Date: Tue, 24 Apr 2018 13:46:06 +0000 Subject: [MERGED] docker-playground[master]: jenkins.sh: drop obsolete VOL_SUITE_DIR In-Reply-To: References: Message-ID: Neels Hofmeyr has submitted this change and it was merged. Change subject: jenkins.sh: drop obsolete VOL_SUITE_DIR ...................................................................... jenkins.sh: drop obsolete VOL_SUITE_DIR Subdirs' jenkins.sh scripts create their own subdirs without exception. Change-Id: Iaf428cde0f4d3efbdb31d7af434aa82425c1bc5f --- M jenkins-common.sh 1 file changed, 0 insertions(+), 2 deletions(-) Approvals: Neels Hofmeyr: Verified Harald Welte: Looks good to me, approved diff --git a/jenkins-common.sh b/jenkins-common.sh index 4acc6af..bef68f6 100644 --- a/jenkins-common.sh +++ b/jenkins-common.sh @@ -34,8 +34,6 @@ NET_NAME=$SUITE_NAME VOL_BASE_DIR=`mktemp -d` -VOL_SUITE_DIR=$VOL_BASE_DIR/$SUITE_NAME -mkdir $VOL_SUITE_DIR rm -rf $WORKSPACE/logs || /bin/true mkdir -p $WORKSPACE/logs -- To view, visit https://gerrit.osmocom.org/7866 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: Iaf428cde0f4d3efbdb31d7af434aa82425c1bc5f Gerrit-PatchSet: 2 Gerrit-Project: docker-playground Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Neels Hofmeyr From gerrit-no-reply at lists.osmocom.org Tue Apr 24 13:46:06 2018 From: gerrit-no-reply at lists.osmocom.org (Neels Hofmeyr) Date: Tue, 24 Apr 2018 13:46:06 +0000 Subject: [MERGED] docker-playground[master]: jenkins.sh: have one common function to collect logs In-Reply-To: References: Message-ID: Neels Hofmeyr has submitted this change and it was merged. Change subject: jenkins.sh: have one common function to collect logs ...................................................................... jenkins.sh: have one common function to collect logs To remove code dup and prepare a change to where logs are written, add collect_logs() to jenkins_common.sh and call that from each jenkins.sh after the tests are done. The 'rm -rf' is already done before a test starts. No need to do that again after each test. Change-Id: I5d8472ec36b07c828685b1bd7718e31392d168a3 --- M jenkins-common.sh M m3ua-test/jenkins.sh M sua-test/jenkins.sh M ttcn3-bsc-test/jenkins.sh M ttcn3-bts-test/jenkins.sh M ttcn3-ggsn-test/jenkins.sh M ttcn3-hlr-test/jenkins.sh M ttcn3-mgw-test/jenkins.sh M ttcn3-msc-test/jenkins.sh M ttcn3-nitb-sysinfo/jenkins.sh M ttcn3-sgsn-test/jenkins.sh M ttcn3-sip-test/jenkins.sh 12 files changed, 15 insertions(+), 52 deletions(-) Approvals: Neels Hofmeyr: Verified Harald Welte: Looks good to me, approved diff --git a/jenkins-common.sh b/jenkins-common.sh index bef68f6..281807a 100644 --- a/jenkins-common.sh +++ b/jenkins-common.sh @@ -10,7 +10,10 @@ docker network remove $NET_NAME } - +collect_logs() { + cp -a "$VOL_BASE_DIR"/* "$WORKSPACE"/logs/ + cat "$WORKSPACE"/logs/*/junit-*.log || true +} set -x diff --git a/m3ua-test/jenkins.sh b/m3ua-test/jenkins.sh index 5880aed..61f7c05 100755 --- a/m3ua-test/jenkins.sh +++ b/m3ua-test/jenkins.sh @@ -28,6 +28,4 @@ docker container stop -t 1 ${BUILD_TAG}-stp network_remove - -cp -a $VOL_BASE_DIR/* $WORKSPACE/logs/ -cat $WORKSPACE/logs/m3ua-tester/junit-*.log || true +collect_logs diff --git a/sua-test/jenkins.sh b/sua-test/jenkins.sh index 5ac0106..7c1939e 100755 --- a/sua-test/jenkins.sh +++ b/sua-test/jenkins.sh @@ -10,9 +10,6 @@ network_create 172.18.6.0/24 -rm -rf $WORKSPACE/logs || /bin/true -mkdir -p $WORKSPACE/logs - # start container with STP in background docker run --rm \ --sysctl net.ipv6.conf.all.disable_ipv6=0 \ @@ -31,6 +28,4 @@ docker container stop -t 1 ${BUILD_TAG}-stp network_remove - -cp -a $VOL_BASE_DIR/* $WORKSPACE/logs/ -cat $WORKSPACE/logs/sua-tester/junit-*.log || true +collect_logs diff --git a/ttcn3-bsc-test/jenkins.sh b/ttcn3-bsc-test/jenkins.sh index 160d5a6..7536396 100755 --- a/ttcn3-bsc-test/jenkins.sh +++ b/ttcn3-bsc-test/jenkins.sh @@ -51,8 +51,4 @@ docker container kill ${BUILD_TAG}-stp network_remove - -rm -rf $WORKSPACE/logs -mkdir -p $WORKSPACE/logs -cp -a $VOL_BASE_DIR/* $WORKSPACE/logs/ -cat $WORKSPACE/logs/bsc-tester/junit-*.log || true +collect_logs diff --git a/ttcn3-bts-test/jenkins.sh b/ttcn3-bts-test/jenkins.sh index 00bcde4..e8c77f3 100755 --- a/ttcn3-bts-test/jenkins.sh +++ b/ttcn3-bts-test/jenkins.sh @@ -66,9 +66,5 @@ docker container kill ${BUILD_TAG}-bsc network_remove - -rm -rf $WORKSPACE/logs -mkdir -p $WORKSPACE/logs rm -rf $VOL_BASE_DIR/unix -cp -a $VOL_BASE_DIR/* $WORKSPACE/logs/ -cat $WORKSPACE/logs/bts-tester/junit-*.log || true +collect_logs diff --git a/ttcn3-ggsn-test/jenkins.sh b/ttcn3-ggsn-test/jenkins.sh index 56f76ec..487da31 100755 --- a/ttcn3-ggsn-test/jenkins.sh +++ b/ttcn3-ggsn-test/jenkins.sh @@ -34,8 +34,4 @@ docker container stop ${BUILD_TAG}-ggsn network_remove - -rm -rf $WORKSPACE/logs -mkdir -p $WORKSPACE/logs -cp -a $VOL_BASE_DIR/* $WORKSPACE/logs/ -cat $WORKSPACE/logs/ggsn-tester/junit-*.log || true +collect_logs diff --git a/ttcn3-hlr-test/jenkins.sh b/ttcn3-hlr-test/jenkins.sh index 7cd74ae..5d208df 100755 --- a/ttcn3-hlr-test/jenkins.sh +++ b/ttcn3-hlr-test/jenkins.sh @@ -30,8 +30,4 @@ docker container kill ${BUILD_TAG}-hlr network_remove - -rm -rf $WORKSPACE/logs -mkdir -p $WORKSPACE/logs -cp -a $VOL_BASE_DIR/* $WORKSPACE/logs/ -cat $WORKSPACE/logs/hlr-tester/junit-*.log || true +collect_logs diff --git a/ttcn3-mgw-test/jenkins.sh b/ttcn3-mgw-test/jenkins.sh index 755ce9b..7933e1c 100755 --- a/ttcn3-mgw-test/jenkins.sh +++ b/ttcn3-mgw-test/jenkins.sh @@ -30,8 +30,4 @@ docker container stop ${BUILD_TAG}-mgw network_remove - -rm -rf $WORKSPACE/logs -mkdir -p $WORKSPACE/logs -cp -a $VOL_BASE_DIR/* $WORKSPACE/logs/ -cat $WORKSPACE/logs/mgw-tester/junit-*.log || true +collect_logs diff --git a/ttcn3-msc-test/jenkins.sh b/ttcn3-msc-test/jenkins.sh index 635b656..560eea7 100755 --- a/ttcn3-msc-test/jenkins.sh +++ b/ttcn3-msc-test/jenkins.sh @@ -47,9 +47,5 @@ docker container kill ${BUILD_TAG}-stp network_remove - -rm -rf $WORKSPACE/logs -mkdir -p $WORKSPACE/logs rm -rf $VOL_BASE_DIR/unix -cp -a $VOL_BASE_DIR/* $WORKSPACE/logs/ -cat $WORKSPACE/logs/msc-tester/junit-*.log || true +collect_logs diff --git a/ttcn3-nitb-sysinfo/jenkins.sh b/ttcn3-nitb-sysinfo/jenkins.sh index fa61401..ac00642 100755 --- a/ttcn3-nitb-sysinfo/jenkins.sh +++ b/ttcn3-nitb-sysinfo/jenkins.sh @@ -43,11 +43,10 @@ -v bts-vol:/bts \ --name ${BUILD_TAG}-sysinfo-helper -d \ busybox /bin/sh -c 'sleep 1000 & wait' -rm -rf $WORKSPACE/logs -mkdir -p $WORKSPACE/logs docker cp ${BUILD_TAG}-sysinfo-helper:/ttcn3-nitb-sysinfo $WORKSPACE/logs docker cp ${BUILD_TAG}-sysinfo-helper:/nitb $WORKSPACE/logs docker cp ${BUILD_TAG}-sysinfo-helper:/bts $WORKSPACE/logs docker container stop -t 0 ${BUILD_TAG}-sysinfo-helper network_remove +collect_logs diff --git a/ttcn3-sgsn-test/jenkins.sh b/ttcn3-sgsn-test/jenkins.sh index 8f8a37b..f1481b1 100755 --- a/ttcn3-sgsn-test/jenkins.sh +++ b/ttcn3-sgsn-test/jenkins.sh @@ -32,8 +32,4 @@ docker container kill ${BUILD_TAG}-sgsn network_remove - -rm -rf $WORKSPACE/logs -mkdir -p $WORKSPACE/logs -cp -a $VOL_BASE_DIR/* $WORKSPACE/logs/ -cat $WORKSPACE/logs/sgsn-tester/junit-*.log || true +collect_logs diff --git a/ttcn3-sip-test/jenkins.sh b/ttcn3-sip-test/jenkins.sh index 63e6c8a..37a8e95 100755 --- a/ttcn3-sip-test/jenkins.sh +++ b/ttcn3-sip-test/jenkins.sh @@ -36,9 +36,5 @@ docker container kill ${BUILD_TAG}-sip-connector network_remove - -rm -rf $WORKSPACE/logs -mkdir -p $WORKSPACE/logs rm -rf $VOL_BASE_DIR/unix -cp -a $VOL_BASE_DIR/* $WORKSPACE/logs/ -cat $WORKSPACE/logs/sip-tester/junit-*.log || true +collect_logs -- To view, visit https://gerrit.osmocom.org/7867 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: I5d8472ec36b07c828685b1bd7718e31392d168a3 Gerrit-PatchSet: 2 Gerrit-Project: docker-playground Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Neels Hofmeyr From gerrit-no-reply at lists.osmocom.org Tue Apr 24 13:48:47 2018 From: gerrit-no-reply at lists.osmocom.org (Neels Hofmeyr) Date: Tue, 24 Apr 2018 13:48:47 +0000 Subject: osmo-msc[master]: setup_trig_pag_evt: Always log correct paging failure case In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7902 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I5c7a49b42b6ced1a5e0afb3485eaf94ef55bbf23 Gerrit-PatchSet: 1 Gerrit-Project: osmo-msc Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Neels Hofmeyr Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Tue Apr 24 13:49:20 2018 From: gerrit-no-reply at lists.osmocom.org (Neels Hofmeyr) Date: Tue, 24 Apr 2018 13:49:20 +0000 Subject: osmo-msc[master]: Remove unused GSM_PAGING_OOM In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7900 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Ie5883953f48d11ec498f47c30ab4201bb956368c Gerrit-PatchSet: 1 Gerrit-Project: osmo-msc Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Neels Hofmeyr Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Tue Apr 24 13:52:12 2018 From: gerrit-no-reply at lists.osmocom.org (Neels Hofmeyr) Date: Tue, 24 Apr 2018 13:52:12 +0000 Subject: osmo-msc[master]: setup_trig_pag_evt: Remove uneeded default case in switch st... In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7901 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I65d871704b9636c594dc982200fbe7f7ce6784f5 Gerrit-PatchSet: 1 Gerrit-Project: osmo-msc Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Neels Hofmeyr Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Tue Apr 24 13:55:06 2018 From: gerrit-no-reply at lists.osmocom.org (Neels Hofmeyr) Date: Tue, 24 Apr 2018 13:55:06 +0000 Subject: osmo-msc[master]: setup_trig_pag_evt: Fix heap-use-after-free In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 (2 comments) https://gerrit.osmocom.org/#/c/7903/1//COMMIT_MSG Commit Message: Line 9: Catched by osmo-gsm-tester running test voice:octphy. "Caught" :) Line 23: (typically no blank lines between "tags") -- To view, visit https://gerrit.osmocom.org/7903 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Ie7fdca4d48e247c77a53e81aec2b6bacd8fef678 Gerrit-PatchSet: 1 Gerrit-Project: osmo-msc Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Neels Hofmeyr Gerrit-Reviewer: neels Gerrit-HasComments: Yes From gerrit-no-reply at lists.osmocom.org Tue Apr 24 13:55:20 2018 From: gerrit-no-reply at lists.osmocom.org (Neels Hofmeyr) Date: Tue, 24 Apr 2018 13:55:20 +0000 Subject: [MERGED] osmo-msc[master]: setup_trig_pag_evt: Fix heap-use-after-free In-Reply-To: References: Message-ID: Neels Hofmeyr has submitted this change and it was merged. Change subject: setup_trig_pag_evt: Fix heap-use-after-free ...................................................................... setup_trig_pag_evt: Fix heap-use-after-free Catched by osmo-gsm-tester running test voice:octphy. Fixes following AddressSanitizer report: ==18864==ERROR: AddressSanitizer: heap-use-after-free on address 0x61a000016f18 at pc 0x55f1b29eee5c bp 0x7ffdaa2ac000 sp 0x7ffdaa2abff8 WRITE of size 8 at 0x61a000016f18 thread T0 #0 0x55f1b29eee5b in setup_trig_pag_evt osmo-msc/src/libmsc/gsm_04_08.c:1490 #1 0x55f1b2a086c1 in subscr_paging_dispatch osmo-msc/src/libmsc/gsm_subscriber.c:101 #2 0x7fb88e07c1c9 in osmo_timers_update libosmocore/src/timer.c:257 #3 0x7fb88e07f1b1 in osmo_select_main libosmocore/src/select.c:253 #4 0x55f1b29b600b in main osmo-msc/msc_main.c:694 #5 0x7fb88bebe2e0 in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x202e0) #6 0x55f1b29b69f9 in _start (osmo-msc/bin/osmo-msc+0xf09f9) Related: OS#3198 Change-Id: Ie7fdca4d48e247c77a53e81aec2b6bacd8fef678 --- M src/libmsc/gsm_04_08.c 1 file changed, 1 insertion(+), 1 deletion(-) Approvals: Neels Hofmeyr: Looks good to me, approved Jenkins Builder: Verified diff --git a/src/libmsc/gsm_04_08.c b/src/libmsc/gsm_04_08.c index 27aff55..5c45316 100644 --- a/src/libmsc/gsm_04_08.c +++ b/src/libmsc/gsm_04_08.c @@ -1467,6 +1467,7 @@ OSMO_ASSERT(conn); /* Assign conn */ transt->conn = msc_subscr_conn_get(conn, MSC_CONN_USE_TRANS_CC); + transt->paging_request = NULL; /* send SETUP request to called party */ gsm48_cc_tx_setup(transt, &transt->cc.msg); break; @@ -1486,7 +1487,6 @@ break; } - transt->paging_request = NULL; return 0; } -- To view, visit https://gerrit.osmocom.org/7903 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: Ie7fdca4d48e247c77a53e81aec2b6bacd8fef678 Gerrit-PatchSet: 1 Gerrit-Project: osmo-msc Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Neels Hofmeyr Gerrit-Reviewer: neels From gerrit-no-reply at lists.osmocom.org Tue Apr 24 13:55:22 2018 From: gerrit-no-reply at lists.osmocom.org (Neels Hofmeyr) Date: Tue, 24 Apr 2018 13:55:22 +0000 Subject: [MERGED] osmo-msc[master]: setup_trig_pag_evt: Remove uneeded default case in switch st... In-Reply-To: References: Message-ID: Neels Hofmeyr has submitted this change and it was merged. Change subject: setup_trig_pag_evt: Remove uneeded default case in switch statement ...................................................................... setup_trig_pag_evt: Remove uneeded default case in switch statement Take the chance to pass a var of type enum instead, so the compiler warns us if a new enum value is added. For instance, if we remove GSM_PAGING_EXPIRED from the switch statement: src/libmsc/gsm_04_08.c:1463:2: warning: enumeration value ?GSM_PAGING_EXPIRED? not handled in switch [-Wswitch] switch (paging_event) { ^~~~~~ Change-Id: I65d871704b9636c594dc982200fbe7f7ce6784f5 --- M src/libmsc/gsm_04_08.c 1 file changed, 2 insertions(+), 4 deletions(-) Approvals: Neels Hofmeyr: Looks good to me, approved Jenkins Builder: Verified diff --git a/src/libmsc/gsm_04_08.c b/src/libmsc/gsm_04_08.c index 2b8e4c1..ea5a81a 100644 --- a/src/libmsc/gsm_04_08.c +++ b/src/libmsc/gsm_04_08.c @@ -1456,10 +1456,11 @@ { struct gsm_subscriber_connection *conn = _conn; struct gsm_trans *transt = _transt; + enum gsm_paging_event paging_event = event; OSMO_ASSERT(!transt->conn); - switch (event) { + switch (paging_event) { case GSM_PAGING_SUCCEEDED: DEBUGP(DCC, "Paging subscr %s succeeded!\n", vlr_subscr_msisdn_or_name(transt->vsub)); @@ -1481,9 +1482,6 @@ transt->callref = 0; transt->paging_request = NULL; trans_free(transt); - break; - default: - LOGP(DCC, LOGL_ERROR, "Unknown paging event %d\n", event); break; } -- To view, visit https://gerrit.osmocom.org/7901 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: I65d871704b9636c594dc982200fbe7f7ce6784f5 Gerrit-PatchSet: 1 Gerrit-Project: osmo-msc Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Neels Hofmeyr From gerrit-no-reply at lists.osmocom.org Tue Apr 24 13:55:23 2018 From: gerrit-no-reply at lists.osmocom.org (Neels Hofmeyr) Date: Tue, 24 Apr 2018 13:55:23 +0000 Subject: [MERGED] osmo-msc[master]: Remove unused GSM_PAGING_OOM In-Reply-To: References: Message-ID: Neels Hofmeyr has submitted this change and it was merged. Change subject: Remove unused GSM_PAGING_OOM ...................................................................... Remove unused GSM_PAGING_OOM Change-Id: Ie5883953f48d11ec498f47c30ab4201bb956368c --- M include/osmocom/msc/gsm_data_shared.h M src/libmsc/gsm_04_11.c M src/libmsc/silent_call.c M src/libmsc/sms_queue.c 4 files changed, 0 insertions(+), 5 deletions(-) Approvals: Neels Hofmeyr: Looks good to me, approved Jenkins Builder: Verified diff --git a/include/osmocom/msc/gsm_data_shared.h b/include/osmocom/msc/gsm_data_shared.h index 32c336b..f71e92b 100644 --- a/include/osmocom/msc/gsm_data_shared.h +++ b/include/osmocom/msc/gsm_data_shared.h @@ -36,7 +36,6 @@ enum gsm_paging_event { GSM_PAGING_SUCCEEDED, GSM_PAGING_EXPIRED, - GSM_PAGING_OOM, GSM_PAGING_BUSY, }; diff --git a/src/libmsc/gsm_04_11.c b/src/libmsc/gsm_04_11.c index 077c8d8..8d9169b 100644 --- a/src/libmsc/gsm_04_11.c +++ b/src/libmsc/gsm_04_11.c @@ -1099,7 +1099,6 @@ gsm411_send_sms(conn, sms); break; case GSM_PAGING_EXPIRED: - case GSM_PAGING_OOM: case GSM_PAGING_BUSY: send_signal(S_SMS_UNKNOWN_ERROR, NULL, sms, event); sms_free(sms); diff --git a/src/libmsc/silent_call.c b/src/libmsc/silent_call.c index 1ea2305..9888894 100644 --- a/src/libmsc/silent_call.c +++ b/src/libmsc/silent_call.c @@ -63,7 +63,6 @@ break; case GSM_PAGING_EXPIRED: case GSM_PAGING_BUSY: - case GSM_PAGING_OOM: DEBUGP(DLSMS, "expired\n"); osmo_signal_dispatch(SS_SCALL, S_SCALL_EXPIRED, &sigdata); break; diff --git a/src/libmsc/sms_queue.c b/src/libmsc/sms_queue.c index ed11123..252e529 100644 --- a/src/libmsc/sms_queue.c +++ b/src/libmsc/sms_queue.c @@ -511,8 +511,6 @@ case GSM_PAGING_EXPIRED: sms_pending_failed(pending, 1); break; - - case GSM_PAGING_OOM: case GSM_PAGING_BUSY: network->sms_queue->pending -= 1; sms_pending_free(pending); -- To view, visit https://gerrit.osmocom.org/7900 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: Ie5883953f48d11ec498f47c30ab4201bb956368c Gerrit-PatchSet: 1 Gerrit-Project: osmo-msc Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Neels Hofmeyr From gerrit-no-reply at lists.osmocom.org Tue Apr 24 13:55:23 2018 From: gerrit-no-reply at lists.osmocom.org (Neels Hofmeyr) Date: Tue, 24 Apr 2018 13:55:23 +0000 Subject: [MERGED] osmo-msc[master]: setup_trig_pag_evt: Always log correct paging failure case In-Reply-To: References: Message-ID: Neels Hofmeyr has submitted this change and it was merged. Change subject: setup_trig_pag_evt: Always log correct paging failure case ...................................................................... setup_trig_pag_evt: Always log correct paging failure case Change-Id: I5c7a49b42b6ced1a5e0afb3485eaf94ef55bbf23 --- M src/libmsc/gsm_04_08.c 1 file changed, 3 insertions(+), 2 deletions(-) Approvals: Neels Hofmeyr: Looks good to me, approved Jenkins Builder: Verified diff --git a/src/libmsc/gsm_04_08.c b/src/libmsc/gsm_04_08.c index ea5a81a..27aff55 100644 --- a/src/libmsc/gsm_04_08.c +++ b/src/libmsc/gsm_04_08.c @@ -1472,8 +1472,9 @@ break; case GSM_PAGING_EXPIRED: case GSM_PAGING_BUSY: - DEBUGP(DCC, "Paging subscr %s expired!\n", - vlr_subscr_msisdn_or_name(transt->vsub)); + DEBUGP(DCC, "Paging subscr %s %s!\n", + vlr_subscr_msisdn_or_name(transt->vsub), + paging_event == GSM_PAGING_EXPIRED ? "expired" : "busy"); /* Temporarily out of order */ mncc_release_ind(transt->net, transt, transt->callref, -- To view, visit https://gerrit.osmocom.org/7902 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: I5c7a49b42b6ced1a5e0afb3485eaf94ef55bbf23 Gerrit-PatchSet: 1 Gerrit-Project: osmo-msc Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Neels Hofmeyr From gerrit-no-reply at lists.osmocom.org Tue Apr 24 13:57:42 2018 From: gerrit-no-reply at lists.osmocom.org (Neels Hofmeyr) Date: Tue, 24 Apr 2018 13:57:42 +0000 Subject: libosmocore[master]: gsm_utils: call gnutls_global_init() as constructor In-Reply-To: References: Message-ID: Patch Set 2: Code-Review+1 -- To view, visit https://gerrit.osmocom.org/7904 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I241b6ae5aa8df13dd78f04658cf0953e9561c9e2 Gerrit-PatchSet: 2 Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Owner: lynxis lazus Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Neels Hofmeyr Gerrit-Reviewer: Pau Espin Pedrol Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Tue Apr 24 14:00:03 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Tue, 24 Apr 2018 14:00:03 +0000 Subject: libosmocore[master]: gsm_utils: call gnutls_global_init() as constructor In-Reply-To: References: Message-ID: Patch Set 2: Code-Review-1 What about https://www.gnutls.org/manual/html_node/Core-TLS-API.html#gnutls_005fcheck_005fversion ? -- To view, visit https://gerrit.osmocom.org/7904 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I241b6ae5aa8df13dd78f04658cf0953e9561c9e2 Gerrit-PatchSet: 2 Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Owner: lynxis lazus Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Neels Hofmeyr Gerrit-Reviewer: Pau Espin Pedrol Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Tue Apr 24 14:01:49 2018 From: gerrit-no-reply at lists.osmocom.org (Neels Hofmeyr) Date: Tue, 24 Apr 2018 14:01:49 +0000 Subject: docker-playground[master]: Add Dockerfile for gerrit and monkey patch In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+1 (1 comment) https://gerrit.osmocom.org/#/c/7905/1/gerrit/Dockerfile File gerrit/Dockerfile: Line 15: zip -u /var/gerrit/bin/gerrit.war WEB-INF/lib/gerrit-openid-libopenid.jar > Maybe I should clean-up the gerrit-openid-libopenid.jar, the patch and the besides 'mkdir /tmp/work; cd /tmp/work; unzip...' and 'rm -rf /tmp/work' for politeness I assume cleaning up isn't really necessary. Doing the unzip in /tmp/work would clarify where the unzip is happening, too, it might actually be done in / right now? -- To view, visit https://gerrit.osmocom.org/7905 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I713948fbb93355c2e33e3b92969e2389cb88c938 Gerrit-PatchSet: 1 Gerrit-Project: docker-playground Gerrit-Branch: master Gerrit-Owner: Holger Freyther Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Holger Freyther Gerrit-Reviewer: Neels Hofmeyr Gerrit-HasComments: Yes From gerrit-no-reply at lists.osmocom.org Tue Apr 24 14:04:42 2018 From: gerrit-no-reply at lists.osmocom.org (Holger Freyther) Date: Tue, 24 Apr 2018 14:04:42 +0000 Subject: docker-playground[master]: Add Dockerfile for gerrit and monkey patch In-Reply-To: References: Message-ID: Patch Set 1: (1 comment) https://gerrit.osmocom.org/#/c/7905/1/gerrit/Dockerfile File gerrit/Dockerfile: Line 15: zip -u /var/gerrit/bin/gerrit.war WEB-INF/lib/gerrit-openid-libopenid.jar > besides 'mkdir /tmp/work; cd /tmp/work; unzip...' and 'rm -rf /tmp/work' fo It might give docker the opportunity to save 51k (from 1.2GB container). I think I will skip the clean-up. :} -- To view, visit https://gerrit.osmocom.org/7905 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I713948fbb93355c2e33e3b92969e2389cb88c938 Gerrit-PatchSet: 1 Gerrit-Project: docker-playground Gerrit-Branch: master Gerrit-Owner: Holger Freyther Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Holger Freyther Gerrit-Reviewer: Neels Hofmeyr Gerrit-HasComments: Yes From gerrit-no-reply at lists.osmocom.org Tue Apr 24 14:24:43 2018 From: gerrit-no-reply at lists.osmocom.org (Neels Hofmeyr) Date: Tue, 24 Apr 2018 14:24:43 +0000 Subject: osmo-bsc[master]: separate reporting of RSL link status and OML link status In-Reply-To: References: Message-ID: Patch Set 3: Code-Review-1 (5 comments) sorry to again convolute the patch with criticism of prior API state ... but here goes. What do you think? https://gerrit.osmocom.org/#/c/7574/3/src/libbsc/bts_ipaccess_nanobts.c File src/libbsc/bts_ipaccess_nanobts.c: Line 53: static char *_get_rsl_status(const struct gsm_bts *bts, bool is_oml_status) Cosmetically, I'd prefer a _get_rsl_status() without 'is_oml_status'. Then get_oml_status() uses the clean _get_rsl_status() and itself decides whether to return "connected" or "degraded". Line 67: return all_trx_rsl_connected_unlocked(bts) ? "connected" : "degraded"; The proper way to do this would be to define an enum of possible replies for get_oml_status() in gsm_data.h, accompanied by a value_string[] to convert to string. In case you decide to stay with strings, then instead of repeating the string, I'd prefer const definitions. That also guarantees that it's possible to do something like: /* static? */ const char *RSL_STR_UP = "connected"; ... if (_get_rsl_status(...) == RSL_STR_UP) return OML_STR_UP; return OML_STR_DEGRADED; (i.e. no need to strcmp() for string constants, comparing the addresses is enough. Would also work now, but only if you don't have typos anywhere.) And in case you decide to stay with strings, should return 'const char*' everywhere, not 'char*'. (and fix the API definition of oml_get_status() too; returning char* was a mistake from the start). Line 70: static char *get_rsl_status(const struct gsm_bts *bts) return const char * (or enum value) Line 75: static char *get_oml_status(const struct gsm_bts *bts) so we need to change this to const char*, too. Line 90: .rsl_status = &get_rsl_status, and change the gsm_bts_model API. I'd do that, because it lives in osmo-bsc only anyway, and passing const char* around as char* is mad. -- To view, visit https://gerrit.osmocom.org/7574 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I4bd0821503fc4407dbee8cb489675c19384de5cb Gerrit-PatchSet: 3 Gerrit-Project: osmo-bsc Gerrit-Branch: master Gerrit-Owner: Stefan Sperling Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Neels Hofmeyr Gerrit-Reviewer: Stefan Sperling Gerrit-HasComments: Yes From gerrit-no-reply at lists.osmocom.org Tue Apr 24 14:25:49 2018 From: gerrit-no-reply at lists.osmocom.org (Neels Hofmeyr) Date: Tue, 24 Apr 2018 14:25:49 +0000 Subject: osmo-bsc[master]: extend documentation of paging_flush_bts() In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7877 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Ib3f6fd4e4e6108f03d688eba2416c0714393e6e9 Gerrit-PatchSet: 1 Gerrit-Project: osmo-bsc Gerrit-Branch: master Gerrit-Owner: Stefan Sperling Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Neels Hofmeyr Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Tue Apr 24 14:26:08 2018 From: gerrit-no-reply at lists.osmocom.org (lynxis lazus) Date: Tue, 24 Apr 2018 14:26:08 +0000 Subject: [PATCH] libosmocore[master]: gsm_utils: call gnutls_global_init() as constructor In-Reply-To: References: Message-ID: Hello Pau Espin Pedrol, Neels Hofmeyr, Jenkins Builder, I'd like you to reexamine a change. Please visit https://gerrit.osmocom.org/7904 to look at the new patch set (#3). gsm_utils: call gnutls_global_init() as constructor gnutls_global_init must be called at least once for gnutls < 3.3.0. It doesn't hurt calling it twice, except a reference counter is increased. gnutls >= 3.3.0 will call it automatic. Fixes: OS#2986 Change-Id: I241b6ae5aa8df13dd78f04658cf0953e9561c9e2 --- M src/gsm/gsm_utils.c 1 file changed, 13 insertions(+), 0 deletions(-) git pull ssh://gerrit.osmocom.org:29418/libosmocore refs/changes/04/7904/3 diff --git a/src/gsm/gsm_utils.c b/src/gsm/gsm_utils.c index 5d8c834..c8e5afe 100644 --- a/src/gsm/gsm_utils.c +++ b/src/gsm/gsm_utils.c @@ -112,6 +112,19 @@ #pragma message ("including GnuTLS for getrandom fallback.") #include #include + +/* gnutls < 3.3.0 requires global init. + * gnutls >= 3.3.0 does it automatic. + * It doesn't hurt calling it twice, + * as long it's not done at the same time (threads). + */ +#if GNUTLS_VERSION_NUMBER < 0x030300 +__attribute__((constructor)) +static void on_dso_load_gnutls(void) +{ + gnutls_global_init(); +} +#endif #endif /* ETSI GSM 03.38 6.2.1 and 6.2.1.1 default alphabet -- To view, visit https://gerrit.osmocom.org/7904 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newpatchset Gerrit-Change-Id: I241b6ae5aa8df13dd78f04658cf0953e9561c9e2 Gerrit-PatchSet: 3 Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Owner: lynxis lazus Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Neels Hofmeyr Gerrit-Reviewer: Pau Espin Pedrol From gerrit-no-reply at lists.osmocom.org Tue Apr 24 14:26:09 2018 From: gerrit-no-reply at lists.osmocom.org (lynxis lazus) Date: Tue, 24 Apr 2018 14:26:09 +0000 Subject: [PATCH] libosmocore[master]: core/timer_compat: define CLOCK_BOOTTIME Message-ID: Review at https://gerrit.osmocom.org/7906 core/timer_compat: define CLOCK_BOOTTIME CLOCK_BOOTTIME was introduced with linux 2.6.38. Change-Id: Ia3d3a829700272ec8e5cf67379d8d85368230726 --- M include/osmocom/core/timer_compat.h 1 file changed, 4 insertions(+), 1 deletion(-) git pull ssh://gerrit.osmocom.org:29418/libosmocore refs/changes/06/7906/1 diff --git a/include/osmocom/core/timer_compat.h b/include/osmocom/core/timer_compat.h index 8fdd0a0..3119430 100644 --- a/include/osmocom/core/timer_compat.h +++ b/include/osmocom/core/timer_compat.h @@ -114,6 +114,9 @@ } while (0) #endif - +/* CLOCK_BOOTTIME was introduce in linux 2.6.38 */ +#ifndef CLOCK_BOOTTIME +#define CLOCK_BOOTTIME 7 +#endif /*! @} */ -- To view, visit https://gerrit.osmocom.org/7906 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Ia3d3a829700272ec8e5cf67379d8d85368230726 Gerrit-PatchSet: 1 Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Owner: lynxis lazus From gerrit-no-reply at lists.osmocom.org Tue Apr 24 14:26:09 2018 From: gerrit-no-reply at lists.osmocom.org (lynxis lazus) Date: Tue, 24 Apr 2018 14:26:09 +0000 Subject: [PATCH] libosmocore[master]: configure.ac: check clock_gettime for glib < 2.17 Message-ID: Review at https://gerrit.osmocom.org/7907 configure.ac: check clock_gettime for glib < 2.17 glib < 2.17 doesn't support clock_gettime directly, it is available via librt. Change-Id: Ice853d85ffe859b1d4df48b91b050c24d85c861b --- M configure.ac 1 file changed, 3 insertions(+), 0 deletions(-) git pull ssh://gerrit.osmocom.org:29418/libosmocore refs/changes/07/7907/1 diff --git a/configure.ac b/configure.ac index 7f2aabd..9f70925 100644 --- a/configure.ac +++ b/configure.ac @@ -76,6 +76,9 @@ # check for syscal fallback on glibc < 2.25 - can be removed once glibc version requirement is bumped AC_CHECK_DECLS([SYS_getrandom], [], [], [[#include ]]) +# check for old glibc < 2.17 to get clock_gettime +AC_SEARCH_LIBS([clock_gettime],[rt posix4]) + # The following test is taken from WebKit's webkit.m4 saved_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -fvisibility=hidden " -- To view, visit https://gerrit.osmocom.org/7907 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Ice853d85ffe859b1d4df48b91b050c24d85c861b Gerrit-PatchSet: 1 Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Owner: lynxis lazus From gerrit-no-reply at lists.osmocom.org Tue Apr 24 14:26:13 2018 From: gerrit-no-reply at lists.osmocom.org (Neels Hofmeyr) Date: Tue, 24 Apr 2018 14:26:13 +0000 Subject: [MERGED] osmo-bsc[master]: extend documentation of paging_flush_bts() In-Reply-To: References: Message-ID: Neels Hofmeyr has submitted this change and it was merged. Change subject: extend documentation of paging_flush_bts() ...................................................................... extend documentation of paging_flush_bts() Document the semantics of a NULL msc argument. Change-Id: Ib3f6fd4e4e6108f03d688eba2416c0714393e6e9 Related: OS#2901 --- M src/libbsc/paging.c 1 file changed, 1 insertion(+), 1 deletion(-) Approvals: Neels Hofmeyr: Looks good to me, approved Jenkins Builder: Verified diff --git a/src/libbsc/paging.c b/src/libbsc/paging.c index 24be692..cdcae51 100644 --- a/src/libbsc/paging.c +++ b/src/libbsc/paging.c @@ -442,7 +442,7 @@ return NULL; } -/*! Flush all paging requests at a given BTS for a given MSC*/ +/*! Flush all paging requests at a given BTS for a given MSC (or NULL if all MSC should be flushed). */ void paging_flush_bts(struct gsm_bts *bts, struct bsc_msc_data *msc) { struct gsm_paging_request *req, *req2; -- To view, visit https://gerrit.osmocom.org/7877 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: Ib3f6fd4e4e6108f03d688eba2416c0714393e6e9 Gerrit-PatchSet: 2 Gerrit-Project: osmo-bsc Gerrit-Branch: master Gerrit-Owner: Stefan Sperling Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Neels Hofmeyr From gerrit-no-reply at lists.osmocom.org Tue Apr 24 14:39:22 2018 From: gerrit-no-reply at lists.osmocom.org (Neels Hofmeyr) Date: Tue, 24 Apr 2018 14:39:22 +0000 Subject: osmo-bsc[master]: flush paging when RSL link is dropped In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 This is good for bts_ipaccess_nanobts.c. We need to discuss what to do about the other BTS models... I'm not familiar enough with those -- To view, visit https://gerrit.osmocom.org/7880 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: If4401c1139cd01faf5ff374301a9a701898c3777 Gerrit-PatchSet: 1 Gerrit-Project: osmo-bsc Gerrit-Branch: master Gerrit-Owner: Stefan Sperling Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Neels Hofmeyr Gerrit-Reviewer: dexter Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Tue Apr 24 14:45:08 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Tue, 24 Apr 2018 14:45:08 +0000 Subject: libosmocore[master]: gsm_utils: call gnutls_global_init() as constructor In-Reply-To: References: Message-ID: Patch Set 3: Code-Review-1 We should check the version at runtime, not at compilation time. Check he API I showed you above. -- To view, visit https://gerrit.osmocom.org/7904 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I241b6ae5aa8df13dd78f04658cf0953e9561c9e2 Gerrit-PatchSet: 3 Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Owner: lynxis lazus Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Neels Hofmeyr Gerrit-Reviewer: Pau Espin Pedrol Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Tue Apr 24 14:46:38 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Tue, 24 Apr 2018 14:46:38 +0000 Subject: libosmocore[master]: core/timer_compat: define CLOCK_BOOTTIME In-Reply-To: References: Message-ID: Patch Set 1: (1 comment) https://gerrit.osmocom.org/#/c/7906/1/include/osmocom/core/timer_compat.h File include/osmocom/core/timer_compat.h: Line 117: /* CLOCK_BOOTTIME was introduce in linux 2.6.38 */ typo: introduced -- To view, visit https://gerrit.osmocom.org/7906 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Ia3d3a829700272ec8e5cf67379d8d85368230726 Gerrit-PatchSet: 1 Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Owner: lynxis lazus Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Pau Espin Pedrol Gerrit-HasComments: Yes From gerrit-no-reply at lists.osmocom.org Tue Apr 24 14:47:32 2018 From: gerrit-no-reply at lists.osmocom.org (Neels Hofmeyr) Date: Tue, 24 Apr 2018 14:47:32 +0000 Subject: osmo-hlr[master]: rewrite subscriber_update_notify() without calls into luop In-Reply-To: References: Message-ID: Patch Set 5: Code-Review-1 (5 comments) sorry to -1 again, but... https://gerrit.osmocom.org/#/c/7743/5/src/hlr.c File src/hlr.c: Line 78: "IMSI='%s': Cannot notify GSUP client, cannot get peer name " still unaddressed: double space in string Line 101: len = osmo_apn_from_str(apn, sizeof(apn), "*"); I still think these bits could be in a common function used by luop and this function, to avoid code dup from the start. Line 111: gsup.cn_domain = OSMO_GSUP_CN_DOMAIN_CS; unaddressed comment: if neither CS nor PS has been seen, skip this item, since we then don't have any LU ops and no subscribers that need updating. Line 117: "IMSI='%s': Cannot notify GSUP client; could not allocate msg buffer " double space Line 127: "IMSI='%s': Cannot notify GSUP client; send operation failed " double space -- To view, visit https://gerrit.osmocom.org/7743 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I06c43ece2b48dc63d599000eb6d6d51e08963067 Gerrit-PatchSet: 5 Gerrit-Project: osmo-hlr Gerrit-Branch: master Gerrit-Owner: Stefan Sperling Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Neels Hofmeyr Gerrit-Reviewer: Stefan Sperling Gerrit-Reviewer: neels Gerrit-HasComments: Yes From gerrit-no-reply at lists.osmocom.org Tue Apr 24 14:49:39 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Tue, 24 Apr 2018 14:49:39 +0000 Subject: libosmocore[master]: configure.ac: check clock_gettime for glib < 2.17 In-Reply-To: References: Message-ID: Patch Set 1: (1 comment) https://gerrit.osmocom.org/#/c/7907/1/configure.ac File configure.ac: Line 80: AC_SEARCH_LIBS([clock_gettime],[rt posix4]) As far as I understand, this populates LIBS var. Do we need to use it somewhere or is it always added to all targets? -- To view, visit https://gerrit.osmocom.org/7907 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Ice853d85ffe859b1d4df48b91b050c24d85c861b Gerrit-PatchSet: 1 Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Owner: lynxis lazus Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Pau Espin Pedrol Gerrit-HasComments: Yes From gerrit-no-reply at lists.osmocom.org Tue Apr 24 14:49:47 2018 From: gerrit-no-reply at lists.osmocom.org (Neels Hofmeyr) Date: Tue, 24 Apr 2018 14:49:47 +0000 Subject: libosmocore[master]: core/timer_compat: define CLOCK_BOOTTIME In-Reply-To: References: Message-ID: Patch Set 1: (1 comment) https://gerrit.osmocom.org/#/c/7906/1/include/osmocom/core/timer_compat.h File include/osmocom/core/timer_compat.h: Line 119: #define CLOCK_BOOTTIME 7 so what does the magic 7 do in pre-2.6.38 kernels? -- To view, visit https://gerrit.osmocom.org/7906 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Ia3d3a829700272ec8e5cf67379d8d85368230726 Gerrit-PatchSet: 1 Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Owner: lynxis lazus Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Neels Hofmeyr Gerrit-Reviewer: Pau Espin Pedrol Gerrit-HasComments: Yes From gerrit-no-reply at lists.osmocom.org Tue Apr 24 14:56:18 2018 From: gerrit-no-reply at lists.osmocom.org (lynxis lazus) Date: Tue, 24 Apr 2018 14:56:18 +0000 Subject: libosmocore[master]: core/timer_compat: define CLOCK_BOOTTIME In-Reply-To: References: Message-ID: Patch Set 1: Code-Review-1 (1 comment) https://gerrit.osmocom.org/#/c/7906/1/include/osmocom/core/timer_compat.h File include/osmocom/core/timer_compat.h: Line 119: #define CLOCK_BOOTTIME 7 > so what does the magic 7 do in pre-2.6.38 kernels? true. I've to take another look on this. It seems we need then a lot of ifdefs. -- To view, visit https://gerrit.osmocom.org/7906 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Ia3d3a829700272ec8e5cf67379d8d85368230726 Gerrit-PatchSet: 1 Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Owner: lynxis lazus Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Neels Hofmeyr Gerrit-Reviewer: Pau Espin Pedrol Gerrit-Reviewer: lynxis lazus Gerrit-HasComments: Yes From gerrit-no-reply at lists.osmocom.org Tue Apr 24 14:57:16 2018 From: gerrit-no-reply at lists.osmocom.org (lynxis lazus) Date: Tue, 24 Apr 2018 14:57:16 +0000 Subject: libosmocore[master]: configure.ac: check clock_gettime for glib < 2.17 In-Reply-To: References: Message-ID: Patch Set 1: (1 comment) https://gerrit.osmocom.org/#/c/7907/1/configure.ac File configure.ac: Line 80: AC_SEARCH_LIBS([clock_gettime],[rt posix4]) > As far as I understand, this populates LIBS var. Do we need to use it somew True. If you like, you can take over this patchset. -- To view, visit https://gerrit.osmocom.org/7907 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Ice853d85ffe859b1d4df48b91b050c24d85c861b Gerrit-PatchSet: 1 Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Owner: lynxis lazus Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Pau Espin Pedrol Gerrit-Reviewer: lynxis lazus Gerrit-HasComments: Yes From gerrit-no-reply at lists.osmocom.org Tue Apr 24 15:01:16 2018 From: gerrit-no-reply at lists.osmocom.org (Neels Hofmeyr) Date: Tue, 24 Apr 2018 15:01:16 +0000 Subject: osmo-bsc[master]: pcu_sock: reorganize calculation of paging group In-Reply-To: References: Message-ID: Patch Set 2: Code-Review+1 slightly confused: so the master state has changed, apparently out-sourcing the paging group calculation to separate bts model code, for what was the second invocation. Hence this code no longer is duplicated. Though a bit obsolete now, I think it's a nice cosmetic to wrap it in a separate static function, but the commit log is wrong now. Would it make sense to re-use that new function in the bts models' code? -- To view, visit https://gerrit.osmocom.org/6204 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Iee8926d5bc017d912912916e4898e968bf4dd29b Gerrit-PatchSet: 2 Gerrit-Project: osmo-bsc Gerrit-Branch: master Gerrit-Owner: lynxis lazus Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Neels Hofmeyr Gerrit-Reviewer: dexter Gerrit-Reviewer: lynxis lazus Gerrit-HasComments: No From jenkins at lists.osmocom.org Tue Apr 24 15:10:07 2018 From: jenkins at lists.osmocom.org (jenkins at lists.osmocom.org) Date: Tue, 24 Apr 2018 15:10:07 +0000 (UTC) Subject: =?UTF-8?Q?Build_failed_in_Jenkins:_master-asn1c_=C2=BB_a1=3Ddefault?= =?UTF-8?Q?,a2=3Ddefault,a3=3Ddefault,osmocom-master-debian9_#102?= In-Reply-To: <1073965318.34.1524496206729.JavaMail.jenkins@jenkins.osmocom.org> References: <1073965318.34.1524496206729.JavaMail.jenkins@jenkins.osmocom.org> Message-ID: <718418774.57.1524582607178.JavaMail.jenkins@jenkins.osmocom.org> See ------------------------------------------ [...truncated 3.74 KB...] checking build system type... x86_64-unknown-linux-gnu checking host system type... x86_64-unknown-linux-gnu checking target system type... x86_64-unknown-linux-gnu checking for a BSD-compatible install... /usr/bin/install -c checking whether build environment is sane... yes checking for gawk... gawk checking whether make sets $(MAKE)... yes checking whether to enable maintainer-specific portions of Makefiles... no checking for style of include used by make... GNU checking for gcc... gcc checking for C compiler default output file name... a.out checking whether the C compiler works... yes checking whether we are cross compiling... no checking for suffix of executables... checking for suffix of object files... o checking whether we are using the GNU C compiler... yes checking whether gcc accepts -g... yes checking for gcc option to accept ISO C89... none needed checking dependency style of gcc... gcc3 checking for a sed that does not truncate output... /bin/sed checking for grep that handles long lines and -e... /bin/grep checking for egrep... /bin/grep -E checking for ld used by gcc... /usr/bin/ld checking if the linker (/usr/bin/ld) is GNU ld... yes checking for /usr/bin/ld option to reload object files... -r checking for BSD-compatible nm... /usr/bin/nm -B checking whether ln -s works... yes checking how to recognise dependent libraries... pass_all checking how to run the C preprocessor... gcc -E checking for ANSI C header files... yes checking for sys/types.h... yes checking for sys/stat.h... yes checking for stdlib.h... yes checking for string.h... yes checking for memory.h... yes checking for strings.h... yes checking for inttypes.h... yes checking for stdint.h... yes checking for unistd.h... yes checking dlfcn.h usability... yes checking dlfcn.h presence... yes checking for dlfcn.h... yes checking for g++... g++ checking whether we are using the GNU C++ compiler... yes checking whether g++ accepts -g... yes checking dependency style of g++... gcc3 checking how to run the C++ preprocessor... g++ -E checking for g77... no checking for f77... no checking for xlf... no checking for frt... no checking for pgf77... no checking for cf77... no checking for fort77... no checking for fl32... no checking for af77... no checking for f90... no checking for xlf90... no checking for pgf90... no checking for pghpf... no checking for epcf90... no checking for gfortran... no checking for g95... no checking for f95... no checking for fort... no checking for xlf95... no checking for ifort... no checking for ifc... no checking for efc... no checking for pgf95... no checking for lf95... no checking for ftn... no checking whether we are using the GNU Fortran 77 compiler... no checking whether accepts -g... no checking the maximum length of command line arguments... 32768 checking command to parse /usr/bin/nm -B output from gcc object... ok checking for objdir... .libs checking for ar... ar checking for ranlib... ranlib checking for strip... strip checking if gcc supports -fno-rtti -fno-exceptions... no checking for gcc option to produce PIC... -fPIC checking if gcc PIC flag -fPIC works... yes checking if gcc static flag -static works... yes checking if gcc supports -c -o file.o... yes checking whether the gcc linker (/usr/bin/ld -m elf_x86_64) supports shared libraries... yes checking whether -lc should be explicitly linked in... no checking dynamic linker characteristics... GNU/Linux ld.so checking how to hardcode library paths into programs... immediate checking whether stripping libraries is possible... yes checking if libtool supports shared libraries... yes checking whether to build shared libraries... yes checking whether to build static libraries... yes configure: creating libtool appending configuration tag "CXX" to libtool checking for ld used by g++... /usr/bin/ld -m elf_x86_64 checking if the linker (/usr/bin/ld -m elf_x86_64) is GNU ld... yes checking whether the g++ linker (/usr/bin/ld -m elf_x86_64) supports shared libraries... yes checking for g++ option to produce PIC... -fPIC checking if g++ PIC flag -fPIC works... yes checking if g++ static flag -static works... yes checking if g++ supports -c -o file.o... yes checking whether the g++ linker (/usr/bin/ld -m elf_x86_64) supports shared libraries... yes checking dynamic linker characteristics... GNU/Linux ld.so checking how to hardcode library paths into programs... immediate appending configuration tag "F77" to libtool checking for autoconf... /usr/bin/autoconf checking for autoheader... /usr/bin/autoheader checking for gcc... (cached) gcc checking whether we are using the GNU C compiler... (cached) yes checking whether gcc accepts -g... (cached) yes checking for gcc option to accept ISO C89... (cached) none needed checking dependency style of gcc... (cached) gcc3 checking how to run the C preprocessor... gcc -E checking for a BSD-compatible install... /usr/bin/install -c checking whether ln -s works... yes checking whether make sets $(MAKE)... (cached) yes checking for bison... bison -y checking for flex... flex checking for yywrap in -lfl... yes checking lex output file root... lex.yy checking whether yytext is a pointer... yes checking for ar... /usr/bin/ar checking for ANSI C header files... (cached) yes checking sys/param.h usability... yes checking sys/param.h presence... yes checking for sys/param.h... yes checking whether byte ordering is bigendian... no checking for off_t... yes checking for size_t... yes checking whether struct tm is in sys/time.h or time.h... time.h checking for intmax_t... yes checking for library containing getopt... none required checking for strtoimax... yes checking for strtoll... yes checking for mergesort... no checking for mkstemps... yes configure: creating ./config.status config.status: creating skeletons/standard-modules/Makefile config.status: creating skeletons/tests/Makefile config.status: creating libasn1compiler/Makefile config.status: creating libasn1parser/Makefile config.status: creating libasn1print/Makefile config.status: creating asn1c/webcgi/Makefile config.status: creating asn1c/tests/Makefile config.status: creating libasn1fix/Makefile config.status: creating skeletons/Makefile config.status: creating examples/Makefile config.status: creating tests/Makefile config.status: creating asn1c/Makefile config.status: creating doc/Makefile config.status: creating asn1c.spec config.status: creating Makefile config.status: creating config.h config.status: executing depfiles commands + make -j 8 make all-recursive make[1]: Entering directory ' Making all in libasn1parser make[2]: Entering directory ' if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1parser.lo -MD -MP -MF ".deps/asn1parser.Tpo" -c -o asn1parser.lo asn1parser.c; \ then mv -f ".deps/asn1parser.Tpo" ".deps/asn1parser.Plo"; else rm -f ".deps/asn1parser.Tpo"; exit 1; fi bison -y -p asn1p_ -d asn1p_y.y flex -s -p -Cem -Pasn1p_ -olex.yy.c asn1p_l.l if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_module.lo -MD -MP -MF ".deps/asn1p_module.Tpo" -c -o asn1p_module.lo asn1p_module.c; \ then mv -f ".deps/asn1p_module.Tpo" ".deps/asn1p_module.Plo"; else rm -f ".deps/asn1p_module.Tpo"; exit 1; fi if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_oid.lo -MD -MP -MF ".deps/asn1p_oid.Tpo" -c -o asn1p_oid.lo asn1p_oid.c; \ then mv -f ".deps/asn1p_oid.Tpo" ".deps/asn1p_oid.Plo"; else rm -f ".deps/asn1p_oid.Tpo"; exit 1; fi if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_value.lo -MD -MP -MF ".deps/asn1p_value.Tpo" -c -o asn1p_value.lo asn1p_value.c; \ then mv -f ".deps/asn1p_value.Tpo" ".deps/asn1p_value.Plo"; else rm -f ".deps/asn1p_value.Tpo"; exit 1; fi if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_expr.lo -MD -MP -MF ".deps/asn1p_expr.Tpo" -c -o asn1p_expr.lo asn1p_expr.c; \ then mv -f ".deps/asn1p_expr.Tpo" ".deps/asn1p_expr.Plo"; else rm -f ".deps/asn1p_expr.Tpo"; exit 1; fi if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_xports.lo -MD -MP -MF ".deps/asn1p_xports.Tpo" -c -o asn1p_xports.lo asn1p_xports.c; \ then mv -f ".deps/asn1p_xports.Tpo" ".deps/asn1p_xports.Plo"; else rm -f ".deps/asn1p_xports.Tpo"; exit 1; fi %option yylineno entails a performance penalty ONLY on rules that can match newline characters REJECT entails a large performance penalty asn1p_y.y: warning: 2 shift/reduce conflicts [-Wconflicts-sr] sed '/^#/ s|lex.yy\.c|asn1p_l.c|' lex.yy.c >asn1p_l.c rm -f lex.yy.c if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_constr.lo -MD -MP -MF ".deps/asn1p_constr.Tpo" -c -o asn1p_constr.lo asn1p_constr.c; \ then mv -f ".deps/asn1p_constr.Tpo" ".deps/asn1p_constr.Plo"; else rm -f ".deps/asn1p_constr.Tpo"; exit 1; fi mkdir .libs gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_expr.lo -MD -MP -MF .deps/asn1p_expr.Tpo -c asn1p_expr.c -fPIC -DPIC -o .libs/asn1p_expr.o gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_oid.lo -MD -MP -MF .deps/asn1p_oid.Tpo -c asn1p_oid.c -fPIC -DPIC -o .libs/asn1p_oid.o gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_module.lo -MD -MP -MF .deps/asn1p_module.Tpo -c asn1p_module.c -fPIC -DPIC -o .libs/asn1p_module.o gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_value.lo -MD -MP -MF .deps/asn1p_value.Tpo -c asn1p_value.c -fPIC -DPIC -o .libs/asn1p_value.o gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1parser.lo -MD -MP -MF .deps/asn1parser.Tpo -c asn1parser.c -fPIC -DPIC -o .libs/asn1parser.o gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_xports.lo -MD -MP -MF .deps/asn1p_xports.Tpo -c asn1p_xports.c -fPIC -DPIC -o .libs/asn1p_xports.o gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_xports.lo -MD -MP -MF .deps/asn1p_xports.Tpo -c asn1p_xports.c -o asn1p_xports.o >/dev/null 2>&1 gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_constr.lo -MD -MP -MF .deps/asn1p_constr.Tpo -c asn1p_constr.c -fPIC -DPIC -o .libs/asn1p_constr.o gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_module.lo -MD -MP -MF .deps/asn1p_module.Tpo -c asn1p_module.c -o asn1p_module.o >/dev/null 2>&1 gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_oid.lo -MD -MP -MF .deps/asn1p_oid.Tpo -c asn1p_oid.c -o asn1p_oid.o >/dev/null 2>&1 gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1parser.lo -MD -MP -MF .deps/asn1parser.Tpo -c asn1parser.c -o asn1parser.o >/dev/null 2>&1 if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_param.lo -MD -MP -MF ".deps/asn1p_param.Tpo" -c -o asn1p_param.lo asn1p_param.c; \ then mv -f ".deps/asn1p_param.Tpo" ".deps/asn1p_param.Plo"; else rm -f ".deps/asn1p_param.Tpo"; exit 1; fi gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_expr.lo -MD -MP -MF .deps/asn1p_expr.Tpo -c asn1p_expr.c -o asn1p_expr.o >/dev/null 2>&1 gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_value.lo -MD -MP -MF .deps/asn1p_value.Tpo -c asn1p_value.c -o asn1p_value.o >/dev/null 2>&1 if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_class.lo -MD -MP -MF ".deps/asn1p_class.Tpo" -c -o asn1p_class.lo asn1p_class.c; \ then mv -f ".deps/asn1p_class.Tpo" ".deps/asn1p_class.Plo"; else rm -f ".deps/asn1p_class.Tpo"; exit 1; fi gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_constr.lo -MD -MP -MF .deps/asn1p_constr.Tpo -c asn1p_constr.c -o asn1p_constr.o >/dev/null 2>&1 if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_ref.lo -MD -MP -MF ".deps/asn1p_ref.Tpo" -c -o asn1p_ref.lo asn1p_ref.c; \ then mv -f ".deps/asn1p_ref.Tpo" ".deps/asn1p_ref.Plo"; else rm -f ".deps/asn1p_ref.Tpo"; exit 1; fi if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_l.lo -MD -MP -MF ".deps/asn1p_l.Tpo" -c -o asn1p_l.lo asn1p_l.c; \ then mv -f ".deps/asn1p_l.Tpo" ".deps/asn1p_l.Plo"; else rm -f ".deps/asn1p_l.Tpo"; exit 1; fi gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_param.lo -MD -MP -MF .deps/asn1p_param.Tpo -c asn1p_param.c -fPIC -DPIC -o .libs/asn1p_param.o gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_class.lo -MD -MP -MF .deps/asn1p_class.Tpo -c asn1p_class.c -fPIC -DPIC -o .libs/asn1p_class.o gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_ref.lo -MD -MP -MF .deps/asn1p_ref.Tpo -c asn1p_ref.c -fPIC -DPIC -o .libs/asn1p_ref.o if test -f y.tab.h; then \ to=`echo "asn1p_y_H" | sed \ -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/' \ -e 's/[^ABCDEFGHIJKLMNOPQRSTUVWXYZ]/_/g'`; \ sed -e "/^#/!b" -e "s/Y_TAB_H/$to/g" -e "s|y\.tab\.h|asn1p_y.h|" \ y.tab.h >asn1p_y.ht; \ rm -f y.tab.h; \ if cmp -s asn1p_y.ht asn1p_y.h; then \ rm -f asn1p_y.ht ;\ else \ mv asn1p_y.ht asn1p_y.h; \ fi; \ fi gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_l.lo -MD -MP -MF .deps/asn1p_l.Tpo -c asn1p_l.c -fPIC -DPIC -o .libs/asn1p_l.o if test -f y.output; then \ mv y.output asn1p_y.output; \ fi sed '/^#/ s|y\.tab\.c|asn1p_y.c|' y.tab.c >asn1p_y.ct && mv asn1p_y.ct asn1p_y.c gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_param.lo -MD -MP -MF .deps/asn1p_param.Tpo -c asn1p_param.c -o asn1p_param.o >/dev/null 2>&1 rm -f y.tab.c if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_y.lo -MD -MP -MF ".deps/asn1p_y.Tpo" -c -o asn1p_y.lo asn1p_y.c; \ then mv -f ".deps/asn1p_y.Tpo" ".deps/asn1p_y.Plo"; else rm -f ".deps/asn1p_y.Tpo"; exit 1; fi gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_class.lo -MD -MP -MF .deps/asn1p_class.Tpo -c asn1p_class.c -o asn1p_class.o >/dev/null 2>&1 gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_ref.lo -MD -MP -MF .deps/asn1p_ref.Tpo -c asn1p_ref.c -o asn1p_ref.o >/dev/null 2>&1 gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_y.lo -MD -MP -MF .deps/asn1p_y.Tpo -c asn1p_y.c -fPIC -DPIC -o .libs/asn1p_y.o asn1p_y.y: In function 'asn1p_parse': asn1p_y.y:357:13: error: 'param' undeclared (first use in this function) *(void **)param = $1; ^~~~~ asn1p_y.y:357:13: note: each undeclared identifier is reported only once for each function it appears in Makefile:299: recipe for target 'asn1p_y.lo' failed make[2]: *** [asn1p_y.lo] Error 1 make[2]: *** Waiting for unfinished jobs.... gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_l.lo -MD -MP -MF .deps/asn1p_l.Tpo -c asn1p_l.c -o asn1p_l.o >/dev/null 2>&1 make[2]: Leaving directory ' Makefile:302: recipe for target 'all-recursive' failed make[1]: *** [all-recursive] Error 1 make[1]: Leaving directory ' Makefile:212: recipe for target 'all' failed make: *** [all] Error 2 Build step 'Execute shell' marked build as failure [WARNINGS] Skipping publisher since build result is FAILURE From gerrit-no-reply at lists.osmocom.org Tue Apr 24 15:32:30 2018 From: gerrit-no-reply at lists.osmocom.org (lynxis lazus) Date: Tue, 24 Apr 2018 15:32:30 +0000 Subject: libosmocore[master]: gsm_utils: call gnutls_global_init() as constructor In-Reply-To: References: Message-ID: Patch Set 3: Code-Review-1 -- To view, visit https://gerrit.osmocom.org/7904 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I241b6ae5aa8df13dd78f04658cf0953e9561c9e2 Gerrit-PatchSet: 3 Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Owner: lynxis lazus Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Neels Hofmeyr Gerrit-Reviewer: Pau Espin Pedrol Gerrit-Reviewer: lynxis lazus Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Tue Apr 24 15:46:41 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Tue, 24 Apr 2018 15:46:41 +0000 Subject: [PATCH] libusrp[master]: Makefile.common: Fix typo preventing build Message-ID: Review at https://gerrit.osmocom.org/7908 Makefile.common: Fix typo preventing build Change-Id: Ib38f6c38e5a40bd11e7b42285d2e244b3f54e0b2 --- M Makefile.common 1 file changed, 1 insertion(+), 1 deletion(-) git pull ssh://gerrit.osmocom.org:29418/libusrp refs/changes/08/7908/1 diff --git a/Makefile.common b/Makefile.common index a7ad739..5b99f08 100644 --- a/Makefile.common +++ b/Makefile.common @@ -96,7 +96,7 @@ # How to link in the USRP library from inside the tree USRP_INCLUDES = \ - -I$(abs_top_srcdir)/ost/include \ + -I$(abs_top_srcdir)/host/include \ -I$(abs_top_builddir)/host/include \ -I$(abs_top_srcdir)/firmware/include \ $(NULL) -- To view, visit https://gerrit.osmocom.org/7908 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Ib38f6c38e5a40bd11e7b42285d2e244b3f54e0b2 Gerrit-PatchSet: 1 Gerrit-Project: libusrp Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol From gerrit-no-reply at lists.osmocom.org Tue Apr 24 15:46:42 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Tue, 24 Apr 2018 15:46:42 +0000 Subject: [PATCH] libusrp[master]: gitignore: Remove and ignore libtool related m4 files Message-ID: Review at https://gerrit.osmocom.org/7909 gitignore: Remove and ignore libtool related m4 files Change-Id: I05278c823ca76644ce4e494ff4c7de95e42d4f20 --- M .gitignore D m4/libtool.m4 D m4/ltoptions.m4 D m4/ltsugar.m4 D m4/ltversion.m4 D m4/lt~obsolete.m4 6 files changed, 2 insertions(+), 9,070 deletions(-) git pull ssh://gerrit.osmocom.org:29418/libusrp refs/changes/09/7909/1 -- To view, visit https://gerrit.osmocom.org/7909 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I05278c823ca76644ce4e494ff4c7de95e42d4f20 Gerrit-PatchSet: 1 Gerrit-Project: libusrp Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol From gerrit-no-reply at lists.osmocom.org Tue Apr 24 15:46:43 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Tue, 24 Apr 2018 15:46:43 +0000 Subject: [PATCH] libusrp[master]: usrp.pc.in: Fix version in output pc file Message-ID: Review at https://gerrit.osmocom.org/7910 usrp.pc.in: Fix version in output pc file Change-Id: If9906a54175146cf80ea793a5ae40a7b4a005775 --- M usrp.pc.in 1 file changed, 1 insertion(+), 1 deletion(-) git pull ssh://gerrit.osmocom.org:29418/libusrp refs/changes/10/7910/1 diff --git a/usrp.pc.in b/usrp.pc.in index 3c30de6..d4794aa 100644 --- a/usrp.pc.in +++ b/usrp.pc.in @@ -6,6 +6,6 @@ Name: usrp Description: USRP Client Side C++ interface Requires: @LIBUSB_PKG_CONFIG_NAME@ -Version: @LIBVER@ +Version: @VERSION@ Libs: -L${libdir} -lusrp Cflags: -I${includedir} -- To view, visit https://gerrit.osmocom.org/7910 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: If9906a54175146cf80ea793a5ae40a7b4a005775 Gerrit-PatchSet: 1 Gerrit-Project: libusrp Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol From gerrit-no-reply at lists.osmocom.org Tue Apr 24 15:46:44 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Tue, 24 Apr 2018 15:46:44 +0000 Subject: [PATCH] libusrp[master]: configure.ac: Call USRP_LIBUSB m4 macro to define LIBUSB_PKG... Message-ID: Review at https://gerrit.osmocom.org/7911 configure.ac: Call USRP_LIBUSB m4 macro to define LIBUSB_PKG_CONFIG_NAME That variable is expected to be used by usrp.pc.in Change-Id: Ia5f7ec69701abff91ff8e903e0fd53f8d9fbfba6 --- M configure.ac 1 file changed, 1 insertion(+), 1 deletion(-) git pull ssh://gerrit.osmocom.org:29418/libusrp refs/changes/11/7911/1 diff --git a/configure.ac b/configure.ac index f923786..dba397c 100644 --- a/configure.ac +++ b/configure.ac @@ -3,7 +3,7 @@ AM_SILENT_RULES([yes]) AC_CONFIG_MACRO_DIRS([m4]) - +USRP_LIBUSB AC_PROG_CXX LT_INIT([pic-only disable-static]) -- To view, visit https://gerrit.osmocom.org/7911 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Ia5f7ec69701abff91ff8e903e0fd53f8d9fbfba6 Gerrit-PatchSet: 1 Gerrit-Project: libusrp Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol From gerrit-no-reply at lists.osmocom.org Tue Apr 24 16:18:00 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Tue, 24 Apr 2018 16:18:00 +0000 Subject: libusrp[master]: Makefile.common: Fix typo preventing build In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 (1 comment) https://gerrit.osmocom.org/#/c/7908/1/Makefile.common File Makefile.common: Line 99 no why do I have to think of French pronunciation here? ;) -- To view, visit https://gerrit.osmocom.org/7908 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Ib38f6c38e5a40bd11e7b42285d2e244b3f54e0b2 Gerrit-PatchSet: 1 Gerrit-Project: libusrp Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-HasComments: Yes From gerrit-no-reply at lists.osmocom.org Tue Apr 24 16:18:03 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Tue, 24 Apr 2018 16:18:03 +0000 Subject: [MERGED] libusrp[master]: Makefile.common: Fix typo preventing build In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: Makefile.common: Fix typo preventing build ...................................................................... Makefile.common: Fix typo preventing build Change-Id: Ib38f6c38e5a40bd11e7b42285d2e244b3f54e0b2 --- M Makefile.common 1 file changed, 1 insertion(+), 1 deletion(-) Approvals: Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/Makefile.common b/Makefile.common index a7ad739..5b99f08 100644 --- a/Makefile.common +++ b/Makefile.common @@ -96,7 +96,7 @@ # How to link in the USRP library from inside the tree USRP_INCLUDES = \ - -I$(abs_top_srcdir)/ost/include \ + -I$(abs_top_srcdir)/host/include \ -I$(abs_top_builddir)/host/include \ -I$(abs_top_srcdir)/firmware/include \ $(NULL) -- To view, visit https://gerrit.osmocom.org/7908 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: Ib38f6c38e5a40bd11e7b42285d2e244b3f54e0b2 Gerrit-PatchSet: 1 Gerrit-Project: libusrp Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder From gerrit-no-reply at lists.osmocom.org Tue Apr 24 16:18:17 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Tue, 24 Apr 2018 16:18:17 +0000 Subject: libusrp[master]: gitignore: Remove and ignore libtool related m4 files In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7909 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I05278c823ca76644ce4e494ff4c7de95e42d4f20 Gerrit-PatchSet: 1 Gerrit-Project: libusrp Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Tue Apr 24 16:18:23 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Tue, 24 Apr 2018 16:18:23 +0000 Subject: libusrp[master]: usrp.pc.in: Fix version in output pc file In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7910 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: If9906a54175146cf80ea793a5ae40a7b4a005775 Gerrit-PatchSet: 1 Gerrit-Project: libusrp Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Tue Apr 24 16:18:41 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Tue, 24 Apr 2018 16:18:41 +0000 Subject: [MERGED] libusrp[master]: usrp.pc.in: Fix version in output pc file In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: usrp.pc.in: Fix version in output pc file ...................................................................... usrp.pc.in: Fix version in output pc file Change-Id: If9906a54175146cf80ea793a5ae40a7b4a005775 --- M usrp.pc.in 1 file changed, 1 insertion(+), 1 deletion(-) Approvals: Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/usrp.pc.in b/usrp.pc.in index 3c30de6..d4794aa 100644 --- a/usrp.pc.in +++ b/usrp.pc.in @@ -6,6 +6,6 @@ Name: usrp Description: USRP Client Side C++ interface Requires: @LIBUSB_PKG_CONFIG_NAME@ -Version: @LIBVER@ +Version: @VERSION@ Libs: -L${libdir} -lusrp Cflags: -I${includedir} -- To view, visit https://gerrit.osmocom.org/7910 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: If9906a54175146cf80ea793a5ae40a7b4a005775 Gerrit-PatchSet: 1 Gerrit-Project: libusrp Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder From gerrit-no-reply at lists.osmocom.org Tue Apr 24 16:18:41 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Tue, 24 Apr 2018 16:18:41 +0000 Subject: [MERGED] libusrp[master]: gitignore: Remove and ignore libtool related m4 files In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: gitignore: Remove and ignore libtool related m4 files ...................................................................... gitignore: Remove and ignore libtool related m4 files Change-Id: I05278c823ca76644ce4e494ff4c7de95e42d4f20 --- M .gitignore D m4/libtool.m4 D m4/ltoptions.m4 D m4/ltsugar.m4 D m4/ltversion.m4 D m4/lt~obsolete.m4 6 files changed, 2 insertions(+), 9,070 deletions(-) Approvals: Harald Welte: Looks good to me, approved Jenkins Builder: Verified -- To view, visit https://gerrit.osmocom.org/7909 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: I05278c823ca76644ce4e494ff4c7de95e42d4f20 Gerrit-PatchSet: 1 Gerrit-Project: libusrp Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder From gerrit-no-reply at lists.osmocom.org Tue Apr 24 16:19:07 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Tue, 24 Apr 2018 16:19:07 +0000 Subject: osmo-bsc[master]: flush paging when RSL link is dropped In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7880 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: If4401c1139cd01faf5ff374301a9a701898c3777 Gerrit-PatchSet: 1 Gerrit-Project: osmo-bsc Gerrit-Branch: master Gerrit-Owner: Stefan Sperling Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Neels Hofmeyr Gerrit-Reviewer: dexter Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Tue Apr 24 16:19:20 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Tue, 24 Apr 2018 16:19:20 +0000 Subject: [MERGED] osmo-bsc[master]: flush paging when RSL link is dropped In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: flush paging when RSL link is dropped ...................................................................... flush paging when RSL link is dropped Flush the paging queue if the link to TRX 0 is dropped from a BTS. This should prevent stale paging requests sent to the BTS when it disconnects or reconnects, as seen in the TTCN3 BSC_Tests test suite. Also, add entries to the log when RSL or OML links are dropped so that related error messages in the log can be interpreted in context. Change-Id: If4401c1139cd01faf5ff374301a9a701898c3777 Related: OS#2901 --- M src/libbsc/bts_ipaccess_nanobts.c 1 file changed, 6 insertions(+), 0 deletions(-) Approvals: dexter: Looks good to me, but someone else must approve Neels Hofmeyr: Looks good to me, approved Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/src/libbsc/bts_ipaccess_nanobts.c b/src/libbsc/bts_ipaccess_nanobts.c index 4f1ac4b..d94a878 100644 --- a/src/libbsc/bts_ipaccess_nanobts.c +++ b/src/libbsc/bts_ipaccess_nanobts.c @@ -41,6 +41,7 @@ #include #include #include +#include extern struct gsm_network *bsc_gsmnet; @@ -357,8 +358,12 @@ if (!trx->rsl_link) return; + LOGP(DLINP, LOGL_NOTICE, "(bts=%d,trx=%d) Dropping RSL link.\n", trx->bts->nr, trx->nr); e1inp_sign_link_destroy(trx->rsl_link); trx->rsl_link = NULL; + + if (trx->bts->c0 == trx) + paging_flush_bts(trx->bts, NULL); } void ipaccess_drop_oml(struct gsm_bts *bts) @@ -369,6 +374,7 @@ if (!bts->oml_link) return; + LOGP(DLINP, LOGL_NOTICE, "(bts=%d) Dropping OML link.\n", bts->nr); e1inp_sign_link_destroy(bts->oml_link); bts->oml_link = NULL; bts->uptime = 0; -- To view, visit https://gerrit.osmocom.org/7880 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: If4401c1139cd01faf5ff374301a9a701898c3777 Gerrit-PatchSet: 2 Gerrit-Project: osmo-bsc Gerrit-Branch: master Gerrit-Owner: Stefan Sperling Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Neels Hofmeyr Gerrit-Reviewer: dexter From gerrit-no-reply at lists.osmocom.org Tue Apr 24 16:19:47 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Tue, 24 Apr 2018 16:19:47 +0000 Subject: docker-playground[master]: Add Dockerfile for gerrit and monkey patch In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 Verified+1 -- To view, visit https://gerrit.osmocom.org/7905 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I713948fbb93355c2e33e3b92969e2389cb88c938 Gerrit-PatchSet: 1 Gerrit-Project: docker-playground Gerrit-Branch: master Gerrit-Owner: Holger Freyther Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Holger Freyther Gerrit-Reviewer: Neels Hofmeyr Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Tue Apr 24 16:19:49 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Tue, 24 Apr 2018 16:19:49 +0000 Subject: [MERGED] docker-playground[master]: Add Dockerfile for gerrit and monkey patch In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: Add Dockerfile for gerrit and monkey patch ...................................................................... Add Dockerfile for gerrit and monkey patch The openid support doesn't allow to add custom providers but we like the convenience of a single click. Take the official docker image and patch the HTML template. It seems to have changed little over the time, and it might continue like that... I have filed https://bugs.chromium.org/p/gerrit/issues/detail?id=8828 so that we can drop this hack in the future... Change-Id: I713948fbb93355c2e33e3b92969e2389cb88c938 --- A gerrit/Dockerfile A gerrit/add_osmocom.diff 2 files changed, 29 insertions(+), 0 deletions(-) Approvals: Neels Hofmeyr: Looks good to me, but someone else must approve Harald Welte: Looks good to me, approved; Verified diff --git a/gerrit/Dockerfile b/gerrit/Dockerfile new file mode 100644 index 0000000..e67c760 --- /dev/null +++ b/gerrit/Dockerfile @@ -0,0 +1,18 @@ +FROM gerritcodereview/gerrit + +USER root +RUN yum -y install zip unzip patch + +RUN \ + unzip /var/gerrit/bin/gerrit.war WEB-INF/lib/gerrit-openid-libopenid.jar && \ + unzip WEB-INF/lib/gerrit-openid-libopenid.jar com/google/gerrit/httpd/auth/openid/LoginForm.html + +COPY add_osmocom.diff /tmp +RUN patch -p0 < /tmp/add_osmocom.diff + +RUN \ + zip -u WEB-INF/lib/gerrit-openid-libopenid.jar com/google/gerrit/httpd/auth/openid/LoginForm.html && \ + zip -u /var/gerrit/bin/gerrit.war WEB-INF/lib/gerrit-openid-libopenid.jar + +USER gerrit + diff --git a/gerrit/add_osmocom.diff b/gerrit/add_osmocom.diff new file mode 100644 index 0000000..f078a96 --- /dev/null +++ b/gerrit/add_osmocom.diff @@ -0,0 +1,11 @@ +--- com/google/gerrit/httpd/auth/openid/LoginForm.html.orig 2018-04-24 21:07:24.000000000 +0800 ++++ com/google/gerrit/httpd/auth/openid/LoginForm.html 2018-04-24 21:08:26.000000000 +0800 +@@ -70,6 +70,8 @@ +
+
+ ++ ++ +
+ + Sign in with a Launchpad ID -- To view, visit https://gerrit.osmocom.org/7905 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: I713948fbb93355c2e33e3b92969e2389cb88c938 Gerrit-PatchSet: 2 Gerrit-Project: docker-playground Gerrit-Branch: master Gerrit-Owner: Holger Freyther Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Holger Freyther Gerrit-Reviewer: Neels Hofmeyr From gerrit-no-reply at lists.osmocom.org Tue Apr 24 16:20:59 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Tue, 24 Apr 2018 16:20:59 +0000 Subject: osmo-bsc[master]: gscon: remove dead code In-Reply-To: References: Message-ID: Patch Set 2: > just wondering whether these were stubs for a future development, > like the inter-bsc ho states. What's RR Mode Modify for?? yes, that was most likely the case. -- To view, visit https://gerrit.osmocom.org/7839 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Iacaae2ee50ca1956066b7dce4517bbc9c2b0897e Gerrit-PatchSet: 2 Gerrit-Project: osmo-bsc Gerrit-Branch: master Gerrit-Owner: dexter Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Neels Hofmeyr Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Tue Apr 24 16:27:41 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Tue, 24 Apr 2018 16:27:41 +0000 Subject: libusrp[master]: Makefile.common: Fix typo preventing build In-Reply-To: References: Message-ID: Patch Set 1: (1 comment) https://gerrit.osmocom.org/#/c/7908/1/Makefile.common File Makefile.common: Line 99 > no why do I have to think of French pronunciation here? ;) I present you my friend Ulk: https://d1466nnw0ex81e.cloudfront.net/n_iv/120/3854897.jpg -- To view, visit https://gerrit.osmocom.org/7908 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Ib38f6c38e5a40bd11e7b42285d2e244b3f54e0b2 Gerrit-PatchSet: 1 Gerrit-Project: libusrp Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Pau Espin Pedrol Gerrit-HasComments: Yes From gerrit-no-reply at lists.osmocom.org Tue Apr 24 17:18:58 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Tue, 24 Apr 2018 17:18:58 +0000 Subject: [PATCH] osmo-trx[master]: Move arch specific fiels to arch subdir Message-ID: Review at https://gerrit.osmocom.org/7912 Move arch specific fiels to arch subdir Take the chance to update some includes using files available in that subdir to have them ina more uniform way. Change-Id: Ibda3c54fd4dc3f6b845cc373f1a1e6b758c1ea82 --- M Makefile.common M Transceiver52M/Channelizer.cpp M Transceiver52M/ChannelizerBase.cpp M Transceiver52M/Makefile.am M Transceiver52M/Synthesis.cpp A Transceiver52M/arch/Makefile.am R Transceiver52M/arch/arm/Makefile.am R Transceiver52M/arch/arm/convert.c R Transceiver52M/arch/arm/convert_neon.S R Transceiver52M/arch/arm/convolve.c R Transceiver52M/arch/arm/convolve_neon.S R Transceiver52M/arch/arm/mult.c R Transceiver52M/arch/arm/mult_neon.S R Transceiver52M/arch/arm/scale.c R Transceiver52M/arch/arm/scale_neon.S R Transceiver52M/arch/common/Makefile.am R Transceiver52M/arch/common/convert.h R Transceiver52M/arch/common/convert_base.c R Transceiver52M/arch/common/convolve.h R Transceiver52M/arch/common/convolve_base.c R Transceiver52M/arch/common/fft.c R Transceiver52M/arch/common/fft.h R Transceiver52M/arch/common/mult.h R Transceiver52M/arch/common/scale.h R Transceiver52M/arch/x86/Makefile.am R Transceiver52M/arch/x86/convert.c R Transceiver52M/arch/x86/convert_sse_3.c R Transceiver52M/arch/x86/convert_sse_3.h R Transceiver52M/arch/x86/convert_sse_4_1.c R Transceiver52M/arch/x86/convert_sse_4_1.h R Transceiver52M/arch/x86/convolve.c R Transceiver52M/arch/x86/convolve_sse_3.c R Transceiver52M/arch/x86/convolve_sse_3.h M configure.ac M tests/Transceiver52M/Makefile.am M tests/Transceiver52M/convolve_test.c 36 files changed, 26 insertions(+), 22 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-trx refs/changes/12/7912/1 diff --git a/Makefile.common b/Makefile.common index e9820a4..7bda7f6 100644 --- a/Makefile.common +++ b/Makefile.common @@ -33,9 +33,9 @@ GSM_LA = $(top_builddir)/GSM/libGSM.la if ARCH_ARM -ARCH_LA = $(top_builddir)/Transceiver52M/arm/libarch.la +ARCH_LA = $(top_builddir)/Transceiver52M/arch/arm/libarch.la else -ARCH_LA = $(top_builddir)/Transceiver52M/x86/libarch.la +ARCH_LA = $(top_builddir)/Transceiver52M/arch/x86/libarch.la endif MOSTLYCLEANFILES = *~ diff --git a/Transceiver52M/Channelizer.cpp b/Transceiver52M/Channelizer.cpp index 80eab3e..2d817b0 100644 --- a/Transceiver52M/Channelizer.cpp +++ b/Transceiver52M/Channelizer.cpp @@ -28,8 +28,8 @@ #include "Channelizer.h" extern "C" { -#include "common/fft.h" -#include "common/convolve.h" +#include "fft.h" +#include "convolve.h" } static void deinterleave(const float *in, size_t ilen, diff --git a/Transceiver52M/ChannelizerBase.cpp b/Transceiver52M/ChannelizerBase.cpp index 9989940..8223dba 100644 --- a/Transceiver52M/ChannelizerBase.cpp +++ b/Transceiver52M/ChannelizerBase.cpp @@ -29,7 +29,7 @@ #include "ChannelizerBase.h" extern "C" { -#include "common/fft.h" +#include "fft.h" } static float sinc(float x) diff --git a/Transceiver52M/Makefile.am b/Transceiver52M/Makefile.am index 9424b8e..06b2f26 100644 --- a/Transceiver52M/Makefile.am +++ b/Transceiver52M/Makefile.am @@ -21,15 +21,10 @@ include $(top_srcdir)/Makefile.common -AM_CPPFLAGS = -Wall $(STD_DEFINES_AND_INCLUDES) -I${srcdir}/common -AM_CXXFLAGS = -lpthread $(LIBOSMOCORE_CFLAGS) $(LIBOSMOCTRL_CFLAGS) $(LIBOSMOVTY_CFLAGS) +SUBDIRS = arch -SUBDIRS = common -if ARCH_ARM -SUBDIRS += arm -else -SUBDIRS += x86 -endif +AM_CPPFLAGS = -Wall $(STD_DEFINES_AND_INCLUDES) -I${srcdir}/arch/common +AM_CXXFLAGS = -lpthread $(LIBOSMOCORE_CFLAGS) $(LIBOSMOCTRL_CFLAGS) $(LIBOSMOVTY_CFLAGS) if USRP1 AM_CPPFLAGS += $(USRP_CFLAGS) diff --git a/Transceiver52M/Synthesis.cpp b/Transceiver52M/Synthesis.cpp index 22481d5..262c638 100644 --- a/Transceiver52M/Synthesis.cpp +++ b/Transceiver52M/Synthesis.cpp @@ -29,8 +29,8 @@ #include "Synthesis.h" extern "C" { -#include "common/fft.h" -#include "common/convolve.h" +#include "fft.h" +#include "convolve.h" } static void interleave(float **in, size_t ilen, diff --git a/Transceiver52M/arch/Makefile.am b/Transceiver52M/arch/Makefile.am new file mode 100644 index 0000000..14e6c82 --- /dev/null +++ b/Transceiver52M/arch/Makefile.am @@ -0,0 +1,8 @@ +include $(top_srcdir)/Makefile.common + +SUBDIRS = common +if ARCH_ARM +SUBDIRS += arm +else +SUBDIRS += x86 +endif diff --git a/Transceiver52M/arm/Makefile.am b/Transceiver52M/arch/arm/Makefile.am similarity index 80% rename from Transceiver52M/arm/Makefile.am rename to Transceiver52M/arch/arm/Makefile.am index 5e423d0..89ffb32 100644 --- a/Transceiver52M/arm/Makefile.am +++ b/Transceiver52M/arch/arm/Makefile.am @@ -9,7 +9,7 @@ noinst_LTLIBRARIES = libarch.la -libarch_la_LIBADD = $(top_builddir)/Transceiver52M/common/libarch_common.la +libarch_la_LIBADD = $(top_builddir)/Transceiver52M/arch/common/libarch_common.la libarch_la_SOURCES = \ convert.c \ diff --git a/Transceiver52M/arm/convert.c b/Transceiver52M/arch/arm/convert.c similarity index 100% rename from Transceiver52M/arm/convert.c rename to Transceiver52M/arch/arm/convert.c diff --git a/Transceiver52M/arm/convert_neon.S b/Transceiver52M/arch/arm/convert_neon.S similarity index 100% rename from Transceiver52M/arm/convert_neon.S rename to Transceiver52M/arch/arm/convert_neon.S diff --git a/Transceiver52M/arm/convolve.c b/Transceiver52M/arch/arm/convolve.c similarity index 100% rename from Transceiver52M/arm/convolve.c rename to Transceiver52M/arch/arm/convolve.c diff --git a/Transceiver52M/arm/convolve_neon.S b/Transceiver52M/arch/arm/convolve_neon.S similarity index 100% rename from Transceiver52M/arm/convolve_neon.S rename to Transceiver52M/arch/arm/convolve_neon.S diff --git a/Transceiver52M/arm/mult.c b/Transceiver52M/arch/arm/mult.c similarity index 100% rename from Transceiver52M/arm/mult.c rename to Transceiver52M/arch/arm/mult.c diff --git a/Transceiver52M/arm/mult_neon.S b/Transceiver52M/arch/arm/mult_neon.S similarity index 100% rename from Transceiver52M/arm/mult_neon.S rename to Transceiver52M/arch/arm/mult_neon.S diff --git a/Transceiver52M/arm/scale.c b/Transceiver52M/arch/arm/scale.c similarity index 100% rename from Transceiver52M/arm/scale.c rename to Transceiver52M/arch/arm/scale.c diff --git a/Transceiver52M/arm/scale_neon.S b/Transceiver52M/arch/arm/scale_neon.S similarity index 100% rename from Transceiver52M/arm/scale_neon.S rename to Transceiver52M/arch/arm/scale_neon.S diff --git a/Transceiver52M/common/Makefile.am b/Transceiver52M/arch/common/Makefile.am similarity index 100% rename from Transceiver52M/common/Makefile.am rename to Transceiver52M/arch/common/Makefile.am diff --git a/Transceiver52M/common/convert.h b/Transceiver52M/arch/common/convert.h similarity index 100% rename from Transceiver52M/common/convert.h rename to Transceiver52M/arch/common/convert.h diff --git a/Transceiver52M/common/convert_base.c b/Transceiver52M/arch/common/convert_base.c similarity index 100% rename from Transceiver52M/common/convert_base.c rename to Transceiver52M/arch/common/convert_base.c diff --git a/Transceiver52M/common/convolve.h b/Transceiver52M/arch/common/convolve.h similarity index 100% rename from Transceiver52M/common/convolve.h rename to Transceiver52M/arch/common/convolve.h diff --git a/Transceiver52M/common/convolve_base.c b/Transceiver52M/arch/common/convolve_base.c similarity index 100% rename from Transceiver52M/common/convolve_base.c rename to Transceiver52M/arch/common/convolve_base.c diff --git a/Transceiver52M/common/fft.c b/Transceiver52M/arch/common/fft.c similarity index 100% rename from Transceiver52M/common/fft.c rename to Transceiver52M/arch/common/fft.c diff --git a/Transceiver52M/common/fft.h b/Transceiver52M/arch/common/fft.h similarity index 100% rename from Transceiver52M/common/fft.h rename to Transceiver52M/arch/common/fft.h diff --git a/Transceiver52M/common/mult.h b/Transceiver52M/arch/common/mult.h similarity index 100% rename from Transceiver52M/common/mult.h rename to Transceiver52M/arch/common/mult.h diff --git a/Transceiver52M/common/scale.h b/Transceiver52M/arch/common/scale.h similarity index 100% rename from Transceiver52M/common/scale.h rename to Transceiver52M/arch/common/scale.h diff --git a/Transceiver52M/x86/Makefile.am b/Transceiver52M/arch/x86/Makefile.am similarity index 87% rename from Transceiver52M/x86/Makefile.am rename to Transceiver52M/arch/x86/Makefile.am index 76c0bd2..f39dde5 100644 --- a/Transceiver52M/x86/Makefile.am +++ b/Transceiver52M/arch/x86/Makefile.am @@ -4,7 +4,7 @@ noinst_LTLIBRARIES += libarch_sse_3.la noinst_LTLIBRARIES += libarch_sse_4_1.la -libarch_la_LIBADD = $(top_builddir)/Transceiver52M/common/libarch_common.la +libarch_la_LIBADD = $(top_builddir)/Transceiver52M/arch/common/libarch_common.la # SSE 3 specific code if HAVE_SSE3 diff --git a/Transceiver52M/x86/convert.c b/Transceiver52M/arch/x86/convert.c similarity index 100% rename from Transceiver52M/x86/convert.c rename to Transceiver52M/arch/x86/convert.c diff --git a/Transceiver52M/x86/convert_sse_3.c b/Transceiver52M/arch/x86/convert_sse_3.c similarity index 100% rename from Transceiver52M/x86/convert_sse_3.c rename to Transceiver52M/arch/x86/convert_sse_3.c diff --git a/Transceiver52M/x86/convert_sse_3.h b/Transceiver52M/arch/x86/convert_sse_3.h similarity index 100% rename from Transceiver52M/x86/convert_sse_3.h rename to Transceiver52M/arch/x86/convert_sse_3.h diff --git a/Transceiver52M/x86/convert_sse_4_1.c b/Transceiver52M/arch/x86/convert_sse_4_1.c similarity index 100% rename from Transceiver52M/x86/convert_sse_4_1.c rename to Transceiver52M/arch/x86/convert_sse_4_1.c diff --git a/Transceiver52M/x86/convert_sse_4_1.h b/Transceiver52M/arch/x86/convert_sse_4_1.h similarity index 100% rename from Transceiver52M/x86/convert_sse_4_1.h rename to Transceiver52M/arch/x86/convert_sse_4_1.h diff --git a/Transceiver52M/x86/convolve.c b/Transceiver52M/arch/x86/convolve.c similarity index 100% rename from Transceiver52M/x86/convolve.c rename to Transceiver52M/arch/x86/convolve.c diff --git a/Transceiver52M/x86/convolve_sse_3.c b/Transceiver52M/arch/x86/convolve_sse_3.c similarity index 100% rename from Transceiver52M/x86/convolve_sse_3.c rename to Transceiver52M/arch/x86/convolve_sse_3.c diff --git a/Transceiver52M/x86/convolve_sse_3.h b/Transceiver52M/arch/x86/convolve_sse_3.h similarity index 100% rename from Transceiver52M/x86/convolve_sse_3.h rename to Transceiver52M/arch/x86/convolve_sse_3.h diff --git a/configure.ac b/configure.ac index 8271dbf..125f41e 100644 --- a/configure.ac +++ b/configure.ac @@ -199,9 +199,10 @@ CommonLibs/Makefile \ GSM/Makefile \ Transceiver52M/Makefile \ - Transceiver52M/common/Makefile \ - Transceiver52M/arm/Makefile \ - Transceiver52M/x86/Makefile \ + Transceiver52M/arch/Makefile \ + Transceiver52M/arch/common/Makefile \ + Transceiver52M/arch/arm/Makefile \ + Transceiver52M/arch/x86/Makefile \ tests/Makefile \ tests/CommonLibs/Makefile \ tests/Transceiver52M/Makefile \ diff --git a/tests/Transceiver52M/Makefile.am b/tests/Transceiver52M/Makefile.am index 8a05bd8..778d64d 100644 --- a/tests/Transceiver52M/Makefile.am +++ b/tests/Transceiver52M/Makefile.am @@ -1,6 +1,6 @@ include $(top_srcdir)/Makefile.common -AM_CFLAGS = -Wall -I$(top_srcdir)/Transceiver52M $(STD_DEFINES_AND_INCLUDES) -g +AM_CFLAGS = -Wall -I$(top_srcdir)/Transceiver52M -I$(top_srcdir)/Transceiver52M/arch/common $(STD_DEFINES_AND_INCLUDES) -g EXTRA_DIST = convolve_test.ok diff --git a/tests/Transceiver52M/convolve_test.c b/tests/Transceiver52M/convolve_test.c index f4a76c3..88624af 100644 --- a/tests/Transceiver52M/convolve_test.c +++ b/tests/Transceiver52M/convolve_test.c @@ -1,7 +1,7 @@ #include #include #include -#include "../../Transceiver52M/common/convolve.h" +#include "convolve.h" #define TESTVEC_LEN 1000 #define DO_INIT 1 -- To view, visit https://gerrit.osmocom.org/7912 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Ibda3c54fd4dc3f6b845cc373f1a1e6b758c1ea82 Gerrit-PatchSet: 1 Gerrit-Project: osmo-trx Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol From gerrit-no-reply at lists.osmocom.org Tue Apr 24 17:18:59 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Tue, 24 Apr 2018 17:18:59 +0000 Subject: [PATCH] osmo-trx[master]: Move device specific files to device subdir Message-ID: Review at https://gerrit.osmocom.org/7913 Move device specific files to device subdir Change-Id: Ib42fef14bf4c7b779f44d99711a35c18b32a4c21 --- M Transceiver52M/Makefile.am A Transceiver52M/device/Makefile.am R Transceiver52M/device/radioDevice.h A Transceiver52M/device/uhd/Makefile.am R Transceiver52M/device/uhd/UHDDevice.cpp A Transceiver52M/device/usrp1/Makefile.am R Transceiver52M/device/usrp1/USRPDevice.cpp R Transceiver52M/device/usrp1/USRPDevice.h M configure.ac 9 files changed, 51 insertions(+), 21 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-trx refs/changes/13/7913/1 diff --git a/Transceiver52M/Makefile.am b/Transceiver52M/Makefile.am index 06b2f26..26f7510 100644 --- a/Transceiver52M/Makefile.am +++ b/Transceiver52M/Makefile.am @@ -21,16 +21,10 @@ include $(top_srcdir)/Makefile.common -SUBDIRS = arch +SUBDIRS = arch device -AM_CPPFLAGS = -Wall $(STD_DEFINES_AND_INCLUDES) -I${srcdir}/arch/common +AM_CPPFLAGS = -Wall $(STD_DEFINES_AND_INCLUDES) -I${srcdir}/arch/common -I${srcdir}/device AM_CXXFLAGS = -lpthread $(LIBOSMOCORE_CFLAGS) $(LIBOSMOCTRL_CFLAGS) $(LIBOSMOVTY_CFLAGS) - -if USRP1 -AM_CPPFLAGS += $(USRP_CFLAGS) -else -AM_CPPFLAGS += $(UHD_CFLAGS) -endif rev2dir = $(datadir)/usrp/rev2 rev4dir = $(datadir)/usrp/rev4 @@ -42,7 +36,7 @@ README \ README.Talgorithm -noinst_LTLIBRARIES = libtransceiver.la +noinst_LTLIBRARIES = libtransceiver_common.la COMMON_SOURCES = \ radioInterface.cpp \ @@ -56,33 +50,28 @@ Channelizer.cpp \ Synthesis.cpp -libtransceiver_la_SOURCES = \ +libtransceiver_common_la_SOURCES = \ $(COMMON_SOURCES) \ Resampler.cpp \ radioInterfaceResamp.cpp \ radioInterfaceMulti.cpp - -bin_PROGRAMS = osmo-trx noinst_HEADERS = \ Complex.h \ radioInterface.h \ radioVector.h \ radioClock.h \ - radioDevice.h \ radioBuffer.h \ sigProcLib.h \ signalVector.h \ Transceiver.h \ - USRPDevice.h \ Resampler.h \ ChannelizerBase.h \ Channelizer.h \ Synthesis.h -osmo_trx_SOURCES = osmo-trx.cpp -osmo_trx_LDADD = \ - libtransceiver.la \ +COMMON_LDADD = \ + libtransceiver_common.la \ $(ARCH_LA) \ $(GSM_LA) \ $(COMMON_LA) \ @@ -91,10 +80,19 @@ $(LIBOSMOCTRL_LIBS) \ $(LIBOSMOVTY_LIBS) +bin_PROGRAMS = osmo-trx +osmo_trx_SOURCES = osmo-trx.cpp + if USRP1 -libtransceiver_la_SOURCES += USRPDevice.cpp -osmo_trx_LDADD += $(USRP_LIBS) +osmo_trx_LDADD = \ + $(COMMON_LDADD) \ + $(USRP_LIBS) \ + $(builddir)/device/usrp1/libdevice.la +osmo_trx_CPPFLAGS = $(AM_CPPFLAGS) $(USRP_CFLAGS) else -libtransceiver_la_SOURCES += UHDDevice.cpp -osmo_trx_LDADD += $(UHD_LIBS) +osmo_trx_LDADD = \ + $(COMMON_LDADD) \ + $(UHD_LIBS) \ + $(builddir)/device/uhd/libdevice.la +osmo_trx_CPPFLAGS = $(AM_CPPFLAGS) $(UHD_CFLAGS) endif diff --git a/Transceiver52M/device/Makefile.am b/Transceiver52M/device/Makefile.am new file mode 100644 index 0000000..8575328 --- /dev/null +++ b/Transceiver52M/device/Makefile.am @@ -0,0 +1,11 @@ +include $(top_srcdir)/Makefile.common + +noinst_HEADERS = radioDevice.h + +SUBDIRS = + +if USRP1 +SUBDIRS += usrp1 +else +SUBDIRS += uhd +endif diff --git a/Transceiver52M/radioDevice.h b/Transceiver52M/device/radioDevice.h similarity index 100% rename from Transceiver52M/radioDevice.h rename to Transceiver52M/device/radioDevice.h diff --git a/Transceiver52M/device/uhd/Makefile.am b/Transceiver52M/device/uhd/Makefile.am new file mode 100644 index 0000000..bb34d2f --- /dev/null +++ b/Transceiver52M/device/uhd/Makefile.am @@ -0,0 +1,8 @@ +include $(top_srcdir)/Makefile.common + +AM_CPPFLAGS = -Wall $(STD_DEFINES_AND_INCLUDES) -I${srcdir}/.. +AM_CXXFLAGS = -lpthread $(LIBOSMOCORE_CFLAGS) $(LIBOSMOCTRL_CFLAGS) $(LIBOSMOVTY_CFLAGS) $(UHD_CFLAGS) + +noinst_LTLIBRARIES = libdevice.la + +libdevice_la_SOURCES = UHDDevice.cpp diff --git a/Transceiver52M/UHDDevice.cpp b/Transceiver52M/device/uhd/UHDDevice.cpp similarity index 100% rename from Transceiver52M/UHDDevice.cpp rename to Transceiver52M/device/uhd/UHDDevice.cpp diff --git a/Transceiver52M/device/usrp1/Makefile.am b/Transceiver52M/device/usrp1/Makefile.am new file mode 100644 index 0000000..d99874a --- /dev/null +++ b/Transceiver52M/device/usrp1/Makefile.am @@ -0,0 +1,10 @@ +include $(top_srcdir)/Makefile.common + +AM_CPPFLAGS = -Wall $(STD_DEFINES_AND_INCLUDES) -I${srcdir}/.. +AM_CXXFLAGS = -lpthread $(LIBOSMOCORE_CFLAGS) $(LIBOSMOCTRL_CFLAGS) $(LIBOSMOVTY_CFLAGS) $(USRP_CFLAGS) + +noinst_HEADERS = USRPDevice.h + +noinst_LTLIBRARIES = libdevice.la + +libdevice_la_SOURCES = USRPDevice.cpp diff --git a/Transceiver52M/USRPDevice.cpp b/Transceiver52M/device/usrp1/USRPDevice.cpp similarity index 100% rename from Transceiver52M/USRPDevice.cpp rename to Transceiver52M/device/usrp1/USRPDevice.cpp diff --git a/Transceiver52M/USRPDevice.h b/Transceiver52M/device/usrp1/USRPDevice.h similarity index 100% rename from Transceiver52M/USRPDevice.h rename to Transceiver52M/device/usrp1/USRPDevice.h diff --git a/configure.ac b/configure.ac index 125f41e..ee8077c 100644 --- a/configure.ac +++ b/configure.ac @@ -203,6 +203,9 @@ Transceiver52M/arch/common/Makefile \ Transceiver52M/arch/arm/Makefile \ Transceiver52M/arch/x86/Makefile \ + Transceiver52M/device/Makefile \ + Transceiver52M/device/uhd/Makefile \ + Transceiver52M/device/usrp1/Makefile \ tests/Makefile \ tests/CommonLibs/Makefile \ tests/Transceiver52M/Makefile \ -- To view, visit https://gerrit.osmocom.org/7913 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Ib42fef14bf4c7b779f44d99711a35c18b32a4c21 Gerrit-PatchSet: 1 Gerrit-Project: osmo-trx Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol From gerrit-no-reply at lists.osmocom.org Tue Apr 24 17:18:59 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Tue, 24 Apr 2018 17:18:59 +0000 Subject: [PATCH] osmo-trx[master]: Change configure define USRP1 to DEVICE_USRP1 Message-ID: Review at https://gerrit.osmocom.org/7914 Change configure define USRP1 to DEVICE_USRP1 Similar as we do for ARCH_*, it's easier to find those are related to device support features. Change-Id: Iba238bff689b8f944af76120402c0fa2e29a70de --- M Transceiver52M/Makefile.am M Transceiver52M/device/Makefile.am M Transceiver52M/radioInterface.cpp M Transceiver52M/radioInterface.h M configure.ac 5 files changed, 7 insertions(+), 7 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-trx refs/changes/14/7914/1 diff --git a/Transceiver52M/Makefile.am b/Transceiver52M/Makefile.am index 26f7510..ae4a5bc 100644 --- a/Transceiver52M/Makefile.am +++ b/Transceiver52M/Makefile.am @@ -83,7 +83,7 @@ bin_PROGRAMS = osmo-trx osmo_trx_SOURCES = osmo-trx.cpp -if USRP1 +if DEVICE_USRP1 osmo_trx_LDADD = \ $(COMMON_LDADD) \ $(USRP_LIBS) \ diff --git a/Transceiver52M/device/Makefile.am b/Transceiver52M/device/Makefile.am index 8575328..f0675b0 100644 --- a/Transceiver52M/device/Makefile.am +++ b/Transceiver52M/device/Makefile.am @@ -4,7 +4,7 @@ SUBDIRS = -if USRP1 +if DEVICE_USRP1 SUBDIRS += usrp1 else SUBDIRS += uhd diff --git a/Transceiver52M/radioInterface.cpp b/Transceiver52M/radioInterface.cpp index e039d5c..c3063ff 100644 --- a/Transceiver52M/radioInterface.cpp +++ b/Transceiver52M/radioInterface.cpp @@ -151,7 +151,7 @@ return true; LOG(INFO) << "Starting radio device"; -#ifdef USRP1 +#ifdef DEVICE_USRP1 mAlignRadioServiceLoopThread.start((void * (*)(void*))AlignRadioServiceLoopAdapter, (void*)this); #endif @@ -191,7 +191,7 @@ return true; } -#ifdef USRP1 +#ifdef DEVICE_USRP1 void *AlignRadioServiceLoopAdapter(RadioInterface *radioInterface) { while (1) { diff --git a/Transceiver52M/radioInterface.h b/Transceiver52M/radioInterface.h index 531e1a8..e05d871 100644 --- a/Transceiver52M/radioInterface.h +++ b/Transceiver52M/radioInterface.h @@ -133,7 +133,7 @@ /** get transport window type of attached device */ enum RadioDevice::TxWindowType getWindowType() { return mRadio->getWindowType(); } -#if USRP1 +#if DEVICE_USRP1 protected: /** drive synchronization of Tx/Rx of USRP */ @@ -143,7 +143,7 @@ #endif }; -#if USRP1 +#if DEVICE_USRP1 /** synchronization thread loop */ void *AlignRadioServiceLoopAdapter(RadioInterface*); #endif diff --git a/configure.ac b/configure.ac index ee8077c..70a8f4b 100644 --- a/configure.ac +++ b/configure.ac @@ -178,7 +178,7 @@ CHECK_BUILTIN_SUPPORT([__builtin_cpu_supports], [Runtime SIMD detection will be disabled]) -AM_CONDITIONAL(USRP1, [test "x$with_usrp1" = "xyes"]) +AM_CONDITIONAL(DEVICE_USRP1, [test "x$with_usrp1" = "xyes"]) AM_CONDITIONAL(ARCH_ARM, [test "x$with_neon" = "xyes" || test "x$with_neon_vfpv4" = "xyes"]) AM_CONDITIONAL(ARCH_ARM_A15, [test "x$with_neon_vfpv4" = "xyes"]) -- To view, visit https://gerrit.osmocom.org/7914 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Iba238bff689b8f944af76120402c0fa2e29a70de Gerrit-PatchSet: 1 Gerrit-Project: osmo-trx Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol From gerrit-no-reply at lists.osmocom.org Tue Apr 24 17:18:59 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Tue, 24 Apr 2018 17:18:59 +0000 Subject: [PATCH] osmo-trx[master]: Move device specific code out of radioInterface Message-ID: Review at https://gerrit.osmocom.org/7915 Move device specific code out of radioInterface This way code of radioInterface is independent of the device and doesn't need to be rebuild for each device. Change-Id: Id104e1edef02f863b6465ced5b4241050dc188f9 --- M Transceiver52M/device/radioDevice.h M Transceiver52M/device/uhd/UHDDevice.cpp M Transceiver52M/device/usrp1/USRPDevice.cpp M Transceiver52M/device/usrp1/USRPDevice.h M Transceiver52M/radioInterface.cpp M Transceiver52M/radioInterface.h 6 files changed, 36 insertions(+), 28 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-trx refs/changes/15/7915/1 diff --git a/Transceiver52M/device/radioDevice.h b/Transceiver52M/device/radioDevice.h index 9913de0..8915b17 100644 --- a/Transceiver52M/device/radioDevice.h +++ b/Transceiver52M/device/radioDevice.h @@ -148,6 +148,9 @@ /** return the used RX path */ virtual std::string getTxAntenna(size_t chan = 0) = 0; + /** return whether user drives synchronization of Tx/Rx of USRP */ + virtual bool requiresRadioAlign() = 0; + /** Return internal status values */ virtual double getTxFreq(size_t chan = 0) = 0; virtual double getRxFreq(size_t chan = 0) = 0; diff --git a/Transceiver52M/device/uhd/UHDDevice.cpp b/Transceiver52M/device/uhd/UHDDevice.cpp index 4466da4..ecdebe1 100644 --- a/Transceiver52M/device/uhd/UHDDevice.cpp +++ b/Transceiver52M/device/uhd/UHDDevice.cpp @@ -255,6 +255,8 @@ bool setTxAntenna(const std::string &ant, size_t chan); std::string getTxAntenna(size_t chan); + bool requiresRadioAlign(); + inline double getSampleRate() { return tx_rate; } inline double numberRead() { return rx_pkt_cnt; } inline double numberWritten() { return 0; } @@ -1282,6 +1284,11 @@ return usrp_dev->get_tx_antenna(chan); } +bool uhd_device::requiresRadioAlign() +{ + return false; +} + /* * Only allow sampling the Rx path lower than Tx and not vice-versa. * Using Tx with 4 SPS and Rx at 1 SPS is the only allowed mixed diff --git a/Transceiver52M/device/usrp1/USRPDevice.cpp b/Transceiver52M/device/usrp1/USRPDevice.cpp index f7f24e9..455528a 100644 --- a/Transceiver52M/device/usrp1/USRPDevice.cpp +++ b/Transceiver52M/device/usrp1/USRPDevice.cpp @@ -353,6 +353,10 @@ return ""; } +bool USRPDevice::requiresRadioAlign() +{ + return true; +} // NOTE: Assumes sequential reads int USRPDevice::readSamples(std::vector &bufs, int len, bool *overrun, diff --git a/Transceiver52M/device/usrp1/USRPDevice.h b/Transceiver52M/device/usrp1/USRPDevice.h index f981643..9091dea 100644 --- a/Transceiver52M/device/usrp1/USRPDevice.h +++ b/Transceiver52M/device/usrp1/USRPDevice.h @@ -191,6 +191,9 @@ /* return the used RX path */ std::string getTxAntenna(size_t chan = 0); + /** return whether user drives synchronization of Tx/Rx of USRP */ + bool requiresRadioAlign(); + /** Return internal status values */ inline double getTxFreq(size_t chan = 0) { return 0; } inline double getRxFreq(size_t chan = 0) { return 0; } diff --git a/Transceiver52M/radioInterface.cpp b/Transceiver52M/radioInterface.cpp index c3063ff..a377436 100644 --- a/Transceiver52M/radioInterface.cpp +++ b/Transceiver52M/radioInterface.cpp @@ -145,16 +145,31 @@ return mRadio->setRxFreq(freq, chan); } +/** synchronization thread loop */ +void *AlignRadioServiceLoopAdapter(RadioInterface *radioInterface) +{ + while (1) { + sleep(60); + radioInterface->alignRadio(); + pthread_testcancel(); + } + return NULL; +} + +void RadioInterface::alignRadio() { + mRadio->updateAlignment(writeTimestamp+ (TIMESTAMP) 10000); +} + bool RadioInterface::start() { if (mOn) return true; LOG(INFO) << "Starting radio device"; -#ifdef DEVICE_USRP1 - mAlignRadioServiceLoopThread.start((void * (*)(void*))AlignRadioServiceLoopAdapter, - (void*)this); -#endif + if (mRadio->requiresRadioAlign()) + mAlignRadioServiceLoopThread.start( + (void * (*)(void*))AlignRadioServiceLoopAdapter, + (void*)this); if (!mRadio->start()) return false; @@ -190,22 +205,6 @@ mOn = false; return true; } - -#ifdef DEVICE_USRP1 -void *AlignRadioServiceLoopAdapter(RadioInterface *radioInterface) -{ - while (1) { - radioInterface->alignRadio(); - pthread_testcancel(); - } - return NULL; -} - -void RadioInterface::alignRadio() { - sleep(60); - mRadio->updateAlignment(writeTimestamp+ (TIMESTAMP) 10000); -} -#endif void RadioInterface::driveTransmitRadio(std::vector &bursts, std::vector &zeros) diff --git a/Transceiver52M/radioInterface.h b/Transceiver52M/radioInterface.h index e05d871..6b482d1 100644 --- a/Transceiver52M/radioInterface.h +++ b/Transceiver52M/radioInterface.h @@ -133,20 +133,12 @@ /** get transport window type of attached device */ enum RadioDevice::TxWindowType getWindowType() { return mRadio->getWindowType(); } -#if DEVICE_USRP1 protected: - /** drive synchronization of Tx/Rx of USRP */ void alignRadio(); friend void *AlignRadioServiceLoopAdapter(RadioInterface*); -#endif }; - -#if DEVICE_USRP1 -/** synchronization thread loop */ -void *AlignRadioServiceLoopAdapter(RadioInterface*); -#endif class RadioInterfaceResamp : public RadioInterface { private: -- To view, visit https://gerrit.osmocom.org/7915 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Id104e1edef02f863b6465ced5b4241050dc188f9 Gerrit-PatchSet: 1 Gerrit-Project: osmo-trx Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol From gerrit-no-reply at lists.osmocom.org Tue Apr 24 17:19:00 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Tue, 24 Apr 2018 17:19:00 +0000 Subject: [PATCH] osmo-trx[master]: Transceiver: Move device specific code to radioDevice class Message-ID: Review at https://gerrit.osmocom.org/7916 Transceiver: Move device specific code to radioDevice class Change-Id: Ibcf258d8bf8595e286682e0bc59391b239ea7642 --- M Transceiver52M/Transceiver.cpp M Transceiver52M/device/radioDevice.h M Transceiver52M/device/uhd/UHDDevice.cpp M Transceiver52M/device/usrp1/USRPDevice.cpp M Transceiver52M/device/usrp1/USRPDevice.h M Transceiver52M/radioInterface.h 6 files changed, 26 insertions(+), 7 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-trx refs/changes/16/7916/1 diff --git a/Transceiver52M/Transceiver.cpp b/Transceiver52M/Transceiver.cpp index 2d3771c..be6f526 100644 --- a/Transceiver52M/Transceiver.cpp +++ b/Transceiver52M/Transceiver.cpp @@ -35,12 +35,6 @@ #define USB_LATENCY_INTRVL 10,0 -#if USE_UHD -# define USB_LATENCY_MIN 6,7 -#else -# define USB_LATENCY_MIN 1,1 -#endif - /* Number of running values use in noise average */ #define NOISE_CNT 20 @@ -994,7 +988,7 @@ else { // if underrun hasn't occurred in the last sec (216 frames) drop // transmit latency by a timeslot - if (mTransmitLatency > GSM::Time(USB_LATENCY_MIN)) { + if (mTransmitLatency > mRadioInterface->minLatency()) { if (radioClock->get() > mLatencyUpdateTime + GSM::Time(216,0)) { mTransmitLatency.decTN(); LOG(INFO) << "reduced latency: " << mTransmitLatency; diff --git a/Transceiver52M/device/radioDevice.h b/Transceiver52M/device/radioDevice.h index 8915b17..44636d5 100644 --- a/Transceiver52M/device/radioDevice.h +++ b/Transceiver52M/device/radioDevice.h @@ -18,6 +18,8 @@ #include #include +#include "GSMCommon.h" + extern "C" { #include "config_defs.h" } @@ -151,6 +153,9 @@ /** return whether user drives synchronization of Tx/Rx of USRP */ virtual bool requiresRadioAlign() = 0; + /** Minimum latency that the device can achieve */ + virtual GSM::Time minLatency() = 0; + /** Return internal status values */ virtual double getTxFreq(size_t chan = 0) = 0; virtual double getRxFreq(size_t chan = 0) = 0; diff --git a/Transceiver52M/device/uhd/UHDDevice.cpp b/Transceiver52M/device/uhd/UHDDevice.cpp index ecdebe1..0d59bfc 100644 --- a/Transceiver52M/device/uhd/UHDDevice.cpp +++ b/Transceiver52M/device/uhd/UHDDevice.cpp @@ -257,6 +257,8 @@ bool requiresRadioAlign(); + GSM::Time minLatency(); + inline double getSampleRate() { return tx_rate; } inline double numberRead() { return rx_pkt_cnt; } inline double numberWritten() { return 0; } @@ -1289,6 +1291,14 @@ return false; } +GSM::Time uhd_device::minLatency() { + /* Empirical data from a handful of + relatively recent machines shows that the B100 will underrun when + the transmit threshold is reduced to a time of 6 and a half frames, + so we set a minimum 7 frame threshold. */ + return GSM::Time(6,7); +} + /* * Only allow sampling the Rx path lower than Tx and not vice-versa. * Using Tx with 4 SPS and Rx at 1 SPS is the only allowed mixed diff --git a/Transceiver52M/device/usrp1/USRPDevice.cpp b/Transceiver52M/device/usrp1/USRPDevice.cpp index 455528a..7f73f43 100644 --- a/Transceiver52M/device/usrp1/USRPDevice.cpp +++ b/Transceiver52M/device/usrp1/USRPDevice.cpp @@ -358,6 +358,10 @@ return true; } +GSM::Time USRPDevice::minLatency() { + return GSM::Time(1,1); +} + // NOTE: Assumes sequential reads int USRPDevice::readSamples(std::vector &bufs, int len, bool *overrun, TIMESTAMP timestamp, bool *underrun, unsigned *RSSI) diff --git a/Transceiver52M/device/usrp1/USRPDevice.h b/Transceiver52M/device/usrp1/USRPDevice.h index 9091dea..6304ea1 100644 --- a/Transceiver52M/device/usrp1/USRPDevice.h +++ b/Transceiver52M/device/usrp1/USRPDevice.h @@ -194,6 +194,9 @@ /** return whether user drives synchronization of Tx/Rx of USRP */ bool requiresRadioAlign(); + /** return whether user drives synchronization of Tx/Rx of USRP */ + virtual GSM::Time minLatency(); + /** Return internal status values */ inline double getTxFreq(size_t chan = 0) { return 0; } inline double getRxFreq(size_t chan = 0) { return 0; } diff --git a/Transceiver52M/radioInterface.h b/Transceiver52M/radioInterface.h index 6b482d1..ffcacdd 100644 --- a/Transceiver52M/radioInterface.h +++ b/Transceiver52M/radioInterface.h @@ -133,6 +133,9 @@ /** get transport window type of attached device */ enum RadioDevice::TxWindowType getWindowType() { return mRadio->getWindowType(); } + /** Minimum latency that the device can achieve */ + GSM::Time minLatency() { return mRadio->minLatency(); } + protected: /** drive synchronization of Tx/Rx of USRP */ void alignRadio(); -- To view, visit https://gerrit.osmocom.org/7916 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Ibcf258d8bf8595e286682e0bc59391b239ea7642 Gerrit-PatchSet: 1 Gerrit-Project: osmo-trx Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol From gerrit-no-reply at lists.osmocom.org Tue Apr 24 17:19:00 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Tue, 24 Apr 2018 17:19:00 +0000 Subject: [PATCH] osmo-trx[master]: Build one osmo-trx binary for each device support enabled Message-ID: Review at https://gerrit.osmocom.org/7917 Build one osmo-trx binary for each device support enabled Same way as we do in osmo-bts. After this commit, osmo-trx no longer exists. Instead, osmo-trx-uhd and osmo-trx-usrp1 are generated based on configure flags enabled. A new flag --with(out)-uhd has been added to enable/disable build of osmo-trx with UHD backend. It is left enabled by default to keep compatibility with older build scripts. Binary with USRP1 backend must still be manually enabled with --with-usrp1 flag. Change-Id: Iea8c0d7434762713a53440d29bf3ebd84accb262 --- M Transceiver52M/Makefile.am M Transceiver52M/device/Makefile.am M configure.ac M debian/control A debian/osmo-trx-uhd.install A debian/osmo-trx-usrp1.install M debian/osmo-trx.install 7 files changed, 65 insertions(+), 19 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-trx refs/changes/17/7917/1 diff --git a/Transceiver52M/Makefile.am b/Transceiver52M/Makefile.am index ae4a5bc..3a872ef 100644 --- a/Transceiver52M/Makefile.am +++ b/Transceiver52M/Makefile.am @@ -80,19 +80,24 @@ $(LIBOSMOCTRL_LIBS) \ $(LIBOSMOVTY_LIBS) -bin_PROGRAMS = osmo-trx -osmo_trx_SOURCES = osmo-trx.cpp +bin_PROGRAMS = -if DEVICE_USRP1 -osmo_trx_LDADD = \ - $(COMMON_LDADD) \ - $(USRP_LIBS) \ - $(builddir)/device/usrp1/libdevice.la -osmo_trx_CPPFLAGS = $(AM_CPPFLAGS) $(USRP_CFLAGS) -else -osmo_trx_LDADD = \ +if DEVICE_UHD +bin_PROGRAMS += osmo-trx-uhd +osmo_trx_uhd_SOURCES = osmo-trx.cpp +osmo_trx_uhd_LDADD = \ $(COMMON_LDADD) \ $(UHD_LIBS) \ $(builddir)/device/uhd/libdevice.la -osmo_trx_CPPFLAGS = $(AM_CPPFLAGS) $(UHD_CFLAGS) +osmo_trx_uhd_CPPFLAGS = $(AM_CPPFLAGS) $(UHD_CFLAGS) +endif + +if DEVICE_USRP1 +bin_PROGRAMS += osmo-trx-usrp1 +osmo_trx_usrp1_SOURCES = osmo-trx.cpp +osmo_trx_usrp1_LDADD = \ + $(COMMON_LDADD) \ + $(USRP_LIBS) \ + $(builddir)/device/usrp1/libdevice.la +osmo_trx_usrp1_CPPFLAGS = $(AM_CPPFLAGS) $(USRP_CFLAGS) endif diff --git a/Transceiver52M/device/Makefile.am b/Transceiver52M/device/Makefile.am index f0675b0..2788eaa 100644 --- a/Transceiver52M/device/Makefile.am +++ b/Transceiver52M/device/Makefile.am @@ -6,6 +6,8 @@ if DEVICE_USRP1 SUBDIRS += usrp1 -else +endif + +if DEVICE_UHD SUBDIRS += uhd endif diff --git a/configure.ac b/configure.ac index 70a8f4b..2b2dab7 100644 --- a/configure.ac +++ b/configure.ac @@ -90,6 +90,11 @@ LDFLAGS="$LDFLAGS -fsanitize=address -fsanitize=undefined" fi +AC_ARG_WITH(uhd, [ + AS_HELP_STRING([--with-uhd], + [enable UHD based transceiver]) +]) + AC_ARG_WITH(usrp1, [ AS_HELP_STRING([--with-usrp1], [enable USRP1 gnuradio based transceiver]) @@ -128,7 +133,7 @@ PKG_CHECK_MODULES(USRP, usrp >= 3.3) ]) -AS_IF([test "x$with_usrp1" != "xyes"],[ +AS_IF([test "x$with_uhd" != "xno"],[ PKG_CHECK_MODULES(UHD, uhd >= 003.011, [AC_DEFINE(USE_UHD_3_11, 1, UHD version 3.11.0 or higher)], [PKG_CHECK_MODULES(UHD, uhd >= 003.009, @@ -136,7 +141,6 @@ [PKG_CHECK_MODULES(UHD, uhd >= 003.005)] )] ) - AC_DEFINE(USE_UHD, 1, All UHD versions) ]) AS_IF([test "x$with_singledb" = "xyes"], [ @@ -178,6 +182,7 @@ CHECK_BUILTIN_SUPPORT([__builtin_cpu_supports], [Runtime SIMD detection will be disabled]) +AM_CONDITIONAL(DEVICE_UHD, [test "x$with_uhd" != "xno"]) AM_CONDITIONAL(DEVICE_USRP1, [test "x$with_usrp1" = "xyes"]) AM_CONDITIONAL(ARCH_ARM, [test "x$with_neon" = "xyes" || test "x$with_neon_vfpv4" = "xyes"]) AM_CONDITIONAL(ARCH_ARM_A15, [test "x$with_neon_vfpv4" = "xyes"]) diff --git a/debian/control b/debian/control index b3d63a7..cae44d4 100644 --- a/debian/control +++ b/debian/control @@ -19,9 +19,15 @@ Homepage: https://projects.osmocom.org/projects/osmotrx Package: osmo-trx +Maintainer: Ivan Klyuchnikov +Depends: osmo-trx-uhd +Architecture: all +Description: Virtual package for osmo-trx-uhd + +Package: osmo-trx-uhd Architecture: any Depends: ${shlibs:Depends}, ${misc:Depends} -Description: SDR transceiver that implements Layer 1 of a GSM BTS +Description: SDR transceiver that implements Layer 1 of a GSM BTS (UHD) OsmoTRX is a software-defined radio transceiver that implements the Layer 1 physical layer of a BTS comprising the following 3GPP specifications: . @@ -37,10 +43,37 @@ between different telecommunication associations for developing new generations of mobile phone networks. (post-2G/GSM) -Package: osmo-trx-dbg +Package: osmo-trx-uhd-dbg Architecture: any Section: debug Priority: extra -Depends: osmo-trx (= ${binary:Version}), ${misc:Depends} -Description: Debug symbols for the osmo-trx +Depends: osmo-trx-uhd (= ${binary:Version}), ${misc:Depends} +Description: Debug symbols for the osmo-trx-uhd + Make debugging possible + +Package: osmo-trx-usrp1 +Architecture: any +Depends: ${shlibs:Depends}, ${misc:Depends} +Description: SDR transceiver that implements Layer 1 of a GSM BTS (USRP1) + OsmoTRX is a software-defined radio transceiver that implements the Layer 1 + physical layer of a BTS comprising the following 3GPP specifications: + . + TS 05.01 "Physical layer on the radio path" + TS 05.02 "Multiplexing and Multiple Access on the Radio Path" + TS 05.04 "Modulation" + TS 05.10 "Radio subsystem synchronization" + . + In this context, BTS is "Base transceiver station". It's the stations that + connect mobile phones to the mobile network. + . + 3GPP is the "3rd Generation Partnership Project" which is the collaboration + between different telecommunication associations for developing new + generations of mobile phone networks. (post-2G/GSM) + +Package: osmo-trx-usrp1-dbg +Architecture: any +Section: debug +Priority: extra +Depends: osmo-trx-usrp1 (= ${binary:Version}), ${misc:Depends} +Description: Debug symbols for the osmo-trx-usrp1 Make debugging possible diff --git a/debian/osmo-trx-uhd.install b/debian/osmo-trx-uhd.install new file mode 100644 index 0000000..0005b76 --- /dev/null +++ b/debian/osmo-trx-uhd.install @@ -0,0 +1 @@ +/usr/bin/osmo-trx-uhd diff --git a/debian/osmo-trx-usrp1.install b/debian/osmo-trx-usrp1.install new file mode 100644 index 0000000..1b76249 --- /dev/null +++ b/debian/osmo-trx-usrp1.install @@ -0,0 +1 @@ +/usr/bin/osmo-trx-usrp1 diff --git a/debian/osmo-trx.install b/debian/osmo-trx.install index 574e915..e69de29 100644 --- a/debian/osmo-trx.install +++ b/debian/osmo-trx.install @@ -1 +0,0 @@ -/usr/bin/osmo-trx -- To view, visit https://gerrit.osmocom.org/7917 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Iea8c0d7434762713a53440d29bf3ebd84accb262 Gerrit-PatchSet: 1 Gerrit-Project: osmo-trx Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol From jenkins at lists.osmocom.org Tue Apr 24 22:41:20 2018 From: jenkins at lists.osmocom.org (jenkins at lists.osmocom.org) Date: Tue, 24 Apr 2018 22:41:20 +0000 (UTC) Subject: =?UTF-8?Q?Build_failed_in_Jenkins:_master-rtl-sdr_=C2=BB_a1=3Ddefau?= =?UTF-8?Q?lt,a2=3Ddefault,a3=3Ddefault,osmocom-master-debian9_#9?= In-Reply-To: <1469684596.39.1524523280473.JavaMail.jenkins@jenkins.osmocom.org> References: <1469684596.39.1524523280473.JavaMail.jenkins@jenkins.osmocom.org> Message-ID: <1952537002.62.1524609680522.JavaMail.jenkins@jenkins.osmocom.org> See ------------------------------------------ [...truncated 93.13 KB...] make[2]: Entering directory ' make[2]: Nothing to be done for 'dvi'. make[2]: Leaving directory ' Making dvi in src make[2]: Entering directory ' make[2]: Nothing to be done for 'dvi'. make[2]: Leaving directory ' make[2]: Entering directory ' make[2]: Nothing to be done for 'dvi-am'. make[2]: Leaving directory ' make[1]: Leaving directory ' make[1]: Entering directory ' make check-recursive make[2]: Entering directory ' Making check in include make[3]: Entering directory ' make[3]: Nothing to be done for 'check'. make[3]: Leaving directory ' Making check in src make[3]: Entering directory ' make[3]: Nothing to be done for 'check'. make[3]: Leaving directory ' make[3]: Entering directory ' make[3]: Leaving directory ' make[2]: Leaving directory ' make[1]: Leaving directory ' make[1]: Entering directory ' make install-recursive make[2]: Entering directory ' Making install in include make[3]: Entering directory ' make[4]: Entering directory ' make[4]: Nothing to be done for 'install-exec-am'. /bin/mkdir -p ' /usr/bin/install -c -m 644 ../../../include/rtl-sdr.h ../../../include/rtl-sdr_export.h ' make[4]: Leaving directory ' make[3]: Leaving directory ' Making install in src make[3]: Entering directory ' make[4]: Entering directory ' /bin/mkdir -p ' /bin/bash ../libtool --mode=install /usr/bin/install -c librtlsdr.la ' libtool: install: /usr/bin/install -c .libs/librtlsdr.so.0.0.5 libtool: install: (cd && { ln -s -f librtlsdr.so.0.0.5 librtlsdr.so.0 || { rm -f librtlsdr.so.0 && ln -s librtlsdr.so.0.0.5 librtlsdr.so.0; }; }) libtool: install: (cd && { ln -s -f librtlsdr.so.0.0.5 librtlsdr.so || { rm -f librtlsdr.so && ln -s librtlsdr.so.0.0.5 librtlsdr.so; }; }) libtool: install: /usr/bin/install -c .libs/librtlsdr.lai libtool: install: /usr/bin/install -c .libs/librtlsdr.a libtool: install: chmod 644 libtool: install: ranlib libtool: finish: PATH="/usr/local/bin:/usr/bin:/bin:/usr/games:/home/osmocom-build/bin:/sbin" ldconfig -n ---------------------------------------------------------------------- Libraries have been installed in: If you ever happen to want to link against installed libraries in a given directory, LIBDIR, you must either use libtool, and specify the full pathname of the library, or use the '-LLIBDIR' flag during linking and do at least one of the following: - add LIBDIR to the 'LD_LIBRARY_PATH' environment variable during execution - add LIBDIR to the 'LD_RUN_PATH' environment variable during linking - use the '-Wl,-rpath -Wl,LIBDIR' linker flag - have your system administrator add LIBDIR to '/etc/ld.so.conf' See any operating system documentation about shared libraries for more information, such as the ld(1) and ld.so(8) manual pages. ---------------------------------------------------------------------- /bin/mkdir -p ' /bin/bash ../libtool --mode=install /usr/bin/install -c rtl_sdr rtl_tcp rtl_test rtl_fm rtl_eeprom rtl_adsb rtl_power ' libtool: install: /usr/bin/install -c .libs/rtl_sdr libtool: install: /usr/bin/install -c .libs/rtl_tcp libtool: install: /usr/bin/install -c .libs/rtl_test libtool: install: /usr/bin/install -c .libs/rtl_fm libtool: install: /usr/bin/install -c .libs/rtl_eeprom libtool: install: /usr/bin/install -c .libs/rtl_adsb libtool: install: /usr/bin/install -c .libs/rtl_power make[4]: Nothing to be done for 'install-data-am'. make[4]: Leaving directory ' make[3]: Leaving directory ' make[3]: Entering directory ' make[4]: Entering directory ' make[4]: Nothing to be done for 'install-exec-am'. /bin/mkdir -p ' /usr/bin/install -c -m 644 ./doc/html.tar ' /bin/mkdir -p ' /usr/bin/install -c -m 644 librtlsdr.pc ' make install-data-hook make[5]: Entering directory ' cd && tar xf html.tar --strip-components 1 && rm -f html.tar make[5]: Leaving directory ' make[4]: Leaving directory ' make[3]: Leaving directory ' make[2]: Leaving directory ' make[1]: Leaving directory ' make[1]: Entering directory ' Making installcheck in include make[2]: Entering directory ' make[2]: Nothing to be done for 'installcheck'. make[2]: Leaving directory ' Making installcheck in src make[2]: Entering directory ' make[2]: Nothing to be done for 'installcheck'. make[2]: Leaving directory ' make[2]: Entering directory ' make[2]: Nothing to be done for 'installcheck-am'. make[2]: Leaving directory ' make[1]: Leaving directory ' make[1]: Entering directory ' Making uninstall in include make[2]: Entering directory ' ( cd ' && rm -f rtl-sdr.h rtl-sdr_export.h ) make[2]: Leaving directory ' Making uninstall in src make[2]: Entering directory ' ( cd ' && rm -f rtl_sdr rtl_tcp rtl_test rtl_fm rtl_eeprom rtl_adsb rtl_power ) /bin/bash ../libtool --mode=uninstall rm -f ' libtool: uninstall: rm -f make[2]: Leaving directory ' make[2]: Entering directory ' ( cd ' && rm -f html.tar ) ( cd ' && rm -f librtlsdr.pc ) make uninstall-hook make[3]: Entering directory ' cd && rm -rf make[3]: Leaving directory ' make[2]: Leaving directory ' make[1]: Leaving directory ' make[1]: Entering directory ' make[1]: Leaving directory ' make[1]: Entering directory ' make install-recursive make[2]: Entering directory ' Making install in include make[3]: Entering directory ' make[4]: Entering directory ' make[4]: Nothing to be done for 'install-exec-am'. /bin/mkdir -p '/tmp/am-dc-6706/ /usr/bin/install -c -m 644 ../../../include/rtl-sdr.h ../../../include/rtl-sdr_export.h '/tmp/am-dc-6706/ make[4]: Leaving directory ' make[3]: Leaving directory ' Making install in src make[3]: Entering directory ' make[4]: Entering directory ' /bin/mkdir -p '/tmp/am-dc-6706/ /bin/bash ../libtool --mode=install /usr/bin/install -c librtlsdr.la '/tmp/am-dc-6706/ libtool: install: /usr/bin/install -c .libs/librtlsdr.so.0.0.5 /tmp/am-dc-6706/ libtool: install: (cd /tmp/am-dc-6706/ && { ln -s -f librtlsdr.so.0.0.5 librtlsdr.so.0 || { rm -f librtlsdr.so.0 && ln -s librtlsdr.so.0.0.5 librtlsdr.so.0; }; }) libtool: install: (cd /tmp/am-dc-6706/ && { ln -s -f librtlsdr.so.0.0.5 librtlsdr.so || { rm -f librtlsdr.so && ln -s librtlsdr.so.0.0.5 librtlsdr.so; }; }) libtool: install: /usr/bin/install -c .libs/librtlsdr.lai /tmp/am-dc-6706/ libtool: install: /usr/bin/install -c .libs/librtlsdr.a /tmp/am-dc-6706/ libtool: install: chmod 644 /tmp/am-dc-6706/ libtool: install: ranlib /tmp/am-dc-6706/ libtool: warning: remember to run 'libtool --finish /bin/mkdir -p '/tmp/am-dc-6706/ /bin/bash ../libtool --mode=install /usr/bin/install -c rtl_sdr rtl_tcp rtl_test rtl_fm rtl_eeprom rtl_adsb rtl_power '/tmp/am-dc-6706/ libtool: warning: 'librtlsdr.la' has not been installed in ' libtool: install: /usr/bin/install -c .libs/rtl_sdr /tmp/am-dc-6706/ libtool: warning: 'librtlsdr.la' has not been installed in ' libtool: install: /usr/bin/install -c .libs/rtl_tcp /tmp/am-dc-6706/ libtool: warning: 'librtlsdr.la' has not been installed in ' libtool: install: /usr/bin/install -c .libs/rtl_test /tmp/am-dc-6706/ libtool: warning: 'librtlsdr.la' has not been installed in ' libtool: install: /usr/bin/install -c .libs/rtl_fm /tmp/am-dc-6706/ libtool: warning: 'librtlsdr.la' has not been installed in ' libtool: install: /usr/bin/install -c .libs/rtl_eeprom /tmp/am-dc-6706/ libtool: warning: 'librtlsdr.la' has not been installed in ' libtool: install: /usr/bin/install -c .libs/rtl_adsb /tmp/am-dc-6706/ libtool: warning: 'librtlsdr.la' has not been installed in ' libtool: install: /usr/bin/install -c .libs/rtl_power /tmp/am-dc-6706/ make[4]: Nothing to be done for 'install-data-am'. make[4]: Leaving directory ' make[3]: Leaving directory ' make[3]: Entering directory ' make[4]: Entering directory ' make[4]: Nothing to be done for 'install-exec-am'. /bin/mkdir -p '/tmp/am-dc-6706/ /usr/bin/install -c -m 644 ./doc/html.tar '/tmp/am-dc-6706/ /bin/mkdir -p '/tmp/am-dc-6706/ /usr/bin/install -c -m 644 librtlsdr.pc '/tmp/am-dc-6706/ make install-data-hook make[5]: Entering directory ' cd /tmp/am-dc-6706/ && tar xf html.tar --strip-components 1 && rm -f html.tar make[5]: Leaving directory ' make[4]: Leaving directory ' make[3]: Leaving directory ' make[2]: Leaving directory ' make[1]: Leaving directory ' make[1]: Entering directory ' Making uninstall in include make[2]: Entering directory ' ( cd '/tmp/am-dc-6706/ && rm -f rtl-sdr.h rtl-sdr_export.h ) make[2]: Leaving directory ' Making uninstall in src make[2]: Entering directory ' ( cd '/tmp/am-dc-6706/ && rm -f rtl_sdr rtl_tcp rtl_test rtl_fm rtl_eeprom rtl_adsb rtl_power ) /bin/bash ../libtool --mode=uninstall rm -f '/tmp/am-dc-6706/ libtool: uninstall: rm -f /tmp/am-dc-6706/ /tmp/am-dc-6706/ /tmp/am-dc-6706/ /tmp/am-dc-6706/ /tmp/am-dc-6706/ make[2]: Leaving directory ' make[2]: Entering directory ' ( cd '/tmp/am-dc-6706/ && rm -f html.tar ) ( cd '/tmp/am-dc-6706/ && rm -f librtlsdr.pc ) make uninstall-hook make[3]: Entering directory ' cd /tmp/am-dc-6706/ && rm -rf make[3]: Leaving directory ' make[2]: Leaving directory ' make[1]: Leaving directory ' make[1]: Entering directory ' ERROR: files left after uninstall: (check DESTDIR support) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Makefile:757: recipe for target 'distuninstallcheck' failed make[1]: *** [distuninstallcheck] Error 1 make[1]: Leaving directory ' Makefile:701: recipe for target 'distcheck' failed make: *** [distcheck] Error 1 + cat-testlogs.sh Build step 'Execute shell' marked build as failure [WARNINGS]Skipping publisher since build result is FAILURE From gerrit-no-reply at lists.osmocom.org Tue Apr 24 22:46:43 2018 From: gerrit-no-reply at lists.osmocom.org (Vadim Yanitskiy) Date: Tue, 24 Apr 2018 22:46:43 +0000 Subject: libosmocore[master]: gsm_utils: call gnutls_global_init() as constructor In-Reply-To: References: Message-ID: Patch Set 3: > We should check the version at runtime, not at compilation time. > Check he API I showed you above. I am agree that checking at runtime would be better, but the fallback itself is enabled at compile-time :/ -- To view, visit https://gerrit.osmocom.org/7904 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I241b6ae5aa8df13dd78f04658cf0953e9561c9e2 Gerrit-PatchSet: 3 Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Owner: lynxis lazus Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Neels Hofmeyr Gerrit-Reviewer: Pau Espin Pedrol Gerrit-Reviewer: Vadim Yanitskiy Gerrit-Reviewer: lynxis lazus Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Wed Apr 25 08:37:18 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Wed, 25 Apr 2018 08:37:18 +0000 Subject: libosmocore[master]: gsm_utils: call gnutls_global_init() as constructor In-Reply-To: References: Message-ID: Patch Set 3: > > We should check the version at runtime, not at compilation time. > > Check he API I showed you above. > > I am agree that checking at runtime would be better, > but the fallback itself is enabled at compile-time :/ What do you mean? we saw there's that API which should be working fine. However, the macro defined on top of it it's wrong IMHO as it actually uses information available at compile-time. -- To view, visit https://gerrit.osmocom.org/7904 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I241b6ae5aa8df13dd78f04658cf0953e9561c9e2 Gerrit-PatchSet: 3 Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Owner: lynxis lazus Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Neels Hofmeyr Gerrit-Reviewer: Pau Espin Pedrol Gerrit-Reviewer: Vadim Yanitskiy Gerrit-Reviewer: lynxis lazus Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Wed Apr 25 08:51:32 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Wed, 25 Apr 2018 08:51:32 +0000 Subject: osmo-trx[master]: Build one osmo-trx binary for each device support enabled In-Reply-To: References: Message-ID: Patch Set 1: Tested that both uhd and usrp1 can be built (as osmo-trx-{uhd,usrp1}) and tested with a B200 that it is working fine. -- To view, visit https://gerrit.osmocom.org/7917 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Iea8c0d7434762713a53440d29bf3ebd84accb262 Gerrit-PatchSet: 1 Gerrit-Project: osmo-trx Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Pau Espin Pedrol Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Wed Apr 25 13:03:17 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Wed, 25 Apr 2018 13:03:17 +0000 Subject: [PATCH] osmo-bts[master]: scheduler_trx: Fix signed integer overflow in clock calculat... Message-ID: Review at https://gerrit.osmocom.org/7918 scheduler_trx: Fix signed integer overflow in clock calculations Should fix following observed run time errors: osmo-bts-trx/scheduler_trx.c:1627:65: runtime error: signed integer overflow: -1081823 * 4615 cannot be represented in type 'int' osmo-bts-trx/scheduler_trx.c:1627:21: runtime error: signed integer overflow: 1852394502 - -697645849 cannot be represented in type 'int' Related: OS#3213 Change-Id: I36e0d2d0d0c6e35e963f611135453c4a4c00bc99 --- M src/osmo-bts-trx/scheduler_trx.c 1 file changed, 3 insertions(+), 2 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-bts refs/changes/18/7918/1 diff --git a/src/osmo-bts-trx/scheduler_trx.c b/src/osmo-bts-trx/scheduler_trx.c index 4a31df2..4c4ae6c 100644 --- a/src/osmo-bts-trx/scheduler_trx.c +++ b/src/osmo-bts-trx/scheduler_trx.c @@ -1581,7 +1581,7 @@ struct osmo_trx_clock_state *tcs = &g_clk_s; struct timespec tv_now; int elapsed_us, elapsed_fn; - int elapsed_us_since_clk, elapsed_fn_since_clk, error_us_since_clk; + int64_t elapsed_us_since_clk, elapsed_fn_since_clk, error_us_since_clk; unsigned int fn_caught_up = 0; const struct timespec interval = { .tv_sec = 0, .tv_nsec = FRAME_DURATION_nS }; @@ -1625,7 +1625,8 @@ elapsed_fn_since_clk = compute_elapsed_fn(tcs->last_clk_ind.fn, fn); /* error (delta) between local clock since last CLK and CLK based on FN clock at TRX */ error_us_since_clk = elapsed_us_since_clk - (FRAME_DURATION_uS * elapsed_fn_since_clk); - LOGP(DL1C, LOGL_INFO, "TRX Clock Ind: elapsed_us=%7d, elapsed_fn=%3d, error_us=%+5d\n", + LOGP(DL1C, LOGL_INFO, "TRX Clock Ind: elapsed_us=%7"PRId64", " + "elapsed_fn=%3"PRId64", error_us=%+5"PRId64"\n", elapsed_us_since_clk, elapsed_fn_since_clk, error_us_since_clk); /* TODO: put this computed error_us_since_clk into some filter -- To view, visit https://gerrit.osmocom.org/7918 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I36e0d2d0d0c6e35e963f611135453c4a4c00bc99 Gerrit-PatchSet: 1 Gerrit-Project: osmo-bts Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol From jenkins at lists.osmocom.org Wed Apr 25 15:10:07 2018 From: jenkins at lists.osmocom.org (jenkins at lists.osmocom.org) Date: Wed, 25 Apr 2018 15:10:07 +0000 (UTC) Subject: =?UTF-8?Q?Build_failed_in_Jenkins:_master-asn1c_=C2=BB_a1=3Ddefault?= =?UTF-8?Q?,a2=3Ddefault,a3=3Ddefault,osmocom-master-debian9_#103?= In-Reply-To: <718418774.57.1524582607178.JavaMail.jenkins@jenkins.osmocom.org> References: <718418774.57.1524582607178.JavaMail.jenkins@jenkins.osmocom.org> Message-ID: <1498340227.75.1524669007076.JavaMail.jenkins@jenkins.osmocom.org> See ------------------------------------------ [...truncated 3.81 KB...] checking target system type... x86_64-unknown-linux-gnu checking for a BSD-compatible install... /usr/bin/install -c checking whether build environment is sane... yes checking for gawk... gawk checking whether make sets $(MAKE)... yes checking whether to enable maintainer-specific portions of Makefiles... no checking for style of include used by make... GNU checking for gcc... gcc checking for C compiler default output file name... a.out checking whether the C compiler works... yes checking whether we are cross compiling... no checking for suffix of executables... checking for suffix of object files... o checking whether we are using the GNU C compiler... yes checking whether gcc accepts -g... yes checking for gcc option to accept ISO C89... none needed checking dependency style of gcc... gcc3 checking for a sed that does not truncate output... /bin/sed checking for grep that handles long lines and -e... /bin/grep checking for egrep... /bin/grep -E checking for ld used by gcc... /usr/bin/ld checking if the linker (/usr/bin/ld) is GNU ld... yes checking for /usr/bin/ld option to reload object files... -r checking for BSD-compatible nm... /usr/bin/nm -B checking whether ln -s works... yes checking how to recognise dependent libraries... pass_all checking how to run the C preprocessor... gcc -E checking for ANSI C header files... yes checking for sys/types.h... yes checking for sys/stat.h... yes checking for stdlib.h... yes checking for string.h... yes checking for memory.h... yes checking for strings.h... yes checking for inttypes.h... yes checking for stdint.h... yes checking for unistd.h... yes checking dlfcn.h usability... yes checking dlfcn.h presence... yes checking for dlfcn.h... yes checking for g++... g++ checking whether we are using the GNU C++ compiler... yes checking whether g++ accepts -g... yes checking dependency style of g++... gcc3 checking how to run the C++ preprocessor... g++ -E checking for g77... no checking for f77... no checking for xlf... no checking for frt... no checking for pgf77... no checking for cf77... no checking for fort77... no checking for fl32... no checking for af77... no checking for f90... no checking for xlf90... no checking for pgf90... no checking for pghpf... no checking for epcf90... no checking for gfortran... no checking for g95... no checking for f95... no checking for fort... no checking for xlf95... no checking for ifort... no checking for ifc... no checking for efc... no checking for pgf95... no checking for lf95... no checking for ftn... no checking whether we are using the GNU Fortran 77 compiler... no checking whether accepts -g... no checking the maximum length of command line arguments... 32768 checking command to parse /usr/bin/nm -B output from gcc object... ok checking for objdir... .libs checking for ar... ar checking for ranlib... ranlib checking for strip... strip checking if gcc supports -fno-rtti -fno-exceptions... no checking for gcc option to produce PIC... -fPIC checking if gcc PIC flag -fPIC works... yes checking if gcc static flag -static works... yes checking if gcc supports -c -o file.o... yes checking whether the gcc linker (/usr/bin/ld -m elf_x86_64) supports shared libraries... yes checking whether -lc should be explicitly linked in... no checking dynamic linker characteristics... GNU/Linux ld.so checking how to hardcode library paths into programs... immediate checking whether stripping libraries is possible... yes checking if libtool supports shared libraries... yes checking whether to build shared libraries... yes checking whether to build static libraries... yes configure: creating libtool appending configuration tag "CXX" to libtool checking for ld used by g++... /usr/bin/ld -m elf_x86_64 checking if the linker (/usr/bin/ld -m elf_x86_64) is GNU ld... yes checking whether the g++ linker (/usr/bin/ld -m elf_x86_64) supports shared libraries... yes checking for g++ option to produce PIC... -fPIC checking if g++ PIC flag -fPIC works... yes checking if g++ static flag -static works... yes checking if g++ supports -c -o file.o... yes checking whether the g++ linker (/usr/bin/ld -m elf_x86_64) supports shared libraries... yes checking dynamic linker characteristics... GNU/Linux ld.so checking how to hardcode library paths into programs... immediate appending configuration tag "F77" to libtool checking for autoconf... /usr/bin/autoconf checking for autoheader... /usr/bin/autoheader checking for gcc... (cached) gcc checking whether we are using the GNU C compiler... (cached) yes checking whether gcc accepts -g... (cached) yes checking for gcc option to accept ISO C89... (cached) none needed checking dependency style of gcc... (cached) gcc3 checking how to run the C preprocessor... gcc -E checking for a BSD-compatible install... /usr/bin/install -c checking whether ln -s works... yes checking whether make sets $(MAKE)... (cached) yes checking for bison... bison -y checking for flex... flex checking for yywrap in -lfl... yes checking lex output file root... lex.yy checking whether yytext is a pointer... yes checking for ar... /usr/bin/ar checking for ANSI C header files... (cached) yes checking sys/param.h usability... yes checking sys/param.h presence... yes checking for sys/param.h... yes checking whether byte ordering is bigendian... no checking for off_t... yes checking for size_t... yes checking whether struct tm is in sys/time.h or time.h... time.h checking for intmax_t... yes checking for library containing getopt... none required checking for strtoimax... yes checking for strtoll... yes checking for mergesort... no checking for mkstemps... yes configure: creating ./config.status config.status: creating skeletons/standard-modules/Makefile config.status: creating skeletons/tests/Makefile config.status: creating libasn1compiler/Makefile config.status: creating libasn1parser/Makefile config.status: creating libasn1print/Makefile config.status: creating asn1c/webcgi/Makefile config.status: creating asn1c/tests/Makefile config.status: creating libasn1fix/Makefile config.status: creating skeletons/Makefile config.status: creating examples/Makefile config.status: creating tests/Makefile config.status: creating asn1c/Makefile config.status: creating doc/Makefile config.status: creating asn1c.spec config.status: creating Makefile config.status: creating config.h config.status: executing depfiles commands + make -j 8 make all-recursive make[1]: Entering directory ' Making all in libasn1parser make[2]: Entering directory ' if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1parser.lo -MD -MP -MF ".deps/asn1parser.Tpo" -c -o asn1parser.lo asn1parser.c; \ then mv -f ".deps/asn1parser.Tpo" ".deps/asn1parser.Plo"; else rm -f ".deps/asn1parser.Tpo"; exit 1; fi bison -y -p asn1p_ -d asn1p_y.y flex -s -p -Cem -Pasn1p_ -olex.yy.c asn1p_l.l if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_module.lo -MD -MP -MF ".deps/asn1p_module.Tpo" -c -o asn1p_module.lo asn1p_module.c; \ then mv -f ".deps/asn1p_module.Tpo" ".deps/asn1p_module.Plo"; else rm -f ".deps/asn1p_module.Tpo"; exit 1; fi if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_oid.lo -MD -MP -MF ".deps/asn1p_oid.Tpo" -c -o asn1p_oid.lo asn1p_oid.c; \ then mv -f ".deps/asn1p_oid.Tpo" ".deps/asn1p_oid.Plo"; else rm -f ".deps/asn1p_oid.Tpo"; exit 1; fi if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_value.lo -MD -MP -MF ".deps/asn1p_value.Tpo" -c -o asn1p_value.lo asn1p_value.c; \ then mv -f ".deps/asn1p_value.Tpo" ".deps/asn1p_value.Plo"; else rm -f ".deps/asn1p_value.Tpo"; exit 1; fi if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_expr.lo -MD -MP -MF ".deps/asn1p_expr.Tpo" -c -o asn1p_expr.lo asn1p_expr.c; \ then mv -f ".deps/asn1p_expr.Tpo" ".deps/asn1p_expr.Plo"; else rm -f ".deps/asn1p_expr.Tpo"; exit 1; fi if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_xports.lo -MD -MP -MF ".deps/asn1p_xports.Tpo" -c -o asn1p_xports.lo asn1p_xports.c; \ then mv -f ".deps/asn1p_xports.Tpo" ".deps/asn1p_xports.Plo"; else rm -f ".deps/asn1p_xports.Tpo"; exit 1; fi %option yylineno entails a performance penalty ONLY on rules that can match newline characters REJECT entails a large performance penalty asn1p_y.y: warning: 2 shift/reduce conflicts [-Wconflicts-sr] sed '/^#/ s|lex.yy\.c|asn1p_l.c|' lex.yy.c >asn1p_l.c rm -f lex.yy.c if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_constr.lo -MD -MP -MF ".deps/asn1p_constr.Tpo" -c -o asn1p_constr.lo asn1p_constr.c; \ then mv -f ".deps/asn1p_constr.Tpo" ".deps/asn1p_constr.Plo"; else rm -f ".deps/asn1p_constr.Tpo"; exit 1; fi mkdir .libs mkdir .libs mkdir: cannot create directory '.libs': File exists gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1parser.lo -MD -MP -MF .deps/asn1parser.Tpo -c asn1parser.c -fPIC -DPIC -o .libs/asn1parser.o gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_expr.lo -MD -MP -MF .deps/asn1p_expr.Tpo -c asn1p_expr.c -fPIC -DPIC -o .libs/asn1p_expr.o gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_module.lo -MD -MP -MF .deps/asn1p_module.Tpo -c asn1p_module.c -fPIC -DPIC -o .libs/asn1p_module.o gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_value.lo -MD -MP -MF .deps/asn1p_value.Tpo -c asn1p_value.c -fPIC -DPIC -o .libs/asn1p_value.o gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_oid.lo -MD -MP -MF .deps/asn1p_oid.Tpo -c asn1p_oid.c -fPIC -DPIC -o .libs/asn1p_oid.o gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_xports.lo -MD -MP -MF .deps/asn1p_xports.Tpo -c asn1p_xports.c -fPIC -DPIC -o .libs/asn1p_xports.o gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_constr.lo -MD -MP -MF .deps/asn1p_constr.Tpo -c asn1p_constr.c -fPIC -DPIC -o .libs/asn1p_constr.o gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_module.lo -MD -MP -MF .deps/asn1p_module.Tpo -c asn1p_module.c -o asn1p_module.o >/dev/null 2>&1 gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_xports.lo -MD -MP -MF .deps/asn1p_xports.Tpo -c asn1p_xports.c -o asn1p_xports.o >/dev/null 2>&1 gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1parser.lo -MD -MP -MF .deps/asn1parser.Tpo -c asn1parser.c -o asn1parser.o >/dev/null 2>&1 gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_oid.lo -MD -MP -MF .deps/asn1p_oid.Tpo -c asn1p_oid.c -o asn1p_oid.o >/dev/null 2>&1 gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_value.lo -MD -MP -MF .deps/asn1p_value.Tpo -c asn1p_value.c -o asn1p_value.o >/dev/null 2>&1 if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_param.lo -MD -MP -MF ".deps/asn1p_param.Tpo" -c -o asn1p_param.lo asn1p_param.c; \ then mv -f ".deps/asn1p_param.Tpo" ".deps/asn1p_param.Plo"; else rm -f ".deps/asn1p_param.Tpo"; exit 1; fi if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_class.lo -MD -MP -MF ".deps/asn1p_class.Tpo" -c -o asn1p_class.lo asn1p_class.c; \ then mv -f ".deps/asn1p_class.Tpo" ".deps/asn1p_class.Plo"; else rm -f ".deps/asn1p_class.Tpo"; exit 1; fi gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_expr.lo -MD -MP -MF .deps/asn1p_expr.Tpo -c asn1p_expr.c -o asn1p_expr.o >/dev/null 2>&1 gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_constr.lo -MD -MP -MF .deps/asn1p_constr.Tpo -c asn1p_constr.c -o asn1p_constr.o >/dev/null 2>&1 if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_ref.lo -MD -MP -MF ".deps/asn1p_ref.Tpo" -c -o asn1p_ref.lo asn1p_ref.c; \ then mv -f ".deps/asn1p_ref.Tpo" ".deps/asn1p_ref.Plo"; else rm -f ".deps/asn1p_ref.Tpo"; exit 1; fi gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_class.lo -MD -MP -MF .deps/asn1p_class.Tpo -c asn1p_class.c -fPIC -DPIC -o .libs/asn1p_class.o gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_param.lo -MD -MP -MF .deps/asn1p_param.Tpo -c asn1p_param.c -fPIC -DPIC -o .libs/asn1p_param.o if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_l.lo -MD -MP -MF ".deps/asn1p_l.Tpo" -c -o asn1p_l.lo asn1p_l.c; \ then mv -f ".deps/asn1p_l.Tpo" ".deps/asn1p_l.Plo"; else rm -f ".deps/asn1p_l.Tpo"; exit 1; fi gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_ref.lo -MD -MP -MF .deps/asn1p_ref.Tpo -c asn1p_ref.c -fPIC -DPIC -o .libs/asn1p_ref.o gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_param.lo -MD -MP -MF .deps/asn1p_param.Tpo -c asn1p_param.c -o asn1p_param.o >/dev/null 2>&1 if test -f y.tab.h; then \ to=`echo "asn1p_y_H" | sed \ -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/' \ -e 's/[^ABCDEFGHIJKLMNOPQRSTUVWXYZ]/_/g'`; \ sed -e "/^#/!b" -e "s/Y_TAB_H/$to/g" -e "s|y\.tab\.h|asn1p_y.h|" \ y.tab.h >asn1p_y.ht; \ rm -f y.tab.h; \ if cmp -s asn1p_y.ht asn1p_y.h; then \ rm -f asn1p_y.ht ;\ else \ mv asn1p_y.ht asn1p_y.h; \ fi; \ fi if test -f y.output; then \ mv y.output asn1p_y.output; \ fi sed '/^#/ s|y\.tab\.c|asn1p_y.c|' y.tab.c >asn1p_y.ct && mv asn1p_y.ct asn1p_y.c rm -f y.tab.c if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_y.lo -MD -MP -MF ".deps/asn1p_y.Tpo" -c -o asn1p_y.lo asn1p_y.c; \ then mv -f ".deps/asn1p_y.Tpo" ".deps/asn1p_y.Plo"; else rm -f ".deps/asn1p_y.Tpo"; exit 1; fi gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_class.lo -MD -MP -MF .deps/asn1p_class.Tpo -c asn1p_class.c -o asn1p_class.o >/dev/null 2>&1 gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_l.lo -MD -MP -MF .deps/asn1p_l.Tpo -c asn1p_l.c -fPIC -DPIC -o .libs/asn1p_l.o gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_ref.lo -MD -MP -MF .deps/asn1p_ref.Tpo -c asn1p_ref.c -o asn1p_ref.o >/dev/null 2>&1 gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_y.lo -MD -MP -MF .deps/asn1p_y.Tpo -c asn1p_y.c -fPIC -DPIC -o .libs/asn1p_y.o asn1p_y.y: In function 'asn1p_parse': asn1p_y.y:357:13: error: 'param' undeclared (first use in this function) *(void **)param = $1; ^~~~~ asn1p_y.y:357:13: note: each undeclared identifier is reported only once for each function it appears in Makefile:299: recipe for target 'asn1p_y.lo' failed make[2]: *** [asn1p_y.lo] Error 1 make[2]: *** Waiting for unfinished jobs.... gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_l.lo -MD -MP -MF .deps/asn1p_l.Tpo -c asn1p_l.c -o asn1p_l.o >/dev/null 2>&1 make[2]: Leaving directory ' Makefile:302: recipe for target 'all-recursive' failed make[1]: *** [all-recursive] Error 1 make[1]: Leaving directory ' Makefile:212: recipe for target 'all' failed make: *** [all] Error 2 Build step 'Execute shell' marked build as failure [WARNINGS] Skipping publisher since build result is FAILURE From gerrit-no-reply at lists.osmocom.org Wed Apr 25 18:46:24 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Wed, 25 Apr 2018 18:46:24 +0000 Subject: [PATCH] osmo-ggsn[master]: fix segfault in case of kernel gtp-u Message-ID: Review at https://gerrit.osmocom.org/7919 fix segfault in case of kernel gtp-u There's a problem during the initial start-up of osmo-ggsn in case of kernel gtp-u: apn->ggsn->gsn is not yet set while parsing the 'apn' nodes from the config file. This member is only set after the last 'apn' node has been parsed at the end of the 'ggsn' node. Closes: OS#3217 Change-Id: I022a5e5ebc1f155e8f94938856d310462f79bbe8 --- M ggsn/ggsn.c 1 file changed, 8 insertions(+), 0 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-ggsn refs/changes/19/7919/1 diff --git a/ggsn/ggsn.c b/ggsn/ggsn.c index cb11c49..bbdb5c8 100644 --- a/ggsn/ggsn.c +++ b/ggsn/ggsn.c @@ -284,6 +284,14 @@ apn_stop(apn, false); return -1; } + if (apn->ggsn->gsn == NULL) { + /* skip bringing up the APN now if the GSN is not initialized yet. + * This happens during initial load of the config file, as the + * "no shutdown" in the ggsn node only happens after the "apn" nodes + * are brought up */ + LOGPAPN(LOGL_NOTICE, apn, "Skipping APN start\n"); + return 0; + } /* use GTP kernel module for data packet encapsulation */ if (gtp_kernel_init(apn->ggsn->gsn, apn->tun.cfg.dev_name, &apn->v4.cfg.ifconfig_prefix, apn->tun.cfg.ipup_script) < 0) { -- To view, visit https://gerrit.osmocom.org/7919 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I022a5e5ebc1f155e8f94938856d310462f79bbe8 Gerrit-PatchSet: 1 Gerrit-Project: osmo-ggsn Gerrit-Branch: master Gerrit-Owner: Harald Welte From gerrit-no-reply at lists.osmocom.org Wed Apr 25 18:46:25 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Wed, 25 Apr 2018 18:46:25 +0000 Subject: [PATCH] osmo-ggsn[master]: lib/tun.c: Generalize tun_sifflags() to netdev_sifflags Message-ID: Review at https://gerrit.osmocom.org/7920 lib/tun.c: Generalize tun_sifflags() to netdev_sifflags There's nothing "tun" specific about that function, let's clarify that. Change-Id: Iae7ced700245d6c1ac7e9807ab80d12fde8da116 --- M lib/tun.c 1 file changed, 7 insertions(+), 7 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-ggsn refs/changes/20/7920/1 diff --git a/lib/tun.c b/lib/tun.c index f6d3503..d6ca24e 100644 --- a/lib/tun.c +++ b/lib/tun.c @@ -1,7 +1,7 @@ /* * TUN interface functions. * Copyright (C) 2002, 2003, 2004 Mondru AB. - * Copyright (C) 2017 by Harald Welte + * Copyright (C) 2017-2018 by Harald Welte * * The contents of this file may be used under the terms of the GNU * General Public License Version 2, provided that the above copyright @@ -79,14 +79,14 @@ } #endif -static int tun_sifflags(struct tun_t *this, int flags) +static int netdev_sifflags(const char *devname, int flags) { struct ifreq ifr; int fd; memset(&ifr, '\0', sizeof(ifr)); ifr.ifr_flags = flags; - strncpy(ifr.ifr_name, this->devname, IFNAMSIZ); + strncpy(ifr.ifr_name, devname, IFNAMSIZ); ifr.ifr_name[IFNAMSIZ - 1] = 0; /* Make sure to terminate */ if ((fd = socket(AF_INET, SOCK_DGRAM, 0)) < 0) { SYS_ERR(DTUN, LOGL_ERROR, errno, "socket() failed"); @@ -187,7 +187,7 @@ /* TODO: How does it work on Solaris? */ - tun_sifflags(this, IFF_UP | IFF_RUNNING); + netdev_sifflags(this->devname, IFF_UP | IFF_RUNNING); #if defined(__FreeBSD__) || defined (__APPLE__) tun_addroute(this, dstaddr, addr, &this->netmask); @@ -270,7 +270,7 @@ /* TODO: How does it work on Solaris? */ - tun_sifflags(this, IFF_UP | IFF_RUNNING); + netdev_sifflags(this->devname, IFF_UP | IFF_RUNNING); #if 0 /* FIXME */ //#if defined(__FreeBSD__) || defined (__APPLE__) @@ -400,7 +400,7 @@ return -1; } - status = tun_sifflags(this, IFF_UP | IFF_RUNNING); + status = netdev_sifflags(this->devname, IFF_UP | IFF_RUNNING); if (status == -1) { close(fd); return -1; @@ -570,7 +570,7 @@ return -1; } - status = tun_sifflags(this, IFF_UP | IFF_RUNNING); + status = netdev_sifflags(this->devname, IFF_UP | IFF_RUNNING); if (status == -1) { close(fd); return -1; -- To view, visit https://gerrit.osmocom.org/7920 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Iae7ced700245d6c1ac7e9807ab80d12fde8da116 Gerrit-PatchSet: 1 Gerrit-Project: osmo-ggsn Gerrit-Branch: master Gerrit-Owner: Harald Welte From gerrit-no-reply at lists.osmocom.org Wed Apr 25 18:46:25 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Wed, 25 Apr 2018 18:46:25 +0000 Subject: [PATCH] osmo-ggsn[master]: lib/tun.c: generalize tun_*route() to netdev_*route() Message-ID: Review at https://gerrit.osmocom.org/7921 lib/tun.c: generalize tun_*route() to netdev_*route() There's nothing specific to tun devices in adding a route to the kernel. Change-Id: Ib077934aa5f3c9bed06e2cf16a980c965a7a046d --- M lib/tun.c M lib/tun.h M sgsnemu/sgsnemu.c 3 files changed, 10 insertions(+), 17 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-ggsn refs/changes/21/7921/1 diff --git a/lib/tun.c b/lib/tun.c index d6ca24e..14e4a58 100644 --- a/lib/tun.c +++ b/lib/tun.c @@ -274,7 +274,7 @@ #if 0 /* FIXME */ //#if defined(__FreeBSD__) || defined (__APPLE__) - tun_addroute6(this, dstaddr, addr, prefixlen); + netdev_addroute6(dstaddr, addr, prefixlen); this->routes = 1; #endif @@ -644,9 +644,7 @@ } } -static int tun_route(struct tun_t *this, - struct in_addr *dst, - struct in_addr *gateway, struct in_addr *mask, int delete) +static int netdev_route(struct in_addr *dst, struct in_addr *gateway, struct in_addr *mask, int delete) { #if defined(__linux__) @@ -745,18 +743,14 @@ } -int tun_addroute(struct tun_t *this, - struct in_addr *dst, - struct in_addr *gateway, struct in_addr *mask) +int netdev_addroute(struct in_addr *dst, struct in_addr *gateway, struct in_addr *mask) { - return tun_route(this, dst, gateway, mask, 0); + return netdev_route(dst, gateway, mask, 0); } -int tun_delroute(struct tun_t *this, - struct in_addr *dst, - struct in_addr *gateway, struct in_addr *mask) +int netdev_delroute(struct in_addr *dst, struct in_addr *gateway, struct in_addr *mask) { - return tun_route(this, dst, gateway, mask, 1); + return netdev_route(dst, gateway, mask, 1); } int tun_new(struct tun_t **tun, const char *dev_name) @@ -858,7 +852,7 @@ { if (tun->routes) { - tun_delroute(tun, &tun->dstaddr, &tun->addr, &tun->netmask); + netdev_delroute(&tun->dstaddr, &tun->addr, &tun->netmask); } if (close(tun->fd)) { diff --git a/lib/tun.h b/lib/tun.h index 6f7c0ff..af9e9f4 100644 --- a/lib/tun.h +++ b/lib/tun.h @@ -86,8 +86,7 @@ extern int tun_setaddr(struct tun_t *this, struct in46_addr *our_adr, struct in46_addr *his_adr, size_t prefixlen); -int tun_addroute(struct tun_t *this, struct in_addr *dst, - struct in_addr *gateway, struct in_addr *mask); +int netdev_addroute(struct in_addr *dst, struct in_addr *gateway, struct in_addr *mask); extern int tun_set_cb_ind(struct tun_t *this, int (*cb_ind) (struct tun_t * tun, void *pack, diff --git a/sgsnemu/sgsnemu.c b/sgsnemu/sgsnemu.c index 99f56da..8903d81 100644 --- a/sgsnemu/sgsnemu.c +++ b/sgsnemu/sgsnemu.c @@ -1437,7 +1437,7 @@ if (options.defaultroute) { struct in_addr rm; rm.s_addr = 0; - tun_addroute(tun, &rm, &addr.v4, &rm); + netdev_addroute(&rm, &addr.v4, &rm); } if (options.ipup) tun_runscript(tun, options.ipup); @@ -1588,7 +1588,7 @@ if (options.defaultroute) { struct in_addr rm; rm.s_addr = 0; - tun_addroute(tun, &rm, &options.destaddr.v4, &rm); + netdev_addroute(&rm, &options.destaddr.v4, &rm); } if (options.ipup) tun_runscript(tun, options.ipup); -- To view, visit https://gerrit.osmocom.org/7921 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Ib077934aa5f3c9bed06e2cf16a980c965a7a046d Gerrit-PatchSet: 1 Gerrit-Project: osmo-ggsn Gerrit-Branch: master Gerrit-Owner: Harald Welte From gerrit-no-reply at lists.osmocom.org Wed Apr 25 18:46:25 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Wed, 25 Apr 2018 18:46:25 +0000 Subject: [PATCH] osmo-ggsn[master]: lib/tun.c: Generalize tun_{set, add}addr*() functions Message-ID: Review at https://gerrit.osmocom.org/7922 lib/tun.c: Generalize tun_{set,add}addr*() functions There's nothing really tun-specific about the adding and removing of addresses to network devices. Let's generalize the related code. Change-Id: I139a950dd81a4b1199953be1608cd109a060f562 --- M lib/tun.c 1 file changed, 97 insertions(+), 51 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-ggsn refs/changes/22/7922/1 diff --git a/lib/tun.c b/lib/tun.c index 14e4a58..88d9ac9 100644 --- a/lib/tun.c +++ b/lib/tun.c @@ -102,8 +102,8 @@ return 0; } -static int tun_setaddr4(struct tun_t *this, struct in_addr *addr, - struct in_addr *dstaddr, struct in_addr *netmask) +static int netdev_setaddr4(const char *devname, struct in_addr *addr, + struct in_addr *dstaddr, struct in_addr *netmask) { struct ifreq ifr; int fd; @@ -122,7 +122,7 @@ sizeof(struct sockaddr_in); #endif - strncpy(ifr.ifr_name, this->devname, IFNAMSIZ); + strncpy(ifr.ifr_name, devname, IFNAMSIZ); ifr.ifr_name[IFNAMSIZ - 1] = 0; /* Make sure to terminate */ /* Create a channel to the NET kernel. */ @@ -132,7 +132,6 @@ } if (addr) { /* Set the interface address */ - this->addr.s_addr = addr->s_addr; memcpy(&((struct sockaddr_in *)&ifr.ifr_addr)->sin_addr, addr, sizeof(*addr)); if (ioctl(fd, SIOCSIFADDR, (void *)&ifr) < 0) { @@ -149,7 +148,6 @@ } if (dstaddr) { /* Set the destination address */ - this->dstaddr.s_addr = dstaddr->s_addr; memcpy(&((struct sockaddr_in *)&ifr.ifr_dstaddr)->sin_addr, dstaddr, sizeof(*dstaddr)); if (ioctl(fd, SIOCSIFDSTADDR, (caddr_t) & ifr) < 0) { @@ -161,7 +159,6 @@ } if (netmask) { /* Set the netmask */ - this->netmask.s_addr = netmask->s_addr; #if defined(__linux__) memcpy(&((struct sockaddr_in *)&ifr.ifr_netmask)->sin_addr, netmask, sizeof(*netmask)); @@ -180,25 +177,45 @@ } close(fd); - this->addrs++; /* On linux the route to the interface is set automatically on FreeBSD we have to do this manually */ /* TODO: How does it work on Solaris? */ - netdev_sifflags(this->devname, IFF_UP | IFF_RUNNING); + netdev_sifflags(devname, IFF_UP | IFF_RUNNING); #if defined(__FreeBSD__) || defined (__APPLE__) - tun_addroute(this, dstaddr, addr, &this->netmask); - this->routes = 1; + netdev_addroute(dstaddr, addr, &this->netmask); #endif return 0; } -static int tun_setaddr6(struct tun_t *this, struct in6_addr *addr, struct in6_addr *dstaddr, - size_t prefixlen) +static int tun_setaddr4(struct tun_t *this, struct in_addr *addr, + struct in_addr *dstaddr, struct in_addr *netmask) +{ + int rc; + rc = netdev_setaddr4(this->devname, addr, dstaddr, netmask); + if (rc < 0) + return rc; + + if (addr) + this->addr.s_addr = addr->s_addr; + if (dstaddr) + this->dstaddr.s_addr = dstaddr->s_addr; + if (netmask) + this->netmask.s_addr = netmask->s_addr; + this->addrs++; +#if defined(__FreeBSD__) || defined (__APPLE__) + this->routes = 1; +#endif + + return rc; +} + +static int netdev_setaddr6(const char *devname, struct in6_addr *addr, struct in6_addr *dstaddr, + size_t prefixlen) { struct in6_ifreq ifr; int fd; @@ -207,13 +224,13 @@ #if defined(__linux__) ifr.ifr6_prefixlen = prefixlen; - ifr.ifr6_ifindex = if_nametoindex(this->devname); + ifr.ifr6_ifindex = if_nametoindex(devname); if (ifr.ifr6_ifindex == 0) { - SYS_ERR(DTUN, LOGL_ERROR, 0, "Error getting ifindex for %s\n", this->devname); + SYS_ERR(DTUN, LOGL_ERROR, 0, "Error getting ifindex for %s\n", devname); return -1; } #elif defined(__FreeBSD__) || defined (__APPLE__) - strncpy(ifr.ifr_name, this->devname, IFNAMSIZ); + strncpy(ifr.ifr_name, devname, IFNAMSIZ); #endif /* Create a channel to the NET kernel */ @@ -239,7 +256,7 @@ #if 0 /* FIXME: looks like this is not possible/necessary for IPv6? */ if (dstaddr) { - memcpy(&this->dstaddr, dstaddr, sizeof(*dstaddr)); + memcpy(&dstaddr, dstaddr, sizeof(*dstaddr)); memcpy(&ifr.ifr6_addr, dstaddr, sizeof(*dstaddr)); if (ioctl(fd, SIOCSIFDSTADDR, (caddr_t *) &ifr) < 0) { SYS_ERR(DTUN, LOGL_ERROR, "ioctl(SIOCSIFDSTADDR) failed"); @@ -263,22 +280,35 @@ #endif close(fd); - this->addrs++; /* On linux the route to the interface is set automatically on FreeBSD we have to do this manually */ /* TODO: How does it work on Solaris? */ - netdev_sifflags(this->devname, IFF_UP | IFF_RUNNING); + netdev_sifflags(devname, IFF_UP | IFF_RUNNING); #if 0 /* FIXME */ //#if defined(__FreeBSD__) || defined (__APPLE__) netdev_addroute6(dstaddr, addr, prefixlen); - this->routes = 1; #endif return 0; +} + +static int tun_setaddr6(struct tun_t *this, struct in6_addr *addr, struct in6_addr *dstaddr, + size_t prefixlen) +{ + int rc; + rc = netdev_setaddr6(this->devname, addr, dstaddr, prefixlen); + if (rc < 0) + return rc; + this->addrs++; +#if defined(__FreeBSD__) || defined (__APPLE__) + this->routes = 1; +#endif + + return rc; } int tun_setaddr(struct tun_t *this, struct in46_addr *addr, struct in46_addr *dstaddr, size_t prefixlen) @@ -295,9 +325,8 @@ } } -static int tun_addaddr4(struct tun_t *this, - struct in_addr *addr, - struct in_addr *dstaddr, struct in_addr *netmask) +static int netdev_addaddr4(const char *devname, struct in_addr *addr, + struct in_addr *dstaddr, struct in_addr *netmask) { #if defined(__linux__) @@ -316,9 +345,6 @@ struct iovec iov; struct msghdr msg; - if (!this->addrs) /* Use ioctl for first addr to make ping work */ - return tun_setaddr4(this, addr, dstaddr, netmask); - memset(&req, 0, sizeof(req)); req.n.nlmsg_len = NLMSG_LENGTH(sizeof(struct ifaddrmsg)); req.n.nlmsg_flags = NLM_F_REQUEST | NLM_F_CREATE; @@ -327,9 +353,9 @@ req.i.ifa_prefixlen = 32; /* 32 FOR IPv4 */ req.i.ifa_flags = 0; req.i.ifa_scope = RT_SCOPE_HOST; /* TODO or 0 */ - req.i.ifa_index = if_nametoindex(this->devname); + req.i.ifa_index = if_nametoindex(devname); if (!req.i.ifa_index) { - SYS_ERR(DTUN, LOGL_ERROR, errno, "Unable to get ifindex for %s", this->devname); + SYS_ERR(DTUN, LOGL_ERROR, errno, "Unable to get ifindex for %s", devname); return -1; } @@ -400,7 +426,7 @@ return -1; } - status = netdev_sifflags(this->devname, IFF_UP | IFF_RUNNING); + status = netdev_sifflags(devname, IFF_UP | IFF_RUNNING); if (status == -1) { close(fd); return -1; @@ -408,7 +434,6 @@ close(fd); - this->addrs++; return 0; #elif defined (__FreeBSD__) || defined (__APPLE__) @@ -416,14 +441,10 @@ int fd; struct ifaliasreq areq; - /* TODO: Is this needed on FreeBSD? */ - if (!this->addrs) /* Use ioctl for first addr to make ping work */ - return tun_setaddr4(this, addr, dstaddr, netmask); /* TODO dstaddr */ - memset(&areq, 0, sizeof(areq)); /* Set up interface name */ - strncpy(areq.ifra_name, this->devname, IFNAMSIZ); + strncpy(areq.ifra_name, devname, IFNAMSIZ); areq.ifra_name[IFNAMSIZ - 1] = 0; /* Make sure to terminate */ ((struct sockaddr_in *)&areq.ifra_addr)->sin_family = AF_INET; @@ -458,16 +479,32 @@ } close(fd); - this->addrs++; return 0; #endif } -static int tun_addaddr6(struct tun_t *this, - struct in6_addr *addr, - struct in6_addr *dstaddr, int prefixlen) +static int tun_addaddr4(struct tun_t *this, struct in_addr *addr, + struct in_addr *dstaddr, struct in_addr *netmask) +{ + int rc; + + /* TODO: Is this needed on FreeBSD? */ + if (!this->addrs) /* Use ioctl for first addr to make ping work */ + return tun_setaddr4(this, addr, dstaddr, netmask); /* TODO dstaddr */ + + rc = netdev_addaddr4(this->devname, addr, dstaddr, netmask); + if (rc < 0) + return rc; + + this->addrs++; + + return rc; +} + +static int netdev_addaddr6(const char *devname, struct in6_addr *addr, + struct in6_addr *dstaddr, int prefixlen) { #if defined(__linux__) @@ -486,9 +523,6 @@ struct iovec iov; struct msghdr msg; - if (!this->addrs) /* Use ioctl for first addr to make ping work */ - return tun_setaddr6(this, addr, dstaddr, prefixlen); - memset(&req, 0, sizeof(req)); req.n.nlmsg_len = NLMSG_LENGTH(sizeof(struct ifaddrmsg)); req.n.nlmsg_flags = NLM_F_REQUEST | NLM_F_CREATE; @@ -497,9 +531,9 @@ req.i.ifa_prefixlen = 64; /* 64 FOR IPv6 */ req.i.ifa_flags = 0; req.i.ifa_scope = RT_SCOPE_HOST; /* TODO or 0 */ - req.i.ifa_index = if_nametoindex(this->devname); + req.i.ifa_index = if_nametoindex(devname); if (!req.i.ifa_index) { - SYS_ERR(DTUN, LOGL_ERROR, errno, "Unable to get ifindex for %s", this->devname); + SYS_ERR(DTUN, LOGL_ERROR, errno, "Unable to get ifindex for %s", devname); return -1; } @@ -570,7 +604,7 @@ return -1; } - status = netdev_sifflags(this->devname, IFF_UP | IFF_RUNNING); + status = netdev_sifflags(devname, IFF_UP | IFF_RUNNING); if (status == -1) { close(fd); return -1; @@ -578,7 +612,6 @@ close(fd); - this->addrs++; return 0; #elif defined (__FreeBSD__) || defined (__APPLE__) @@ -586,14 +619,10 @@ int fd; struct ifaliasreq areq; - /* TODO: Is this needed on FreeBSD? */ - if (!this->addrs) /* Use ioctl for first addr to make ping work */ - return tun_setaddr6(this, addr, dstaddr, netmask); /* TODO dstaddr */ - memset(&areq, 0, sizeof(areq)); /* Set up interface name */ - strncpy(areq.ifra_name, this->devname, IFNAMSIZ); + strncpy(areq.ifra_name, devname, IFNAMSIZ); areq.ifra_name[IFNAMSIZ - 1] = 0; /* Make sure to terminate */ ((struct sockaddr_in6 *)&areq.ifra_addr)->sin6_family = AF_INET6; @@ -623,13 +652,30 @@ } close(fd); - this->addrs++; return 0; #endif } +static int tun_addaddr6(struct tun_t *this, + struct in6_addr *addr, + struct in6_addr *dstaddr, int prefixlen) +{ + int rc; + + if (!this->addrs) /* Use ioctl for first addr to make ping work */ + return tun_setaddr6(this, addr, dstaddr, prefixlen); + + rc = netdev_addaddr6(this->devname, addr, dstaddr, prefixlen); + if (rc < 0) + return rc; + + this->addrs++; + + return rc; +} + int tun_addaddr(struct tun_t *this, struct in46_addr *addr, struct in46_addr *dstaddr, size_t prefixlen) { struct in_addr netmask; -- To view, visit https://gerrit.osmocom.org/7922 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I139a950dd81a4b1199953be1608cd109a060f562 Gerrit-PatchSet: 1 Gerrit-Project: osmo-ggsn Gerrit-Branch: master Gerrit-Owner: Harald Welte From gerrit-no-reply at lists.osmocom.org Wed Apr 25 18:46:26 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Wed, 25 Apr 2018 18:46:26 +0000 Subject: [PATCH] osmo-ggsn[master]: lib/tun: split generic network device related stuff to lib/n... Message-ID: Review at https://gerrit.osmocom.org/7923 lib/tun: split generic network device related stuff to lib/netdev Change-Id: Ib021e392637a43d5cf1b40e0d50621fe7e854ba5 --- M lib/Makefile.am A lib/netdev.c A lib/netdev.h M lib/tun.c M lib/tun.h 5 files changed, 843 insertions(+), 756 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-ggsn refs/changes/23/7923/1 diff --git a/lib/Makefile.am b/lib/Makefile.am index 632990c..55348ad 100644 --- a/lib/Makefile.am +++ b/lib/Makefile.am @@ -1,7 +1,7 @@ noinst_LIBRARIES = libmisc.a -noinst_HEADERS = gnugetopt.h ippool.h lookup.h syserr.h tun.h in46_addr.h +noinst_HEADERS = gnugetopt.h ippool.h lookup.h syserr.h tun.h in46_addr.h netdev.h AM_CFLAGS = -O2 -fno-builtin -Wall -DSBINDIR='"$(sbindir)"' -ggdb $(LIBOSMOCORE_CFLAGS) -libmisc_a_SOURCES = getopt1.c getopt.c ippool.c lookup.c tun.c debug.c in46_addr.c +libmisc_a_SOURCES = getopt1.c getopt.c ippool.c lookup.c tun.c debug.c in46_addr.c netdev.c diff --git a/lib/netdev.c b/lib/netdev.c new file mode 100644 index 0000000..f2254f3 --- /dev/null +++ b/lib/netdev.c @@ -0,0 +1,767 @@ +/* + * TUN interface functions. + * Copyright (C) 2002, 2003, 2004 Mondru AB. + * Copyright (C) 2017-2018 by Harald Welte + * + * The contents of this file may be used under the terms of the GNU + * General Public License Version 2, provided that the above copyright + * notice and this permission notice is included in all copies or + * substantial portions of the software. + * + */ + +/* + * netdev.c: Contains generic network device related functionality. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#if defined(__linux__) +#include +#include + +#elif defined (__FreeBSD__) +#include +#include + +#elif defined (__APPLE__) +#include + +#else +#error "Unknown platform!" +#endif + +#include "netdev.h" +#include "syserr.h" + +#if defined(__linux__) + +#include + +static int netdev_nlattr(struct nlmsghdr *n, int nsize, int type, void *d, int dlen) +{ + int len = RTA_LENGTH(dlen); + int alen = NLMSG_ALIGN(n->nlmsg_len); + struct rtattr *rta = (struct rtattr *)(((void *)n) + alen); + if (alen + len > nsize) + return -1; + rta->rta_len = len; + rta->rta_type = type; + memcpy(RTA_DATA(rta), d, dlen); + n->nlmsg_len = alen + len; + return 0; +} +#endif + +static int netdev_sifflags(const char *devname, int flags) +{ + struct ifreq ifr; + int fd; + + memset(&ifr, '\0', sizeof(ifr)); + ifr.ifr_flags = flags; + strncpy(ifr.ifr_name, devname, IFNAMSIZ); + ifr.ifr_name[IFNAMSIZ - 1] = 0; /* Make sure to terminate */ + if ((fd = socket(AF_INET, SOCK_DGRAM, 0)) < 0) { + SYS_ERR(DTUN, LOGL_ERROR, errno, "socket() failed"); + return -1; + } + if (ioctl(fd, SIOCSIFFLAGS, &ifr)) { + SYS_ERR(DTUN, LOGL_ERROR, errno, + "ioctl(SIOCSIFFLAGS) failed"); + close(fd); + return -1; + } + close(fd); + return 0; +} + +int netdev_setaddr4(const char *devname, struct in_addr *addr, + struct in_addr *dstaddr, struct in_addr *netmask) +{ + struct ifreq ifr; + int fd; + + memset(&ifr, '\0', sizeof(ifr)); + ifr.ifr_addr.sa_family = AF_INET; + ifr.ifr_dstaddr.sa_family = AF_INET; + +#if defined(__linux__) + ifr.ifr_netmask.sa_family = AF_INET; + +#elif defined(__FreeBSD__) || defined (__APPLE__) + ((struct sockaddr_in *)&ifr.ifr_addr)->sin_len = + sizeof(struct sockaddr_in); + ((struct sockaddr_in *)&ifr.ifr_dstaddr)->sin_len = + sizeof(struct sockaddr_in); +#endif + + strncpy(ifr.ifr_name, devname, IFNAMSIZ); + ifr.ifr_name[IFNAMSIZ - 1] = 0; /* Make sure to terminate */ + + /* Create a channel to the NET kernel. */ + if ((fd = socket(AF_INET, SOCK_DGRAM, 0)) < 0) { + SYS_ERR(DTUN, LOGL_ERROR, errno, "socket() failed"); + return -1; + } + + if (addr) { /* Set the interface address */ + memcpy(&((struct sockaddr_in *)&ifr.ifr_addr)->sin_addr, addr, + sizeof(*addr)); + if (ioctl(fd, SIOCSIFADDR, (void *)&ifr) < 0) { + if (errno != EEXIST) { + SYS_ERR(DTUN, LOGL_ERROR, errno, + "ioctl(SIOCSIFADDR) failed"); + } else { + SYS_ERR(DTUN, LOGL_NOTICE, errno, + "ioctl(SIOCSIFADDR): Address already exists"); + } + close(fd); + return -1; + } + } + + if (dstaddr) { /* Set the destination address */ + memcpy(&((struct sockaddr_in *)&ifr.ifr_dstaddr)->sin_addr, + dstaddr, sizeof(*dstaddr)); + if (ioctl(fd, SIOCSIFDSTADDR, (caddr_t) & ifr) < 0) { + SYS_ERR(DTUN, LOGL_ERROR, errno, + "ioctl(SIOCSIFDSTADDR) failed"); + close(fd); + return -1; + } + } + + if (netmask) { /* Set the netmask */ +#if defined(__linux__) + memcpy(&((struct sockaddr_in *)&ifr.ifr_netmask)->sin_addr, + netmask, sizeof(*netmask)); + +#elif defined(__FreeBSD__) || defined (__APPLE__) + ((struct sockaddr_in *)&ifr.ifr_addr)->sin_addr.s_addr = + netmask->s_addr; +#endif + + if (ioctl(fd, SIOCSIFNETMASK, (void *)&ifr) < 0) { + SYS_ERR(DTUN, LOGL_ERROR, errno, + "ioctl(SIOCSIFNETMASK) failed"); + close(fd); + return -1; + } + } + + close(fd); + + /* On linux the route to the interface is set automatically + on FreeBSD we have to do this manually */ + + /* TODO: How does it work on Solaris? */ + + netdev_sifflags(devname, IFF_UP | IFF_RUNNING); + +#if defined(__FreeBSD__) || defined (__APPLE__) + netdev_addroute(dstaddr, addr, &this->netmask); +#endif + + return 0; +} + +int netdev_setaddr6(const char *devname, struct in6_addr *addr, struct in6_addr *dstaddr, + size_t prefixlen) +{ + struct in6_ifreq ifr; + int fd; + + memset(&ifr, 0, sizeof(ifr)); + +#if defined(__linux__) + ifr.ifr6_prefixlen = prefixlen; + ifr.ifr6_ifindex = if_nametoindex(devname); + if (ifr.ifr6_ifindex == 0) { + SYS_ERR(DTUN, LOGL_ERROR, 0, "Error getting ifindex for %s\n", devname); + return -1; + } +#elif defined(__FreeBSD__) || defined (__APPLE__) + strncpy(ifr.ifr_name, devname, IFNAMSIZ); +#endif + + /* Create a channel to the NET kernel */ + if ((fd = socket(AF_INET6, SOCK_DGRAM, 0)) < 0) { + SYS_ERR(DTUN, LOGL_ERROR, 0, "socket() failed"); + return -1; + } + +#if defined(__linux__) + if (addr) { + memcpy(&ifr.ifr6_addr, addr, sizeof(*addr)); + if (ioctl(fd, SIOCSIFADDR, (void *) &ifr) < 0) { + if (errno != EEXIST) { + SYS_ERR(DTUN, LOGL_ERROR, 0, "ioctl(SIOCSIFADDR) failed"); + } else { + SYS_ERR(DTUN, LOGL_NOTICE, 0, "ioctl(SIOCSIFADDR): Address already exists"); + } + close(fd); + return -1; + } + } + +#if 0 + /* FIXME: looks like this is not possible/necessary for IPv6? */ + if (dstaddr) { + memcpy(&dstaddr, dstaddr, sizeof(*dstaddr)); + memcpy(&ifr.ifr6_addr, dstaddr, sizeof(*dstaddr)); + if (ioctl(fd, SIOCSIFDSTADDR, (caddr_t *) &ifr) < 0) { + SYS_ERR(DTUN, LOGL_ERROR, "ioctl(SIOCSIFDSTADDR) failed"); + close(fd); + return -1; + } + } +#endif + +#elif defined(__FreeBSD__) || defined (__APPLE__) + if (addr) + memcpy(&ifr.ifr_ifru.ifru_addr, addr, sizeof(ifr.ifr_ifru.ifru_addr)); + if (dstaddr) + memcpy(&ifr.ifr_ifru.ifru_dstaddr, dstaddr, sizeof(ifr.ifr_ifru.ifru_dstaddr)); + + if (ioctl(fd, SIOCSIFADDR_IN6, (struct ifreq *)&ifr) < 0) { + SYS_ERR(DTUN, LOGL_ERROR, 0, "ioctl(SIOCSIFADDR_IN6) failed"); + close(fd); + return -1; + } +#endif + + close(fd); + + /* On linux the route to the interface is set automatically + on FreeBSD we have to do this manually */ + + /* TODO: How does it work on Solaris? */ + + netdev_sifflags(devname, IFF_UP | IFF_RUNNING); + +#if 0 /* FIXME */ +//#if defined(__FreeBSD__) || defined (__APPLE__) + netdev_addroute6(dstaddr, addr, prefixlen); +#endif + + return 0; +} + +int netdev_addaddr4(const char *devname, struct in_addr *addr, + struct in_addr *dstaddr, struct in_addr *netmask) +{ + +#if defined(__linux__) + struct { + struct nlmsghdr n; + struct ifaddrmsg i; + char buf[TUN_NLBUFSIZE]; + } req; + + struct sockaddr_nl local; + socklen_t addr_len; + int fd; + int status; + + struct sockaddr_nl nladdr; + struct iovec iov; + struct msghdr msg; + + memset(&req, 0, sizeof(req)); + req.n.nlmsg_len = NLMSG_LENGTH(sizeof(struct ifaddrmsg)); + req.n.nlmsg_flags = NLM_F_REQUEST | NLM_F_CREATE; + req.n.nlmsg_type = RTM_NEWADDR; + req.i.ifa_family = AF_INET; + req.i.ifa_prefixlen = 32; /* 32 FOR IPv4 */ + req.i.ifa_flags = 0; + req.i.ifa_scope = RT_SCOPE_HOST; /* TODO or 0 */ + req.i.ifa_index = if_nametoindex(devname); + if (!req.i.ifa_index) { + SYS_ERR(DTUN, LOGL_ERROR, errno, "Unable to get ifindex for %s", devname); + return -1; + } + + netdev_nlattr(&req.n, sizeof(req), IFA_ADDRESS, addr, sizeof(*addr)); + if (dstaddr) + netdev_nlattr(&req.n, sizeof(req), IFA_LOCAL, dstaddr, sizeof(*dstaddr)); + + if ((fd = socket(AF_NETLINK, SOCK_RAW, NETLINK_ROUTE)) < 0) { + SYS_ERR(DTUN, LOGL_ERROR, errno, "socket() failed"); + return -1; + } + + memset(&local, 0, sizeof(local)); + local.nl_family = AF_NETLINK; + local.nl_groups = 0; + + if (bind(fd, (struct sockaddr *)&local, sizeof(local)) < 0) { + SYS_ERR(DTUN, LOGL_ERROR, errno, "bind() failed"); + close(fd); + return -1; + } + + addr_len = sizeof(local); + if (getsockname(fd, (struct sockaddr *)&local, &addr_len) < 0) { + SYS_ERR(DTUN, LOGL_ERROR, errno, + "getsockname() failed"); + close(fd); + return -1; + } + + if (addr_len != sizeof(local)) { + SYS_ERR(DTUN, LOGL_ERROR, 0, + "Wrong address length %d", addr_len); + close(fd); + return -1; + } + + if (local.nl_family != AF_NETLINK) { + SYS_ERR(DTUN, LOGL_ERROR, 0, + "Wrong address family %d", local.nl_family); + close(fd); + return -1; + } + + iov.iov_base = (void *)&req.n; + iov.iov_len = req.n.nlmsg_len; + + msg.msg_name = (void *)&nladdr; + msg.msg_namelen = sizeof(nladdr); + msg.msg_iov = &iov; + msg.msg_iovlen = 1; + msg.msg_control = NULL; + msg.msg_controllen = 0; + msg.msg_flags = 0; + + memset(&nladdr, 0, sizeof(nladdr)); + nladdr.nl_family = AF_NETLINK; + nladdr.nl_pid = 0; + nladdr.nl_groups = 0; + + req.n.nlmsg_seq = 0; + req.n.nlmsg_flags |= NLM_F_ACK; + + status = sendmsg(fd, &msg, 0); + if (status != req.n.nlmsg_len) { + SYS_ERR(DTUN, LOGL_ERROR, errno, "sendmsg() failed, returned %d", status); + close(fd); + return -1; + } + + status = netdev_sifflags(devname, IFF_UP | IFF_RUNNING); + if (status == -1) { + close(fd); + return -1; + } + + + close(fd); + return 0; + +#elif defined (__FreeBSD__) || defined (__APPLE__) + + int fd; + struct ifaliasreq areq; + + memset(&areq, 0, sizeof(areq)); + + /* Set up interface name */ + strncpy(areq.ifra_name, devname, IFNAMSIZ); + areq.ifra_name[IFNAMSIZ - 1] = 0; /* Make sure to terminate */ + + ((struct sockaddr_in *)&areq.ifra_addr)->sin_family = AF_INET; + ((struct sockaddr_in *)&areq.ifra_addr)->sin_len = + sizeof(areq.ifra_addr); + ((struct sockaddr_in *)&areq.ifra_addr)->sin_addr.s_addr = addr->s_addr; + + ((struct sockaddr_in *)&areq.ifra_mask)->sin_family = AF_INET; + ((struct sockaddr_in *)&areq.ifra_mask)->sin_len = + sizeof(areq.ifra_mask); + ((struct sockaddr_in *)&areq.ifra_mask)->sin_addr.s_addr = + netmask->s_addr; + + /* For some reason FreeBSD uses ifra_broadcast for specifying dstaddr */ + ((struct sockaddr_in *)&areq.ifra_broadaddr)->sin_family = AF_INET; + ((struct sockaddr_in *)&areq.ifra_broadaddr)->sin_len = + sizeof(areq.ifra_broadaddr); + ((struct sockaddr_in *)&areq.ifra_broadaddr)->sin_addr.s_addr = + dstaddr->s_addr; + + /* Create a channel to the NET kernel. */ + if ((fd = socket(AF_INET, SOCK_DGRAM, 0)) < 0) { + SYS_ERR(DTUN, LOGL_ERROR, errno, "socket() failed"); + return -1; + } + + if (ioctl(fd, SIOCAIFADDR, (void *)&areq) < 0) { + SYS_ERR(DTUN, LOGL_ERROR, errno, + "ioctl(SIOCAIFADDR) failed"); + close(fd); + return -1; + } + + close(fd); + return 0; + +#endif + +} + +int netdev_addaddr6(const char *devname, struct in6_addr *addr, + struct in6_addr *dstaddr, int prefixlen) +{ + +#if defined(__linux__) + struct { + struct nlmsghdr n; + struct ifaddrmsg i; + char buf[TUN_NLBUFSIZE]; + } req; + + struct sockaddr_nl local; + socklen_t addr_len; + int fd; + int status; + + struct sockaddr_nl nladdr; + struct iovec iov; + struct msghdr msg; + + memset(&req, 0, sizeof(req)); + req.n.nlmsg_len = NLMSG_LENGTH(sizeof(struct ifaddrmsg)); + req.n.nlmsg_flags = NLM_F_REQUEST | NLM_F_CREATE; + req.n.nlmsg_type = RTM_NEWADDR; + req.i.ifa_family = AF_INET6; + req.i.ifa_prefixlen = 64; /* 64 FOR IPv6 */ + req.i.ifa_flags = 0; + req.i.ifa_scope = RT_SCOPE_HOST; /* TODO or 0 */ + req.i.ifa_index = if_nametoindex(devname); + if (!req.i.ifa_index) { + SYS_ERR(DTUN, LOGL_ERROR, errno, "Unable to get ifindex for %s", devname); + return -1; + } + + netdev_nlattr(&req.n, sizeof(req), IFA_ADDRESS, addr, sizeof(*addr)); + if (dstaddr) + netdev_nlattr(&req.n, sizeof(req), IFA_LOCAL, dstaddr, sizeof(*dstaddr)); + + if ((fd = socket(AF_NETLINK, SOCK_RAW, NETLINK_ROUTE)) < 0) { + SYS_ERR(DTUN, LOGL_ERROR, errno, "socket() failed"); + return -1; + } + + memset(&local, 0, sizeof(local)); + local.nl_family = AF_NETLINK; + local.nl_groups = 0; + + if (bind(fd, (struct sockaddr *)&local, sizeof(local)) < 0) { + SYS_ERR(DTUN, LOGL_ERROR, errno, "bind() failed"); + close(fd); + return -1; + } + + addr_len = sizeof(local); + if (getsockname(fd, (struct sockaddr *)&local, &addr_len) < 0) { + SYS_ERR(DTUN, LOGL_ERROR, errno, + "getsockname() failed"); + close(fd); + return -1; + } + + if (addr_len != sizeof(local)) { + SYS_ERR(DTUN, LOGL_ERROR, 0, + "Wrong address length %d", addr_len); + close(fd); + return -1; + } + + if (local.nl_family != AF_NETLINK) { + SYS_ERR(DTUN, LOGL_ERROR, 0, + "Wrong address family %d", local.nl_family); + close(fd); + return -1; + } + + iov.iov_base = (void *)&req.n; + iov.iov_len = req.n.nlmsg_len; + + msg.msg_name = (void *)&nladdr; + msg.msg_namelen = sizeof(nladdr); + msg.msg_iov = &iov; + msg.msg_iovlen = 1; + msg.msg_control = NULL; + msg.msg_controllen = 0; + msg.msg_flags = 0; + + memset(&nladdr, 0, sizeof(nladdr)); + nladdr.nl_family = AF_NETLINK; + nladdr.nl_pid = 0; + nladdr.nl_groups = 0; + + req.n.nlmsg_seq = 0; + req.n.nlmsg_flags |= NLM_F_ACK; + + status = sendmsg(fd, &msg, 0); + if (status != req.n.nlmsg_len) { + SYS_ERR(DTUN, LOGL_ERROR, errno, "sendmsg() failed, returned %d", status); + close(fd); + return -1; + } + + status = netdev_sifflags(devname, IFF_UP | IFF_RUNNING); + if (status == -1) { + close(fd); + return -1; + } + + + close(fd); + return 0; + +#elif defined (__FreeBSD__) || defined (__APPLE__) + + int fd; + struct ifaliasreq areq; + + memset(&areq, 0, sizeof(areq)); + + /* Set up interface name */ + strncpy(areq.ifra_name, devname, IFNAMSIZ); + areq.ifra_name[IFNAMSIZ - 1] = 0; /* Make sure to terminate */ + + ((struct sockaddr_in6 *)&areq.ifra_addr)->sin6_family = AF_INET6; + ((struct sockaddr_in6 *)&areq.ifra_addr)->sin6_len = sizeof(areq.ifra_addr); + ((struct sockaddr_in6 *)&areq.ifra_addr)->sin6_addr.s6_addr = addr->s6_addr; + + ((struct sockaddr_in6 *)&areq.ifra_mask)->sin6_family = AF_INET6; + ((struct sockaddr_in6 *)&areq.ifra_mask)->sin6_len = sizeof(areq.ifra_mask); + ((struct sockaddr_in6 *)&areq.ifra_mask)->sin6_addr.s6_addr = netmask->s6_addr; + + /* For some reason FreeBSD uses ifra_broadcast for specifying dstaddr */ + ((struct sockaddr_in6 *)&areq.ifra_broadaddr)->sin6_family = AF_INET6; + ((struct sockaddr_in6 *)&areq.ifra_broadaddr)->sin6_len = sizeof(areq.ifra_broadaddr); + ((struct sockaddr_in6 *)&areq.ifra_broadaddr)->sin6_addr.s6_addr = dstaddr->s6_addr; + + /* Create a channel to the NET kernel. */ + if ((fd = socket(AF_INET, SOCK_DGRAM, 0)) < 0) { + SYS_ERR(DTUN, LOGL_ERROR, errno, "socket() failed"); + return -1; + } + + if (ioctl(fd, SIOCAIFADDR, (void *)&areq) < 0) { + SYS_ERR(DTUN, LOGL_ERROR, errno, + "ioctl(SIOCAIFADDR) failed"); + close(fd); + return -1; + } + + close(fd); + return 0; + +#endif + +} + +static int netdev_route(struct in_addr *dst, struct in_addr *gateway, struct in_addr *mask, int delete) +{ + +#if defined(__linux__) + + struct rtentry r; + int fd; + + memset(&r, '\0', sizeof(r)); + r.rt_flags = RTF_UP | RTF_GATEWAY; /* RTF_HOST not set */ + + /* Create a channel to the NET kernel. */ + if ((fd = socket(AF_INET, SOCK_DGRAM, 0)) < 0) { + SYS_ERR(DTUN, LOGL_ERROR, errno, "socket() failed"); + return -1; + } + + r.rt_dst.sa_family = AF_INET; + r.rt_gateway.sa_family = AF_INET; + r.rt_genmask.sa_family = AF_INET; + memcpy(&((struct sockaddr_in *)&r.rt_dst)->sin_addr, dst, sizeof(*dst)); + memcpy(&((struct sockaddr_in *)&r.rt_gateway)->sin_addr, gateway, + sizeof(*gateway)); + memcpy(&((struct sockaddr_in *)&r.rt_genmask)->sin_addr, mask, + sizeof(*mask)); + + if (delete) { + if (ioctl(fd, SIOCDELRT, (void *)&r) < 0) { + SYS_ERR(DTUN, LOGL_ERROR, errno, + "ioctl(SIOCDELRT) failed"); + close(fd); + return -1; + } + } else { + if (ioctl(fd, SIOCADDRT, (void *)&r) < 0) { + SYS_ERR(DTUN, LOGL_ERROR, errno, + "ioctl(SIOCADDRT) failed"); + close(fd); + return -1; + } + } + close(fd); + return 0; + +#elif defined(__FreeBSD__) || defined (__APPLE__) + + struct { + struct rt_msghdr rt; + struct sockaddr_in dst; + struct sockaddr_in gate; + struct sockaddr_in mask; + } req; + + int fd; + struct rt_msghdr *rtm; + + if ((fd = socket(AF_ROUTE, SOCK_RAW, 0)) == -1) { + SYS_ERR(DTUN, LOGL_ERROR, errno, "socket() failed"); + return -1; + } + + memset(&req, 0x00, sizeof(req)); + + rtm = &req.rt; + + rtm->rtm_msglen = sizeof(req); + rtm->rtm_version = RTM_VERSION; + if (delete) { + rtm->rtm_type = RTM_DELETE; + } else { + rtm->rtm_type = RTM_ADD; + } + rtm->rtm_flags = RTF_UP | RTF_GATEWAY | RTF_STATIC; /* TODO */ + rtm->rtm_addrs = RTA_DST | RTA_GATEWAY | RTA_NETMASK; + rtm->rtm_pid = getpid(); + rtm->rtm_seq = 0044; /* TODO */ + + req.dst.sin_family = AF_INET; + req.dst.sin_len = sizeof(req.dst); + req.mask.sin_family = AF_INET; + req.mask.sin_len = sizeof(req.mask); + req.gate.sin_family = AF_INET; + req.gate.sin_len = sizeof(req.gate); + + req.dst.sin_addr.s_addr = dst->s_addr; + req.mask.sin_addr.s_addr = mask->s_addr; + req.gate.sin_addr.s_addr = gateway->s_addr; + + if (write(fd, rtm, rtm->rtm_msglen) < 0) { + SYS_ERR(DTUN, LOGL_ERROR, errno, "write() failed"); + close(fd); + return -1; + } + close(fd); + return 0; +#endif + +} + +int netdev_addroute(struct in_addr *dst, struct in_addr *gateway, struct in_addr *mask) +{ + return netdev_route(dst, gateway, mask, 0); +} + +int netdev_delroute(struct in_addr *dst, struct in_addr *gateway, struct in_addr *mask) +{ + return netdev_route(dst, gateway, mask, 1); +} + +#include + +/*! Obtain the local address of a network device + * \param[in] devname Target device owning the IP + * \param[out] prefix_list List of prefix structures to fill with each IPv4/6 and prefix length found. + * \param[in] prefix_size Amount of elements allowed to be fill in the prefix_list array. + * \param[in] flags Specify which kind of IP to look for: IP_TYPE_IPv4, IP_TYPE_IPv6_LINK, IP_TYPE_IPv6_NONLINK + * \returns The number of ips found following the criteria specified by flags, -1 on error. + * + * This function will fill prefix_list with up to prefix_size IPs following the + * criteria specified by flags parameter. It returns the number of IPs matching + * the criteria. As a result, the number returned can be bigger than + * prefix_size. It can be used with prefix_size=0 to get an estimate of the size + * needed for prefix_list. + */ +int netdev_ip_local_get(const char *devname, struct in46_prefix *prefix_list, size_t prefix_size, int flags) +{ + static const uint8_t ll_prefix[] = { 0xfe,0x80, 0,0, 0,0, 0,0 }; + struct ifaddrs *ifaddr, *ifa; + struct in46_addr netmask; + size_t count = 0; + bool is_ipv6_ll; + + if (getifaddrs(&ifaddr) == -1) { + return -1; + } + + for (ifa = ifaddr; ifa != NULL; ifa = ifa->ifa_next) { + if (ifa->ifa_addr == NULL) + continue; + + if (strcmp(ifa->ifa_name, devname)) + continue; + + if (ifa->ifa_addr->sa_family == AF_INET && (flags & IP_TYPE_IPv4)) { + struct sockaddr_in *sin4 = (struct sockaddr_in *) ifa->ifa_addr; + struct sockaddr_in *netmask4 = (struct sockaddr_in *) ifa->ifa_netmask; + + if (count < prefix_size) { + netmask.len = sizeof(netmask4->sin_addr); + netmask.v4 = netmask4->sin_addr; + prefix_list[count].addr.len = sizeof(sin4->sin_addr); + prefix_list[count].addr.v4 = sin4->sin_addr; + prefix_list[count].prefixlen = in46a_netmasklen(&netmask); + } + count++; + } + + if (ifa->ifa_addr->sa_family == AF_INET6 && (flags & IP_TYPE_IPv6)) { + struct sockaddr_in6 *sin6 = (struct sockaddr_in6 *) ifa->ifa_addr; + struct sockaddr_in6 *netmask6 = (struct sockaddr_in6 *) ifa->ifa_netmask; + + is_ipv6_ll = !memcmp(sin6->sin6_addr.s6_addr, ll_prefix, sizeof(ll_prefix)); + if ((flags & IP_TYPE_IPv6_NONLINK) && is_ipv6_ll) + continue; + if ((flags & IP_TYPE_IPv6_LINK) && !is_ipv6_ll) + continue; + + if (count < prefix_size) { + netmask.len = sizeof(netmask6->sin6_addr); + netmask.v6 = netmask6->sin6_addr; + prefix_list[count].addr.len = sizeof(sin6->sin6_addr); + prefix_list[count].addr.v6 = sin6->sin6_addr; + prefix_list[count].prefixlen = in46a_netmasklen(&netmask); + } + count++; + } + } + + freeifaddrs(ifaddr); + return count; +} diff --git a/lib/netdev.h b/lib/netdev.h new file mode 100644 index 0000000..74c42da --- /dev/null +++ b/lib/netdev.h @@ -0,0 +1,72 @@ +#pragma once +/* + * TUN interface functions. + * Copyright (C) 2002, 2003 Mondru AB. + * Copyright (C) 2017-2018 by Harald Welte + * + * The contents of this file may be used under the terms of the GNU + * General Public License Version 2, provided that the above copyright + * notice and this permission notice is included in all copies or + * substantial portions of the software. + * + */ + +#include + +#include "../lib/in46_addr.h" + +#define TUN_NLBUFSIZE 1024 + +#include "config.h" + +/* ipv6 ip type flags for tun_ipv6_local_get() */ +enum { + IP_TYPE_IPv4 = 1, + IP_TYPE_IPv6_LINK = 2, + IP_TYPE_IPv6_NONLINK = 4, +}; +#define IP_TYPE_IPv6 (IP_TYPE_IPv6_LINK | IP_TYPE_IPv6_NONLINK) + + +#ifndef HAVE_IPHDR +struct iphdr + { +#if __BYTE_ORDER == __LITTLE_ENDIAN + unsigned int ihl:4; + unsigned int version:4; +#elif __BYTE_ORDER == __BIG_ENDIAN + unsigned int version:4; + unsigned int ihl:4; +#else +# error "Please fix " +#endif + u_int8_t tos; + u_int16_t tot_len; + u_int16_t id; + u_int16_t frag_off; + u_int8_t ttl; + u_int8_t protocol; + u_int16_t check; + u_int32_t saddr; + u_int32_t daddr; + /*The options start here. */ + }; +#endif /* !HAVE_IPHDR */ + +extern int netdev_setaddr4(const char *devname, struct in_addr *addr, + struct in_addr *dstaddr, struct in_addr *netmask); + +extern int netdev_setaddr6(const char *devname, struct in6_addr *addr, struct in6_addr *dstaddr, + size_t prefixlen); + +extern int netdev_addaddr4(const char *devname, struct in_addr *addr, + struct in_addr *dstaddr, struct in_addr *netmask); + +extern int netdev_addaddr6(const char *devname, struct in6_addr *addr, + struct in6_addr *dstaddr, int prefixlen); + +extern int netdev_addroute(struct in_addr *dst, struct in_addr *gateway, struct in_addr *mask); +extern int netdev_delroute(struct in_addr *dst, struct in_addr *gateway, struct in_addr *mask); + +extern int netdev_ip_local_get(const char *devname, struct in46_prefix *prefix_list, + size_t prefix_size, int flags); diff --git a/lib/tun.c b/lib/tun.c index 88d9ac9..a7f5512 100644 --- a/lib/tun.c +++ b/lib/tun.c @@ -42,8 +42,6 @@ #if defined(__linux__) #include -#include -#include #elif defined (__FreeBSD__) #include @@ -59,138 +57,6 @@ #include "tun.h" #include "syserr.h" - -#if defined(__linux__) - -#include - -static int tun_nlattr(struct nlmsghdr *n, int nsize, int type, void *d, int dlen) -{ - int len = RTA_LENGTH(dlen); - int alen = NLMSG_ALIGN(n->nlmsg_len); - struct rtattr *rta = (struct rtattr *)(((void *)n) + alen); - if (alen + len > nsize) - return -1; - rta->rta_len = len; - rta->rta_type = type; - memcpy(RTA_DATA(rta), d, dlen); - n->nlmsg_len = alen + len; - return 0; -} -#endif - -static int netdev_sifflags(const char *devname, int flags) -{ - struct ifreq ifr; - int fd; - - memset(&ifr, '\0', sizeof(ifr)); - ifr.ifr_flags = flags; - strncpy(ifr.ifr_name, devname, IFNAMSIZ); - ifr.ifr_name[IFNAMSIZ - 1] = 0; /* Make sure to terminate */ - if ((fd = socket(AF_INET, SOCK_DGRAM, 0)) < 0) { - SYS_ERR(DTUN, LOGL_ERROR, errno, "socket() failed"); - return -1; - } - if (ioctl(fd, SIOCSIFFLAGS, &ifr)) { - SYS_ERR(DTUN, LOGL_ERROR, errno, - "ioctl(SIOCSIFFLAGS) failed"); - close(fd); - return -1; - } - close(fd); - return 0; -} - -static int netdev_setaddr4(const char *devname, struct in_addr *addr, - struct in_addr *dstaddr, struct in_addr *netmask) -{ - struct ifreq ifr; - int fd; - - memset(&ifr, '\0', sizeof(ifr)); - ifr.ifr_addr.sa_family = AF_INET; - ifr.ifr_dstaddr.sa_family = AF_INET; - -#if defined(__linux__) - ifr.ifr_netmask.sa_family = AF_INET; - -#elif defined(__FreeBSD__) || defined (__APPLE__) - ((struct sockaddr_in *)&ifr.ifr_addr)->sin_len = - sizeof(struct sockaddr_in); - ((struct sockaddr_in *)&ifr.ifr_dstaddr)->sin_len = - sizeof(struct sockaddr_in); -#endif - - strncpy(ifr.ifr_name, devname, IFNAMSIZ); - ifr.ifr_name[IFNAMSIZ - 1] = 0; /* Make sure to terminate */ - - /* Create a channel to the NET kernel. */ - if ((fd = socket(AF_INET, SOCK_DGRAM, 0)) < 0) { - SYS_ERR(DTUN, LOGL_ERROR, errno, "socket() failed"); - return -1; - } - - if (addr) { /* Set the interface address */ - memcpy(&((struct sockaddr_in *)&ifr.ifr_addr)->sin_addr, addr, - sizeof(*addr)); - if (ioctl(fd, SIOCSIFADDR, (void *)&ifr) < 0) { - if (errno != EEXIST) { - SYS_ERR(DTUN, LOGL_ERROR, errno, - "ioctl(SIOCSIFADDR) failed"); - } else { - SYS_ERR(DTUN, LOGL_NOTICE, errno, - "ioctl(SIOCSIFADDR): Address already exists"); - } - close(fd); - return -1; - } - } - - if (dstaddr) { /* Set the destination address */ - memcpy(&((struct sockaddr_in *)&ifr.ifr_dstaddr)->sin_addr, - dstaddr, sizeof(*dstaddr)); - if (ioctl(fd, SIOCSIFDSTADDR, (caddr_t) & ifr) < 0) { - SYS_ERR(DTUN, LOGL_ERROR, errno, - "ioctl(SIOCSIFDSTADDR) failed"); - close(fd); - return -1; - } - } - - if (netmask) { /* Set the netmask */ -#if defined(__linux__) - memcpy(&((struct sockaddr_in *)&ifr.ifr_netmask)->sin_addr, - netmask, sizeof(*netmask)); - -#elif defined(__FreeBSD__) || defined (__APPLE__) - ((struct sockaddr_in *)&ifr.ifr_addr)->sin_addr.s_addr = - netmask->s_addr; -#endif - - if (ioctl(fd, SIOCSIFNETMASK, (void *)&ifr) < 0) { - SYS_ERR(DTUN, LOGL_ERROR, errno, - "ioctl(SIOCSIFNETMASK) failed"); - close(fd); - return -1; - } - } - - close(fd); - - /* On linux the route to the interface is set automatically - on FreeBSD we have to do this manually */ - - /* TODO: How does it work on Solaris? */ - - netdev_sifflags(devname, IFF_UP | IFF_RUNNING); - -#if defined(__FreeBSD__) || defined (__APPLE__) - netdev_addroute(dstaddr, addr, &this->netmask); -#endif - - return 0; -} static int tun_setaddr4(struct tun_t *this, struct in_addr *addr, struct in_addr *dstaddr, struct in_addr *netmask) @@ -212,88 +78,6 @@ #endif return rc; -} - -static int netdev_setaddr6(const char *devname, struct in6_addr *addr, struct in6_addr *dstaddr, - size_t prefixlen) -{ - struct in6_ifreq ifr; - int fd; - - memset(&ifr, 0, sizeof(ifr)); - -#if defined(__linux__) - ifr.ifr6_prefixlen = prefixlen; - ifr.ifr6_ifindex = if_nametoindex(devname); - if (ifr.ifr6_ifindex == 0) { - SYS_ERR(DTUN, LOGL_ERROR, 0, "Error getting ifindex for %s\n", devname); - return -1; - } -#elif defined(__FreeBSD__) || defined (__APPLE__) - strncpy(ifr.ifr_name, devname, IFNAMSIZ); -#endif - - /* Create a channel to the NET kernel */ - if ((fd = socket(AF_INET6, SOCK_DGRAM, 0)) < 0) { - SYS_ERR(DTUN, LOGL_ERROR, 0, "socket() failed"); - return -1; - } - -#if defined(__linux__) - if (addr) { - memcpy(&ifr.ifr6_addr, addr, sizeof(*addr)); - if (ioctl(fd, SIOCSIFADDR, (void *) &ifr) < 0) { - if (errno != EEXIST) { - SYS_ERR(DTUN, LOGL_ERROR, 0, "ioctl(SIOCSIFADDR) failed"); - } else { - SYS_ERR(DTUN, LOGL_NOTICE, 0, "ioctl(SIOCSIFADDR): Address already exists"); - } - close(fd); - return -1; - } - } - -#if 0 - /* FIXME: looks like this is not possible/necessary for IPv6? */ - if (dstaddr) { - memcpy(&dstaddr, dstaddr, sizeof(*dstaddr)); - memcpy(&ifr.ifr6_addr, dstaddr, sizeof(*dstaddr)); - if (ioctl(fd, SIOCSIFDSTADDR, (caddr_t *) &ifr) < 0) { - SYS_ERR(DTUN, LOGL_ERROR, "ioctl(SIOCSIFDSTADDR) failed"); - close(fd); - return -1; - } - } -#endif - -#elif defined(__FreeBSD__) || defined (__APPLE__) - if (addr) - memcpy(&ifr.ifr_ifru.ifru_addr, addr, sizeof(ifr.ifr_ifru.ifru_addr)); - if (dstaddr) - memcpy(&ifr.ifr_ifru.ifru_dstaddr, dstaddr, sizeof(ifr.ifr_ifru.ifru_dstaddr)); - - if (ioctl(fd, SIOCSIFADDR_IN6, (struct ifreq *)&ifr) < 0) { - SYS_ERR(DTUN, LOGL_ERROR, 0, "ioctl(SIOCSIFADDR_IN6) failed"); - close(fd); - return -1; - } -#endif - - close(fd); - - /* On linux the route to the interface is set automatically - on FreeBSD we have to do this manually */ - - /* TODO: How does it work on Solaris? */ - - netdev_sifflags(devname, IFF_UP | IFF_RUNNING); - -#if 0 /* FIXME */ -//#if defined(__FreeBSD__) || defined (__APPLE__) - netdev_addroute6(dstaddr, addr, prefixlen); -#endif - - return 0; } static int tun_setaddr6(struct tun_t *this, struct in6_addr *addr, struct in6_addr *dstaddr, @@ -325,166 +109,6 @@ } } -static int netdev_addaddr4(const char *devname, struct in_addr *addr, - struct in_addr *dstaddr, struct in_addr *netmask) -{ - -#if defined(__linux__) - struct { - struct nlmsghdr n; - struct ifaddrmsg i; - char buf[TUN_NLBUFSIZE]; - } req; - - struct sockaddr_nl local; - socklen_t addr_len; - int fd; - int status; - - struct sockaddr_nl nladdr; - struct iovec iov; - struct msghdr msg; - - memset(&req, 0, sizeof(req)); - req.n.nlmsg_len = NLMSG_LENGTH(sizeof(struct ifaddrmsg)); - req.n.nlmsg_flags = NLM_F_REQUEST | NLM_F_CREATE; - req.n.nlmsg_type = RTM_NEWADDR; - req.i.ifa_family = AF_INET; - req.i.ifa_prefixlen = 32; /* 32 FOR IPv4 */ - req.i.ifa_flags = 0; - req.i.ifa_scope = RT_SCOPE_HOST; /* TODO or 0 */ - req.i.ifa_index = if_nametoindex(devname); - if (!req.i.ifa_index) { - SYS_ERR(DTUN, LOGL_ERROR, errno, "Unable to get ifindex for %s", devname); - return -1; - } - - tun_nlattr(&req.n, sizeof(req), IFA_ADDRESS, addr, sizeof(*addr)); - if (dstaddr) - tun_nlattr(&req.n, sizeof(req), IFA_LOCAL, dstaddr, sizeof(*dstaddr)); - - if ((fd = socket(AF_NETLINK, SOCK_RAW, NETLINK_ROUTE)) < 0) { - SYS_ERR(DTUN, LOGL_ERROR, errno, "socket() failed"); - return -1; - } - - memset(&local, 0, sizeof(local)); - local.nl_family = AF_NETLINK; - local.nl_groups = 0; - - if (bind(fd, (struct sockaddr *)&local, sizeof(local)) < 0) { - SYS_ERR(DTUN, LOGL_ERROR, errno, "bind() failed"); - close(fd); - return -1; - } - - addr_len = sizeof(local); - if (getsockname(fd, (struct sockaddr *)&local, &addr_len) < 0) { - SYS_ERR(DTUN, LOGL_ERROR, errno, - "getsockname() failed"); - close(fd); - return -1; - } - - if (addr_len != sizeof(local)) { - SYS_ERR(DTUN, LOGL_ERROR, 0, - "Wrong address length %d", addr_len); - close(fd); - return -1; - } - - if (local.nl_family != AF_NETLINK) { - SYS_ERR(DTUN, LOGL_ERROR, 0, - "Wrong address family %d", local.nl_family); - close(fd); - return -1; - } - - iov.iov_base = (void *)&req.n; - iov.iov_len = req.n.nlmsg_len; - - msg.msg_name = (void *)&nladdr; - msg.msg_namelen = sizeof(nladdr); - msg.msg_iov = &iov; - msg.msg_iovlen = 1; - msg.msg_control = NULL; - msg.msg_controllen = 0; - msg.msg_flags = 0; - - memset(&nladdr, 0, sizeof(nladdr)); - nladdr.nl_family = AF_NETLINK; - nladdr.nl_pid = 0; - nladdr.nl_groups = 0; - - req.n.nlmsg_seq = 0; - req.n.nlmsg_flags |= NLM_F_ACK; - - status = sendmsg(fd, &msg, 0); - if (status != req.n.nlmsg_len) { - SYS_ERR(DTUN, LOGL_ERROR, errno, "sendmsg() failed, returned %d", status); - close(fd); - return -1; - } - - status = netdev_sifflags(devname, IFF_UP | IFF_RUNNING); - if (status == -1) { - close(fd); - return -1; - } - - - close(fd); - return 0; - -#elif defined (__FreeBSD__) || defined (__APPLE__) - - int fd; - struct ifaliasreq areq; - - memset(&areq, 0, sizeof(areq)); - - /* Set up interface name */ - strncpy(areq.ifra_name, devname, IFNAMSIZ); - areq.ifra_name[IFNAMSIZ - 1] = 0; /* Make sure to terminate */ - - ((struct sockaddr_in *)&areq.ifra_addr)->sin_family = AF_INET; - ((struct sockaddr_in *)&areq.ifra_addr)->sin_len = - sizeof(areq.ifra_addr); - ((struct sockaddr_in *)&areq.ifra_addr)->sin_addr.s_addr = addr->s_addr; - - ((struct sockaddr_in *)&areq.ifra_mask)->sin_family = AF_INET; - ((struct sockaddr_in *)&areq.ifra_mask)->sin_len = - sizeof(areq.ifra_mask); - ((struct sockaddr_in *)&areq.ifra_mask)->sin_addr.s_addr = - netmask->s_addr; - - /* For some reason FreeBSD uses ifra_broadcast for specifying dstaddr */ - ((struct sockaddr_in *)&areq.ifra_broadaddr)->sin_family = AF_INET; - ((struct sockaddr_in *)&areq.ifra_broadaddr)->sin_len = - sizeof(areq.ifra_broadaddr); - ((struct sockaddr_in *)&areq.ifra_broadaddr)->sin_addr.s_addr = - dstaddr->s_addr; - - /* Create a channel to the NET kernel. */ - if ((fd = socket(AF_INET, SOCK_DGRAM, 0)) < 0) { - SYS_ERR(DTUN, LOGL_ERROR, errno, "socket() failed"); - return -1; - } - - if (ioctl(fd, SIOCAIFADDR, (void *)&areq) < 0) { - SYS_ERR(DTUN, LOGL_ERROR, errno, - "ioctl(SIOCAIFADDR) failed"); - close(fd); - return -1; - } - - close(fd); - return 0; - -#endif - -} - static int tun_addaddr4(struct tun_t *this, struct in_addr *addr, struct in_addr *dstaddr, struct in_addr *netmask) { @@ -501,161 +125,6 @@ this->addrs++; return rc; -} - -static int netdev_addaddr6(const char *devname, struct in6_addr *addr, - struct in6_addr *dstaddr, int prefixlen) -{ - -#if defined(__linux__) - struct { - struct nlmsghdr n; - struct ifaddrmsg i; - char buf[TUN_NLBUFSIZE]; - } req; - - struct sockaddr_nl local; - socklen_t addr_len; - int fd; - int status; - - struct sockaddr_nl nladdr; - struct iovec iov; - struct msghdr msg; - - memset(&req, 0, sizeof(req)); - req.n.nlmsg_len = NLMSG_LENGTH(sizeof(struct ifaddrmsg)); - req.n.nlmsg_flags = NLM_F_REQUEST | NLM_F_CREATE; - req.n.nlmsg_type = RTM_NEWADDR; - req.i.ifa_family = AF_INET6; - req.i.ifa_prefixlen = 64; /* 64 FOR IPv6 */ - req.i.ifa_flags = 0; - req.i.ifa_scope = RT_SCOPE_HOST; /* TODO or 0 */ - req.i.ifa_index = if_nametoindex(devname); - if (!req.i.ifa_index) { - SYS_ERR(DTUN, LOGL_ERROR, errno, "Unable to get ifindex for %s", devname); - return -1; - } - - tun_nlattr(&req.n, sizeof(req), IFA_ADDRESS, addr, sizeof(*addr)); - if (dstaddr) - tun_nlattr(&req.n, sizeof(req), IFA_LOCAL, dstaddr, sizeof(*dstaddr)); - - if ((fd = socket(AF_NETLINK, SOCK_RAW, NETLINK_ROUTE)) < 0) { - SYS_ERR(DTUN, LOGL_ERROR, errno, "socket() failed"); - return -1; - } - - memset(&local, 0, sizeof(local)); - local.nl_family = AF_NETLINK; - local.nl_groups = 0; - - if (bind(fd, (struct sockaddr *)&local, sizeof(local)) < 0) { - SYS_ERR(DTUN, LOGL_ERROR, errno, "bind() failed"); - close(fd); - return -1; - } - - addr_len = sizeof(local); - if (getsockname(fd, (struct sockaddr *)&local, &addr_len) < 0) { - SYS_ERR(DTUN, LOGL_ERROR, errno, - "getsockname() failed"); - close(fd); - return -1; - } - - if (addr_len != sizeof(local)) { - SYS_ERR(DTUN, LOGL_ERROR, 0, - "Wrong address length %d", addr_len); - close(fd); - return -1; - } - - if (local.nl_family != AF_NETLINK) { - SYS_ERR(DTUN, LOGL_ERROR, 0, - "Wrong address family %d", local.nl_family); - close(fd); - return -1; - } - - iov.iov_base = (void *)&req.n; - iov.iov_len = req.n.nlmsg_len; - - msg.msg_name = (void *)&nladdr; - msg.msg_namelen = sizeof(nladdr); - msg.msg_iov = &iov; - msg.msg_iovlen = 1; - msg.msg_control = NULL; - msg.msg_controllen = 0; - msg.msg_flags = 0; - - memset(&nladdr, 0, sizeof(nladdr)); - nladdr.nl_family = AF_NETLINK; - nladdr.nl_pid = 0; - nladdr.nl_groups = 0; - - req.n.nlmsg_seq = 0; - req.n.nlmsg_flags |= NLM_F_ACK; - - status = sendmsg(fd, &msg, 0); - if (status != req.n.nlmsg_len) { - SYS_ERR(DTUN, LOGL_ERROR, errno, "sendmsg() failed, returned %d", status); - close(fd); - return -1; - } - - status = netdev_sifflags(devname, IFF_UP | IFF_RUNNING); - if (status == -1) { - close(fd); - return -1; - } - - - close(fd); - return 0; - -#elif defined (__FreeBSD__) || defined (__APPLE__) - - int fd; - struct ifaliasreq areq; - - memset(&areq, 0, sizeof(areq)); - - /* Set up interface name */ - strncpy(areq.ifra_name, devname, IFNAMSIZ); - areq.ifra_name[IFNAMSIZ - 1] = 0; /* Make sure to terminate */ - - ((struct sockaddr_in6 *)&areq.ifra_addr)->sin6_family = AF_INET6; - ((struct sockaddr_in6 *)&areq.ifra_addr)->sin6_len = sizeof(areq.ifra_addr); - ((struct sockaddr_in6 *)&areq.ifra_addr)->sin6_addr.s6_addr = addr->s6_addr; - - ((struct sockaddr_in6 *)&areq.ifra_mask)->sin6_family = AF_INET6; - ((struct sockaddr_in6 *)&areq.ifra_mask)->sin6_len = sizeof(areq.ifra_mask); - ((struct sockaddr_in6 *)&areq.ifra_mask)->sin6_addr.s6_addr = netmask->s6_addr; - - /* For some reason FreeBSD uses ifra_broadcast for specifying dstaddr */ - ((struct sockaddr_in6 *)&areq.ifra_broadaddr)->sin6_family = AF_INET6; - ((struct sockaddr_in6 *)&areq.ifra_broadaddr)->sin6_len = sizeof(areq.ifra_broadaddr); - ((struct sockaddr_in6 *)&areq.ifra_broadaddr)->sin6_addr.s6_addr = dstaddr->s6_addr; - - /* Create a channel to the NET kernel. */ - if ((fd = socket(AF_INET, SOCK_DGRAM, 0)) < 0) { - SYS_ERR(DTUN, LOGL_ERROR, errno, "socket() failed"); - return -1; - } - - if (ioctl(fd, SIOCAIFADDR, (void *)&areq) < 0) { - SYS_ERR(DTUN, LOGL_ERROR, errno, - "ioctl(SIOCAIFADDR) failed"); - close(fd); - return -1; - } - - close(fd); - return 0; - -#endif - } static int tun_addaddr6(struct tun_t *this, @@ -688,115 +157,6 @@ default: return -1; } -} - -static int netdev_route(struct in_addr *dst, struct in_addr *gateway, struct in_addr *mask, int delete) -{ - -#if defined(__linux__) - - struct rtentry r; - int fd; - - memset(&r, '\0', sizeof(r)); - r.rt_flags = RTF_UP | RTF_GATEWAY; /* RTF_HOST not set */ - - /* Create a channel to the NET kernel. */ - if ((fd = socket(AF_INET, SOCK_DGRAM, 0)) < 0) { - SYS_ERR(DTUN, LOGL_ERROR, errno, "socket() failed"); - return -1; - } - - r.rt_dst.sa_family = AF_INET; - r.rt_gateway.sa_family = AF_INET; - r.rt_genmask.sa_family = AF_INET; - memcpy(&((struct sockaddr_in *)&r.rt_dst)->sin_addr, dst, sizeof(*dst)); - memcpy(&((struct sockaddr_in *)&r.rt_gateway)->sin_addr, gateway, - sizeof(*gateway)); - memcpy(&((struct sockaddr_in *)&r.rt_genmask)->sin_addr, mask, - sizeof(*mask)); - - if (delete) { - if (ioctl(fd, SIOCDELRT, (void *)&r) < 0) { - SYS_ERR(DTUN, LOGL_ERROR, errno, - "ioctl(SIOCDELRT) failed"); - close(fd); - return -1; - } - } else { - if (ioctl(fd, SIOCADDRT, (void *)&r) < 0) { - SYS_ERR(DTUN, LOGL_ERROR, errno, - "ioctl(SIOCADDRT) failed"); - close(fd); - return -1; - } - } - close(fd); - return 0; - -#elif defined(__FreeBSD__) || defined (__APPLE__) - - struct { - struct rt_msghdr rt; - struct sockaddr_in dst; - struct sockaddr_in gate; - struct sockaddr_in mask; - } req; - - int fd; - struct rt_msghdr *rtm; - - if ((fd = socket(AF_ROUTE, SOCK_RAW, 0)) == -1) { - SYS_ERR(DTUN, LOGL_ERROR, errno, "socket() failed"); - return -1; - } - - memset(&req, 0x00, sizeof(req)); - - rtm = &req.rt; - - rtm->rtm_msglen = sizeof(req); - rtm->rtm_version = RTM_VERSION; - if (delete) { - rtm->rtm_type = RTM_DELETE; - } else { - rtm->rtm_type = RTM_ADD; - } - rtm->rtm_flags = RTF_UP | RTF_GATEWAY | RTF_STATIC; /* TODO */ - rtm->rtm_addrs = RTA_DST | RTA_GATEWAY | RTA_NETMASK; - rtm->rtm_pid = getpid(); - rtm->rtm_seq = 0044; /* TODO */ - - req.dst.sin_family = AF_INET; - req.dst.sin_len = sizeof(req.dst); - req.mask.sin_family = AF_INET; - req.mask.sin_len = sizeof(req.mask); - req.gate.sin_family = AF_INET; - req.gate.sin_len = sizeof(req.gate); - - req.dst.sin_addr.s_addr = dst->s_addr; - req.mask.sin_addr.s_addr = mask->s_addr; - req.gate.sin_addr.s_addr = gateway->s_addr; - - if (write(fd, rtm, rtm->rtm_msglen) < 0) { - SYS_ERR(DTUN, LOGL_ERROR, errno, "write() failed"); - close(fd); - return -1; - } - close(fd); - return 0; -#endif - -} - -int netdev_addroute(struct in_addr *dst, struct in_addr *gateway, struct in_addr *mask) -{ - return netdev_route(dst, gateway, mask, 0); -} - -int netdev_delroute(struct in_addr *dst, struct in_addr *gateway, struct in_addr *mask) -{ - return netdev_route(dst, gateway, mask, 1); } int tun_new(struct tun_t **tun, const char *dev_name) @@ -963,79 +323,6 @@ return -1; } return 0; -} - -#include - -/*! Obtain the local address of a network device - * \param[in] devname Target device owning the IP - * \param[out] prefix_list List of prefix structures to fill with each IPv4/6 and prefix length found. - * \param[in] prefix_size Amount of elements allowed to be fill in the prefix_list array. - * \param[in] flags Specify which kind of IP to look for: IP_TYPE_IPv4, IP_TYPE_IPv6_LINK, IP_TYPE_IPv6_NONLINK - * \returns The number of ips found following the criteria specified by flags, -1 on error. - * - * This function will fill prefix_list with up to prefix_size IPs following the - * criteria specified by flags parameter. It returns the number of IPs matching - * the criteria. As a result, the number returned can be bigger than - * prefix_size. It can be used with prefix_size=0 to get an estimate of the size - * needed for prefix_list. - */ -int netdev_ip_local_get(const char *devname, struct in46_prefix *prefix_list, size_t prefix_size, int flags) -{ - static const uint8_t ll_prefix[] = { 0xfe,0x80, 0,0, 0,0, 0,0 }; - struct ifaddrs *ifaddr, *ifa; - struct in46_addr netmask; - size_t count = 0; - bool is_ipv6_ll; - - if (getifaddrs(&ifaddr) == -1) { - return -1; - } - - for (ifa = ifaddr; ifa != NULL; ifa = ifa->ifa_next) { - if (ifa->ifa_addr == NULL) - continue; - - if (strcmp(ifa->ifa_name, devname)) - continue; - - if (ifa->ifa_addr->sa_family == AF_INET && (flags & IP_TYPE_IPv4)) { - struct sockaddr_in *sin4 = (struct sockaddr_in *) ifa->ifa_addr; - struct sockaddr_in *netmask4 = (struct sockaddr_in *) ifa->ifa_netmask; - - if (count < prefix_size) { - netmask.len = sizeof(netmask4->sin_addr); - netmask.v4 = netmask4->sin_addr; - prefix_list[count].addr.len = sizeof(sin4->sin_addr); - prefix_list[count].addr.v4 = sin4->sin_addr; - prefix_list[count].prefixlen = in46a_netmasklen(&netmask); - } - count++; - } - - if (ifa->ifa_addr->sa_family == AF_INET6 && (flags & IP_TYPE_IPv6)) { - struct sockaddr_in6 *sin6 = (struct sockaddr_in6 *) ifa->ifa_addr; - struct sockaddr_in6 *netmask6 = (struct sockaddr_in6 *) ifa->ifa_netmask; - - is_ipv6_ll = !memcmp(sin6->sin6_addr.s6_addr, ll_prefix, sizeof(ll_prefix)); - if ((flags & IP_TYPE_IPv6_NONLINK) && is_ipv6_ll) - continue; - if ((flags & IP_TYPE_IPv6_LINK) && !is_ipv6_ll) - continue; - - if (count < prefix_size) { - netmask.len = sizeof(netmask6->sin6_addr); - netmask.v6 = netmask6->sin6_addr; - prefix_list[count].addr.len = sizeof(sin6->sin6_addr); - prefix_list[count].addr.v6 = sin6->sin6_addr; - prefix_list[count].prefixlen = in46a_netmasklen(&netmask); - } - count++; - } - } - - freeifaddrs(ifaddr); - return count; } /*! Obtain the local address of the tun device. diff --git a/lib/tun.h b/lib/tun.h index af9e9f4..c9e8e34 100644 --- a/lib/tun.h +++ b/lib/tun.h @@ -1,7 +1,7 @@ /* * TUN interface functions. * Copyright (C) 2002, 2003 Mondru AB. - * Copyright (C) 2017 by Harald Welte + * Copyright (C) 2017-2018 by Harald Welte * * The contents of this file may be used under the terms of the GNU * General Public License Version 2, provided that the above copyright @@ -20,43 +20,9 @@ #define PACKET_MAX 8196 /* Maximum packet size we receive */ #define TUN_SCRIPTSIZE 256 #define TUN_ADDRSIZE 128 -#define TUN_NLBUFSIZE 1024 #include "config.h" - -/* ipv6 ip type flags for tun_ipv6_local_get() */ -enum { - IP_TYPE_IPv4 = 1, - IP_TYPE_IPv6_LINK = 2, - IP_TYPE_IPv6_NONLINK = 4, -}; -#define IP_TYPE_IPv6 (IP_TYPE_IPv6_LINK | IP_TYPE_IPv6_NONLINK) - - -#ifndef HAVE_IPHDR -struct iphdr - { -#if __BYTE_ORDER == __LITTLE_ENDIAN - unsigned int ihl:4; - unsigned int version:4; -#elif __BYTE_ORDER == __BIG_ENDIAN - unsigned int version:4; - unsigned int ihl:4; -#else -# error "Please fix " -#endif - u_int8_t tos; - u_int16_t tot_len; - u_int16_t id; - u_int16_t frag_off; - u_int8_t ttl; - u_int8_t protocol; - u_int16_t check; - u_int32_t saddr; - u_int32_t daddr; - /*The options start here. */ - }; -#endif /* !HAVE_IPHDR */ +#include "netdev.h" /* *********************************************************** * Information storage for each tun instance @@ -86,16 +52,11 @@ extern int tun_setaddr(struct tun_t *this, struct in46_addr *our_adr, struct in46_addr *his_adr, size_t prefixlen); -int netdev_addroute(struct in_addr *dst, struct in_addr *gateway, struct in_addr *mask); - extern int tun_set_cb_ind(struct tun_t *this, int (*cb_ind) (struct tun_t * tun, void *pack, unsigned len)); extern int tun_runscript(struct tun_t *tun, char *script); - -int netdev_ip_local_get(const char *devname, struct in46_prefix *prefix_list, - size_t prefix_size, int flags); int tun_ip_local_get(const struct tun_t *tun, struct in46_prefix *prefix_list, size_t prefix_size, int flags); -- To view, visit https://gerrit.osmocom.org/7923 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Ib021e392637a43d5cf1b40e0d50621fe7e854ba5 Gerrit-PatchSet: 1 Gerrit-Project: osmo-ggsn Gerrit-Branch: master Gerrit-Owner: Harald Welte From gerrit-no-reply at lists.osmocom.org Wed Apr 25 18:46:26 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Wed, 25 Apr 2018 18:46:26 +0000 Subject: [PATCH] osmo-ggsn[master]: lib/netdev.c: Cosmetic changes (coding style / cleanups) Message-ID: Review at https://gerrit.osmocom.org/7924 lib/netdev.c: Cosmetic changes (coding style / cleanups) Change-Id: I60cbca616a4f727e2374c52715f9286a0f4c5e4b --- M lib/netdev.c 1 file changed, 11 insertions(+), 50 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-ggsn refs/changes/24/7924/1 diff --git a/lib/netdev.c b/lib/netdev.c index f2254f3..052fb62 100644 --- a/lib/netdev.c +++ b/lib/netdev.c @@ -109,7 +109,6 @@ #if defined(__linux__) ifr.ifr_netmask.sa_family = AF_INET; - #elif defined(__FreeBSD__) || defined (__APPLE__) ((struct sockaddr_in *)&ifr.ifr_addr)->sin_len = sizeof(struct sockaddr_in); @@ -157,7 +156,6 @@ #if defined(__linux__) memcpy(&((struct sockaddr_in *)&ifr.ifr_netmask)->sin_addr, netmask, sizeof(*netmask)); - #elif defined(__FreeBSD__) || defined (__APPLE__) ((struct sockaddr_in *)&ifr.ifr_addr)->sin_addr.s_addr = netmask->s_addr; @@ -173,13 +171,10 @@ close(fd); - /* On linux the route to the interface is set automatically - on FreeBSD we have to do this manually */ - - /* TODO: How does it work on Solaris? */ - netdev_sifflags(devname, IFF_UP | IFF_RUNNING); + /* On linux the route to the interface is set automatically + on FreeBSD we have to do this manually */ #if defined(__FreeBSD__) || defined (__APPLE__) netdev_addroute(dstaddr, addr, &this->netmask); #endif @@ -254,13 +249,10 @@ close(fd); - /* On linux the route to the interface is set automatically - on FreeBSD we have to do this manually */ - - /* TODO: How does it work on Solaris? */ - netdev_sifflags(devname, IFF_UP | IFF_RUNNING); + /* On linux the route to the interface is set automatically + on FreeBSD we have to do this manually */ #if 0 /* FIXME */ //#if defined(__FreeBSD__) || defined (__APPLE__) netdev_addroute6(dstaddr, addr, prefixlen); @@ -272,7 +264,7 @@ int netdev_addaddr4(const char *devname, struct in_addr *addr, struct in_addr *dstaddr, struct in_addr *netmask) { - + int fd; #if defined(__linux__) struct { struct nlmsghdr n; @@ -282,7 +274,6 @@ struct sockaddr_nl local; socklen_t addr_len; - int fd; int status; struct sockaddr_nl nladdr; @@ -375,14 +366,7 @@ close(fd); return -1; } - - - close(fd); - return 0; - #elif defined (__FreeBSD__) || defined (__APPLE__) - - int fd; struct ifaliasreq areq; memset(&areq, 0, sizeof(areq)); @@ -421,18 +405,15 @@ close(fd); return -1; } - +#endif close(fd); return 0; - -#endif - } int netdev_addaddr6(const char *devname, struct in6_addr *addr, struct in6_addr *dstaddr, int prefixlen) { - + int fd; #if defined(__linux__) struct { struct nlmsghdr n; @@ -442,7 +423,6 @@ struct sockaddr_nl local; socklen_t addr_len; - int fd; int status; struct sockaddr_nl nladdr; @@ -535,14 +515,7 @@ close(fd); return -1; } - - - close(fd); - return 0; - #elif defined (__FreeBSD__) || defined (__APPLE__) - - int fd; struct ifaliasreq areq; memset(&areq, 0, sizeof(areq)); @@ -576,21 +549,16 @@ close(fd); return -1; } - +#endif close(fd); return 0; - -#endif - } static int netdev_route(struct in_addr *dst, struct in_addr *gateway, struct in_addr *mask, int delete) { - -#if defined(__linux__) - - struct rtentry r; int fd; +#if defined(__linux__) + struct rtentry r; memset(&r, '\0', sizeof(r)); r.rt_flags = RTF_UP | RTF_GATEWAY; /* RTF_HOST not set */ @@ -625,19 +593,13 @@ return -1; } } - close(fd); - return 0; - #elif defined(__FreeBSD__) || defined (__APPLE__) - struct { struct rt_msghdr rt; struct sockaddr_in dst; struct sockaddr_in gate; struct sockaddr_in mask; } req; - - int fd; struct rt_msghdr *rtm; if ((fd = socket(AF_ROUTE, SOCK_RAW, 0)) == -1) { @@ -677,10 +639,9 @@ close(fd); return -1; } +#endif close(fd); return 0; -#endif - } int netdev_addroute(struct in_addr *dst, struct in_addr *gateway, struct in_addr *mask) -- To view, visit https://gerrit.osmocom.org/7924 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I60cbca616a4f727e2374c52715f9286a0f4c5e4b Gerrit-PatchSet: 1 Gerrit-Project: osmo-ggsn Gerrit-Branch: master Gerrit-Owner: Harald Welte From gerrit-no-reply at lists.osmocom.org Wed Apr 25 18:46:27 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Wed, 25 Apr 2018 18:46:27 +0000 Subject: [PATCH] osmo-ggsn[master]: ggsn: Don't explicitly use tun_setaddr() API anymore Message-ID: Review at https://gerrit.osmocom.org/7925 ggsn: Don't explicitly use tun_setaddr() API anymore tun_addaddr() internally contains a fallback to tun_setaddr() for the first address, so we can unify the API usage a bit and use tun_addaddr() from all call sites Change-Id: I34de003a1a040254bd38b29e48caea34cb0c88d2 --- M ggsn/ggsn.c 1 file changed, 2 insertions(+), 2 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-ggsn refs/changes/25/7925/1 diff --git a/ggsn/ggsn.c b/ggsn/ggsn.c index bbdb5c8..85a2211 100644 --- a/ggsn/ggsn.c +++ b/ggsn/ggsn.c @@ -220,7 +220,7 @@ if (apn->v4.cfg.ifconfig_prefix.addr.len) { LOGPAPN(LOGL_INFO, apn, "Setting tun IP address %s\n", in46p_ntoa(&apn->v4.cfg.ifconfig_prefix)); - if (tun_setaddr(apn->tun.tun, &apn->v4.cfg.ifconfig_prefix.addr, NULL, + if (tun_addaddr(apn->tun.tun, &apn->v4.cfg.ifconfig_prefix.addr, NULL, apn->v4.cfg.ifconfig_prefix.prefixlen)) { LOGPAPN(LOGL_ERROR, apn, "Failed to set tun IPv4 address %s: %s\n", in46p_ntoa(&apn->v4.cfg.ifconfig_prefix), strerror(errno)); @@ -232,7 +232,7 @@ if (apn->v6.cfg.ifconfig_prefix.addr.len) { LOGPAPN(LOGL_INFO, apn, "Setting tun IPv6 address %s\n", in46p_ntoa(&apn->v6.cfg.ifconfig_prefix)); - if (tun_setaddr(apn->tun.tun, &apn->v6.cfg.ifconfig_prefix.addr, NULL, + if (tun_addaddr(apn->tun.tun, &apn->v6.cfg.ifconfig_prefix.addr, NULL, apn->v6.cfg.ifconfig_prefix.prefixlen)) { LOGPAPN(LOGL_ERROR, apn, "Failed to set tun IPv6 address %s: %s. " "Ensure you have ipv6 support and not used the disable_ipv6 sysctl?\n", -- To view, visit https://gerrit.osmocom.org/7925 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I34de003a1a040254bd38b29e48caea34cb0c88d2 Gerrit-PatchSet: 1 Gerrit-Project: osmo-ggsn Gerrit-Branch: master Gerrit-Owner: Harald Welte From gerrit-no-reply at lists.osmocom.org Wed Apr 25 18:46:27 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Wed, 25 Apr 2018 18:46:27 +0000 Subject: [PATCH] osmo-ggsn[master]: sgsnemu: Convert from tun_setaddr() to tun_addaddr() Message-ID: Review at https://gerrit.osmocom.org/7926 sgsnemu: Convert from tun_setaddr() to tun_addaddr() This converts the last caller of tun_setaddr() outside of lib/tun.c to use tun_addaddr(). Change-Id: Ia301d6a4ee3d02c1af1c85f2fe1041d3013268b0 --- M sgsnemu/sgsnemu.c 1 file changed, 1 insertion(+), 2 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-ggsn refs/changes/26/7926/1 diff --git a/sgsnemu/sgsnemu.c b/sgsnemu/sgsnemu.c index 8903d81..92abc70 100644 --- a/sgsnemu/sgsnemu.c +++ b/sgsnemu/sgsnemu.c @@ -1432,8 +1432,7 @@ if (addr.len == 16) prefixlen = 64; /* printf("Setting up interface and routing\n"); */ - /* FIXME: use tun_addattr() not tun_setaddr() */ - tun_setaddr(tun, &addr, &addr, prefixlen); + tun_addaddr(tun, &addr, &addr, prefixlen); if (options.defaultroute) { struct in_addr rm; rm.s_addr = 0; -- To view, visit https://gerrit.osmocom.org/7926 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Ia301d6a4ee3d02c1af1c85f2fe1041d3013268b0 Gerrit-PatchSet: 1 Gerrit-Project: osmo-ggsn Gerrit-Branch: master Gerrit-Owner: Harald Welte From gerrit-no-reply at lists.osmocom.org Wed Apr 25 18:46:27 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Wed, 25 Apr 2018 18:46:27 +0000 Subject: [PATCH] osmo-ggsn[master]: lib/tun: Remove tun_setaddr() API, as everyone is using tun_... Message-ID: Review at https://gerrit.osmocom.org/7927 lib/tun: Remove tun_setaddr() API, as everyone is using tun_addaddr() now Change-Id: I02e057d30b6773c17ea6bc31094e53587971e9e7 --- M lib/tun.c M lib/tun.h 2 files changed, 0 insertions(+), 17 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-ggsn refs/changes/27/7927/1 diff --git a/lib/tun.c b/lib/tun.c index a7f5512..dcc026c 100644 --- a/lib/tun.c +++ b/lib/tun.c @@ -95,20 +95,6 @@ return rc; } -int tun_setaddr(struct tun_t *this, struct in46_addr *addr, struct in46_addr *dstaddr, size_t prefixlen) -{ - struct in_addr netmask; - switch (addr->len) { - case 4: - netmask.s_addr = htonl(0xffffffff << (32 - prefixlen)); - return tun_setaddr4(this, &addr->v4, dstaddr ? &dstaddr->v4 : NULL, &netmask); - case 16: - return tun_setaddr6(this, &addr->v6, dstaddr ? &dstaddr->v6 : NULL, prefixlen); - default: - return -1; - } -} - static int tun_addaddr4(struct tun_t *this, struct in_addr *addr, struct in_addr *dstaddr, struct in_addr *netmask) { diff --git a/lib/tun.h b/lib/tun.h index c9e8e34..e41ee69 100644 --- a/lib/tun.h +++ b/lib/tun.h @@ -49,9 +49,6 @@ extern int tun_addaddr(struct tun_t *this, struct in46_addr *addr, struct in46_addr *dstaddr, size_t prefixlen); -extern int tun_setaddr(struct tun_t *this, struct in46_addr *our_adr, - struct in46_addr *his_adr, size_t prefixlen); - extern int tun_set_cb_ind(struct tun_t *this, int (*cb_ind) (struct tun_t * tun, void *pack, unsigned len)); -- To view, visit https://gerrit.osmocom.org/7927 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I02e057d30b6773c17ea6bc31094e53587971e9e7 Gerrit-PatchSet: 1 Gerrit-Project: osmo-ggsn Gerrit-Branch: master Gerrit-Owner: Harald Welte From gerrit-no-reply at lists.osmocom.org Wed Apr 25 18:46:28 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Wed, 25 Apr 2018 18:46:28 +0000 Subject: [PATCH] osmo-ggsn[master]: Move kernel GTP support from ggsn/ to lib/ Message-ID: Review at https://gerrit.osmocom.org/7928 Move kernel GTP support from ggsn/ to lib/ This way, the IP address / route handling between TUN devices and kernel GTP can be shared, which will provide not only a unified codebase but also a more consistent behavior. This also paves the road for to use kernel GTP from sgsnemu in the future. Related: OS#3214 Change-Id: Ic53a971136edd0d8871fbd6746d7b0090ce3a188 --- M ggsn/Makefile.am M ggsn/ggsn.c M lib/Makefile.am R lib/gtp-kernel.c R lib/gtp-kernel.h M lib/tun.c M lib/tun.h M sgsnemu/Makefile.am M sgsnemu/sgsnemu.c 9 files changed, 151 insertions(+), 148 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-ggsn refs/changes/28/7928/1 diff --git a/ggsn/Makefile.am b/ggsn/Makefile.am index 6b2232f..eca385f 100644 --- a/ggsn/Makefile.am +++ b/ggsn/Makefile.am @@ -12,8 +12,4 @@ endif osmo_ggsn_DEPENDENCIES = ../gtp/libgtp.la ../lib/libmisc.a -osmo_ggsn_SOURCES = ggsn_vty.c ggsn.c ggsn.h gtp-kernel.h icmpv6.c icmpv6.h checksum.c checksum.h - -if ENABLE_GTP_KERNEL -osmo_ggsn_SOURCES += gtp-kernel.c -endif +osmo_ggsn_SOURCES = ggsn_vty.c ggsn.c ggsn.h icmpv6.c icmpv6.h checksum.c checksum.h diff --git a/ggsn/ggsn.c b/ggsn/ggsn.c index 85a2211..2b0581e 100644 --- a/ggsn/ggsn.c +++ b/ggsn/ggsn.c @@ -63,9 +63,9 @@ #include "../lib/ippool.h" #include "../lib/syserr.h" #include "../lib/in46_addr.h" +#include "../lib/gtp-kernel.h" #include "../gtp/pdp.h" #include "../gtp/gtp.h" -#include "gtp-kernel.h" #include "icmpv6.h" #include "ggsn.h" @@ -125,13 +125,14 @@ LOGPAPN( LOGL_INFO, apn, "Running %s\n", apn->tun.cfg.ipdown_script); tun_runscript(apn->tun.tun, apn->tun.cfg.ipdown_script); } - /* release tun device */ - LOGPAPN(LOGL_INFO, apn, "Closing TUN device %s\n", apn->tun.tun->devname); - osmo_fd_unregister(&apn->tun.fd); + if (apn->cfg.gtpu_mode == APN_GTPU_MODE_TUN) { + /* release tun device */ + LOGPAPN(LOGL_INFO, apn, "Closing TUN device %s\n", apn->tun.tun->devname); + osmo_fd_unregister(&apn->tun.fd); + } tun_free(apn->tun.tun); apn->tun.tun = NULL; } - gtp_kernel_stop(apn->tun.cfg.dev_name); if (apn->v4.pool) { LOGPAPN(LOGL_INFO, apn, "Releasing IPv4 pool\n"); @@ -195,6 +196,7 @@ struct in46_prefix ipv6_tun_linklocal_ip; struct in46_prefix *blacklist; int blacklist_size; + struct gsn_t *gsn = apn->ggsn->gsn; int rc; if (apn->started) @@ -204,7 +206,7 @@ switch (apn->cfg.gtpu_mode) { case APN_GTPU_MODE_TUN: LOGPAPN(LOGL_INFO, apn, "Opening TUN device %s\n", apn->tun.cfg.dev_name); - if (tun_new(&apn->tun.tun, apn->tun.cfg.dev_name)) { + if (tun_new(&apn->tun.tun, apn->tun.cfg.dev_name, -1, -1, false)) { LOGPAPN(LOGL_ERROR, apn, "Failed to configure tun device\n"); return -1; } @@ -216,66 +218,6 @@ /* Set TUN library callback */ tun_set_cb_ind(apn->tun.tun, cb_tun_ind); - - if (apn->v4.cfg.ifconfig_prefix.addr.len) { - LOGPAPN(LOGL_INFO, apn, "Setting tun IP address %s\n", - in46p_ntoa(&apn->v4.cfg.ifconfig_prefix)); - if (tun_addaddr(apn->tun.tun, &apn->v4.cfg.ifconfig_prefix.addr, NULL, - apn->v4.cfg.ifconfig_prefix.prefixlen)) { - LOGPAPN(LOGL_ERROR, apn, "Failed to set tun IPv4 address %s: %s\n", - in46p_ntoa(&apn->v4.cfg.ifconfig_prefix), strerror(errno)); - apn_stop(apn, false); - return -1; - } - } - - if (apn->v6.cfg.ifconfig_prefix.addr.len) { - LOGPAPN(LOGL_INFO, apn, "Setting tun IPv6 address %s\n", - in46p_ntoa(&apn->v6.cfg.ifconfig_prefix)); - if (tun_addaddr(apn->tun.tun, &apn->v6.cfg.ifconfig_prefix.addr, NULL, - apn->v6.cfg.ifconfig_prefix.prefixlen)) { - LOGPAPN(LOGL_ERROR, apn, "Failed to set tun IPv6 address %s: %s. " - "Ensure you have ipv6 support and not used the disable_ipv6 sysctl?\n", - in46p_ntoa(&apn->v6.cfg.ifconfig_prefix), strerror(errno)); - apn_stop(apn, false); - return -1; - } - } - - if (apn->v6.cfg.ll_prefix.addr.len) { - LOGPAPN(LOGL_INFO, apn, "Setting tun IPv6 link-local address %s\n", - in46p_ntoa(&apn->v6.cfg.ll_prefix)); - if (tun_addaddr(apn->tun.tun, &apn->v6.cfg.ll_prefix.addr, NULL, - apn->v6.cfg.ll_prefix.prefixlen)) { - LOGPAPN(LOGL_ERROR, apn, "Failed to set tun IPv6 link-local address %s: %s. " - "Ensure you have ipv6 support and not used the disable_ipv6 sysctl?\n", - in46p_ntoa(&apn->v6.cfg.ll_prefix), strerror(errno)); - apn_stop(apn, false); - return -1; - } - apn->v6_lladdr = apn->v6.cfg.ll_prefix.addr.v6; - } - - if (apn->tun.cfg.ipup_script) { - LOGPAPN(LOGL_INFO, apn, "Running ip-up script %s\n", - apn->tun.cfg.ipup_script); - tun_runscript(apn->tun.tun, apn->tun.cfg.ipup_script); - } - - if (apn->cfg.apn_type_mask & (APN_TYPE_IPv6|APN_TYPE_IPv4v6) && - apn->v6.cfg.ll_prefix.addr.len == 0) { - rc = tun_ip_local_get(apn->tun.tun, &ipv6_tun_linklocal_ip, 1, IP_TYPE_IPv6_LINK); - if (rc < 1) { - LOGPAPN(LOGL_ERROR, apn, "Cannot obtain IPv6 link-local address of interface: %s\n", - rc ? strerror(errno) : "tun interface has no link-local IP assigned"); - apn_stop(apn, false); - return -1; - } - apn->v6_lladdr = ipv6_tun_linklocal_ip.addr.v6; - } - - /* set back-pointer from TUN device to APN */ - apn->tun.tun->priv = apn; break; case APN_GTPU_MODE_KERNEL_GTP: LOGPAPN(LOGL_INFO, apn, "Opening Kernel GTP device %s\n", apn->tun.cfg.dev_name); @@ -284,7 +226,7 @@ apn_stop(apn, false); return -1; } - if (apn->ggsn->gsn == NULL) { + if (gsn == NULL) { /* skip bringing up the APN now if the GSN is not initialized yet. * This happens during initial load of the config file, as the * "no shutdown" in the ggsn node only happens after the "apn" nodes @@ -293,8 +235,8 @@ return 0; } /* use GTP kernel module for data packet encapsulation */ - if (gtp_kernel_init(apn->ggsn->gsn, apn->tun.cfg.dev_name, - &apn->v4.cfg.ifconfig_prefix, apn->tun.cfg.ipup_script) < 0) { + if (tun_new(&apn->tun.tun, apn->tun.cfg.dev_name, gsn->fd0, gsn->fd1u, true)) { + LOGPAPN(LOGL_ERROR, apn, "Failed to configure Kernel GTP device\n"); return -1; } break; @@ -303,6 +245,68 @@ return -1; } + /* common initialization below */ + + /* set back-pointer from TUN device to APN */ + apn->tun.tun->priv = apn; + + if (apn->v4.cfg.ifconfig_prefix.addr.len) { + LOGPAPN(LOGL_INFO, apn, "Setting tun IP address %s\n", + in46p_ntoa(&apn->v4.cfg.ifconfig_prefix)); + if (tun_addaddr(apn->tun.tun, &apn->v4.cfg.ifconfig_prefix.addr, NULL, + apn->v4.cfg.ifconfig_prefix.prefixlen)) { + LOGPAPN(LOGL_ERROR, apn, "Failed to set tun IPv4 address %s: %s\n", + in46p_ntoa(&apn->v4.cfg.ifconfig_prefix), strerror(errno)); + apn_stop(apn, false); + return -1; + } + } + + if (apn->v6.cfg.ifconfig_prefix.addr.len) { + LOGPAPN(LOGL_INFO, apn, "Setting tun IPv6 address %s\n", + in46p_ntoa(&apn->v6.cfg.ifconfig_prefix)); + if (tun_addaddr(apn->tun.tun, &apn->v6.cfg.ifconfig_prefix.addr, NULL, + apn->v6.cfg.ifconfig_prefix.prefixlen)) { + LOGPAPN(LOGL_ERROR, apn, "Failed to set tun IPv6 address %s: %s. " + "Ensure you have ipv6 support and not used the disable_ipv6 sysctl?\n", + in46p_ntoa(&apn->v6.cfg.ifconfig_prefix), strerror(errno)); + apn_stop(apn, false); + return -1; + } + } + + if (apn->v6.cfg.ll_prefix.addr.len) { + LOGPAPN(LOGL_INFO, apn, "Setting tun IPv6 link-local address %s\n", + in46p_ntoa(&apn->v6.cfg.ll_prefix)); + if (tun_addaddr(apn->tun.tun, &apn->v6.cfg.ll_prefix.addr, NULL, + apn->v6.cfg.ll_prefix.prefixlen)) { + LOGPAPN(LOGL_ERROR, apn, "Failed to set tun IPv6 link-local address %s: %s. " + "Ensure you have ipv6 support and not used the disable_ipv6 sysctl?\n", + in46p_ntoa(&apn->v6.cfg.ll_prefix), strerror(errno)); + apn_stop(apn, false); + return -1; + } + apn->v6_lladdr = apn->v6.cfg.ll_prefix.addr.v6; + } + + if (apn->tun.cfg.ipup_script) { + LOGPAPN(LOGL_INFO, apn, "Running ip-up script %s\n", + apn->tun.cfg.ipup_script); + tun_runscript(apn->tun.tun, apn->tun.cfg.ipup_script); + } + + if (apn->cfg.apn_type_mask & (APN_TYPE_IPv6|APN_TYPE_IPv4v6) && + apn->v6.cfg.ll_prefix.addr.len == 0) { + rc = tun_ip_local_get(apn->tun.tun, &ipv6_tun_linklocal_ip, 1, IP_TYPE_IPv6_LINK); + if (rc < 1) { + LOGPAPN(LOGL_ERROR, apn, "Cannot obtain IPv6 link-local address of interface: %s\n", + rc ? strerror(errno) : "tun interface has no link-local IP assigned"); + apn_stop(apn, false); + return -1; + } + apn->v6_lladdr = ipv6_tun_linklocal_ip.addr.v6; + } + /* Create IPv4 pool */ if (apn->v4.cfg.dynamic_prefix.addr.len) { LOGPAPN(LOGL_INFO, apn, "Creating IPv4 pool %s\n", diff --git a/lib/Makefile.am b/lib/Makefile.am index 55348ad..b6e7aba 100644 --- a/lib/Makefile.am +++ b/lib/Makefile.am @@ -1,7 +1,12 @@ noinst_LIBRARIES = libmisc.a -noinst_HEADERS = gnugetopt.h ippool.h lookup.h syserr.h tun.h in46_addr.h netdev.h +noinst_HEADERS = gnugetopt.h ippool.h lookup.h syserr.h tun.h in46_addr.h netdev.h gtp-kernel.h AM_CFLAGS = -O2 -fno-builtin -Wall -DSBINDIR='"$(sbindir)"' -ggdb $(LIBOSMOCORE_CFLAGS) libmisc_a_SOURCES = getopt1.c getopt.c ippool.c lookup.c tun.c debug.c in46_addr.c netdev.c + +if ENABLE_GTP_KERNEL +AM_CFLAGS += -DGTP_KERNEL $(LIBGTPNL_CFLAGS) +libmisc_a_SOURCES += gtp-kernel.c +endif diff --git a/ggsn/gtp-kernel.c b/lib/gtp-kernel.c similarity index 71% rename from ggsn/gtp-kernel.c rename to lib/gtp-kernel.c index 4564d9a..48811bc 100644 --- a/ggsn/gtp-kernel.c +++ b/lib/gtp-kernel.c @@ -77,56 +77,20 @@ return 0; } -int gtp_kernel_init(struct gsn_t *gsn, const char *devname, struct in46_prefix *prefix, const char *ipup) +int gtp_kernel_create(int dest_ns, const char *devname, int fd0, int fd1u) { - struct in_addr net; - const char *net_arg; - - if (!gtp_nl.nl) - gtp_kernel_init_once(); - - if (prefix->addr.len != 4) { - LOGP(DGGSN, LOGL_ERROR, "we only support IPv4 in this path :/"); + if (gtp_kernel_init_once() < 0) return -1; - } - net = prefix->addr.v4; - if (gtp_dev_create(-1, devname, gsn->fd0, gsn->fd1u) < 0) { - LOGP(DGGSN, LOGL_ERROR, "cannot create GTP tunnel device: %s\n", - strerror(errno)); + return gtp_dev_create(dest_ns, devname, fd0, fd1u); +} + +int gtp_kernel_create_sgsn(int dest_ns, const char *devname, int fd0, int fd1u) +{ + if (gtp_kernel_init_once() < 0) return -1; - } - net_arg = in46p_ntoa(prefix); - - DEBUGP(DGGSN, "Setting route to reach %s via %s\n", net_arg, devname); - - if (gtp_dev_config(devname, &net, prefix->prefixlen) < 0) { - LOGP(DGGSN, LOGL_ERROR, "Cannot add route to reach network %s\n", net_arg); - } - - /* launch script if it is set to bring up the route to reach - * the MS, eg. ip ro add 10.0.0.0/8 dev gtp0. Better add this - * using native rtnetlink interface given that we know the - * MS network mask, later. - */ - if (ipup) { - char cmd[1024]; - int err; - - /* eg. /home/ggsn/ipup gtp0 10.0.0.0/8 */ - snprintf(cmd, sizeof(cmd), "%s %s %s", ipup, devname, net_arg); - cmd[sizeof(cmd)-1] = '\0'; - - err = system(cmd); - if (err < 0) { - LOGP(DGGSN, LOGL_ERROR, "Failed to launch script `%s'\n", ipup); - return -1; - } - } - LOGP(DGGSN, LOGL_NOTICE, "GTP kernel configured\n"); - - return 0; + return gtp_dev_create_sgsn(dest_ns, devname, fd0, fd1u); } void gtp_kernel_stop(const char *devname) diff --git a/ggsn/gtp-kernel.h b/lib/gtp-kernel.h similarity index 70% rename from ggsn/gtp-kernel.h rename to lib/gtp-kernel.h index e2da55a..464352c 100644 --- a/ggsn/gtp-kernel.h +++ b/lib/gtp-kernel.h @@ -7,18 +7,20 @@ extern char *ipup; #ifdef GTP_KERNEL -int gtp_kernel_init(struct gsn_t *gsn, const char *devname, struct in46_prefix *prefix, const char *ipup); +int gtp_kernel_create(int dest_ns, const char *devname, int fd0, int fd1u); +int gtp_kernel_create_sgsn(int dest_ns, const char *devname, int fd0, int fd1u); void gtp_kernel_stop(const char *devname); int gtp_kernel_tunnel_add(struct pdp_t *pdp, const char *devname); int gtp_kernel_tunnel_del(struct pdp_t *pdp, const char *devname); #else -static inline int gtp_kernel_init(struct gsn_t *gsn, const char *devname, struct in46_prefix *prefix, const char *ipup) +static inline int gtp_kernel_create(int dest_ns, const char *devname, int fd0, int fd1u) { SYS_ERR(DGGSN, LOGL_ERROR, 0, "ggsn compiled without GTP kernel support!\n"); return -1; } +#define gtp_kernel_create_sgsn gtp_kernel_create static inline void gtp_kernel_stop(const char *devname) {} diff --git a/lib/tun.c b/lib/tun.c index dcc026c..2f9d6c6 100644 --- a/lib/tun.c +++ b/lib/tun.c @@ -19,6 +19,7 @@ #include #include +#include #include #include #include @@ -57,6 +58,7 @@ #include "tun.h" #include "syserr.h" +#include "gtp-kernel.h" static int tun_setaddr4(struct tun_t *this, struct in_addr *addr, struct in_addr *dstaddr, struct in_addr *netmask) @@ -145,7 +147,7 @@ } } -int tun_new(struct tun_t **tun, const char *dev_name) +int tun_new(struct tun_t **tun, const char *dev_name, int fd0, int fd1u, bool use_kernel) { #if defined(__linux__) @@ -168,30 +170,49 @@ (*tun)->routes = 0; #if defined(__linux__) - /* Open the actual tun device */ - if (((*tun)->fd = open("/dev/net/tun", O_RDWR)) < 0) { - SYS_ERR(DTUN, LOGL_ERROR, errno, "open() failed"); - goto err_free; + if (!use_kernel) { + /* Open the actual tun device */ + if (((*tun)->fd = open("/dev/net/tun", O_RDWR)) < 0) { + SYS_ERR(DTUN, LOGL_ERROR, errno, "open() failed"); + goto err_free; + } + + /* Set device flags. For some weird reason this is also the method + used to obtain the network interface name */ + memset(&ifr, 0, sizeof(ifr)); + if (dev_name) + strcpy(ifr.ifr_name, dev_name); + ifr.ifr_flags = IFF_TUN | IFF_NO_PI; /* Tun device, no packet info */ + if (ioctl((*tun)->fd, TUNSETIFF, (void *)&ifr) < 0) { + SYS_ERR(DTUN, LOGL_ERROR, errno, "ioctl() failed"); + goto err_close; + } + + strncpy((*tun)->devname, ifr.ifr_name, IFNAMSIZ); + (*tun)->devname[IFNAMSIZ - 1] = 0; + + ioctl((*tun)->fd, TUNSETNOCSUM, 1); /* Disable checksums */ + return 0; + } else { + strncpy((*tun)->devname, dev_name, IFNAMSIZ); + (*tun)->devname[IFNAMSIZ - 1] = 0; + (*tun)->fd = -1; + + if (gtp_kernel_create(-1, dev_name, fd0, fd1u) < 0) { + LOGP(DTUN, LOGL_ERROR, "cannot create GTP tunnel device: %s\n", + strerror(errno)); + return -1; + } + LOGP(DTUN, LOGL_NOTICE, "GTP kernel configured\n"); + return 0; } - - /* Set device flags. For some weird reason this is also the method - used to obtain the network interface name */ - memset(&ifr, 0, sizeof(ifr)); - if (dev_name) - strcpy(ifr.ifr_name, dev_name); - ifr.ifr_flags = IFF_TUN | IFF_NO_PI; /* Tun device, no packet info */ - if (ioctl((*tun)->fd, TUNSETIFF, (void *)&ifr) < 0) { - SYS_ERR(DTUN, LOGL_ERROR, errno, "ioctl() failed"); - goto err_close; - } - - strncpy((*tun)->devname, ifr.ifr_name, IFNAMSIZ); - (*tun)->devname[IFNAMSIZ - 1] = 0; - - ioctl((*tun)->fd, TUNSETNOCSUM, 1); /* Disable checksums */ - return 0; #elif defined(__FreeBSD__) || defined (__APPLE__) + + if (use_kernel) { + LOGP(DTUN, LOGL_ERROR, "No kernel GTP-U support in FreeBSD!\n"); + return -1; + } /* Find suitable device */ for (devnum = 0; devnum < 255; devnum++) { /* TODO 255 */ @@ -247,10 +268,14 @@ netdev_delroute(&tun->dstaddr, &tun->addr, &tun->netmask); } - if (close(tun->fd)) { - SYS_ERR(DTUN, LOGL_ERROR, errno, "close() failed"); + if (tun->fd >= 0) { + if (close(tun->fd)) { + SYS_ERR(DTUN, LOGL_ERROR, errno, "close() failed"); + } } + gtp_kernel_stop(tun->devname); + /* TODO: For solaris we need to unlink streams */ free(tun); diff --git a/lib/tun.h b/lib/tun.h index e41ee69..5ca2ec6 100644 --- a/lib/tun.h +++ b/lib/tun.h @@ -13,6 +13,7 @@ #ifndef _TUN_H #define _TUN_H +#include #include #include "../lib/in46_addr.h" @@ -41,7 +42,7 @@ void *priv; }; -extern int tun_new(struct tun_t **tun, const char *dev_name); +extern int tun_new(struct tun_t **tun, const char *dev_name, int fd0, int fd1u, bool use_kernel); extern int tun_free(struct tun_t *tun); extern int tun_decaps(struct tun_t *this); extern int tun_encaps(struct tun_t *tun, void *pack, unsigned len); diff --git a/sgsnemu/Makefile.am b/sgsnemu/Makefile.am index 4d02eca..9f10cd2 100644 --- a/sgsnemu/Makefile.am +++ b/sgsnemu/Makefile.am @@ -5,5 +5,11 @@ AM_CFLAGS = -O2 -D_GNU_SOURCE -fno-builtin -Wall -DSBINDIR='"$(sbindir)"' -ggdb $(LIBOSMOCORE_CFLAGS) sgsnemu_LDADD = @EXEC_LDADD@ -lgtp -L../gtp ../lib/libmisc.a $(LIBOSMOCORE_LIBS) + +if ENABLE_GTP_KERNEL +AM_CFLAGS += -DGTP_KERNEL $(LIBGTPNL_CFLAGS) +sgsnemu_LDADD += $(LIBGTPNL_LIBS) +endif + sgsnemu_DEPENDENCIES = ../gtp/libgtp.la ../lib/libmisc.a sgsnemu_SOURCES = sgsnemu.c cmdline.c cmdline.h diff --git a/sgsnemu/sgsnemu.c b/sgsnemu/sgsnemu.c index 92abc70..ebcfb44 100644 --- a/sgsnemu/sgsnemu.c +++ b/sgsnemu/sgsnemu.c @@ -1571,7 +1571,7 @@ if (options.createif) { printf("Setting up interface\n"); /* Create a tunnel interface */ - if (tun_new((struct tun_t **)&tun, options.tun_dev_name)) { + if (tun_new((struct tun_t **)&tun, options.tun_dev_name, -1, -1, false)) { SYS_ERR(DSGSN, LOGL_ERROR, 0, "Failed to create tun"); exit(1); -- To view, visit https://gerrit.osmocom.org/7928 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Ic53a971136edd0d8871fbd6746d7b0090ce3a188 Gerrit-PatchSet: 1 Gerrit-Project: osmo-ggsn Gerrit-Branch: master Gerrit-Owner: Harald Welte From gerrit-no-reply at lists.osmocom.org Wed Apr 25 18:47:58 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Wed, 25 Apr 2018 18:47:58 +0000 Subject: osmo-ggsn[master]: fix segfault in case of kernel gtp-u In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7919 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I022a5e5ebc1f155e8f94938856d310462f79bbe8 Gerrit-PatchSet: 1 Gerrit-Project: osmo-ggsn Gerrit-Branch: master Gerrit-Owner: Harald Welte Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Wed Apr 25 18:48:08 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Wed, 25 Apr 2018 18:48:08 +0000 Subject: [MERGED] osmo-ggsn[master]: fix segfault in case of kernel gtp-u In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: fix segfault in case of kernel gtp-u ...................................................................... fix segfault in case of kernel gtp-u There's a problem during the initial start-up of osmo-ggsn in case of kernel gtp-u: apn->ggsn->gsn is not yet set while parsing the 'apn' nodes from the config file. This member is only set after the last 'apn' node has been parsed at the end of the 'ggsn' node. Closes: OS#3217 Change-Id: I022a5e5ebc1f155e8f94938856d310462f79bbe8 --- M ggsn/ggsn.c 1 file changed, 8 insertions(+), 0 deletions(-) Approvals: Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/ggsn/ggsn.c b/ggsn/ggsn.c index cb11c49..bbdb5c8 100644 --- a/ggsn/ggsn.c +++ b/ggsn/ggsn.c @@ -284,6 +284,14 @@ apn_stop(apn, false); return -1; } + if (apn->ggsn->gsn == NULL) { + /* skip bringing up the APN now if the GSN is not initialized yet. + * This happens during initial load of the config file, as the + * "no shutdown" in the ggsn node only happens after the "apn" nodes + * are brought up */ + LOGPAPN(LOGL_NOTICE, apn, "Skipping APN start\n"); + return 0; + } /* use GTP kernel module for data packet encapsulation */ if (gtp_kernel_init(apn->ggsn->gsn, apn->tun.cfg.dev_name, &apn->v4.cfg.ifconfig_prefix, apn->tun.cfg.ipup_script) < 0) { -- To view, visit https://gerrit.osmocom.org/7919 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: I022a5e5ebc1f155e8f94938856d310462f79bbe8 Gerrit-PatchSet: 1 Gerrit-Project: osmo-ggsn Gerrit-Branch: master Gerrit-Owner: Harald Welte Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder From gerrit-no-reply at lists.osmocom.org Wed Apr 25 18:51:19 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Wed, 25 Apr 2018 18:51:19 +0000 Subject: osmo-ggsn[master]: lib/tun.c: Generalize tun_sifflags() to netdev_sifflags In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+1 -- To view, visit https://gerrit.osmocom.org/7920 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Iae7ced700245d6c1ac7e9807ab80d12fde8da116 Gerrit-PatchSet: 1 Gerrit-Project: osmo-ggsn Gerrit-Branch: master Gerrit-Owner: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Pau Espin Pedrol Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Wed Apr 25 18:55:45 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Wed, 25 Apr 2018 18:55:45 +0000 Subject: osmo-ggsn[master]: lib/tun.c: Generalize tun_sifflags() to netdev_sifflags In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7920 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Iae7ced700245d6c1ac7e9807ab80d12fde8da116 Gerrit-PatchSet: 1 Gerrit-Project: osmo-ggsn Gerrit-Branch: master Gerrit-Owner: Harald Welte Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Pau Espin Pedrol Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Wed Apr 25 18:56:13 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Wed, 25 Apr 2018 18:56:13 +0000 Subject: osmo-ggsn[master]: lib/tun.c: generalize tun_*route() to netdev_*route() In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7921 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Ib077934aa5f3c9bed06e2cf16a980c965a7a046d Gerrit-PatchSet: 1 Gerrit-Project: osmo-ggsn Gerrit-Branch: master Gerrit-Owner: Harald Welte Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Wed Apr 25 18:56:21 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Wed, 25 Apr 2018 18:56:21 +0000 Subject: osmo-ggsn[master]: lib/tun.c: Generalize tun_{set, add}addr*() functions In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7922 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I139a950dd81a4b1199953be1608cd109a060f562 Gerrit-PatchSet: 1 Gerrit-Project: osmo-ggsn Gerrit-Branch: master Gerrit-Owner: Harald Welte Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Wed Apr 25 18:56:32 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Wed, 25 Apr 2018 18:56:32 +0000 Subject: osmo-ggsn[master]: lib/tun: split generic network device related stuff to lib/n... In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7923 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Ib021e392637a43d5cf1b40e0d50621fe7e854ba5 Gerrit-PatchSet: 1 Gerrit-Project: osmo-ggsn Gerrit-Branch: master Gerrit-Owner: Harald Welte Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Wed Apr 25 18:56:50 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Wed, 25 Apr 2018 18:56:50 +0000 Subject: osmo-ggsn[master]: lib/netdev.c: Cosmetic changes (coding style / cleanups) In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7924 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I60cbca616a4f727e2374c52715f9286a0f4c5e4b Gerrit-PatchSet: 1 Gerrit-Project: osmo-ggsn Gerrit-Branch: master Gerrit-Owner: Harald Welte Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Wed Apr 25 18:57:02 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Wed, 25 Apr 2018 18:57:02 +0000 Subject: osmo-ggsn[master]: ggsn: Don't explicitly use tun_setaddr() API anymore In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7925 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I34de003a1a040254bd38b29e48caea34cb0c88d2 Gerrit-PatchSet: 1 Gerrit-Project: osmo-ggsn Gerrit-Branch: master Gerrit-Owner: Harald Welte Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Wed Apr 25 18:57:10 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Wed, 25 Apr 2018 18:57:10 +0000 Subject: osmo-ggsn[master]: sgsnemu: Convert from tun_setaddr() to tun_addaddr() In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7926 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Ia301d6a4ee3d02c1af1c85f2fe1041d3013268b0 Gerrit-PatchSet: 1 Gerrit-Project: osmo-ggsn Gerrit-Branch: master Gerrit-Owner: Harald Welte Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Wed Apr 25 18:57:15 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Wed, 25 Apr 2018 18:57:15 +0000 Subject: osmo-ggsn[master]: sgsnemu: Convert from tun_setaddr() to tun_addaddr() In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+1 -- To view, visit https://gerrit.osmocom.org/7926 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Ia301d6a4ee3d02c1af1c85f2fe1041d3013268b0 Gerrit-PatchSet: 1 Gerrit-Project: osmo-ggsn Gerrit-Branch: master Gerrit-Owner: Harald Welte Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Wed Apr 25 18:57:20 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Wed, 25 Apr 2018 18:57:20 +0000 Subject: osmo-ggsn[master]: lib/tun: Remove tun_setaddr() API, as everyone is using tun_... In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7927 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I02e057d30b6773c17ea6bc31094e53587971e9e7 Gerrit-PatchSet: 1 Gerrit-Project: osmo-ggsn Gerrit-Branch: master Gerrit-Owner: Harald Welte Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Wed Apr 25 18:58:07 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Wed, 25 Apr 2018 18:58:07 +0000 Subject: osmo-ggsn[master]: lib/tun.c: generalize tun_*route() to netdev_*route() In-Reply-To: References: Message-ID: Patch Set 1: (1 comment) https://gerrit.osmocom.org/#/c/7921/1/lib/tun.c File lib/tun.c: Line 277: netdev_addroute6(dstaddr, addr, prefixlen); I don't see the function definition for this one being changed. Actually, I think it doesn't exist, which means probably it will fail to compile in apple/freebsd? -- To view, visit https://gerrit.osmocom.org/7921 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Ib077934aa5f3c9bed06e2cf16a980c965a7a046d Gerrit-PatchSet: 1 Gerrit-Project: osmo-ggsn Gerrit-Branch: master Gerrit-Owner: Harald Welte Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Pau Espin Pedrol Gerrit-HasComments: Yes From gerrit-no-reply at lists.osmocom.org Wed Apr 25 18:59:01 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Wed, 25 Apr 2018 18:59:01 +0000 Subject: osmo-trx[master]: Move arch specific fiels to arch subdir In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7912 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Ibda3c54fd4dc3f6b845cc373f1a1e6b758c1ea82 Gerrit-PatchSet: 1 Gerrit-Project: osmo-trx Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Wed Apr 25 18:59:19 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Wed, 25 Apr 2018 18:59:19 +0000 Subject: osmo-trx[master]: Move device specific files to device subdir In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7913 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Ib42fef14bf4c7b779f44d99711a35c18b32a4c21 Gerrit-PatchSet: 1 Gerrit-Project: osmo-trx Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Wed Apr 25 18:59:32 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Wed, 25 Apr 2018 18:59:32 +0000 Subject: osmo-trx[master]: Change configure define USRP1 to DEVICE_USRP1 In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7914 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Iba238bff689b8f944af76120402c0fa2e29a70de Gerrit-PatchSet: 1 Gerrit-Project: osmo-trx Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Wed Apr 25 18:59:55 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Wed, 25 Apr 2018 18:59:55 +0000 Subject: osmo-trx[master]: Move device specific code out of radioInterface In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7915 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Id104e1edef02f863b6465ced5b4241050dc188f9 Gerrit-PatchSet: 1 Gerrit-Project: osmo-trx Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Wed Apr 25 19:00:18 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Wed, 25 Apr 2018 19:00:18 +0000 Subject: osmo-trx[master]: Transceiver: Move device specific code to radioDevice class In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7916 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Ibcf258d8bf8595e286682e0bc59391b239ea7642 Gerrit-PatchSet: 1 Gerrit-Project: osmo-trx Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Wed Apr 25 19:00:47 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Wed, 25 Apr 2018 19:00:47 +0000 Subject: osmo-trx[master]: Build one osmo-trx binary for each device support enabled In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7917 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Iea8c0d7434762713a53440d29bf3ebd84accb262 Gerrit-PatchSet: 1 Gerrit-Project: osmo-trx Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Pau Espin Pedrol Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Wed Apr 25 19:00:51 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Wed, 25 Apr 2018 19:00:51 +0000 Subject: [MERGED] osmo-trx[master]: Build one osmo-trx binary for each device support enabled In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: Build one osmo-trx binary for each device support enabled ...................................................................... Build one osmo-trx binary for each device support enabled Same way as we do in osmo-bts. After this commit, osmo-trx no longer exists. Instead, osmo-trx-uhd and osmo-trx-usrp1 are generated based on configure flags enabled. A new flag --with(out)-uhd has been added to enable/disable build of osmo-trx with UHD backend. It is left enabled by default to keep compatibility with older build scripts. Binary with USRP1 backend must still be manually enabled with --with-usrp1 flag. Change-Id: Iea8c0d7434762713a53440d29bf3ebd84accb262 --- M Transceiver52M/Makefile.am M Transceiver52M/device/Makefile.am M configure.ac M debian/control A debian/osmo-trx-uhd.install A debian/osmo-trx-usrp1.install M debian/osmo-trx.install 7 files changed, 65 insertions(+), 19 deletions(-) Approvals: Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/Transceiver52M/Makefile.am b/Transceiver52M/Makefile.am index ae4a5bc..3a872ef 100644 --- a/Transceiver52M/Makefile.am +++ b/Transceiver52M/Makefile.am @@ -80,19 +80,24 @@ $(LIBOSMOCTRL_LIBS) \ $(LIBOSMOVTY_LIBS) -bin_PROGRAMS = osmo-trx -osmo_trx_SOURCES = osmo-trx.cpp +bin_PROGRAMS = -if DEVICE_USRP1 -osmo_trx_LDADD = \ - $(COMMON_LDADD) \ - $(USRP_LIBS) \ - $(builddir)/device/usrp1/libdevice.la -osmo_trx_CPPFLAGS = $(AM_CPPFLAGS) $(USRP_CFLAGS) -else -osmo_trx_LDADD = \ +if DEVICE_UHD +bin_PROGRAMS += osmo-trx-uhd +osmo_trx_uhd_SOURCES = osmo-trx.cpp +osmo_trx_uhd_LDADD = \ $(COMMON_LDADD) \ $(UHD_LIBS) \ $(builddir)/device/uhd/libdevice.la -osmo_trx_CPPFLAGS = $(AM_CPPFLAGS) $(UHD_CFLAGS) +osmo_trx_uhd_CPPFLAGS = $(AM_CPPFLAGS) $(UHD_CFLAGS) +endif + +if DEVICE_USRP1 +bin_PROGRAMS += osmo-trx-usrp1 +osmo_trx_usrp1_SOURCES = osmo-trx.cpp +osmo_trx_usrp1_LDADD = \ + $(COMMON_LDADD) \ + $(USRP_LIBS) \ + $(builddir)/device/usrp1/libdevice.la +osmo_trx_usrp1_CPPFLAGS = $(AM_CPPFLAGS) $(USRP_CFLAGS) endif diff --git a/Transceiver52M/device/Makefile.am b/Transceiver52M/device/Makefile.am index f0675b0..2788eaa 100644 --- a/Transceiver52M/device/Makefile.am +++ b/Transceiver52M/device/Makefile.am @@ -6,6 +6,8 @@ if DEVICE_USRP1 SUBDIRS += usrp1 -else +endif + +if DEVICE_UHD SUBDIRS += uhd endif diff --git a/configure.ac b/configure.ac index 70a8f4b..2b2dab7 100644 --- a/configure.ac +++ b/configure.ac @@ -90,6 +90,11 @@ LDFLAGS="$LDFLAGS -fsanitize=address -fsanitize=undefined" fi +AC_ARG_WITH(uhd, [ + AS_HELP_STRING([--with-uhd], + [enable UHD based transceiver]) +]) + AC_ARG_WITH(usrp1, [ AS_HELP_STRING([--with-usrp1], [enable USRP1 gnuradio based transceiver]) @@ -128,7 +133,7 @@ PKG_CHECK_MODULES(USRP, usrp >= 3.3) ]) -AS_IF([test "x$with_usrp1" != "xyes"],[ +AS_IF([test "x$with_uhd" != "xno"],[ PKG_CHECK_MODULES(UHD, uhd >= 003.011, [AC_DEFINE(USE_UHD_3_11, 1, UHD version 3.11.0 or higher)], [PKG_CHECK_MODULES(UHD, uhd >= 003.009, @@ -136,7 +141,6 @@ [PKG_CHECK_MODULES(UHD, uhd >= 003.005)] )] ) - AC_DEFINE(USE_UHD, 1, All UHD versions) ]) AS_IF([test "x$with_singledb" = "xyes"], [ @@ -178,6 +182,7 @@ CHECK_BUILTIN_SUPPORT([__builtin_cpu_supports], [Runtime SIMD detection will be disabled]) +AM_CONDITIONAL(DEVICE_UHD, [test "x$with_uhd" != "xno"]) AM_CONDITIONAL(DEVICE_USRP1, [test "x$with_usrp1" = "xyes"]) AM_CONDITIONAL(ARCH_ARM, [test "x$with_neon" = "xyes" || test "x$with_neon_vfpv4" = "xyes"]) AM_CONDITIONAL(ARCH_ARM_A15, [test "x$with_neon_vfpv4" = "xyes"]) diff --git a/debian/control b/debian/control index b3d63a7..cae44d4 100644 --- a/debian/control +++ b/debian/control @@ -19,9 +19,15 @@ Homepage: https://projects.osmocom.org/projects/osmotrx Package: osmo-trx +Maintainer: Ivan Klyuchnikov +Depends: osmo-trx-uhd +Architecture: all +Description: Virtual package for osmo-trx-uhd + +Package: osmo-trx-uhd Architecture: any Depends: ${shlibs:Depends}, ${misc:Depends} -Description: SDR transceiver that implements Layer 1 of a GSM BTS +Description: SDR transceiver that implements Layer 1 of a GSM BTS (UHD) OsmoTRX is a software-defined radio transceiver that implements the Layer 1 physical layer of a BTS comprising the following 3GPP specifications: . @@ -37,10 +43,37 @@ between different telecommunication associations for developing new generations of mobile phone networks. (post-2G/GSM) -Package: osmo-trx-dbg +Package: osmo-trx-uhd-dbg Architecture: any Section: debug Priority: extra -Depends: osmo-trx (= ${binary:Version}), ${misc:Depends} -Description: Debug symbols for the osmo-trx +Depends: osmo-trx-uhd (= ${binary:Version}), ${misc:Depends} +Description: Debug symbols for the osmo-trx-uhd + Make debugging possible + +Package: osmo-trx-usrp1 +Architecture: any +Depends: ${shlibs:Depends}, ${misc:Depends} +Description: SDR transceiver that implements Layer 1 of a GSM BTS (USRP1) + OsmoTRX is a software-defined radio transceiver that implements the Layer 1 + physical layer of a BTS comprising the following 3GPP specifications: + . + TS 05.01 "Physical layer on the radio path" + TS 05.02 "Multiplexing and Multiple Access on the Radio Path" + TS 05.04 "Modulation" + TS 05.10 "Radio subsystem synchronization" + . + In this context, BTS is "Base transceiver station". It's the stations that + connect mobile phones to the mobile network. + . + 3GPP is the "3rd Generation Partnership Project" which is the collaboration + between different telecommunication associations for developing new + generations of mobile phone networks. (post-2G/GSM) + +Package: osmo-trx-usrp1-dbg +Architecture: any +Section: debug +Priority: extra +Depends: osmo-trx-usrp1 (= ${binary:Version}), ${misc:Depends} +Description: Debug symbols for the osmo-trx-usrp1 Make debugging possible diff --git a/debian/osmo-trx-uhd.install b/debian/osmo-trx-uhd.install new file mode 100644 index 0000000..0005b76 --- /dev/null +++ b/debian/osmo-trx-uhd.install @@ -0,0 +1 @@ +/usr/bin/osmo-trx-uhd diff --git a/debian/osmo-trx-usrp1.install b/debian/osmo-trx-usrp1.install new file mode 100644 index 0000000..1b76249 --- /dev/null +++ b/debian/osmo-trx-usrp1.install @@ -0,0 +1 @@ +/usr/bin/osmo-trx-usrp1 diff --git a/debian/osmo-trx.install b/debian/osmo-trx.install index 574e915..e69de29 100644 --- a/debian/osmo-trx.install +++ b/debian/osmo-trx.install @@ -1 +0,0 @@ -/usr/bin/osmo-trx -- To view, visit https://gerrit.osmocom.org/7917 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: Iea8c0d7434762713a53440d29bf3ebd84accb262 Gerrit-PatchSet: 1 Gerrit-Project: osmo-trx Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Pau Espin Pedrol From gerrit-no-reply at lists.osmocom.org Wed Apr 25 19:00:52 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Wed, 25 Apr 2018 19:00:52 +0000 Subject: [MERGED] osmo-trx[master]: Transceiver: Move device specific code to radioDevice class In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: Transceiver: Move device specific code to radioDevice class ...................................................................... Transceiver: Move device specific code to radioDevice class Change-Id: Ibcf258d8bf8595e286682e0bc59391b239ea7642 --- M Transceiver52M/Transceiver.cpp M Transceiver52M/device/radioDevice.h M Transceiver52M/device/uhd/UHDDevice.cpp M Transceiver52M/device/usrp1/USRPDevice.cpp M Transceiver52M/device/usrp1/USRPDevice.h M Transceiver52M/radioInterface.h 6 files changed, 26 insertions(+), 7 deletions(-) Approvals: Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/Transceiver52M/Transceiver.cpp b/Transceiver52M/Transceiver.cpp index 2d3771c..be6f526 100644 --- a/Transceiver52M/Transceiver.cpp +++ b/Transceiver52M/Transceiver.cpp @@ -35,12 +35,6 @@ #define USB_LATENCY_INTRVL 10,0 -#if USE_UHD -# define USB_LATENCY_MIN 6,7 -#else -# define USB_LATENCY_MIN 1,1 -#endif - /* Number of running values use in noise average */ #define NOISE_CNT 20 @@ -994,7 +988,7 @@ else { // if underrun hasn't occurred in the last sec (216 frames) drop // transmit latency by a timeslot - if (mTransmitLatency > GSM::Time(USB_LATENCY_MIN)) { + if (mTransmitLatency > mRadioInterface->minLatency()) { if (radioClock->get() > mLatencyUpdateTime + GSM::Time(216,0)) { mTransmitLatency.decTN(); LOG(INFO) << "reduced latency: " << mTransmitLatency; diff --git a/Transceiver52M/device/radioDevice.h b/Transceiver52M/device/radioDevice.h index 8915b17..44636d5 100644 --- a/Transceiver52M/device/radioDevice.h +++ b/Transceiver52M/device/radioDevice.h @@ -18,6 +18,8 @@ #include #include +#include "GSMCommon.h" + extern "C" { #include "config_defs.h" } @@ -151,6 +153,9 @@ /** return whether user drives synchronization of Tx/Rx of USRP */ virtual bool requiresRadioAlign() = 0; + /** Minimum latency that the device can achieve */ + virtual GSM::Time minLatency() = 0; + /** Return internal status values */ virtual double getTxFreq(size_t chan = 0) = 0; virtual double getRxFreq(size_t chan = 0) = 0; diff --git a/Transceiver52M/device/uhd/UHDDevice.cpp b/Transceiver52M/device/uhd/UHDDevice.cpp index ecdebe1..0d59bfc 100644 --- a/Transceiver52M/device/uhd/UHDDevice.cpp +++ b/Transceiver52M/device/uhd/UHDDevice.cpp @@ -257,6 +257,8 @@ bool requiresRadioAlign(); + GSM::Time minLatency(); + inline double getSampleRate() { return tx_rate; } inline double numberRead() { return rx_pkt_cnt; } inline double numberWritten() { return 0; } @@ -1289,6 +1291,14 @@ return false; } +GSM::Time uhd_device::minLatency() { + /* Empirical data from a handful of + relatively recent machines shows that the B100 will underrun when + the transmit threshold is reduced to a time of 6 and a half frames, + so we set a minimum 7 frame threshold. */ + return GSM::Time(6,7); +} + /* * Only allow sampling the Rx path lower than Tx and not vice-versa. * Using Tx with 4 SPS and Rx at 1 SPS is the only allowed mixed diff --git a/Transceiver52M/device/usrp1/USRPDevice.cpp b/Transceiver52M/device/usrp1/USRPDevice.cpp index 455528a..7f73f43 100644 --- a/Transceiver52M/device/usrp1/USRPDevice.cpp +++ b/Transceiver52M/device/usrp1/USRPDevice.cpp @@ -358,6 +358,10 @@ return true; } +GSM::Time USRPDevice::minLatency() { + return GSM::Time(1,1); +} + // NOTE: Assumes sequential reads int USRPDevice::readSamples(std::vector &bufs, int len, bool *overrun, TIMESTAMP timestamp, bool *underrun, unsigned *RSSI) diff --git a/Transceiver52M/device/usrp1/USRPDevice.h b/Transceiver52M/device/usrp1/USRPDevice.h index 9091dea..6304ea1 100644 --- a/Transceiver52M/device/usrp1/USRPDevice.h +++ b/Transceiver52M/device/usrp1/USRPDevice.h @@ -194,6 +194,9 @@ /** return whether user drives synchronization of Tx/Rx of USRP */ bool requiresRadioAlign(); + /** return whether user drives synchronization of Tx/Rx of USRP */ + virtual GSM::Time minLatency(); + /** Return internal status values */ inline double getTxFreq(size_t chan = 0) { return 0; } inline double getRxFreq(size_t chan = 0) { return 0; } diff --git a/Transceiver52M/radioInterface.h b/Transceiver52M/radioInterface.h index 6b482d1..ffcacdd 100644 --- a/Transceiver52M/radioInterface.h +++ b/Transceiver52M/radioInterface.h @@ -133,6 +133,9 @@ /** get transport window type of attached device */ enum RadioDevice::TxWindowType getWindowType() { return mRadio->getWindowType(); } + /** Minimum latency that the device can achieve */ + GSM::Time minLatency() { return mRadio->minLatency(); } + protected: /** drive synchronization of Tx/Rx of USRP */ void alignRadio(); -- To view, visit https://gerrit.osmocom.org/7916 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: Ibcf258d8bf8595e286682e0bc59391b239ea7642 Gerrit-PatchSet: 1 Gerrit-Project: osmo-trx Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder From gerrit-no-reply at lists.osmocom.org Wed Apr 25 19:00:52 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Wed, 25 Apr 2018 19:00:52 +0000 Subject: [MERGED] osmo-trx[master]: Move device specific code out of radioInterface In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: Move device specific code out of radioInterface ...................................................................... Move device specific code out of radioInterface This way code of radioInterface is independent of the device and doesn't need to be rebuild for each device. Change-Id: Id104e1edef02f863b6465ced5b4241050dc188f9 --- M Transceiver52M/device/radioDevice.h M Transceiver52M/device/uhd/UHDDevice.cpp M Transceiver52M/device/usrp1/USRPDevice.cpp M Transceiver52M/device/usrp1/USRPDevice.h M Transceiver52M/radioInterface.cpp M Transceiver52M/radioInterface.h 6 files changed, 36 insertions(+), 28 deletions(-) Approvals: Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/Transceiver52M/device/radioDevice.h b/Transceiver52M/device/radioDevice.h index 9913de0..8915b17 100644 --- a/Transceiver52M/device/radioDevice.h +++ b/Transceiver52M/device/radioDevice.h @@ -148,6 +148,9 @@ /** return the used RX path */ virtual std::string getTxAntenna(size_t chan = 0) = 0; + /** return whether user drives synchronization of Tx/Rx of USRP */ + virtual bool requiresRadioAlign() = 0; + /** Return internal status values */ virtual double getTxFreq(size_t chan = 0) = 0; virtual double getRxFreq(size_t chan = 0) = 0; diff --git a/Transceiver52M/device/uhd/UHDDevice.cpp b/Transceiver52M/device/uhd/UHDDevice.cpp index 4466da4..ecdebe1 100644 --- a/Transceiver52M/device/uhd/UHDDevice.cpp +++ b/Transceiver52M/device/uhd/UHDDevice.cpp @@ -255,6 +255,8 @@ bool setTxAntenna(const std::string &ant, size_t chan); std::string getTxAntenna(size_t chan); + bool requiresRadioAlign(); + inline double getSampleRate() { return tx_rate; } inline double numberRead() { return rx_pkt_cnt; } inline double numberWritten() { return 0; } @@ -1282,6 +1284,11 @@ return usrp_dev->get_tx_antenna(chan); } +bool uhd_device::requiresRadioAlign() +{ + return false; +} + /* * Only allow sampling the Rx path lower than Tx and not vice-versa. * Using Tx with 4 SPS and Rx at 1 SPS is the only allowed mixed diff --git a/Transceiver52M/device/usrp1/USRPDevice.cpp b/Transceiver52M/device/usrp1/USRPDevice.cpp index f7f24e9..455528a 100644 --- a/Transceiver52M/device/usrp1/USRPDevice.cpp +++ b/Transceiver52M/device/usrp1/USRPDevice.cpp @@ -353,6 +353,10 @@ return ""; } +bool USRPDevice::requiresRadioAlign() +{ + return true; +} // NOTE: Assumes sequential reads int USRPDevice::readSamples(std::vector &bufs, int len, bool *overrun, diff --git a/Transceiver52M/device/usrp1/USRPDevice.h b/Transceiver52M/device/usrp1/USRPDevice.h index f981643..9091dea 100644 --- a/Transceiver52M/device/usrp1/USRPDevice.h +++ b/Transceiver52M/device/usrp1/USRPDevice.h @@ -191,6 +191,9 @@ /* return the used RX path */ std::string getTxAntenna(size_t chan = 0); + /** return whether user drives synchronization of Tx/Rx of USRP */ + bool requiresRadioAlign(); + /** Return internal status values */ inline double getTxFreq(size_t chan = 0) { return 0; } inline double getRxFreq(size_t chan = 0) { return 0; } diff --git a/Transceiver52M/radioInterface.cpp b/Transceiver52M/radioInterface.cpp index c3063ff..a377436 100644 --- a/Transceiver52M/radioInterface.cpp +++ b/Transceiver52M/radioInterface.cpp @@ -145,16 +145,31 @@ return mRadio->setRxFreq(freq, chan); } +/** synchronization thread loop */ +void *AlignRadioServiceLoopAdapter(RadioInterface *radioInterface) +{ + while (1) { + sleep(60); + radioInterface->alignRadio(); + pthread_testcancel(); + } + return NULL; +} + +void RadioInterface::alignRadio() { + mRadio->updateAlignment(writeTimestamp+ (TIMESTAMP) 10000); +} + bool RadioInterface::start() { if (mOn) return true; LOG(INFO) << "Starting radio device"; -#ifdef DEVICE_USRP1 - mAlignRadioServiceLoopThread.start((void * (*)(void*))AlignRadioServiceLoopAdapter, - (void*)this); -#endif + if (mRadio->requiresRadioAlign()) + mAlignRadioServiceLoopThread.start( + (void * (*)(void*))AlignRadioServiceLoopAdapter, + (void*)this); if (!mRadio->start()) return false; @@ -190,22 +205,6 @@ mOn = false; return true; } - -#ifdef DEVICE_USRP1 -void *AlignRadioServiceLoopAdapter(RadioInterface *radioInterface) -{ - while (1) { - radioInterface->alignRadio(); - pthread_testcancel(); - } - return NULL; -} - -void RadioInterface::alignRadio() { - sleep(60); - mRadio->updateAlignment(writeTimestamp+ (TIMESTAMP) 10000); -} -#endif void RadioInterface::driveTransmitRadio(std::vector &bursts, std::vector &zeros) diff --git a/Transceiver52M/radioInterface.h b/Transceiver52M/radioInterface.h index e05d871..6b482d1 100644 --- a/Transceiver52M/radioInterface.h +++ b/Transceiver52M/radioInterface.h @@ -133,20 +133,12 @@ /** get transport window type of attached device */ enum RadioDevice::TxWindowType getWindowType() { return mRadio->getWindowType(); } -#if DEVICE_USRP1 protected: - /** drive synchronization of Tx/Rx of USRP */ void alignRadio(); friend void *AlignRadioServiceLoopAdapter(RadioInterface*); -#endif }; - -#if DEVICE_USRP1 -/** synchronization thread loop */ -void *AlignRadioServiceLoopAdapter(RadioInterface*); -#endif class RadioInterfaceResamp : public RadioInterface { private: -- To view, visit https://gerrit.osmocom.org/7915 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: Id104e1edef02f863b6465ced5b4241050dc188f9 Gerrit-PatchSet: 1 Gerrit-Project: osmo-trx Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder From gerrit-no-reply at lists.osmocom.org Wed Apr 25 19:00:52 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Wed, 25 Apr 2018 19:00:52 +0000 Subject: [MERGED] osmo-trx[master]: Change configure define USRP1 to DEVICE_USRP1 In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: Change configure define USRP1 to DEVICE_USRP1 ...................................................................... Change configure define USRP1 to DEVICE_USRP1 Similar as we do for ARCH_*, it's easier to find those are related to device support features. Change-Id: Iba238bff689b8f944af76120402c0fa2e29a70de --- M Transceiver52M/Makefile.am M Transceiver52M/device/Makefile.am M Transceiver52M/radioInterface.cpp M Transceiver52M/radioInterface.h M configure.ac 5 files changed, 7 insertions(+), 7 deletions(-) Approvals: Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/Transceiver52M/Makefile.am b/Transceiver52M/Makefile.am index 26f7510..ae4a5bc 100644 --- a/Transceiver52M/Makefile.am +++ b/Transceiver52M/Makefile.am @@ -83,7 +83,7 @@ bin_PROGRAMS = osmo-trx osmo_trx_SOURCES = osmo-trx.cpp -if USRP1 +if DEVICE_USRP1 osmo_trx_LDADD = \ $(COMMON_LDADD) \ $(USRP_LIBS) \ diff --git a/Transceiver52M/device/Makefile.am b/Transceiver52M/device/Makefile.am index 8575328..f0675b0 100644 --- a/Transceiver52M/device/Makefile.am +++ b/Transceiver52M/device/Makefile.am @@ -4,7 +4,7 @@ SUBDIRS = -if USRP1 +if DEVICE_USRP1 SUBDIRS += usrp1 else SUBDIRS += uhd diff --git a/Transceiver52M/radioInterface.cpp b/Transceiver52M/radioInterface.cpp index e039d5c..c3063ff 100644 --- a/Transceiver52M/radioInterface.cpp +++ b/Transceiver52M/radioInterface.cpp @@ -151,7 +151,7 @@ return true; LOG(INFO) << "Starting radio device"; -#ifdef USRP1 +#ifdef DEVICE_USRP1 mAlignRadioServiceLoopThread.start((void * (*)(void*))AlignRadioServiceLoopAdapter, (void*)this); #endif @@ -191,7 +191,7 @@ return true; } -#ifdef USRP1 +#ifdef DEVICE_USRP1 void *AlignRadioServiceLoopAdapter(RadioInterface *radioInterface) { while (1) { diff --git a/Transceiver52M/radioInterface.h b/Transceiver52M/radioInterface.h index 531e1a8..e05d871 100644 --- a/Transceiver52M/radioInterface.h +++ b/Transceiver52M/radioInterface.h @@ -133,7 +133,7 @@ /** get transport window type of attached device */ enum RadioDevice::TxWindowType getWindowType() { return mRadio->getWindowType(); } -#if USRP1 +#if DEVICE_USRP1 protected: /** drive synchronization of Tx/Rx of USRP */ @@ -143,7 +143,7 @@ #endif }; -#if USRP1 +#if DEVICE_USRP1 /** synchronization thread loop */ void *AlignRadioServiceLoopAdapter(RadioInterface*); #endif diff --git a/configure.ac b/configure.ac index ee8077c..70a8f4b 100644 --- a/configure.ac +++ b/configure.ac @@ -178,7 +178,7 @@ CHECK_BUILTIN_SUPPORT([__builtin_cpu_supports], [Runtime SIMD detection will be disabled]) -AM_CONDITIONAL(USRP1, [test "x$with_usrp1" = "xyes"]) +AM_CONDITIONAL(DEVICE_USRP1, [test "x$with_usrp1" = "xyes"]) AM_CONDITIONAL(ARCH_ARM, [test "x$with_neon" = "xyes" || test "x$with_neon_vfpv4" = "xyes"]) AM_CONDITIONAL(ARCH_ARM_A15, [test "x$with_neon_vfpv4" = "xyes"]) -- To view, visit https://gerrit.osmocom.org/7914 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: Iba238bff689b8f944af76120402c0fa2e29a70de Gerrit-PatchSet: 1 Gerrit-Project: osmo-trx Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder From gerrit-no-reply at lists.osmocom.org Wed Apr 25 19:00:53 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Wed, 25 Apr 2018 19:00:53 +0000 Subject: [MERGED] osmo-trx[master]: Move device specific files to device subdir In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: Move device specific files to device subdir ...................................................................... Move device specific files to device subdir Change-Id: Ib42fef14bf4c7b779f44d99711a35c18b32a4c21 --- M Transceiver52M/Makefile.am A Transceiver52M/device/Makefile.am R Transceiver52M/device/radioDevice.h A Transceiver52M/device/uhd/Makefile.am R Transceiver52M/device/uhd/UHDDevice.cpp A Transceiver52M/device/usrp1/Makefile.am R Transceiver52M/device/usrp1/USRPDevice.cpp R Transceiver52M/device/usrp1/USRPDevice.h M configure.ac 9 files changed, 51 insertions(+), 21 deletions(-) Approvals: Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/Transceiver52M/Makefile.am b/Transceiver52M/Makefile.am index 06b2f26..26f7510 100644 --- a/Transceiver52M/Makefile.am +++ b/Transceiver52M/Makefile.am @@ -21,16 +21,10 @@ include $(top_srcdir)/Makefile.common -SUBDIRS = arch +SUBDIRS = arch device -AM_CPPFLAGS = -Wall $(STD_DEFINES_AND_INCLUDES) -I${srcdir}/arch/common +AM_CPPFLAGS = -Wall $(STD_DEFINES_AND_INCLUDES) -I${srcdir}/arch/common -I${srcdir}/device AM_CXXFLAGS = -lpthread $(LIBOSMOCORE_CFLAGS) $(LIBOSMOCTRL_CFLAGS) $(LIBOSMOVTY_CFLAGS) - -if USRP1 -AM_CPPFLAGS += $(USRP_CFLAGS) -else -AM_CPPFLAGS += $(UHD_CFLAGS) -endif rev2dir = $(datadir)/usrp/rev2 rev4dir = $(datadir)/usrp/rev4 @@ -42,7 +36,7 @@ README \ README.Talgorithm -noinst_LTLIBRARIES = libtransceiver.la +noinst_LTLIBRARIES = libtransceiver_common.la COMMON_SOURCES = \ radioInterface.cpp \ @@ -56,33 +50,28 @@ Channelizer.cpp \ Synthesis.cpp -libtransceiver_la_SOURCES = \ +libtransceiver_common_la_SOURCES = \ $(COMMON_SOURCES) \ Resampler.cpp \ radioInterfaceResamp.cpp \ radioInterfaceMulti.cpp - -bin_PROGRAMS = osmo-trx noinst_HEADERS = \ Complex.h \ radioInterface.h \ radioVector.h \ radioClock.h \ - radioDevice.h \ radioBuffer.h \ sigProcLib.h \ signalVector.h \ Transceiver.h \ - USRPDevice.h \ Resampler.h \ ChannelizerBase.h \ Channelizer.h \ Synthesis.h -osmo_trx_SOURCES = osmo-trx.cpp -osmo_trx_LDADD = \ - libtransceiver.la \ +COMMON_LDADD = \ + libtransceiver_common.la \ $(ARCH_LA) \ $(GSM_LA) \ $(COMMON_LA) \ @@ -91,10 +80,19 @@ $(LIBOSMOCTRL_LIBS) \ $(LIBOSMOVTY_LIBS) +bin_PROGRAMS = osmo-trx +osmo_trx_SOURCES = osmo-trx.cpp + if USRP1 -libtransceiver_la_SOURCES += USRPDevice.cpp -osmo_trx_LDADD += $(USRP_LIBS) +osmo_trx_LDADD = \ + $(COMMON_LDADD) \ + $(USRP_LIBS) \ + $(builddir)/device/usrp1/libdevice.la +osmo_trx_CPPFLAGS = $(AM_CPPFLAGS) $(USRP_CFLAGS) else -libtransceiver_la_SOURCES += UHDDevice.cpp -osmo_trx_LDADD += $(UHD_LIBS) +osmo_trx_LDADD = \ + $(COMMON_LDADD) \ + $(UHD_LIBS) \ + $(builddir)/device/uhd/libdevice.la +osmo_trx_CPPFLAGS = $(AM_CPPFLAGS) $(UHD_CFLAGS) endif diff --git a/Transceiver52M/device/Makefile.am b/Transceiver52M/device/Makefile.am new file mode 100644 index 0000000..8575328 --- /dev/null +++ b/Transceiver52M/device/Makefile.am @@ -0,0 +1,11 @@ +include $(top_srcdir)/Makefile.common + +noinst_HEADERS = radioDevice.h + +SUBDIRS = + +if USRP1 +SUBDIRS += usrp1 +else +SUBDIRS += uhd +endif diff --git a/Transceiver52M/radioDevice.h b/Transceiver52M/device/radioDevice.h similarity index 100% rename from Transceiver52M/radioDevice.h rename to Transceiver52M/device/radioDevice.h diff --git a/Transceiver52M/device/uhd/Makefile.am b/Transceiver52M/device/uhd/Makefile.am new file mode 100644 index 0000000..bb34d2f --- /dev/null +++ b/Transceiver52M/device/uhd/Makefile.am @@ -0,0 +1,8 @@ +include $(top_srcdir)/Makefile.common + +AM_CPPFLAGS = -Wall $(STD_DEFINES_AND_INCLUDES) -I${srcdir}/.. +AM_CXXFLAGS = -lpthread $(LIBOSMOCORE_CFLAGS) $(LIBOSMOCTRL_CFLAGS) $(LIBOSMOVTY_CFLAGS) $(UHD_CFLAGS) + +noinst_LTLIBRARIES = libdevice.la + +libdevice_la_SOURCES = UHDDevice.cpp diff --git a/Transceiver52M/UHDDevice.cpp b/Transceiver52M/device/uhd/UHDDevice.cpp similarity index 100% rename from Transceiver52M/UHDDevice.cpp rename to Transceiver52M/device/uhd/UHDDevice.cpp diff --git a/Transceiver52M/device/usrp1/Makefile.am b/Transceiver52M/device/usrp1/Makefile.am new file mode 100644 index 0000000..d99874a --- /dev/null +++ b/Transceiver52M/device/usrp1/Makefile.am @@ -0,0 +1,10 @@ +include $(top_srcdir)/Makefile.common + +AM_CPPFLAGS = -Wall $(STD_DEFINES_AND_INCLUDES) -I${srcdir}/.. +AM_CXXFLAGS = -lpthread $(LIBOSMOCORE_CFLAGS) $(LIBOSMOCTRL_CFLAGS) $(LIBOSMOVTY_CFLAGS) $(USRP_CFLAGS) + +noinst_HEADERS = USRPDevice.h + +noinst_LTLIBRARIES = libdevice.la + +libdevice_la_SOURCES = USRPDevice.cpp diff --git a/Transceiver52M/USRPDevice.cpp b/Transceiver52M/device/usrp1/USRPDevice.cpp similarity index 100% rename from Transceiver52M/USRPDevice.cpp rename to Transceiver52M/device/usrp1/USRPDevice.cpp diff --git a/Transceiver52M/USRPDevice.h b/Transceiver52M/device/usrp1/USRPDevice.h similarity index 100% rename from Transceiver52M/USRPDevice.h rename to Transceiver52M/device/usrp1/USRPDevice.h diff --git a/configure.ac b/configure.ac index 125f41e..ee8077c 100644 --- a/configure.ac +++ b/configure.ac @@ -203,6 +203,9 @@ Transceiver52M/arch/common/Makefile \ Transceiver52M/arch/arm/Makefile \ Transceiver52M/arch/x86/Makefile \ + Transceiver52M/device/Makefile \ + Transceiver52M/device/uhd/Makefile \ + Transceiver52M/device/usrp1/Makefile \ tests/Makefile \ tests/CommonLibs/Makefile \ tests/Transceiver52M/Makefile \ -- To view, visit https://gerrit.osmocom.org/7913 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: Ib42fef14bf4c7b779f44d99711a35c18b32a4c21 Gerrit-PatchSet: 1 Gerrit-Project: osmo-trx Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder From gerrit-no-reply at lists.osmocom.org Wed Apr 25 19:00:53 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Wed, 25 Apr 2018 19:00:53 +0000 Subject: [MERGED] osmo-trx[master]: Move arch specific fiels to arch subdir In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: Move arch specific fiels to arch subdir ...................................................................... Move arch specific fiels to arch subdir Take the chance to update some includes using files available in that subdir to have them ina more uniform way. Change-Id: Ibda3c54fd4dc3f6b845cc373f1a1e6b758c1ea82 --- M Makefile.common M Transceiver52M/Channelizer.cpp M Transceiver52M/ChannelizerBase.cpp M Transceiver52M/Makefile.am M Transceiver52M/Synthesis.cpp A Transceiver52M/arch/Makefile.am R Transceiver52M/arch/arm/Makefile.am R Transceiver52M/arch/arm/convert.c R Transceiver52M/arch/arm/convert_neon.S R Transceiver52M/arch/arm/convolve.c R Transceiver52M/arch/arm/convolve_neon.S R Transceiver52M/arch/arm/mult.c R Transceiver52M/arch/arm/mult_neon.S R Transceiver52M/arch/arm/scale.c R Transceiver52M/arch/arm/scale_neon.S R Transceiver52M/arch/common/Makefile.am R Transceiver52M/arch/common/convert.h R Transceiver52M/arch/common/convert_base.c R Transceiver52M/arch/common/convolve.h R Transceiver52M/arch/common/convolve_base.c R Transceiver52M/arch/common/fft.c R Transceiver52M/arch/common/fft.h R Transceiver52M/arch/common/mult.h R Transceiver52M/arch/common/scale.h R Transceiver52M/arch/x86/Makefile.am R Transceiver52M/arch/x86/convert.c R Transceiver52M/arch/x86/convert_sse_3.c R Transceiver52M/arch/x86/convert_sse_3.h R Transceiver52M/arch/x86/convert_sse_4_1.c R Transceiver52M/arch/x86/convert_sse_4_1.h R Transceiver52M/arch/x86/convolve.c R Transceiver52M/arch/x86/convolve_sse_3.c R Transceiver52M/arch/x86/convolve_sse_3.h M configure.ac M tests/Transceiver52M/Makefile.am M tests/Transceiver52M/convolve_test.c 36 files changed, 26 insertions(+), 22 deletions(-) Approvals: Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/Makefile.common b/Makefile.common index e9820a4..7bda7f6 100644 --- a/Makefile.common +++ b/Makefile.common @@ -33,9 +33,9 @@ GSM_LA = $(top_builddir)/GSM/libGSM.la if ARCH_ARM -ARCH_LA = $(top_builddir)/Transceiver52M/arm/libarch.la +ARCH_LA = $(top_builddir)/Transceiver52M/arch/arm/libarch.la else -ARCH_LA = $(top_builddir)/Transceiver52M/x86/libarch.la +ARCH_LA = $(top_builddir)/Transceiver52M/arch/x86/libarch.la endif MOSTLYCLEANFILES = *~ diff --git a/Transceiver52M/Channelizer.cpp b/Transceiver52M/Channelizer.cpp index 80eab3e..2d817b0 100644 --- a/Transceiver52M/Channelizer.cpp +++ b/Transceiver52M/Channelizer.cpp @@ -28,8 +28,8 @@ #include "Channelizer.h" extern "C" { -#include "common/fft.h" -#include "common/convolve.h" +#include "fft.h" +#include "convolve.h" } static void deinterleave(const float *in, size_t ilen, diff --git a/Transceiver52M/ChannelizerBase.cpp b/Transceiver52M/ChannelizerBase.cpp index 9989940..8223dba 100644 --- a/Transceiver52M/ChannelizerBase.cpp +++ b/Transceiver52M/ChannelizerBase.cpp @@ -29,7 +29,7 @@ #include "ChannelizerBase.h" extern "C" { -#include "common/fft.h" +#include "fft.h" } static float sinc(float x) diff --git a/Transceiver52M/Makefile.am b/Transceiver52M/Makefile.am index 9424b8e..06b2f26 100644 --- a/Transceiver52M/Makefile.am +++ b/Transceiver52M/Makefile.am @@ -21,15 +21,10 @@ include $(top_srcdir)/Makefile.common -AM_CPPFLAGS = -Wall $(STD_DEFINES_AND_INCLUDES) -I${srcdir}/common -AM_CXXFLAGS = -lpthread $(LIBOSMOCORE_CFLAGS) $(LIBOSMOCTRL_CFLAGS) $(LIBOSMOVTY_CFLAGS) +SUBDIRS = arch -SUBDIRS = common -if ARCH_ARM -SUBDIRS += arm -else -SUBDIRS += x86 -endif +AM_CPPFLAGS = -Wall $(STD_DEFINES_AND_INCLUDES) -I${srcdir}/arch/common +AM_CXXFLAGS = -lpthread $(LIBOSMOCORE_CFLAGS) $(LIBOSMOCTRL_CFLAGS) $(LIBOSMOVTY_CFLAGS) if USRP1 AM_CPPFLAGS += $(USRP_CFLAGS) diff --git a/Transceiver52M/Synthesis.cpp b/Transceiver52M/Synthesis.cpp index 22481d5..262c638 100644 --- a/Transceiver52M/Synthesis.cpp +++ b/Transceiver52M/Synthesis.cpp @@ -29,8 +29,8 @@ #include "Synthesis.h" extern "C" { -#include "common/fft.h" -#include "common/convolve.h" +#include "fft.h" +#include "convolve.h" } static void interleave(float **in, size_t ilen, diff --git a/Transceiver52M/arch/Makefile.am b/Transceiver52M/arch/Makefile.am new file mode 100644 index 0000000..14e6c82 --- /dev/null +++ b/Transceiver52M/arch/Makefile.am @@ -0,0 +1,8 @@ +include $(top_srcdir)/Makefile.common + +SUBDIRS = common +if ARCH_ARM +SUBDIRS += arm +else +SUBDIRS += x86 +endif diff --git a/Transceiver52M/arm/Makefile.am b/Transceiver52M/arch/arm/Makefile.am similarity index 80% rename from Transceiver52M/arm/Makefile.am rename to Transceiver52M/arch/arm/Makefile.am index 5e423d0..89ffb32 100644 --- a/Transceiver52M/arm/Makefile.am +++ b/Transceiver52M/arch/arm/Makefile.am @@ -9,7 +9,7 @@ noinst_LTLIBRARIES = libarch.la -libarch_la_LIBADD = $(top_builddir)/Transceiver52M/common/libarch_common.la +libarch_la_LIBADD = $(top_builddir)/Transceiver52M/arch/common/libarch_common.la libarch_la_SOURCES = \ convert.c \ diff --git a/Transceiver52M/arm/convert.c b/Transceiver52M/arch/arm/convert.c similarity index 100% rename from Transceiver52M/arm/convert.c rename to Transceiver52M/arch/arm/convert.c diff --git a/Transceiver52M/arm/convert_neon.S b/Transceiver52M/arch/arm/convert_neon.S similarity index 100% rename from Transceiver52M/arm/convert_neon.S rename to Transceiver52M/arch/arm/convert_neon.S diff --git a/Transceiver52M/arm/convolve.c b/Transceiver52M/arch/arm/convolve.c similarity index 100% rename from Transceiver52M/arm/convolve.c rename to Transceiver52M/arch/arm/convolve.c diff --git a/Transceiver52M/arm/convolve_neon.S b/Transceiver52M/arch/arm/convolve_neon.S similarity index 100% rename from Transceiver52M/arm/convolve_neon.S rename to Transceiver52M/arch/arm/convolve_neon.S diff --git a/Transceiver52M/arm/mult.c b/Transceiver52M/arch/arm/mult.c similarity index 100% rename from Transceiver52M/arm/mult.c rename to Transceiver52M/arch/arm/mult.c diff --git a/Transceiver52M/arm/mult_neon.S b/Transceiver52M/arch/arm/mult_neon.S similarity index 100% rename from Transceiver52M/arm/mult_neon.S rename to Transceiver52M/arch/arm/mult_neon.S diff --git a/Transceiver52M/arm/scale.c b/Transceiver52M/arch/arm/scale.c similarity index 100% rename from Transceiver52M/arm/scale.c rename to Transceiver52M/arch/arm/scale.c diff --git a/Transceiver52M/arm/scale_neon.S b/Transceiver52M/arch/arm/scale_neon.S similarity index 100% rename from Transceiver52M/arm/scale_neon.S rename to Transceiver52M/arch/arm/scale_neon.S diff --git a/Transceiver52M/common/Makefile.am b/Transceiver52M/arch/common/Makefile.am similarity index 100% rename from Transceiver52M/common/Makefile.am rename to Transceiver52M/arch/common/Makefile.am diff --git a/Transceiver52M/common/convert.h b/Transceiver52M/arch/common/convert.h similarity index 100% rename from Transceiver52M/common/convert.h rename to Transceiver52M/arch/common/convert.h diff --git a/Transceiver52M/common/convert_base.c b/Transceiver52M/arch/common/convert_base.c similarity index 100% rename from Transceiver52M/common/convert_base.c rename to Transceiver52M/arch/common/convert_base.c diff --git a/Transceiver52M/common/convolve.h b/Transceiver52M/arch/common/convolve.h similarity index 100% rename from Transceiver52M/common/convolve.h rename to Transceiver52M/arch/common/convolve.h diff --git a/Transceiver52M/common/convolve_base.c b/Transceiver52M/arch/common/convolve_base.c similarity index 100% rename from Transceiver52M/common/convolve_base.c rename to Transceiver52M/arch/common/convolve_base.c diff --git a/Transceiver52M/common/fft.c b/Transceiver52M/arch/common/fft.c similarity index 100% rename from Transceiver52M/common/fft.c rename to Transceiver52M/arch/common/fft.c diff --git a/Transceiver52M/common/fft.h b/Transceiver52M/arch/common/fft.h similarity index 100% rename from Transceiver52M/common/fft.h rename to Transceiver52M/arch/common/fft.h diff --git a/Transceiver52M/common/mult.h b/Transceiver52M/arch/common/mult.h similarity index 100% rename from Transceiver52M/common/mult.h rename to Transceiver52M/arch/common/mult.h diff --git a/Transceiver52M/common/scale.h b/Transceiver52M/arch/common/scale.h similarity index 100% rename from Transceiver52M/common/scale.h rename to Transceiver52M/arch/common/scale.h diff --git a/Transceiver52M/x86/Makefile.am b/Transceiver52M/arch/x86/Makefile.am similarity index 87% rename from Transceiver52M/x86/Makefile.am rename to Transceiver52M/arch/x86/Makefile.am index 76c0bd2..f39dde5 100644 --- a/Transceiver52M/x86/Makefile.am +++ b/Transceiver52M/arch/x86/Makefile.am @@ -4,7 +4,7 @@ noinst_LTLIBRARIES += libarch_sse_3.la noinst_LTLIBRARIES += libarch_sse_4_1.la -libarch_la_LIBADD = $(top_builddir)/Transceiver52M/common/libarch_common.la +libarch_la_LIBADD = $(top_builddir)/Transceiver52M/arch/common/libarch_common.la # SSE 3 specific code if HAVE_SSE3 diff --git a/Transceiver52M/x86/convert.c b/Transceiver52M/arch/x86/convert.c similarity index 100% rename from Transceiver52M/x86/convert.c rename to Transceiver52M/arch/x86/convert.c diff --git a/Transceiver52M/x86/convert_sse_3.c b/Transceiver52M/arch/x86/convert_sse_3.c similarity index 100% rename from Transceiver52M/x86/convert_sse_3.c rename to Transceiver52M/arch/x86/convert_sse_3.c diff --git a/Transceiver52M/x86/convert_sse_3.h b/Transceiver52M/arch/x86/convert_sse_3.h similarity index 100% rename from Transceiver52M/x86/convert_sse_3.h rename to Transceiver52M/arch/x86/convert_sse_3.h diff --git a/Transceiver52M/x86/convert_sse_4_1.c b/Transceiver52M/arch/x86/convert_sse_4_1.c similarity index 100% rename from Transceiver52M/x86/convert_sse_4_1.c rename to Transceiver52M/arch/x86/convert_sse_4_1.c diff --git a/Transceiver52M/x86/convert_sse_4_1.h b/Transceiver52M/arch/x86/convert_sse_4_1.h similarity index 100% rename from Transceiver52M/x86/convert_sse_4_1.h rename to Transceiver52M/arch/x86/convert_sse_4_1.h diff --git a/Transceiver52M/x86/convolve.c b/Transceiver52M/arch/x86/convolve.c similarity index 100% rename from Transceiver52M/x86/convolve.c rename to Transceiver52M/arch/x86/convolve.c diff --git a/Transceiver52M/x86/convolve_sse_3.c b/Transceiver52M/arch/x86/convolve_sse_3.c similarity index 100% rename from Transceiver52M/x86/convolve_sse_3.c rename to Transceiver52M/arch/x86/convolve_sse_3.c diff --git a/Transceiver52M/x86/convolve_sse_3.h b/Transceiver52M/arch/x86/convolve_sse_3.h similarity index 100% rename from Transceiver52M/x86/convolve_sse_3.h rename to Transceiver52M/arch/x86/convolve_sse_3.h diff --git a/configure.ac b/configure.ac index 8271dbf..125f41e 100644 --- a/configure.ac +++ b/configure.ac @@ -199,9 +199,10 @@ CommonLibs/Makefile \ GSM/Makefile \ Transceiver52M/Makefile \ - Transceiver52M/common/Makefile \ - Transceiver52M/arm/Makefile \ - Transceiver52M/x86/Makefile \ + Transceiver52M/arch/Makefile \ + Transceiver52M/arch/common/Makefile \ + Transceiver52M/arch/arm/Makefile \ + Transceiver52M/arch/x86/Makefile \ tests/Makefile \ tests/CommonLibs/Makefile \ tests/Transceiver52M/Makefile \ diff --git a/tests/Transceiver52M/Makefile.am b/tests/Transceiver52M/Makefile.am index 8a05bd8..778d64d 100644 --- a/tests/Transceiver52M/Makefile.am +++ b/tests/Transceiver52M/Makefile.am @@ -1,6 +1,6 @@ include $(top_srcdir)/Makefile.common -AM_CFLAGS = -Wall -I$(top_srcdir)/Transceiver52M $(STD_DEFINES_AND_INCLUDES) -g +AM_CFLAGS = -Wall -I$(top_srcdir)/Transceiver52M -I$(top_srcdir)/Transceiver52M/arch/common $(STD_DEFINES_AND_INCLUDES) -g EXTRA_DIST = convolve_test.ok diff --git a/tests/Transceiver52M/convolve_test.c b/tests/Transceiver52M/convolve_test.c index f4a76c3..88624af 100644 --- a/tests/Transceiver52M/convolve_test.c +++ b/tests/Transceiver52M/convolve_test.c @@ -1,7 +1,7 @@ #include #include #include -#include "../../Transceiver52M/common/convolve.h" +#include "convolve.h" #define TESTVEC_LEN 1000 #define DO_INIT 1 -- To view, visit https://gerrit.osmocom.org/7912 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: Ibda3c54fd4dc3f6b845cc373f1a1e6b758c1ea82 Gerrit-PatchSet: 1 Gerrit-Project: osmo-trx Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder From gerrit-no-reply at lists.osmocom.org Wed Apr 25 19:01:26 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Wed, 25 Apr 2018 19:01:26 +0000 Subject: openbsc[master]: mgcp: switch to new osmux output APIs In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7886 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I189564fc63139c15314db8975afd423c7153ea32 Gerrit-PatchSet: 1 Gerrit-Project: openbsc Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Pablo Neira Ayuso Gerrit-Reviewer: Pau Espin Pedrol Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Wed Apr 25 19:01:35 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Wed, 25 Apr 2018 19:01:35 +0000 Subject: [MERGED] openbsc[master]: mgcp: switch to new osmux output APIs In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: mgcp: switch to new osmux output APIs ...................................................................... mgcp: switch to new osmux output APIs Older ones are being deprecated as they may generate interleaved packets. Depends on libosmo-netif.git Change-Id I4e05ff141eb4041128ae77812bbcfe84ed4c02de. Change-Id: I189564fc63139c15314db8975afd423c7153ea32 --- M openbsc/src/libmgcp/mgcp_osmux.c 1 file changed, 11 insertions(+), 6 deletions(-) Approvals: Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/openbsc/src/libmgcp/mgcp_osmux.c b/openbsc/src/libmgcp/mgcp_osmux.c index c52984b..69124d2 100644 --- a/openbsc/src/libmgcp/mgcp_osmux.c +++ b/openbsc/src/libmgcp/mgcp_osmux.c @@ -267,7 +267,6 @@ { struct msgb *msg; struct osmux_hdr *osmuxh; - struct llist_head list; struct sockaddr_in addr; struct mgcp_config *cfg = ofd->data; uint32_t rem; @@ -297,8 +296,7 @@ endp->osmux.stats.chunks++; rem = msg->len; - osmux_xfrm_output(osmuxh, &endp->osmux.out, &list); - osmux_tx_sched(&list, scheduled_tx_bts_cb, endp); + osmux_xfrm_output_sched(&endp->osmux.out, osmuxh); } out: msgb_free(msg); @@ -359,7 +357,6 @@ { struct msgb *msg; struct osmux_hdr *osmuxh; - struct llist_head list; struct sockaddr_in addr; struct mgcp_config *cfg = ofd->data; uint32_t rem; @@ -389,8 +386,7 @@ endp->osmux.stats.chunks++; rem = msg->len; - osmux_xfrm_output(osmuxh, &endp->osmux.out, &list); - osmux_tx_sched(&list, scheduled_tx_net_cb, endp); + osmux_xfrm_output_sched(&endp->osmux.out, osmuxh); } out: msgb_free(msg); @@ -470,9 +466,13 @@ switch (endp->cfg->role) { case MGCP_BSC_NAT: endp->type = MGCP_OSMUX_BSC_NAT; + osmux_xfrm_output_set_tx_cb(&endp->osmux.out, + scheduled_tx_net_cb, endp); break; case MGCP_BSC: endp->type = MGCP_OSMUX_BSC; + osmux_xfrm_output_set_tx_cb(&endp->osmux.out, + scheduled_tx_bts_cb, endp); break; } endp->osmux.state = OSMUX_STATE_ENABLED; @@ -484,6 +484,11 @@ { LOGP(DMGCP, LOGL_INFO, "Releasing endpoint %u using Osmux CID %u\n", ENDPOINT_NUMBER(endp), endp->osmux.cid); + + /* We are closing, we don't need pending RTP packets to be transmitted */ + osmux_xfrm_output_set_tx_cb(&endp->osmux.out, NULL, NULL); + osmux_xfrm_output_flush(&endp->osmux.out); + osmux_xfrm_input_close_circuit(endp->osmux.in, endp->osmux.cid); endp->osmux.state = OSMUX_STATE_DISABLED; endp->osmux.cid = -1; -- To view, visit https://gerrit.osmocom.org/7886 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: I189564fc63139c15314db8975afd423c7153ea32 Gerrit-PatchSet: 1 Gerrit-Project: openbsc Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Pablo Neira Ayuso Gerrit-Reviewer: Pau Espin Pedrol From gerrit-no-reply at lists.osmocom.org Wed Apr 25 19:08:55 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Wed, 25 Apr 2018 19:08:55 +0000 Subject: osmo-ggsn[master]: lib/tun.c: Generalize tun_{set, add}addr*() functions In-Reply-To: References: Message-ID: Patch Set 1: Code-Review-1 (3 comments) https://gerrit.osmocom.org/#/c/7922/1/lib/tun.c File lib/tun.c: Line 259: memcpy(&dstaddr, dstaddr, sizeof(*dstaddr)); This doesn't make sense. It needs to be removed from here, and done in the new tun_setaddr6 Line 305: return rc; Here you are missing the memcpy. Line 495: return tun_setaddr4(this, addr, dstaddr, netmask); /* TODO dstaddr */ TODO? -- To view, visit https://gerrit.osmocom.org/7922 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I139a950dd81a4b1199953be1608cd109a060f562 Gerrit-PatchSet: 1 Gerrit-Project: osmo-ggsn Gerrit-Branch: master Gerrit-Owner: Harald Welte Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Pau Espin Pedrol Gerrit-HasComments: Yes From gerrit-no-reply at lists.osmocom.org Wed Apr 25 19:11:32 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Wed, 25 Apr 2018 19:11:32 +0000 Subject: osmo-ggsn[master]: lib/tun: split generic network device related stuff to lib/n... In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+1 -- To view, visit https://gerrit.osmocom.org/7923 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Ib021e392637a43d5cf1b40e0d50621fe7e854ba5 Gerrit-PatchSet: 1 Gerrit-Project: osmo-ggsn Gerrit-Branch: master Gerrit-Owner: Harald Welte Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Pau Espin Pedrol Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Wed Apr 25 19:13:24 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Wed, 25 Apr 2018 19:13:24 +0000 Subject: osmo-ggsn[master]: lib/netdev.c: Cosmetic changes (coding style / cleanups) In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+1 -- To view, visit https://gerrit.osmocom.org/7924 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I60cbca616a4f727e2374c52715f9286a0f4c5e4b Gerrit-PatchSet: 1 Gerrit-Project: osmo-ggsn Gerrit-Branch: master Gerrit-Owner: Harald Welte Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Pau Espin Pedrol Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Wed Apr 25 19:16:20 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Wed, 25 Apr 2018 19:16:20 +0000 Subject: osmo-ggsn[master]: ggsn: Don't explicitly use tun_setaddr() API anymore In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+1 -- To view, visit https://gerrit.osmocom.org/7925 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I34de003a1a040254bd38b29e48caea34cb0c88d2 Gerrit-PatchSet: 1 Gerrit-Project: osmo-ggsn Gerrit-Branch: master Gerrit-Owner: Harald Welte Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Pau Espin Pedrol Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Wed Apr 25 19:17:18 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Wed, 25 Apr 2018 19:17:18 +0000 Subject: osmo-ggsn[master]: sgsnemu: Convert from tun_setaddr() to tun_addaddr() In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+1 -- To view, visit https://gerrit.osmocom.org/7926 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Ia301d6a4ee3d02c1af1c85f2fe1041d3013268b0 Gerrit-PatchSet: 1 Gerrit-Project: osmo-ggsn Gerrit-Branch: master Gerrit-Owner: Harald Welte Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Pau Espin Pedrol Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Wed Apr 25 19:17:39 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Wed, 25 Apr 2018 19:17:39 +0000 Subject: osmo-ggsn[master]: lib/tun: Remove tun_setaddr() API, as everyone is using tun_... In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+1 -- To view, visit https://gerrit.osmocom.org/7927 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I02e057d30b6773c17ea6bc31094e53587971e9e7 Gerrit-PatchSet: 1 Gerrit-Project: osmo-ggsn Gerrit-Branch: master Gerrit-Owner: Harald Welte Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Pau Espin Pedrol Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Wed Apr 25 19:27:30 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Wed, 25 Apr 2018 19:27:30 +0000 Subject: osmo-ggsn[master]: Move kernel GTP support from ggsn/ to lib/ In-Reply-To: References: Message-ID: Patch Set 1: (2 comments) https://gerrit.osmocom.org/#/c/7928/1/lib/tun.h File lib/tun.h: Line 45: extern int tun_new(struct tun_t **tun, const char *dev_name, int fd0, int fd1u, bool use_kernel); I'd put the use_kernel parameter before the fd* ones, as it states whether the they are actually used or not (they are only used when using kernel right?) https://gerrit.osmocom.org/#/c/7928/1/sgsnemu/Makefile.am File sgsnemu/Makefile.am: Line 10: AM_CFLAGS += -DGTP_KERNEL $(LIBGTPNL_CFLAGS) Why not using ENABLE_GTP_KERNEL in the source code directly? -- To view, visit https://gerrit.osmocom.org/7928 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Ic53a971136edd0d8871fbd6746d7b0090ce3a188 Gerrit-PatchSet: 1 Gerrit-Project: osmo-ggsn Gerrit-Branch: master Gerrit-Owner: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Pau Espin Pedrol Gerrit-HasComments: Yes From gerrit-no-reply at lists.osmocom.org Wed Apr 25 19:28:11 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Wed, 25 Apr 2018 19:28:11 +0000 Subject: osmo-ggsn[master]: lib/tun.c: Generalize tun_{set, add}addr*() functions In-Reply-To: References: Message-ID: Patch Set 1: Code-Review-1 (2 comments) https://gerrit.osmocom.org/#/c/7922/1/lib/tun.c File lib/tun.c: Line 259: memcpy(&dstaddr, dstaddr, sizeof(*dstaddr)); > This doesn't make sense. It needs to be removed from here, and done in the agreed. Line 495: return tun_setaddr4(this, addr, dstaddr, netmask); /* TODO dstaddr */ > TODO? this is just moving around existing coe from line 419..422 before -- To view, visit https://gerrit.osmocom.org/7922 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I139a950dd81a4b1199953be1608cd109a060f562 Gerrit-PatchSet: 1 Gerrit-Project: osmo-ggsn Gerrit-Branch: master Gerrit-Owner: Harald Welte Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Pau Espin Pedrol Gerrit-HasComments: Yes From gerrit-no-reply at lists.osmocom.org Wed Apr 25 19:34:16 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Wed, 25 Apr 2018 19:34:16 +0000 Subject: [PATCH] osmo-trx[master]: Logger: Print correct source file and line number Message-ID: Review at https://gerrit.osmocom.org/7929 Logger: Print correct source file and line number Before this commit, always Logger.cpp:53 was being printed. Change-Id: Ie5c64b4961c7c41d23484784a93eda5e08331f08 --- M CommonLibs/Logger.cpp M CommonLibs/Logger.h M tests/CommonLibs/LogTest.cpp 3 files changed, 13 insertions(+), 10 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-trx refs/changes/29/7929/1 diff --git a/CommonLibs/Logger.cpp b/CommonLibs/Logger.cpp index ac3de42..393d882 100644 --- a/CommonLibs/Logger.cpp +++ b/CommonLibs/Logger.cpp @@ -50,7 +50,7 @@ ScopedLock lock(gLogToLock); // The COUT() macro prevents messages from stomping each other but adds uninteresting thread numbers, // so just use std::cout. - LOGP(mCategory, mPriority, fmt, mStream.str().c_str()); + LOGPSRC(mCategory, mPriority, filename, line, fmt, mStream.str().c_str()); } ostringstream& Log::get() diff --git a/CommonLibs/Logger.h b/CommonLibs/Logger.h index 00efcd7..5b0b05c 100644 --- a/CommonLibs/Logger.h +++ b/CommonLibs/Logger.h @@ -48,10 +48,10 @@ #endif #define LOG(level) \ - Log(DMAIN, LOGL_##level).get() << "[tid=" << pthread_self() << "] " + Log(DMAIN, LOGL_##level, __BASE_FILE__, __LINE__).get() << "[tid=" << pthread_self() << "] " #define LOGC(category, level) \ - Log(category, LOGL_##level).get() << "[tid=" << pthread_self() << "] " + Log(category, LOGL_##level, __BASE_FILE__, __LINE__).get() << "[tid=" << pthread_self() << "] " /** A C++ stream-based thread-safe logger. @@ -67,11 +67,14 @@ std::ostringstream mStream; ///< This is where we buffer up the log entry. int mCategory; ///< Priority of current report. int mPriority; ///< Category of current report. + const char *filename; ///< Source File Name of current report. + int line; ///< Line number in source file of current report. public: - Log(int wCategory, int wPriority) - : mCategory(wCategory), mPriority(wPriority) + Log(int wCategory, int wPriority, const char* filename, int line) + : mCategory(wCategory), mPriority(wPriority), + filename(filename), line(line) { } // Most of the work is in the destructor. diff --git a/tests/CommonLibs/LogTest.cpp b/tests/CommonLibs/LogTest.cpp index 5167a62..5e51ce7 100644 --- a/tests/CommonLibs/LogTest.cpp +++ b/tests/CommonLibs/LogTest.cpp @@ -61,9 +61,9 @@ log_set_print_filename(osmo_stderr_target, 0); log_set_print_level(osmo_stderr_target, 1); - Log(MYCAT, LOGL_FATAL).get() << "testing the logger."; - Log(MYCAT, LOGL_ERROR).get() << "testing the logger."; - Log(MYCAT, LOGL_NOTICE).get() << "testing the logger."; - Log(MYCAT, LOGL_INFO).get() << "testing the logger."; - Log(MYCAT, LOGL_DEBUG).get() << "testing the logger."; + Log(MYCAT, LOGL_FATAL, __BASE_FILE__, __LINE__).get() << "testing the logger."; + Log(MYCAT, LOGL_ERROR, __BASE_FILE__, __LINE__).get() << "testing the logger."; + Log(MYCAT, LOGL_NOTICE, __BASE_FILE__, __LINE__).get() << "testing the logger."; + Log(MYCAT, LOGL_INFO, __BASE_FILE__, __LINE__).get() << "testing the logger."; + Log(MYCAT, LOGL_DEBUG, __BASE_FILE__, __LINE__).get() << "testing the logger."; } -- To view, visit https://gerrit.osmocom.org/7929 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Ie5c64b4961c7c41d23484784a93eda5e08331f08 Gerrit-PatchSet: 1 Gerrit-Project: osmo-trx Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol From gerrit-no-reply at lists.osmocom.org Wed Apr 25 19:34:17 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Wed, 25 Apr 2018 19:34:17 +0000 Subject: [PATCH] osmo-trx[master]: Transceiver: log timing info of stale bursts Message-ID: Review at https://gerrit.osmocom.org/7930 Transceiver: log timing info of stale bursts Change-Id: I043fd8199253bdf3912c7aec2ccf98f8cbe54251 --- M Transceiver52M/Transceiver.cpp 1 file changed, 2 insertions(+), 1 deletion(-) git pull ssh://gerrit.osmocom.org:29418/osmo-trx refs/changes/30/7930/1 diff --git a/Transceiver52M/Transceiver.cpp b/Transceiver52M/Transceiver.cpp index be6f526..a1ebb30 100644 --- a/Transceiver52M/Transceiver.cpp +++ b/Transceiver52M/Transceiver.cpp @@ -373,7 +373,8 @@ state = &mStates[i]; while ((burst = mTxPriorityQueues[i].getStaleBurst(nowTime))) { - LOG(NOTICE) << "dumping STALE burst in TRX->USRP interface"; + LOG(NOTICE) << "chan " << i << " dumping STALE burst in TRX->USRP interface (" + << burst->getTime() <<" vs " << nowTime << "), retrans=" << state->mRetrans; if (state->mRetrans) updateFillerTable(i, burst); delete burst; -- To view, visit https://gerrit.osmocom.org/7930 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I043fd8199253bdf3912c7aec2ccf98f8cbe54251 Gerrit-PatchSet: 1 Gerrit-Project: osmo-trx Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol From gerrit-no-reply at lists.osmocom.org Wed Apr 25 19:45:04 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Wed, 25 Apr 2018 19:45:04 +0000 Subject: [PATCH] osmo-ggsn[master]: lib/tun.c: Generalize tun_{set, add}addr*() functions In-Reply-To: References: Message-ID: Hello Pau Espin Pedrol, Jenkins Builder, I'd like you to reexamine a change. Please visit https://gerrit.osmocom.org/7922 to look at the new patch set (#2). lib/tun.c: Generalize tun_{set,add}addr*() functions There's nothing really tun-specific about the adding and removing of addresses to network devices. Let's generalize the related code. Change-Id: I139a950dd81a4b1199953be1608cd109a060f562 --- M lib/tun.c 1 file changed, 98 insertions(+), 51 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-ggsn refs/changes/22/7922/2 diff --git a/lib/tun.c b/lib/tun.c index 14e4a58..d2a80be 100644 --- a/lib/tun.c +++ b/lib/tun.c @@ -102,8 +102,8 @@ return 0; } -static int tun_setaddr4(struct tun_t *this, struct in_addr *addr, - struct in_addr *dstaddr, struct in_addr *netmask) +static int netdev_setaddr4(const char *devname, struct in_addr *addr, + struct in_addr *dstaddr, struct in_addr *netmask) { struct ifreq ifr; int fd; @@ -122,7 +122,7 @@ sizeof(struct sockaddr_in); #endif - strncpy(ifr.ifr_name, this->devname, IFNAMSIZ); + strncpy(ifr.ifr_name, devname, IFNAMSIZ); ifr.ifr_name[IFNAMSIZ - 1] = 0; /* Make sure to terminate */ /* Create a channel to the NET kernel. */ @@ -132,7 +132,6 @@ } if (addr) { /* Set the interface address */ - this->addr.s_addr = addr->s_addr; memcpy(&((struct sockaddr_in *)&ifr.ifr_addr)->sin_addr, addr, sizeof(*addr)); if (ioctl(fd, SIOCSIFADDR, (void *)&ifr) < 0) { @@ -149,7 +148,6 @@ } if (dstaddr) { /* Set the destination address */ - this->dstaddr.s_addr = dstaddr->s_addr; memcpy(&((struct sockaddr_in *)&ifr.ifr_dstaddr)->sin_addr, dstaddr, sizeof(*dstaddr)); if (ioctl(fd, SIOCSIFDSTADDR, (caddr_t) & ifr) < 0) { @@ -161,7 +159,6 @@ } if (netmask) { /* Set the netmask */ - this->netmask.s_addr = netmask->s_addr; #if defined(__linux__) memcpy(&((struct sockaddr_in *)&ifr.ifr_netmask)->sin_addr, netmask, sizeof(*netmask)); @@ -180,25 +177,45 @@ } close(fd); - this->addrs++; /* On linux the route to the interface is set automatically on FreeBSD we have to do this manually */ /* TODO: How does it work on Solaris? */ - netdev_sifflags(this->devname, IFF_UP | IFF_RUNNING); + netdev_sifflags(devname, IFF_UP | IFF_RUNNING); #if defined(__FreeBSD__) || defined (__APPLE__) - tun_addroute(this, dstaddr, addr, &this->netmask); - this->routes = 1; + netdev_addroute(dstaddr, addr, &this->netmask); #endif return 0; } -static int tun_setaddr6(struct tun_t *this, struct in6_addr *addr, struct in6_addr *dstaddr, - size_t prefixlen) +static int tun_setaddr4(struct tun_t *this, struct in_addr *addr, + struct in_addr *dstaddr, struct in_addr *netmask) +{ + int rc; + rc = netdev_setaddr4(this->devname, addr, dstaddr, netmask); + if (rc < 0) + return rc; + + if (addr) + this->addr.s_addr = addr->s_addr; + if (dstaddr) + this->dstaddr.s_addr = dstaddr->s_addr; + if (netmask) + this->netmask.s_addr = netmask->s_addr; + this->addrs++; +#if defined(__FreeBSD__) || defined (__APPLE__) + this->routes = 1; +#endif + + return rc; +} + +static int netdev_setaddr6(const char *devname, struct in6_addr *addr, struct in6_addr *dstaddr, + size_t prefixlen) { struct in6_ifreq ifr; int fd; @@ -207,13 +224,13 @@ #if defined(__linux__) ifr.ifr6_prefixlen = prefixlen; - ifr.ifr6_ifindex = if_nametoindex(this->devname); + ifr.ifr6_ifindex = if_nametoindex(devname); if (ifr.ifr6_ifindex == 0) { - SYS_ERR(DTUN, LOGL_ERROR, 0, "Error getting ifindex for %s\n", this->devname); + SYS_ERR(DTUN, LOGL_ERROR, 0, "Error getting ifindex for %s\n", devname); return -1; } #elif defined(__FreeBSD__) || defined (__APPLE__) - strncpy(ifr.ifr_name, this->devname, IFNAMSIZ); + strncpy(ifr.ifr_name, devname, IFNAMSIZ); #endif /* Create a channel to the NET kernel */ @@ -239,7 +256,6 @@ #if 0 /* FIXME: looks like this is not possible/necessary for IPv6? */ if (dstaddr) { - memcpy(&this->dstaddr, dstaddr, sizeof(*dstaddr)); memcpy(&ifr.ifr6_addr, dstaddr, sizeof(*dstaddr)); if (ioctl(fd, SIOCSIFDSTADDR, (caddr_t *) &ifr) < 0) { SYS_ERR(DTUN, LOGL_ERROR, "ioctl(SIOCSIFDSTADDR) failed"); @@ -263,22 +279,37 @@ #endif close(fd); - this->addrs++; /* On linux the route to the interface is set automatically on FreeBSD we have to do this manually */ /* TODO: How does it work on Solaris? */ - netdev_sifflags(this->devname, IFF_UP | IFF_RUNNING); + netdev_sifflags(devname, IFF_UP | IFF_RUNNING); #if 0 /* FIXME */ //#if defined(__FreeBSD__) || defined (__APPLE__) netdev_addroute6(dstaddr, addr, prefixlen); - this->routes = 1; #endif return 0; +} + +static int tun_setaddr6(struct tun_t *this, struct in6_addr *addr, struct in6_addr *dstaddr, + size_t prefixlen) +{ + int rc; + rc = netdev_setaddr6(this->devname, addr, dstaddr, prefixlen); + if (rc < 0) + return rc; + if (dstaddr) + memcpy(&this->dstaddr, dstaddr, sizeof(*dstaddr)); + this->addrs++; +#if defined(__FreeBSD__) || defined (__APPLE__) + this->routes = 1; +#endif + + return rc; } int tun_setaddr(struct tun_t *this, struct in46_addr *addr, struct in46_addr *dstaddr, size_t prefixlen) @@ -295,9 +326,8 @@ } } -static int tun_addaddr4(struct tun_t *this, - struct in_addr *addr, - struct in_addr *dstaddr, struct in_addr *netmask) +static int netdev_addaddr4(const char *devname, struct in_addr *addr, + struct in_addr *dstaddr, struct in_addr *netmask) { #if defined(__linux__) @@ -316,9 +346,6 @@ struct iovec iov; struct msghdr msg; - if (!this->addrs) /* Use ioctl for first addr to make ping work */ - return tun_setaddr4(this, addr, dstaddr, netmask); - memset(&req, 0, sizeof(req)); req.n.nlmsg_len = NLMSG_LENGTH(sizeof(struct ifaddrmsg)); req.n.nlmsg_flags = NLM_F_REQUEST | NLM_F_CREATE; @@ -327,9 +354,9 @@ req.i.ifa_prefixlen = 32; /* 32 FOR IPv4 */ req.i.ifa_flags = 0; req.i.ifa_scope = RT_SCOPE_HOST; /* TODO or 0 */ - req.i.ifa_index = if_nametoindex(this->devname); + req.i.ifa_index = if_nametoindex(devname); if (!req.i.ifa_index) { - SYS_ERR(DTUN, LOGL_ERROR, errno, "Unable to get ifindex for %s", this->devname); + SYS_ERR(DTUN, LOGL_ERROR, errno, "Unable to get ifindex for %s", devname); return -1; } @@ -400,7 +427,7 @@ return -1; } - status = netdev_sifflags(this->devname, IFF_UP | IFF_RUNNING); + status = netdev_sifflags(devname, IFF_UP | IFF_RUNNING); if (status == -1) { close(fd); return -1; @@ -408,7 +435,6 @@ close(fd); - this->addrs++; return 0; #elif defined (__FreeBSD__) || defined (__APPLE__) @@ -416,14 +442,10 @@ int fd; struct ifaliasreq areq; - /* TODO: Is this needed on FreeBSD? */ - if (!this->addrs) /* Use ioctl for first addr to make ping work */ - return tun_setaddr4(this, addr, dstaddr, netmask); /* TODO dstaddr */ - memset(&areq, 0, sizeof(areq)); /* Set up interface name */ - strncpy(areq.ifra_name, this->devname, IFNAMSIZ); + strncpy(areq.ifra_name, devname, IFNAMSIZ); areq.ifra_name[IFNAMSIZ - 1] = 0; /* Make sure to terminate */ ((struct sockaddr_in *)&areq.ifra_addr)->sin_family = AF_INET; @@ -458,16 +480,32 @@ } close(fd); - this->addrs++; return 0; #endif } -static int tun_addaddr6(struct tun_t *this, - struct in6_addr *addr, - struct in6_addr *dstaddr, int prefixlen) +static int tun_addaddr4(struct tun_t *this, struct in_addr *addr, + struct in_addr *dstaddr, struct in_addr *netmask) +{ + int rc; + + /* TODO: Is this needed on FreeBSD? */ + if (!this->addrs) /* Use ioctl for first addr to make ping work */ + return tun_setaddr4(this, addr, dstaddr, netmask); /* TODO dstaddr */ + + rc = netdev_addaddr4(this->devname, addr, dstaddr, netmask); + if (rc < 0) + return rc; + + this->addrs++; + + return rc; +} + +static int netdev_addaddr6(const char *devname, struct in6_addr *addr, + struct in6_addr *dstaddr, int prefixlen) { #if defined(__linux__) @@ -486,9 +524,6 @@ struct iovec iov; struct msghdr msg; - if (!this->addrs) /* Use ioctl for first addr to make ping work */ - return tun_setaddr6(this, addr, dstaddr, prefixlen); - memset(&req, 0, sizeof(req)); req.n.nlmsg_len = NLMSG_LENGTH(sizeof(struct ifaddrmsg)); req.n.nlmsg_flags = NLM_F_REQUEST | NLM_F_CREATE; @@ -497,9 +532,9 @@ req.i.ifa_prefixlen = 64; /* 64 FOR IPv6 */ req.i.ifa_flags = 0; req.i.ifa_scope = RT_SCOPE_HOST; /* TODO or 0 */ - req.i.ifa_index = if_nametoindex(this->devname); + req.i.ifa_index = if_nametoindex(devname); if (!req.i.ifa_index) { - SYS_ERR(DTUN, LOGL_ERROR, errno, "Unable to get ifindex for %s", this->devname); + SYS_ERR(DTUN, LOGL_ERROR, errno, "Unable to get ifindex for %s", devname); return -1; } @@ -570,7 +605,7 @@ return -1; } - status = netdev_sifflags(this->devname, IFF_UP | IFF_RUNNING); + status = netdev_sifflags(devname, IFF_UP | IFF_RUNNING); if (status == -1) { close(fd); return -1; @@ -578,7 +613,6 @@ close(fd); - this->addrs++; return 0; #elif defined (__FreeBSD__) || defined (__APPLE__) @@ -586,14 +620,10 @@ int fd; struct ifaliasreq areq; - /* TODO: Is this needed on FreeBSD? */ - if (!this->addrs) /* Use ioctl for first addr to make ping work */ - return tun_setaddr6(this, addr, dstaddr, netmask); /* TODO dstaddr */ - memset(&areq, 0, sizeof(areq)); /* Set up interface name */ - strncpy(areq.ifra_name, this->devname, IFNAMSIZ); + strncpy(areq.ifra_name, devname, IFNAMSIZ); areq.ifra_name[IFNAMSIZ - 1] = 0; /* Make sure to terminate */ ((struct sockaddr_in6 *)&areq.ifra_addr)->sin6_family = AF_INET6; @@ -623,13 +653,30 @@ } close(fd); - this->addrs++; return 0; #endif } +static int tun_addaddr6(struct tun_t *this, + struct in6_addr *addr, + struct in6_addr *dstaddr, int prefixlen) +{ + int rc; + + if (!this->addrs) /* Use ioctl for first addr to make ping work */ + return tun_setaddr6(this, addr, dstaddr, prefixlen); + + rc = netdev_addaddr6(this->devname, addr, dstaddr, prefixlen); + if (rc < 0) + return rc; + + this->addrs++; + + return rc; +} + int tun_addaddr(struct tun_t *this, struct in46_addr *addr, struct in46_addr *dstaddr, size_t prefixlen) { struct in_addr netmask; -- To view, visit https://gerrit.osmocom.org/7922 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newpatchset Gerrit-Change-Id: I139a950dd81a4b1199953be1608cd109a060f562 Gerrit-PatchSet: 2 Gerrit-Project: osmo-ggsn Gerrit-Branch: master Gerrit-Owner: Harald Welte Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Pau Espin Pedrol From gerrit-no-reply at lists.osmocom.org Wed Apr 25 19:45:04 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Wed, 25 Apr 2018 19:45:04 +0000 Subject: [PATCH] osmo-ggsn[master]: lib/tun: split generic network device related stuff to lib/n... In-Reply-To: References: Message-ID: Hello Pau Espin Pedrol, Jenkins Builder, I'd like you to reexamine a change. Please visit https://gerrit.osmocom.org/7923 to look at the new patch set (#2). lib/tun: split generic network device related stuff to lib/netdev Change-Id: Ib021e392637a43d5cf1b40e0d50621fe7e854ba5 --- M lib/Makefile.am A lib/netdev.c A lib/netdev.h M lib/tun.c M lib/tun.h 5 files changed, 842 insertions(+), 755 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-ggsn refs/changes/23/7923/2 diff --git a/lib/Makefile.am b/lib/Makefile.am index 632990c..55348ad 100644 --- a/lib/Makefile.am +++ b/lib/Makefile.am @@ -1,7 +1,7 @@ noinst_LIBRARIES = libmisc.a -noinst_HEADERS = gnugetopt.h ippool.h lookup.h syserr.h tun.h in46_addr.h +noinst_HEADERS = gnugetopt.h ippool.h lookup.h syserr.h tun.h in46_addr.h netdev.h AM_CFLAGS = -O2 -fno-builtin -Wall -DSBINDIR='"$(sbindir)"' -ggdb $(LIBOSMOCORE_CFLAGS) -libmisc_a_SOURCES = getopt1.c getopt.c ippool.c lookup.c tun.c debug.c in46_addr.c +libmisc_a_SOURCES = getopt1.c getopt.c ippool.c lookup.c tun.c debug.c in46_addr.c netdev.c diff --git a/lib/netdev.c b/lib/netdev.c new file mode 100644 index 0000000..eff808d --- /dev/null +++ b/lib/netdev.c @@ -0,0 +1,766 @@ +/* + * TUN interface functions. + * Copyright (C) 2002, 2003, 2004 Mondru AB. + * Copyright (C) 2017-2018 by Harald Welte + * + * The contents of this file may be used under the terms of the GNU + * General Public License Version 2, provided that the above copyright + * notice and this permission notice is included in all copies or + * substantial portions of the software. + * + */ + +/* + * netdev.c: Contains generic network device related functionality. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#if defined(__linux__) +#include +#include + +#elif defined (__FreeBSD__) +#include +#include + +#elif defined (__APPLE__) +#include + +#else +#error "Unknown platform!" +#endif + +#include "netdev.h" +#include "syserr.h" + +#if defined(__linux__) + +#include + +static int netdev_nlattr(struct nlmsghdr *n, int nsize, int type, void *d, int dlen) +{ + int len = RTA_LENGTH(dlen); + int alen = NLMSG_ALIGN(n->nlmsg_len); + struct rtattr *rta = (struct rtattr *)(((void *)n) + alen); + if (alen + len > nsize) + return -1; + rta->rta_len = len; + rta->rta_type = type; + memcpy(RTA_DATA(rta), d, dlen); + n->nlmsg_len = alen + len; + return 0; +} +#endif + +static int netdev_sifflags(const char *devname, int flags) +{ + struct ifreq ifr; + int fd; + + memset(&ifr, '\0', sizeof(ifr)); + ifr.ifr_flags = flags; + strncpy(ifr.ifr_name, devname, IFNAMSIZ); + ifr.ifr_name[IFNAMSIZ - 1] = 0; /* Make sure to terminate */ + if ((fd = socket(AF_INET, SOCK_DGRAM, 0)) < 0) { + SYS_ERR(DTUN, LOGL_ERROR, errno, "socket() failed"); + return -1; + } + if (ioctl(fd, SIOCSIFFLAGS, &ifr)) { + SYS_ERR(DTUN, LOGL_ERROR, errno, + "ioctl(SIOCSIFFLAGS) failed"); + close(fd); + return -1; + } + close(fd); + return 0; +} + +int netdev_setaddr4(const char *devname, struct in_addr *addr, + struct in_addr *dstaddr, struct in_addr *netmask) +{ + struct ifreq ifr; + int fd; + + memset(&ifr, '\0', sizeof(ifr)); + ifr.ifr_addr.sa_family = AF_INET; + ifr.ifr_dstaddr.sa_family = AF_INET; + +#if defined(__linux__) + ifr.ifr_netmask.sa_family = AF_INET; + +#elif defined(__FreeBSD__) || defined (__APPLE__) + ((struct sockaddr_in *)&ifr.ifr_addr)->sin_len = + sizeof(struct sockaddr_in); + ((struct sockaddr_in *)&ifr.ifr_dstaddr)->sin_len = + sizeof(struct sockaddr_in); +#endif + + strncpy(ifr.ifr_name, devname, IFNAMSIZ); + ifr.ifr_name[IFNAMSIZ - 1] = 0; /* Make sure to terminate */ + + /* Create a channel to the NET kernel. */ + if ((fd = socket(AF_INET, SOCK_DGRAM, 0)) < 0) { + SYS_ERR(DTUN, LOGL_ERROR, errno, "socket() failed"); + return -1; + } + + if (addr) { /* Set the interface address */ + memcpy(&((struct sockaddr_in *)&ifr.ifr_addr)->sin_addr, addr, + sizeof(*addr)); + if (ioctl(fd, SIOCSIFADDR, (void *)&ifr) < 0) { + if (errno != EEXIST) { + SYS_ERR(DTUN, LOGL_ERROR, errno, + "ioctl(SIOCSIFADDR) failed"); + } else { + SYS_ERR(DTUN, LOGL_NOTICE, errno, + "ioctl(SIOCSIFADDR): Address already exists"); + } + close(fd); + return -1; + } + } + + if (dstaddr) { /* Set the destination address */ + memcpy(&((struct sockaddr_in *)&ifr.ifr_dstaddr)->sin_addr, + dstaddr, sizeof(*dstaddr)); + if (ioctl(fd, SIOCSIFDSTADDR, (caddr_t) & ifr) < 0) { + SYS_ERR(DTUN, LOGL_ERROR, errno, + "ioctl(SIOCSIFDSTADDR) failed"); + close(fd); + return -1; + } + } + + if (netmask) { /* Set the netmask */ +#if defined(__linux__) + memcpy(&((struct sockaddr_in *)&ifr.ifr_netmask)->sin_addr, + netmask, sizeof(*netmask)); + +#elif defined(__FreeBSD__) || defined (__APPLE__) + ((struct sockaddr_in *)&ifr.ifr_addr)->sin_addr.s_addr = + netmask->s_addr; +#endif + + if (ioctl(fd, SIOCSIFNETMASK, (void *)&ifr) < 0) { + SYS_ERR(DTUN, LOGL_ERROR, errno, + "ioctl(SIOCSIFNETMASK) failed"); + close(fd); + return -1; + } + } + + close(fd); + + /* On linux the route to the interface is set automatically + on FreeBSD we have to do this manually */ + + /* TODO: How does it work on Solaris? */ + + netdev_sifflags(devname, IFF_UP | IFF_RUNNING); + +#if defined(__FreeBSD__) || defined (__APPLE__) + netdev_addroute(dstaddr, addr, &this->netmask); +#endif + + return 0; +} + +int netdev_setaddr6(const char *devname, struct in6_addr *addr, struct in6_addr *dstaddr, + size_t prefixlen) +{ + struct in6_ifreq ifr; + int fd; + + memset(&ifr, 0, sizeof(ifr)); + +#if defined(__linux__) + ifr.ifr6_prefixlen = prefixlen; + ifr.ifr6_ifindex = if_nametoindex(devname); + if (ifr.ifr6_ifindex == 0) { + SYS_ERR(DTUN, LOGL_ERROR, 0, "Error getting ifindex for %s\n", devname); + return -1; + } +#elif defined(__FreeBSD__) || defined (__APPLE__) + strncpy(ifr.ifr_name, devname, IFNAMSIZ); +#endif + + /* Create a channel to the NET kernel */ + if ((fd = socket(AF_INET6, SOCK_DGRAM, 0)) < 0) { + SYS_ERR(DTUN, LOGL_ERROR, 0, "socket() failed"); + return -1; + } + +#if defined(__linux__) + if (addr) { + memcpy(&ifr.ifr6_addr, addr, sizeof(*addr)); + if (ioctl(fd, SIOCSIFADDR, (void *) &ifr) < 0) { + if (errno != EEXIST) { + SYS_ERR(DTUN, LOGL_ERROR, 0, "ioctl(SIOCSIFADDR) failed"); + } else { + SYS_ERR(DTUN, LOGL_NOTICE, 0, "ioctl(SIOCSIFADDR): Address already exists"); + } + close(fd); + return -1; + } + } + +#if 0 + /* FIXME: looks like this is not possible/necessary for IPv6? */ + if (dstaddr) { + memcpy(&ifr.ifr6_addr, dstaddr, sizeof(*dstaddr)); + if (ioctl(fd, SIOCSIFDSTADDR, (caddr_t *) &ifr) < 0) { + SYS_ERR(DTUN, LOGL_ERROR, "ioctl(SIOCSIFDSTADDR) failed"); + close(fd); + return -1; + } + } +#endif + +#elif defined(__FreeBSD__) || defined (__APPLE__) + if (addr) + memcpy(&ifr.ifr_ifru.ifru_addr, addr, sizeof(ifr.ifr_ifru.ifru_addr)); + if (dstaddr) + memcpy(&ifr.ifr_ifru.ifru_dstaddr, dstaddr, sizeof(ifr.ifr_ifru.ifru_dstaddr)); + + if (ioctl(fd, SIOCSIFADDR_IN6, (struct ifreq *)&ifr) < 0) { + SYS_ERR(DTUN, LOGL_ERROR, 0, "ioctl(SIOCSIFADDR_IN6) failed"); + close(fd); + return -1; + } +#endif + + close(fd); + + /* On linux the route to the interface is set automatically + on FreeBSD we have to do this manually */ + + /* TODO: How does it work on Solaris? */ + + netdev_sifflags(devname, IFF_UP | IFF_RUNNING); + +#if 0 /* FIXME */ +//#if defined(__FreeBSD__) || defined (__APPLE__) + netdev_addroute6(dstaddr, addr, prefixlen); +#endif + + return 0; +} + +int netdev_addaddr4(const char *devname, struct in_addr *addr, + struct in_addr *dstaddr, struct in_addr *netmask) +{ + +#if defined(__linux__) + struct { + struct nlmsghdr n; + struct ifaddrmsg i; + char buf[TUN_NLBUFSIZE]; + } req; + + struct sockaddr_nl local; + socklen_t addr_len; + int fd; + int status; + + struct sockaddr_nl nladdr; + struct iovec iov; + struct msghdr msg; + + memset(&req, 0, sizeof(req)); + req.n.nlmsg_len = NLMSG_LENGTH(sizeof(struct ifaddrmsg)); + req.n.nlmsg_flags = NLM_F_REQUEST | NLM_F_CREATE; + req.n.nlmsg_type = RTM_NEWADDR; + req.i.ifa_family = AF_INET; + req.i.ifa_prefixlen = 32; /* 32 FOR IPv4 */ + req.i.ifa_flags = 0; + req.i.ifa_scope = RT_SCOPE_HOST; /* TODO or 0 */ + req.i.ifa_index = if_nametoindex(devname); + if (!req.i.ifa_index) { + SYS_ERR(DTUN, LOGL_ERROR, errno, "Unable to get ifindex for %s", devname); + return -1; + } + + netdev_nlattr(&req.n, sizeof(req), IFA_ADDRESS, addr, sizeof(*addr)); + if (dstaddr) + netdev_nlattr(&req.n, sizeof(req), IFA_LOCAL, dstaddr, sizeof(*dstaddr)); + + if ((fd = socket(AF_NETLINK, SOCK_RAW, NETLINK_ROUTE)) < 0) { + SYS_ERR(DTUN, LOGL_ERROR, errno, "socket() failed"); + return -1; + } + + memset(&local, 0, sizeof(local)); + local.nl_family = AF_NETLINK; + local.nl_groups = 0; + + if (bind(fd, (struct sockaddr *)&local, sizeof(local)) < 0) { + SYS_ERR(DTUN, LOGL_ERROR, errno, "bind() failed"); + close(fd); + return -1; + } + + addr_len = sizeof(local); + if (getsockname(fd, (struct sockaddr *)&local, &addr_len) < 0) { + SYS_ERR(DTUN, LOGL_ERROR, errno, + "getsockname() failed"); + close(fd); + return -1; + } + + if (addr_len != sizeof(local)) { + SYS_ERR(DTUN, LOGL_ERROR, 0, + "Wrong address length %d", addr_len); + close(fd); + return -1; + } + + if (local.nl_family != AF_NETLINK) { + SYS_ERR(DTUN, LOGL_ERROR, 0, + "Wrong address family %d", local.nl_family); + close(fd); + return -1; + } + + iov.iov_base = (void *)&req.n; + iov.iov_len = req.n.nlmsg_len; + + msg.msg_name = (void *)&nladdr; + msg.msg_namelen = sizeof(nladdr); + msg.msg_iov = &iov; + msg.msg_iovlen = 1; + msg.msg_control = NULL; + msg.msg_controllen = 0; + msg.msg_flags = 0; + + memset(&nladdr, 0, sizeof(nladdr)); + nladdr.nl_family = AF_NETLINK; + nladdr.nl_pid = 0; + nladdr.nl_groups = 0; + + req.n.nlmsg_seq = 0; + req.n.nlmsg_flags |= NLM_F_ACK; + + status = sendmsg(fd, &msg, 0); + if (status != req.n.nlmsg_len) { + SYS_ERR(DTUN, LOGL_ERROR, errno, "sendmsg() failed, returned %d", status); + close(fd); + return -1; + } + + status = netdev_sifflags(devname, IFF_UP | IFF_RUNNING); + if (status == -1) { + close(fd); + return -1; + } + + + close(fd); + return 0; + +#elif defined (__FreeBSD__) || defined (__APPLE__) + + int fd; + struct ifaliasreq areq; + + memset(&areq, 0, sizeof(areq)); + + /* Set up interface name */ + strncpy(areq.ifra_name, devname, IFNAMSIZ); + areq.ifra_name[IFNAMSIZ - 1] = 0; /* Make sure to terminate */ + + ((struct sockaddr_in *)&areq.ifra_addr)->sin_family = AF_INET; + ((struct sockaddr_in *)&areq.ifra_addr)->sin_len = + sizeof(areq.ifra_addr); + ((struct sockaddr_in *)&areq.ifra_addr)->sin_addr.s_addr = addr->s_addr; + + ((struct sockaddr_in *)&areq.ifra_mask)->sin_family = AF_INET; + ((struct sockaddr_in *)&areq.ifra_mask)->sin_len = + sizeof(areq.ifra_mask); + ((struct sockaddr_in *)&areq.ifra_mask)->sin_addr.s_addr = + netmask->s_addr; + + /* For some reason FreeBSD uses ifra_broadcast for specifying dstaddr */ + ((struct sockaddr_in *)&areq.ifra_broadaddr)->sin_family = AF_INET; + ((struct sockaddr_in *)&areq.ifra_broadaddr)->sin_len = + sizeof(areq.ifra_broadaddr); + ((struct sockaddr_in *)&areq.ifra_broadaddr)->sin_addr.s_addr = + dstaddr->s_addr; + + /* Create a channel to the NET kernel. */ + if ((fd = socket(AF_INET, SOCK_DGRAM, 0)) < 0) { + SYS_ERR(DTUN, LOGL_ERROR, errno, "socket() failed"); + return -1; + } + + if (ioctl(fd, SIOCAIFADDR, (void *)&areq) < 0) { + SYS_ERR(DTUN, LOGL_ERROR, errno, + "ioctl(SIOCAIFADDR) failed"); + close(fd); + return -1; + } + + close(fd); + return 0; + +#endif + +} + +int netdev_addaddr6(const char *devname, struct in6_addr *addr, + struct in6_addr *dstaddr, int prefixlen) +{ + +#if defined(__linux__) + struct { + struct nlmsghdr n; + struct ifaddrmsg i; + char buf[TUN_NLBUFSIZE]; + } req; + + struct sockaddr_nl local; + socklen_t addr_len; + int fd; + int status; + + struct sockaddr_nl nladdr; + struct iovec iov; + struct msghdr msg; + + memset(&req, 0, sizeof(req)); + req.n.nlmsg_len = NLMSG_LENGTH(sizeof(struct ifaddrmsg)); + req.n.nlmsg_flags = NLM_F_REQUEST | NLM_F_CREATE; + req.n.nlmsg_type = RTM_NEWADDR; + req.i.ifa_family = AF_INET6; + req.i.ifa_prefixlen = 64; /* 64 FOR IPv6 */ + req.i.ifa_flags = 0; + req.i.ifa_scope = RT_SCOPE_HOST; /* TODO or 0 */ + req.i.ifa_index = if_nametoindex(devname); + if (!req.i.ifa_index) { + SYS_ERR(DTUN, LOGL_ERROR, errno, "Unable to get ifindex for %s", devname); + return -1; + } + + netdev_nlattr(&req.n, sizeof(req), IFA_ADDRESS, addr, sizeof(*addr)); + if (dstaddr) + netdev_nlattr(&req.n, sizeof(req), IFA_LOCAL, dstaddr, sizeof(*dstaddr)); + + if ((fd = socket(AF_NETLINK, SOCK_RAW, NETLINK_ROUTE)) < 0) { + SYS_ERR(DTUN, LOGL_ERROR, errno, "socket() failed"); + return -1; + } + + memset(&local, 0, sizeof(local)); + local.nl_family = AF_NETLINK; + local.nl_groups = 0; + + if (bind(fd, (struct sockaddr *)&local, sizeof(local)) < 0) { + SYS_ERR(DTUN, LOGL_ERROR, errno, "bind() failed"); + close(fd); + return -1; + } + + addr_len = sizeof(local); + if (getsockname(fd, (struct sockaddr *)&local, &addr_len) < 0) { + SYS_ERR(DTUN, LOGL_ERROR, errno, + "getsockname() failed"); + close(fd); + return -1; + } + + if (addr_len != sizeof(local)) { + SYS_ERR(DTUN, LOGL_ERROR, 0, + "Wrong address length %d", addr_len); + close(fd); + return -1; + } + + if (local.nl_family != AF_NETLINK) { + SYS_ERR(DTUN, LOGL_ERROR, 0, + "Wrong address family %d", local.nl_family); + close(fd); + return -1; + } + + iov.iov_base = (void *)&req.n; + iov.iov_len = req.n.nlmsg_len; + + msg.msg_name = (void *)&nladdr; + msg.msg_namelen = sizeof(nladdr); + msg.msg_iov = &iov; + msg.msg_iovlen = 1; + msg.msg_control = NULL; + msg.msg_controllen = 0; + msg.msg_flags = 0; + + memset(&nladdr, 0, sizeof(nladdr)); + nladdr.nl_family = AF_NETLINK; + nladdr.nl_pid = 0; + nladdr.nl_groups = 0; + + req.n.nlmsg_seq = 0; + req.n.nlmsg_flags |= NLM_F_ACK; + + status = sendmsg(fd, &msg, 0); + if (status != req.n.nlmsg_len) { + SYS_ERR(DTUN, LOGL_ERROR, errno, "sendmsg() failed, returned %d", status); + close(fd); + return -1; + } + + status = netdev_sifflags(devname, IFF_UP | IFF_RUNNING); + if (status == -1) { + close(fd); + return -1; + } + + + close(fd); + return 0; + +#elif defined (__FreeBSD__) || defined (__APPLE__) + + int fd; + struct ifaliasreq areq; + + memset(&areq, 0, sizeof(areq)); + + /* Set up interface name */ + strncpy(areq.ifra_name, devname, IFNAMSIZ); + areq.ifra_name[IFNAMSIZ - 1] = 0; /* Make sure to terminate */ + + ((struct sockaddr_in6 *)&areq.ifra_addr)->sin6_family = AF_INET6; + ((struct sockaddr_in6 *)&areq.ifra_addr)->sin6_len = sizeof(areq.ifra_addr); + ((struct sockaddr_in6 *)&areq.ifra_addr)->sin6_addr.s6_addr = addr->s6_addr; + + ((struct sockaddr_in6 *)&areq.ifra_mask)->sin6_family = AF_INET6; + ((struct sockaddr_in6 *)&areq.ifra_mask)->sin6_len = sizeof(areq.ifra_mask); + ((struct sockaddr_in6 *)&areq.ifra_mask)->sin6_addr.s6_addr = netmask->s6_addr; + + /* For some reason FreeBSD uses ifra_broadcast for specifying dstaddr */ + ((struct sockaddr_in6 *)&areq.ifra_broadaddr)->sin6_family = AF_INET6; + ((struct sockaddr_in6 *)&areq.ifra_broadaddr)->sin6_len = sizeof(areq.ifra_broadaddr); + ((struct sockaddr_in6 *)&areq.ifra_broadaddr)->sin6_addr.s6_addr = dstaddr->s6_addr; + + /* Create a channel to the NET kernel. */ + if ((fd = socket(AF_INET, SOCK_DGRAM, 0)) < 0) { + SYS_ERR(DTUN, LOGL_ERROR, errno, "socket() failed"); + return -1; + } + + if (ioctl(fd, SIOCAIFADDR, (void *)&areq) < 0) { + SYS_ERR(DTUN, LOGL_ERROR, errno, + "ioctl(SIOCAIFADDR) failed"); + close(fd); + return -1; + } + + close(fd); + return 0; + +#endif + +} + +static int netdev_route(struct in_addr *dst, struct in_addr *gateway, struct in_addr *mask, int delete) +{ + +#if defined(__linux__) + + struct rtentry r; + int fd; + + memset(&r, '\0', sizeof(r)); + r.rt_flags = RTF_UP | RTF_GATEWAY; /* RTF_HOST not set */ + + /* Create a channel to the NET kernel. */ + if ((fd = socket(AF_INET, SOCK_DGRAM, 0)) < 0) { + SYS_ERR(DTUN, LOGL_ERROR, errno, "socket() failed"); + return -1; + } + + r.rt_dst.sa_family = AF_INET; + r.rt_gateway.sa_family = AF_INET; + r.rt_genmask.sa_family = AF_INET; + memcpy(&((struct sockaddr_in *)&r.rt_dst)->sin_addr, dst, sizeof(*dst)); + memcpy(&((struct sockaddr_in *)&r.rt_gateway)->sin_addr, gateway, + sizeof(*gateway)); + memcpy(&((struct sockaddr_in *)&r.rt_genmask)->sin_addr, mask, + sizeof(*mask)); + + if (delete) { + if (ioctl(fd, SIOCDELRT, (void *)&r) < 0) { + SYS_ERR(DTUN, LOGL_ERROR, errno, + "ioctl(SIOCDELRT) failed"); + close(fd); + return -1; + } + } else { + if (ioctl(fd, SIOCADDRT, (void *)&r) < 0) { + SYS_ERR(DTUN, LOGL_ERROR, errno, + "ioctl(SIOCADDRT) failed"); + close(fd); + return -1; + } + } + close(fd); + return 0; + +#elif defined(__FreeBSD__) || defined (__APPLE__) + + struct { + struct rt_msghdr rt; + struct sockaddr_in dst; + struct sockaddr_in gate; + struct sockaddr_in mask; + } req; + + int fd; + struct rt_msghdr *rtm; + + if ((fd = socket(AF_ROUTE, SOCK_RAW, 0)) == -1) { + SYS_ERR(DTUN, LOGL_ERROR, errno, "socket() failed"); + return -1; + } + + memset(&req, 0x00, sizeof(req)); + + rtm = &req.rt; + + rtm->rtm_msglen = sizeof(req); + rtm->rtm_version = RTM_VERSION; + if (delete) { + rtm->rtm_type = RTM_DELETE; + } else { + rtm->rtm_type = RTM_ADD; + } + rtm->rtm_flags = RTF_UP | RTF_GATEWAY | RTF_STATIC; /* TODO */ + rtm->rtm_addrs = RTA_DST | RTA_GATEWAY | RTA_NETMASK; + rtm->rtm_pid = getpid(); + rtm->rtm_seq = 0044; /* TODO */ + + req.dst.sin_family = AF_INET; + req.dst.sin_len = sizeof(req.dst); + req.mask.sin_family = AF_INET; + req.mask.sin_len = sizeof(req.mask); + req.gate.sin_family = AF_INET; + req.gate.sin_len = sizeof(req.gate); + + req.dst.sin_addr.s_addr = dst->s_addr; + req.mask.sin_addr.s_addr = mask->s_addr; + req.gate.sin_addr.s_addr = gateway->s_addr; + + if (write(fd, rtm, rtm->rtm_msglen) < 0) { + SYS_ERR(DTUN, LOGL_ERROR, errno, "write() failed"); + close(fd); + return -1; + } + close(fd); + return 0; +#endif + +} + +int netdev_addroute(struct in_addr *dst, struct in_addr *gateway, struct in_addr *mask) +{ + return netdev_route(dst, gateway, mask, 0); +} + +int netdev_delroute(struct in_addr *dst, struct in_addr *gateway, struct in_addr *mask) +{ + return netdev_route(dst, gateway, mask, 1); +} + +#include + +/*! Obtain the local address of a network device + * \param[in] devname Target device owning the IP + * \param[out] prefix_list List of prefix structures to fill with each IPv4/6 and prefix length found. + * \param[in] prefix_size Amount of elements allowed to be fill in the prefix_list array. + * \param[in] flags Specify which kind of IP to look for: IP_TYPE_IPv4, IP_TYPE_IPv6_LINK, IP_TYPE_IPv6_NONLINK + * \returns The number of ips found following the criteria specified by flags, -1 on error. + * + * This function will fill prefix_list with up to prefix_size IPs following the + * criteria specified by flags parameter. It returns the number of IPs matching + * the criteria. As a result, the number returned can be bigger than + * prefix_size. It can be used with prefix_size=0 to get an estimate of the size + * needed for prefix_list. + */ +int netdev_ip_local_get(const char *devname, struct in46_prefix *prefix_list, size_t prefix_size, int flags) +{ + static const uint8_t ll_prefix[] = { 0xfe,0x80, 0,0, 0,0, 0,0 }; + struct ifaddrs *ifaddr, *ifa; + struct in46_addr netmask; + size_t count = 0; + bool is_ipv6_ll; + + if (getifaddrs(&ifaddr) == -1) { + return -1; + } + + for (ifa = ifaddr; ifa != NULL; ifa = ifa->ifa_next) { + if (ifa->ifa_addr == NULL) + continue; + + if (strcmp(ifa->ifa_name, devname)) + continue; + + if (ifa->ifa_addr->sa_family == AF_INET && (flags & IP_TYPE_IPv4)) { + struct sockaddr_in *sin4 = (struct sockaddr_in *) ifa->ifa_addr; + struct sockaddr_in *netmask4 = (struct sockaddr_in *) ifa->ifa_netmask; + + if (count < prefix_size) { + netmask.len = sizeof(netmask4->sin_addr); + netmask.v4 = netmask4->sin_addr; + prefix_list[count].addr.len = sizeof(sin4->sin_addr); + prefix_list[count].addr.v4 = sin4->sin_addr; + prefix_list[count].prefixlen = in46a_netmasklen(&netmask); + } + count++; + } + + if (ifa->ifa_addr->sa_family == AF_INET6 && (flags & IP_TYPE_IPv6)) { + struct sockaddr_in6 *sin6 = (struct sockaddr_in6 *) ifa->ifa_addr; + struct sockaddr_in6 *netmask6 = (struct sockaddr_in6 *) ifa->ifa_netmask; + + is_ipv6_ll = !memcmp(sin6->sin6_addr.s6_addr, ll_prefix, sizeof(ll_prefix)); + if ((flags & IP_TYPE_IPv6_NONLINK) && is_ipv6_ll) + continue; + if ((flags & IP_TYPE_IPv6_LINK) && !is_ipv6_ll) + continue; + + if (count < prefix_size) { + netmask.len = sizeof(netmask6->sin6_addr); + netmask.v6 = netmask6->sin6_addr; + prefix_list[count].addr.len = sizeof(sin6->sin6_addr); + prefix_list[count].addr.v6 = sin6->sin6_addr; + prefix_list[count].prefixlen = in46a_netmasklen(&netmask); + } + count++; + } + } + + freeifaddrs(ifaddr); + return count; +} diff --git a/lib/netdev.h b/lib/netdev.h new file mode 100644 index 0000000..74c42da --- /dev/null +++ b/lib/netdev.h @@ -0,0 +1,72 @@ +#pragma once +/* + * TUN interface functions. + * Copyright (C) 2002, 2003 Mondru AB. + * Copyright (C) 2017-2018 by Harald Welte + * + * The contents of this file may be used under the terms of the GNU + * General Public License Version 2, provided that the above copyright + * notice and this permission notice is included in all copies or + * substantial portions of the software. + * + */ + +#include + +#include "../lib/in46_addr.h" + +#define TUN_NLBUFSIZE 1024 + +#include "config.h" + +/* ipv6 ip type flags for tun_ipv6_local_get() */ +enum { + IP_TYPE_IPv4 = 1, + IP_TYPE_IPv6_LINK = 2, + IP_TYPE_IPv6_NONLINK = 4, +}; +#define IP_TYPE_IPv6 (IP_TYPE_IPv6_LINK | IP_TYPE_IPv6_NONLINK) + + +#ifndef HAVE_IPHDR +struct iphdr + { +#if __BYTE_ORDER == __LITTLE_ENDIAN + unsigned int ihl:4; + unsigned int version:4; +#elif __BYTE_ORDER == __BIG_ENDIAN + unsigned int version:4; + unsigned int ihl:4; +#else +# error "Please fix " +#endif + u_int8_t tos; + u_int16_t tot_len; + u_int16_t id; + u_int16_t frag_off; + u_int8_t ttl; + u_int8_t protocol; + u_int16_t check; + u_int32_t saddr; + u_int32_t daddr; + /*The options start here. */ + }; +#endif /* !HAVE_IPHDR */ + +extern int netdev_setaddr4(const char *devname, struct in_addr *addr, + struct in_addr *dstaddr, struct in_addr *netmask); + +extern int netdev_setaddr6(const char *devname, struct in6_addr *addr, struct in6_addr *dstaddr, + size_t prefixlen); + +extern int netdev_addaddr4(const char *devname, struct in_addr *addr, + struct in_addr *dstaddr, struct in_addr *netmask); + +extern int netdev_addaddr6(const char *devname, struct in6_addr *addr, + struct in6_addr *dstaddr, int prefixlen); + +extern int netdev_addroute(struct in_addr *dst, struct in_addr *gateway, struct in_addr *mask); +extern int netdev_delroute(struct in_addr *dst, struct in_addr *gateway, struct in_addr *mask); + +extern int netdev_ip_local_get(const char *devname, struct in46_prefix *prefix_list, + size_t prefix_size, int flags); diff --git a/lib/tun.c b/lib/tun.c index d2a80be..122d38c 100644 --- a/lib/tun.c +++ b/lib/tun.c @@ -42,8 +42,6 @@ #if defined(__linux__) #include -#include -#include #elif defined (__FreeBSD__) #include @@ -59,138 +57,6 @@ #include "tun.h" #include "syserr.h" - -#if defined(__linux__) - -#include - -static int tun_nlattr(struct nlmsghdr *n, int nsize, int type, void *d, int dlen) -{ - int len = RTA_LENGTH(dlen); - int alen = NLMSG_ALIGN(n->nlmsg_len); - struct rtattr *rta = (struct rtattr *)(((void *)n) + alen); - if (alen + len > nsize) - return -1; - rta->rta_len = len; - rta->rta_type = type; - memcpy(RTA_DATA(rta), d, dlen); - n->nlmsg_len = alen + len; - return 0; -} -#endif - -static int netdev_sifflags(const char *devname, int flags) -{ - struct ifreq ifr; - int fd; - - memset(&ifr, '\0', sizeof(ifr)); - ifr.ifr_flags = flags; - strncpy(ifr.ifr_name, devname, IFNAMSIZ); - ifr.ifr_name[IFNAMSIZ - 1] = 0; /* Make sure to terminate */ - if ((fd = socket(AF_INET, SOCK_DGRAM, 0)) < 0) { - SYS_ERR(DTUN, LOGL_ERROR, errno, "socket() failed"); - return -1; - } - if (ioctl(fd, SIOCSIFFLAGS, &ifr)) { - SYS_ERR(DTUN, LOGL_ERROR, errno, - "ioctl(SIOCSIFFLAGS) failed"); - close(fd); - return -1; - } - close(fd); - return 0; -} - -static int netdev_setaddr4(const char *devname, struct in_addr *addr, - struct in_addr *dstaddr, struct in_addr *netmask) -{ - struct ifreq ifr; - int fd; - - memset(&ifr, '\0', sizeof(ifr)); - ifr.ifr_addr.sa_family = AF_INET; - ifr.ifr_dstaddr.sa_family = AF_INET; - -#if defined(__linux__) - ifr.ifr_netmask.sa_family = AF_INET; - -#elif defined(__FreeBSD__) || defined (__APPLE__) - ((struct sockaddr_in *)&ifr.ifr_addr)->sin_len = - sizeof(struct sockaddr_in); - ((struct sockaddr_in *)&ifr.ifr_dstaddr)->sin_len = - sizeof(struct sockaddr_in); -#endif - - strncpy(ifr.ifr_name, devname, IFNAMSIZ); - ifr.ifr_name[IFNAMSIZ - 1] = 0; /* Make sure to terminate */ - - /* Create a channel to the NET kernel. */ - if ((fd = socket(AF_INET, SOCK_DGRAM, 0)) < 0) { - SYS_ERR(DTUN, LOGL_ERROR, errno, "socket() failed"); - return -1; - } - - if (addr) { /* Set the interface address */ - memcpy(&((struct sockaddr_in *)&ifr.ifr_addr)->sin_addr, addr, - sizeof(*addr)); - if (ioctl(fd, SIOCSIFADDR, (void *)&ifr) < 0) { - if (errno != EEXIST) { - SYS_ERR(DTUN, LOGL_ERROR, errno, - "ioctl(SIOCSIFADDR) failed"); - } else { - SYS_ERR(DTUN, LOGL_NOTICE, errno, - "ioctl(SIOCSIFADDR): Address already exists"); - } - close(fd); - return -1; - } - } - - if (dstaddr) { /* Set the destination address */ - memcpy(&((struct sockaddr_in *)&ifr.ifr_dstaddr)->sin_addr, - dstaddr, sizeof(*dstaddr)); - if (ioctl(fd, SIOCSIFDSTADDR, (caddr_t) & ifr) < 0) { - SYS_ERR(DTUN, LOGL_ERROR, errno, - "ioctl(SIOCSIFDSTADDR) failed"); - close(fd); - return -1; - } - } - - if (netmask) { /* Set the netmask */ -#if defined(__linux__) - memcpy(&((struct sockaddr_in *)&ifr.ifr_netmask)->sin_addr, - netmask, sizeof(*netmask)); - -#elif defined(__FreeBSD__) || defined (__APPLE__) - ((struct sockaddr_in *)&ifr.ifr_addr)->sin_addr.s_addr = - netmask->s_addr; -#endif - - if (ioctl(fd, SIOCSIFNETMASK, (void *)&ifr) < 0) { - SYS_ERR(DTUN, LOGL_ERROR, errno, - "ioctl(SIOCSIFNETMASK) failed"); - close(fd); - return -1; - } - } - - close(fd); - - /* On linux the route to the interface is set automatically - on FreeBSD we have to do this manually */ - - /* TODO: How does it work on Solaris? */ - - netdev_sifflags(devname, IFF_UP | IFF_RUNNING); - -#if defined(__FreeBSD__) || defined (__APPLE__) - netdev_addroute(dstaddr, addr, &this->netmask); -#endif - - return 0; -} static int tun_setaddr4(struct tun_t *this, struct in_addr *addr, struct in_addr *dstaddr, struct in_addr *netmask) @@ -212,87 +78,6 @@ #endif return rc; -} - -static int netdev_setaddr6(const char *devname, struct in6_addr *addr, struct in6_addr *dstaddr, - size_t prefixlen) -{ - struct in6_ifreq ifr; - int fd; - - memset(&ifr, 0, sizeof(ifr)); - -#if defined(__linux__) - ifr.ifr6_prefixlen = prefixlen; - ifr.ifr6_ifindex = if_nametoindex(devname); - if (ifr.ifr6_ifindex == 0) { - SYS_ERR(DTUN, LOGL_ERROR, 0, "Error getting ifindex for %s\n", devname); - return -1; - } -#elif defined(__FreeBSD__) || defined (__APPLE__) - strncpy(ifr.ifr_name, devname, IFNAMSIZ); -#endif - - /* Create a channel to the NET kernel */ - if ((fd = socket(AF_INET6, SOCK_DGRAM, 0)) < 0) { - SYS_ERR(DTUN, LOGL_ERROR, 0, "socket() failed"); - return -1; - } - -#if defined(__linux__) - if (addr) { - memcpy(&ifr.ifr6_addr, addr, sizeof(*addr)); - if (ioctl(fd, SIOCSIFADDR, (void *) &ifr) < 0) { - if (errno != EEXIST) { - SYS_ERR(DTUN, LOGL_ERROR, 0, "ioctl(SIOCSIFADDR) failed"); - } else { - SYS_ERR(DTUN, LOGL_NOTICE, 0, "ioctl(SIOCSIFADDR): Address already exists"); - } - close(fd); - return -1; - } - } - -#if 0 - /* FIXME: looks like this is not possible/necessary for IPv6? */ - if (dstaddr) { - memcpy(&ifr.ifr6_addr, dstaddr, sizeof(*dstaddr)); - if (ioctl(fd, SIOCSIFDSTADDR, (caddr_t *) &ifr) < 0) { - SYS_ERR(DTUN, LOGL_ERROR, "ioctl(SIOCSIFDSTADDR) failed"); - close(fd); - return -1; - } - } -#endif - -#elif defined(__FreeBSD__) || defined (__APPLE__) - if (addr) - memcpy(&ifr.ifr_ifru.ifru_addr, addr, sizeof(ifr.ifr_ifru.ifru_addr)); - if (dstaddr) - memcpy(&ifr.ifr_ifru.ifru_dstaddr, dstaddr, sizeof(ifr.ifr_ifru.ifru_dstaddr)); - - if (ioctl(fd, SIOCSIFADDR_IN6, (struct ifreq *)&ifr) < 0) { - SYS_ERR(DTUN, LOGL_ERROR, 0, "ioctl(SIOCSIFADDR_IN6) failed"); - close(fd); - return -1; - } -#endif - - close(fd); - - /* On linux the route to the interface is set automatically - on FreeBSD we have to do this manually */ - - /* TODO: How does it work on Solaris? */ - - netdev_sifflags(devname, IFF_UP | IFF_RUNNING); - -#if 0 /* FIXME */ -//#if defined(__FreeBSD__) || defined (__APPLE__) - netdev_addroute6(dstaddr, addr, prefixlen); -#endif - - return 0; } static int tun_setaddr6(struct tun_t *this, struct in6_addr *addr, struct in6_addr *dstaddr, @@ -326,166 +111,6 @@ } } -static int netdev_addaddr4(const char *devname, struct in_addr *addr, - struct in_addr *dstaddr, struct in_addr *netmask) -{ - -#if defined(__linux__) - struct { - struct nlmsghdr n; - struct ifaddrmsg i; - char buf[TUN_NLBUFSIZE]; - } req; - - struct sockaddr_nl local; - socklen_t addr_len; - int fd; - int status; - - struct sockaddr_nl nladdr; - struct iovec iov; - struct msghdr msg; - - memset(&req, 0, sizeof(req)); - req.n.nlmsg_len = NLMSG_LENGTH(sizeof(struct ifaddrmsg)); - req.n.nlmsg_flags = NLM_F_REQUEST | NLM_F_CREATE; - req.n.nlmsg_type = RTM_NEWADDR; - req.i.ifa_family = AF_INET; - req.i.ifa_prefixlen = 32; /* 32 FOR IPv4 */ - req.i.ifa_flags = 0; - req.i.ifa_scope = RT_SCOPE_HOST; /* TODO or 0 */ - req.i.ifa_index = if_nametoindex(devname); - if (!req.i.ifa_index) { - SYS_ERR(DTUN, LOGL_ERROR, errno, "Unable to get ifindex for %s", devname); - return -1; - } - - tun_nlattr(&req.n, sizeof(req), IFA_ADDRESS, addr, sizeof(*addr)); - if (dstaddr) - tun_nlattr(&req.n, sizeof(req), IFA_LOCAL, dstaddr, sizeof(*dstaddr)); - - if ((fd = socket(AF_NETLINK, SOCK_RAW, NETLINK_ROUTE)) < 0) { - SYS_ERR(DTUN, LOGL_ERROR, errno, "socket() failed"); - return -1; - } - - memset(&local, 0, sizeof(local)); - local.nl_family = AF_NETLINK; - local.nl_groups = 0; - - if (bind(fd, (struct sockaddr *)&local, sizeof(local)) < 0) { - SYS_ERR(DTUN, LOGL_ERROR, errno, "bind() failed"); - close(fd); - return -1; - } - - addr_len = sizeof(local); - if (getsockname(fd, (struct sockaddr *)&local, &addr_len) < 0) { - SYS_ERR(DTUN, LOGL_ERROR, errno, - "getsockname() failed"); - close(fd); - return -1; - } - - if (addr_len != sizeof(local)) { - SYS_ERR(DTUN, LOGL_ERROR, 0, - "Wrong address length %d", addr_len); - close(fd); - return -1; - } - - if (local.nl_family != AF_NETLINK) { - SYS_ERR(DTUN, LOGL_ERROR, 0, - "Wrong address family %d", local.nl_family); - close(fd); - return -1; - } - - iov.iov_base = (void *)&req.n; - iov.iov_len = req.n.nlmsg_len; - - msg.msg_name = (void *)&nladdr; - msg.msg_namelen = sizeof(nladdr); - msg.msg_iov = &iov; - msg.msg_iovlen = 1; - msg.msg_control = NULL; - msg.msg_controllen = 0; - msg.msg_flags = 0; - - memset(&nladdr, 0, sizeof(nladdr)); - nladdr.nl_family = AF_NETLINK; - nladdr.nl_pid = 0; - nladdr.nl_groups = 0; - - req.n.nlmsg_seq = 0; - req.n.nlmsg_flags |= NLM_F_ACK; - - status = sendmsg(fd, &msg, 0); - if (status != req.n.nlmsg_len) { - SYS_ERR(DTUN, LOGL_ERROR, errno, "sendmsg() failed, returned %d", status); - close(fd); - return -1; - } - - status = netdev_sifflags(devname, IFF_UP | IFF_RUNNING); - if (status == -1) { - close(fd); - return -1; - } - - - close(fd); - return 0; - -#elif defined (__FreeBSD__) || defined (__APPLE__) - - int fd; - struct ifaliasreq areq; - - memset(&areq, 0, sizeof(areq)); - - /* Set up interface name */ - strncpy(areq.ifra_name, devname, IFNAMSIZ); - areq.ifra_name[IFNAMSIZ - 1] = 0; /* Make sure to terminate */ - - ((struct sockaddr_in *)&areq.ifra_addr)->sin_family = AF_INET; - ((struct sockaddr_in *)&areq.ifra_addr)->sin_len = - sizeof(areq.ifra_addr); - ((struct sockaddr_in *)&areq.ifra_addr)->sin_addr.s_addr = addr->s_addr; - - ((struct sockaddr_in *)&areq.ifra_mask)->sin_family = AF_INET; - ((struct sockaddr_in *)&areq.ifra_mask)->sin_len = - sizeof(areq.ifra_mask); - ((struct sockaddr_in *)&areq.ifra_mask)->sin_addr.s_addr = - netmask->s_addr; - - /* For some reason FreeBSD uses ifra_broadcast for specifying dstaddr */ - ((struct sockaddr_in *)&areq.ifra_broadaddr)->sin_family = AF_INET; - ((struct sockaddr_in *)&areq.ifra_broadaddr)->sin_len = - sizeof(areq.ifra_broadaddr); - ((struct sockaddr_in *)&areq.ifra_broadaddr)->sin_addr.s_addr = - dstaddr->s_addr; - - /* Create a channel to the NET kernel. */ - if ((fd = socket(AF_INET, SOCK_DGRAM, 0)) < 0) { - SYS_ERR(DTUN, LOGL_ERROR, errno, "socket() failed"); - return -1; - } - - if (ioctl(fd, SIOCAIFADDR, (void *)&areq) < 0) { - SYS_ERR(DTUN, LOGL_ERROR, errno, - "ioctl(SIOCAIFADDR) failed"); - close(fd); - return -1; - } - - close(fd); - return 0; - -#endif - -} - static int tun_addaddr4(struct tun_t *this, struct in_addr *addr, struct in_addr *dstaddr, struct in_addr *netmask) { @@ -502,161 +127,6 @@ this->addrs++; return rc; -} - -static int netdev_addaddr6(const char *devname, struct in6_addr *addr, - struct in6_addr *dstaddr, int prefixlen) -{ - -#if defined(__linux__) - struct { - struct nlmsghdr n; - struct ifaddrmsg i; - char buf[TUN_NLBUFSIZE]; - } req; - - struct sockaddr_nl local; - socklen_t addr_len; - int fd; - int status; - - struct sockaddr_nl nladdr; - struct iovec iov; - struct msghdr msg; - - memset(&req, 0, sizeof(req)); - req.n.nlmsg_len = NLMSG_LENGTH(sizeof(struct ifaddrmsg)); - req.n.nlmsg_flags = NLM_F_REQUEST | NLM_F_CREATE; - req.n.nlmsg_type = RTM_NEWADDR; - req.i.ifa_family = AF_INET6; - req.i.ifa_prefixlen = 64; /* 64 FOR IPv6 */ - req.i.ifa_flags = 0; - req.i.ifa_scope = RT_SCOPE_HOST; /* TODO or 0 */ - req.i.ifa_index = if_nametoindex(devname); - if (!req.i.ifa_index) { - SYS_ERR(DTUN, LOGL_ERROR, errno, "Unable to get ifindex for %s", devname); - return -1; - } - - tun_nlattr(&req.n, sizeof(req), IFA_ADDRESS, addr, sizeof(*addr)); - if (dstaddr) - tun_nlattr(&req.n, sizeof(req), IFA_LOCAL, dstaddr, sizeof(*dstaddr)); - - if ((fd = socket(AF_NETLINK, SOCK_RAW, NETLINK_ROUTE)) < 0) { - SYS_ERR(DTUN, LOGL_ERROR, errno, "socket() failed"); - return -1; - } - - memset(&local, 0, sizeof(local)); - local.nl_family = AF_NETLINK; - local.nl_groups = 0; - - if (bind(fd, (struct sockaddr *)&local, sizeof(local)) < 0) { - SYS_ERR(DTUN, LOGL_ERROR, errno, "bind() failed"); - close(fd); - return -1; - } - - addr_len = sizeof(local); - if (getsockname(fd, (struct sockaddr *)&local, &addr_len) < 0) { - SYS_ERR(DTUN, LOGL_ERROR, errno, - "getsockname() failed"); - close(fd); - return -1; - } - - if (addr_len != sizeof(local)) { - SYS_ERR(DTUN, LOGL_ERROR, 0, - "Wrong address length %d", addr_len); - close(fd); - return -1; - } - - if (local.nl_family != AF_NETLINK) { - SYS_ERR(DTUN, LOGL_ERROR, 0, - "Wrong address family %d", local.nl_family); - close(fd); - return -1; - } - - iov.iov_base = (void *)&req.n; - iov.iov_len = req.n.nlmsg_len; - - msg.msg_name = (void *)&nladdr; - msg.msg_namelen = sizeof(nladdr); - msg.msg_iov = &iov; - msg.msg_iovlen = 1; - msg.msg_control = NULL; - msg.msg_controllen = 0; - msg.msg_flags = 0; - - memset(&nladdr, 0, sizeof(nladdr)); - nladdr.nl_family = AF_NETLINK; - nladdr.nl_pid = 0; - nladdr.nl_groups = 0; - - req.n.nlmsg_seq = 0; - req.n.nlmsg_flags |= NLM_F_ACK; - - status = sendmsg(fd, &msg, 0); - if (status != req.n.nlmsg_len) { - SYS_ERR(DTUN, LOGL_ERROR, errno, "sendmsg() failed, returned %d", status); - close(fd); - return -1; - } - - status = netdev_sifflags(devname, IFF_UP | IFF_RUNNING); - if (status == -1) { - close(fd); - return -1; - } - - - close(fd); - return 0; - -#elif defined (__FreeBSD__) || defined (__APPLE__) - - int fd; - struct ifaliasreq areq; - - memset(&areq, 0, sizeof(areq)); - - /* Set up interface name */ - strncpy(areq.ifra_name, devname, IFNAMSIZ); - areq.ifra_name[IFNAMSIZ - 1] = 0; /* Make sure to terminate */ - - ((struct sockaddr_in6 *)&areq.ifra_addr)->sin6_family = AF_INET6; - ((struct sockaddr_in6 *)&areq.ifra_addr)->sin6_len = sizeof(areq.ifra_addr); - ((struct sockaddr_in6 *)&areq.ifra_addr)->sin6_addr.s6_addr = addr->s6_addr; - - ((struct sockaddr_in6 *)&areq.ifra_mask)->sin6_family = AF_INET6; - ((struct sockaddr_in6 *)&areq.ifra_mask)->sin6_len = sizeof(areq.ifra_mask); - ((struct sockaddr_in6 *)&areq.ifra_mask)->sin6_addr.s6_addr = netmask->s6_addr; - - /* For some reason FreeBSD uses ifra_broadcast for specifying dstaddr */ - ((struct sockaddr_in6 *)&areq.ifra_broadaddr)->sin6_family = AF_INET6; - ((struct sockaddr_in6 *)&areq.ifra_broadaddr)->sin6_len = sizeof(areq.ifra_broadaddr); - ((struct sockaddr_in6 *)&areq.ifra_broadaddr)->sin6_addr.s6_addr = dstaddr->s6_addr; - - /* Create a channel to the NET kernel. */ - if ((fd = socket(AF_INET, SOCK_DGRAM, 0)) < 0) { - SYS_ERR(DTUN, LOGL_ERROR, errno, "socket() failed"); - return -1; - } - - if (ioctl(fd, SIOCAIFADDR, (void *)&areq) < 0) { - SYS_ERR(DTUN, LOGL_ERROR, errno, - "ioctl(SIOCAIFADDR) failed"); - close(fd); - return -1; - } - - close(fd); - return 0; - -#endif - } static int tun_addaddr6(struct tun_t *this, @@ -689,115 +159,6 @@ default: return -1; } -} - -static int netdev_route(struct in_addr *dst, struct in_addr *gateway, struct in_addr *mask, int delete) -{ - -#if defined(__linux__) - - struct rtentry r; - int fd; - - memset(&r, '\0', sizeof(r)); - r.rt_flags = RTF_UP | RTF_GATEWAY; /* RTF_HOST not set */ - - /* Create a channel to the NET kernel. */ - if ((fd = socket(AF_INET, SOCK_DGRAM, 0)) < 0) { - SYS_ERR(DTUN, LOGL_ERROR, errno, "socket() failed"); - return -1; - } - - r.rt_dst.sa_family = AF_INET; - r.rt_gateway.sa_family = AF_INET; - r.rt_genmask.sa_family = AF_INET; - memcpy(&((struct sockaddr_in *)&r.rt_dst)->sin_addr, dst, sizeof(*dst)); - memcpy(&((struct sockaddr_in *)&r.rt_gateway)->sin_addr, gateway, - sizeof(*gateway)); - memcpy(&((struct sockaddr_in *)&r.rt_genmask)->sin_addr, mask, - sizeof(*mask)); - - if (delete) { - if (ioctl(fd, SIOCDELRT, (void *)&r) < 0) { - SYS_ERR(DTUN, LOGL_ERROR, errno, - "ioctl(SIOCDELRT) failed"); - close(fd); - return -1; - } - } else { - if (ioctl(fd, SIOCADDRT, (void *)&r) < 0) { - SYS_ERR(DTUN, LOGL_ERROR, errno, - "ioctl(SIOCADDRT) failed"); - close(fd); - return -1; - } - } - close(fd); - return 0; - -#elif defined(__FreeBSD__) || defined (__APPLE__) - - struct { - struct rt_msghdr rt; - struct sockaddr_in dst; - struct sockaddr_in gate; - struct sockaddr_in mask; - } req; - - int fd; - struct rt_msghdr *rtm; - - if ((fd = socket(AF_ROUTE, SOCK_RAW, 0)) == -1) { - SYS_ERR(DTUN, LOGL_ERROR, errno, "socket() failed"); - return -1; - } - - memset(&req, 0x00, sizeof(req)); - - rtm = &req.rt; - - rtm->rtm_msglen = sizeof(req); - rtm->rtm_version = RTM_VERSION; - if (delete) { - rtm->rtm_type = RTM_DELETE; - } else { - rtm->rtm_type = RTM_ADD; - } - rtm->rtm_flags = RTF_UP | RTF_GATEWAY | RTF_STATIC; /* TODO */ - rtm->rtm_addrs = RTA_DST | RTA_GATEWAY | RTA_NETMASK; - rtm->rtm_pid = getpid(); - rtm->rtm_seq = 0044; /* TODO */ - - req.dst.sin_family = AF_INET; - req.dst.sin_len = sizeof(req.dst); - req.mask.sin_family = AF_INET; - req.mask.sin_len = sizeof(req.mask); - req.gate.sin_family = AF_INET; - req.gate.sin_len = sizeof(req.gate); - - req.dst.sin_addr.s_addr = dst->s_addr; - req.mask.sin_addr.s_addr = mask->s_addr; - req.gate.sin_addr.s_addr = gateway->s_addr; - - if (write(fd, rtm, rtm->rtm_msglen) < 0) { - SYS_ERR(DTUN, LOGL_ERROR, errno, "write() failed"); - close(fd); - return -1; - } - close(fd); - return 0; -#endif - -} - -int netdev_addroute(struct in_addr *dst, struct in_addr *gateway, struct in_addr *mask) -{ - return netdev_route(dst, gateway, mask, 0); -} - -int netdev_delroute(struct in_addr *dst, struct in_addr *gateway, struct in_addr *mask) -{ - return netdev_route(dst, gateway, mask, 1); } int tun_new(struct tun_t **tun, const char *dev_name) @@ -964,79 +325,6 @@ return -1; } return 0; -} - -#include - -/*! Obtain the local address of a network device - * \param[in] devname Target device owning the IP - * \param[out] prefix_list List of prefix structures to fill with each IPv4/6 and prefix length found. - * \param[in] prefix_size Amount of elements allowed to be fill in the prefix_list array. - * \param[in] flags Specify which kind of IP to look for: IP_TYPE_IPv4, IP_TYPE_IPv6_LINK, IP_TYPE_IPv6_NONLINK - * \returns The number of ips found following the criteria specified by flags, -1 on error. - * - * This function will fill prefix_list with up to prefix_size IPs following the - * criteria specified by flags parameter. It returns the number of IPs matching - * the criteria. As a result, the number returned can be bigger than - * prefix_size. It can be used with prefix_size=0 to get an estimate of the size - * needed for prefix_list. - */ -int netdev_ip_local_get(const char *devname, struct in46_prefix *prefix_list, size_t prefix_size, int flags) -{ - static const uint8_t ll_prefix[] = { 0xfe,0x80, 0,0, 0,0, 0,0 }; - struct ifaddrs *ifaddr, *ifa; - struct in46_addr netmask; - size_t count = 0; - bool is_ipv6_ll; - - if (getifaddrs(&ifaddr) == -1) { - return -1; - } - - for (ifa = ifaddr; ifa != NULL; ifa = ifa->ifa_next) { - if (ifa->ifa_addr == NULL) - continue; - - if (strcmp(ifa->ifa_name, devname)) - continue; - - if (ifa->ifa_addr->sa_family == AF_INET && (flags & IP_TYPE_IPv4)) { - struct sockaddr_in *sin4 = (struct sockaddr_in *) ifa->ifa_addr; - struct sockaddr_in *netmask4 = (struct sockaddr_in *) ifa->ifa_netmask; - - if (count < prefix_size) { - netmask.len = sizeof(netmask4->sin_addr); - netmask.v4 = netmask4->sin_addr; - prefix_list[count].addr.len = sizeof(sin4->sin_addr); - prefix_list[count].addr.v4 = sin4->sin_addr; - prefix_list[count].prefixlen = in46a_netmasklen(&netmask); - } - count++; - } - - if (ifa->ifa_addr->sa_family == AF_INET6 && (flags & IP_TYPE_IPv6)) { - struct sockaddr_in6 *sin6 = (struct sockaddr_in6 *) ifa->ifa_addr; - struct sockaddr_in6 *netmask6 = (struct sockaddr_in6 *) ifa->ifa_netmask; - - is_ipv6_ll = !memcmp(sin6->sin6_addr.s6_addr, ll_prefix, sizeof(ll_prefix)); - if ((flags & IP_TYPE_IPv6_NONLINK) && is_ipv6_ll) - continue; - if ((flags & IP_TYPE_IPv6_LINK) && !is_ipv6_ll) - continue; - - if (count < prefix_size) { - netmask.len = sizeof(netmask6->sin6_addr); - netmask.v6 = netmask6->sin6_addr; - prefix_list[count].addr.len = sizeof(sin6->sin6_addr); - prefix_list[count].addr.v6 = sin6->sin6_addr; - prefix_list[count].prefixlen = in46a_netmasklen(&netmask); - } - count++; - } - } - - freeifaddrs(ifaddr); - return count; } /*! Obtain the local address of the tun device. diff --git a/lib/tun.h b/lib/tun.h index af9e9f4..c9e8e34 100644 --- a/lib/tun.h +++ b/lib/tun.h @@ -1,7 +1,7 @@ /* * TUN interface functions. * Copyright (C) 2002, 2003 Mondru AB. - * Copyright (C) 2017 by Harald Welte + * Copyright (C) 2017-2018 by Harald Welte * * The contents of this file may be used under the terms of the GNU * General Public License Version 2, provided that the above copyright @@ -20,43 +20,9 @@ #define PACKET_MAX 8196 /* Maximum packet size we receive */ #define TUN_SCRIPTSIZE 256 #define TUN_ADDRSIZE 128 -#define TUN_NLBUFSIZE 1024 #include "config.h" - -/* ipv6 ip type flags for tun_ipv6_local_get() */ -enum { - IP_TYPE_IPv4 = 1, - IP_TYPE_IPv6_LINK = 2, - IP_TYPE_IPv6_NONLINK = 4, -}; -#define IP_TYPE_IPv6 (IP_TYPE_IPv6_LINK | IP_TYPE_IPv6_NONLINK) - - -#ifndef HAVE_IPHDR -struct iphdr - { -#if __BYTE_ORDER == __LITTLE_ENDIAN - unsigned int ihl:4; - unsigned int version:4; -#elif __BYTE_ORDER == __BIG_ENDIAN - unsigned int version:4; - unsigned int ihl:4; -#else -# error "Please fix " -#endif - u_int8_t tos; - u_int16_t tot_len; - u_int16_t id; - u_int16_t frag_off; - u_int8_t ttl; - u_int8_t protocol; - u_int16_t check; - u_int32_t saddr; - u_int32_t daddr; - /*The options start here. */ - }; -#endif /* !HAVE_IPHDR */ +#include "netdev.h" /* *********************************************************** * Information storage for each tun instance @@ -86,16 +52,11 @@ extern int tun_setaddr(struct tun_t *this, struct in46_addr *our_adr, struct in46_addr *his_adr, size_t prefixlen); -int netdev_addroute(struct in_addr *dst, struct in_addr *gateway, struct in_addr *mask); - extern int tun_set_cb_ind(struct tun_t *this, int (*cb_ind) (struct tun_t * tun, void *pack, unsigned len)); extern int tun_runscript(struct tun_t *tun, char *script); - -int netdev_ip_local_get(const char *devname, struct in46_prefix *prefix_list, - size_t prefix_size, int flags); int tun_ip_local_get(const struct tun_t *tun, struct in46_prefix *prefix_list, size_t prefix_size, int flags); -- To view, visit https://gerrit.osmocom.org/7923 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newpatchset Gerrit-Change-Id: Ib021e392637a43d5cf1b40e0d50621fe7e854ba5 Gerrit-PatchSet: 2 Gerrit-Project: osmo-ggsn Gerrit-Branch: master Gerrit-Owner: Harald Welte Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Pau Espin Pedrol From gerrit-no-reply at lists.osmocom.org Wed Apr 25 19:45:04 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Wed, 25 Apr 2018 19:45:04 +0000 Subject: [PATCH] osmo-ggsn[master]: Move kernel GTP support from ggsn/ to lib/ In-Reply-To: References: Message-ID: Hello Jenkins Builder, I'd like you to reexamine a change. Please visit https://gerrit.osmocom.org/7928 to look at the new patch set (#2). Move kernel GTP support from ggsn/ to lib/ This way, the IP address / route handling between TUN devices and kernel GTP can be shared, which will provide not only a unified codebase but also a more consistent behavior. This also paves the road for to use kernel GTP from sgsnemu in the future. Related: OS#3214 Change-Id: Ic53a971136edd0d8871fbd6746d7b0090ce3a188 --- M ggsn/Makefile.am M ggsn/ggsn.c M lib/Makefile.am R lib/gtp-kernel.c R lib/gtp-kernel.h M lib/tun.c M lib/tun.h M sgsnemu/Makefile.am M sgsnemu/sgsnemu.c 9 files changed, 151 insertions(+), 148 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-ggsn refs/changes/28/7928/2 diff --git a/ggsn/Makefile.am b/ggsn/Makefile.am index 6b2232f..eca385f 100644 --- a/ggsn/Makefile.am +++ b/ggsn/Makefile.am @@ -12,8 +12,4 @@ endif osmo_ggsn_DEPENDENCIES = ../gtp/libgtp.la ../lib/libmisc.a -osmo_ggsn_SOURCES = ggsn_vty.c ggsn.c ggsn.h gtp-kernel.h icmpv6.c icmpv6.h checksum.c checksum.h - -if ENABLE_GTP_KERNEL -osmo_ggsn_SOURCES += gtp-kernel.c -endif +osmo_ggsn_SOURCES = ggsn_vty.c ggsn.c ggsn.h icmpv6.c icmpv6.h checksum.c checksum.h diff --git a/ggsn/ggsn.c b/ggsn/ggsn.c index 85a2211..4636c04 100644 --- a/ggsn/ggsn.c +++ b/ggsn/ggsn.c @@ -63,9 +63,9 @@ #include "../lib/ippool.h" #include "../lib/syserr.h" #include "../lib/in46_addr.h" +#include "../lib/gtp-kernel.h" #include "../gtp/pdp.h" #include "../gtp/gtp.h" -#include "gtp-kernel.h" #include "icmpv6.h" #include "ggsn.h" @@ -125,13 +125,14 @@ LOGPAPN( LOGL_INFO, apn, "Running %s\n", apn->tun.cfg.ipdown_script); tun_runscript(apn->tun.tun, apn->tun.cfg.ipdown_script); } - /* release tun device */ - LOGPAPN(LOGL_INFO, apn, "Closing TUN device %s\n", apn->tun.tun->devname); - osmo_fd_unregister(&apn->tun.fd); + if (apn->cfg.gtpu_mode == APN_GTPU_MODE_TUN) { + /* release tun device */ + LOGPAPN(LOGL_INFO, apn, "Closing TUN device %s\n", apn->tun.tun->devname); + osmo_fd_unregister(&apn->tun.fd); + } tun_free(apn->tun.tun); apn->tun.tun = NULL; } - gtp_kernel_stop(apn->tun.cfg.dev_name); if (apn->v4.pool) { LOGPAPN(LOGL_INFO, apn, "Releasing IPv4 pool\n"); @@ -195,6 +196,7 @@ struct in46_prefix ipv6_tun_linklocal_ip; struct in46_prefix *blacklist; int blacklist_size; + struct gsn_t *gsn = apn->ggsn->gsn; int rc; if (apn->started) @@ -204,7 +206,7 @@ switch (apn->cfg.gtpu_mode) { case APN_GTPU_MODE_TUN: LOGPAPN(LOGL_INFO, apn, "Opening TUN device %s\n", apn->tun.cfg.dev_name); - if (tun_new(&apn->tun.tun, apn->tun.cfg.dev_name)) { + if (tun_new(&apn->tun.tun, apn->tun.cfg.dev_name, false, -1, -1)) { LOGPAPN(LOGL_ERROR, apn, "Failed to configure tun device\n"); return -1; } @@ -216,66 +218,6 @@ /* Set TUN library callback */ tun_set_cb_ind(apn->tun.tun, cb_tun_ind); - - if (apn->v4.cfg.ifconfig_prefix.addr.len) { - LOGPAPN(LOGL_INFO, apn, "Setting tun IP address %s\n", - in46p_ntoa(&apn->v4.cfg.ifconfig_prefix)); - if (tun_addaddr(apn->tun.tun, &apn->v4.cfg.ifconfig_prefix.addr, NULL, - apn->v4.cfg.ifconfig_prefix.prefixlen)) { - LOGPAPN(LOGL_ERROR, apn, "Failed to set tun IPv4 address %s: %s\n", - in46p_ntoa(&apn->v4.cfg.ifconfig_prefix), strerror(errno)); - apn_stop(apn, false); - return -1; - } - } - - if (apn->v6.cfg.ifconfig_prefix.addr.len) { - LOGPAPN(LOGL_INFO, apn, "Setting tun IPv6 address %s\n", - in46p_ntoa(&apn->v6.cfg.ifconfig_prefix)); - if (tun_addaddr(apn->tun.tun, &apn->v6.cfg.ifconfig_prefix.addr, NULL, - apn->v6.cfg.ifconfig_prefix.prefixlen)) { - LOGPAPN(LOGL_ERROR, apn, "Failed to set tun IPv6 address %s: %s. " - "Ensure you have ipv6 support and not used the disable_ipv6 sysctl?\n", - in46p_ntoa(&apn->v6.cfg.ifconfig_prefix), strerror(errno)); - apn_stop(apn, false); - return -1; - } - } - - if (apn->v6.cfg.ll_prefix.addr.len) { - LOGPAPN(LOGL_INFO, apn, "Setting tun IPv6 link-local address %s\n", - in46p_ntoa(&apn->v6.cfg.ll_prefix)); - if (tun_addaddr(apn->tun.tun, &apn->v6.cfg.ll_prefix.addr, NULL, - apn->v6.cfg.ll_prefix.prefixlen)) { - LOGPAPN(LOGL_ERROR, apn, "Failed to set tun IPv6 link-local address %s: %s. " - "Ensure you have ipv6 support and not used the disable_ipv6 sysctl?\n", - in46p_ntoa(&apn->v6.cfg.ll_prefix), strerror(errno)); - apn_stop(apn, false); - return -1; - } - apn->v6_lladdr = apn->v6.cfg.ll_prefix.addr.v6; - } - - if (apn->tun.cfg.ipup_script) { - LOGPAPN(LOGL_INFO, apn, "Running ip-up script %s\n", - apn->tun.cfg.ipup_script); - tun_runscript(apn->tun.tun, apn->tun.cfg.ipup_script); - } - - if (apn->cfg.apn_type_mask & (APN_TYPE_IPv6|APN_TYPE_IPv4v6) && - apn->v6.cfg.ll_prefix.addr.len == 0) { - rc = tun_ip_local_get(apn->tun.tun, &ipv6_tun_linklocal_ip, 1, IP_TYPE_IPv6_LINK); - if (rc < 1) { - LOGPAPN(LOGL_ERROR, apn, "Cannot obtain IPv6 link-local address of interface: %s\n", - rc ? strerror(errno) : "tun interface has no link-local IP assigned"); - apn_stop(apn, false); - return -1; - } - apn->v6_lladdr = ipv6_tun_linklocal_ip.addr.v6; - } - - /* set back-pointer from TUN device to APN */ - apn->tun.tun->priv = apn; break; case APN_GTPU_MODE_KERNEL_GTP: LOGPAPN(LOGL_INFO, apn, "Opening Kernel GTP device %s\n", apn->tun.cfg.dev_name); @@ -284,7 +226,7 @@ apn_stop(apn, false); return -1; } - if (apn->ggsn->gsn == NULL) { + if (gsn == NULL) { /* skip bringing up the APN now if the GSN is not initialized yet. * This happens during initial load of the config file, as the * "no shutdown" in the ggsn node only happens after the "apn" nodes @@ -293,8 +235,8 @@ return 0; } /* use GTP kernel module for data packet encapsulation */ - if (gtp_kernel_init(apn->ggsn->gsn, apn->tun.cfg.dev_name, - &apn->v4.cfg.ifconfig_prefix, apn->tun.cfg.ipup_script) < 0) { + if (tun_new(&apn->tun.tun, apn->tun.cfg.dev_name, true, gsn->fd0, gsn->fd1u)) { + LOGPAPN(LOGL_ERROR, apn, "Failed to configure Kernel GTP device\n"); return -1; } break; @@ -303,6 +245,68 @@ return -1; } + /* common initialization below */ + + /* set back-pointer from TUN device to APN */ + apn->tun.tun->priv = apn; + + if (apn->v4.cfg.ifconfig_prefix.addr.len) { + LOGPAPN(LOGL_INFO, apn, "Setting tun IP address %s\n", + in46p_ntoa(&apn->v4.cfg.ifconfig_prefix)); + if (tun_addaddr(apn->tun.tun, &apn->v4.cfg.ifconfig_prefix.addr, NULL, + apn->v4.cfg.ifconfig_prefix.prefixlen)) { + LOGPAPN(LOGL_ERROR, apn, "Failed to set tun IPv4 address %s: %s\n", + in46p_ntoa(&apn->v4.cfg.ifconfig_prefix), strerror(errno)); + apn_stop(apn, false); + return -1; + } + } + + if (apn->v6.cfg.ifconfig_prefix.addr.len) { + LOGPAPN(LOGL_INFO, apn, "Setting tun IPv6 address %s\n", + in46p_ntoa(&apn->v6.cfg.ifconfig_prefix)); + if (tun_addaddr(apn->tun.tun, &apn->v6.cfg.ifconfig_prefix.addr, NULL, + apn->v6.cfg.ifconfig_prefix.prefixlen)) { + LOGPAPN(LOGL_ERROR, apn, "Failed to set tun IPv6 address %s: %s. " + "Ensure you have ipv6 support and not used the disable_ipv6 sysctl?\n", + in46p_ntoa(&apn->v6.cfg.ifconfig_prefix), strerror(errno)); + apn_stop(apn, false); + return -1; + } + } + + if (apn->v6.cfg.ll_prefix.addr.len) { + LOGPAPN(LOGL_INFO, apn, "Setting tun IPv6 link-local address %s\n", + in46p_ntoa(&apn->v6.cfg.ll_prefix)); + if (tun_addaddr(apn->tun.tun, &apn->v6.cfg.ll_prefix.addr, NULL, + apn->v6.cfg.ll_prefix.prefixlen)) { + LOGPAPN(LOGL_ERROR, apn, "Failed to set tun IPv6 link-local address %s: %s. " + "Ensure you have ipv6 support and not used the disable_ipv6 sysctl?\n", + in46p_ntoa(&apn->v6.cfg.ll_prefix), strerror(errno)); + apn_stop(apn, false); + return -1; + } + apn->v6_lladdr = apn->v6.cfg.ll_prefix.addr.v6; + } + + if (apn->tun.cfg.ipup_script) { + LOGPAPN(LOGL_INFO, apn, "Running ip-up script %s\n", + apn->tun.cfg.ipup_script); + tun_runscript(apn->tun.tun, apn->tun.cfg.ipup_script); + } + + if (apn->cfg.apn_type_mask & (APN_TYPE_IPv6|APN_TYPE_IPv4v6) && + apn->v6.cfg.ll_prefix.addr.len == 0) { + rc = tun_ip_local_get(apn->tun.tun, &ipv6_tun_linklocal_ip, 1, IP_TYPE_IPv6_LINK); + if (rc < 1) { + LOGPAPN(LOGL_ERROR, apn, "Cannot obtain IPv6 link-local address of interface: %s\n", + rc ? strerror(errno) : "tun interface has no link-local IP assigned"); + apn_stop(apn, false); + return -1; + } + apn->v6_lladdr = ipv6_tun_linklocal_ip.addr.v6; + } + /* Create IPv4 pool */ if (apn->v4.cfg.dynamic_prefix.addr.len) { LOGPAPN(LOGL_INFO, apn, "Creating IPv4 pool %s\n", diff --git a/lib/Makefile.am b/lib/Makefile.am index 55348ad..b6e7aba 100644 --- a/lib/Makefile.am +++ b/lib/Makefile.am @@ -1,7 +1,12 @@ noinst_LIBRARIES = libmisc.a -noinst_HEADERS = gnugetopt.h ippool.h lookup.h syserr.h tun.h in46_addr.h netdev.h +noinst_HEADERS = gnugetopt.h ippool.h lookup.h syserr.h tun.h in46_addr.h netdev.h gtp-kernel.h AM_CFLAGS = -O2 -fno-builtin -Wall -DSBINDIR='"$(sbindir)"' -ggdb $(LIBOSMOCORE_CFLAGS) libmisc_a_SOURCES = getopt1.c getopt.c ippool.c lookup.c tun.c debug.c in46_addr.c netdev.c + +if ENABLE_GTP_KERNEL +AM_CFLAGS += -DGTP_KERNEL $(LIBGTPNL_CFLAGS) +libmisc_a_SOURCES += gtp-kernel.c +endif diff --git a/ggsn/gtp-kernel.c b/lib/gtp-kernel.c similarity index 71% rename from ggsn/gtp-kernel.c rename to lib/gtp-kernel.c index 4564d9a..48811bc 100644 --- a/ggsn/gtp-kernel.c +++ b/lib/gtp-kernel.c @@ -77,56 +77,20 @@ return 0; } -int gtp_kernel_init(struct gsn_t *gsn, const char *devname, struct in46_prefix *prefix, const char *ipup) +int gtp_kernel_create(int dest_ns, const char *devname, int fd0, int fd1u) { - struct in_addr net; - const char *net_arg; - - if (!gtp_nl.nl) - gtp_kernel_init_once(); - - if (prefix->addr.len != 4) { - LOGP(DGGSN, LOGL_ERROR, "we only support IPv4 in this path :/"); + if (gtp_kernel_init_once() < 0) return -1; - } - net = prefix->addr.v4; - if (gtp_dev_create(-1, devname, gsn->fd0, gsn->fd1u) < 0) { - LOGP(DGGSN, LOGL_ERROR, "cannot create GTP tunnel device: %s\n", - strerror(errno)); + return gtp_dev_create(dest_ns, devname, fd0, fd1u); +} + +int gtp_kernel_create_sgsn(int dest_ns, const char *devname, int fd0, int fd1u) +{ + if (gtp_kernel_init_once() < 0) return -1; - } - net_arg = in46p_ntoa(prefix); - - DEBUGP(DGGSN, "Setting route to reach %s via %s\n", net_arg, devname); - - if (gtp_dev_config(devname, &net, prefix->prefixlen) < 0) { - LOGP(DGGSN, LOGL_ERROR, "Cannot add route to reach network %s\n", net_arg); - } - - /* launch script if it is set to bring up the route to reach - * the MS, eg. ip ro add 10.0.0.0/8 dev gtp0. Better add this - * using native rtnetlink interface given that we know the - * MS network mask, later. - */ - if (ipup) { - char cmd[1024]; - int err; - - /* eg. /home/ggsn/ipup gtp0 10.0.0.0/8 */ - snprintf(cmd, sizeof(cmd), "%s %s %s", ipup, devname, net_arg); - cmd[sizeof(cmd)-1] = '\0'; - - err = system(cmd); - if (err < 0) { - LOGP(DGGSN, LOGL_ERROR, "Failed to launch script `%s'\n", ipup); - return -1; - } - } - LOGP(DGGSN, LOGL_NOTICE, "GTP kernel configured\n"); - - return 0; + return gtp_dev_create_sgsn(dest_ns, devname, fd0, fd1u); } void gtp_kernel_stop(const char *devname) diff --git a/ggsn/gtp-kernel.h b/lib/gtp-kernel.h similarity index 70% rename from ggsn/gtp-kernel.h rename to lib/gtp-kernel.h index e2da55a..464352c 100644 --- a/ggsn/gtp-kernel.h +++ b/lib/gtp-kernel.h @@ -7,18 +7,20 @@ extern char *ipup; #ifdef GTP_KERNEL -int gtp_kernel_init(struct gsn_t *gsn, const char *devname, struct in46_prefix *prefix, const char *ipup); +int gtp_kernel_create(int dest_ns, const char *devname, int fd0, int fd1u); +int gtp_kernel_create_sgsn(int dest_ns, const char *devname, int fd0, int fd1u); void gtp_kernel_stop(const char *devname); int gtp_kernel_tunnel_add(struct pdp_t *pdp, const char *devname); int gtp_kernel_tunnel_del(struct pdp_t *pdp, const char *devname); #else -static inline int gtp_kernel_init(struct gsn_t *gsn, const char *devname, struct in46_prefix *prefix, const char *ipup) +static inline int gtp_kernel_create(int dest_ns, const char *devname, int fd0, int fd1u) { SYS_ERR(DGGSN, LOGL_ERROR, 0, "ggsn compiled without GTP kernel support!\n"); return -1; } +#define gtp_kernel_create_sgsn gtp_kernel_create static inline void gtp_kernel_stop(const char *devname) {} diff --git a/lib/tun.c b/lib/tun.c index 6498945..fa4c37d 100644 --- a/lib/tun.c +++ b/lib/tun.c @@ -19,6 +19,7 @@ #include #include +#include #include #include #include @@ -57,6 +58,7 @@ #include "tun.h" #include "syserr.h" +#include "gtp-kernel.h" static int tun_setaddr4(struct tun_t *this, struct in_addr *addr, struct in_addr *dstaddr, struct in_addr *netmask) @@ -147,7 +149,7 @@ } } -int tun_new(struct tun_t **tun, const char *dev_name) +int tun_new(struct tun_t **tun, const char *dev_name, bool use_kernel, int fd0, int fd1u) { #if defined(__linux__) @@ -170,30 +172,49 @@ (*tun)->routes = 0; #if defined(__linux__) - /* Open the actual tun device */ - if (((*tun)->fd = open("/dev/net/tun", O_RDWR)) < 0) { - SYS_ERR(DTUN, LOGL_ERROR, errno, "open() failed"); - goto err_free; + if (!use_kernel) { + /* Open the actual tun device */ + if (((*tun)->fd = open("/dev/net/tun", O_RDWR)) < 0) { + SYS_ERR(DTUN, LOGL_ERROR, errno, "open() failed"); + goto err_free; + } + + /* Set device flags. For some weird reason this is also the method + used to obtain the network interface name */ + memset(&ifr, 0, sizeof(ifr)); + if (dev_name) + strcpy(ifr.ifr_name, dev_name); + ifr.ifr_flags = IFF_TUN | IFF_NO_PI; /* Tun device, no packet info */ + if (ioctl((*tun)->fd, TUNSETIFF, (void *)&ifr) < 0) { + SYS_ERR(DTUN, LOGL_ERROR, errno, "ioctl() failed"); + goto err_close; + } + + strncpy((*tun)->devname, ifr.ifr_name, IFNAMSIZ); + (*tun)->devname[IFNAMSIZ - 1] = 0; + + ioctl((*tun)->fd, TUNSETNOCSUM, 1); /* Disable checksums */ + return 0; + } else { + strncpy((*tun)->devname, dev_name, IFNAMSIZ); + (*tun)->devname[IFNAMSIZ - 1] = 0; + (*tun)->fd = -1; + + if (gtp_kernel_create(-1, dev_name, fd0, fd1u) < 0) { + LOGP(DTUN, LOGL_ERROR, "cannot create GTP tunnel device: %s\n", + strerror(errno)); + return -1; + } + LOGP(DTUN, LOGL_NOTICE, "GTP kernel configured\n"); + return 0; } - - /* Set device flags. For some weird reason this is also the method - used to obtain the network interface name */ - memset(&ifr, 0, sizeof(ifr)); - if (dev_name) - strcpy(ifr.ifr_name, dev_name); - ifr.ifr_flags = IFF_TUN | IFF_NO_PI; /* Tun device, no packet info */ - if (ioctl((*tun)->fd, TUNSETIFF, (void *)&ifr) < 0) { - SYS_ERR(DTUN, LOGL_ERROR, errno, "ioctl() failed"); - goto err_close; - } - - strncpy((*tun)->devname, ifr.ifr_name, IFNAMSIZ); - (*tun)->devname[IFNAMSIZ - 1] = 0; - - ioctl((*tun)->fd, TUNSETNOCSUM, 1); /* Disable checksums */ - return 0; #elif defined(__FreeBSD__) || defined (__APPLE__) + + if (use_kernel) { + LOGP(DTUN, LOGL_ERROR, "No kernel GTP-U support in FreeBSD!\n"); + return -1; + } /* Find suitable device */ for (devnum = 0; devnum < 255; devnum++) { /* TODO 255 */ @@ -249,10 +270,14 @@ netdev_delroute(&tun->dstaddr, &tun->addr, &tun->netmask); } - if (close(tun->fd)) { - SYS_ERR(DTUN, LOGL_ERROR, errno, "close() failed"); + if (tun->fd >= 0) { + if (close(tun->fd)) { + SYS_ERR(DTUN, LOGL_ERROR, errno, "close() failed"); + } } + gtp_kernel_stop(tun->devname); + /* TODO: For solaris we need to unlink streams */ free(tun); diff --git a/lib/tun.h b/lib/tun.h index e41ee69..6bf141f 100644 --- a/lib/tun.h +++ b/lib/tun.h @@ -13,6 +13,7 @@ #ifndef _TUN_H #define _TUN_H +#include #include #include "../lib/in46_addr.h" @@ -41,7 +42,7 @@ void *priv; }; -extern int tun_new(struct tun_t **tun, const char *dev_name); +extern int tun_new(struct tun_t **tun, const char *dev_name, bool use_kernel, int fd0, int fd1u); extern int tun_free(struct tun_t *tun); extern int tun_decaps(struct tun_t *this); extern int tun_encaps(struct tun_t *tun, void *pack, unsigned len); diff --git a/sgsnemu/Makefile.am b/sgsnemu/Makefile.am index 4d02eca..9f10cd2 100644 --- a/sgsnemu/Makefile.am +++ b/sgsnemu/Makefile.am @@ -5,5 +5,11 @@ AM_CFLAGS = -O2 -D_GNU_SOURCE -fno-builtin -Wall -DSBINDIR='"$(sbindir)"' -ggdb $(LIBOSMOCORE_CFLAGS) sgsnemu_LDADD = @EXEC_LDADD@ -lgtp -L../gtp ../lib/libmisc.a $(LIBOSMOCORE_LIBS) + +if ENABLE_GTP_KERNEL +AM_CFLAGS += -DGTP_KERNEL $(LIBGTPNL_CFLAGS) +sgsnemu_LDADD += $(LIBGTPNL_LIBS) +endif + sgsnemu_DEPENDENCIES = ../gtp/libgtp.la ../lib/libmisc.a sgsnemu_SOURCES = sgsnemu.c cmdline.c cmdline.h diff --git a/sgsnemu/sgsnemu.c b/sgsnemu/sgsnemu.c index 92abc70..1e61a09 100644 --- a/sgsnemu/sgsnemu.c +++ b/sgsnemu/sgsnemu.c @@ -1571,7 +1571,7 @@ if (options.createif) { printf("Setting up interface\n"); /* Create a tunnel interface */ - if (tun_new((struct tun_t **)&tun, options.tun_dev_name)) { + if (tun_new((struct tun_t **)&tun, options.tun_dev_name, false, -1, -1)) { SYS_ERR(DSGSN, LOGL_ERROR, 0, "Failed to create tun"); exit(1); -- To view, visit https://gerrit.osmocom.org/7928 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newpatchset Gerrit-Change-Id: Ic53a971136edd0d8871fbd6746d7b0090ce3a188 Gerrit-PatchSet: 2 Gerrit-Project: osmo-ggsn Gerrit-Branch: master Gerrit-Owner: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Pau Espin Pedrol From gerrit-no-reply at lists.osmocom.org Wed Apr 25 19:45:06 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Wed, 25 Apr 2018 19:45:06 +0000 Subject: [PATCH] osmo-ggsn[master]: ggsn: don't use gtp_kernel_tunnel_{add, del}() for userspace tun Message-ID: Review at https://gerrit.osmocom.org/7931 ggsn: don't use gtp_kernel_tunnel_{add,del}() for userspace tun Change-Id: I00cc8eb8c4d44532f975f78783ff4e12814b3416 --- M ggsn/ggsn.c 1 file changed, 6 insertions(+), 4 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-ggsn refs/changes/31/7931/1 diff --git a/ggsn/ggsn.c b/ggsn/ggsn.c index 4636c04..72bf61c 100644 --- a/ggsn/ggsn.c +++ b/ggsn/ggsn.c @@ -380,9 +380,11 @@ LOGPPDP(LOGL_ERROR, pdp, "Cannot find/free IP Pool member\n"); } - if (gtp_kernel_tunnel_del(pdp, apn->tun.cfg.dev_name)) { - LOGPPDP(LOGL_ERROR, pdp, "Cannot delete tunnel from kernel:%s\n", - strerror(errno)); + if (apn->cfg.gtpu_mode == APN_GTPU_MODE_KERNEL_GTP) { + if (gtp_kernel_tunnel_del(pdp, apn->tun.cfg.dev_name)) { + LOGPPDP(LOGL_ERROR, pdp, "Cannot delete tunnel from kernel:%s\n", + strerror(errno)); + } } return 0; @@ -688,7 +690,7 @@ in46a_to_eua(addr, num_addr, &pdp->eua); - if (apn_supports_ipv4(apn)) { + if (apn->cfg.gtpu_mode == APN_GTPU_MODE_KERNEL_GTP && apn_supports_ipv4(apn)) { /* TODO: In IPv6, EUA doesn't contain the actual IP addr/prefix! */ if (gtp_kernel_tunnel_add(pdp, apn->tun.cfg.dev_name) < 0) { LOGPPDP(LOGL_ERROR, pdp, "Cannot add tunnel to kernel: %s\n", strerror(errno)); -- To view, visit https://gerrit.osmocom.org/7931 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I00cc8eb8c4d44532f975f78783ff4e12814b3416 Gerrit-PatchSet: 1 Gerrit-Project: osmo-ggsn Gerrit-Branch: master Gerrit-Owner: Harald Welte From gerrit-no-reply at lists.osmocom.org Wed Apr 25 19:45:11 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Wed, 25 Apr 2018 19:45:11 +0000 Subject: [MERGED] osmo-ggsn[master]: lib/tun.c: generalize tun_*route() to netdev_*route() In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: lib/tun.c: generalize tun_*route() to netdev_*route() ...................................................................... lib/tun.c: generalize tun_*route() to netdev_*route() There's nothing specific to tun devices in adding a route to the kernel. Change-Id: Ib077934aa5f3c9bed06e2cf16a980c965a7a046d --- M lib/tun.c M lib/tun.h M sgsnemu/sgsnemu.c 3 files changed, 10 insertions(+), 17 deletions(-) Approvals: Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/lib/tun.c b/lib/tun.c index d6ca24e..14e4a58 100644 --- a/lib/tun.c +++ b/lib/tun.c @@ -274,7 +274,7 @@ #if 0 /* FIXME */ //#if defined(__FreeBSD__) || defined (__APPLE__) - tun_addroute6(this, dstaddr, addr, prefixlen); + netdev_addroute6(dstaddr, addr, prefixlen); this->routes = 1; #endif @@ -644,9 +644,7 @@ } } -static int tun_route(struct tun_t *this, - struct in_addr *dst, - struct in_addr *gateway, struct in_addr *mask, int delete) +static int netdev_route(struct in_addr *dst, struct in_addr *gateway, struct in_addr *mask, int delete) { #if defined(__linux__) @@ -745,18 +743,14 @@ } -int tun_addroute(struct tun_t *this, - struct in_addr *dst, - struct in_addr *gateway, struct in_addr *mask) +int netdev_addroute(struct in_addr *dst, struct in_addr *gateway, struct in_addr *mask) { - return tun_route(this, dst, gateway, mask, 0); + return netdev_route(dst, gateway, mask, 0); } -int tun_delroute(struct tun_t *this, - struct in_addr *dst, - struct in_addr *gateway, struct in_addr *mask) +int netdev_delroute(struct in_addr *dst, struct in_addr *gateway, struct in_addr *mask) { - return tun_route(this, dst, gateway, mask, 1); + return netdev_route(dst, gateway, mask, 1); } int tun_new(struct tun_t **tun, const char *dev_name) @@ -858,7 +852,7 @@ { if (tun->routes) { - tun_delroute(tun, &tun->dstaddr, &tun->addr, &tun->netmask); + netdev_delroute(&tun->dstaddr, &tun->addr, &tun->netmask); } if (close(tun->fd)) { diff --git a/lib/tun.h b/lib/tun.h index 6f7c0ff..af9e9f4 100644 --- a/lib/tun.h +++ b/lib/tun.h @@ -86,8 +86,7 @@ extern int tun_setaddr(struct tun_t *this, struct in46_addr *our_adr, struct in46_addr *his_adr, size_t prefixlen); -int tun_addroute(struct tun_t *this, struct in_addr *dst, - struct in_addr *gateway, struct in_addr *mask); +int netdev_addroute(struct in_addr *dst, struct in_addr *gateway, struct in_addr *mask); extern int tun_set_cb_ind(struct tun_t *this, int (*cb_ind) (struct tun_t * tun, void *pack, diff --git a/sgsnemu/sgsnemu.c b/sgsnemu/sgsnemu.c index 99f56da..8903d81 100644 --- a/sgsnemu/sgsnemu.c +++ b/sgsnemu/sgsnemu.c @@ -1437,7 +1437,7 @@ if (options.defaultroute) { struct in_addr rm; rm.s_addr = 0; - tun_addroute(tun, &rm, &addr.v4, &rm); + netdev_addroute(&rm, &addr.v4, &rm); } if (options.ipup) tun_runscript(tun, options.ipup); @@ -1588,7 +1588,7 @@ if (options.defaultroute) { struct in_addr rm; rm.s_addr = 0; - tun_addroute(tun, &rm, &options.destaddr.v4, &rm); + netdev_addroute(&rm, &options.destaddr.v4, &rm); } if (options.ipup) tun_runscript(tun, options.ipup); -- To view, visit https://gerrit.osmocom.org/7921 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: Ib077934aa5f3c9bed06e2cf16a980c965a7a046d Gerrit-PatchSet: 1 Gerrit-Project: osmo-ggsn Gerrit-Branch: master Gerrit-Owner: Harald Welte Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Pau Espin Pedrol From gerrit-no-reply at lists.osmocom.org Wed Apr 25 19:45:11 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Wed, 25 Apr 2018 19:45:11 +0000 Subject: [MERGED] osmo-ggsn[master]: lib/tun.c: Generalize tun_sifflags() to netdev_sifflags In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: lib/tun.c: Generalize tun_sifflags() to netdev_sifflags ...................................................................... lib/tun.c: Generalize tun_sifflags() to netdev_sifflags There's nothing "tun" specific about that function, let's clarify that. Change-Id: Iae7ced700245d6c1ac7e9807ab80d12fde8da116 --- M lib/tun.c 1 file changed, 7 insertions(+), 7 deletions(-) Approvals: Pau Espin Pedrol: Looks good to me, but someone else must approve Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/lib/tun.c b/lib/tun.c index f6d3503..d6ca24e 100644 --- a/lib/tun.c +++ b/lib/tun.c @@ -1,7 +1,7 @@ /* * TUN interface functions. * Copyright (C) 2002, 2003, 2004 Mondru AB. - * Copyright (C) 2017 by Harald Welte + * Copyright (C) 2017-2018 by Harald Welte * * The contents of this file may be used under the terms of the GNU * General Public License Version 2, provided that the above copyright @@ -79,14 +79,14 @@ } #endif -static int tun_sifflags(struct tun_t *this, int flags) +static int netdev_sifflags(const char *devname, int flags) { struct ifreq ifr; int fd; memset(&ifr, '\0', sizeof(ifr)); ifr.ifr_flags = flags; - strncpy(ifr.ifr_name, this->devname, IFNAMSIZ); + strncpy(ifr.ifr_name, devname, IFNAMSIZ); ifr.ifr_name[IFNAMSIZ - 1] = 0; /* Make sure to terminate */ if ((fd = socket(AF_INET, SOCK_DGRAM, 0)) < 0) { SYS_ERR(DTUN, LOGL_ERROR, errno, "socket() failed"); @@ -187,7 +187,7 @@ /* TODO: How does it work on Solaris? */ - tun_sifflags(this, IFF_UP | IFF_RUNNING); + netdev_sifflags(this->devname, IFF_UP | IFF_RUNNING); #if defined(__FreeBSD__) || defined (__APPLE__) tun_addroute(this, dstaddr, addr, &this->netmask); @@ -270,7 +270,7 @@ /* TODO: How does it work on Solaris? */ - tun_sifflags(this, IFF_UP | IFF_RUNNING); + netdev_sifflags(this->devname, IFF_UP | IFF_RUNNING); #if 0 /* FIXME */ //#if defined(__FreeBSD__) || defined (__APPLE__) @@ -400,7 +400,7 @@ return -1; } - status = tun_sifflags(this, IFF_UP | IFF_RUNNING); + status = netdev_sifflags(this->devname, IFF_UP | IFF_RUNNING); if (status == -1) { close(fd); return -1; @@ -570,7 +570,7 @@ return -1; } - status = tun_sifflags(this, IFF_UP | IFF_RUNNING); + status = netdev_sifflags(this->devname, IFF_UP | IFF_RUNNING); if (status == -1) { close(fd); return -1; -- To view, visit https://gerrit.osmocom.org/7920 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: Iae7ced700245d6c1ac7e9807ab80d12fde8da116 Gerrit-PatchSet: 1 Gerrit-Project: osmo-ggsn Gerrit-Branch: master Gerrit-Owner: Harald Welte Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Pau Espin Pedrol From gerrit-no-reply at lists.osmocom.org Wed Apr 25 19:45:50 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Wed, 25 Apr 2018 19:45:50 +0000 Subject: osmo-ggsn[master]: lib/tun.c: generalize tun_*route() to netdev_*route() In-Reply-To: References: Message-ID: Patch Set 1: we already have several places (last but not least the 'get link-local ip addresses' function) which doesn't build on freebsd/macos. -- To view, visit https://gerrit.osmocom.org/7921 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Ib077934aa5f3c9bed06e2cf16a980c965a7a046d Gerrit-PatchSet: 1 Gerrit-Project: osmo-ggsn Gerrit-Branch: master Gerrit-Owner: Harald Welte Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Pau Espin Pedrol Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Wed Apr 25 19:46:17 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Wed, 25 Apr 2018 19:46:17 +0000 Subject: osmo-ggsn[master]: ggsn: don't use gtp_kernel_tunnel_{add, del}() for userspace tun In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7931 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I00cc8eb8c4d44532f975f78783ff4e12814b3416 Gerrit-PatchSet: 1 Gerrit-Project: osmo-ggsn Gerrit-Branch: master Gerrit-Owner: Harald Welte Gerrit-Reviewer: Harald Welte Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Wed Apr 25 19:46:44 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Wed, 25 Apr 2018 19:46:44 +0000 Subject: osmo-ggsn[master]: Move kernel GTP support from ggsn/ to lib/ In-Reply-To: References: Message-ID: Patch Set 2: Code-Review+2 (1 comment) https://gerrit.osmocom.org/#/c/7928/1/sgsnemu/Makefile.am File sgsnemu/Makefile.am: Line 10: AM_CFLAGS += -DGTP_KERNEL $(LIBGTPNL_CFLAGS) > Why not using ENABLE_GTP_KERNEL in the source code directly? this is just reusing the existing define like before the patch. So your comment is a valid comment, but it would be a different change. -- To view, visit https://gerrit.osmocom.org/7928 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Ic53a971136edd0d8871fbd6746d7b0090ce3a188 Gerrit-PatchSet: 2 Gerrit-Project: osmo-ggsn Gerrit-Branch: master Gerrit-Owner: Harald Welte Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Pau Espin Pedrol Gerrit-HasComments: Yes From gerrit-no-reply at lists.osmocom.org Wed Apr 25 19:47:16 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Wed, 25 Apr 2018 19:47:16 +0000 Subject: osmo-ggsn[master]: lib/tun.c: Generalize tun_{set, add}addr*() functions In-Reply-To: References: Message-ID: Patch Set 2: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7922 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I139a950dd81a4b1199953be1608cd109a060f562 Gerrit-PatchSet: 2 Gerrit-Project: osmo-ggsn Gerrit-Branch: master Gerrit-Owner: Harald Welte Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Pau Espin Pedrol Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Wed Apr 25 19:47:25 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Wed, 25 Apr 2018 19:47:25 +0000 Subject: osmo-ggsn[master]: lib/tun: split generic network device related stuff to lib/n... In-Reply-To: References: Message-ID: Patch Set 2: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7923 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Ib021e392637a43d5cf1b40e0d50621fe7e854ba5 Gerrit-PatchSet: 2 Gerrit-Project: osmo-ggsn Gerrit-Branch: master Gerrit-Owner: Harald Welte Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Pau Espin Pedrol Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Wed Apr 25 19:47:34 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Wed, 25 Apr 2018 19:47:34 +0000 Subject: [MERGED] osmo-ggsn[master]: lib/tun: split generic network device related stuff to lib/n... In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: lib/tun: split generic network device related stuff to lib/netdev ...................................................................... lib/tun: split generic network device related stuff to lib/netdev Change-Id: Ib021e392637a43d5cf1b40e0d50621fe7e854ba5 --- M lib/Makefile.am A lib/netdev.c A lib/netdev.h M lib/tun.c M lib/tun.h 5 files changed, 842 insertions(+), 755 deletions(-) Approvals: Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/lib/Makefile.am b/lib/Makefile.am index 632990c..55348ad 100644 --- a/lib/Makefile.am +++ b/lib/Makefile.am @@ -1,7 +1,7 @@ noinst_LIBRARIES = libmisc.a -noinst_HEADERS = gnugetopt.h ippool.h lookup.h syserr.h tun.h in46_addr.h +noinst_HEADERS = gnugetopt.h ippool.h lookup.h syserr.h tun.h in46_addr.h netdev.h AM_CFLAGS = -O2 -fno-builtin -Wall -DSBINDIR='"$(sbindir)"' -ggdb $(LIBOSMOCORE_CFLAGS) -libmisc_a_SOURCES = getopt1.c getopt.c ippool.c lookup.c tun.c debug.c in46_addr.c +libmisc_a_SOURCES = getopt1.c getopt.c ippool.c lookup.c tun.c debug.c in46_addr.c netdev.c diff --git a/lib/netdev.c b/lib/netdev.c new file mode 100644 index 0000000..eff808d --- /dev/null +++ b/lib/netdev.c @@ -0,0 +1,766 @@ +/* + * TUN interface functions. + * Copyright (C) 2002, 2003, 2004 Mondru AB. + * Copyright (C) 2017-2018 by Harald Welte + * + * The contents of this file may be used under the terms of the GNU + * General Public License Version 2, provided that the above copyright + * notice and this permission notice is included in all copies or + * substantial portions of the software. + * + */ + +/* + * netdev.c: Contains generic network device related functionality. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#if defined(__linux__) +#include +#include + +#elif defined (__FreeBSD__) +#include +#include + +#elif defined (__APPLE__) +#include + +#else +#error "Unknown platform!" +#endif + +#include "netdev.h" +#include "syserr.h" + +#if defined(__linux__) + +#include + +static int netdev_nlattr(struct nlmsghdr *n, int nsize, int type, void *d, int dlen) +{ + int len = RTA_LENGTH(dlen); + int alen = NLMSG_ALIGN(n->nlmsg_len); + struct rtattr *rta = (struct rtattr *)(((void *)n) + alen); + if (alen + len > nsize) + return -1; + rta->rta_len = len; + rta->rta_type = type; + memcpy(RTA_DATA(rta), d, dlen); + n->nlmsg_len = alen + len; + return 0; +} +#endif + +static int netdev_sifflags(const char *devname, int flags) +{ + struct ifreq ifr; + int fd; + + memset(&ifr, '\0', sizeof(ifr)); + ifr.ifr_flags = flags; + strncpy(ifr.ifr_name, devname, IFNAMSIZ); + ifr.ifr_name[IFNAMSIZ - 1] = 0; /* Make sure to terminate */ + if ((fd = socket(AF_INET, SOCK_DGRAM, 0)) < 0) { + SYS_ERR(DTUN, LOGL_ERROR, errno, "socket() failed"); + return -1; + } + if (ioctl(fd, SIOCSIFFLAGS, &ifr)) { + SYS_ERR(DTUN, LOGL_ERROR, errno, + "ioctl(SIOCSIFFLAGS) failed"); + close(fd); + return -1; + } + close(fd); + return 0; +} + +int netdev_setaddr4(const char *devname, struct in_addr *addr, + struct in_addr *dstaddr, struct in_addr *netmask) +{ + struct ifreq ifr; + int fd; + + memset(&ifr, '\0', sizeof(ifr)); + ifr.ifr_addr.sa_family = AF_INET; + ifr.ifr_dstaddr.sa_family = AF_INET; + +#if defined(__linux__) + ifr.ifr_netmask.sa_family = AF_INET; + +#elif defined(__FreeBSD__) || defined (__APPLE__) + ((struct sockaddr_in *)&ifr.ifr_addr)->sin_len = + sizeof(struct sockaddr_in); + ((struct sockaddr_in *)&ifr.ifr_dstaddr)->sin_len = + sizeof(struct sockaddr_in); +#endif + + strncpy(ifr.ifr_name, devname, IFNAMSIZ); + ifr.ifr_name[IFNAMSIZ - 1] = 0; /* Make sure to terminate */ + + /* Create a channel to the NET kernel. */ + if ((fd = socket(AF_INET, SOCK_DGRAM, 0)) < 0) { + SYS_ERR(DTUN, LOGL_ERROR, errno, "socket() failed"); + return -1; + } + + if (addr) { /* Set the interface address */ + memcpy(&((struct sockaddr_in *)&ifr.ifr_addr)->sin_addr, addr, + sizeof(*addr)); + if (ioctl(fd, SIOCSIFADDR, (void *)&ifr) < 0) { + if (errno != EEXIST) { + SYS_ERR(DTUN, LOGL_ERROR, errno, + "ioctl(SIOCSIFADDR) failed"); + } else { + SYS_ERR(DTUN, LOGL_NOTICE, errno, + "ioctl(SIOCSIFADDR): Address already exists"); + } + close(fd); + return -1; + } + } + + if (dstaddr) { /* Set the destination address */ + memcpy(&((struct sockaddr_in *)&ifr.ifr_dstaddr)->sin_addr, + dstaddr, sizeof(*dstaddr)); + if (ioctl(fd, SIOCSIFDSTADDR, (caddr_t) & ifr) < 0) { + SYS_ERR(DTUN, LOGL_ERROR, errno, + "ioctl(SIOCSIFDSTADDR) failed"); + close(fd); + return -1; + } + } + + if (netmask) { /* Set the netmask */ +#if defined(__linux__) + memcpy(&((struct sockaddr_in *)&ifr.ifr_netmask)->sin_addr, + netmask, sizeof(*netmask)); + +#elif defined(__FreeBSD__) || defined (__APPLE__) + ((struct sockaddr_in *)&ifr.ifr_addr)->sin_addr.s_addr = + netmask->s_addr; +#endif + + if (ioctl(fd, SIOCSIFNETMASK, (void *)&ifr) < 0) { + SYS_ERR(DTUN, LOGL_ERROR, errno, + "ioctl(SIOCSIFNETMASK) failed"); + close(fd); + return -1; + } + } + + close(fd); + + /* On linux the route to the interface is set automatically + on FreeBSD we have to do this manually */ + + /* TODO: How does it work on Solaris? */ + + netdev_sifflags(devname, IFF_UP | IFF_RUNNING); + +#if defined(__FreeBSD__) || defined (__APPLE__) + netdev_addroute(dstaddr, addr, &this->netmask); +#endif + + return 0; +} + +int netdev_setaddr6(const char *devname, struct in6_addr *addr, struct in6_addr *dstaddr, + size_t prefixlen) +{ + struct in6_ifreq ifr; + int fd; + + memset(&ifr, 0, sizeof(ifr)); + +#if defined(__linux__) + ifr.ifr6_prefixlen = prefixlen; + ifr.ifr6_ifindex = if_nametoindex(devname); + if (ifr.ifr6_ifindex == 0) { + SYS_ERR(DTUN, LOGL_ERROR, 0, "Error getting ifindex for %s\n", devname); + return -1; + } +#elif defined(__FreeBSD__) || defined (__APPLE__) + strncpy(ifr.ifr_name, devname, IFNAMSIZ); +#endif + + /* Create a channel to the NET kernel */ + if ((fd = socket(AF_INET6, SOCK_DGRAM, 0)) < 0) { + SYS_ERR(DTUN, LOGL_ERROR, 0, "socket() failed"); + return -1; + } + +#if defined(__linux__) + if (addr) { + memcpy(&ifr.ifr6_addr, addr, sizeof(*addr)); + if (ioctl(fd, SIOCSIFADDR, (void *) &ifr) < 0) { + if (errno != EEXIST) { + SYS_ERR(DTUN, LOGL_ERROR, 0, "ioctl(SIOCSIFADDR) failed"); + } else { + SYS_ERR(DTUN, LOGL_NOTICE, 0, "ioctl(SIOCSIFADDR): Address already exists"); + } + close(fd); + return -1; + } + } + +#if 0 + /* FIXME: looks like this is not possible/necessary for IPv6? */ + if (dstaddr) { + memcpy(&ifr.ifr6_addr, dstaddr, sizeof(*dstaddr)); + if (ioctl(fd, SIOCSIFDSTADDR, (caddr_t *) &ifr) < 0) { + SYS_ERR(DTUN, LOGL_ERROR, "ioctl(SIOCSIFDSTADDR) failed"); + close(fd); + return -1; + } + } +#endif + +#elif defined(__FreeBSD__) || defined (__APPLE__) + if (addr) + memcpy(&ifr.ifr_ifru.ifru_addr, addr, sizeof(ifr.ifr_ifru.ifru_addr)); + if (dstaddr) + memcpy(&ifr.ifr_ifru.ifru_dstaddr, dstaddr, sizeof(ifr.ifr_ifru.ifru_dstaddr)); + + if (ioctl(fd, SIOCSIFADDR_IN6, (struct ifreq *)&ifr) < 0) { + SYS_ERR(DTUN, LOGL_ERROR, 0, "ioctl(SIOCSIFADDR_IN6) failed"); + close(fd); + return -1; + } +#endif + + close(fd); + + /* On linux the route to the interface is set automatically + on FreeBSD we have to do this manually */ + + /* TODO: How does it work on Solaris? */ + + netdev_sifflags(devname, IFF_UP | IFF_RUNNING); + +#if 0 /* FIXME */ +//#if defined(__FreeBSD__) || defined (__APPLE__) + netdev_addroute6(dstaddr, addr, prefixlen); +#endif + + return 0; +} + +int netdev_addaddr4(const char *devname, struct in_addr *addr, + struct in_addr *dstaddr, struct in_addr *netmask) +{ + +#if defined(__linux__) + struct { + struct nlmsghdr n; + struct ifaddrmsg i; + char buf[TUN_NLBUFSIZE]; + } req; + + struct sockaddr_nl local; + socklen_t addr_len; + int fd; + int status; + + struct sockaddr_nl nladdr; + struct iovec iov; + struct msghdr msg; + + memset(&req, 0, sizeof(req)); + req.n.nlmsg_len = NLMSG_LENGTH(sizeof(struct ifaddrmsg)); + req.n.nlmsg_flags = NLM_F_REQUEST | NLM_F_CREATE; + req.n.nlmsg_type = RTM_NEWADDR; + req.i.ifa_family = AF_INET; + req.i.ifa_prefixlen = 32; /* 32 FOR IPv4 */ + req.i.ifa_flags = 0; + req.i.ifa_scope = RT_SCOPE_HOST; /* TODO or 0 */ + req.i.ifa_index = if_nametoindex(devname); + if (!req.i.ifa_index) { + SYS_ERR(DTUN, LOGL_ERROR, errno, "Unable to get ifindex for %s", devname); + return -1; + } + + netdev_nlattr(&req.n, sizeof(req), IFA_ADDRESS, addr, sizeof(*addr)); + if (dstaddr) + netdev_nlattr(&req.n, sizeof(req), IFA_LOCAL, dstaddr, sizeof(*dstaddr)); + + if ((fd = socket(AF_NETLINK, SOCK_RAW, NETLINK_ROUTE)) < 0) { + SYS_ERR(DTUN, LOGL_ERROR, errno, "socket() failed"); + return -1; + } + + memset(&local, 0, sizeof(local)); + local.nl_family = AF_NETLINK; + local.nl_groups = 0; + + if (bind(fd, (struct sockaddr *)&local, sizeof(local)) < 0) { + SYS_ERR(DTUN, LOGL_ERROR, errno, "bind() failed"); + close(fd); + return -1; + } + + addr_len = sizeof(local); + if (getsockname(fd, (struct sockaddr *)&local, &addr_len) < 0) { + SYS_ERR(DTUN, LOGL_ERROR, errno, + "getsockname() failed"); + close(fd); + return -1; + } + + if (addr_len != sizeof(local)) { + SYS_ERR(DTUN, LOGL_ERROR, 0, + "Wrong address length %d", addr_len); + close(fd); + return -1; + } + + if (local.nl_family != AF_NETLINK) { + SYS_ERR(DTUN, LOGL_ERROR, 0, + "Wrong address family %d", local.nl_family); + close(fd); + return -1; + } + + iov.iov_base = (void *)&req.n; + iov.iov_len = req.n.nlmsg_len; + + msg.msg_name = (void *)&nladdr; + msg.msg_namelen = sizeof(nladdr); + msg.msg_iov = &iov; + msg.msg_iovlen = 1; + msg.msg_control = NULL; + msg.msg_controllen = 0; + msg.msg_flags = 0; + + memset(&nladdr, 0, sizeof(nladdr)); + nladdr.nl_family = AF_NETLINK; + nladdr.nl_pid = 0; + nladdr.nl_groups = 0; + + req.n.nlmsg_seq = 0; + req.n.nlmsg_flags |= NLM_F_ACK; + + status = sendmsg(fd, &msg, 0); + if (status != req.n.nlmsg_len) { + SYS_ERR(DTUN, LOGL_ERROR, errno, "sendmsg() failed, returned %d", status); + close(fd); + return -1; + } + + status = netdev_sifflags(devname, IFF_UP | IFF_RUNNING); + if (status == -1) { + close(fd); + return -1; + } + + + close(fd); + return 0; + +#elif defined (__FreeBSD__) || defined (__APPLE__) + + int fd; + struct ifaliasreq areq; + + memset(&areq, 0, sizeof(areq)); + + /* Set up interface name */ + strncpy(areq.ifra_name, devname, IFNAMSIZ); + areq.ifra_name[IFNAMSIZ - 1] = 0; /* Make sure to terminate */ + + ((struct sockaddr_in *)&areq.ifra_addr)->sin_family = AF_INET; + ((struct sockaddr_in *)&areq.ifra_addr)->sin_len = + sizeof(areq.ifra_addr); + ((struct sockaddr_in *)&areq.ifra_addr)->sin_addr.s_addr = addr->s_addr; + + ((struct sockaddr_in *)&areq.ifra_mask)->sin_family = AF_INET; + ((struct sockaddr_in *)&areq.ifra_mask)->sin_len = + sizeof(areq.ifra_mask); + ((struct sockaddr_in *)&areq.ifra_mask)->sin_addr.s_addr = + netmask->s_addr; + + /* For some reason FreeBSD uses ifra_broadcast for specifying dstaddr */ + ((struct sockaddr_in *)&areq.ifra_broadaddr)->sin_family = AF_INET; + ((struct sockaddr_in *)&areq.ifra_broadaddr)->sin_len = + sizeof(areq.ifra_broadaddr); + ((struct sockaddr_in *)&areq.ifra_broadaddr)->sin_addr.s_addr = + dstaddr->s_addr; + + /* Create a channel to the NET kernel. */ + if ((fd = socket(AF_INET, SOCK_DGRAM, 0)) < 0) { + SYS_ERR(DTUN, LOGL_ERROR, errno, "socket() failed"); + return -1; + } + + if (ioctl(fd, SIOCAIFADDR, (void *)&areq) < 0) { + SYS_ERR(DTUN, LOGL_ERROR, errno, + "ioctl(SIOCAIFADDR) failed"); + close(fd); + return -1; + } + + close(fd); + return 0; + +#endif + +} + +int netdev_addaddr6(const char *devname, struct in6_addr *addr, + struct in6_addr *dstaddr, int prefixlen) +{ + +#if defined(__linux__) + struct { + struct nlmsghdr n; + struct ifaddrmsg i; + char buf[TUN_NLBUFSIZE]; + } req; + + struct sockaddr_nl local; + socklen_t addr_len; + int fd; + int status; + + struct sockaddr_nl nladdr; + struct iovec iov; + struct msghdr msg; + + memset(&req, 0, sizeof(req)); + req.n.nlmsg_len = NLMSG_LENGTH(sizeof(struct ifaddrmsg)); + req.n.nlmsg_flags = NLM_F_REQUEST | NLM_F_CREATE; + req.n.nlmsg_type = RTM_NEWADDR; + req.i.ifa_family = AF_INET6; + req.i.ifa_prefixlen = 64; /* 64 FOR IPv6 */ + req.i.ifa_flags = 0; + req.i.ifa_scope = RT_SCOPE_HOST; /* TODO or 0 */ + req.i.ifa_index = if_nametoindex(devname); + if (!req.i.ifa_index) { + SYS_ERR(DTUN, LOGL_ERROR, errno, "Unable to get ifindex for %s", devname); + return -1; + } + + netdev_nlattr(&req.n, sizeof(req), IFA_ADDRESS, addr, sizeof(*addr)); + if (dstaddr) + netdev_nlattr(&req.n, sizeof(req), IFA_LOCAL, dstaddr, sizeof(*dstaddr)); + + if ((fd = socket(AF_NETLINK, SOCK_RAW, NETLINK_ROUTE)) < 0) { + SYS_ERR(DTUN, LOGL_ERROR, errno, "socket() failed"); + return -1; + } + + memset(&local, 0, sizeof(local)); + local.nl_family = AF_NETLINK; + local.nl_groups = 0; + + if (bind(fd, (struct sockaddr *)&local, sizeof(local)) < 0) { + SYS_ERR(DTUN, LOGL_ERROR, errno, "bind() failed"); + close(fd); + return -1; + } + + addr_len = sizeof(local); + if (getsockname(fd, (struct sockaddr *)&local, &addr_len) < 0) { + SYS_ERR(DTUN, LOGL_ERROR, errno, + "getsockname() failed"); + close(fd); + return -1; + } + + if (addr_len != sizeof(local)) { + SYS_ERR(DTUN, LOGL_ERROR, 0, + "Wrong address length %d", addr_len); + close(fd); + return -1; + } + + if (local.nl_family != AF_NETLINK) { + SYS_ERR(DTUN, LOGL_ERROR, 0, + "Wrong address family %d", local.nl_family); + close(fd); + return -1; + } + + iov.iov_base = (void *)&req.n; + iov.iov_len = req.n.nlmsg_len; + + msg.msg_name = (void *)&nladdr; + msg.msg_namelen = sizeof(nladdr); + msg.msg_iov = &iov; + msg.msg_iovlen = 1; + msg.msg_control = NULL; + msg.msg_controllen = 0; + msg.msg_flags = 0; + + memset(&nladdr, 0, sizeof(nladdr)); + nladdr.nl_family = AF_NETLINK; + nladdr.nl_pid = 0; + nladdr.nl_groups = 0; + + req.n.nlmsg_seq = 0; + req.n.nlmsg_flags |= NLM_F_ACK; + + status = sendmsg(fd, &msg, 0); + if (status != req.n.nlmsg_len) { + SYS_ERR(DTUN, LOGL_ERROR, errno, "sendmsg() failed, returned %d", status); + close(fd); + return -1; + } + + status = netdev_sifflags(devname, IFF_UP | IFF_RUNNING); + if (status == -1) { + close(fd); + return -1; + } + + + close(fd); + return 0; + +#elif defined (__FreeBSD__) || defined (__APPLE__) + + int fd; + struct ifaliasreq areq; + + memset(&areq, 0, sizeof(areq)); + + /* Set up interface name */ + strncpy(areq.ifra_name, devname, IFNAMSIZ); + areq.ifra_name[IFNAMSIZ - 1] = 0; /* Make sure to terminate */ + + ((struct sockaddr_in6 *)&areq.ifra_addr)->sin6_family = AF_INET6; + ((struct sockaddr_in6 *)&areq.ifra_addr)->sin6_len = sizeof(areq.ifra_addr); + ((struct sockaddr_in6 *)&areq.ifra_addr)->sin6_addr.s6_addr = addr->s6_addr; + + ((struct sockaddr_in6 *)&areq.ifra_mask)->sin6_family = AF_INET6; + ((struct sockaddr_in6 *)&areq.ifra_mask)->sin6_len = sizeof(areq.ifra_mask); + ((struct sockaddr_in6 *)&areq.ifra_mask)->sin6_addr.s6_addr = netmask->s6_addr; + + /* For some reason FreeBSD uses ifra_broadcast for specifying dstaddr */ + ((struct sockaddr_in6 *)&areq.ifra_broadaddr)->sin6_family = AF_INET6; + ((struct sockaddr_in6 *)&areq.ifra_broadaddr)->sin6_len = sizeof(areq.ifra_broadaddr); + ((struct sockaddr_in6 *)&areq.ifra_broadaddr)->sin6_addr.s6_addr = dstaddr->s6_addr; + + /* Create a channel to the NET kernel. */ + if ((fd = socket(AF_INET, SOCK_DGRAM, 0)) < 0) { + SYS_ERR(DTUN, LOGL_ERROR, errno, "socket() failed"); + return -1; + } + + if (ioctl(fd, SIOCAIFADDR, (void *)&areq) < 0) { + SYS_ERR(DTUN, LOGL_ERROR, errno, + "ioctl(SIOCAIFADDR) failed"); + close(fd); + return -1; + } + + close(fd); + return 0; + +#endif + +} + +static int netdev_route(struct in_addr *dst, struct in_addr *gateway, struct in_addr *mask, int delete) +{ + +#if defined(__linux__) + + struct rtentry r; + int fd; + + memset(&r, '\0', sizeof(r)); + r.rt_flags = RTF_UP | RTF_GATEWAY; /* RTF_HOST not set */ + + /* Create a channel to the NET kernel. */ + if ((fd = socket(AF_INET, SOCK_DGRAM, 0)) < 0) { + SYS_ERR(DTUN, LOGL_ERROR, errno, "socket() failed"); + return -1; + } + + r.rt_dst.sa_family = AF_INET; + r.rt_gateway.sa_family = AF_INET; + r.rt_genmask.sa_family = AF_INET; + memcpy(&((struct sockaddr_in *)&r.rt_dst)->sin_addr, dst, sizeof(*dst)); + memcpy(&((struct sockaddr_in *)&r.rt_gateway)->sin_addr, gateway, + sizeof(*gateway)); + memcpy(&((struct sockaddr_in *)&r.rt_genmask)->sin_addr, mask, + sizeof(*mask)); + + if (delete) { + if (ioctl(fd, SIOCDELRT, (void *)&r) < 0) { + SYS_ERR(DTUN, LOGL_ERROR, errno, + "ioctl(SIOCDELRT) failed"); + close(fd); + return -1; + } + } else { + if (ioctl(fd, SIOCADDRT, (void *)&r) < 0) { + SYS_ERR(DTUN, LOGL_ERROR, errno, + "ioctl(SIOCADDRT) failed"); + close(fd); + return -1; + } + } + close(fd); + return 0; + +#elif defined(__FreeBSD__) || defined (__APPLE__) + + struct { + struct rt_msghdr rt; + struct sockaddr_in dst; + struct sockaddr_in gate; + struct sockaddr_in mask; + } req; + + int fd; + struct rt_msghdr *rtm; + + if ((fd = socket(AF_ROUTE, SOCK_RAW, 0)) == -1) { + SYS_ERR(DTUN, LOGL_ERROR, errno, "socket() failed"); + return -1; + } + + memset(&req, 0x00, sizeof(req)); + + rtm = &req.rt; + + rtm->rtm_msglen = sizeof(req); + rtm->rtm_version = RTM_VERSION; + if (delete) { + rtm->rtm_type = RTM_DELETE; + } else { + rtm->rtm_type = RTM_ADD; + } + rtm->rtm_flags = RTF_UP | RTF_GATEWAY | RTF_STATIC; /* TODO */ + rtm->rtm_addrs = RTA_DST | RTA_GATEWAY | RTA_NETMASK; + rtm->rtm_pid = getpid(); + rtm->rtm_seq = 0044; /* TODO */ + + req.dst.sin_family = AF_INET; + req.dst.sin_len = sizeof(req.dst); + req.mask.sin_family = AF_INET; + req.mask.sin_len = sizeof(req.mask); + req.gate.sin_family = AF_INET; + req.gate.sin_len = sizeof(req.gate); + + req.dst.sin_addr.s_addr = dst->s_addr; + req.mask.sin_addr.s_addr = mask->s_addr; + req.gate.sin_addr.s_addr = gateway->s_addr; + + if (write(fd, rtm, rtm->rtm_msglen) < 0) { + SYS_ERR(DTUN, LOGL_ERROR, errno, "write() failed"); + close(fd); + return -1; + } + close(fd); + return 0; +#endif + +} + +int netdev_addroute(struct in_addr *dst, struct in_addr *gateway, struct in_addr *mask) +{ + return netdev_route(dst, gateway, mask, 0); +} + +int netdev_delroute(struct in_addr *dst, struct in_addr *gateway, struct in_addr *mask) +{ + return netdev_route(dst, gateway, mask, 1); +} + +#include + +/*! Obtain the local address of a network device + * \param[in] devname Target device owning the IP + * \param[out] prefix_list List of prefix structures to fill with each IPv4/6 and prefix length found. + * \param[in] prefix_size Amount of elements allowed to be fill in the prefix_list array. + * \param[in] flags Specify which kind of IP to look for: IP_TYPE_IPv4, IP_TYPE_IPv6_LINK, IP_TYPE_IPv6_NONLINK + * \returns The number of ips found following the criteria specified by flags, -1 on error. + * + * This function will fill prefix_list with up to prefix_size IPs following the + * criteria specified by flags parameter. It returns the number of IPs matching + * the criteria. As a result, the number returned can be bigger than + * prefix_size. It can be used with prefix_size=0 to get an estimate of the size + * needed for prefix_list. + */ +int netdev_ip_local_get(const char *devname, struct in46_prefix *prefix_list, size_t prefix_size, int flags) +{ + static const uint8_t ll_prefix[] = { 0xfe,0x80, 0,0, 0,0, 0,0 }; + struct ifaddrs *ifaddr, *ifa; + struct in46_addr netmask; + size_t count = 0; + bool is_ipv6_ll; + + if (getifaddrs(&ifaddr) == -1) { + return -1; + } + + for (ifa = ifaddr; ifa != NULL; ifa = ifa->ifa_next) { + if (ifa->ifa_addr == NULL) + continue; + + if (strcmp(ifa->ifa_name, devname)) + continue; + + if (ifa->ifa_addr->sa_family == AF_INET && (flags & IP_TYPE_IPv4)) { + struct sockaddr_in *sin4 = (struct sockaddr_in *) ifa->ifa_addr; + struct sockaddr_in *netmask4 = (struct sockaddr_in *) ifa->ifa_netmask; + + if (count < prefix_size) { + netmask.len = sizeof(netmask4->sin_addr); + netmask.v4 = netmask4->sin_addr; + prefix_list[count].addr.len = sizeof(sin4->sin_addr); + prefix_list[count].addr.v4 = sin4->sin_addr; + prefix_list[count].prefixlen = in46a_netmasklen(&netmask); + } + count++; + } + + if (ifa->ifa_addr->sa_family == AF_INET6 && (flags & IP_TYPE_IPv6)) { + struct sockaddr_in6 *sin6 = (struct sockaddr_in6 *) ifa->ifa_addr; + struct sockaddr_in6 *netmask6 = (struct sockaddr_in6 *) ifa->ifa_netmask; + + is_ipv6_ll = !memcmp(sin6->sin6_addr.s6_addr, ll_prefix, sizeof(ll_prefix)); + if ((flags & IP_TYPE_IPv6_NONLINK) && is_ipv6_ll) + continue; + if ((flags & IP_TYPE_IPv6_LINK) && !is_ipv6_ll) + continue; + + if (count < prefix_size) { + netmask.len = sizeof(netmask6->sin6_addr); + netmask.v6 = netmask6->sin6_addr; + prefix_list[count].addr.len = sizeof(sin6->sin6_addr); + prefix_list[count].addr.v6 = sin6->sin6_addr; + prefix_list[count].prefixlen = in46a_netmasklen(&netmask); + } + count++; + } + } + + freeifaddrs(ifaddr); + return count; +} diff --git a/lib/netdev.h b/lib/netdev.h new file mode 100644 index 0000000..74c42da --- /dev/null +++ b/lib/netdev.h @@ -0,0 +1,72 @@ +#pragma once +/* + * TUN interface functions. + * Copyright (C) 2002, 2003 Mondru AB. + * Copyright (C) 2017-2018 by Harald Welte + * + * The contents of this file may be used under the terms of the GNU + * General Public License Version 2, provided that the above copyright + * notice and this permission notice is included in all copies or + * substantial portions of the software. + * + */ + +#include + +#include "../lib/in46_addr.h" + +#define TUN_NLBUFSIZE 1024 + +#include "config.h" + +/* ipv6 ip type flags for tun_ipv6_local_get() */ +enum { + IP_TYPE_IPv4 = 1, + IP_TYPE_IPv6_LINK = 2, + IP_TYPE_IPv6_NONLINK = 4, +}; +#define IP_TYPE_IPv6 (IP_TYPE_IPv6_LINK | IP_TYPE_IPv6_NONLINK) + + +#ifndef HAVE_IPHDR +struct iphdr + { +#if __BYTE_ORDER == __LITTLE_ENDIAN + unsigned int ihl:4; + unsigned int version:4; +#elif __BYTE_ORDER == __BIG_ENDIAN + unsigned int version:4; + unsigned int ihl:4; +#else +# error "Please fix " +#endif + u_int8_t tos; + u_int16_t tot_len; + u_int16_t id; + u_int16_t frag_off; + u_int8_t ttl; + u_int8_t protocol; + u_int16_t check; + u_int32_t saddr; + u_int32_t daddr; + /*The options start here. */ + }; +#endif /* !HAVE_IPHDR */ + +extern int netdev_setaddr4(const char *devname, struct in_addr *addr, + struct in_addr *dstaddr, struct in_addr *netmask); + +extern int netdev_setaddr6(const char *devname, struct in6_addr *addr, struct in6_addr *dstaddr, + size_t prefixlen); + +extern int netdev_addaddr4(const char *devname, struct in_addr *addr, + struct in_addr *dstaddr, struct in_addr *netmask); + +extern int netdev_addaddr6(const char *devname, struct in6_addr *addr, + struct in6_addr *dstaddr, int prefixlen); + +extern int netdev_addroute(struct in_addr *dst, struct in_addr *gateway, struct in_addr *mask); +extern int netdev_delroute(struct in_addr *dst, struct in_addr *gateway, struct in_addr *mask); + +extern int netdev_ip_local_get(const char *devname, struct in46_prefix *prefix_list, + size_t prefix_size, int flags); diff --git a/lib/tun.c b/lib/tun.c index d2a80be..122d38c 100644 --- a/lib/tun.c +++ b/lib/tun.c @@ -42,8 +42,6 @@ #if defined(__linux__) #include -#include -#include #elif defined (__FreeBSD__) #include @@ -59,138 +57,6 @@ #include "tun.h" #include "syserr.h" - -#if defined(__linux__) - -#include - -static int tun_nlattr(struct nlmsghdr *n, int nsize, int type, void *d, int dlen) -{ - int len = RTA_LENGTH(dlen); - int alen = NLMSG_ALIGN(n->nlmsg_len); - struct rtattr *rta = (struct rtattr *)(((void *)n) + alen); - if (alen + len > nsize) - return -1; - rta->rta_len = len; - rta->rta_type = type; - memcpy(RTA_DATA(rta), d, dlen); - n->nlmsg_len = alen + len; - return 0; -} -#endif - -static int netdev_sifflags(const char *devname, int flags) -{ - struct ifreq ifr; - int fd; - - memset(&ifr, '\0', sizeof(ifr)); - ifr.ifr_flags = flags; - strncpy(ifr.ifr_name, devname, IFNAMSIZ); - ifr.ifr_name[IFNAMSIZ - 1] = 0; /* Make sure to terminate */ - if ((fd = socket(AF_INET, SOCK_DGRAM, 0)) < 0) { - SYS_ERR(DTUN, LOGL_ERROR, errno, "socket() failed"); - return -1; - } - if (ioctl(fd, SIOCSIFFLAGS, &ifr)) { - SYS_ERR(DTUN, LOGL_ERROR, errno, - "ioctl(SIOCSIFFLAGS) failed"); - close(fd); - return -1; - } - close(fd); - return 0; -} - -static int netdev_setaddr4(const char *devname, struct in_addr *addr, - struct in_addr *dstaddr, struct in_addr *netmask) -{ - struct ifreq ifr; - int fd; - - memset(&ifr, '\0', sizeof(ifr)); - ifr.ifr_addr.sa_family = AF_INET; - ifr.ifr_dstaddr.sa_family = AF_INET; - -#if defined(__linux__) - ifr.ifr_netmask.sa_family = AF_INET; - -#elif defined(__FreeBSD__) || defined (__APPLE__) - ((struct sockaddr_in *)&ifr.ifr_addr)->sin_len = - sizeof(struct sockaddr_in); - ((struct sockaddr_in *)&ifr.ifr_dstaddr)->sin_len = - sizeof(struct sockaddr_in); -#endif - - strncpy(ifr.ifr_name, devname, IFNAMSIZ); - ifr.ifr_name[IFNAMSIZ - 1] = 0; /* Make sure to terminate */ - - /* Create a channel to the NET kernel. */ - if ((fd = socket(AF_INET, SOCK_DGRAM, 0)) < 0) { - SYS_ERR(DTUN, LOGL_ERROR, errno, "socket() failed"); - return -1; - } - - if (addr) { /* Set the interface address */ - memcpy(&((struct sockaddr_in *)&ifr.ifr_addr)->sin_addr, addr, - sizeof(*addr)); - if (ioctl(fd, SIOCSIFADDR, (void *)&ifr) < 0) { - if (errno != EEXIST) { - SYS_ERR(DTUN, LOGL_ERROR, errno, - "ioctl(SIOCSIFADDR) failed"); - } else { - SYS_ERR(DTUN, LOGL_NOTICE, errno, - "ioctl(SIOCSIFADDR): Address already exists"); - } - close(fd); - return -1; - } - } - - if (dstaddr) { /* Set the destination address */ - memcpy(&((struct sockaddr_in *)&ifr.ifr_dstaddr)->sin_addr, - dstaddr, sizeof(*dstaddr)); - if (ioctl(fd, SIOCSIFDSTADDR, (caddr_t) & ifr) < 0) { - SYS_ERR(DTUN, LOGL_ERROR, errno, - "ioctl(SIOCSIFDSTADDR) failed"); - close(fd); - return -1; - } - } - - if (netmask) { /* Set the netmask */ -#if defined(__linux__) - memcpy(&((struct sockaddr_in *)&ifr.ifr_netmask)->sin_addr, - netmask, sizeof(*netmask)); - -#elif defined(__FreeBSD__) || defined (__APPLE__) - ((struct sockaddr_in *)&ifr.ifr_addr)->sin_addr.s_addr = - netmask->s_addr; -#endif - - if (ioctl(fd, SIOCSIFNETMASK, (void *)&ifr) < 0) { - SYS_ERR(DTUN, LOGL_ERROR, errno, - "ioctl(SIOCSIFNETMASK) failed"); - close(fd); - return -1; - } - } - - close(fd); - - /* On linux the route to the interface is set automatically - on FreeBSD we have to do this manually */ - - /* TODO: How does it work on Solaris? */ - - netdev_sifflags(devname, IFF_UP | IFF_RUNNING); - -#if defined(__FreeBSD__) || defined (__APPLE__) - netdev_addroute(dstaddr, addr, &this->netmask); -#endif - - return 0; -} static int tun_setaddr4(struct tun_t *this, struct in_addr *addr, struct in_addr *dstaddr, struct in_addr *netmask) @@ -212,87 +78,6 @@ #endif return rc; -} - -static int netdev_setaddr6(const char *devname, struct in6_addr *addr, struct in6_addr *dstaddr, - size_t prefixlen) -{ - struct in6_ifreq ifr; - int fd; - - memset(&ifr, 0, sizeof(ifr)); - -#if defined(__linux__) - ifr.ifr6_prefixlen = prefixlen; - ifr.ifr6_ifindex = if_nametoindex(devname); - if (ifr.ifr6_ifindex == 0) { - SYS_ERR(DTUN, LOGL_ERROR, 0, "Error getting ifindex for %s\n", devname); - return -1; - } -#elif defined(__FreeBSD__) || defined (__APPLE__) - strncpy(ifr.ifr_name, devname, IFNAMSIZ); -#endif - - /* Create a channel to the NET kernel */ - if ((fd = socket(AF_INET6, SOCK_DGRAM, 0)) < 0) { - SYS_ERR(DTUN, LOGL_ERROR, 0, "socket() failed"); - return -1; - } - -#if defined(__linux__) - if (addr) { - memcpy(&ifr.ifr6_addr, addr, sizeof(*addr)); - if (ioctl(fd, SIOCSIFADDR, (void *) &ifr) < 0) { - if (errno != EEXIST) { - SYS_ERR(DTUN, LOGL_ERROR, 0, "ioctl(SIOCSIFADDR) failed"); - } else { - SYS_ERR(DTUN, LOGL_NOTICE, 0, "ioctl(SIOCSIFADDR): Address already exists"); - } - close(fd); - return -1; - } - } - -#if 0 - /* FIXME: looks like this is not possible/necessary for IPv6? */ - if (dstaddr) { - memcpy(&ifr.ifr6_addr, dstaddr, sizeof(*dstaddr)); - if (ioctl(fd, SIOCSIFDSTADDR, (caddr_t *) &ifr) < 0) { - SYS_ERR(DTUN, LOGL_ERROR, "ioctl(SIOCSIFDSTADDR) failed"); - close(fd); - return -1; - } - } -#endif - -#elif defined(__FreeBSD__) || defined (__APPLE__) - if (addr) - memcpy(&ifr.ifr_ifru.ifru_addr, addr, sizeof(ifr.ifr_ifru.ifru_addr)); - if (dstaddr) - memcpy(&ifr.ifr_ifru.ifru_dstaddr, dstaddr, sizeof(ifr.ifr_ifru.ifru_dstaddr)); - - if (ioctl(fd, SIOCSIFADDR_IN6, (struct ifreq *)&ifr) < 0) { - SYS_ERR(DTUN, LOGL_ERROR, 0, "ioctl(SIOCSIFADDR_IN6) failed"); - close(fd); - return -1; - } -#endif - - close(fd); - - /* On linux the route to the interface is set automatically - on FreeBSD we have to do this manually */ - - /* TODO: How does it work on Solaris? */ - - netdev_sifflags(devname, IFF_UP | IFF_RUNNING); - -#if 0 /* FIXME */ -//#if defined(__FreeBSD__) || defined (__APPLE__) - netdev_addroute6(dstaddr, addr, prefixlen); -#endif - - return 0; } static int tun_setaddr6(struct tun_t *this, struct in6_addr *addr, struct in6_addr *dstaddr, @@ -326,166 +111,6 @@ } } -static int netdev_addaddr4(const char *devname, struct in_addr *addr, - struct in_addr *dstaddr, struct in_addr *netmask) -{ - -#if defined(__linux__) - struct { - struct nlmsghdr n; - struct ifaddrmsg i; - char buf[TUN_NLBUFSIZE]; - } req; - - struct sockaddr_nl local; - socklen_t addr_len; - int fd; - int status; - - struct sockaddr_nl nladdr; - struct iovec iov; - struct msghdr msg; - - memset(&req, 0, sizeof(req)); - req.n.nlmsg_len = NLMSG_LENGTH(sizeof(struct ifaddrmsg)); - req.n.nlmsg_flags = NLM_F_REQUEST | NLM_F_CREATE; - req.n.nlmsg_type = RTM_NEWADDR; - req.i.ifa_family = AF_INET; - req.i.ifa_prefixlen = 32; /* 32 FOR IPv4 */ - req.i.ifa_flags = 0; - req.i.ifa_scope = RT_SCOPE_HOST; /* TODO or 0 */ - req.i.ifa_index = if_nametoindex(devname); - if (!req.i.ifa_index) { - SYS_ERR(DTUN, LOGL_ERROR, errno, "Unable to get ifindex for %s", devname); - return -1; - } - - tun_nlattr(&req.n, sizeof(req), IFA_ADDRESS, addr, sizeof(*addr)); - if (dstaddr) - tun_nlattr(&req.n, sizeof(req), IFA_LOCAL, dstaddr, sizeof(*dstaddr)); - - if ((fd = socket(AF_NETLINK, SOCK_RAW, NETLINK_ROUTE)) < 0) { - SYS_ERR(DTUN, LOGL_ERROR, errno, "socket() failed"); - return -1; - } - - memset(&local, 0, sizeof(local)); - local.nl_family = AF_NETLINK; - local.nl_groups = 0; - - if (bind(fd, (struct sockaddr *)&local, sizeof(local)) < 0) { - SYS_ERR(DTUN, LOGL_ERROR, errno, "bind() failed"); - close(fd); - return -1; - } - - addr_len = sizeof(local); - if (getsockname(fd, (struct sockaddr *)&local, &addr_len) < 0) { - SYS_ERR(DTUN, LOGL_ERROR, errno, - "getsockname() failed"); - close(fd); - return -1; - } - - if (addr_len != sizeof(local)) { - SYS_ERR(DTUN, LOGL_ERROR, 0, - "Wrong address length %d", addr_len); - close(fd); - return -1; - } - - if (local.nl_family != AF_NETLINK) { - SYS_ERR(DTUN, LOGL_ERROR, 0, - "Wrong address family %d", local.nl_family); - close(fd); - return -1; - } - - iov.iov_base = (void *)&req.n; - iov.iov_len = req.n.nlmsg_len; - - msg.msg_name = (void *)&nladdr; - msg.msg_namelen = sizeof(nladdr); - msg.msg_iov = &iov; - msg.msg_iovlen = 1; - msg.msg_control = NULL; - msg.msg_controllen = 0; - msg.msg_flags = 0; - - memset(&nladdr, 0, sizeof(nladdr)); - nladdr.nl_family = AF_NETLINK; - nladdr.nl_pid = 0; - nladdr.nl_groups = 0; - - req.n.nlmsg_seq = 0; - req.n.nlmsg_flags |= NLM_F_ACK; - - status = sendmsg(fd, &msg, 0); - if (status != req.n.nlmsg_len) { - SYS_ERR(DTUN, LOGL_ERROR, errno, "sendmsg() failed, returned %d", status); - close(fd); - return -1; - } - - status = netdev_sifflags(devname, IFF_UP | IFF_RUNNING); - if (status == -1) { - close(fd); - return -1; - } - - - close(fd); - return 0; - -#elif defined (__FreeBSD__) || defined (__APPLE__) - - int fd; - struct ifaliasreq areq; - - memset(&areq, 0, sizeof(areq)); - - /* Set up interface name */ - strncpy(areq.ifra_name, devname, IFNAMSIZ); - areq.ifra_name[IFNAMSIZ - 1] = 0; /* Make sure to terminate */ - - ((struct sockaddr_in *)&areq.ifra_addr)->sin_family = AF_INET; - ((struct sockaddr_in *)&areq.ifra_addr)->sin_len = - sizeof(areq.ifra_addr); - ((struct sockaddr_in *)&areq.ifra_addr)->sin_addr.s_addr = addr->s_addr; - - ((struct sockaddr_in *)&areq.ifra_mask)->sin_family = AF_INET; - ((struct sockaddr_in *)&areq.ifra_mask)->sin_len = - sizeof(areq.ifra_mask); - ((struct sockaddr_in *)&areq.ifra_mask)->sin_addr.s_addr = - netmask->s_addr; - - /* For some reason FreeBSD uses ifra_broadcast for specifying dstaddr */ - ((struct sockaddr_in *)&areq.ifra_broadaddr)->sin_family = AF_INET; - ((struct sockaddr_in *)&areq.ifra_broadaddr)->sin_len = - sizeof(areq.ifra_broadaddr); - ((struct sockaddr_in *)&areq.ifra_broadaddr)->sin_addr.s_addr = - dstaddr->s_addr; - - /* Create a channel to the NET kernel. */ - if ((fd = socket(AF_INET, SOCK_DGRAM, 0)) < 0) { - SYS_ERR(DTUN, LOGL_ERROR, errno, "socket() failed"); - return -1; - } - - if (ioctl(fd, SIOCAIFADDR, (void *)&areq) < 0) { - SYS_ERR(DTUN, LOGL_ERROR, errno, - "ioctl(SIOCAIFADDR) failed"); - close(fd); - return -1; - } - - close(fd); - return 0; - -#endif - -} - static int tun_addaddr4(struct tun_t *this, struct in_addr *addr, struct in_addr *dstaddr, struct in_addr *netmask) { @@ -502,161 +127,6 @@ this->addrs++; return rc; -} - -static int netdev_addaddr6(const char *devname, struct in6_addr *addr, - struct in6_addr *dstaddr, int prefixlen) -{ - -#if defined(__linux__) - struct { - struct nlmsghdr n; - struct ifaddrmsg i; - char buf[TUN_NLBUFSIZE]; - } req; - - struct sockaddr_nl local; - socklen_t addr_len; - int fd; - int status; - - struct sockaddr_nl nladdr; - struct iovec iov; - struct msghdr msg; - - memset(&req, 0, sizeof(req)); - req.n.nlmsg_len = NLMSG_LENGTH(sizeof(struct ifaddrmsg)); - req.n.nlmsg_flags = NLM_F_REQUEST | NLM_F_CREATE; - req.n.nlmsg_type = RTM_NEWADDR; - req.i.ifa_family = AF_INET6; - req.i.ifa_prefixlen = 64; /* 64 FOR IPv6 */ - req.i.ifa_flags = 0; - req.i.ifa_scope = RT_SCOPE_HOST; /* TODO or 0 */ - req.i.ifa_index = if_nametoindex(devname); - if (!req.i.ifa_index) { - SYS_ERR(DTUN, LOGL_ERROR, errno, "Unable to get ifindex for %s", devname); - return -1; - } - - tun_nlattr(&req.n, sizeof(req), IFA_ADDRESS, addr, sizeof(*addr)); - if (dstaddr) - tun_nlattr(&req.n, sizeof(req), IFA_LOCAL, dstaddr, sizeof(*dstaddr)); - - if ((fd = socket(AF_NETLINK, SOCK_RAW, NETLINK_ROUTE)) < 0) { - SYS_ERR(DTUN, LOGL_ERROR, errno, "socket() failed"); - return -1; - } - - memset(&local, 0, sizeof(local)); - local.nl_family = AF_NETLINK; - local.nl_groups = 0; - - if (bind(fd, (struct sockaddr *)&local, sizeof(local)) < 0) { - SYS_ERR(DTUN, LOGL_ERROR, errno, "bind() failed"); - close(fd); - return -1; - } - - addr_len = sizeof(local); - if (getsockname(fd, (struct sockaddr *)&local, &addr_len) < 0) { - SYS_ERR(DTUN, LOGL_ERROR, errno, - "getsockname() failed"); - close(fd); - return -1; - } - - if (addr_len != sizeof(local)) { - SYS_ERR(DTUN, LOGL_ERROR, 0, - "Wrong address length %d", addr_len); - close(fd); - return -1; - } - - if (local.nl_family != AF_NETLINK) { - SYS_ERR(DTUN, LOGL_ERROR, 0, - "Wrong address family %d", local.nl_family); - close(fd); - return -1; - } - - iov.iov_base = (void *)&req.n; - iov.iov_len = req.n.nlmsg_len; - - msg.msg_name = (void *)&nladdr; - msg.msg_namelen = sizeof(nladdr); - msg.msg_iov = &iov; - msg.msg_iovlen = 1; - msg.msg_control = NULL; - msg.msg_controllen = 0; - msg.msg_flags = 0; - - memset(&nladdr, 0, sizeof(nladdr)); - nladdr.nl_family = AF_NETLINK; - nladdr.nl_pid = 0; - nladdr.nl_groups = 0; - - req.n.nlmsg_seq = 0; - req.n.nlmsg_flags |= NLM_F_ACK; - - status = sendmsg(fd, &msg, 0); - if (status != req.n.nlmsg_len) { - SYS_ERR(DTUN, LOGL_ERROR, errno, "sendmsg() failed, returned %d", status); - close(fd); - return -1; - } - - status = netdev_sifflags(devname, IFF_UP | IFF_RUNNING); - if (status == -1) { - close(fd); - return -1; - } - - - close(fd); - return 0; - -#elif defined (__FreeBSD__) || defined (__APPLE__) - - int fd; - struct ifaliasreq areq; - - memset(&areq, 0, sizeof(areq)); - - /* Set up interface name */ - strncpy(areq.ifra_name, devname, IFNAMSIZ); - areq.ifra_name[IFNAMSIZ - 1] = 0; /* Make sure to terminate */ - - ((struct sockaddr_in6 *)&areq.ifra_addr)->sin6_family = AF_INET6; - ((struct sockaddr_in6 *)&areq.ifra_addr)->sin6_len = sizeof(areq.ifra_addr); - ((struct sockaddr_in6 *)&areq.ifra_addr)->sin6_addr.s6_addr = addr->s6_addr; - - ((struct sockaddr_in6 *)&areq.ifra_mask)->sin6_family = AF_INET6; - ((struct sockaddr_in6 *)&areq.ifra_mask)->sin6_len = sizeof(areq.ifra_mask); - ((struct sockaddr_in6 *)&areq.ifra_mask)->sin6_addr.s6_addr = netmask->s6_addr; - - /* For some reason FreeBSD uses ifra_broadcast for specifying dstaddr */ - ((struct sockaddr_in6 *)&areq.ifra_broadaddr)->sin6_family = AF_INET6; - ((struct sockaddr_in6 *)&areq.ifra_broadaddr)->sin6_len = sizeof(areq.ifra_broadaddr); - ((struct sockaddr_in6 *)&areq.ifra_broadaddr)->sin6_addr.s6_addr = dstaddr->s6_addr; - - /* Create a channel to the NET kernel. */ - if ((fd = socket(AF_INET, SOCK_DGRAM, 0)) < 0) { - SYS_ERR(DTUN, LOGL_ERROR, errno, "socket() failed"); - return -1; - } - - if (ioctl(fd, SIOCAIFADDR, (void *)&areq) < 0) { - SYS_ERR(DTUN, LOGL_ERROR, errno, - "ioctl(SIOCAIFADDR) failed"); - close(fd); - return -1; - } - - close(fd); - return 0; - -#endif - } static int tun_addaddr6(struct tun_t *this, @@ -689,115 +159,6 @@ default: return -1; } -} - -static int netdev_route(struct in_addr *dst, struct in_addr *gateway, struct in_addr *mask, int delete) -{ - -#if defined(__linux__) - - struct rtentry r; - int fd; - - memset(&r, '\0', sizeof(r)); - r.rt_flags = RTF_UP | RTF_GATEWAY; /* RTF_HOST not set */ - - /* Create a channel to the NET kernel. */ - if ((fd = socket(AF_INET, SOCK_DGRAM, 0)) < 0) { - SYS_ERR(DTUN, LOGL_ERROR, errno, "socket() failed"); - return -1; - } - - r.rt_dst.sa_family = AF_INET; - r.rt_gateway.sa_family = AF_INET; - r.rt_genmask.sa_family = AF_INET; - memcpy(&((struct sockaddr_in *)&r.rt_dst)->sin_addr, dst, sizeof(*dst)); - memcpy(&((struct sockaddr_in *)&r.rt_gateway)->sin_addr, gateway, - sizeof(*gateway)); - memcpy(&((struct sockaddr_in *)&r.rt_genmask)->sin_addr, mask, - sizeof(*mask)); - - if (delete) { - if (ioctl(fd, SIOCDELRT, (void *)&r) < 0) { - SYS_ERR(DTUN, LOGL_ERROR, errno, - "ioctl(SIOCDELRT) failed"); - close(fd); - return -1; - } - } else { - if (ioctl(fd, SIOCADDRT, (void *)&r) < 0) { - SYS_ERR(DTUN, LOGL_ERROR, errno, - "ioctl(SIOCADDRT) failed"); - close(fd); - return -1; - } - } - close(fd); - return 0; - -#elif defined(__FreeBSD__) || defined (__APPLE__) - - struct { - struct rt_msghdr rt; - struct sockaddr_in dst; - struct sockaddr_in gate; - struct sockaddr_in mask; - } req; - - int fd; - struct rt_msghdr *rtm; - - if ((fd = socket(AF_ROUTE, SOCK_RAW, 0)) == -1) { - SYS_ERR(DTUN, LOGL_ERROR, errno, "socket() failed"); - return -1; - } - - memset(&req, 0x00, sizeof(req)); - - rtm = &req.rt; - - rtm->rtm_msglen = sizeof(req); - rtm->rtm_version = RTM_VERSION; - if (delete) { - rtm->rtm_type = RTM_DELETE; - } else { - rtm->rtm_type = RTM_ADD; - } - rtm->rtm_flags = RTF_UP | RTF_GATEWAY | RTF_STATIC; /* TODO */ - rtm->rtm_addrs = RTA_DST | RTA_GATEWAY | RTA_NETMASK; - rtm->rtm_pid = getpid(); - rtm->rtm_seq = 0044; /* TODO */ - - req.dst.sin_family = AF_INET; - req.dst.sin_len = sizeof(req.dst); - req.mask.sin_family = AF_INET; - req.mask.sin_len = sizeof(req.mask); - req.gate.sin_family = AF_INET; - req.gate.sin_len = sizeof(req.gate); - - req.dst.sin_addr.s_addr = dst->s_addr; - req.mask.sin_addr.s_addr = mask->s_addr; - req.gate.sin_addr.s_addr = gateway->s_addr; - - if (write(fd, rtm, rtm->rtm_msglen) < 0) { - SYS_ERR(DTUN, LOGL_ERROR, errno, "write() failed"); - close(fd); - return -1; - } - close(fd); - return 0; -#endif - -} - -int netdev_addroute(struct in_addr *dst, struct in_addr *gateway, struct in_addr *mask) -{ - return netdev_route(dst, gateway, mask, 0); -} - -int netdev_delroute(struct in_addr *dst, struct in_addr *gateway, struct in_addr *mask) -{ - return netdev_route(dst, gateway, mask, 1); } int tun_new(struct tun_t **tun, const char *dev_name) @@ -964,79 +325,6 @@ return -1; } return 0; -} - -#include - -/*! Obtain the local address of a network device - * \param[in] devname Target device owning the IP - * \param[out] prefix_list List of prefix structures to fill with each IPv4/6 and prefix length found. - * \param[in] prefix_size Amount of elements allowed to be fill in the prefix_list array. - * \param[in] flags Specify which kind of IP to look for: IP_TYPE_IPv4, IP_TYPE_IPv6_LINK, IP_TYPE_IPv6_NONLINK - * \returns The number of ips found following the criteria specified by flags, -1 on error. - * - * This function will fill prefix_list with up to prefix_size IPs following the - * criteria specified by flags parameter. It returns the number of IPs matching - * the criteria. As a result, the number returned can be bigger than - * prefix_size. It can be used with prefix_size=0 to get an estimate of the size - * needed for prefix_list. - */ -int netdev_ip_local_get(const char *devname, struct in46_prefix *prefix_list, size_t prefix_size, int flags) -{ - static const uint8_t ll_prefix[] = { 0xfe,0x80, 0,0, 0,0, 0,0 }; - struct ifaddrs *ifaddr, *ifa; - struct in46_addr netmask; - size_t count = 0; - bool is_ipv6_ll; - - if (getifaddrs(&ifaddr) == -1) { - return -1; - } - - for (ifa = ifaddr; ifa != NULL; ifa = ifa->ifa_next) { - if (ifa->ifa_addr == NULL) - continue; - - if (strcmp(ifa->ifa_name, devname)) - continue; - - if (ifa->ifa_addr->sa_family == AF_INET && (flags & IP_TYPE_IPv4)) { - struct sockaddr_in *sin4 = (struct sockaddr_in *) ifa->ifa_addr; - struct sockaddr_in *netmask4 = (struct sockaddr_in *) ifa->ifa_netmask; - - if (count < prefix_size) { - netmask.len = sizeof(netmask4->sin_addr); - netmask.v4 = netmask4->sin_addr; - prefix_list[count].addr.len = sizeof(sin4->sin_addr); - prefix_list[count].addr.v4 = sin4->sin_addr; - prefix_list[count].prefixlen = in46a_netmasklen(&netmask); - } - count++; - } - - if (ifa->ifa_addr->sa_family == AF_INET6 && (flags & IP_TYPE_IPv6)) { - struct sockaddr_in6 *sin6 = (struct sockaddr_in6 *) ifa->ifa_addr; - struct sockaddr_in6 *netmask6 = (struct sockaddr_in6 *) ifa->ifa_netmask; - - is_ipv6_ll = !memcmp(sin6->sin6_addr.s6_addr, ll_prefix, sizeof(ll_prefix)); - if ((flags & IP_TYPE_IPv6_NONLINK) && is_ipv6_ll) - continue; - if ((flags & IP_TYPE_IPv6_LINK) && !is_ipv6_ll) - continue; - - if (count < prefix_size) { - netmask.len = sizeof(netmask6->sin6_addr); - netmask.v6 = netmask6->sin6_addr; - prefix_list[count].addr.len = sizeof(sin6->sin6_addr); - prefix_list[count].addr.v6 = sin6->sin6_addr; - prefix_list[count].prefixlen = in46a_netmasklen(&netmask); - } - count++; - } - } - - freeifaddrs(ifaddr); - return count; } /*! Obtain the local address of the tun device. diff --git a/lib/tun.h b/lib/tun.h index af9e9f4..c9e8e34 100644 --- a/lib/tun.h +++ b/lib/tun.h @@ -1,7 +1,7 @@ /* * TUN interface functions. * Copyright (C) 2002, 2003 Mondru AB. - * Copyright (C) 2017 by Harald Welte + * Copyright (C) 2017-2018 by Harald Welte * * The contents of this file may be used under the terms of the GNU * General Public License Version 2, provided that the above copyright @@ -20,43 +20,9 @@ #define PACKET_MAX 8196 /* Maximum packet size we receive */ #define TUN_SCRIPTSIZE 256 #define TUN_ADDRSIZE 128 -#define TUN_NLBUFSIZE 1024 #include "config.h" - -/* ipv6 ip type flags for tun_ipv6_local_get() */ -enum { - IP_TYPE_IPv4 = 1, - IP_TYPE_IPv6_LINK = 2, - IP_TYPE_IPv6_NONLINK = 4, -}; -#define IP_TYPE_IPv6 (IP_TYPE_IPv6_LINK | IP_TYPE_IPv6_NONLINK) - - -#ifndef HAVE_IPHDR -struct iphdr - { -#if __BYTE_ORDER == __LITTLE_ENDIAN - unsigned int ihl:4; - unsigned int version:4; -#elif __BYTE_ORDER == __BIG_ENDIAN - unsigned int version:4; - unsigned int ihl:4; -#else -# error "Please fix " -#endif - u_int8_t tos; - u_int16_t tot_len; - u_int16_t id; - u_int16_t frag_off; - u_int8_t ttl; - u_int8_t protocol; - u_int16_t check; - u_int32_t saddr; - u_int32_t daddr; - /*The options start here. */ - }; -#endif /* !HAVE_IPHDR */ +#include "netdev.h" /* *********************************************************** * Information storage for each tun instance @@ -86,16 +52,11 @@ extern int tun_setaddr(struct tun_t *this, struct in46_addr *our_adr, struct in46_addr *his_adr, size_t prefixlen); -int netdev_addroute(struct in_addr *dst, struct in_addr *gateway, struct in_addr *mask); - extern int tun_set_cb_ind(struct tun_t *this, int (*cb_ind) (struct tun_t * tun, void *pack, unsigned len)); extern int tun_runscript(struct tun_t *tun, char *script); - -int netdev_ip_local_get(const char *devname, struct in46_prefix *prefix_list, - size_t prefix_size, int flags); int tun_ip_local_get(const struct tun_t *tun, struct in46_prefix *prefix_list, size_t prefix_size, int flags); -- To view, visit https://gerrit.osmocom.org/7923 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: Ib021e392637a43d5cf1b40e0d50621fe7e854ba5 Gerrit-PatchSet: 2 Gerrit-Project: osmo-ggsn Gerrit-Branch: master Gerrit-Owner: Harald Welte Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Pau Espin Pedrol From gerrit-no-reply at lists.osmocom.org Wed Apr 25 19:47:34 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Wed, 25 Apr 2018 19:47:34 +0000 Subject: [MERGED] osmo-ggsn[master]: lib/tun.c: Generalize tun_{set, add}addr*() functions In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: lib/tun.c: Generalize tun_{set,add}addr*() functions ...................................................................... lib/tun.c: Generalize tun_{set,add}addr*() functions There's nothing really tun-specific about the adding and removing of addresses to network devices. Let's generalize the related code. Change-Id: I139a950dd81a4b1199953be1608cd109a060f562 --- M lib/tun.c 1 file changed, 98 insertions(+), 51 deletions(-) Approvals: Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/lib/tun.c b/lib/tun.c index 14e4a58..d2a80be 100644 --- a/lib/tun.c +++ b/lib/tun.c @@ -102,8 +102,8 @@ return 0; } -static int tun_setaddr4(struct tun_t *this, struct in_addr *addr, - struct in_addr *dstaddr, struct in_addr *netmask) +static int netdev_setaddr4(const char *devname, struct in_addr *addr, + struct in_addr *dstaddr, struct in_addr *netmask) { struct ifreq ifr; int fd; @@ -122,7 +122,7 @@ sizeof(struct sockaddr_in); #endif - strncpy(ifr.ifr_name, this->devname, IFNAMSIZ); + strncpy(ifr.ifr_name, devname, IFNAMSIZ); ifr.ifr_name[IFNAMSIZ - 1] = 0; /* Make sure to terminate */ /* Create a channel to the NET kernel. */ @@ -132,7 +132,6 @@ } if (addr) { /* Set the interface address */ - this->addr.s_addr = addr->s_addr; memcpy(&((struct sockaddr_in *)&ifr.ifr_addr)->sin_addr, addr, sizeof(*addr)); if (ioctl(fd, SIOCSIFADDR, (void *)&ifr) < 0) { @@ -149,7 +148,6 @@ } if (dstaddr) { /* Set the destination address */ - this->dstaddr.s_addr = dstaddr->s_addr; memcpy(&((struct sockaddr_in *)&ifr.ifr_dstaddr)->sin_addr, dstaddr, sizeof(*dstaddr)); if (ioctl(fd, SIOCSIFDSTADDR, (caddr_t) & ifr) < 0) { @@ -161,7 +159,6 @@ } if (netmask) { /* Set the netmask */ - this->netmask.s_addr = netmask->s_addr; #if defined(__linux__) memcpy(&((struct sockaddr_in *)&ifr.ifr_netmask)->sin_addr, netmask, sizeof(*netmask)); @@ -180,25 +177,45 @@ } close(fd); - this->addrs++; /* On linux the route to the interface is set automatically on FreeBSD we have to do this manually */ /* TODO: How does it work on Solaris? */ - netdev_sifflags(this->devname, IFF_UP | IFF_RUNNING); + netdev_sifflags(devname, IFF_UP | IFF_RUNNING); #if defined(__FreeBSD__) || defined (__APPLE__) - tun_addroute(this, dstaddr, addr, &this->netmask); - this->routes = 1; + netdev_addroute(dstaddr, addr, &this->netmask); #endif return 0; } -static int tun_setaddr6(struct tun_t *this, struct in6_addr *addr, struct in6_addr *dstaddr, - size_t prefixlen) +static int tun_setaddr4(struct tun_t *this, struct in_addr *addr, + struct in_addr *dstaddr, struct in_addr *netmask) +{ + int rc; + rc = netdev_setaddr4(this->devname, addr, dstaddr, netmask); + if (rc < 0) + return rc; + + if (addr) + this->addr.s_addr = addr->s_addr; + if (dstaddr) + this->dstaddr.s_addr = dstaddr->s_addr; + if (netmask) + this->netmask.s_addr = netmask->s_addr; + this->addrs++; +#if defined(__FreeBSD__) || defined (__APPLE__) + this->routes = 1; +#endif + + return rc; +} + +static int netdev_setaddr6(const char *devname, struct in6_addr *addr, struct in6_addr *dstaddr, + size_t prefixlen) { struct in6_ifreq ifr; int fd; @@ -207,13 +224,13 @@ #if defined(__linux__) ifr.ifr6_prefixlen = prefixlen; - ifr.ifr6_ifindex = if_nametoindex(this->devname); + ifr.ifr6_ifindex = if_nametoindex(devname); if (ifr.ifr6_ifindex == 0) { - SYS_ERR(DTUN, LOGL_ERROR, 0, "Error getting ifindex for %s\n", this->devname); + SYS_ERR(DTUN, LOGL_ERROR, 0, "Error getting ifindex for %s\n", devname); return -1; } #elif defined(__FreeBSD__) || defined (__APPLE__) - strncpy(ifr.ifr_name, this->devname, IFNAMSIZ); + strncpy(ifr.ifr_name, devname, IFNAMSIZ); #endif /* Create a channel to the NET kernel */ @@ -239,7 +256,6 @@ #if 0 /* FIXME: looks like this is not possible/necessary for IPv6? */ if (dstaddr) { - memcpy(&this->dstaddr, dstaddr, sizeof(*dstaddr)); memcpy(&ifr.ifr6_addr, dstaddr, sizeof(*dstaddr)); if (ioctl(fd, SIOCSIFDSTADDR, (caddr_t *) &ifr) < 0) { SYS_ERR(DTUN, LOGL_ERROR, "ioctl(SIOCSIFDSTADDR) failed"); @@ -263,22 +279,37 @@ #endif close(fd); - this->addrs++; /* On linux the route to the interface is set automatically on FreeBSD we have to do this manually */ /* TODO: How does it work on Solaris? */ - netdev_sifflags(this->devname, IFF_UP | IFF_RUNNING); + netdev_sifflags(devname, IFF_UP | IFF_RUNNING); #if 0 /* FIXME */ //#if defined(__FreeBSD__) || defined (__APPLE__) netdev_addroute6(dstaddr, addr, prefixlen); - this->routes = 1; #endif return 0; +} + +static int tun_setaddr6(struct tun_t *this, struct in6_addr *addr, struct in6_addr *dstaddr, + size_t prefixlen) +{ + int rc; + rc = netdev_setaddr6(this->devname, addr, dstaddr, prefixlen); + if (rc < 0) + return rc; + if (dstaddr) + memcpy(&this->dstaddr, dstaddr, sizeof(*dstaddr)); + this->addrs++; +#if defined(__FreeBSD__) || defined (__APPLE__) + this->routes = 1; +#endif + + return rc; } int tun_setaddr(struct tun_t *this, struct in46_addr *addr, struct in46_addr *dstaddr, size_t prefixlen) @@ -295,9 +326,8 @@ } } -static int tun_addaddr4(struct tun_t *this, - struct in_addr *addr, - struct in_addr *dstaddr, struct in_addr *netmask) +static int netdev_addaddr4(const char *devname, struct in_addr *addr, + struct in_addr *dstaddr, struct in_addr *netmask) { #if defined(__linux__) @@ -316,9 +346,6 @@ struct iovec iov; struct msghdr msg; - if (!this->addrs) /* Use ioctl for first addr to make ping work */ - return tun_setaddr4(this, addr, dstaddr, netmask); - memset(&req, 0, sizeof(req)); req.n.nlmsg_len = NLMSG_LENGTH(sizeof(struct ifaddrmsg)); req.n.nlmsg_flags = NLM_F_REQUEST | NLM_F_CREATE; @@ -327,9 +354,9 @@ req.i.ifa_prefixlen = 32; /* 32 FOR IPv4 */ req.i.ifa_flags = 0; req.i.ifa_scope = RT_SCOPE_HOST; /* TODO or 0 */ - req.i.ifa_index = if_nametoindex(this->devname); + req.i.ifa_index = if_nametoindex(devname); if (!req.i.ifa_index) { - SYS_ERR(DTUN, LOGL_ERROR, errno, "Unable to get ifindex for %s", this->devname); + SYS_ERR(DTUN, LOGL_ERROR, errno, "Unable to get ifindex for %s", devname); return -1; } @@ -400,7 +427,7 @@ return -1; } - status = netdev_sifflags(this->devname, IFF_UP | IFF_RUNNING); + status = netdev_sifflags(devname, IFF_UP | IFF_RUNNING); if (status == -1) { close(fd); return -1; @@ -408,7 +435,6 @@ close(fd); - this->addrs++; return 0; #elif defined (__FreeBSD__) || defined (__APPLE__) @@ -416,14 +442,10 @@ int fd; struct ifaliasreq areq; - /* TODO: Is this needed on FreeBSD? */ - if (!this->addrs) /* Use ioctl for first addr to make ping work */ - return tun_setaddr4(this, addr, dstaddr, netmask); /* TODO dstaddr */ - memset(&areq, 0, sizeof(areq)); /* Set up interface name */ - strncpy(areq.ifra_name, this->devname, IFNAMSIZ); + strncpy(areq.ifra_name, devname, IFNAMSIZ); areq.ifra_name[IFNAMSIZ - 1] = 0; /* Make sure to terminate */ ((struct sockaddr_in *)&areq.ifra_addr)->sin_family = AF_INET; @@ -458,16 +480,32 @@ } close(fd); - this->addrs++; return 0; #endif } -static int tun_addaddr6(struct tun_t *this, - struct in6_addr *addr, - struct in6_addr *dstaddr, int prefixlen) +static int tun_addaddr4(struct tun_t *this, struct in_addr *addr, + struct in_addr *dstaddr, struct in_addr *netmask) +{ + int rc; + + /* TODO: Is this needed on FreeBSD? */ + if (!this->addrs) /* Use ioctl for first addr to make ping work */ + return tun_setaddr4(this, addr, dstaddr, netmask); /* TODO dstaddr */ + + rc = netdev_addaddr4(this->devname, addr, dstaddr, netmask); + if (rc < 0) + return rc; + + this->addrs++; + + return rc; +} + +static int netdev_addaddr6(const char *devname, struct in6_addr *addr, + struct in6_addr *dstaddr, int prefixlen) { #if defined(__linux__) @@ -486,9 +524,6 @@ struct iovec iov; struct msghdr msg; - if (!this->addrs) /* Use ioctl for first addr to make ping work */ - return tun_setaddr6(this, addr, dstaddr, prefixlen); - memset(&req, 0, sizeof(req)); req.n.nlmsg_len = NLMSG_LENGTH(sizeof(struct ifaddrmsg)); req.n.nlmsg_flags = NLM_F_REQUEST | NLM_F_CREATE; @@ -497,9 +532,9 @@ req.i.ifa_prefixlen = 64; /* 64 FOR IPv6 */ req.i.ifa_flags = 0; req.i.ifa_scope = RT_SCOPE_HOST; /* TODO or 0 */ - req.i.ifa_index = if_nametoindex(this->devname); + req.i.ifa_index = if_nametoindex(devname); if (!req.i.ifa_index) { - SYS_ERR(DTUN, LOGL_ERROR, errno, "Unable to get ifindex for %s", this->devname); + SYS_ERR(DTUN, LOGL_ERROR, errno, "Unable to get ifindex for %s", devname); return -1; } @@ -570,7 +605,7 @@ return -1; } - status = netdev_sifflags(this->devname, IFF_UP | IFF_RUNNING); + status = netdev_sifflags(devname, IFF_UP | IFF_RUNNING); if (status == -1) { close(fd); return -1; @@ -578,7 +613,6 @@ close(fd); - this->addrs++; return 0; #elif defined (__FreeBSD__) || defined (__APPLE__) @@ -586,14 +620,10 @@ int fd; struct ifaliasreq areq; - /* TODO: Is this needed on FreeBSD? */ - if (!this->addrs) /* Use ioctl for first addr to make ping work */ - return tun_setaddr6(this, addr, dstaddr, netmask); /* TODO dstaddr */ - memset(&areq, 0, sizeof(areq)); /* Set up interface name */ - strncpy(areq.ifra_name, this->devname, IFNAMSIZ); + strncpy(areq.ifra_name, devname, IFNAMSIZ); areq.ifra_name[IFNAMSIZ - 1] = 0; /* Make sure to terminate */ ((struct sockaddr_in6 *)&areq.ifra_addr)->sin6_family = AF_INET6; @@ -623,13 +653,30 @@ } close(fd); - this->addrs++; return 0; #endif } +static int tun_addaddr6(struct tun_t *this, + struct in6_addr *addr, + struct in6_addr *dstaddr, int prefixlen) +{ + int rc; + + if (!this->addrs) /* Use ioctl for first addr to make ping work */ + return tun_setaddr6(this, addr, dstaddr, prefixlen); + + rc = netdev_addaddr6(this->devname, addr, dstaddr, prefixlen); + if (rc < 0) + return rc; + + this->addrs++; + + return rc; +} + int tun_addaddr(struct tun_t *this, struct in46_addr *addr, struct in46_addr *dstaddr, size_t prefixlen) { struct in_addr netmask; -- To view, visit https://gerrit.osmocom.org/7922 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: I139a950dd81a4b1199953be1608cd109a060f562 Gerrit-PatchSet: 2 Gerrit-Project: osmo-ggsn Gerrit-Branch: master Gerrit-Owner: Harald Welte Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Pau Espin Pedrol From gerrit-no-reply at lists.osmocom.org Wed Apr 25 19:47:47 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Wed, 25 Apr 2018 19:47:47 +0000 Subject: osmo-ggsn[master]: sgsnemu: Convert from tun_setaddr() to tun_addaddr() In-Reply-To: References: Message-ID: Patch Set 2: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7926 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Ia301d6a4ee3d02c1af1c85f2fe1041d3013268b0 Gerrit-PatchSet: 2 Gerrit-Project: osmo-ggsn Gerrit-Branch: master Gerrit-Owner: Harald Welte Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Pau Espin Pedrol Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Wed Apr 25 19:49:47 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Wed, 25 Apr 2018 19:49:47 +0000 Subject: [MERGED] osmo-ggsn[master]: lib/netdev.c: Cosmetic changes (coding style / cleanups) In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: lib/netdev.c: Cosmetic changes (coding style / cleanups) ...................................................................... lib/netdev.c: Cosmetic changes (coding style / cleanups) Change-Id: I60cbca616a4f727e2374c52715f9286a0f4c5e4b --- M lib/netdev.c 1 file changed, 11 insertions(+), 50 deletions(-) Approvals: Pau Espin Pedrol: Looks good to me, but someone else must approve Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/lib/netdev.c b/lib/netdev.c index eff808d..0011588 100644 --- a/lib/netdev.c +++ b/lib/netdev.c @@ -109,7 +109,6 @@ #if defined(__linux__) ifr.ifr_netmask.sa_family = AF_INET; - #elif defined(__FreeBSD__) || defined (__APPLE__) ((struct sockaddr_in *)&ifr.ifr_addr)->sin_len = sizeof(struct sockaddr_in); @@ -157,7 +156,6 @@ #if defined(__linux__) memcpy(&((struct sockaddr_in *)&ifr.ifr_netmask)->sin_addr, netmask, sizeof(*netmask)); - #elif defined(__FreeBSD__) || defined (__APPLE__) ((struct sockaddr_in *)&ifr.ifr_addr)->sin_addr.s_addr = netmask->s_addr; @@ -173,13 +171,10 @@ close(fd); - /* On linux the route to the interface is set automatically - on FreeBSD we have to do this manually */ - - /* TODO: How does it work on Solaris? */ - netdev_sifflags(devname, IFF_UP | IFF_RUNNING); + /* On linux the route to the interface is set automatically + on FreeBSD we have to do this manually */ #if defined(__FreeBSD__) || defined (__APPLE__) netdev_addroute(dstaddr, addr, &this->netmask); #endif @@ -253,13 +248,10 @@ close(fd); - /* On linux the route to the interface is set automatically - on FreeBSD we have to do this manually */ - - /* TODO: How does it work on Solaris? */ - netdev_sifflags(devname, IFF_UP | IFF_RUNNING); + /* On linux the route to the interface is set automatically + on FreeBSD we have to do this manually */ #if 0 /* FIXME */ //#if defined(__FreeBSD__) || defined (__APPLE__) netdev_addroute6(dstaddr, addr, prefixlen); @@ -271,7 +263,7 @@ int netdev_addaddr4(const char *devname, struct in_addr *addr, struct in_addr *dstaddr, struct in_addr *netmask) { - + int fd; #if defined(__linux__) struct { struct nlmsghdr n; @@ -281,7 +273,6 @@ struct sockaddr_nl local; socklen_t addr_len; - int fd; int status; struct sockaddr_nl nladdr; @@ -374,14 +365,7 @@ close(fd); return -1; } - - - close(fd); - return 0; - #elif defined (__FreeBSD__) || defined (__APPLE__) - - int fd; struct ifaliasreq areq; memset(&areq, 0, sizeof(areq)); @@ -420,18 +404,15 @@ close(fd); return -1; } - +#endif close(fd); return 0; - -#endif - } int netdev_addaddr6(const char *devname, struct in6_addr *addr, struct in6_addr *dstaddr, int prefixlen) { - + int fd; #if defined(__linux__) struct { struct nlmsghdr n; @@ -441,7 +422,6 @@ struct sockaddr_nl local; socklen_t addr_len; - int fd; int status; struct sockaddr_nl nladdr; @@ -534,14 +514,7 @@ close(fd); return -1; } - - - close(fd); - return 0; - #elif defined (__FreeBSD__) || defined (__APPLE__) - - int fd; struct ifaliasreq areq; memset(&areq, 0, sizeof(areq)); @@ -575,21 +548,16 @@ close(fd); return -1; } - +#endif close(fd); return 0; - -#endif - } static int netdev_route(struct in_addr *dst, struct in_addr *gateway, struct in_addr *mask, int delete) { - -#if defined(__linux__) - - struct rtentry r; int fd; +#if defined(__linux__) + struct rtentry r; memset(&r, '\0', sizeof(r)); r.rt_flags = RTF_UP | RTF_GATEWAY; /* RTF_HOST not set */ @@ -624,19 +592,13 @@ return -1; } } - close(fd); - return 0; - #elif defined(__FreeBSD__) || defined (__APPLE__) - struct { struct rt_msghdr rt; struct sockaddr_in dst; struct sockaddr_in gate; struct sockaddr_in mask; } req; - - int fd; struct rt_msghdr *rtm; if ((fd = socket(AF_ROUTE, SOCK_RAW, 0)) == -1) { @@ -676,10 +638,9 @@ close(fd); return -1; } +#endif close(fd); return 0; -#endif - } int netdev_addroute(struct in_addr *dst, struct in_addr *gateway, struct in_addr *mask) -- To view, visit https://gerrit.osmocom.org/7924 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: I60cbca616a4f727e2374c52715f9286a0f4c5e4b Gerrit-PatchSet: 2 Gerrit-Project: osmo-ggsn Gerrit-Branch: master Gerrit-Owner: Harald Welte Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Pau Espin Pedrol From gerrit-no-reply at lists.osmocom.org Wed Apr 25 20:22:06 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Wed, 25 Apr 2018 20:22:06 +0000 Subject: [MERGED] osmo-ggsn[master]: ggsn: don't use gtp_kernel_tunnel_{add, del}() for userspace tun In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: ggsn: don't use gtp_kernel_tunnel_{add,del}() for userspace tun ...................................................................... ggsn: don't use gtp_kernel_tunnel_{add,del}() for userspace tun Change-Id: I00cc8eb8c4d44532f975f78783ff4e12814b3416 --- M ggsn/ggsn.c 1 file changed, 6 insertions(+), 4 deletions(-) Approvals: Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/ggsn/ggsn.c b/ggsn/ggsn.c index 4636c04..72bf61c 100644 --- a/ggsn/ggsn.c +++ b/ggsn/ggsn.c @@ -380,9 +380,11 @@ LOGPPDP(LOGL_ERROR, pdp, "Cannot find/free IP Pool member\n"); } - if (gtp_kernel_tunnel_del(pdp, apn->tun.cfg.dev_name)) { - LOGPPDP(LOGL_ERROR, pdp, "Cannot delete tunnel from kernel:%s\n", - strerror(errno)); + if (apn->cfg.gtpu_mode == APN_GTPU_MODE_KERNEL_GTP) { + if (gtp_kernel_tunnel_del(pdp, apn->tun.cfg.dev_name)) { + LOGPPDP(LOGL_ERROR, pdp, "Cannot delete tunnel from kernel:%s\n", + strerror(errno)); + } } return 0; @@ -688,7 +690,7 @@ in46a_to_eua(addr, num_addr, &pdp->eua); - if (apn_supports_ipv4(apn)) { + if (apn->cfg.gtpu_mode == APN_GTPU_MODE_KERNEL_GTP && apn_supports_ipv4(apn)) { /* TODO: In IPv6, EUA doesn't contain the actual IP addr/prefix! */ if (gtp_kernel_tunnel_add(pdp, apn->tun.cfg.dev_name) < 0) { LOGPPDP(LOGL_ERROR, pdp, "Cannot add tunnel to kernel: %s\n", strerror(errno)); -- To view, visit https://gerrit.osmocom.org/7931 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: I00cc8eb8c4d44532f975f78783ff4e12814b3416 Gerrit-PatchSet: 1 Gerrit-Project: osmo-ggsn Gerrit-Branch: master Gerrit-Owner: Harald Welte Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder From gerrit-no-reply at lists.osmocom.org Wed Apr 25 20:22:05 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Wed, 25 Apr 2018 20:22:05 +0000 Subject: [MERGED] osmo-ggsn[master]: Move kernel GTP support from ggsn/ to lib/ In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: Move kernel GTP support from ggsn/ to lib/ ...................................................................... Move kernel GTP support from ggsn/ to lib/ This way, the IP address / route handling between TUN devices and kernel GTP can be shared, which will provide not only a unified codebase but also a more consistent behavior. This also paves the road for to use kernel GTP from sgsnemu in the future. Related: OS#3214 Change-Id: Ic53a971136edd0d8871fbd6746d7b0090ce3a188 --- M ggsn/Makefile.am M ggsn/ggsn.c M lib/Makefile.am R lib/gtp-kernel.c R lib/gtp-kernel.h M lib/tun.c M lib/tun.h M sgsnemu/Makefile.am M sgsnemu/sgsnemu.c 9 files changed, 151 insertions(+), 148 deletions(-) Approvals: Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/ggsn/Makefile.am b/ggsn/Makefile.am index 6b2232f..eca385f 100644 --- a/ggsn/Makefile.am +++ b/ggsn/Makefile.am @@ -12,8 +12,4 @@ endif osmo_ggsn_DEPENDENCIES = ../gtp/libgtp.la ../lib/libmisc.a -osmo_ggsn_SOURCES = ggsn_vty.c ggsn.c ggsn.h gtp-kernel.h icmpv6.c icmpv6.h checksum.c checksum.h - -if ENABLE_GTP_KERNEL -osmo_ggsn_SOURCES += gtp-kernel.c -endif +osmo_ggsn_SOURCES = ggsn_vty.c ggsn.c ggsn.h icmpv6.c icmpv6.h checksum.c checksum.h diff --git a/ggsn/ggsn.c b/ggsn/ggsn.c index 85a2211..4636c04 100644 --- a/ggsn/ggsn.c +++ b/ggsn/ggsn.c @@ -63,9 +63,9 @@ #include "../lib/ippool.h" #include "../lib/syserr.h" #include "../lib/in46_addr.h" +#include "../lib/gtp-kernel.h" #include "../gtp/pdp.h" #include "../gtp/gtp.h" -#include "gtp-kernel.h" #include "icmpv6.h" #include "ggsn.h" @@ -125,13 +125,14 @@ LOGPAPN( LOGL_INFO, apn, "Running %s\n", apn->tun.cfg.ipdown_script); tun_runscript(apn->tun.tun, apn->tun.cfg.ipdown_script); } - /* release tun device */ - LOGPAPN(LOGL_INFO, apn, "Closing TUN device %s\n", apn->tun.tun->devname); - osmo_fd_unregister(&apn->tun.fd); + if (apn->cfg.gtpu_mode == APN_GTPU_MODE_TUN) { + /* release tun device */ + LOGPAPN(LOGL_INFO, apn, "Closing TUN device %s\n", apn->tun.tun->devname); + osmo_fd_unregister(&apn->tun.fd); + } tun_free(apn->tun.tun); apn->tun.tun = NULL; } - gtp_kernel_stop(apn->tun.cfg.dev_name); if (apn->v4.pool) { LOGPAPN(LOGL_INFO, apn, "Releasing IPv4 pool\n"); @@ -195,6 +196,7 @@ struct in46_prefix ipv6_tun_linklocal_ip; struct in46_prefix *blacklist; int blacklist_size; + struct gsn_t *gsn = apn->ggsn->gsn; int rc; if (apn->started) @@ -204,7 +206,7 @@ switch (apn->cfg.gtpu_mode) { case APN_GTPU_MODE_TUN: LOGPAPN(LOGL_INFO, apn, "Opening TUN device %s\n", apn->tun.cfg.dev_name); - if (tun_new(&apn->tun.tun, apn->tun.cfg.dev_name)) { + if (tun_new(&apn->tun.tun, apn->tun.cfg.dev_name, false, -1, -1)) { LOGPAPN(LOGL_ERROR, apn, "Failed to configure tun device\n"); return -1; } @@ -216,66 +218,6 @@ /* Set TUN library callback */ tun_set_cb_ind(apn->tun.tun, cb_tun_ind); - - if (apn->v4.cfg.ifconfig_prefix.addr.len) { - LOGPAPN(LOGL_INFO, apn, "Setting tun IP address %s\n", - in46p_ntoa(&apn->v4.cfg.ifconfig_prefix)); - if (tun_addaddr(apn->tun.tun, &apn->v4.cfg.ifconfig_prefix.addr, NULL, - apn->v4.cfg.ifconfig_prefix.prefixlen)) { - LOGPAPN(LOGL_ERROR, apn, "Failed to set tun IPv4 address %s: %s\n", - in46p_ntoa(&apn->v4.cfg.ifconfig_prefix), strerror(errno)); - apn_stop(apn, false); - return -1; - } - } - - if (apn->v6.cfg.ifconfig_prefix.addr.len) { - LOGPAPN(LOGL_INFO, apn, "Setting tun IPv6 address %s\n", - in46p_ntoa(&apn->v6.cfg.ifconfig_prefix)); - if (tun_addaddr(apn->tun.tun, &apn->v6.cfg.ifconfig_prefix.addr, NULL, - apn->v6.cfg.ifconfig_prefix.prefixlen)) { - LOGPAPN(LOGL_ERROR, apn, "Failed to set tun IPv6 address %s: %s. " - "Ensure you have ipv6 support and not used the disable_ipv6 sysctl?\n", - in46p_ntoa(&apn->v6.cfg.ifconfig_prefix), strerror(errno)); - apn_stop(apn, false); - return -1; - } - } - - if (apn->v6.cfg.ll_prefix.addr.len) { - LOGPAPN(LOGL_INFO, apn, "Setting tun IPv6 link-local address %s\n", - in46p_ntoa(&apn->v6.cfg.ll_prefix)); - if (tun_addaddr(apn->tun.tun, &apn->v6.cfg.ll_prefix.addr, NULL, - apn->v6.cfg.ll_prefix.prefixlen)) { - LOGPAPN(LOGL_ERROR, apn, "Failed to set tun IPv6 link-local address %s: %s. " - "Ensure you have ipv6 support and not used the disable_ipv6 sysctl?\n", - in46p_ntoa(&apn->v6.cfg.ll_prefix), strerror(errno)); - apn_stop(apn, false); - return -1; - } - apn->v6_lladdr = apn->v6.cfg.ll_prefix.addr.v6; - } - - if (apn->tun.cfg.ipup_script) { - LOGPAPN(LOGL_INFO, apn, "Running ip-up script %s\n", - apn->tun.cfg.ipup_script); - tun_runscript(apn->tun.tun, apn->tun.cfg.ipup_script); - } - - if (apn->cfg.apn_type_mask & (APN_TYPE_IPv6|APN_TYPE_IPv4v6) && - apn->v6.cfg.ll_prefix.addr.len == 0) { - rc = tun_ip_local_get(apn->tun.tun, &ipv6_tun_linklocal_ip, 1, IP_TYPE_IPv6_LINK); - if (rc < 1) { - LOGPAPN(LOGL_ERROR, apn, "Cannot obtain IPv6 link-local address of interface: %s\n", - rc ? strerror(errno) : "tun interface has no link-local IP assigned"); - apn_stop(apn, false); - return -1; - } - apn->v6_lladdr = ipv6_tun_linklocal_ip.addr.v6; - } - - /* set back-pointer from TUN device to APN */ - apn->tun.tun->priv = apn; break; case APN_GTPU_MODE_KERNEL_GTP: LOGPAPN(LOGL_INFO, apn, "Opening Kernel GTP device %s\n", apn->tun.cfg.dev_name); @@ -284,7 +226,7 @@ apn_stop(apn, false); return -1; } - if (apn->ggsn->gsn == NULL) { + if (gsn == NULL) { /* skip bringing up the APN now if the GSN is not initialized yet. * This happens during initial load of the config file, as the * "no shutdown" in the ggsn node only happens after the "apn" nodes @@ -293,8 +235,8 @@ return 0; } /* use GTP kernel module for data packet encapsulation */ - if (gtp_kernel_init(apn->ggsn->gsn, apn->tun.cfg.dev_name, - &apn->v4.cfg.ifconfig_prefix, apn->tun.cfg.ipup_script) < 0) { + if (tun_new(&apn->tun.tun, apn->tun.cfg.dev_name, true, gsn->fd0, gsn->fd1u)) { + LOGPAPN(LOGL_ERROR, apn, "Failed to configure Kernel GTP device\n"); return -1; } break; @@ -303,6 +245,68 @@ return -1; } + /* common initialization below */ + + /* set back-pointer from TUN device to APN */ + apn->tun.tun->priv = apn; + + if (apn->v4.cfg.ifconfig_prefix.addr.len) { + LOGPAPN(LOGL_INFO, apn, "Setting tun IP address %s\n", + in46p_ntoa(&apn->v4.cfg.ifconfig_prefix)); + if (tun_addaddr(apn->tun.tun, &apn->v4.cfg.ifconfig_prefix.addr, NULL, + apn->v4.cfg.ifconfig_prefix.prefixlen)) { + LOGPAPN(LOGL_ERROR, apn, "Failed to set tun IPv4 address %s: %s\n", + in46p_ntoa(&apn->v4.cfg.ifconfig_prefix), strerror(errno)); + apn_stop(apn, false); + return -1; + } + } + + if (apn->v6.cfg.ifconfig_prefix.addr.len) { + LOGPAPN(LOGL_INFO, apn, "Setting tun IPv6 address %s\n", + in46p_ntoa(&apn->v6.cfg.ifconfig_prefix)); + if (tun_addaddr(apn->tun.tun, &apn->v6.cfg.ifconfig_prefix.addr, NULL, + apn->v6.cfg.ifconfig_prefix.prefixlen)) { + LOGPAPN(LOGL_ERROR, apn, "Failed to set tun IPv6 address %s: %s. " + "Ensure you have ipv6 support and not used the disable_ipv6 sysctl?\n", + in46p_ntoa(&apn->v6.cfg.ifconfig_prefix), strerror(errno)); + apn_stop(apn, false); + return -1; + } + } + + if (apn->v6.cfg.ll_prefix.addr.len) { + LOGPAPN(LOGL_INFO, apn, "Setting tun IPv6 link-local address %s\n", + in46p_ntoa(&apn->v6.cfg.ll_prefix)); + if (tun_addaddr(apn->tun.tun, &apn->v6.cfg.ll_prefix.addr, NULL, + apn->v6.cfg.ll_prefix.prefixlen)) { + LOGPAPN(LOGL_ERROR, apn, "Failed to set tun IPv6 link-local address %s: %s. " + "Ensure you have ipv6 support and not used the disable_ipv6 sysctl?\n", + in46p_ntoa(&apn->v6.cfg.ll_prefix), strerror(errno)); + apn_stop(apn, false); + return -1; + } + apn->v6_lladdr = apn->v6.cfg.ll_prefix.addr.v6; + } + + if (apn->tun.cfg.ipup_script) { + LOGPAPN(LOGL_INFO, apn, "Running ip-up script %s\n", + apn->tun.cfg.ipup_script); + tun_runscript(apn->tun.tun, apn->tun.cfg.ipup_script); + } + + if (apn->cfg.apn_type_mask & (APN_TYPE_IPv6|APN_TYPE_IPv4v6) && + apn->v6.cfg.ll_prefix.addr.len == 0) { + rc = tun_ip_local_get(apn->tun.tun, &ipv6_tun_linklocal_ip, 1, IP_TYPE_IPv6_LINK); + if (rc < 1) { + LOGPAPN(LOGL_ERROR, apn, "Cannot obtain IPv6 link-local address of interface: %s\n", + rc ? strerror(errno) : "tun interface has no link-local IP assigned"); + apn_stop(apn, false); + return -1; + } + apn->v6_lladdr = ipv6_tun_linklocal_ip.addr.v6; + } + /* Create IPv4 pool */ if (apn->v4.cfg.dynamic_prefix.addr.len) { LOGPAPN(LOGL_INFO, apn, "Creating IPv4 pool %s\n", diff --git a/lib/Makefile.am b/lib/Makefile.am index 55348ad..b6e7aba 100644 --- a/lib/Makefile.am +++ b/lib/Makefile.am @@ -1,7 +1,12 @@ noinst_LIBRARIES = libmisc.a -noinst_HEADERS = gnugetopt.h ippool.h lookup.h syserr.h tun.h in46_addr.h netdev.h +noinst_HEADERS = gnugetopt.h ippool.h lookup.h syserr.h tun.h in46_addr.h netdev.h gtp-kernel.h AM_CFLAGS = -O2 -fno-builtin -Wall -DSBINDIR='"$(sbindir)"' -ggdb $(LIBOSMOCORE_CFLAGS) libmisc_a_SOURCES = getopt1.c getopt.c ippool.c lookup.c tun.c debug.c in46_addr.c netdev.c + +if ENABLE_GTP_KERNEL +AM_CFLAGS += -DGTP_KERNEL $(LIBGTPNL_CFLAGS) +libmisc_a_SOURCES += gtp-kernel.c +endif diff --git a/ggsn/gtp-kernel.c b/lib/gtp-kernel.c similarity index 71% rename from ggsn/gtp-kernel.c rename to lib/gtp-kernel.c index 4564d9a..48811bc 100644 --- a/ggsn/gtp-kernel.c +++ b/lib/gtp-kernel.c @@ -77,56 +77,20 @@ return 0; } -int gtp_kernel_init(struct gsn_t *gsn, const char *devname, struct in46_prefix *prefix, const char *ipup) +int gtp_kernel_create(int dest_ns, const char *devname, int fd0, int fd1u) { - struct in_addr net; - const char *net_arg; - - if (!gtp_nl.nl) - gtp_kernel_init_once(); - - if (prefix->addr.len != 4) { - LOGP(DGGSN, LOGL_ERROR, "we only support IPv4 in this path :/"); + if (gtp_kernel_init_once() < 0) return -1; - } - net = prefix->addr.v4; - if (gtp_dev_create(-1, devname, gsn->fd0, gsn->fd1u) < 0) { - LOGP(DGGSN, LOGL_ERROR, "cannot create GTP tunnel device: %s\n", - strerror(errno)); + return gtp_dev_create(dest_ns, devname, fd0, fd1u); +} + +int gtp_kernel_create_sgsn(int dest_ns, const char *devname, int fd0, int fd1u) +{ + if (gtp_kernel_init_once() < 0) return -1; - } - net_arg = in46p_ntoa(prefix); - - DEBUGP(DGGSN, "Setting route to reach %s via %s\n", net_arg, devname); - - if (gtp_dev_config(devname, &net, prefix->prefixlen) < 0) { - LOGP(DGGSN, LOGL_ERROR, "Cannot add route to reach network %s\n", net_arg); - } - - /* launch script if it is set to bring up the route to reach - * the MS, eg. ip ro add 10.0.0.0/8 dev gtp0. Better add this - * using native rtnetlink interface given that we know the - * MS network mask, later. - */ - if (ipup) { - char cmd[1024]; - int err; - - /* eg. /home/ggsn/ipup gtp0 10.0.0.0/8 */ - snprintf(cmd, sizeof(cmd), "%s %s %s", ipup, devname, net_arg); - cmd[sizeof(cmd)-1] = '\0'; - - err = system(cmd); - if (err < 0) { - LOGP(DGGSN, LOGL_ERROR, "Failed to launch script `%s'\n", ipup); - return -1; - } - } - LOGP(DGGSN, LOGL_NOTICE, "GTP kernel configured\n"); - - return 0; + return gtp_dev_create_sgsn(dest_ns, devname, fd0, fd1u); } void gtp_kernel_stop(const char *devname) diff --git a/ggsn/gtp-kernel.h b/lib/gtp-kernel.h similarity index 70% rename from ggsn/gtp-kernel.h rename to lib/gtp-kernel.h index e2da55a..464352c 100644 --- a/ggsn/gtp-kernel.h +++ b/lib/gtp-kernel.h @@ -7,18 +7,20 @@ extern char *ipup; #ifdef GTP_KERNEL -int gtp_kernel_init(struct gsn_t *gsn, const char *devname, struct in46_prefix *prefix, const char *ipup); +int gtp_kernel_create(int dest_ns, const char *devname, int fd0, int fd1u); +int gtp_kernel_create_sgsn(int dest_ns, const char *devname, int fd0, int fd1u); void gtp_kernel_stop(const char *devname); int gtp_kernel_tunnel_add(struct pdp_t *pdp, const char *devname); int gtp_kernel_tunnel_del(struct pdp_t *pdp, const char *devname); #else -static inline int gtp_kernel_init(struct gsn_t *gsn, const char *devname, struct in46_prefix *prefix, const char *ipup) +static inline int gtp_kernel_create(int dest_ns, const char *devname, int fd0, int fd1u) { SYS_ERR(DGGSN, LOGL_ERROR, 0, "ggsn compiled without GTP kernel support!\n"); return -1; } +#define gtp_kernel_create_sgsn gtp_kernel_create static inline void gtp_kernel_stop(const char *devname) {} diff --git a/lib/tun.c b/lib/tun.c index 6498945..fa4c37d 100644 --- a/lib/tun.c +++ b/lib/tun.c @@ -19,6 +19,7 @@ #include #include +#include #include #include #include @@ -57,6 +58,7 @@ #include "tun.h" #include "syserr.h" +#include "gtp-kernel.h" static int tun_setaddr4(struct tun_t *this, struct in_addr *addr, struct in_addr *dstaddr, struct in_addr *netmask) @@ -147,7 +149,7 @@ } } -int tun_new(struct tun_t **tun, const char *dev_name) +int tun_new(struct tun_t **tun, const char *dev_name, bool use_kernel, int fd0, int fd1u) { #if defined(__linux__) @@ -170,30 +172,49 @@ (*tun)->routes = 0; #if defined(__linux__) - /* Open the actual tun device */ - if (((*tun)->fd = open("/dev/net/tun", O_RDWR)) < 0) { - SYS_ERR(DTUN, LOGL_ERROR, errno, "open() failed"); - goto err_free; + if (!use_kernel) { + /* Open the actual tun device */ + if (((*tun)->fd = open("/dev/net/tun", O_RDWR)) < 0) { + SYS_ERR(DTUN, LOGL_ERROR, errno, "open() failed"); + goto err_free; + } + + /* Set device flags. For some weird reason this is also the method + used to obtain the network interface name */ + memset(&ifr, 0, sizeof(ifr)); + if (dev_name) + strcpy(ifr.ifr_name, dev_name); + ifr.ifr_flags = IFF_TUN | IFF_NO_PI; /* Tun device, no packet info */ + if (ioctl((*tun)->fd, TUNSETIFF, (void *)&ifr) < 0) { + SYS_ERR(DTUN, LOGL_ERROR, errno, "ioctl() failed"); + goto err_close; + } + + strncpy((*tun)->devname, ifr.ifr_name, IFNAMSIZ); + (*tun)->devname[IFNAMSIZ - 1] = 0; + + ioctl((*tun)->fd, TUNSETNOCSUM, 1); /* Disable checksums */ + return 0; + } else { + strncpy((*tun)->devname, dev_name, IFNAMSIZ); + (*tun)->devname[IFNAMSIZ - 1] = 0; + (*tun)->fd = -1; + + if (gtp_kernel_create(-1, dev_name, fd0, fd1u) < 0) { + LOGP(DTUN, LOGL_ERROR, "cannot create GTP tunnel device: %s\n", + strerror(errno)); + return -1; + } + LOGP(DTUN, LOGL_NOTICE, "GTP kernel configured\n"); + return 0; } - - /* Set device flags. For some weird reason this is also the method - used to obtain the network interface name */ - memset(&ifr, 0, sizeof(ifr)); - if (dev_name) - strcpy(ifr.ifr_name, dev_name); - ifr.ifr_flags = IFF_TUN | IFF_NO_PI; /* Tun device, no packet info */ - if (ioctl((*tun)->fd, TUNSETIFF, (void *)&ifr) < 0) { - SYS_ERR(DTUN, LOGL_ERROR, errno, "ioctl() failed"); - goto err_close; - } - - strncpy((*tun)->devname, ifr.ifr_name, IFNAMSIZ); - (*tun)->devname[IFNAMSIZ - 1] = 0; - - ioctl((*tun)->fd, TUNSETNOCSUM, 1); /* Disable checksums */ - return 0; #elif defined(__FreeBSD__) || defined (__APPLE__) + + if (use_kernel) { + LOGP(DTUN, LOGL_ERROR, "No kernel GTP-U support in FreeBSD!\n"); + return -1; + } /* Find suitable device */ for (devnum = 0; devnum < 255; devnum++) { /* TODO 255 */ @@ -249,10 +270,14 @@ netdev_delroute(&tun->dstaddr, &tun->addr, &tun->netmask); } - if (close(tun->fd)) { - SYS_ERR(DTUN, LOGL_ERROR, errno, "close() failed"); + if (tun->fd >= 0) { + if (close(tun->fd)) { + SYS_ERR(DTUN, LOGL_ERROR, errno, "close() failed"); + } } + gtp_kernel_stop(tun->devname); + /* TODO: For solaris we need to unlink streams */ free(tun); diff --git a/lib/tun.h b/lib/tun.h index e41ee69..6bf141f 100644 --- a/lib/tun.h +++ b/lib/tun.h @@ -13,6 +13,7 @@ #ifndef _TUN_H #define _TUN_H +#include #include #include "../lib/in46_addr.h" @@ -41,7 +42,7 @@ void *priv; }; -extern int tun_new(struct tun_t **tun, const char *dev_name); +extern int tun_new(struct tun_t **tun, const char *dev_name, bool use_kernel, int fd0, int fd1u); extern int tun_free(struct tun_t *tun); extern int tun_decaps(struct tun_t *this); extern int tun_encaps(struct tun_t *tun, void *pack, unsigned len); diff --git a/sgsnemu/Makefile.am b/sgsnemu/Makefile.am index 4d02eca..9f10cd2 100644 --- a/sgsnemu/Makefile.am +++ b/sgsnemu/Makefile.am @@ -5,5 +5,11 @@ AM_CFLAGS = -O2 -D_GNU_SOURCE -fno-builtin -Wall -DSBINDIR='"$(sbindir)"' -ggdb $(LIBOSMOCORE_CFLAGS) sgsnemu_LDADD = @EXEC_LDADD@ -lgtp -L../gtp ../lib/libmisc.a $(LIBOSMOCORE_LIBS) + +if ENABLE_GTP_KERNEL +AM_CFLAGS += -DGTP_KERNEL $(LIBGTPNL_CFLAGS) +sgsnemu_LDADD += $(LIBGTPNL_LIBS) +endif + sgsnemu_DEPENDENCIES = ../gtp/libgtp.la ../lib/libmisc.a sgsnemu_SOURCES = sgsnemu.c cmdline.c cmdline.h diff --git a/sgsnemu/sgsnemu.c b/sgsnemu/sgsnemu.c index 92abc70..1e61a09 100644 --- a/sgsnemu/sgsnemu.c +++ b/sgsnemu/sgsnemu.c @@ -1571,7 +1571,7 @@ if (options.createif) { printf("Setting up interface\n"); /* Create a tunnel interface */ - if (tun_new((struct tun_t **)&tun, options.tun_dev_name)) { + if (tun_new((struct tun_t **)&tun, options.tun_dev_name, false, -1, -1)) { SYS_ERR(DSGSN, LOGL_ERROR, 0, "Failed to create tun"); exit(1); -- To view, visit https://gerrit.osmocom.org/7928 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: Ic53a971136edd0d8871fbd6746d7b0090ce3a188 Gerrit-PatchSet: 2 Gerrit-Project: osmo-ggsn Gerrit-Branch: master Gerrit-Owner: Harald Welte Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Pau Espin Pedrol From gerrit-no-reply at lists.osmocom.org Wed Apr 25 20:22:06 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Wed, 25 Apr 2018 20:22:06 +0000 Subject: [MERGED] osmo-ggsn[master]: ggsn: Don't explicitly use tun_setaddr() API anymore In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: ggsn: Don't explicitly use tun_setaddr() API anymore ...................................................................... ggsn: Don't explicitly use tun_setaddr() API anymore tun_addaddr() internally contains a fallback to tun_setaddr() for the first address, so we can unify the API usage a bit and use tun_addaddr() from all call sites Change-Id: I34de003a1a040254bd38b29e48caea34cb0c88d2 --- M ggsn/ggsn.c 1 file changed, 2 insertions(+), 2 deletions(-) Approvals: Pau Espin Pedrol: Looks good to me, but someone else must approve Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/ggsn/ggsn.c b/ggsn/ggsn.c index bbdb5c8..85a2211 100644 --- a/ggsn/ggsn.c +++ b/ggsn/ggsn.c @@ -220,7 +220,7 @@ if (apn->v4.cfg.ifconfig_prefix.addr.len) { LOGPAPN(LOGL_INFO, apn, "Setting tun IP address %s\n", in46p_ntoa(&apn->v4.cfg.ifconfig_prefix)); - if (tun_setaddr(apn->tun.tun, &apn->v4.cfg.ifconfig_prefix.addr, NULL, + if (tun_addaddr(apn->tun.tun, &apn->v4.cfg.ifconfig_prefix.addr, NULL, apn->v4.cfg.ifconfig_prefix.prefixlen)) { LOGPAPN(LOGL_ERROR, apn, "Failed to set tun IPv4 address %s: %s\n", in46p_ntoa(&apn->v4.cfg.ifconfig_prefix), strerror(errno)); @@ -232,7 +232,7 @@ if (apn->v6.cfg.ifconfig_prefix.addr.len) { LOGPAPN(LOGL_INFO, apn, "Setting tun IPv6 address %s\n", in46p_ntoa(&apn->v6.cfg.ifconfig_prefix)); - if (tun_setaddr(apn->tun.tun, &apn->v6.cfg.ifconfig_prefix.addr, NULL, + if (tun_addaddr(apn->tun.tun, &apn->v6.cfg.ifconfig_prefix.addr, NULL, apn->v6.cfg.ifconfig_prefix.prefixlen)) { LOGPAPN(LOGL_ERROR, apn, "Failed to set tun IPv6 address %s: %s. " "Ensure you have ipv6 support and not used the disable_ipv6 sysctl?\n", -- To view, visit https://gerrit.osmocom.org/7925 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: I34de003a1a040254bd38b29e48caea34cb0c88d2 Gerrit-PatchSet: 2 Gerrit-Project: osmo-ggsn Gerrit-Branch: master Gerrit-Owner: Harald Welte Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Pau Espin Pedrol From gerrit-no-reply at lists.osmocom.org Wed Apr 25 20:22:07 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Wed, 25 Apr 2018 20:22:07 +0000 Subject: [MERGED] osmo-ggsn[master]: sgsnemu: Convert from tun_setaddr() to tun_addaddr() In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: sgsnemu: Convert from tun_setaddr() to tun_addaddr() ...................................................................... sgsnemu: Convert from tun_setaddr() to tun_addaddr() This converts the last caller of tun_setaddr() outside of lib/tun.c to use tun_addaddr(). Change-Id: Ia301d6a4ee3d02c1af1c85f2fe1041d3013268b0 --- M sgsnemu/sgsnemu.c 1 file changed, 1 insertion(+), 2 deletions(-) Approvals: Pau Espin Pedrol: Looks good to me, but someone else must approve Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/sgsnemu/sgsnemu.c b/sgsnemu/sgsnemu.c index 8903d81..92abc70 100644 --- a/sgsnemu/sgsnemu.c +++ b/sgsnemu/sgsnemu.c @@ -1432,8 +1432,7 @@ if (addr.len == 16) prefixlen = 64; /* printf("Setting up interface and routing\n"); */ - /* FIXME: use tun_addattr() not tun_setaddr() */ - tun_setaddr(tun, &addr, &addr, prefixlen); + tun_addaddr(tun, &addr, &addr, prefixlen); if (options.defaultroute) { struct in_addr rm; rm.s_addr = 0; -- To view, visit https://gerrit.osmocom.org/7926 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: Ia301d6a4ee3d02c1af1c85f2fe1041d3013268b0 Gerrit-PatchSet: 2 Gerrit-Project: osmo-ggsn Gerrit-Branch: master Gerrit-Owner: Harald Welte Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Pau Espin Pedrol From gerrit-no-reply at lists.osmocom.org Wed Apr 25 20:22:07 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Wed, 25 Apr 2018 20:22:07 +0000 Subject: [MERGED] osmo-ggsn[master]: lib/tun: Remove tun_setaddr() API, as everyone is using tun_... In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: lib/tun: Remove tun_setaddr() API, as everyone is using tun_addaddr() now ...................................................................... lib/tun: Remove tun_setaddr() API, as everyone is using tun_addaddr() now Change-Id: I02e057d30b6773c17ea6bc31094e53587971e9e7 --- M lib/tun.c M lib/tun.h 2 files changed, 0 insertions(+), 17 deletions(-) Approvals: Pau Espin Pedrol: Looks good to me, but someone else must approve Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/lib/tun.c b/lib/tun.c index 122d38c..6498945 100644 --- a/lib/tun.c +++ b/lib/tun.c @@ -97,20 +97,6 @@ return rc; } -int tun_setaddr(struct tun_t *this, struct in46_addr *addr, struct in46_addr *dstaddr, size_t prefixlen) -{ - struct in_addr netmask; - switch (addr->len) { - case 4: - netmask.s_addr = htonl(0xffffffff << (32 - prefixlen)); - return tun_setaddr4(this, &addr->v4, dstaddr ? &dstaddr->v4 : NULL, &netmask); - case 16: - return tun_setaddr6(this, &addr->v6, dstaddr ? &dstaddr->v6 : NULL, prefixlen); - default: - return -1; - } -} - static int tun_addaddr4(struct tun_t *this, struct in_addr *addr, struct in_addr *dstaddr, struct in_addr *netmask) { diff --git a/lib/tun.h b/lib/tun.h index c9e8e34..e41ee69 100644 --- a/lib/tun.h +++ b/lib/tun.h @@ -49,9 +49,6 @@ extern int tun_addaddr(struct tun_t *this, struct in46_addr *addr, struct in46_addr *dstaddr, size_t prefixlen); -extern int tun_setaddr(struct tun_t *this, struct in46_addr *our_adr, - struct in46_addr *his_adr, size_t prefixlen); - extern int tun_set_cb_ind(struct tun_t *this, int (*cb_ind) (struct tun_t * tun, void *pack, unsigned len)); -- To view, visit https://gerrit.osmocom.org/7927 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: I02e057d30b6773c17ea6bc31094e53587971e9e7 Gerrit-PatchSet: 2 Gerrit-Project: osmo-ggsn Gerrit-Branch: master Gerrit-Owner: Harald Welte Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Pau Espin Pedrol From gerrit-no-reply at lists.osmocom.org Wed Apr 25 20:36:40 2018 From: gerrit-no-reply at lists.osmocom.org (Todd Neal) Date: Wed, 25 Apr 2018 20:36:40 +0000 Subject: [PATCH] pysim[master]: add support for open cells SIM cards In-Reply-To: References: Message-ID: add support for open cells SIM cards Change-Id: I4df5681952eefd7a67f5e2b0a96a9e01c9d960d2 --- M pySim/cards.py 1 file changed, 53 insertions(+), 2 deletions(-) git pull ssh://gerrit.osmocom.org:29418/pysim refs/changes/32/7932/2 diff --git a/pySim/cards.py b/pySim/cards.py index e324857..490238a 100644 --- a/pySim/cards.py +++ b/pySim/cards.py @@ -687,10 +687,61 @@ return - # In order for autodetection ... +class OpenCellsSim(Card): + """ + OpenCellsSim + + """ + + name = 'OpenCells SIM' + + def __init__(self, ssc): + super(OpenCellsSim, self).__init__(ssc) + self._adm_chv_num = 0x0A + + + @classmethod + def autodetect(kls, scc): + try: + + # Look for ATR + if scc.get_atr() == toBytes("3B 9F 95 80 1F C3 80 31 E0 73 FE 21 13 57 86 81 02 86 98 44 18 A8"): + return kls(scc) + except: + return None + return None + + + def program(self, p): + if not p['pin_adm']: + raise ValueError("Please provide a PIN-ADM as there is no default one") + self._scc.verify_chv(0x0A, h2b(p['pin_adm'])) + + # select MF + r = self._scc.select_file(['3f00']) + + # write EF.ICCID + data, sw = self._scc.update_binary('2fe2', enc_iccid(p['iccid'])) + + r = self._scc.select_file(['7ff0']) + + # set Ki in proprietary file + data, sw = self._scc.update_binary('FF02', p['ki']) + + # set OPC in proprietary file + data, sw = self._scc.update_binary('FF01', p['opc']) + + # select DF_GSM + r = self._scc.select_file(['7f20']) + + # write EF.IMSI + data, sw = self._scc.update_binary('6f07', enc_imsi(p['imsi'])) + + +# In order for autodetection ... _cards_classes = [ FakeMagicSim, SuperSim, MagicSim, GrcardSim, SysmoSIMgr1, SysmoSIMgr2, SysmoUSIMgr1, SysmoUSIMSJS1, - FairwavesSIM ] + FairwavesSIM, OpenCellsSim ] def card_autodetect(scc): for kls in _cards_classes: -- To view, visit https://gerrit.osmocom.org/7932 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newpatchset Gerrit-Change-Id: I4df5681952eefd7a67f5e2b0a96a9e01c9d960d2 Gerrit-PatchSet: 2 Gerrit-Project: pysim Gerrit-Branch: master Gerrit-Owner: Todd Neal From jenkins at lists.osmocom.org Wed Apr 25 22:41:20 2018 From: jenkins at lists.osmocom.org (jenkins at lists.osmocom.org) Date: Wed, 25 Apr 2018 22:41:20 +0000 (UTC) Subject: =?UTF-8?Q?Build_failed_in_Jenkins:_master-rtl-sdr_=C2=BB_a1=3Ddefau?= =?UTF-8?Q?lt,a2=3Ddefault,a3=3Ddefault,osmocom-master-debian9_#10?= In-Reply-To: <1952537002.62.1524609680522.JavaMail.jenkins@jenkins.osmocom.org> References: <1952537002.62.1524609680522.JavaMail.jenkins@jenkins.osmocom.org> Message-ID: <496564990.79.1524696080623.JavaMail.jenkins@jenkins.osmocom.org> See ------------------------------------------ [...truncated 93.14 KB...] make[2]: Entering directory ' make[2]: Nothing to be done for 'dvi'. make[2]: Leaving directory ' Making dvi in src make[2]: Entering directory ' make[2]: Nothing to be done for 'dvi'. make[2]: Leaving directory ' make[2]: Entering directory ' make[2]: Nothing to be done for 'dvi-am'. make[2]: Leaving directory ' make[1]: Leaving directory ' make[1]: Entering directory ' make check-recursive make[2]: Entering directory ' Making check in include make[3]: Entering directory ' make[3]: Nothing to be done for 'check'. make[3]: Leaving directory ' Making check in src make[3]: Entering directory ' make[3]: Nothing to be done for 'check'. make[3]: Leaving directory ' make[3]: Entering directory ' make[3]: Leaving directory ' make[2]: Leaving directory ' make[1]: Leaving directory ' make[1]: Entering directory ' make install-recursive make[2]: Entering directory ' Making install in include make[3]: Entering directory ' make[4]: Entering directory ' make[4]: Nothing to be done for 'install-exec-am'. /bin/mkdir -p ' /usr/bin/install -c -m 644 ../../../include/rtl-sdr.h ../../../include/rtl-sdr_export.h ' make[4]: Leaving directory ' make[3]: Leaving directory ' Making install in src make[3]: Entering directory ' make[4]: Entering directory ' /bin/mkdir -p ' /bin/bash ../libtool --mode=install /usr/bin/install -c librtlsdr.la ' libtool: install: /usr/bin/install -c .libs/librtlsdr.so.0.0.5 libtool: install: (cd && { ln -s -f librtlsdr.so.0.0.5 librtlsdr.so.0 || { rm -f librtlsdr.so.0 && ln -s librtlsdr.so.0.0.5 librtlsdr.so.0; }; }) libtool: install: (cd && { ln -s -f librtlsdr.so.0.0.5 librtlsdr.so || { rm -f librtlsdr.so && ln -s librtlsdr.so.0.0.5 librtlsdr.so; }; }) libtool: install: /usr/bin/install -c .libs/librtlsdr.lai libtool: install: /usr/bin/install -c .libs/librtlsdr.a libtool: install: chmod 644 libtool: install: ranlib libtool: finish: PATH="/usr/local/bin:/usr/bin:/bin:/usr/games:/home/osmocom-build/bin:/sbin" ldconfig -n ---------------------------------------------------------------------- Libraries have been installed in: If you ever happen to want to link against installed libraries in a given directory, LIBDIR, you must either use libtool, and specify the full pathname of the library, or use the '-LLIBDIR' flag during linking and do at least one of the following: - add LIBDIR to the 'LD_LIBRARY_PATH' environment variable during execution - add LIBDIR to the 'LD_RUN_PATH' environment variable during linking - use the '-Wl,-rpath -Wl,LIBDIR' linker flag - have your system administrator add LIBDIR to '/etc/ld.so.conf' See any operating system documentation about shared libraries for more information, such as the ld(1) and ld.so(8) manual pages. ---------------------------------------------------------------------- /bin/mkdir -p ' /bin/bash ../libtool --mode=install /usr/bin/install -c rtl_sdr rtl_tcp rtl_test rtl_fm rtl_eeprom rtl_adsb rtl_power ' libtool: install: /usr/bin/install -c .libs/rtl_sdr libtool: install: /usr/bin/install -c .libs/rtl_tcp libtool: install: /usr/bin/install -c .libs/rtl_test libtool: install: /usr/bin/install -c .libs/rtl_fm libtool: install: /usr/bin/install -c .libs/rtl_eeprom libtool: install: /usr/bin/install -c .libs/rtl_adsb libtool: install: /usr/bin/install -c .libs/rtl_power make[4]: Nothing to be done for 'install-data-am'. make[4]: Leaving directory ' make[3]: Leaving directory ' make[3]: Entering directory ' make[4]: Entering directory ' make[4]: Nothing to be done for 'install-exec-am'. /bin/mkdir -p ' /usr/bin/install -c -m 644 ./doc/html.tar ' /bin/mkdir -p ' /usr/bin/install -c -m 644 librtlsdr.pc ' make install-data-hook make[5]: Entering directory ' cd && tar xf html.tar --strip-components 1 && rm -f html.tar make[5]: Leaving directory ' make[4]: Leaving directory ' make[3]: Leaving directory ' make[2]: Leaving directory ' make[1]: Leaving directory ' make[1]: Entering directory ' Making installcheck in include make[2]: Entering directory ' make[2]: Nothing to be done for 'installcheck'. make[2]: Leaving directory ' Making installcheck in src make[2]: Entering directory ' make[2]: Nothing to be done for 'installcheck'. make[2]: Leaving directory ' make[2]: Entering directory ' make[2]: Nothing to be done for 'installcheck-am'. make[2]: Leaving directory ' make[1]: Leaving directory ' make[1]: Entering directory ' Making uninstall in include make[2]: Entering directory ' ( cd ' && rm -f rtl-sdr.h rtl-sdr_export.h ) make[2]: Leaving directory ' Making uninstall in src make[2]: Entering directory ' ( cd ' && rm -f rtl_sdr rtl_tcp rtl_test rtl_fm rtl_eeprom rtl_adsb rtl_power ) /bin/bash ../libtool --mode=uninstall rm -f ' libtool: uninstall: rm -f make[2]: Leaving directory ' make[2]: Entering directory ' ( cd ' && rm -f html.tar ) ( cd ' && rm -f librtlsdr.pc ) make uninstall-hook make[3]: Entering directory ' cd && rm -rf make[3]: Leaving directory ' make[2]: Leaving directory ' make[1]: Leaving directory ' make[1]: Entering directory ' make[1]: Leaving directory ' make[1]: Entering directory ' make install-recursive make[2]: Entering directory ' Making install in include make[3]: Entering directory ' make[4]: Entering directory ' make[4]: Nothing to be done for 'install-exec-am'. /bin/mkdir -p '/tmp/am-dc-704/ /usr/bin/install -c -m 644 ../../../include/rtl-sdr.h ../../../include/rtl-sdr_export.h '/tmp/am-dc-704/ make[4]: Leaving directory ' make[3]: Leaving directory ' Making install in src make[3]: Entering directory ' make[4]: Entering directory ' /bin/mkdir -p '/tmp/am-dc-704/ /bin/bash ../libtool --mode=install /usr/bin/install -c librtlsdr.la '/tmp/am-dc-704/ libtool: install: /usr/bin/install -c .libs/librtlsdr.so.0.0.5 /tmp/am-dc-704/ libtool: install: (cd /tmp/am-dc-704/ && { ln -s -f librtlsdr.so.0.0.5 librtlsdr.so.0 || { rm -f librtlsdr.so.0 && ln -s librtlsdr.so.0.0.5 librtlsdr.so.0; }; }) libtool: install: (cd /tmp/am-dc-704/ && { ln -s -f librtlsdr.so.0.0.5 librtlsdr.so || { rm -f librtlsdr.so && ln -s librtlsdr.so.0.0.5 librtlsdr.so; }; }) libtool: install: /usr/bin/install -c .libs/librtlsdr.lai /tmp/am-dc-704/ libtool: install: /usr/bin/install -c .libs/librtlsdr.a /tmp/am-dc-704/ libtool: install: chmod 644 /tmp/am-dc-704/ libtool: install: ranlib /tmp/am-dc-704/ libtool: warning: remember to run 'libtool --finish /bin/mkdir -p '/tmp/am-dc-704/ /bin/bash ../libtool --mode=install /usr/bin/install -c rtl_sdr rtl_tcp rtl_test rtl_fm rtl_eeprom rtl_adsb rtl_power '/tmp/am-dc-704/ libtool: warning: 'librtlsdr.la' has not been installed in ' libtool: install: /usr/bin/install -c .libs/rtl_sdr /tmp/am-dc-704/ libtool: warning: 'librtlsdr.la' has not been installed in ' libtool: install: /usr/bin/install -c .libs/rtl_tcp /tmp/am-dc-704/ libtool: warning: 'librtlsdr.la' has not been installed in ' libtool: install: /usr/bin/install -c .libs/rtl_test /tmp/am-dc-704/ libtool: warning: 'librtlsdr.la' has not been installed in ' libtool: install: /usr/bin/install -c .libs/rtl_fm /tmp/am-dc-704/ libtool: warning: 'librtlsdr.la' has not been installed in ' libtool: install: /usr/bin/install -c .libs/rtl_eeprom /tmp/am-dc-704/ libtool: warning: 'librtlsdr.la' has not been installed in ' libtool: install: /usr/bin/install -c .libs/rtl_adsb /tmp/am-dc-704/ libtool: warning: 'librtlsdr.la' has not been installed in ' libtool: install: /usr/bin/install -c .libs/rtl_power /tmp/am-dc-704/ make[4]: Nothing to be done for 'install-data-am'. make[4]: Leaving directory ' make[3]: Leaving directory ' make[3]: Entering directory ' make[4]: Entering directory ' make[4]: Nothing to be done for 'install-exec-am'. /bin/mkdir -p '/tmp/am-dc-704/ /usr/bin/install -c -m 644 ./doc/html.tar '/tmp/am-dc-704/ /bin/mkdir -p '/tmp/am-dc-704/ /usr/bin/install -c -m 644 librtlsdr.pc '/tmp/am-dc-704/ make install-data-hook make[5]: Entering directory ' cd /tmp/am-dc-704/ && tar xf html.tar --strip-components 1 && rm -f html.tar make[5]: Leaving directory ' make[4]: Leaving directory ' make[3]: Leaving directory ' make[2]: Leaving directory ' make[1]: Leaving directory ' make[1]: Entering directory ' Making uninstall in include make[2]: Entering directory ' ( cd '/tmp/am-dc-704/ && rm -f rtl-sdr.h rtl-sdr_export.h ) make[2]: Leaving directory ' Making uninstall in src make[2]: Entering directory ' ( cd '/tmp/am-dc-704/ && rm -f rtl_sdr rtl_tcp rtl_test rtl_fm rtl_eeprom rtl_adsb rtl_power ) /bin/bash ../libtool --mode=uninstall rm -f '/tmp/am-dc-704/ libtool: uninstall: rm -f /tmp/am-dc-704/ /tmp/am-dc-704/ /tmp/am-dc-704/ /tmp/am-dc-704/ /tmp/am-dc-704/ make[2]: Leaving directory ' make[2]: Entering directory ' ( cd '/tmp/am-dc-704/ && rm -f html.tar ) ( cd '/tmp/am-dc-704/ && rm -f librtlsdr.pc ) make uninstall-hook make[3]: Entering directory ' cd /tmp/am-dc-704/ && rm -rf make[3]: Leaving directory ' make[2]: Leaving directory ' make[1]: Leaving directory ' make[1]: Entering directory ' ERROR: files left after uninstall: (check DESTDIR support) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Makefile:757: recipe for target 'distuninstallcheck' failed make[1]: *** [distuninstallcheck] Error 1 make[1]: Leaving directory ' Makefile:701: recipe for target 'distcheck' failed make: *** [distcheck] Error 1 + cat-testlogs.sh Build step 'Execute shell' marked build as failure [WARNINGS]Skipping publisher since build result is FAILURE From gerrit-no-reply at lists.osmocom.org Thu Apr 26 07:01:18 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Thu, 26 Apr 2018 07:01:18 +0000 Subject: [PATCH] docker-playground[master]: ttcn3-ggsn-test: Add VTY IP to config file Message-ID: Review at https://gerrit.osmocom.org/7933 ttcn3-ggsn-test: Add VTY IP to config file In Change-Id: I1dc299407c61b1c865035add44067b8ab89001b3 a VTY interface was added to osmo-ttcn3-hacks.git, but it was missed to update the config file here for the dockerized execution, rendering us with broken test builds ever since. Change-Id: I9539f7a28cf9214bd73ac9f80d22c71041c47adb Related: OS#2519 --- M ttcn3-ggsn-test/GGSN_Tests.cfg 1 file changed, 1 insertion(+), 0 deletions(-) git pull ssh://gerrit.osmocom.org:29418/docker-playground refs/changes/33/7933/1 diff --git a/ttcn3-ggsn-test/GGSN_Tests.cfg b/ttcn3-ggsn-test/GGSN_Tests.cfg index 3833d53..064bf37 100644 --- a/ttcn3-ggsn-test/GGSN_Tests.cfg +++ b/ttcn3-ggsn-test/GGSN_Tests.cfg @@ -6,6 +6,7 @@ *.JUnitLogger.testsuite_name := "GGSN_Tests" [TESTPORT_PARAMETERS] +*.GGSNVTY.CTRL_HOSTNAME := "172.18.3.201" [MODULE_PARAMETERS] # our Own IP address -- To view, visit https://gerrit.osmocom.org/7933 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I9539f7a28cf9214bd73ac9f80d22c71041c47adb Gerrit-PatchSet: 1 Gerrit-Project: docker-playground Gerrit-Branch: master Gerrit-Owner: Harald Welte From gerrit-no-reply at lists.osmocom.org Thu Apr 26 07:02:25 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Thu, 26 Apr 2018 07:02:25 +0000 Subject: docker-playground[master]: ttcn3-ggsn-test: Add VTY IP to config file In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 Verified+1 -- To view, visit https://gerrit.osmocom.org/7933 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I9539f7a28cf9214bd73ac9f80d22c71041c47adb Gerrit-PatchSet: 1 Gerrit-Project: docker-playground Gerrit-Branch: master Gerrit-Owner: Harald Welte Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Stefan Sperling Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Thu Apr 26 07:02:40 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Thu, 26 Apr 2018 07:02:40 +0000 Subject: [MERGED] docker-playground[master]: ttcn3-ggsn-test: Add VTY IP to config file In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: ttcn3-ggsn-test: Add VTY IP to config file ...................................................................... ttcn3-ggsn-test: Add VTY IP to config file In Change-Id: I1dc299407c61b1c865035add44067b8ab89001b3 a VTY interface was added to osmo-ttcn3-hacks.git, but it was missed to update the config file here for the dockerized execution, rendering us with broken test builds ever since. Change-Id: I9539f7a28cf9214bd73ac9f80d22c71041c47adb Related: OS#2519 --- M ttcn3-ggsn-test/GGSN_Tests.cfg 1 file changed, 1 insertion(+), 0 deletions(-) Approvals: Harald Welte: Looks good to me, approved; Verified diff --git a/ttcn3-ggsn-test/GGSN_Tests.cfg b/ttcn3-ggsn-test/GGSN_Tests.cfg index 3833d53..064bf37 100644 --- a/ttcn3-ggsn-test/GGSN_Tests.cfg +++ b/ttcn3-ggsn-test/GGSN_Tests.cfg @@ -6,6 +6,7 @@ *.JUnitLogger.testsuite_name := "GGSN_Tests" [TESTPORT_PARAMETERS] +*.GGSNVTY.CTRL_HOSTNAME := "172.18.3.201" [MODULE_PARAMETERS] # our Own IP address -- To view, visit https://gerrit.osmocom.org/7933 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: I9539f7a28cf9214bd73ac9f80d22c71041c47adb Gerrit-PatchSet: 2 Gerrit-Project: docker-playground Gerrit-Branch: master Gerrit-Owner: Harald Welte Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Stefan Sperling From gerrit-no-reply at lists.osmocom.org Thu Apr 26 08:45:20 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Thu, 26 Apr 2018 08:45:20 +0000 Subject: [PATCH] osmo-ttcn3-hacks[master]: ggsn: Disable GTP-U tx sequence number by default Message-ID: Review at https://gerrit.osmocom.org/7935 ggsn: Disable GTP-U tx sequence number by default GTP-U transmit sequence numbers are entirely optional and probably don't serve any real purpose in real-world deployments. While OsmoGGSN in userspace implements support for it, the kernel GTP-U implementation doesn't. This means a number of tests fail against kernel GTP-U only for that reason. Let's switch all tests to disable GTP-U sequence numbers, and only enable it in one specific test. This way, we can execute the tests also against kernel GTP-U. Related: OS#3215 Change-Id: I666f5276749ef6a1a4dc170a3b9a747f626f6b2c --- M ggsn_tests/GGSN_Tests.ttcn 1 file changed, 1 insertion(+), 1 deletion(-) git pull ssh://gerrit.osmocom.org:29418/osmo-ttcn3-hacks refs/changes/35/7935/1 diff --git a/ggsn_tests/GGSN_Tests.ttcn b/ggsn_tests/GGSN_Tests.ttcn index cb6aabf..d099681 100644 --- a/ggsn_tests/GGSN_Tests.ttcn +++ b/ggsn_tests/GGSN_Tests.ttcn @@ -93,7 +93,7 @@ var uint16_t g_d_seq_nr; port TELNETasp_PT GGSNVTY; - var boolean use_gtpu_txseq := true; + var boolean use_gtpu_txseq := false; } private function f_init_vty() runs on GT_CT { -- To view, visit https://gerrit.osmocom.org/7935 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I666f5276749ef6a1a4dc170a3b9a747f626f6b2c Gerrit-PatchSet: 1 Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Owner: Harald Welte From gerrit-no-reply at lists.osmocom.org Thu Apr 26 08:45:20 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Thu, 26 Apr 2018 08:45:20 +0000 Subject: [PATCH] osmo-ttcn3-hacks[master]: ggsn: Fix typo: 'gptu' -> 'gtpu' Message-ID: Review at https://gerrit.osmocom.org/7934 ggsn: Fix typo: 'gptu' -> 'gtpu' Change-Id: I1da2e0da6b94dc43c742ec551d3b5de100ce405f --- M ggsn_tests/GGSN_Tests.ttcn 1 file changed, 7 insertions(+), 7 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-ttcn3-hacks refs/changes/34/7934/1 diff --git a/ggsn_tests/GGSN_Tests.ttcn b/ggsn_tests/GGSN_Tests.ttcn index ba8fae5..cb6aabf 100644 --- a/ggsn_tests/GGSN_Tests.ttcn +++ b/ggsn_tests/GGSN_Tests.ttcn @@ -93,7 +93,7 @@ var uint16_t g_d_seq_nr; port TELNETasp_PT GGSNVTY; - var boolean use_gptu_txseq := true; + var boolean use_gtpu_txseq := true; } private function f_init_vty() runs on GT_CT { @@ -153,7 +153,7 @@ g_d_seq_nr := f_rnd_int(65535); f_init_vty(); - f_vty_set_gpdu_txseq(use_gptu_txseq); + f_vty_set_gpdu_txseq(use_gtpu_txseq); } /* Altstep implementing responses to any incoming echo requests */ @@ -208,7 +208,7 @@ /* send GTP-U for a given context and increment sequence number */ function f_send_gtpu(inout PdpContext ctx, in octetstring data) runs on GT_CT { - if (use_gptu_txseq) { + if (use_gtpu_txseq) { GTPU.send(ts_GTP1U_GPDU(g_peer_u, g_d_seq_nr, ctx.teid_remote, data)); g_d_seq_nr := g_d_seq_nr + 1; } else { @@ -603,7 +603,7 @@ T_default.start; alt { [] GTPU.receive(tr_GTPU_GPDU(g_peer_u, ?)) -> value ud { - if (f_verify_gtpu_txseq(ud.gtpu, use_gptu_txseq) == false) { + if (f_verify_gtpu_txseq(ud.gtpu, use_gtpu_txseq) == false) { setverdict(fail); stop; } @@ -639,7 +639,7 @@ T_default.start; alt { [] GTPU.receive(tr_GTPU_GPDU(g_peer_u, ?)) -> value ud { - if (f_verify_gtpu_txseq(ud.gtpu, use_gptu_txseq) == false) { + if (f_verify_gtpu_txseq(ud.gtpu, use_gtpu_txseq) == false) { setverdict(fail); stop; } @@ -910,13 +910,13 @@ /* Validate if different clients (pdp ctx) can reach one another through GGSN. */ testcase TC_pdp4_clients_interact_with_txseq() runs on GT_CT { - use_gptu_txseq := true; + use_gtpu_txseq := true; f_pdp4_clients_interact(); } /* Validate if different clients (pdp ctx) can reach one another through GGSN (without Tx sequence number). */ testcase TC_pdp4_clients_interact_without_txseq() runs on GT_CT { - use_gptu_txseq := false; + use_gtpu_txseq := false; f_pdp4_clients_interact(); } -- To view, visit https://gerrit.osmocom.org/7934 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I1da2e0da6b94dc43c742ec551d3b5de100ce405f Gerrit-PatchSet: 1 Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Owner: Harald Welte From gerrit-no-reply at lists.osmocom.org Thu Apr 26 09:08:18 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Thu, 26 Apr 2018 09:08:18 +0000 Subject: osmo-ttcn3-hacks[master]: ggsn: Fix typo: 'gptu' -> 'gtpu' In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+1 -- To view, visit https://gerrit.osmocom.org/7934 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I1da2e0da6b94dc43c742ec551d3b5de100ce405f Gerrit-PatchSet: 1 Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Owner: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Pau Espin Pedrol Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Thu Apr 26 09:08:30 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Thu, 26 Apr 2018 09:08:30 +0000 Subject: osmo-ttcn3-hacks[master]: ggsn: Disable GTP-U tx sequence number by default In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+1 -- To view, visit https://gerrit.osmocom.org/7935 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I666f5276749ef6a1a4dc170a3b9a747f626f6b2c Gerrit-PatchSet: 1 Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Owner: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Pau Espin Pedrol Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Thu Apr 26 09:09:23 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Thu, 26 Apr 2018 09:09:23 +0000 Subject: osmo-ttcn3-hacks[master]: ggsn: Disable GTP-U tx sequence number by default In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7935 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I666f5276749ef6a1a4dc170a3b9a747f626f6b2c Gerrit-PatchSet: 1 Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Owner: Harald Welte Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Pau Espin Pedrol Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Thu Apr 26 09:09:28 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Thu, 26 Apr 2018 09:09:28 +0000 Subject: osmo-ttcn3-hacks[master]: ggsn: Fix typo: 'gptu' -> 'gtpu' In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7934 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I1da2e0da6b94dc43c742ec551d3b5de100ce405f Gerrit-PatchSet: 1 Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Owner: Harald Welte Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Pau Espin Pedrol Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Thu Apr 26 09:09:33 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Thu, 26 Apr 2018 09:09:33 +0000 Subject: [MERGED] osmo-ttcn3-hacks[master]: ggsn: Fix typo: 'gptu' -> 'gtpu' In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: ggsn: Fix typo: 'gptu' -> 'gtpu' ...................................................................... ggsn: Fix typo: 'gptu' -> 'gtpu' Change-Id: I1da2e0da6b94dc43c742ec551d3b5de100ce405f --- M ggsn_tests/GGSN_Tests.ttcn 1 file changed, 7 insertions(+), 7 deletions(-) Approvals: Pau Espin Pedrol: Looks good to me, but someone else must approve Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/ggsn_tests/GGSN_Tests.ttcn b/ggsn_tests/GGSN_Tests.ttcn index ba8fae5..cb6aabf 100644 --- a/ggsn_tests/GGSN_Tests.ttcn +++ b/ggsn_tests/GGSN_Tests.ttcn @@ -93,7 +93,7 @@ var uint16_t g_d_seq_nr; port TELNETasp_PT GGSNVTY; - var boolean use_gptu_txseq := true; + var boolean use_gtpu_txseq := true; } private function f_init_vty() runs on GT_CT { @@ -153,7 +153,7 @@ g_d_seq_nr := f_rnd_int(65535); f_init_vty(); - f_vty_set_gpdu_txseq(use_gptu_txseq); + f_vty_set_gpdu_txseq(use_gtpu_txseq); } /* Altstep implementing responses to any incoming echo requests */ @@ -208,7 +208,7 @@ /* send GTP-U for a given context and increment sequence number */ function f_send_gtpu(inout PdpContext ctx, in octetstring data) runs on GT_CT { - if (use_gptu_txseq) { + if (use_gtpu_txseq) { GTPU.send(ts_GTP1U_GPDU(g_peer_u, g_d_seq_nr, ctx.teid_remote, data)); g_d_seq_nr := g_d_seq_nr + 1; } else { @@ -603,7 +603,7 @@ T_default.start; alt { [] GTPU.receive(tr_GTPU_GPDU(g_peer_u, ?)) -> value ud { - if (f_verify_gtpu_txseq(ud.gtpu, use_gptu_txseq) == false) { + if (f_verify_gtpu_txseq(ud.gtpu, use_gtpu_txseq) == false) { setverdict(fail); stop; } @@ -639,7 +639,7 @@ T_default.start; alt { [] GTPU.receive(tr_GTPU_GPDU(g_peer_u, ?)) -> value ud { - if (f_verify_gtpu_txseq(ud.gtpu, use_gptu_txseq) == false) { + if (f_verify_gtpu_txseq(ud.gtpu, use_gtpu_txseq) == false) { setverdict(fail); stop; } @@ -910,13 +910,13 @@ /* Validate if different clients (pdp ctx) can reach one another through GGSN. */ testcase TC_pdp4_clients_interact_with_txseq() runs on GT_CT { - use_gptu_txseq := true; + use_gtpu_txseq := true; f_pdp4_clients_interact(); } /* Validate if different clients (pdp ctx) can reach one another through GGSN (without Tx sequence number). */ testcase TC_pdp4_clients_interact_without_txseq() runs on GT_CT { - use_gptu_txseq := false; + use_gtpu_txseq := false; f_pdp4_clients_interact(); } -- To view, visit https://gerrit.osmocom.org/7934 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: I1da2e0da6b94dc43c742ec551d3b5de100ce405f Gerrit-PatchSet: 2 Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Owner: Harald Welte Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Pau Espin Pedrol From gerrit-no-reply at lists.osmocom.org Thu Apr 26 09:09:33 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Thu, 26 Apr 2018 09:09:33 +0000 Subject: [MERGED] osmo-ttcn3-hacks[master]: ggsn: Disable GTP-U tx sequence number by default In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: ggsn: Disable GTP-U tx sequence number by default ...................................................................... ggsn: Disable GTP-U tx sequence number by default GTP-U transmit sequence numbers are entirely optional and probably don't serve any real purpose in real-world deployments. While OsmoGGSN in userspace implements support for it, the kernel GTP-U implementation doesn't. This means a number of tests fail against kernel GTP-U only for that reason. Let's switch all tests to disable GTP-U sequence numbers, and only enable it in one specific test. This way, we can execute the tests also against kernel GTP-U. Related: OS#3215 Change-Id: I666f5276749ef6a1a4dc170a3b9a747f626f6b2c --- M ggsn_tests/GGSN_Tests.ttcn 1 file changed, 1 insertion(+), 1 deletion(-) Approvals: Pau Espin Pedrol: Looks good to me, but someone else must approve Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/ggsn_tests/GGSN_Tests.ttcn b/ggsn_tests/GGSN_Tests.ttcn index cb6aabf..d099681 100644 --- a/ggsn_tests/GGSN_Tests.ttcn +++ b/ggsn_tests/GGSN_Tests.ttcn @@ -93,7 +93,7 @@ var uint16_t g_d_seq_nr; port TELNETasp_PT GGSNVTY; - var boolean use_gtpu_txseq := true; + var boolean use_gtpu_txseq := false; } private function f_init_vty() runs on GT_CT { -- To view, visit https://gerrit.osmocom.org/7935 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: I666f5276749ef6a1a4dc170a3b9a747f626f6b2c Gerrit-PatchSet: 2 Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Owner: Harald Welte Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Pau Espin Pedrol From gerrit-no-reply at lists.osmocom.org Thu Apr 26 09:13:14 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Thu, 26 Apr 2018 09:13:14 +0000 Subject: pysim[master]: add support for open cells SIM cards In-Reply-To: References: Message-ID: Patch Set 2: Code-Review+1 I don't have a related card to verify, but it looks fine to me. At least it doesn't touch any code for existing cards, i.e. low regression potential. -- To view, visit https://gerrit.osmocom.org/7932 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I4df5681952eefd7a67f5e2b0a96a9e01c9d960d2 Gerrit-PatchSet: 2 Gerrit-Project: pysim Gerrit-Branch: master Gerrit-Owner: Todd Neal Gerrit-Reviewer: Harald Welte Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Thu Apr 26 09:13:53 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Thu, 26 Apr 2018 09:13:53 +0000 Subject: osmo-trx[master]: Logger: Print correct source file and line number In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7929 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Ie5c64b4961c7c41d23484784a93eda5e08331f08 Gerrit-PatchSet: 1 Gerrit-Project: osmo-trx Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Thu Apr 26 09:14:00 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Thu, 26 Apr 2018 09:14:00 +0000 Subject: osmo-trx[master]: Transceiver: log timing info of stale bursts In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7930 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I043fd8199253bdf3912c7aec2ccf98f8cbe54251 Gerrit-PatchSet: 1 Gerrit-Project: osmo-trx Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Thu Apr 26 09:19:38 2018 From: gerrit-no-reply at lists.osmocom.org (Vadim Yanitskiy) Date: Thu, 26 Apr 2018 09:19:38 +0000 Subject: pysim[master]: add support for open cells SIM cards In-Reply-To: References: Message-ID: Patch Set 2: Code-Review-1 (1 comment) https://gerrit.osmocom.org/#/c/7932/2/pySim/cards.py File pySim/cards.py: Line 706: ws -- To view, visit https://gerrit.osmocom.org/7932 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I4df5681952eefd7a67f5e2b0a96a9e01c9d960d2 Gerrit-PatchSet: 2 Gerrit-Project: pysim Gerrit-Branch: master Gerrit-Owner: Todd Neal Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Vadim Yanitskiy Gerrit-HasComments: Yes From gerrit-no-reply at lists.osmocom.org Thu Apr 26 09:21:19 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Thu, 26 Apr 2018 09:21:19 +0000 Subject: [MERGED] osmo-trx[master]: Transceiver: log timing info of stale bursts In-Reply-To: References: Message-ID: Pau Espin Pedrol has submitted this change and it was merged. Change subject: Transceiver: log timing info of stale bursts ...................................................................... Transceiver: log timing info of stale bursts Change-Id: I043fd8199253bdf3912c7aec2ccf98f8cbe54251 --- M Transceiver52M/Transceiver.cpp 1 file changed, 2 insertions(+), 1 deletion(-) Approvals: Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/Transceiver52M/Transceiver.cpp b/Transceiver52M/Transceiver.cpp index be6f526..a1ebb30 100644 --- a/Transceiver52M/Transceiver.cpp +++ b/Transceiver52M/Transceiver.cpp @@ -373,7 +373,8 @@ state = &mStates[i]; while ((burst = mTxPriorityQueues[i].getStaleBurst(nowTime))) { - LOG(NOTICE) << "dumping STALE burst in TRX->USRP interface"; + LOG(NOTICE) << "chan " << i << " dumping STALE burst in TRX->USRP interface (" + << burst->getTime() <<" vs " << nowTime << "), retrans=" << state->mRetrans; if (state->mRetrans) updateFillerTable(i, burst); delete burst; -- To view, visit https://gerrit.osmocom.org/7930 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: I043fd8199253bdf3912c7aec2ccf98f8cbe54251 Gerrit-PatchSet: 1 Gerrit-Project: osmo-trx Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Pau Espin Pedrol From gerrit-no-reply at lists.osmocom.org Thu Apr 26 09:21:19 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Thu, 26 Apr 2018 09:21:19 +0000 Subject: [MERGED] osmo-trx[master]: Logger: Print correct source file and line number In-Reply-To: References: Message-ID: Pau Espin Pedrol has submitted this change and it was merged. Change subject: Logger: Print correct source file and line number ...................................................................... Logger: Print correct source file and line number Before this commit, always Logger.cpp:53 was being printed. Change-Id: Ie5c64b4961c7c41d23484784a93eda5e08331f08 --- M CommonLibs/Logger.cpp M CommonLibs/Logger.h M tests/CommonLibs/LogTest.cpp 3 files changed, 13 insertions(+), 10 deletions(-) Approvals: Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/CommonLibs/Logger.cpp b/CommonLibs/Logger.cpp index ac3de42..393d882 100644 --- a/CommonLibs/Logger.cpp +++ b/CommonLibs/Logger.cpp @@ -50,7 +50,7 @@ ScopedLock lock(gLogToLock); // The COUT() macro prevents messages from stomping each other but adds uninteresting thread numbers, // so just use std::cout. - LOGP(mCategory, mPriority, fmt, mStream.str().c_str()); + LOGPSRC(mCategory, mPriority, filename, line, fmt, mStream.str().c_str()); } ostringstream& Log::get() diff --git a/CommonLibs/Logger.h b/CommonLibs/Logger.h index 00efcd7..5b0b05c 100644 --- a/CommonLibs/Logger.h +++ b/CommonLibs/Logger.h @@ -48,10 +48,10 @@ #endif #define LOG(level) \ - Log(DMAIN, LOGL_##level).get() << "[tid=" << pthread_self() << "] " + Log(DMAIN, LOGL_##level, __BASE_FILE__, __LINE__).get() << "[tid=" << pthread_self() << "] " #define LOGC(category, level) \ - Log(category, LOGL_##level).get() << "[tid=" << pthread_self() << "] " + Log(category, LOGL_##level, __BASE_FILE__, __LINE__).get() << "[tid=" << pthread_self() << "] " /** A C++ stream-based thread-safe logger. @@ -67,11 +67,14 @@ std::ostringstream mStream; ///< This is where we buffer up the log entry. int mCategory; ///< Priority of current report. int mPriority; ///< Category of current report. + const char *filename; ///< Source File Name of current report. + int line; ///< Line number in source file of current report. public: - Log(int wCategory, int wPriority) - : mCategory(wCategory), mPriority(wPriority) + Log(int wCategory, int wPriority, const char* filename, int line) + : mCategory(wCategory), mPriority(wPriority), + filename(filename), line(line) { } // Most of the work is in the destructor. diff --git a/tests/CommonLibs/LogTest.cpp b/tests/CommonLibs/LogTest.cpp index 5167a62..5e51ce7 100644 --- a/tests/CommonLibs/LogTest.cpp +++ b/tests/CommonLibs/LogTest.cpp @@ -61,9 +61,9 @@ log_set_print_filename(osmo_stderr_target, 0); log_set_print_level(osmo_stderr_target, 1); - Log(MYCAT, LOGL_FATAL).get() << "testing the logger."; - Log(MYCAT, LOGL_ERROR).get() << "testing the logger."; - Log(MYCAT, LOGL_NOTICE).get() << "testing the logger."; - Log(MYCAT, LOGL_INFO).get() << "testing the logger."; - Log(MYCAT, LOGL_DEBUG).get() << "testing the logger."; + Log(MYCAT, LOGL_FATAL, __BASE_FILE__, __LINE__).get() << "testing the logger."; + Log(MYCAT, LOGL_ERROR, __BASE_FILE__, __LINE__).get() << "testing the logger."; + Log(MYCAT, LOGL_NOTICE, __BASE_FILE__, __LINE__).get() << "testing the logger."; + Log(MYCAT, LOGL_INFO, __BASE_FILE__, __LINE__).get() << "testing the logger."; + Log(MYCAT, LOGL_DEBUG, __BASE_FILE__, __LINE__).get() << "testing the logger."; } -- To view, visit https://gerrit.osmocom.org/7929 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: Ie5c64b4961c7c41d23484784a93eda5e08331f08 Gerrit-PatchSet: 1 Gerrit-Project: osmo-trx Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Pau Espin Pedrol From admin at opensuse.org Thu Apr 26 13:12:34 2018 From: admin at opensuse.org (OBS Notification) Date: Thu, 26 Apr 2018 13:12:34 +0000 Subject: Build failure of network:osmocom:nightly/osmo-trx in xUbuntu_17.04/i586 In-Reply-To: References: Message-ID: <5ae1d04a9e7b9_26bf9d867c31122d@build.opensuse.org> Visit https://build.opensuse.org/package/live_build_log/network:osmocom:nightly/osmo-trx/xUbuntu_17.04/i586 Package network:osmocom:nightly/osmo-trx failed to build in xUbuntu_17.04/i586 Check out the package for editing: osc checkout network:osmocom:nightly osmo-trx Last lines of build log: [ 165s] /usr/include/uhd/stream.hpp:63: undefined reference to `uhd::device_addr_t::device_addr_t(std::__cxx11::basic_string, std::allocator > const&)' [ 165s] ./device/uhd/.libs/libdevice.a(UHDDevice.o): In function `uhd_e3xx_version_chk': [ 165s] ./Transceiver52M/device/uhd/UHDDevice.cpp:600: undefined reference to `uhd::get_version_string[abi:cxx11]()' [ 165s] collect2: error: ld returned 1 exit status [ 165s] Makefile:660: recipe for target 'osmo-trx-uhd' failed [ 165s] make[4]: *** [osmo-trx-uhd] Error 1 [ 165s] make[4]: Leaving directory '/usr/src/packages/BUILD/Transceiver52M' [ 165s] Makefile:796: recipe for target 'all-recursive' failed [ 165s] make[3]: *** [all-recursive] Error 1 [ 165s] make[3]: Leaving directory '/usr/src/packages/BUILD/Transceiver52M' [ 165s] Makefile:507: recipe for target 'all-recursive' failed [ 165s] make[2]: *** [all-recursive] Error 1 [ 165s] make[2]: Leaving directory '/usr/src/packages/BUILD' [ 165s] Makefile:438: recipe for target 'all' failed [ 165s] make[1]: *** [all] Error 2 [ 165s] make[1]: Leaving directory '/usr/src/packages/BUILD' [ 165s] dh_auto_build: make -j1 returned exit code 2 [ 165s] debian/rules:6: recipe for target 'build' failed [ 165s] make: *** [build] Error 2 [ 165s] dpkg-buildpackage: error: debian/rules build gave error exit status 2 [ 165s] [ 165s] lamb21 failed "build osmo-trx_0.2.0.20180426.dsc" at Thu Apr 26 13:12:20 UTC 2018. [ 165s] [ 165s] ### VM INTERACTION START ### [ 168s] [ 159.310929] reboot: Power down [ 168s] ### VM INTERACTION END ### [ 168s] [ 168s] lamb21 failed "build osmo-trx_0.2.0.20180426.dsc" at Thu Apr 26 13:12:24 UTC 2018. [ 168s] -- Configure notifications at https://build.opensuse.org/user/notifications openSUSE Build Service (https://build.opensuse.org/) From admin at opensuse.org Thu Apr 26 13:12:16 2018 From: admin at opensuse.org (OBS Notification) Date: Thu, 26 Apr 2018 13:12:16 +0000 Subject: Build failure of network:osmocom:nightly/osmo-trx in xUbuntu_17.04/x86_64 In-Reply-To: References: Message-ID: <5ae1d049d97f3_26bf9d867c3111f8@build.opensuse.org> Visit https://build.opensuse.org/package/live_build_log/network:osmocom:nightly/osmo-trx/xUbuntu_17.04/x86_64 Package network:osmocom:nightly/osmo-trx failed to build in xUbuntu_17.04/x86_64 Check out the package for editing: osc checkout network:osmocom:nightly osmo-trx Last lines of build log: [ 153s] ./Transceiver52M/device/uhd/UHDDevice.cpp:600: undefined reference to `uhd::get_version_string[abi:cxx11]()' [ 153s] ./device/uhd/.libs/libdevice.a(UHDDevice.o): In function `uhd_device::setPriority(float)': [ 153s] ./Transceiver52M/device/uhd/UHDDevice.cpp:886: undefined reference to `uhd::set_thread_priority_safe(float, bool)' [ 153s] collect2: error: ld returned 1 exit status [ 153s] Makefile:660: recipe for target 'osmo-trx-uhd' failed [ 153s] make[4]: *** [osmo-trx-uhd] Error 1 [ 153s] make[4]: Leaving directory '/usr/src/packages/BUILD/Transceiver52M' [ 153s] Makefile:796: recipe for target 'all-recursive' failed [ 153s] make[3]: *** [all-recursive] Error 1 [ 153s] make[3]: Leaving directory '/usr/src/packages/BUILD/Transceiver52M' [ 153s] Makefile:507: recipe for target 'all-recursive' failed [ 153s] make[2]: *** [all-recursive] Error 1 [ 153s] make[2]: Leaving directory '/usr/src/packages/BUILD' [ 153s] Makefile:438: recipe for target 'all' failed [ 153s] make[1]: *** [all] Error 2 [ 153s] make[1]: Leaving directory '/usr/src/packages/BUILD' [ 153s] dh_auto_build: make -j1 returned exit code 2 [ 153s] debian/rules:6: recipe for target 'build' failed [ 153s] make: *** [build] Error 2 [ 153s] dpkg-buildpackage: error: debian/rules build gave error exit status 2 [ 153s] [ 153s] lamb21 failed "build osmo-trx_0.2.0.20180426.dsc" at Thu Apr 26 13:12:11 UTC 2018. [ 153s] [ 153s] ### VM INTERACTION START ### [ 157s] [ 148.338781] reboot: Power down [ 157s] ### VM INTERACTION END ### [ 157s] [ 157s] lamb21 failed "build osmo-trx_0.2.0.20180426.dsc" at Thu Apr 26 13:12:15 UTC 2018. [ 157s] -- Configure notifications at https://build.opensuse.org/user/notifications openSUSE Build Service (https://build.opensuse.org/) From admin at opensuse.org Thu Apr 26 13:12:34 2018 From: admin at opensuse.org (OBS Notification) Date: Thu, 26 Apr 2018 13:12:34 +0000 Subject: Build failure of network:osmocom:nightly/osmo-trx in xUbuntu_16.04/x86_64 In-Reply-To: References: Message-ID: <5ae1d04af374c_26bf9d867c3113f5@build.opensuse.org> Visit https://build.opensuse.org/package/live_build_log/network:osmocom:nightly/osmo-trx/xUbuntu_16.04/x86_64 Package network:osmocom:nightly/osmo-trx failed to build in xUbuntu_16.04/x86_64 Check out the package for editing: osc checkout network:osmocom:nightly osmo-trx Last lines of build log: [ 146s] /usr/src/packages/BUILD/Transceiver52M/device/uhd/UHDDevice.cpp:600: undefined reference to `uhd::get_version_string[abi:cxx11]()' [ 146s] ./device/uhd/.libs/libdevice.a(UHDDevice.o): In function `uhd_device::setPriority(float)': [ 146s] /usr/src/packages/BUILD/Transceiver52M/device/uhd/UHDDevice.cpp:886: undefined reference to `uhd::set_thread_priority_safe(float, bool)' [ 146s] collect2: error: ld returned 1 exit status [ 146s] Makefile:660: recipe for target 'osmo-trx-uhd' failed [ 146s] make[4]: *** [osmo-trx-uhd] Error 1 [ 146s] make[4]: Leaving directory '/usr/src/packages/BUILD/Transceiver52M' [ 146s] Makefile:796: recipe for target 'all-recursive' failed [ 146s] make[3]: *** [all-recursive] Error 1 [ 146s] make[3]: Leaving directory '/usr/src/packages/BUILD/Transceiver52M' [ 146s] Makefile:507: recipe for target 'all-recursive' failed [ 146s] make[2]: *** [all-recursive] Error 1 [ 146s] make[2]: Leaving directory '/usr/src/packages/BUILD' [ 146s] Makefile:438: recipe for target 'all' failed [ 146s] make[1]: *** [all] Error 2 [ 146s] make[1]: Leaving directory '/usr/src/packages/BUILD' [ 146s] dh_auto_build: make -j1 returned exit code 2 [ 146s] debian/rules:6: recipe for target 'build' failed [ 146s] make: *** [build] Error 2 [ 146s] dpkg-buildpackage: error: debian/rules build gave error exit status 2 [ 146s] [ 146s] lamb12 failed "build osmo-trx_0.2.0.20180426.dsc" at Thu Apr 26 13:12:23 UTC 2018. [ 146s] [ 146s] ### VM INTERACTION START ### [ 149s] [ 141.822608] reboot: Power down [ 149s] ### VM INTERACTION END ### [ 149s] [ 149s] lamb12 failed "build osmo-trx_0.2.0.20180426.dsc" at Thu Apr 26 13:12:26 UTC 2018. [ 149s] -- Configure notifications at https://build.opensuse.org/user/notifications openSUSE Build Service (https://build.opensuse.org/) From admin at opensuse.org Thu Apr 26 13:12:51 2018 From: admin at opensuse.org (OBS Notification) Date: Thu, 26 Apr 2018 13:12:51 +0000 Subject: Build failure of network:osmocom:nightly/osmo-trx in xUbuntu_16.10/x86_64 In-Reply-To: References: Message-ID: <5ae1d0677461e_26bf9d867c311564@build.opensuse.org> Visit https://build.opensuse.org/package/live_build_log/network:osmocom:nightly/osmo-trx/xUbuntu_16.10/x86_64 Package network:osmocom:nightly/osmo-trx failed to build in xUbuntu_16.10/x86_64 Check out the package for editing: osc checkout network:osmocom:nightly osmo-trx Last lines of build log: [ 161s] ./Transceiver52M/device/uhd/UHDDevice.cpp:600: undefined reference to `uhd::get_version_string[abi:cxx11]()' [ 161s] ./device/uhd/.libs/libdevice.a(UHDDevice.o): In function `uhd_device::setPriority(float)': [ 161s] ./Transceiver52M/device/uhd/UHDDevice.cpp:886: undefined reference to `uhd::set_thread_priority_safe(float, bool)' [ 161s] collect2: error: ld returned 1 exit status [ 161s] Makefile:660: recipe for target 'osmo-trx-uhd' failed [ 161s] make[4]: *** [osmo-trx-uhd] Error 1 [ 161s] make[4]: Leaving directory '/usr/src/packages/BUILD/Transceiver52M' [ 161s] Makefile:796: recipe for target 'all-recursive' failed [ 161s] make[3]: *** [all-recursive] Error 1 [ 161s] make[3]: Leaving directory '/usr/src/packages/BUILD/Transceiver52M' [ 161s] Makefile:507: recipe for target 'all-recursive' failed [ 161s] make[2]: *** [all-recursive] Error 1 [ 161s] make[2]: Leaving directory '/usr/src/packages/BUILD' [ 161s] Makefile:438: recipe for target 'all' failed [ 161s] make[1]: *** [all] Error 2 [ 161s] make[1]: Leaving directory '/usr/src/packages/BUILD' [ 161s] dh_auto_build: make -j1 returned exit code 2 [ 161s] debian/rules:6: recipe for target 'build' failed [ 161s] make: *** [build] Error 2 [ 161s] dpkg-buildpackage: error: debian/rules build gave error exit status 2 [ 161s] [ 161s] lamb28 failed "build osmo-trx_0.2.0.20180426.dsc" at Thu Apr 26 13:12:43 UTC 2018. [ 161s] [ 161s] ### VM INTERACTION START ### [ 163s] [ 155.038957] reboot: Power down [ 164s] ### VM INTERACTION END ### [ 164s] [ 164s] lamb28 failed "build osmo-trx_0.2.0.20180426.dsc" at Thu Apr 26 13:12:47 UTC 2018. [ 164s] -- Configure notifications at https://build.opensuse.org/user/notifications openSUSE Build Service (https://build.opensuse.org/) From admin at opensuse.org Thu Apr 26 13:13:25 2018 From: admin at opensuse.org (OBS Notification) Date: Thu, 26 Apr 2018 13:13:25 +0000 Subject: Build failure of network:osmocom:nightly/osmo-trx in Debian_8.0/x86_64 In-Reply-To: References: Message-ID: <5ae1d08494fda_26bf9d867c31184@build.opensuse.org> Visit https://build.opensuse.org/package/live_build_log/network:osmocom:nightly/osmo-trx/Debian_8.0/x86_64 Package network:osmocom:nightly/osmo-trx failed to build in Debian_8.0/x86_64 Check out the package for editing: osc checkout network:osmocom:nightly osmo-trx Last lines of build log: [ 186s] make[4]: Entering directory '/usr/src/packages/BUILD/tests' [ 186s] make[4]: Nothing to be done for 'install-exec-am'. [ 186s] make[4]: Nothing to be done for 'install-data-am'. [ 186s] make[4]: Leaving directory '/usr/src/packages/BUILD/tests' [ 186s] make[3]: Leaving directory '/usr/src/packages/BUILD/tests' [ 186s] make[2]: Leaving directory '/usr/src/packages/BUILD/tests' [ 186s] make[2]: Entering directory '/usr/src/packages/BUILD' [ 186s] make[3]: Entering directory '/usr/src/packages/BUILD' [ 186s] make[3]: Nothing to be done for 'install-exec-am'. [ 186s] make[3]: Nothing to be done for 'install-data-am'. [ 186s] make[3]: Leaving directory '/usr/src/packages/BUILD' [ 186s] make[2]: Leaving directory '/usr/src/packages/BUILD' [ 186s] make[1]: Leaving directory '/usr/src/packages/BUILD' [ 187s] dh_install [ 187s] cp: cannot stat 'debian/tmp//usr/bin/osmo-trx-usrp1': No such file or directory [ 187s] dh_install: cp -a debian/tmp//usr/bin/osmo-trx-usrp1 debian/osmo-trx-usrp1///usr/bin/ returned exit code 1 [ 187s] debian/rules:6: recipe for target 'binary' failed [ 187s] make: *** [binary] Error 2 [ 187s] dpkg-buildpackage: error: fakeroot debian/rules binary gave error exit status 2 [ 187s] [ 187s] lamb51 failed "build osmo-trx_0.2.0.20180426.dsc" at Thu Apr 26 13:13:06 UTC 2018. [ 187s] [ 187s] ### VM INTERACTION START ### [ 188s] Powering off. [ 188s] [ 179.526889] reboot: Power down [ 188s] ### VM INTERACTION END ### [ 188s] [ 188s] lamb51 failed "build osmo-trx_0.2.0.20180426.dsc" at Thu Apr 26 13:13:08 UTC 2018. [ 188s] -- Configure notifications at https://build.opensuse.org/user/notifications openSUSE Build Service (https://build.opensuse.org/) From admin at opensuse.org Thu Apr 26 13:13:42 2018 From: admin at opensuse.org (OBS Notification) Date: Thu, 26 Apr 2018 13:13:42 +0000 Subject: Build failure of network:osmocom:nightly/osmo-trx in Debian_9.0/i586 In-Reply-To: References: Message-ID: <5ae1d0a1610a7_26bf9d867c312012@build.opensuse.org> Visit https://build.opensuse.org/package/live_build_log/network:osmocom:nightly/osmo-trx/Debian_9.0/i586 Package network:osmocom:nightly/osmo-trx failed to build in Debian_9.0/i586 Check out the package for editing: osc checkout network:osmocom:nightly osmo-trx Last lines of build log: [ 223s] make[4]: Entering directory '/usr/src/packages/BUILD/tests' [ 223s] make[4]: Nothing to be done for 'install-exec-am'. [ 223s] make[4]: Nothing to be done for 'install-data-am'. [ 223s] make[4]: Leaving directory '/usr/src/packages/BUILD/tests' [ 223s] make[3]: Leaving directory '/usr/src/packages/BUILD/tests' [ 223s] make[2]: Leaving directory '/usr/src/packages/BUILD/tests' [ 223s] make[2]: Entering directory '/usr/src/packages/BUILD' [ 223s] make[3]: Entering directory '/usr/src/packages/BUILD' [ 223s] make[3]: Nothing to be done for 'install-exec-am'. [ 223s] make[3]: Nothing to be done for 'install-data-am'. [ 223s] make[3]: Leaving directory '/usr/src/packages/BUILD' [ 223s] make[2]: Leaving directory '/usr/src/packages/BUILD' [ 223s] make[1]: Leaving directory '/usr/src/packages/BUILD' [ 223s] dh_install [ 223s] dh_install: Cannot find (any matches for) "/usr/bin/osmo-trx-usrp1" (tried in "." and "debian/tmp") [ 223s] dh_install: osmo-trx-usrp1 missing files: /usr/bin/osmo-trx-usrp1 [ 223s] dh_install: missing files, aborting [ 223s] debian/rules:6: recipe for target 'binary' failed [ 223s] make: *** [binary] Error 2 [ 223s] dpkg-buildpackage: error: fakeroot debian/rules binary gave error exit status 2 [ 223s] [ 223s] lamb23 failed "build osmo-trx_0.2.0.20180426.dsc" at Thu Apr 26 13:13:28 UTC 2018. [ 223s] [ 223s] ### VM INTERACTION START ### [ 226s] [ 216.752532] reboot: Power down [ 226s] ### VM INTERACTION END ### [ 226s] [ 226s] lamb23 failed "build osmo-trx_0.2.0.20180426.dsc" at Thu Apr 26 13:13:31 UTC 2018. [ 226s] -- Configure notifications at https://build.opensuse.org/user/notifications openSUSE Build Service (https://build.opensuse.org/) From admin at opensuse.org Thu Apr 26 13:13:42 2018 From: admin at opensuse.org (OBS Notification) Date: Thu, 26 Apr 2018 13:13:42 +0000 Subject: Build failure of network:osmocom:nightly/libosmo-netif in xUbuntu_17.04/x86_64 In-Reply-To: References: Message-ID: <5ae1d0a1af143_26bf9d867c31216e@build.opensuse.org> Visit https://build.opensuse.org/package/live_build_log/network:osmocom:nightly/libosmo-netif/xUbuntu_17.04/x86_64 Package network:osmocom:nightly/libosmo-netif failed to build in xUbuntu_17.04/x86_64 Check out the package for editing: osc checkout network:osmocom:nightly libosmo-netif Last lines of build log: [ 124s] | #define HAVE_STDINT_H 1 [ 124s] | #define HAVE_UNISTD_H 1 [ 124s] | #define HAVE_DLFCN_H 1 [ 124s] | #define LT_OBJDIR ".libs/" [ 124s] | #define STDC_HEADERS 1 [ 124s] | #define HAVE_EXECINFO_H 1 [ 124s] | #define HAVE_SYS_SELECT_H 1 [ 124s] | #define HAVE_SYS_SOCKET_H 1 [ 124s] | #define HAVE_SYSLOG_H 1 [ 124s] | #define HAVE_CTYPE_H 1 [ 124s] | #define HAVE_LIBSCTP 1 [ 124s] | [ 124s] | configure: exit 0 [ 124s] [ 124s] debian/rules:31: recipe for target 'override_dh_auto_test' failed [ 124s] make[1]: *** [override_dh_auto_test] Error 1 [ 124s] make[1]: Leaving directory '/usr/src/packages/BUILD' [ 124s] debian/rules:13: recipe for target 'build' failed [ 124s] make: *** [build] Error 2 [ 124s] dpkg-buildpackage: error: debian/rules build gave error exit status 2 [ 124s] [ 124s] lamb57 failed "build libosmo-netif_0.1.1.20180426.dsc" at Thu Apr 26 13:13:28 UTC 2018. [ 124s] [ 124s] ### VM INTERACTION START ### [ 127s] [ 117.416219] reboot: Power down [ 127s] ### VM INTERACTION END ### [ 127s] [ 127s] lamb57 failed "build libosmo-netif_0.1.1.20180426.dsc" at Thu Apr 26 13:13:32 UTC 2018. [ 127s] -- Configure notifications at https://build.opensuse.org/user/notifications openSUSE Build Service (https://build.opensuse.org/) From admin at opensuse.org Thu Apr 26 13:14:16 2018 From: admin at opensuse.org (OBS Notification) Date: Thu, 26 Apr 2018 13:14:16 +0000 Subject: Build failure of network:osmocom:nightly/osmo-trx in xUbuntu_17.10/x86_64 In-Reply-To: References: Message-ID: <5ae1d0bd29d3b_26bf9d867c312227@build.opensuse.org> Visit https://build.opensuse.org/package/live_build_log/network:osmocom:nightly/osmo-trx/xUbuntu_17.10/x86_64 Package network:osmocom:nightly/osmo-trx failed to build in xUbuntu_17.10/x86_64 Check out the package for editing: osc checkout network:osmocom:nightly osmo-trx Last lines of build log: [ 204s] ./Transceiver52M/device/uhd/UHDDevice.cpp:600: undefined reference to `uhd::get_version_string[abi:cxx11]()' [ 204s] ./device/uhd/.libs/libdevice.a(UHDDevice.o): In function `uhd_device::setPriority(float)': [ 204s] ./Transceiver52M/device/uhd/UHDDevice.cpp:886: undefined reference to `uhd::set_thread_priority_safe(float, bool)' [ 204s] collect2: error: ld returned 1 exit status [ 204s] Makefile:660: recipe for target 'osmo-trx-uhd' failed [ 204s] make[4]: *** [osmo-trx-uhd] Error 1 [ 204s] make[4]: Leaving directory '/usr/src/packages/BUILD/Transceiver52M' [ 204s] Makefile:796: recipe for target 'all-recursive' failed [ 204s] make[3]: *** [all-recursive] Error 1 [ 204s] make[3]: Leaving directory '/usr/src/packages/BUILD/Transceiver52M' [ 204s] Makefile:507: recipe for target 'all-recursive' failed [ 204s] make[2]: *** [all-recursive] Error 1 [ 204s] make[2]: Leaving directory '/usr/src/packages/BUILD' [ 204s] Makefile:438: recipe for target 'all' failed [ 204s] make[1]: *** [all] Error 2 [ 204s] make[1]: Leaving directory '/usr/src/packages/BUILD' [ 204s] dh_auto_build: make -j1 returned exit code 2 [ 204s] debian/rules:6: recipe for target 'build' failed [ 204s] make: *** [build] Error 2 [ 204s] dpkg-buildpackage: error: debian/rules build gave error exit status 2 [ 204s] [ 204s] lamb27 failed "build osmo-trx_0.2.0.20180426.dsc" at Thu Apr 26 13:14:00 UTC 2018. [ 204s] [ 204s] ### VM INTERACTION START ### [ 207s] [ 196.713773] reboot: Power down [ 207s] ### VM INTERACTION END ### [ 207s] [ 207s] lamb27 failed "build osmo-trx_0.2.0.20180426.dsc" at Thu Apr 26 13:14:04 UTC 2018. [ 207s] -- Configure notifications at https://build.opensuse.org/user/notifications openSUSE Build Service (https://build.opensuse.org/) From admin at opensuse.org Thu Apr 26 13:14:34 2018 From: admin at opensuse.org (OBS Notification) Date: Thu, 26 Apr 2018 13:14:34 +0000 Subject: Build failure of network:osmocom:nightly/osmo-trx in Debian_8.0/i586 In-Reply-To: References: Message-ID: <5ae1d0bdd20b0_26bf9d867c3123d4@build.opensuse.org> Visit https://build.opensuse.org/package/live_build_log/network:osmocom:nightly/osmo-trx/Debian_8.0/i586 Package network:osmocom:nightly/osmo-trx failed to build in Debian_8.0/i586 Check out the package for editing: osc checkout network:osmocom:nightly osmo-trx Last lines of build log: [ 180s] make[4]: Entering directory '/usr/src/packages/BUILD/tests' [ 180s] make[4]: Nothing to be done for 'install-exec-am'. [ 180s] make[4]: Nothing to be done for 'install-data-am'. [ 180s] make[4]: Leaving directory '/usr/src/packages/BUILD/tests' [ 180s] make[3]: Leaving directory '/usr/src/packages/BUILD/tests' [ 180s] make[2]: Leaving directory '/usr/src/packages/BUILD/tests' [ 180s] make[2]: Entering directory '/usr/src/packages/BUILD' [ 180s] make[3]: Entering directory '/usr/src/packages/BUILD' [ 180s] make[3]: Nothing to be done for 'install-exec-am'. [ 180s] make[3]: Nothing to be done for 'install-data-am'. [ 180s] make[3]: Leaving directory '/usr/src/packages/BUILD' [ 180s] make[2]: Leaving directory '/usr/src/packages/BUILD' [ 180s] make[1]: Leaving directory '/usr/src/packages/BUILD' [ 180s] dh_install [ 180s] cp: cannot stat 'debian/tmp//usr/bin/osmo-trx-usrp1': No such file or directory [ 180s] dh_install: cp -a debian/tmp//usr/bin/osmo-trx-usrp1 debian/osmo-trx-usrp1///usr/bin/ returned exit code 1 [ 180s] debian/rules:6: recipe for target 'binary' failed [ 180s] make: *** [binary] Error 2 [ 180s] dpkg-buildpackage: error: fakeroot debian/rules binary gave error exit status 2 [ 180s] [ 180s] lamb06 failed "build osmo-trx_0.2.0.20180426.dsc" at Thu Apr 26 13:14:18 UTC 2018. [ 180s] [ 180s] ### VM INTERACTION START ### [ 181s] Powering off. [ 182s] [ 172.881331] reboot: Power down [ 182s] ### VM INTERACTION END ### [ 182s] [ 182s] lamb06 failed "build osmo-trx_0.2.0.20180426.dsc" at Thu Apr 26 13:14:20 UTC 2018. [ 182s] -- Configure notifications at https://build.opensuse.org/user/notifications openSUSE Build Service (https://build.opensuse.org/) From admin at opensuse.org Thu Apr 26 13:14:34 2018 From: admin at opensuse.org (OBS Notification) Date: Thu, 26 Apr 2018 13:14:34 +0000 Subject: Build failure of network:osmocom:nightly/osmo-trx in xUbuntu_16.04/i586 In-Reply-To: References: Message-ID: <5ae1d0be55b4a_26bf9d867c31241b@build.opensuse.org> Visit https://build.opensuse.org/package/live_build_log/network:osmocom:nightly/osmo-trx/xUbuntu_16.04/i586 Package network:osmocom:nightly/osmo-trx failed to build in xUbuntu_16.04/i586 Check out the package for editing: osc checkout network:osmocom:nightly osmo-trx Last lines of build log: [ 274s] /usr/include/uhd/stream.hpp:63: undefined reference to `uhd::device_addr_t::device_addr_t(std::__cxx11::basic_string, std::allocator > const&)' [ 274s] ./device/uhd/.libs/libdevice.a(UHDDevice.o): In function `uhd_e3xx_version_chk': [ 274s] /usr/src/packages/BUILD/Transceiver52M/device/uhd/UHDDevice.cpp:600: undefined reference to `uhd::get_version_string[abi:cxx11]()' [ 274s] collect2: error: ld returned 1 exit status [ 274s] Makefile:660: recipe for target 'osmo-trx-uhd' failed [ 274s] make[4]: *** [osmo-trx-uhd] Error 1 [ 274s] make[4]: Leaving directory '/usr/src/packages/BUILD/Transceiver52M' [ 274s] Makefile:796: recipe for target 'all-recursive' failed [ 274s] make[3]: *** [all-recursive] Error 1 [ 274s] make[3]: Leaving directory '/usr/src/packages/BUILD/Transceiver52M' [ 274s] Makefile:507: recipe for target 'all-recursive' failed [ 274s] make[2]: *** [all-recursive] Error 1 [ 274s] make[2]: Leaving directory '/usr/src/packages/BUILD' [ 274s] Makefile:438: recipe for target 'all' failed [ 274s] make[1]: *** [all] Error 2 [ 274s] make[1]: Leaving directory '/usr/src/packages/BUILD' [ 274s] dh_auto_build: make -j1 returned exit code 2 [ 274s] debian/rules:6: recipe for target 'build' failed [ 274s] make: *** [build] Error 2 [ 274s] dpkg-buildpackage: error: debian/rules build gave error exit status 2 [ 274s] [ 274s] cloud116 failed "build osmo-trx_0.2.0.20180426.dsc" at Thu Apr 26 13:14:22 UTC 2018. [ 274s] [ 274s] ### VM INTERACTION START ### [ 277s] [ 259.060245] reboot: Power down [ 278s] ### VM INTERACTION END ### [ 278s] [ 278s] cloud116 failed "build osmo-trx_0.2.0.20180426.dsc" at Thu Apr 26 13:14:27 UTC 2018. [ 278s] -- Configure notifications at https://build.opensuse.org/user/notifications openSUSE Build Service (https://build.opensuse.org/) From admin at opensuse.org Thu Apr 26 13:14:34 2018 From: admin at opensuse.org (OBS Notification) Date: Thu, 26 Apr 2018 13:14:34 +0000 Subject: Build failure of network:osmocom:nightly/osmo-trx in xUbuntu_16.10/i586 In-Reply-To: References: Message-ID: <5ae1d0be9e4d2_26bf9d867c312511@build.opensuse.org> Visit https://build.opensuse.org/package/live_build_log/network:osmocom:nightly/osmo-trx/xUbuntu_16.10/i586 Package network:osmocom:nightly/osmo-trx failed to build in xUbuntu_16.10/i586 Check out the package for editing: osc checkout network:osmocom:nightly osmo-trx Last lines of build log: [ 254s] /usr/include/uhd/stream.hpp:63: undefined reference to `uhd::device_addr_t::device_addr_t(std::__cxx11::basic_string, std::allocator > const&)' [ 254s] ./device/uhd/.libs/libdevice.a(UHDDevice.o): In function `uhd_e3xx_version_chk': [ 254s] ./Transceiver52M/device/uhd/UHDDevice.cpp:600: undefined reference to `uhd::get_version_string[abi:cxx11]()' [ 254s] collect2: error: ld returned 1 exit status [ 254s] Makefile:660: recipe for target 'osmo-trx-uhd' failed [ 254s] make[4]: *** [osmo-trx-uhd] Error 1 [ 254s] make[4]: Leaving directory '/usr/src/packages/BUILD/Transceiver52M' [ 254s] Makefile:796: recipe for target 'all-recursive' failed [ 254s] make[3]: *** [all-recursive] Error 1 [ 254s] make[3]: Leaving directory '/usr/src/packages/BUILD/Transceiver52M' [ 254s] Makefile:507: recipe for target 'all-recursive' failed [ 254s] make[2]: *** [all-recursive] Error 1 [ 254s] make[2]: Leaving directory '/usr/src/packages/BUILD' [ 254s] Makefile:438: recipe for target 'all' failed [ 254s] make[1]: *** [all] Error 2 [ 254s] make[1]: Leaving directory '/usr/src/packages/BUILD' [ 254s] dh_auto_build: make -j1 returned exit code 2 [ 254s] debian/rules:6: recipe for target 'build' failed [ 254s] make: *** [build] Error 2 [ 254s] dpkg-buildpackage: error: debian/rules build gave error exit status 2 [ 254s] [ 254s] cloud108 failed "build osmo-trx_0.2.0.20180426.dsc" at Thu Apr 26 13:14:23 UTC 2018. [ 254s] [ 254s] ### VM INTERACTION START ### [ 257s] [ 235.900762] reboot: Power down [ 257s] ### VM INTERACTION END ### [ 258s] [ 258s] cloud108 failed "build osmo-trx_0.2.0.20180426.dsc" at Thu Apr 26 13:14:28 UTC 2018. [ 258s] -- Configure notifications at https://build.opensuse.org/user/notifications openSUSE Build Service (https://build.opensuse.org/) From admin at opensuse.org Thu Apr 26 13:14:51 2018 From: admin at opensuse.org (OBS Notification) Date: Thu, 26 Apr 2018 13:14:51 +0000 Subject: Build failure of network:osmocom:nightly/osmo-trx in Debian_9.0/x86_64 In-Reply-To: References: Message-ID: <5ae1d0decad00_26bf9d867c31262e@build.opensuse.org> Visit https://build.opensuse.org/package/live_build_log/network:osmocom:nightly/osmo-trx/Debian_9.0/x86_64 Package network:osmocom:nightly/osmo-trx failed to build in Debian_9.0/x86_64 Check out the package for editing: osc checkout network:osmocom:nightly osmo-trx Last lines of build log: [ 192s] make[4]: Entering directory '/usr/src/packages/BUILD/tests' [ 192s] make[4]: Nothing to be done for 'install-exec-am'. [ 192s] make[4]: Nothing to be done for 'install-data-am'. [ 192s] make[4]: Leaving directory '/usr/src/packages/BUILD/tests' [ 192s] make[3]: Leaving directory '/usr/src/packages/BUILD/tests' [ 192s] make[2]: Leaving directory '/usr/src/packages/BUILD/tests' [ 192s] make[2]: Entering directory '/usr/src/packages/BUILD' [ 192s] make[3]: Entering directory '/usr/src/packages/BUILD' [ 192s] make[3]: Nothing to be done for 'install-exec-am'. [ 192s] make[3]: Nothing to be done for 'install-data-am'. [ 192s] make[3]: Leaving directory '/usr/src/packages/BUILD' [ 192s] make[2]: Leaving directory '/usr/src/packages/BUILD' [ 192s] make[1]: Leaving directory '/usr/src/packages/BUILD' [ 192s] dh_install [ 193s] dh_install: Cannot find (any matches for) "/usr/bin/osmo-trx-usrp1" (tried in "." and "debian/tmp") [ 193s] dh_install: osmo-trx-usrp1 missing files: /usr/bin/osmo-trx-usrp1 [ 193s] dh_install: missing files, aborting [ 193s] debian/rules:6: recipe for target 'binary' failed [ 193s] make: *** [binary] Error 2 [ 193s] dpkg-buildpackage: error: fakeroot debian/rules binary gave error exit status 2 [ 193s] [ 193s] lamb20 failed "build osmo-trx_0.2.0.20180426.dsc" at Thu Apr 26 13:14:32 UTC 2018. [ 193s] [ 193s] ### VM INTERACTION START ### [ 196s] [ 186.689935] reboot: Power down [ 196s] ### VM INTERACTION END ### [ 196s] [ 196s] lamb20 failed "build osmo-trx_0.2.0.20180426.dsc" at Thu Apr 26 13:14:36 UTC 2018. [ 196s] -- Configure notifications at https://build.opensuse.org/user/notifications openSUSE Build Service (https://build.opensuse.org/) From admin at opensuse.org Thu Apr 26 13:15:25 2018 From: admin at opensuse.org (OBS Notification) Date: Thu, 26 Apr 2018 13:15:25 +0000 Subject: Build failure of network:osmocom:nightly/libosmo-netif in xUbuntu_17.10/x86_64 In-Reply-To: References: Message-ID: <5ae1d0faefe17_26bf9d867c3127bf@build.opensuse.org> Visit https://build.opensuse.org/package/live_build_log/network:osmocom:nightly/libosmo-netif/xUbuntu_17.10/x86_64 Package network:osmocom:nightly/libosmo-netif failed to build in xUbuntu_17.10/x86_64 Check out the package for editing: osc checkout network:osmocom:nightly libosmo-netif Last lines of build log: [ 111s] -sys={0.040000}, mono={0.040000}: dequeue: seq=56 ts=1460 enqueued=5 [ 111s] -sys={0.140000}, mono={0.140000}: clock_override_add [ 111s] -sys={0.140000}, mono={0.140000}: calling select, then all should be out [ 111s] -sys={0.140000}, mono={0.140000}: dequeue: seq=57 ts=1620 enqueued=4 [ 111s] -sys={0.140000}, mono={0.140000}: dequeue: seq=58 ts=1780 enqueued=3 [ 111s] -sys={0.140000}, mono={0.140000}: dequeue: seq=59 ts=1940 enqueued=2 [ 111s] -sys={0.140000}, mono={0.140000}: dequeue: seq=60 ts=2100 enqueued=1 [ 111s] -sys={0.140000}, mono={0.140000}: dequeue: seq=61 ts=2260 enqueued=0 [ 111s] -===test_output_2together=== [ 111s] -sys={0.000000}, mono={0.000000}: clock_override_set [ 111s] -sys={0.000000}, mono={0.000000}: dequeue: seq=50 ts=500 M enqueued=5 [ 111s] -sys={0.000000}, mono={0.000000}: calling select in between 2 osmux recv [ 111s] -sys={0.000000}, mono={0.000000}: calling select after receiving 2nd osmux. Dequeue 1st osmux frame and 1st rtp from 2nd osmux frame. [ 111s] -sys={0.000000}, mono={0.000000}: dequeue: seq=51 ts=660 enqueued=10 [ 111s] -sys={0.000000}, mono={0.000000}: dequeue: seq=52 ts=820 enqueued=9 [ 111s] -sys={0.000000}, mono={0.000000}: dequeue: seq=53 ts=980 enqueued=8 [ 111s] -sys={0.000000}, mono={0.000000}: dequeue: seq=54 ts=1140 enqueued=7 [ 111s] -sys={0.000000}, mono={0.000000}: dequeue: seq=55 ts=1300 enqueued=6 [ 111s] -sys={0.000000}, mono={0.000000}: dequeue: seq=56 ts=1460 enqueued=5 [ 111s] -sys={0.100000}, mono={0.100000}: clock_override_add [ 111s] -sys={0.100000}, mono={0.100000}: select, all 5 remaining should be out [ 111s] -sys={0.100000}, mono={0.100000}: dequeue: seq=57 ts=1620 enqueued=4 [ 111s] -sys={0.100000}, mono={0.100000}: dequeue: seq=58 ts=1780 enqueued=3 [ 111s] -sys={0.100000}, mono={0.100000}: dequeue: seq=59 ts=1940 enqueued=2 [ 113s] -sys={0.100000}, mono={0.[ 105.462142] reboot: Power down [ 113s] ### VM INTERACTION END ### [ 113s] [ 113s] lamb59 failed "build libosmo-netif_0.1.1.20180426.dsc" at Thu Apr 26 13:15:14 UTC 2018. [ 113s] -- Configure notifications at https://build.opensuse.org/user/notifications openSUSE Build Service (https://build.opensuse.org/) From admin at opensuse.org Thu Apr 26 13:16:51 2018 From: admin at opensuse.org (OBS Notification) Date: Thu, 26 Apr 2018 13:16:51 +0000 Subject: Build failure of network:osmocom:nightly/libosmo-netif in Debian_9.0/x86_64 In-Reply-To: References: Message-ID: <5ae1d152aa94b_26bf9d867c31288a@build.opensuse.org> Visit https://build.opensuse.org/package/live_build_log/network:osmocom:nightly/libosmo-netif/Debian_9.0/x86_64 Package network:osmocom:nightly/libosmo-netif failed to build in Debian_9.0/x86_64 Check out the package for editing: osc checkout network:osmocom:nightly libosmo-netif Last lines of build log: [ 185s] | #define HAVE_STDINT_H 1 [ 185s] | #define HAVE_UNISTD_H 1 [ 185s] | #define HAVE_DLFCN_H 1 [ 185s] | #define LT_OBJDIR ".libs/" [ 185s] | #define STDC_HEADERS 1 [ 185s] | #define HAVE_EXECINFO_H 1 [ 185s] | #define HAVE_SYS_SELECT_H 1 [ 185s] | #define HAVE_SYS_SOCKET_H 1 [ 185s] | #define HAVE_SYSLOG_H 1 [ 185s] | #define HAVE_CTYPE_H 1 [ 185s] | #define HAVE_LIBSCTP 1 [ 185s] | [ 185s] | configure: exit 0 [ 185s] [ 185s] debian/rules:31: recipe for target 'override_dh_auto_test' failed [ 185s] make[1]: *** [override_dh_auto_test] Error 1 [ 185s] make[1]: Leaving directory '/usr/src/packages/BUILD' [ 185s] debian/rules:13: recipe for target 'build' failed [ 185s] make: *** [build] Error 2 [ 185s] dpkg-buildpackage: error: debian/rules build gave error exit status 2 [ 185s] [ 185s] lamb53 failed "build libosmo-netif_0.1.1.20180426.dsc" at Thu Apr 26 13:16:33 UTC 2018. [ 185s] [ 185s] ### VM INTERACTION START ### [ 188s] [ 179.529764] reboot: Power down [ 188s] ### VM INTERACTION END ### [ 188s] [ 188s] lamb53 failed "build libosmo-netif_0.1.1.20180426.dsc" at Thu Apr 26 13:16:37 UTC 2018. [ 188s] -- Configure notifications at https://build.opensuse.org/user/notifications openSUSE Build Service (https://build.opensuse.org/) From admin at opensuse.org Thu Apr 26 13:18:16 2018 From: admin at opensuse.org (OBS Notification) Date: Thu, 26 Apr 2018 13:18:16 +0000 Subject: Build failure of network:osmocom:nightly/openbsc in xUbuntu_17.04/x86_64 In-Reply-To: References: Message-ID: <5ae1d1b09e67a_26bf9d867c312930@build.opensuse.org> Visit https://build.opensuse.org/package/live_build_log/network:osmocom:nightly/openbsc/xUbuntu_17.04/x86_64 Package network:osmocom:nightly/openbsc failed to build in xUbuntu_17.04/x86_64 Check out the package for editing: osc checkout network:osmocom:nightly openbsc Last lines of build log: [ 88s] mgcp_osmux.c:490:2: error: implicit declaration of function 'osmux_xfrm_output_flush' [-Werror=implicit-function-declaration] [ 88s] osmux_xfrm_output_flush(&endp->osmux.out); [ 88s] ^~~~~~~~~~~~~~~~~~~~~~~ [ 88s] cc1: some warnings being treated as errors [ 88s] Makefile:455: recipe for target 'mgcp_osmux.o' failed [ 88s] make[4]: *** [mgcp_osmux.o] Error 1 [ 88s] make[4]: Leaving directory '/usr/src/packages/BUILD/openbsc/src/libmgcp' [ 88s] Makefile:447: recipe for target 'all-recursive' failed [ 88s] make[3]: *** [all-recursive] Error 1 [ 88s] make[3]: Leaving directory '/usr/src/packages/BUILD/openbsc/src' [ 88s] Makefile:518: recipe for target 'all-recursive' failed [ 88s] make[2]: *** [all-recursive] Error 1 [ 88s] make[2]: Leaving directory '/usr/src/packages/BUILD/openbsc' [ 88s] Makefile:427: recipe for target 'all' failed [ 88s] make[1]: *** [all] Error 2 [ 88s] make[1]: Leaving directory '/usr/src/packages/BUILD/openbsc' [ 88s] dh_auto_build: make -j1 returned exit code 2 [ 88s] debian/rules:13: recipe for target 'build' failed [ 88s] make: *** [build] Error 2 [ 88s] dpkg-buildpackage: error: debian/rules build gave error exit status 2 [ 88s] [ 88s] lamb07 failed "build openbsc_1.0.0.20180426.dsc" at Thu Apr 26 13:17:59 UTC 2018. [ 88s] [ 88s] ### VM INTERACTION START ### [ 91s] [ 83.222125] reboot: Power down [ 91s] ### VM INTERACTION END ### [ 91s] [ 91s] lamb07 failed "build openbsc_1.0.0.20180426.dsc" at Thu Apr 26 13:18:03 UTC 2018. [ 91s] -- Configure notifications at https://build.opensuse.org/user/notifications openSUSE Build Service (https://build.opensuse.org/) From admin at opensuse.org Thu Apr 26 13:20:34 2018 From: admin at opensuse.org (OBS Notification) Date: Thu, 26 Apr 2018 13:20:34 +0000 Subject: Build failure of network:osmocom:nightly/openbsc in Debian_9.0/x86_64 In-Reply-To: References: Message-ID: <5ae1d22522e75_26bf9d867c31344d@build.opensuse.org> Visit https://build.opensuse.org/package/live_build_log/network:osmocom:nightly/openbsc/Debian_9.0/x86_64 Package network:osmocom:nightly/openbsc failed to build in Debian_9.0/x86_64 Check out the package for editing: osc checkout network:osmocom:nightly openbsc Last lines of build log: [ 82s] mgcp_osmux.c:490:2: error: implicit declaration of function 'osmux_xfrm_output_flush' [-Werror=implicit-function-declaration] [ 82s] osmux_xfrm_output_flush(&endp->osmux.out); [ 82s] ^~~~~~~~~~~~~~~~~~~~~~~ [ 82s] cc1: some warnings being treated as errors [ 82s] Makefile:455: recipe for target 'mgcp_osmux.o' failed [ 82s] make[4]: *** [mgcp_osmux.o] Error 1 [ 82s] make[4]: Leaving directory '/usr/src/packages/BUILD/openbsc/src/libmgcp' [ 82s] Makefile:447: recipe for target 'all-recursive' failed [ 82s] make[3]: *** [all-recursive] Error 1 [ 82s] make[3]: Leaving directory '/usr/src/packages/BUILD/openbsc/src' [ 82s] Makefile:518: recipe for target 'all-recursive' failed [ 82s] make[2]: *** [all-recursive] Error 1 [ 82s] make[2]: Leaving directory '/usr/src/packages/BUILD/openbsc' [ 82s] Makefile:427: recipe for target 'all' failed [ 82s] make[1]: *** [all] Error 2 [ 82s] make[1]: Leaving directory '/usr/src/packages/BUILD/openbsc' [ 82s] dh_auto_build: make -j1 returned exit code 2 [ 82s] debian/rules:13: recipe for target 'build' failed [ 82s] make: *** [build] Error 2 [ 82s] dpkg-buildpackage: error: debian/rules build gave error exit status 2 [ 82s] [ 82s] lamb17 failed "build openbsc_1.0.0.20180426.dsc" at Thu Apr 26 13:20:21 UTC 2018. [ 82s] [ 82s] ### VM INTERACTION START ### [ 85s] [ 77.079411] reboot: Power down [ 85s] ### VM INTERACTION END ### [ 85s] [ 85s] lamb17 failed "build openbsc_1.0.0.20180426.dsc" at Thu Apr 26 13:20:24 UTC 2018. [ 85s] -- Configure notifications at https://build.opensuse.org/user/notifications openSUSE Build Service (https://build.opensuse.org/) From admin at opensuse.org Thu Apr 26 13:21:25 2018 From: admin at opensuse.org (OBS Notification) Date: Thu, 26 Apr 2018 13:21:25 +0000 Subject: Build failure of network:osmocom:nightly/openbsc in xUbuntu_17.10/x86_64 In-Reply-To: References: Message-ID: <5ae1d26133684_26bf9d867c31359a@build.opensuse.org> Visit https://build.opensuse.org/package/live_build_log/network:osmocom:nightly/openbsc/xUbuntu_17.10/x86_64 Package network:osmocom:nightly/openbsc failed to build in xUbuntu_17.10/x86_64 Check out the package for editing: osc checkout network:osmocom:nightly openbsc Last lines of build log: [ 118s] osmux_xfrm_output_flush(&endp->osmux.out); [ 118s] ^~~~~~~~~~~~~~~~~~~~~~~ [ 118s] osmux_xfrm_output_pull [ 119s] cc1: some warnings being treated as errors [ 119s] Makefile:455: recipe for target 'mgcp_osmux.o' failed [ 119s] make[4]: *** [mgcp_osmux.o] Error 1 [ 119s] make[4]: Leaving directory '/usr/src/packages/BUILD/openbsc/src/libmgcp' [ 119s] Makefile:447: recipe for target 'all-recursive' failed [ 119s] make[3]: *** [all-recursive] Error 1 [ 119s] make[3]: Leaving directory '/usr/src/packages/BUILD/openbsc/src' [ 119s] Makefile:518: recipe for target 'all-recursive' failed [ 119s] make[2]: *** [all-recursive] Error 1 [ 119s] make[2]: Leaving directory '/usr/src/packages/BUILD/openbsc' [ 119s] Makefile:427: recipe for target 'all' failed [ 119s] make[1]: *** [all] Error 2 [ 119s] make[1]: Leaving directory '/usr/src/packages/BUILD/openbsc' [ 119s] dh_auto_build: make -j1 returned exit code 2 [ 119s] debian/rules:13: recipe for target 'build' failed [ 119s] make: *** [build] Error 2 [ 119s] dpkg-buildpackage: error: debian/rules build gave error exit status 2 [ 119s] [ 119s] wildcard3 failed "build openbsc_1.0.0.20180426.dsc" at Thu Apr 26 13:20:59 UTC 2018. [ 119s] [ 119s] ### VM INTERACTION START ### [ 122s] [ 101.385602] reboot: Power down [ 136s] ### VM INTERACTION END ### [ 136s] [ 136s] wildcard3 failed "build openbsc_1.0.0.20180426.dsc" at Thu Apr 26 13:21:17 UTC 2018. [ 136s] -- Configure notifications at https://build.opensuse.org/user/notifications openSUSE Build Service (https://build.opensuse.org/) From admin at opensuse.org Thu Apr 26 13:28:16 2018 From: admin at opensuse.org (OBS Notification) Date: Thu, 26 Apr 2018 13:28:16 +0000 Subject: Build failure of network:osmocom:nightly/osmo-trx in Debian_9.0/aarch64 In-Reply-To: References: Message-ID: <5ae1d40432859_26bf9d867c3151e5@build.opensuse.org> Visit https://build.opensuse.org/package/live_build_log/network:osmocom:nightly/osmo-trx/Debian_9.0/aarch64 Package network:osmocom:nightly/osmo-trx failed to build in Debian_9.0/aarch64 Check out the package for editing: osc checkout network:osmocom:nightly osmo-trx Last lines of build log: [ 536s] #include "convolve.h" [ 536s] ^ [ 536s] compilation terminated. [ 536s] Makefile:458: recipe for target 'convolve_test-convolve_test.o' failed [ 536s] make[4]: *** [convolve_test-convolve_test.o] Error 1 [ 536s] make[4]: Leaving directory '/usr/src/packages/BUILD/tests/Transceiver52M' [ 536s] Makefile:397: recipe for target 'all-recursive' failed [ 536s] make[3]: *** [all-recursive] Error 1 [ 536s] make[3]: Leaving directory '/usr/src/packages/BUILD/tests' [ 536s] Makefile:507: recipe for target 'all-recursive' failed [ 536s] make[2]: *** [all-recursive] Error 1 [ 536s] make[2]: Leaving directory '/usr/src/packages/BUILD' [ 536s] Makefile:438: recipe for target 'all' failed [ 536s] make[1]: *** [all] Error 2 [ 536s] make[1]: Leaving directory '/usr/src/packages/BUILD' [ 536s] dh_auto_build: make -j1 returned exit code 2 [ 536s] debian/rules:6: recipe for target 'build' failed [ 536s] make: *** [build] Error 2 [ 536s] dpkg-buildpackage: error: debian/rules build gave error exit status 2 [ 536s] [ 536s] obs-arm-4 failed "build osmo-trx_0.2.0.20180426.dsc" at Thu Apr 26 13:28:02 UTC 2018. [ 536s] [ 536s] ### VM INTERACTION START ### [ 540s] [ 505.380140] sysrq: SysRq : Power Off [ 540s] [ 505.384582] reboot: Power down [ 540s] ### VM INTERACTION END ### [ 540s] [ 540s] obs-arm-4 failed "build osmo-trx_0.2.0.20180426.dsc" at Thu Apr 26 13:28:06 UTC 2018. [ 540s] -- Configure notifications at https://build.opensuse.org/user/notifications openSUSE Build Service (https://build.opensuse.org/) From admin at opensuse.org Thu Apr 26 13:38:34 2018 From: admin at opensuse.org (OBS Notification) Date: Thu, 26 Apr 2018 13:38:34 +0000 Subject: Build failure of network:osmocom:nightly/osmo-trx in Debian_9.0/armv7l In-Reply-To: References: Message-ID: <5ae1d660ad617_26bf9d867c3183f2@build.opensuse.org> Visit https://build.opensuse.org/package/live_build_log/network:osmocom:nightly/osmo-trx/Debian_9.0/armv7l Package network:osmocom:nightly/osmo-trx failed to build in Debian_9.0/armv7l Check out the package for editing: osc checkout network:osmocom:nightly osmo-trx Last lines of build log: [ 1095s] #include "convolve.h" [ 1095s] ^ [ 1095s] compilation terminated. [ 1095s] Makefile:458: recipe for target 'convolve_test-convolve_test.o' failed [ 1095s] make[4]: *** [convolve_test-convolve_test.o] Error 1 [ 1095s] make[4]: Leaving directory '/usr/src/packages/BUILD/tests/Transceiver52M' [ 1095s] Makefile:397: recipe for target 'all-recursive' failed [ 1095s] make[3]: *** [all-recursive] Error 1 [ 1095s] make[3]: Leaving directory '/usr/src/packages/BUILD/tests' [ 1095s] Makefile:507: recipe for target 'all-recursive' failed [ 1095s] make[2]: *** [all-recursive] Error 1 [ 1095s] make[2]: Leaving directory '/usr/src/packages/BUILD' [ 1095s] Makefile:438: recipe for target 'all' failed [ 1095s] make[1]: *** [all] Error 2 [ 1095s] make[1]: Leaving directory '/usr/src/packages/BUILD' [ 1095s] dh_auto_build: make -j1 returned exit code 2 [ 1095s] debian/rules:6: recipe for target 'build' failed [ 1095s] make: *** [build] Error 2 [ 1095s] dpkg-buildpackage: error: debian/rules build gave error exit status 2 [ 1095s] [ 1095s] armbuild23 failed "build osmo-trx_0.2.0.20180426.dsc" at Thu Apr 26 13:38:19 UTC 2018. [ 1095s] [ 1096s] ### VM INTERACTION START ### [ 1099s] [ 1040.215402] SysRq : Power Off [ 1099s] [ 1040.248114] reboot: Power down [ 1101s] ### VM INTERACTION END ### [ 1101s] [ 1101s] armbuild23 failed "build osmo-trx_0.2.0.20180426.dsc" at Thu Apr 26 13:38:24 UTC 2018. [ 1101s] -- Configure notifications at https://build.opensuse.org/user/notifications openSUSE Build Service (https://build.opensuse.org/) From pespin at sysmocom.de Thu Apr 26 14:05:46 2018 From: pespin at sysmocom.de (Pau Espin Pedrol) Date: Thu, 26 Apr 2018 16:05:46 +0200 Subject: Build failure of network:osmocom:nightly/openbsc in Debian_9.0/x86_64 In-Reply-To: <5ae1d22522e75_26bf9d867c31344d@build.opensuse.org> References: <5ae1d22522e75_26bf9d867c31344d@build.opensuse.org> Message-ID: <637d1a8b-af7b-e4e3-e992-0a3395f363e4@sysmocom.de> I don't understand why is this one failing. It built fine on my PC, on jenkins and I cannot see why it states the function it doesn't exist. I checked that the file includes the correct header. Only issue i can think of is that it's not pulling latest master libosmo-netif as those function were merged a few days ago. On 26/04/18 15:20, OBS Notification wrote: > Visit https://build.opensuse.org/package/live_build_log/network:osmocom:nightly/openbsc/Debian_9.0/x86_64 > > Package network:osmocom:nightly/openbsc failed to build in Debian_9.0/x86_64 > > Check out the package for editing: > osc checkout network:osmocom:nightly openbsc > > Last lines of build log: > [ 82s] mgcp_osmux.c:490:2: error: implicit declaration of function 'osmux_xfrm_output_flush' [-Werror=implicit-function-declaration] > [ 82s] osmux_xfrm_output_flush(&endp->osmux.out); > [ 82s] ^~~~~~~~~~~~~~~~~~~~~~~ > [ 82s] cc1: some warnings being treated as errors > [ 82s] Makefile:455: recipe for target 'mgcp_osmux.o' failed > [ 82s] make[4]: *** [mgcp_osmux.o] Error 1 > [ 82s] make[4]: Leaving directory '/usr/src/packages/BUILD/openbsc/src/libmgcp' > [ 82s] Makefile:447: recipe for target 'all-recursive' failed > [ 82s] make[3]: *** [all-recursive] Error 1 > [ 82s] make[3]: Leaving directory '/usr/src/packages/BUILD/openbsc/src' > [ 82s] Makefile:518: recipe for target 'all-recursive' failed > [ 82s] make[2]: *** [all-recursive] Error 1 > [ 82s] make[2]: Leaving directory '/usr/src/packages/BUILD/openbsc' > [ 82s] Makefile:427: recipe for target 'all' failed > [ 82s] make[1]: *** [all] Error 2 > [ 82s] make[1]: Leaving directory '/usr/src/packages/BUILD/openbsc' > [ 82s] dh_auto_build: make -j1 returned exit code 2 > [ 82s] debian/rules:13: recipe for target 'build' failed > [ 82s] make: *** [build] Error 2 > [ 82s] dpkg-buildpackage: error: debian/rules build gave error exit status 2 > [ 82s] > [ 82s] lamb17 failed "build openbsc_1.0.0.20180426.dsc" at Thu Apr 26 13:20:21 UTC 2018. > [ 82s] > [ 82s] ### VM INTERACTION START ### > [ 85s] [ 77.079411] reboot: Power down > [ 85s] ### VM INTERACTION END ### > [ 85s] > [ 85s] lamb17 failed "build openbsc_1.0.0.20180426.dsc" at Thu Apr 26 13:20:24 UTC 2018. > [ 85s] > -- - Pau Espin Pedrol http://www.sysmocom.de/ ======================================================================= * sysmocom - systems for mobile communications GmbH * Alt-Moabit 93 * 10559 Berlin, Germany * Sitz / Registered office: Berlin, HRB 134158 B * Geschaeftsfuehrer / Managing Director: Harald Welte From jenkins at lists.osmocom.org Thu Apr 26 15:10:06 2018 From: jenkins at lists.osmocom.org (jenkins at lists.osmocom.org) Date: Thu, 26 Apr 2018 15:10:06 +0000 (UTC) Subject: =?UTF-8?Q?Build_failed_in_Jenkins:_master-asn1c_=C2=BB_a1=3Ddefault?= =?UTF-8?Q?,a2=3Ddefault,a3=3Ddefault,osmocom-master-debian9_#104?= In-Reply-To: <1498340227.75.1524669007076.JavaMail.jenkins@jenkins.osmocom.org> References: <1498340227.75.1524669007076.JavaMail.jenkins@jenkins.osmocom.org> Message-ID: <823047625.99.1524755407019.JavaMail.jenkins@jenkins.osmocom.org> See ------------------------------------------ [...truncated 3.74 KB...] checking build system type... x86_64-unknown-linux-gnu checking host system type... x86_64-unknown-linux-gnu checking target system type... x86_64-unknown-linux-gnu checking for a BSD-compatible install... /usr/bin/install -c checking whether build environment is sane... yes checking for gawk... gawk checking whether make sets $(MAKE)... yes checking whether to enable maintainer-specific portions of Makefiles... no checking for style of include used by make... GNU checking for gcc... gcc checking for C compiler default output file name... a.out checking whether the C compiler works... yes checking whether we are cross compiling... no checking for suffix of executables... checking for suffix of object files... o checking whether we are using the GNU C compiler... yes checking whether gcc accepts -g... yes checking for gcc option to accept ISO C89... none needed checking dependency style of gcc... gcc3 checking for a sed that does not truncate output... /bin/sed checking for grep that handles long lines and -e... /bin/grep checking for egrep... /bin/grep -E checking for ld used by gcc... /usr/bin/ld checking if the linker (/usr/bin/ld) is GNU ld... yes checking for /usr/bin/ld option to reload object files... -r checking for BSD-compatible nm... /usr/bin/nm -B checking whether ln -s works... yes checking how to recognise dependent libraries... pass_all checking how to run the C preprocessor... gcc -E checking for ANSI C header files... yes checking for sys/types.h... yes checking for sys/stat.h... yes checking for stdlib.h... yes checking for string.h... yes checking for memory.h... yes checking for strings.h... yes checking for inttypes.h... yes checking for stdint.h... yes checking for unistd.h... yes checking dlfcn.h usability... yes checking dlfcn.h presence... yes checking for dlfcn.h... yes checking for g++... g++ checking whether we are using the GNU C++ compiler... yes checking whether g++ accepts -g... yes checking dependency style of g++... gcc3 checking how to run the C++ preprocessor... g++ -E checking for g77... no checking for f77... no checking for xlf... no checking for frt... no checking for pgf77... no checking for cf77... no checking for fort77... no checking for fl32... no checking for af77... no checking for f90... no checking for xlf90... no checking for pgf90... no checking for pghpf... no checking for epcf90... no checking for gfortran... no checking for g95... no checking for f95... no checking for fort... no checking for xlf95... no checking for ifort... no checking for ifc... no checking for efc... no checking for pgf95... no checking for lf95... no checking for ftn... no checking whether we are using the GNU Fortran 77 compiler... no checking whether accepts -g... no checking the maximum length of command line arguments... 32768 checking command to parse /usr/bin/nm -B output from gcc object... ok checking for objdir... .libs checking for ar... ar checking for ranlib... ranlib checking for strip... strip checking if gcc supports -fno-rtti -fno-exceptions... no checking for gcc option to produce PIC... -fPIC checking if gcc PIC flag -fPIC works... yes checking if gcc static flag -static works... yes checking if gcc supports -c -o file.o... yes checking whether the gcc linker (/usr/bin/ld -m elf_x86_64) supports shared libraries... yes checking whether -lc should be explicitly linked in... no checking dynamic linker characteristics... GNU/Linux ld.so checking how to hardcode library paths into programs... immediate checking whether stripping libraries is possible... yes checking if libtool supports shared libraries... yes checking whether to build shared libraries... yes checking whether to build static libraries... yes configure: creating libtool appending configuration tag "CXX" to libtool checking for ld used by g++... /usr/bin/ld -m elf_x86_64 checking if the linker (/usr/bin/ld -m elf_x86_64) is GNU ld... yes checking whether the g++ linker (/usr/bin/ld -m elf_x86_64) supports shared libraries... yes checking for g++ option to produce PIC... -fPIC checking if g++ PIC flag -fPIC works... yes checking if g++ static flag -static works... yes checking if g++ supports -c -o file.o... yes checking whether the g++ linker (/usr/bin/ld -m elf_x86_64) supports shared libraries... yes checking dynamic linker characteristics... GNU/Linux ld.so checking how to hardcode library paths into programs... immediate appending configuration tag "F77" to libtool checking for autoconf... /usr/bin/autoconf checking for autoheader... /usr/bin/autoheader checking for gcc... (cached) gcc checking whether we are using the GNU C compiler... (cached) yes checking whether gcc accepts -g... (cached) yes checking for gcc option to accept ISO C89... (cached) none needed checking dependency style of gcc... (cached) gcc3 checking how to run the C preprocessor... gcc -E checking for a BSD-compatible install... /usr/bin/install -c checking whether ln -s works... yes checking whether make sets $(MAKE)... (cached) yes checking for bison... bison -y checking for flex... flex checking for yywrap in -lfl... yes checking lex output file root... lex.yy checking whether yytext is a pointer... yes checking for ar... /usr/bin/ar checking for ANSI C header files... (cached) yes checking sys/param.h usability... yes checking sys/param.h presence... yes checking for sys/param.h... yes checking whether byte ordering is bigendian... no checking for off_t... yes checking for size_t... yes checking whether struct tm is in sys/time.h or time.h... time.h checking for intmax_t... yes checking for library containing getopt... none required checking for strtoimax... yes checking for strtoll... yes checking for mergesort... no checking for mkstemps... yes configure: creating ./config.status config.status: creating skeletons/standard-modules/Makefile config.status: creating skeletons/tests/Makefile config.status: creating libasn1compiler/Makefile config.status: creating libasn1parser/Makefile config.status: creating libasn1print/Makefile config.status: creating asn1c/webcgi/Makefile config.status: creating asn1c/tests/Makefile config.status: creating libasn1fix/Makefile config.status: creating skeletons/Makefile config.status: creating examples/Makefile config.status: creating tests/Makefile config.status: creating asn1c/Makefile config.status: creating doc/Makefile config.status: creating asn1c.spec config.status: creating Makefile config.status: creating config.h config.status: executing depfiles commands + make -j 8 make all-recursive make[1]: Entering directory ' Making all in libasn1parser make[2]: Entering directory ' if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1parser.lo -MD -MP -MF ".deps/asn1parser.Tpo" -c -o asn1parser.lo asn1parser.c; \ then mv -f ".deps/asn1parser.Tpo" ".deps/asn1parser.Plo"; else rm -f ".deps/asn1parser.Tpo"; exit 1; fi bison -y -p asn1p_ -d asn1p_y.y flex -s -p -Cem -Pasn1p_ -olex.yy.c asn1p_l.l if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_module.lo -MD -MP -MF ".deps/asn1p_module.Tpo" -c -o asn1p_module.lo asn1p_module.c; \ then mv -f ".deps/asn1p_module.Tpo" ".deps/asn1p_module.Plo"; else rm -f ".deps/asn1p_module.Tpo"; exit 1; fi if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_oid.lo -MD -MP -MF ".deps/asn1p_oid.Tpo" -c -o asn1p_oid.lo asn1p_oid.c; \ then mv -f ".deps/asn1p_oid.Tpo" ".deps/asn1p_oid.Plo"; else rm -f ".deps/asn1p_oid.Tpo"; exit 1; fi if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_value.lo -MD -MP -MF ".deps/asn1p_value.Tpo" -c -o asn1p_value.lo asn1p_value.c; \ then mv -f ".deps/asn1p_value.Tpo" ".deps/asn1p_value.Plo"; else rm -f ".deps/asn1p_value.Tpo"; exit 1; fi if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_expr.lo -MD -MP -MF ".deps/asn1p_expr.Tpo" -c -o asn1p_expr.lo asn1p_expr.c; \ then mv -f ".deps/asn1p_expr.Tpo" ".deps/asn1p_expr.Plo"; else rm -f ".deps/asn1p_expr.Tpo"; exit 1; fi if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_xports.lo -MD -MP -MF ".deps/asn1p_xports.Tpo" -c -o asn1p_xports.lo asn1p_xports.c; \ then mv -f ".deps/asn1p_xports.Tpo" ".deps/asn1p_xports.Plo"; else rm -f ".deps/asn1p_xports.Tpo"; exit 1; fi %option yylineno entails a performance penalty ONLY on rules that can match newline characters REJECT entails a large performance penalty asn1p_y.y: warning: 2 shift/reduce conflicts [-Wconflicts-sr] sed '/^#/ s|lex.yy\.c|asn1p_l.c|' lex.yy.c >asn1p_l.c rm -f lex.yy.c if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_constr.lo -MD -MP -MF ".deps/asn1p_constr.Tpo" -c -o asn1p_constr.lo asn1p_constr.c; \ then mv -f ".deps/asn1p_constr.Tpo" ".deps/asn1p_constr.Plo"; else rm -f ".deps/asn1p_constr.Tpo"; exit 1; fi mkdir .libs gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1parser.lo -MD -MP -MF .deps/asn1parser.Tpo -c asn1parser.c -fPIC -DPIC -o .libs/asn1parser.o gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_expr.lo -MD -MP -MF .deps/asn1p_expr.Tpo -c asn1p_expr.c -fPIC -DPIC -o .libs/asn1p_expr.o gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_value.lo -MD -MP -MF .deps/asn1p_value.Tpo -c asn1p_value.c -fPIC -DPIC -o .libs/asn1p_value.o gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_oid.lo -MD -MP -MF .deps/asn1p_oid.Tpo -c asn1p_oid.c -fPIC -DPIC -o .libs/asn1p_oid.o gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_xports.lo -MD -MP -MF .deps/asn1p_xports.Tpo -c asn1p_xports.c -fPIC -DPIC -o .libs/asn1p_xports.o gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_module.lo -MD -MP -MF .deps/asn1p_module.Tpo -c asn1p_module.c -fPIC -DPIC -o .libs/asn1p_module.o gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_constr.lo -MD -MP -MF .deps/asn1p_constr.Tpo -c asn1p_constr.c -fPIC -DPIC -o .libs/asn1p_constr.o gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_xports.lo -MD -MP -MF .deps/asn1p_xports.Tpo -c asn1p_xports.c -o asn1p_xports.o >/dev/null 2>&1 gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_module.lo -MD -MP -MF .deps/asn1p_module.Tpo -c asn1p_module.c -o asn1p_module.o >/dev/null 2>&1 gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_oid.lo -MD -MP -MF .deps/asn1p_oid.Tpo -c asn1p_oid.c -o asn1p_oid.o >/dev/null 2>&1 gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1parser.lo -MD -MP -MF .deps/asn1parser.Tpo -c asn1parser.c -o asn1parser.o >/dev/null 2>&1 gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_value.lo -MD -MP -MF .deps/asn1p_value.Tpo -c asn1p_value.c -o asn1p_value.o >/dev/null 2>&1 if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_param.lo -MD -MP -MF ".deps/asn1p_param.Tpo" -c -o asn1p_param.lo asn1p_param.c; \ then mv -f ".deps/asn1p_param.Tpo" ".deps/asn1p_param.Plo"; else rm -f ".deps/asn1p_param.Tpo"; exit 1; fi gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_expr.lo -MD -MP -MF .deps/asn1p_expr.Tpo -c asn1p_expr.c -o asn1p_expr.o >/dev/null 2>&1 gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_constr.lo -MD -MP -MF .deps/asn1p_constr.Tpo -c asn1p_constr.c -o asn1p_constr.o >/dev/null 2>&1 if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_class.lo -MD -MP -MF ".deps/asn1p_class.Tpo" -c -o asn1p_class.lo asn1p_class.c; \ then mv -f ".deps/asn1p_class.Tpo" ".deps/asn1p_class.Plo"; else rm -f ".deps/asn1p_class.Tpo"; exit 1; fi if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_ref.lo -MD -MP -MF ".deps/asn1p_ref.Tpo" -c -o asn1p_ref.lo asn1p_ref.c; \ then mv -f ".deps/asn1p_ref.Tpo" ".deps/asn1p_ref.Plo"; else rm -f ".deps/asn1p_ref.Tpo"; exit 1; fi if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_l.lo -MD -MP -MF ".deps/asn1p_l.Tpo" -c -o asn1p_l.lo asn1p_l.c; \ then mv -f ".deps/asn1p_l.Tpo" ".deps/asn1p_l.Plo"; else rm -f ".deps/asn1p_l.Tpo"; exit 1; fi gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_param.lo -MD -MP -MF .deps/asn1p_param.Tpo -c asn1p_param.c -fPIC -DPIC -o .libs/asn1p_param.o gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_class.lo -MD -MP -MF .deps/asn1p_class.Tpo -c asn1p_class.c -fPIC -DPIC -o .libs/asn1p_class.o gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_ref.lo -MD -MP -MF .deps/asn1p_ref.Tpo -c asn1p_ref.c -fPIC -DPIC -o .libs/asn1p_ref.o gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_l.lo -MD -MP -MF .deps/asn1p_l.Tpo -c asn1p_l.c -fPIC -DPIC -o .libs/asn1p_l.o gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_param.lo -MD -MP -MF .deps/asn1p_param.Tpo -c asn1p_param.c -o asn1p_param.o >/dev/null 2>&1 if test -f y.tab.h; then \ to=`echo "asn1p_y_H" | sed \ -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/' \ -e 's/[^ABCDEFGHIJKLMNOPQRSTUVWXYZ]/_/g'`; \ sed -e "/^#/!b" -e "s/Y_TAB_H/$to/g" -e "s|y\.tab\.h|asn1p_y.h|" \ y.tab.h >asn1p_y.ht; \ rm -f y.tab.h; \ if cmp -s asn1p_y.ht asn1p_y.h; then \ rm -f asn1p_y.ht ;\ else \ mv asn1p_y.ht asn1p_y.h; \ fi; \ fi if test -f y.output; then \ mv y.output asn1p_y.output; \ fi sed '/^#/ s|y\.tab\.c|asn1p_y.c|' y.tab.c >asn1p_y.ct && mv asn1p_y.ct asn1p_y.c rm -f y.tab.c if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_y.lo -MD -MP -MF ".deps/asn1p_y.Tpo" -c -o asn1p_y.lo asn1p_y.c; \ then mv -f ".deps/asn1p_y.Tpo" ".deps/asn1p_y.Plo"; else rm -f ".deps/asn1p_y.Tpo"; exit 1; fi gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_class.lo -MD -MP -MF .deps/asn1p_class.Tpo -c asn1p_class.c -o asn1p_class.o >/dev/null 2>&1 gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_ref.lo -MD -MP -MF .deps/asn1p_ref.Tpo -c asn1p_ref.c -o asn1p_ref.o >/dev/null 2>&1 gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_y.lo -MD -MP -MF .deps/asn1p_y.Tpo -c asn1p_y.c -fPIC -DPIC -o .libs/asn1p_y.o asn1p_y.y: In function 'asn1p_parse': asn1p_y.y:357:13: error: 'param' undeclared (first use in this function) *(void **)param = $1; ^~~~~ asn1p_y.y:357:13: note: each undeclared identifier is reported only once for each function it appears in Makefile:299: recipe for target 'asn1p_y.lo' failed make[2]: *** [asn1p_y.lo] Error 1 make[2]: *** Waiting for unfinished jobs.... gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_l.lo -MD -MP -MF .deps/asn1p_l.Tpo -c asn1p_l.c -o asn1p_l.o >/dev/null 2>&1 make[2]: Leaving directory ' Makefile:302: recipe for target 'all-recursive' failed make[1]: *** [all-recursive] Error 1 make[1]: Leaving directory ' Makefile:212: recipe for target 'all' failed make: *** [all] Error 2 Build step 'Execute shell' marked build as failure [WARNINGS] Skipping publisher since build result is FAILURE From gerrit-no-reply at lists.osmocom.org Thu Apr 26 16:09:29 2018 From: gerrit-no-reply at lists.osmocom.org (Todd Neal) Date: Thu, 26 Apr 2018 16:09:29 +0000 Subject: [PATCH] pysim[master]: add support for open cells SIM cards In-Reply-To: References: Message-ID: Hello Vadim Yanitskiy, Harald Welte, I'd like you to reexamine a change. Please visit https://gerrit.osmocom.org/7932 to look at the new patch set (#3). add support for open cells SIM cards Change-Id: I4df5681952eefd7a67f5e2b0a96a9e01c9d960d2 --- M pySim/cards.py 1 file changed, 52 insertions(+), 2 deletions(-) git pull ssh://gerrit.osmocom.org:29418/pysim refs/changes/32/7932/3 diff --git a/pySim/cards.py b/pySim/cards.py index e324857..0c9c2b8 100644 --- a/pySim/cards.py +++ b/pySim/cards.py @@ -687,10 +687,60 @@ return - # In order for autodetection ... +class OpenCellsSim(Card): + """ + OpenCellsSim + + """ + + name = 'OpenCells SIM' + + def __init__(self, ssc): + super(OpenCellsSim, self).__init__(ssc) + self._adm_chv_num = 0x0A + + + @classmethod + def autodetect(kls, scc): + try: + # Look for ATR + if scc.get_atr() == toBytes("3B 9F 95 80 1F C3 80 31 E0 73 FE 21 13 57 86 81 02 86 98 44 18 A8"): + return kls(scc) + except: + return None + return None + + + def program(self, p): + if not p['pin_adm']: + raise ValueError("Please provide a PIN-ADM as there is no default one") + self._scc.verify_chv(0x0A, h2b(p['pin_adm'])) + + # select MF + r = self._scc.select_file(['3f00']) + + # write EF.ICCID + data, sw = self._scc.update_binary('2fe2', enc_iccid(p['iccid'])) + + r = self._scc.select_file(['7ff0']) + + # set Ki in proprietary file + data, sw = self._scc.update_binary('FF02', p['ki']) + + # set OPC in proprietary file + data, sw = self._scc.update_binary('FF01', p['opc']) + + # select DF_GSM + r = self._scc.select_file(['7f20']) + + # write EF.IMSI + data, sw = self._scc.update_binary('6f07', enc_imsi(p['imsi'])) + + +# In order for autodetection ... _cards_classes = [ FakeMagicSim, SuperSim, MagicSim, GrcardSim, SysmoSIMgr1, SysmoSIMgr2, SysmoUSIMgr1, SysmoUSIMSJS1, - FairwavesSIM ] + FairwavesSIM, OpenCellsSim ] def card_autodetect(scc): for kls in _cards_classes: -- To view, visit https://gerrit.osmocom.org/7932 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newpatchset Gerrit-Change-Id: I4df5681952eefd7a67f5e2b0a96a9e01c9d960d2 Gerrit-PatchSet: 3 Gerrit-Project: pysim Gerrit-Branch: master Gerrit-Owner: Todd Neal Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Vadim Yanitskiy From gerrit-no-reply at lists.osmocom.org Thu Apr 26 16:09:54 2018 From: gerrit-no-reply at lists.osmocom.org (Todd Neal) Date: Thu, 26 Apr 2018 16:09:54 +0000 Subject: pysim[master]: add support for open cells SIM cards In-Reply-To: References: Message-ID: Patch Set 3: (1 comment) https://gerrit.osmocom.org/#/c/7932/2/pySim/cards.py File pySim/cards.py: Line 706: # Look for ATR > ws Done -- To view, visit https://gerrit.osmocom.org/7932 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I4df5681952eefd7a67f5e2b0a96a9e01c9d960d2 Gerrit-PatchSet: 3 Gerrit-Project: pysim Gerrit-Branch: master Gerrit-Owner: Todd Neal Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Todd Neal Gerrit-Reviewer: Vadim Yanitskiy Gerrit-HasComments: Yes From gerrit-no-reply at lists.osmocom.org Thu Apr 26 16:11:54 2018 From: gerrit-no-reply at lists.osmocom.org (Todd Neal) Date: Thu, 26 Apr 2018 16:11:54 +0000 Subject: [PATCH] pysim[master]: add support for open cells SIM cards In-Reply-To: References: Message-ID: Hello Vadim Yanitskiy, Harald Welte, I'd like you to reexamine a change. Please visit https://gerrit.osmocom.org/7932 to look at the new patch set (#4). add support for open cells SIM cards Change-Id: I4df5681952eefd7a67f5e2b0a96a9e01c9d960d2 --- M pySim-prog.py M pySim/cards.py 2 files changed, 54 insertions(+), 4 deletions(-) git pull ssh://gerrit.osmocom.org:29418/pysim refs/changes/32/7932/4 diff --git a/pySim-prog.py b/pySim-prog.py index f27daf0..0c9f749 100755 --- a/pySim-prog.py +++ b/pySim-prog.py @@ -254,8 +254,8 @@ # ICCID (19 digits, E.118), though some phase1 vendors use 20 :( if opts.iccid is not None: iccid = opts.iccid - if not _isnum(iccid, 19): - raise ValueError('ICCID must be 19 digits !'); + if not _isnum(iccid, 19) and not _isnum(iccid, 20): + raise ValueError('ICCID must be 19 or 20 digits !'); else: if opts.num is None: diff --git a/pySim/cards.py b/pySim/cards.py index e324857..0c9c2b8 100644 --- a/pySim/cards.py +++ b/pySim/cards.py @@ -687,10 +687,60 @@ return - # In order for autodetection ... +class OpenCellsSim(Card): + """ + OpenCellsSim + + """ + + name = 'OpenCells SIM' + + def __init__(self, ssc): + super(OpenCellsSim, self).__init__(ssc) + self._adm_chv_num = 0x0A + + + @classmethod + def autodetect(kls, scc): + try: + # Look for ATR + if scc.get_atr() == toBytes("3B 9F 95 80 1F C3 80 31 E0 73 FE 21 13 57 86 81 02 86 98 44 18 A8"): + return kls(scc) + except: + return None + return None + + + def program(self, p): + if not p['pin_adm']: + raise ValueError("Please provide a PIN-ADM as there is no default one") + self._scc.verify_chv(0x0A, h2b(p['pin_adm'])) + + # select MF + r = self._scc.select_file(['3f00']) + + # write EF.ICCID + data, sw = self._scc.update_binary('2fe2', enc_iccid(p['iccid'])) + + r = self._scc.select_file(['7ff0']) + + # set Ki in proprietary file + data, sw = self._scc.update_binary('FF02', p['ki']) + + # set OPC in proprietary file + data, sw = self._scc.update_binary('FF01', p['opc']) + + # select DF_GSM + r = self._scc.select_file(['7f20']) + + # write EF.IMSI + data, sw = self._scc.update_binary('6f07', enc_imsi(p['imsi'])) + + +# In order for autodetection ... _cards_classes = [ FakeMagicSim, SuperSim, MagicSim, GrcardSim, SysmoSIMgr1, SysmoSIMgr2, SysmoUSIMgr1, SysmoUSIMSJS1, - FairwavesSIM ] + FairwavesSIM, OpenCellsSim ] def card_autodetect(scc): for kls in _cards_classes: -- To view, visit https://gerrit.osmocom.org/7932 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newpatchset Gerrit-Change-Id: I4df5681952eefd7a67f5e2b0a96a9e01c9d960d2 Gerrit-PatchSet: 4 Gerrit-Project: pysim Gerrit-Branch: master Gerrit-Owner: Todd Neal Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Todd Neal Gerrit-Reviewer: Vadim Yanitskiy From gerrit-no-reply at lists.osmocom.org Thu Apr 26 17:41:25 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Thu, 26 Apr 2018 17:41:25 +0000 Subject: [PATCH] libusrp[master]: Add debian directory Message-ID: Review at https://gerrit.osmocom.org/7936 Add debian directory Change-Id: I5ff1d76f533b9ac68ab3f2c70ead6b66f4413b4f --- A debian/changelog A debian/compat A debian/control A debian/copyright A debian/libusrp-dev.install A debian/libusrp1.install A debian/rules A debian/source/format 8 files changed, 101 insertions(+), 0 deletions(-) git pull ssh://gerrit.osmocom.org:29418/libusrp refs/changes/36/7936/1 diff --git a/debian/changelog b/debian/changelog new file mode 100644 index 0000000..5a2d5c4 --- /dev/null +++ b/debian/changelog @@ -0,0 +1,5 @@ +libusrp (0.0.1) unstable; urgency=medium + + * Initial release + + -- Pau Espin Pedrol Thu, 26 Apr 2018 17:06:51 +0000 diff --git a/debian/compat b/debian/compat new file mode 100644 index 0000000..ec63514 --- /dev/null +++ b/debian/compat @@ -0,0 +1 @@ +9 diff --git a/debian/control b/debian/control new file mode 100644 index 0000000..ddb9ece --- /dev/null +++ b/debian/control @@ -0,0 +1,20 @@ +Source: libusrp +Priority: optional +Maintainer: Pau Espin Pedrol +Build-Depends: debhelper (>= 9), autotools-dev +Standards-Version: 3.9.8 +Section: libs +Homepage: https://osmocom.org/projects/osmotrx/ +Vcs-Git: git://git.osmocom.org/libusrp +Vcs-Browser: https://git.osmocom.org/libusrp + +Package: libusrp-dev +Section: libdevel +Architecture: any +Depends: libusrp1 (= ${binary:Version}), ${misc:Depends} +Description: USRP1 gnuradio based transceiver - dev files + +Package: libusrp1 +Architecture: any +Depends: ${shlibs:Depends}, ${misc:Depends} +Description: USRP1 gnuradio based transceiver diff --git a/debian/copyright b/debian/copyright new file mode 100644 index 0000000..fe4be1e --- /dev/null +++ b/debian/copyright @@ -0,0 +1,38 @@ +Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ +Upstream-Name: libusrp +Source: + +Files: * +Copyright: + +License: + + + . + + +# If you want to use GPL v2 or later for the /debian/* files use +# the following clauses, or change it to suit. Delete these two lines +Files: debian/* +Copyright: 2018 root +License: GPL-2+ + This package is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + . + This package is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + . + You should have received a copy of the GNU General Public License + along with this program. If not, see + . + On Debian systems, the complete text of the GNU General + Public License version 2 can be found in "/usr/share/common-licenses/GPL-2". + +# Please also look if there are files or directories which have a +# different copyright/license attached and list them here. +# Please avoid picking licenses with terms that are more restrictive than the +# packaged work, as it may make Debian's contributions unacceptable upstream. diff --git a/debian/libusrp-dev.install b/debian/libusrp-dev.install new file mode 100644 index 0000000..61c9409 --- /dev/null +++ b/debian/libusrp-dev.install @@ -0,0 +1,4 @@ +usr/include/* +usr/lib/*/lib*.so +usr/lib/*/pkgconfig/* +usr/share/pkgconfig/* diff --git a/debian/libusrp1.install b/debian/libusrp1.install new file mode 100644 index 0000000..3ddde58 --- /dev/null +++ b/debian/libusrp1.install @@ -0,0 +1 @@ +usr/lib/*/lib*.so.* diff --git a/debian/rules b/debian/rules new file mode 100755 index 0000000..f0e00c5 --- /dev/null +++ b/debian/rules @@ -0,0 +1,31 @@ +#!/usr/bin/make -f + +DEBIAN := $(shell dpkg-parsechangelog | grep ^Version: | cut -d' ' -f2) +DEBVERS := $(shell echo '$(DEBIAN)' | cut -d- -f1) +VERSION := $(shell echo '$(DEBVERS)' | sed -e 's/[+-].*//' -e 's/~//g') + +export DEB_BUILD_MAINT_OPTIONS = hardening=+all + +#export DH_VERBOSE=1 + + +%: + dh $@ --with autoreconf --fail-missing + +override_dh_strip: + dh_strip --dbg-package=libosmo-netif-dbg + +override_dh_autoreconf: + echo $(VERSION) > .tarball-version + dh_autoreconf + +override_dh_install: + sed -i "/dependency_libs/ s/'.*'/''/" `find . -name '*.la'` + dh_install + +override_dh_clean: + dh_clean + rm -f tests/package.m4 tests/testsuite .version .tarball-version + +override_dh_auto_test: + dh_auto_test || (find . -name testsuite.log -exec cat {} \; ; false) diff --git a/debian/source/format b/debian/source/format new file mode 100644 index 0000000..89ae9db --- /dev/null +++ b/debian/source/format @@ -0,0 +1 @@ +3.0 (native) -- To view, visit https://gerrit.osmocom.org/7936 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I5ff1d76f533b9ac68ab3f2c70ead6b66f4413b4f Gerrit-PatchSet: 1 Gerrit-Project: libusrp Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol From gerrit-no-reply at lists.osmocom.org Thu Apr 26 17:41:54 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Thu, 26 Apr 2018 17:41:54 +0000 Subject: [PATCH] libusrp[master]: Add debian directory In-Reply-To: References: Message-ID: Add debian directory Related: OS#3218 Change-Id: I5ff1d76f533b9ac68ab3f2c70ead6b66f4413b4f --- A debian/changelog A debian/compat A debian/control A debian/copyright A debian/libusrp-dev.install A debian/libusrp1.install A debian/rules A debian/source/format 8 files changed, 101 insertions(+), 0 deletions(-) git pull ssh://gerrit.osmocom.org:29418/libusrp refs/changes/36/7936/2 diff --git a/debian/changelog b/debian/changelog new file mode 100644 index 0000000..5a2d5c4 --- /dev/null +++ b/debian/changelog @@ -0,0 +1,5 @@ +libusrp (0.0.1) unstable; urgency=medium + + * Initial release + + -- Pau Espin Pedrol Thu, 26 Apr 2018 17:06:51 +0000 diff --git a/debian/compat b/debian/compat new file mode 100644 index 0000000..ec63514 --- /dev/null +++ b/debian/compat @@ -0,0 +1 @@ +9 diff --git a/debian/control b/debian/control new file mode 100644 index 0000000..ddb9ece --- /dev/null +++ b/debian/control @@ -0,0 +1,20 @@ +Source: libusrp +Priority: optional +Maintainer: Pau Espin Pedrol +Build-Depends: debhelper (>= 9), autotools-dev +Standards-Version: 3.9.8 +Section: libs +Homepage: https://osmocom.org/projects/osmotrx/ +Vcs-Git: git://git.osmocom.org/libusrp +Vcs-Browser: https://git.osmocom.org/libusrp + +Package: libusrp-dev +Section: libdevel +Architecture: any +Depends: libusrp1 (= ${binary:Version}), ${misc:Depends} +Description: USRP1 gnuradio based transceiver - dev files + +Package: libusrp1 +Architecture: any +Depends: ${shlibs:Depends}, ${misc:Depends} +Description: USRP1 gnuradio based transceiver diff --git a/debian/copyright b/debian/copyright new file mode 100644 index 0000000..fe4be1e --- /dev/null +++ b/debian/copyright @@ -0,0 +1,38 @@ +Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ +Upstream-Name: libusrp +Source: + +Files: * +Copyright: + +License: + + + . + + +# If you want to use GPL v2 or later for the /debian/* files use +# the following clauses, or change it to suit. Delete these two lines +Files: debian/* +Copyright: 2018 root +License: GPL-2+ + This package is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + . + This package is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + . + You should have received a copy of the GNU General Public License + along with this program. If not, see + . + On Debian systems, the complete text of the GNU General + Public License version 2 can be found in "/usr/share/common-licenses/GPL-2". + +# Please also look if there are files or directories which have a +# different copyright/license attached and list them here. +# Please avoid picking licenses with terms that are more restrictive than the +# packaged work, as it may make Debian's contributions unacceptable upstream. diff --git a/debian/libusrp-dev.install b/debian/libusrp-dev.install new file mode 100644 index 0000000..61c9409 --- /dev/null +++ b/debian/libusrp-dev.install @@ -0,0 +1,4 @@ +usr/include/* +usr/lib/*/lib*.so +usr/lib/*/pkgconfig/* +usr/share/pkgconfig/* diff --git a/debian/libusrp1.install b/debian/libusrp1.install new file mode 100644 index 0000000..3ddde58 --- /dev/null +++ b/debian/libusrp1.install @@ -0,0 +1 @@ +usr/lib/*/lib*.so.* diff --git a/debian/rules b/debian/rules new file mode 100755 index 0000000..f0e00c5 --- /dev/null +++ b/debian/rules @@ -0,0 +1,31 @@ +#!/usr/bin/make -f + +DEBIAN := $(shell dpkg-parsechangelog | grep ^Version: | cut -d' ' -f2) +DEBVERS := $(shell echo '$(DEBIAN)' | cut -d- -f1) +VERSION := $(shell echo '$(DEBVERS)' | sed -e 's/[+-].*//' -e 's/~//g') + +export DEB_BUILD_MAINT_OPTIONS = hardening=+all + +#export DH_VERBOSE=1 + + +%: + dh $@ --with autoreconf --fail-missing + +override_dh_strip: + dh_strip --dbg-package=libosmo-netif-dbg + +override_dh_autoreconf: + echo $(VERSION) > .tarball-version + dh_autoreconf + +override_dh_install: + sed -i "/dependency_libs/ s/'.*'/''/" `find . -name '*.la'` + dh_install + +override_dh_clean: + dh_clean + rm -f tests/package.m4 tests/testsuite .version .tarball-version + +override_dh_auto_test: + dh_auto_test || (find . -name testsuite.log -exec cat {} \; ; false) diff --git a/debian/source/format b/debian/source/format new file mode 100644 index 0000000..89ae9db --- /dev/null +++ b/debian/source/format @@ -0,0 +1 @@ +3.0 (native) -- To view, visit https://gerrit.osmocom.org/7936 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newpatchset Gerrit-Change-Id: I5ff1d76f533b9ac68ab3f2c70ead6b66f4413b4f Gerrit-PatchSet: 2 Gerrit-Project: libusrp Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Jenkins Builder From gerrit-no-reply at lists.osmocom.org Thu Apr 26 17:42:28 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Thu, 26 Apr 2018 17:42:28 +0000 Subject: libusrp[master]: Add debian directory In-Reply-To: References: Message-ID: Patch Set 2: Tested on debian9 lxc with: gbp buildpackage -S -uc -us -d --git-ignore-branch --git-export-dir="/tmp/bla/" -- To view, visit https://gerrit.osmocom.org/7936 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I5ff1d76f533b9ac68ab3f2c70ead6b66f4413b4f Gerrit-PatchSet: 2 Gerrit-Project: libusrp Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Pau Espin Pedrol Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Thu Apr 26 17:43:35 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Thu, 26 Apr 2018 17:43:35 +0000 Subject: libusrp[master]: Add debian directory In-Reply-To: References: Message-ID: Patch Set 2: (1 comment) https://gerrit.osmocom.org/#/c/7936/2/debian/copyright File debian/copyright: Line 6: Copyright: I'm really not sure how to fill these as the library comes from gnuradio afaik. -- To view, visit https://gerrit.osmocom.org/7936 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I5ff1d76f533b9ac68ab3f2c70ead6b66f4413b4f Gerrit-PatchSet: 2 Gerrit-Project: libusrp Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Pau Espin Pedrol Gerrit-HasComments: Yes From gerrit-no-reply at lists.osmocom.org Thu Apr 26 17:50:15 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Thu, 26 Apr 2018 17:50:15 +0000 Subject: [PATCH] osmo-ci[master]: scripts: osmocom-*-packages.sh: Build libusrp Message-ID: Review at https://gerrit.osmocom.org/7937 scripts: osmocom-*-packages.sh: Build libusrp Depends on: I5ff1d76f533b9ac68ab3f2c70ead6b66f4413b4f Change-Id: Ic742db854b8a3aba6ddc85ffb41fc6f4697c572d --- M scripts/osmocom-latest-packages.sh M scripts/osmocom-nightly-packages.sh 2 files changed, 3 insertions(+), 0 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-ci refs/changes/37/7937/1 diff --git a/scripts/osmocom-latest-packages.sh b/scripts/osmocom-latest-packages.sh index 4783185..7073b07 100755 --- a/scripts/osmocom-latest-packages.sh +++ b/scripts/osmocom-latest-packages.sh @@ -65,6 +65,7 @@ libsmpp34 libasn1c libgtpnl + libusrp osmo-iuh osmo-ggsn osmo-sgsn diff --git a/scripts/osmocom-nightly-packages.sh b/scripts/osmocom-nightly-packages.sh index 8db2d57..c9eb2e0 100755 --- a/scripts/osmocom-nightly-packages.sh +++ b/scripts/osmocom-nightly-packages.sh @@ -127,6 +127,7 @@ checkout libsmpp34 checkout libasn1c checkout libgtpnl + checkout libusrp checkout osmo-iuh checkout osmo-ggsn checkout osmo-sgsn @@ -149,6 +150,7 @@ build libsmpp34 build libasn1c build libgtpnl + build libusrp build osmo-iuh build osmo-ggsn build osmo-sgsn -- To view, visit https://gerrit.osmocom.org/7937 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Ic742db854b8a3aba6ddc85ffb41fc6f4697c572d Gerrit-PatchSet: 1 Gerrit-Project: osmo-ci Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol From gerrit-no-reply at lists.osmocom.org Thu Apr 26 18:02:54 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Thu, 26 Apr 2018 18:02:54 +0000 Subject: [PATCH] osmo-trx[master]: jenkins.sh: Enable build of osmo-trx-usrp1 Message-ID: Review at https://gerrit.osmocom.org/7938 jenkins.sh: Enable build of osmo-trx-usrp1 Change-Id: I44a978fdd7fac683520be3586d84783e5e13de5f --- M contrib/jenkins.sh 1 file changed, 2 insertions(+), 1 deletion(-) git pull ssh://gerrit.osmocom.org:29418/osmo-trx refs/changes/38/7938/1 diff --git a/contrib/jenkins.sh b/contrib/jenkins.sh index e600e01..59f68f7 100755 --- a/contrib/jenkins.sh +++ b/contrib/jenkins.sh @@ -64,6 +64,7 @@ mkdir "$deps" || true osmo-build-dep.sh libosmocore "" "--enable-sanitize --disable-doxygen --disable-pcsc" +osmo-build-dep.sh libusrp export PKG_CONFIG_PATH="$inst/lib/pkgconfig:$PKG_CONFIG_PATH" export LD_LIBRARY_PATH="$inst/lib" @@ -78,7 +79,7 @@ cd "$base" autoreconf --install --force -./configure --enable-sanitize $INSTR +./configure --enable-sanitize --with-uhd --with-usrp1 $INSTR $MAKE $PARALLEL_MAKE $MAKE check \ || cat-testlogs.sh -- To view, visit https://gerrit.osmocom.org/7938 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I44a978fdd7fac683520be3586d84783e5e13de5f Gerrit-PatchSet: 1 Gerrit-Project: osmo-trx Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol From gerrit-no-reply at lists.osmocom.org Thu Apr 26 18:42:26 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Thu, 26 Apr 2018 18:42:26 +0000 Subject: [PATCH] libusrp[master]: usrp.pc.in: Drop unset LIBUSB_PKG_CONFIG_NAME In-Reply-To: References: Message-ID: Hello Jenkins Builder, I'd like you to reexamine a change. Please visit https://gerrit.osmocom.org/7911 to look at the new patch set (#2). usrp.pc.in: Drop unset LIBUSB_PKG_CONFIG_NAME That variable is expected to be set by macro USRP_LIBUSB from m4/usrp_libusb.m4, but it is never called in configure.ac. Furthermore, the macro doesn't seem to be working fine in some environments like debian9, while it works on others (ArchLinux), so let's better drop it. Change-Id: Ia5f7ec69701abff91ff8e903e0fd53f8d9fbfba6 --- M usrp.pc.in 1 file changed, 1 insertion(+), 1 deletion(-) git pull ssh://gerrit.osmocom.org:29418/libusrp refs/changes/11/7911/2 diff --git a/usrp.pc.in b/usrp.pc.in index d4794aa..12d01e4 100644 --- a/usrp.pc.in +++ b/usrp.pc.in @@ -5,7 +5,7 @@ Name: usrp Description: USRP Client Side C++ interface -Requires: @LIBUSB_PKG_CONFIG_NAME@ +Requires: libusb-1.0 Version: @VERSION@ Libs: -L${libdir} -lusrp Cflags: -I${includedir} -- To view, visit https://gerrit.osmocom.org/7911 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newpatchset Gerrit-Change-Id: Ia5f7ec69701abff91ff8e903e0fd53f8d9fbfba6 Gerrit-PatchSet: 2 Gerrit-Project: libusrp Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Jenkins Builder From gerrit-no-reply at lists.osmocom.org Thu Apr 26 18:46:13 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Thu, 26 Apr 2018 18:46:13 +0000 Subject: osmo-trx[master]: jenkins.sh: Enable build of osmo-trx-usrp1 In-Reply-To: References: Message-ID: Patch Set 1: This one fails due to libusrp issue fixed in https://gerrit.osmocom.org/#/c/7911/ -- To view, visit https://gerrit.osmocom.org/7938 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I44a978fdd7fac683520be3586d84783e5e13de5f Gerrit-PatchSet: 1 Gerrit-Project: osmo-trx Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Pau Espin Pedrol Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Thu Apr 26 19:51:48 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Thu, 26 Apr 2018 19:51:48 +0000 Subject: [PATCH] libgtpnl[master]: Fix CTRL_ATTR_FAMILY_ID attribute size Message-ID: Review at https://gerrit.osmocom.org/7939 Fix CTRL_ATTR_FAMILY_ID attribute size This fixes the following kernel error message: netlink: 'osmo-ggsn': attribute type 1 has an invalid length. This is due to CTRL_ATTR_FAMILY_ID being defined as a 16bit netlink attribute, but us encoding it as u32: netlink/genetlink.c: [CTRL_ATTR_FAMILY_ID] = { .type = NLA_U16 }, let's properly encode it as 16bit and hence resolve the error message. Change-Id: I41b2719ffc24d7a3420b5980f2a967264e606d91 Closes: OS#3216 --- M src/genl.c 1 file changed, 1 insertion(+), 1 deletion(-) git pull ssh://gerrit.osmocom.org:29418/libgtpnl refs/changes/39/7939/1 diff --git a/src/genl.c b/src/genl.c index f534221..5d8b9af 100644 --- a/src/genl.c +++ b/src/genl.c @@ -152,7 +152,7 @@ genl->cmd = CTRL_CMD_GETFAMILY; genl->version = 1; - mnl_attr_put_u32(nlh, CTRL_ATTR_FAMILY_ID, GENL_ID_CTRL); + mnl_attr_put_u16(nlh, CTRL_ATTR_FAMILY_ID, GENL_ID_CTRL); mnl_attr_put_strz(nlh, CTRL_ATTR_FAMILY_NAME, subsys_name); return nlh; -- To view, visit https://gerrit.osmocom.org/7939 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I41b2719ffc24d7a3420b5980f2a967264e606d91 Gerrit-PatchSet: 1 Gerrit-Project: libgtpnl Gerrit-Branch: master Gerrit-Owner: Harald Welte From gerrit-no-reply at lists.osmocom.org Thu Apr 26 19:53:21 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Thu, 26 Apr 2018 19:53:21 +0000 Subject: pysim[master]: add support for open cells SIM cards In-Reply-To: References: Message-ID: Patch Set 4: Code-Review+2 Verified+1 -- To view, visit https://gerrit.osmocom.org/7932 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I4df5681952eefd7a67f5e2b0a96a9e01c9d960d2 Gerrit-PatchSet: 4 Gerrit-Project: pysim Gerrit-Branch: master Gerrit-Owner: Todd Neal Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Todd Neal Gerrit-Reviewer: Vadim Yanitskiy Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Thu Apr 26 19:53:22 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Thu, 26 Apr 2018 19:53:22 +0000 Subject: [MERGED] pysim[master]: add support for open cells SIM cards In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: add support for open cells SIM cards ...................................................................... add support for open cells SIM cards Change-Id: I4df5681952eefd7a67f5e2b0a96a9e01c9d960d2 --- M pySim-prog.py M pySim/cards.py 2 files changed, 54 insertions(+), 4 deletions(-) Approvals: Harald Welte: Looks good to me, approved; Verified diff --git a/pySim-prog.py b/pySim-prog.py index f27daf0..0c9f749 100755 --- a/pySim-prog.py +++ b/pySim-prog.py @@ -254,8 +254,8 @@ # ICCID (19 digits, E.118), though some phase1 vendors use 20 :( if opts.iccid is not None: iccid = opts.iccid - if not _isnum(iccid, 19): - raise ValueError('ICCID must be 19 digits !'); + if not _isnum(iccid, 19) and not _isnum(iccid, 20): + raise ValueError('ICCID must be 19 or 20 digits !'); else: if opts.num is None: diff --git a/pySim/cards.py b/pySim/cards.py index e324857..0c9c2b8 100644 --- a/pySim/cards.py +++ b/pySim/cards.py @@ -687,10 +687,60 @@ return - # In order for autodetection ... +class OpenCellsSim(Card): + """ + OpenCellsSim + + """ + + name = 'OpenCells SIM' + + def __init__(self, ssc): + super(OpenCellsSim, self).__init__(ssc) + self._adm_chv_num = 0x0A + + + @classmethod + def autodetect(kls, scc): + try: + # Look for ATR + if scc.get_atr() == toBytes("3B 9F 95 80 1F C3 80 31 E0 73 FE 21 13 57 86 81 02 86 98 44 18 A8"): + return kls(scc) + except: + return None + return None + + + def program(self, p): + if not p['pin_adm']: + raise ValueError("Please provide a PIN-ADM as there is no default one") + self._scc.verify_chv(0x0A, h2b(p['pin_adm'])) + + # select MF + r = self._scc.select_file(['3f00']) + + # write EF.ICCID + data, sw = self._scc.update_binary('2fe2', enc_iccid(p['iccid'])) + + r = self._scc.select_file(['7ff0']) + + # set Ki in proprietary file + data, sw = self._scc.update_binary('FF02', p['ki']) + + # set OPC in proprietary file + data, sw = self._scc.update_binary('FF01', p['opc']) + + # select DF_GSM + r = self._scc.select_file(['7f20']) + + # write EF.IMSI + data, sw = self._scc.update_binary('6f07', enc_imsi(p['imsi'])) + + +# In order for autodetection ... _cards_classes = [ FakeMagicSim, SuperSim, MagicSim, GrcardSim, SysmoSIMgr1, SysmoSIMgr2, SysmoUSIMgr1, SysmoUSIMSJS1, - FairwavesSIM ] + FairwavesSIM, OpenCellsSim ] def card_autodetect(scc): for kls in _cards_classes: -- To view, visit https://gerrit.osmocom.org/7932 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: I4df5681952eefd7a67f5e2b0a96a9e01c9d960d2 Gerrit-PatchSet: 4 Gerrit-Project: pysim Gerrit-Branch: master Gerrit-Owner: Todd Neal Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Todd Neal Gerrit-Reviewer: Vadim Yanitskiy From gerrit-no-reply at lists.osmocom.org Thu Apr 26 19:53:29 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Thu, 26 Apr 2018 19:53:29 +0000 Subject: libgtpnl[master]: Fix CTRL_ATTR_FAMILY_ID attribute size In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7939 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I41b2719ffc24d7a3420b5980f2a967264e606d91 Gerrit-PatchSet: 1 Gerrit-Project: libgtpnl Gerrit-Branch: master Gerrit-Owner: Harald Welte Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Thu Apr 26 19:53:34 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Thu, 26 Apr 2018 19:53:34 +0000 Subject: [MERGED] libgtpnl[master]: Fix CTRL_ATTR_FAMILY_ID attribute size In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: Fix CTRL_ATTR_FAMILY_ID attribute size ...................................................................... Fix CTRL_ATTR_FAMILY_ID attribute size This fixes the following kernel error message: netlink: 'osmo-ggsn': attribute type 1 has an invalid length. This is due to CTRL_ATTR_FAMILY_ID being defined as a 16bit netlink attribute, but us encoding it as u32: netlink/genetlink.c: [CTRL_ATTR_FAMILY_ID] = { .type = NLA_U16 }, let's properly encode it as 16bit and hence resolve the error message. Change-Id: I41b2719ffc24d7a3420b5980f2a967264e606d91 Closes: OS#3216 --- M src/genl.c 1 file changed, 1 insertion(+), 1 deletion(-) Approvals: Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/src/genl.c b/src/genl.c index f534221..5d8b9af 100644 --- a/src/genl.c +++ b/src/genl.c @@ -152,7 +152,7 @@ genl->cmd = CTRL_CMD_GETFAMILY; genl->version = 1; - mnl_attr_put_u32(nlh, CTRL_ATTR_FAMILY_ID, GENL_ID_CTRL); + mnl_attr_put_u16(nlh, CTRL_ATTR_FAMILY_ID, GENL_ID_CTRL); mnl_attr_put_strz(nlh, CTRL_ATTR_FAMILY_NAME, subsys_name); return nlh; -- To view, visit https://gerrit.osmocom.org/7939 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: I41b2719ffc24d7a3420b5980f2a967264e606d91 Gerrit-PatchSet: 1 Gerrit-Project: libgtpnl Gerrit-Branch: master Gerrit-Owner: Harald Welte Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder From gerrit-no-reply at lists.osmocom.org Thu Apr 26 19:53:59 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Thu, 26 Apr 2018 19:53:59 +0000 Subject: libusrp[master]: usrp.pc.in: Drop unset LIBUSB_PKG_CONFIG_NAME In-Reply-To: References: Message-ID: Patch Set 2: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7911 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Ia5f7ec69701abff91ff8e903e0fd53f8d9fbfba6 Gerrit-PatchSet: 2 Gerrit-Project: libusrp Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Thu Apr 26 20:02:39 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Thu, 26 Apr 2018 20:02:39 +0000 Subject: libusrp[master]: Add debian directory In-Reply-To: References: Message-ID: Patch Set 2: (3 comments) https://gerrit.osmocom.org/#/c/7936/2/debian/control File debian/control: Line 20: Description: USRP1 gnuradio based transceiver The description should be more verbose * libusrp1 is not a transceiver but a driver library for the USRP1 SDR * explain it was taken from upstream gnuradio which has removed libusrp as it switched to UHD support, including USRP1 devices. However, USRP1 on UHD doesn't support timestamps, so this library remains needed for applications that use timestamps http://git.osmocom.org/libusrp/commit/?id=ec6adccbbdda1a4614089aaf52f9e1bab75494e7 is the commit describing the details on how it was created https://gerrit.osmocom.org/#/c/7936/2/debian/copyright File debian/copyright: Line 6: Copyright: > I'm really not sure how to fill these as the library comes from gnuradio af The copyright statements are in all files. gnuradio is (C) FSF so you just need to extract the years. Seems 2003-2010 to me, at least for the relevant host/lib/*.cc Line 8: License: GPLv3 or later -- To view, visit https://gerrit.osmocom.org/7936 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I5ff1d76f533b9ac68ab3f2c70ead6b66f4413b4f Gerrit-PatchSet: 2 Gerrit-Project: libusrp Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Pau Espin Pedrol Gerrit-HasComments: Yes From gerrit-no-reply at lists.osmocom.org Thu Apr 26 20:02:53 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Thu, 26 Apr 2018 20:02:53 +0000 Subject: [MERGED] libusrp[master]: usrp.pc.in: Drop unset LIBUSB_PKG_CONFIG_NAME In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: usrp.pc.in: Drop unset LIBUSB_PKG_CONFIG_NAME ...................................................................... usrp.pc.in: Drop unset LIBUSB_PKG_CONFIG_NAME That variable is expected to be set by macro USRP_LIBUSB from m4/usrp_libusb.m4, but it is never called in configure.ac. Furthermore, the macro doesn't seem to be working fine in some environments like debian9, while it works on others (ArchLinux), so let's better drop it. Change-Id: Ia5f7ec69701abff91ff8e903e0fd53f8d9fbfba6 --- M usrp.pc.in 1 file changed, 1 insertion(+), 1 deletion(-) Approvals: Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/usrp.pc.in b/usrp.pc.in index d4794aa..12d01e4 100644 --- a/usrp.pc.in +++ b/usrp.pc.in @@ -5,7 +5,7 @@ Name: usrp Description: USRP Client Side C++ interface -Requires: @LIBUSB_PKG_CONFIG_NAME@ +Requires: libusb-1.0 Version: @VERSION@ Libs: -L${libdir} -lusrp Cflags: -I${includedir} -- To view, visit https://gerrit.osmocom.org/7911 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: Ia5f7ec69701abff91ff8e903e0fd53f8d9fbfba6 Gerrit-PatchSet: 2 Gerrit-Project: libusrp Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder From admin at opensuse.org Thu Apr 26 20:02:39 2018 From: admin at opensuse.org (OBS Notification) Date: Thu, 26 Apr 2018 20:02:39 +0000 Subject: Build failure of network:osmocom:nightly/libosmo-netif in xUbuntu_17.04/x86_64 In-Reply-To: References: Message-ID: <5ae23066e3afc_26bf9d867c417360@build.opensuse.org> Visit https://build.opensuse.org/package/live_build_log/network:osmocom:nightly/libosmo-netif/xUbuntu_17.04/x86_64 Package network:osmocom:nightly/libosmo-netif failed to build in xUbuntu_17.04/x86_64 Check out the package for editing: osc checkout network:osmocom:nightly libosmo-netif Last lines of build log: [ 118s] -sys={0.040000}, mono={0.040000}: dequeue: seq=54 ts=1140 enqueued=7 [ 118s] -sys={0.040000}, mono={0.040000}: dequeue: seq=55 ts=1300 enqueued=6 [ 118s] -sys={0.040000}, mono={0.040000}: dequeue: seq=56 ts=1460 enqueued=5 [ 118s] -sys={0.040000}, mono={0.040000}: dequeue: seq=57 ts=1620 enqueued=4 [ 118s] -sys={0.040000}, mono={0.040000}: dequeue: seq=58 ts=1780 enqueued=3 [ 118s] -sys={0.040000}, mono={0.040000}: dequeue: seq=59 ts=1940 enqueued=2 [ 118s] -sys={0.040000}, mono={0.040000}: dequeue: seq=60 ts=2100 enqueued=1 [ 118s] -sys={0.040000}, mono={0.040000}: dequeue: seq=61 ts=2260 enqueued=0 [ 118s] -OK: Test passed [ 118s] ./testsuite.at:13: exit code was 139, expected 0 [ 118s] 2. testsuite.at:10: 2. osmux_test2 (testsuite.at:10): FAILED (testsuite.at:13) [ 118s] debian/rules:31: recipe for target 'override_dh_auto_test' failed [ 118s] make[1]: *** [override_dh_auto_test] Error 1 [ 118s] make[1]: Leaving directory '/usr/src/packages/BUILD' [ 118s] debian/rules:13: recipe for target 'build' failed [ 118s] make: *** [build] Error 2 [ 118s] dpkg-buildpackage: error: debian/rules build gave error exit status 2 [ 118s] [ 118s] lamb62 failed "build libosmo-netif_0.1.1.20180426.dsc" at Thu Apr 26 20:02:34 UTC 2018. [ 118s] [ 118s] ### VM INTERACTION START ### [ 118s] [ 109.268113] serial8250: too much work for irq4 [ 118s] [ 109.476215] serial8250: too much work for irq4 [ 118s] [ 109.580352] serial8250: too much work for irq4 [ 120s] [ 112.656899] reboot: Power down [ 120s] ### VM INTERACTION END ### [ 120s] [ 120s] lamb62 failed "build libosmo-netif_0.1.1.20180426.dsc" at Thu Apr 26 20:02:37 UTC 2018. [ 120s] -- Configure notifications at https://build.opensuse.org/user/notifications openSUSE Build Service (https://build.opensuse.org/) From admin at opensuse.org Thu Apr 26 20:02:56 2018 From: admin at opensuse.org (OBS Notification) Date: Thu, 26 Apr 2018 20:02:56 +0000 Subject: Build failure of network:osmocom:nightly/osmo-trx in Debian_9.0/x86_64 In-Reply-To: References: Message-ID: <5ae23083a1466_26bf9d867c417667@build.opensuse.org> Visit https://build.opensuse.org/package/live_build_log/network:osmocom:nightly/osmo-trx/Debian_9.0/x86_64 Package network:osmocom:nightly/osmo-trx failed to build in Debian_9.0/x86_64 Check out the package for editing: osc checkout network:osmocom:nightly osmo-trx Last lines of build log: [ 216s] make[4]: Entering directory '/usr/src/packages/BUILD/tests' [ 216s] make[4]: Nothing to be done for 'install-exec-am'. [ 216s] make[4]: Nothing to be done for 'install-data-am'. [ 216s] make[4]: Leaving directory '/usr/src/packages/BUILD/tests' [ 216s] make[3]: Leaving directory '/usr/src/packages/BUILD/tests' [ 216s] make[2]: Leaving directory '/usr/src/packages/BUILD/tests' [ 216s] make[2]: Entering directory '/usr/src/packages/BUILD' [ 216s] make[3]: Entering directory '/usr/src/packages/BUILD' [ 216s] make[3]: Nothing to be done for 'install-exec-am'. [ 216s] make[3]: Nothing to be done for 'install-data-am'. [ 216s] make[3]: Leaving directory '/usr/src/packages/BUILD' [ 216s] make[2]: Leaving directory '/usr/src/packages/BUILD' [ 216s] make[1]: Leaving directory '/usr/src/packages/BUILD' [ 216s] dh_install [ 216s] dh_install: Cannot find (any matches for) "/usr/bin/osmo-trx-usrp1" (tried in "." and "debian/tmp") [ 216s] dh_install: osmo-trx-usrp1 missing files: /usr/bin/osmo-trx-usrp1 [ 216s] dh_install: missing files, aborting [ 216s] debian/rules:6: recipe for target 'binary' failed [ 216s] make: *** [binary] Error 2 [ 216s] dpkg-buildpackage: error: fakeroot debian/rules binary gave error exit status 2 [ 216s] [ 216s] lamb09 failed "build osmo-trx_0.2.0.20180426.dsc" at Thu Apr 26 20:02:46 UTC 2018. [ 216s] [ 216s] ### VM INTERACTION START ### [ 219s] [ 208.489870] reboot: Power down [ 220s] ### VM INTERACTION END ### [ 220s] [ 220s] lamb09 failed "build osmo-trx_0.2.0.20180426.dsc" at Thu Apr 26 20:02:51 UTC 2018. [ 220s] -- Configure notifications at https://build.opensuse.org/user/notifications openSUSE Build Service (https://build.opensuse.org/) From admin at opensuse.org Thu Apr 26 20:02:56 2018 From: admin at opensuse.org (OBS Notification) Date: Thu, 26 Apr 2018 20:02:56 +0000 Subject: Build failure of network:osmocom:nightly/osmo-trx in xUbuntu_16.04/i586 In-Reply-To: References: Message-ID: <5ae23083ea3aa_26bf9d867c417762@build.opensuse.org> Visit https://build.opensuse.org/package/live_build_log/network:osmocom:nightly/osmo-trx/xUbuntu_16.04/i586 Package network:osmocom:nightly/osmo-trx failed to build in xUbuntu_16.04/i586 Check out the package for editing: osc checkout network:osmocom:nightly osmo-trx Last lines of build log: [ 156s] /usr/include/uhd/stream.hpp:63: undefined reference to `uhd::device_addr_t::device_addr_t(std::__cxx11::basic_string, std::allocator > const&)' [ 156s] ./device/uhd/.libs/libdevice.a(UHDDevice.o): In function `uhd_e3xx_version_chk': [ 156s] /usr/src/packages/BUILD/Transceiver52M/device/uhd/UHDDevice.cpp:600: undefined reference to `uhd::get_version_string[abi:cxx11]()' [ 156s] collect2: error: ld returned 1 exit status [ 156s] Makefile:660: recipe for target 'osmo-trx-uhd' failed [ 156s] make[4]: *** [osmo-trx-uhd] Error 1 [ 156s] make[4]: Leaving directory '/usr/src/packages/BUILD/Transceiver52M' [ 156s] Makefile:796: recipe for target 'all-recursive' failed [ 156s] make[3]: *** [all-recursive] Error 1 [ 156s] make[3]: Leaving directory '/usr/src/packages/BUILD/Transceiver52M' [ 156s] Makefile:507: recipe for target 'all-recursive' failed [ 156s] make[2]: *** [all-recursive] Error 1 [ 156s] make[2]: Leaving directory '/usr/src/packages/BUILD' [ 156s] Makefile:438: recipe for target 'all' failed [ 156s] make[1]: *** [all] Error 2 [ 156s] make[1]: Leaving directory '/usr/src/packages/BUILD' [ 156s] dh_auto_build: make -j1 returned exit code 2 [ 156s] debian/rules:6: recipe for target 'build' failed [ 156s] make: *** [build] Error 2 [ 156s] dpkg-buildpackage: error: debian/rules build gave error exit status 2 [ 156s] [ 156s] lamb11 failed "build osmo-trx_0.2.0.20180426.dsc" at Thu Apr 26 20:02:49 UTC 2018. [ 156s] [ 156s] ### VM INTERACTION START ### [ 159s] [ 150.141644] reboot: Power down [ 159s] ### VM INTERACTION END ### [ 159s] [ 159s] lamb11 failed "build osmo-trx_0.2.0.20180426.dsc" at Thu Apr 26 20:02:53 UTC 2018. [ 159s] -- Configure notifications at https://build.opensuse.org/user/notifications openSUSE Build Service (https://build.opensuse.org/) From admin at opensuse.org Thu Apr 26 20:03:13 2018 From: admin at opensuse.org (OBS Notification) Date: Thu, 26 Apr 2018 20:03:13 +0000 Subject: Build failure of network:osmocom:nightly/osmo-trx in xUbuntu_17.04/i586 In-Reply-To: References: Message-ID: <5ae2309fd35ed_26bf9d867c417836@build.opensuse.org> Visit https://build.opensuse.org/package/live_build_log/network:osmocom:nightly/osmo-trx/xUbuntu_17.04/i586 Package network:osmocom:nightly/osmo-trx failed to build in xUbuntu_17.04/i586 Check out the package for editing: osc checkout network:osmocom:nightly osmo-trx Last lines of build log: [ 167s] /usr/include/uhd/stream.hpp:63: undefined reference to `uhd::device_addr_t::device_addr_t(std::__cxx11::basic_string, std::allocator > const&)' [ 167s] ./device/uhd/.libs/libdevice.a(UHDDevice.o): In function `uhd_e3xx_version_chk': [ 167s] ./Transceiver52M/device/uhd/UHDDevice.cpp:600: undefined reference to `uhd::get_version_string[abi:cxx11]()' [ 167s] collect2: error: ld returned 1 exit status [ 167s] Makefile:660: recipe for target 'osmo-trx-uhd' failed [ 167s] make[4]: *** [osmo-trx-uhd] Error 1 [ 167s] make[4]: Leaving directory '/usr/src/packages/BUILD/Transceiver52M' [ 167s] Makefile:796: recipe for target 'all-recursive' failed [ 167s] make[3]: *** [all-recursive] Error 1 [ 167s] make[3]: Leaving directory '/usr/src/packages/BUILD/Transceiver52M' [ 167s] Makefile:507: recipe for target 'all-recursive' failed [ 167s] make[2]: *** [all-recursive] Error 1 [ 167s] make[2]: Leaving directory '/usr/src/packages/BUILD' [ 167s] Makefile:438: recipe for target 'all' failed [ 167s] make[1]: *** [all] Error 2 [ 167s] make[1]: Leaving directory '/usr/src/packages/BUILD' [ 167s] dh_auto_build: make -j1 returned exit code 2 [ 167s] debian/rules:6: recipe for target 'build' failed [ 167s] make: *** [build] Error 2 [ 167s] dpkg-buildpackage: error: debian/rules build gave error exit status 2 [ 167s] [ 167s] lamb19 failed "build osmo-trx_0.2.0.20180426.dsc" at Thu Apr 26 20:03:03 UTC 2018. [ 167s] [ 167s] ### VM INTERACTION START ### [ 170s] [ 161.015962] reboot: Power down [ 170s] ### VM INTERACTION END ### [ 170s] [ 170s] lamb19 failed "build osmo-trx_0.2.0.20180426.dsc" at Thu Apr 26 20:03:06 UTC 2018. [ 170s] -- Configure notifications at https://build.opensuse.org/user/notifications openSUSE Build Service (https://build.opensuse.org/) From admin at opensuse.org Thu Apr 26 20:03:13 2018 From: admin at opensuse.org (OBS Notification) Date: Thu, 26 Apr 2018 20:03:13 +0000 Subject: Build failure of network:osmocom:nightly/osmo-trx in Debian_8.0/i586 In-Reply-To: References: Message-ID: <5ae230a062673_26bf9d867c4179a4@build.opensuse.org> Visit https://build.opensuse.org/package/live_build_log/network:osmocom:nightly/osmo-trx/Debian_8.0/i586 Package network:osmocom:nightly/osmo-trx failed to build in Debian_8.0/i586 Check out the package for editing: osc checkout network:osmocom:nightly osmo-trx Last lines of build log: [ 214s] make[4]: Entering directory '/usr/src/packages/BUILD/tests' [ 214s] make[4]: Nothing to be done for 'install-exec-am'. [ 214s] make[4]: Nothing to be done for 'install-data-am'. [ 214s] make[4]: Leaving directory '/usr/src/packages/BUILD/tests' [ 214s] make[3]: Leaving directory '/usr/src/packages/BUILD/tests' [ 214s] make[2]: Leaving directory '/usr/src/packages/BUILD/tests' [ 214s] make[2]: Entering directory '/usr/src/packages/BUILD' [ 214s] make[3]: Entering directory '/usr/src/packages/BUILD' [ 214s] make[3]: Nothing to be done for 'install-exec-am'. [ 214s] make[3]: Nothing to be done for 'install-data-am'. [ 214s] make[3]: Leaving directory '/usr/src/packages/BUILD' [ 214s] make[2]: Leaving directory '/usr/src/packages/BUILD' [ 214s] make[1]: Leaving directory '/usr/src/packages/BUILD' [ 214s] dh_install [ 214s] cp: cannot stat 'debian/tmp//usr/bin/osmo-trx-usrp1': No such file or directory [ 214s] dh_install: cp -a debian/tmp//usr/bin/osmo-trx-usrp1 debian/osmo-trx-usrp1///usr/bin/ returned exit code 1 [ 214s] debian/rules:6: recipe for target 'binary' failed [ 214s] make: *** [binary] Error 2 [ 214s] dpkg-buildpackage: error: fakeroot debian/rules binary gave error exit status 2 [ 214s] [ 214s] lamb26 failed "build osmo-trx_0.2.0.20180426.dsc" at Thu Apr 26 20:03:08 UTC 2018. [ 214s] [ 214s] ### VM INTERACTION START ### [ 216s] Powering off. [ 216s] [ 207.915854] reboot: Power down [ 216s] ### VM INTERACTION END ### [ 216s] [ 216s] lamb26 failed "build osmo-trx_0.2.0.20180426.dsc" at Thu Apr 26 20:03:10 UTC 2018. [ 216s] -- Configure notifications at https://build.opensuse.org/user/notifications openSUSE Build Service (https://build.opensuse.org/) From admin at opensuse.org Thu Apr 26 20:05:30 2018 From: admin at opensuse.org (OBS Notification) Date: Thu, 26 Apr 2018 20:05:30 +0000 Subject: Build failure of network:osmocom:nightly/libosmo-netif in Debian_9.0/x86_64 In-Reply-To: References: Message-ID: <5ae23117d61df_26bf9d867c418328@build.opensuse.org> Visit https://build.opensuse.org/package/live_build_log/network:osmocom:nightly/libosmo-netif/Debian_9.0/x86_64 Package network:osmocom:nightly/libosmo-netif failed to build in Debian_9.0/x86_64 Check out the package for editing: osc checkout network:osmocom:nightly libosmo-netif Last lines of build log: [ 101s] | #define HAVE_STDINT_H 1 [ 101s] | #define HAVE_UNISTD_H 1 [ 101s] | #define HAVE_DLFCN_H 1 [ 101s] | #define LT_OBJDIR ".libs/" [ 101s] | #define STDC_HEADERS 1 [ 101s] | #define HAVE_EXECINFO_H 1 [ 101s] | #define HAVE_SYS_SELECT_H 1 [ 101s] | #define HAVE_SYS_SOCKET_H 1 [ 101s] | #define HAVE_SYSLOG_H 1 [ 101s] | #define HAVE_CTYPE_H 1 [ 101s] | #define HAVE_LIBSCTP 1 [ 101s] | [ 101s] | configure: exit 0 [ 101s] [ 101s] debian/rules:31: recipe for target 'override_dh_auto_test' failed [ 101s] make[1]: *** [override_dh_auto_test] Error 1 [ 101s] make[1]: Leaving directory '/usr/src/packages/BUILD' [ 101s] debian/rules:13: recipe for target 'build' failed [ 101s] make: *** [build] Error 2 [ 101s] dpkg-buildpackage: error: debian/rules build gave error exit status 2 [ 101s] [ 101s] lamb04 failed "build libosmo-netif_0.1.1.20180426.dsc" at Thu Apr 26 20:05:18 UTC 2018. [ 101s] [ 101s] ### VM INTERACTION START ### [ 104s] [ 97.042922] reboot: Power down [ 104s] ### VM INTERACTION END ### [ 104s] [ 104s] lamb04 failed "build libosmo-netif_0.1.1.20180426.dsc" at Thu Apr 26 20:05:21 UTC 2018. [ 104s] -- Configure notifications at https://build.opensuse.org/user/notifications openSUSE Build Service (https://build.opensuse.org/) From admin at opensuse.org Thu Apr 26 20:05:47 2018 From: admin at opensuse.org (OBS Notification) Date: Thu, 26 Apr 2018 20:05:47 +0000 Subject: Build failure of network:osmocom:nightly/osmo-trx in xUbuntu_17.04/x86_64 In-Reply-To: References: Message-ID: <5ae231336ac1f_26bf9d867c41844c@build.opensuse.org> Visit https://build.opensuse.org/package/live_build_log/network:osmocom:nightly/osmo-trx/xUbuntu_17.04/x86_64 Package network:osmocom:nightly/osmo-trx failed to build in xUbuntu_17.04/x86_64 Check out the package for editing: osc checkout network:osmocom:nightly osmo-trx Last lines of build log: [ 164s] ./Transceiver52M/device/uhd/UHDDevice.cpp:600: undefined reference to `uhd::get_version_string[abi:cxx11]()' [ 164s] ./device/uhd/.libs/libdevice.a(UHDDevice.o): In function `uhd_device::setPriority(float)': [ 164s] ./Transceiver52M/device/uhd/UHDDevice.cpp:886: undefined reference to `uhd::set_thread_priority_safe(float, bool)' [ 164s] collect2: error: ld returned 1 exit status [ 164s] Makefile:660: recipe for target 'osmo-trx-uhd' failed [ 164s] make[4]: *** [osmo-trx-uhd] Error 1 [ 164s] make[4]: Leaving directory '/usr/src/packages/BUILD/Transceiver52M' [ 164s] Makefile:796: recipe for target 'all-recursive' failed [ 164s] make[3]: *** [all-recursive] Error 1 [ 164s] make[3]: Leaving directory '/usr/src/packages/BUILD/Transceiver52M' [ 164s] Makefile:507: recipe for target 'all-recursive' failed [ 164s] make[2]: *** [all-recursive] Error 1 [ 164s] make[2]: Leaving directory '/usr/src/packages/BUILD' [ 164s] Makefile:438: recipe for target 'all' failed [ 164s] make[1]: *** [all] Error 2 [ 164s] make[1]: Leaving directory '/usr/src/packages/BUILD' [ 164s] dh_auto_build: make -j1 returned exit code 2 [ 164s] debian/rules:6: recipe for target 'build' failed [ 164s] make: *** [build] Error 2 [ 164s] dpkg-buildpackage: error: debian/rules build gave error exit status 2 [ 164s] [ 164s] lamb61 failed "build osmo-trx_0.2.0.20180426.dsc" at Thu Apr 26 20:05:26 UTC 2018. [ 164s] [ 164s] ### VM INTERACTION START ### [ 168s] [ 156.769244] reboot: Power down [ 168s] ### VM INTERACTION END ### [ 168s] [ 168s] lamb61 failed "build osmo-trx_0.2.0.20180426.dsc" at Thu Apr 26 20:05:30 UTC 2018. [ 168s] -- Configure notifications at https://build.opensuse.org/user/notifications openSUSE Build Service (https://build.opensuse.org/) From admin at opensuse.org Thu Apr 26 20:05:47 2018 From: admin at opensuse.org (OBS Notification) Date: Thu, 26 Apr 2018 20:05:47 +0000 Subject: Build failure of network:osmocom:nightly/osmo-trx in Debian_8.0/x86_64 In-Reply-To: References: Message-ID: <5ae23133a3fb2_26bf9d867c4185cd@build.opensuse.org> Visit https://build.opensuse.org/package/live_build_log/network:osmocom:nightly/osmo-trx/Debian_8.0/x86_64 Package network:osmocom:nightly/osmo-trx failed to build in Debian_8.0/x86_64 Check out the package for editing: osc checkout network:osmocom:nightly osmo-trx Last lines of build log: [ 225s] make[4]: Entering directory '/usr/src/packages/BUILD/tests' [ 225s] make[4]: Nothing to be done for 'install-exec-am'. [ 225s] make[4]: Nothing to be done for 'install-data-am'. [ 225s] make[4]: Leaving directory '/usr/src/packages/BUILD/tests' [ 225s] make[3]: Leaving directory '/usr/src/packages/BUILD/tests' [ 225s] make[2]: Leaving directory '/usr/src/packages/BUILD/tests' [ 225s] make[2]: Entering directory '/usr/src/packages/BUILD' [ 225s] make[3]: Entering directory '/usr/src/packages/BUILD' [ 225s] make[3]: Nothing to be done for 'install-exec-am'. [ 225s] make[3]: Nothing to be done for 'install-data-am'. [ 225s] make[3]: Leaving directory '/usr/src/packages/BUILD' [ 225s] make[2]: Leaving directory '/usr/src/packages/BUILD' [ 225s] make[1]: Leaving directory '/usr/src/packages/BUILD' [ 225s] dh_install [ 225s] cp: cannot stat 'debian/tmp//usr/bin/osmo-trx-usrp1': No such file or directory [ 225s] dh_install: cp -a debian/tmp//usr/bin/osmo-trx-usrp1 debian/osmo-trx-usrp1///usr/bin/ returned exit code 1 [ 225s] debian/rules:6: recipe for target 'binary' failed [ 225s] make: *** [binary] Error 2 [ 225s] dpkg-buildpackage: error: fakeroot debian/rules binary gave error exit status 2 [ 225s] [ 225s] lamb25 failed "build osmo-trx_0.2.0.20180426.dsc" at Thu Apr 26 20:05:28 UTC 2018. [ 225s] [ 225s] ### VM INTERACTION START ### [ 226s] Powering off. [ 226s] [ 215.767041] reboot: Power down [ 226s] ### VM INTERACTION END ### [ 226s] [ 226s] lamb25 failed "build osmo-trx_0.2.0.20180426.dsc" at Thu Apr 26 20:05:30 UTC 2018. [ 226s] -- Configure notifications at https://build.opensuse.org/user/notifications openSUSE Build Service (https://build.opensuse.org/) From admin at opensuse.org Thu Apr 26 20:08:21 2018 From: admin at opensuse.org (OBS Notification) Date: Thu, 26 Apr 2018 20:08:21 +0000 Subject: Build failure of network:osmocom:nightly/osmo-trx in Debian_9.0/i586 In-Reply-To: References: Message-ID: <5ae231cb53323_26bf9d867c4190c1@build.opensuse.org> Visit https://build.opensuse.org/package/live_build_log/network:osmocom:nightly/osmo-trx/Debian_9.0/i586 Package network:osmocom:nightly/osmo-trx failed to build in Debian_9.0/i586 Check out the package for editing: osc checkout network:osmocom:nightly osmo-trx Last lines of build log: [ 207s] make[4]: Entering directory '/usr/src/packages/BUILD/tests' [ 207s] make[4]: Nothing to be done for 'install-exec-am'. [ 207s] make[4]: Nothing to be done for 'install-data-am'. [ 207s] make[4]: Leaving directory '/usr/src/packages/BUILD/tests' [ 207s] make[3]: Leaving directory '/usr/src/packages/BUILD/tests' [ 207s] make[2]: Leaving directory '/usr/src/packages/BUILD/tests' [ 207s] make[2]: Entering directory '/usr/src/packages/BUILD' [ 207s] make[3]: Entering directory '/usr/src/packages/BUILD' [ 207s] make[3]: Nothing to be done for 'install-exec-am'. [ 207s] make[3]: Nothing to be done for 'install-data-am'. [ 207s] make[3]: Leaving directory '/usr/src/packages/BUILD' [ 207s] make[2]: Leaving directory '/usr/src/packages/BUILD' [ 207s] make[1]: Leaving directory '/usr/src/packages/BUILD' [ 207s] dh_install [ 207s] dh_install: Cannot find (any matches for) "/usr/bin/osmo-trx-usrp1" (tried in "." and "debian/tmp") [ 207s] dh_install: osmo-trx-usrp1 missing files: /usr/bin/osmo-trx-usrp1 [ 207s] dh_install: missing files, aborting [ 207s] debian/rules:6: recipe for target 'binary' failed [ 207s] make: *** [binary] Error 2 [ 207s] dpkg-buildpackage: error: fakeroot debian/rules binary gave error exit status 2 [ 207s] [ 207s] lamb11 failed "build osmo-trx_0.2.0.20180426.dsc" at Thu Apr 26 20:08:04 UTC 2018. [ 207s] [ 207s] ### VM INTERACTION START ### [ 210s] [ 200.122284] reboot: Power down [ 210s] ### VM INTERACTION END ### [ 210s] [ 210s] lamb11 failed "build osmo-trx_0.2.0.20180426.dsc" at Thu Apr 26 20:08:08 UTC 2018. [ 210s] -- Configure notifications at https://build.opensuse.org/user/notifications openSUSE Build Service (https://build.opensuse.org/) From admin at opensuse.org Thu Apr 26 20:08:21 2018 From: admin at opensuse.org (OBS Notification) Date: Thu, 26 Apr 2018 20:08:21 +0000 Subject: Build failure of network:osmocom:nightly/osmo-trx in xUbuntu_16.04/x86_64 In-Reply-To: References: Message-ID: <5ae231cbc28f9_26bf9d867c419155@build.opensuse.org> Visit https://build.opensuse.org/package/live_build_log/network:osmocom:nightly/osmo-trx/xUbuntu_16.04/x86_64 Package network:osmocom:nightly/osmo-trx failed to build in xUbuntu_16.04/x86_64 Check out the package for editing: osc checkout network:osmocom:nightly osmo-trx Last lines of build log: [ 275s] /usr/src/packages/BUILD/Transceiver52M/device/uhd/UHDDevice.cpp:600: undefined reference to `uhd::get_version_string[abi:cxx11]()' [ 275s] ./device/uhd/.libs/libdevice.a(UHDDevice.o): In function `uhd_device::setPriority(float)': [ 275s] /usr/src/packages/BUILD/Transceiver52M/device/uhd/UHDDevice.cpp:886: undefined reference to `uhd::set_thread_priority_safe(float, bool)' [ 275s] collect2: error: ld returned 1 exit status [ 275s] Makefile:660: recipe for target 'osmo-trx-uhd' failed [ 275s] make[4]: *** [osmo-trx-uhd] Error 1 [ 275s] make[4]: Leaving directory '/usr/src/packages/BUILD/Transceiver52M' [ 275s] Makefile:796: recipe for target 'all-recursive' failed [ 275s] make[3]: *** [all-recursive] Error 1 [ 275s] make[3]: Leaving directory '/usr/src/packages/BUILD/Transceiver52M' [ 275s] Makefile:507: recipe for target 'all-recursive' failed [ 275s] make[2]: *** [all-recursive] Error 1 [ 275s] make[2]: Leaving directory '/usr/src/packages/BUILD' [ 275s] Makefile:438: recipe for target 'all' failed [ 275s] make[1]: *** [all] Error 2 [ 275s] make[1]: Leaving directory '/usr/src/packages/BUILD' [ 275s] dh_auto_build: make -j1 returned exit code 2 [ 276s] debian/rules:6: recipe for target 'build' failed [ 276s] make: *** [build] Error 2 [ 276s] dpkg-buildpackage: error: debian/rules build gave error exit status 2 [ 276s] [ 276s] lamb27 failed "build osmo-trx_0.2.0.20180426.dsc" at Thu Apr 26 20:08:17 UTC 2018. [ 276s] [ 276s] ### VM INTERACTION START ### [ 279s] [ 264.764922] reboot: Power down [ 279s] ### VM INTERACTION END ### [ 279s] [ 279s] lamb27 failed "build osmo-trx_0.2.0.20180426.dsc" at Thu Apr 26 20:08:20 UTC 2018. [ 279s] -- Configure notifications at https://build.opensuse.org/user/notifications openSUSE Build Service (https://build.opensuse.org/) From admin at opensuse.org Thu Apr 26 20:08:39 2018 From: admin at opensuse.org (OBS Notification) Date: Thu, 26 Apr 2018 20:08:39 +0000 Subject: Build failure of network:osmocom:nightly/osmo-trx in xUbuntu_17.10/x86_64 In-Reply-To: References: Message-ID: <5ae231cd69fb0_26bf9d867c419326@build.opensuse.org> Visit https://build.opensuse.org/package/live_build_log/network:osmocom:nightly/osmo-trx/xUbuntu_17.10/x86_64 Package network:osmocom:nightly/osmo-trx failed to build in xUbuntu_17.10/x86_64 Check out the package for editing: osc checkout network:osmocom:nightly osmo-trx Last lines of build log: [ 206s] ./Transceiver52M/device/uhd/UHDDevice.cpp:600: undefined reference to `uhd::get_version_string[abi:cxx11]()' [ 206s] ./device/uhd/.libs/libdevice.a(UHDDevice.o): In function `uhd_device::setPriority(float)': [ 206s] ./Transceiver52M/device/uhd/UHDDevice.cpp:886: undefined reference to `uhd::set_thread_priority_safe(float, bool)' [ 206s] collect2: error: ld returned 1 exit status [ 206s] Makefile:660: recipe for target 'osmo-trx-uhd' failed [ 206s] make[4]: *** [osmo-trx-uhd] Error 1 [ 206s] make[4]: Leaving directory '/usr/src/packages/BUILD/Transceiver52M' [ 206s] Makefile:796: recipe for target 'all-recursive' failed [ 206s] make[3]: *** [all-recursive] Error 1 [ 206s] make[3]: Leaving directory '/usr/src/packages/BUILD/Transceiver52M' [ 206s] Makefile:507: recipe for target 'all-recursive' failed [ 206s] make[2]: *** [all-recursive] Error 1 [ 206s] make[2]: Leaving directory '/usr/src/packages/BUILD' [ 206s] Makefile:438: recipe for target 'all' failed [ 206s] make[1]: *** [all] Error 2 [ 206s] make[1]: Leaving directory '/usr/src/packages/BUILD' [ 206s] dh_auto_build: make -j1 returned exit code 2 [ 206s] debian/rules:6: recipe for target 'build' failed [ 206s] make: *** [build] Error 2 [ 206s] dpkg-buildpackage: error: debian/rules build gave error exit status 2 [ 206s] [ 206s] wildcard3 failed "build osmo-trx_0.2.0.20180426.dsc" at Thu Apr 26 20:08:29 UTC 2018. [ 206s] [ 206s] ### VM INTERACTION START ### [ 209s] [ 182.860708] reboot: Power down [ 213s] ### VM INTERACTION END ### [ 213s] [ 213s] wildcard3 failed "build osmo-trx_0.2.0.20180426.dsc" at Thu Apr 26 20:08:37 UTC 2018. [ 213s] -- Configure notifications at https://build.opensuse.org/user/notifications openSUSE Build Service (https://build.opensuse.org/) From admin at opensuse.org Thu Apr 26 20:09:47 2018 From: admin at opensuse.org (OBS Notification) Date: Thu, 26 Apr 2018 20:09:47 +0000 Subject: Build failure of network:osmocom:nightly/osmo-trx in Debian_9.0/armv7l In-Reply-To: References: Message-ID: <5ae232267ef9c_26bf9d867c419714@build.opensuse.org> Visit https://build.opensuse.org/package/live_build_log/network:osmocom:nightly/osmo-trx/Debian_9.0/armv7l Package network:osmocom:nightly/osmo-trx failed to build in Debian_9.0/armv7l Check out the package for editing: osc checkout network:osmocom:nightly osmo-trx Last lines of build log: [ 391s] #include "convolve.h" [ 391s] ^ [ 391s] compilation terminated. [ 391s] Makefile:458: recipe for target 'convolve_test-convolve_test.o' failed [ 391s] make[4]: *** [convolve_test-convolve_test.o] Error 1 [ 391s] make[4]: Leaving directory '/usr/src/packages/BUILD/tests/Transceiver52M' [ 391s] Makefile:397: recipe for target 'all-recursive' failed [ 391s] make[3]: *** [all-recursive] Error 1 [ 391s] make[3]: Leaving directory '/usr/src/packages/BUILD/tests' [ 391s] Makefile:507: recipe for target 'all-recursive' failed [ 391s] make[2]: *** [all-recursive] Error 1 [ 391s] make[2]: Leaving directory '/usr/src/packages/BUILD' [ 391s] Makefile:438: recipe for target 'all' failed [ 391s] make[1]: *** [all] Error 2 [ 391s] make[1]: Leaving directory '/usr/src/packages/BUILD' [ 391s] dh_auto_build: make -j1 returned exit code 2 [ 391s] debian/rules:6: recipe for target 'build' failed [ 391s] make: *** [build] Error 2 [ 391s] dpkg-buildpackage: error: debian/rules build gave error exit status 2 [ 391s] [ 391s] armbuild16 failed "build osmo-trx_0.2.0.20180426.dsc" at Thu Apr 26 20:09:40 UTC 2018. [ 391s] [ 391s] ### VM INTERACTION START ### [ 394s] [ 352.744057] SysRq : Power Off [ 394s] [ 352.745354] reboot: Power down [ 395s] ### VM INTERACTION END ### [ 395s] [ 395s] armbuild16 failed "build osmo-trx_0.2.0.20180426.dsc" at Thu Apr 26 20:09:44 UTC 2018. [ 395s] -- Configure notifications at https://build.opensuse.org/user/notifications openSUSE Build Service (https://build.opensuse.org/) From admin at opensuse.org Thu Apr 26 20:10:21 2018 From: admin at opensuse.org (OBS Notification) Date: Thu, 26 Apr 2018 20:10:21 +0000 Subject: Build failure of network:osmocom:nightly/osmo-trx in xUbuntu_16.10/i586 In-Reply-To: References: Message-ID: <5ae23244d61b0_26bf9d867c419995@build.opensuse.org> Visit https://build.opensuse.org/package/live_build_log/network:osmocom:nightly/osmo-trx/xUbuntu_16.10/i586 Package network:osmocom:nightly/osmo-trx failed to build in xUbuntu_16.10/i586 Check out the package for editing: osc checkout network:osmocom:nightly osmo-trx Last lines of build log: [ 181s] /usr/include/uhd/stream.hpp:63: undefined reference to `uhd::device_addr_t::device_addr_t(std::__cxx11::basic_string, std::allocator > const&)' [ 181s] ./device/uhd/.libs/libdevice.a(UHDDevice.o): In function `uhd_e3xx_version_chk': [ 181s] ./Transceiver52M/device/uhd/UHDDevice.cpp:600: undefined reference to `uhd::get_version_string[abi:cxx11]()' [ 181s] collect2: error: ld returned 1 exit status [ 181s] Makefile:660: recipe for target 'osmo-trx-uhd' failed [ 181s] make[4]: *** [osmo-trx-uhd] Error 1 [ 181s] make[4]: Leaving directory '/usr/src/packages/BUILD/Transceiver52M' [ 181s] Makefile:796: recipe for target 'all-recursive' failed [ 181s] make[3]: *** [all-recursive] Error 1 [ 181s] make[3]: Leaving directory '/usr/src/packages/BUILD/Transceiver52M' [ 181s] Makefile:507: recipe for target 'all-recursive' failed [ 181s] make[2]: *** [all-recursive] Error 1 [ 181s] make[2]: Leaving directory '/usr/src/packages/BUILD' [ 181s] Makefile:438: recipe for target 'all' failed [ 181s] make[1]: *** [all] Error 2 [ 181s] make[1]: Leaving directory '/usr/src/packages/BUILD' [ 181s] dh_auto_build: make -j1 returned exit code 2 [ 181s] debian/rules:6: recipe for target 'build' failed [ 181s] make: *** [build] Error 2 [ 181s] dpkg-buildpackage: error: debian/rules build gave error exit status 2 [ 181s] [ 181s] lamb17 failed "build osmo-trx_0.2.0.20180426.dsc" at Thu Apr 26 20:10:10 UTC 2018. [ 181s] [ 181s] ### VM INTERACTION START ### [ 184s] [ 175.129765] reboot: Power down [ 184s] ### VM INTERACTION END ### [ 184s] [ 184s] lamb17 failed "build osmo-trx_0.2.0.20180426.dsc" at Thu Apr 26 20:10:14 UTC 2018. [ 184s] -- Configure notifications at https://build.opensuse.org/user/notifications openSUSE Build Service (https://build.opensuse.org/) From admin at opensuse.org Thu Apr 26 20:11:47 2018 From: admin at opensuse.org (OBS Notification) Date: Thu, 26 Apr 2018 20:11:47 +0000 Subject: Build failure of network:osmocom:nightly/osmo-trx in xUbuntu_16.10/x86_64 In-Reply-To: References: Message-ID: <5ae2329e88fef_26bf9d867c420111@build.opensuse.org> Visit https://build.opensuse.org/package/live_build_log/network:osmocom:nightly/osmo-trx/xUbuntu_16.10/x86_64 Package network:osmocom:nightly/osmo-trx failed to build in xUbuntu_16.10/x86_64 Check out the package for editing: osc checkout network:osmocom:nightly osmo-trx Last lines of build log: [ 160s] ./Transceiver52M/device/uhd/UHDDevice.cpp:600: undefined reference to `uhd::get_version_string[abi:cxx11]()' [ 160s] ./device/uhd/.libs/libdevice.a(UHDDevice.o): In function `uhd_device::setPriority(float)': [ 160s] ./Transceiver52M/device/uhd/UHDDevice.cpp:886: undefined reference to `uhd::set_thread_priority_safe(float, bool)' [ 160s] collect2: error: ld returned 1 exit status [ 160s] Makefile:660: recipe for target 'osmo-trx-uhd' failed [ 160s] make[4]: *** [osmo-trx-uhd] Error 1 [ 160s] make[4]: Leaving directory '/usr/src/packages/BUILD/Transceiver52M' [ 160s] Makefile:796: recipe for target 'all-recursive' failed [ 160s] make[3]: *** [all-recursive] Error 1 [ 160s] make[3]: Leaving directory '/usr/src/packages/BUILD/Transceiver52M' [ 160s] Makefile:507: recipe for target 'all-recursive' failed [ 160s] make[2]: *** [all-recursive] Error 1 [ 160s] make[2]: Leaving directory '/usr/src/packages/BUILD' [ 160s] Makefile:438: recipe for target 'all' failed [ 160s] make[1]: *** [all] Error 2 [ 160s] make[1]: Leaving directory '/usr/src/packages/BUILD' [ 160s] dh_auto_build: make -j1 returned exit code 2 [ 160s] debian/rules:6: recipe for target 'build' failed [ 160s] make: *** [build] Error 2 [ 160s] dpkg-buildpackage: error: debian/rules build gave error exit status 2 [ 160s] [ 160s] lamb62 failed "build osmo-trx_0.2.0.20180426.dsc" at Thu Apr 26 20:11:32 UTC 2018. [ 160s] [ 160s] ### VM INTERACTION START ### [ 163s] [ 154.351822] reboot: Power down [ 163s] ### VM INTERACTION END ### [ 163s] [ 163s] lamb62 failed "build osmo-trx_0.2.0.20180426.dsc" at Thu Apr 26 20:11:36 UTC 2018. [ 163s] -- Configure notifications at https://build.opensuse.org/user/notifications openSUSE Build Service (https://build.opensuse.org/) From admin at opensuse.org Thu Apr 26 20:12:56 2018 From: admin at opensuse.org (OBS Notification) Date: Thu, 26 Apr 2018 20:12:56 +0000 Subject: Build failure of network:osmocom:nightly/openbsc in xUbuntu_17.04/x86_64 In-Reply-To: References: Message-ID: <5ae232d73a33a_26bf9d867c420247@build.opensuse.org> Visit https://build.opensuse.org/package/live_build_log/network:osmocom:nightly/openbsc/xUbuntu_17.04/x86_64 Package network:osmocom:nightly/openbsc failed to build in xUbuntu_17.04/x86_64 Check out the package for editing: osc checkout network:osmocom:nightly openbsc Last lines of build log: [ 96s] mgcp_osmux.c:490:2: error: implicit declaration of function 'osmux_xfrm_output_flush' [-Werror=implicit-function-declaration] [ 96s] osmux_xfrm_output_flush(&endp->osmux.out); [ 96s] ^~~~~~~~~~~~~~~~~~~~~~~ [ 96s] cc1: some warnings being treated as errors [ 96s] Makefile:455: recipe for target 'mgcp_osmux.o' failed [ 96s] make[4]: *** [mgcp_osmux.o] Error 1 [ 96s] make[4]: Leaving directory '/usr/src/packages/BUILD/openbsc/src/libmgcp' [ 96s] Makefile:447: recipe for target 'all-recursive' failed [ 96s] make[3]: *** [all-recursive] Error 1 [ 96s] make[3]: Leaving directory '/usr/src/packages/BUILD/openbsc/src' [ 96s] Makefile:518: recipe for target 'all-recursive' failed [ 96s] make[2]: *** [all-recursive] Error 1 [ 96s] make[2]: Leaving directory '/usr/src/packages/BUILD/openbsc' [ 96s] Makefile:427: recipe for target 'all' failed [ 96s] make[1]: *** [all] Error 2 [ 96s] make[1]: Leaving directory '/usr/src/packages/BUILD/openbsc' [ 96s] dh_auto_build: make -j1 returned exit code 2 [ 96s] debian/rules:13: recipe for target 'build' failed [ 96s] make: *** [build] Error 2 [ 96s] dpkg-buildpackage: error: debian/rules build gave error exit status 2 [ 96s] [ 96s] lamb56 failed "build openbsc_1.0.0.20180426.dsc" at Thu Apr 26 20:12:39 UTC 2018. [ 96s] [ 96s] ### VM INTERACTION START ### [ 99s] [ 91.623921] reboot: Power down [ 99s] ### VM INTERACTION END ### [ 99s] [ 99s] lamb56 failed "build openbsc_1.0.0.20180426.dsc" at Thu Apr 26 20:12:42 UTC 2018. [ 99s] -- Configure notifications at https://build.opensuse.org/user/notifications openSUSE Build Service (https://build.opensuse.org/) From admin at opensuse.org Thu Apr 26 20:15:13 2018 From: admin at opensuse.org (OBS Notification) Date: Thu, 26 Apr 2018 20:15:13 +0000 Subject: Build failure of network:osmocom:nightly/openbsc in Debian_9.0/x86_64 In-Reply-To: References: Message-ID: <5ae23371efb81_26bf9d867c42049f@build.opensuse.org> Visit https://build.opensuse.org/package/live_build_log/network:osmocom:nightly/openbsc/Debian_9.0/x86_64 Package network:osmocom:nightly/openbsc failed to build in Debian_9.0/x86_64 Check out the package for editing: osc checkout network:osmocom:nightly openbsc Last lines of build log: [ 86s] mgcp_osmux.c:490:2: error: implicit declaration of function 'osmux_xfrm_output_flush' [-Werror=implicit-function-declaration] [ 86s] osmux_xfrm_output_flush(&endp->osmux.out); [ 86s] ^~~~~~~~~~~~~~~~~~~~~~~ [ 86s] cc1: some warnings being treated as errors [ 86s] Makefile:455: recipe for target 'mgcp_osmux.o' failed [ 86s] make[4]: *** [mgcp_osmux.o] Error 1 [ 86s] make[4]: Leaving directory '/usr/src/packages/BUILD/openbsc/src/libmgcp' [ 86s] Makefile:447: recipe for target 'all-recursive' failed [ 86s] make[3]: *** [all-recursive] Error 1 [ 86s] make[3]: Leaving directory '/usr/src/packages/BUILD/openbsc/src' [ 86s] Makefile:518: recipe for target 'all-recursive' failed [ 86s] make[2]: *** [all-recursive] Error 1 [ 86s] make[2]: Leaving directory '/usr/src/packages/BUILD/openbsc' [ 86s] Makefile:427: recipe for target 'all' failed [ 86s] make[1]: *** [all] Error 2 [ 86s] make[1]: Leaving directory '/usr/src/packages/BUILD/openbsc' [ 86s] dh_auto_build: make -j1 returned exit code 2 [ 86s] debian/rules:13: recipe for target 'build' failed [ 86s] make: *** [build] Error 2 [ 86s] dpkg-buildpackage: error: debian/rules build gave error exit status 2 [ 86s] [ 86s] lamb16 failed "build openbsc_1.0.0.20180426.dsc" at Thu Apr 26 20:15:05 UTC 2018. [ 86s] [ 86s] ### VM INTERACTION START ### [ 90s] [ 81.518734] reboot: Power down [ 90s] ### VM INTERACTION END ### [ 90s] [ 90s] lamb16 failed "build openbsc_1.0.0.20180426.dsc" at Thu Apr 26 20:15:08 UTC 2018. [ 90s] -- Configure notifications at https://build.opensuse.org/user/notifications openSUSE Build Service (https://build.opensuse.org/) From admin at opensuse.org Thu Apr 26 20:20:04 2018 From: admin at opensuse.org (OBS Notification) Date: Thu, 26 Apr 2018 20:20:04 +0000 Subject: Build failure of network:osmocom:nightly/osmo-trx in Debian_9.0/aarch64 In-Reply-To: References: Message-ID: <5ae2347ee6dd8_26bf9d867c424231@build.opensuse.org> Visit https://build.opensuse.org/package/live_build_log/network:osmocom:nightly/osmo-trx/Debian_9.0/aarch64 Package network:osmocom:nightly/osmo-trx failed to build in Debian_9.0/aarch64 Check out the package for editing: osc checkout network:osmocom:nightly osmo-trx Last lines of build log: [ 930s] #include "convolve.h" [ 930s] ^ [ 930s] compilation terminated. [ 930s] Makefile:458: recipe for target 'convolve_test-convolve_test.o' failed [ 930s] make[4]: *** [convolve_test-convolve_test.o] Error 1 [ 930s] make[4]: Leaving directory '/usr/src/packages/BUILD/tests/Transceiver52M' [ 930s] Makefile:397: recipe for target 'all-recursive' failed [ 930s] make[3]: *** [all-recursive] Error 1 [ 930s] make[3]: Leaving directory '/usr/src/packages/BUILD/tests' [ 930s] Makefile:507: recipe for target 'all-recursive' failed [ 930s] make[2]: *** [all-recursive] Error 1 [ 930s] make[2]: Leaving directory '/usr/src/packages/BUILD' [ 930s] Makefile:438: recipe for target 'all' failed [ 930s] make[1]: *** [all] Error 2 [ 930s] make[1]: Leaving directory '/usr/src/packages/BUILD' [ 930s] dh_auto_build: make -j1 returned exit code 2 [ 930s] debian/rules:6: recipe for target 'build' failed [ 930s] make: *** [build] Error 2 [ 931s] dpkg-buildpackage: error: debian/rules build gave error exit status 2 [ 931s] [ 931s] obs-arm-3 failed "build osmo-trx_0.2.0.20180426.dsc" at Thu Apr 26 20:19:54 UTC 2018. [ 931s] [ 931s] ### VM INTERACTION START ### [ 934s] [ 846.407933] sysrq: SysRq : Power Off [ 934s] [ 846.447722] reboot: Power down [ 934s] ### VM INTERACTION END ### [ 934s] [ 934s] obs-arm-3 failed "build osmo-trx_0.2.0.20180426.dsc" at Thu Apr 26 20:19:58 UTC 2018. [ 934s] -- Configure notifications at https://build.opensuse.org/user/notifications openSUSE Build Service (https://build.opensuse.org/) From jenkins at lists.osmocom.org Thu Apr 26 21:56:30 2018 From: jenkins at lists.osmocom.org (jenkins at lists.osmocom.org) Date: Thu, 26 Apr 2018 21:56:30 +0000 (UTC) Subject: =?UTF-8?Q?Build_failed_in_Jenkins:_master-rtl-sdr_=C2=BB_a1=3Ddefau?= =?UTF-8?Q?lt,a2=3Ddefault,a3=3Ddefault,osmocom-master-debian9_#11?= In-Reply-To: <496564990.79.1524696080623.JavaMail.jenkins@jenkins.osmocom.org> References: <496564990.79.1524696080623.JavaMail.jenkins@jenkins.osmocom.org> Message-ID: <62753655.104.1524779790565.JavaMail.jenkins@jenkins.osmocom.org> See Changes: [steve] rtl_test: fix build on Mac OS ------------------------------------------ [...truncated 93.14 KB...] make[2]: Nothing to be done for 'dvi'. make[2]: Leaving directory ' Making dvi in src make[2]: Entering directory ' make[2]: Nothing to be done for 'dvi'. make[2]: Leaving directory ' make[2]: Entering directory ' make[2]: Nothing to be done for 'dvi-am'. make[2]: Leaving directory ' make[1]: Leaving directory ' make[1]: Entering directory ' make check-recursive make[2]: Entering directory ' Making check in include make[3]: Entering directory ' make[3]: Nothing to be done for 'check'. make[3]: Leaving directory ' Making check in src make[3]: Entering directory ' make[3]: Nothing to be done for 'check'. make[3]: Leaving directory ' make[3]: Entering directory ' make[3]: Leaving directory ' make[2]: Leaving directory ' make[1]: Leaving directory ' make[1]: Entering directory ' make install-recursive make[2]: Entering directory ' Making install in include make[3]: Entering directory ' make[4]: Entering directory ' make[4]: Nothing to be done for 'install-exec-am'. /bin/mkdir -p ' /usr/bin/install -c -m 644 ../../../include/rtl-sdr.h ../../../include/rtl-sdr_export.h ' make[4]: Leaving directory ' make[3]: Leaving directory ' Making install in src make[3]: Entering directory ' make[4]: Entering directory ' /bin/mkdir -p ' /bin/bash ../libtool --mode=install /usr/bin/install -c librtlsdr.la ' libtool: install: /usr/bin/install -c .libs/librtlsdr.so.0.0.5 libtool: install: (cd && { ln -s -f librtlsdr.so.0.0.5 librtlsdr.so.0 || { rm -f librtlsdr.so.0 && ln -s librtlsdr.so.0.0.5 librtlsdr.so.0; }; }) libtool: install: (cd && { ln -s -f librtlsdr.so.0.0.5 librtlsdr.so || { rm -f librtlsdr.so && ln -s librtlsdr.so.0.0.5 librtlsdr.so; }; }) libtool: install: /usr/bin/install -c .libs/librtlsdr.lai libtool: install: /usr/bin/install -c .libs/librtlsdr.a libtool: install: chmod 644 libtool: install: ranlib libtool: finish: PATH="/usr/local/bin:/usr/bin:/bin:/usr/games:/home/osmocom-build/bin:/sbin" ldconfig -n ---------------------------------------------------------------------- Libraries have been installed in: If you ever happen to want to link against installed libraries in a given directory, LIBDIR, you must either use libtool, and specify the full pathname of the library, or use the '-LLIBDIR' flag during linking and do at least one of the following: - add LIBDIR to the 'LD_LIBRARY_PATH' environment variable during execution - add LIBDIR to the 'LD_RUN_PATH' environment variable during linking - use the '-Wl,-rpath -Wl,LIBDIR' linker flag - have your system administrator add LIBDIR to '/etc/ld.so.conf' See any operating system documentation about shared libraries for more information, such as the ld(1) and ld.so(8) manual pages. ---------------------------------------------------------------------- /bin/mkdir -p ' /bin/bash ../libtool --mode=install /usr/bin/install -c rtl_sdr rtl_tcp rtl_test rtl_fm rtl_eeprom rtl_adsb rtl_power ' libtool: install: /usr/bin/install -c .libs/rtl_sdr libtool: install: /usr/bin/install -c .libs/rtl_tcp libtool: install: /usr/bin/install -c .libs/rtl_test libtool: install: /usr/bin/install -c .libs/rtl_fm libtool: install: /usr/bin/install -c .libs/rtl_eeprom libtool: install: /usr/bin/install -c .libs/rtl_adsb libtool: install: /usr/bin/install -c .libs/rtl_power make[4]: Nothing to be done for 'install-data-am'. make[4]: Leaving directory ' make[3]: Leaving directory ' make[3]: Entering directory ' make[4]: Entering directory ' make[4]: Nothing to be done for 'install-exec-am'. /bin/mkdir -p ' /usr/bin/install -c -m 644 ./doc/html.tar ' /bin/mkdir -p ' /usr/bin/install -c -m 644 librtlsdr.pc ' make install-data-hook make[5]: Entering directory ' cd && tar xf html.tar --strip-components 1 && rm -f html.tar make[5]: Leaving directory ' make[4]: Leaving directory ' make[3]: Leaving directory ' make[2]: Leaving directory ' make[1]: Leaving directory ' make[1]: Entering directory ' Making installcheck in include make[2]: Entering directory ' make[2]: Nothing to be done for 'installcheck'. make[2]: Leaving directory ' Making installcheck in src make[2]: Entering directory ' make[2]: Nothing to be done for 'installcheck'. make[2]: Leaving directory ' make[2]: Entering directory ' make[2]: Nothing to be done for 'installcheck-am'. make[2]: Leaving directory ' make[1]: Leaving directory ' make[1]: Entering directory ' Making uninstall in include make[2]: Entering directory ' ( cd ' && rm -f rtl-sdr.h rtl-sdr_export.h ) make[2]: Leaving directory ' Making uninstall in src make[2]: Entering directory ' ( cd ' && rm -f rtl_sdr rtl_tcp rtl_test rtl_fm rtl_eeprom rtl_adsb rtl_power ) /bin/bash ../libtool --mode=uninstall rm -f ' libtool: uninstall: rm -f make[2]: Leaving directory ' make[2]: Entering directory ' ( cd ' && rm -f html.tar ) ( cd ' && rm -f librtlsdr.pc ) make uninstall-hook make[3]: Entering directory ' cd && rm -rf make[3]: Leaving directory ' make[2]: Leaving directory ' make[1]: Leaving directory ' make[1]: Entering directory ' make[1]: Leaving directory ' make[1]: Entering directory ' make install-recursive make[2]: Entering directory ' Making install in include make[3]: Entering directory ' make[4]: Entering directory ' make[4]: Nothing to be done for 'install-exec-am'. /bin/mkdir -p '/tmp/am-dc-32271/ /usr/bin/install -c -m 644 ../../../include/rtl-sdr.h ../../../include/rtl-sdr_export.h '/tmp/am-dc-32271/ make[4]: Leaving directory ' make[3]: Leaving directory ' Making install in src make[3]: Entering directory ' make[4]: Entering directory ' /bin/mkdir -p '/tmp/am-dc-32271/ /bin/bash ../libtool --mode=install /usr/bin/install -c librtlsdr.la '/tmp/am-dc-32271/ libtool: install: /usr/bin/install -c .libs/librtlsdr.so.0.0.5 /tmp/am-dc-32271/ libtool: install: (cd /tmp/am-dc-32271/ && { ln -s -f librtlsdr.so.0.0.5 librtlsdr.so.0 || { rm -f librtlsdr.so.0 && ln -s librtlsdr.so.0.0.5 librtlsdr.so.0; }; }) libtool: install: (cd /tmp/am-dc-32271/ && { ln -s -f librtlsdr.so.0.0.5 librtlsdr.so || { rm -f librtlsdr.so && ln -s librtlsdr.so.0.0.5 librtlsdr.so; }; }) libtool: install: /usr/bin/install -c .libs/librtlsdr.lai /tmp/am-dc-32271/ libtool: install: /usr/bin/install -c .libs/librtlsdr.a /tmp/am-dc-32271/ libtool: install: chmod 644 /tmp/am-dc-32271/ libtool: install: ranlib /tmp/am-dc-32271/ libtool: warning: remember to run 'libtool --finish /bin/mkdir -p '/tmp/am-dc-32271/ /bin/bash ../libtool --mode=install /usr/bin/install -c rtl_sdr rtl_tcp rtl_test rtl_fm rtl_eeprom rtl_adsb rtl_power '/tmp/am-dc-32271/ libtool: warning: 'librtlsdr.la' has not been installed in ' libtool: install: /usr/bin/install -c .libs/rtl_sdr /tmp/am-dc-32271/ libtool: warning: 'librtlsdr.la' has not been installed in ' libtool: install: /usr/bin/install -c .libs/rtl_tcp /tmp/am-dc-32271/ libtool: warning: 'librtlsdr.la' has not been installed in ' libtool: install: /usr/bin/install -c .libs/rtl_test /tmp/am-dc-32271/ libtool: warning: 'librtlsdr.la' has not been installed in ' libtool: install: /usr/bin/install -c .libs/rtl_fm /tmp/am-dc-32271/ libtool: warning: 'librtlsdr.la' has not been installed in ' libtool: install: /usr/bin/install -c .libs/rtl_eeprom /tmp/am-dc-32271/ libtool: warning: 'librtlsdr.la' has not been installed in ' libtool: install: /usr/bin/install -c .libs/rtl_adsb /tmp/am-dc-32271/ libtool: warning: 'librtlsdr.la' has not been installed in ' libtool: install: /usr/bin/install -c .libs/rtl_power /tmp/am-dc-32271/ make[4]: Nothing to be done for 'install-data-am'. make[4]: Leaving directory ' make[3]: Leaving directory ' make[3]: Entering directory ' make[4]: Entering directory ' make[4]: Nothing to be done for 'install-exec-am'. /bin/mkdir -p '/tmp/am-dc-32271/ /usr/bin/install -c -m 644 ./doc/html.tar '/tmp/am-dc-32271/ /bin/mkdir -p '/tmp/am-dc-32271/ /usr/bin/install -c -m 644 librtlsdr.pc '/tmp/am-dc-32271/ make install-data-hook make[5]: Entering directory ' cd /tmp/am-dc-32271/ && tar xf html.tar --strip-components 1 && rm -f html.tar make[5]: Leaving directory ' make[4]: Leaving directory ' make[3]: Leaving directory ' make[2]: Leaving directory ' make[1]: Leaving directory ' make[1]: Entering directory ' Making uninstall in include make[2]: Entering directory ' ( cd '/tmp/am-dc-32271/ && rm -f rtl-sdr.h rtl-sdr_export.h ) make[2]: Leaving directory ' Making uninstall in src make[2]: Entering directory ' ( cd '/tmp/am-dc-32271/ && rm -f rtl_sdr rtl_tcp rtl_test rtl_fm rtl_eeprom rtl_adsb rtl_power ) /bin/bash ../libtool --mode=uninstall rm -f '/tmp/am-dc-32271/ libtool: uninstall: rm -f /tmp/am-dc-32271/ /tmp/am-dc-32271/ /tmp/am-dc-32271/ /tmp/am-dc-32271/ /tmp/am-dc-32271/ make[2]: Leaving directory ' make[2]: Entering directory ' ( cd '/tmp/am-dc-32271/ && rm -f html.tar ) ( cd '/tmp/am-dc-32271/ && rm -f librtlsdr.pc ) make uninstall-hook make[3]: Entering directory ' cd /tmp/am-dc-32271/ && rm -rf make[3]: Leaving directory ' make[2]: Leaving directory ' make[1]: Leaving directory ' make[1]: Entering directory ' ERROR: files left after uninstall: (check DESTDIR support) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Makefile:757: recipe for target 'distuninstallcheck' failed make[1]: *** [distuninstallcheck] Error 1 make[1]: Leaving directory ' Makefile:701: recipe for target 'distcheck' failed make: *** [distcheck] Error 1 + cat-testlogs.sh Build step 'Execute shell' marked build as failure [WARNINGS]Skipping publisher since build result is FAILURE Not sending mail to unregistered user steve at steve-m.de From jenkins at lists.osmocom.org Thu Apr 26 22:41:20 2018 From: jenkins at lists.osmocom.org (jenkins at lists.osmocom.org) Date: Thu, 26 Apr 2018 22:41:20 +0000 (UTC) Subject: =?UTF-8?Q?Build_failed_in_Jenkins:_master-rtl-sdr_=C2=BB_a1=3Ddefau?= =?UTF-8?Q?lt,a2=3Ddefault,a3=3Ddefault,osmocom-master-debian9_#12?= In-Reply-To: <62753655.104.1524779790565.JavaMail.jenkins@jenkins.osmocom.org> References: <62753655.104.1524779790565.JavaMail.jenkins@jenkins.osmocom.org> Message-ID: <118254492.106.1524782480549.JavaMail.jenkins@jenkins.osmocom.org> See ------------------------------------------ [...truncated 93.31 KB...] make[2]: Leaving directory ' Making dvi in src make[2]: Entering directory ' make[2]: Nothing to be done for 'dvi'. make[2]: Leaving directory ' make[2]: Entering directory ' make[2]: Nothing to be done for 'dvi-am'. make[2]: Leaving directory ' make[1]: Leaving directory ' make[1]: Entering directory ' make check-recursive make[2]: Entering directory ' Making check in include make[3]: Entering directory ' make[3]: Nothing to be done for 'check'. make[3]: Leaving directory ' Making check in src make[3]: Entering directory ' make[3]: Nothing to be done for 'check'. make[3]: Leaving directory ' make[3]: Entering directory ' make[3]: Nothing to be done for 'check-am'. make[3]: Leaving directory ' make[2]: Leaving directory ' make[1]: Leaving directory ' make[1]: Entering directory ' make install-recursive make[2]: Entering directory ' Making install in include make[3]: Entering directory ' make[4]: Entering directory ' make[4]: Nothing to be done for 'install-exec-am'. /bin/mkdir -p ' /usr/bin/install -c -m 644 ../../../include/rtl-sdr.h ../../../include/rtl-sdr_export.h ' make[4]: Leaving directory ' make[3]: Leaving directory ' Making install in src make[3]: Entering directory ' make[4]: Entering directory ' /bin/mkdir -p ' /bin/bash ../libtool --mode=install /usr/bin/install -c librtlsdr.la ' libtool: install: /usr/bin/install -c .libs/librtlsdr.so.0.0.5 libtool: install: (cd && { ln -s -f librtlsdr.so.0.0.5 librtlsdr.so.0 || { rm -f librtlsdr.so.0 && ln -s librtlsdr.so.0.0.5 librtlsdr.so.0; }; }) libtool: install: (cd && { ln -s -f librtlsdr.so.0.0.5 librtlsdr.so || { rm -f librtlsdr.so && ln -s librtlsdr.so.0.0.5 librtlsdr.so; }; }) libtool: install: /usr/bin/install -c .libs/librtlsdr.lai libtool: install: /usr/bin/install -c .libs/librtlsdr.a libtool: install: chmod 644 libtool: install: ranlib libtool: finish: PATH="/usr/local/bin:/usr/bin:/bin:/usr/games:/home/osmocom-build/bin:/sbin" ldconfig -n ---------------------------------------------------------------------- Libraries have been installed in: If you ever happen to want to link against installed libraries in a given directory, LIBDIR, you must either use libtool, and specify the full pathname of the library, or use the '-LLIBDIR' flag during linking and do at least one of the following: - add LIBDIR to the 'LD_LIBRARY_PATH' environment variable during execution - add LIBDIR to the 'LD_RUN_PATH' environment variable during linking - use the '-Wl,-rpath -Wl,LIBDIR' linker flag - have your system administrator add LIBDIR to '/etc/ld.so.conf' See any operating system documentation about shared libraries for more information, such as the ld(1) and ld.so(8) manual pages. ---------------------------------------------------------------------- /bin/mkdir -p ' /bin/bash ../libtool --mode=install /usr/bin/install -c rtl_sdr rtl_tcp rtl_test rtl_fm rtl_eeprom rtl_adsb rtl_power ' libtool: install: /usr/bin/install -c .libs/rtl_sdr libtool: install: /usr/bin/install -c .libs/rtl_tcp libtool: install: /usr/bin/install -c .libs/rtl_test libtool: install: /usr/bin/install -c .libs/rtl_fm libtool: install: /usr/bin/install -c .libs/rtl_eeprom libtool: install: /usr/bin/install -c .libs/rtl_adsb libtool: install: /usr/bin/install -c .libs/rtl_power make[4]: Nothing to be done for 'install-data-am'. make[4]: Leaving directory ' make[3]: Leaving directory ' make[3]: Entering directory ' make[4]: Entering directory ' make[4]: Nothing to be done for 'install-exec-am'. /bin/mkdir -p ' /usr/bin/install -c -m 644 ./doc/html.tar ' /bin/mkdir -p ' /usr/bin/install -c -m 644 librtlsdr.pc ' make install-data-hook make[5]: Entering directory ' cd && tar xf html.tar --strip-components 1 && rm -f html.tar make[5]: Leaving directory ' make[4]: Leaving directory ' make[3]: Leaving directory ' make[2]: Leaving directory ' make[1]: Leaving directory ' make[1]: Entering directory ' Making installcheck in include make[2]: Entering directory ' make[2]: Nothing to be done for 'installcheck'. make[2]: Leaving directory ' Making installcheck in src make[2]: Entering directory ' make[2]: Nothing to be done for 'installcheck'. make[2]: Leaving directory ' make[2]: Entering directory ' make[2]: Nothing to be done for 'installcheck-am'. make[2]: Leaving directory ' make[1]: Leaving directory ' make[1]: Entering directory ' Making uninstall in include make[2]: Entering directory ' ( cd ' && rm -f rtl-sdr.h rtl-sdr_export.h ) make[2]: Leaving directory ' Making uninstall in src make[2]: Entering directory ' ( cd ' && rm -f rtl_sdr rtl_tcp rtl_test rtl_fm rtl_eeprom rtl_adsb rtl_power ) /bin/bash ../libtool --mode=uninstall rm -f ' libtool: uninstall: rm -f make[2]: Leaving directory ' make[2]: Entering directory ' ( cd ' && rm -f html.tar ) ( cd ' && rm -f librtlsdr.pc ) make uninstall-hook make[3]: Entering directory ' cd && rm -rf make[3]: Leaving directory ' make[2]: Leaving directory ' make[1]: Leaving directory ' make[1]: Entering directory ' make[1]: Leaving directory ' make[1]: Entering directory ' make install-recursive make[2]: Entering directory ' Making install in include make[3]: Entering directory ' make[4]: Entering directory ' make[4]: Nothing to be done for 'install-exec-am'. /bin/mkdir -p '/tmp/am-dc-7253/ /usr/bin/install -c -m 644 ../../../include/rtl-sdr.h ../../../include/rtl-sdr_export.h '/tmp/am-dc-7253/ make[4]: Leaving directory ' make[3]: Leaving directory ' Making install in src make[3]: Entering directory ' make[4]: Entering directory ' /bin/mkdir -p '/tmp/am-dc-7253/ /bin/bash ../libtool --mode=install /usr/bin/install -c librtlsdr.la '/tmp/am-dc-7253/ libtool: install: /usr/bin/install -c .libs/librtlsdr.so.0.0.5 /tmp/am-dc-7253/ libtool: install: (cd /tmp/am-dc-7253/ && { ln -s -f librtlsdr.so.0.0.5 librtlsdr.so.0 || { rm -f librtlsdr.so.0 && ln -s librtlsdr.so.0.0.5 librtlsdr.so.0; }; }) libtool: install: (cd /tmp/am-dc-7253/ && { ln -s -f librtlsdr.so.0.0.5 librtlsdr.so || { rm -f librtlsdr.so && ln -s librtlsdr.so.0.0.5 librtlsdr.so; }; }) libtool: install: /usr/bin/install -c .libs/librtlsdr.lai /tmp/am-dc-7253/ libtool: install: /usr/bin/install -c .libs/librtlsdr.a /tmp/am-dc-7253/ libtool: install: chmod 644 /tmp/am-dc-7253/ libtool: install: ranlib /tmp/am-dc-7253/ libtool: warning: remember to run 'libtool --finish /bin/mkdir -p '/tmp/am-dc-7253/ /bin/bash ../libtool --mode=install /usr/bin/install -c rtl_sdr rtl_tcp rtl_test rtl_fm rtl_eeprom rtl_adsb rtl_power '/tmp/am-dc-7253/ libtool: warning: 'librtlsdr.la' has not been installed in ' libtool: install: /usr/bin/install -c .libs/rtl_sdr /tmp/am-dc-7253/ libtool: warning: 'librtlsdr.la' has not been installed in ' libtool: install: /usr/bin/install -c .libs/rtl_tcp /tmp/am-dc-7253/ libtool: warning: 'librtlsdr.la' has not been installed in ' libtool: install: /usr/bin/install -c .libs/rtl_test /tmp/am-dc-7253/ libtool: warning: 'librtlsdr.la' has not been installed in ' libtool: install: /usr/bin/install -c .libs/rtl_fm /tmp/am-dc-7253/ libtool: warning: 'librtlsdr.la' has not been installed in ' libtool: install: /usr/bin/install -c .libs/rtl_eeprom /tmp/am-dc-7253/ libtool: warning: 'librtlsdr.la' has not been installed in ' libtool: install: /usr/bin/install -c .libs/rtl_adsb /tmp/am-dc-7253/ libtool: warning: 'librtlsdr.la' has not been installed in ' libtool: install: /usr/bin/install -c .libs/rtl_power /tmp/am-dc-7253/ make[4]: Nothing to be done for 'install-data-am'. make[4]: Leaving directory ' make[3]: Leaving directory ' make[3]: Entering directory ' make[4]: Entering directory ' make[4]: Nothing to be done for 'install-exec-am'. /bin/mkdir -p '/tmp/am-dc-7253/ /usr/bin/install -c -m 644 ./doc/html.tar '/tmp/am-dc-7253/ /bin/mkdir -p '/tmp/am-dc-7253/ /usr/bin/install -c -m 644 librtlsdr.pc '/tmp/am-dc-7253/ make install-data-hook make[5]: Entering directory ' cd /tmp/am-dc-7253/ && tar xf html.tar --strip-components 1 && rm -f html.tar make[5]: Leaving directory ' make[4]: Leaving directory ' make[3]: Leaving directory ' make[2]: Leaving directory ' make[1]: Leaving directory ' make[1]: Entering directory ' Making uninstall in include make[2]: Entering directory ' ( cd '/tmp/am-dc-7253/ && rm -f rtl-sdr.h rtl-sdr_export.h ) make[2]: Leaving directory ' Making uninstall in src make[2]: Entering directory ' ( cd '/tmp/am-dc-7253/ && rm -f rtl_sdr rtl_tcp rtl_test rtl_fm rtl_eeprom rtl_adsb rtl_power ) /bin/bash ../libtool --mode=uninstall rm -f '/tmp/am-dc-7253/ libtool: uninstall: rm -f /tmp/am-dc-7253/ /tmp/am-dc-7253/ /tmp/am-dc-7253/ /tmp/am-dc-7253/ /tmp/am-dc-7253/ make[2]: Leaving directory ' make[2]: Entering directory ' ( cd '/tmp/am-dc-7253/ && rm -f html.tar ) ( cd '/tmp/am-dc-7253/ && rm -f librtlsdr.pc ) make uninstall-hook make[3]: Entering directory ' cd /tmp/am-dc-7253/ && rm -rf make[3]: Leaving directory ' make[2]: Leaving directory ' make[1]: Leaving directory ' make[1]: Entering directory ' ERROR: files left after uninstall: (check DESTDIR support) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Makefile:757: recipe for target 'distuninstallcheck' failed make[1]: *** [distuninstallcheck] Error 1 make[1]: Leaving directory ' Makefile:701: recipe for target 'distcheck' failed make: *** [distcheck] Error 1 + cat-testlogs.sh Build step 'Execute shell' marked build as failure [WARNINGS]Skipping publisher since build result is FAILURE Not sending mail to unregistered user steve at steve-m.de From gerrit-no-reply at lists.osmocom.org Fri Apr 27 07:43:03 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Fri, 27 Apr 2018 07:43:03 +0000 Subject: docker-playground[master]: jenkins.sh: stay in the jenkins workspace, not in /tmp In-Reply-To: References: Message-ID: Patch Set 2: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7868 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I8cf6014725ae8ba602be5f3ec31dfb8e49ff993e Gerrit-PatchSet: 2 Gerrit-Project: docker-playground Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr Gerrit-Reviewer: Harald Welte Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Fri Apr 27 09:36:33 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Fri, 27 Apr 2018 09:36:33 +0000 Subject: [PATCH] osmo-trx[master]: build: Fix make distcheck Message-ID: Review at https://gerrit.osmocom.org/7940 build: Fix make distcheck Change-Id: I1fa5e34b44331cd56408ea7ad4483dcf6443b259 --- M CommonLibs/Makefile.am M Makefile.common M Transceiver52M/Makefile.am M Transceiver52M/arch/arm/Makefile.am M Transceiver52M/arch/x86/Makefile.am M tests/CommonLibs/Makefile.am 6 files changed, 9 insertions(+), 12 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-trx refs/changes/40/7940/1 diff --git a/CommonLibs/Makefile.am b/CommonLibs/Makefile.am index 613af1e..2332acb 100644 --- a/CommonLibs/Makefile.am +++ b/CommonLibs/Makefile.am @@ -25,10 +25,6 @@ AM_CXXFLAGS = -Wall -O3 -g -lpthread $(LIBOSMOCORE_CFLAGS) $(LIBOSMOCTRL_CFLAGS) $(LIBOSMOVTY_CFLAGS) AM_CFLAGS = $(LIBOSMOCORE_CFLAGS) $(LIBOSMOCTRL_CFLAGS) $(LIBOSMOVTY_CFLAGS) -EXTRA_DIST = \ - example.config \ - README.common - noinst_LTLIBRARIES = libcommon.la libcommon_la_SOURCES = \ diff --git a/Makefile.common b/Makefile.common index 7bda7f6..1de9733 100644 --- a/Makefile.common +++ b/Makefile.common @@ -18,9 +18,6 @@ # along with this program. If not, see . # -top_srcdir = $(abs_top_srcdir) -top_builddir = $(abs_top_builddir) - COMMON_INCLUDEDIR = $(top_srcdir)/CommonLibs GSM_INCLUDEDIR = $(top_srcdir)/GSM diff --git a/Transceiver52M/Makefile.am b/Transceiver52M/Makefile.am index 3a872ef..d6dec2d 100644 --- a/Transceiver52M/Makefile.am +++ b/Transceiver52M/Makefile.am @@ -32,9 +32,7 @@ dist_rev2_DATA = std_inband.rbf dist_rev4_DATA = std_inband.rbf -EXTRA_DIST = \ - README \ - README.Talgorithm +EXTRA_DIST = README noinst_LTLIBRARIES = libtransceiver_common.la diff --git a/Transceiver52M/arch/arm/Makefile.am b/Transceiver52M/arch/arm/Makefile.am index 89ffb32..bc6da72 100644 --- a/Transceiver52M/arch/arm/Makefile.am +++ b/Transceiver52M/arch/arm/Makefile.am @@ -4,7 +4,7 @@ ARCH_FLAGS = -mfpu=neon endif -AM_CFLAGS = -Wall $(ARCH_FLAGS) -std=gnu99 -I../common +AM_CFLAGS = -Wall $(ARCH_FLAGS) -std=gnu99 -I${srcdir}/../common AM_CCASFLAGS = $(ARCH_FLAGS) noinst_LTLIBRARIES = libarch.la diff --git a/Transceiver52M/arch/x86/Makefile.am b/Transceiver52M/arch/x86/Makefile.am index f39dde5..a79b80a 100644 --- a/Transceiver52M/arch/x86/Makefile.am +++ b/Transceiver52M/arch/x86/Makefile.am @@ -4,6 +4,11 @@ noinst_LTLIBRARIES += libarch_sse_3.la noinst_LTLIBRARIES += libarch_sse_4_1.la +noinst_HEADERS = \ + convert_sse_3.h \ + convert_sse_4_1.h \ + convolve_sse_3.h + libarch_la_LIBADD = $(top_builddir)/Transceiver52M/arch/common/libarch_common.la # SSE 3 specific code diff --git a/tests/CommonLibs/Makefile.am b/tests/CommonLibs/Makefile.am index 721c9a2..4543c72 100644 --- a/tests/CommonLibs/Makefile.am +++ b/tests/CommonLibs/Makefile.am @@ -9,7 +9,8 @@ SocketsTest.ok \ TimevalTest.ok \ VectorTest.ok \ - LogTest.ok + LogTest.ok \ + LogTest.err noinst_PROGRAMS = \ BitVectorTest \ -- To view, visit https://gerrit.osmocom.org/7940 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I1fa5e34b44331cd56408ea7ad4483dcf6443b259 Gerrit-PatchSet: 1 Gerrit-Project: osmo-trx Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol From gerrit-no-reply at lists.osmocom.org Fri Apr 27 13:15:02 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Fri, 27 Apr 2018 13:15:02 +0000 Subject: [PATCH] libusrp[master]: Add debian directory In-Reply-To: References: Message-ID: Hello Jenkins Builder, I'd like you to reexamine a change. Please visit https://gerrit.osmocom.org/7936 to look at the new patch set (#4). Add debian directory Related: OS#3218 Change-Id: I5ff1d76f533b9ac68ab3f2c70ead6b66f4413b4f --- A debian/changelog A debian/compat A debian/control A debian/copyright A debian/libusrp-dev.install A debian/libusrp-firmware.install A debian/libusrp-utils.install A debian/libusrp1.install A debian/rules A debian/source/format 10 files changed, 129 insertions(+), 0 deletions(-) git pull ssh://gerrit.osmocom.org:29418/libusrp refs/changes/36/7936/4 diff --git a/debian/changelog b/debian/changelog new file mode 100644 index 0000000..5a2d5c4 --- /dev/null +++ b/debian/changelog @@ -0,0 +1,5 @@ +libusrp (0.0.1) unstable; urgency=medium + + * Initial release + + -- Pau Espin Pedrol Thu, 26 Apr 2018 17:06:51 +0000 diff --git a/debian/compat b/debian/compat new file mode 100644 index 0000000..ec63514 --- /dev/null +++ b/debian/compat @@ -0,0 +1 @@ +9 diff --git a/debian/control b/debian/control new file mode 100644 index 0000000..13e5dad --- /dev/null +++ b/debian/control @@ -0,0 +1,43 @@ +Source: libusrp +Priority: optional +Maintainer: Pau Espin Pedrol +Build-Depends: debhelper (>=9), + dh-autoreconf, + autotools-dev, + autoconf, + automake, + libtool, + pkg-config, + libusb-1.0-0-dev, + libboost-all-dev +Standards-Version: 3.9.8 +Section: libs +Homepage: https://osmocom.org/projects/osmotrx/ +Vcs-Git: git://git.osmocom.org/libusrp +Vcs-Browser: https://git.osmocom.org/libusrp + +Package: libusrp1 +Architecture: any +Depends: ${shlibs:Depends}, ${misc:Depends} +Description: gnuradio based driver library for the USRP1 SDR + Gnuradio removed libusrp as it switched to UHD support, including USRP1 + devices. However, USRP1 on UHD doesn't support timestamps, so this library + remains needed for applications that use timestamps such as osmo-trx. To find + out how this library was forked from gnuradio, check libusrp.git commit + description ec6adccbbdda1a4614089aaf52f9e1bab75494e7. + +Package: libusrp-dev +Section: libdevel +Architecture: any +Depends: libusrp1 (= ${binary:Version}), ${misc:Depends} +Description: gnuradio based driver library for the USRP1 SDR - dev files + +Package: libusrp-firmware +Architecture: any +Depends: libusrp1 (= ${binary:Version}), ${misc:Depends} +Description: gnuradio based driver library for the USRP1 SDR - firmware files + +Package: libusrp-utils +Architecture: any +Depends: libusrp1 (= ${binary:Version}), ${misc:Depends} +Description: gnuradio based driver library for the USRP1 SDR - several tools diff --git a/debian/copyright b/debian/copyright new file mode 100644 index 0000000..92b1cd8 --- /dev/null +++ b/debian/copyright @@ -0,0 +1,41 @@ +Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ +Upstream-Name: libusrp +Source: git://git.osmocom.org/libusrp + +Files: * +Copyright: 2003-2010 Free Software Foundation, Inc. +License: GPL-3.0+ + This package is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + . + This package is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + . + You should have received a copy of the GNU General Public License + along with this program. If not, see + . + On Debian systems, the complete text of the GNU General Public License + Version 3 can be found in "/usr/share/common-licenses/GPL-3". + +Files: debian/* +Copyright: 2018 by sysmocom s.f.m.c. GmbH +License: GPL-3.0+ + This package is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + . + This package is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + . + You should have received a copy of the GNU General Public License + along with this program. If not, see + . + On Debian systems, the complete text of the GNU General Public License + Version 3 can be found in "/usr/share/common-licenses/GPL-3". diff --git a/debian/libusrp-dev.install b/debian/libusrp-dev.install new file mode 100644 index 0000000..7df81cd --- /dev/null +++ b/debian/libusrp-dev.install @@ -0,0 +1,3 @@ +usr/include/* +usr/lib/*/lib*.so +usr/lib/*/pkgconfig/* diff --git a/debian/libusrp-firmware.install b/debian/libusrp-firmware.install new file mode 100644 index 0000000..741c2eb --- /dev/null +++ b/debian/libusrp-firmware.install @@ -0,0 +1 @@ +usr/share/usrp/*/*.rbf diff --git a/debian/libusrp-utils.install b/debian/libusrp-utils.install new file mode 100644 index 0000000..19487bb --- /dev/null +++ b/debian/libusrp-utils.install @@ -0,0 +1,2 @@ +usr/bin/usrper +usr/bin/usrp_cal_dc_offset diff --git a/debian/libusrp1.install b/debian/libusrp1.install new file mode 100644 index 0000000..3ddde58 --- /dev/null +++ b/debian/libusrp1.install @@ -0,0 +1 @@ +usr/lib/*/lib*.so.* diff --git a/debian/rules b/debian/rules new file mode 100755 index 0000000..f0e00c5 --- /dev/null +++ b/debian/rules @@ -0,0 +1,31 @@ +#!/usr/bin/make -f + +DEBIAN := $(shell dpkg-parsechangelog | grep ^Version: | cut -d' ' -f2) +DEBVERS := $(shell echo '$(DEBIAN)' | cut -d- -f1) +VERSION := $(shell echo '$(DEBVERS)' | sed -e 's/[+-].*//' -e 's/~//g') + +export DEB_BUILD_MAINT_OPTIONS = hardening=+all + +#export DH_VERBOSE=1 + + +%: + dh $@ --with autoreconf --fail-missing + +override_dh_strip: + dh_strip --dbg-package=libosmo-netif-dbg + +override_dh_autoreconf: + echo $(VERSION) > .tarball-version + dh_autoreconf + +override_dh_install: + sed -i "/dependency_libs/ s/'.*'/''/" `find . -name '*.la'` + dh_install + +override_dh_clean: + dh_clean + rm -f tests/package.m4 tests/testsuite .version .tarball-version + +override_dh_auto_test: + dh_auto_test || (find . -name testsuite.log -exec cat {} \; ; false) diff --git a/debian/source/format b/debian/source/format new file mode 100644 index 0000000..89ae9db --- /dev/null +++ b/debian/source/format @@ -0,0 +1 @@ +3.0 (native) -- To view, visit https://gerrit.osmocom.org/7936 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newpatchset Gerrit-Change-Id: I5ff1d76f533b9ac68ab3f2c70ead6b66f4413b4f Gerrit-PatchSet: 4 Gerrit-Project: libusrp Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Pau Espin Pedrol From gerrit-no-reply at lists.osmocom.org Fri Apr 27 13:15:04 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Fri, 27 Apr 2018 13:15:04 +0000 Subject: [PATCH] libusrp[master]: build: Fix make distcheck Message-ID: Review at https://gerrit.osmocom.org/7941 build: Fix make distcheck Change-Id: I8f71cf91d4cdbe0fdc4e451b89d95437ff800337 --- M Makefile.am M Makefile.common M configure.ac M doc/Makefile.am M firmware/Makefile.am M host/lib/Makefile.am 6 files changed, 27 insertions(+), 17 deletions(-) git pull ssh://gerrit.osmocom.org:29418/libusrp refs/changes/41/7941/1 diff --git a/Makefile.am b/Makefile.am index 03b945c..4dcbb92 100644 --- a/Makefile.am +++ b/Makefile.am @@ -28,7 +28,7 @@ usrp.iss.in \ usrp.inf -SUBDIRS = host fpga +SUBDIRS = host fpga doc firmware pkgconfigdir = $(libdir)/pkgconfig pkgconfig_DATA = \ diff --git a/Makefile.common b/Makefile.common index 5b99f08..1892fd3 100644 --- a/Makefile.common +++ b/Makefile.common @@ -96,11 +96,11 @@ # How to link in the USRP library from inside the tree USRP_INCLUDES = \ - -I$(abs_top_srcdir)/host/include \ - -I$(abs_top_builddir)/host/include \ - -I$(abs_top_srcdir)/firmware/include \ + -I$(top_srcdir)/host/include \ + -I$(top_builddir)/host/include \ + -I$(top_srcdir)/firmware/include \ $(NULL) -USRP_LA = $(abs_top_builddir)/host/lib/libusrp.la +USRP_LA = $(top_builddir)/host/lib/libusrp.la # How to link the gcell library from inside the tree (the PPU part) GCELL_INCLUDES = @gcell_INCLUDES@ @@ -111,13 +111,13 @@ GCELL_SPU_LA = @gcell_spu_LA@ # libtool aware wrapper for ppu-embedspu -GCELL_EMBEDSPU_LIBTOOL = @abs_top_srcdir@/gcell/lib/runtime/gcell-embedspu-libtool +GCELL_EMBEDSPU_LIBTOOL = @top_srcdir@/gcell/lib/runtime/gcell-embedspu-libtool # Fix for BSD make not defining $(RM). We define it now in configure.ac # using AM_PATH_PROG, but now here have to add a -f to be like GNU make RM=$(RM_PROG) -f -RUN_GUILE = GUILE_LOAD_PATH="@abs_top_srcdir@/gruel/src/scheme" @GUILE@ -e main -s +RUN_GUILE = GUILE_LOAD_PATH="@top_srcdir@/gruel/src/scheme" @GUILE@ -e main -s # Base directory for example applications exampledir = $(datadir)/gnuradio/examples diff --git a/configure.ac b/configure.ac index f923786..d55e4b2 100644 --- a/configure.ac +++ b/configure.ac @@ -62,6 +62,15 @@ AM_CONDITIONAL([PYTHON], [test x$enable_python = xyes]) AM_CONDITIONAL([GUILE], [test x$enable_guile = xyes]) +AC_ARG_ENABLE(doxygen, + [AS_HELP_STRING( + [--disable-doxygen], + [Disable generation of documentation using doxygen], + )], + [doxygen=$enableval], [doxygen="yes"]) +AC_PATH_PROG(DOXYGEN,doxygen,false) +AM_CONDITIONAL(HAVE_DOXYGEN, test $DOXYGEN != false && test "x$doxygen" = "xyes") + AC_CHECK_PROG([XMLTO],[xmlto],[yes],[]) AM_CONDITIONAL([HAS_XMLTO], [test x$XMLTO = xyes]) @@ -83,10 +92,6 @@ host/apps/Makefile firmware/Makefile firmware/include/Makefile - firmware/lib/Makefile - firmware/src/Makefile - firmware/src/common/Makefile - firmware/src/usrp2/Makefile fpga/Makefile fpga/rbf/Makefile fpga/rbf/rev2/Makefile diff --git a/doc/Makefile.am b/doc/Makefile.am index 6abbe64..b8686dc 100644 --- a/doc/Makefile.am +++ b/doc/Makefile.am @@ -27,6 +27,8 @@ man3dir = $(mandir)/man3 usrp_docdir = $(prefix)/share/doc/usrp-$(DOCVER) +if HAVE_DOXYGEN + EXTRA_DIST += \ Doxyfile.in \ ddc.eps \ @@ -49,7 +51,7 @@ dox: html/index.html html/index.html: $(MKDIR_P) html - @DOXYGEN@ + $(DOXYGEN) Doxyfile docbook-html: usrp_guide.html @@ -65,7 +67,9 @@ cp -r html $(DESTDIR)$(usrp_docdir) uninstall-local: - $(RM) -fr $(DESTDIR)$(usrp_docdir)/html + rm -rf $(DESTDIR)$(usrp_docdir)/html clean-local: - $(RM) -fr latex html man xml $(DOCBOOK_HTML_FILES) + rm -rf latex html man xml $(DOCBOOK_HTML_FILES) + +endif HAVE_DOXYGEN diff --git a/firmware/Makefile.am b/firmware/Makefile.am index 9c0da35..edef571 100644 --- a/firmware/Makefile.am +++ b/firmware/Makefile.am @@ -19,4 +19,5 @@ # Boston, MA 02110-1301, USA. # -SUBDIRS = include lib src +SUBDIRS = include +# compilation broken: SUBDIR += lib src diff --git a/host/lib/Makefile.am b/host/lib/Makefile.am index a0de559..7311943 100644 --- a/host/lib/Makefile.am +++ b/host/lib/Makefile.am @@ -30,7 +30,7 @@ $(USB_LIBS) \ $(BOOST_THREAD_LIB) \ $(BOOST_SYSTEM_LIB) \ - ../misc/libmisc.la + $(top_builddir)/host/misc/libmisc.la AM_CPPFLAGS = $(common_INCLUDES) $(BOOST_CPPFLAGS) $(WITH_INCLUDES) libusrp_la_LIBADD = $(libusrp_la_common_LIBADD) @@ -40,7 +40,7 @@ std_paths.h.in \ usrp_dbid.dat -BUILT_SOURCES += $(abs_top_builddir)/usrp/host/include/usrp/usrp_dbid.h +BUILT_SOURCES += $(top_builddir)/usrp/host/include/usrp/usrp_dbid.h BUILT_SOURCES += usrp_dbid.cc \ usrp_dbid.py -- To view, visit https://gerrit.osmocom.org/7941 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I8f71cf91d4cdbe0fdc4e451b89d95437ff800337 Gerrit-PatchSet: 1 Gerrit-Project: libusrp Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol From gerrit-no-reply at lists.osmocom.org Fri Apr 27 13:15:04 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Fri, 27 Apr 2018 13:15:04 +0000 Subject: [PATCH] libusrp[master]: Makefile.par.gen: Fix .deps directory not present during build Message-ID: Review at https://gerrit.osmocom.org/7942 Makefile.par.gen: Fix .deps directory not present during build Change-Id: I899cde47bb03ed6f00d431e7d744be6f663ae314 --- M Makefile.par.gen 1 file changed, 1 insertion(+), 0 deletions(-) git pull ssh://gerrit.osmocom.org:29418/libusrp refs/changes/42/7942/1 diff --git a/Makefile.par.gen b/Makefile.par.gen index 22eb1a0..e161d9b 100644 --- a/Makefile.par.gen +++ b/Makefile.par.gen @@ -53,6 +53,7 @@ MOSTLYCLEANFILES += stamp-sources-generate stamp-sources-generate: $(gen_sources_deps) + mkdir -p $(DEPDIR) @rm -f $(DEPDIR)/stamp-sources-generate-tmp @touch $(DEPDIR)/stamp-sources-generate-tmp $(par_gen_command) -- To view, visit https://gerrit.osmocom.org/7942 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I899cde47bb03ed6f00d431e7d744be6f663ae314 Gerrit-PatchSet: 1 Gerrit-Project: libusrp Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol From gerrit-no-reply at lists.osmocom.org Fri Apr 27 13:16:50 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Fri, 27 Apr 2018 13:16:50 +0000 Subject: libusrp[master]: Add debian directory In-Reply-To: References: Message-ID: Patch Set 4: Code-Review-1 I still have an issue with OBS building only a .la file instead of a .so file. The .so file is built correctly in my PC, so no idea what's the difference. Any hint is welcome: https://build.opensuse.org/package/live_build_log/home:pespin:branches:network:osmocom:nightly/libusrp/xUbuntu_17.04/i586 -- To view, visit https://gerrit.osmocom.org/7936 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I5ff1d76f533b9ac68ab3f2c70ead6b66f4413b4f Gerrit-PatchSet: 4 Gerrit-Project: libusrp Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Pau Espin Pedrol Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Fri Apr 27 13:17:59 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Fri, 27 Apr 2018 13:17:59 +0000 Subject: osmo-ci[master]: scripts: osmocom-*-packages.sh: Build libusrp In-Reply-To: References: Message-ID: Patch Set 1: Code-Review-1 Don't merge yet, depends on https://gerrit.osmocom.org/#/c/7936/4 working (generating .so instead of .la) and being merged. -- To view, visit https://gerrit.osmocom.org/7937 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Ic742db854b8a3aba6ddc85ffb41fc6f4697c572d Gerrit-PatchSet: 1 Gerrit-Project: osmo-ci Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Pau Espin Pedrol Gerrit-HasComments: No From jenkins at lists.osmocom.org Fri Apr 27 15:10:07 2018 From: jenkins at lists.osmocom.org (jenkins at lists.osmocom.org) Date: Fri, 27 Apr 2018 15:10:07 +0000 (UTC) Subject: =?UTF-8?Q?Build_failed_in_Jenkins:_master-asn1c_=C2=BB_a1=3Ddefault?= =?UTF-8?Q?,a2=3Ddefault,a3=3Ddefault,osmocom-master-debian9_#105?= In-Reply-To: <823047625.99.1524755407019.JavaMail.jenkins@jenkins.osmocom.org> References: <823047625.99.1524755407019.JavaMail.jenkins@jenkins.osmocom.org> Message-ID: <1286894323.119.1524841807155.JavaMail.jenkins@jenkins.osmocom.org> See ------------------------------------------ [...truncated 3.81 KB...] checking target system type... x86_64-unknown-linux-gnu checking for a BSD-compatible install... /usr/bin/install -c checking whether build environment is sane... yes checking for gawk... gawk checking whether make sets $(MAKE)... yes checking whether to enable maintainer-specific portions of Makefiles... no checking for style of include used by make... GNU checking for gcc... gcc checking for C compiler default output file name... a.out checking whether the C compiler works... yes checking whether we are cross compiling... no checking for suffix of executables... checking for suffix of object files... o checking whether we are using the GNU C compiler... yes checking whether gcc accepts -g... yes checking for gcc option to accept ISO C89... none needed checking dependency style of gcc... gcc3 checking for a sed that does not truncate output... /bin/sed checking for grep that handles long lines and -e... /bin/grep checking for egrep... /bin/grep -E checking for ld used by gcc... /usr/bin/ld checking if the linker (/usr/bin/ld) is GNU ld... yes checking for /usr/bin/ld option to reload object files... -r checking for BSD-compatible nm... /usr/bin/nm -B checking whether ln -s works... yes checking how to recognise dependent libraries... pass_all checking how to run the C preprocessor... gcc -E checking for ANSI C header files... yes checking for sys/types.h... yes checking for sys/stat.h... yes checking for stdlib.h... yes checking for string.h... yes checking for memory.h... yes checking for strings.h... yes checking for inttypes.h... yes checking for stdint.h... yes checking for unistd.h... yes checking dlfcn.h usability... yes checking dlfcn.h presence... yes checking for dlfcn.h... yes checking for g++... g++ checking whether we are using the GNU C++ compiler... yes checking whether g++ accepts -g... yes checking dependency style of g++... gcc3 checking how to run the C++ preprocessor... g++ -E checking for g77... no checking for f77... no checking for xlf... no checking for frt... no checking for pgf77... no checking for cf77... no checking for fort77... no checking for fl32... no checking for af77... no checking for f90... no checking for xlf90... no checking for pgf90... no checking for pghpf... no checking for epcf90... no checking for gfortran... no checking for g95... no checking for f95... no checking for fort... no checking for xlf95... no checking for ifort... no checking for ifc... no checking for efc... no checking for pgf95... no checking for lf95... no checking for ftn... no checking whether we are using the GNU Fortran 77 compiler... no checking whether accepts -g... no checking the maximum length of command line arguments... 32768 checking command to parse /usr/bin/nm -B output from gcc object... ok checking for objdir... .libs checking for ar... ar checking for ranlib... ranlib checking for strip... strip checking if gcc supports -fno-rtti -fno-exceptions... no checking for gcc option to produce PIC... -fPIC checking if gcc PIC flag -fPIC works... yes checking if gcc static flag -static works... yes checking if gcc supports -c -o file.o... yes checking whether the gcc linker (/usr/bin/ld -m elf_x86_64) supports shared libraries... yes checking whether -lc should be explicitly linked in... no checking dynamic linker characteristics... GNU/Linux ld.so checking how to hardcode library paths into programs... immediate checking whether stripping libraries is possible... yes checking if libtool supports shared libraries... yes checking whether to build shared libraries... yes checking whether to build static libraries... yes configure: creating libtool appending configuration tag "CXX" to libtool checking for ld used by g++... /usr/bin/ld -m elf_x86_64 checking if the linker (/usr/bin/ld -m elf_x86_64) is GNU ld... yes checking whether the g++ linker (/usr/bin/ld -m elf_x86_64) supports shared libraries... yes checking for g++ option to produce PIC... -fPIC checking if g++ PIC flag -fPIC works... yes checking if g++ static flag -static works... yes checking if g++ supports -c -o file.o... yes checking whether the g++ linker (/usr/bin/ld -m elf_x86_64) supports shared libraries... yes checking dynamic linker characteristics... GNU/Linux ld.so checking how to hardcode library paths into programs... immediate appending configuration tag "F77" to libtool checking for autoconf... /usr/bin/autoconf checking for autoheader... /usr/bin/autoheader checking for gcc... (cached) gcc checking whether we are using the GNU C compiler... (cached) yes checking whether gcc accepts -g... (cached) yes checking for gcc option to accept ISO C89... (cached) none needed checking dependency style of gcc... (cached) gcc3 checking how to run the C preprocessor... gcc -E checking for a BSD-compatible install... /usr/bin/install -c checking whether ln -s works... yes checking whether make sets $(MAKE)... (cached) yes checking for bison... bison -y checking for flex... flex checking for yywrap in -lfl... yes checking lex output file root... lex.yy checking whether yytext is a pointer... yes checking for ar... /usr/bin/ar checking for ANSI C header files... (cached) yes checking sys/param.h usability... yes checking sys/param.h presence... yes checking for sys/param.h... yes checking whether byte ordering is bigendian... no checking for off_t... yes checking for size_t... yes checking whether struct tm is in sys/time.h or time.h... time.h checking for intmax_t... yes checking for library containing getopt... none required checking for strtoimax... yes checking for strtoll... yes checking for mergesort... no checking for mkstemps... yes configure: creating ./config.status config.status: creating skeletons/standard-modules/Makefile config.status: creating skeletons/tests/Makefile config.status: creating libasn1compiler/Makefile config.status: creating libasn1parser/Makefile config.status: creating libasn1print/Makefile config.status: creating asn1c/webcgi/Makefile config.status: creating asn1c/tests/Makefile config.status: creating libasn1fix/Makefile config.status: creating skeletons/Makefile config.status: creating examples/Makefile config.status: creating tests/Makefile config.status: creating asn1c/Makefile config.status: creating doc/Makefile config.status: creating asn1c.spec config.status: creating Makefile config.status: creating config.h config.status: executing depfiles commands + make -j 8 make all-recursive make[1]: Entering directory ' Making all in libasn1parser make[2]: Entering directory ' if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1parser.lo -MD -MP -MF ".deps/asn1parser.Tpo" -c -o asn1parser.lo asn1parser.c; \ then mv -f ".deps/asn1parser.Tpo" ".deps/asn1parser.Plo"; else rm -f ".deps/asn1parser.Tpo"; exit 1; fi bison -y -p asn1p_ -d asn1p_y.y flex -s -p -Cem -Pasn1p_ -olex.yy.c asn1p_l.l if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_module.lo -MD -MP -MF ".deps/asn1p_module.Tpo" -c -o asn1p_module.lo asn1p_module.c; \ then mv -f ".deps/asn1p_module.Tpo" ".deps/asn1p_module.Plo"; else rm -f ".deps/asn1p_module.Tpo"; exit 1; fi if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_oid.lo -MD -MP -MF ".deps/asn1p_oid.Tpo" -c -o asn1p_oid.lo asn1p_oid.c; \ then mv -f ".deps/asn1p_oid.Tpo" ".deps/asn1p_oid.Plo"; else rm -f ".deps/asn1p_oid.Tpo"; exit 1; fi if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_value.lo -MD -MP -MF ".deps/asn1p_value.Tpo" -c -o asn1p_value.lo asn1p_value.c; \ then mv -f ".deps/asn1p_value.Tpo" ".deps/asn1p_value.Plo"; else rm -f ".deps/asn1p_value.Tpo"; exit 1; fi if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_expr.lo -MD -MP -MF ".deps/asn1p_expr.Tpo" -c -o asn1p_expr.lo asn1p_expr.c; \ then mv -f ".deps/asn1p_expr.Tpo" ".deps/asn1p_expr.Plo"; else rm -f ".deps/asn1p_expr.Tpo"; exit 1; fi if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_xports.lo -MD -MP -MF ".deps/asn1p_xports.Tpo" -c -o asn1p_xports.lo asn1p_xports.c; \ then mv -f ".deps/asn1p_xports.Tpo" ".deps/asn1p_xports.Plo"; else rm -f ".deps/asn1p_xports.Tpo"; exit 1; fi %option yylineno entails a performance penalty ONLY on rules that can match newline characters REJECT entails a large performance penalty asn1p_y.y: warning: 2 shift/reduce conflicts [-Wconflicts-sr] sed '/^#/ s|lex.yy\.c|asn1p_l.c|' lex.yy.c >asn1p_l.c rm -f lex.yy.c if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_constr.lo -MD -MP -MF ".deps/asn1p_constr.Tpo" -c -o asn1p_constr.lo asn1p_constr.c; \ then mv -f ".deps/asn1p_constr.Tpo" ".deps/asn1p_constr.Plo"; else rm -f ".deps/asn1p_constr.Tpo"; exit 1; fi mkdir .libs mkdir .libs mkdir: cannot create directory '.libs': File exists gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1parser.lo -MD -MP -MF .deps/asn1parser.Tpo -c asn1parser.c -fPIC -DPIC -o .libs/asn1parser.o gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_value.lo -MD -MP -MF .deps/asn1p_value.Tpo -c asn1p_value.c -fPIC -DPIC -o .libs/asn1p_value.o gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_module.lo -MD -MP -MF .deps/asn1p_module.Tpo -c asn1p_module.c -fPIC -DPIC -o .libs/asn1p_module.o gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_oid.lo -MD -MP -MF .deps/asn1p_oid.Tpo -c asn1p_oid.c -fPIC -DPIC -o .libs/asn1p_oid.o gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_expr.lo -MD -MP -MF .deps/asn1p_expr.Tpo -c asn1p_expr.c -fPIC -DPIC -o .libs/asn1p_expr.o gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_xports.lo -MD -MP -MF .deps/asn1p_xports.Tpo -c asn1p_xports.c -fPIC -DPIC -o .libs/asn1p_xports.o gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_xports.lo -MD -MP -MF .deps/asn1p_xports.Tpo -c asn1p_xports.c -o asn1p_xports.o >/dev/null 2>&1 gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_constr.lo -MD -MP -MF .deps/asn1p_constr.Tpo -c asn1p_constr.c -fPIC -DPIC -o .libs/asn1p_constr.o gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_module.lo -MD -MP -MF .deps/asn1p_module.Tpo -c asn1p_module.c -o asn1p_module.o >/dev/null 2>&1 gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1parser.lo -MD -MP -MF .deps/asn1parser.Tpo -c asn1parser.c -o asn1parser.o >/dev/null 2>&1 gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_oid.lo -MD -MP -MF .deps/asn1p_oid.Tpo -c asn1p_oid.c -o asn1p_oid.o >/dev/null 2>&1 gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_value.lo -MD -MP -MF .deps/asn1p_value.Tpo -c asn1p_value.c -o asn1p_value.o >/dev/null 2>&1 if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_param.lo -MD -MP -MF ".deps/asn1p_param.Tpo" -c -o asn1p_param.lo asn1p_param.c; \ then mv -f ".deps/asn1p_param.Tpo" ".deps/asn1p_param.Plo"; else rm -f ".deps/asn1p_param.Tpo"; exit 1; fi if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_class.lo -MD -MP -MF ".deps/asn1p_class.Tpo" -c -o asn1p_class.lo asn1p_class.c; \ then mv -f ".deps/asn1p_class.Tpo" ".deps/asn1p_class.Plo"; else rm -f ".deps/asn1p_class.Tpo"; exit 1; fi gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_expr.lo -MD -MP -MF .deps/asn1p_expr.Tpo -c asn1p_expr.c -o asn1p_expr.o >/dev/null 2>&1 gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_constr.lo -MD -MP -MF .deps/asn1p_constr.Tpo -c asn1p_constr.c -o asn1p_constr.o >/dev/null 2>&1 if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_ref.lo -MD -MP -MF ".deps/asn1p_ref.Tpo" -c -o asn1p_ref.lo asn1p_ref.c; \ then mv -f ".deps/asn1p_ref.Tpo" ".deps/asn1p_ref.Plo"; else rm -f ".deps/asn1p_ref.Tpo"; exit 1; fi if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_l.lo -MD -MP -MF ".deps/asn1p_l.Tpo" -c -o asn1p_l.lo asn1p_l.c; \ then mv -f ".deps/asn1p_l.Tpo" ".deps/asn1p_l.Plo"; else rm -f ".deps/asn1p_l.Tpo"; exit 1; fi gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_param.lo -MD -MP -MF .deps/asn1p_param.Tpo -c asn1p_param.c -fPIC -DPIC -o .libs/asn1p_param.o gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_class.lo -MD -MP -MF .deps/asn1p_class.Tpo -c asn1p_class.c -fPIC -DPIC -o .libs/asn1p_class.o gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_ref.lo -MD -MP -MF .deps/asn1p_ref.Tpo -c asn1p_ref.c -fPIC -DPIC -o .libs/asn1p_ref.o gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_l.lo -MD -MP -MF .deps/asn1p_l.Tpo -c asn1p_l.c -fPIC -DPIC -o .libs/asn1p_l.o if test -f y.tab.h; then \ to=`echo "asn1p_y_H" | sed \ -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/' \ -e 's/[^ABCDEFGHIJKLMNOPQRSTUVWXYZ]/_/g'`; \ sed -e "/^#/!b" -e "s/Y_TAB_H/$to/g" -e "s|y\.tab\.h|asn1p_y.h|" \ y.tab.h >asn1p_y.ht; \ rm -f y.tab.h; \ if cmp -s asn1p_y.ht asn1p_y.h; then \ rm -f asn1p_y.ht ;\ else \ mv asn1p_y.ht asn1p_y.h; \ fi; \ fi if test -f y.output; then \ mv y.output asn1p_y.output; \ fi gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_param.lo -MD -MP -MF .deps/asn1p_param.Tpo -c asn1p_param.c -o asn1p_param.o >/dev/null 2>&1 sed '/^#/ s|y\.tab\.c|asn1p_y.c|' y.tab.c >asn1p_y.ct && mv asn1p_y.ct asn1p_y.c rm -f y.tab.c if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_y.lo -MD -MP -MF ".deps/asn1p_y.Tpo" -c -o asn1p_y.lo asn1p_y.c; \ then mv -f ".deps/asn1p_y.Tpo" ".deps/asn1p_y.Plo"; else rm -f ".deps/asn1p_y.Tpo"; exit 1; fi gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_class.lo -MD -MP -MF .deps/asn1p_class.Tpo -c asn1p_class.c -o asn1p_class.o >/dev/null 2>&1 gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_ref.lo -MD -MP -MF .deps/asn1p_ref.Tpo -c asn1p_ref.c -o asn1p_ref.o >/dev/null 2>&1 gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_y.lo -MD -MP -MF .deps/asn1p_y.Tpo -c asn1p_y.c -fPIC -DPIC -o .libs/asn1p_y.o asn1p_y.y: In function 'asn1p_parse': asn1p_y.y:357:13: error: 'param' undeclared (first use in this function) *(void **)param = $1; ^~~~~ asn1p_y.y:357:13: note: each undeclared identifier is reported only once for each function it appears in Makefile:299: recipe for target 'asn1p_y.lo' failed make[2]: *** [asn1p_y.lo] Error 1 make[2]: *** Waiting for unfinished jobs.... gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_l.lo -MD -MP -MF .deps/asn1p_l.Tpo -c asn1p_l.c -o asn1p_l.o >/dev/null 2>&1 make[2]: Leaving directory ' Makefile:302: recipe for target 'all-recursive' failed make[1]: *** [all-recursive] Error 1 make[1]: Leaving directory ' Makefile:212: recipe for target 'all' failed make: *** [all] Error 2 Build step 'Execute shell' marked build as failure [WARNINGS] Skipping publisher since build result is FAILURE From gerrit-no-reply at lists.osmocom.org Fri Apr 27 17:14:14 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Fri, 27 Apr 2018 17:14:14 +0000 Subject: libusrp[master]: build: Fix make distcheck In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7941 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I8f71cf91d4cdbe0fdc4e451b89d95437ff800337 Gerrit-PatchSet: 1 Gerrit-Project: libusrp Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Fri Apr 27 17:14:28 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Fri, 27 Apr 2018 17:14:28 +0000 Subject: libusrp[master]: Makefile.par.gen: Fix .deps directory not present during build In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7942 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I899cde47bb03ed6f00d431e7d744be6f663ae314 Gerrit-PatchSet: 1 Gerrit-Project: libusrp Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Fri Apr 27 17:14:32 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Fri, 27 Apr 2018 17:14:32 +0000 Subject: [MERGED] libusrp[master]: Makefile.par.gen: Fix .deps directory not present during build In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: Makefile.par.gen: Fix .deps directory not present during build ...................................................................... Makefile.par.gen: Fix .deps directory not present during build Change-Id: I899cde47bb03ed6f00d431e7d744be6f663ae314 --- M Makefile.par.gen 1 file changed, 1 insertion(+), 0 deletions(-) Approvals: Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/Makefile.par.gen b/Makefile.par.gen index 22eb1a0..e161d9b 100644 --- a/Makefile.par.gen +++ b/Makefile.par.gen @@ -53,6 +53,7 @@ MOSTLYCLEANFILES += stamp-sources-generate stamp-sources-generate: $(gen_sources_deps) + mkdir -p $(DEPDIR) @rm -f $(DEPDIR)/stamp-sources-generate-tmp @touch $(DEPDIR)/stamp-sources-generate-tmp $(par_gen_command) -- To view, visit https://gerrit.osmocom.org/7942 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: I899cde47bb03ed6f00d431e7d744be6f663ae314 Gerrit-PatchSet: 1 Gerrit-Project: libusrp Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder From gerrit-no-reply at lists.osmocom.org Fri Apr 27 17:14:32 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Fri, 27 Apr 2018 17:14:32 +0000 Subject: [MERGED] libusrp[master]: build: Fix make distcheck In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: build: Fix make distcheck ...................................................................... build: Fix make distcheck Change-Id: I8f71cf91d4cdbe0fdc4e451b89d95437ff800337 --- M Makefile.am M Makefile.common M configure.ac M doc/Makefile.am M firmware/Makefile.am M host/lib/Makefile.am 6 files changed, 27 insertions(+), 17 deletions(-) Approvals: Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/Makefile.am b/Makefile.am index 03b945c..4dcbb92 100644 --- a/Makefile.am +++ b/Makefile.am @@ -28,7 +28,7 @@ usrp.iss.in \ usrp.inf -SUBDIRS = host fpga +SUBDIRS = host fpga doc firmware pkgconfigdir = $(libdir)/pkgconfig pkgconfig_DATA = \ diff --git a/Makefile.common b/Makefile.common index 5b99f08..1892fd3 100644 --- a/Makefile.common +++ b/Makefile.common @@ -96,11 +96,11 @@ # How to link in the USRP library from inside the tree USRP_INCLUDES = \ - -I$(abs_top_srcdir)/host/include \ - -I$(abs_top_builddir)/host/include \ - -I$(abs_top_srcdir)/firmware/include \ + -I$(top_srcdir)/host/include \ + -I$(top_builddir)/host/include \ + -I$(top_srcdir)/firmware/include \ $(NULL) -USRP_LA = $(abs_top_builddir)/host/lib/libusrp.la +USRP_LA = $(top_builddir)/host/lib/libusrp.la # How to link the gcell library from inside the tree (the PPU part) GCELL_INCLUDES = @gcell_INCLUDES@ @@ -111,13 +111,13 @@ GCELL_SPU_LA = @gcell_spu_LA@ # libtool aware wrapper for ppu-embedspu -GCELL_EMBEDSPU_LIBTOOL = @abs_top_srcdir@/gcell/lib/runtime/gcell-embedspu-libtool +GCELL_EMBEDSPU_LIBTOOL = @top_srcdir@/gcell/lib/runtime/gcell-embedspu-libtool # Fix for BSD make not defining $(RM). We define it now in configure.ac # using AM_PATH_PROG, but now here have to add a -f to be like GNU make RM=$(RM_PROG) -f -RUN_GUILE = GUILE_LOAD_PATH="@abs_top_srcdir@/gruel/src/scheme" @GUILE@ -e main -s +RUN_GUILE = GUILE_LOAD_PATH="@top_srcdir@/gruel/src/scheme" @GUILE@ -e main -s # Base directory for example applications exampledir = $(datadir)/gnuradio/examples diff --git a/configure.ac b/configure.ac index f923786..d55e4b2 100644 --- a/configure.ac +++ b/configure.ac @@ -62,6 +62,15 @@ AM_CONDITIONAL([PYTHON], [test x$enable_python = xyes]) AM_CONDITIONAL([GUILE], [test x$enable_guile = xyes]) +AC_ARG_ENABLE(doxygen, + [AS_HELP_STRING( + [--disable-doxygen], + [Disable generation of documentation using doxygen], + )], + [doxygen=$enableval], [doxygen="yes"]) +AC_PATH_PROG(DOXYGEN,doxygen,false) +AM_CONDITIONAL(HAVE_DOXYGEN, test $DOXYGEN != false && test "x$doxygen" = "xyes") + AC_CHECK_PROG([XMLTO],[xmlto],[yes],[]) AM_CONDITIONAL([HAS_XMLTO], [test x$XMLTO = xyes]) @@ -83,10 +92,6 @@ host/apps/Makefile firmware/Makefile firmware/include/Makefile - firmware/lib/Makefile - firmware/src/Makefile - firmware/src/common/Makefile - firmware/src/usrp2/Makefile fpga/Makefile fpga/rbf/Makefile fpga/rbf/rev2/Makefile diff --git a/doc/Makefile.am b/doc/Makefile.am index 6abbe64..b8686dc 100644 --- a/doc/Makefile.am +++ b/doc/Makefile.am @@ -27,6 +27,8 @@ man3dir = $(mandir)/man3 usrp_docdir = $(prefix)/share/doc/usrp-$(DOCVER) +if HAVE_DOXYGEN + EXTRA_DIST += \ Doxyfile.in \ ddc.eps \ @@ -49,7 +51,7 @@ dox: html/index.html html/index.html: $(MKDIR_P) html - @DOXYGEN@ + $(DOXYGEN) Doxyfile docbook-html: usrp_guide.html @@ -65,7 +67,9 @@ cp -r html $(DESTDIR)$(usrp_docdir) uninstall-local: - $(RM) -fr $(DESTDIR)$(usrp_docdir)/html + rm -rf $(DESTDIR)$(usrp_docdir)/html clean-local: - $(RM) -fr latex html man xml $(DOCBOOK_HTML_FILES) + rm -rf latex html man xml $(DOCBOOK_HTML_FILES) + +endif HAVE_DOXYGEN diff --git a/firmware/Makefile.am b/firmware/Makefile.am index 9c0da35..edef571 100644 --- a/firmware/Makefile.am +++ b/firmware/Makefile.am @@ -19,4 +19,5 @@ # Boston, MA 02110-1301, USA. # -SUBDIRS = include lib src +SUBDIRS = include +# compilation broken: SUBDIR += lib src diff --git a/host/lib/Makefile.am b/host/lib/Makefile.am index a0de559..7311943 100644 --- a/host/lib/Makefile.am +++ b/host/lib/Makefile.am @@ -30,7 +30,7 @@ $(USB_LIBS) \ $(BOOST_THREAD_LIB) \ $(BOOST_SYSTEM_LIB) \ - ../misc/libmisc.la + $(top_builddir)/host/misc/libmisc.la AM_CPPFLAGS = $(common_INCLUDES) $(BOOST_CPPFLAGS) $(WITH_INCLUDES) libusrp_la_LIBADD = $(libusrp_la_common_LIBADD) @@ -40,7 +40,7 @@ std_paths.h.in \ usrp_dbid.dat -BUILT_SOURCES += $(abs_top_builddir)/usrp/host/include/usrp/usrp_dbid.h +BUILT_SOURCES += $(top_builddir)/usrp/host/include/usrp/usrp_dbid.h BUILT_SOURCES += usrp_dbid.cc \ usrp_dbid.py -- To view, visit https://gerrit.osmocom.org/7941 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: I8f71cf91d4cdbe0fdc4e451b89d95437ff800337 Gerrit-PatchSet: 1 Gerrit-Project: libusrp Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder From gerrit-no-reply at lists.osmocom.org Fri Apr 27 17:15:25 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Fri, 27 Apr 2018 17:15:25 +0000 Subject: osmo-trx[master]: build: Fix make distcheck In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7940 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I1fa5e34b44331cd56408ea7ad4483dcf6443b259 Gerrit-PatchSet: 1 Gerrit-Project: osmo-trx Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Fri Apr 27 17:15:29 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Fri, 27 Apr 2018 17:15:29 +0000 Subject: [MERGED] osmo-trx[master]: build: Fix make distcheck In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: build: Fix make distcheck ...................................................................... build: Fix make distcheck Change-Id: I1fa5e34b44331cd56408ea7ad4483dcf6443b259 --- M CommonLibs/Makefile.am M Makefile.common M Transceiver52M/Makefile.am M Transceiver52M/arch/arm/Makefile.am M Transceiver52M/arch/x86/Makefile.am M tests/CommonLibs/Makefile.am 6 files changed, 9 insertions(+), 12 deletions(-) Approvals: Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/CommonLibs/Makefile.am b/CommonLibs/Makefile.am index 613af1e..2332acb 100644 --- a/CommonLibs/Makefile.am +++ b/CommonLibs/Makefile.am @@ -25,10 +25,6 @@ AM_CXXFLAGS = -Wall -O3 -g -lpthread $(LIBOSMOCORE_CFLAGS) $(LIBOSMOCTRL_CFLAGS) $(LIBOSMOVTY_CFLAGS) AM_CFLAGS = $(LIBOSMOCORE_CFLAGS) $(LIBOSMOCTRL_CFLAGS) $(LIBOSMOVTY_CFLAGS) -EXTRA_DIST = \ - example.config \ - README.common - noinst_LTLIBRARIES = libcommon.la libcommon_la_SOURCES = \ diff --git a/Makefile.common b/Makefile.common index 7bda7f6..1de9733 100644 --- a/Makefile.common +++ b/Makefile.common @@ -18,9 +18,6 @@ # along with this program. If not, see . # -top_srcdir = $(abs_top_srcdir) -top_builddir = $(abs_top_builddir) - COMMON_INCLUDEDIR = $(top_srcdir)/CommonLibs GSM_INCLUDEDIR = $(top_srcdir)/GSM diff --git a/Transceiver52M/Makefile.am b/Transceiver52M/Makefile.am index 3a872ef..d6dec2d 100644 --- a/Transceiver52M/Makefile.am +++ b/Transceiver52M/Makefile.am @@ -32,9 +32,7 @@ dist_rev2_DATA = std_inband.rbf dist_rev4_DATA = std_inband.rbf -EXTRA_DIST = \ - README \ - README.Talgorithm +EXTRA_DIST = README noinst_LTLIBRARIES = libtransceiver_common.la diff --git a/Transceiver52M/arch/arm/Makefile.am b/Transceiver52M/arch/arm/Makefile.am index 89ffb32..bc6da72 100644 --- a/Transceiver52M/arch/arm/Makefile.am +++ b/Transceiver52M/arch/arm/Makefile.am @@ -4,7 +4,7 @@ ARCH_FLAGS = -mfpu=neon endif -AM_CFLAGS = -Wall $(ARCH_FLAGS) -std=gnu99 -I../common +AM_CFLAGS = -Wall $(ARCH_FLAGS) -std=gnu99 -I${srcdir}/../common AM_CCASFLAGS = $(ARCH_FLAGS) noinst_LTLIBRARIES = libarch.la diff --git a/Transceiver52M/arch/x86/Makefile.am b/Transceiver52M/arch/x86/Makefile.am index f39dde5..a79b80a 100644 --- a/Transceiver52M/arch/x86/Makefile.am +++ b/Transceiver52M/arch/x86/Makefile.am @@ -4,6 +4,11 @@ noinst_LTLIBRARIES += libarch_sse_3.la noinst_LTLIBRARIES += libarch_sse_4_1.la +noinst_HEADERS = \ + convert_sse_3.h \ + convert_sse_4_1.h \ + convolve_sse_3.h + libarch_la_LIBADD = $(top_builddir)/Transceiver52M/arch/common/libarch_common.la # SSE 3 specific code diff --git a/tests/CommonLibs/Makefile.am b/tests/CommonLibs/Makefile.am index 721c9a2..4543c72 100644 --- a/tests/CommonLibs/Makefile.am +++ b/tests/CommonLibs/Makefile.am @@ -9,7 +9,8 @@ SocketsTest.ok \ TimevalTest.ok \ VectorTest.ok \ - LogTest.ok + LogTest.ok \ + LogTest.err noinst_PROGRAMS = \ BitVectorTest \ -- To view, visit https://gerrit.osmocom.org/7940 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: I1fa5e34b44331cd56408ea7ad4483dcf6443b259 Gerrit-PatchSet: 1 Gerrit-Project: osmo-trx Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder From admin at opensuse.org Fri Apr 27 19:57:09 2018 From: admin at opensuse.org (OBS Notification) Date: Fri, 27 Apr 2018 19:57:09 +0000 Subject: Build failure of network:osmocom:nightly/osmo-trx in Debian_8.0/i586 In-Reply-To: References: Message-ID: <5ae380a986b24_2a6a12626801936fa@build.opensuse.org> Visit https://build.opensuse.org/package/live_build_log/network:osmocom:nightly/osmo-trx/Debian_8.0/i586 Package network:osmocom:nightly/osmo-trx failed to build in Debian_8.0/i586 Check out the package for editing: osc checkout network:osmocom:nightly osmo-trx Last lines of build log: [ 191s] make[4]: Entering directory '/usr/src/packages/BUILD/tests' [ 191s] make[4]: Nothing to be done for 'install-exec-am'. [ 191s] make[4]: Nothing to be done for 'install-data-am'. [ 191s] make[4]: Leaving directory '/usr/src/packages/BUILD/tests' [ 191s] make[3]: Leaving directory '/usr/src/packages/BUILD/tests' [ 191s] make[2]: Leaving directory '/usr/src/packages/BUILD/tests' [ 191s] make[2]: Entering directory '/usr/src/packages/BUILD' [ 191s] make[3]: Entering directory '/usr/src/packages/BUILD' [ 191s] make[3]: Nothing to be done for 'install-exec-am'. [ 191s] make[3]: Nothing to be done for 'install-data-am'. [ 191s] make[3]: Leaving directory '/usr/src/packages/BUILD' [ 191s] make[2]: Leaving directory '/usr/src/packages/BUILD' [ 191s] make[1]: Leaving directory '/usr/src/packages/BUILD' [ 191s] dh_install [ 191s] cp: cannot stat 'debian/tmp//usr/bin/osmo-trx-usrp1': No such file or directory [ 191s] dh_install: cp -a debian/tmp//usr/bin/osmo-trx-usrp1 debian/osmo-trx-usrp1///usr/bin/ returned exit code 1 [ 191s] debian/rules:6: recipe for target 'binary' failed [ 191s] make: *** [binary] Error 2 [ 191s] dpkg-buildpackage: error: fakeroot debian/rules binary gave error exit status 2 [ 191s] [ 191s] lamb01 failed "build osmo-trx_0.2.0.20180427.dsc" at Fri Apr 27 19:57:03 UTC 2018. [ 191s] [ 191s] ### VM INTERACTION START ### [ 192s] Powering off. [ 192s] [ 184.705068] reboot: Power down [ 192s] ### VM INTERACTION END ### [ 192s] [ 192s] lamb01 failed "build osmo-trx_0.2.0.20180427.dsc" at Fri Apr 27 19:57:05 UTC 2018. [ 192s] -- Configure notifications at https://build.opensuse.org/user/notifications openSUSE Build Service (https://build.opensuse.org/) From admin at opensuse.org Fri Apr 27 19:58:18 2018 From: admin at opensuse.org (OBS Notification) Date: Fri, 27 Apr 2018 19:58:18 +0000 Subject: Build failure of network:osmocom:nightly/osmo-trx in Debian_9.0/i586 In-Reply-To: References: Message-ID: <5ae380e4cdbff_2a6a12626801937b@build.opensuse.org> Visit https://build.opensuse.org/package/live_build_log/network:osmocom:nightly/osmo-trx/Debian_9.0/i586 Package network:osmocom:nightly/osmo-trx failed to build in Debian_9.0/i586 Check out the package for editing: osc checkout network:osmocom:nightly osmo-trx Last lines of build log: [ 213s] make[4]: Entering directory '/usr/src/packages/BUILD/tests' [ 213s] make[4]: Nothing to be done for 'install-exec-am'. [ 213s] make[4]: Nothing to be done for 'install-data-am'. [ 213s] make[4]: Leaving directory '/usr/src/packages/BUILD/tests' [ 213s] make[3]: Leaving directory '/usr/src/packages/BUILD/tests' [ 213s] make[2]: Leaving directory '/usr/src/packages/BUILD/tests' [ 213s] make[2]: Entering directory '/usr/src/packages/BUILD' [ 213s] make[3]: Entering directory '/usr/src/packages/BUILD' [ 213s] make[3]: Nothing to be done for 'install-exec-am'. [ 213s] make[3]: Nothing to be done for 'install-data-am'. [ 213s] make[3]: Leaving directory '/usr/src/packages/BUILD' [ 213s] make[2]: Leaving directory '/usr/src/packages/BUILD' [ 213s] make[1]: Leaving directory '/usr/src/packages/BUILD' [ 213s] dh_install [ 213s] dh_install: Cannot find (any matches for) "/usr/bin/osmo-trx-usrp1" (tried in "." and "debian/tmp") [ 213s] dh_install: osmo-trx-usrp1 missing files: /usr/bin/osmo-trx-usrp1 [ 213s] dh_install: missing files, aborting [ 213s] debian/rules:6: recipe for target 'binary' failed [ 213s] make: *** [binary] Error 2 [ 213s] dpkg-buildpackage: error: fakeroot debian/rules binary gave error exit status 2 [ 213s] [ 213s] lamb24 failed "build osmo-trx_0.2.0.20180427.dsc" at Fri Apr 27 19:58:04 UTC 2018. [ 213s] [ 213s] ### VM INTERACTION START ### [ 216s] [ 207.380637] reboot: Power down [ 216s] ### VM INTERACTION END ### [ 216s] [ 216s] lamb24 failed "build osmo-trx_0.2.0.20180427.dsc" at Fri Apr 27 19:58:07 UTC 2018. [ 216s] -- Configure notifications at https://build.opensuse.org/user/notifications openSUSE Build Service (https://build.opensuse.org/) From admin at opensuse.org Fri Apr 27 19:58:18 2018 From: admin at opensuse.org (OBS Notification) Date: Fri, 27 Apr 2018 19:58:18 +0000 Subject: Build failure of network:osmocom:nightly/osmo-trx in xUbuntu_17.10/x86_64 In-Reply-To: References: Message-ID: <5ae380e560148_2a6a1262680193887@build.opensuse.org> Visit https://build.opensuse.org/package/live_build_log/network:osmocom:nightly/osmo-trx/xUbuntu_17.10/x86_64 Package network:osmocom:nightly/osmo-trx failed to build in xUbuntu_17.10/x86_64 Check out the package for editing: osc checkout network:osmocom:nightly osmo-trx Last lines of build log: [ 171s] ./Transceiver52M/device/uhd/UHDDevice.cpp:600: undefined reference to `uhd::get_version_string[abi:cxx11]()' [ 171s] ./device/uhd/.libs/libdevice.a(UHDDevice.o): In function `uhd_device::setPriority(float)': [ 171s] ./Transceiver52M/device/uhd/UHDDevice.cpp:886: undefined reference to `uhd::set_thread_priority_safe(float, bool)' [ 171s] collect2: error: ld returned 1 exit status [ 171s] Makefile:657: recipe for target 'osmo-trx-uhd' failed [ 171s] make[4]: *** [osmo-trx-uhd] Error 1 [ 171s] make[4]: Leaving directory '/usr/src/packages/BUILD/Transceiver52M' [ 171s] Makefile:793: recipe for target 'all-recursive' failed [ 171s] make[3]: *** [all-recursive] Error 1 [ 171s] make[3]: Leaving directory '/usr/src/packages/BUILD/Transceiver52M' [ 171s] Makefile:507: recipe for target 'all-recursive' failed [ 171s] make[2]: *** [all-recursive] Error 1 [ 171s] make[2]: Leaving directory '/usr/src/packages/BUILD' [ 171s] Makefile:438: recipe for target 'all' failed [ 171s] make[1]: *** [all] Error 2 [ 171s] make[1]: Leaving directory '/usr/src/packages/BUILD' [ 171s] dh_auto_build: make -j1 returned exit code 2 [ 171s] debian/rules:6: recipe for target 'build' failed [ 171s] make: *** [build] Error 2 [ 171s] dpkg-buildpackage: error: debian/rules build gave error exit status 2 [ 171s] [ 171s] lamb51 failed "build osmo-trx_0.2.0.20180427.dsc" at Fri Apr 27 19:58:09 UTC 2018. [ 171s] [ 171s] ### VM INTERACTION START ### [ 174s] [ 165.392908] reboot: Power down [ 174s] ### VM INTERACTION END ### [ 174s] [ 174s] lamb51 failed "build osmo-trx_0.2.0.20180427.dsc" at Fri Apr 27 19:58:13 UTC 2018. [ 174s] -- Configure notifications at https://build.opensuse.org/user/notifications openSUSE Build Service (https://build.opensuse.org/) From admin at opensuse.org Fri Apr 27 19:58:35 2018 From: admin at opensuse.org (OBS Notification) Date: Fri, 27 Apr 2018 19:58:35 +0000 Subject: Build failure of network:osmocom:nightly/osmo-trx in xUbuntu_16.10/x86_64 In-Reply-To: References: Message-ID: <5ae38104dea09_2a6a1262680193978@build.opensuse.org> Visit https://build.opensuse.org/package/live_build_log/network:osmocom:nightly/osmo-trx/xUbuntu_16.10/x86_64 Package network:osmocom:nightly/osmo-trx failed to build in xUbuntu_16.10/x86_64 Check out the package for editing: osc checkout network:osmocom:nightly osmo-trx Last lines of build log: [ 164s] ./Transceiver52M/device/uhd/UHDDevice.cpp:600: undefined reference to `uhd::get_version_string[abi:cxx11]()' [ 164s] ./device/uhd/.libs/libdevice.a(UHDDevice.o): In function `uhd_device::setPriority(float)': [ 164s] ./Transceiver52M/device/uhd/UHDDevice.cpp:886: undefined reference to `uhd::set_thread_priority_safe(float, bool)' [ 164s] collect2: error: ld returned 1 exit status [ 164s] Makefile:657: recipe for target 'osmo-trx-uhd' failed [ 164s] make[4]: *** [osmo-trx-uhd] Error 1 [ 164s] make[4]: Leaving directory '/usr/src/packages/BUILD/Transceiver52M' [ 164s] Makefile:793: recipe for target 'all-recursive' failed [ 164s] make[3]: *** [all-recursive] Error 1 [ 164s] make[3]: Leaving directory '/usr/src/packages/BUILD/Transceiver52M' [ 164s] Makefile:507: recipe for target 'all-recursive' failed [ 164s] make[2]: *** [all-recursive] Error 1 [ 164s] make[2]: Leaving directory '/usr/src/packages/BUILD' [ 164s] Makefile:438: recipe for target 'all' failed [ 164s] make[1]: *** [all] Error 2 [ 164s] make[1]: Leaving directory '/usr/src/packages/BUILD' [ 164s] dh_auto_build: make -j1 returned exit code 2 [ 164s] debian/rules:6: recipe for target 'build' failed [ 164s] make: *** [build] Error 2 [ 164s] dpkg-buildpackage: error: debian/rules build gave error exit status 2 [ 164s] [ 164s] lamb61 failed "build osmo-trx_0.2.0.20180427.dsc" at Fri Apr 27 19:58:16 UTC 2018. [ 164s] [ 164s] ### VM INTERACTION START ### [ 167s] [ 158.337819] reboot: Power down [ 167s] ### VM INTERACTION END ### [ 167s] [ 167s] lamb61 failed "build osmo-trx_0.2.0.20180427.dsc" at Fri Apr 27 19:58:20 UTC 2018. [ 167s] -- Configure notifications at https://build.opensuse.org/user/notifications openSUSE Build Service (https://build.opensuse.org/) From admin at opensuse.org Fri Apr 27 19:59:09 2018 From: admin at opensuse.org (OBS Notification) Date: Fri, 27 Apr 2018 19:59:09 +0000 Subject: Build failure of network:osmocom:nightly/osmo-trx in xUbuntu_17.04/x86_64 In-Reply-To: References: Message-ID: <5ae3811ff2e59_2a6a126268019406f@build.opensuse.org> Visit https://build.opensuse.org/package/live_build_log/network:osmocom:nightly/osmo-trx/xUbuntu_17.04/x86_64 Package network:osmocom:nightly/osmo-trx failed to build in xUbuntu_17.04/x86_64 Check out the package for editing: osc checkout network:osmocom:nightly osmo-trx Last lines of build log: [ 224s] ./Transceiver52M/device/uhd/UHDDevice.cpp:600: undefined reference to `uhd::get_version_string[abi:cxx11]()' [ 224s] ./device/uhd/.libs/libdevice.a(UHDDevice.o): In function `uhd_device::setPriority(float)': [ 224s] ./Transceiver52M/device/uhd/UHDDevice.cpp:886: undefined reference to `uhd::set_thread_priority_safe(float, bool)' [ 224s] collect2: error: ld returned 1 exit status [ 224s] Makefile:657: recipe for target 'osmo-trx-uhd' failed [ 224s] make[4]: *** [osmo-trx-uhd] Error 1 [ 224s] make[4]: Leaving directory '/usr/src/packages/BUILD/Transceiver52M' [ 224s] Makefile:793: recipe for target 'all-recursive' failed [ 224s] make[3]: *** [all-recursive] Error 1 [ 224s] make[3]: Leaving directory '/usr/src/packages/BUILD/Transceiver52M' [ 224s] Makefile:507: recipe for target 'all-recursive' failed [ 224s] make[2]: *** [all-recursive] Error 1 [ 224s] make[2]: Leaving directory '/usr/src/packages/BUILD' [ 224s] Makefile:438: recipe for target 'all' failed [ 224s] make[1]: *** [all] Error 2 [ 224s] make[1]: Leaving directory '/usr/src/packages/BUILD' [ 224s] dh_auto_build: make -j1 returned exit code 2 [ 224s] debian/rules:6: recipe for target 'build' failed [ 224s] make: *** [build] Error 2 [ 224s] dpkg-buildpackage: error: debian/rules build gave error exit status 2 [ 224s] [ 224s] lamb53 failed "build osmo-trx_0.2.0.20180427.dsc" at Fri Apr 27 19:58:52 UTC 2018. [ 224s] [ 224s] ### VM INTERACTION START ### [ 227s] [ 215.745624] reboot: Power down [ 227s] ### VM INTERACTION END ### [ 227s] [ 227s] lamb53 failed "build osmo-trx_0.2.0.20180427.dsc" at Fri Apr 27 19:58:57 UTC 2018. [ 227s] -- Configure notifications at https://build.opensuse.org/user/notifications openSUSE Build Service (https://build.opensuse.org/) From admin at opensuse.org Fri Apr 27 19:59:09 2018 From: admin at opensuse.org (OBS Notification) Date: Fri, 27 Apr 2018 19:59:09 +0000 Subject: Build failure of network:osmocom:nightly/osmo-trx in xUbuntu_16.10/i586 In-Reply-To: References: Message-ID: <5ae38120423be_2a6a12626801941bd@build.opensuse.org> Visit https://build.opensuse.org/package/live_build_log/network:osmocom:nightly/osmo-trx/xUbuntu_16.10/i586 Package network:osmocom:nightly/osmo-trx failed to build in xUbuntu_16.10/i586 Check out the package for editing: osc checkout network:osmocom:nightly osmo-trx Last lines of build log: [ 170s] /usr/include/uhd/stream.hpp:63: undefined reference to `uhd::device_addr_t::device_addr_t(std::__cxx11::basic_string, std::allocator > const&)' [ 170s] ./device/uhd/.libs/libdevice.a(UHDDevice.o): In function `uhd_e3xx_version_chk': [ 170s] ./Transceiver52M/device/uhd/UHDDevice.cpp:600: undefined reference to `uhd::get_version_string[abi:cxx11]()' [ 170s] collect2: error: ld returned 1 exit status [ 170s] Makefile:657: recipe for target 'osmo-trx-uhd' failed [ 170s] make[4]: *** [osmo-trx-uhd] Error 1 [ 170s] make[4]: Leaving directory '/usr/src/packages/BUILD/Transceiver52M' [ 170s] Makefile:793: recipe for target 'all-recursive' failed [ 170s] make[3]: *** [all-recursive] Error 1 [ 170s] make[3]: Leaving directory '/usr/src/packages/BUILD/Transceiver52M' [ 170s] Makefile:507: recipe for target 'all-recursive' failed [ 170s] make[2]: *** [all-recursive] Error 1 [ 170s] make[2]: Leaving directory '/usr/src/packages/BUILD' [ 170s] Makefile:438: recipe for target 'all' failed [ 170s] make[1]: *** [all] Error 2 [ 170s] make[1]: Leaving directory '/usr/src/packages/BUILD' [ 170s] dh_auto_build: make -j1 returned exit code 2 [ 170s] debian/rules:6: recipe for target 'build' failed [ 170s] make: *** [build] Error 2 [ 170s] dpkg-buildpackage: error: debian/rules build gave error exit status 2 [ 170s] [ 170s] lamb07 failed "build osmo-trx_0.2.0.20180427.dsc" at Fri Apr 27 19:58:53 UTC 2018. [ 170s] [ 170s] ### VM INTERACTION START ### [ 173s] [ 164.166963] reboot: Power down [ 173s] ### VM INTERACTION END ### [ 173s] [ 173s] lamb07 failed "build osmo-trx_0.2.0.20180427.dsc" at Fri Apr 27 19:58:57 UTC 2018. [ 173s] -- Configure notifications at https://build.opensuse.org/user/notifications openSUSE Build Service (https://build.opensuse.org/) From admin at opensuse.org Fri Apr 27 19:59:09 2018 From: admin at opensuse.org (OBS Notification) Date: Fri, 27 Apr 2018 19:59:09 +0000 Subject: Build failure of network:osmocom:nightly/osmo-trx in xUbuntu_16.04/i586 In-Reply-To: References: Message-ID: <5ae3812166280_2a6a12626801942a4@build.opensuse.org> Visit https://build.opensuse.org/package/live_build_log/network:osmocom:nightly/osmo-trx/xUbuntu_16.04/i586 Package network:osmocom:nightly/osmo-trx failed to build in xUbuntu_16.04/i586 Check out the package for editing: osc checkout network:osmocom:nightly osmo-trx Last lines of build log: [ 164s] /usr/include/uhd/stream.hpp:63: undefined reference to `uhd::device_addr_t::device_addr_t(std::__cxx11::basic_string, std::allocator > const&)' [ 164s] ./device/uhd/.libs/libdevice.a(UHDDevice.o): In function `uhd_e3xx_version_chk': [ 164s] /usr/src/packages/BUILD/Transceiver52M/device/uhd/UHDDevice.cpp:600: undefined reference to `uhd::get_version_string[abi:cxx11]()' [ 164s] collect2: error: ld returned 1 exit status [ 164s] Makefile:657: recipe for target 'osmo-trx-uhd' failed [ 164s] make[4]: *** [osmo-trx-uhd] Error 1 [ 164s] make[4]: Leaving directory '/usr/src/packages/BUILD/Transceiver52M' [ 164s] Makefile:793: recipe for target 'all-recursive' failed [ 164s] make[3]: *** [all-recursive] Error 1 [ 164s] make[3]: Leaving directory '/usr/src/packages/BUILD/Transceiver52M' [ 164s] Makefile:507: recipe for target 'all-recursive' failed [ 164s] make[2]: *** [all-recursive] Error 1 [ 164s] make[2]: Leaving directory '/usr/src/packages/BUILD' [ 164s] Makefile:438: recipe for target 'all' failed [ 164s] make[1]: *** [all] Error 2 [ 164s] make[1]: Leaving directory '/usr/src/packages/BUILD' [ 164s] dh_auto_build: make -j1 returned exit code 2 [ 164s] debian/rules:6: recipe for target 'build' failed [ 164s] make: *** [build] Error 2 [ 164s] dpkg-buildpackage: error: debian/rules build gave error exit status 2 [ 164s] [ 164s] wildcard2 failed "build osmo-trx_0.2.0.20180427.dsc" at Fri Apr 27 19:58:59 UTC 2018. [ 164s] [ 164s] ### VM INTERACTION START ### [ 167s] [ 154.922888] reboot: Power down [ 167s] ### VM INTERACTION END ### [ 167s] [ 167s] wildcard2 failed "build osmo-trx_0.2.0.20180427.dsc" at Fri Apr 27 19:59:03 UTC 2018. [ 167s] -- Configure notifications at https://build.opensuse.org/user/notifications openSUSE Build Service (https://build.opensuse.org/) From admin at opensuse.org Fri Apr 27 19:59:44 2018 From: admin at opensuse.org (OBS Notification) Date: Fri, 27 Apr 2018 19:59:44 +0000 Subject: Build failure of network:osmocom:nightly/osmo-trx in Debian_8.0/x86_64 In-Reply-To: References: Message-ID: <5ae38141dac0b_2a6a126268019442f@build.opensuse.org> Visit https://build.opensuse.org/package/live_build_log/network:osmocom:nightly/osmo-trx/Debian_8.0/x86_64 Package network:osmocom:nightly/osmo-trx failed to build in Debian_8.0/x86_64 Check out the package for editing: osc checkout network:osmocom:nightly osmo-trx Last lines of build log: [ 186s] make[4]: Entering directory '/usr/src/packages/BUILD/tests' [ 186s] make[4]: Nothing to be done for 'install-exec-am'. [ 186s] make[4]: Nothing to be done for 'install-data-am'. [ 186s] make[4]: Leaving directory '/usr/src/packages/BUILD/tests' [ 186s] make[3]: Leaving directory '/usr/src/packages/BUILD/tests' [ 186s] make[2]: Leaving directory '/usr/src/packages/BUILD/tests' [ 186s] make[2]: Entering directory '/usr/src/packages/BUILD' [ 186s] make[3]: Entering directory '/usr/src/packages/BUILD' [ 186s] make[3]: Nothing to be done for 'install-exec-am'. [ 186s] make[3]: Nothing to be done for 'install-data-am'. [ 186s] make[3]: Leaving directory '/usr/src/packages/BUILD' [ 186s] make[2]: Leaving directory '/usr/src/packages/BUILD' [ 186s] make[1]: Leaving directory '/usr/src/packages/BUILD' [ 186s] dh_install [ 186s] cp: cannot stat 'debian/tmp//usr/bin/osmo-trx-usrp1': No such file or directory [ 186s] dh_install: cp -a debian/tmp//usr/bin/osmo-trx-usrp1 debian/osmo-trx-usrp1///usr/bin/ returned exit code 1 [ 186s] debian/rules:6: recipe for target 'binary' failed [ 186s] make: *** [binary] Error 2 [ 186s] dpkg-buildpackage: error: fakeroot debian/rules binary gave error exit status 2 [ 186s] [ 186s] lamb64 failed "build osmo-trx_0.2.0.20180427.dsc" at Fri Apr 27 19:59:31 UTC 2018. [ 186s] [ 186s] ### VM INTERACTION START ### [ 187s] Powering off. [ 188s] [ 179.634184] reboot: Power down [ 188s] ### VM INTERACTION END ### [ 188s] [ 188s] lamb64 failed "build osmo-trx_0.2.0.20180427.dsc" at Fri Apr 27 19:59:33 UTC 2018. [ 188s] -- Configure notifications at https://build.opensuse.org/user/notifications openSUSE Build Service (https://build.opensuse.org/) From admin at opensuse.org Fri Apr 27 20:00:18 2018 From: admin at opensuse.org (OBS Notification) Date: Fri, 27 Apr 2018 20:00:18 +0000 Subject: Build failure of network:osmocom:nightly/osmo-trx in xUbuntu_17.04/i586 In-Reply-To: References: Message-ID: <5ae3815d46518_2a6a12626801945a6@build.opensuse.org> Visit https://build.opensuse.org/package/live_build_log/network:osmocom:nightly/osmo-trx/xUbuntu_17.04/i586 Package network:osmocom:nightly/osmo-trx failed to build in xUbuntu_17.04/i586 Check out the package for editing: osc checkout network:osmocom:nightly osmo-trx Last lines of build log: [ 341s] /usr/include/uhd/stream.hpp:63: undefined reference to `uhd::device_addr_t::device_addr_t(std::__cxx11::basic_string, std::allocator > const&)' [ 341s] ./device/uhd/.libs/libdevice.a(UHDDevice.o): In function `uhd_e3xx_version_chk': [ 341s] ./Transceiver52M/device/uhd/UHDDevice.cpp:600: undefined reference to `uhd::get_version_string[abi:cxx11]()' [ 341s] collect2: error: ld returned 1 exit status [ 341s] Makefile:657: recipe for target 'osmo-trx-uhd' failed [ 341s] make[4]: *** [osmo-trx-uhd] Error 1 [ 341s] make[4]: Leaving directory '/usr/src/packages/BUILD/Transceiver52M' [ 341s] Makefile:793: recipe for target 'all-recursive' failed [ 341s] make[3]: *** [all-recursive] Error 1 [ 341s] make[3]: Leaving directory '/usr/src/packages/BUILD/Transceiver52M' [ 341s] Makefile:507: recipe for target 'all-recursive' failed [ 341s] make[2]: *** [all-recursive] Error 1 [ 341s] make[2]: Leaving directory '/usr/src/packages/BUILD' [ 341s] Makefile:438: recipe for target 'all' failed [ 341s] make[1]: *** [all] Error 2 [ 341s] make[1]: Leaving directory '/usr/src/packages/BUILD' [ 341s] dh_auto_build: make -j1 returned exit code 2 [ 341s] debian/rules:6: recipe for target 'build' failed [ 341s] make: *** [build] Error 2 [ 341s] dpkg-buildpackage: error: debian/rules build gave error exit status 2 [ 341s] [ 341s] cloud107 failed "build osmo-trx_0.2.0.20180427.dsc" at Fri Apr 27 19:59:56 UTC 2018. [ 341s] [ 341s] ### VM INTERACTION START ### [ 345s] [ 296.928604] reboot: Power down [ 346s] ### VM INTERACTION END ### [ 346s] [ 346s] cloud107 failed "build osmo-trx_0.2.0.20180427.dsc" at Fri Apr 27 20:00:01 UTC 2018. [ 346s] -- Configure notifications at https://build.opensuse.org/user/notifications openSUSE Build Service (https://build.opensuse.org/) From admin at opensuse.org Fri Apr 27 20:00:18 2018 From: admin at opensuse.org (OBS Notification) Date: Fri, 27 Apr 2018 20:00:18 +0000 Subject: Build failure of network:osmocom:nightly/libosmo-netif in xUbuntu_17.10/x86_64 In-Reply-To: References: Message-ID: <5ae3815dd15b9_2a6a1262680194620@build.opensuse.org> Visit https://build.opensuse.org/package/live_build_log/network:osmocom:nightly/libosmo-netif/xUbuntu_17.10/x86_64 Package network:osmocom:nightly/libosmo-netif failed to build in xUbuntu_17.10/x86_64 Check out the package for editing: osc checkout network:osmocom:nightly libosmo-netif Last lines of build log: [ 104s] -sys={0.040000}, mono={0.040000}: 2nd osmux frame arrives [ 104s] -sys={0.040000}, mono={0.040000}: flushing, all packet should be transmitted immediately [ 104s] -sys={0.040000}, mono={0.040000}: dequeue: seq=53 ts=980 enqueued=8 [ 104s] -sys={0.040000}, mono={0.040000}: dequeue: seq=54 ts=1140 enqueued=7 [ 104s] -sys={0.040000}, mono={0.040000}: dequeue: seq=55 ts=1300 enqueued=6 [ 104s] -sys={0.040000}, mono={0.040000}: dequeue: seq=56 ts=1460 enqueued=5 [ 104s] -sys={0.040000}, mono={0.040000}: dequeue: seq=57 ts=1620 enqueued=4 [ 104s] -sys={0.040000}, mono={0.040000}: dequeue: seq=58 ts=1780 enqueued=3 [ 104s] -sys={0.040000}, mono={0.040000}: dequeue: seq=59 ts=1940 enqueued=2 [ 104s] -sys={0.040000}, mono={0.040000}: dequeue: seq=60 ts=2100 enqueued=1 [ 104s] -sys={0.040000}, mono={0.040000}: dequeue: seq=61 ts=2260 enqueued=0 [ 104s] -OK: Test passed [ 104s] ./testsuite.at:13: exit code was 139, expected 0 [ 104s] 2. testsuite.at:10: 2. osmux_test2 (testsuite.at:10): FAILED (testsuite.at:13) [ 104s] debian/rules:31: recipe for target 'override_dh_auto_test' failed [ 104s] make[1]: *** [override_dh_auto_test] Error 1 [ 104s] make[1]: Leaving directory '/usr/src/packages/BUILD' [ 104s] debian/rules:13: recipe for target 'build' failed [ 104s] make: *** [build] Error 2 [ 104s] dpkg-buildpackage: error: debian/rules build gave error exit status 2 [ 104s] [ 104s] lamb17 failed "build libosmo-netif_0.1.1.20180427.dsc" at Fri Apr 27 20:00:06 UTC 2018. [ 104s] [ 104s] ### VM INTERACTION START ### [ 107s] [ 99.074616] reboot: Power down [ 107s] ### VM INTERACTION END ### [ 107s] [ 107s] lamb17 failed "build libosmo-netif_0.1.1.20180427.dsc" at Fri Apr 27 20:00:10 UTC 2018. [ 107s] -- Configure notifications at https://build.opensuse.org/user/notifications openSUSE Build Service (https://build.opensuse.org/) From admin at opensuse.org Fri Apr 27 20:02:01 2018 From: admin at opensuse.org (OBS Notification) Date: Fri, 27 Apr 2018 20:02:01 +0000 Subject: Build failure of network:osmocom:nightly/osmo-trx in Debian_9.0/x86_64 In-Reply-To: References: Message-ID: <5ae381d53ae91_2a6a12626801947c1@build.opensuse.org> Visit https://build.opensuse.org/package/live_build_log/network:osmocom:nightly/osmo-trx/Debian_9.0/x86_64 Package network:osmocom:nightly/osmo-trx failed to build in Debian_9.0/x86_64 Check out the package for editing: osc checkout network:osmocom:nightly osmo-trx Last lines of build log: [ 198s] make[4]: Entering directory '/usr/src/packages/BUILD/tests' [ 198s] make[4]: Nothing to be done for 'install-exec-am'. [ 198s] make[4]: Nothing to be done for 'install-data-am'. [ 198s] make[4]: Leaving directory '/usr/src/packages/BUILD/tests' [ 198s] make[3]: Leaving directory '/usr/src/packages/BUILD/tests' [ 198s] make[2]: Leaving directory '/usr/src/packages/BUILD/tests' [ 198s] make[2]: Entering directory '/usr/src/packages/BUILD' [ 198s] make[3]: Entering directory '/usr/src/packages/BUILD' [ 198s] make[3]: Nothing to be done for 'install-exec-am'. [ 198s] make[3]: Nothing to be done for 'install-data-am'. [ 198s] make[3]: Leaving directory '/usr/src/packages/BUILD' [ 198s] make[2]: Leaving directory '/usr/src/packages/BUILD' [ 198s] make[1]: Leaving directory '/usr/src/packages/BUILD' [ 198s] dh_install [ 199s] dh_install: Cannot find (any matches for) "/usr/bin/osmo-trx-usrp1" (tried in "." and "debian/tmp") [ 199s] dh_install: osmo-trx-usrp1 missing files: /usr/bin/osmo-trx-usrp1 [ 199s] dh_install: missing files, aborting [ 199s] debian/rules:6: recipe for target 'binary' failed [ 199s] make: *** [binary] Error 2 [ 199s] dpkg-buildpackage: error: fakeroot debian/rules binary gave error exit status 2 [ 199s] [ 199s] lamb06 failed "build osmo-trx_0.2.0.20180427.dsc" at Fri Apr 27 20:01:51 UTC 2018. [ 199s] [ 199s] ### VM INTERACTION START ### [ 202s] [ 192.286177] reboot: Power down [ 202s] ### VM INTERACTION END ### [ 202s] [ 202s] lamb06 failed "build osmo-trx_0.2.0.20180427.dsc" at Fri Apr 27 20:01:55 UTC 2018. [ 202s] -- Configure notifications at https://build.opensuse.org/user/notifications openSUSE Build Service (https://build.opensuse.org/) From admin at opensuse.org Fri Apr 27 20:04:18 2018 From: admin at opensuse.org (OBS Notification) Date: Fri, 27 Apr 2018 20:04:18 +0000 Subject: Build failure of network:osmocom:nightly/osmo-trx in xUbuntu_16.04/x86_64 In-Reply-To: References: Message-ID: <5ae3824d2a645_2a6a12626801949b6@build.opensuse.org> Visit https://build.opensuse.org/package/live_build_log/network:osmocom:nightly/osmo-trx/xUbuntu_16.04/x86_64 Package network:osmocom:nightly/osmo-trx failed to build in xUbuntu_16.04/x86_64 Check out the package for editing: osc checkout network:osmocom:nightly osmo-trx Last lines of build log: [ 257s] /usr/src/packages/BUILD/Transceiver52M/device/uhd/UHDDevice.cpp:600: undefined reference to `uhd::get_version_string[abi:cxx11]()' [ 257s] ./device/uhd/.libs/libdevice.a(UHDDevice.o): In function `uhd_device::setPriority(float)': [ 257s] /usr/src/packages/BUILD/Transceiver52M/device/uhd/UHDDevice.cpp:886: undefined reference to `uhd::set_thread_priority_safe(float, bool)' [ 257s] collect2: error: ld returned 1 exit status [ 257s] Makefile:657: recipe for target 'osmo-trx-uhd' failed [ 257s] make[4]: *** [osmo-trx-uhd] Error 1 [ 257s] make[4]: Leaving directory '/usr/src/packages/BUILD/Transceiver52M' [ 257s] Makefile:793: recipe for target 'all-recursive' failed [ 257s] make[3]: *** [all-recursive] Error 1 [ 257s] make[3]: Leaving directory '/usr/src/packages/BUILD/Transceiver52M' [ 257s] Makefile:507: recipe for target 'all-recursive' failed [ 257s] make[2]: *** [all-recursive] Error 1 [ 257s] make[2]: Leaving directory '/usr/src/packages/BUILD' [ 257s] Makefile:438: recipe for target 'all' failed [ 257s] make[1]: *** [all] Error 2 [ 257s] make[1]: Leaving directory '/usr/src/packages/BUILD' [ 257s] dh_auto_build: make -j1 returned exit code 2 [ 257s] debian/rules:6: recipe for target 'build' failed [ 257s] make: *** [build] Error 2 [ 257s] dpkg-buildpackage: error: debian/rules build gave error exit status 2 [ 257s] [ 257s] lamb52 failed "build osmo-trx_0.2.0.20180427.dsc" at Fri Apr 27 20:04:05 UTC 2018. [ 257s] [ 257s] ### VM INTERACTION START ### [ 259s] [ 232.939232] reboot: Power down [ 259s] ### VM INTERACTION END ### [ 259s] [ 259s] lamb52 failed "build osmo-trx_0.2.0.20180427.dsc" at Fri Apr 27 20:04:08 UTC 2018. [ 259s] -- Configure notifications at https://build.opensuse.org/user/notifications openSUSE Build Service (https://build.opensuse.org/) From admin at opensuse.org Fri Apr 27 20:30:35 2018 From: admin at opensuse.org (OBS Notification) Date: Fri, 27 Apr 2018 20:30:35 +0000 Subject: Build failure of network:osmocom:nightly/osmo-trx in Debian_9.0/aarch64 In-Reply-To: References: Message-ID: <5ae3888391e20_2a6a126268019697a@build.opensuse.org> Visit https://build.opensuse.org/package/live_build_log/network:osmocom:nightly/osmo-trx/Debian_9.0/aarch64 Package network:osmocom:nightly/osmo-trx failed to build in Debian_9.0/aarch64 Check out the package for editing: osc checkout network:osmocom:nightly osmo-trx Last lines of build log: [ 817s] #include "convolve.h" [ 817s] ^ [ 817s] compilation terminated. [ 817s] Makefile:458: recipe for target 'convolve_test-convolve_test.o' failed [ 817s] make[4]: *** [convolve_test-convolve_test.o] Error 1 [ 817s] make[4]: Leaving directory '/usr/src/packages/BUILD/tests/Transceiver52M' [ 817s] Makefile:397: recipe for target 'all-recursive' failed [ 817s] make[3]: *** [all-recursive] Error 1 [ 817s] make[3]: Leaving directory '/usr/src/packages/BUILD/tests' [ 817s] Makefile:507: recipe for target 'all-recursive' failed [ 817s] make[2]: *** [all-recursive] Error 1 [ 818s] make[2]: Leaving directory '/usr/src/packages/BUILD' [ 818s] Makefile:438: recipe for target 'all' failed [ 818s] make[1]: *** [all] Error 2 [ 818s] make[1]: Leaving directory '/usr/src/packages/BUILD' [ 818s] dh_auto_build: make -j1 returned exit code 2 [ 818s] debian/rules:6: recipe for target 'build' failed [ 818s] make: *** [build] Error 2 [ 818s] dpkg-buildpackage: error: debian/rules build gave error exit status 2 [ 818s] [ 818s] obs-arm-3 failed "build osmo-trx_0.2.0.20180427.dsc" at Fri Apr 27 20:30:17 UTC 2018. [ 818s] [ 818s] ### VM INTERACTION START ### [ 821s] [ 750.806763] sysrq: SysRq : Power Off [ 821s] [ 750.819496] reboot: Power down [ 821s] ### VM INTERACTION END ### [ 821s] [ 821s] obs-arm-3 failed "build osmo-trx_0.2.0.20180427.dsc" at Fri Apr 27 20:30:21 UTC 2018. [ 821s] -- Configure notifications at https://build.opensuse.org/user/notifications openSUSE Build Service (https://build.opensuse.org/) From admin at opensuse.org Fri Apr 27 21:03:44 2018 From: admin at opensuse.org (OBS Notification) Date: Fri, 27 Apr 2018 21:03:44 +0000 Subject: Build failure of network:osmocom:nightly/osmo-trx in Debian_9.0/armv7l In-Reply-To: References: Message-ID: <5ae39041aff8d_2a6a1262680200256@build.opensuse.org> Visit https://build.opensuse.org/package/live_build_log/network:osmocom:nightly/osmo-trx/Debian_9.0/armv7l Package network:osmocom:nightly/osmo-trx failed to build in Debian_9.0/armv7l Check out the package for editing: osc checkout network:osmocom:nightly osmo-trx Last lines of build log: [ 318s] #include "convolve.h" [ 318s] ^ [ 318s] compilation terminated. [ 318s] Makefile:458: recipe for target 'convolve_test-convolve_test.o' failed [ 318s] make[4]: *** [convolve_test-convolve_test.o] Error 1 [ 318s] make[4]: Leaving directory '/usr/src/packages/BUILD/tests/Transceiver52M' [ 318s] Makefile:397: recipe for target 'all-recursive' failed [ 318s] make[3]: *** [all-recursive] Error 1 [ 318s] make[3]: Leaving directory '/usr/src/packages/BUILD/tests' [ 318s] Makefile:507: recipe for target 'all-recursive' failed [ 319s] make[2]: *** [all-recursive] Error 1 [ 319s] make[2]: Leaving directory '/usr/src/packages/BUILD' [ 319s] Makefile:438: recipe for target 'all' failed [ 319s] make[1]: *** [all] Error 2 [ 319s] make[1]: Leaving directory '/usr/src/packages/BUILD' [ 319s] dh_auto_build: make -j1 returned exit code 2 [ 319s] debian/rules:6: recipe for target 'build' failed [ 319s] make: *** [build] Error 2 [ 319s] dpkg-buildpackage: error: debian/rules build gave error exit status 2 [ 319s] [ 319s] armbuild01 failed "build osmo-trx_0.2.0.20180427.dsc" at Fri Apr 27 21:03:26 UTC 2018. [ 319s] [ 319s] ### VM INTERACTION START ### [ 322s] [ 278.346093] SysRq : Power Off [ 322s] [ 278.353306] reboot: Power down [ 322s] ### VM INTERACTION END ### [ 322s] [ 322s] armbuild01 failed "build osmo-trx_0.2.0.20180427.dsc" at Fri Apr 27 21:03:29 UTC 2018. [ 322s] -- Configure notifications at https://build.opensuse.org/user/notifications openSUSE Build Service (https://build.opensuse.org/) From jenkins at lists.osmocom.org Fri Apr 27 22:41:20 2018 From: jenkins at lists.osmocom.org (jenkins at lists.osmocom.org) Date: Fri, 27 Apr 2018 22:41:20 +0000 (UTC) Subject: =?UTF-8?Q?Build_failed_in_Jenkins:_master-rtl-sdr_=C2=BB_a1=3Ddefau?= =?UTF-8?Q?lt,a2=3Ddefault,a3=3Ddefault,osmocom-master-debian9_#13?= In-Reply-To: <118254492.106.1524782480549.JavaMail.jenkins@jenkins.osmocom.org> References: <118254492.106.1524782480549.JavaMail.jenkins@jenkins.osmocom.org> Message-ID: <1611545050.123.1524868880532.JavaMail.jenkins@jenkins.osmocom.org> See ------------------------------------------ [...truncated 93.13 KB...] make[2]: Nothing to be done for 'dvi'. make[2]: Leaving directory ' Making dvi in src make[2]: Entering directory ' make[2]: Nothing to be done for 'dvi'. make[2]: Leaving directory ' make[2]: Entering directory ' make[2]: Nothing to be done for 'dvi-am'. make[2]: Leaving directory ' make[1]: Leaving directory ' make[1]: Entering directory ' make check-recursive make[2]: Entering directory ' Making check in include make[3]: Entering directory ' make[3]: Nothing to be done for 'check'. make[3]: Leaving directory ' Making check in src make[3]: Entering directory ' make[3]: Nothing to be done for 'check'. make[3]: Leaving directory ' make[3]: Entering directory ' make[3]: Leaving directory ' make[2]: Leaving directory ' make[1]: Leaving directory ' make[1]: Entering directory ' make install-recursive make[2]: Entering directory ' Making install in include make[3]: Entering directory ' make[4]: Entering directory ' make[4]: Nothing to be done for 'install-exec-am'. /bin/mkdir -p ' /usr/bin/install -c -m 644 ../../../include/rtl-sdr.h ../../../include/rtl-sdr_export.h ' make[4]: Leaving directory ' make[3]: Leaving directory ' Making install in src make[3]: Entering directory ' make[4]: Entering directory ' /bin/mkdir -p ' /bin/bash ../libtool --mode=install /usr/bin/install -c librtlsdr.la ' libtool: install: /usr/bin/install -c .libs/librtlsdr.so.0.0.5 libtool: install: (cd && { ln -s -f librtlsdr.so.0.0.5 librtlsdr.so.0 || { rm -f librtlsdr.so.0 && ln -s librtlsdr.so.0.0.5 librtlsdr.so.0; }; }) libtool: install: (cd && { ln -s -f librtlsdr.so.0.0.5 librtlsdr.so || { rm -f librtlsdr.so && ln -s librtlsdr.so.0.0.5 librtlsdr.so; }; }) libtool: install: /usr/bin/install -c .libs/librtlsdr.lai libtool: install: /usr/bin/install -c .libs/librtlsdr.a libtool: install: chmod 644 libtool: install: ranlib libtool: finish: PATH="/usr/local/bin:/usr/bin:/bin:/usr/games:/home/osmocom-build/bin:/sbin" ldconfig -n ---------------------------------------------------------------------- Libraries have been installed in: If you ever happen to want to link against installed libraries in a given directory, LIBDIR, you must either use libtool, and specify the full pathname of the library, or use the '-LLIBDIR' flag during linking and do at least one of the following: - add LIBDIR to the 'LD_LIBRARY_PATH' environment variable during execution - add LIBDIR to the 'LD_RUN_PATH' environment variable during linking - use the '-Wl,-rpath -Wl,LIBDIR' linker flag - have your system administrator add LIBDIR to '/etc/ld.so.conf' See any operating system documentation about shared libraries for more information, such as the ld(1) and ld.so(8) manual pages. ---------------------------------------------------------------------- /bin/mkdir -p ' /bin/bash ../libtool --mode=install /usr/bin/install -c rtl_sdr rtl_tcp rtl_test rtl_fm rtl_eeprom rtl_adsb rtl_power ' libtool: install: /usr/bin/install -c .libs/rtl_sdr libtool: install: /usr/bin/install -c .libs/rtl_tcp libtool: install: /usr/bin/install -c .libs/rtl_test libtool: install: /usr/bin/install -c .libs/rtl_fm libtool: install: /usr/bin/install -c .libs/rtl_eeprom libtool: install: /usr/bin/install -c .libs/rtl_adsb libtool: install: /usr/bin/install -c .libs/rtl_power make[4]: Nothing to be done for 'install-data-am'. make[4]: Leaving directory ' make[3]: Leaving directory ' make[3]: Entering directory ' make[4]: Entering directory ' make[4]: Nothing to be done for 'install-exec-am'. /bin/mkdir -p ' /usr/bin/install -c -m 644 ./doc/html.tar ' /bin/mkdir -p ' /usr/bin/install -c -m 644 librtlsdr.pc ' make install-data-hook make[5]: Entering directory ' cd && tar xf html.tar --strip-components 1 && rm -f html.tar make[5]: Leaving directory ' make[4]: Leaving directory ' make[3]: Leaving directory ' make[2]: Leaving directory ' make[1]: Leaving directory ' make[1]: Entering directory ' Making installcheck in include make[2]: Entering directory ' make[2]: Nothing to be done for 'installcheck'. make[2]: Leaving directory ' Making installcheck in src make[2]: Entering directory ' make[2]: Nothing to be done for 'installcheck'. make[2]: Leaving directory ' make[2]: Entering directory ' make[2]: Nothing to be done for 'installcheck-am'. make[2]: Leaving directory ' make[1]: Leaving directory ' make[1]: Entering directory ' Making uninstall in include make[2]: Entering directory ' ( cd ' && rm -f rtl-sdr.h rtl-sdr_export.h ) make[2]: Leaving directory ' Making uninstall in src make[2]: Entering directory ' ( cd ' && rm -f rtl_sdr rtl_tcp rtl_test rtl_fm rtl_eeprom rtl_adsb rtl_power ) /bin/bash ../libtool --mode=uninstall rm -f ' libtool: uninstall: rm -f make[2]: Leaving directory ' make[2]: Entering directory ' ( cd ' && rm -f html.tar ) ( cd ' && rm -f librtlsdr.pc ) make uninstall-hook make[3]: Entering directory ' cd && rm -rf make[3]: Leaving directory ' make[2]: Leaving directory ' make[1]: Leaving directory ' make[1]: Entering directory ' make[1]: Leaving directory ' make[1]: Entering directory ' make install-recursive make[2]: Entering directory ' Making install in include make[3]: Entering directory ' make[4]: Entering directory ' make[4]: Nothing to be done for 'install-exec-am'. /bin/mkdir -p '/tmp/am-dc-3510/ /usr/bin/install -c -m 644 ../../../include/rtl-sdr.h ../../../include/rtl-sdr_export.h '/tmp/am-dc-3510/ make[4]: Leaving directory ' make[3]: Leaving directory ' Making install in src make[3]: Entering directory ' make[4]: Entering directory ' /bin/mkdir -p '/tmp/am-dc-3510/ /bin/bash ../libtool --mode=install /usr/bin/install -c librtlsdr.la '/tmp/am-dc-3510/ libtool: install: /usr/bin/install -c .libs/librtlsdr.so.0.0.5 /tmp/am-dc-3510/ libtool: install: (cd /tmp/am-dc-3510/ && { ln -s -f librtlsdr.so.0.0.5 librtlsdr.so.0 || { rm -f librtlsdr.so.0 && ln -s librtlsdr.so.0.0.5 librtlsdr.so.0; }; }) libtool: install: (cd /tmp/am-dc-3510/ && { ln -s -f librtlsdr.so.0.0.5 librtlsdr.so || { rm -f librtlsdr.so && ln -s librtlsdr.so.0.0.5 librtlsdr.so; }; }) libtool: install: /usr/bin/install -c .libs/librtlsdr.lai /tmp/am-dc-3510/ libtool: install: /usr/bin/install -c .libs/librtlsdr.a /tmp/am-dc-3510/ libtool: install: chmod 644 /tmp/am-dc-3510/ libtool: install: ranlib /tmp/am-dc-3510/ libtool: warning: remember to run 'libtool --finish /bin/mkdir -p '/tmp/am-dc-3510/ /bin/bash ../libtool --mode=install /usr/bin/install -c rtl_sdr rtl_tcp rtl_test rtl_fm rtl_eeprom rtl_adsb rtl_power '/tmp/am-dc-3510/ libtool: warning: 'librtlsdr.la' has not been installed in ' libtool: install: /usr/bin/install -c .libs/rtl_sdr /tmp/am-dc-3510/ libtool: warning: 'librtlsdr.la' has not been installed in ' libtool: install: /usr/bin/install -c .libs/rtl_tcp /tmp/am-dc-3510/ libtool: warning: 'librtlsdr.la' has not been installed in ' libtool: install: /usr/bin/install -c .libs/rtl_test /tmp/am-dc-3510/ libtool: warning: 'librtlsdr.la' has not been installed in ' libtool: install: /usr/bin/install -c .libs/rtl_fm /tmp/am-dc-3510/ libtool: warning: 'librtlsdr.la' has not been installed in ' libtool: install: /usr/bin/install -c .libs/rtl_eeprom /tmp/am-dc-3510/ libtool: warning: 'librtlsdr.la' has not been installed in ' libtool: install: /usr/bin/install -c .libs/rtl_adsb /tmp/am-dc-3510/ libtool: warning: 'librtlsdr.la' has not been installed in ' libtool: install: /usr/bin/install -c .libs/rtl_power /tmp/am-dc-3510/ make[4]: Nothing to be done for 'install-data-am'. make[4]: Leaving directory ' make[3]: Leaving directory ' make[3]: Entering directory ' make[4]: Entering directory ' make[4]: Nothing to be done for 'install-exec-am'. /bin/mkdir -p '/tmp/am-dc-3510/ /usr/bin/install -c -m 644 ./doc/html.tar '/tmp/am-dc-3510/ /bin/mkdir -p '/tmp/am-dc-3510/ /usr/bin/install -c -m 644 librtlsdr.pc '/tmp/am-dc-3510/ make install-data-hook make[5]: Entering directory ' cd /tmp/am-dc-3510/ && tar xf html.tar --strip-components 1 && rm -f html.tar make[5]: Leaving directory ' make[4]: Leaving directory ' make[3]: Leaving directory ' make[2]: Leaving directory ' make[1]: Leaving directory ' make[1]: Entering directory ' Making uninstall in include make[2]: Entering directory ' ( cd '/tmp/am-dc-3510/ && rm -f rtl-sdr.h rtl-sdr_export.h ) make[2]: Leaving directory ' Making uninstall in src make[2]: Entering directory ' ( cd '/tmp/am-dc-3510/ && rm -f rtl_sdr rtl_tcp rtl_test rtl_fm rtl_eeprom rtl_adsb rtl_power ) /bin/bash ../libtool --mode=uninstall rm -f '/tmp/am-dc-3510/ libtool: uninstall: rm -f /tmp/am-dc-3510/ /tmp/am-dc-3510/ /tmp/am-dc-3510/ /tmp/am-dc-3510/ /tmp/am-dc-3510/ make[2]: Leaving directory ' make[2]: Entering directory ' ( cd '/tmp/am-dc-3510/ && rm -f html.tar ) ( cd '/tmp/am-dc-3510/ && rm -f librtlsdr.pc ) make uninstall-hook make[3]: Entering directory ' cd /tmp/am-dc-3510/ && rm -rf make[3]: Leaving directory ' make[2]: Leaving directory ' make[1]: Leaving directory ' make[1]: Entering directory ' ERROR: files left after uninstall: (check DESTDIR support) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Makefile:757: recipe for target 'distuninstallcheck' failed make[1]: *** [distuninstallcheck] Error 1 make[1]: Leaving directory ' Makefile:701: recipe for target 'distcheck' failed make: *** [distcheck] Error 1 + cat-testlogs.sh Build step 'Execute shell' marked build as failure [WARNINGS]Skipping publisher since build result is FAILURE Not sending mail to unregistered user steve at steve-m.de From gerrit-no-reply at lists.osmocom.org Fri Apr 27 23:32:58 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Fri, 27 Apr 2018 23:32:58 +0000 Subject: [PATCH] libusrp[master]: build: use correct python version in generate_regs.py Message-ID: Review at https://gerrit.osmocom.org/7943 build: use correct python version in generate_regs.py AM_PATH_PYTHON is broken, we already dropped it in other osmocom projects. Change-Id: I17a79464718c9dcf8f4f579fb1871bfac22075e3 --- M firmware/include/Makefile.am M firmware/include/generate_regs.py 2 files changed, 3 insertions(+), 3 deletions(-) git pull ssh://gerrit.osmocom.org:29418/libusrp refs/changes/43/7943/1 diff --git a/firmware/include/Makefile.am b/firmware/include/Makefile.am index e17726c..d12fce3 100644 --- a/firmware/include/Makefile.am +++ b/firmware/include/Makefile.am @@ -55,7 +55,7 @@ $(CODE_GENERATOR) fpga_regs_common.v: fpga_regs_common.h generate_regs.py - PYTHONPATH=$(top_srcdir)/usrp/firmware/include $(PYTHON) $(srcdir)/generate_regs.py $(srcdir)/fpga_regs_common.h $@ + PYTHONPATH=$(top_srcdir)/usrp/firmware/include $(srcdir)/generate_regs.py $(srcdir)/fpga_regs_common.h $@ fpga_regs_standard.v: fpga_regs_standard.h generate_regs.py - PYTHONPATH=$(top_srcdir)/usrp/firmware/include $(PYTHON) $(srcdir)/generate_regs.py $(srcdir)/fpga_regs_standard.h $@ + PYTHONPATH=$(top_srcdir)/usrp/firmware/include $(srcdir)/generate_regs.py $(srcdir)/fpga_regs_standard.h $@ diff --git a/firmware/include/generate_regs.py b/firmware/include/generate_regs.py index 656cd5e..f11baad 100755 --- a/firmware/include/generate_regs.py +++ b/firmware/include/generate_regs.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python2 import os, os.path import re -- To view, visit https://gerrit.osmocom.org/7943 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I17a79464718c9dcf8f4f579fb1871bfac22075e3 Gerrit-PatchSet: 1 Gerrit-Project: libusrp Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol From gerrit-no-reply at lists.osmocom.org Fri Apr 27 23:38:45 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Fri, 27 Apr 2018 23:38:45 +0000 Subject: [PATCH] osmo-trx[master]: build: More OBS build failure fixes Message-ID: Review at https://gerrit.osmocom.org/7944 build: More OBS build failure fixes It seems the order in which static code and -lfoo is passed to the linker matters. Change-Id: I3b25be0154053ae8eb5f0a24c39fb9a229130fcf --- M Transceiver52M/Makefile.am 1 file changed, 4 insertions(+), 4 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-trx refs/changes/44/7944/1 diff --git a/Transceiver52M/Makefile.am b/Transceiver52M/Makefile.am index d6dec2d..bb253bb 100644 --- a/Transceiver52M/Makefile.am +++ b/Transceiver52M/Makefile.am @@ -84,9 +84,9 @@ bin_PROGRAMS += osmo-trx-uhd osmo_trx_uhd_SOURCES = osmo-trx.cpp osmo_trx_uhd_LDADD = \ + $(builddir)/device/uhd/libdevice.la \ $(COMMON_LDADD) \ - $(UHD_LIBS) \ - $(builddir)/device/uhd/libdevice.la + $(UHD_LIBS) osmo_trx_uhd_CPPFLAGS = $(AM_CPPFLAGS) $(UHD_CFLAGS) endif @@ -94,8 +94,8 @@ bin_PROGRAMS += osmo-trx-usrp1 osmo_trx_usrp1_SOURCES = osmo-trx.cpp osmo_trx_usrp1_LDADD = \ + $(builddir)/device/usrp1/libdevice.la \ $(COMMON_LDADD) \ - $(USRP_LIBS) \ - $(builddir)/device/usrp1/libdevice.la + $(USRP_LIBS) osmo_trx_usrp1_CPPFLAGS = $(AM_CPPFLAGS) $(USRP_CFLAGS) endif -- To view, visit https://gerrit.osmocom.org/7944 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I3b25be0154053ae8eb5f0a24c39fb9a229130fcf Gerrit-PatchSet: 1 Gerrit-Project: osmo-trx Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol From gerrit-no-reply at lists.osmocom.org Fri Apr 27 23:38:47 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Fri, 27 Apr 2018 23:38:47 +0000 Subject: [PATCH] osmo-trx[master]: debian: Remove osmo-trx-usrp1 until we can build libusrp1.deb Message-ID: Review at https://gerrit.osmocom.org/7945 debian: Remove osmo-trx-usrp1 until we can build libusrp1.deb Change-Id: I43163755a29014fe1f098e994f8df79d853c90f8 --- D debian/osmo-trx-usrp1.install 1 file changed, 0 insertions(+), 1 deletion(-) git pull ssh://gerrit.osmocom.org:29418/osmo-trx refs/changes/45/7945/1 diff --git a/debian/osmo-trx-usrp1.install b/debian/osmo-trx-usrp1.install deleted file mode 100644 index 1b76249..0000000 --- a/debian/osmo-trx-usrp1.install +++ /dev/null @@ -1 +0,0 @@ -/usr/bin/osmo-trx-usrp1 -- To view, visit https://gerrit.osmocom.org/7945 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I43163755a29014fe1f098e994f8df79d853c90f8 Gerrit-PatchSet: 1 Gerrit-Project: osmo-trx Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol From gerrit-no-reply at lists.osmocom.org Fri Apr 27 23:38:47 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Fri, 27 Apr 2018 23:38:47 +0000 Subject: [PATCH] osmo-trx[master]: debian: Fix OBS build Message-ID: Review at https://gerrit.osmocom.org/7946 debian: Fix OBS build osmo-trx is a metapackage, no need for .install file. Debug files are always put into osmo-trx-dbg, no osmo-trx-*-dbg. Change-Id: I160dd83b265dcda52762a9f9c7eac9337928da35 --- M debian/control 1 file changed, 9 insertions(+), 17 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-trx refs/changes/46/7946/1 diff --git a/debian/control b/debian/control index cae44d4..73e2a7a 100644 --- a/debian/control +++ b/debian/control @@ -22,7 +22,15 @@ Maintainer: Ivan Klyuchnikov Depends: osmo-trx-uhd Architecture: all -Description: Virtual package for osmo-trx-uhd +Description: Metapackage for osmo-trx-uhd + +Package: osmo-trx-dbg +Architecture: any +Section: debug +Priority: extra +Depends: osmo-trx-uhd (= ${binary:Version}), osmo-trx-usrp1 (= ${binary:Version}), ${misc:Depends} +Description: Debug symbols for the osmo-trx-* + Make debugging possible Package: osmo-trx-uhd Architecture: any @@ -43,14 +51,6 @@ between different telecommunication associations for developing new generations of mobile phone networks. (post-2G/GSM) -Package: osmo-trx-uhd-dbg -Architecture: any -Section: debug -Priority: extra -Depends: osmo-trx-uhd (= ${binary:Version}), ${misc:Depends} -Description: Debug symbols for the osmo-trx-uhd - Make debugging possible - Package: osmo-trx-usrp1 Architecture: any Depends: ${shlibs:Depends}, ${misc:Depends} @@ -69,11 +69,3 @@ 3GPP is the "3rd Generation Partnership Project" which is the collaboration between different telecommunication associations for developing new generations of mobile phone networks. (post-2G/GSM) - -Package: osmo-trx-usrp1-dbg -Architecture: any -Section: debug -Priority: extra -Depends: osmo-trx-usrp1 (= ${binary:Version}), ${misc:Depends} -Description: Debug symbols for the osmo-trx-usrp1 - Make debugging possible -- To view, visit https://gerrit.osmocom.org/7946 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I160dd83b265dcda52762a9f9c7eac9337928da35 Gerrit-PatchSet: 1 Gerrit-Project: osmo-trx Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol From gerrit-no-reply at lists.osmocom.org Sat Apr 28 00:02:09 2018 From: gerrit-no-reply at lists.osmocom.org (Pau Espin Pedrol) Date: Sat, 28 Apr 2018 00:02:09 +0000 Subject: [PATCH] osmo-trx[master]: build: Fix OBS build for ARM Message-ID: Review at https://gerrit.osmocom.org/7947 build: Fix OBS build for ARM Change-Id: Ic6b408d684e2bb58af71ec04ced7e73e0d38ffcd --- M tests/Transceiver52M/Makefile.am 1 file changed, 3 insertions(+), 2 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-trx refs/changes/47/7947/1 diff --git a/tests/Transceiver52M/Makefile.am b/tests/Transceiver52M/Makefile.am index 778d64d..06db5b0 100644 --- a/tests/Transceiver52M/Makefile.am +++ b/tests/Transceiver52M/Makefile.am @@ -8,10 +8,11 @@ convolve_test convolve_test_SOURCES = convolve_test.c +convolve_test_CFLAGS = $(AM_CFLAGS) convolve_test_LDADD = $(COMMON_LA) $(ARCH_LA) if HAVE_SSE3 -convolve_test_CFLAGS = $(AM_CFLAGS) $(SIMD_FLAGS) +convolve_test_CFLAGS += $(SIMD_FLAGS) endif if HAVE_SSE4_1 -convolve_test_CFLAGS = $(AM_CFLAGS) $(SIMD_FLAGS) +convolve_test_CFLAGS += $(SIMD_FLAGS) endif -- To view, visit https://gerrit.osmocom.org/7947 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Ic6b408d684e2bb58af71ec04ced7e73e0d38ffcd Gerrit-PatchSet: 1 Gerrit-Project: osmo-trx Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol From gerrit-no-reply at lists.osmocom.org Sat Apr 28 08:15:54 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Sat, 28 Apr 2018 08:15:54 +0000 Subject: osmo-trx[master]: build: More OBS build failure fixes In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7944 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I3b25be0154053ae8eb5f0a24c39fb9a229130fcf Gerrit-PatchSet: 1 Gerrit-Project: osmo-trx Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Sat Apr 28 08:16:04 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Sat, 28 Apr 2018 08:16:04 +0000 Subject: osmo-trx[master]: jenkins.sh: Enable build of osmo-trx-usrp1 In-Reply-To: References: Message-ID: Patch Set 3: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7938 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I44a978fdd7fac683520be3586d84783e5e13de5f Gerrit-PatchSet: 3 Gerrit-Project: osmo-trx Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Pau Espin Pedrol Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Sat Apr 28 08:16:11 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Sat, 28 Apr 2018 08:16:11 +0000 Subject: osmo-trx[master]: debian: Remove osmo-trx-usrp1 until we can build libusrp1.deb In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7945 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I43163755a29014fe1f098e994f8df79d853c90f8 Gerrit-PatchSet: 1 Gerrit-Project: osmo-trx Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Sat Apr 28 08:16:17 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Sat, 28 Apr 2018 08:16:17 +0000 Subject: osmo-trx[master]: debian: Fix OBS build In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7946 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I160dd83b265dcda52762a9f9c7eac9337928da35 Gerrit-PatchSet: 1 Gerrit-Project: osmo-trx Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Sat Apr 28 08:16:33 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Sat, 28 Apr 2018 08:16:33 +0000 Subject: osmo-trx[master]: build: Fix OBS build for ARM In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7947 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Ic6b408d684e2bb58af71ec04ced7e73e0d38ffcd Gerrit-PatchSet: 1 Gerrit-Project: osmo-trx Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Sat Apr 28 08:16:44 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Sat, 28 Apr 2018 08:16:44 +0000 Subject: [MERGED] osmo-trx[master]: build: Fix OBS build for ARM In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: build: Fix OBS build for ARM ...................................................................... build: Fix OBS build for ARM Change-Id: Ic6b408d684e2bb58af71ec04ced7e73e0d38ffcd --- M tests/Transceiver52M/Makefile.am 1 file changed, 3 insertions(+), 2 deletions(-) Approvals: Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/tests/Transceiver52M/Makefile.am b/tests/Transceiver52M/Makefile.am index 778d64d..06db5b0 100644 --- a/tests/Transceiver52M/Makefile.am +++ b/tests/Transceiver52M/Makefile.am @@ -8,10 +8,11 @@ convolve_test convolve_test_SOURCES = convolve_test.c +convolve_test_CFLAGS = $(AM_CFLAGS) convolve_test_LDADD = $(COMMON_LA) $(ARCH_LA) if HAVE_SSE3 -convolve_test_CFLAGS = $(AM_CFLAGS) $(SIMD_FLAGS) +convolve_test_CFLAGS += $(SIMD_FLAGS) endif if HAVE_SSE4_1 -convolve_test_CFLAGS = $(AM_CFLAGS) $(SIMD_FLAGS) +convolve_test_CFLAGS += $(SIMD_FLAGS) endif -- To view, visit https://gerrit.osmocom.org/7947 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: Ic6b408d684e2bb58af71ec04ced7e73e0d38ffcd Gerrit-PatchSet: 1 Gerrit-Project: osmo-trx Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder From gerrit-no-reply at lists.osmocom.org Sat Apr 28 08:16:45 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Sat, 28 Apr 2018 08:16:45 +0000 Subject: [MERGED] osmo-trx[master]: debian: Fix OBS build In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: debian: Fix OBS build ...................................................................... debian: Fix OBS build osmo-trx is a metapackage, no need for .install file. Debug files are always put into osmo-trx-dbg, no osmo-trx-*-dbg. Change-Id: I160dd83b265dcda52762a9f9c7eac9337928da35 --- M debian/control 1 file changed, 9 insertions(+), 17 deletions(-) Approvals: Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/debian/control b/debian/control index cae44d4..73e2a7a 100644 --- a/debian/control +++ b/debian/control @@ -22,7 +22,15 @@ Maintainer: Ivan Klyuchnikov Depends: osmo-trx-uhd Architecture: all -Description: Virtual package for osmo-trx-uhd +Description: Metapackage for osmo-trx-uhd + +Package: osmo-trx-dbg +Architecture: any +Section: debug +Priority: extra +Depends: osmo-trx-uhd (= ${binary:Version}), osmo-trx-usrp1 (= ${binary:Version}), ${misc:Depends} +Description: Debug symbols for the osmo-trx-* + Make debugging possible Package: osmo-trx-uhd Architecture: any @@ -43,14 +51,6 @@ between different telecommunication associations for developing new generations of mobile phone networks. (post-2G/GSM) -Package: osmo-trx-uhd-dbg -Architecture: any -Section: debug -Priority: extra -Depends: osmo-trx-uhd (= ${binary:Version}), ${misc:Depends} -Description: Debug symbols for the osmo-trx-uhd - Make debugging possible - Package: osmo-trx-usrp1 Architecture: any Depends: ${shlibs:Depends}, ${misc:Depends} @@ -69,11 +69,3 @@ 3GPP is the "3rd Generation Partnership Project" which is the collaboration between different telecommunication associations for developing new generations of mobile phone networks. (post-2G/GSM) - -Package: osmo-trx-usrp1-dbg -Architecture: any -Section: debug -Priority: extra -Depends: osmo-trx-usrp1 (= ${binary:Version}), ${misc:Depends} -Description: Debug symbols for the osmo-trx-usrp1 - Make debugging possible -- To view, visit https://gerrit.osmocom.org/7946 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: I160dd83b265dcda52762a9f9c7eac9337928da35 Gerrit-PatchSet: 1 Gerrit-Project: osmo-trx Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder From gerrit-no-reply at lists.osmocom.org Sat Apr 28 08:16:47 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Sat, 28 Apr 2018 08:16:47 +0000 Subject: [MERGED] osmo-trx[master]: debian: Remove osmo-trx-usrp1 until we can build libusrp1.deb In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: debian: Remove osmo-trx-usrp1 until we can build libusrp1.deb ...................................................................... debian: Remove osmo-trx-usrp1 until we can build libusrp1.deb Change-Id: I43163755a29014fe1f098e994f8df79d853c90f8 --- D debian/osmo-trx-usrp1.install 1 file changed, 0 insertions(+), 1 deletion(-) Approvals: Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/debian/osmo-trx-usrp1.install b/debian/osmo-trx-usrp1.install deleted file mode 100644 index 1b76249..0000000 --- a/debian/osmo-trx-usrp1.install +++ /dev/null @@ -1 +0,0 @@ -/usr/bin/osmo-trx-usrp1 -- To view, visit https://gerrit.osmocom.org/7945 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: I43163755a29014fe1f098e994f8df79d853c90f8 Gerrit-PatchSet: 1 Gerrit-Project: osmo-trx Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder From gerrit-no-reply at lists.osmocom.org Sat Apr 28 08:16:47 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Sat, 28 Apr 2018 08:16:47 +0000 Subject: [MERGED] osmo-trx[master]: jenkins.sh: Enable build of osmo-trx-usrp1 In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: jenkins.sh: Enable build of osmo-trx-usrp1 ...................................................................... jenkins.sh: Enable build of osmo-trx-usrp1 Change-Id: I44a978fdd7fac683520be3586d84783e5e13de5f --- M contrib/jenkins.sh 1 file changed, 2 insertions(+), 1 deletion(-) Approvals: Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/contrib/jenkins.sh b/contrib/jenkins.sh index e600e01..59f68f7 100755 --- a/contrib/jenkins.sh +++ b/contrib/jenkins.sh @@ -64,6 +64,7 @@ mkdir "$deps" || true osmo-build-dep.sh libosmocore "" "--enable-sanitize --disable-doxygen --disable-pcsc" +osmo-build-dep.sh libusrp export PKG_CONFIG_PATH="$inst/lib/pkgconfig:$PKG_CONFIG_PATH" export LD_LIBRARY_PATH="$inst/lib" @@ -78,7 +79,7 @@ cd "$base" autoreconf --install --force -./configure --enable-sanitize $INSTR +./configure --enable-sanitize --with-uhd --with-usrp1 $INSTR $MAKE $PARALLEL_MAKE $MAKE check \ || cat-testlogs.sh -- To view, visit https://gerrit.osmocom.org/7938 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: I44a978fdd7fac683520be3586d84783e5e13de5f Gerrit-PatchSet: 3 Gerrit-Project: osmo-trx Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Pau Espin Pedrol From gerrit-no-reply at lists.osmocom.org Sat Apr 28 08:16:48 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Sat, 28 Apr 2018 08:16:48 +0000 Subject: [MERGED] osmo-trx[master]: build: More OBS build failure fixes In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: build: More OBS build failure fixes ...................................................................... build: More OBS build failure fixes It seems the order in which static code and -lfoo is passed to the linker matters. Change-Id: I3b25be0154053ae8eb5f0a24c39fb9a229130fcf --- M Transceiver52M/Makefile.am 1 file changed, 4 insertions(+), 4 deletions(-) Approvals: Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/Transceiver52M/Makefile.am b/Transceiver52M/Makefile.am index d6dec2d..bb253bb 100644 --- a/Transceiver52M/Makefile.am +++ b/Transceiver52M/Makefile.am @@ -84,9 +84,9 @@ bin_PROGRAMS += osmo-trx-uhd osmo_trx_uhd_SOURCES = osmo-trx.cpp osmo_trx_uhd_LDADD = \ + $(builddir)/device/uhd/libdevice.la \ $(COMMON_LDADD) \ - $(UHD_LIBS) \ - $(builddir)/device/uhd/libdevice.la + $(UHD_LIBS) osmo_trx_uhd_CPPFLAGS = $(AM_CPPFLAGS) $(UHD_CFLAGS) endif @@ -94,8 +94,8 @@ bin_PROGRAMS += osmo-trx-usrp1 osmo_trx_usrp1_SOURCES = osmo-trx.cpp osmo_trx_usrp1_LDADD = \ + $(builddir)/device/usrp1/libdevice.la \ $(COMMON_LDADD) \ - $(USRP_LIBS) \ - $(builddir)/device/usrp1/libdevice.la + $(USRP_LIBS) osmo_trx_usrp1_CPPFLAGS = $(AM_CPPFLAGS) $(USRP_CFLAGS) endif -- To view, visit https://gerrit.osmocom.org/7944 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: I3b25be0154053ae8eb5f0a24c39fb9a229130fcf Gerrit-PatchSet: 1 Gerrit-Project: osmo-trx Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder From gerrit-no-reply at lists.osmocom.org Sat Apr 28 08:24:15 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Sat, 28 Apr 2018 08:24:15 +0000 Subject: libusrp[master]: Add debian directory In-Reply-To: References: Message-ID: Patch Set 5: Code-Review-1 I don't think the failure is OBS specific. I get the same problem when building with Debian's native pdebuild locally: make[1]: Entering directory '/build/libusrp-0.0.1' sed -i "/dependency_libs/ s/'.*'/''/" `find . -name '*.la'` dh_install dh_install: Please use dh_missing --list-missing/--fail-missing instead dh_install: This feature will be removed in compat 12. dh_missing: usr/lib/x86_64-linux-gnu/libusrp.la exists in debian/tmp but is not installed to anywhere dh_missing: missing files, aborting The following debhelper tools have reported what they installed (with files per package) * dh_install: libusrp-dev (4), libusrp-firmware (10), libusrp-utils (2), libusrp1 (2) If the missing files are installed by another tool, please file a bug against it. When filing the report, if the tool is not part of debhelper itself, please reference the "Logging helpers and dh_missing" section from the "PROGRAMMING" guide for debhelper (10.6.3+). (in the debhelper package: /usr/share/doc/debhelper/PROGRAMMING.gz) Be sure to test with dpkg-buildpackage -A/-B as the results may vary when only a subset is built For a short-term work-around: Add the files to debian/not-installed dh_install: dh_missing --fail-missing returned exit code 2 debian/rules:23: recipe for target 'override_dh_install' failed -- To view, visit https://gerrit.osmocom.org/7936 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I5ff1d76f533b9ac68ab3f2c70ead6b66f4413b4f Gerrit-PatchSet: 5 Gerrit-Project: libusrp Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Pau Espin Pedrol Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Sat Apr 28 09:07:53 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Sat, 28 Apr 2018 09:07:53 +0000 Subject: [PATCH] libusrp[master]: Add debian directory In-Reply-To: References: Message-ID: Hello Pau Espin Pedrol, Jenkins Builder, I'd like you to reexamine a change. Please visit https://gerrit.osmocom.org/7936 to look at the new patch set (#6). Add debian directory Related: OS#3218 Change-Id: I5ff1d76f533b9ac68ab3f2c70ead6b66f4413b4f --- A debian/changelog A debian/compat A debian/control A debian/copyright A debian/libusrp-dev.install A debian/libusrp-doc.install A debian/libusrp-firmware.install A debian/libusrp-utils.install A debian/libusrp1.install A debian/rules A debian/source/format 11 files changed, 138 insertions(+), 0 deletions(-) git pull ssh://gerrit.osmocom.org:29418/libusrp refs/changes/36/7936/6 diff --git a/debian/changelog b/debian/changelog new file mode 100644 index 0000000..1ce0ac4 --- /dev/null +++ b/debian/changelog @@ -0,0 +1,5 @@ +libusrp (3.4.2) unstable; urgency=medium + + * Initial release + + -- Harald Welte Sat, 28 Apr 2018 10:06:51 +0000 diff --git a/debian/compat b/debian/compat new file mode 100644 index 0000000..ec63514 --- /dev/null +++ b/debian/compat @@ -0,0 +1 @@ +9 diff --git a/debian/control b/debian/control new file mode 100644 index 0000000..7982c27 --- /dev/null +++ b/debian/control @@ -0,0 +1,50 @@ +Source: libusrp +Priority: optional +Maintainer: Pau Espin Pedrol +Build-Depends: debhelper (>=9), + dh-autoreconf, + autotools-dev, + autoconf, + automake, + doxygen, + libtool, + pkg-config, + libusb-1.0-0-dev, + libboost-all-dev +Standards-Version: 3.9.8 +Section: libs +Homepage: https://osmocom.org/projects/osmotrx/ +Vcs-Git: git://git.osmocom.org/libusrp +Vcs-Browser: https://git.osmocom.org/libusrp + +Package: libusrp1 +Architecture: any +Depends: ${shlibs:Depends}, ${misc:Depends} +Description: gnuradio based driver library for the USRP1 SDR + Gnuradio removed libusrp as it switched to UHD support, including USRP1 + devices. However, USRP1 on UHD doesn't support timestamps, so this library + remains needed for applications that use timestamps such as osmo-trx. To find + out how this library was forked from gnuradio, check libusrp.git commit + description ec6adccbbdda1a4614089aaf52f9e1bab75494e7. + +Package: libusrp-dev +Section: libdevel +Architecture: any +Depends: libusrp1 (= ${binary:Version}), ${misc:Depends} +Description: gnuradio based driver library for the USRP1 SDR - dev files + +Package: libusrp-firmware +Architecture: any +Depends: libusrp1 (= ${binary:Version}), ${misc:Depends} +Description: gnuradio based driver library for the USRP1 SDR - firmware files + +Package: libusrp-utils +Architecture: any +Depends: libusrp1 (= ${binary:Version}), ${misc:Depends} +Description: gnuradio based driver library for the USRP1 SDR - several tools + +Package: libusrp-doc +Section: doc +Architecture: all +Depends: libusrp1 (= ${binary:Version}), ${misc:Depends}, libjs-jquery +Description: Documentation for gnuradio based driver library for the USRP1 SDR diff --git a/debian/copyright b/debian/copyright new file mode 100644 index 0000000..92b1cd8 --- /dev/null +++ b/debian/copyright @@ -0,0 +1,41 @@ +Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ +Upstream-Name: libusrp +Source: git://git.osmocom.org/libusrp + +Files: * +Copyright: 2003-2010 Free Software Foundation, Inc. +License: GPL-3.0+ + This package is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + . + This package is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + . + You should have received a copy of the GNU General Public License + along with this program. If not, see + . + On Debian systems, the complete text of the GNU General Public License + Version 3 can be found in "/usr/share/common-licenses/GPL-3". + +Files: debian/* +Copyright: 2018 by sysmocom s.f.m.c. GmbH +License: GPL-3.0+ + This package is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + . + This package is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + . + You should have received a copy of the GNU General Public License + along with this program. If not, see + . + On Debian systems, the complete text of the GNU General Public License + Version 3 can be found in "/usr/share/common-licenses/GPL-3". diff --git a/debian/libusrp-dev.install b/debian/libusrp-dev.install new file mode 100644 index 0000000..2f5a97b --- /dev/null +++ b/debian/libusrp-dev.install @@ -0,0 +1,4 @@ +usr/include/* +usr/lib/*/lib*.so +usr/lib/*/lib*.la +usr/lib/*/pkgconfig/* diff --git a/debian/libusrp-doc.install b/debian/libusrp-doc.install new file mode 100644 index 0000000..d9d4f6f --- /dev/null +++ b/debian/libusrp-doc.install @@ -0,0 +1 @@ +usr/share/doc/* diff --git a/debian/libusrp-firmware.install b/debian/libusrp-firmware.install new file mode 100644 index 0000000..741c2eb --- /dev/null +++ b/debian/libusrp-firmware.install @@ -0,0 +1 @@ +usr/share/usrp/*/*.rbf diff --git a/debian/libusrp-utils.install b/debian/libusrp-utils.install new file mode 100644 index 0000000..19487bb --- /dev/null +++ b/debian/libusrp-utils.install @@ -0,0 +1,2 @@ +usr/bin/usrper +usr/bin/usrp_cal_dc_offset diff --git a/debian/libusrp1.install b/debian/libusrp1.install new file mode 100644 index 0000000..3ddde58 --- /dev/null +++ b/debian/libusrp1.install @@ -0,0 +1 @@ +usr/lib/*/lib*.so.* diff --git a/debian/rules b/debian/rules new file mode 100755 index 0000000..04669b3 --- /dev/null +++ b/debian/rules @@ -0,0 +1,31 @@ +#!/usr/bin/make -f + +DEBIAN := $(shell dpkg-parsechangelog | grep ^Version: | cut -d' ' -f2) +DEBVERS := $(shell echo '$(DEBIAN)' | cut -d- -f1) +VERSION := $(shell echo '$(DEBVERS)' | sed -e 's/[+-].*//' -e 's/~//g') + +export DEB_BUILD_MAINT_OPTIONS = hardening=+all + +#export DH_VERBOSE=1 + + +%: + dh $@ --with autoreconf --fail-missing + +override_dh_autoreconf: + echo $(VERSION) > .tarball-version + dh_autoreconf + +override_dh_auto_configure: + dh_auto_configure -- --enable-doxygen + +override_dh_install: + sed -i "/dependency_libs/ s/'.*'/''/" `find . -name '*.la'` + dh_install + +override_dh_clean: + dh_clean + rm -f tests/package.m4 tests/testsuite .version .tarball-version + +override_dh_auto_test: + dh_auto_test || (find . -name testsuite.log -exec cat {} \; ; false) diff --git a/debian/source/format b/debian/source/format new file mode 100644 index 0000000..89ae9db --- /dev/null +++ b/debian/source/format @@ -0,0 +1 @@ +3.0 (native) -- To view, visit https://gerrit.osmocom.org/7936 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newpatchset Gerrit-Change-Id: I5ff1d76f533b9ac68ab3f2c70ead6b66f4413b4f Gerrit-PatchSet: 6 Gerrit-Project: libusrp Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Pau Espin Pedrol From gerrit-no-reply at lists.osmocom.org Sat Apr 28 09:08:36 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Sat, 28 Apr 2018 09:08:36 +0000 Subject: libusrp[master]: Add debian directory In-Reply-To: References: Message-ID: Patch Set 6: Code-Review+2 this version builds with "dpkg-buildpackage" as well as "pdebuild" on my local machine. -- To view, visit https://gerrit.osmocom.org/7936 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I5ff1d76f533b9ac68ab3f2c70ead6b66f4413b4f Gerrit-PatchSet: 6 Gerrit-Project: libusrp Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Pau Espin Pedrol Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Sat Apr 28 09:09:02 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Sat, 28 Apr 2018 09:09:02 +0000 Subject: [MERGED] libusrp[master]: Add debian directory In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: Add debian directory ...................................................................... Add debian directory Related: OS#3218 Change-Id: I5ff1d76f533b9ac68ab3f2c70ead6b66f4413b4f --- A debian/changelog A debian/compat A debian/control A debian/copyright A debian/libusrp-dev.install A debian/libusrp-doc.install A debian/libusrp-firmware.install A debian/libusrp-utils.install A debian/libusrp1.install A debian/rules A debian/source/format 11 files changed, 138 insertions(+), 0 deletions(-) Approvals: Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/debian/changelog b/debian/changelog new file mode 100644 index 0000000..1ce0ac4 --- /dev/null +++ b/debian/changelog @@ -0,0 +1,5 @@ +libusrp (3.4.2) unstable; urgency=medium + + * Initial release + + -- Harald Welte Sat, 28 Apr 2018 10:06:51 +0000 diff --git a/debian/compat b/debian/compat new file mode 100644 index 0000000..ec63514 --- /dev/null +++ b/debian/compat @@ -0,0 +1 @@ +9 diff --git a/debian/control b/debian/control new file mode 100644 index 0000000..7982c27 --- /dev/null +++ b/debian/control @@ -0,0 +1,50 @@ +Source: libusrp +Priority: optional +Maintainer: Pau Espin Pedrol +Build-Depends: debhelper (>=9), + dh-autoreconf, + autotools-dev, + autoconf, + automake, + doxygen, + libtool, + pkg-config, + libusb-1.0-0-dev, + libboost-all-dev +Standards-Version: 3.9.8 +Section: libs +Homepage: https://osmocom.org/projects/osmotrx/ +Vcs-Git: git://git.osmocom.org/libusrp +Vcs-Browser: https://git.osmocom.org/libusrp + +Package: libusrp1 +Architecture: any +Depends: ${shlibs:Depends}, ${misc:Depends} +Description: gnuradio based driver library for the USRP1 SDR + Gnuradio removed libusrp as it switched to UHD support, including USRP1 + devices. However, USRP1 on UHD doesn't support timestamps, so this library + remains needed for applications that use timestamps such as osmo-trx. To find + out how this library was forked from gnuradio, check libusrp.git commit + description ec6adccbbdda1a4614089aaf52f9e1bab75494e7. + +Package: libusrp-dev +Section: libdevel +Architecture: any +Depends: libusrp1 (= ${binary:Version}), ${misc:Depends} +Description: gnuradio based driver library for the USRP1 SDR - dev files + +Package: libusrp-firmware +Architecture: any +Depends: libusrp1 (= ${binary:Version}), ${misc:Depends} +Description: gnuradio based driver library for the USRP1 SDR - firmware files + +Package: libusrp-utils +Architecture: any +Depends: libusrp1 (= ${binary:Version}), ${misc:Depends} +Description: gnuradio based driver library for the USRP1 SDR - several tools + +Package: libusrp-doc +Section: doc +Architecture: all +Depends: libusrp1 (= ${binary:Version}), ${misc:Depends}, libjs-jquery +Description: Documentation for gnuradio based driver library for the USRP1 SDR diff --git a/debian/copyright b/debian/copyright new file mode 100644 index 0000000..92b1cd8 --- /dev/null +++ b/debian/copyright @@ -0,0 +1,41 @@ +Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ +Upstream-Name: libusrp +Source: git://git.osmocom.org/libusrp + +Files: * +Copyright: 2003-2010 Free Software Foundation, Inc. +License: GPL-3.0+ + This package is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + . + This package is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + . + You should have received a copy of the GNU General Public License + along with this program. If not, see + . + On Debian systems, the complete text of the GNU General Public License + Version 3 can be found in "/usr/share/common-licenses/GPL-3". + +Files: debian/* +Copyright: 2018 by sysmocom s.f.m.c. GmbH +License: GPL-3.0+ + This package is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + . + This package is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + . + You should have received a copy of the GNU General Public License + along with this program. If not, see + . + On Debian systems, the complete text of the GNU General Public License + Version 3 can be found in "/usr/share/common-licenses/GPL-3". diff --git a/debian/libusrp-dev.install b/debian/libusrp-dev.install new file mode 100644 index 0000000..2f5a97b --- /dev/null +++ b/debian/libusrp-dev.install @@ -0,0 +1,4 @@ +usr/include/* +usr/lib/*/lib*.so +usr/lib/*/lib*.la +usr/lib/*/pkgconfig/* diff --git a/debian/libusrp-doc.install b/debian/libusrp-doc.install new file mode 100644 index 0000000..d9d4f6f --- /dev/null +++ b/debian/libusrp-doc.install @@ -0,0 +1 @@ +usr/share/doc/* diff --git a/debian/libusrp-firmware.install b/debian/libusrp-firmware.install new file mode 100644 index 0000000..741c2eb --- /dev/null +++ b/debian/libusrp-firmware.install @@ -0,0 +1 @@ +usr/share/usrp/*/*.rbf diff --git a/debian/libusrp-utils.install b/debian/libusrp-utils.install new file mode 100644 index 0000000..19487bb --- /dev/null +++ b/debian/libusrp-utils.install @@ -0,0 +1,2 @@ +usr/bin/usrper +usr/bin/usrp_cal_dc_offset diff --git a/debian/libusrp1.install b/debian/libusrp1.install new file mode 100644 index 0000000..3ddde58 --- /dev/null +++ b/debian/libusrp1.install @@ -0,0 +1 @@ +usr/lib/*/lib*.so.* diff --git a/debian/rules b/debian/rules new file mode 100755 index 0000000..04669b3 --- /dev/null +++ b/debian/rules @@ -0,0 +1,31 @@ +#!/usr/bin/make -f + +DEBIAN := $(shell dpkg-parsechangelog | grep ^Version: | cut -d' ' -f2) +DEBVERS := $(shell echo '$(DEBIAN)' | cut -d- -f1) +VERSION := $(shell echo '$(DEBVERS)' | sed -e 's/[+-].*//' -e 's/~//g') + +export DEB_BUILD_MAINT_OPTIONS = hardening=+all + +#export DH_VERBOSE=1 + + +%: + dh $@ --with autoreconf --fail-missing + +override_dh_autoreconf: + echo $(VERSION) > .tarball-version + dh_autoreconf + +override_dh_auto_configure: + dh_auto_configure -- --enable-doxygen + +override_dh_install: + sed -i "/dependency_libs/ s/'.*'/''/" `find . -name '*.la'` + dh_install + +override_dh_clean: + dh_clean + rm -f tests/package.m4 tests/testsuite .version .tarball-version + +override_dh_auto_test: + dh_auto_test || (find . -name testsuite.log -exec cat {} \; ; false) diff --git a/debian/source/format b/debian/source/format new file mode 100644 index 0000000..89ae9db --- /dev/null +++ b/debian/source/format @@ -0,0 +1 @@ +3.0 (native) -- To view, visit https://gerrit.osmocom.org/7936 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: I5ff1d76f533b9ac68ab3f2c70ead6b66f4413b4f Gerrit-PatchSet: 6 Gerrit-Project: libusrp Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Pau Espin Pedrol From admin at opensuse.org Sat Apr 28 09:24:02 2018 From: admin at opensuse.org (OBS Notification) Date: Sat, 28 Apr 2018 09:24:02 +0000 Subject: Build failure of network:osmocom:nightly/libosmo-netif in xUbuntu_18.04/x86_64 In-Reply-To: References: Message-ID: <5ae43dcc6b672_2a6a12626803505d9@build.opensuse.org> Visit https://build.opensuse.org/package/live_build_log/network:osmocom:nightly/libosmo-netif/xUbuntu_18.04/x86_64 Package network:osmocom:nightly/libosmo-netif failed to build in xUbuntu_18.04/x86_64 Check out the package for editing: osc checkout network:osmocom:nightly libosmo-netif Last lines of build log: [ 66s] | #define HAVE_STDINT_H 1 [ 66s] | #define HAVE_UNISTD_H 1 [ 66s] | #define HAVE_DLFCN_H 1 [ 66s] | #define LT_OBJDIR ".libs/" [ 66s] | #define STDC_HEADERS 1 [ 66s] | #define HAVE_EXECINFO_H 1 [ 66s] | #define HAVE_SYS_SELECT_H 1 [ 66s] | #define HAVE_SYS_SOCKET_H 1 [ 66s] | #define HAVE_SYSLOG_H 1 [ 66s] | #define HAVE_CTYPE_H 1 [ 66s] | #define HAVE_LIBSCTP 1 [ 66s] | [ 66s] | configure: exit 0 [ 66s] [ 66s] debian/rules:31: recipe for target 'override_dh_auto_test' failed [ 66s] make[1]: *** [override_dh_auto_test] Error 1 [ 66s] make[1]: Leaving directory '/usr/src/packages/BUILD' [ 66s] debian/rules:13: recipe for target 'build' failed [ 66s] make: *** [build] Error 2 [ 66s] dpkg-buildpackage: error: debian/rules build subprocess returned exit status 2 [ 66s] [ 66s] build82 failed "build libosmo-netif_0.1.1.20180427.dsc" at Sat Apr 28 09:23:51 UTC 2018. [ 66s] [ 66s] ### VM INTERACTION START ### [ 69s] [ 64.207020] reboot: Power down [ 70s] ### VM INTERACTION END ### [ 70s] [ 70s] build82 failed "build libosmo-netif_0.1.1.20180427.dsc" at Sat Apr 28 09:23:55 UTC 2018. [ 70s] -- Configure notifications at https://build.opensuse.org/user/notifications openSUSE Build Service (https://build.opensuse.org/) From admin at opensuse.org Sat Apr 28 09:24:36 2018 From: admin at opensuse.org (OBS Notification) Date: Sat, 28 Apr 2018 09:24:36 +0000 Subject: Build failure of network:osmocom:nightly/osmo-trx in xUbuntu_18.04/x86_64 In-Reply-To: References: Message-ID: <5ae43deb5a5f7_2a6a126268035062d@build.opensuse.org> Visit https://build.opensuse.org/package/live_build_log/network:osmocom:nightly/osmo-trx/xUbuntu_18.04/x86_64 Package network:osmocom:nightly/osmo-trx failed to build in xUbuntu_18.04/x86_64 Check out the package for editing: osc checkout network:osmocom:nightly osmo-trx Last lines of build log: [ 186s] ./device/uhd/.libs/libdevice.a(UHDDevice.o):/usr/include/boost/system/error_code.hpp:206: more undefined references to `boost::system::generic_category()' follow [ 186s] ./device/uhd/.libs/libdevice.a(UHDDevice.o): In function `__static_initialization_and_destruction_0(int, int) [clone .constprop.388]': [ 186s] /usr/include/boost/system/error_code.hpp:210: undefined reference to `boost::system::system_category()' [ 186s] collect2: error: ld returned 1 exit status [ 186s] Makefile:657: recipe for target 'osmo-trx-uhd' failed [ 186s] make[4]: *** [osmo-trx-uhd] Error 1 [ 186s] make[4]: Leaving directory '/usr/src/packages/BUILD/Transceiver52M' [ 186s] Makefile:793: recipe for target 'all-recursive' failed [ 186s] make[3]: *** [all-recursive] Error 1 [ 186s] make[3]: Leaving directory '/usr/src/packages/BUILD/Transceiver52M' [ 186s] Makefile:507: recipe for target 'all-recursive' failed [ 186s] make[2]: *** [all-recursive] Error 1 [ 186s] make[2]: Leaving directory '/usr/src/packages/BUILD' [ 186s] Makefile:438: recipe for target 'all' failed [ 186s] make[1]: *** [all] Error 2 [ 186s] make[1]: Leaving directory '/usr/src/packages/BUILD' [ 186s] dh_auto_build: make -j1 returned exit code 2 [ 186s] debian/rules:6: recipe for target 'build' failed [ 186s] make: *** [build] Error 2 [ 186s] dpkg-buildpackage: error: debian/rules build subprocess returned exit status 2 [ 186s] [ 186s] lamb59 failed "build osmo-trx_0.2.0.20180427.dsc" at Sat Apr 28 09:24:30 UTC 2018. [ 186s] [ 186s] ### VM INTERACTION START ### [ 189s] [ 179.724154] reboot: Power down [ 189s] ### VM INTERACTION END ### [ 189s] [ 189s] lamb59 failed "build osmo-trx_0.2.0.20180427.dsc" at Sat Apr 28 09:24:33 UTC 2018. [ 189s] -- Configure notifications at https://build.opensuse.org/user/notifications openSUSE Build Service (https://build.opensuse.org/) From admin at opensuse.org Sat Apr 28 09:26:02 2018 From: admin at opensuse.org (OBS Notification) Date: Sat, 28 Apr 2018 09:26:02 +0000 Subject: Build failure of network:osmocom:nightly/osmo-mgw in xUbuntu_18.04/x86_64 In-Reply-To: References: Message-ID: <5ae43e47698de_2a6a1262680350766@build.opensuse.org> Visit https://build.opensuse.org/package/live_build_log/network:osmocom:nightly/osmo-mgw/xUbuntu_18.04/x86_64 Package network:osmocom:nightly/osmo-mgw failed to build in xUbuntu_18.04/x86_64 Check out the package for editing: osc checkout network:osmocom:nightly osmo-mgw Last lines of build log: [ 92s] #define PACKAGE "osmo-mgw" [ 92s] #define VERSION "1.2.0.20180427" [ 92s] #define STDC_HEADERS 1 [ 92s] #define HAVE_SYS_TYPES_H 1 [ 92s] #define HAVE_SYS_STAT_H 1 [ 92s] #define HAVE_STDLIB_H 1 [ 92s] #define HAVE_STRING_H 1 [ 92s] #define HAVE_MEMORY_H 1 [ 92s] #define HAVE_STRINGS_H 1 [ 92s] #define HAVE_INTTYPES_H 1 [ 92s] #define HAVE_STDINT_H 1 [ 92s] #define HAVE_UNISTD_H 1 [ 92s] #define HAVE_DLFCN_H 1 [ 92s] #define LT_OBJDIR ".libs/" [ 92s] [ 92s] configure: exit 1 [ 92s] dh_auto_configure: ./configure --build=x86_64-linux-gnu --prefix=/usr --includedir=\${prefix}/include --mandir=\${prefix}/share/man --infodir=\${prefix}/share/info --sysconfdir=/etc --localstatedir=/var --disable-silent-rules --libdir=\${prefix}/lib/x86_64-linux-gnu --libexecdir=\${prefix}/lib/x86_64-linux-gnu --disable-maintainer-mode --disable-dependency-tracking returned exit code 1 [ 92s] debian/rules:17: recipe for target 'build' failed [ 92s] make: *** [build] Error 2 [ 92s] dpkg-buildpackage: error: debian/rules build subprocess returned exit status 2 [ 92s] [ 92s] build32 failed "build osmo-mgw_1.2.0.20180427.dsc" at Sat Apr 28 09:25:49 UTC 2018. [ 92s] [ 92s] ### VM INTERACTION START ### [ 95s] [ 86.018166] reboot: Power down [ 95s] ### VM INTERACTION END ### [ 95s] [ 95s] build32 failed "build osmo-mgw_1.2.0.20180427.dsc" at Sat Apr 28 09:25:53 UTC 2018. [ 95s] -- Configure notifications at https://build.opensuse.org/user/notifications openSUSE Build Service (https://build.opensuse.org/) From admin at opensuse.org Sat Apr 28 09:26:19 2018 From: admin at opensuse.org (OBS Notification) Date: Sat, 28 Apr 2018 09:26:19 +0000 Subject: Build failure of network:osmocom:nightly/libosmo-sccp in xUbuntu_18.04/x86_64 In-Reply-To: References: Message-ID: <5ae43e485d395_2a6a12626803509b0@build.opensuse.org> Visit https://build.opensuse.org/package/live_build_log/network:osmocom:nightly/libosmo-sccp/xUbuntu_18.04/x86_64 Package network:osmocom:nightly/libosmo-sccp failed to build in xUbuntu_18.04/x86_64 Check out the package for editing: osc checkout network:osmocom:nightly libosmo-sccp Last lines of build log: [ 107s] #define HAVE_SYS_TYPES_H 1 [ 107s] #define HAVE_SYS_STAT_H 1 [ 107s] #define HAVE_STDLIB_H 1 [ 107s] #define HAVE_STRING_H 1 [ 107s] #define HAVE_MEMORY_H 1 [ 107s] #define HAVE_STRINGS_H 1 [ 107s] #define HAVE_INTTYPES_H 1 [ 107s] #define HAVE_STDINT_H 1 [ 107s] #define HAVE_UNISTD_H 1 [ 107s] #define HAVE_DLFCN_H 1 [ 107s] #define LT_OBJDIR ".libs/" [ 107s] [ 107s] configure: exit 1 [ 107s] dh_auto_configure: ./configure --build=x86_64-linux-gnu --prefix=/usr --includedir=\${prefix}/include --mandir=\${prefix}/share/man --infodir=\${prefix}/share/info --sysconfdir=/etc --localstatedir=/var --disable-silent-rules --libdir=\${prefix}/lib/x86_64-linux-gnu --libexecdir=\${prefix}/lib/x86_64-linux-gnu --disable-maintainer-mode --disable-dependency-tracking --enable-static returned exit code 1 [ 107s] debian/rules:31: recipe for target 'override_dh_auto_configure' failed [ 107s] make[1]: *** [override_dh_auto_configure] Error 2 [ 107s] make[1]: Leaving directory '/usr/src/packages/BUILD' [ 107s] debian/rules:12: recipe for target 'build' failed [ 107s] make: *** [build] Error 2 [ 107s] dpkg-buildpackage: error: debian/rules build subprocess returned exit status 2 [ 107s] [ 107s] lamb06 failed "build libosmo-sccp_0.8.1.20180427.dsc" at Sat Apr 28 09:26:04 UTC 2018. [ 107s] [ 107s] ### VM INTERACTION START ### [ 110s] [ 100.200440] reboot: Power down [ 110s] ### VM INTERACTION END ### [ 110s] [ 110s] lamb06 failed "build libosmo-sccp_0.8.1.20180427.dsc" at Sat Apr 28 09:26:08 UTC 2018. [ 110s] -- Configure notifications at https://build.opensuse.org/user/notifications openSUSE Build Service (https://build.opensuse.org/) From admin at opensuse.org Sat Apr 28 09:28:36 2018 From: admin at opensuse.org (OBS Notification) Date: Sat, 28 Apr 2018 09:28:36 +0000 Subject: Build failure of network:osmocom:latest/openbsc in xUbuntu_18.04/x86_64 In-Reply-To: References: Message-ID: <5ae43ede41640_2a6a1262680351569@build.opensuse.org> Visit https://build.opensuse.org/package/live_build_log/network:osmocom:latest/openbsc/xUbuntu_18.04/x86_64 Package network:osmocom:latest/openbsc failed to build in xUbuntu_18.04/x86_64 Check out the package for editing: osc checkout network:osmocom:latest openbsc Last lines of build log: [ 153s] [ 153s] Makefile:736: recipe for target 'check-local' failed [ 153s] make[5]: *** [check-local] Error 1 [ 153s] make[5]: Leaving directory '/usr/src/packages/BUILD/openbsc/tests' [ 153s] Makefile:586: recipe for target 'check-am' failed [ 153s] make[4]: *** [check-am] Error 2 [ 153s] make[4]: Leaving directory '/usr/src/packages/BUILD/openbsc/tests' [ 153s] Makefile:438: recipe for target 'check-recursive' failed [ 153s] make[3]: *** [check-recursive] Error 1 [ 153s] make[3]: Leaving directory '/usr/src/packages/BUILD/openbsc/tests' [ 153s] Makefile:520: recipe for target 'check-recursive' failed [ 153s] make[2]: *** [check-recursive] Error 1 [ 153s] make[2]: Leaving directory '/usr/src/packages/BUILD/openbsc' [ 153s] Makefile:811: recipe for target 'check' failed [ 153s] make[1]: *** [check] Error 2 [ 153s] make[1]: Leaving directory '/usr/src/packages/BUILD/openbsc' [ 153s] dh_auto_test: cd openbsc && make -j1 check VERBOSE=1 returned exit code 2 [ 153s] debian/rules:13: recipe for target 'build' failed [ 153s] make: *** [build] Error 2 [ 153s] dpkg-buildpackage: error: debian/rules build subprocess returned exit status 2 [ 153s] [ 153s] lamb62 failed "build openbsc_1.0.0.dsc" at Sat Apr 28 09:28:25 UTC 2018. [ 153s] [ 153s] ### VM INTERACTION START ### [ 156s] [ 146.752206] reboot: Power down [ 156s] ### VM INTERACTION END ### [ 156s] [ 156s] lamb62 failed "build openbsc_1.0.0.dsc" at Sat Apr 28 09:28:28 UTC 2018. [ 156s] -- Configure notifications at https://build.opensuse.org/user/notifications openSUSE Build Service (https://build.opensuse.org/) From admin at opensuse.org Sat Apr 28 09:29:10 2018 From: admin at opensuse.org (OBS Notification) Date: Sat, 28 Apr 2018 09:29:10 +0000 Subject: Build failure of network:osmocom:nightly/openbsc in xUbuntu_18.04/x86_64 In-Reply-To: References: Message-ID: <5ae43ef842c07_2a6a12626803516d1@build.opensuse.org> Visit https://build.opensuse.org/package/live_build_log/network:osmocom:nightly/openbsc/xUbuntu_18.04/x86_64 Package network:osmocom:nightly/openbsc failed to build in xUbuntu_18.04/x86_64 Check out the package for editing: osc checkout network:osmocom:nightly openbsc Last lines of build log: [ 135s] ../../include/openbsc/mgcp_internal.h:28:10: fatal error: osmocom/netif/jibuf.h: No such file or directory [ 135s] #include [ 135s] ^~~~~~~~~~~~~~~~~~~~~~~ [ 135s] compilation terminated. [ 135s] Makefile:455: recipe for target 'mgcp_protocol.o' failed [ 135s] make[4]: *** [mgcp_protocol.o] Error 1 [ 135s] make[4]: Leaving directory '/usr/src/packages/BUILD/openbsc/src/libmgcp' [ 135s] Makefile:447: recipe for target 'all-recursive' failed [ 135s] make[3]: *** [all-recursive] Error 1 [ 135s] make[3]: Leaving directory '/usr/src/packages/BUILD/openbsc/src' [ 135s] Makefile:518: recipe for target 'all-recursive' failed [ 135s] make[2]: *** [all-recursive] Error 1 [ 135s] make[2]: Leaving directory '/usr/src/packages/BUILD/openbsc' [ 135s] Makefile:427: recipe for target 'all' failed [ 135s] make[1]: *** [all] Error 2 [ 135s] make[1]: Leaving directory '/usr/src/packages/BUILD/openbsc' [ 135s] dh_auto_build: cd openbsc && make -j1 returned exit code 2 [ 135s] debian/rules:13: recipe for target 'build' failed [ 135s] make: *** [build] Error 2 [ 135s] dpkg-buildpackage: error: debian/rules build subprocess returned exit status 2 [ 135s] [ 135s] cloud106 failed "build openbsc_1.0.0.20180427.dsc" at Sat Apr 28 09:28:57 UTC 2018. [ 135s] [ 135s] ### VM INTERACTION START ### [ 138s] [ 118.322490] reboot: Power down [ 139s] ### VM INTERACTION END ### [ 139s] [ 139s] cloud106 failed "build openbsc_1.0.0.20180427.dsc" at Sat Apr 28 09:29:01 UTC 2018. [ 139s] -- Configure notifications at https://build.opensuse.org/user/notifications openSUSE Build Service (https://build.opensuse.org/) From gerrit-no-reply at lists.osmocom.org Sat Apr 28 11:19:02 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Sat, 28 Apr 2018 11:19:02 +0000 Subject: osmo-ci[master]: scripts: osmocom-*-packages.sh: Build libusrp In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 Verified+1 -- To view, visit https://gerrit.osmocom.org/7937 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Ic742db854b8a3aba6ddc85ffb41fc6f4697c572d Gerrit-PatchSet: 1 Gerrit-Project: osmo-ci Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Pau Espin Pedrol Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Sat Apr 28 11:19:06 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Sat, 28 Apr 2018 11:19:06 +0000 Subject: [MERGED] osmo-ci[master]: scripts: osmocom-*-packages.sh: Build libusrp In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: scripts: osmocom-*-packages.sh: Build libusrp ...................................................................... scripts: osmocom-*-packages.sh: Build libusrp Depends on: I5ff1d76f533b9ac68ab3f2c70ead6b66f4413b4f Change-Id: Ic742db854b8a3aba6ddc85ffb41fc6f4697c572d --- M scripts/osmocom-latest-packages.sh M scripts/osmocom-nightly-packages.sh 2 files changed, 3 insertions(+), 0 deletions(-) Approvals: Harald Welte: Looks good to me, approved; Verified Objections: Pau Espin Pedrol: I would prefer this is not merged as is diff --git a/scripts/osmocom-latest-packages.sh b/scripts/osmocom-latest-packages.sh index 4783185..7073b07 100755 --- a/scripts/osmocom-latest-packages.sh +++ b/scripts/osmocom-latest-packages.sh @@ -65,6 +65,7 @@ libsmpp34 libasn1c libgtpnl + libusrp osmo-iuh osmo-ggsn osmo-sgsn diff --git a/scripts/osmocom-nightly-packages.sh b/scripts/osmocom-nightly-packages.sh index 8db2d57..c9eb2e0 100755 --- a/scripts/osmocom-nightly-packages.sh +++ b/scripts/osmocom-nightly-packages.sh @@ -127,6 +127,7 @@ checkout libsmpp34 checkout libasn1c checkout libgtpnl + checkout libusrp checkout osmo-iuh checkout osmo-ggsn checkout osmo-sgsn @@ -149,6 +150,7 @@ build libsmpp34 build libasn1c build libgtpnl + build libusrp build osmo-iuh build osmo-ggsn build osmo-sgsn -- To view, visit https://gerrit.osmocom.org/7937 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: Ic742db854b8a3aba6ddc85ffb41fc6f4697c572d Gerrit-PatchSet: 1 Gerrit-Project: osmo-ci Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Pau Espin Pedrol From admin at opensuse.org Sat Apr 28 11:25:49 2018 From: admin at opensuse.org (OBS Notification) Date: Sat, 28 Apr 2018 11:25:49 +0000 Subject: Build failure of network:osmocom:nightly/osmo-trx in Debian_8.0/x86_64 In-Reply-To: References: Message-ID: <5ae45a3e8bf1a_2a6a126268037041e@build.opensuse.org> Visit https://build.opensuse.org/package/live_build_log/network:osmocom:nightly/osmo-trx/Debian_8.0/x86_64 Package network:osmocom:nightly/osmo-trx failed to build in Debian_8.0/x86_64 Check out the package for editing: osc checkout network:osmocom:nightly osmo-trx Last lines of build log: [ 174s] make[4]: Entering directory '/usr/src/packages/BUILD/tests' [ 174s] make[4]: Nothing to be done for 'install-exec-am'. [ 174s] make[4]: Nothing to be done for 'install-data-am'. [ 174s] make[4]: Leaving directory '/usr/src/packages/BUILD/tests' [ 174s] make[3]: Leaving directory '/usr/src/packages/BUILD/tests' [ 174s] make[2]: Leaving directory '/usr/src/packages/BUILD/tests' [ 174s] make[2]: Entering directory '/usr/src/packages/BUILD' [ 174s] make[3]: Entering directory '/usr/src/packages/BUILD' [ 174s] make[3]: Nothing to be done for 'install-exec-am'. [ 174s] make[3]: Nothing to be done for 'install-data-am'. [ 174s] make[3]: Leaving directory '/usr/src/packages/BUILD' [ 174s] make[2]: Leaving directory '/usr/src/packages/BUILD' [ 174s] make[1]: Leaving directory '/usr/src/packages/BUILD' [ 174s] dh_install [ 174s] cp: cannot stat 'debian/tmp//usr/bin/osmo-trx-usrp1': No such file or directory [ 174s] dh_install: cp -a debian/tmp//usr/bin/osmo-trx-usrp1 debian/osmo-trx-usrp1///usr/bin/ returned exit code 1 [ 174s] debian/rules:6: recipe for target 'binary' failed [ 174s] make: *** [binary] Error 2 [ 174s] dpkg-buildpackage: error: fakeroot debian/rules binary gave error exit status 2 [ 174s] [ 174s] lamb16 failed "build osmo-trx_0.2.0.20180427.dsc" at Sat Apr 28 11:25:33 UTC 2018. [ 174s] [ 174s] ### VM INTERACTION START ### [ 175s] Powering off. [ 175s] [ 166.855942] reboot: Power down [ 175s] ### VM INTERACTION END ### [ 175s] [ 175s] lamb16 failed "build osmo-trx_0.2.0.20180427.dsc" at Sat Apr 28 11:25:34 UTC 2018. [ 175s] -- Configure notifications at https://build.opensuse.org/user/notifications openSUSE Build Service (https://build.opensuse.org/) From gerrit-no-reply at lists.osmocom.org Sat Apr 28 11:38:14 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Sat, 28 Apr 2018 11:38:14 +0000 Subject: [PATCH] libosmo-netif[master]: osmux: Fix use of uninitialized memory in osmux_out_handle Message-ID: Review at https://gerrit.osmocom.org/7948 osmux: Fix use of uninitialized memory in osmux_out_handle In Change-Id: I2efed6d726a1b8e77e686c7a5fe1940d3f4901a7 we're adding a new member to 'struct osmux_out_handle' which is not initialized. Rather than initializing this single new member, let's do a memset() over the entire osmux_out_handle at the beginnign of osmux_xfrm_output_init(). Change-Id: I751e9414c6de2413a9f977e5ae5655ebfd114f45 Closes: OS#3219 --- M src/osmux.c 1 file changed, 1 insertion(+), 0 deletions(-) git pull ssh://gerrit.osmocom.org:29418/libosmo-netif refs/changes/48/7948/1 diff --git a/src/osmux.c b/src/osmux.c index 872588d..46170ba 100644 --- a/src/osmux.c +++ b/src/osmux.c @@ -1001,6 +1001,7 @@ void osmux_xfrm_output_init(struct osmux_out_handle *h, uint32_t rtp_ssrc) { + memset(h, 0, sizeof(*h)); h->rtp_seq = (uint16_t)random(); h->rtp_timestamp = (uint32_t)random(); h->rtp_ssrc = rtp_ssrc; -- To view, visit https://gerrit.osmocom.org/7948 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I751e9414c6de2413a9f977e5ae5655ebfd114f45 Gerrit-PatchSet: 1 Gerrit-Project: libosmo-netif Gerrit-Branch: master Gerrit-Owner: Harald Welte From admin at opensuse.org Sat Apr 28 11:47:14 2018 From: admin at opensuse.org (OBS Notification) Date: Sat, 28 Apr 2018 11:47:14 +0000 Subject: Build failure of network:osmocom:nightly/libosmo-netif in xUbuntu_17.04/x86_64 In-Reply-To: References: Message-ID: <5ae45f48f0d95_2a6a126268037612e@build.opensuse.org> Visit https://build.opensuse.org/package/live_build_log/network:osmocom:nightly/libosmo-netif/xUbuntu_17.04/x86_64 Package network:osmocom:nightly/libosmo-netif failed to build in xUbuntu_17.04/x86_64 Check out the package for editing: osc checkout network:osmocom:nightly libosmo-netif Last lines of build log: [ 108s] -sys={0.040000}, mono={0.040000}: 2nd osmux frame arrives [ 108s] -sys={0.040000}, mono={0.040000}: flushing, all packet should be transmitted immediately [ 108s] -sys={0.040000}, mono={0.040000}: dequeue: seq=53 ts=980 enqueued=8 [ 108s] -sys={0.040000}, mono={0.040000}: dequeue: seq=54 ts=1140 enqueued=7 [ 108s] -sys={0.040000}, mono={0.040000}: dequeue: seq=55 ts=1300 enqueued=6 [ 108s] -sys={0.040000}, mono={0.040000}: dequeue: seq=56 ts=1460 enqueued=5 [ 108s] -sys={0.040000}, mono={0.040000}: dequeue: seq=57 ts=1620 enqueued=4 [ 108s] -sys={0.040000}, mono={0.040000}: dequeue: seq=58 ts=1780 enqueued=3 [ 108s] -sys={0.040000}, mono={0.040000}: dequeue: seq=59 ts=1940 enqueued=2 [ 108s] -sys={0.040000}, mono={0.040000}: dequeue: seq=60 ts=2100 enqueued=1 [ 108s] -sys={0.040000}, mono={0.040000}: dequeue: seq=61 ts=2260 enqueued=0 [ 108s] -OK: Test passed [ 108s] ./testsuite.at:13: exit code was 139, expected 0 [ 108s] 2. testsuite.at:10: 2. osmux_test2 (testsuite.at:10): FAILED (testsuite.at:13) [ 108s] debian/rules:31: recipe for target 'override_dh_auto_test' failed [ 108s] make[1]: *** [override_dh_auto_test] Error 1 [ 108s] make[1]: Leaving directory '/usr/src/packages/BUILD' [ 108s] debian/rules:13: recipe for target 'build' failed [ 108s] make: *** [build] Error 2 [ 108s] dpkg-buildpackage: error: debian/rules build gave error exit status 2 [ 108s] [ 108s] lamb25 failed "build libosmo-netif_0.1.1.20180428.dsc" at Sat Apr 28 11:47:07 UTC 2018. [ 108s] [ 108s] ### VM INTERACTION START ### [ 111s] [ 103.967891] reboot: Power down [ 111s] ### VM INTERACTION END ### [ 111s] [ 111s] lamb25 failed "build libosmo-netif_0.1.1.20180428.dsc" at Sat Apr 28 11:47:10 UTC 2018. [ 111s] -- Configure notifications at https://build.opensuse.org/user/notifications openSUSE Build Service (https://build.opensuse.org/) From admin at opensuse.org Sat Apr 28 11:47:14 2018 From: admin at opensuse.org (OBS Notification) Date: Sat, 28 Apr 2018 11:47:14 +0000 Subject: Build failure of network:osmocom:nightly/libosmo-netif in Debian_9.0/x86_64 In-Reply-To: References: Message-ID: <5ae45f4847c6b_2a6a1262680375928@build.opensuse.org> Visit https://build.opensuse.org/package/live_build_log/network:osmocom:nightly/libosmo-netif/Debian_9.0/x86_64 Package network:osmocom:nightly/libosmo-netif failed to build in Debian_9.0/x86_64 Check out the package for editing: osc checkout network:osmocom:nightly libosmo-netif Last lines of build log: [ 95s] -sys={0.040000}, mono={0.040000}: 2nd osmux frame arrives [ 95s] -sys={0.040000}, mono={0.040000}: flushing, all packet should be transmitted immediately [ 95s] -sys={0.040000}, mono={0.040000}: dequeue: seq=53 ts=980 enqueued=8 [ 95s] -sys={0.040000}, mono={0.040000}: dequeue: seq=54 ts=1140 enqueued=7 [ 95s] -sys={0.040000}, mono={0.040000}: dequeue: seq=55 ts=1300 enqueued=6 [ 95s] -sys={0.040000}, mono={0.040000}: dequeue: seq=56 ts=1460 enqueued=5 [ 95s] -sys={0.040000}, mono={0.040000}: dequeue: seq=57 ts=1620 enqueued=4 [ 95s] -sys={0.040000}, mono={0.040000}: dequeue: seq=58 ts=1780 enqueued=3 [ 95s] -sys={0.040000}, mono={0.040000}: dequeue: seq=59 ts=1940 enqueued=2 [ 95s] -sys={0.040000}, mono={0.040000}: dequeue: seq=60 ts=2100 enqueued=1 [ 95s] -sys={0.040000}, mono={0.040000}: dequeue: seq=61 ts=2260 enqueued=0 [ 95s] -OK: Test passed [ 95s] ./testsuite.at:13: exit code was 139, expected 0 [ 95s] 2. testsuite.at:10: 2. osmux_test2 (testsuite.at:10): FAILED (testsuite.at:13) [ 95s] debian/rules:31: recipe for target 'override_dh_auto_test' failed [ 95s] make[1]: *** [override_dh_auto_test] Error 1 [ 95s] make[1]: Leaving directory '/usr/src/packages/BUILD' [ 95s] debian/rules:13: recipe for target 'build' failed [ 95s] make: *** [build] Error 2 [ 95s] dpkg-buildpackage: error: debian/rules build gave error exit status 2 [ 95s] [ 95s] lamb16 failed "build libosmo-netif_0.1.1.20180428.dsc" at Sat Apr 28 11:46:55 UTC 2018. [ 95s] [ 95s] ### VM INTERACTION START ### [ 97s] [ 87.826677] reboot: Power down [ 97s] ### VM INTERACTION END ### [ 97s] [ 97s] lamb16 failed "build libosmo-netif_0.1.1.20180428.dsc" at Sat Apr 28 11:46:58 UTC 2018. [ 97s] -- Configure notifications at https://build.opensuse.org/user/notifications openSUSE Build Service (https://build.opensuse.org/) From gerrit-no-reply at lists.osmocom.org Sat Apr 28 12:00:52 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Sat, 28 Apr 2018 12:00:52 +0000 Subject: libosmo-netif[master]: osmux: Fix use of uninitialized memory in osmux_out_handle In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7948 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I751e9414c6de2413a9f977e5ae5655ebfd114f45 Gerrit-PatchSet: 1 Gerrit-Project: libosmo-netif Gerrit-Branch: master Gerrit-Owner: Harald Welte Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Sat Apr 28 12:00:56 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Sat, 28 Apr 2018 12:00:56 +0000 Subject: [MERGED] libosmo-netif[master]: osmux: Fix use of uninitialized memory in osmux_out_handle In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: osmux: Fix use of uninitialized memory in osmux_out_handle ...................................................................... osmux: Fix use of uninitialized memory in osmux_out_handle In Change-Id: I2efed6d726a1b8e77e686c7a5fe1940d3f4901a7 we're adding a new member to 'struct osmux_out_handle' which is not initialized. Rather than initializing this single new member, let's do a memset() over the entire osmux_out_handle at the beginnign of osmux_xfrm_output_init(). Change-Id: I751e9414c6de2413a9f977e5ae5655ebfd114f45 Closes: OS#3219 --- M src/osmux.c 1 file changed, 1 insertion(+), 0 deletions(-) Approvals: Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/src/osmux.c b/src/osmux.c index 872588d..46170ba 100644 --- a/src/osmux.c +++ b/src/osmux.c @@ -1001,6 +1001,7 @@ void osmux_xfrm_output_init(struct osmux_out_handle *h, uint32_t rtp_ssrc) { + memset(h, 0, sizeof(*h)); h->rtp_seq = (uint16_t)random(); h->rtp_timestamp = (uint32_t)random(); h->rtp_ssrc = rtp_ssrc; -- To view, visit https://gerrit.osmocom.org/7948 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: I751e9414c6de2413a9f977e5ae5655ebfd114f45 Gerrit-PatchSet: 1 Gerrit-Project: libosmo-netif Gerrit-Branch: master Gerrit-Owner: Harald Welte Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder From gerrit-no-reply at lists.osmocom.org Sat Apr 28 12:21:44 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Sat, 28 Apr 2018 12:21:44 +0000 Subject: [PATCH] osmo-trx[master]: Revert "debian: Remove osmo-trx-usrp1 until we can build lib... Message-ID: Review at https://gerrit.osmocom.org/7949 Revert "debian: Remove osmo-trx-usrp1 until we can build libusrp1.deb" This reverts commit 295b938d51889d6db39251130642d45262ca039a, as we now have libusrp built in OBS Change-Id: Ia1311f1e236e6aea4acc08d3f234d53e46789cf9 --- A debian/osmo-trx-usrp1.install 1 file changed, 1 insertion(+), 0 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-trx refs/changes/49/7949/1 diff --git a/debian/osmo-trx-usrp1.install b/debian/osmo-trx-usrp1.install new file mode 100644 index 0000000..1b76249 --- /dev/null +++ b/debian/osmo-trx-usrp1.install @@ -0,0 +1 @@ +/usr/bin/osmo-trx-usrp1 -- To view, visit https://gerrit.osmocom.org/7949 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Ia1311f1e236e6aea4acc08d3f234d53e46789cf9 Gerrit-PatchSet: 1 Gerrit-Project: osmo-trx Gerrit-Branch: master Gerrit-Owner: Harald Welte From gerrit-no-reply at lists.osmocom.org Sat Apr 28 12:21:45 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Sat, 28 Apr 2018 12:21:45 +0000 Subject: [PATCH] osmo-trx[master]: debian/control: Remove "Maintainer" from binary package section Message-ID: Review at https://gerrit.osmocom.org/7950 debian/control: Remove "Maintainer" from binary package section This resolves the following warning: dpkg-source: warning: unknown information field 'Maintainer' in input data in package's section of control info file Change-Id: I7a8d8c54eabccc5cedf7ad0a2bccf91f32f1bfdf --- M debian/control 1 file changed, 0 insertions(+), 1 deletion(-) git pull ssh://gerrit.osmocom.org:29418/osmo-trx refs/changes/50/7950/1 diff --git a/debian/control b/debian/control index 73e2a7a..4705e64 100644 --- a/debian/control +++ b/debian/control @@ -19,7 +19,6 @@ Homepage: https://projects.osmocom.org/projects/osmotrx Package: osmo-trx -Maintainer: Ivan Klyuchnikov Depends: osmo-trx-uhd Architecture: all Description: Metapackage for osmo-trx-uhd -- To view, visit https://gerrit.osmocom.org/7950 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I7a8d8c54eabccc5cedf7ad0a2bccf91f32f1bfdf Gerrit-PatchSet: 1 Gerrit-Project: osmo-trx Gerrit-Branch: master Gerrit-Owner: Harald Welte From gerrit-no-reply at lists.osmocom.org Sat Apr 28 12:21:45 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Sat, 28 Apr 2018 12:21:45 +0000 Subject: [PATCH] osmo-trx[master]: debian/rules: Make sure we always require libusrp Message-ID: Review at https://gerrit.osmocom.org/7951 debian/rules: Make sure we always require libusrp Change-Id: Id9c9188a24617f83efa0e1fcf54f9e0dd223e365 --- M debian/rules 1 file changed, 3 insertions(+), 0 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-trx refs/changes/51/7951/1 diff --git a/debian/rules b/debian/rules index e6e8c75..c700bce 100755 --- a/debian/rules +++ b/debian/rules @@ -8,5 +8,8 @@ override_dh_shlibdeps: dh_shlibdeps --dpkg-shlibdeps-params=--ignore-missing-info +override_dh_auto_configure: + dh_auto_configure -- --with-usrp1 + override_dh_strip: dh_strip --dbg-package=osmo-trx-dbg -- To view, visit https://gerrit.osmocom.org/7951 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Id9c9188a24617f83efa0e1fcf54f9e0dd223e365 Gerrit-PatchSet: 1 Gerrit-Project: osmo-trx Gerrit-Branch: master Gerrit-Owner: Harald Welte From gerrit-no-reply at lists.osmocom.org Sat Apr 28 12:23:53 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Sat, 28 Apr 2018 12:23:53 +0000 Subject: osmo-trx[master]: Revert "debian: Remove osmo-trx-usrp1 until we can build lib... In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7949 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Ia1311f1e236e6aea4acc08d3f234d53e46789cf9 Gerrit-PatchSet: 1 Gerrit-Project: osmo-trx Gerrit-Branch: master Gerrit-Owner: Harald Welte Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Sat Apr 28 12:23:57 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Sat, 28 Apr 2018 12:23:57 +0000 Subject: osmo-trx[master]: debian/control: Remove "Maintainer" from binary package section In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7950 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I7a8d8c54eabccc5cedf7ad0a2bccf91f32f1bfdf Gerrit-PatchSet: 1 Gerrit-Project: osmo-trx Gerrit-Branch: master Gerrit-Owner: Harald Welte Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Sat Apr 28 12:24:00 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Sat, 28 Apr 2018 12:24:00 +0000 Subject: osmo-trx[master]: debian/rules: Make sure we always require libusrp In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7951 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Id9c9188a24617f83efa0e1fcf54f9e0dd223e365 Gerrit-PatchSet: 1 Gerrit-Project: osmo-trx Gerrit-Branch: master Gerrit-Owner: Harald Welte Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Sat Apr 28 12:24:49 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Sat, 28 Apr 2018 12:24:49 +0000 Subject: [MERGED] osmo-trx[master]: Revert "debian: Remove osmo-trx-usrp1 until we can build lib... In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: Revert "debian: Remove osmo-trx-usrp1 until we can build libusrp1.deb" ...................................................................... Revert "debian: Remove osmo-trx-usrp1 until we can build libusrp1.deb" This reverts commit 295b938d51889d6db39251130642d45262ca039a, as we now have libusrp built in OBS Change-Id: Ia1311f1e236e6aea4acc08d3f234d53e46789cf9 --- A debian/osmo-trx-usrp1.install 1 file changed, 1 insertion(+), 0 deletions(-) Approvals: Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/debian/osmo-trx-usrp1.install b/debian/osmo-trx-usrp1.install new file mode 100644 index 0000000..1b76249 --- /dev/null +++ b/debian/osmo-trx-usrp1.install @@ -0,0 +1 @@ +/usr/bin/osmo-trx-usrp1 -- To view, visit https://gerrit.osmocom.org/7949 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: Ia1311f1e236e6aea4acc08d3f234d53e46789cf9 Gerrit-PatchSet: 1 Gerrit-Project: osmo-trx Gerrit-Branch: master Gerrit-Owner: Harald Welte Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder From gerrit-no-reply at lists.osmocom.org Sat Apr 28 12:24:49 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Sat, 28 Apr 2018 12:24:49 +0000 Subject: [MERGED] osmo-trx[master]: debian/control: Remove "Maintainer" from binary package section In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: debian/control: Remove "Maintainer" from binary package section ...................................................................... debian/control: Remove "Maintainer" from binary package section This resolves the following warning: dpkg-source: warning: unknown information field 'Maintainer' in input data in package's section of control info file Change-Id: I7a8d8c54eabccc5cedf7ad0a2bccf91f32f1bfdf --- M debian/control 1 file changed, 0 insertions(+), 1 deletion(-) Approvals: Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/debian/control b/debian/control index 73e2a7a..4705e64 100644 --- a/debian/control +++ b/debian/control @@ -19,7 +19,6 @@ Homepage: https://projects.osmocom.org/projects/osmotrx Package: osmo-trx -Maintainer: Ivan Klyuchnikov Depends: osmo-trx-uhd Architecture: all Description: Metapackage for osmo-trx-uhd -- To view, visit https://gerrit.osmocom.org/7950 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: I7a8d8c54eabccc5cedf7ad0a2bccf91f32f1bfdf Gerrit-PatchSet: 1 Gerrit-Project: osmo-trx Gerrit-Branch: master Gerrit-Owner: Harald Welte Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder From gerrit-no-reply at lists.osmocom.org Sat Apr 28 12:24:49 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Sat, 28 Apr 2018 12:24:49 +0000 Subject: [MERGED] osmo-trx[master]: debian/rules: Make sure we always require libusrp In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: debian/rules: Make sure we always require libusrp ...................................................................... debian/rules: Make sure we always require libusrp Change-Id: Id9c9188a24617f83efa0e1fcf54f9e0dd223e365 --- M debian/rules 1 file changed, 3 insertions(+), 0 deletions(-) Approvals: Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/debian/rules b/debian/rules index e6e8c75..c700bce 100755 --- a/debian/rules +++ b/debian/rules @@ -8,5 +8,8 @@ override_dh_shlibdeps: dh_shlibdeps --dpkg-shlibdeps-params=--ignore-missing-info +override_dh_auto_configure: + dh_auto_configure -- --with-usrp1 + override_dh_strip: dh_strip --dbg-package=osmo-trx-dbg -- To view, visit https://gerrit.osmocom.org/7951 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: Id9c9188a24617f83efa0e1fcf54f9e0dd223e365 Gerrit-PatchSet: 1 Gerrit-Project: osmo-trx Gerrit-Branch: master Gerrit-Owner: Harald Welte Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder From gerrit-no-reply at lists.osmocom.org Sat Apr 28 12:25:15 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Sat, 28 Apr 2018 12:25:15 +0000 Subject: [PATCH] osmo-trx[master]: debian: Ensure USRP1 firmware is part of osmo-trx-usrp1 Message-ID: Review at https://gerrit.osmocom.org/7952 debian: Ensure USRP1 firmware is part of osmo-trx-usrp1 The std_inband.rbf files are required to operate USRP1 with timestamps Change-Id: I9b3e937ea1941953dcdcaf57cfec9575cd5a8a9c --- M debian/osmo-trx-usrp1.install 1 file changed, 2 insertions(+), 0 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-trx refs/changes/52/7952/1 diff --git a/debian/osmo-trx-usrp1.install b/debian/osmo-trx-usrp1.install index 1b76249..c7e54b1 100644 --- a/debian/osmo-trx-usrp1.install +++ b/debian/osmo-trx-usrp1.install @@ -1 +1,3 @@ /usr/bin/osmo-trx-usrp1 +/usr/share/usrp/rev2/std_inband.rbf +/usr/share/usrp/rev4/std_inband.rbf -- To view, visit https://gerrit.osmocom.org/7952 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I9b3e937ea1941953dcdcaf57cfec9575cd5a8a9c Gerrit-PatchSet: 1 Gerrit-Project: osmo-trx Gerrit-Branch: master Gerrit-Owner: Harald Welte From gerrit-no-reply at lists.osmocom.org Sat Apr 28 12:25:26 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Sat, 28 Apr 2018 12:25:26 +0000 Subject: osmo-trx[master]: debian: Ensure USRP1 firmware is part of osmo-trx-usrp1 In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7952 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I9b3e937ea1941953dcdcaf57cfec9575cd5a8a9c Gerrit-PatchSet: 1 Gerrit-Project: osmo-trx Gerrit-Branch: master Gerrit-Owner: Harald Welte Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Sat Apr 28 12:27:39 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Sat, 28 Apr 2018 12:27:39 +0000 Subject: [MERGED] osmo-trx[master]: debian: Ensure USRP1 firmware is part of osmo-trx-usrp1 In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: debian: Ensure USRP1 firmware is part of osmo-trx-usrp1 ...................................................................... debian: Ensure USRP1 firmware is part of osmo-trx-usrp1 The std_inband.rbf files are required to operate USRP1 with timestamps Change-Id: I9b3e937ea1941953dcdcaf57cfec9575cd5a8a9c --- M debian/osmo-trx-usrp1.install 1 file changed, 2 insertions(+), 0 deletions(-) Approvals: Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/debian/osmo-trx-usrp1.install b/debian/osmo-trx-usrp1.install index 1b76249..c7e54b1 100644 --- a/debian/osmo-trx-usrp1.install +++ b/debian/osmo-trx-usrp1.install @@ -1 +1,3 @@ /usr/bin/osmo-trx-usrp1 +/usr/share/usrp/rev2/std_inband.rbf +/usr/share/usrp/rev4/std_inband.rbf -- To view, visit https://gerrit.osmocom.org/7952 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: I9b3e937ea1941953dcdcaf57cfec9575cd5a8a9c Gerrit-PatchSet: 1 Gerrit-Project: osmo-trx Gerrit-Branch: master Gerrit-Owner: Harald Welte Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder From admin at opensuse.org Sat Apr 28 12:31:48 2018 From: admin at opensuse.org (OBS Notification) Date: Sat, 28 Apr 2018 12:31:48 +0000 Subject: Build failure of network:osmocom:nightly/osmo-trx in Debian_9.0/i586 In-Reply-To: References: Message-ID: <5ae469bb43b59_2a6a1262680394349@build.opensuse.org> Visit https://build.opensuse.org/package/live_build_log/network:osmocom:nightly/osmo-trx/Debian_9.0/i586 Package network:osmocom:nightly/osmo-trx failed to build in Debian_9.0/i586 Check out the package for editing: osc checkout network:osmocom:nightly osmo-trx Last lines of build log: [ 124s] #define HAVE_STRING_H 1 [ 124s] #define HAVE_MEMORY_H 1 [ 124s] #define HAVE_STRINGS_H 1 [ 124s] #define HAVE_INTTYPES_H 1 [ 124s] #define HAVE_STDINT_H 1 [ 124s] #define HAVE_UNISTD_H 1 [ 124s] #define HAVE_DLFCN_H 1 [ 124s] #define LT_OBJDIR ".libs/" [ 124s] #define STDC_HEADERS 1 [ 124s] #define HAVE_BYTESWAP_H 1 [ 124s] #define TIME_WITH_SYS_TIME 1 [ 124s] [ 124s] configure: exit 1 [ 124s] dh_auto_configure: ./configure --build=i686-linux-gnu --prefix=/usr --includedir=${prefix}/include --mandir=${prefix}/share/man --infodir=${prefix}/share/info --sysconfdir=/etc --localstatedir=/var --disable-silent-rules --libdir=${prefix}/lib/i386-linux-gnu --libexecdir=${prefix}/lib/i386-linux-gnu --disable-maintainer-mode --disable-dependency-tracking --with-usrp1 returned exit code 1 [ 124s] debian/rules:12: recipe for target 'override_dh_auto_configure' failed [ 124s] make[1]: *** [override_dh_auto_configure] Error 2 [ 124s] make[1]: Leaving directory '/usr/src/packages/BUILD' [ 124s] debian/rules:6: recipe for target 'build' failed [ 124s] make: *** [build] Error 2 [ 124s] dpkg-buildpackage: error: debian/rules build gave error exit status 2 [ 124s] [ 124s] lamb16 failed "build osmo-trx_0.2.0.20180428.dsc" at Sat Apr 28 12:31:37 UTC 2018. [ 124s] [ 124s] ### VM INTERACTION START ### [ 126s] [ 116.016333] reboot: Power down [ 126s] ### VM INTERACTION END ### [ 126s] [ 126s] lamb16 failed "build osmo-trx_0.2.0.20180428.dsc" at Sat Apr 28 12:31:40 UTC 2018. [ 126s] -- Configure notifications at https://build.opensuse.org/user/notifications openSUSE Build Service (https://build.opensuse.org/) From admin at opensuse.org Sat Apr 28 12:31:30 2018 From: admin at opensuse.org (OBS Notification) Date: Sat, 28 Apr 2018 12:31:30 +0000 Subject: Build failure of network:osmocom:nightly/osmo-trx in Debian_8.0/i586 In-Reply-To: References: Message-ID: <5ae469b9f0a95_2a6a12626803940a4@build.opensuse.org> Visit https://build.opensuse.org/package/live_build_log/network:osmocom:nightly/osmo-trx/Debian_8.0/i586 Package network:osmocom:nightly/osmo-trx failed to build in Debian_8.0/i586 Check out the package for editing: osc checkout network:osmocom:nightly osmo-trx Last lines of build log: [ 107s] #define HAVE_MEMORY_H 1 [ 107s] #define HAVE_STRINGS_H 1 [ 107s] #define HAVE_INTTYPES_H 1 [ 107s] #define HAVE_STDINT_H 1 [ 107s] #define HAVE_UNISTD_H 1 [ 107s] #define HAVE_DLFCN_H 1 [ 107s] #define LT_OBJDIR ".libs/" [ 107s] #define STDC_HEADERS 1 [ 107s] #define HAVE_BYTESWAP_H 1 [ 107s] #define TIME_WITH_SYS_TIME 1 [ 107s] [ 107s] configure: exit 1 [ 107s] dh_auto_configure: ./configure --build=i586-linux-gnu --prefix=/usr --includedir=${prefix}/include --mandir=${prefix}/share/man --infodir=${prefix}/share/info --sysconfdir=/etc --localstatedir=/var --libdir=${prefix}/lib/i386-linux-gnu --libexecdir=${prefix}/lib/i386-linux-gnu --disable-maintainer-mode --disable-dependency-tracking --with-usrp1 returned exit code 1 [ 107s] debian/rules:12: recipe for target 'override_dh_auto_configure' failed [ 107s] make[1]: *** [override_dh_auto_configure] Error 255 [ 107s] make[1]: Leaving directory '/usr/src/packages/BUILD' [ 107s] debian/rules:6: recipe for target 'build' failed [ 107s] make: *** [build] Error 2 [ 107s] dpkg-buildpackage: error: debian/rules build gave error exit status 2 [ 107s] [ 107s] lamb11 failed "build osmo-trx_0.2.0.20180428.dsc" at Sat Apr 28 12:31:21 UTC 2018. [ 107s] [ 107s] ### VM INTERACTION START ### [ 108s] Powering off. [ 108s] [ 99.891355] reboot: Power down [ 108s] ### VM INTERACTION END ### [ 108s] [ 108s] lamb11 failed "build osmo-trx_0.2.0.20180428.dsc" at Sat Apr 28 12:31:22 UTC 2018. [ 108s] -- Configure notifications at https://build.opensuse.org/user/notifications openSUSE Build Service (https://build.opensuse.org/) From admin at opensuse.org Sat Apr 28 12:31:48 2018 From: admin at opensuse.org (OBS Notification) Date: Sat, 28 Apr 2018 12:31:48 +0000 Subject: Build failure of network:osmocom:nightly/osmo-trx in xUbuntu_16.04/i586 In-Reply-To: References: Message-ID: <5ae469bae6a6b_2a6a126268039423a@build.opensuse.org> Visit https://build.opensuse.org/package/live_build_log/network:osmocom:nightly/osmo-trx/xUbuntu_16.04/i586 Package network:osmocom:nightly/osmo-trx failed to build in xUbuntu_16.04/i586 Check out the package for editing: osc checkout network:osmocom:nightly osmo-trx Last lines of build log: [ 113s] #define HAVE_STRING_H 1 [ 113s] #define HAVE_MEMORY_H 1 [ 113s] #define HAVE_STRINGS_H 1 [ 113s] #define HAVE_INTTYPES_H 1 [ 113s] #define HAVE_STDINT_H 1 [ 113s] #define HAVE_UNISTD_H 1 [ 113s] #define HAVE_DLFCN_H 1 [ 113s] #define LT_OBJDIR ".libs/" [ 113s] #define STDC_HEADERS 1 [ 113s] #define HAVE_BYTESWAP_H 1 [ 113s] #define TIME_WITH_SYS_TIME 1 [ 113s] [ 113s] configure: exit 1 [ 113s] dh_auto_configure: ./configure --build=i686-linux-gnu --prefix=/usr --includedir=${prefix}/include --mandir=${prefix}/share/man --infodir=${prefix}/share/info --sysconfdir=/etc --localstatedir=/var --disable-silent-rules --libdir=${prefix}/lib/i386-linux-gnu --libexecdir=${prefix}/lib/i386-linux-gnu --disable-maintainer-mode --disable-dependency-tracking --with-usrp1 returned exit code 1 [ 113s] debian/rules:12: recipe for target 'override_dh_auto_configure' failed [ 113s] make[1]: *** [override_dh_auto_configure] Error 255 [ 113s] make[1]: Leaving directory '/usr/src/packages/BUILD' [ 113s] debian/rules:6: recipe for target 'build' failed [ 113s] make: *** [build] Error 2 [ 113s] dpkg-buildpackage: error: debian/rules build gave error exit status 2 [ 113s] [ 113s] lamb20 failed "build osmo-trx_0.2.0.20180428.dsc" at Sat Apr 28 12:31:29 UTC 2018. [ 113s] [ 113s] ### VM INTERACTION START ### [ 115s] [ 107.327135] reboot: Power down [ 115s] ### VM INTERACTION END ### [ 115s] [ 115s] lamb20 failed "build osmo-trx_0.2.0.20180428.dsc" at Sat Apr 28 12:31:33 UTC 2018. [ 115s] -- Configure notifications at https://build.opensuse.org/user/notifications openSUSE Build Service (https://build.opensuse.org/) From admin at opensuse.org Sat Apr 28 12:31:30 2018 From: admin at opensuse.org (OBS Notification) Date: Sat, 28 Apr 2018 12:31:30 +0000 Subject: Build failure of network:osmocom:nightly/osmo-trx in Debian_9.0/x86_64 In-Reply-To: References: Message-ID: <5ae469b968880_2a6a1262680393880@build.opensuse.org> Visit https://build.opensuse.org/package/live_build_log/network:osmocom:nightly/osmo-trx/Debian_9.0/x86_64 Package network:osmocom:nightly/osmo-trx failed to build in Debian_9.0/x86_64 Check out the package for editing: osc checkout network:osmocom:nightly osmo-trx Last lines of build log: [ 72s] #define HAVE_STRING_H 1 [ 72s] #define HAVE_MEMORY_H 1 [ 72s] #define HAVE_STRINGS_H 1 [ 72s] #define HAVE_INTTYPES_H 1 [ 72s] #define HAVE_STDINT_H 1 [ 72s] #define HAVE_UNISTD_H 1 [ 72s] #define HAVE_DLFCN_H 1 [ 72s] #define LT_OBJDIR ".libs/" [ 72s] #define STDC_HEADERS 1 [ 72s] #define HAVE_BYTESWAP_H 1 [ 72s] #define TIME_WITH_SYS_TIME 1 [ 72s] [ 72s] configure: exit 1 [ 72s] dh_auto_configure: ./configure --build=x86_64-linux-gnu --prefix=/usr --includedir=${prefix}/include --mandir=${prefix}/share/man --infodir=${prefix}/share/info --sysconfdir=/etc --localstatedir=/var --disable-silent-rules --libdir=${prefix}/lib/x86_64-linux-gnu --libexecdir=${prefix}/lib/x86_64-linux-gnu --disable-maintainer-mode --disable-dependency-tracking --with-usrp1 returned exit code 1 [ 72s] debian/rules:12: recipe for target 'override_dh_auto_configure' failed [ 72s] make[1]: *** [override_dh_auto_configure] Error 2 [ 72s] make[1]: Leaving directory '/usr/src/packages/BUILD' [ 72s] debian/rules:6: recipe for target 'build' failed [ 72s] make: *** [build] Error 2 [ 72s] dpkg-buildpackage: error: debian/rules build gave error exit status 2 [ 72s] [ 72s] build70 failed "build osmo-trx_0.2.0.20180428.dsc" at Sat Apr 28 12:31:17 UTC 2018. [ 72s] [ 72s] ### VM INTERACTION START ### [ 75s] [ 67.924188] reboot: Power down [ 75s] ### VM INTERACTION END ### [ 75s] [ 75s] build70 failed "build osmo-trx_0.2.0.20180428.dsc" at Sat Apr 28 12:31:21 UTC 2018. [ 75s] -- Configure notifications at https://build.opensuse.org/user/notifications openSUSE Build Service (https://build.opensuse.org/) From admin at opensuse.org Sat Apr 28 12:31:48 2018 From: admin at opensuse.org (OBS Notification) Date: Sat, 28 Apr 2018 12:31:48 +0000 Subject: Build failure of network:osmocom:nightly/osmo-trx in xUbuntu_16.10/i586 In-Reply-To: References: Message-ID: <5ae469bb90ddb_2a6a126268039446f@build.opensuse.org> Visit https://build.opensuse.org/package/live_build_log/network:osmocom:nightly/osmo-trx/xUbuntu_16.10/i586 Package network:osmocom:nightly/osmo-trx failed to build in xUbuntu_16.10/i586 Check out the package for editing: osc checkout network:osmocom:nightly osmo-trx Last lines of build log: [ 123s] #define HAVE_STRING_H 1 [ 123s] #define HAVE_MEMORY_H 1 [ 123s] #define HAVE_STRINGS_H 1 [ 123s] #define HAVE_INTTYPES_H 1 [ 123s] #define HAVE_STDINT_H 1 [ 123s] #define HAVE_UNISTD_H 1 [ 123s] #define HAVE_DLFCN_H 1 [ 123s] #define LT_OBJDIR ".libs/" [ 123s] #define STDC_HEADERS 1 [ 123s] #define HAVE_BYTESWAP_H 1 [ 123s] #define TIME_WITH_SYS_TIME 1 [ 123s] [ 123s] configure: exit 1 [ 123s] dh_auto_configure: ./configure --build=i686-linux-gnu --prefix=/usr --includedir=${prefix}/include --mandir=${prefix}/share/man --infodir=${prefix}/share/info --sysconfdir=/etc --localstatedir=/var --disable-silent-rules --libdir=${prefix}/lib/i386-linux-gnu --libexecdir=${prefix}/lib/i386-linux-gnu --disable-maintainer-mode --disable-dependency-tracking --with-usrp1 returned exit code 1 [ 123s] debian/rules:12: recipe for target 'override_dh_auto_configure' failed [ 123s] make[1]: *** [override_dh_auto_configure] Error 2 [ 123s] make[1]: Leaving directory '/usr/src/packages/BUILD' [ 123s] debian/rules:6: recipe for target 'build' failed [ 123s] make: *** [build] Error 2 [ 123s] dpkg-buildpackage: error: debian/rules build gave error exit status 2 [ 123s] [ 123s] lamb54 failed "build osmo-trx_0.2.0.20180428.dsc" at Sat Apr 28 12:31:39 UTC 2018. [ 123s] [ 123s] ### VM INTERACTION START ### [ 126s] [ 116.652514] reboot: Power down [ 126s] ### VM INTERACTION END ### [ 126s] [ 126s] lamb54 failed "build osmo-trx_0.2.0.20180428.dsc" at Sat Apr 28 12:31:42 UTC 2018. [ 126s] -- Configure notifications at https://build.opensuse.org/user/notifications openSUSE Build Service (https://build.opensuse.org/) From admin at opensuse.org Sat Apr 28 12:32:05 2018 From: admin at opensuse.org (OBS Notification) Date: Sat, 28 Apr 2018 12:32:05 +0000 Subject: Build failure of network:osmocom:nightly/osmo-trx in Debian_8.0/x86_64 In-Reply-To: References: Message-ID: <5ae469d55cfc4_2a6a12626803945ef@build.opensuse.org> Visit https://build.opensuse.org/package/live_build_log/network:osmocom:nightly/osmo-trx/Debian_8.0/x86_64 Package network:osmocom:nightly/osmo-trx failed to build in Debian_8.0/x86_64 Check out the package for editing: osc checkout network:osmocom:nightly osmo-trx Last lines of build log: [ 104s] #define HAVE_MEMORY_H 1 [ 104s] #define HAVE_STRINGS_H 1 [ 104s] #define HAVE_INTTYPES_H 1 [ 104s] #define HAVE_STDINT_H 1 [ 104s] #define HAVE_UNISTD_H 1 [ 104s] #define HAVE_DLFCN_H 1 [ 104s] #define LT_OBJDIR ".libs/" [ 104s] #define STDC_HEADERS 1 [ 104s] #define HAVE_BYTESWAP_H 1 [ 104s] #define TIME_WITH_SYS_TIME 1 [ 104s] [ 104s] configure: exit 1 [ 104s] dh_auto_configure: ./configure --build=x86_64-linux-gnu --prefix=/usr --includedir=${prefix}/include --mandir=${prefix}/share/man --infodir=${prefix}/share/info --sysconfdir=/etc --localstatedir=/var --libdir=${prefix}/lib/x86_64-linux-gnu --libexecdir=${prefix}/lib/x86_64-linux-gnu --disable-maintainer-mode --disable-dependency-tracking --with-usrp1 returned exit code 1 [ 104s] debian/rules:12: recipe for target 'override_dh_auto_configure' failed [ 104s] make[1]: *** [override_dh_auto_configure] Error 255 [ 104s] make[1]: Leaving directory '/usr/src/packages/BUILD' [ 104s] debian/rules:6: recipe for target 'build' failed [ 104s] make: *** [build] Error 2 [ 104s] dpkg-buildpackage: error: debian/rules build gave error exit status 2 [ 104s] [ 104s] lamb05 failed "build osmo-trx_0.2.0.20180428.dsc" at Sat Apr 28 12:31:46 UTC 2018. [ 104s] [ 104s] ### VM INTERACTION START ### [ 106s] Powering off. [ 106s] [ 96.618972] reboot: Power down [ 106s] ### VM INTERACTION END ### [ 106s] [ 106s] lamb05 failed "build osmo-trx_0.2.0.20180428.dsc" at Sat Apr 28 12:31:49 UTC 2018. [ 106s] -- Configure notifications at https://build.opensuse.org/user/notifications openSUSE Build Service (https://build.opensuse.org/) From admin at opensuse.org Sat Apr 28 12:32:05 2018 From: admin at opensuse.org (OBS Notification) Date: Sat, 28 Apr 2018 12:32:05 +0000 Subject: Build failure of network:osmocom:nightly/osmo-trx in xUbuntu_17.10/x86_64 In-Reply-To: References: Message-ID: <5ae469d5d644d_2a6a1262680394627@build.opensuse.org> Visit https://build.opensuse.org/package/live_build_log/network:osmocom:nightly/osmo-trx/xUbuntu_17.10/x86_64 Package network:osmocom:nightly/osmo-trx failed to build in xUbuntu_17.10/x86_64 Check out the package for editing: osc checkout network:osmocom:nightly osmo-trx Last lines of build log: [ 119s] #define HAVE_STRING_H 1 [ 119s] #define HAVE_MEMORY_H 1 [ 119s] #define HAVE_STRINGS_H 1 [ 119s] #define HAVE_INTTYPES_H 1 [ 119s] #define HAVE_STDINT_H 1 [ 119s] #define HAVE_UNISTD_H 1 [ 119s] #define HAVE_DLFCN_H 1 [ 119s] #define LT_OBJDIR ".libs/" [ 119s] #define STDC_HEADERS 1 [ 119s] #define HAVE_BYTESWAP_H 1 [ 119s] #define TIME_WITH_SYS_TIME 1 [ 119s] [ 119s] configure: exit 1 [ 119s] dh_auto_configure: ./configure --build=x86_64-linux-gnu --prefix=/usr --includedir=\${prefix}/include --mandir=\${prefix}/share/man --infodir=\${prefix}/share/info --sysconfdir=/etc --localstatedir=/var --disable-silent-rules --libdir=\${prefix}/lib/x86_64-linux-gnu --libexecdir=\${prefix}/lib/x86_64-linux-gnu --disable-maintainer-mode --disable-dependency-tracking --with-usrp1 returned exit code 1 [ 119s] debian/rules:12: recipe for target 'override_dh_auto_configure' failed [ 119s] make[1]: *** [override_dh_auto_configure] Error 2 [ 119s] make[1]: Leaving directory '/usr/src/packages/BUILD' [ 119s] debian/rules:6: recipe for target 'build' failed [ 119s] make: *** [build] Error 2 [ 119s] dpkg-buildpackage: error: debian/rules build gave error exit status 2 [ 119s] [ 119s] lamb26 failed "build osmo-trx_0.2.0.20180428.dsc" at Sat Apr 28 12:31:56 UTC 2018. [ 119s] [ 119s] ### VM INTERACTION START ### [ 122s] [ 113.139312] reboot: Power down [ 122s] ### VM INTERACTION END ### [ 122s] [ 122s] lamb26 failed "build osmo-trx_0.2.0.20180428.dsc" at Sat Apr 28 12:32:00 UTC 2018. [ 122s] -- Configure notifications at https://build.opensuse.org/user/notifications openSUSE Build Service (https://build.opensuse.org/) From admin at opensuse.org Sat Apr 28 12:32:22 2018 From: admin at opensuse.org (OBS Notification) Date: Sat, 28 Apr 2018 12:32:22 +0000 Subject: Build failure of network:osmocom:nightly/osmo-trx in xUbuntu_16.04/x86_64 In-Reply-To: References: Message-ID: <5ae469f4834a0_2a6a12626803947b6@build.opensuse.org> Visit https://build.opensuse.org/package/live_build_log/network:osmocom:nightly/osmo-trx/xUbuntu_16.04/x86_64 Package network:osmocom:nightly/osmo-trx failed to build in xUbuntu_16.04/x86_64 Check out the package for editing: osc checkout network:osmocom:nightly osmo-trx Last lines of build log: [ 120s] #define HAVE_STRING_H 1 [ 120s] #define HAVE_MEMORY_H 1 [ 120s] #define HAVE_STRINGS_H 1 [ 120s] #define HAVE_INTTYPES_H 1 [ 120s] #define HAVE_STDINT_H 1 [ 120s] #define HAVE_UNISTD_H 1 [ 120s] #define HAVE_DLFCN_H 1 [ 120s] #define LT_OBJDIR ".libs/" [ 120s] #define STDC_HEADERS 1 [ 120s] #define HAVE_BYTESWAP_H 1 [ 120s] #define TIME_WITH_SYS_TIME 1 [ 120s] [ 120s] configure: exit 1 [ 120s] dh_auto_configure: ./configure --build=x86_64-linux-gnu --prefix=/usr --includedir=${prefix}/include --mandir=${prefix}/share/man --infodir=${prefix}/share/info --sysconfdir=/etc --localstatedir=/var --disable-silent-rules --libdir=${prefix}/lib/x86_64-linux-gnu --libexecdir=${prefix}/lib/x86_64-linux-gnu --disable-maintainer-mode --disable-dependency-tracking --with-usrp1 returned exit code 1 [ 120s] debian/rules:12: recipe for target 'override_dh_auto_configure' failed [ 120s] make[1]: *** [override_dh_auto_configure] Error 255 [ 120s] make[1]: Leaving directory '/usr/src/packages/BUILD' [ 120s] debian/rules:6: recipe for target 'build' failed [ 120s] make: *** [build] Error 2 [ 120s] dpkg-buildpackage: error: debian/rules build gave error exit status 2 [ 120s] [ 120s] lamb51 failed "build osmo-trx_0.2.0.20180428.dsc" at Sat Apr 28 12:32:06 UTC 2018. [ 120s] [ 121s] ### VM INTERACTION START ### [ 124s] [ 115.305389] reboot: Power down [ 124s] ### VM INTERACTION END ### [ 124s] [ 124s] lamb51 failed "build osmo-trx_0.2.0.20180428.dsc" at Sat Apr 28 12:32:11 UTC 2018. [ 124s] -- Configure notifications at https://build.opensuse.org/user/notifications openSUSE Build Service (https://build.opensuse.org/) From admin at opensuse.org Sat Apr 28 12:32:39 2018 From: admin at opensuse.org (OBS Notification) Date: Sat, 28 Apr 2018 12:32:39 +0000 Subject: Build failure of network:osmocom:nightly/osmo-trx in xUbuntu_16.10/x86_64 In-Reply-To: References: Message-ID: <5ae469f55e3a1_2a6a1262680394954@build.opensuse.org> Visit https://build.opensuse.org/package/live_build_log/network:osmocom:nightly/osmo-trx/xUbuntu_16.10/x86_64 Package network:osmocom:nightly/osmo-trx failed to build in xUbuntu_16.10/x86_64 Check out the package for editing: osc checkout network:osmocom:nightly osmo-trx Last lines of build log: [ 118s] #define HAVE_STRING_H 1 [ 118s] #define HAVE_MEMORY_H 1 [ 118s] #define HAVE_STRINGS_H 1 [ 118s] #define HAVE_INTTYPES_H 1 [ 118s] #define HAVE_STDINT_H 1 [ 118s] #define HAVE_UNISTD_H 1 [ 118s] #define HAVE_DLFCN_H 1 [ 118s] #define LT_OBJDIR ".libs/" [ 118s] #define STDC_HEADERS 1 [ 118s] #define HAVE_BYTESWAP_H 1 [ 118s] #define TIME_WITH_SYS_TIME 1 [ 118s] [ 118s] configure: exit 1 [ 118s] dh_auto_configure: ./configure --build=x86_64-linux-gnu --prefix=/usr --includedir=${prefix}/include --mandir=${prefix}/share/man --infodir=${prefix}/share/info --sysconfdir=/etc --localstatedir=/var --disable-silent-rules --libdir=${prefix}/lib/x86_64-linux-gnu --libexecdir=${prefix}/lib/x86_64-linux-gnu --disable-maintainer-mode --disable-dependency-tracking --with-usrp1 returned exit code 1 [ 118s] debian/rules:12: recipe for target 'override_dh_auto_configure' failed [ 118s] make[1]: *** [override_dh_auto_configure] Error 2 [ 118s] make[1]: Leaving directory '/usr/src/packages/BUILD' [ 118s] debian/rules:6: recipe for target 'build' failed [ 118s] make: *** [build] Error 2 [ 118s] dpkg-buildpackage: error: debian/rules build gave error exit status 2 [ 118s] [ 118s] lamb18 failed "build osmo-trx_0.2.0.20180428.dsc" at Sat Apr 28 12:32:19 UTC 2018. [ 118s] [ 118s] ### VM INTERACTION START ### [ 121s] [ 111.257174] reboot: Power down [ 121s] ### VM INTERACTION END ### [ 121s] [ 121s] lamb18 failed "build osmo-trx_0.2.0.20180428.dsc" at Sat Apr 28 12:32:23 UTC 2018. [ 121s] -- Configure notifications at https://build.opensuse.org/user/notifications openSUSE Build Service (https://build.opensuse.org/) From admin at opensuse.org Sat Apr 28 12:32:39 2018 From: admin at opensuse.org (OBS Notification) Date: Sat, 28 Apr 2018 12:32:39 +0000 Subject: Build failure of network:osmocom:nightly/osmo-trx in xUbuntu_17.04/x86_64 In-Reply-To: References: Message-ID: <5ae469f5afb42_2a6a126268039504@build.opensuse.org> Visit https://build.opensuse.org/package/live_build_log/network:osmocom:nightly/osmo-trx/xUbuntu_17.04/x86_64 Package network:osmocom:nightly/osmo-trx failed to build in xUbuntu_17.04/x86_64 Check out the package for editing: osc checkout network:osmocom:nightly osmo-trx Last lines of build log: [ 139s] #define HAVE_STRING_H 1 [ 139s] #define HAVE_MEMORY_H 1 [ 139s] #define HAVE_STRINGS_H 1 [ 139s] #define HAVE_INTTYPES_H 1 [ 139s] #define HAVE_STDINT_H 1 [ 139s] #define HAVE_UNISTD_H 1 [ 139s] #define HAVE_DLFCN_H 1 [ 139s] #define LT_OBJDIR ".libs/" [ 139s] #define STDC_HEADERS 1 [ 139s] #define HAVE_BYTESWAP_H 1 [ 139s] #define TIME_WITH_SYS_TIME 1 [ 139s] [ 139s] configure: exit 1 [ 139s] dh_auto_configure: ./configure --build=x86_64-linux-gnu --prefix=/usr --includedir=${prefix}/include --mandir=${prefix}/share/man --infodir=${prefix}/share/info --sysconfdir=/etc --localstatedir=/var --disable-silent-rules --libdir=${prefix}/lib/x86_64-linux-gnu --libexecdir=${prefix}/lib/x86_64-linux-gnu --disable-maintainer-mode --disable-dependency-tracking --with-usrp1 returned exit code 1 [ 139s] debian/rules:12: recipe for target 'override_dh_auto_configure' failed [ 139s] make[1]: *** [override_dh_auto_configure] Error 2 [ 139s] make[1]: Leaving directory '/usr/src/packages/BUILD' [ 139s] debian/rules:6: recipe for target 'build' failed [ 139s] make: *** [build] Error 2 [ 139s] dpkg-buildpackage: error: debian/rules build gave error exit status 2 [ 139s] [ 139s] lamb60 failed "build osmo-trx_0.2.0.20180428.dsc" at Sat Apr 28 12:32:22 UTC 2018. [ 139s] [ 139s] ### VM INTERACTION START ### [ 141s] [ 132.802978] reboot: Power down [ 141s] ### VM INTERACTION END ### [ 141s] [ 141s] lamb60 failed "build osmo-trx_0.2.0.20180428.dsc" at Sat Apr 28 12:32:25 UTC 2018. [ 141s] -- Configure notifications at https://build.opensuse.org/user/notifications openSUSE Build Service (https://build.opensuse.org/) From admin at opensuse.org Sat Apr 28 12:33:48 2018 From: admin at opensuse.org (OBS Notification) Date: Sat, 28 Apr 2018 12:33:48 +0000 Subject: Build failure of network:osmocom:nightly/osmo-trx in xUbuntu_17.04/i586 In-Reply-To: References: Message-ID: <5ae46a2fe0200_2a6a12626803954fb@build.opensuse.org> Visit https://build.opensuse.org/package/live_build_log/network:osmocom:nightly/osmo-trx/xUbuntu_17.04/i586 Package network:osmocom:nightly/osmo-trx failed to build in xUbuntu_17.04/i586 Check out the package for editing: osc checkout network:osmocom:nightly osmo-trx Last lines of build log: [ 215s] #define HAVE_STRING_H 1 [ 215s] #define HAVE_MEMORY_H 1 [ 215s] #define HAVE_STRINGS_H 1 [ 215s] #define HAVE_INTTYPES_H 1 [ 215s] #define HAVE_STDINT_H 1 [ 215s] #define HAVE_UNISTD_H 1 [ 215s] #define HAVE_DLFCN_H 1 [ 215s] #define LT_OBJDIR ".libs/" [ 215s] #define STDC_HEADERS 1 [ 215s] #define HAVE_BYTESWAP_H 1 [ 215s] #define TIME_WITH_SYS_TIME 1 [ 215s] [ 215s] configure: exit 1 [ 215s] dh_auto_configure: ./configure --build=i686-linux-gnu --prefix=/usr --includedir=${prefix}/include --mandir=${prefix}/share/man --infodir=${prefix}/share/info --sysconfdir=/etc --localstatedir=/var --disable-silent-rules --libdir=${prefix}/lib/i386-linux-gnu --libexecdir=${prefix}/lib/i386-linux-gnu --disable-maintainer-mode --disable-dependency-tracking --with-usrp1 returned exit code 1 [ 215s] debian/rules:12: recipe for target 'override_dh_auto_configure' failed [ 215s] make[1]: *** [override_dh_auto_configure] Error 2 [ 215s] make[1]: Leaving directory '/usr/src/packages/BUILD' [ 215s] debian/rules:6: recipe for target 'build' failed [ 215s] make: *** [build] Error 2 [ 215s] dpkg-buildpackage: error: debian/rules build gave error exit status 2 [ 215s] [ 215s] cloud113 failed "build osmo-trx_0.2.0.20180428.dsc" at Sat Apr 28 12:33:35 UTC 2018. [ 215s] [ 215s] ### VM INTERACTION START ### [ 217s] [ 184.331997] reboot: Power down [ 219s] ### VM INTERACTION END ### [ 219s] [ 219s] cloud113 failed "build osmo-trx_0.2.0.20180428.dsc" at Sat Apr 28 12:33:40 UTC 2018. [ 219s] -- Configure notifications at https://build.opensuse.org/user/notifications openSUSE Build Service (https://build.opensuse.org/) From admin at opensuse.org Sat Apr 28 12:33:30 2018 From: admin at opensuse.org (OBS Notification) Date: Sat, 28 Apr 2018 12:33:30 +0000 Subject: Build failure of network:osmocom:nightly/osmo-trx in xUbuntu_18.04/x86_64 In-Reply-To: References: Message-ID: <5ae46a2f6c147_2a6a12626803953d1@build.opensuse.org> Visit https://build.opensuse.org/package/live_build_log/network:osmocom:nightly/osmo-trx/xUbuntu_18.04/x86_64 Package network:osmocom:nightly/osmo-trx failed to build in xUbuntu_18.04/x86_64 Check out the package for editing: osc checkout network:osmocom:nightly osmo-trx Last lines of build log: [ 200s] #define HAVE_MEMORY_H 1 [ 200s] #define HAVE_STRINGS_H 1 [ 200s] #define HAVE_INTTYPES_H 1 [ 200s] #define HAVE_STDINT_H 1 [ 200s] #define HAVE_UNISTD_H 1 [ 200s] #define HAVE_DLFCN_H 1 [ 200s] #define LT_OBJDIR ".libs/" [ 200s] #define STDC_HEADERS 1 [ 200s] #define HAVE_BYTESWAP_H 1 [ 200s] #define TIME_WITH_SYS_TIME 1 [ 200s] [ 200s] configure: exit 1 [ 200s] dh_auto_configure: ./configure --build=x86_64-linux-gnu --prefix=/usr --includedir=\${prefix}/include --mandir=\${prefix}/share/man --infodir=\${prefix}/share/info --sysconfdir=/etc --localstatedir=/var --disable-silent-rules --libdir=\${prefix}/lib/x86_64-linux-gnu --libexecdir=\${prefix}/lib/x86_64-linux-gnu --disable-maintainer-mode --disable-dependency-tracking --with-usrp1 returned exit code 1 [ 200s] debian/rules:12: recipe for target 'override_dh_auto_configure' failed [ 200s] make[1]: *** [ 188.660953] serial8250: too much work for irq4 [ 200s] [override_dh_auto_configure] Error 2 [ 200s] make[1]: Leaving directory '/usr/src/packages/BUILD' [ 200s] debian/rules:6: recipe for target 'build' failed [ 200s] make: *** [build] Error 2 [ 200s] dpkg-buildpackage: error: debian/rules build subprocess returned exit status 2 [ 200s] [ 200s] lamb23 failed "build osmo-trx_0.2.0.20180428.dsc" at Sat Apr 28 12:33:21 UTC 2018. [ 200s] [ 200s] ### VM INTERACTION START ### [ 203s] [ 191.854761] reboot: Power down [ 203s] ### VM INTERACTION END ### [ 203s] [ 203s] lamb23 failed "build osmo-trx_0.2.0.20180428.dsc" at Sat Apr 28 12:33:25 UTC 2018. [ 203s] -- Configure notifications at https://build.opensuse.org/user/notifications openSUSE Build Service (https://build.opensuse.org/) From admin at opensuse.org Sat Apr 28 12:33:48 2018 From: admin at opensuse.org (OBS Notification) Date: Sat, 28 Apr 2018 12:33:48 +0000 Subject: Build failure of network:osmocom:nightly/osmo-trx in Debian_9.0/armv7l In-Reply-To: References: Message-ID: <5ae46a3036fcd_2a6a1262680395570@build.opensuse.org> Visit https://build.opensuse.org/package/live_build_log/network:osmocom:nightly/osmo-trx/Debian_9.0/armv7l Package network:osmocom:nightly/osmo-trx failed to build in Debian_9.0/armv7l Check out the package for editing: osc checkout network:osmocom:nightly osmo-trx Last lines of build log: [ 233s] #define HAVE_MEMORY_H 1 [ 233s] #define HAVE_STRINGS_H 1 [ 233s] #define HAVE_INTTYPES_H 1 [ 233s] #define HAVE_STDINT_H 1 [ 233s] #define HAVE_UNISTD_H 1 [ 233s] #define HAVE_DLFCN_H 1 [ 233s] #define LT_OBJDIR ".libs/" [ 233s] #define STDC_HEADERS 1 [ 233s] #define HAVE_BYTESWAP_H 1 [ 233s] #define TIME_WITH_SYS_TIME 1 [ 233s] [ 233s] configure: exit 1 [ 233s] dh_auto_configure: ./configure --build=arm-linux-gnueabihf --prefix=/usr --includedir=${prefix}/include --mandir=${prefix}/share/man --infodir=${prefix}/share/info --sysconfdir=/etc --localstatedir=/var --disable-silent-rules --libdir=${prefix}/lib/arm-linux-gnueabihf --libexecdir=${prefix}/lib/arm-linux-gnueabihf --disable-maintainer-mode --disable-dependency-tracking --with-usrp1 returned exit code 1 [ 233s] debian/rules:12: recipe for target 'override_dh_auto_configure' failed [ 233s] make[1]: *** [override_dh_auto_configure] Error 2 [ 233s] make[1]: Leaving directory '/usr/src/packages/BUILD' [ 233s] debian/rules:6: recipe for target 'build' failed [ 233s] make: *** [build] Error 2 [ 233s] dpkg-buildpackage: error: debian/rules build gave error exit status 2 [ 233s] [ 233s] armbuild01 failed "build osmo-trx_0.2.0.20180428.dsc" at Sat Apr 28 12:33:38 UTC 2018. [ 233s] [ 233s] ### VM INTERACTION START ### [ 236s] [ 195.934248] SysRq : Power Off [ 236s] [ 195.945599] reboot: Power down [ 236s] ### VM INTERACTION END ### [ 236s] [ 236s] armbuild01 failed "build osmo-trx_0.2.0.20180428.dsc" at Sat Apr 28 12:33:41 UTC 2018. [ 236s] -- Configure notifications at https://build.opensuse.org/user/notifications openSUSE Build Service (https://build.opensuse.org/) From admin at opensuse.org Sat Apr 28 12:35:30 2018 From: admin at opensuse.org (OBS Notification) Date: Sat, 28 Apr 2018 12:35:30 +0000 Subject: Build failure of network:osmocom:nightly/osmo-trx in Debian_9.0/aarch64 In-Reply-To: References: Message-ID: <5ae46aa6bf46b_2a6a1262680395748@build.opensuse.org> Visit https://build.opensuse.org/package/live_build_log/network:osmocom:nightly/osmo-trx/Debian_9.0/aarch64 Package network:osmocom:nightly/osmo-trx failed to build in Debian_9.0/aarch64 Check out the package for editing: osc checkout network:osmocom:nightly osmo-trx Last lines of build log: [ 322s] #define HAVE_MEMORY_H 1 [ 322s] #define HAVE_STRINGS_H 1 [ 322s] #define HAVE_INTTYPES_H 1 [ 322s] #define HAVE_STDINT_H 1 [ 322s] #define HAVE_UNISTD_H 1 [ 322s] #define HAVE_DLFCN_H 1 [ 322s] #define LT_OBJDIR ".libs/" [ 322s] #define STDC_HEADERS 1 [ 322s] #define HAVE_BYTESWAP_H 1 [ 322s] #define TIME_WITH_SYS_TIME 1 [ 322s] [ 322s] configure: exit 1 [ 322s] dh_auto_configure: ./configure --build=aarch64-linux-gnu --prefix=/usr --includedir=${prefix}/include --mandir=${prefix}/share/man --infodir=${prefix}/share/info --sysconfdir=/etc --localstatedir=/var --disable-silent-rules --libdir=${prefix}/lib/aarch64-linux-gnu --libexecdir=${prefix}/lib/aarch64-linux-gnu --disable-maintainer-mode --disable-dependency-tracking --with-usrp1 returned exit code 1 [ 322s] debian/rules:12: recipe for target 'override_dh_auto_configure' failed [ 322s] make[1]: *** [override_dh_auto_configure] Error 2 [ 322s] make[1]: Leaving directory '/usr/src/packages/BUILD' [ 322s] debian/rules:6: recipe for target 'build' failed [ 322s] make: *** [build] Error 2 [ 322s] dpkg-buildpackage: error: debian/rules build gave error exit status 2 [ 322s] [ 322s] obs-arm-5 failed "build osmo-trx_0.2.0.20180428.dsc" at Sat Apr 28 12:35:16 UTC 2018. [ 322s] [ 322s] ### VM INTERACTION START ### [ 326s] [ 288.026359] sysrq: SysRq : Power Off [ 326s] [ 288.029612] reboot: Power down [ 327s] ### VM INTERACTION END ### [ 327s] [ 327s] obs-arm-5 failed "build osmo-trx_0.2.0.20180428.dsc" at Sat Apr 28 12:35:21 UTC 2018. [ 327s] -- Configure notifications at https://build.opensuse.org/user/notifications openSUSE Build Service (https://build.opensuse.org/) From gerrit-no-reply at lists.osmocom.org Sat Apr 28 12:38:49 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Sat, 28 Apr 2018 12:38:49 +0000 Subject: [PATCH] osmo-trx[master]: debian/control: Add build dependency to libusrp-dev Message-ID: Review at https://gerrit.osmocom.org/7953 debian/control: Add build dependency to libusrp-dev Change-Id: I9593c9e45d304b7ffc94474e94450da418838513 --- M debian/control 1 file changed, 1 insertion(+), 0 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-trx refs/changes/53/7953/1 diff --git a/debian/control b/debian/control index 4705e64..b7e499e 100644 --- a/debian/control +++ b/debian/control @@ -12,6 +12,7 @@ libboost-all-dev, libfftw3-dev, libtalloc-dev, + libusrp-dev, libosmocore-dev (>= 0.10.0) Standards-Version: 3.9.6 Vcs-Browser: http://cgit.osmocom.org/osmo-trx -- To view, visit https://gerrit.osmocom.org/7953 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I9593c9e45d304b7ffc94474e94450da418838513 Gerrit-PatchSet: 1 Gerrit-Project: osmo-trx Gerrit-Branch: master Gerrit-Owner: Harald Welte From gerrit-no-reply at lists.osmocom.org Sat Apr 28 12:46:11 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Sat, 28 Apr 2018 12:46:11 +0000 Subject: osmo-trx[master]: debian/control: Add build dependency to libusrp-dev In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7953 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I9593c9e45d304b7ffc94474e94450da418838513 Gerrit-PatchSet: 1 Gerrit-Project: osmo-trx Gerrit-Branch: master Gerrit-Owner: Harald Welte Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Sat Apr 28 12:46:13 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Sat, 28 Apr 2018 12:46:13 +0000 Subject: [MERGED] osmo-trx[master]: debian/control: Add build dependency to libusrp-dev In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: debian/control: Add build dependency to libusrp-dev ...................................................................... debian/control: Add build dependency to libusrp-dev Change-Id: I9593c9e45d304b7ffc94474e94450da418838513 --- M debian/control 1 file changed, 1 insertion(+), 0 deletions(-) Approvals: Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/debian/control b/debian/control index 4705e64..b7e499e 100644 --- a/debian/control +++ b/debian/control @@ -12,6 +12,7 @@ libboost-all-dev, libfftw3-dev, libtalloc-dev, + libusrp-dev, libosmocore-dev (>= 0.10.0) Standards-Version: 3.9.6 Vcs-Browser: http://cgit.osmocom.org/osmo-trx -- To view, visit https://gerrit.osmocom.org/7953 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: I9593c9e45d304b7ffc94474e94450da418838513 Gerrit-PatchSet: 1 Gerrit-Project: osmo-trx Gerrit-Branch: master Gerrit-Owner: Harald Welte Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder From jenkins at lists.osmocom.org Sat Apr 28 15:10:07 2018 From: jenkins at lists.osmocom.org (jenkins at lists.osmocom.org) Date: Sat, 28 Apr 2018 15:10:07 +0000 (UTC) Subject: =?UTF-8?Q?Build_failed_in_Jenkins:_master-asn1c_=C2=BB_a1=3Ddefault?= =?UTF-8?Q?,a2=3Ddefault,a3=3Ddefault,osmocom-master-debian9_#106?= In-Reply-To: <1286894323.119.1524841807155.JavaMail.jenkins@jenkins.osmocom.org> References: <1286894323.119.1524841807155.JavaMail.jenkins@jenkins.osmocom.org> Message-ID: <1364057271.136.1524928207076.JavaMail.jenkins@jenkins.osmocom.org> See ------------------------------------------ [...truncated 3.74 KB...] checking build system type... x86_64-unknown-linux-gnu checking host system type... x86_64-unknown-linux-gnu checking target system type... x86_64-unknown-linux-gnu checking for a BSD-compatible install... /usr/bin/install -c checking whether build environment is sane... yes checking for gawk... gawk checking whether make sets $(MAKE)... yes checking whether to enable maintainer-specific portions of Makefiles... no checking for style of include used by make... GNU checking for gcc... gcc checking for C compiler default output file name... a.out checking whether the C compiler works... yes checking whether we are cross compiling... no checking for suffix of executables... checking for suffix of object files... o checking whether we are using the GNU C compiler... yes checking whether gcc accepts -g... yes checking for gcc option to accept ISO C89... none needed checking dependency style of gcc... gcc3 checking for a sed that does not truncate output... /bin/sed checking for grep that handles long lines and -e... /bin/grep checking for egrep... /bin/grep -E checking for ld used by gcc... /usr/bin/ld checking if the linker (/usr/bin/ld) is GNU ld... yes checking for /usr/bin/ld option to reload object files... -r checking for BSD-compatible nm... /usr/bin/nm -B checking whether ln -s works... yes checking how to recognise dependent libraries... pass_all checking how to run the C preprocessor... gcc -E checking for ANSI C header files... yes checking for sys/types.h... yes checking for sys/stat.h... yes checking for stdlib.h... yes checking for string.h... yes checking for memory.h... yes checking for strings.h... yes checking for inttypes.h... yes checking for stdint.h... yes checking for unistd.h... yes checking dlfcn.h usability... yes checking dlfcn.h presence... yes checking for dlfcn.h... yes checking for g++... g++ checking whether we are using the GNU C++ compiler... yes checking whether g++ accepts -g... yes checking dependency style of g++... gcc3 checking how to run the C++ preprocessor... g++ -E checking for g77... no checking for f77... no checking for xlf... no checking for frt... no checking for pgf77... no checking for cf77... no checking for fort77... no checking for fl32... no checking for af77... no checking for f90... no checking for xlf90... no checking for pgf90... no checking for pghpf... no checking for epcf90... no checking for gfortran... no checking for g95... no checking for f95... no checking for fort... no checking for xlf95... no checking for ifort... no checking for ifc... no checking for efc... no checking for pgf95... no checking for lf95... no checking for ftn... no checking whether we are using the GNU Fortran 77 compiler... no checking whether accepts -g... no checking the maximum length of command line arguments... 32768 checking command to parse /usr/bin/nm -B output from gcc object... ok checking for objdir... .libs checking for ar... ar checking for ranlib... ranlib checking for strip... strip checking if gcc supports -fno-rtti -fno-exceptions... no checking for gcc option to produce PIC... -fPIC checking if gcc PIC flag -fPIC works... yes checking if gcc static flag -static works... yes checking if gcc supports -c -o file.o... yes checking whether the gcc linker (/usr/bin/ld -m elf_x86_64) supports shared libraries... yes checking whether -lc should be explicitly linked in... no checking dynamic linker characteristics... GNU/Linux ld.so checking how to hardcode library paths into programs... immediate checking whether stripping libraries is possible... yes checking if libtool supports shared libraries... yes checking whether to build shared libraries... yes checking whether to build static libraries... yes configure: creating libtool appending configuration tag "CXX" to libtool checking for ld used by g++... /usr/bin/ld -m elf_x86_64 checking if the linker (/usr/bin/ld -m elf_x86_64) is GNU ld... yes checking whether the g++ linker (/usr/bin/ld -m elf_x86_64) supports shared libraries... yes checking for g++ option to produce PIC... -fPIC checking if g++ PIC flag -fPIC works... yes checking if g++ static flag -static works... yes checking if g++ supports -c -o file.o... yes checking whether the g++ linker (/usr/bin/ld -m elf_x86_64) supports shared libraries... yes checking dynamic linker characteristics... GNU/Linux ld.so checking how to hardcode library paths into programs... immediate appending configuration tag "F77" to libtool checking for autoconf... /usr/bin/autoconf checking for autoheader... /usr/bin/autoheader checking for gcc... (cached) gcc checking whether we are using the GNU C compiler... (cached) yes checking whether gcc accepts -g... (cached) yes checking for gcc option to accept ISO C89... (cached) none needed checking dependency style of gcc... (cached) gcc3 checking how to run the C preprocessor... gcc -E checking for a BSD-compatible install... /usr/bin/install -c checking whether ln -s works... yes checking whether make sets $(MAKE)... (cached) yes checking for bison... bison -y checking for flex... flex checking for yywrap in -lfl... yes checking lex output file root... lex.yy checking whether yytext is a pointer... yes checking for ar... /usr/bin/ar checking for ANSI C header files... (cached) yes checking sys/param.h usability... yes checking sys/param.h presence... yes checking for sys/param.h... yes checking whether byte ordering is bigendian... no checking for off_t... yes checking for size_t... yes checking whether struct tm is in sys/time.h or time.h... time.h checking for intmax_t... yes checking for library containing getopt... none required checking for strtoimax... yes checking for strtoll... yes checking for mergesort... no checking for mkstemps... yes configure: creating ./config.status config.status: creating skeletons/standard-modules/Makefile config.status: creating skeletons/tests/Makefile config.status: creating libasn1compiler/Makefile config.status: creating libasn1parser/Makefile config.status: creating libasn1print/Makefile config.status: creating asn1c/webcgi/Makefile config.status: creating asn1c/tests/Makefile config.status: creating libasn1fix/Makefile config.status: creating skeletons/Makefile config.status: creating examples/Makefile config.status: creating tests/Makefile config.status: creating asn1c/Makefile config.status: creating doc/Makefile config.status: creating asn1c.spec config.status: creating Makefile config.status: creating config.h config.status: executing depfiles commands + make -j 8 make all-recursive make[1]: Entering directory ' Making all in libasn1parser make[2]: Entering directory ' if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1parser.lo -MD -MP -MF ".deps/asn1parser.Tpo" -c -o asn1parser.lo asn1parser.c; \ then mv -f ".deps/asn1parser.Tpo" ".deps/asn1parser.Plo"; else rm -f ".deps/asn1parser.Tpo"; exit 1; fi bison -y -p asn1p_ -d asn1p_y.y flex -s -p -Cem -Pasn1p_ -olex.yy.c asn1p_l.l if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_module.lo -MD -MP -MF ".deps/asn1p_module.Tpo" -c -o asn1p_module.lo asn1p_module.c; \ then mv -f ".deps/asn1p_module.Tpo" ".deps/asn1p_module.Plo"; else rm -f ".deps/asn1p_module.Tpo"; exit 1; fi if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_oid.lo -MD -MP -MF ".deps/asn1p_oid.Tpo" -c -o asn1p_oid.lo asn1p_oid.c; \ then mv -f ".deps/asn1p_oid.Tpo" ".deps/asn1p_oid.Plo"; else rm -f ".deps/asn1p_oid.Tpo"; exit 1; fi if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_value.lo -MD -MP -MF ".deps/asn1p_value.Tpo" -c -o asn1p_value.lo asn1p_value.c; \ then mv -f ".deps/asn1p_value.Tpo" ".deps/asn1p_value.Plo"; else rm -f ".deps/asn1p_value.Tpo"; exit 1; fi if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_expr.lo -MD -MP -MF ".deps/asn1p_expr.Tpo" -c -o asn1p_expr.lo asn1p_expr.c; \ then mv -f ".deps/asn1p_expr.Tpo" ".deps/asn1p_expr.Plo"; else rm -f ".deps/asn1p_expr.Tpo"; exit 1; fi if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_xports.lo -MD -MP -MF ".deps/asn1p_xports.Tpo" -c -o asn1p_xports.lo asn1p_xports.c; \ then mv -f ".deps/asn1p_xports.Tpo" ".deps/asn1p_xports.Plo"; else rm -f ".deps/asn1p_xports.Tpo"; exit 1; fi %option yylineno entails a performance penalty ONLY on rules that can match newline characters REJECT entails a large performance penalty asn1p_y.y: warning: 2 shift/reduce conflicts [-Wconflicts-sr] sed '/^#/ s|lex.yy\.c|asn1p_l.c|' lex.yy.c >asn1p_l.c rm -f lex.yy.c if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_constr.lo -MD -MP -MF ".deps/asn1p_constr.Tpo" -c -o asn1p_constr.lo asn1p_constr.c; \ then mv -f ".deps/asn1p_constr.Tpo" ".deps/asn1p_constr.Plo"; else rm -f ".deps/asn1p_constr.Tpo"; exit 1; fi mkdir .libs gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_oid.lo -MD -MP -MF .deps/asn1p_oid.Tpo -c asn1p_oid.c -fPIC -DPIC -o .libs/asn1p_oid.o gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_module.lo -MD -MP -MF .deps/asn1p_module.Tpo -c asn1p_module.c -fPIC -DPIC -o .libs/asn1p_module.o gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_value.lo -MD -MP -MF .deps/asn1p_value.Tpo -c asn1p_value.c -fPIC -DPIC -o .libs/asn1p_value.o gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1parser.lo -MD -MP -MF .deps/asn1parser.Tpo -c asn1parser.c -fPIC -DPIC -o .libs/asn1parser.o gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_expr.lo -MD -MP -MF .deps/asn1p_expr.Tpo -c asn1p_expr.c -fPIC -DPIC -o .libs/asn1p_expr.o gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_xports.lo -MD -MP -MF .deps/asn1p_xports.Tpo -c asn1p_xports.c -fPIC -DPIC -o .libs/asn1p_xports.o gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_constr.lo -MD -MP -MF .deps/asn1p_constr.Tpo -c asn1p_constr.c -fPIC -DPIC -o .libs/asn1p_constr.o gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_module.lo -MD -MP -MF .deps/asn1p_module.Tpo -c asn1p_module.c -o asn1p_module.o >/dev/null 2>&1 gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_xports.lo -MD -MP -MF .deps/asn1p_xports.Tpo -c asn1p_xports.c -o asn1p_xports.o >/dev/null 2>&1 gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_oid.lo -MD -MP -MF .deps/asn1p_oid.Tpo -c asn1p_oid.c -o asn1p_oid.o >/dev/null 2>&1 gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1parser.lo -MD -MP -MF .deps/asn1parser.Tpo -c asn1parser.c -o asn1parser.o >/dev/null 2>&1 gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_value.lo -MD -MP -MF .deps/asn1p_value.Tpo -c asn1p_value.c -o asn1p_value.o >/dev/null 2>&1 if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_param.lo -MD -MP -MF ".deps/asn1p_param.Tpo" -c -o asn1p_param.lo asn1p_param.c; \ then mv -f ".deps/asn1p_param.Tpo" ".deps/asn1p_param.Plo"; else rm -f ".deps/asn1p_param.Tpo"; exit 1; fi gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_expr.lo -MD -MP -MF .deps/asn1p_expr.Tpo -c asn1p_expr.c -o asn1p_expr.o >/dev/null 2>&1 if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_class.lo -MD -MP -MF ".deps/asn1p_class.Tpo" -c -o asn1p_class.lo asn1p_class.c; \ then mv -f ".deps/asn1p_class.Tpo" ".deps/asn1p_class.Plo"; else rm -f ".deps/asn1p_class.Tpo"; exit 1; fi gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_constr.lo -MD -MP -MF .deps/asn1p_constr.Tpo -c asn1p_constr.c -o asn1p_constr.o >/dev/null 2>&1 if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_ref.lo -MD -MP -MF ".deps/asn1p_ref.Tpo" -c -o asn1p_ref.lo asn1p_ref.c; \ then mv -f ".deps/asn1p_ref.Tpo" ".deps/asn1p_ref.Plo"; else rm -f ".deps/asn1p_ref.Tpo"; exit 1; fi if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_l.lo -MD -MP -MF ".deps/asn1p_l.Tpo" -c -o asn1p_l.lo asn1p_l.c; \ then mv -f ".deps/asn1p_l.Tpo" ".deps/asn1p_l.Plo"; else rm -f ".deps/asn1p_l.Tpo"; exit 1; fi gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_param.lo -MD -MP -MF .deps/asn1p_param.Tpo -c asn1p_param.c -fPIC -DPIC -o .libs/asn1p_param.o gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_class.lo -MD -MP -MF .deps/asn1p_class.Tpo -c asn1p_class.c -fPIC -DPIC -o .libs/asn1p_class.o if test -f y.tab.h; then \ to=`echo "asn1p_y_H" | sed \ -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/' \ -e 's/[^ABCDEFGHIJKLMNOPQRSTUVWXYZ]/_/g'`; \ sed -e "/^#/!b" -e "s/Y_TAB_H/$to/g" -e "s|y\.tab\.h|asn1p_y.h|" \ y.tab.h >asn1p_y.ht; \ rm -f y.tab.h; \ if cmp -s asn1p_y.ht asn1p_y.h; then \ rm -f asn1p_y.ht ;\ else \ mv asn1p_y.ht asn1p_y.h; \ fi; \ fi gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_ref.lo -MD -MP -MF .deps/asn1p_ref.Tpo -c asn1p_ref.c -fPIC -DPIC -o .libs/asn1p_ref.o if test -f y.output; then \ mv y.output asn1p_y.output; \ fi gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_l.lo -MD -MP -MF .deps/asn1p_l.Tpo -c asn1p_l.c -fPIC -DPIC -o .libs/asn1p_l.o sed '/^#/ s|y\.tab\.c|asn1p_y.c|' y.tab.c >asn1p_y.ct && mv asn1p_y.ct asn1p_y.c rm -f y.tab.c if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_y.lo -MD -MP -MF ".deps/asn1p_y.Tpo" -c -o asn1p_y.lo asn1p_y.c; \ then mv -f ".deps/asn1p_y.Tpo" ".deps/asn1p_y.Plo"; else rm -f ".deps/asn1p_y.Tpo"; exit 1; fi gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_param.lo -MD -MP -MF .deps/asn1p_param.Tpo -c asn1p_param.c -o asn1p_param.o >/dev/null 2>&1 gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_class.lo -MD -MP -MF .deps/asn1p_class.Tpo -c asn1p_class.c -o asn1p_class.o >/dev/null 2>&1 gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_ref.lo -MD -MP -MF .deps/asn1p_ref.Tpo -c asn1p_ref.c -o asn1p_ref.o >/dev/null 2>&1 gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_y.lo -MD -MP -MF .deps/asn1p_y.Tpo -c asn1p_y.c -fPIC -DPIC -o .libs/asn1p_y.o asn1p_y.y: In function 'asn1p_parse': asn1p_y.y:357:13: error: 'param' undeclared (first use in this function) *(void **)param = $1; ^~~~~ asn1p_y.y:357:13: note: each undeclared identifier is reported only once for each function it appears in Makefile:299: recipe for target 'asn1p_y.lo' failed make[2]: *** [asn1p_y.lo] Error 1 make[2]: *** Waiting for unfinished jobs.... gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -Wshadow -Wcast-qual -Wcast-align -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -MT asn1p_l.lo -MD -MP -MF .deps/asn1p_l.Tpo -c asn1p_l.c -o asn1p_l.o >/dev/null 2>&1 make[2]: Leaving directory ' Makefile:302: recipe for target 'all-recursive' failed make[1]: *** [all-recursive] Error 1 make[1]: Leaving directory ' Makefile:212: recipe for target 'all' failed make: *** [all] Error 2 Build step 'Execute shell' marked build as failure [WARNINGS] Skipping publisher since build result is FAILURE From gerrit-no-reply at lists.osmocom.org Sat Apr 28 19:43:48 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Sat, 28 Apr 2018 19:43:48 +0000 Subject: [PATCH] osmo-trx[master]: update .gitignore for new executable names Message-ID: Review at https://gerrit.osmocom.org/7954 update .gitignore for new executable names Change-Id: Id698024485176e5201ca92c72b1bd1d5914aff32 --- M .gitignore 1 file changed, 2 insertions(+), 1 deletion(-) git pull ssh://gerrit.osmocom.org:29418/osmo-trx refs/changes/54/7954/1 diff --git a/.gitignore b/.gitignore index e966b37..93c21e4 100644 --- a/.gitignore +++ b/.gitignore @@ -2,7 +2,8 @@ *.o *.lo *.la -Transceiver52M/osmo-trx +Transceiver52M/osmo-trx-uhd +Transceiver52M/osmo-trx-usrp1 # tests tests/CommonLibs/BitVectorTest -- To view, visit https://gerrit.osmocom.org/7954 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Id698024485176e5201ca92c72b1bd1d5914aff32 Gerrit-PatchSet: 1 Gerrit-Project: osmo-trx Gerrit-Branch: master Gerrit-Owner: Harald Welte From gerrit-no-reply at lists.osmocom.org Sat Apr 28 19:43:49 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Sat, 28 Apr 2018 19:43:49 +0000 Subject: [PATCH] osmo-trx[master]: osmo-trx: s/GSM Core Address/GSM BTS Address/ Message-ID: Review at https://gerrit.osmocom.org/7955 osmo-trx: s/GSM Core Address/GSM BTS Address/ The TRX connects to the BTS, not to the "Core". The Core network is miles away... Change-Id: I6de2f708fc7a7df7dea16314b7dfa4ab82f15b2c --- M Transceiver52M/osmo-trx.cpp 1 file changed, 1 insertion(+), 1 deletion(-) git pull ssh://gerrit.osmocom.org:29418/osmo-trx refs/changes/55/7955/1 diff --git a/Transceiver52M/osmo-trx.cpp b/Transceiver52M/osmo-trx.cpp index 1b351d6..09ba14e 100644 --- a/Transceiver52M/osmo-trx.cpp +++ b/Transceiver52M/osmo-trx.cpp @@ -385,7 +385,7 @@ ost << " Device args............. " << charp2str(trx->cfg.dev_args) << std::endl; ost << " TRX Base Port........... " << trx->cfg.base_port << std::endl; ost << " TRX Address............. " << charp2str(trx->cfg.bind_addr) << std::endl; - ost << " GSM Core Address........." << charp2str(trx->cfg.remote_addr) << std::endl; + ost << " GSM BTS Address......... " << charp2str(trx->cfg.remote_addr) << std::endl; ost << " Channels................ " << trx->cfg.num_chans << std::endl; ost << " Tx Samples-per-Symbol... " << trx->cfg.tx_sps << std::endl; ost << " Rx Samples-per-Symbol... " << trx->cfg.rx_sps << std::endl; -- To view, visit https://gerrit.osmocom.org/7955 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I6de2f708fc7a7df7dea16314b7dfa4ab82f15b2c Gerrit-PatchSet: 1 Gerrit-Project: osmo-trx Gerrit-Branch: master Gerrit-Owner: Harald Welte From jenkins at lists.osmocom.org Sat Apr 28 22:36:27 2018 From: jenkins at lists.osmocom.org (jenkins at lists.osmocom.org) Date: Sat, 28 Apr 2018 22:36:27 +0000 (UTC) Subject: =?UTF-8?Q?Build_failed_in_Jenkins:_master-rtl-sdr_=C2=BB_a1=3Ddefau?= =?UTF-8?Q?lt,a2=3Ddefault,a3=3Ddefault,osmocom-master-debian9_#14?= In-Reply-To: <1611545050.123.1524868880532.JavaMail.jenkins@jenkins.osmocom.org> References: <1611545050.123.1524868880532.JavaMail.jenkins@jenkins.osmocom.org> Message-ID: <1389556989.139.1524954987130.JavaMail.jenkins@jenkins.osmocom.org> See Changes: [steve] change version to 0.5.4 ------------------------------------------ [...truncated 93.13 KB...] make[2]: Nothing to be done for 'dvi'. make[2]: Leaving directory ' Making dvi in src make[2]: Entering directory ' make[2]: Nothing to be done for 'dvi'. make[2]: Leaving directory ' make[2]: Entering directory ' make[2]: Nothing to be done for 'dvi-am'. make[2]: Leaving directory ' make[1]: Leaving directory ' make[1]: Entering directory ' make check-recursive make[2]: Entering directory ' Making check in include make[3]: Entering directory ' make[3]: Nothing to be done for 'check'. make[3]: Leaving directory ' Making check in src make[3]: Entering directory ' make[3]: Nothing to be done for 'check'. make[3]: Leaving directory ' make[3]: Entering directory ' make[3]: Leaving directory ' make[2]: Leaving directory ' make[1]: Leaving directory ' make[1]: Entering directory ' make install-recursive make[2]: Entering directory ' Making install in include make[3]: Entering directory ' make[4]: Entering directory ' make[4]: Nothing to be done for 'install-exec-am'. /bin/mkdir -p ' /usr/bin/install -c -m 644 ../../../include/rtl-sdr.h ../../../include/rtl-sdr_export.h ' make[4]: Leaving directory ' make[3]: Leaving directory ' Making install in src make[3]: Entering directory ' make[4]: Entering directory ' /bin/mkdir -p ' /bin/bash ../libtool --mode=install /usr/bin/install -c librtlsdr.la ' libtool: install: /usr/bin/install -c .libs/librtlsdr.so.0.0.5 libtool: install: (cd && { ln -s -f librtlsdr.so.0.0.5 librtlsdr.so.0 || { rm -f librtlsdr.so.0 && ln -s librtlsdr.so.0.0.5 librtlsdr.so.0; }; }) libtool: install: (cd && { ln -s -f librtlsdr.so.0.0.5 librtlsdr.so || { rm -f librtlsdr.so && ln -s librtlsdr.so.0.0.5 librtlsdr.so; }; }) libtool: install: /usr/bin/install -c .libs/librtlsdr.lai libtool: install: /usr/bin/install -c .libs/librtlsdr.a libtool: install: chmod 644 libtool: install: ranlib libtool: finish: PATH="/usr/local/bin:/usr/bin:/bin:/usr/games:/home/osmocom-build/bin:/sbin" ldconfig -n ---------------------------------------------------------------------- Libraries have been installed in: If you ever happen to want to link against installed libraries in a given directory, LIBDIR, you must either use libtool, and specify the full pathname of the library, or use the '-LLIBDIR' flag during linking and do at least one of the following: - add LIBDIR to the 'LD_LIBRARY_PATH' environment variable during execution - add LIBDIR to the 'LD_RUN_PATH' environment variable during linking - use the '-Wl,-rpath -Wl,LIBDIR' linker flag - have your system administrator add LIBDIR to '/etc/ld.so.conf' See any operating system documentation about shared libraries for more information, such as the ld(1) and ld.so(8) manual pages. ---------------------------------------------------------------------- /bin/mkdir -p ' /bin/bash ../libtool --mode=install /usr/bin/install -c rtl_sdr rtl_tcp rtl_test rtl_fm rtl_eeprom rtl_adsb rtl_power ' libtool: install: /usr/bin/install -c .libs/rtl_sdr libtool: install: /usr/bin/install -c .libs/rtl_tcp libtool: install: /usr/bin/install -c .libs/rtl_test libtool: install: /usr/bin/install -c .libs/rtl_fm libtool: install: /usr/bin/install -c .libs/rtl_eeprom libtool: install: /usr/bin/install -c .libs/rtl_adsb libtool: install: /usr/bin/install -c .libs/rtl_power make[4]: Nothing to be done for 'install-data-am'. make[4]: Leaving directory ' make[3]: Leaving directory ' make[3]: Entering directory ' make[4]: Entering directory ' make[4]: Nothing to be done for 'install-exec-am'. /bin/mkdir -p ' /usr/bin/install -c -m 644 ./doc/html.tar ' /bin/mkdir -p ' /usr/bin/install -c -m 644 librtlsdr.pc ' make install-data-hook make[5]: Entering directory ' cd && tar xf html.tar --strip-components 1 && rm -f html.tar make[5]: Leaving directory ' make[4]: Leaving directory ' make[3]: Leaving directory ' make[2]: Leaving directory ' make[1]: Leaving directory ' make[1]: Entering directory ' Making installcheck in include make[2]: Entering directory ' make[2]: Nothing to be done for 'installcheck'. make[2]: Leaving directory ' Making installcheck in src make[2]: Entering directory ' make[2]: Nothing to be done for 'installcheck'. make[2]: Leaving directory ' make[2]: Entering directory ' make[2]: Nothing to be done for 'installcheck-am'. make[2]: Leaving directory ' make[1]: Leaving directory ' make[1]: Entering directory ' Making uninstall in include make[2]: Entering directory ' ( cd ' && rm -f rtl-sdr.h rtl-sdr_export.h ) make[2]: Leaving directory ' Making uninstall in src make[2]: Entering directory ' ( cd ' && rm -f rtl_sdr rtl_tcp rtl_test rtl_fm rtl_eeprom rtl_adsb rtl_power ) /bin/bash ../libtool --mode=uninstall rm -f ' libtool: uninstall: rm -f make[2]: Leaving directory ' make[2]: Entering directory ' ( cd ' && rm -f html.tar ) ( cd ' && rm -f librtlsdr.pc ) make uninstall-hook make[3]: Entering directory ' cd && rm -rf make[3]: Leaving directory ' make[2]: Leaving directory ' make[1]: Leaving directory ' make[1]: Entering directory ' make[1]: Leaving directory ' make[1]: Entering directory ' make install-recursive make[2]: Entering directory ' Making install in include make[3]: Entering directory ' make[4]: Entering directory ' make[4]: Nothing to be done for 'install-exec-am'. /bin/mkdir -p '/tmp/am-dc-5112/ /usr/bin/install -c -m 644 ../../../include/rtl-sdr.h ../../../include/rtl-sdr_export.h '/tmp/am-dc-5112/ make[4]: Leaving directory ' make[3]: Leaving directory ' Making install in src make[3]: Entering directory ' make[4]: Entering directory ' /bin/mkdir -p '/tmp/am-dc-5112/ /bin/bash ../libtool --mode=install /usr/bin/install -c librtlsdr.la '/tmp/am-dc-5112/ libtool: install: /usr/bin/install -c .libs/librtlsdr.so.0.0.5 /tmp/am-dc-5112/ libtool: install: (cd /tmp/am-dc-5112/ && { ln -s -f librtlsdr.so.0.0.5 librtlsdr.so.0 || { rm -f librtlsdr.so.0 && ln -s librtlsdr.so.0.0.5 librtlsdr.so.0; }; }) libtool: install: (cd /tmp/am-dc-5112/ && { ln -s -f librtlsdr.so.0.0.5 librtlsdr.so || { rm -f librtlsdr.so && ln -s librtlsdr.so.0.0.5 librtlsdr.so; }; }) libtool: install: /usr/bin/install -c .libs/librtlsdr.lai /tmp/am-dc-5112/ libtool: install: /usr/bin/install -c .libs/librtlsdr.a /tmp/am-dc-5112/ libtool: install: chmod 644 /tmp/am-dc-5112/ libtool: install: ranlib /tmp/am-dc-5112/ libtool: warning: remember to run 'libtool --finish /bin/mkdir -p '/tmp/am-dc-5112/ /bin/bash ../libtool --mode=install /usr/bin/install -c rtl_sdr rtl_tcp rtl_test rtl_fm rtl_eeprom rtl_adsb rtl_power '/tmp/am-dc-5112/ libtool: warning: 'librtlsdr.la' has not been installed in ' libtool: install: /usr/bin/install -c .libs/rtl_sdr /tmp/am-dc-5112/ libtool: warning: 'librtlsdr.la' has not been installed in ' libtool: install: /usr/bin/install -c .libs/rtl_tcp /tmp/am-dc-5112/ libtool: warning: 'librtlsdr.la' has not been installed in ' libtool: install: /usr/bin/install -c .libs/rtl_test /tmp/am-dc-5112/ libtool: warning: 'librtlsdr.la' has not been installed in ' libtool: install: /usr/bin/install -c .libs/rtl_fm /tmp/am-dc-5112/ libtool: warning: 'librtlsdr.la' has not been installed in ' libtool: install: /usr/bin/install -c .libs/rtl_eeprom /tmp/am-dc-5112/ libtool: warning: 'librtlsdr.la' has not been installed in ' libtool: install: /usr/bin/install -c .libs/rtl_adsb /tmp/am-dc-5112/ libtool: warning: 'librtlsdr.la' has not been installed in ' libtool: install: /usr/bin/install -c .libs/rtl_power /tmp/am-dc-5112/ make[4]: Nothing to be done for 'install-data-am'. make[4]: Leaving directory ' make[3]: Leaving directory ' make[3]: Entering directory ' make[4]: Entering directory ' make[4]: Nothing to be done for 'install-exec-am'. /bin/mkdir -p '/tmp/am-dc-5112/ /usr/bin/install -c -m 644 ./doc/html.tar '/tmp/am-dc-5112/ /bin/mkdir -p '/tmp/am-dc-5112/ /usr/bin/install -c -m 644 librtlsdr.pc '/tmp/am-dc-5112/ make install-data-hook make[5]: Entering directory ' cd /tmp/am-dc-5112/ && tar xf html.tar --strip-components 1 && rm -f html.tar make[5]: Leaving directory ' make[4]: Leaving directory ' make[3]: Leaving directory ' make[2]: Leaving directory ' make[1]: Leaving directory ' make[1]: Entering directory ' Making uninstall in include make[2]: Entering directory ' ( cd '/tmp/am-dc-5112/ && rm -f rtl-sdr.h rtl-sdr_export.h ) make[2]: Leaving directory ' Making uninstall in src make[2]: Entering directory ' ( cd '/tmp/am-dc-5112/ && rm -f rtl_sdr rtl_tcp rtl_test rtl_fm rtl_eeprom rtl_adsb rtl_power ) /bin/bash ../libtool --mode=uninstall rm -f '/tmp/am-dc-5112/ libtool: uninstall: rm -f /tmp/am-dc-5112/ /tmp/am-dc-5112/ /tmp/am-dc-5112/ /tmp/am-dc-5112/ /tmp/am-dc-5112/ make[2]: Leaving directory ' make[2]: Entering directory ' ( cd '/tmp/am-dc-5112/ && rm -f html.tar ) ( cd '/tmp/am-dc-5112/ && rm -f librtlsdr.pc ) make uninstall-hook make[3]: Entering directory ' cd /tmp/am-dc-5112/ && rm -rf make[3]: Leaving directory ' make[2]: Leaving directory ' make[1]: Leaving directory ' make[1]: Entering directory ' ERROR: files left after uninstall: (check DESTDIR support) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Makefile:757: recipe for target 'distuninstallcheck' failed make[1]: *** [distuninstallcheck] Error 1 make[1]: Leaving directory ' Makefile:701: recipe for target 'distcheck' failed make: *** [distcheck] Error 1 + cat-testlogs.sh Build step 'Execute shell' marked build as failure [WARNINGS]Skipping publisher since build result is FAILURE Not sending mail to unregistered user steve at steve-m.de From jenkins at lists.osmocom.org Sat Apr 28 22:41:20 2018 From: jenkins at lists.osmocom.org (jenkins at lists.osmocom.org) Date: Sat, 28 Apr 2018 22:41:20 +0000 (UTC) Subject: =?UTF-8?Q?Build_failed_in_Jenkins:_master-rtl-sdr_=C2=BB_a1=3Ddefau?= =?UTF-8?Q?lt,a2=3Ddefault,a3=3Ddefault,osmocom-master-debian9_#15?= In-Reply-To: <1389556989.139.1524954987130.JavaMail.jenkins@jenkins.osmocom.org> References: <1389556989.139.1524954987130.JavaMail.jenkins@jenkins.osmocom.org> Message-ID: <15582282.140.1524955280592.JavaMail.jenkins@jenkins.osmocom.org> See ------------------------------------------ [...truncated 93.12 KB...] make[2]: Nothing to be done for 'dvi'. make[2]: Leaving directory ' Making dvi in src make[2]: Entering directory ' make[2]: Nothing to be done for 'dvi'. make[2]: Leaving directory ' make[2]: Entering directory ' make[2]: Nothing to be done for 'dvi-am'. make[2]: Leaving directory ' make[1]: Leaving directory ' make[1]: Entering directory ' make check-recursive make[2]: Entering directory ' Making check in include make[3]: Entering directory ' make[3]: Nothing to be done for 'check'. make[3]: Leaving directory ' Making check in src make[3]: Entering directory ' make[3]: Nothing to be done for 'check'. make[3]: Leaving directory ' make[3]: Entering directory ' make[3]: Leaving directory ' make[2]: Leaving directory ' make[1]: Leaving directory ' make[1]: Entering directory ' make install-recursive make[2]: Entering directory ' Making install in include make[3]: Entering directory ' make[4]: Entering directory ' make[4]: Nothing to be done for 'install-exec-am'. /bin/mkdir -p ' /usr/bin/install -c -m 644 ../../../include/rtl-sdr.h ../../../include/rtl-sdr_export.h ' make[4]: Leaving directory ' make[3]: Leaving directory ' Making install in src make[3]: Entering directory ' make[4]: Entering directory ' /bin/mkdir -p ' /bin/bash ../libtool --mode=install /usr/bin/install -c librtlsdr.la ' libtool: install: /usr/bin/install -c .libs/librtlsdr.so.0.0.5 libtool: install: (cd && { ln -s -f librtlsdr.so.0.0.5 librtlsdr.so.0 || { rm -f librtlsdr.so.0 && ln -s librtlsdr.so.0.0.5 librtlsdr.so.0; }; }) libtool: install: (cd && { ln -s -f librtlsdr.so.0.0.5 librtlsdr.so || { rm -f librtlsdr.so && ln -s librtlsdr.so.0.0.5 librtlsdr.so; }; }) libtool: install: /usr/bin/install -c .libs/librtlsdr.lai libtool: install: /usr/bin/install -c .libs/librtlsdr.a libtool: install: chmod 644 libtool: install: ranlib libtool: finish: PATH="/usr/local/bin:/usr/bin:/bin:/usr/games:/home/osmocom-build/bin:/sbin" ldconfig -n ---------------------------------------------------------------------- Libraries have been installed in: If you ever happen to want to link against installed libraries in a given directory, LIBDIR, you must either use libtool, and specify the full pathname of the library, or use the '-LLIBDIR' flag during linking and do at least one of the following: - add LIBDIR to the 'LD_LIBRARY_PATH' environment variable during execution - add LIBDIR to the 'LD_RUN_PATH' environment variable during linking - use the '-Wl,-rpath -Wl,LIBDIR' linker flag - have your system administrator add LIBDIR to '/etc/ld.so.conf' See any operating system documentation about shared libraries for more information, such as the ld(1) and ld.so(8) manual pages. ---------------------------------------------------------------------- /bin/mkdir -p ' /bin/bash ../libtool --mode=install /usr/bin/install -c rtl_sdr rtl_tcp rtl_test rtl_fm rtl_eeprom rtl_adsb rtl_power ' libtool: install: /usr/bin/install -c .libs/rtl_sdr libtool: install: /usr/bin/install -c .libs/rtl_tcp libtool: install: /usr/bin/install -c .libs/rtl_test libtool: install: /usr/bin/install -c .libs/rtl_fm libtool: install: /usr/bin/install -c .libs/rtl_eeprom libtool: install: /usr/bin/install -c .libs/rtl_adsb libtool: install: /usr/bin/install -c .libs/rtl_power make[4]: Nothing to be done for 'install-data-am'. make[4]: Leaving directory ' make[3]: Leaving directory ' make[3]: Entering directory ' make[4]: Entering directory ' make[4]: Nothing to be done for 'install-exec-am'. /bin/mkdir -p ' /usr/bin/install -c -m 644 ./doc/html.tar ' /bin/mkdir -p ' /usr/bin/install -c -m 644 librtlsdr.pc ' make install-data-hook make[5]: Entering directory ' cd && tar xf html.tar --strip-components 1 && rm -f html.tar make[5]: Leaving directory ' make[4]: Leaving directory ' make[3]: Leaving directory ' make[2]: Leaving directory ' make[1]: Leaving directory ' make[1]: Entering directory ' Making installcheck in include make[2]: Entering directory ' make[2]: Nothing to be done for 'installcheck'. make[2]: Leaving directory ' Making installcheck in src make[2]: Entering directory ' make[2]: Nothing to be done for 'installcheck'. make[2]: Leaving directory ' make[2]: Entering directory ' make[2]: Nothing to be done for 'installcheck-am'. make[2]: Leaving directory ' make[1]: Leaving directory ' make[1]: Entering directory ' Making uninstall in include make[2]: Entering directory ' ( cd ' && rm -f rtl-sdr.h rtl-sdr_export.h ) make[2]: Leaving directory ' Making uninstall in src make[2]: Entering directory ' ( cd ' && rm -f rtl_sdr rtl_tcp rtl_test rtl_fm rtl_eeprom rtl_adsb rtl_power ) /bin/bash ../libtool --mode=uninstall rm -f ' libtool: uninstall: rm -f make[2]: Leaving directory ' make[2]: Entering directory ' ( cd ' && rm -f html.tar ) ( cd ' && rm -f librtlsdr.pc ) make uninstall-hook make[3]: Entering directory ' cd && rm -rf make[3]: Leaving directory ' make[2]: Leaving directory ' make[1]: Leaving directory ' make[1]: Entering directory ' make[1]: Leaving directory ' make[1]: Entering directory ' make install-recursive make[2]: Entering directory ' Making install in include make[3]: Entering directory ' make[4]: Entering directory ' make[4]: Nothing to be done for 'install-exec-am'. /bin/mkdir -p '/tmp/am-dc-11887/ /usr/bin/install -c -m 644 ../../../include/rtl-sdr.h ../../../include/rtl-sdr_export.h '/tmp/am-dc-11887/ make[4]: Leaving directory ' make[3]: Leaving directory ' Making install in src make[3]: Entering directory ' make[4]: Entering directory ' /bin/mkdir -p '/tmp/am-dc-11887/ /bin/bash ../libtool --mode=install /usr/bin/install -c librtlsdr.la '/tmp/am-dc-11887/ libtool: install: /usr/bin/install -c .libs/librtlsdr.so.0.0.5 /tmp/am-dc-11887/ libtool: install: (cd /tmp/am-dc-11887/ && { ln -s -f librtlsdr.so.0.0.5 librtlsdr.so.0 || { rm -f librtlsdr.so.0 && ln -s librtlsdr.so.0.0.5 librtlsdr.so.0; }; }) libtool: install: (cd /tmp/am-dc-11887/ && { ln -s -f librtlsdr.so.0.0.5 librtlsdr.so || { rm -f librtlsdr.so && ln -s librtlsdr.so.0.0.5 librtlsdr.so; }; }) libtool: install: /usr/bin/install -c .libs/librtlsdr.lai /tmp/am-dc-11887/ libtool: install: /usr/bin/install -c .libs/librtlsdr.a /tmp/am-dc-11887/ libtool: install: chmod 644 /tmp/am-dc-11887/ libtool: install: ranlib /tmp/am-dc-11887/ libtool: warning: remember to run 'libtool --finish /bin/mkdir -p '/tmp/am-dc-11887/ /bin/bash ../libtool --mode=install /usr/bin/install -c rtl_sdr rtl_tcp rtl_test rtl_fm rtl_eeprom rtl_adsb rtl_power '/tmp/am-dc-11887/ libtool: warning: 'librtlsdr.la' has not been installed in ' libtool: install: /usr/bin/install -c .libs/rtl_sdr /tmp/am-dc-11887/ libtool: warning: 'librtlsdr.la' has not been installed in ' libtool: install: /usr/bin/install -c .libs/rtl_tcp /tmp/am-dc-11887/ libtool: warning: 'librtlsdr.la' has not been installed in ' libtool: install: /usr/bin/install -c .libs/rtl_test /tmp/am-dc-11887/ libtool: warning: 'librtlsdr.la' has not been installed in ' libtool: install: /usr/bin/install -c .libs/rtl_fm /tmp/am-dc-11887/ libtool: warning: 'librtlsdr.la' has not been installed in ' libtool: install: /usr/bin/install -c .libs/rtl_eeprom /tmp/am-dc-11887/ libtool: warning: 'librtlsdr.la' has not been installed in ' libtool: install: /usr/bin/install -c .libs/rtl_adsb /tmp/am-dc-11887/ libtool: warning: 'librtlsdr.la' has not been installed in ' libtool: install: /usr/bin/install -c .libs/rtl_power /tmp/am-dc-11887/ make[4]: Nothing to be done for 'install-data-am'. make[4]: Leaving directory ' make[3]: Leaving directory ' make[3]: Entering directory ' make[4]: Entering directory ' make[4]: Nothing to be done for 'install-exec-am'. /bin/mkdir -p '/tmp/am-dc-11887/ /usr/bin/install -c -m 644 ./doc/html.tar '/tmp/am-dc-11887/ /bin/mkdir -p '/tmp/am-dc-11887/ /usr/bin/install -c -m 644 librtlsdr.pc '/tmp/am-dc-11887/ make install-data-hook make[5]: Entering directory ' cd /tmp/am-dc-11887/ && tar xf html.tar --strip-components 1 && rm -f html.tar make[5]: Leaving directory ' make[4]: Leaving directory ' make[3]: Leaving directory ' make[2]: Leaving directory ' make[1]: Leaving directory ' make[1]: Entering directory ' Making uninstall in include make[2]: Entering directory ' ( cd '/tmp/am-dc-11887/ && rm -f rtl-sdr.h rtl-sdr_export.h ) make[2]: Leaving directory ' Making uninstall in src make[2]: Entering directory ' ( cd '/tmp/am-dc-11887/ && rm -f rtl_sdr rtl_tcp rtl_test rtl_fm rtl_eeprom rtl_adsb rtl_power ) /bin/bash ../libtool --mode=uninstall rm -f '/tmp/am-dc-11887/ libtool: uninstall: rm -f /tmp/am-dc-11887/ /tmp/am-dc-11887/ /tmp/am-dc-11887/ /tmp/am-dc-11887/ /tmp/am-dc-11887/ make[2]: Leaving directory ' make[2]: Entering directory ' ( cd '/tmp/am-dc-11887/ && rm -f html.tar ) ( cd '/tmp/am-dc-11887/ && rm -f librtlsdr.pc ) make uninstall-hook make[3]: Entering directory ' cd /tmp/am-dc-11887/ && rm -rf make[3]: Leaving directory ' make[2]: Leaving directory ' make[1]: Leaving directory ' make[1]: Entering directory ' ERROR: files left after uninstall: (check DESTDIR support) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Makefile:757: recipe for target 'distuninstallcheck' failed make[1]: *** [distuninstallcheck] Error 1 make[1]: Leaving directory ' Makefile:701: recipe for target 'distcheck' failed make: *** [distcheck] Error 1 + cat-testlogs.sh Build step 'Execute shell' marked build as failure [WARNINGS]Skipping publisher since build result is FAILURE Not sending mail to unregistered user steve at steve-m.de From gerrit-no-reply at lists.osmocom.org Sun Apr 29 14:19:22 2018 From: gerrit-no-reply at lists.osmocom.org (Vadim Yanitskiy) Date: Sun, 29 Apr 2018 14:19:22 +0000 Subject: osmo-trx[master]: update .gitignore for new executable names In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+1 -- To view, visit https://gerrit.osmocom.org/7954 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Id698024485176e5201ca92c72b1bd1d5914aff32 Gerrit-PatchSet: 1 Gerrit-Project: osmo-trx Gerrit-Branch: master Gerrit-Owner: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Vadim Yanitskiy Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Sun Apr 29 14:19:27 2018 From: gerrit-no-reply at lists.osmocom.org (Vadim Yanitskiy) Date: Sun, 29 Apr 2018 14:19:27 +0000 Subject: osmo-trx[master]: osmo-trx: s/GSM Core Address/GSM BTS Address/ In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+1 -- To view, visit https://gerrit.osmocom.org/7955 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I6de2f708fc7a7df7dea16314b7dfa4ab82f15b2c Gerrit-PatchSet: 1 Gerrit-Project: osmo-trx Gerrit-Branch: master Gerrit-Owner: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Vadim Yanitskiy Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Sun Apr 29 14:37:03 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Sun, 29 Apr 2018 14:37:03 +0000 Subject: osmo-trx[master]: update .gitignore for new executable names In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7954 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Id698024485176e5201ca92c72b1bd1d5914aff32 Gerrit-PatchSet: 1 Gerrit-Project: osmo-trx Gerrit-Branch: master Gerrit-Owner: Harald Welte Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Vadim Yanitskiy Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Sun Apr 29 14:37:05 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Sun, 29 Apr 2018 14:37:05 +0000 Subject: osmo-trx[master]: osmo-trx: s/GSM Core Address/GSM BTS Address/ In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7955 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I6de2f708fc7a7df7dea16314b7dfa4ab82f15b2c Gerrit-PatchSet: 1 Gerrit-Project: osmo-trx Gerrit-Branch: master Gerrit-Owner: Harald Welte Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Vadim Yanitskiy Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Sun Apr 29 14:37:13 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Sun, 29 Apr 2018 14:37:13 +0000 Subject: [MERGED] osmo-trx[master]: osmo-trx: s/GSM Core Address/GSM BTS Address/ In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: osmo-trx: s/GSM Core Address/GSM BTS Address/ ...................................................................... osmo-trx: s/GSM Core Address/GSM BTS Address/ The TRX connects to the BTS, not to the "Core". The Core network is miles away... Change-Id: I6de2f708fc7a7df7dea16314b7dfa4ab82f15b2c --- M Transceiver52M/osmo-trx.cpp 1 file changed, 1 insertion(+), 1 deletion(-) Approvals: Vadim Yanitskiy: Looks good to me, but someone else must approve Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/Transceiver52M/osmo-trx.cpp b/Transceiver52M/osmo-trx.cpp index 1b351d6..09ba14e 100644 --- a/Transceiver52M/osmo-trx.cpp +++ b/Transceiver52M/osmo-trx.cpp @@ -385,7 +385,7 @@ ost << " Device args............. " << charp2str(trx->cfg.dev_args) << std::endl; ost << " TRX Base Port........... " << trx->cfg.base_port << std::endl; ost << " TRX Address............. " << charp2str(trx->cfg.bind_addr) << std::endl; - ost << " GSM Core Address........." << charp2str(trx->cfg.remote_addr) << std::endl; + ost << " GSM BTS Address......... " << charp2str(trx->cfg.remote_addr) << std::endl; ost << " Channels................ " << trx->cfg.num_chans << std::endl; ost << " Tx Samples-per-Symbol... " << trx->cfg.tx_sps << std::endl; ost << " Rx Samples-per-Symbol... " << trx->cfg.rx_sps << std::endl; -- To view, visit https://gerrit.osmocom.org/7955 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: I6de2f708fc7a7df7dea16314b7dfa4ab82f15b2c Gerrit-PatchSet: 1 Gerrit-Project: osmo-trx Gerrit-Branch: master Gerrit-Owner: Harald Welte Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Vadim Yanitskiy From gerrit-no-reply at lists.osmocom.org Sun Apr 29 14:37:13 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Sun, 29 Apr 2018 14:37:13 +0000 Subject: [MERGED] osmo-trx[master]: update .gitignore for new executable names In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: update .gitignore for new executable names ...................................................................... update .gitignore for new executable names Change-Id: Id698024485176e5201ca92c72b1bd1d5914aff32 --- M .gitignore 1 file changed, 2 insertions(+), 1 deletion(-) Approvals: Vadim Yanitskiy: Looks good to me, but someone else must approve Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/.gitignore b/.gitignore index e966b37..93c21e4 100644 --- a/.gitignore +++ b/.gitignore @@ -2,7 +2,8 @@ *.o *.lo *.la -Transceiver52M/osmo-trx +Transceiver52M/osmo-trx-uhd +Transceiver52M/osmo-trx-usrp1 # tests tests/CommonLibs/BitVectorTest -- To view, visit https://gerrit.osmocom.org/7954 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: Id698024485176e5201ca92c72b1bd1d5914aff32 Gerrit-PatchSet: 1 Gerrit-Project: osmo-trx Gerrit-Branch: master Gerrit-Owner: Harald Welte Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Vadim Yanitskiy From gerrit-no-reply at lists.osmocom.org Sun Apr 29 14:38:04 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Sun, 29 Apr 2018 14:38:04 +0000 Subject: libusrp[master]: build: use correct python version in generate_regs.py In-Reply-To: References: Message-ID: Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/7943 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I17a79464718c9dcf8f4f579fb1871bfac22075e3 Gerrit-PatchSet: 1 Gerrit-Project: libusrp Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-HasComments: No From gerrit-no-reply at lists.osmocom.org Sun Apr 29 14:38:15 2018 From: gerrit-no-reply at lists.osmocom.org (Harald Welte) Date: Sun, 29 Apr 2018 14:38:15 +0000 Subject: [MERGED] libusrp[master]: build: use correct python version in generate_regs.py In-Reply-To: References: Message-ID: Harald Welte has submitted this change and it was merged. Change subject: build: use correct python version in generate_regs.py ...................................................................... build: use correct python version in generate_regs.py AM_PATH_PYTHON is broken, we already dropped it in other osmocom projects. Change-Id: I17a79464718c9dcf8f4f579fb1871bfac22075e3 --- M firmware/include/Makefile.am M firmware/include/generate_regs.py 2 files changed, 3 insertions(+), 3 deletions(-) Approvals: Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/firmware/include/Makefile.am b/firmware/include/Makefile.am index e17726c..d12fce3 100644 --- a/firmware/include/Makefile.am +++ b/firmware/include/Makefile.am @@ -55,7 +55,7 @@ $(CODE_GENERATOR) fpga_regs_common.v: fpga_regs_common.h generate_regs.py - PYTHONPATH=$(top_srcdir)/usrp/firmware/include $(PYTHON) $(srcdir)/generate_regs.py $(srcdir)/fpga_regs_common.h $@ + PYTHONPATH=$(top_srcdir)/usrp/firmware/include $(srcdir)/generate_regs.py $(srcdir)/fpga_regs_common.h $@ fpga_regs_standard.v: fpga_regs_standard.h generate_regs.py - PYTHONPATH=$(top_srcdir)/usrp/firmware/include $(PYTHON) $(srcdir)/generate_regs.py $(srcdir)/fpga_regs_standard.h $@ + PYTHONPATH=$(top_srcdir)/usrp/firmware/include $(srcdir)/generate_regs.py $(srcdir)/fpga_regs_standard.h $@ diff --git a/firmware/include/generate_regs.py b/firmware/include/generate_regs.py index 656cd5e..f11baad 100755 --- a/firmware/include/generate_regs.py +++ b/firmware/include/generate_regs.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python2 import os, os.path import re -- To view, visit https://gerrit.osmocom.org/7943 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: I17a79464718c9dcf8f4f579fb1871bfac22075e3 Gerrit-PatchSet: 2 Gerrit-Project: libusrp Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder From jenkins at lists.osmocom.org Sun Apr 29 15:14:12 2018 From: jenkins at lists.osmocom.org (jenkins at lists.osmocom.org) Date: Sun, 29 Apr 2018 15:14:12 +0000 (UTC) Subject: =?UTF-8?Q?Jenkins_build_is_back_to_normal_:_master-asn1c_=C2=BB_a1=3Dde?= =?UTF-8?Q?fault,a2=3Ddefault,a3=3Ddefault,osmocom-master-debian9_#107?= In-Reply-To: <1364057271.136.1524928207076.JavaMail.jenkins@jenkins.osmocom.org> References: <1364057271.136.1524928207076.JavaMail.jenkins@jenkins.osmocom.org> Message-ID: <1331263040.152.1525014852422.JavaMail.jenkins@jenkins.osmocom.org> See From admin at opensuse.org Sun Apr 29 21:21:43 2018 From: admin at opensuse.org (OBS Notification) Date: Sun, 29 Apr 2018 21:21:43 +0000 Subject: Build failure of network:osmocom:nightly/openbsc in Debian_9.0/aarch64 In-Reply-To: References: Message-ID: <5ae63774c54db_2a6a12626806019ba@build.opensuse.org> Visit https://build.opensuse.org/package/live_build_log/network:osmocom:nightly/openbsc/Debian_9.0/aarch64 Package network:osmocom:nightly/openbsc failed to build in Debian_9.0/aarch64 Check out the package for editing: osc checkout network:osmocom:nightly openbsc Last lines of build log: [*** ] A start job is running for dev-disk...2d0.device (4min 58s / no limit) [ *** ] A start job is running for dev-disk...2d0.device (4min 58s / no limit) [ *** ] A start job is running for dev-disk...2d0.device (4min 59s / no limit) [ ***] A start job is running for dev-disk...2d0.device (4min 59s / no limit) [ **] A start job is running for dev-disk...io\x2d0.device (5min / no limit) [ *] A start job is running for dev-disk...io\x2d0.device (5min / no limit) [ **] A start job is running for dev-disk...x2d0.device (5min 1s / no limit) [ ***] A start job is running for dev-disk...x2d0.device (5min 1s / no limit) [ *** ] A start job is running for dev-disk...x2d0.device (5min 2s / no limit) [ *** ] A start job is running for dev-disk...x2d0.device (5min 2s / no limit) [*** ] A start job is running for dev-disk...x2d0.device (5min 3s / no limit) [** ] A start job is running for dev-disk...x2d0.device (5min 3s / no limit) [* ] A start job is running for dev-disk...x2d0.device (5min 4s / no limit) [** ] A start job is running for dev-disk...x2d0.device (5min 4s / no limit) [*** ] A start job is running for dev-disk...x2d0.device (5min 5s / no limit) [ *** ] A start job is running for dev-disk...x2d0.device (5min 5s / no limit) [ *** ] A start job is running for dev-disk...x2d0.device (5min 6s / no limit) [ ***] A start job is running for dev-disk...x2d0.device (5min 6s / no limit) [ **] A start job is running for dev-disk...x2d0.device (5min 7s / no limit) [ *] A start job is running for dev-disk...x2d0.device (5min 7s / no limit) [ **] A start job is running for dev-disk...x2d0.device (5min 8s / no limit)### WATCHDOG TRIGGERED, KILLING VM ### [ 320s] /var/cache/obs/worker/root_1/root: 1613 [ 320s] qemu-system-aarch64: terminating on signal 15 from pid 2034 [ 320s] ### VM INTERACTION END ### [ 320s] /var/run/obs/worker/1/build/build-vm: line 458: kill: (1606) - No such process [ 320s] No buildstatus set, either the base system is broken (kernel/initrd/udev/glibc/bash/perl) [ 320s] or the build host has a kernel or hardware problem... gave up after 13 failed build attempts... -- Configure notifications at https://build.opensuse.org/user/notifications openSUSE Build Service (https://build.opensuse.org/) From admin at opensuse.org Sun Apr 29 21:33:09 2018 From: admin at opensuse.org (OBS Notification) Date: Sun, 29 Apr 2018 21:33:09 +0000 Subject: Build failure of network:osmocom:nightly/osmo-sgsn in Debian_9.0/aarch64 In-Reply-To: References: Message-ID: <5ae63a20a0dbd_2a6a1262680608656@build.opensuse.org> Visit https://build.opensuse.org/package/live_build_log/network:osmocom:nightly/osmo-sgsn/Debian_9.0/aarch64 Package network:osmocom:nightly/osmo-sgsn failed to build in Debian_9.0/aarch64 Check out the package for editing: osc checkout network:osmocom:nightly osmo-sgsn Last lines of build log: [ *** ] A start job is running for dev-disk...2d0.device (4min 58s / no limit) [ ***] A start job is running for dev-disk...2d0.device (4min 58s / no limit) [ **] A start job is running for dev-disk...2d0.device (4min 59s / no limit) [ *] A start job is running for dev-disk...2d0.device (4min 59s / no limit) [ **] A start job is running for dev-disk...io\x2d0.device (5min / no limit) [ ***] A start job is running for dev-disk...io\x2d0.device (5min / no limit) [ *** ] A start job is running for dev-disk...x2d0.device (5min 1s / no limit) [ *** ] A start job is running for dev-disk...x2d0.device (5min 1s / no limit) [*** ] A start job is running for dev-disk...x2d0.device (5min 2s / no limit) [** ] A start job is running for dev-disk...x2d0.device (5min 2s / no limit) [* ] A start job is running for dev-disk...x2d0.device (5min 3s / no limit) [** ] A start job is running for dev-disk...x2d0.device (5min 3s / no limit) [*** ] A start job is running for dev-disk...x2d0.device (5min 4s / no limit) [ *** ] A start job is running for dev-disk...x2d0.device (5min 4s / no limit) [ *** ] A start job is running for dev-disk...x2d0.device (5min 5s / no limit) [ ***] A start job is running for dev-disk...x2d0.device (5min 5s / no limit) [ **] A start job is running for dev-disk...x2d0.device (5min 6s / no limit) [ *] A start job is running for dev-disk...x2d0.device (5min 6s / no limit) [ **] A start job is running for dev-disk...x2d0.device (5min 7s / no limit) [ ***] A start job is running for dev-disk...x2d0.device (5min 7s / no limit) [ *** ] A start job is running for dev-disk...x2d0.device (5min 8s / no limit)### WATCHDOG TRIGGERED, KILLING VM ### [ 320s] /var/cache/obs/worker/root_1/root: 3396 [ 320s] qemu-system-aarch64: terminating on signal 15 from pid 3783 [ 320s] ### VM INTERACTION END ### [ 320s] /var/run/obs/worker/1/build/build-vm: line 458: kill: (3389) - No such process [ 320s] No buildstatus set, either the base system is broken (kernel/initrd/udev/glibc/bash/perl) [ 320s] or the build host has a kernel or hardware problem... gave up after 11 failed build attempts... -- Configure notifications at https://build.opensuse.org/user/notifications openSUSE Build Service (https://build.opensuse.org/) From jenkins at lists.osmocom.org Sun Apr 29 22:41:20 2018 From: jenkins at lists.osmocom.org (jenkins at lists.osmocom.org) Date: Sun, 29 Apr 2018 22:41:20 +0000 (UTC) Subject: =?UTF-8?Q?Build_failed_in_Jenkins:_master-rtl-sdr_=C2=BB_a1=3Ddefau?= =?UTF-8?Q?lt,a2=3Ddefault,a3=3Ddefault,osmocom-master-debian9_#16?= In-Reply-To: <15582282.140.1524955280592.JavaMail.jenkins@jenkins.osmocom.org> References: <15582282.140.1524955280592.JavaMail.jenkins@jenkins.osmocom.org> Message-ID: <822172346.156.1525041680739.JavaMail.jenkins@jenkins.osmocom.org> See ------------------------------------------ [...truncated 93.31 KB...] make[2]: Leaving directory ' Making dvi in src make[2]: Entering directory ' make[2]: Nothing to be done for 'dvi'. make[2]: Leaving directory ' make[2]: Entering directory ' make[2]: Nothing to be done for 'dvi-am'. make[2]: Leaving directory ' make[1]: Leaving directory ' make[1]: Entering directory ' make check-recursive make[2]: Entering directory ' Making check in include make[3]: Entering directory ' make[3]: Nothing to be done for 'check'. make[3]: Leaving directory ' Making check in src make[3]: Entering directory ' make[3]: Nothing to be done for 'check'. make[3]: Leaving directory ' make[3]: Entering directory ' make[3]: Nothing to be done for 'check-am'. make[3]: Leaving directory ' make[2]: Leaving directory ' make[1]: Leaving directory ' make[1]: Entering directory ' make install-recursive make[2]: Entering directory ' Making install in include make[3]: Entering directory ' make[4]: Entering directory ' make[4]: Nothing to be done for 'install-exec-am'. /bin/mkdir -p ' /usr/bin/install -c -m 644 ../../../include/rtl-sdr.h ../../../include/rtl-sdr_export.h ' make[4]: Leaving directory ' make[3]: Leaving directory ' Making install in src make[3]: Entering directory ' make[4]: Entering directory ' /bin/mkdir -p ' /bin/bash ../libtool --mode=install /usr/bin/install -c librtlsdr.la ' libtool: install: /usr/bin/install -c .libs/librtlsdr.so.0.0.5 libtool: install: (cd && { ln -s -f librtlsdr.so.0.0.5 librtlsdr.so.0 || { rm -f librtlsdr.so.0 && ln -s librtlsdr.so.0.0.5 librtlsdr.so.0; }; }) libtool: install: (cd && { ln -s -f librtlsdr.so.0.0.5 librtlsdr.so || { rm -f librtlsdr.so && ln -s librtlsdr.so.0.0.5 librtlsdr.so; }; }) libtool: install: /usr/bin/install -c .libs/librtlsdr.lai libtool: install: /usr/bin/install -c .libs/librtlsdr.a libtool: install: chmod 644 libtool: install: ranlib libtool: finish: PATH="/usr/local/bin:/usr/bin:/bin:/usr/games:/home/osmocom-build/bin:/sbin" ldconfig -n ---------------------------------------------------------------------- Libraries have been installed in: If you ever happen to want to link against installed libraries in a given directory, LIBDIR, you must either use libtool, and specify the full pathname of the library, or use the '-LLIBDIR' flag during linking and do at least one of the following: - add LIBDIR to the 'LD_LIBRARY_PATH' environment variable during execution - add LIBDIR to the 'LD_RUN_PATH' environment variable during linking - use the '-Wl,-rpath -Wl,LIBDIR' linker flag - have your system administrator add LIBDIR to '/etc/ld.so.conf' See any operating system documentation about shared libraries for more information, such as the ld(1) and ld.so(8) manual pages. ---------------------------------------------------------------------- /bin/mkdir -p ' /bin/bash ../libtool --mode=install /usr/bin/install -c rtl_sdr rtl_tcp rtl_test rtl_fm rtl_eeprom rtl_adsb rtl_power ' libtool: install: /usr/bin/install -c .libs/rtl_sdr libtool: install: /usr/bin/install -c .libs/rtl_tcp libtool: install: /usr/bin/install -c .libs/rtl_test libtool: install: /usr/bin/install -c .libs/rtl_fm libtool: install: /usr/bin/install -c .libs/rtl_eeprom libtool: install: /usr/bin/install -c .libs/rtl_adsb libtool: install: /usr/bin/install -c .libs/rtl_power make[4]: Nothing to be done for 'install-data-am'. make[4]: Leaving directory ' make[3]: Leaving directory ' make[3]: Entering directory ' make[4]: Entering directory ' make[4]: Nothing to be done for 'install-exec-am'. /bin/mkdir -p ' /usr/bin/install -c -m 644 ./doc/html.tar ' /bin/mkdir -p ' /usr/bin/install -c -m 644 librtlsdr.pc ' make install-data-hook make[5]: Entering directory ' cd && tar xf html.tar --strip-components 1 && rm -f html.tar make[5]: Leaving directory ' make[4]: Leaving directory ' make[3]: Leaving directory ' make[2]: Leaving directory ' make[1]: Leaving directory ' make[1]: Entering directory ' Making installcheck in include make[2]: Entering directory ' make[2]: Nothing to be done for 'installcheck'. make[2]: Leaving directory ' Making installcheck in src make[2]: Entering directory ' make[2]: Nothing to be done for 'installcheck'. make[2]: Leaving directory ' make[2]: Entering directory ' make[2]: Nothing to be done for 'installcheck-am'. make[2]: Leaving directory ' make[1]: Leaving directory ' make[1]: Entering directory ' Making uninstall in include make[2]: Entering directory ' ( cd ' && rm -f rtl-sdr.h rtl-sdr_export.h ) make[2]: Leaving directory ' Making uninstall in src make[2]: Entering directory ' ( cd ' && rm -f rtl_sdr rtl_tcp rtl_test rtl_fm rtl_eeprom rtl_adsb rtl_power ) /bin/bash ../libtool --mode=uninstall rm -f ' libtool: uninstall: rm -f make[2]: Leaving directory ' make[2]: Entering directory ' ( cd ' && rm -f html.tar ) ( cd ' && rm -f librtlsdr.pc ) make uninstall-hook make[3]: Entering directory ' cd && rm -rf make[3]: Leaving directory ' make[2]: Leaving directory ' make[1]: Leaving directory ' make[1]: Entering directory ' make[1]: Leaving directory ' make[1]: Entering directory ' make install-recursive make[2]: Entering directory ' Making install in include make[3]: Entering directory ' make[4]: Entering directory ' make[4]: Nothing to be done for 'install-exec-am'. /bin/mkdir -p '/tmp/am-dc-10959/ /usr/bin/install -c -m 644 ../../../include/rtl-sdr.h ../../../include/rtl-sdr_export.h '/tmp/am-dc-10959/ make[4]: Leaving directory ' make[3]: Leaving directory ' Making install in src make[3]: Entering directory ' make[4]: Entering directory ' /bin/mkdir -p '/tmp/am-dc-10959/ /bin/bash ../libtool --mode=install /usr/bin/install -c librtlsdr.la '/tmp/am-dc-10959/ libtool: install: /usr/bin/install -c .libs/librtlsdr.so.0.0.5 /tmp/am-dc-10959/ libtool: install: (cd /tmp/am-dc-10959/ && { ln -s -f librtlsdr.so.0.0.5 librtlsdr.so.0 || { rm -f librtlsdr.so.0 && ln -s librtlsdr.so.0.0.5 librtlsdr.so.0; }; }) libtool: install: (cd /tmp/am-dc-10959/ && { ln -s -f librtlsdr.so.0.0.5 librtlsdr.so || { rm -f librtlsdr.so && ln -s librtlsdr.so.0.0.5 librtlsdr.so; }; }) libtool: install: /usr/bin/install -c .libs/librtlsdr.lai /tmp/am-dc-10959/ libtool: install: /usr/bin/install -c .libs/librtlsdr.a /tmp/am-dc-10959/ libtool: install: chmod 644 /tmp/am-dc-10959/ libtool: install: ranlib /tmp/am-dc-10959/ libtool: warning: remember to run 'libtool --finish /bin/mkdir -p '/tmp/am-dc-10959/ /bin/bash ../libtool --mode=install /usr/bin/install -c rtl_sdr rtl_tcp rtl_test rtl_fm rtl_eeprom rtl_adsb rtl_power '/tmp/am-dc-10959/ libtool: warning: 'librtlsdr.la' has not been installed in ' libtool: install: /usr/bin/install -c .libs/rtl_sdr /tmp/am-dc-10959/ libtool: warning: 'librtlsdr.la' has not been installed in ' libtool: install: /usr/bin/install -c .libs/rtl_tcp /tmp/am-dc-10959/ libtool: warning: 'librtlsdr.la' has not been installed in ' libtool: install: /usr/bin/install -c .libs/rtl_test /tmp/am-dc-10959/ libtool: warning: 'librtlsdr.la' has not been installed in ' libtool: install: /usr/bin/install -c .libs/rtl_fm /tmp/am-dc-10959/ libtool: warning: 'librtlsdr.la' has not been installed in ' libtool: install: /usr/bin/install -c .libs/rtl_eeprom /tmp/am-dc-10959/ libtool: warning: 'librtlsdr.la' has not been installed in ' libtool: install: /usr/bin/install -c .libs/rtl_adsb /tmp/am-dc-10959/ libtool: warning: 'librtlsdr.la' has not been installed in ' libtool: install: /usr/bin/install -c .libs/rtl_power /tmp/am-dc-10959/ make[4]: Nothing to be done for 'install-data-am'. make[4]: Leaving directory ' make[3]: Leaving directory ' make[3]: Entering directory ' make[4]: Entering directory ' make[4]: Nothing to be done for 'install-exec-am'. /bin/mkdir -p '/tmp/am-dc-10959/ /usr/bin/install -c -m 644 ./doc/html.tar '/tmp/am-dc-10959/ /bin/mkdir -p '/tmp/am-dc-10959/ /usr/bin/install -c -m 644 librtlsdr.pc '/tmp/am-dc-10959/ make install-data-hook make[5]: Entering directory ' cd /tmp/am-dc-10959/ && tar xf html.tar --strip-components 1 && rm -f html.tar make[5]: Leaving directory ' make[4]: Leaving directory ' make[3]: Leaving directory ' make[2]: Leaving directory ' make[1]: Leaving directory ' make[1]: Entering directory ' Making uninstall in include make[2]: Entering directory ' ( cd '/tmp/am-dc-10959/ && rm -f rtl-sdr.h rtl-sdr_export.h ) make[2]: Leaving directory ' Making uninstall in src make[2]: Entering directory ' ( cd '/tmp/am-dc-10959/ && rm -f rtl_sdr rtl_tcp rtl_test rtl_fm rtl_eeprom rtl_adsb rtl_power ) /bin/bash ../libtool --mode=uninstall rm -f '/tmp/am-dc-10959/ libtool: uninstall: rm -f /tmp/am-dc-10959/ /tmp/am-dc-10959/ /tmp/am-dc-10959/ /tmp/am-dc-10959/ /tmp/am-dc-10959/ make[2]: Leaving directory ' make[2]: Entering directory ' ( cd '/tmp/am-dc-10959/ && rm -f html.tar ) ( cd '/tmp/am-dc-10959/ && rm -f librtlsdr.pc ) make uninstall-hook make[3]: Entering directory ' cd /tmp/am-dc-10959/ && rm -rf make[3]: Leaving directory ' make[2]: Leaving directory ' make[1]: Leaving directory ' make[1]: Entering directory ' ERROR: files left after uninstall: (check DESTDIR support) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Makefile:757: recipe for target 'distuninstallcheck' failed make[1]: *** [distuninstallcheck] Error 1 make[1]: Leaving directory ' Makefile:701: recipe for target 'distcheck' failed make: *** [distcheck] Error 1 + cat-testlogs.sh Build step 'Execute shell' marked build as failure [WARNINGS]Skipping publisher since build result is FAILURE Not sending mail to unregistered user steve at steve-m.de From jenkins at lists.osmocom.org Mon Apr 30 00:14:44 2018 From: jenkins at lists.osmocom.org (jenkins at lists.osmocom.org) Date: Mon, 30 Apr 2018 00:14:44 +0000 (UTC) Subject: =?UTF-8?Q?Build_failed_in_Jenkins:_master-osmo-pcu_=C2=BB_m?= =?UTF-8?Q?aster,osmocom-master-debian9,none,False_#424?= Message-ID: <69978409.158.1525047284502.JavaMail.jenkins@jenkins.osmocom.org> See ------------------------------------------ [...truncated 116.05 KB...] CXX egprs_rlc_compression.lo CXXLD libgprs.la ar: `u' modifier ignored since `D' is the default (see `U') CXX pcu_main.o CXXLD osmo-pcu make[2]: Leaving directory ' Making all in examples make[2]: Entering directory ' make[2]: Nothing to be done for 'all'. make[2]: Leaving directory ' Making all in tests make[2]: Entering directory ' CXX pcu_emu.o CXX test_replay_gprs_attach.o CC openbsc_clone.o CXX test_pdp_activation.o CXXLD emu/pcu_emu make[2]: Leaving directory ' make[2]: Entering directory ' make[2]: Nothing to be done for 'all-am'. make[2]: Leaving directory ' make[1]: Leaving directory ' make[1]: Entering directory ' Making dvi in include make[2]: Entering directory ' make[2]: Nothing to be done for 'dvi'. make[2]: Leaving directory ' Making dvi in src make[2]: Entering directory ' make[2]: Nothing to be done for 'dvi'. make[2]: Leaving directory ' Making dvi in examples make[2]: Entering directory ' make[2]: Nothing to be done for 'dvi'. make[2]: Leaving directory ' Making dvi in tests make[2]: Entering directory ' make[2]: Nothing to be done for 'dvi'. make[2]: Leaving directory ' make[2]: Entering directory ' make[2]: Nothing to be done for 'dvi-am'. make[2]: Leaving directory ' make[1]: Leaving directory ' make[1]: Entering directory ' Making check in include make[2]: Entering directory ' make[2]: Nothing to be done for 'check'. make[2]: Leaving directory ' Making check in src make[2]: Entering directory ' make[2]: Nothing to be done for 'check'. make[2]: Leaving directory ' Making check in examples make[2]: Entering directory ' make[2]: Nothing to be done for 'check'. make[2]: Leaving directory ' Making check in tests make[2]: Entering directory ' make rlcmac/RLCMACTest alloc/AllocTest alloc/MslotTest tbf/TbfTest types/TypesTest ms/MsTest llist/LListTest llc/LlcTest codel/codel_test edge/EdgeTest bitcomp/BitcompTest fn/FnTest make[3]: Entering directory ' CXX RLCMACTest.o CXXLD rlcmac/RLCMACTest CXX AllocTest.o CXXLD alloc/AllocTest CXX MslotTest.o CXXLD alloc/MslotTest CXX TbfTest.o CXXLD tbf/TbfTest CXX TypesTest.o CXXLD types/TypesTest CXX MsTest.o CXXLD ms/MsTest CXX LListTest.o CXXLD llist/LListTest CXX LlcTest.o CXXLD llc/LlcTest CC codel_test.o CCLD codel/codel_test CXX EdgeTest.o CXXLD edge/EdgeTest CXX BitcompTest.o CXX egprs_rlc_compression.o CXXLD bitcomp/BitcompTest CXX FnTest.o CXXLD fn/FnTest make[3]: Leaving directory ' make check-local make[3]: Entering directory ' /bin/bash '../../../tests/testsuite' ## ----------------------------------- ## ## osmo-pcu 0.4.0.114-33c5 test suite. ## ## ----------------------------------- ## Regression tests 1: rlcmac ok 2: multi_slot ok 3: ts_alloc ok 4: tbf ok 5: bitcomp ok 6: edge ok 7: types ok 8: ms ok 9: llc ok 10: llist ok 11: codel ok 12: fn ok ## ------------- ## ## Test results. ## ## ------------- ## All 12 tests were successful. make python-tests make[4]: Entering directory ' Not running python-based tests (determined at configure-time) make[4]: Leaving directory ' make[3]: Leaving directory ' make[2]: Leaving directory ' make[2]: Entering directory ' make[2]: Nothing to be done for 'check-am'. make[2]: Leaving directory ' make[1]: Leaving directory ' make[1]: Entering directory ' Making install in include make[2]: Entering directory ' make[3]: Entering directory ' make[3]: Nothing to be done for 'install-exec-am'. /bin/mkdir -p ' /bin/mkdir -p ' /usr/bin/install -c -m 644 ../../../include/osmocom/pcu/pcuif_proto.h ' make[3]: Leaving directory ' make[2]: Leaving directory ' Making install in src make[2]: Entering directory ' make[3]: Entering directory ' /bin/mkdir -p ' /bin/bash ../libtool --mode=install /usr/bin/install -c osmo-pcu ' libtool: install: /usr/bin/install -c osmo-pcu make[3]: Leaving directory ' make[2]: Leaving directory ' Making install in examples make[2]: Entering directory ' make[3]: Entering directory ' make[3]: Nothing to be done for 'install-exec-am'. /bin/mkdir -p ' /usr/bin/install -c -m 644 ../../../examples/osmo-pcu.cfg ' make[3]: Leaving directory ' make[2]: Leaving directory ' Making install in tests make[2]: Entering directory ' make[3]: Entering directory ' make[3]: Nothing to be done for 'install-exec-am'. make[3]: Nothing to be done for 'install-data-am'. make[3]: Leaving directory ' make[2]: Leaving directory ' make[2]: Entering directory ' make[3]: Entering directory ' make[3]: Nothing to be done for 'install-exec-am'. /bin/mkdir -p ' /usr/bin/install -c -m 644 osmo-pcu.pc ' make[3]: Leaving directory ' make[2]: Leaving directory ' make[1]: Leaving directory ' make[1]: Entering directory ' Making installcheck in include make[2]: Entering directory ' make[2]: Nothing to be done for 'installcheck'. make[2]: Leaving directory ' Making installcheck in src make[2]: Entering directory ' make[2]: Nothing to be done for 'installcheck'. make[2]: Leaving directory ' Making installcheck in examples make[2]: Entering directory ' make[2]: Nothing to be done for 'installcheck'. make[2]: Leaving directory ' Making installcheck in tests make[2]: Entering directory ' /bin/bash '../../../tests/testsuite' AUTOTEST_PATH=' \ ## ----------------------------------- ## ## osmo-pcu 0.4.0.114-33c5 test suite. ## ## ----------------------------------- ## Regression tests 1: rlcmac ok 2: multi_slot ok 3: ts_alloc ok 4: tbf FAILED (testsuite.at:29) 5: bitcomp ok 6: edge ok 7: types ok 8: ms ok 9: llc ok 10: llist ok 11: codel ok 12: fn ok ## ------------- ## ## Test results. ## ## ------------- ## ERROR: All 12 tests were run, 1 failed unexpectedly. ## -------------------------- ## ## testsuite.log was created. ## ## -------------------------- ## Please send `tests/testsuite.log' and all information you think might help: To: Subject: [osmo-pcu 0.4.0.114-33c5] testsuite: 4 failed You may investigate any problem if you feel able to do so, in which case the test suite provides a good starting point. Its output may be found below `tests/testsuite.dir'. Makefile:1265: recipe for target 'installcheck-local' failed make[2]: *** [installcheck-local] Error 1 make[2]: Leaving directory ' Makefile:461: recipe for target 'installcheck-recursive' failed make[1]: *** [installcheck-recursive] Error 1 make[1]: Leaving directory ' Makefile:666: recipe for target 'distcheck' failed make: *** [distcheck] Error 1 + cat-testlogs.sh ======================== ./osmo-pcu-0.4.0.114-33c5/_build/sub/tests/testsuite.dir/04/testsuite.log # -*- compilation -*- 4. testsuite.at:25: testing tbf ... ../../../tests/testsuite.at:29: $OSMO_QEMU $abs_top_builddir/tests/tbf/TbfTest --- experr 2018-04-30 00:14:42.929397776 +0000 +++ 2018-04-30 00:14:43.001397283 +0000 @@ -6804,6 +6804,7 @@ TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) data_length=44, data=00 80 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) UL DATA TFI=0 received (V(Q)=1 .. V(R)=127) +../../../src/gprs_rlcmac_meas.cpp:82:42: runtime error: left shift of negative value -998385 max_cs_ul cannot be derived (current UL CS: UNKNOWN) TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) restarting timer T3169 [acked (data)] with 0 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) Got MCS-4 RLC data block: CV=10, BSN=128, SPB=0, PI=0, E=1, TI=0, bitoffs=33 4. testsuite.at:25: 4. tbf (testsuite.at:25): FAILED (testsuite.at:29) Build step 'Execute shell' marked build as failure [WARNINGS] Skipping publisher since build result is FAILURE From jenkins at lists.osmocom.org Mon Apr 30 07:36:01 2018 From: jenkins at lists.osmocom.org (jenkins at lists.osmocom.org) Date: Mon, 30 Apr 2018 07:36:01 +0000 (UTC) Subject: =?UTF-8?Q?Jenkins_build_is_back_to_normal_:_master-osmo-pc?= =?UTF-8?Q?u_=C2=BB_master,osmocom-master-debian9,none,False_#425?= In-Reply-To: <69978409.158.1525047284502.JavaMail.jenkins@jenkins.osmocom.org> References: <69978409.158.1525047284502.JavaMail.jenkins@jenkins.osmocom.org> Message-ID: <1299935991.168.1525073761940.JavaMail.jenkins@jenkins.osmocom.org> See From jenkins at lists.osmocom.org Mon Apr 30 22:41:20 2018 From: jenkins at lists.osmocom.org (jenkins at lists.osmocom.org) Date: Mon, 30 Apr 2018 22:41:20 +0000 (UTC) Subject: =?UTF-8?Q?Build_failed_in_Jenkins:_master-rtl-sdr_=C2=BB_a1=3Ddefau?= =?UTF-8?Q?lt,a2=3Ddefault,a3=3Ddefault,osmocom-master-debian9_#17?= In-Reply-To: <822172346.156.1525041680739.JavaMail.jenkins@jenkins.osmocom.org> References: <822172346.156.1525041680739.JavaMail.jenkins@jenkins.osmocom.org> Message-ID: <1873838043.191.1525128080590.JavaMail.jenkins@jenkins.osmocom.org> See ------------------------------------------ [...truncated 93.12 KB...] make[2]: Nothing to be done for 'dvi'. make[2]: Leaving directory ' Making dvi in src make[2]: Entering directory ' make[2]: Nothing to be done for 'dvi'. make[2]: Leaving directory ' make[2]: Entering directory ' make[2]: Nothing to be done for 'dvi-am'. make[2]: Leaving directory ' make[1]: Leaving directory ' make[1]: Entering directory ' make check-recursive make[2]: Entering directory ' Making check in include make[3]: Entering directory ' make[3]: Nothing to be done for 'check'. make[3]: Leaving directory ' Making check in src make[3]: Entering directory ' make[3]: Nothing to be done for 'check'. make[3]: Leaving directory ' make[3]: Entering directory ' make[3]: Leaving directory ' make[2]: Leaving directory ' make[1]: Leaving directory ' make[1]: Entering directory ' make install-recursive make[2]: Entering directory ' Making install in include make[3]: Entering directory ' make[4]: Entering directory ' make[4]: Nothing to be done for 'install-exec-am'. /bin/mkdir -p ' /usr/bin/install -c -m 644 ../../../include/rtl-sdr.h ../../../include/rtl-sdr_export.h ' make[4]: Leaving directory ' make[3]: Leaving directory ' Making install in src make[3]: Entering directory ' make[4]: Entering directory ' /bin/mkdir -p ' /bin/bash ../libtool --mode=install /usr/bin/install -c librtlsdr.la ' libtool: install: /usr/bin/install -c .libs/librtlsdr.so.0.0.5 libtool: install: (cd && { ln -s -f librtlsdr.so.0.0.5 librtlsdr.so.0 || { rm -f librtlsdr.so.0 && ln -s librtlsdr.so.0.0.5 librtlsdr.so.0; }; }) libtool: install: (cd && { ln -s -f librtlsdr.so.0.0.5 librtlsdr.so || { rm -f librtlsdr.so && ln -s librtlsdr.so.0.0.5 librtlsdr.so; }; }) libtool: install: /usr/bin/install -c .libs/librtlsdr.lai libtool: install: /usr/bin/install -c .libs/librtlsdr.a libtool: install: chmod 644 libtool: install: ranlib libtool: finish: PATH="/usr/local/bin:/usr/bin:/bin:/usr/games:/home/osmocom-build/bin:/sbin" ldconfig -n ---------------------------------------------------------------------- Libraries have been installed in: If you ever happen to want to link against installed libraries in a given directory, LIBDIR, you must either use libtool, and specify the full pathname of the library, or use the '-LLIBDIR' flag during linking and do at least one of the following: - add LIBDIR to the 'LD_LIBRARY_PATH' environment variable during execution - add LIBDIR to the 'LD_RUN_PATH' environment variable during linking - use the '-Wl,-rpath -Wl,LIBDIR' linker flag - have your system administrator add LIBDIR to '/etc/ld.so.conf' See any operating system documentation about shared libraries for more information, such as the ld(1) and ld.so(8) manual pages. ---------------------------------------------------------------------- /bin/mkdir -p ' /bin/bash ../libtool --mode=install /usr/bin/install -c rtl_sdr rtl_tcp rtl_test rtl_fm rtl_eeprom rtl_adsb rtl_power ' libtool: install: /usr/bin/install -c .libs/rtl_sdr libtool: install: /usr/bin/install -c .libs/rtl_tcp libtool: install: /usr/bin/install -c .libs/rtl_test libtool: install: /usr/bin/install -c .libs/rtl_fm libtool: install: /usr/bin/install -c .libs/rtl_eeprom libtool: install: /usr/bin/install -c .libs/rtl_adsb libtool: install: /usr/bin/install -c .libs/rtl_power make[4]: Nothing to be done for 'install-data-am'. make[4]: Leaving directory ' make[3]: Leaving directory ' make[3]: Entering directory ' make[4]: Entering directory ' make[4]: Nothing to be done for 'install-exec-am'. /bin/mkdir -p ' /usr/bin/install -c -m 644 ./doc/html.tar ' /bin/mkdir -p ' /usr/bin/install -c -m 644 librtlsdr.pc ' make install-data-hook make[5]: Entering directory ' cd && tar xf html.tar --strip-components 1 && rm -f html.tar make[5]: Leaving directory ' make[4]: Leaving directory ' make[3]: Leaving directory ' make[2]: Leaving directory ' make[1]: Leaving directory ' make[1]: Entering directory ' Making installcheck in include make[2]: Entering directory ' make[2]: Nothing to be done for 'installcheck'. make[2]: Leaving directory ' Making installcheck in src make[2]: Entering directory ' make[2]: Nothing to be done for 'installcheck'. make[2]: Leaving directory ' make[2]: Entering directory ' make[2]: Nothing to be done for 'installcheck-am'. make[2]: Leaving directory ' make[1]: Leaving directory ' make[1]: Entering directory ' Making uninstall in include make[2]: Entering directory ' ( cd ' && rm -f rtl-sdr.h rtl-sdr_export.h ) make[2]: Leaving directory ' Making uninstall in src make[2]: Entering directory ' ( cd ' && rm -f rtl_sdr rtl_tcp rtl_test rtl_fm rtl_eeprom rtl_adsb rtl_power ) /bin/bash ../libtool --mode=uninstall rm -f ' libtool: uninstall: rm -f make[2]: Leaving directory ' make[2]: Entering directory ' ( cd ' && rm -f html.tar ) ( cd ' && rm -f librtlsdr.pc ) make uninstall-hook make[3]: Entering directory ' cd && rm -rf make[3]: Leaving directory ' make[2]: Leaving directory ' make[1]: Leaving directory ' make[1]: Entering directory ' make[1]: Leaving directory ' make[1]: Entering directory ' make install-recursive make[2]: Entering directory ' Making install in include make[3]: Entering directory ' make[4]: Entering directory ' make[4]: Nothing to be done for 'install-exec-am'. /bin/mkdir -p '/tmp/am-dc-21433/ /usr/bin/install -c -m 644 ../../../include/rtl-sdr.h ../../../include/rtl-sdr_export.h '/tmp/am-dc-21433/ make[4]: Leaving directory ' make[3]: Leaving directory ' Making install in src make[3]: Entering directory ' make[4]: Entering directory ' /bin/mkdir -p '/tmp/am-dc-21433/ /bin/bash ../libtool --mode=install /usr/bin/install -c librtlsdr.la '/tmp/am-dc-21433/ libtool: install: /usr/bin/install -c .libs/librtlsdr.so.0.0.5 /tmp/am-dc-21433/ libtool: install: (cd /tmp/am-dc-21433/ && { ln -s -f librtlsdr.so.0.0.5 librtlsdr.so.0 || { rm -f librtlsdr.so.0 && ln -s librtlsdr.so.0.0.5 librtlsdr.so.0; }; }) libtool: install: (cd /tmp/am-dc-21433/ && { ln -s -f librtlsdr.so.0.0.5 librtlsdr.so || { rm -f librtlsdr.so && ln -s librtlsdr.so.0.0.5 librtlsdr.so; }; }) libtool: install: /usr/bin/install -c .libs/librtlsdr.lai /tmp/am-dc-21433/ libtool: install: /usr/bin/install -c .libs/librtlsdr.a /tmp/am-dc-21433/ libtool: install: chmod 644 /tmp/am-dc-21433/ libtool: install: ranlib /tmp/am-dc-21433/ libtool: warning: remember to run 'libtool --finish /bin/mkdir -p '/tmp/am-dc-21433/ /bin/bash ../libtool --mode=install /usr/bin/install -c rtl_sdr rtl_tcp rtl_test rtl_fm rtl_eeprom rtl_adsb rtl_power '/tmp/am-dc-21433/ libtool: warning: 'librtlsdr.la' has not been installed in ' libtool: install: /usr/bin/install -c .libs/rtl_sdr /tmp/am-dc-21433/ libtool: warning: 'librtlsdr.la' has not been installed in ' libtool: install: /usr/bin/install -c .libs/rtl_tcp /tmp/am-dc-21433/ libtool: warning: 'librtlsdr.la' has not been installed in ' libtool: install: /usr/bin/install -c .libs/rtl_test /tmp/am-dc-21433/ libtool: warning: 'librtlsdr.la' has not been installed in ' libtool: install: /usr/bin/install -c .libs/rtl_fm /tmp/am-dc-21433/ libtool: warning: 'librtlsdr.la' has not been installed in ' libtool: install: /usr/bin/install -c .libs/rtl_eeprom /tmp/am-dc-21433/ libtool: warning: 'librtlsdr.la' has not been installed in ' libtool: install: /usr/bin/install -c .libs/rtl_adsb /tmp/am-dc-21433/ libtool: warning: 'librtlsdr.la' has not been installed in ' libtool: install: /usr/bin/install -c .libs/rtl_power /tmp/am-dc-21433/ make[4]: Nothing to be done for 'install-data-am'. make[4]: Leaving directory ' make[3]: Leaving directory ' make[3]: Entering directory ' make[4]: Entering directory ' make[4]: Nothing to be done for 'install-exec-am'. /bin/mkdir -p '/tmp/am-dc-21433/ /usr/bin/install -c -m 644 ./doc/html.tar '/tmp/am-dc-21433/ /bin/mkdir -p '/tmp/am-dc-21433/ /usr/bin/install -c -m 644 librtlsdr.pc '/tmp/am-dc-21433/ make install-data-hook make[5]: Entering directory ' cd /tmp/am-dc-21433/ && tar xf html.tar --strip-components 1 && rm -f html.tar make[5]: Leaving directory ' make[4]: Leaving directory ' make[3]: Leaving directory ' make[2]: Leaving directory ' make[1]: Leaving directory ' make[1]: Entering directory ' Making uninstall in include make[2]: Entering directory ' ( cd '/tmp/am-dc-21433/ && rm -f rtl-sdr.h rtl-sdr_export.h ) make[2]: Leaving directory ' Making uninstall in src make[2]: Entering directory ' ( cd '/tmp/am-dc-21433/ && rm -f rtl_sdr rtl_tcp rtl_test rtl_fm rtl_eeprom rtl_adsb rtl_power ) /bin/bash ../libtool --mode=uninstall rm -f '/tmp/am-dc-21433/ libtool: uninstall: rm -f /tmp/am-dc-21433/ /tmp/am-dc-21433/ /tmp/am-dc-21433/ /tmp/am-dc-21433/ /tmp/am-dc-21433/ make[2]: Leaving directory ' make[2]: Entering directory ' ( cd '/tmp/am-dc-21433/ && rm -f html.tar ) ( cd '/tmp/am-dc-21433/ && rm -f librtlsdr.pc ) make uninstall-hook make[3]: Entering directory ' cd /tmp/am-dc-21433/ && rm -rf make[3]: Leaving directory ' make[2]: Leaving directory ' make[1]: Leaving directory ' make[1]: Entering directory ' ERROR: files left after uninstall: (check DESTDIR support) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Makefile:757: recipe for target 'distuninstallcheck' failed make[1]: *** [distuninstallcheck] Error 1 make[1]: Leaving directory ' Makefile:701: recipe for target 'distcheck' failed make: *** [distcheck] Error 1 + cat-testlogs.sh Build step 'Execute shell' marked build as failure [WARNINGS]Skipping publisher since build result is FAILURE Not sending mail to unregistered user steve at steve-m.de From gerrit-no-reply at lists.osmocom.org Mon Apr 30 23:31:37 2018 From: gerrit-no-reply at lists.osmocom.org (Neels Hofmeyr) Date: Mon, 30 Apr 2018 23:31:37 +0000 Subject: [PATCH] osmo-ttcn3-hacks[master]: sgsn: test umts aka with gsm sres response Message-ID: Review at https://gerrit.osmocom.org/7956 sgsn: test umts aka with gsm sres response Add ability to test UMTS AKA, by f_gmm_attach() with flags to select UMTS AKA and to respond to it with GSM AKA SRES. Add TC_attach_umts_aka_umts_res and TC_attach_umts_aka_gsm_sres. Change existing TC_attach_* to also call f_gmm_attach(). (Actually, f_gmm_attach() is almost exactly the previous TC_attach function body.) osmo-sgsn change I36807bad3bc55c0030d4f09cb2c369714f24bec7 will implement proper handling of GSM AKA response and make TC_attach_umts_aka_gsm_sres pass. Related: OS#3193 OS#3224 Change-Id: I201ffeaee4439a413ab8289aceeccca9aba40a7a --- M library/L3_Common.ttcn M sgsn/SGSN_Tests.ttcn M sgsn/expected-results.xml 3 files changed, 114 insertions(+), 13 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-ttcn3-hacks refs/changes/56/7956/1 diff --git a/library/L3_Common.ttcn b/library/L3_Common.ttcn index 5b36056..2b39621 100644 --- a/library/L3_Common.ttcn +++ b/library/L3_Common.ttcn @@ -7,8 +7,11 @@ type record AuthVector { OCT16 rand, OCT4 sres, - OCT8 kc - /* FIXME: 3G elements */ + OCT8 kc, + OCT16 ik, + OCT16 ck, + OCT16 autn, + OCT8 res } private function f_rnd_oct(integer len) return octetstring { @@ -28,6 +31,15 @@ return vec; } +function f_gen_auth_vec_3g() return AuthVector { + var AuthVector vec := f_gen_auth_vec_2g(); + vec.ik := f_rnd_oct(16); + vec.ck := f_rnd_oct(16); + vec.autn := f_rnd_oct(16); + vec.res := f_rnd_oct(8); + return vec; +} + /* 3GPP TS 23.003 2.6 */ type enumerated TlliType { TLLI_LOCAL, diff --git a/sgsn/SGSN_Tests.ttcn b/sgsn/SGSN_Tests.ttcn index 79aa166..7d3a5d9 100644 --- a/sgsn/SGSN_Tests.ttcn +++ b/sgsn/SGSN_Tests.ttcn @@ -35,6 +35,8 @@ import from GSM_RR_Types all; +import from MobileL3_MM_Types all; + modulepar { /* IP/port on which we run our internal GSUP/HLR emulation */ @@ -286,23 +288,65 @@ } } -/* perform GMM authentication (if expected) */ -function f_gmm_auth () runs on BSSGP_ConnHdlr { +/* perform GMM authentication (if expected). + * Note, for umts_aka_challenge to work, the revisionLevelIndicatior needs to + * be 1 to mark R99 capability, in the GMM Attach Request, see f_gmm_attach(). */ +function f_gmm_auth (boolean umts_aka_challenge := false, boolean force_gsm_sres := false) runs on BSSGP_ConnHdlr { var BssgpDecoded bd; var PDU_L3_MS_SGSN l3_mo; var PDU_L3_SGSN_MS l3_mt; var default di := activate(as_mm_identity()); if (g_pars.net.expect_auth) { - g_pars.vec := f_gen_auth_vec_2g(); - var GSUP_IE auth_tuple := valueof(ts_GSUP_IE_AuthTuple2G(g_pars.vec.rand, - g_pars.vec.sres, - g_pars.vec.kc)); + var GSUP_IE auth_tuple; + var template AuthenticationParameterAUTNTLV autn; + + if (umts_aka_challenge) { + g_pars.vec := f_gen_auth_vec_3g(); + autn := { + elementIdentifier := '28'O, + lengthIndicator := lengthof(g_pars.vec.autn), + autnValue := g_pars.vec.autn + }; + + auth_tuple := valueof(ts_GSUP_IE_AuthTuple2G3G(g_pars.vec.rand, + g_pars.vec.sres, + g_pars.vec.kc, + g_pars.vec.ik, + g_pars.vec.ck, + g_pars.vec.autn, + g_pars.vec.res)); + log("GSUP sends 2G and 3G auth tuples", auth_tuple); + } else { + g_pars.vec := f_gen_auth_vec_2g(); + autn := omit; + auth_tuple := valueof(ts_GSUP_IE_AuthTuple2G(g_pars.vec.rand, + g_pars.vec.sres, + g_pars.vec.kc)); + log("GSUP sends only 2G auth tuple", auth_tuple); + } GSUP.receive(tr_GSUP_SAI_REQ(g_pars.imsi)); GSUP.send(ts_GSUP_SAI_RES(g_pars.imsi, auth_tuple)); - BSSGP.receive(tr_BD_L3_MT(tr_GMM_AUTH_REQ(g_pars.vec.rand))) -> value bd; + + var template PDU_L3_SGSN_MS auth_ciph_req := tr_GMM_AUTH_REQ(g_pars.vec.rand); + auth_ciph_req.msgs.gprs_mm.authenticationAndCipheringRequest.authenticationParameterAUTN := autn; + BSSGP.receive(tr_BD_L3_MT(auth_ciph_req)) -> value bd; l3_mt := bd.l3_mt; var BIT4 ac_ref := l3_mt.msgs.gprs_mm.authenticationAndCipheringRequest.acReferenceNumber.valueField; - l3_mo := valueof(ts_GMM_AUTH_RESP_2G(ac_ref, g_pars.vec.sres)); + var template PDU_L3_MS_SGSN auth_ciph_resp := ts_GMM_AUTH_RESP_2G(ac_ref, g_pars.vec.sres); + + if (umts_aka_challenge and not force_gsm_sres) { + /* set UMTS response instead */ + auth_ciph_resp.msgs.gprs_mm.authenticationAndCipheringResponse.authenticationParResp := { + valueField := substr(g_pars.vec.res, 0, 4) + }; + auth_ciph_resp.msgs.gprs_mm.authenticationAndCipheringResponse.authenticationRespParExt := { + elementIdentifier := '21'O, + lengthIndicator := lengthof(g_pars.vec.res) - 4, + valueField := substr(g_pars.vec.res, 4, lengthof(g_pars.vec.res) - 4) + }; + } + + l3_mo := valueof(auth_ciph_resp); if (ispresent(l3_mt.msgs.gprs_mm.authenticationAndCipheringRequest.imeisvRequest) and l3_mt.msgs.gprs_mm.authenticationAndCipheringRequest.imeisvRequest.valueField == '001'B) { l3_mo.msgs.gprs_mm.authenticationAndCipheringResponse.imeisv := @@ -402,12 +446,20 @@ GSUP.send(ts_GSUP_UL_RES(g_pars.imsi)); } -private function f_TC_attach(charstring id) runs on BSSGP_ConnHdlr { +private function f_gmm_attach(boolean umts_aka_challenge, boolean force_gsm_sres) runs on BSSGP_ConnHdlr { var BssgpDecoded bd; var RoutingAreaIdentificationV old_ra := f_random_RAI(); + var template PDU_L3_MS_SGSN attach_req := ts_GMM_ATTACH_REQ(f_mi_get_lv(), old_ra, false, false, omit, omit); - BSSGP.send(ts_GMM_ATTACH_REQ(f_mi_get_lv(), old_ra, false, false, omit, omit)); - f_gmm_auth(); + /* indicate R99 capability of the MS to enable UMTS AKA in presence of + * 3G auth vectors */ + attach_req.msgs.gprs_mm.attachRequest.msNetworkCapability.msNetworkCapabilityV.revisionLevelIndicatior := '1'B; + /* The thing is, if the solSACapability is 'omit', then the + * revisionLevelIndicatior is at the wrong place! */ + attach_req.msgs.gprs_mm.attachRequest.msNetworkCapability.msNetworkCapabilityV.solSACapability := '0'B; + + BSSGP.send(attach_req); + f_gmm_auth(umts_aka_challenge, force_gsm_sres); /* Expect MSC to perform LU with HLR */ f_gmm_gsup_lu_isd(); @@ -416,6 +468,10 @@ } /* FIXME: Extract P-TMSI, if any. Only send Complete if necessary */ BSSGP.send(ts_GMM_ATTACH_COMPL); +} + +private function f_TC_attach(charstring id) runs on BSSGP_ConnHdlr { + f_gmm_attach(false, false); setverdict(pass); } @@ -432,6 +488,30 @@ f_init('023042'H); f_sleep(1.0); vc_conn := f_start_handler(refers(f_TC_attach), testcasename(), g_gb[0], 1001); + vc_conn.done; +} + +private function f_TC_attach_umts_aka_umts_res(charstring id) runs on BSSGP_ConnHdlr { + f_gmm_attach(true, false); + setverdict(pass); +} +testcase TC_attach_umts_aka_umts_res() runs on test_CT { + var BSSGP_ConnHdlr vc_conn; + f_init(); + f_sleep(1.0); + vc_conn := f_start_handler(refers(f_TC_attach_umts_aka_umts_res), testcasename(), g_gb[0], 1002); + vc_conn.done; +} + +private function f_TC_attach_umts_aka_gsm_sres(charstring id) runs on BSSGP_ConnHdlr { + f_gmm_attach(true, true); + setverdict(pass); +} +testcase TC_attach_umts_aka_gsm_sres() runs on test_CT { + var BSSGP_ConnHdlr vc_conn; + f_init(); + f_sleep(1.0); + vc_conn := f_start_handler(refers(f_TC_attach_umts_aka_gsm_sres), testcasename(), g_gb[0], 1003); vc_conn.done; } @@ -1153,6 +1233,8 @@ control { execute( TC_attach() ); execute( TC_attach_mnc3() ); + execute( TC_attach_umts_aka_umts_res() ); + execute( TC_attach_umts_aka_gsm_sres() ); execute( TC_attach_auth_id_timeout() ); execute( TC_attach_auth_sai_timeout() ); execute( TC_attach_auth_sai_reject() ); diff --git a/sgsn/expected-results.xml b/sgsn/expected-results.xml index 49ab60c..688e35e 100644 --- a/sgsn/expected-results.xml +++ b/sgsn/expected-results.xml @@ -2,6 +2,13 @@ + + + Tguard timeout + SGSN_Tests.ttcn:MASKED SGSN_Tests control part + SGSN_Tests.ttcn:MASKED TC_attach_umts_aka_gsm_sres testcase + + Tguard timeout -- To view, visit https://gerrit.osmocom.org/7956 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I201ffeaee4439a413ab8289aceeccca9aba40a7a Gerrit-PatchSet: 1 Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr From gerrit-no-reply at lists.osmocom.org Mon Apr 30 23:36:19 2018 From: gerrit-no-reply at lists.osmocom.org (Neels Hofmeyr) Date: Mon, 30 Apr 2018 23:36:19 +0000 Subject: [PATCH] osmo-sgsn[master]: auth+ciph: log is_r99 and auth types Message-ID: Review at https://gerrit.osmocom.org/7957 auth+ciph: log is_r99 and auth types Change-Id: I9679b7c174df186e05171a059a6b4d870a6f16e6 --- M src/gprs/gprs_gmm.c 1 file changed, 4 insertions(+), 2 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-sgsn refs/changes/57/7957/1 diff --git a/src/gprs/gprs_gmm.c b/src/gprs/gprs_gmm.c index ff993cc..275cdbc 100644 --- a/src/gprs/gprs_gmm.c +++ b/src/gprs/gprs_gmm.c @@ -587,8 +587,10 @@ uint8_t *m_rand, *m_cksn, rbyte; int rc; - LOGMMCTXP(LOGL_INFO, mm, "<- GPRS AUTH AND CIPHERING REQ (rand = %s", - osmo_hexdump(vec->rand, sizeof(vec->rand))); + LOGMMCTXP(LOGL_INFO, mm, "<- GPRS AUTH AND CIPHERING REQ (rand = %s," + " mmctx_is_r99=%d, vec->auth_types=0x%x", + osmo_hexdump(vec->rand, sizeof(vec->rand)), + mmctx_is_r99(mm), vec->auth_types); if (mmctx_is_r99(mm) && vec && (vec->auth_types & OSMO_AUTH_TYPE_UMTS)) { LOGPC(DMM, LOGL_INFO, ", autn = %s)\n", -- To view, visit https://gerrit.osmocom.org/7957 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I9679b7c174df186e05171a059a6b4d870a6f16e6 Gerrit-PatchSet: 1 Gerrit-Project: osmo-sgsn Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr From gerrit-no-reply at lists.osmocom.org Mon Apr 30 23:36:20 2018 From: gerrit-no-reply at lists.osmocom.org (Neels Hofmeyr) Date: Mon, 30 Apr 2018 23:36:20 +0000 Subject: [PATCH] osmo-sgsn[master]: log two RA Update Request failure causes Message-ID: Review at https://gerrit.osmocom.org/7958 log two RA Update Request failure causes Change-Id: Ic9c8a492abf5a707b37d9c8888c59be6e51541b8 --- M src/gprs/gprs_gmm.c 1 file changed, 5 insertions(+), 0 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-sgsn refs/changes/58/7958/1 diff --git a/src/gprs/gprs_gmm.c b/src/gprs/gprs_gmm.c index 275cdbc..642c738 100644 --- a/src/gprs/gprs_gmm.c +++ b/src/gprs/gprs_gmm.c @@ -1616,6 +1616,9 @@ /* MS Radio Access Capability 10.5.5.12a */ ms_ra_acc_cap_len = *cur++; if (ms_ra_acc_cap_len > 52) { + LOGP(DMM, LOGL_ERROR, + "Rejecting GMM RA Update Request: MS Radio Access Capability too long" + " (ms_ra_acc_cap_len = %u > 52)\n", ms_ra_acc_cap_len); reject_cause = GMM_CAUSE_PROTO_ERR_UNSPEC; goto rejected; } @@ -1668,6 +1671,7 @@ mmctx = sgsn_mm_ctx_by_ptmsi(tmsi); } #else + LOGP(DMM, LOGL_ERROR, "Rejecting GMM RA Update Request: No Iu support\n"); goto rejected; #endif } @@ -1704,6 +1708,7 @@ /* The MS has to perform GPRS attach */ /* Device is still IMSI attached for CS but initiate GPRS ATTACH, * see GSM 04.08, 4.7.5.1.4 and G.6 */ + LOGMMCTXP(LOGL_ERROR, mmctx, "Rejecting GMM RA Update Request: MS should GMM Attach first\n"); reject_cause = GMM_CAUSE_IMPL_DETACHED; goto rejected; } -- To view, visit https://gerrit.osmocom.org/7958 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Ic9c8a492abf5a707b37d9c8888c59be6e51541b8 Gerrit-PatchSet: 1 Gerrit-Project: osmo-sgsn Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr From gerrit-no-reply at lists.osmocom.org Mon Apr 30 23:36:21 2018 From: gerrit-no-reply at lists.osmocom.org (Neels Hofmeyr) Date: Mon, 30 Apr 2018 23:36:21 +0000 Subject: [PATCH] osmo-sgsn[master]: GERAN: allow GSM SRES on UMTS AKA challenge Message-ID: Review at https://gerrit.osmocom.org/7959 GERAN: allow GSM SRES on UMTS AKA challenge Store the established security context type (GSM or UMTS) instead of the boolean flag is_authenticated. Provide the previous boolean query with thin sgsn_mm_ctx_is_authenticated() function. Knowing which security context was established will be necessary for OS#3224, i.e. using the proper ciphering key, which is not yet tested properly, and probably not correct at this stage. This change will make new SGSN_Tests.TC_attach_umts_aka_gsm_sres pass. Related: OS#3193 OS#3224 Change-Id: I36807bad3bc55c0030d4f09cb2c369714f24bec7 --- M include/osmocom/sgsn/gprs_sgsn.h M src/gprs/gprs_gmm.c M src/gprs/sgsn_auth.c M tests/sgsn/sgsn_test.c 4 files changed, 34 insertions(+), 24 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-sgsn refs/changes/59/7959/1 diff --git a/include/osmocom/sgsn/gprs_sgsn.h b/include/osmocom/sgsn/gprs_sgsn.h index c47fb09..64e5619 100644 --- a/include/osmocom/sgsn/gprs_sgsn.h +++ b/include/osmocom/sgsn/gprs_sgsn.h @@ -224,7 +224,7 @@ * whether one of them can be dropped. */ enum sgsn_auth_state auth_state; - int is_authenticated; + enum osmo_sub_auth_type sec_ctx; /* the string representation of the current hlr */ char hlr[GSM_EXTENSION_LENGTH]; @@ -235,6 +235,17 @@ struct gprs_subscr *subscr; }; +static inline bool sgsn_mm_ctx_is_authenticated(struct sgsn_mm_ctx *ctx) +{ + switch (ctx->sec_ctx) { + case OSMO_AUTH_TYPE_GSM: + case OSMO_AUTH_TYPE_UMTS: + return true; + default: + return false; + } +} + #define LOGMMCTXP(level, mm, fmt, args...) \ LOGP(DMM, level, "MM(%s/%08x) " fmt, (mm) ? (mm)->imsi : "---", \ (mm) ? (mm)->p_tmsi : GSM_RESERVED_TMSI, ## args) diff --git a/src/gprs/gprs_gmm.c b/src/gprs/gprs_gmm.c index 642c738..28fba71 100644 --- a/src/gprs/gprs_gmm.c +++ b/src/gprs/gprs_gmm.c @@ -662,24 +662,24 @@ } /* check if the received authentication response matches */ -static bool check_auth_resp(struct sgsn_mm_ctx *ctx, - bool is_utran, - const struct osmo_auth_vector *vec, - const uint8_t *res, uint8_t res_len) +static enum osmo_sub_auth_type check_auth_resp(struct sgsn_mm_ctx *ctx, + bool is_utran, + const struct osmo_auth_vector *vec, + const uint8_t *res, uint8_t res_len) { const uint8_t *expect_res; uint8_t expect_res_len; enum osmo_sub_auth_type expect_type; const char *expect_str; - if (!vec) - return true; /* really!? */ - /* On UTRAN (3G) we always expect UMTS AKA. On GERAN (2G) we sent AUTN * and expect UMTS AKA if there is R99 capability and our vector - * supports UMTS AKA, otherwise we expect GSM AKA. */ + * supports UMTS AKA, otherwise we expect GSM AKA. + * However, on GERAN, even if we sent a UMTS AKA Authentication Request, the MS may decide to + * instead reply with a GSM AKA SRES response. */ if (is_utran - || (mmctx_is_r99(ctx) && (vec->auth_types & OSMO_AUTH_TYPE_UMTS))) { + || (mmctx_is_r99(ctx) && (vec->auth_types & OSMO_AUTH_TYPE_UMTS) + && (res_len > sizeof(vec->sres)))) { expect_type = OSMO_AUTH_TYPE_UMTS; expect_str = "UMTS RES"; expect_res = vec->res; @@ -696,7 +696,7 @@ " not provide the expected auth type:" " expected %s = 0x%x, auth_types are 0x%x\n", expect_str, expect_type, vec->auth_types); - return false; + return OSMO_AUTH_TYPE_NONE; } if (!res) @@ -709,12 +709,12 @@ goto auth_mismatch; /* Authorized! */ - return true; + return expect_type; auth_mismatch: LOGMMCTXP(LOGL_ERROR, ctx, "Auth mismatch: expected %s = %s\n", expect_str, osmo_hexdump_nospc(expect_res, expect_res_len)); - return false; + return OSMO_AUTH_TYPE_NONE; } /* Section 9.4.10: Authentication and Ciphering Response */ @@ -778,14 +778,12 @@ LOGMMCTXP(LOGL_DEBUG, ctx, "checking auth: received %s = %s\n", res_name, osmo_hexdump(res, res_len)); - rc = check_auth_resp(ctx, false, &at->vec, res, res_len); - if (!rc) { + ctx->sec_ctx = check_auth_resp(ctx, false, &at->vec, res, res_len); + if (!sgsn_mm_ctx_is_authenticated(ctx)) { rc = gsm48_tx_gmm_auth_ciph_rej(ctx); mm_ctx_cleanup_free(ctx, "GPRS AUTH AND CIPH REJECT"); return rc; } - - ctx->is_authenticated = 1; if (ctx->ran_type == MM_CTX_T_UTRAN_Iu) ctx->iu.new_key = 1; @@ -1026,7 +1024,8 @@ return 0; } - if (ctx->auth_state == SGSN_AUTH_AUTHENTICATE && !ctx->is_authenticated) { + if (ctx->auth_state == SGSN_AUTH_AUTHENTICATE + && !sgsn_mm_ctx_is_authenticated(ctx)) { struct gsm_auth_tuple *at = &ctx->auth_triplet; mmctx_timer_start(ctx, 3360, sgsn->cfg.timers.T3360); @@ -1034,7 +1033,7 @@ false); } - if (ctx->auth_state == SGSN_AUTH_AUTHENTICATE && ctx->is_authenticated && + if (ctx->auth_state == SGSN_AUTH_AUTHENTICATE && sgsn_mm_ctx_is_authenticated(ctx) && ctx->auth_triplet.key_seq != GSM_KEY_SEQ_INVAL) { /* Check again for authorization */ sgsn_auth_request(ctx); @@ -1106,7 +1105,7 @@ void gsm0408_gprs_authenticate(struct sgsn_mm_ctx *ctx) { - ctx->is_authenticated = 0; + ctx->sec_ctx = OSMO_AUTH_TYPE_NONE; gsm48_gmm_authorize(ctx); } @@ -1420,7 +1419,7 @@ ctx->gb.tlli_new = gprs_tmsi2tlli(ctx->p_tmsi, TLLI_LOCAL); /* Inform LLC layer about new TLLI but keep old active */ - if (ctx->is_authenticated) + if (sgsn_mm_ctx_is_authenticated(ctx)) gprs_llme_copy_key(ctx, ctx->gb.llme); gprs_llgmm_assign(ctx->gb.llme, ctx->gb.tlli, ctx->gb.tlli_new); diff --git a/src/gprs/sgsn_auth.c b/src/gprs/sgsn_auth.c index 6fb32b7..694bece 100644 --- a/src/gprs/sgsn_auth.c +++ b/src/gprs/sgsn_auth.c @@ -114,7 +114,7 @@ return mmctx->auth_state; if (sgsn->cfg.require_authentication && - (!mmctx->is_authenticated || + (!sgsn_mm_ctx_is_authenticated(mmctx) || mmctx->subscr->sgsn_data->auth_triplets_updated)) return SGSN_AUTH_AUTHENTICATE; @@ -175,7 +175,7 @@ OSMO_ASSERT(mmctx->subscr != NULL); - if (sgsn->cfg.require_authentication && !mmctx->is_authenticated) { + if (sgsn->cfg.require_authentication && !sgsn_mm_ctx_is_authenticated(mmctx)) { /* Find next tuple */ at = sgsn_auth_get_tuple(mmctx, mmctx->auth_triplet.key_seq); diff --git a/tests/sgsn/sgsn_test.c b/tests/sgsn/sgsn_test.c index df4df3b..0e5267b 100644 --- a/tests/sgsn/sgsn_test.c +++ b/tests/sgsn/sgsn_test.c @@ -1132,7 +1132,7 @@ { /* Fake an authentication */ OSMO_ASSERT(mmctx->subscr); - mmctx->is_authenticated = 1; + mmctx->sec_ctx = OSMO_AUTH_TYPE_GSM; gprs_subscr_update_auth_info(mmctx->subscr); return 0; -- To view, visit https://gerrit.osmocom.org/7959 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I36807bad3bc55c0030d4f09cb2c369714f24bec7 Gerrit-PatchSet: 1 Gerrit-Project: osmo-sgsn Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr